@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,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TOOLTIP_Z_INDEX = exports.TOOLTIP_PLACEMENTS = void 0;
|
|
7
|
+
exports.getTooltipAnchorStyle = getTooltipAnchorStyle;
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
const TOOLTIP_PLACEMENTS = exports.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'];
|
|
10
|
+
const TOOLTIP_Z_INDEX = exports.TOOLTIP_Z_INDEX = 9999;
|
|
11
|
+
const SCREEN_PADDING = 8;
|
|
12
|
+
function parsePlacement(placement) {
|
|
13
|
+
if (placement === 'auto' || placement === 'auto-start' || placement === 'auto-end') {
|
|
14
|
+
return 'auto';
|
|
15
|
+
}
|
|
16
|
+
const segments = placement.split('-');
|
|
17
|
+
const side = segments[0];
|
|
18
|
+
if (segments.length === 1) {
|
|
19
|
+
return {
|
|
20
|
+
side,
|
|
21
|
+
align: 'center'
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
side,
|
|
26
|
+
align: segments[1]
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function resolveAutoPlacement(anchor, viewport, alignPreference) {
|
|
30
|
+
const spaceTop = anchor.y - SCREEN_PADDING;
|
|
31
|
+
const spaceBottom = viewport.height - anchor.y - anchor.height - SCREEN_PADDING;
|
|
32
|
+
const spaceLeft = anchor.x - SCREEN_PADDING;
|
|
33
|
+
const spaceRight = viewport.width - anchor.x - anchor.width - SCREEN_PADDING;
|
|
34
|
+
const spaces = [{
|
|
35
|
+
side: 'top',
|
|
36
|
+
value: spaceTop
|
|
37
|
+
}, {
|
|
38
|
+
side: 'bottom',
|
|
39
|
+
value: spaceBottom
|
|
40
|
+
}, {
|
|
41
|
+
side: 'left',
|
|
42
|
+
value: spaceLeft
|
|
43
|
+
}, {
|
|
44
|
+
side: 'right',
|
|
45
|
+
value: spaceRight
|
|
46
|
+
}];
|
|
47
|
+
const best = spaces.reduce((current, next) => next.value > current.value ? next : current);
|
|
48
|
+
return {
|
|
49
|
+
side: best.side,
|
|
50
|
+
align: alignPreference
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function getAlignOffset(anchor, align, axis) {
|
|
54
|
+
if (align === 'start') {
|
|
55
|
+
return axis === 'horizontal' ? anchor.x : anchor.y;
|
|
56
|
+
}
|
|
57
|
+
if (align === 'end') {
|
|
58
|
+
return axis === 'horizontal' ? anchor.x + anchor.width : anchor.y + anchor.height;
|
|
59
|
+
}
|
|
60
|
+
return axis === 'horizontal' ? anchor.x + anchor.width / 2 : anchor.y + anchor.height / 2;
|
|
61
|
+
}
|
|
62
|
+
function getTooltipAnchorStyle(anchor, placement, offset, viewport) {
|
|
63
|
+
const parsed = parsePlacement(placement);
|
|
64
|
+
const resolved = parsed === 'auto' ? resolveAutoPlacement(anchor, viewport, placement === 'auto-start' ? 'start' : placement === 'auto-end' ? 'end' : 'center') : parsed;
|
|
65
|
+
const position = _reactNative.Platform.OS === 'web' ? 'fixed' : 'absolute';
|
|
66
|
+
const style = {
|
|
67
|
+
position,
|
|
68
|
+
zIndex: TOOLTIP_Z_INDEX
|
|
69
|
+
};
|
|
70
|
+
const {
|
|
71
|
+
side,
|
|
72
|
+
align
|
|
73
|
+
} = resolved;
|
|
74
|
+
if (side === 'top') {
|
|
75
|
+
style.top = anchor.y - offset;
|
|
76
|
+
style.left = getAlignOffset(anchor, align, 'horizontal');
|
|
77
|
+
style.transform = align === 'center' ? [{
|
|
78
|
+
translateX: '-50%'
|
|
79
|
+
}, {
|
|
80
|
+
translateY: '-100%'
|
|
81
|
+
}] : align === 'end' ? [{
|
|
82
|
+
translateX: '-100%'
|
|
83
|
+
}, {
|
|
84
|
+
translateY: '-100%'
|
|
85
|
+
}] : [{
|
|
86
|
+
translateY: '-100%'
|
|
87
|
+
}];
|
|
88
|
+
} else if (side === 'bottom') {
|
|
89
|
+
style.top = anchor.y + anchor.height + offset;
|
|
90
|
+
style.left = getAlignOffset(anchor, align, 'horizontal');
|
|
91
|
+
style.transform = align === 'center' ? [{
|
|
92
|
+
translateX: '-50%'
|
|
93
|
+
}] : align === 'end' ? [{
|
|
94
|
+
translateX: '-100%'
|
|
95
|
+
}] : undefined;
|
|
96
|
+
} else if (side === 'left') {
|
|
97
|
+
style.left = anchor.x - offset;
|
|
98
|
+
style.top = getAlignOffset(anchor, align, 'vertical');
|
|
99
|
+
style.transform = align === 'center' ? [{
|
|
100
|
+
translateX: '-100%'
|
|
101
|
+
}, {
|
|
102
|
+
translateY: '-50%'
|
|
103
|
+
}] : align === 'end' ? [{
|
|
104
|
+
translateX: '-100%'
|
|
105
|
+
}, {
|
|
106
|
+
translateY: '-100%'
|
|
107
|
+
}] : [{
|
|
108
|
+
translateX: '-100%'
|
|
109
|
+
}];
|
|
110
|
+
} else {
|
|
111
|
+
style.left = anchor.x + anchor.width + offset;
|
|
112
|
+
style.top = getAlignOffset(anchor, align, 'vertical');
|
|
113
|
+
style.transform = align === 'center' ? [{
|
|
114
|
+
translateY: '-50%'
|
|
115
|
+
}] : align === 'end' ? [{
|
|
116
|
+
translateY: '-100%'
|
|
117
|
+
}] : undefined;
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
style,
|
|
121
|
+
resolved
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=getTooltipPosition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","TOOLTIP_PLACEMENTS","exports","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","Platform","OS","style","zIndex","top","left","transform","translateX","translateY","undefined"],"sourceRoot":"../../../src","sources":["tooltip/getTooltipPosition.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "TOOLTIP_PLACEMENTS", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _getTooltipPosition.TOOLTIP_PLACEMENTS;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "TooltipContent", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _TooltipContent.TooltipContent;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "TooltipProvider", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _context.TooltipProvider;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "TooltipRoot", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _TooltipRoot.TooltipRoot;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "TooltipTrigger", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _TooltipTrigger.TooltipTrigger;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "getTooltipAnchorStyle", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _getTooltipPosition.getTooltipAnchorStyle;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "useTooltipContext", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () {
|
|
45
|
+
return _context.useTooltipContext;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
var _context = require("./context");
|
|
49
|
+
var _TooltipRoot = require("./TooltipRoot");
|
|
50
|
+
var _TooltipTrigger = require("./TooltipTrigger");
|
|
51
|
+
var _TooltipContent = require("./TooltipContent");
|
|
52
|
+
var _getTooltipPosition = require("./getTooltipPosition");
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_context","require","_TooltipRoot","_TooltipTrigger","_TooltipContent","_getTooltipPosition"],"sourceRoot":"../../../src","sources":["tooltip/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["tooltip/types.ts"],"mappings":"","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OverlayContainer","OverlayInsetsProvider","useAnchorPosition","useDismissOverlay","useEscapeKey","useOverlayPosition","FormControlContext","useFormControlContext","dataAttributes","mergeDataAttributes","domDataAttributes","mergeDomDataAttributes","assignRef","createPortalFn","Slot"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,uBAAuB;AACrC,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,cAAc;AAC5B,cAAc,YAAY;AAC1B,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,eAAe;AAC7B,cAAc,qBAAqB;AACnC,cAAc,gBAAgB;AAC9B,cAAc,mBAAmB;AACjC,cAAc,kBAAkB;AAChC,cAAc,oBAAoB;AAClC,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SAEEA,gBAAgB,EAChBC,qBAAqB,EACrBC,iBAAiB,EACjBC,iBAAiB,EACjBC,YAAY,EACZC,kBAAkB,QAGb,WAAW;AAClB,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,UAAU;AACxB,cAAc,gBAAgB;AAC9B,cAAc,SAAS;AACvB,cAAc,UAAU;AAExB,SAASC,kBAAkB,EAAEC,qBAAqB,QAAQ,eAAe;AACzE,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,wBAAwB;AAC5E,SACEC,iBAAiB,EACjBC,sBAAsB,QAEjB,2BAA2B;AAClC,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,IAAI,QAAQ,QAAQ","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["OverlayContainer","OverlayInsetsProvider","useAnchorPosition","useDismissOverlay","useEscapeKey","useOverlayPosition","FormControlContext","useFormControlContext","dataAttributes","mergeDataAttributes","domDataAttributes","mergeDomDataAttributes","assignRef","createPortalFn","Slot"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,uBAAuB;AACrC,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,cAAc;AAC5B,cAAc,YAAY;AAC1B,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,eAAe;AAC7B,cAAc,qBAAqB;AACnC,cAAc,gBAAgB;AAC9B,cAAc,mBAAmB;AACjC,cAAc,kBAAkB;AAChC,cAAc,oBAAoB;AAClC,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SAEEA,gBAAgB,EAChBC,qBAAqB,EACrBC,iBAAiB,EACjBC,iBAAiB,EACjBC,YAAY,EACZC,kBAAkB,QAGb,WAAW;AAClB,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,WAAW;AACzB,cAAc,UAAU;AACxB,cAAc,gBAAgB;AAC9B,cAAc,SAAS;AACvB,cAAc,UAAU;AAExB,SAASC,kBAAkB,EAAEC,qBAAqB,QAAQ,eAAe;AACzE,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,wBAAwB;AAC5E,SACEC,iBAAiB,EACjBC,sBAAsB,QAEjB,2BAA2B;AAClC,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,IAAI,QAAQ,QAAQ","ignoreList":[]}
|
|
@@ -56,37 +56,27 @@ export function useAnchorPosition(anchorRef, open, options) {
|
|
|
56
56
|
return;
|
|
57
57
|
}
|
|
58
58
|
let cancelled = false;
|
|
59
|
+
let retryFrameId = 0;
|
|
60
|
+
let webFrameId = 0;
|
|
59
61
|
const runMeasure = () => {
|
|
60
|
-
if (
|
|
61
|
-
|
|
62
|
+
if (cancelled) {
|
|
63
|
+
return;
|
|
62
64
|
}
|
|
65
|
+
const anchor = anchorRef.current;
|
|
66
|
+
if (!anchor) {
|
|
67
|
+
retryFrameId = requestAnimationFrame(runMeasure);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
measureAnchor();
|
|
63
71
|
};
|
|
64
72
|
runMeasure();
|
|
65
73
|
if (Platform.OS === 'web') {
|
|
66
|
-
|
|
67
|
-
return () => {
|
|
68
|
-
cancelled = true;
|
|
69
|
-
cancelAnimationFrame(frame);
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
const anchor = anchorRef.current;
|
|
73
|
-
if (!anchor) {
|
|
74
|
-
return () => {
|
|
75
|
-
cancelled = true;
|
|
76
|
-
};
|
|
74
|
+
webFrameId = requestAnimationFrame(runMeasure);
|
|
77
75
|
}
|
|
78
|
-
anchor.measureInWindow((x, y, width, height) => {
|
|
79
|
-
if (!cancelled) {
|
|
80
|
-
setLayoutIfChanged(setLayout, {
|
|
81
|
-
x,
|
|
82
|
-
y,
|
|
83
|
-
width,
|
|
84
|
-
height
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
76
|
return () => {
|
|
89
77
|
cancelled = true;
|
|
78
|
+
cancelAnimationFrame(retryFrameId);
|
|
79
|
+
cancelAnimationFrame(webFrameId);
|
|
90
80
|
};
|
|
91
81
|
}, [open, anchorRef, remeasureKey]);
|
|
92
82
|
useEffect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useLayoutEffect","useState","Platform","useIsomorphicLayoutEffect","OS","measureWeb","element","rect","getBoundingClientRect","x","left","y","top","width","height","setLayoutIfChanged","setLayout","next","prev","useAnchorPosition","anchorRef","open","options","remeasureKey","trackWhileOpen","layout","measureAnchor","anchor","current","measureInWindow","cancelled","
|
|
1
|
+
{"version":3,"names":["useEffect","useLayoutEffect","useState","Platform","useIsomorphicLayoutEffect","OS","measureWeb","element","rect","getBoundingClientRect","x","left","y","top","width","height","setLayoutIfChanged","setLayout","next","prev","useAnchorPosition","anchorRef","open","options","remeasureKey","trackWhileOpen","layout","measureAnchor","anchor","current","measureInWindow","cancelled","retryFrameId","webFrameId","runMeasure","requestAnimationFrame","cancelAnimationFrame","frameId","tick","update","window","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["overlay/useAnchorPosition.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef, useCallback, useLayoutEffect, useMemo, useRef } from 'react';
|
|
4
|
+
import { Platform, StyleSheet, View, useWindowDimensions } from 'react-native';
|
|
5
|
+
import { mergeRefs } from '@cdx-ui/utils';
|
|
6
|
+
import { Portal } from '../portal';
|
|
7
|
+
import { useAnchorPosition, useDismissOverlay, useEscapeKey } from '../overlay';
|
|
8
|
+
import { createPortalFn } from '../utils/createPortal';
|
|
9
|
+
import { Slot } from '../slot';
|
|
10
|
+
import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
|
|
11
|
+
import { TooltipProvider, useTooltipContext } from './context';
|
|
12
|
+
import { getTooltipAnchorStyle } from './getTooltipPosition';
|
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
+
export const TooltipContent = /*#__PURE__*/forwardRef(({
|
|
15
|
+
asChild,
|
|
16
|
+
children,
|
|
17
|
+
...props
|
|
18
|
+
}, ref) => {
|
|
19
|
+
const contextValue = useTooltipContext();
|
|
20
|
+
const {
|
|
21
|
+
open,
|
|
22
|
+
setOpen,
|
|
23
|
+
isDisabled,
|
|
24
|
+
placement,
|
|
25
|
+
offset,
|
|
26
|
+
trigger,
|
|
27
|
+
triggerRef,
|
|
28
|
+
contentId,
|
|
29
|
+
setResolvedPlacement
|
|
30
|
+
} = contextValue;
|
|
31
|
+
const contentRef = useRef(null);
|
|
32
|
+
const mergedRef = mergeRefs(ref, contentRef);
|
|
33
|
+
const handleDismiss = useCallback(() => {
|
|
34
|
+
setOpen(false);
|
|
35
|
+
}, [setOpen]);
|
|
36
|
+
const shouldDismissOnInteraction = trigger === 'click' && Platform.OS === 'web' && open && !isDisabled;
|
|
37
|
+
useDismissOverlay(shouldDismissOnInteraction, contentRef, [triggerRef], handleDismiss);
|
|
38
|
+
useEscapeKey(shouldDismissOnInteraction, handleDismiss);
|
|
39
|
+
const {
|
|
40
|
+
width,
|
|
41
|
+
height
|
|
42
|
+
} = useWindowDimensions();
|
|
43
|
+
const anchorLayout = useAnchorPosition(triggerRef, open && !isDisabled);
|
|
44
|
+
const position = useMemo(() => {
|
|
45
|
+
if (!anchorLayout) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
return getTooltipAnchorStyle(anchorLayout, placement, offset, {
|
|
49
|
+
width,
|
|
50
|
+
height
|
|
51
|
+
});
|
|
52
|
+
}, [anchorLayout, height, offset, placement, width]);
|
|
53
|
+
useLayoutEffect(() => {
|
|
54
|
+
if (position) {
|
|
55
|
+
setResolvedPlacement(position.resolved);
|
|
56
|
+
}
|
|
57
|
+
}, [position, setResolvedPlacement]);
|
|
58
|
+
if (!open || isDisabled || !position) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
const Comp = asChild ? Slot : View;
|
|
62
|
+
const webProps = Platform.OS === 'web' ? {
|
|
63
|
+
id: contentId,
|
|
64
|
+
role: 'tooltip'
|
|
65
|
+
} : {
|
|
66
|
+
accessibilityRole: 'text',
|
|
67
|
+
accessibilityLiveRegion: 'polite'
|
|
68
|
+
};
|
|
69
|
+
const popup = /*#__PURE__*/_jsx(TooltipProvider, {
|
|
70
|
+
value: contextValue,
|
|
71
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
72
|
+
pointerEvents: "none",
|
|
73
|
+
style: position.style,
|
|
74
|
+
children: /*#__PURE__*/_jsx(Comp, {
|
|
75
|
+
ref: mergedRef,
|
|
76
|
+
...props,
|
|
77
|
+
...webProps,
|
|
78
|
+
...mergeDataAttributes(props, dataAttributes({
|
|
79
|
+
side: position.resolved.side,
|
|
80
|
+
align: position.resolved.align,
|
|
81
|
+
state: 'open'
|
|
82
|
+
})),
|
|
83
|
+
children: children
|
|
84
|
+
})
|
|
85
|
+
})
|
|
86
|
+
});
|
|
87
|
+
if (Platform.OS === 'web' && createPortalFn && typeof document !== 'undefined') {
|
|
88
|
+
return createPortalFn(popup, document.body);
|
|
89
|
+
}
|
|
90
|
+
return /*#__PURE__*/_jsx(Portal, {
|
|
91
|
+
name: contentId,
|
|
92
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
93
|
+
pointerEvents: "box-none",
|
|
94
|
+
style: [StyleSheet.absoluteFill, {
|
|
95
|
+
zIndex: 9999
|
|
96
|
+
}],
|
|
97
|
+
children: popup
|
|
98
|
+
})
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
TooltipContent.displayName = 'TooltipContent';
|
|
102
|
+
//# sourceMappingURL=TooltipContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","useLayoutEffect","useMemo","useRef","Platform","StyleSheet","View","useWindowDimensions","mergeRefs","Portal","useAnchorPosition","useDismissOverlay","useEscapeKey","createPortalFn","Slot","dataAttributes","mergeDataAttributes","TooltipProvider","useTooltipContext","getTooltipAnchorStyle","jsx","_jsx","TooltipContent","asChild","children","props","ref","contextValue","open","setOpen","isDisabled","placement","offset","trigger","triggerRef","contentId","setResolvedPlacement","contentRef","mergedRef","handleDismiss","shouldDismissOnInteraction","OS","width","height","anchorLayout","position","resolved","Comp","webProps","id","role","accessibilityRole","accessibilityLiveRegion","popup","value","pointerEvents","style","side","align","state","document","body","name","absoluteFill","zIndex","displayName"],"sourceRoot":"../../../src","sources":["tooltip/TooltipContent.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
|
|
4
|
+
import { View } from 'react-native';
|
|
5
|
+
import { useControllableState } from '@cdx-ui/utils';
|
|
6
|
+
import { Slot } from '../slot';
|
|
7
|
+
import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
|
|
8
|
+
import { TooltipProvider } from './context';
|
|
9
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
export const TooltipRoot = /*#__PURE__*/forwardRef(({
|
|
11
|
+
asChild,
|
|
12
|
+
children,
|
|
13
|
+
isDisabled = false,
|
|
14
|
+
enterDelay = 0,
|
|
15
|
+
leaveDelay = 0,
|
|
16
|
+
isOpen: isOpenProp,
|
|
17
|
+
defaultOpen = false,
|
|
18
|
+
onOpen,
|
|
19
|
+
onClose,
|
|
20
|
+
placement = 'top',
|
|
21
|
+
offset = 8,
|
|
22
|
+
trigger = 'hover',
|
|
23
|
+
...props
|
|
24
|
+
}, ref) => {
|
|
25
|
+
const [open, setOpenState] = useControllableState({
|
|
26
|
+
prop: isOpenProp,
|
|
27
|
+
defaultProp: defaultOpen,
|
|
28
|
+
onChange: next => {
|
|
29
|
+
if (next) {
|
|
30
|
+
onOpen?.();
|
|
31
|
+
} else {
|
|
32
|
+
onClose?.();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
const enterTimerRef = useRef(null);
|
|
37
|
+
const leaveTimerRef = useRef(null);
|
|
38
|
+
const triggerRef = useRef(null);
|
|
39
|
+
const [resolvedPlacement, setResolvedPlacement] = useState(null);
|
|
40
|
+
const clearTimers = useCallback(() => {
|
|
41
|
+
if (enterTimerRef.current) {
|
|
42
|
+
clearTimeout(enterTimerRef.current);
|
|
43
|
+
enterTimerRef.current = null;
|
|
44
|
+
}
|
|
45
|
+
if (leaveTimerRef.current) {
|
|
46
|
+
clearTimeout(leaveTimerRef.current);
|
|
47
|
+
leaveTimerRef.current = null;
|
|
48
|
+
}
|
|
49
|
+
}, []);
|
|
50
|
+
const setOpen = useCallback(nextOpen => {
|
|
51
|
+
if (isDisabled && nextOpen) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
setOpenState(nextOpen);
|
|
55
|
+
}, [isDisabled, setOpenState]);
|
|
56
|
+
const requestOpen = useCallback(() => {
|
|
57
|
+
if (isDisabled) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
clearTimers();
|
|
61
|
+
if (leaveTimerRef.current) {
|
|
62
|
+
clearTimeout(leaveTimerRef.current);
|
|
63
|
+
leaveTimerRef.current = null;
|
|
64
|
+
}
|
|
65
|
+
if (enterDelay <= 0) {
|
|
66
|
+
setOpen(true);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
enterTimerRef.current = setTimeout(() => {
|
|
70
|
+
setOpen(true);
|
|
71
|
+
}, enterDelay);
|
|
72
|
+
}, [clearTimers, enterDelay, isDisabled, setOpen]);
|
|
73
|
+
const requestClose = useCallback(() => {
|
|
74
|
+
clearTimers();
|
|
75
|
+
if (enterTimerRef.current) {
|
|
76
|
+
clearTimeout(enterTimerRef.current);
|
|
77
|
+
enterTimerRef.current = null;
|
|
78
|
+
}
|
|
79
|
+
if (leaveDelay <= 0) {
|
|
80
|
+
setOpen(false);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
leaveTimerRef.current = setTimeout(() => {
|
|
84
|
+
setOpen(false);
|
|
85
|
+
}, leaveDelay);
|
|
86
|
+
}, [clearTimers, leaveDelay, setOpen]);
|
|
87
|
+
useEffect(() => clearTimers, [clearTimers]);
|
|
88
|
+
const reactId = useId();
|
|
89
|
+
const triggerId = `tooltip-trigger-${reactId}`;
|
|
90
|
+
const contentId = `tooltip-content-${reactId}`;
|
|
91
|
+
const contextValue = useMemo(() => ({
|
|
92
|
+
open: open ?? false,
|
|
93
|
+
setOpen,
|
|
94
|
+
requestOpen,
|
|
95
|
+
requestClose,
|
|
96
|
+
clearTimers,
|
|
97
|
+
isDisabled,
|
|
98
|
+
enterDelay,
|
|
99
|
+
leaveDelay,
|
|
100
|
+
placement,
|
|
101
|
+
offset,
|
|
102
|
+
trigger,
|
|
103
|
+
triggerRef,
|
|
104
|
+
contentId,
|
|
105
|
+
triggerId,
|
|
106
|
+
resolvedPlacement,
|
|
107
|
+
setResolvedPlacement
|
|
108
|
+
}), [clearTimers, contentId, enterDelay, isDisabled, leaveDelay, offset, open, placement, requestClose, requestOpen, resolvedPlacement, setOpen, trigger, triggerId]);
|
|
109
|
+
const Comp = asChild ? Slot : View;
|
|
110
|
+
return /*#__PURE__*/_jsx(TooltipProvider, {
|
|
111
|
+
value: contextValue,
|
|
112
|
+
children: /*#__PURE__*/_jsx(Comp, {
|
|
113
|
+
ref: ref,
|
|
114
|
+
...props,
|
|
115
|
+
...mergeDataAttributes(props, dataAttributes({
|
|
116
|
+
state: open ? 'open' : 'closed',
|
|
117
|
+
disabled: isDisabled
|
|
118
|
+
})),
|
|
119
|
+
children: children
|
|
120
|
+
})
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
TooltipRoot.displayName = 'TooltipRoot';
|
|
124
|
+
//# sourceMappingURL=TooltipRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","useEffect","useId","useMemo","useRef","useState","View","useControllableState","Slot","dataAttributes","mergeDataAttributes","TooltipProvider","jsx","_jsx","TooltipRoot","asChild","children","isDisabled","enterDelay","leaveDelay","isOpen","isOpenProp","defaultOpen","onOpen","onClose","placement","offset","trigger","props","ref","open","setOpenState","prop","defaultProp","onChange","next","enterTimerRef","leaveTimerRef","triggerRef","resolvedPlacement","setResolvedPlacement","clearTimers","current","clearTimeout","setOpen","nextOpen","requestOpen","setTimeout","requestClose","reactId","triggerId","contentId","contextValue","Comp","value","state","disabled","displayName"],"sourceRoot":"../../../src","sources":["tooltip/TooltipRoot.tsx"],"mappings":"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","ignoreList":[]}
|