@tamagui/web 1.103.0 → 1.103.1

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 (50) hide show
  1. package/dist/cjs/createComponent.js +4 -2
  2. package/dist/cjs/createComponent.js.map +1 -1
  3. package/dist/cjs/createComponent.native.js +4 -2
  4. package/dist/cjs/createComponent.native.js.map +2 -2
  5. package/dist/cjs/helpers/getSplitStyles.js +1 -0
  6. package/dist/cjs/helpers/getSplitStyles.js.map +1 -1
  7. package/dist/cjs/helpers/getSplitStyles.native.js +1 -0
  8. package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
  9. package/dist/cjs/helpers/getStylesAtomic.js +4 -1
  10. package/dist/cjs/helpers/getStylesAtomic.js.map +1 -1
  11. package/dist/cjs/views/TamaguiProvider.js +25 -20
  12. package/dist/cjs/views/TamaguiProvider.js.map +1 -1
  13. package/dist/cjs/views/TamaguiProvider.native.js +65 -73
  14. package/dist/cjs/views/TamaguiProvider.native.js.map +2 -2
  15. package/dist/cjs/views/Text.js +2 -1
  16. package/dist/cjs/views/Text.js.map +1 -1
  17. package/dist/esm/createComponent.js +5 -3
  18. package/dist/esm/createComponent.js.map +1 -1
  19. package/dist/esm/createComponent.mjs +5 -3
  20. package/dist/esm/createComponent.native.js +5 -3
  21. package/dist/esm/createComponent.native.js.map +2 -2
  22. package/dist/esm/helpers/getSplitStyles.js +1 -0
  23. package/dist/esm/helpers/getSplitStyles.js.map +1 -1
  24. package/dist/esm/helpers/getSplitStyles.mjs +1 -0
  25. package/dist/esm/helpers/getSplitStyles.native.js +1 -0
  26. package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
  27. package/dist/esm/helpers/getStylesAtomic.js +4 -1
  28. package/dist/esm/helpers/getStylesAtomic.js.map +1 -1
  29. package/dist/esm/helpers/getStylesAtomic.mjs +5 -3
  30. package/dist/esm/views/TamaguiProvider.js +25 -12
  31. package/dist/esm/views/TamaguiProvider.js.map +1 -1
  32. package/dist/esm/views/TamaguiProvider.mjs +29 -11
  33. package/dist/esm/views/TamaguiProvider.native.js +65 -65
  34. package/dist/esm/views/TamaguiProvider.native.js.map +2 -2
  35. package/dist/esm/views/Text.js +2 -1
  36. package/dist/esm/views/Text.js.map +1 -1
  37. package/dist/esm/views/Text.mjs +2 -1
  38. package/package.json +11 -11
  39. package/src/createComponent.tsx +14 -1
  40. package/src/helpers/getSplitStyles.tsx +1 -0
  41. package/src/helpers/getStylesAtomic.ts +15 -5
  42. package/src/types.tsx +1 -0
  43. package/src/views/TamaguiProvider.tsx +41 -28
  44. package/src/views/Text.tsx +1 -1
  45. package/types/createComponent.d.ts.map +1 -1
  46. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  47. package/types/types.d.ts +1 -0
  48. package/types/types.d.ts.map +1 -1
  49. package/types/views/TamaguiProvider.d.ts +1 -1
  50. package/types/views/TamaguiProvider.d.ts.map +1 -1
@@ -1,33 +1,51 @@
1
- import { isClient } from "@tamagui/constants";
2
- import * as React from "react";
1
+ import { isClient, isWeb, useIsomorphicLayoutEffect } from "@tamagui/constants";
2
+ import { useState, useMemo, useEffect } from "react";
3
3
  import { ComponentContext } from "../contexts/ComponentContext.mjs";
4
+ import { useDidHydrateOnceRoot } from "../hooks/useDidHydrateOnce.mjs";
4
5
  import { setupMediaListeners } from "../hooks/useMedia.mjs";
5
6
  import { ThemeProvider } from "./ThemeProvider.mjs";
6
- import { useDidHydrateOnceRoot } from "../hooks/useDidHydrateOnce.mjs";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  function TamaguiProvider({
9
9
  children,
10
10
  disableInjectCSS,
11
11
  config,
12
- ...themePropsProvider
12
+ className,
13
+ defaultTheme,
14
+ disableRootThemeClass,
15
+ reset,
16
+ themeClassNameOnRoot
13
17
  }) {
14
- return setupMediaListeners(), isClient && (useDidHydrateOnceRoot(), React.useInsertionEffect(() => {
15
- if (config && (config.disableSSR || document.documentElement.classList.contains("t_unmounted") && document.documentElement.classList.remove("t_unmounted"), !disableInjectCSS)) {
18
+ setupMediaListeners(), isClient && (useDidHydrateOnceRoot(), useIsomorphicLayoutEffect(() => {
19
+ if (config && !disableInjectCSS) {
16
20
  const style = document.createElement("style");
17
21
  return style.appendChild(document.createTextNode(config.getCSS())), document.head.appendChild(style), () => {
18
22
  document.head.removeChild(style);
19
23
  };
20
24
  }
21
- }, [config, disableInjectCSS])), /* @__PURE__ */jsx(ComponentContext.Provider, {
25
+ }, [config, disableInjectCSS]));
26
+ const contents = useMemo(() => /* @__PURE__ */jsx(ComponentContext.Provider, {
22
27
  animationDriver: config?.animations,
23
28
  children: /* @__PURE__ */jsx(ThemeProvider, {
24
- themeClassNameOnRoot: config?.themeClassNameOnRoot,
25
- disableRootThemeClass: config?.disableRootThemeClass,
26
- ...themePropsProvider,
27
- defaultTheme: themePropsProvider.defaultTheme ?? (config ? Object.keys(config.themes)[0] : ""),
29
+ themeClassNameOnRoot: themeClassNameOnRoot ?? config?.themeClassNameOnRoot,
30
+ disableRootThemeClass: disableRootThemeClass ?? config?.disableRootThemeClass,
31
+ defaultTheme: defaultTheme ?? (config ? Object.keys(config.themes)[0] : ""),
32
+ reset,
33
+ className,
28
34
  children
29
35
  })
36
+ }), []);
37
+ return /* @__PURE__ */jsx(UnmountedClassName, {
38
+ children: contents
30
39
  });
31
40
  }
41
+ function UnmountedClassName(props) {
42
+ const [mounted, setMounted] = useState(!1);
43
+ return useEffect(() => {
44
+ setMounted(!0);
45
+ }, []), isWeb ? /* @__PURE__ */jsx("span", {
46
+ className: mounted ? "" : "t_unmounted",
47
+ children: props.children
48
+ }) : props.children;
49
+ }
32
50
  TamaguiProvider.displayName = "TamaguiProvider";
33
51
  export { TamaguiProvider };
@@ -1,69 +1,55 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { isClient } from "@tamagui/constants";
3
- import * as React from "react";
2
+ import { isClient, isWeb, useIsomorphicLayoutEffect } from "@tamagui/constants";
3
+ import { useState, useMemo, useEffect } from "react";
4
4
  import { ComponentContext } from "../contexts/ComponentContext";
5
+ import { useDidHydrateOnceRoot } from "../hooks/useDidHydrateOnce";
5
6
  import { setupMediaListeners } from "../hooks/useMedia";
6
7
  import { ThemeProvider } from "./ThemeProvider";
7
- import { useDidHydrateOnceRoot } from "../hooks/useDidHydrateOnce";
8
- function _define_property(obj, key, value) {
9
- return key in obj ? Object.defineProperty(obj, key, {
10
- value,
11
- enumerable: !0,
12
- configurable: !0,
13
- writable: !0
14
- }) : obj[key] = value, obj;
8
+ function _array_like_to_array(arr, len) {
9
+ (len == null || len > arr.length) && (len = arr.length);
10
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
11
+ return arr2;
15
12
  }
16
- function _object_spread(target) {
17
- for (var i = 1; i < arguments.length; i++) {
18
- var source = arguments[i] != null ? arguments[i] : {}, ownKeys2 = Object.keys(source);
19
- typeof Object.getOwnPropertySymbols == "function" && (ownKeys2 = ownKeys2.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
20
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
21
- }))), ownKeys2.forEach(function(key) {
22
- _define_property(target, key, source[key]);
23
- });
24
- }
25
- return target;
13
+ function _array_with_holes(arr) {
14
+ if (Array.isArray(arr)) return arr;
26
15
  }
27
- function ownKeys(object, enumerableOnly) {
28
- var keys = Object.keys(object);
29
- if (Object.getOwnPropertySymbols) {
30
- var symbols = Object.getOwnPropertySymbols(object);
31
- enumerableOnly && (symbols = symbols.filter(function(sym) {
32
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
33
- })), keys.push.apply(keys, symbols);
16
+ function _iterable_to_array_limit(arr, i) {
17
+ var _i = arr == null ? null : typeof Symbol < "u" && arr[Symbol.iterator] || arr["@@iterator"];
18
+ if (_i != null) {
19
+ var _arr = [], _n = !0, _d = !1, _s, _e;
20
+ try {
21
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done) && (_arr.push(_s.value), !(i && _arr.length === i)); _n = !0)
22
+ ;
23
+ } catch (err) {
24
+ _d = !0, _e = err;
25
+ } finally {
26
+ try {
27
+ !_n && _i.return != null && _i.return();
28
+ } finally {
29
+ if (_d) throw _e;
30
+ }
31
+ }
32
+ return _arr;
34
33
  }
35
- return keys;
36
34
  }
37
- function _object_spread_props(target, source) {
38
- return source = source ?? {}, Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {
39
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
40
- }), target;
35
+ function _non_iterable_rest() {
36
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
41
37
  }
42
- function _object_without_properties(source, excluded) {
43
- if (source == null) return {};
44
- var target = _object_without_properties_loose(source, excluded), key, i;
45
- if (Object.getOwnPropertySymbols) {
46
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
47
- for (i = 0; i < sourceSymbolKeys.length; i++)
48
- key = sourceSymbolKeys[i], !(excluded.indexOf(key) >= 0) && Object.prototype.propertyIsEnumerable.call(source, key) && (target[key] = source[key]);
49
- }
50
- return target;
38
+ function _sliced_to_array(arr, i) {
39
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
51
40
  }
52
- function _object_without_properties_loose(source, excluded) {
53
- if (source == null) return {};
54
- var target = {}, sourceKeys = Object.keys(source), key, i;
55
- for (i = 0; i < sourceKeys.length; i++)
56
- key = sourceKeys[i], !(excluded.indexOf(key) >= 0) && (target[key] = source[key]);
57
- return target;
41
+ function _unsupported_iterable_to_array(o, minLen) {
42
+ if (o) {
43
+ if (typeof o == "string") return _array_like_to_array(o, minLen);
44
+ var n = Object.prototype.toString.call(o).slice(8, -1);
45
+ if (n === "Object" && o.constructor && (n = o.constructor.name), n === "Map" || n === "Set") return Array.from(n);
46
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
47
+ }
58
48
  }
59
- function TamaguiProvider(_param) {
60
- var children = _param.children, disableInjectCSS = _param.disableInjectCSS, config = _param.config, themePropsProvider = _object_without_properties(_param, [
61
- "children",
62
- "disableInjectCSS",
63
- "config"
64
- ]);
65
- setupMediaListeners(), isClient && (useDidHydrateOnceRoot(), React.useInsertionEffect(function() {
66
- if (config && (config.disableSSR || document.documentElement.classList.contains("t_unmounted") && document.documentElement.classList.remove("t_unmounted"), !disableInjectCSS)) {
49
+ function TamaguiProvider(param) {
50
+ var children = param.children, disableInjectCSS = param.disableInjectCSS, config = param.config, className = param.className, defaultTheme = param.defaultTheme, disableRootThemeClass = param.disableRootThemeClass, reset = param.reset, themeClassNameOnRoot = param.themeClassNameOnRoot;
51
+ setupMediaListeners(), isClient && (useDidHydrateOnceRoot(), useIsomorphicLayoutEffect(function() {
52
+ if (config && !disableInjectCSS) {
67
53
  var style = document.createElement("style");
68
54
  return style.appendChild(document.createTextNode(config.getCSS())), document.head.appendChild(style), function() {
69
55
  document.head.removeChild(style);
@@ -73,18 +59,32 @@ function TamaguiProvider(_param) {
73
59
  config,
74
60
  disableInjectCSS
75
61
  ]));
76
- var _themePropsProvider_defaultTheme;
77
- return /* @__PURE__ */ _jsx(ComponentContext.Provider, {
78
- animationDriver: config == null ? void 0 : config.animations,
79
- children: /* @__PURE__ */ _jsx(ThemeProvider, _object_spread_props(_object_spread({
80
- themeClassNameOnRoot: config == null ? void 0 : config.themeClassNameOnRoot,
81
- disableRootThemeClass: config == null ? void 0 : config.disableRootThemeClass
82
- }, themePropsProvider), {
83
- defaultTheme: (_themePropsProvider_defaultTheme = themePropsProvider.defaultTheme) !== null && _themePropsProvider_defaultTheme !== void 0 ? _themePropsProvider_defaultTheme : config ? Object.keys(config.themes)[0] : "",
84
- children
85
- }))
62
+ var contents = useMemo(function() {
63
+ return /* @__PURE__ */ _jsx(ComponentContext.Provider, {
64
+ animationDriver: config == null ? void 0 : config.animations,
65
+ children: /* @__PURE__ */ _jsx(ThemeProvider, {
66
+ themeClassNameOnRoot: themeClassNameOnRoot ?? (config == null ? void 0 : config.themeClassNameOnRoot),
67
+ disableRootThemeClass: disableRootThemeClass ?? (config == null ? void 0 : config.disableRootThemeClass),
68
+ defaultTheme: defaultTheme ?? (config ? Object.keys(config.themes)[0] : ""),
69
+ reset,
70
+ className,
71
+ children
72
+ })
73
+ });
74
+ }, []);
75
+ return /* @__PURE__ */ _jsx(UnmountedClassName, {
76
+ children: contents
86
77
  });
87
78
  }
79
+ function UnmountedClassName(props) {
80
+ var _useState = _sliced_to_array(useState(!1), 2), mounted = _useState[0], setMounted = _useState[1];
81
+ return useEffect(function() {
82
+ setMounted(!0);
83
+ }, []), isWeb ? /* @__PURE__ */ _jsx("span", {
84
+ className: mounted ? "" : "t_unmounted",
85
+ children: props.children
86
+ }) : props.children;
87
+ }
88
88
  TamaguiProvider.displayName = "TamaguiProvider";
89
89
  export {
90
90
  TamaguiProvider
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/Users/n8/tamagui/code/core/web/src/views/TamaguiProvider.tsx"],
4
- "mappings": ";AAAA,SAASA,gBAAgB;AACzB,YAAYC,WAAW;AAEvB,SAASC,wBAAwB;AACjC,SAASC,2BAA2B;AAEpC,SAASC,qBAAqB;AAC9B,SAASC,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE/B,SAASC,gBAAgB,QAAA;MAC9BC,WAD8B,OAC9BA,UACAC,mBAF8B,OAE9BA,kBACAC,SAH8B,OAG9BA,QACGC,qBAAAA,2BAJ2B,QAAA;IAC9BH;IACAC;IACAC;;AAGAN,sBAAAA,GAEIH,aAEFK,sBAAAA,GAEAJ,MAAMU,mBAAmB,WAAA;AACvB,QAAKF,WACAA,OAAOG,cAGNC,SAASC,gBAAgBC,UAAUC,SAAS,aAAA,KAC9CH,SAASC,gBAAgBC,UAAUE,OAAO,aAAA,GAI1C,CAACT,mBAAkB;AACrB,UAAMU,QAAQL,SAASM,cAAc,OAAA;AACrCD,mBAAME,YAAYP,SAASQ,eAAeZ,OAAOa,OAAM,CAAA,CAAA,GACvDT,SAASU,KAAKH,YAAYF,KAAAA,GACnB,WAAA;AACLL,iBAASU,KAAKC,YAAYN,KAAAA;MAC5B;IACF;EACF,GAAG;IAACT;IAAQD;GAAiB;MAUvBE;AAPR,SACE,qBAACR,iBAAiBuB,UAAQ;IAACC,iBAAiBjB,UAAAA,OAAAA,SAAAA,OAAQkB;cAClD,qBAACvB,eAAAA,qBAAAA,eAAAA;MACCwB,sBAAsBnB,UAAAA,OAAAA,SAAAA,OAAQmB;MAC9BC,uBAAuBpB,UAAAA,OAAAA,SAAAA,OAAQoB;OAC3BnB,kBAAAA,GAAAA;MACJoB,eACEpB,mCAAAA,mBAAmBoB,kBAAY,QAA/BpB,qCAAAA,SAAAA,mCAAoCD,SAASsB,OAAOC,KAAKvB,OAAOwB,MAAM,EAAE,CAAA,IAAK;;;;AAOvF;AAEA3B,gBAAgB,cAAiB;",
5
- "names": ["isClient", "React", "ComponentContext", "setupMediaListeners", "ThemeProvider", "useDidHydrateOnceRoot", "TamaguiProvider", "children", "disableInjectCSS", "config", "themePropsProvider", "useInsertionEffect", "disableSSR", "document", "documentElement", "classList", "contains", "remove", "style", "createElement", "appendChild", "createTextNode", "getCSS", "head", "removeChild", "Provider", "animationDriver", "animations", "themeClassNameOnRoot", "disableRootThemeClass", "defaultTheme", "Object", "keys", "themes"]
4
+ "mappings": ";AAAA,SAASA,UAAUC,OAAOC,iCAAiC;AAC3D,SAASC,UAAUC,SAASC,iBAAiB;AAC7C,SAASC,wBAAwB;AACjC,SAASC,6BAA6B;AACtC,SAASC,2BAA2B;AAEpC,SAASC,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEvB,SAASC,gBAAgB,OAST;MARrBC,WAD8B,MAC9BA,UACAC,mBAF8B,MAE9BA,kBACAC,SAH8B,MAG9BA,QACAC,YAJ8B,MAI9BA,WACAC,eAL8B,MAK9BA,cACAC,wBAN8B,MAM9BA,uBACAC,QAP8B,MAO9BA,OACAC,uBAR8B,MAQ9BA;AAEAV,sBAAAA,GAEIR,aAEFO,sBAAAA,GAEAL,0BAA0B,WAAA;AACxB,QAAKW,UACD,CAACD,kBAAkB;AACrB,UAAMO,QAAQC,SAASC,cAAc,OAAA;AACrCF,mBAAMG,YAAYF,SAASG,eAAeV,OAAOW,OAAM,CAAA,CAAA,GACvDJ,SAASK,KAAKH,YAAYH,KAAAA,GACnB,WAAA;AACLC,iBAASK,KAAKC,YAAYP,KAAAA;MAC5B;IACF;EACF,GAAG;IAACN;IAAQD;GAAiB;AAG/B,MAAMe,WAAWvB,QAAQ,WAAA;AACvB,WACE,qBAACE,iBAAiBsB,UAAQ;MAACC,iBAAiBhB,UAAAA,OAAAA,SAAAA,OAAQiB;gBAClD,qBAACrB,eAAAA;QACCS,sBAAsBA,yBAAwBL,UAAAA,OAAAA,SAAAA,OAAQK;QACtDF,uBAAuBA,0BAAyBH,UAAAA,OAAAA,SAAAA,OAAQG;QACxDD,cAAcA,iBAAiBF,SAASkB,OAAOC,KAAKnB,OAAOoB,MAAM,EAAE,CAAA,IAAK;QACxEhB;QACAH;;;;EAMR,GAAG,CAAA,CAAE;AAEL,SAAO,qBAACoB,oBAAAA;cAAoBP;;AAC9B;AAGA,SAASO,mBAAmBC,OAAoC;AAC9D,MAA8BhC,YAAAA,iBAAAA,SAAS,EAAA,GAAA,CAAA,GAAhCiC,UAAuBjC,UAAAA,CAAAA,GAAdkC,aAAclC,UAAAA,CAAAA;AAM9B,SAJAE,UAAU,WAAA;AACRgC,eAAW,EAAA;EACb,GAAG,CAAA,CAAE,GAEApC,QAIE,qBAACqC,QAAAA;IAAKxB,WAAWsB,UAAU,KAAK;cAAgBD,MAAMxB;OAHpDwB,MAAMxB;AAIjB;AAEAD,gBAAgB,cAAiB;",
5
+ "names": ["isClient", "isWeb", "useIsomorphicLayoutEffect", "useState", "useMemo", "useEffect", "ComponentContext", "useDidHydrateOnceRoot", "setupMediaListeners", "ThemeProvider", "TamaguiProvider", "children", "disableInjectCSS", "config", "className", "defaultTheme", "disableRootThemeClass", "reset", "themeClassNameOnRoot", "style", "document", "createElement", "appendChild", "createTextNode", "getCSS", "head", "removeChild", "contents", "Provider", "animationDriver", "animations", "Object", "keys", "themes", "UnmountedClassName", "props", "mounted", "setMounted", "span"]
6
6
  }
@@ -6,7 +6,8 @@ const ellipseStyle = {
6
6
  textOverflow: "ellipsis",
7
7
  whiteSpace: "nowrap"
8
8
  }, defaultWebStyle = {
9
- display: "inline",
9
+ display: "inline-block",
10
+ // display: inline breaks css transform styles
10
11
  boxSizing: "border-box",
11
12
  wordWrap: "break-word",
12
13
  whiteSpace: "pre-wrap",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/Text.tsx"],
4
- "mappings": "AAAA,SAAS,oBAAoB,mBAAmB;AAEhD,SAAS,uBAAuB;AAQhC,MAAM,eAAe;AAAA,EACnB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AACd,GAIM,kBAAkB;AAAA,EACtB,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,QAAQ;AACV,GAEM,gBAEA,cAMO,OAAO,gBAKlB;AAAA,EACA,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EAER,cAAc;AAAA,IACZ,YAAY;AAAA,IACZ,GACI;AAAA,EAIN;AAAA,EAEA,uBAAuB,oBAAI,IAAI,CAAC,YAAY,CAAC;AAAA,EAE7C,UAAU;AAAA,IAEN,eAAe;AAAA,MACb,GAAG;AAAA,MAEH,WAAW,CAAC,kBACV,iBAAiB,IACb;AAAA,QACE,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,QACjB,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,IACA;AAAA,IACR;AAAA,IAIA,YAAY;AAAA,MACV,MAAM;AAAA,QACJ,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV;AAAA,MACA,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAMF,SAAS;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,aAAa;AAAA,IACX,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF,CAAC;AAED,KAAK,cAAiB;",
4
+ "mappings": "AAAA,SAAS,oBAAoB,mBAAmB;AAEhD,SAAS,uBAAuB;AAQhC,MAAM,eAAe;AAAA,EACnB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AACd,GAIM,kBAAkB;AAAA,EACtB,SAAS;AAAA;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,QAAQ;AACV,GAEM,gBAEA,cAMO,OAAO,gBAKlB;AAAA,EACA,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EAER,cAAc;AAAA,IACZ,YAAY;AAAA,IACZ,GACI;AAAA,EAIN;AAAA,EAEA,uBAAuB,oBAAI,IAAI,CAAC,YAAY,CAAC;AAAA,EAE7C,UAAU;AAAA,IAEN,eAAe;AAAA,MACb,GAAG;AAAA,MAEH,WAAW,CAAC,kBACV,iBAAiB,IACb;AAAA,QACE,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,QACjB,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,IACA;AAAA,IACR;AAAA,IAIA,YAAY;AAAA,MACV,MAAM;AAAA,QACJ,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV;AAAA,MACA,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAMF,SAAS;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,aAAa;AAAA,IACX,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF,CAAC;AAED,KAAK,cAAiB;",
5
5
  "names": []
6
6
  }
@@ -7,7 +7,8 @@ const ellipseStyle = {
7
7
  whiteSpace: "nowrap"
8
8
  },
9
9
  defaultWebStyle = {
10
- display: "inline",
10
+ display: "inline-block",
11
+ // display: inline breaks css transform styles
11
12
  boxSizing: "border-box",
12
13
  wordWrap: "break-word",
13
14
  whiteSpace: "pre-wrap",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/web",
3
- "version": "1.103.0",
3
+ "version": "1.103.1",
4
4
  "source": "src/index.ts",
5
5
  "main": "dist/cjs",
6
6
  "module": "dist/esm",
@@ -27,18 +27,18 @@
27
27
  "reset.css"
28
28
  ],
29
29
  "dependencies": {
30
- "@tamagui/compose-refs": "1.103.0",
31
- "@tamagui/constants": "1.103.0",
32
- "@tamagui/helpers": "1.103.0",
33
- "@tamagui/normalize-css-color": "1.103.0",
34
- "@tamagui/timer": "1.103.0",
35
- "@tamagui/types": "1.103.0",
36
- "@tamagui/use-did-finish-ssr": "1.103.0",
37
- "@tamagui/use-event": "1.103.0",
38
- "@tamagui/use-force-update": "1.103.0"
30
+ "@tamagui/compose-refs": "1.103.1",
31
+ "@tamagui/constants": "1.103.1",
32
+ "@tamagui/helpers": "1.103.1",
33
+ "@tamagui/normalize-css-color": "1.103.1",
34
+ "@tamagui/timer": "1.103.1",
35
+ "@tamagui/types": "1.103.1",
36
+ "@tamagui/use-did-finish-ssr": "1.103.1",
37
+ "@tamagui/use-event": "1.103.1",
38
+ "@tamagui/use-force-update": "1.103.1"
39
39
  },
40
40
  "devDependencies": {
41
- "@tamagui/build": "1.103.0",
41
+ "@tamagui/build": "1.103.1",
42
42
  "@testing-library/react": "^14.0.0",
43
43
  "csstype": "^3.0.10",
44
44
  "typescript": "^5.5.2",
@@ -1,5 +1,5 @@
1
1
  import { composeRefs } from '@tamagui/compose-refs'
2
- import { isClient, isServer, isWeb } from '@tamagui/constants'
2
+ import { isClient, isServer, isWeb, useIsomorphicLayoutEffect } from '@tamagui/constants'
3
3
  import {
4
4
  StyleObjectIdentifier,
5
5
  StyleObjectRules,
@@ -887,6 +887,9 @@ export function createComponent<
887
887
  if ((isAnimated || supportsCSSVars) && animations) {
888
888
  animationStyles = animations.style
889
889
  viewProps.style = animationStyles
890
+ if (animations.className) {
891
+ viewProps.className = `${viewProps.className || ''} ${animations.className}`
892
+ }
890
893
  }
891
894
 
892
895
  if (process.env.NODE_ENV === 'development' && time) time`animations`
@@ -961,6 +964,16 @@ export function createComponent<
961
964
 
962
965
  const unPress = () => setStateShallow({ press: false, pressIn: false })
963
966
 
967
+ if (process.env.NODE_ENV === 'development') {
968
+ useIsomorphicLayoutEffect(() => {
969
+ if (debugProp) {
970
+ console.groupCollapsed(`Rendered style >`)
971
+ console.warn(getComputedStyle(stateRef.current.host! as any))
972
+ console.groupEnd()
973
+ }
974
+ })
975
+ }
976
+
964
977
  useEffect(() => {
965
978
  if (disabled) {
966
979
  return
@@ -224,6 +224,7 @@ export const getSplitStyles: StyleSplitter = (
224
224
  staticConfig,
225
225
  shouldDoClasses,
226
226
  styleProps,
227
+ rulesToInsert,
227
228
  componentState,
228
229
  styleState,
229
230
  theme: { ...theme },
@@ -150,16 +150,26 @@ function createAtomicRules(
150
150
  value: any,
151
151
  pseudo?: PseudoDescriptor
152
152
  ): string[] {
153
- const pseudoSelector = pseudo
153
+ const pseudoIdPostfix = pseudo
154
154
  ? pseudo.name === 'disabled'
155
155
  ? `[aria-disabled]`
156
156
  : `:${pseudo.name}`
157
157
  : ''
158
- const selector = pseudo
159
- ? pseudo?.selector
160
- ? `${pseudo?.selector} .${identifier}`
161
- : `${selectorPriority[pseudo.name]} .${identifier}${pseudoSelector}`
158
+ const pseudoSelector = pseudo?.selector
159
+
160
+ let selector = pseudo
161
+ ? pseudoSelector
162
+ ? `${pseudoSelector} .${identifier}`
163
+ : `${selectorPriority[pseudo.name]} .${identifier}${pseudoIdPostfix}`
162
164
  : `:root .${identifier}`
165
+
166
+ // enter style on css driver needs both:
167
+ // .t_unmounted .selector
168
+ // .selector.t_unmounted
169
+ if (pseudoSelector === pseudoDescriptors.enterStyle.selector) {
170
+ selector = `${selector}, .${identifier}${pseudoSelector}`
171
+ }
172
+
163
173
  const important = !!pseudo
164
174
 
165
175
  let rules: string[] = []
package/src/types.tsx CHANGED
@@ -2396,6 +2396,7 @@ export type UseAnimationHook = (props: {
2396
2396
  delay?: number
2397
2397
  }) => null | {
2398
2398
  style?: StackStyleBase | StackStyleBase[]
2399
+ className?: string
2399
2400
  }
2400
2401
 
2401
2402
  export type GestureReponderEvent = Exclude<
@@ -1,17 +1,20 @@
1
- import { isClient } from '@tamagui/constants'
2
- import * as React from 'react'
3
-
1
+ import { isClient, isWeb, useIsomorphicLayoutEffect } from '@tamagui/constants'
2
+ import { useState, useMemo, useEffect } from 'react'
4
3
  import { ComponentContext } from '../contexts/ComponentContext'
4
+ import { useDidHydrateOnceRoot } from '../hooks/useDidHydrateOnce'
5
5
  import { setupMediaListeners } from '../hooks/useMedia'
6
6
  import type { TamaguiProviderProps } from '../types'
7
7
  import { ThemeProvider } from './ThemeProvider'
8
- import { useDidHydrateOnceRoot } from '../hooks/useDidHydrateOnce'
9
8
 
10
9
  export function TamaguiProvider({
11
10
  children,
12
11
  disableInjectCSS,
13
12
  config,
14
- ...themePropsProvider
13
+ className,
14
+ defaultTheme,
15
+ disableRootThemeClass,
16
+ reset,
17
+ themeClassNameOnRoot,
15
18
  }: TamaguiProviderProps) {
16
19
  setupMediaListeners()
17
20
 
@@ -19,16 +22,8 @@ export function TamaguiProvider({
19
22
  // inject CSS if asked to (not SSR compliant)
20
23
  useDidHydrateOnceRoot()
21
24
 
22
- React.useInsertionEffect(() => {
25
+ useIsomorphicLayoutEffect(() => {
23
26
  if (!config) return
24
- if (!config.disableSSR) {
25
- // for easier support of hidden-until-js mount animations
26
- // user must set t_unmounted on documentElement from SSR
27
- if (document.documentElement.classList.contains('t_unmounted')) {
28
- document.documentElement.classList.remove('t_unmounted')
29
- }
30
- }
31
-
32
27
  if (!disableInjectCSS) {
33
28
  const style = document.createElement('style')
34
29
  style.appendChild(document.createTextNode(config.getCSS()))
@@ -40,20 +35,38 @@ export function TamaguiProvider({
40
35
  }, [config, disableInjectCSS])
41
36
  }
42
37
 
43
- return (
44
- <ComponentContext.Provider animationDriver={config?.animations}>
45
- <ThemeProvider
46
- themeClassNameOnRoot={config?.themeClassNameOnRoot}
47
- disableRootThemeClass={config?.disableRootThemeClass}
48
- {...themePropsProvider}
49
- defaultTheme={
50
- themePropsProvider.defaultTheme ?? (config ? Object.keys(config.themes)[0] : '')
51
- }
52
- >
53
- {children}
54
- </ThemeProvider>
55
- </ComponentContext.Provider>
56
- )
38
+ const contents = useMemo(() => {
39
+ return (
40
+ <ComponentContext.Provider animationDriver={config?.animations}>
41
+ <ThemeProvider
42
+ themeClassNameOnRoot={themeClassNameOnRoot ?? config?.themeClassNameOnRoot}
43
+ disableRootThemeClass={disableRootThemeClass ?? config?.disableRootThemeClass}
44
+ defaultTheme={defaultTheme ?? (config ? Object.keys(config.themes)[0] : '')}
45
+ reset={reset}
46
+ className={className}
47
+ >
48
+ {children}
49
+ </ThemeProvider>
50
+ </ComponentContext.Provider>
51
+ )
52
+ }, [])
53
+
54
+ return <UnmountedClassName>{contents}</UnmountedClassName>
55
+ }
56
+
57
+ // for CSS animations
58
+ function UnmountedClassName(props: { children: React.ReactNode }) {
59
+ const [mounted, setMounted] = useState(false)
60
+
61
+ useEffect(() => {
62
+ setMounted(true)
63
+ }, [])
64
+
65
+ if (!isWeb) {
66
+ return props.children
67
+ }
68
+
69
+ return <span className={mounted ? '' : 't_unmounted'}>{props.children}</span>
57
70
  }
58
71
 
59
72
  TamaguiProvider['displayName'] = 'TamaguiProvider'
@@ -18,7 +18,7 @@ const ellipseStyle = {
18
18
  export type Text = TamaguiTextElement
19
19
 
20
20
  const defaultWebStyle = {
21
- display: 'inline',
21
+ display: 'inline-block', // display: inline breaks css transform styles
22
22
  boxSizing: 'border-box',
23
23
  wordWrap: 'break-word',
24
24
  whiteSpace: 'pre-wrap',
@@ -1 +1 @@
1
- {"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAQA,OAAO,KAYN,MAAM,OAAO,CAAA;AA0Bd,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAG/E,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EAKT,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,YAAY,EAEZ,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,EACd,qBAAqB,EACrB,SAAS,EAIV,MAAM,SAAS,CAAA;AAchB,KAAK,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAEpF,eAAO,MAAM,kBAAkB,wBAA+B,CAAA;AAkE9D,eAAO,MAAM,iBAAiB,UACrB,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,+BACtB,iBAAiB,gBAChC,YAAY,UAClB,qBAAqB;;;;;;;;;;;;;;;;;;;CA+N9B,CAAA;AAuBD,wBAAgB,eAAe,CAC7B,kBAAkB,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EACnD,GAAG,SAAS,cAAc,GAAG,cAAc,EAC3C,SAAS,GAAG,KAAK,EACjB,UAAU,SAAS,MAAM,GAAG,KAAK,EACjC,YAAY,EAAE,YAAY,wEAmkC3B;AAsBD,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,OAEjD;yBAFe,QAAQ;;;AAkBxB,eAAO,MAAM,MAAM,yFA0CjB,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC5B,SAAS,CAAC,EAAE,cAAc,GAAG,OAAO,CAAA;IACpC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,mBA+FxD;AAwDD,eAAO,MAAM,UAAU,UAAW,GAAG,QAQpC,CAAA;AAED,eAAO,MAAM,uBAAuB,uFAOjC;IACD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,KAAK,IAAI,CAAA;IAC5E,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,gBAAgB,EAAE,iBAAiB,CAAA;IACnC,KAAK,EAAE,qBAAqB,CAAA;CAC7B,4CAqCA,CAAA"}
1
+ {"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAQA,OAAO,KAYN,MAAM,OAAO,CAAA;AA0Bd,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAG/E,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EAKT,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,YAAY,EAEZ,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,EACd,qBAAqB,EACrB,SAAS,EAIV,MAAM,SAAS,CAAA;AAchB,KAAK,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAEpF,eAAO,MAAM,kBAAkB,wBAA+B,CAAA;AAkE9D,eAAO,MAAM,iBAAiB,UACrB,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,+BACtB,iBAAiB,gBAChC,YAAY,UAClB,qBAAqB;;;;;;;;;;;;;;;;;;;CA+N9B,CAAA;AAuBD,wBAAgB,eAAe,CAC7B,kBAAkB,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EACnD,GAAG,SAAS,cAAc,GAAG,cAAc,EAC3C,SAAS,GAAG,KAAK,EACjB,UAAU,SAAS,MAAM,GAAG,KAAK,EACjC,YAAY,EAAE,YAAY,wEAglC3B;AAsBD,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,OAEjD;yBAFe,QAAQ;;;AAkBxB,eAAO,MAAM,MAAM,yFA0CjB,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC5B,SAAS,CAAC,EAAE,cAAc,GAAG,OAAO,CAAA;IACpC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,mBA+FxD;AAwDD,eAAO,MAAM,UAAU,UAAW,GAAG,QAQpC,CAAA;AAED,eAAO,MAAM,uBAAuB,uFAOjC;IACD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,KAAK,IAAI,CAAA;IAC5E,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,gBAAgB,EAAE,iBAAiB,CAAA;IACnC,KAAK,EAAE,qBAAqB,CAAA;CAC7B,4CAqCA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getSplitStyles.d.ts","sourceRoot":"","sources":["../../src/helpers/getSplitStyles.tsx"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAChF,OAAO,KAAK,EAEV,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,aAAa,EAOb,eAAe,EACf,YAAY,EAGZ,SAAS,EACT,WAAW,EAEZ,MAAM,UAAU,CAAA;AAsBjB,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAMhE,KAAK,aAAa,GAAG,CACnB,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,qBAAqB,EACrC,UAAU,EAAE,eAAe,EAC3B,iBAAiB,CAAC,EAAE,cAAc,GAAG,IAAI,EACzC,OAAO,CAAC,EAAE,iBAAiB,EAE3B,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,SAAS,EACjB,wBAAwB,CAAC,EAAE,OAAO,KAC/B,cAAc,CAAA;AAEnB,eAAO,MAAM,UAAU,MAAM,CAAA;AA8B7B,eAAO,MAAM,cAAc,EAAE,aA8uC5B,CAAA;AAgED,eAAO,MAAM,WAAW,eACV,aAAa,UACjB,MAAM,WACL,MAAM,wBACO,OAAO,KAC5B,SA2BF,CAAA;AAQD,eAAO,MAAM,cAAc,EAAE,aAa5B,CAAA"}
1
+ {"version":3,"file":"getSplitStyles.d.ts","sourceRoot":"","sources":["../../src/helpers/getSplitStyles.tsx"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAChF,OAAO,KAAK,EAEV,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,aAAa,EAOb,eAAe,EACf,YAAY,EAGZ,SAAS,EACT,WAAW,EAEZ,MAAM,UAAU,CAAA;AAsBjB,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAMhE,KAAK,aAAa,GAAG,CACnB,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,qBAAqB,EACrC,UAAU,EAAE,eAAe,EAC3B,iBAAiB,CAAC,EAAE,cAAc,GAAG,IAAI,EACzC,OAAO,CAAC,EAAE,iBAAiB,EAE3B,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,SAAS,EACjB,wBAAwB,CAAC,EAAE,OAAO,KAC/B,cAAc,CAAA;AAEnB,eAAO,MAAM,UAAU,MAAM,CAAA;AA8B7B,eAAO,MAAM,cAAc,EAAE,aA+uC5B,CAAA;AAgED,eAAO,MAAM,WAAW,eACV,aAAa,UACjB,MAAM,WACL,MAAM,wBACO,OAAO,KAC5B,SA2BF,CAAA;AAQD,eAAO,MAAM,cAAc,EAAE,aAa5B,CAAA"}
package/types/types.d.ts CHANGED
@@ -1436,6 +1436,7 @@ export type UseAnimationHook = (props: {
1436
1436
  delay?: number;
1437
1437
  }) => null | {
1438
1438
  style?: StackStyleBase | StackStyleBase[];
1439
+ className?: string;
1439
1440
  };
1440
1441
  export type GestureReponderEvent = Exclude<View['props']['onResponderMove'], void> extends (event: infer Event) => void ? Event : never;
1441
1442
  export type RulesToInsert = Record<string, StyleObject>;