@cdx-ui/primitives 0.0.1-beta.144 → 0.0.1-beta.145
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/lib/commonjs/index.js +12 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/overlay/useAnchorPosition.js +13 -23
- package/lib/commonjs/overlay/useAnchorPosition.js.map +1 -1
- package/lib/commonjs/tooltip/TooltipContent.js +106 -0
- package/lib/commonjs/tooltip/TooltipContent.js.map +1 -0
- package/lib/commonjs/tooltip/TooltipRoot.js +128 -0
- package/lib/commonjs/tooltip/TooltipRoot.js.map +1 -0
- package/lib/commonjs/tooltip/TooltipTrigger.js +132 -0
- package/lib/commonjs/tooltip/TooltipTrigger.js.map +1 -0
- package/lib/commonjs/tooltip/context.js +11 -0
- package/lib/commonjs/tooltip/context.js.map +1 -0
- package/lib/commonjs/tooltip/getTooltipPosition.js +124 -0
- package/lib/commonjs/tooltip/getTooltipPosition.js.map +1 -0
- package/lib/commonjs/tooltip/index.js +53 -0
- package/lib/commonjs/tooltip/index.js.map +1 -0
- package/lib/commonjs/tooltip/types.js +6 -0
- package/lib/commonjs/tooltip/types.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/overlay/useAnchorPosition.js +13 -23
- package/lib/module/overlay/useAnchorPosition.js.map +1 -1
- package/lib/module/tooltip/TooltipContent.js +102 -0
- package/lib/module/tooltip/TooltipContent.js.map +1 -0
- package/lib/module/tooltip/TooltipRoot.js +124 -0
- package/lib/module/tooltip/TooltipRoot.js.map +1 -0
- package/lib/module/tooltip/TooltipTrigger.js +128 -0
- package/lib/module/tooltip/TooltipTrigger.js.map +1 -0
- package/lib/module/tooltip/context.js +5 -0
- package/lib/module/tooltip/context.js.map +1 -0
- package/lib/module/tooltip/getTooltipPosition.js +119 -0
- package/lib/module/tooltip/getTooltipPosition.js.map +1 -0
- package/lib/module/tooltip/index.js +8 -0
- package/lib/module/tooltip/index.js.map +1 -0
- package/lib/module/tooltip/types.js +4 -0
- package/lib/module/tooltip/types.js.map +1 -0
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/overlay/useAnchorPosition.d.ts.map +1 -1
- package/lib/typescript/tooltip/TooltipContent.d.ts +6 -0
- package/lib/typescript/tooltip/TooltipContent.d.ts.map +1 -0
- package/lib/typescript/tooltip/TooltipRoot.d.ts +7 -0
- package/lib/typescript/tooltip/TooltipRoot.d.ts.map +1 -0
- package/lib/typescript/tooltip/TooltipTrigger.d.ts +5 -0
- package/lib/typescript/tooltip/TooltipTrigger.d.ts.map +1 -0
- package/lib/typescript/tooltip/context.d.ts +6 -0
- package/lib/typescript/tooltip/context.d.ts.map +1 -0
- package/lib/typescript/tooltip/getTooltipPosition.d.ts +20 -0
- package/lib/typescript/tooltip/getTooltipPosition.d.ts.map +1 -0
- package/lib/typescript/tooltip/index.d.ts +7 -0
- package/lib/typescript/tooltip/index.d.ts.map +1 -0
- package/lib/typescript/tooltip/types.d.ts +78 -0
- package/lib/typescript/tooltip/types.d.ts.map +1 -0
- package/package.json +3 -3
- package/src/index.ts +1 -0
- package/src/overlay/useAnchorPosition.ts +15 -20
- package/src/tooltip/TooltipContent.tsx +119 -0
- package/src/tooltip/TooltipRoot.tsx +187 -0
- package/src/tooltip/TooltipTrigger.tsx +160 -0
- package/src/tooltip/context.tsx +5 -0
- package/src/tooltip/getTooltipPosition.ts +147 -0
- package/src/tooltip/index.ts +19 -0
- package/src/tooltip/types.ts +85 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef, useCallback } from 'react';
|
|
4
|
+
import { Platform, Pressable } from 'react-native';
|
|
5
|
+
import { composeEventHandlers, mergeRefs } from '@cdx-ui/utils';
|
|
6
|
+
import { useFocus } from '@react-native-aria/focus';
|
|
7
|
+
import { useHover } from '@react-native-aria/interactions';
|
|
8
|
+
import { Slot } from '../slot';
|
|
9
|
+
import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
|
|
10
|
+
import { useTooltipContext } from './context';
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
export const TooltipTrigger = /*#__PURE__*/forwardRef(({
|
|
13
|
+
asChild = true,
|
|
14
|
+
children,
|
|
15
|
+
onHoverIn,
|
|
16
|
+
onHoverOut,
|
|
17
|
+
onFocus,
|
|
18
|
+
onBlur,
|
|
19
|
+
onLongPress,
|
|
20
|
+
onPress,
|
|
21
|
+
onLayout,
|
|
22
|
+
...props
|
|
23
|
+
}, ref) => {
|
|
24
|
+
const {
|
|
25
|
+
open,
|
|
26
|
+
setOpen,
|
|
27
|
+
requestOpen,
|
|
28
|
+
requestClose,
|
|
29
|
+
isDisabled,
|
|
30
|
+
trigger,
|
|
31
|
+
triggerRef,
|
|
32
|
+
contentId,
|
|
33
|
+
triggerId
|
|
34
|
+
} = useTooltipContext();
|
|
35
|
+
const mergedRef = mergeRefs(ref, triggerRef);
|
|
36
|
+
const {
|
|
37
|
+
hoverProps,
|
|
38
|
+
isHovered
|
|
39
|
+
} = useHover({}, mergedRef);
|
|
40
|
+
const {
|
|
41
|
+
focusProps,
|
|
42
|
+
isFocused
|
|
43
|
+
} = useFocus();
|
|
44
|
+
const handleOpen = useCallback(() => {
|
|
45
|
+
if (isDisabled) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
requestOpen();
|
|
49
|
+
}, [isDisabled, requestOpen]);
|
|
50
|
+
const handleClose = useCallback(() => {
|
|
51
|
+
requestClose();
|
|
52
|
+
}, [requestClose]);
|
|
53
|
+
const isWeb = Platform.OS === 'web';
|
|
54
|
+
const usesLongPressOnNative = !isWeb && (trigger === 'hover' || trigger === 'focus');
|
|
55
|
+
const usesClickToggle = trigger === 'click';
|
|
56
|
+
const handlePress = composeEventHandlers(onPress, () => {
|
|
57
|
+
if (!usesClickToggle || isDisabled) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
setOpen(!open);
|
|
61
|
+
});
|
|
62
|
+
const handleHoverIn = composeEventHandlers(composeEventHandlers(onHoverIn, hoverProps.onHoverIn), () => {
|
|
63
|
+
if (isWeb && trigger === 'hover') {
|
|
64
|
+
handleOpen();
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
const handleHoverOut = composeEventHandlers(composeEventHandlers(onHoverOut, hoverProps.onHoverOut), () => {
|
|
68
|
+
if (isWeb && trigger === 'hover') {
|
|
69
|
+
handleClose();
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
const handleFocus = composeEventHandlers(composeEventHandlers(onFocus, focusProps.onFocus), () => {
|
|
73
|
+
if (!isWeb) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (trigger === 'focus' || trigger === 'hover') {
|
|
77
|
+
handleOpen();
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
const handleBlur = composeEventHandlers(composeEventHandlers(onBlur, focusProps.onBlur), () => {
|
|
81
|
+
if (!isWeb) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (trigger === 'focus' || trigger === 'hover') {
|
|
85
|
+
handleClose();
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
const handleLongPress = composeEventHandlers(onLongPress, () => {
|
|
89
|
+
if (usesLongPressOnNative) {
|
|
90
|
+
handleOpen();
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
const webHoverProps = isWeb && trigger === 'hover' ? {
|
|
94
|
+
onPointerEnter: handleHoverIn,
|
|
95
|
+
onPointerLeave: handleHoverOut
|
|
96
|
+
} : {};
|
|
97
|
+
const webA11yProps = isWeb ? {
|
|
98
|
+
id: triggerId,
|
|
99
|
+
'aria-describedby': open ? contentId : undefined,
|
|
100
|
+
...(trigger === 'click' ? {
|
|
101
|
+
'aria-expanded': open
|
|
102
|
+
} : {})
|
|
103
|
+
} : {};
|
|
104
|
+
const Comp = asChild ? Slot : Pressable;
|
|
105
|
+
return /*#__PURE__*/_jsx(Comp, {
|
|
106
|
+
ref: mergedRef,
|
|
107
|
+
disabled: isDisabled,
|
|
108
|
+
...props,
|
|
109
|
+
...webA11yProps,
|
|
110
|
+
...focusProps,
|
|
111
|
+
...webHoverProps,
|
|
112
|
+
onLayout: onLayout,
|
|
113
|
+
...mergeDataAttributes(props, dataAttributes({
|
|
114
|
+
triggerHover: isHovered,
|
|
115
|
+
triggerFocus: isFocused,
|
|
116
|
+
disabled: isDisabled
|
|
117
|
+
})),
|
|
118
|
+
onHoverIn: handleHoverIn,
|
|
119
|
+
onHoverOut: handleHoverOut,
|
|
120
|
+
onFocus: handleFocus,
|
|
121
|
+
onBlur: handleBlur,
|
|
122
|
+
onLongPress: handleLongPress,
|
|
123
|
+
onPress: handlePress,
|
|
124
|
+
children: children
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
TooltipTrigger.displayName = 'TooltipTrigger';
|
|
128
|
+
//# sourceMappingURL=TooltipTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","Platform","Pressable","composeEventHandlers","mergeRefs","useFocus","useHover","Slot","dataAttributes","mergeDataAttributes","useTooltipContext","jsx","_jsx","TooltipTrigger","asChild","children","onHoverIn","onHoverOut","onFocus","onBlur","onLongPress","onPress","onLayout","props","ref","open","setOpen","requestOpen","requestClose","isDisabled","trigger","triggerRef","contentId","triggerId","mergedRef","hoverProps","isHovered","focusProps","isFocused","handleOpen","handleClose","isWeb","OS","usesLongPressOnNative","usesClickToggle","handlePress","handleHoverIn","handleHoverOut","handleFocus","handleBlur","handleLongPress","webHoverProps","onPointerEnter","onPointerLeave","webA11yProps","id","undefined","Comp","disabled","triggerHover","triggerFocus","displayName"],"sourceRoot":"../../../src","sources":["tooltip/TooltipTrigger.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createContext","TooltipProvider","useTooltipContext"],"sourceRoot":"../../../src","sources":["tooltip/context.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,eAAe;AAG7C,OAAO,MAAM,CAACC,eAAe,EAAEC,iBAAiB,CAAC,GAC/CF,aAAa,CAAsB,gBAAgB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Platform } from 'react-native';
|
|
4
|
+
export const TOOLTIP_PLACEMENTS = ['auto', 'auto-start', 'auto-end', 'top', 'top-start', 'top-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end', 'right', 'right-start', 'right-end'];
|
|
5
|
+
export const TOOLTIP_Z_INDEX = 9999;
|
|
6
|
+
const SCREEN_PADDING = 8;
|
|
7
|
+
function parsePlacement(placement) {
|
|
8
|
+
if (placement === 'auto' || placement === 'auto-start' || placement === 'auto-end') {
|
|
9
|
+
return 'auto';
|
|
10
|
+
}
|
|
11
|
+
const segments = placement.split('-');
|
|
12
|
+
const side = segments[0];
|
|
13
|
+
if (segments.length === 1) {
|
|
14
|
+
return {
|
|
15
|
+
side,
|
|
16
|
+
align: 'center'
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
side,
|
|
21
|
+
align: segments[1]
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function resolveAutoPlacement(anchor, viewport, alignPreference) {
|
|
25
|
+
const spaceTop = anchor.y - SCREEN_PADDING;
|
|
26
|
+
const spaceBottom = viewport.height - anchor.y - anchor.height - SCREEN_PADDING;
|
|
27
|
+
const spaceLeft = anchor.x - SCREEN_PADDING;
|
|
28
|
+
const spaceRight = viewport.width - anchor.x - anchor.width - SCREEN_PADDING;
|
|
29
|
+
const spaces = [{
|
|
30
|
+
side: 'top',
|
|
31
|
+
value: spaceTop
|
|
32
|
+
}, {
|
|
33
|
+
side: 'bottom',
|
|
34
|
+
value: spaceBottom
|
|
35
|
+
}, {
|
|
36
|
+
side: 'left',
|
|
37
|
+
value: spaceLeft
|
|
38
|
+
}, {
|
|
39
|
+
side: 'right',
|
|
40
|
+
value: spaceRight
|
|
41
|
+
}];
|
|
42
|
+
const best = spaces.reduce((current, next) => next.value > current.value ? next : current);
|
|
43
|
+
return {
|
|
44
|
+
side: best.side,
|
|
45
|
+
align: alignPreference
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function getAlignOffset(anchor, align, axis) {
|
|
49
|
+
if (align === 'start') {
|
|
50
|
+
return axis === 'horizontal' ? anchor.x : anchor.y;
|
|
51
|
+
}
|
|
52
|
+
if (align === 'end') {
|
|
53
|
+
return axis === 'horizontal' ? anchor.x + anchor.width : anchor.y + anchor.height;
|
|
54
|
+
}
|
|
55
|
+
return axis === 'horizontal' ? anchor.x + anchor.width / 2 : anchor.y + anchor.height / 2;
|
|
56
|
+
}
|
|
57
|
+
export function getTooltipAnchorStyle(anchor, placement, offset, viewport) {
|
|
58
|
+
const parsed = parsePlacement(placement);
|
|
59
|
+
const resolved = parsed === 'auto' ? resolveAutoPlacement(anchor, viewport, placement === 'auto-start' ? 'start' : placement === 'auto-end' ? 'end' : 'center') : parsed;
|
|
60
|
+
const position = Platform.OS === 'web' ? 'fixed' : 'absolute';
|
|
61
|
+
const style = {
|
|
62
|
+
position,
|
|
63
|
+
zIndex: TOOLTIP_Z_INDEX
|
|
64
|
+
};
|
|
65
|
+
const {
|
|
66
|
+
side,
|
|
67
|
+
align
|
|
68
|
+
} = resolved;
|
|
69
|
+
if (side === 'top') {
|
|
70
|
+
style.top = anchor.y - offset;
|
|
71
|
+
style.left = getAlignOffset(anchor, align, 'horizontal');
|
|
72
|
+
style.transform = align === 'center' ? [{
|
|
73
|
+
translateX: '-50%'
|
|
74
|
+
}, {
|
|
75
|
+
translateY: '-100%'
|
|
76
|
+
}] : align === 'end' ? [{
|
|
77
|
+
translateX: '-100%'
|
|
78
|
+
}, {
|
|
79
|
+
translateY: '-100%'
|
|
80
|
+
}] : [{
|
|
81
|
+
translateY: '-100%'
|
|
82
|
+
}];
|
|
83
|
+
} else if (side === 'bottom') {
|
|
84
|
+
style.top = anchor.y + anchor.height + offset;
|
|
85
|
+
style.left = getAlignOffset(anchor, align, 'horizontal');
|
|
86
|
+
style.transform = align === 'center' ? [{
|
|
87
|
+
translateX: '-50%'
|
|
88
|
+
}] : align === 'end' ? [{
|
|
89
|
+
translateX: '-100%'
|
|
90
|
+
}] : undefined;
|
|
91
|
+
} else if (side === 'left') {
|
|
92
|
+
style.left = anchor.x - offset;
|
|
93
|
+
style.top = getAlignOffset(anchor, align, 'vertical');
|
|
94
|
+
style.transform = align === 'center' ? [{
|
|
95
|
+
translateX: '-100%'
|
|
96
|
+
}, {
|
|
97
|
+
translateY: '-50%'
|
|
98
|
+
}] : align === 'end' ? [{
|
|
99
|
+
translateX: '-100%'
|
|
100
|
+
}, {
|
|
101
|
+
translateY: '-100%'
|
|
102
|
+
}] : [{
|
|
103
|
+
translateX: '-100%'
|
|
104
|
+
}];
|
|
105
|
+
} else {
|
|
106
|
+
style.left = anchor.x + anchor.width + offset;
|
|
107
|
+
style.top = getAlignOffset(anchor, align, 'vertical');
|
|
108
|
+
style.transform = align === 'center' ? [{
|
|
109
|
+
translateY: '-50%'
|
|
110
|
+
}] : align === 'end' ? [{
|
|
111
|
+
translateY: '-100%'
|
|
112
|
+
}] : undefined;
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
style,
|
|
116
|
+
resolved
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=getTooltipPosition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Platform","TOOLTIP_PLACEMENTS","TOOLTIP_Z_INDEX","SCREEN_PADDING","parsePlacement","placement","segments","split","side","length","align","resolveAutoPlacement","anchor","viewport","alignPreference","spaceTop","y","spaceBottom","height","spaceLeft","x","spaceRight","width","spaces","value","best","reduce","current","next","getAlignOffset","axis","getTooltipAnchorStyle","offset","parsed","resolved","position","OS","style","zIndex","top","left","transform","translateX","translateY","undefined"],"sourceRoot":"../../../src","sources":["tooltip/getTooltipPosition.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export { TooltipProvider, useTooltipContext } from './context';
|
|
4
|
+
export { TooltipRoot } from './TooltipRoot';
|
|
5
|
+
export { TooltipTrigger } from './TooltipTrigger';
|
|
6
|
+
export { TooltipContent } from './TooltipContent';
|
|
7
|
+
export { TOOLTIP_PLACEMENTS, getTooltipAnchorStyle } from './getTooltipPosition';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TooltipProvider","useTooltipContext","TooltipRoot","TooltipTrigger","TooltipContent","TOOLTIP_PLACEMENTS","getTooltipAnchorStyle"],"sourceRoot":"../../../src","sources":["tooltip/index.ts"],"mappings":";;AAAA,SAASA,eAAe,EAAEC,iBAAiB,QAAQ,WAAW;AAC9D,SAASC,WAAW,QAA+B,eAAe;AAClE,SAASC,cAAc,QAAkC,kBAAkB;AAC3E,SAASC,cAAc,QAAkC,kBAAkB;AAC3E,SACEC,kBAAkB,EAClBC,qBAAqB,QAMhB,sBAAsB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["tooltip/types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,KAAK,UAAU,EACf,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC;AACnB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,KAAK,UAAU,EACf,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC;AACnB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAnchorPosition.d.ts","sourceRoot":"","sources":["../../../src/overlay/useAnchorPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAwBD,MAAM,WAAW,wBAAwB;IACvC,qFAAqF;IACrF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oFAAoF;IACpF,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,EACzB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,wBAAwB,GACjC,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"useAnchorPosition.d.ts","sourceRoot":"","sources":["../../../src/overlay/useAnchorPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAwBD,MAAM,WAAW,wBAAwB;IACvC,qFAAqF;IACrF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oFAAoF;IACpF,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,EACzB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,wBAAwB,GACjC,YAAY,GAAG,IAAI,CAgGrB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { View } from 'react-native';
|
|
2
|
+
import type { ITooltipContentProps } from './types';
|
|
3
|
+
export interface TooltipContentProps extends ITooltipContentProps {
|
|
4
|
+
}
|
|
5
|
+
export declare const TooltipContent: import("react").ForwardRefExoticComponent<TooltipContentProps & import("react").RefAttributes<View>>;
|
|
6
|
+
//# sourceMappingURL=TooltipContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TooltipContent.d.ts","sourceRoot":"","sources":["../../../src/tooltip/TooltipContent.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAwB,IAAI,EAAuB,MAAM,cAAc,CAAC;AAS/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;CAAG;AAEpE,eAAO,MAAM,cAAc,sGA+F1B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { View } from 'react-native';
|
|
2
|
+
import type { ITooltipProps } from './types';
|
|
3
|
+
export interface TooltipRootProps extends ITooltipProps {
|
|
4
|
+
asChild?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const TooltipRoot: import("react").ForwardRefExoticComponent<TooltipRootProps & import("react").RefAttributes<View>>;
|
|
7
|
+
//# sourceMappingURL=TooltipRoot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TooltipRoot.d.ts","sourceRoot":"","sources":["../../../src/tooltip/TooltipRoot.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AAMpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,WAAW,mGAkKvB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ITooltipTriggerProps } from './types';
|
|
2
|
+
export interface TooltipTriggerProps extends ITooltipTriggerProps {
|
|
3
|
+
}
|
|
4
|
+
export declare const TooltipTrigger: import("react").ForwardRefExoticComponent<TooltipTriggerProps & import("react").RefAttributes<import("react-native").View>>;
|
|
5
|
+
//# sourceMappingURL=TooltipTrigger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TooltipTrigger.d.ts","sourceRoot":"","sources":["../../../src/tooltip/TooltipTrigger.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;CAAG;AAEpE,eAAO,MAAM,cAAc,6HAiJ1B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { TooltipContextValue } from './types';
|
|
2
|
+
export declare const TooltipProvider: import("react").FunctionComponent<{
|
|
3
|
+
children: import("react").ReactNode;
|
|
4
|
+
value: TooltipContextValue;
|
|
5
|
+
}>, useTooltipContext: () => TooltipContextValue;
|
|
6
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/tooltip/context.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,eAAO,MAAO,eAAe;;;IAAE,iBAAiB,2BACM,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ViewStyle } from 'react-native';
|
|
2
|
+
import type { AnchorLayout } from '../overlay/useAnchorPosition';
|
|
3
|
+
export declare const TOOLTIP_PLACEMENTS: readonly ["auto", "auto-start", "auto-end", "top", "top-start", "top-end", "bottom", "bottom-start", "bottom-end", "left", "left-start", "left-end", "right", "right-start", "right-end"];
|
|
4
|
+
export type TooltipPlacement = (typeof TOOLTIP_PLACEMENTS)[number];
|
|
5
|
+
export type TooltipTriggerMode = 'hover' | 'focus' | 'click';
|
|
6
|
+
export type TooltipSide = 'top' | 'bottom' | 'left' | 'right';
|
|
7
|
+
export type TooltipAlign = 'start' | 'center' | 'end';
|
|
8
|
+
export interface ResolvedTooltipPlacement {
|
|
9
|
+
readonly side: TooltipSide;
|
|
10
|
+
readonly align: TooltipAlign;
|
|
11
|
+
}
|
|
12
|
+
export declare const TOOLTIP_Z_INDEX = 9999;
|
|
13
|
+
export declare function getTooltipAnchorStyle(anchor: AnchorLayout, placement: TooltipPlacement, offset: number, viewport: {
|
|
14
|
+
width: number;
|
|
15
|
+
height: number;
|
|
16
|
+
}): {
|
|
17
|
+
style: ViewStyle;
|
|
18
|
+
resolved: ResolvedTooltipPlacement;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=getTooltipPosition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTooltipPosition.d.ts","sourceRoot":"","sources":["../../../src/tooltip/getTooltipPosition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,eAAO,MAAM,kBAAkB,2LAgBrB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AACnE,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEtD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B;AAED,eAAO,MAAM,eAAe,OAAO,CAAC;AAwDpC,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,wBAAwB,CAAA;CAAE,CAsD1D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { TooltipProvider, useTooltipContext } from './context';
|
|
2
|
+
export { TooltipRoot, type TooltipRootProps } from './TooltipRoot';
|
|
3
|
+
export { TooltipTrigger, type TooltipTriggerProps } from './TooltipTrigger';
|
|
4
|
+
export { TooltipContent, type TooltipContentProps } from './TooltipContent';
|
|
5
|
+
export { TOOLTIP_PLACEMENTS, getTooltipAnchorStyle, type TooltipPlacement, type TooltipTriggerMode, type TooltipSide, type TooltipAlign, type ResolvedTooltipPlacement, } from './getTooltipPosition';
|
|
6
|
+
export type { ITooltipProps, ITooltipTriggerProps, ITooltipContentProps, TooltipContextValue, } from './types';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tooltip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,wBAAwB,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { ComponentRef, ReactNode, RefObject } from 'react';
|
|
2
|
+
import type { PressableProps, View, ViewProps } from 'react-native';
|
|
3
|
+
import type { ResolvedTooltipPlacement, TooltipPlacement, TooltipTriggerMode } from './getTooltipPosition';
|
|
4
|
+
export interface ITooltipProps extends Omit<ViewProps, 'children'> {
|
|
5
|
+
readonly children?: ReactNode;
|
|
6
|
+
readonly isDisabled?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Milliseconds to wait before showing the tooltip.
|
|
9
|
+
* @default `0`
|
|
10
|
+
*/
|
|
11
|
+
readonly enterDelay?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Milliseconds to wait before hiding the tooltip.
|
|
14
|
+
* @default `0`
|
|
15
|
+
*/
|
|
16
|
+
readonly leaveDelay?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Controlled open state.
|
|
19
|
+
*/
|
|
20
|
+
readonly isOpen?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Uncontrolled initial open state.
|
|
23
|
+
* @default `false`
|
|
24
|
+
*/
|
|
25
|
+
readonly defaultOpen?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Called when the tooltip opens.
|
|
28
|
+
*/
|
|
29
|
+
readonly onOpen?: () => void;
|
|
30
|
+
/**
|
|
31
|
+
* Called when the tooltip closes.
|
|
32
|
+
*/
|
|
33
|
+
readonly onClose?: () => void;
|
|
34
|
+
/**
|
|
35
|
+
* Preferred placement relative to the trigger.
|
|
36
|
+
* @default `'top'`
|
|
37
|
+
*/
|
|
38
|
+
readonly placement?: TooltipPlacement;
|
|
39
|
+
/**
|
|
40
|
+
* Distance in pixels between the tooltip and the trigger.
|
|
41
|
+
* @default `8`
|
|
42
|
+
*/
|
|
43
|
+
readonly offset?: number;
|
|
44
|
+
/**
|
|
45
|
+
* Interaction that opens the tooltip. On web, `hover` opens on hover and focus; on native, long press.
|
|
46
|
+
* `focus` opens on focus (web) or long press (native). `click` toggles on press — on web, dismisses on outside click or Escape.
|
|
47
|
+
* @default `'hover'`
|
|
48
|
+
*/
|
|
49
|
+
readonly trigger?: TooltipTriggerMode;
|
|
50
|
+
}
|
|
51
|
+
export interface TooltipContextValue {
|
|
52
|
+
readonly open: boolean;
|
|
53
|
+
readonly setOpen: (open: boolean) => void;
|
|
54
|
+
readonly requestOpen: () => void;
|
|
55
|
+
readonly requestClose: () => void;
|
|
56
|
+
readonly clearTimers: () => void;
|
|
57
|
+
readonly isDisabled: boolean;
|
|
58
|
+
readonly enterDelay: number;
|
|
59
|
+
readonly leaveDelay: number;
|
|
60
|
+
readonly placement: TooltipPlacement;
|
|
61
|
+
readonly offset: number;
|
|
62
|
+
readonly trigger: TooltipTriggerMode;
|
|
63
|
+
readonly triggerRef: RefObject<ComponentRef<typeof View> | null>;
|
|
64
|
+
readonly contentId: string;
|
|
65
|
+
readonly triggerId: string;
|
|
66
|
+
readonly resolvedPlacement: ResolvedTooltipPlacement | null;
|
|
67
|
+
readonly setResolvedPlacement: (placement: ResolvedTooltipPlacement) => void;
|
|
68
|
+
}
|
|
69
|
+
export interface ITooltipTriggerProps extends PressableProps {
|
|
70
|
+
/** When true, merges trigger props onto the single child element. */
|
|
71
|
+
readonly asChild?: boolean;
|
|
72
|
+
readonly children?: ReactNode;
|
|
73
|
+
}
|
|
74
|
+
export interface ITooltipContentProps extends ViewProps {
|
|
75
|
+
readonly asChild?: boolean;
|
|
76
|
+
readonly children?: ReactNode;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tooltip/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EACV,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAChE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC5D,QAAQ,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,wBAAwB,KAAK,IAAI,CAAC;CAC9E;AAED,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,qEAAqE;IACrE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cdx-ui/primitives",
|
|
3
|
-
"version": "0.0.1-beta.
|
|
3
|
+
"version": "0.0.1-beta.145",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -61,8 +61,8 @@
|
|
|
61
61
|
"@react-stately/checkbox": "3.7.4",
|
|
62
62
|
"@react-stately/radio": "3.12.0",
|
|
63
63
|
"@react-stately/toggle": "3.9.4",
|
|
64
|
-
"@cdx-ui/formatters": "0.0.1-beta.
|
|
65
|
-
"@cdx-ui/utils": "0.0.1-beta.
|
|
64
|
+
"@cdx-ui/formatters": "0.0.1-beta.136",
|
|
65
|
+
"@cdx-ui/utils": "0.0.1-beta.145"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@types/react": "19.1.17",
|
package/src/index.ts
CHANGED
|
@@ -77,38 +77,33 @@ export function useAnchorPosition(
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
let cancelled = false;
|
|
80
|
+
let retryFrameId = 0;
|
|
81
|
+
let webFrameId = 0;
|
|
80
82
|
|
|
81
83
|
const runMeasure = () => {
|
|
82
|
-
if (
|
|
83
|
-
|
|
84
|
+
if (cancelled) {
|
|
85
|
+
return;
|
|
84
86
|
}
|
|
87
|
+
|
|
88
|
+
const anchor = anchorRef.current;
|
|
89
|
+
if (!anchor) {
|
|
90
|
+
retryFrameId = requestAnimationFrame(runMeasure);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
measureAnchor();
|
|
85
95
|
};
|
|
86
96
|
|
|
87
97
|
runMeasure();
|
|
88
98
|
|
|
89
99
|
if (Platform.OS === 'web') {
|
|
90
|
-
|
|
91
|
-
return () => {
|
|
92
|
-
cancelled = true;
|
|
93
|
-
cancelAnimationFrame(frame);
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
const anchor = anchorRef.current;
|
|
98
|
-
if (!anchor) {
|
|
99
|
-
return () => {
|
|
100
|
-
cancelled = true;
|
|
101
|
-
};
|
|
100
|
+
webFrameId = requestAnimationFrame(runMeasure);
|
|
102
101
|
}
|
|
103
102
|
|
|
104
|
-
anchor.measureInWindow((x: number, y: number, width: number, height: number) => {
|
|
105
|
-
if (!cancelled) {
|
|
106
|
-
setLayoutIfChanged(setLayout, { x, y, width, height });
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
|
|
110
103
|
return () => {
|
|
111
104
|
cancelled = true;
|
|
105
|
+
cancelAnimationFrame(retryFrameId);
|
|
106
|
+
cancelAnimationFrame(webFrameId);
|
|
112
107
|
};
|
|
113
108
|
}, [open, anchorRef, remeasureKey]);
|
|
114
109
|
|