@telefonica/mistica 14.34.0 → 14.35.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.
Files changed (156) hide show
  1. package/css/mistica.css +1 -1
  2. package/dist/avatar.css-mistica.js +1 -1
  3. package/dist/button.css-mistica.js +7 -7
  4. package/dist/callout.css-mistica.js +1 -1
  5. package/dist/callout.js +17 -12
  6. package/dist/card.js +277 -244
  7. package/dist/carousel.css-mistica.js +5 -5
  8. package/dist/carousel.js +54 -52
  9. package/dist/checkbox.js +18 -18
  10. package/dist/community/advanced-data-card.css-mistica.js +3 -3
  11. package/dist/community/advanced-data-card.js +57 -50
  12. package/dist/community/blocks.js +42 -35
  13. package/dist/counter.css-mistica.js +1 -1
  14. package/dist/cvv-field.js +1 -1
  15. package/dist/dialog.css-mistica.js +3 -3
  16. package/dist/dialog.js +2 -2
  17. package/dist/hero.js +34 -30
  18. package/dist/hooks.d.ts +12 -1
  19. package/dist/hooks.js +85 -48
  20. package/dist/image.css-mistica.js +7 -2
  21. package/dist/image.css.d.ts +3 -0
  22. package/dist/image.d.ts +1 -7
  23. package/dist/image.js +55 -66
  24. package/dist/list.css-mistica.js +1 -1
  25. package/dist/list.js +80 -75
  26. package/dist/loading-bar.css-mistica.js +6 -6
  27. package/dist/maybe-dismissable.css-mistica.js +1 -1
  28. package/dist/menu.js +32 -32
  29. package/dist/navigation-bar.css-mistica.js +10 -10
  30. package/dist/overlay.js +10 -10
  31. package/dist/package-version.js +1 -1
  32. package/dist/pin-field.css-mistica.js +3 -3
  33. package/dist/popover.css-mistica.js +4 -4
  34. package/dist/radio-button.css-mistica.js +5 -5
  35. package/dist/radio-button.js +7 -7
  36. package/dist/screen-reader-only.css-mistica.js +1 -1
  37. package/dist/select.css-mistica.js +7 -7
  38. package/dist/select.js +65 -53
  39. package/dist/sheet.css-mistica.js +8 -8
  40. package/dist/skeletons.d.ts +9 -1
  41. package/dist/skeletons.js +3 -0
  42. package/dist/skins/blau.js +2 -1
  43. package/dist/skins/defaults.js +2 -1
  44. package/dist/skins/movistar-legacy.js +2 -1
  45. package/dist/skins/movistar.js +2 -1
  46. package/dist/skins/o2.js +2 -1
  47. package/dist/skins/skin-contract.css-mistica.js +2 -1
  48. package/dist/skins/skin-contract.css.d.ts +1 -0
  49. package/dist/skins/telefonica.js +2 -1
  50. package/dist/skins/types/index.d.ts +1 -0
  51. package/dist/skins/vivo-new.js +2 -1
  52. package/dist/skins/vivo.js +2 -1
  53. package/dist/slider.css-mistica.js +19 -19
  54. package/dist/slider.css.d.ts +8 -8
  55. package/dist/slider.d.ts +28 -8
  56. package/dist/slider.js +226 -106
  57. package/dist/snackbar.css-mistica.js +5 -5
  58. package/dist/sprinkles.css-mistica.js +71 -68
  59. package/dist/stacking-group.js +31 -24
  60. package/dist/stepper.css-mistica.js +3 -3
  61. package/dist/switch-component.css-mistica.js +17 -17
  62. package/dist/switch-component.js +12 -12
  63. package/dist/tab-focus.js +12 -12
  64. package/dist/tabs.css-mistica.js +1 -1
  65. package/dist/text-field-base.css-mistica.js +1 -1
  66. package/dist/text-field-components.css-mistica.js +7 -7
  67. package/dist/text-link.css-mistica.js +3 -3
  68. package/dist/theme-context-provider.js +39 -36
  69. package/dist/tooltip-context-provider.d.ts +14 -0
  70. package/dist/tooltip-context-provider.js +90 -0
  71. package/dist/tooltip.css-mistica.js +25 -54
  72. package/dist/tooltip.css.d.ts +19 -26
  73. package/dist/tooltip.d.ts +15 -1
  74. package/dist/tooltip.js +255 -207
  75. package/dist/touchable.css-mistica.js +1 -1
  76. package/dist/touchable.js +8 -8
  77. package/dist/utils/aspect-ratio-support.css-mistica.js +2 -2
  78. package/dist/utils/environment.d.ts +1 -0
  79. package/dist/utils/environment.js +4 -1
  80. package/dist/utils/keys.d.ts +8 -0
  81. package/dist/utils/{key-codes.js → keys.js} +6 -6
  82. package/dist/video.css-mistica.js +1 -1
  83. package/dist/video.js +33 -31
  84. package/dist-es/avatar.css-mistica.js +1 -1
  85. package/dist-es/button.css-mistica.js +7 -7
  86. package/dist-es/callout.css-mistica.js +1 -1
  87. package/dist-es/callout.js +33 -28
  88. package/dist-es/card.js +416 -383
  89. package/dist-es/carousel.css-mistica.js +2 -2
  90. package/dist-es/carousel.js +84 -82
  91. package/dist-es/checkbox.js +18 -18
  92. package/dist-es/community/advanced-data-card.css-mistica.js +2 -2
  93. package/dist-es/community/advanced-data-card.js +83 -76
  94. package/dist-es/community/blocks.js +77 -70
  95. package/dist-es/counter.css-mistica.js +1 -1
  96. package/dist-es/cvv-field.js +1 -1
  97. package/dist-es/dialog.css-mistica.js +3 -3
  98. package/dist-es/dialog.js +2 -2
  99. package/dist-es/hero.js +69 -65
  100. package/dist-es/hooks.js +83 -49
  101. package/dist-es/image.css-mistica.js +4 -2
  102. package/dist-es/image.js +74 -79
  103. package/dist-es/list.css-mistica.js +1 -1
  104. package/dist-es/list.js +116 -111
  105. package/dist-es/loading-bar.css-mistica.js +2 -2
  106. package/dist-es/maybe-dismissable.css-mistica.js +1 -1
  107. package/dist-es/menu.js +41 -41
  108. package/dist-es/navigation-bar.css-mistica.js +6 -6
  109. package/dist-es/overlay.js +14 -14
  110. package/dist-es/package-version.js +1 -1
  111. package/dist-es/pin-field.css-mistica.js +2 -2
  112. package/dist-es/popover.css-mistica.js +2 -2
  113. package/dist-es/radio-button.css-mistica.js +4 -4
  114. package/dist-es/radio-button.js +2 -2
  115. package/dist-es/screen-reader-only.css-mistica.js +1 -1
  116. package/dist-es/select.css-mistica.js +7 -7
  117. package/dist-es/select.js +89 -77
  118. package/dist-es/sheet.css-mistica.js +2 -2
  119. package/dist-es/skeletons.js +1 -1
  120. package/dist-es/skins/blau.js +2 -1
  121. package/dist-es/skins/defaults.js +2 -1
  122. package/dist-es/skins/movistar-legacy.js +2 -1
  123. package/dist-es/skins/movistar.js +2 -1
  124. package/dist-es/skins/o2.js +2 -1
  125. package/dist-es/skins/skin-contract.css-mistica.js +2 -1
  126. package/dist-es/skins/telefonica.js +2 -1
  127. package/dist-es/skins/vivo-new.js +2 -1
  128. package/dist-es/skins/vivo.js +2 -1
  129. package/dist-es/slider.css-mistica.js +2 -8
  130. package/dist-es/slider.js +231 -111
  131. package/dist-es/snackbar.css-mistica.js +4 -4
  132. package/dist-es/sprinkles.css-mistica.js +71 -68
  133. package/dist-es/stacking-group.js +37 -30
  134. package/dist-es/stepper.css-mistica.js +2 -2
  135. package/dist-es/style.css +1 -1
  136. package/dist-es/switch-component.css-mistica.js +13 -13
  137. package/dist-es/switch-component.js +14 -14
  138. package/dist-es/tab-focus.js +14 -14
  139. package/dist-es/tabs.css-mistica.js +1 -1
  140. package/dist-es/text-field-base.css-mistica.js +1 -1
  141. package/dist-es/text-field-components.css-mistica.js +2 -2
  142. package/dist-es/text-link.css-mistica.js +3 -3
  143. package/dist-es/theme-context-provider.js +53 -50
  144. package/dist-es/tooltip-context-provider.js +29 -0
  145. package/dist-es/tooltip.css-mistica.js +16 -9
  146. package/dist-es/tooltip.js +264 -216
  147. package/dist-es/touchable.css-mistica.js +1 -1
  148. package/dist-es/touchable.js +8 -8
  149. package/dist-es/utils/aspect-ratio-support.css-mistica.js +2 -2
  150. package/dist-es/utils/environment.js +2 -2
  151. package/dist-es/utils/keys.js +2 -0
  152. package/dist-es/video.css-mistica.js +1 -1
  153. package/dist-es/video.js +41 -39
  154. package/package.json +1 -1
  155. package/dist/utils/key-codes.d.ts +0 -8
  156. package/dist-es/utils/key-codes.js +0 -2
package/dist/tooltip.js CHANGED
@@ -6,23 +6,27 @@ Object.defineProperty(exports, "__esModule", {
6
6
  Object.defineProperty(exports, "default", {
7
7
  enumerable: true,
8
8
  get: function() {
9
- return ae;
9
+ return se;
10
10
  }
11
11
  });
12
12
  const _jsxruntime = require("react/jsx-runtime");
13
13
  const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
14
- const _classnames = /*#__PURE__*/ _interop_require_default(require("classnames"));
15
- const _reacttransitiongroup = require("react-transition-group");
16
14
  const _hooks = require("./hooks.js");
17
15
  const _portal = require("./portal.js");
18
- const _overlay = /*#__PURE__*/ _interop_require_default(require("./overlay.js"));
19
- const _text = require("./text.js");
20
- const _keycodes = require("./utils/key-codes.js");
21
- const _stack = /*#__PURE__*/ _interop_require_default(require("./stack.js"));
16
+ const _reacttransitiongroup = require("react-transition-group");
22
17
  const _tooltipcssmistica = require("./tooltip.css-mistica.js");
18
+ const _stack = /*#__PURE__*/ _interop_require_default(require("./stack.js"));
19
+ const _text = require("./text.js");
23
20
  const _dom = require("./utils/dom.js");
21
+ const _keys = require("./utils/keys.js");
24
22
  const _environment = require("./utils/environment.js");
25
- const _css = require("./utils/css.js");
23
+ const _helpers = require("./utils/helpers.js");
24
+ const _classnames = /*#__PURE__*/ _interop_require_default(require("classnames"));
25
+ const _skincontractcssmistica = require("./skins/skin-contract.css-mistica.js");
26
+ const _themevariantcontext = require("./theme-variant-context.js");
27
+ const _common = require("./utils/common.js");
28
+ const _tooltipcontextprovider = require("./tooltip-context-provider.js");
29
+ const _platform = require("./utils/platform.js");
26
30
  function _interop_require_default(obj) {
27
31
  return obj && obj.__esModule ? obj : {
28
32
  default: obj
@@ -121,224 +125,268 @@ function _object_spread_props(target, source) {
121
125
  }
122
126
  return target;
123
127
  }
124
- function _object_without_properties(source, excluded) {
125
- if (source == null) return {};
126
- var target = _object_without_properties_loose(source, excluded);
127
- var key, i;
128
- if (Object.getOwnPropertySymbols) {
129
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
130
- for(i = 0; i < sourceSymbolKeys.length; i++){
131
- key = sourceSymbolKeys[i];
132
- if (excluded.indexOf(key) >= 0) continue;
133
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
134
- target[key] = source[key];
135
- }
128
+ const at = (e)=>({
129
+ border: `1px solid ${e ? _skincontractcssmistica.vars.colors.backgroundContainer : _skincontractcssmistica.vars.colors.border}`
130
+ }), lt = 496, Dt = 300, Wt = 500, Vt = 100, c = 20, b = 6, E = b + c / 2 + 1, Bt = (e)=>{
131
+ switch(e){
132
+ case "left":
133
+ return `translateX(-${b}px)`;
134
+ case "right":
135
+ return `translateX(${b}px)`;
136
+ case "top":
137
+ return `translateY(-${b}px)`;
138
+ case "bottom":
139
+ return `translateY(${b}px)`;
140
+ default:
141
+ return "";
136
142
  }
137
- return target;
138
- }
139
- function _object_without_properties_loose(source, excluded) {
140
- if (source == null) return {};
141
- var target = {};
142
- var sourceKeys = Object.keys(source);
143
- var key, i;
144
- for(i = 0; i < sourceKeys.length; i++){
145
- key = sourceKeys[i];
146
- if (excluded.indexOf(key) >= 0) continue;
147
- target[key] = source[key];
143
+ }, ft = (e)=>{
144
+ const O = parseFloat(getComputedStyle(e, null).paddingLeft) + parseFloat(getComputedStyle(e, null).paddingRight), m = parseFloat(getComputedStyle(e, null).paddingTop) + parseFloat(getComputedStyle(e, null).paddingBottom), w = e.offsetWidth - O, h = e.offsetHeight - m;
145
+ return {
146
+ width: w,
147
+ height: h
148
+ };
149
+ }, ct = (e, O, m, w, h)=>{
150
+ if (!e || !O) return;
151
+ const { top: D, bottom: R, left: W, right: V } = e, I = w - R, g = h - V, M = D, n = W, { width: B, height: $ } = ft(O), S = B + E, d = $ + E, y = S <= Math.max(n, g), T = d <= Math.max(I, M);
152
+ if (!(!T && !y)) switch(m){
153
+ case "left":
154
+ return y ? S <= n ? "left" : "right" : I > M ? "bottom" : "top";
155
+ case "right":
156
+ return y ? S <= g ? "right" : "left" : I > M ? "bottom" : "top";
157
+ case "top":
158
+ return T ? d <= M ? "top" : "bottom" : n > g ? "left" : "right";
159
+ case "bottom":
160
+ return T ? d <= I ? "bottom" : "top" : n > g ? "left" : "right";
161
+ default:
162
+ return;
148
163
  }
149
- return target;
150
- }
151
- const $t = "bottom", Bt = "top", Et = 12, m = 4 + Et, It = 500, v = 12, Mt = 500, M = ()=>{}, Nt = (r)=>r === "bottom" ? `translateY(${v}px)` : r === "top" ? `translateY(calc(-100% - ${v}px))` : r === "right" ? `translateX(${v}px) translateY(-50%)` : r === "left" ? `translateX(-${v}px) translateY(-50%)` : `translateY(-${v}px)`, kt = (r)=>r === "top" ? "translateY(-100%)" : r === "bottom" ? "translateY(0)" : "translateY(-50%)", Lt = (r)=>r === "bottom" ? "translateY(0)" : r === "top" ? "translateY(-100%)" : r === "right" || r === "left" ? "translateX(0px) translateY(-50%)" : "translateY(0px)", Vt = (r)=>r === "top" ? _tooltipcssmistica.fadeInTopKeyframes : r === "bottom" ? _tooltipcssmistica.fadeInBottomKeyframes : _tooltipcssmistica.fadeInXKeyframes, jt = (r)=>r ? "1" : "0.2", Kt = (r)=>r === "top" ? `2px 2px 4px 0 rgba(0, 0, 0, ${_tooltipcssmistica.vars.shadowAlpha})` : r === "right" ? `0 0 4px 0 rgba(0, 0, 0, ${_tooltipcssmistica.vars.shadowAlpha})` : r === "left" ? `0 0 4px 0 rgba(0, 0, 0, ${_tooltipcssmistica.vars.shadowAlpha})` : r === "bottom" ? `-1px -1px 4px 0 rgba(0, 0, 0, ${_tooltipcssmistica.vars.shadowAlpha})` : "", zt = (_param)=>{
152
- var { children: r, extra: N, description: S, target: k, title: Y, targetLabel: L, delay: V = !0, dataAttributes: j, targetStyle: K, unstable_offsetX: f, textCenter: z } = _param, R = _object_without_properties(_param, [
153
- "children",
154
- "extra",
155
- "description",
156
- "target",
157
- "title",
158
- "targetLabel",
159
- "delay",
160
- "dataAttributes",
161
- "targetStyle",
162
- "unstable_offsetX",
163
- "textCenter"
164
+ }, Xt = (param)=>{
165
+ let { children: e, extra: O, description: m, target: w, title: h, width: D, position: R = "top", dataAttributes: W, delay: V = !0, centerContent: I, open: g, textCenter: M } = param;
166
+ const n = (0, _hooks.useAriaId)(), { openTooltipId: B } = (0, _tooltipcontextprovider.useTooltipState)(), { openTooltip: $, closeTooltip: S } = (0, _tooltipcontextprovider.useSetTooltipState)(), [d, y] = _react.useState(), [T, J] = _react.useState(), X = _react.useRef(null), z = _react.useRef(null), [_, pt] = _react.useState(null), p = (0, _environment.isTouchableDevice)(), H = V ? Wt : 0, [Q, Y] = _react.useState(!1), [tt, P] = _react.useState(!1), G = g !== void 0, [et, K] = _react.useState(!1), v = G ? g : n === B, U = (0, _themevariantcontext.useIsInverseVariant)(), l = (0, _hooks.useBoundingRect)(X, v), dt = (0, _hooks.useBoundingRect)(z, v, !0), s = (0, _hooks.useWindowSize)(), x = _react.useCallback(()=>{
167
+ K(!1), Y(!1), P(!1);
168
+ }, []);
169
+ _react.useEffect(()=>{
170
+ v || x();
171
+ }, [
172
+ v,
173
+ x
174
+ ]), _react.useEffect(()=>{
175
+ if (!_ || !v) return;
176
+ const r = ct(l, _, R, s.height, s.width);
177
+ if (!r || !l) {
178
+ y(void 0), J(void 0), x();
179
+ return;
180
+ }
181
+ let o, t;
182
+ const { left: a, right: C, top: N, bottom: k } = l, { width: L, height: A } = ft(_), ot = s.width - L, rt = s.height - A, u = parseInt((0, _dom.getCssVarValue)(_skincontractcssmistica.vars.borderRadii.container)) || 8;
183
+ switch(r){
184
+ case "top":
185
+ o = {
186
+ left: Math.max(0, Math.min(ot, (a + C - L) / 2)),
187
+ top: N - A - c / 2,
188
+ padding: `0px 0px ${E}px 0px`
189
+ }, t = {
190
+ left: Math.max(u, Math.min(s.width - u - c, (a + C - c) / 2)),
191
+ top: "100%"
192
+ };
193
+ break;
194
+ case "bottom":
195
+ o = {
196
+ left: Math.max(0, Math.min(ot, (a + C - L) / 2)),
197
+ top: k - b,
198
+ padding: `${E}px 0px 0px 0px`
199
+ }, t = {
200
+ left: Math.max(u, Math.min(s.width - u - c, (a + C - c) / 2)),
201
+ bottom: "100%",
202
+ transform: "rotate(180deg)"
203
+ };
204
+ break;
205
+ case "left":
206
+ o = {
207
+ left: a - L - c / 2,
208
+ top: Math.max(0, Math.min(rt, (N + k - A) / 2)),
209
+ padding: `0px ${E}px 0px 0px`
210
+ }, t = {
211
+ top: Math.max(u, Math.min(s.height - u - c, (N + k - c) / 2)),
212
+ left: "100%",
213
+ transform: "rotate(-90deg)",
214
+ transformOrigin: "bottom"
215
+ };
216
+ break;
217
+ case "right":
218
+ default:
219
+ o = {
220
+ left: C - b,
221
+ top: Math.max(0, Math.min(rt, (N + k - A) / 2)),
222
+ padding: `0px 0px 0px ${E}px`
223
+ }, t = {
224
+ top: Math.max(u, Math.min(s.height - u - c, (N + k - c) / 2)),
225
+ right: "100%",
226
+ transform: "rotate(90deg)",
227
+ transformOrigin: "bottom"
228
+ };
229
+ break;
230
+ }
231
+ typeof t.top == "number" && (t.top -= o.top, t.top = `${t.top / A * 100}%`), typeof t.left == "number" && (t.left -= o.left, t.left = `${t.left / L * 100}%`), (0, _helpers.isEqual)(o, d) || y(o), (0, _helpers.isEqual)(t, T) || J(t);
232
+ }, [
233
+ _,
234
+ l,
235
+ dt,
236
+ v,
237
+ R,
238
+ s,
239
+ d,
240
+ T,
241
+ U,
242
+ p,
243
+ n,
244
+ x
164
245
  ]);
165
- const { isDarkMode: F } = (0, _hooks.useTheme)(), [a, C] = _react.useState(!1), { isTabletOrSmaller: H } = (0, _hooks.useScreenSize)(), D = (0, _hooks.useAriaId)(), h = _react.useRef(!1), c = _react.useRef(null), g = _react.useRef(null), y = _react.useRef(null), x = _react.useRef(null), t = _react.useRef({
166
- top: 0,
167
- right: 0,
168
- left: 0,
169
- bottom: 0,
170
- width: 0,
171
- height: 0
172
- }), [X, q] = _react.useState({}), G = (n)=>H ? n || Bt : n || $t, [e, J] = _react.useState(void 0), i = ((n)=>{
173
- if (!e) return n;
174
- const u = (d)=>{
175
- const p = t.current.top > e.height;
176
- return t.current.left < e.width ? p ? "top" : "bottom" : d;
177
- }, l = (d)=>t.current.right + e.width > window.innerWidth ? u("left") : d;
178
- return ({
179
- top: t.current.top < e.height ? l("bottom") : l(n),
180
- right: l(n),
181
- left: t.current.left < e.width ? t.current.right + e.width > window.innerWidth ? t.current.top < e.height ? "bottom" : "top" : "right" : n,
182
- bottom: t.current.bottom + e.height > window.innerHeight ? l("top") : l(n)
183
- })[n];
184
- })(G(R.position)), O = (0, _environment.isClientSide)() ? window.matchMedia("(pointer: coarse)").matches : !1, W = ()=>{
185
- a && C(!1);
186
- };
187
- _react.useEffect(()=>(window.addEventListener("resize", W), ()=>{
188
- window.removeEventListener("resize", W);
189
- }));
190
- const $ = ()=>{
191
- C(!1);
192
- }, T = ()=>{
193
- y.current && (t.current = y.current.getBoundingClientRect(), C(!a));
194
- }, Q = ()=>{
195
- a || T();
196
- }, U = (n)=>{
197
- n.keyCode === _keycodes.TAB && $();
198
- }, Z = (n)=>{
199
- if (!e) return {};
200
- const u = e.width > t.current.width && t.current.left + t.current.width / 2 < e.width / 2 + 16 ? t.current.width / 2 : "50%";
201
- return n === "bottom" || n === "top" ? {
202
- left: u
203
- } : {};
204
- }, B = _react.useCallback((n, u)=>{
205
- if ((0, _environment.isServerSide)() || !e) return {};
206
- const l = e.width > t.current.width && t.current.left + t.current.width / 2 < e.width / 2 + 16 ? Math.round(e.width / 2 - t.current.width / 2) : 0, A = f || (u ? window.pageXOffset + t.current.left + t.current.width / 2 - u / 2 : window.pageXOffset + t.current.left + l + t.current.width / 2 - e.width / 2), d = t.current.left < e.width ? A : u ? t.current.left - u - m : t.current.left - e.width - m, p = t.current.left < e.width ? t.current.top < e.height ? window.pageYOffset + t.current.bottom + m : window.pageYOffset + t.current.top - m : f || window.pageYOffset + t.current.top + t.current.height / 2;
207
- return ({
208
- right: {
209
- left: t.current.right + e.width > window.innerWidth ? d : t.current.right + m,
210
- top: t.current.right + e.width > window.innerWidth ? p : f || window.pageYOffset + t.current.top + t.current.height / 2
211
- },
212
- left: {
213
- left: d,
214
- top: p
215
- },
216
- top: {
217
- top: t.current.right + e.width > window.innerWidth ? p : window.pageYOffset + t.current.top - m,
218
- left: t.current.right + e.width > window.innerWidth ? d : A
219
- },
220
- bottom: {
221
- top: t.current.right + e.width > window.innerWidth ? p : window.pageYOffset + t.current.bottom + m,
222
- left: t.current.right + e.width > window.innerWidth ? d : A
246
+ const j = _react.useRef(!1);
247
+ _react.useEffect(()=>{
248
+ const r = (a)=>{
249
+ switch(a.key){
250
+ case _keys.ESC:
251
+ x();
252
+ break;
253
+ case _keys.TAB:
254
+ j.current = !0;
255
+ break;
223
256
  }
224
- })[n];
225
- }, [
226
- f,
227
- e
228
- ]), b = (()=>R.width)(), _ = {
229
- top: _tooltipcssmistica.arrowTop,
230
- bottom: _tooltipcssmistica.arrowBottom,
231
- left: _tooltipcssmistica.arrowLeft,
232
- right: _tooltipcssmistica.arrowRight
233
- }, tt = i && (0, _css.applyCssVars)({
234
- [_tooltipcssmistica.vars.enterTransform]: Nt(i),
235
- [_tooltipcssmistica.vars.exitTransform]: Lt(i),
236
- [_tooltipcssmistica.vars.enterActiveAnimationName]: Vt(i),
237
- [_tooltipcssmistica.vars.enterDoneTransform]: kt(i),
238
- [_tooltipcssmistica.vars.shadowAlpha]: jt(F),
239
- [_tooltipcssmistica.vars.arrowBoxShadow]: Kt(i)
240
- });
241
- return _react.useEffect(()=>{
242
- i && x.current && a && q(B(i, b || 0));
257
+ }, o = ()=>j.current = !1, t = (a)=>{
258
+ p && l && (a.clientX < l.left || a.clientX > l.right || a.clientY < l.top || a.clientY > l.bottom) && x();
259
+ };
260
+ return document.addEventListener("keydown", r, !1), document.addEventListener("keyup", o, !1), document.addEventListener("click", t, !1), ()=>{
261
+ document.removeEventListener("keydown", r, !1), document.removeEventListener("keyup", o, !1), document.removeEventListener("click", t, !1);
262
+ };
243
263
  }, [
244
- a,
245
- B,
246
- i,
247
- b
264
+ p,
265
+ x,
266
+ l
248
267
  ]), _react.useEffect(()=>{
249
- x.current && (x.current.getBoundingClientRect(), a && J(x.current.getBoundingClientRect()));
268
+ G || (tt || Q || et ? $(n) : S(n));
250
269
  }, [
251
- a
252
- ]), /* @__PURE__ */ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
270
+ tt,
271
+ Q,
272
+ et,
273
+ n,
274
+ $,
275
+ S,
276
+ G
277
+ ]);
278
+ const ut = ct(l, _, R, s.height, s.width);
279
+ return /* @__PURE__ */ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
253
280
  children: [
254
281
  /* @__PURE__ */ (0, _jsxruntime.jsx)("div", {
255
- ref: y,
256
- style: K,
257
- className: _tooltipcssmistica.wrapper,
258
- onPointerOver: ()=>{
259
- c.current && (clearTimeout(c.current), c.current = null), !h.current && (h.current = !0, V ? g.current = setTimeout(()=>{
260
- g.current = null, T();
261
- }, Mt) : T());
282
+ ref: (r)=>{
283
+ const o = r == null ? void 0 : r.firstElementChild;
284
+ o && o !== X.current && (X.current = o);
285
+ },
286
+ onMouseOver: ()=>{
287
+ p || P(!0);
288
+ },
289
+ onMouseLeave: ()=>{
290
+ p || P(!1);
262
291
  },
263
- onPointerLeave: O ? M : ()=>{
264
- if (g.current) {
265
- clearTimeout(g.current), g.current = null, h.current = !1;
266
- return;
267
- }
268
- c.current = setTimeout(()=>{
269
- h.current && (c.current = null, h.current = !1, T());
270
- }, 100);
292
+ onClick: ()=>{
293
+ p && P(!0);
271
294
  },
272
- onFocus: Q,
273
- onKeyDown: U,
274
- "touch-action": "auto",
275
- role: "button",
276
- tabIndex: 0,
277
- "aria-describedby": D,
278
- "aria-expanded": a,
279
- "aria-label": L,
280
- children: k
295
+ onFocus: ()=>{
296
+ j.current && K(!0);
297
+ },
298
+ onBlur: ()=>{
299
+ p || K(!1);
300
+ },
301
+ "aria-describedby": n,
302
+ children: w
281
303
  }),
282
- /* @__PURE__ */ (0, _jsxruntime.jsxs)(_portal.Portal, {
283
- children: [
284
- a && O && /* @__PURE__ */ (0, _jsxruntime.jsx)(_overlay.default, {
285
- onPress: $
286
- }),
287
- /* @__PURE__ */ (0, _jsxruntime.jsx)(_reacttransitiongroup.CSSTransition, {
288
- in: a,
289
- timeout: It,
290
- classNames: {
291
- enter: _tooltipcssmistica.enter,
292
- enterActive: _tooltipcssmistica.enterActive,
293
- enterDone: _tooltipcssmistica.enterDone,
294
- exit: _tooltipcssmistica.exit,
295
- exitActive: _tooltipcssmistica.exitActive
296
- },
297
- unmountOnExit: !0,
298
- children: /* @__PURE__ */ (0, _jsxruntime.jsxs)("div", _object_spread_props(_object_spread({
299
- ref: x
300
- }, (0, _dom.getPrefixedDataAttributes)(j, "Tooltip")), {
304
+ /* @__PURE__ */ (0, _jsxruntime.jsx)(_portal.Portal, {
305
+ children: /* @__PURE__ */ (0, _jsxruntime.jsx)(_reacttransitiongroup.Transition, {
306
+ in: v,
307
+ nodeRef: z,
308
+ timeout: (0, _platform.isRunningAcceptanceTest)() ? 0 : {
309
+ enter: Dt + H,
310
+ exit: Vt
311
+ },
312
+ mountOnEnter: !0,
313
+ unmountOnExit: !0,
314
+ children: (r)=>/* @__PURE__ */ (0, _jsxruntime.jsx)("div", _object_spread_props(_object_spread({
315
+ style: {
316
+ /**
317
+ * Hack to prevent text from wrapping automatically when touching the viewport's edges,
318
+ * even if the content's width didn't reach the max width.
319
+ * https://stackoverflow.com/questions/66106629/how-to-disable-text-wrapping-when-viewport-border-is-reached
320
+ */ width: `calc(100vw + ${lt}px)`,
321
+ top: 0,
322
+ left: 0,
323
+ position: "fixed",
324
+ visibility: d ? "visible" : "hidden"
325
+ }
326
+ }, (0, _dom.getPrefixedDataAttributes)(W, "Tooltip")), {
301
327
  role: "tooltip",
302
- id: D,
303
- className: (0, _classnames.default)(_tooltipcssmistica.container, _tooltipcssmistica.textAlign, z ? _tooltipcssmistica.textCenter : ""),
304
- style: _object_spread({
305
- width: b
306
- }, X, tt),
307
- onPointerOver: ()=>{
308
- c.current && (clearTimeout(c.current), c.current = null);
309
- },
310
- onPointerLeave: O ? M : ()=>{
311
- c.current = setTimeout(()=>{
312
- h.current && (c.current = null, h.current = !1, T());
313
- }, 100);
314
- },
315
- children: [
316
- /* @__PURE__ */ (0, _jsxruntime.jsx)("div", {
317
- style: Z(i),
318
- className: (0, _classnames.default)(_tooltipcssmistica.arrowWrapper, _[i]),
319
- children: /* @__PURE__ */ (0, _jsxruntime.jsx)("div", {
320
- className: _tooltipcssmistica.arrow
321
- })
328
+ "aria-label": n,
329
+ tabIndex: -1,
330
+ children: /* @__PURE__ */ (0, _jsxruntime.jsx)("div", {
331
+ className: (0, _classnames.default)(_tooltipcssmistica.container),
332
+ style: _object_spread_props(_object_spread({
333
+ pointerEvents: r === "entered" ? "auto" : "none",
334
+ transform: Bt(ut)
335
+ }, d, _tooltipcssmistica.tooltipTransitionClasses[r]), {
336
+ transition: r === "entering" ? `opacity .1s linear ${H}ms,transform .3s cubic-bezier(0.215,0.61,0.335,1) ${H}ms` : "opacity .1s linear"
322
337
  }),
323
- (Y || S) && /* @__PURE__ */ (0, _jsxruntime.jsxs)(_stack.default, {
324
- space: 4,
338
+ ref: (0, _common.combineRefs)(pt, z),
339
+ onMouseEnter: ()=>{
340
+ !p && r === "entered" && Y(!0);
341
+ },
342
+ onMouseLeave: ()=>{
343
+ p || Y(!1);
344
+ },
345
+ children: /* @__PURE__ */ (0, _jsxruntime.jsxs)("div", {
346
+ className: _tooltipcssmistica.tooltip,
347
+ style: _object_spread({
348
+ width: D
349
+ }, at(U)),
325
350
  children: [
326
- Y && /* @__PURE__ */ (0, _jsxruntime.jsx)(_text.Text2, {
327
- medium: !0,
328
- children: Y
351
+ /* @__PURE__ */ (0, _jsxruntime.jsx)("div", {
352
+ className: (0, _classnames.default)(_tooltipcssmistica.content, I || M ? _tooltipcssmistica.tooltipCenter : void 0),
353
+ style: {
354
+ maxWidth: Math.min(lt, s.width)
355
+ },
356
+ children: /* @__PURE__ */ (0, _jsxruntime.jsxs)(_themevariantcontext.ThemeVariant, {
357
+ isInverse: !1,
358
+ children: [
359
+ (h || m) && /* @__PURE__ */ (0, _jsxruntime.jsxs)(_stack.default, {
360
+ space: 4,
361
+ children: [
362
+ h && /* @__PURE__ */ (0, _jsxruntime.jsx)(_text.Text2, {
363
+ medium: !0,
364
+ children: h
365
+ }),
366
+ m && /* @__PURE__ */ (0, _jsxruntime.jsx)(_text.Text2, {
367
+ regular: !0,
368
+ children: m
369
+ })
370
+ ]
371
+ }),
372
+ O || e
373
+ ]
374
+ })
329
375
  }),
330
- S && /* @__PURE__ */ (0, _jsxruntime.jsx)(_text.Text2, {
331
- regular: !0,
332
- children: S
376
+ /* @__PURE__ */ (0, _jsxruntime.jsx)("div", {
377
+ className: _tooltipcssmistica.arrowContainer,
378
+ style: T,
379
+ children: /* @__PURE__ */ (0, _jsxruntime.jsx)("div", {
380
+ className: (0, _classnames.default)(_tooltipcssmistica.arrow),
381
+ style: at(U)
382
+ })
333
383
  })
334
384
  ]
335
- }),
336
- N || r
337
- ]
385
+ })
386
+ })
338
387
  }))
339
- })
340
- ]
388
+ })
341
389
  })
342
390
  ]
343
391
  });
344
- }, ae = zt;
392
+ }, se = Xt;
@@ -21,4 +21,4 @@ _export(exports, {
21
21
  });
22
22
  require("./sprinkles.css.ts.vanilla.css-mistica.js");
23
23
  require("./touchable.css.ts.vanilla.css-mistica.js");
24
- var f = "mhti6u1 _1y2v1nfe9", y = "mhti6u4", _ = "mhti6u1 _1y2v1nfe9 _1y2v1nf63 _1y2v1nf7c _1y2v1nf8l _1y2v1nf9u _1y2v1nfbc _1y2v1nfds _1y2v1nfbx _1y2v1nf30 _1y2v1nf62 _1y2v1nfeb";
24
+ var f = "mhti6u1 _1y2v1nfea", y = "mhti6u4", _ = "mhti6u1 _1y2v1nfea _1y2v1nf63 _1y2v1nf7c _1y2v1nf8l _1y2v1nf9u _1y2v1nfbc _1y2v1nfds _1y2v1nfbx _1y2v1nf30 _1y2v1nf62 _1y2v1nfec";
package/dist/touchable.js CHANGED
@@ -24,7 +24,7 @@ const _screenreaderonly = /*#__PURE__*/ _interop_require_default(require("./scre
24
24
  const _touchablecssmistica = require("./touchable.css-mistica.js");
25
25
  const _hooks = require("./hooks.js");
26
26
  const _platform = require("./utils/platform.js");
27
- const _keycodes = require("./utils/key-codes.js");
27
+ const _keys = require("./utils/keys.js");
28
28
  const _dom = require("./utils/dom.js");
29
29
  function _interop_require_default(obj) {
30
30
  return obj && obj.__esModule ? obj : {
@@ -128,7 +128,7 @@ const L = function(e) {
128
128
  let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1, d = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1;
129
129
  t ? window.open(e, "_blank") : d ? window.open(e, "_top") : document.location.href = e;
130
130
  }, T = /*#__PURE__*/ _react.forwardRef((e, t)=>{
131
- const { texts: d, analytics: v, platformOverrides: N, Link: P, useHrefDecorator: E } = (0, _hooks.useTheme)(), C = E(), f = _react.useRef(!1);
131
+ const { texts: d, analytics: v, platformOverrides: N, Link: P, useHrefDecorator: E } = (0, _hooks.useTheme)(), x = E(), f = _react.useRef(!1);
132
132
  let l = [];
133
133
  e.trackingEvent && (Array.isArray(e.trackingEvent) ? l = e.trackingEvent : l = [
134
134
  e.trackingEvent
@@ -153,28 +153,28 @@ const L = function(e) {
153
153
  e.onPress && e.onPress(a);
154
154
  }, k = ()=>{
155
155
  var _e_to_pathname;
156
- return e.href ? C(e.href) : e.to && e.fullPageOnWebView ? typeof e.to == "string" ? e.to : (_e_to_pathname = e.to.pathname) !== null && _e_to_pathname !== void 0 ? _e_to_pathname : "" : "";
156
+ return e.href ? x(e.href) : e.to && e.fullPageOnWebView ? typeof e.to == "string" ? e.to : (_e_to_pathname = e.to.pathname) !== null && _e_to_pathname !== void 0 ? _e_to_pathname : "" : "";
157
157
  }, y = ()=>Promise.all(l.map((a)=>v.logEvent(a))), g = (a)=>{
158
158
  f.current || (f.current = !0, y().finally(()=>{
159
159
  f.current = !1, a();
160
160
  }));
161
- }, x = (a)=>{
161
+ }, R = (a)=>{
162
162
  if (s(a), !l.length) {
163
163
  h(a);
164
164
  return;
165
165
  }
166
166
  g(()=>h(a));
167
- }, R = (a)=>{
167
+ }, C = (a)=>{
168
168
  s(a), l.length && (a.preventDefault(), g(()=>L(k(), r, m)));
169
169
  }, D = (a)=>{
170
170
  s(a), y();
171
171
  }, w = (a)=>{
172
- (a.keyCode === _keycodes.ENTER || a.keyCode === _keycodes.SPACE) && (a.preventDefault(), a.currentTarget.click());
172
+ (a.key === _keys.ENTER || a.key === _keys.SPACE) && (a.preventDefault(), a.currentTarget.click());
173
173
  };
174
174
  if (e.href || e.to && e.fullPageOnWebView && (0, _platform.isInsideNovumNativeApp)(N)) return /* @__PURE__ */ (0, _jsxruntime.jsxs)("a", _object_spread_props(_object_spread({}, n), {
175
175
  "aria-label": e["aria-label"],
176
176
  "aria-labelledby": e["aria-labelledby"],
177
- onClick: R,
177
+ onClick: C,
178
178
  onKeyDown: w,
179
179
  href: e.disabled ? void 0 : k(),
180
180
  target: (()=>{
@@ -216,7 +216,7 @@ const L = function(e) {
216
216
  "aria-labelledby": e["aria-labelledby"],
217
217
  type: u,
218
218
  ref: t,
219
- onClick: x,
219
+ onClick: R,
220
220
  children: o
221
221
  }));
222
222
  }
@@ -24,6 +24,6 @@ _export(exports, {
24
24
  });
25
25
  require("../sprinkles.css.ts.vanilla.css-mistica.js");
26
26
  require("./aspect-ratio-support.css.ts.vanilla.css-mistica.js");
27
- var a = "yqswj62", n = "_1y2v1nfbx _1y2v1nfce _1y2v1nfeg _1y2v1nfev", e = {
27
+ var a = "yqswj62", n = "_1y2v1nfbx _1y2v1nfce _1y2v1nfeh _1y2v1nfew", e = {
28
28
  aspectRatio: "var(--yqswj60)"
29
- }, y = "_1y2v1nfea _1y2v1nfdp _1y2v1nfdq _1y2v1nfb4";
29
+ }, y = "_1y2v1nfeb _1y2v1nfdp _1y2v1nfdq _1y2v1nfb4";
@@ -1,2 +1,3 @@
1
1
  export declare const isServerSide: () => boolean;
2
2
  export declare const isClientSide: () => boolean;
3
+ export declare const isTouchableDevice: () => boolean;
@@ -14,6 +14,9 @@ _export(exports, {
14
14
  },
15
15
  isServerSide: function() {
16
16
  return e;
17
+ },
18
+ isTouchableDevice: function() {
19
+ return o;
17
20
  }
18
21
  });
19
- const e = ()=>typeof window > "u", i = ()=>!e();
22
+ const e = ()=>typeof window > "u", i = ()=>!e(), o = ()=>i() ? window.matchMedia("(pointer: coarse)").matches : !1;
@@ -0,0 +1,8 @@
1
+ export declare const LEFT = "ArrowLeft";
2
+ export declare const UP = "ArrowUp";
3
+ export declare const RIGHT = "ArrowRight";
4
+ export declare const DOWN = "ArrowDown";
5
+ export declare const ENTER = "Enter";
6
+ export declare const ESC = "Escape";
7
+ export declare const SPACE = " ";
8
+ export declare const TAB = "Tab";