@mirohq/design-system-tooltip 3.4.1 → 3.5.0
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 +45 -8
- package/dist/main.js.map +1 -1
- package/dist/module.js +45 -8
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +11 -3
- package/package.json +4 -3
package/dist/main.js
CHANGED
|
@@ -7,6 +7,7 @@ var React = require('react');
|
|
|
7
7
|
var designSystemUseId = require('@mirohq/design-system-use-id');
|
|
8
8
|
var reactTooltip = require('@radix-ui/react-tooltip');
|
|
9
9
|
var designSystemBaseTooltip = require('@mirohq/design-system-base-tooltip');
|
|
10
|
+
var designSystemExperiments = require('@mirohq/design-system-experiments');
|
|
10
11
|
var designSystemStitches = require('@mirohq/design-system-stitches');
|
|
11
12
|
var designSystemUtils = require('@mirohq/design-system-utils');
|
|
12
13
|
var designSystemBaseHotkey = require('@mirohq/design-system-base-hotkey');
|
|
@@ -20,7 +21,17 @@ const StyledArrowIcon = designSystemStitches.styled(reactTooltip.Arrow, {
|
|
|
20
21
|
fill: "$black",
|
|
21
22
|
height: "5px",
|
|
22
23
|
transform: "translateY(-1px)",
|
|
23
|
-
width: "15px"
|
|
24
|
+
width: "15px",
|
|
25
|
+
forcedColorAdjust: "auto",
|
|
26
|
+
variants: {
|
|
27
|
+
v1: {
|
|
28
|
+
true: {
|
|
29
|
+
fill: "$gray-800",
|
|
30
|
+
width: "8px",
|
|
31
|
+
height: "6px"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
24
35
|
});
|
|
25
36
|
const StyledContent = designSystemStitches.styled(reactTooltip.Content, {
|
|
26
37
|
backgroundColor: "$black",
|
|
@@ -31,7 +42,19 @@ const StyledContent = designSystemStitches.styled(reactTooltip.Content, {
|
|
|
31
42
|
lineHeight: "20px",
|
|
32
43
|
fontFamily: "inherit",
|
|
33
44
|
padding: "$150",
|
|
34
|
-
zIndex: "$tooltip"
|
|
45
|
+
zIndex: "$tooltip",
|
|
46
|
+
outline: "1px solid transparent",
|
|
47
|
+
variants: {
|
|
48
|
+
v1: {
|
|
49
|
+
true: {
|
|
50
|
+
background: "$gray-800",
|
|
51
|
+
color: "$gray-50",
|
|
52
|
+
padding: "calc($50 + $25) $100",
|
|
53
|
+
lineHeight: "$400",
|
|
54
|
+
borderRadius: "$100"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
35
58
|
});
|
|
36
59
|
|
|
37
60
|
const Content = React__default["default"].forwardRef(
|
|
@@ -47,7 +70,7 @@ const Content = React__default["default"].forwardRef(
|
|
|
47
70
|
hideWhenDetached = process.env.NODE_ENV !== "test",
|
|
48
71
|
...restProps
|
|
49
72
|
}, forwardRef) => {
|
|
50
|
-
const { triggerRef } = React.useContext(TooltipTriggerContext);
|
|
73
|
+
const { triggerRef, v1 } = React.useContext(TooltipTriggerContext);
|
|
51
74
|
const removeDuplicateAriaDescription = (element) => {
|
|
52
75
|
var _a, _b;
|
|
53
76
|
const ariaDescribedBy = element.getAttribute("aria-describedby");
|
|
@@ -89,6 +112,7 @@ const Content = React__default["default"].forwardRef(
|
|
|
89
112
|
StyledContent,
|
|
90
113
|
{
|
|
91
114
|
...restProps,
|
|
115
|
+
v1,
|
|
92
116
|
ref: forwardRef,
|
|
93
117
|
align,
|
|
94
118
|
alignOffset,
|
|
@@ -100,7 +124,7 @@ const Content = React__default["default"].forwardRef(
|
|
|
100
124
|
sticky,
|
|
101
125
|
children: [
|
|
102
126
|
children,
|
|
103
|
-
/* @__PURE__ */ jsxRuntime.jsx(StyledArrowIcon, {})
|
|
127
|
+
/* @__PURE__ */ jsxRuntime.jsx(StyledArrowIcon, { v1 })
|
|
104
128
|
]
|
|
105
129
|
}
|
|
106
130
|
);
|
|
@@ -135,10 +159,20 @@ const useTooltipContext = () => React.useContext(ProviderContext);
|
|
|
135
159
|
const Portal = (props) => /* @__PURE__ */ jsxRuntime.jsx(reactTooltip.Portal, { ...props });
|
|
136
160
|
|
|
137
161
|
const StyledHotkey = designSystemStitches.styled(designSystemPrimitive.Primitive.span, {
|
|
138
|
-
marginLeft: "$100"
|
|
162
|
+
marginLeft: "$100",
|
|
163
|
+
variants: {
|
|
164
|
+
v1: {
|
|
165
|
+
true: {
|
|
166
|
+
marginRight: "-$50"
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
139
170
|
});
|
|
140
171
|
|
|
141
|
-
const Hotkey = React__default["default"].forwardRef(({ children, ...restProps }, forwardRef) =>
|
|
172
|
+
const Hotkey = React__default["default"].forwardRef(({ children, ...restProps }, forwardRef) => {
|
|
173
|
+
const { v1 } = React.useContext(TooltipTriggerContext);
|
|
174
|
+
return /* @__PURE__ */ jsxRuntime.jsx(StyledHotkey, { ...restProps, ref: forwardRef, v1, children: /* @__PURE__ */ jsxRuntime.jsx(designSystemBaseHotkey.Hotkey, { variant: "inverted", v1, children }) });
|
|
175
|
+
});
|
|
142
176
|
|
|
143
177
|
let delayTimer;
|
|
144
178
|
let skipDelayTimer;
|
|
@@ -146,7 +180,8 @@ let shouldSkipDelay = false;
|
|
|
146
180
|
const DEFAULT_SKIP_DELAY_DURATION = 500;
|
|
147
181
|
const DEFAULT_DELAY_DURATION = 300;
|
|
148
182
|
const TooltipTriggerContext = React.createContext({
|
|
149
|
-
triggerRef: { current: null }
|
|
183
|
+
triggerRef: { current: null },
|
|
184
|
+
v1: false
|
|
150
185
|
});
|
|
151
186
|
const Tooltip = ({
|
|
152
187
|
defaultOpen = false,
|
|
@@ -160,6 +195,7 @@ const Tooltip = ({
|
|
|
160
195
|
children
|
|
161
196
|
}) => {
|
|
162
197
|
var _a;
|
|
198
|
+
const [v1] = designSystemExperiments.useNewDesignLanguage();
|
|
163
199
|
const context = useTooltipContext();
|
|
164
200
|
const isMounted = React.useRef(false);
|
|
165
201
|
const _skipDelayDuration = (_a = skipDelayDuration != null ? skipDelayDuration : context.skipDelayDuration) != null ? _a : DEFAULT_SKIP_DELAY_DURATION;
|
|
@@ -240,7 +276,8 @@ const Tooltip = ({
|
|
|
240
276
|
{
|
|
241
277
|
value: {
|
|
242
278
|
id: triggerId,
|
|
243
|
-
triggerRef
|
|
279
|
+
triggerRef,
|
|
280
|
+
v1
|
|
244
281
|
},
|
|
245
282
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
246
283
|
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'\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'\nimport { useBaseTooltipContext } from '@mirohq/design-system-base-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 = 300\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 { preventNextOpeningRef } = useBaseTooltipContext()\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 (newState && preventNextOpeningRef.current) {\n preventNextOpeningRef.current = false\n return\n }\n\n if (open == null) {\n setDelayedOpen(newState)\n return\n }\n\n newState ? onOpen?.() : onClose?.()\n },\n [open, onOpen, onClose, preventNextOpeningRef, 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","useBaseTooltipContext","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 forcedColorAdjust: 'auto',\n\n variants: {\n v1: {\n true: {\n fill: '$gray-800',\n width: '8px',\n height: '6px',\n },\n },\n },\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 outline: '1px solid transparent',\n\n variants: {\n v1: {\n true: {\n background: '$gray-800',\n color: '$gray-50',\n padding: 'calc($50 + $25) $100',\n lineHeight: '$400',\n borderRadius: '$100',\n },\n },\n },\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 Omit<StyledContentProps, 'v1'> {\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, v1 } = 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 v1={v1}\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 v1={v1} />\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 variants: {\n v1: {\n true: {\n marginRight: '-$50',\n },\n },\n },\n})\n\nexport type StyledHotkeyProps = StrictComponentProps<typeof StyledHotkey>\n","import React, { useContext } 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'\nimport { TooltipTriggerContext } from '../tooltip'\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 const { v1 } = useContext(TooltipTriggerContext)\n\n return (\n <StyledHotkey {...restProps} ref={forwardRef} v1={v1}>\n <BaseHotkey variant='inverted' v1={v1}>\n {children}\n </BaseHotkey>\n </StyledHotkey>\n )\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'\nimport { useBaseTooltipContext } from '@mirohq/design-system-base-tooltip'\nimport { useNewDesignLanguage } from '@mirohq/design-system-experiments'\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 = 300\n\nexport const TooltipTriggerContext = createContext<{\n triggerRef: React.RefObject<HTMLButtonElement>\n v1: boolean\n id?: string\n}>({\n triggerRef: { current: null },\n v1: 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 [v1] = useNewDesignLanguage()\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 { preventNextOpeningRef } = useBaseTooltipContext()\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 (newState && preventNextOpeningRef.current) {\n preventNextOpeningRef.current = false\n return\n }\n\n if (open == null) {\n setDelayedOpen(newState)\n return\n }\n\n newState ? onOpen?.() : onClose?.()\n },\n [open, onOpen, onClose, preventNextOpeningRef, 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 v1,\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","jsx","Trigger","mergeRefs","createContext","RadixPortal","Primitive","BaseHotkey","useNewDesignLanguage","useRef","useId","useBaseTooltipContext","useState","useCallback","_a","RadixProvider","RadixTooltip"],"mappings":"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"}
|
package/dist/module.js
CHANGED
|
@@ -3,6 +3,7 @@ import React, { useContext, useEffect, createContext, useRef, useState, useCallb
|
|
|
3
3
|
import { useId } from '@mirohq/design-system-use-id';
|
|
4
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';
|
|
5
5
|
import { useBaseTooltipContext } from '@mirohq/design-system-base-tooltip';
|
|
6
|
+
import { useNewDesignLanguage } from '@mirohq/design-system-experiments';
|
|
6
7
|
import { styled } from '@mirohq/design-system-stitches';
|
|
7
8
|
import { mergeRefs } from '@mirohq/design-system-utils';
|
|
8
9
|
import { Hotkey as Hotkey$1 } from '@mirohq/design-system-base-hotkey';
|
|
@@ -12,7 +13,17 @@ const StyledArrowIcon = styled(Arrow, {
|
|
|
12
13
|
fill: "$black",
|
|
13
14
|
height: "5px",
|
|
14
15
|
transform: "translateY(-1px)",
|
|
15
|
-
width: "15px"
|
|
16
|
+
width: "15px",
|
|
17
|
+
forcedColorAdjust: "auto",
|
|
18
|
+
variants: {
|
|
19
|
+
v1: {
|
|
20
|
+
true: {
|
|
21
|
+
fill: "$gray-800",
|
|
22
|
+
width: "8px",
|
|
23
|
+
height: "6px"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
16
27
|
});
|
|
17
28
|
const StyledContent = styled(Content$1, {
|
|
18
29
|
backgroundColor: "$black",
|
|
@@ -23,7 +34,19 @@ const StyledContent = styled(Content$1, {
|
|
|
23
34
|
lineHeight: "20px",
|
|
24
35
|
fontFamily: "inherit",
|
|
25
36
|
padding: "$150",
|
|
26
|
-
zIndex: "$tooltip"
|
|
37
|
+
zIndex: "$tooltip",
|
|
38
|
+
outline: "1px solid transparent",
|
|
39
|
+
variants: {
|
|
40
|
+
v1: {
|
|
41
|
+
true: {
|
|
42
|
+
background: "$gray-800",
|
|
43
|
+
color: "$gray-50",
|
|
44
|
+
padding: "calc($50 + $25) $100",
|
|
45
|
+
lineHeight: "$400",
|
|
46
|
+
borderRadius: "$100"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
27
50
|
});
|
|
28
51
|
|
|
29
52
|
const Content = React.forwardRef(
|
|
@@ -39,7 +62,7 @@ const Content = React.forwardRef(
|
|
|
39
62
|
hideWhenDetached = process.env.NODE_ENV !== "test",
|
|
40
63
|
...restProps
|
|
41
64
|
}, forwardRef) => {
|
|
42
|
-
const { triggerRef } = useContext(TooltipTriggerContext);
|
|
65
|
+
const { triggerRef, v1 } = useContext(TooltipTriggerContext);
|
|
43
66
|
const removeDuplicateAriaDescription = (element) => {
|
|
44
67
|
var _a, _b;
|
|
45
68
|
const ariaDescribedBy = element.getAttribute("aria-describedby");
|
|
@@ -81,6 +104,7 @@ const Content = React.forwardRef(
|
|
|
81
104
|
StyledContent,
|
|
82
105
|
{
|
|
83
106
|
...restProps,
|
|
107
|
+
v1,
|
|
84
108
|
ref: forwardRef,
|
|
85
109
|
align,
|
|
86
110
|
alignOffset,
|
|
@@ -92,7 +116,7 @@ const Content = React.forwardRef(
|
|
|
92
116
|
sticky,
|
|
93
117
|
children: [
|
|
94
118
|
children,
|
|
95
|
-
/* @__PURE__ */ jsx(StyledArrowIcon, {})
|
|
119
|
+
/* @__PURE__ */ jsx(StyledArrowIcon, { v1 })
|
|
96
120
|
]
|
|
97
121
|
}
|
|
98
122
|
);
|
|
@@ -127,10 +151,20 @@ const useTooltipContext = () => useContext(ProviderContext);
|
|
|
127
151
|
const Portal = (props) => /* @__PURE__ */ jsx(Portal$1, { ...props });
|
|
128
152
|
|
|
129
153
|
const StyledHotkey = styled(Primitive.span, {
|
|
130
|
-
marginLeft: "$100"
|
|
154
|
+
marginLeft: "$100",
|
|
155
|
+
variants: {
|
|
156
|
+
v1: {
|
|
157
|
+
true: {
|
|
158
|
+
marginRight: "-$50"
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
131
162
|
});
|
|
132
163
|
|
|
133
|
-
const Hotkey = React.forwardRef(({ children, ...restProps }, forwardRef) =>
|
|
164
|
+
const Hotkey = React.forwardRef(({ children, ...restProps }, forwardRef) => {
|
|
165
|
+
const { v1 } = useContext(TooltipTriggerContext);
|
|
166
|
+
return /* @__PURE__ */ jsx(StyledHotkey, { ...restProps, ref: forwardRef, v1, children: /* @__PURE__ */ jsx(Hotkey$1, { variant: "inverted", v1, children }) });
|
|
167
|
+
});
|
|
134
168
|
|
|
135
169
|
let delayTimer;
|
|
136
170
|
let skipDelayTimer;
|
|
@@ -138,7 +172,8 @@ let shouldSkipDelay = false;
|
|
|
138
172
|
const DEFAULT_SKIP_DELAY_DURATION = 500;
|
|
139
173
|
const DEFAULT_DELAY_DURATION = 300;
|
|
140
174
|
const TooltipTriggerContext = createContext({
|
|
141
|
-
triggerRef: { current: null }
|
|
175
|
+
triggerRef: { current: null },
|
|
176
|
+
v1: false
|
|
142
177
|
});
|
|
143
178
|
const Tooltip = ({
|
|
144
179
|
defaultOpen = false,
|
|
@@ -152,6 +187,7 @@ const Tooltip = ({
|
|
|
152
187
|
children
|
|
153
188
|
}) => {
|
|
154
189
|
var _a;
|
|
190
|
+
const [v1] = useNewDesignLanguage();
|
|
155
191
|
const context = useTooltipContext();
|
|
156
192
|
const isMounted = useRef(false);
|
|
157
193
|
const _skipDelayDuration = (_a = skipDelayDuration != null ? skipDelayDuration : context.skipDelayDuration) != null ? _a : DEFAULT_SKIP_DELAY_DURATION;
|
|
@@ -232,7 +268,8 @@ const Tooltip = ({
|
|
|
232
268
|
{
|
|
233
269
|
value: {
|
|
234
270
|
id: triggerId,
|
|
235
|
-
triggerRef
|
|
271
|
+
triggerRef,
|
|
272
|
+
v1
|
|
236
273
|
},
|
|
237
274
|
children: /* @__PURE__ */ jsx(
|
|
238
275
|
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'\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'\nimport { useBaseTooltipContext } from '@mirohq/design-system-base-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 = 300\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 { preventNextOpeningRef } = useBaseTooltipContext()\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 (newState && preventNextOpeningRef.current) {\n preventNextOpeningRef.current = false\n return\n }\n\n if (open == null) {\n setDelayedOpen(newState)\n return\n }\n\n newState ? onOpen?.() : onClose?.()\n },\n [open, onOpen, onClose, preventNextOpeningRef, 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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"}
|
|
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 forcedColorAdjust: 'auto',\n\n variants: {\n v1: {\n true: {\n fill: '$gray-800',\n width: '8px',\n height: '6px',\n },\n },\n },\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 outline: '1px solid transparent',\n\n variants: {\n v1: {\n true: {\n background: '$gray-800',\n color: '$gray-50',\n padding: 'calc($50 + $25) $100',\n lineHeight: '$400',\n borderRadius: '$100',\n },\n },\n },\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 Omit<StyledContentProps, 'v1'> {\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, v1 } = 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 v1={v1}\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 v1={v1} />\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 variants: {\n v1: {\n true: {\n marginRight: '-$50',\n },\n },\n },\n})\n\nexport type StyledHotkeyProps = StrictComponentProps<typeof StyledHotkey>\n","import React, { useContext } 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'\nimport { TooltipTriggerContext } from '../tooltip'\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 const { v1 } = useContext(TooltipTriggerContext)\n\n return (\n <StyledHotkey {...restProps} ref={forwardRef} v1={v1}>\n <BaseHotkey variant='inverted' v1={v1}>\n {children}\n </BaseHotkey>\n </StyledHotkey>\n )\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'\nimport { useBaseTooltipContext } from '@mirohq/design-system-base-tooltip'\nimport { useNewDesignLanguage } from '@mirohq/design-system-experiments'\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 = 300\n\nexport const TooltipTriggerContext = createContext<{\n triggerRef: React.RefObject<HTMLButtonElement>\n v1: boolean\n id?: string\n}>({\n triggerRef: { current: null },\n v1: 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 [v1] = useNewDesignLanguage()\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 { preventNextOpeningRef } = useBaseTooltipContext()\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 (newState && preventNextOpeningRef.current) {\n preventNextOpeningRef.current = false\n return\n }\n\n if (open == null) {\n setDelayedOpen(newState)\n return\n }\n\n newState ? onOpen?.() : onClose?.()\n },\n [open, onOpen, onClose, preventNextOpeningRef, 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 v1,\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/dist/types.d.ts
CHANGED
|
@@ -7,7 +7,11 @@ import * as _radix_ui_react_tooltip from '@radix-ui/react-tooltip';
|
|
|
7
7
|
import { TooltipPortalProps } from '@radix-ui/react-tooltip';
|
|
8
8
|
import * as _mirohq_design_system_primitive from '@mirohq/design-system-primitive';
|
|
9
9
|
|
|
10
|
-
declare const StyledContent: react.ForwardRefExoticComponent<Omit<Omit<_mirohq_design_system_stitches.StyledComponentProps<react.ForwardRefExoticComponent<_radix_ui_react_tooltip.TooltipContentProps & react.RefAttributes<HTMLDivElement>>>,
|
|
10
|
+
declare const StyledContent: react.ForwardRefExoticComponent<Omit<Omit<_mirohq_design_system_stitches.StyledComponentProps<react.ForwardRefExoticComponent<_radix_ui_react_tooltip.TooltipContentProps & react.RefAttributes<HTMLDivElement>>>, "v1"> & _stitches_react_types_styled_component.TransformProps<{
|
|
11
|
+
v1?: boolean | "true" | undefined;
|
|
12
|
+
}, {}> & _mirohq_design_system_stitches.CustomStylesProps, "ref"> & react.RefAttributes<HTMLDivElement>> & _mirohq_design_system_stitches.StitchesInternals<react.ForwardRefExoticComponent<_radix_ui_react_tooltip.TooltipContentProps & react.RefAttributes<HTMLDivElement>>, {
|
|
13
|
+
v1?: boolean | "true" | undefined;
|
|
14
|
+
}, {}>;
|
|
11
15
|
declare type StyledContentProps = StrictComponentProps<typeof StyledContent>;
|
|
12
16
|
|
|
13
17
|
declare type PointerDownOutsideEvent = CustomEvent<{
|
|
@@ -27,7 +31,7 @@ declare namespace types {
|
|
|
27
31
|
};
|
|
28
32
|
}
|
|
29
33
|
|
|
30
|
-
interface ContentProps extends StyledContentProps {
|
|
34
|
+
interface ContentProps extends Omit<StyledContentProps, 'v1'> {
|
|
31
35
|
/**
|
|
32
36
|
* The preferred alignment against the trigger. May change when collisions
|
|
33
37
|
* occur.
|
|
@@ -142,7 +146,11 @@ interface PortalProps extends TooltipPortalProps {
|
|
|
142
146
|
}
|
|
143
147
|
declare const Portal: react__default.FC<PortalProps>;
|
|
144
148
|
|
|
145
|
-
declare const StyledHotkey: react.ForwardRefExoticComponent<Omit<Omit<_mirohq_design_system_stitches.StyledComponentProps<react.ForwardRefExoticComponent<_mirohq_design_system_primitive.PrimitiveProps<"span">>>,
|
|
149
|
+
declare const StyledHotkey: react.ForwardRefExoticComponent<Omit<Omit<_mirohq_design_system_stitches.StyledComponentProps<react.ForwardRefExoticComponent<_mirohq_design_system_primitive.PrimitiveProps<"span">>>, "v1"> & _stitches_react_types_styled_component.TransformProps<{
|
|
150
|
+
v1?: boolean | "true" | undefined;
|
|
151
|
+
}, {}> & _mirohq_design_system_stitches.CustomStylesProps, "ref"> & react.RefAttributes<HTMLSpanElement>> & _mirohq_design_system_stitches.StitchesInternals<react.ForwardRefExoticComponent<_mirohq_design_system_primitive.PrimitiveProps<"span">>, {
|
|
152
|
+
v1?: boolean | "true" | undefined;
|
|
153
|
+
}, {}>;
|
|
146
154
|
declare type StyledHotkeyProps = StrictComponentProps<typeof StyledHotkey>;
|
|
147
155
|
|
|
148
156
|
interface HotkeyProps extends StyledHotkeyProps {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mirohq/design-system-tooltip",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Miro",
|
|
6
6
|
"source": "src/index.ts",
|
|
@@ -28,11 +28,12 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@radix-ui/react-tooltip": "^1.0.3",
|
|
31
|
-
"@mirohq/design-system-base-hotkey": "^0.
|
|
31
|
+
"@mirohq/design-system-base-hotkey": "^0.2.0",
|
|
32
32
|
"@mirohq/design-system-base-tooltip": "^0.1.0",
|
|
33
|
+
"@mirohq/design-system-experiments": "^0.2.0",
|
|
33
34
|
"@mirohq/design-system-primitive": "^1.1.2",
|
|
34
|
-
"@mirohq/design-system-use-id": "^0.1.2",
|
|
35
35
|
"@mirohq/design-system-stitches": "^2.6.23",
|
|
36
|
+
"@mirohq/design-system-use-id": "^0.1.2",
|
|
36
37
|
"@mirohq/design-system-utils": "^0.15.4"
|
|
37
38
|
},
|
|
38
39
|
"scripts": {
|