@cdx-ui/primitives 0.0.1-beta.144 → 0.0.1-beta.146

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.
Files changed (64) hide show
  1. package/README.md +3 -1
  2. package/lib/commonjs/index.js +12 -0
  3. package/lib/commonjs/index.js.map +1 -1
  4. package/lib/commonjs/overlay/useAnchorPosition.js +13 -23
  5. package/lib/commonjs/overlay/useAnchorPosition.js.map +1 -1
  6. package/lib/commonjs/tooltip/TooltipContent.js +106 -0
  7. package/lib/commonjs/tooltip/TooltipContent.js.map +1 -0
  8. package/lib/commonjs/tooltip/TooltipRoot.js +128 -0
  9. package/lib/commonjs/tooltip/TooltipRoot.js.map +1 -0
  10. package/lib/commonjs/tooltip/TooltipTrigger.js +132 -0
  11. package/lib/commonjs/tooltip/TooltipTrigger.js.map +1 -0
  12. package/lib/commonjs/tooltip/context.js +11 -0
  13. package/lib/commonjs/tooltip/context.js.map +1 -0
  14. package/lib/commonjs/tooltip/getTooltipPosition.js +124 -0
  15. package/lib/commonjs/tooltip/getTooltipPosition.js.map +1 -0
  16. package/lib/commonjs/tooltip/index.js +53 -0
  17. package/lib/commonjs/tooltip/index.js.map +1 -0
  18. package/lib/commonjs/tooltip/types.js +6 -0
  19. package/lib/commonjs/tooltip/types.js.map +1 -0
  20. package/lib/module/index.js +1 -0
  21. package/lib/module/index.js.map +1 -1
  22. package/lib/module/overlay/useAnchorPosition.js +13 -23
  23. package/lib/module/overlay/useAnchorPosition.js.map +1 -1
  24. package/lib/module/tooltip/TooltipContent.js +102 -0
  25. package/lib/module/tooltip/TooltipContent.js.map +1 -0
  26. package/lib/module/tooltip/TooltipRoot.js +124 -0
  27. package/lib/module/tooltip/TooltipRoot.js.map +1 -0
  28. package/lib/module/tooltip/TooltipTrigger.js +128 -0
  29. package/lib/module/tooltip/TooltipTrigger.js.map +1 -0
  30. package/lib/module/tooltip/context.js +5 -0
  31. package/lib/module/tooltip/context.js.map +1 -0
  32. package/lib/module/tooltip/getTooltipPosition.js +119 -0
  33. package/lib/module/tooltip/getTooltipPosition.js.map +1 -0
  34. package/lib/module/tooltip/index.js +8 -0
  35. package/lib/module/tooltip/index.js.map +1 -0
  36. package/lib/module/tooltip/types.js +4 -0
  37. package/lib/module/tooltip/types.js.map +1 -0
  38. package/lib/typescript/index.d.ts +1 -0
  39. package/lib/typescript/index.d.ts.map +1 -1
  40. package/lib/typescript/overlay/useAnchorPosition.d.ts.map +1 -1
  41. package/lib/typescript/tooltip/TooltipContent.d.ts +6 -0
  42. package/lib/typescript/tooltip/TooltipContent.d.ts.map +1 -0
  43. package/lib/typescript/tooltip/TooltipRoot.d.ts +7 -0
  44. package/lib/typescript/tooltip/TooltipRoot.d.ts.map +1 -0
  45. package/lib/typescript/tooltip/TooltipTrigger.d.ts +5 -0
  46. package/lib/typescript/tooltip/TooltipTrigger.d.ts.map +1 -0
  47. package/lib/typescript/tooltip/context.d.ts +6 -0
  48. package/lib/typescript/tooltip/context.d.ts.map +1 -0
  49. package/lib/typescript/tooltip/getTooltipPosition.d.ts +20 -0
  50. package/lib/typescript/tooltip/getTooltipPosition.d.ts.map +1 -0
  51. package/lib/typescript/tooltip/index.d.ts +7 -0
  52. package/lib/typescript/tooltip/index.d.ts.map +1 -0
  53. package/lib/typescript/tooltip/types.d.ts +78 -0
  54. package/lib/typescript/tooltip/types.d.ts.map +1 -0
  55. package/package.json +3 -3
  56. package/src/index.ts +1 -0
  57. package/src/overlay/useAnchorPosition.ts +15 -20
  58. package/src/tooltip/TooltipContent.tsx +119 -0
  59. package/src/tooltip/TooltipRoot.tsx +187 -0
  60. package/src/tooltip/TooltipTrigger.tsx +160 -0
  61. package/src/tooltip/context.tsx +5 -0
  62. package/src/tooltip/getTooltipPosition.ts +147 -0
  63. package/src/tooltip/index.ts +19 -0
  64. 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,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["tooltip/types.ts"],"mappings":"","ignoreList":[]}
@@ -29,6 +29,7 @@ export * from './switch';
29
29
  export * from './tabs';
30
30
  export * from './tile';
31
31
  export * from './toast';
32
+ export * from './tooltip';
32
33
  export * from './portal';
33
34
  export * from './progress-bar';
34
35
  export * from './radio';
@@ -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 (!cancelled) {
61
- measureAnchor();
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
- const frame = requestAnimationFrame(runMeasure);
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","runMeasure","frame","requestAnimationFrame","cancelAnimationFrame","frameId","tick","update","window","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["overlay/useAnchorPosition.ts"],"mappings":"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","ignoreList":[]}
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":";;AACA,SAASA,SAAS,EAAEC,eAAe,EAAEC,QAAQ,QAAQ,OAAO;AAC5D,SAASC,QAAQ,QAAQ,cAAc;AAEvC,MAAMC,yBAAyB,GAAGD,QAAQ,CAACE,EAAE,KAAK,KAAK,GAAGJ,eAAe,GAAGD,SAAS;AASrF,SAASM,UAAUA,CAACC,OAAY,EAAgB;EAC9C,MAAMC,IAAI,GAAID,OAAO,CAA4BE,qBAAqB,CAAC,CAAC;EACxE,OAAO;IAAEC,CAAC,EAAEF,IAAI,CAACG,IAAI;IAAEC,CAAC,EAAEJ,IAAI,CAACK,GAAG;IAAEC,KAAK,EAAEN,IAAI,CAACM,KAAK;IAAEC,MAAM,EAAEP,IAAI,CAACO;EAAO,CAAC;AAC9E;AAEA,SAASC,kBAAkBA,CACzBC,SAAoE,EACpEC,IAAkB,EAClB;EACAD,SAAS,CAAEE,IAAI,IAAK;IAClB,IACEA,IAAI,EAAET,CAAC,KAAKQ,IAAI,CAACR,CAAC,IAClBS,IAAI,CAACP,CAAC,KAAKM,IAAI,CAACN,CAAC,IACjBO,IAAI,CAACL,KAAK,KAAKI,IAAI,CAACJ,KAAK,IACzBK,IAAI,CAACJ,MAAM,KAAKG,IAAI,CAACH,MAAM,EAC3B;MACA,OAAOI,IAAI;IACb;IACA,OAAOD,IAAI;EACb,CAAC,CAAC;AACJ;AASA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,iBAAiBA,CAC/BC,SAAyB,EACzBC,IAAa,EACbC,OAAkC,EACb;EACrB,MAAM;IAAEC,YAAY;IAAEC,cAAc,GAAG;EAAM,CAAC,GAAGF,OAAO,IAAI,CAAC,CAAC;EAC9D,MAAM,CAACG,MAAM,EAAET,SAAS,CAAC,GAAGf,QAAQ,CAAsB,IAAI,CAAC;EAE/D,MAAMyB,aAAa,GAAGA,CAAA,KAAM;IAC1B,MAAMC,MAAM,GAAGP,SAAS,CAACQ,OAAO;IAChC,IAAI,CAACD,MAAM,EAAE;MACX;IACF;IAEA,IAAIzB,QAAQ,CAACE,EAAE,KAAK,KAAK,EAAE;MACzBW,kBAAkB,CAACC,SAAS,EAAEX,UAAU,CAACsB,MAAM,CAAC,CAAC;MACjD;IACF;IAEAA,MAAM,CAACE,eAAe,CAAC,CAACpB,CAAS,EAAEE,CAAS,EAAEE,KAAa,EAAEC,MAAc,KAAK;MAC9EC,kBAAkB,CAACC,SAAS,EAAE;QAAEP,CAAC;QAAEE,CAAC;QAAEE,KAAK;QAAEC;MAAO,CAAC,CAAC;IACxD,CAAC,CAAC;EACJ,CAAC;EAEDX,yBAAyB,CAAC,MAAM;IAC9B,IAAI,CAACkB,IAAI,EAAE;MACTL,SAAS,CAAC,IAAI,CAAC;MACf;IACF;IAEA,IAAIc,SAAS,GAAG,KAAK;IACrB,IAAIC,YAAY,GAAG,CAAC;IACpB,IAAIC,UAAU,GAAG,CAAC;IAElB,MAAMC,UAAU,GAAGA,CAAA,KAAM;MACvB,IAAIH,SAAS,EAAE;QACb;MACF;MAEA,MAAMH,MAAM,GAAGP,SAAS,CAACQ,OAAO;MAChC,IAAI,CAACD,MAAM,EAAE;QACXI,YAAY,GAAGG,qBAAqB,CAACD,UAAU,CAAC;QAChD;MACF;MAEAP,aAAa,CAAC,CAAC;IACjB,CAAC;IAEDO,UAAU,CAAC,CAAC;IAEZ,IAAI/B,QAAQ,CAACE,EAAE,KAAK,KAAK,EAAE;MACzB4B,UAAU,GAAGE,qBAAqB,CAACD,UAAU,CAAC;IAChD;IAEA,OAAO,MAAM;MACXH,SAAS,GAAG,IAAI;MAChBK,oBAAoB,CAACJ,YAAY,CAAC;MAClCI,oBAAoB,CAACH,UAAU,CAAC;IAClC,CAAC;EACH,CAAC,EAAE,CAACX,IAAI,EAAED,SAAS,EAAEG,YAAY,CAAC,CAAC;EAEnCxB,SAAS,CAAC,MAAM;IACd,IAAI,CAACsB,IAAI,IAAI,CAACG,cAAc,EAAE;MAC5B;IACF;IAEA,IAAIY,OAAO,GAAG,CAAC;IACf,MAAMC,IAAI,GAAGA,CAAA,KAAM;MACjBX,aAAa,CAAC,CAAC;MACfU,OAAO,GAAGF,qBAAqB,CAACG,IAAI,CAAC;IACvC,CAAC;IACDD,OAAO,GAAGF,qBAAqB,CAACG,IAAI,CAAC;IAErC,OAAO,MAAM;MACXF,oBAAoB,CAACC,OAAO,CAAC;IAC/B,CAAC;EACH,CAAC,EAAE,CAACf,IAAI,EAAED,SAAS,EAAEG,YAAY,EAAEC,cAAc,CAAC,CAAC;EAEnDzB,SAAS,CAAC,MAAM;IACd,IAAI,CAACsB,IAAI,IAAInB,QAAQ,CAACE,EAAE,KAAK,KAAK,IAAIoB,cAAc,EAAE;MACpD;IACF;IAEA,MAAMG,MAAM,GAAGP,SAAS,CAACQ,OAAO;IAChC,IAAI,CAACD,MAAM,EAAE;MACX;IACF;IAEA,MAAMW,MAAM,GAAGA,CAAA,KAAMvB,kBAAkB,CAACC,SAAS,EAAEX,UAAU,CAACsB,MAAM,CAAC,CAAC;IAEtEY,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEF,MAAM,EAAE,IAAI,CAAC;IAC/CC,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEF,MAAM,CAAC;IAEzC,OAAO,MAAM;MACXC,MAAM,CAACE,mBAAmB,CAAC,QAAQ,EAAEH,MAAM,EAAE,IAAI,CAAC;MAClDC,MAAM,CAACE,mBAAmB,CAAC,QAAQ,EAAEH,MAAM,CAAC;IAC9C,CAAC;EACH,CAAC,EAAE,CAACjB,IAAI,EAAED,SAAS,EAAEG,YAAY,EAAEC,cAAc,CAAC,CAAC;EAEnD,OAAOC,MAAM;AACf","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":[]}