@mirohq/design-system-tooltip 3.3.27-tooltip.0 → 3.3.28
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/main.js +20 -33
- package/dist/main.js.map +1 -1
- package/dist/module.js +20 -33
- package/dist/module.js.map +1 -1
- package/package.json +5 -6
package/dist/main.js
CHANGED
|
@@ -4,11 +4,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
var React = require('react');
|
|
7
|
+
var designSystemUseId = require('@mirohq/design-system-use-id');
|
|
7
8
|
var reactTooltip = require('@radix-ui/react-tooltip');
|
|
8
9
|
var designSystemStitches = require('@mirohq/design-system-stitches');
|
|
9
10
|
var designSystemUtils = require('@mirohq/design-system-utils');
|
|
10
|
-
var interactions = require('@react-aria/interactions');
|
|
11
|
-
var utils = require('@react-aria/utils');
|
|
12
11
|
var designSystemBaseHotkey = require('@mirohq/design-system-base-hotkey');
|
|
13
12
|
var designSystemPrimitive = require('@mirohq/design-system-primitive');
|
|
14
13
|
|
|
@@ -111,29 +110,13 @@ Content.displayName = "Tooltip.Content";
|
|
|
111
110
|
const StyledTrigger = designSystemStitches.styled(reactTooltip.Trigger);
|
|
112
111
|
|
|
113
112
|
const Trigger = React__default["default"].forwardRef(({ onPress, onClick, ...restProps }, forwardRef) => {
|
|
114
|
-
const { triggerRef,
|
|
115
|
-
TooltipTriggerContext
|
|
116
|
-
);
|
|
117
|
-
const { hoverProps } = interactions.useHover({
|
|
118
|
-
onHoverStart: () => {
|
|
119
|
-
hoveredRef.current = true;
|
|
120
|
-
},
|
|
121
|
-
onHoverEnd: () => {
|
|
122
|
-
hoveredRef.current = false;
|
|
123
|
-
}
|
|
124
|
-
});
|
|
113
|
+
const { triggerRef, id } = React.useContext(TooltipTriggerContext);
|
|
125
114
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
126
115
|
StyledTrigger,
|
|
127
116
|
{
|
|
128
|
-
...
|
|
129
|
-
onFocus: () => {
|
|
130
|
-
focusedRef.current = true;
|
|
131
|
-
},
|
|
132
|
-
onBlur: () => {
|
|
133
|
-
focusedRef.current = false;
|
|
134
|
-
}
|
|
135
|
-
}),
|
|
117
|
+
...restProps,
|
|
136
118
|
onClick: onPress != null ? onPress : onClick,
|
|
119
|
+
"data-tooltip-trigger": id,
|
|
137
120
|
ref: designSystemUtils.mergeRefs([triggerRef, forwardRef])
|
|
138
121
|
}
|
|
139
122
|
);
|
|
@@ -162,9 +145,7 @@ let shouldSkipDelay = false;
|
|
|
162
145
|
const DEFAULT_SKIP_DELAY_DURATION = 500;
|
|
163
146
|
const DEFAULT_DELAY_DURATION = 200;
|
|
164
147
|
const TooltipTriggerContext = React.createContext({
|
|
165
|
-
triggerRef: { current: null }
|
|
166
|
-
hoveredRef: { current: false },
|
|
167
|
-
focusedRef: { current: false }
|
|
148
|
+
triggerRef: { current: null }
|
|
168
149
|
});
|
|
169
150
|
const Tooltip = ({
|
|
170
151
|
defaultOpen = false,
|
|
@@ -181,15 +162,14 @@ const Tooltip = ({
|
|
|
181
162
|
const context = useTooltipContext();
|
|
182
163
|
const isMounted = React.useRef(false);
|
|
183
164
|
const _skipDelayDuration = (_a = skipDelayDuration != null ? skipDelayDuration : context.skipDelayDuration) != null ? _a : DEFAULT_SKIP_DELAY_DURATION;
|
|
184
|
-
const
|
|
185
|
-
const hoveredRef = React.useRef(false);
|
|
186
|
-
const focusedRef = React.useRef(false);
|
|
165
|
+
const triggerId = designSystemUseId.useId();
|
|
187
166
|
const [openState, setOpenState] = React.useState(defaultOpen);
|
|
188
167
|
const setDelayedOpen = React.useCallback(
|
|
189
168
|
(newOpenState) => {
|
|
190
169
|
var _a2;
|
|
191
170
|
clearTimeout(delayTimer);
|
|
192
171
|
clearTimeout(skipDelayTimer);
|
|
172
|
+
const triggerSelector = '[data-tooltip-trigger="'.concat(triggerId, '"]');
|
|
193
173
|
if (!newOpenState) {
|
|
194
174
|
skipDelayTimer = setTimeout(() => {
|
|
195
175
|
shouldSkipDelay = false;
|
|
@@ -198,12 +178,12 @@ const Tooltip = ({
|
|
|
198
178
|
onClose == null ? void 0 : onClose();
|
|
199
179
|
return;
|
|
200
180
|
}
|
|
201
|
-
if (shouldSkipDelay ||
|
|
181
|
+
if (shouldSkipDelay || document.querySelector("".concat(triggerSelector, ":focus")) != null) {
|
|
202
182
|
setOpenState(newOpenState);
|
|
203
183
|
return;
|
|
204
184
|
}
|
|
205
185
|
delayTimer = setTimeout(() => {
|
|
206
|
-
if (
|
|
186
|
+
if (document.querySelector("".concat(triggerSelector, ":hover")) == null && process.env.NODE_ENV !== "test") {
|
|
207
187
|
return;
|
|
208
188
|
}
|
|
209
189
|
shouldSkipDelay = _skipDelayDuration !== 0;
|
|
@@ -213,7 +193,14 @@ const Tooltip = ({
|
|
|
213
193
|
}
|
|
214
194
|
}, (_a2 = delayDuration != null ? delayDuration : context.delayDuration) != null ? _a2 : DEFAULT_DELAY_DURATION);
|
|
215
195
|
},
|
|
216
|
-
[
|
|
196
|
+
[
|
|
197
|
+
delayDuration,
|
|
198
|
+
context.delayDuration,
|
|
199
|
+
_skipDelayDuration,
|
|
200
|
+
onClose,
|
|
201
|
+
onOpen,
|
|
202
|
+
triggerId
|
|
203
|
+
]
|
|
217
204
|
);
|
|
218
205
|
const handleOpenChange = React.useCallback(
|
|
219
206
|
(newState) => {
|
|
@@ -241,13 +228,13 @@ const Tooltip = ({
|
|
|
241
228
|
isMounted.current = false;
|
|
242
229
|
};
|
|
243
230
|
}, []);
|
|
231
|
+
const triggerRef = React.useRef(null);
|
|
244
232
|
return /* @__PURE__ */ jsxRuntime.jsx(reactTooltip.Provider, { delayDuration: 0, skipDelayDuration: 0, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
245
233
|
TooltipTriggerContext.Provider,
|
|
246
234
|
{
|
|
247
235
|
value: {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
focusedRef
|
|
236
|
+
id: triggerId,
|
|
237
|
+
triggerRef
|
|
251
238
|
},
|
|
252
239
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
253
240
|
reactTooltip.Root,
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sources":["../src/partials/content.styled.tsx","../src/partials/content.tsx","../src/partials/trigger.styled.tsx","../src/partials/trigger.tsx","../src/partials/provider.tsx","../src/partials/portal.tsx","../src/partials/hotkey.styled.tsx","../src/partials/hotkey.tsx","../src/tooltip.tsx"],"sourcesContent":["import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport {\n Content as RadixContent,\n Arrow as RadixArrow,\n} from '@radix-ui/react-tooltip'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledArrowIcon = styled(RadixArrow, {\n fill: '$black',\n height: '5px',\n transform: 'translateY(-1px)',\n width: '15px',\n})\n\nexport const StyledContent = styled(RadixContent, {\n backgroundColor: '$black',\n borderRadius: '$50',\n color: '$white',\n fontSize: '14px',\n fontWeight: '400',\n lineHeight: '20px',\n fontFamily: 'inherit',\n padding: '$150',\n zIndex: '$tooltip',\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import type { ElementRef } from 'react'\nimport React, { useContext, useEffect } from 'react'\n\nimport { StyledContent, StyledArrowIcon } from './content.styled'\nimport type { StyledContentProps } from './content.styled'\nimport type { PointerDownOutsideEvent, Side, Align } from '../types'\nimport { TooltipTriggerContext } from '../tooltip'\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * The preferred alignment against the trigger. May change when collisions\n * occur.\n * @default 'center'\n */\n align?: Align\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n * @default 0\n */\n alignOffset?: number\n\n /**\n * The distance in pixels from the trigger.\n * @default 5\n */\n sideOffset?: number\n\n /** The preferred side of the trigger to render against when open.\n * Will be reversed when collisions occur and avoidCollisions is enabled.\n * @default 'top'\n */\n side?: Side\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with window edges.\n * @default true\n */\n avoidCollisions?: boolean\n\n /**\n * The distance in pixels from window edges where collision detection should\n * occur.\n * @default 0\n */\n collisionPadding?: number\n\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. It inherits from Tooltip.Portal.\n */\n forceMount?: true\n\n /**\n * The element used as the collision boundary. By default this is the\n * viewport, though you can provide additional element(s) to be included in\n * this check.\n */\n collisionBoundary?: Element | null\n\n /**\n * The sticky behavior on the align axis. \"partial\" will keep the content in\n * the boundary as long as the trigger is at least partially in the boundary\n * whilst \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: 'partial' | 'always'\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n * @default true (false in test environment)\n */\n hideWhenDetached?: boolean\n\n /**\n * Event handler called when the escape key is down. It can be prevented by\n * calling event.preventDefault.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void\n\n /**\n * Event handler called when a pointer event occurs outside the bounds of the\n * component. It can be prevented by calling event.preventDefault.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void\n}\n\nexport const Content = React.forwardRef<\n ElementRef<typeof StyledContent>,\n ContentProps\n>(\n (\n {\n align = 'center',\n alignOffset = 0,\n avoidCollisions = true,\n collisionPadding = 0,\n children,\n side = 'top',\n sideOffset = 5,\n sticky = 'partial',\n hideWhenDetached = process.env.NODE_ENV !== 'test',\n ...restProps\n },\n forwardRef\n ) => {\n const { triggerRef } = useContext(TooltipTriggerContext)\n\n const removeDuplicateAriaDescription = (element: Element): void => {\n const ariaDescribedBy: string | null =\n element.getAttribute('aria-describedby')\n\n if (ariaDescribedBy !== null) {\n const ariaDescription: string | null | undefined =\n document.getElementById(ariaDescribedBy)?.textContent\n\n const areAriaLabelAndAriaDescriptionEqual =\n ariaDescription?.trim() ===\n element?.getAttribute('aria-label')?.trim()\n\n if (areAriaLabelAndAriaDescriptionEqual) {\n element.removeAttribute('aria-describedby')\n }\n }\n }\n useEffect((): (() => void) => {\n const element = triggerRef.current\n\n if (element != null) {\n const handleMutation = (mutationsList: MutationRecord[]): void => {\n for (const mutation of mutationsList) {\n if (\n mutation.type === 'attributes' &&\n mutation.attributeName === 'aria-describedby'\n ) {\n removeDuplicateAriaDescription(element)\n }\n }\n }\n\n const observer = new MutationObserver(handleMutation)\n\n observer.observe(element, {\n attributes: true,\n })\n\n return () => {\n observer.disconnect()\n }\n }\n\n return () => {}\n }, [triggerRef])\n\n useEffect(() => {\n if (triggerRef.current === null) return\n removeDuplicateAriaDescription(triggerRef.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return (\n <StyledContent\n {...restProps}\n ref={forwardRef}\n align={align}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionPadding={collisionPadding}\n hideWhenDetached={hideWhenDetached}\n side={side}\n sideOffset={sideOffset}\n sticky={sticky}\n >\n {children}\n <StyledArrowIcon />\n </StyledContent>\n )\n }\n)\n\nContent.displayName = 'Tooltip.Content'\n","import { styled } from '@mirohq/design-system-stitches'\nimport { Trigger } from '@radix-ui/react-tooltip'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\n\nexport const StyledTrigger = styled(Trigger)\n\nexport type StyledTriggerProps = StrictComponentProps<typeof StyledTrigger>\n","import React, { useContext } from 'react'\nimport type { ElementRef, DOMAttributes } from 'react'\nimport { mergeRefs } from '@mirohq/design-system-utils'\nimport { useHover } from '@react-aria/interactions'\nimport { mergeProps } from '@react-aria/utils'\n\nimport { StyledTrigger } from './trigger.styled'\nimport type { StyledTriggerProps } from './trigger.styled'\nimport { TooltipTriggerContext } from '../tooltip'\n\nexport interface TriggerProps extends StyledTriggerProps {\n /**\n * temporary the same as onClick, later will be added touch events support\n */\n onPress?: DOMAttributes<HTMLElement>['onClick']\n}\n\nexport const Trigger = React.forwardRef<\n ElementRef<typeof StyledTrigger>,\n TriggerProps\n>(({ onPress, onClick, ...restProps }, forwardRef) => {\n const { triggerRef, hoveredRef, focusedRef } = useContext(\n TooltipTriggerContext\n )\n\n const { hoverProps } = useHover({\n onHoverStart: () => {\n hoveredRef.current = true\n },\n onHoverEnd: () => {\n hoveredRef.current = false\n },\n })\n\n return (\n <StyledTrigger\n {...mergeProps(restProps, hoverProps, {\n onFocus: () => {\n focusedRef.current = true\n },\n onBlur: () => {\n focusedRef.current = false\n },\n })}\n onClick={onPress ?? onClick}\n ref={mergeRefs([triggerRef, forwardRef])}\n />\n )\n})\n\nTrigger.displayName = 'Tooltip.Trigger'\n","import React, { createContext, useContext } from 'react'\n\nexport interface ProviderProps {\n /**\n * The duration from when the mouse enters a tooltip trigger until\n * the tooltip opens.\n */\n delayDuration?: number\n\n /**\n * How much time a user has to enter another trigger without incurring\n * a delay again.\n * When set to `0`, when hovering between triggers there wont be delay duration.\n * @default 500\n */\n skipDelayDuration?: number\n\n /**\n * The content\n */\n children?: React.ReactNode\n}\n\nexport const ProviderContext = createContext<ProviderProps>({} as any)\n\nexport const Provider: React.FC<ProviderProps> = ({\n children,\n ...restProps\n}) => (\n <ProviderContext.Provider value={restProps}>\n {children}\n </ProviderContext.Provider>\n)\n\nProvider.displayName = 'Tooltip.Provider'\n\nexport const useTooltipContext = (): ProviderProps =>\n useContext(ProviderContext)\n","import React from 'react'\nimport type { TooltipPortalProps } from '@radix-ui/react-tooltip'\nimport { Portal as RadixPortal } from '@radix-ui/react-tooltip'\n\nexport interface PortalProps extends TooltipPortalProps {\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. If used on this part, it will be\n * inherited by Tooltip.Content.\n */\n forceMount?: true\n\n /**\n * Specify a container element to portal the content into.\n */\n container?: HTMLElement | null\n}\n\nexport const Portal: React.FC<PortalProps> = props => <RadixPortal {...props} />\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledHotkey = styled(Primitive.span, {\n marginLeft: '$100',\n})\n\nexport type StyledHotkeyProps = StrictComponentProps<typeof StyledHotkey>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { Hotkey as BaseHotkey } from '@mirohq/design-system-base-hotkey'\n\nimport type { StyledHotkeyProps } from './hotkey.styled'\nimport { StyledHotkey } from './hotkey.styled'\n\nexport interface HotkeyProps extends StyledHotkeyProps {\n /**\n * The content.\n */\n children: string\n}\n\nexport const Hotkey = React.forwardRef<\n ElementRef<typeof StyledHotkey>,\n HotkeyProps\n>(({ children, ...restProps }, forwardRef) => (\n <StyledHotkey {...restProps} ref={forwardRef}>\n <BaseHotkey variant='inverted'>{children}</BaseHotkey>\n </StyledHotkey>\n))\n","import React, {\n useState,\n useCallback,\n useEffect,\n useRef,\n createContext,\n} from 'react'\nimport {\n Provider as RadixProvider,\n Root as RadixTooltip,\n} from '@radix-ui/react-tooltip'\n\nimport { Content } from './partials/content'\nimport { Trigger } from './partials/trigger'\nimport { Provider, useTooltipContext } from './partials/provider'\nimport { Portal } from './partials/portal'\nimport { Hotkey } from './partials/hotkey'\n\nexport interface TooltipProps {\n /**\n * The open state of the tooltip when it is initially rendered. Use when you\n * do not need to control its open state.\n */\n defaultOpen?: boolean\n\n /**\n * The current state of the tooltip.\n */\n open?: boolean\n\n /**\n * Event handler called when the tooltip opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the tooltip closes.\n */\n onClose?: () => void\n\n /**\n * Overrides the duration given to the `Provider` to customize the open delay\n * for a specific tooltip.\n * @default 200\n */\n delayDuration?: number\n\n /**\n * How much time a user has to enter another trigger without incurring\n * a delay again.\n * @default 500\n */\n skipDelayDuration?: number\n\n /**\n * Clears the delayDuration and skipDelayDuration timeouts when the component\n * is unmounted. This flag is `true` by default when using NODE_ENV=test.\n * @default false\n */\n clearDelaysOnUnmount?: boolean\n\n /**\n * Closes the tooltip as soon as the pointer leaves the trigger making it\n * impossible to hover the content.\n */\n disableHoverableContent?: boolean\n\n /**\n * The content\n */\n children: React.ReactNode\n}\n\nlet delayTimer: ReturnType<typeof setTimeout> | undefined\nlet skipDelayTimer: ReturnType<typeof setTimeout> | undefined\nlet shouldSkipDelay = false\n\nexport const DEFAULT_SKIP_DELAY_DURATION = 500\nexport const DEFAULT_DELAY_DURATION = 200\n\nexport const TooltipTriggerContext = createContext<{\n triggerRef: React.RefObject<HTMLButtonElement>\n hoveredRef: React.MutableRefObject<boolean>\n focusedRef: React.MutableRefObject<boolean>\n}>({\n triggerRef: { current: null },\n hoveredRef: { current: false },\n focusedRef: { current: false },\n})\n\nexport const Tooltip: React.FC<TooltipProps> & Partials = ({\n defaultOpen = false,\n open,\n onOpen,\n onClose,\n skipDelayDuration,\n delayDuration,\n disableHoverableContent,\n clearDelaysOnUnmount = process.env.NODE_ENV === 'test',\n children,\n}) => {\n const context = useTooltipContext()\n const isMounted = useRef(false)\n const _skipDelayDuration =\n skipDelayDuration ??\n context.skipDelayDuration ??\n DEFAULT_SKIP_DELAY_DURATION\n\n const triggerRef = useRef<HTMLButtonElement>(null)\n const hoveredRef = useRef<boolean>(false)\n const focusedRef = useRef<boolean>(false)\n\n const [openState, setOpenState] = useState(defaultOpen)\n const setDelayedOpen = useCallback(\n (newOpenState: boolean) => {\n clearTimeout(delayTimer)\n clearTimeout(skipDelayTimer)\n\n if (!newOpenState) {\n skipDelayTimer = setTimeout(() => {\n shouldSkipDelay = false\n }, _skipDelayDuration)\n setOpenState(false)\n onClose?.()\n return\n }\n\n if (shouldSkipDelay || focusedRef.current) {\n setOpenState(newOpenState)\n return\n }\n\n delayTimer = setTimeout(() => {\n // ignore it if the user quickly hover the trigger and leave before the timeout\n if (!hoveredRef.current && process.env.NODE_ENV !== 'test') {\n return\n }\n\n /* when skipDelayDuration is 0 no skip delay should happen. */\n shouldSkipDelay = _skipDelayDuration !== 0\n\n if (isMounted.current) {\n setOpenState(true)\n onOpen?.()\n }\n }, delayDuration ?? context.delayDuration ?? DEFAULT_DELAY_DURATION)\n },\n [delayDuration, context.delayDuration, _skipDelayDuration, onClose, onOpen]\n )\n\n const handleOpenChange = useCallback(\n (newState: boolean) => {\n if (open == null) {\n setDelayedOpen(newState)\n return\n }\n\n newState ? onOpen?.() : onClose?.()\n },\n [open, onOpen, onClose, setDelayedOpen]\n )\n\n useEffect(\n () => () => {\n if (clearDelaysOnUnmount) {\n clearTimeout(delayTimer)\n clearTimeout(skipDelayTimer)\n shouldSkipDelay = false\n }\n },\n [clearDelaysOnUnmount]\n )\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n return (\n <RadixProvider delayDuration={0} skipDelayDuration={0}>\n <TooltipTriggerContext.Provider\n value={{\n triggerRef,\n hoveredRef,\n focusedRef,\n }}\n >\n <RadixTooltip\n disableHoverableContent={disableHoverableContent}\n open={open ?? openState}\n delayDuration={0} // we control it manually\n onOpenChange={handleOpenChange}\n >\n {children}\n </RadixTooltip>\n </TooltipTriggerContext.Provider>\n </RadixProvider>\n )\n}\n\n// Partials\n// -----------------------------------------------------------------------------\n\nexport interface Partials {\n Trigger: typeof Trigger\n Content: typeof Content\n Provider: typeof Provider\n Portal: typeof Portal\n Hotkey: typeof Hotkey\n}\n\nTooltip.Trigger = Trigger\nTooltip.Content = Content\nTooltip.Provider = Provider\nTooltip.Portal = Portal\nTooltip.Hotkey = Hotkey\n"],"names":["styled","RadixArrow","RadixContent","React","useContext","useEffect","jsxs","Trigger","useHover","jsx","mergeProps","mergeRefs","createContext","RadixPortal","Primitive","BaseHotkey","useRef","useState","useCallback","_a","RadixProvider","RadixTooltip"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sources":["../src/partials/content.styled.tsx","../src/partials/content.tsx","../src/partials/trigger.styled.tsx","../src/partials/trigger.tsx","../src/partials/provider.tsx","../src/partials/portal.tsx","../src/partials/hotkey.styled.tsx","../src/partials/hotkey.tsx","../src/tooltip.tsx"],"sourcesContent":["import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport {\n Content as RadixContent,\n Arrow as RadixArrow,\n} from '@radix-ui/react-tooltip'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledArrowIcon = styled(RadixArrow, {\n fill: '$black',\n height: '5px',\n transform: 'translateY(-1px)',\n width: '15px',\n})\n\nexport const StyledContent = styled(RadixContent, {\n backgroundColor: '$black',\n borderRadius: '$50',\n color: '$white',\n fontSize: '14px',\n fontWeight: '400',\n lineHeight: '20px',\n fontFamily: 'inherit',\n padding: '$150',\n zIndex: '$tooltip',\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import type { ElementRef } from 'react'\nimport React, { useContext, useEffect } from 'react'\n\nimport { StyledContent, StyledArrowIcon } from './content.styled'\nimport type { StyledContentProps } from './content.styled'\nimport type { PointerDownOutsideEvent, Side, Align } from '../types'\nimport { TooltipTriggerContext } from '../tooltip'\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * The preferred alignment against the trigger. May change when collisions\n * occur.\n * @default 'center'\n */\n align?: Align\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n * @default 0\n */\n alignOffset?: number\n\n /**\n * The distance in pixels from the trigger.\n * @default 5\n */\n sideOffset?: number\n\n /** The preferred side of the trigger to render against when open.\n * Will be reversed when collisions occur and avoidCollisions is enabled.\n * @default 'top'\n */\n side?: Side\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with window edges.\n * @default true\n */\n avoidCollisions?: boolean\n\n /**\n * The distance in pixels from window edges where collision detection should\n * occur.\n * @default 0\n */\n collisionPadding?: number\n\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. It inherits from Tooltip.Portal.\n */\n forceMount?: true\n\n /**\n * The element used as the collision boundary. By default this is the\n * viewport, though you can provide additional element(s) to be included in\n * this check.\n */\n collisionBoundary?: Element | null\n\n /**\n * The sticky behavior on the align axis. \"partial\" will keep the content in\n * the boundary as long as the trigger is at least partially in the boundary\n * whilst \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: 'partial' | 'always'\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n * @default true (false in test environment)\n */\n hideWhenDetached?: boolean\n\n /**\n * Event handler called when the escape key is down. It can be prevented by\n * calling event.preventDefault.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void\n\n /**\n * Event handler called when a pointer event occurs outside the bounds of the\n * component. It can be prevented by calling event.preventDefault.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void\n}\n\nexport const Content = React.forwardRef<\n ElementRef<typeof StyledContent>,\n ContentProps\n>(\n (\n {\n align = 'center',\n alignOffset = 0,\n avoidCollisions = true,\n collisionPadding = 0,\n children,\n side = 'top',\n sideOffset = 5,\n sticky = 'partial',\n hideWhenDetached = process.env.NODE_ENV !== 'test',\n ...restProps\n },\n forwardRef\n ) => {\n const { triggerRef } = useContext(TooltipTriggerContext)\n\n const removeDuplicateAriaDescription = (element: Element): void => {\n const ariaDescribedBy: string | null =\n element.getAttribute('aria-describedby')\n\n if (ariaDescribedBy !== null) {\n const ariaDescription: string | null | undefined =\n document.getElementById(ariaDescribedBy)?.textContent\n\n const areAriaLabelAndAriaDescriptionEqual =\n ariaDescription?.trim() ===\n element?.getAttribute('aria-label')?.trim()\n\n if (areAriaLabelAndAriaDescriptionEqual) {\n element.removeAttribute('aria-describedby')\n }\n }\n }\n useEffect((): (() => void) => {\n const element = triggerRef.current\n\n if (element != null) {\n const handleMutation = (mutationsList: MutationRecord[]): void => {\n for (const mutation of mutationsList) {\n if (\n mutation.type === 'attributes' &&\n mutation.attributeName === 'aria-describedby'\n ) {\n removeDuplicateAriaDescription(element)\n }\n }\n }\n\n const observer = new MutationObserver(handleMutation)\n\n observer.observe(element, {\n attributes: true,\n })\n\n return () => {\n observer.disconnect()\n }\n }\n\n return () => {}\n }, [triggerRef])\n\n useEffect(() => {\n if (triggerRef.current === null) return\n removeDuplicateAriaDescription(triggerRef.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return (\n <StyledContent\n {...restProps}\n ref={forwardRef}\n align={align}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionPadding={collisionPadding}\n hideWhenDetached={hideWhenDetached}\n side={side}\n sideOffset={sideOffset}\n sticky={sticky}\n >\n {children}\n <StyledArrowIcon />\n </StyledContent>\n )\n }\n)\n\nContent.displayName = 'Tooltip.Content'\n","import { styled } from '@mirohq/design-system-stitches'\nimport { Trigger } from '@radix-ui/react-tooltip'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\n\nexport const StyledTrigger = styled(Trigger)\n\nexport type StyledTriggerProps = StrictComponentProps<typeof StyledTrigger>\n","import React, { useContext } from 'react'\nimport type { ElementRef, DOMAttributes } from 'react'\nimport { mergeRefs } from '@mirohq/design-system-utils'\n\nimport { StyledTrigger } from './trigger.styled'\nimport type { StyledTriggerProps } from './trigger.styled'\nimport { TooltipTriggerContext } from '../tooltip'\n\nexport interface TriggerProps extends StyledTriggerProps {\n /**\n * temporary the same as onClick, later will be added touch events support\n */\n onPress?: DOMAttributes<HTMLElement>['onClick']\n}\n\nexport const Trigger = React.forwardRef<\n ElementRef<typeof StyledTrigger>,\n TriggerProps\n>(({ onPress, onClick, ...restProps }, forwardRef) => {\n const { triggerRef, id } = useContext(TooltipTriggerContext)\n return (\n <StyledTrigger\n {...restProps}\n onClick={onPress ?? onClick}\n data-tooltip-trigger={id}\n ref={mergeRefs([triggerRef, forwardRef])}\n />\n )\n})\n\nTrigger.displayName = 'Tooltip.Trigger'\n","import React, { createContext, useContext } from 'react'\n\nexport interface ProviderProps {\n /**\n * The duration from when the mouse enters a tooltip trigger until\n * the tooltip opens.\n */\n delayDuration?: number\n\n /**\n * How much time a user has to enter another trigger without incurring\n * a delay again.\n * When set to `0`, when hovering between triggers there wont be delay duration.\n * @default 500\n */\n skipDelayDuration?: number\n\n /**\n * The content\n */\n children?: React.ReactNode\n}\n\nexport const ProviderContext = createContext<ProviderProps>({} as any)\n\nexport const Provider: React.FC<ProviderProps> = ({\n children,\n ...restProps\n}) => (\n <ProviderContext.Provider value={restProps}>\n {children}\n </ProviderContext.Provider>\n)\n\nProvider.displayName = 'Tooltip.Provider'\n\nexport const useTooltipContext = (): ProviderProps =>\n useContext(ProviderContext)\n","import React from 'react'\nimport type { TooltipPortalProps } from '@radix-ui/react-tooltip'\nimport { Portal as RadixPortal } from '@radix-ui/react-tooltip'\n\nexport interface PortalProps extends TooltipPortalProps {\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. If used on this part, it will be\n * inherited by Tooltip.Content.\n */\n forceMount?: true\n\n /**\n * Specify a container element to portal the content into.\n */\n container?: HTMLElement | null\n}\n\nexport const Portal: React.FC<PortalProps> = props => <RadixPortal {...props} />\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledHotkey = styled(Primitive.span, {\n marginLeft: '$100',\n})\n\nexport type StyledHotkeyProps = StrictComponentProps<typeof StyledHotkey>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { Hotkey as BaseHotkey } from '@mirohq/design-system-base-hotkey'\n\nimport type { StyledHotkeyProps } from './hotkey.styled'\nimport { StyledHotkey } from './hotkey.styled'\n\nexport interface HotkeyProps extends StyledHotkeyProps {\n /**\n * The content.\n */\n children: string\n}\n\nexport const Hotkey = React.forwardRef<\n ElementRef<typeof StyledHotkey>,\n HotkeyProps\n>(({ children, ...restProps }, forwardRef) => (\n <StyledHotkey {...restProps} ref={forwardRef}>\n <BaseHotkey variant='inverted'>{children}</BaseHotkey>\n </StyledHotkey>\n))\n","import React, {\n useState,\n useCallback,\n useEffect,\n useRef,\n createContext,\n} from 'react'\nimport { useId } from '@mirohq/design-system-use-id'\nimport {\n Provider as RadixProvider,\n Root as RadixTooltip,\n} from '@radix-ui/react-tooltip'\n\nimport { Content } from './partials/content'\nimport { Trigger } from './partials/trigger'\nimport { Provider, useTooltipContext } from './partials/provider'\nimport { Portal } from './partials/portal'\nimport { Hotkey } from './partials/hotkey'\n\nexport interface TooltipProps {\n /**\n * The open state of the tooltip when it is initially rendered. Use when you\n * do not need to control its open state.\n */\n defaultOpen?: boolean\n\n /**\n * The current state of the tooltip.\n */\n open?: boolean\n\n /**\n * Event handler called when the tooltip opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the tooltip closes.\n */\n onClose?: () => void\n\n /**\n * Overrides the duration given to the `Provider` to customize the open delay\n * for a specific tooltip.\n * @default 200\n */\n delayDuration?: number\n\n /**\n * How much time a user has to enter another trigger without incurring\n * a delay again.\n * @default 500\n */\n skipDelayDuration?: number\n\n /**\n * Clears the delayDuration and skipDelayDuration timeouts when the component\n * is unmounted. This flag is `true` by default when using NODE_ENV=test.\n * @default false\n */\n clearDelaysOnUnmount?: boolean\n\n /**\n * Closes the tooltip as soon as the pointer leaves the trigger making it\n * impossible to hover the content.\n */\n disableHoverableContent?: boolean\n\n /**\n * The content\n */\n children: React.ReactNode\n}\n\nlet delayTimer: ReturnType<typeof setTimeout> | undefined\nlet skipDelayTimer: ReturnType<typeof setTimeout> | undefined\nlet shouldSkipDelay = false\n\nexport const DEFAULT_SKIP_DELAY_DURATION = 500\nexport const DEFAULT_DELAY_DURATION = 200\n\nexport const TooltipTriggerContext = createContext<{\n triggerRef: React.RefObject<HTMLButtonElement>\n id?: string\n}>({\n triggerRef: { current: null },\n})\n\nexport const Tooltip: React.FC<TooltipProps> & Partials = ({\n defaultOpen = false,\n open,\n onOpen,\n onClose,\n skipDelayDuration,\n delayDuration,\n disableHoverableContent,\n clearDelaysOnUnmount = process.env.NODE_ENV === 'test',\n children,\n}) => {\n const context = useTooltipContext()\n const isMounted = useRef(false)\n const _skipDelayDuration =\n skipDelayDuration ??\n context.skipDelayDuration ??\n DEFAULT_SKIP_DELAY_DURATION\n\n const triggerId = useId()\n\n const [openState, setOpenState] = useState(defaultOpen)\n const setDelayedOpen = useCallback(\n (newOpenState: boolean) => {\n clearTimeout(delayTimer)\n clearTimeout(skipDelayTimer)\n\n const triggerSelector = `[data-tooltip-trigger=\"${triggerId}\"]`\n\n if (!newOpenState) {\n skipDelayTimer = setTimeout(() => {\n shouldSkipDelay = false\n }, _skipDelayDuration)\n setOpenState(false)\n onClose?.()\n return\n }\n\n if (\n shouldSkipDelay ||\n document.querySelector(`${triggerSelector}:focus`) != null\n ) {\n setOpenState(newOpenState)\n return\n }\n\n delayTimer = setTimeout(() => {\n // ignore it if the the user quickly hover the trigger and leave before the timeout\n // (unfortunately JSDOM seems not to support :hover selector)\n if (\n document.querySelector(`${triggerSelector}:hover`) == null &&\n process.env.NODE_ENV !== 'test'\n ) {\n return\n }\n\n /* when skipDelayDuration is 0 no skip delay should happen. */\n shouldSkipDelay = _skipDelayDuration !== 0\n\n if (isMounted.current) {\n setOpenState(true)\n onOpen?.()\n }\n }, delayDuration ?? context.delayDuration ?? DEFAULT_DELAY_DURATION)\n },\n [\n delayDuration,\n context.delayDuration,\n _skipDelayDuration,\n onClose,\n onOpen,\n triggerId,\n ]\n )\n\n const handleOpenChange = useCallback(\n (newState: boolean) => {\n if (open == null) {\n setDelayedOpen(newState)\n return\n }\n\n newState ? onOpen?.() : onClose?.()\n },\n [open, onOpen, onClose, setDelayedOpen]\n )\n\n useEffect(\n () => () => {\n if (clearDelaysOnUnmount) {\n clearTimeout(delayTimer)\n clearTimeout(skipDelayTimer)\n shouldSkipDelay = false\n }\n },\n [clearDelaysOnUnmount]\n )\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n const triggerRef = useRef<HTMLButtonElement>(null)\n\n return (\n <RadixProvider delayDuration={0} skipDelayDuration={0}>\n <TooltipTriggerContext.Provider\n value={{\n id: triggerId,\n triggerRef,\n }}\n >\n <RadixTooltip\n disableHoverableContent={disableHoverableContent}\n open={open ?? openState}\n delayDuration={0} // we control it manually\n onOpenChange={handleOpenChange}\n >\n {children}\n </RadixTooltip>\n </TooltipTriggerContext.Provider>\n </RadixProvider>\n )\n}\n\n// Partials\n// -----------------------------------------------------------------------------\n\nexport interface Partials {\n Trigger: typeof Trigger\n Content: typeof Content\n Provider: typeof Provider\n Portal: typeof Portal\n Hotkey: typeof Hotkey\n}\n\nTooltip.Trigger = Trigger\nTooltip.Content = Content\nTooltip.Provider = Provider\nTooltip.Portal = Portal\nTooltip.Hotkey = Hotkey\n"],"names":["styled","RadixArrow","RadixContent","React","useContext","useEffect","jsxs","Trigger","jsx","mergeRefs","createContext","RadixPortal","Primitive","BaseHotkey","useRef","useId","useState","useCallback","_a","RadixProvider","RadixTooltip"],"mappings":"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"}
|
package/dist/module.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import React, { useContext, useEffect, createContext, useRef, useState, useCallback } from 'react';
|
|
3
|
+
import { useId } from '@mirohq/design-system-use-id';
|
|
3
4
|
import { Arrow, Content as Content$1, Trigger as Trigger$1, Portal as Portal$1, Provider as Provider$1, Root } from '@radix-ui/react-tooltip';
|
|
4
5
|
import { styled } from '@mirohq/design-system-stitches';
|
|
5
6
|
import { mergeRefs } from '@mirohq/design-system-utils';
|
|
6
|
-
import { useHover } from '@react-aria/interactions';
|
|
7
|
-
import { mergeProps } from '@react-aria/utils';
|
|
8
7
|
import { Hotkey as Hotkey$1 } from '@mirohq/design-system-base-hotkey';
|
|
9
8
|
import { Primitive } from '@mirohq/design-system-primitive';
|
|
10
9
|
|
|
@@ -103,29 +102,13 @@ Content.displayName = "Tooltip.Content";
|
|
|
103
102
|
const StyledTrigger = styled(Trigger$1);
|
|
104
103
|
|
|
105
104
|
const Trigger = React.forwardRef(({ onPress, onClick, ...restProps }, forwardRef) => {
|
|
106
|
-
const { triggerRef,
|
|
107
|
-
TooltipTriggerContext
|
|
108
|
-
);
|
|
109
|
-
const { hoverProps } = useHover({
|
|
110
|
-
onHoverStart: () => {
|
|
111
|
-
hoveredRef.current = true;
|
|
112
|
-
},
|
|
113
|
-
onHoverEnd: () => {
|
|
114
|
-
hoveredRef.current = false;
|
|
115
|
-
}
|
|
116
|
-
});
|
|
105
|
+
const { triggerRef, id } = useContext(TooltipTriggerContext);
|
|
117
106
|
return /* @__PURE__ */ jsx(
|
|
118
107
|
StyledTrigger,
|
|
119
108
|
{
|
|
120
|
-
...
|
|
121
|
-
onFocus: () => {
|
|
122
|
-
focusedRef.current = true;
|
|
123
|
-
},
|
|
124
|
-
onBlur: () => {
|
|
125
|
-
focusedRef.current = false;
|
|
126
|
-
}
|
|
127
|
-
}),
|
|
109
|
+
...restProps,
|
|
128
110
|
onClick: onPress != null ? onPress : onClick,
|
|
111
|
+
"data-tooltip-trigger": id,
|
|
129
112
|
ref: mergeRefs([triggerRef, forwardRef])
|
|
130
113
|
}
|
|
131
114
|
);
|
|
@@ -154,9 +137,7 @@ let shouldSkipDelay = false;
|
|
|
154
137
|
const DEFAULT_SKIP_DELAY_DURATION = 500;
|
|
155
138
|
const DEFAULT_DELAY_DURATION = 200;
|
|
156
139
|
const TooltipTriggerContext = createContext({
|
|
157
|
-
triggerRef: { current: null }
|
|
158
|
-
hoveredRef: { current: false },
|
|
159
|
-
focusedRef: { current: false }
|
|
140
|
+
triggerRef: { current: null }
|
|
160
141
|
});
|
|
161
142
|
const Tooltip = ({
|
|
162
143
|
defaultOpen = false,
|
|
@@ -173,15 +154,14 @@ const Tooltip = ({
|
|
|
173
154
|
const context = useTooltipContext();
|
|
174
155
|
const isMounted = useRef(false);
|
|
175
156
|
const _skipDelayDuration = (_a = skipDelayDuration != null ? skipDelayDuration : context.skipDelayDuration) != null ? _a : DEFAULT_SKIP_DELAY_DURATION;
|
|
176
|
-
const
|
|
177
|
-
const hoveredRef = useRef(false);
|
|
178
|
-
const focusedRef = useRef(false);
|
|
157
|
+
const triggerId = useId();
|
|
179
158
|
const [openState, setOpenState] = useState(defaultOpen);
|
|
180
159
|
const setDelayedOpen = useCallback(
|
|
181
160
|
(newOpenState) => {
|
|
182
161
|
var _a2;
|
|
183
162
|
clearTimeout(delayTimer);
|
|
184
163
|
clearTimeout(skipDelayTimer);
|
|
164
|
+
const triggerSelector = '[data-tooltip-trigger="'.concat(triggerId, '"]');
|
|
185
165
|
if (!newOpenState) {
|
|
186
166
|
skipDelayTimer = setTimeout(() => {
|
|
187
167
|
shouldSkipDelay = false;
|
|
@@ -190,12 +170,12 @@ const Tooltip = ({
|
|
|
190
170
|
onClose == null ? void 0 : onClose();
|
|
191
171
|
return;
|
|
192
172
|
}
|
|
193
|
-
if (shouldSkipDelay ||
|
|
173
|
+
if (shouldSkipDelay || document.querySelector("".concat(triggerSelector, ":focus")) != null) {
|
|
194
174
|
setOpenState(newOpenState);
|
|
195
175
|
return;
|
|
196
176
|
}
|
|
197
177
|
delayTimer = setTimeout(() => {
|
|
198
|
-
if (
|
|
178
|
+
if (document.querySelector("".concat(triggerSelector, ":hover")) == null && process.env.NODE_ENV !== "test") {
|
|
199
179
|
return;
|
|
200
180
|
}
|
|
201
181
|
shouldSkipDelay = _skipDelayDuration !== 0;
|
|
@@ -205,7 +185,14 @@ const Tooltip = ({
|
|
|
205
185
|
}
|
|
206
186
|
}, (_a2 = delayDuration != null ? delayDuration : context.delayDuration) != null ? _a2 : DEFAULT_DELAY_DURATION);
|
|
207
187
|
},
|
|
208
|
-
[
|
|
188
|
+
[
|
|
189
|
+
delayDuration,
|
|
190
|
+
context.delayDuration,
|
|
191
|
+
_skipDelayDuration,
|
|
192
|
+
onClose,
|
|
193
|
+
onOpen,
|
|
194
|
+
triggerId
|
|
195
|
+
]
|
|
209
196
|
);
|
|
210
197
|
const handleOpenChange = useCallback(
|
|
211
198
|
(newState) => {
|
|
@@ -233,13 +220,13 @@ const Tooltip = ({
|
|
|
233
220
|
isMounted.current = false;
|
|
234
221
|
};
|
|
235
222
|
}, []);
|
|
223
|
+
const triggerRef = useRef(null);
|
|
236
224
|
return /* @__PURE__ */ jsx(Provider$1, { delayDuration: 0, skipDelayDuration: 0, children: /* @__PURE__ */ jsx(
|
|
237
225
|
TooltipTriggerContext.Provider,
|
|
238
226
|
{
|
|
239
227
|
value: {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
focusedRef
|
|
228
|
+
id: triggerId,
|
|
229
|
+
triggerRef
|
|
243
230
|
},
|
|
244
231
|
children: /* @__PURE__ */ jsx(
|
|
245
232
|
Root,
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sources":["../src/partials/content.styled.tsx","../src/partials/content.tsx","../src/partials/trigger.styled.tsx","../src/partials/trigger.tsx","../src/partials/provider.tsx","../src/partials/portal.tsx","../src/partials/hotkey.styled.tsx","../src/partials/hotkey.tsx","../src/tooltip.tsx"],"sourcesContent":["import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport {\n Content as RadixContent,\n Arrow as RadixArrow,\n} from '@radix-ui/react-tooltip'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledArrowIcon = styled(RadixArrow, {\n fill: '$black',\n height: '5px',\n transform: 'translateY(-1px)',\n width: '15px',\n})\n\nexport const StyledContent = styled(RadixContent, {\n backgroundColor: '$black',\n borderRadius: '$50',\n color: '$white',\n fontSize: '14px',\n fontWeight: '400',\n lineHeight: '20px',\n fontFamily: 'inherit',\n padding: '$150',\n zIndex: '$tooltip',\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import type { ElementRef } from 'react'\nimport React, { useContext, useEffect } from 'react'\n\nimport { StyledContent, StyledArrowIcon } from './content.styled'\nimport type { StyledContentProps } from './content.styled'\nimport type { PointerDownOutsideEvent, Side, Align } from '../types'\nimport { TooltipTriggerContext } from '../tooltip'\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * The preferred alignment against the trigger. May change when collisions\n * occur.\n * @default 'center'\n */\n align?: Align\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n * @default 0\n */\n alignOffset?: number\n\n /**\n * The distance in pixels from the trigger.\n * @default 5\n */\n sideOffset?: number\n\n /** The preferred side of the trigger to render against when open.\n * Will be reversed when collisions occur and avoidCollisions is enabled.\n * @default 'top'\n */\n side?: Side\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with window edges.\n * @default true\n */\n avoidCollisions?: boolean\n\n /**\n * The distance in pixels from window edges where collision detection should\n * occur.\n * @default 0\n */\n collisionPadding?: number\n\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. It inherits from Tooltip.Portal.\n */\n forceMount?: true\n\n /**\n * The element used as the collision boundary. By default this is the\n * viewport, though you can provide additional element(s) to be included in\n * this check.\n */\n collisionBoundary?: Element | null\n\n /**\n * The sticky behavior on the align axis. \"partial\" will keep the content in\n * the boundary as long as the trigger is at least partially in the boundary\n * whilst \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: 'partial' | 'always'\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n * @default true (false in test environment)\n */\n hideWhenDetached?: boolean\n\n /**\n * Event handler called when the escape key is down. It can be prevented by\n * calling event.preventDefault.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void\n\n /**\n * Event handler called when a pointer event occurs outside the bounds of the\n * component. It can be prevented by calling event.preventDefault.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void\n}\n\nexport const Content = React.forwardRef<\n ElementRef<typeof StyledContent>,\n ContentProps\n>(\n (\n {\n align = 'center',\n alignOffset = 0,\n avoidCollisions = true,\n collisionPadding = 0,\n children,\n side = 'top',\n sideOffset = 5,\n sticky = 'partial',\n hideWhenDetached = process.env.NODE_ENV !== 'test',\n ...restProps\n },\n forwardRef\n ) => {\n const { triggerRef } = useContext(TooltipTriggerContext)\n\n const removeDuplicateAriaDescription = (element: Element): void => {\n const ariaDescribedBy: string | null =\n element.getAttribute('aria-describedby')\n\n if (ariaDescribedBy !== null) {\n const ariaDescription: string | null | undefined =\n document.getElementById(ariaDescribedBy)?.textContent\n\n const areAriaLabelAndAriaDescriptionEqual =\n ariaDescription?.trim() ===\n element?.getAttribute('aria-label')?.trim()\n\n if (areAriaLabelAndAriaDescriptionEqual) {\n element.removeAttribute('aria-describedby')\n }\n }\n }\n useEffect((): (() => void) => {\n const element = triggerRef.current\n\n if (element != null) {\n const handleMutation = (mutationsList: MutationRecord[]): void => {\n for (const mutation of mutationsList) {\n if (\n mutation.type === 'attributes' &&\n mutation.attributeName === 'aria-describedby'\n ) {\n removeDuplicateAriaDescription(element)\n }\n }\n }\n\n const observer = new MutationObserver(handleMutation)\n\n observer.observe(element, {\n attributes: true,\n })\n\n return () => {\n observer.disconnect()\n }\n }\n\n return () => {}\n }, [triggerRef])\n\n useEffect(() => {\n if (triggerRef.current === null) return\n removeDuplicateAriaDescription(triggerRef.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return (\n <StyledContent\n {...restProps}\n ref={forwardRef}\n align={align}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionPadding={collisionPadding}\n hideWhenDetached={hideWhenDetached}\n side={side}\n sideOffset={sideOffset}\n sticky={sticky}\n >\n {children}\n <StyledArrowIcon />\n </StyledContent>\n )\n }\n)\n\nContent.displayName = 'Tooltip.Content'\n","import { styled } from '@mirohq/design-system-stitches'\nimport { Trigger } from '@radix-ui/react-tooltip'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\n\nexport const StyledTrigger = styled(Trigger)\n\nexport type StyledTriggerProps = StrictComponentProps<typeof StyledTrigger>\n","import React, { useContext } from 'react'\nimport type { ElementRef, DOMAttributes } from 'react'\nimport { mergeRefs } from '@mirohq/design-system-utils'\nimport { useHover } from '@react-aria/interactions'\nimport { mergeProps } from '@react-aria/utils'\n\nimport { StyledTrigger } from './trigger.styled'\nimport type { StyledTriggerProps } from './trigger.styled'\nimport { TooltipTriggerContext } from '../tooltip'\n\nexport interface TriggerProps extends StyledTriggerProps {\n /**\n * temporary the same as onClick, later will be added touch events support\n */\n onPress?: DOMAttributes<HTMLElement>['onClick']\n}\n\nexport const Trigger = React.forwardRef<\n ElementRef<typeof StyledTrigger>,\n TriggerProps\n>(({ onPress, onClick, ...restProps }, forwardRef) => {\n const { triggerRef, hoveredRef, focusedRef } = useContext(\n TooltipTriggerContext\n )\n\n const { hoverProps } = useHover({\n onHoverStart: () => {\n hoveredRef.current = true\n },\n onHoverEnd: () => {\n hoveredRef.current = false\n },\n })\n\n return (\n <StyledTrigger\n {...mergeProps(restProps, hoverProps, {\n onFocus: () => {\n focusedRef.current = true\n },\n onBlur: () => {\n focusedRef.current = false\n },\n })}\n onClick={onPress ?? onClick}\n ref={mergeRefs([triggerRef, forwardRef])}\n />\n )\n})\n\nTrigger.displayName = 'Tooltip.Trigger'\n","import React, { createContext, useContext } from 'react'\n\nexport interface ProviderProps {\n /**\n * The duration from when the mouse enters a tooltip trigger until\n * the tooltip opens.\n */\n delayDuration?: number\n\n /**\n * How much time a user has to enter another trigger without incurring\n * a delay again.\n * When set to `0`, when hovering between triggers there wont be delay duration.\n * @default 500\n */\n skipDelayDuration?: number\n\n /**\n * The content\n */\n children?: React.ReactNode\n}\n\nexport const ProviderContext = createContext<ProviderProps>({} as any)\n\nexport const Provider: React.FC<ProviderProps> = ({\n children,\n ...restProps\n}) => (\n <ProviderContext.Provider value={restProps}>\n {children}\n </ProviderContext.Provider>\n)\n\nProvider.displayName = 'Tooltip.Provider'\n\nexport const useTooltipContext = (): ProviderProps =>\n useContext(ProviderContext)\n","import React from 'react'\nimport type { TooltipPortalProps } from '@radix-ui/react-tooltip'\nimport { Portal as RadixPortal } from '@radix-ui/react-tooltip'\n\nexport interface PortalProps extends TooltipPortalProps {\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. If used on this part, it will be\n * inherited by Tooltip.Content.\n */\n forceMount?: true\n\n /**\n * Specify a container element to portal the content into.\n */\n container?: HTMLElement | null\n}\n\nexport const Portal: React.FC<PortalProps> = props => <RadixPortal {...props} />\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledHotkey = styled(Primitive.span, {\n marginLeft: '$100',\n})\n\nexport type StyledHotkeyProps = StrictComponentProps<typeof StyledHotkey>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { Hotkey as BaseHotkey } from '@mirohq/design-system-base-hotkey'\n\nimport type { StyledHotkeyProps } from './hotkey.styled'\nimport { StyledHotkey } from './hotkey.styled'\n\nexport interface HotkeyProps extends StyledHotkeyProps {\n /**\n * The content.\n */\n children: string\n}\n\nexport const Hotkey = React.forwardRef<\n ElementRef<typeof StyledHotkey>,\n HotkeyProps\n>(({ children, ...restProps }, forwardRef) => (\n <StyledHotkey {...restProps} ref={forwardRef}>\n <BaseHotkey variant='inverted'>{children}</BaseHotkey>\n </StyledHotkey>\n))\n","import React, {\n useState,\n useCallback,\n useEffect,\n useRef,\n createContext,\n} from 'react'\nimport {\n Provider as RadixProvider,\n Root as RadixTooltip,\n} from '@radix-ui/react-tooltip'\n\nimport { Content } from './partials/content'\nimport { Trigger } from './partials/trigger'\nimport { Provider, useTooltipContext } from './partials/provider'\nimport { Portal } from './partials/portal'\nimport { Hotkey } from './partials/hotkey'\n\nexport interface TooltipProps {\n /**\n * The open state of the tooltip when it is initially rendered. Use when you\n * do not need to control its open state.\n */\n defaultOpen?: boolean\n\n /**\n * The current state of the tooltip.\n */\n open?: boolean\n\n /**\n * Event handler called when the tooltip opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the tooltip closes.\n */\n onClose?: () => void\n\n /**\n * Overrides the duration given to the `Provider` to customize the open delay\n * for a specific tooltip.\n * @default 200\n */\n delayDuration?: number\n\n /**\n * How much time a user has to enter another trigger without incurring\n * a delay again.\n * @default 500\n */\n skipDelayDuration?: number\n\n /**\n * Clears the delayDuration and skipDelayDuration timeouts when the component\n * is unmounted. This flag is `true` by default when using NODE_ENV=test.\n * @default false\n */\n clearDelaysOnUnmount?: boolean\n\n /**\n * Closes the tooltip as soon as the pointer leaves the trigger making it\n * impossible to hover the content.\n */\n disableHoverableContent?: boolean\n\n /**\n * The content\n */\n children: React.ReactNode\n}\n\nlet delayTimer: ReturnType<typeof setTimeout> | undefined\nlet skipDelayTimer: ReturnType<typeof setTimeout> | undefined\nlet shouldSkipDelay = false\n\nexport const DEFAULT_SKIP_DELAY_DURATION = 500\nexport const DEFAULT_DELAY_DURATION = 200\n\nexport const TooltipTriggerContext = createContext<{\n triggerRef: React.RefObject<HTMLButtonElement>\n hoveredRef: React.MutableRefObject<boolean>\n focusedRef: React.MutableRefObject<boolean>\n}>({\n triggerRef: { current: null },\n hoveredRef: { current: false },\n focusedRef: { current: false },\n})\n\nexport const Tooltip: React.FC<TooltipProps> & Partials = ({\n defaultOpen = false,\n open,\n onOpen,\n onClose,\n skipDelayDuration,\n delayDuration,\n disableHoverableContent,\n clearDelaysOnUnmount = process.env.NODE_ENV === 'test',\n children,\n}) => {\n const context = useTooltipContext()\n const isMounted = useRef(false)\n const _skipDelayDuration =\n skipDelayDuration ??\n context.skipDelayDuration ??\n DEFAULT_SKIP_DELAY_DURATION\n\n const triggerRef = useRef<HTMLButtonElement>(null)\n const hoveredRef = useRef<boolean>(false)\n const focusedRef = useRef<boolean>(false)\n\n const [openState, setOpenState] = useState(defaultOpen)\n const setDelayedOpen = useCallback(\n (newOpenState: boolean) => {\n clearTimeout(delayTimer)\n clearTimeout(skipDelayTimer)\n\n if (!newOpenState) {\n skipDelayTimer = setTimeout(() => {\n shouldSkipDelay = false\n }, _skipDelayDuration)\n setOpenState(false)\n onClose?.()\n return\n }\n\n if (shouldSkipDelay || focusedRef.current) {\n setOpenState(newOpenState)\n return\n }\n\n delayTimer = setTimeout(() => {\n // ignore it if the user quickly hover the trigger and leave before the timeout\n if (!hoveredRef.current && process.env.NODE_ENV !== 'test') {\n return\n }\n\n /* when skipDelayDuration is 0 no skip delay should happen. */\n shouldSkipDelay = _skipDelayDuration !== 0\n\n if (isMounted.current) {\n setOpenState(true)\n onOpen?.()\n }\n }, delayDuration ?? context.delayDuration ?? DEFAULT_DELAY_DURATION)\n },\n [delayDuration, context.delayDuration, _skipDelayDuration, onClose, onOpen]\n )\n\n const handleOpenChange = useCallback(\n (newState: boolean) => {\n if (open == null) {\n setDelayedOpen(newState)\n return\n }\n\n newState ? onOpen?.() : onClose?.()\n },\n [open, onOpen, onClose, setDelayedOpen]\n )\n\n useEffect(\n () => () => {\n if (clearDelaysOnUnmount) {\n clearTimeout(delayTimer)\n clearTimeout(skipDelayTimer)\n shouldSkipDelay = false\n }\n },\n [clearDelaysOnUnmount]\n )\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n return (\n <RadixProvider delayDuration={0} skipDelayDuration={0}>\n <TooltipTriggerContext.Provider\n value={{\n triggerRef,\n hoveredRef,\n focusedRef,\n }}\n >\n <RadixTooltip\n disableHoverableContent={disableHoverableContent}\n open={open ?? openState}\n delayDuration={0} // we control it manually\n onOpenChange={handleOpenChange}\n >\n {children}\n </RadixTooltip>\n </TooltipTriggerContext.Provider>\n </RadixProvider>\n )\n}\n\n// Partials\n// -----------------------------------------------------------------------------\n\nexport interface Partials {\n Trigger: typeof Trigger\n Content: typeof Content\n Provider: typeof Provider\n Portal: typeof Portal\n Hotkey: typeof Hotkey\n}\n\nTooltip.Trigger = Trigger\nTooltip.Content = Content\nTooltip.Provider = Provider\nTooltip.Portal = Portal\nTooltip.Hotkey = Hotkey\n"],"names":["RadixArrow","RadixContent","Trigger","RadixPortal","BaseHotkey","_a","RadixProvider","RadixTooltip"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module.js","sources":["../src/partials/content.styled.tsx","../src/partials/content.tsx","../src/partials/trigger.styled.tsx","../src/partials/trigger.tsx","../src/partials/provider.tsx","../src/partials/portal.tsx","../src/partials/hotkey.styled.tsx","../src/partials/hotkey.tsx","../src/tooltip.tsx"],"sourcesContent":["import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport {\n Content as RadixContent,\n Arrow as RadixArrow,\n} from '@radix-ui/react-tooltip'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledArrowIcon = styled(RadixArrow, {\n fill: '$black',\n height: '5px',\n transform: 'translateY(-1px)',\n width: '15px',\n})\n\nexport const StyledContent = styled(RadixContent, {\n backgroundColor: '$black',\n borderRadius: '$50',\n color: '$white',\n fontSize: '14px',\n fontWeight: '400',\n lineHeight: '20px',\n fontFamily: 'inherit',\n padding: '$150',\n zIndex: '$tooltip',\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import type { ElementRef } from 'react'\nimport React, { useContext, useEffect } from 'react'\n\nimport { StyledContent, StyledArrowIcon } from './content.styled'\nimport type { StyledContentProps } from './content.styled'\nimport type { PointerDownOutsideEvent, Side, Align } from '../types'\nimport { TooltipTriggerContext } from '../tooltip'\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * The preferred alignment against the trigger. May change when collisions\n * occur.\n * @default 'center'\n */\n align?: Align\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n * @default 0\n */\n alignOffset?: number\n\n /**\n * The distance in pixels from the trigger.\n * @default 5\n */\n sideOffset?: number\n\n /** The preferred side of the trigger to render against when open.\n * Will be reversed when collisions occur and avoidCollisions is enabled.\n * @default 'top'\n */\n side?: Side\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with window edges.\n * @default true\n */\n avoidCollisions?: boolean\n\n /**\n * The distance in pixels from window edges where collision detection should\n * occur.\n * @default 0\n */\n collisionPadding?: number\n\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. It inherits from Tooltip.Portal.\n */\n forceMount?: true\n\n /**\n * The element used as the collision boundary. By default this is the\n * viewport, though you can provide additional element(s) to be included in\n * this check.\n */\n collisionBoundary?: Element | null\n\n /**\n * The sticky behavior on the align axis. \"partial\" will keep the content in\n * the boundary as long as the trigger is at least partially in the boundary\n * whilst \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: 'partial' | 'always'\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n * @default true (false in test environment)\n */\n hideWhenDetached?: boolean\n\n /**\n * Event handler called when the escape key is down. It can be prevented by\n * calling event.preventDefault.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void\n\n /**\n * Event handler called when a pointer event occurs outside the bounds of the\n * component. It can be prevented by calling event.preventDefault.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void\n}\n\nexport const Content = React.forwardRef<\n ElementRef<typeof StyledContent>,\n ContentProps\n>(\n (\n {\n align = 'center',\n alignOffset = 0,\n avoidCollisions = true,\n collisionPadding = 0,\n children,\n side = 'top',\n sideOffset = 5,\n sticky = 'partial',\n hideWhenDetached = process.env.NODE_ENV !== 'test',\n ...restProps\n },\n forwardRef\n ) => {\n const { triggerRef } = useContext(TooltipTriggerContext)\n\n const removeDuplicateAriaDescription = (element: Element): void => {\n const ariaDescribedBy: string | null =\n element.getAttribute('aria-describedby')\n\n if (ariaDescribedBy !== null) {\n const ariaDescription: string | null | undefined =\n document.getElementById(ariaDescribedBy)?.textContent\n\n const areAriaLabelAndAriaDescriptionEqual =\n ariaDescription?.trim() ===\n element?.getAttribute('aria-label')?.trim()\n\n if (areAriaLabelAndAriaDescriptionEqual) {\n element.removeAttribute('aria-describedby')\n }\n }\n }\n useEffect((): (() => void) => {\n const element = triggerRef.current\n\n if (element != null) {\n const handleMutation = (mutationsList: MutationRecord[]): void => {\n for (const mutation of mutationsList) {\n if (\n mutation.type === 'attributes' &&\n mutation.attributeName === 'aria-describedby'\n ) {\n removeDuplicateAriaDescription(element)\n }\n }\n }\n\n const observer = new MutationObserver(handleMutation)\n\n observer.observe(element, {\n attributes: true,\n })\n\n return () => {\n observer.disconnect()\n }\n }\n\n return () => {}\n }, [triggerRef])\n\n useEffect(() => {\n if (triggerRef.current === null) return\n removeDuplicateAriaDescription(triggerRef.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return (\n <StyledContent\n {...restProps}\n ref={forwardRef}\n align={align}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionPadding={collisionPadding}\n hideWhenDetached={hideWhenDetached}\n side={side}\n sideOffset={sideOffset}\n sticky={sticky}\n >\n {children}\n <StyledArrowIcon />\n </StyledContent>\n )\n }\n)\n\nContent.displayName = 'Tooltip.Content'\n","import { styled } from '@mirohq/design-system-stitches'\nimport { Trigger } from '@radix-ui/react-tooltip'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\n\nexport const StyledTrigger = styled(Trigger)\n\nexport type StyledTriggerProps = StrictComponentProps<typeof StyledTrigger>\n","import React, { useContext } from 'react'\nimport type { ElementRef, DOMAttributes } from 'react'\nimport { mergeRefs } from '@mirohq/design-system-utils'\n\nimport { StyledTrigger } from './trigger.styled'\nimport type { StyledTriggerProps } from './trigger.styled'\nimport { TooltipTriggerContext } from '../tooltip'\n\nexport interface TriggerProps extends StyledTriggerProps {\n /**\n * temporary the same as onClick, later will be added touch events support\n */\n onPress?: DOMAttributes<HTMLElement>['onClick']\n}\n\nexport const Trigger = React.forwardRef<\n ElementRef<typeof StyledTrigger>,\n TriggerProps\n>(({ onPress, onClick, ...restProps }, forwardRef) => {\n const { triggerRef, id } = useContext(TooltipTriggerContext)\n return (\n <StyledTrigger\n {...restProps}\n onClick={onPress ?? onClick}\n data-tooltip-trigger={id}\n ref={mergeRefs([triggerRef, forwardRef])}\n />\n )\n})\n\nTrigger.displayName = 'Tooltip.Trigger'\n","import React, { createContext, useContext } from 'react'\n\nexport interface ProviderProps {\n /**\n * The duration from when the mouse enters a tooltip trigger until\n * the tooltip opens.\n */\n delayDuration?: number\n\n /**\n * How much time a user has to enter another trigger without incurring\n * a delay again.\n * When set to `0`, when hovering between triggers there wont be delay duration.\n * @default 500\n */\n skipDelayDuration?: number\n\n /**\n * The content\n */\n children?: React.ReactNode\n}\n\nexport const ProviderContext = createContext<ProviderProps>({} as any)\n\nexport const Provider: React.FC<ProviderProps> = ({\n children,\n ...restProps\n}) => (\n <ProviderContext.Provider value={restProps}>\n {children}\n </ProviderContext.Provider>\n)\n\nProvider.displayName = 'Tooltip.Provider'\n\nexport const useTooltipContext = (): ProviderProps =>\n useContext(ProviderContext)\n","import React from 'react'\nimport type { TooltipPortalProps } from '@radix-ui/react-tooltip'\nimport { Portal as RadixPortal } from '@radix-ui/react-tooltip'\n\nexport interface PortalProps extends TooltipPortalProps {\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. If used on this part, it will be\n * inherited by Tooltip.Content.\n */\n forceMount?: true\n\n /**\n * Specify a container element to portal the content into.\n */\n container?: HTMLElement | null\n}\n\nexport const Portal: React.FC<PortalProps> = props => <RadixPortal {...props} />\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledHotkey = styled(Primitive.span, {\n marginLeft: '$100',\n})\n\nexport type StyledHotkeyProps = StrictComponentProps<typeof StyledHotkey>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { Hotkey as BaseHotkey } from '@mirohq/design-system-base-hotkey'\n\nimport type { StyledHotkeyProps } from './hotkey.styled'\nimport { StyledHotkey } from './hotkey.styled'\n\nexport interface HotkeyProps extends StyledHotkeyProps {\n /**\n * The content.\n */\n children: string\n}\n\nexport const Hotkey = React.forwardRef<\n ElementRef<typeof StyledHotkey>,\n HotkeyProps\n>(({ children, ...restProps }, forwardRef) => (\n <StyledHotkey {...restProps} ref={forwardRef}>\n <BaseHotkey variant='inverted'>{children}</BaseHotkey>\n </StyledHotkey>\n))\n","import React, {\n useState,\n useCallback,\n useEffect,\n useRef,\n createContext,\n} from 'react'\nimport { useId } from '@mirohq/design-system-use-id'\nimport {\n Provider as RadixProvider,\n Root as RadixTooltip,\n} from '@radix-ui/react-tooltip'\n\nimport { Content } from './partials/content'\nimport { Trigger } from './partials/trigger'\nimport { Provider, useTooltipContext } from './partials/provider'\nimport { Portal } from './partials/portal'\nimport { Hotkey } from './partials/hotkey'\n\nexport interface TooltipProps {\n /**\n * The open state of the tooltip when it is initially rendered. Use when you\n * do not need to control its open state.\n */\n defaultOpen?: boolean\n\n /**\n * The current state of the tooltip.\n */\n open?: boolean\n\n /**\n * Event handler called when the tooltip opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the tooltip closes.\n */\n onClose?: () => void\n\n /**\n * Overrides the duration given to the `Provider` to customize the open delay\n * for a specific tooltip.\n * @default 200\n */\n delayDuration?: number\n\n /**\n * How much time a user has to enter another trigger without incurring\n * a delay again.\n * @default 500\n */\n skipDelayDuration?: number\n\n /**\n * Clears the delayDuration and skipDelayDuration timeouts when the component\n * is unmounted. This flag is `true` by default when using NODE_ENV=test.\n * @default false\n */\n clearDelaysOnUnmount?: boolean\n\n /**\n * Closes the tooltip as soon as the pointer leaves the trigger making it\n * impossible to hover the content.\n */\n disableHoverableContent?: boolean\n\n /**\n * The content\n */\n children: React.ReactNode\n}\n\nlet delayTimer: ReturnType<typeof setTimeout> | undefined\nlet skipDelayTimer: ReturnType<typeof setTimeout> | undefined\nlet shouldSkipDelay = false\n\nexport const DEFAULT_SKIP_DELAY_DURATION = 500\nexport const DEFAULT_DELAY_DURATION = 200\n\nexport const TooltipTriggerContext = createContext<{\n triggerRef: React.RefObject<HTMLButtonElement>\n id?: string\n}>({\n triggerRef: { current: null },\n})\n\nexport const Tooltip: React.FC<TooltipProps> & Partials = ({\n defaultOpen = false,\n open,\n onOpen,\n onClose,\n skipDelayDuration,\n delayDuration,\n disableHoverableContent,\n clearDelaysOnUnmount = process.env.NODE_ENV === 'test',\n children,\n}) => {\n const context = useTooltipContext()\n const isMounted = useRef(false)\n const _skipDelayDuration =\n skipDelayDuration ??\n context.skipDelayDuration ??\n DEFAULT_SKIP_DELAY_DURATION\n\n const triggerId = useId()\n\n const [openState, setOpenState] = useState(defaultOpen)\n const setDelayedOpen = useCallback(\n (newOpenState: boolean) => {\n clearTimeout(delayTimer)\n clearTimeout(skipDelayTimer)\n\n const triggerSelector = `[data-tooltip-trigger=\"${triggerId}\"]`\n\n if (!newOpenState) {\n skipDelayTimer = setTimeout(() => {\n shouldSkipDelay = false\n }, _skipDelayDuration)\n setOpenState(false)\n onClose?.()\n return\n }\n\n if (\n shouldSkipDelay ||\n document.querySelector(`${triggerSelector}:focus`) != null\n ) {\n setOpenState(newOpenState)\n return\n }\n\n delayTimer = setTimeout(() => {\n // ignore it if the the user quickly hover the trigger and leave before the timeout\n // (unfortunately JSDOM seems not to support :hover selector)\n if (\n document.querySelector(`${triggerSelector}:hover`) == null &&\n process.env.NODE_ENV !== 'test'\n ) {\n return\n }\n\n /* when skipDelayDuration is 0 no skip delay should happen. */\n shouldSkipDelay = _skipDelayDuration !== 0\n\n if (isMounted.current) {\n setOpenState(true)\n onOpen?.()\n }\n }, delayDuration ?? context.delayDuration ?? DEFAULT_DELAY_DURATION)\n },\n [\n delayDuration,\n context.delayDuration,\n _skipDelayDuration,\n onClose,\n onOpen,\n triggerId,\n ]\n )\n\n const handleOpenChange = useCallback(\n (newState: boolean) => {\n if (open == null) {\n setDelayedOpen(newState)\n return\n }\n\n newState ? onOpen?.() : onClose?.()\n },\n [open, onOpen, onClose, setDelayedOpen]\n )\n\n useEffect(\n () => () => {\n if (clearDelaysOnUnmount) {\n clearTimeout(delayTimer)\n clearTimeout(skipDelayTimer)\n shouldSkipDelay = false\n }\n },\n [clearDelaysOnUnmount]\n )\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n const triggerRef = useRef<HTMLButtonElement>(null)\n\n return (\n <RadixProvider delayDuration={0} skipDelayDuration={0}>\n <TooltipTriggerContext.Provider\n value={{\n id: triggerId,\n triggerRef,\n }}\n >\n <RadixTooltip\n disableHoverableContent={disableHoverableContent}\n open={open ?? openState}\n delayDuration={0} // we control it manually\n onOpenChange={handleOpenChange}\n >\n {children}\n </RadixTooltip>\n </TooltipTriggerContext.Provider>\n </RadixProvider>\n )\n}\n\n// Partials\n// -----------------------------------------------------------------------------\n\nexport interface Partials {\n Trigger: typeof Trigger\n Content: typeof Content\n Provider: typeof Provider\n Portal: typeof Portal\n Hotkey: typeof Hotkey\n}\n\nTooltip.Trigger = Trigger\nTooltip.Content = Content\nTooltip.Provider = Provider\nTooltip.Portal = Portal\nTooltip.Hotkey = Hotkey\n"],"names":["RadixArrow","RadixContent","Trigger","RadixPortal","BaseHotkey","_a","RadixProvider","RadixTooltip"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mirohq/design-system-tooltip",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.28",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Miro",
|
|
6
6
|
"source": "src/index.ts",
|
|
@@ -28,12 +28,11 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@radix-ui/react-tooltip": "^1.0.3",
|
|
31
|
-
"@
|
|
32
|
-
"@react-aria/utils": "^3.13.0",
|
|
33
|
-
"@mirohq/design-system-base-hotkey": "^0.1.19",
|
|
34
|
-
"@mirohq/design-system-utils": "^0.15.4",
|
|
31
|
+
"@mirohq/design-system-base-hotkey": "^0.1.21",
|
|
35
32
|
"@mirohq/design-system-primitive": "^1.1.2",
|
|
36
|
-
"@mirohq/design-system-stitches": "^2.6.
|
|
33
|
+
"@mirohq/design-system-stitches": "^2.6.20",
|
|
34
|
+
"@mirohq/design-system-utils": "^0.15.4",
|
|
35
|
+
"@mirohq/design-system-use-id": "^0.1.2"
|
|
37
36
|
},
|
|
38
37
|
"scripts": {
|
|
39
38
|
"build": "rollup -c ../../../rollup.config.js",
|