@tamagui/core 1.0.0-beta.187 → 1.0.0-beta.230

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 (133) hide show
  1. package/dist/cjs/constants/pseudos.js +37 -0
  2. package/dist/cjs/constants/pseudos.js.map +7 -0
  3. package/dist/cjs/createComponent.js +63 -86
  4. package/dist/cjs/createComponent.js.map +2 -2
  5. package/dist/cjs/createShallowUpdate.js +1 -0
  6. package/dist/cjs/createShallowUpdate.js.map +7 -0
  7. package/dist/cjs/defaultComponentState.js +0 -30
  8. package/dist/cjs/defaultComponentState.js.map +3 -3
  9. package/dist/cjs/devtools.js +32 -0
  10. package/dist/cjs/devtools.js.map +7 -0
  11. package/dist/cjs/helpers/RNComponents.js +34 -0
  12. package/dist/cjs/helpers/RNComponents.js.map +7 -0
  13. package/dist/cjs/helpers/createMediaStyle.js +2 -0
  14. package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
  15. package/dist/cjs/helpers/createPropMapper.js +24 -25
  16. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  17. package/dist/cjs/helpers/createShallowUpdate.js +51 -0
  18. package/dist/cjs/helpers/createShallowUpdate.js.map +7 -0
  19. package/dist/cjs/helpers/createTamaguiProvider.js +1 -5
  20. package/dist/cjs/helpers/createTamaguiProvider.js.map +2 -2
  21. package/dist/cjs/helpers/getSplitStyles.js +22 -14
  22. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  23. package/dist/cjs/helpers/getStylesAtomic.js +1 -0
  24. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  25. package/dist/cjs/helpers/insertStyleRule.js +11 -6
  26. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  27. package/dist/cjs/hooks/useFeatures.js +93 -7
  28. package/dist/cjs/hooks/useFeatures.js.map +2 -2
  29. package/dist/cjs/hooks/useTheme.js +7 -7
  30. package/dist/cjs/hooks/useTheme.js.map +2 -2
  31. package/dist/cjs/styled.js +2 -12
  32. package/dist/cjs/styled.js.map +2 -2
  33. package/dist/cjs/tamagui-base.css +8 -0
  34. package/dist/cjs/tamagui-base.css.map +7 -0
  35. package/dist/cjs/types-rnw.js.map +1 -1
  36. package/dist/cjs/types.js.map +1 -1
  37. package/dist/cjs/views/Stack.js +1 -0
  38. package/dist/cjs/views/Stack.js.map +2 -2
  39. package/dist/cjs/views/Text.js +1 -0
  40. package/dist/cjs/views/Text.js.map +2 -2
  41. package/dist/cjs/views/Theme.js +4 -1
  42. package/dist/cjs/views/Theme.js.map +2 -2
  43. package/dist/esm/constants/pseudos.js +18 -0
  44. package/dist/esm/constants/pseudos.js.map +7 -0
  45. package/dist/esm/createComponent.js +63 -89
  46. package/dist/esm/createComponent.js.map +2 -2
  47. package/dist/esm/createShallowUpdate.js +1 -0
  48. package/dist/esm/createShallowUpdate.js.map +7 -0
  49. package/dist/esm/defaultComponentState.js +0 -11
  50. package/dist/esm/defaultComponentState.js.map +3 -3
  51. package/dist/esm/devtools.js +14 -0
  52. package/dist/esm/devtools.js.map +7 -0
  53. package/dist/esm/helpers/RNComponents.js +12 -0
  54. package/dist/esm/helpers/RNComponents.js.map +7 -0
  55. package/dist/esm/helpers/createMediaStyle.js +2 -0
  56. package/dist/esm/helpers/createMediaStyle.js.map +2 -2
  57. package/dist/esm/helpers/createPropMapper.js +24 -25
  58. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  59. package/dist/esm/helpers/createShallowUpdate.js +19 -0
  60. package/dist/esm/helpers/createShallowUpdate.js.map +7 -0
  61. package/dist/esm/helpers/createTamaguiProvider.js +1 -4
  62. package/dist/esm/helpers/createTamaguiProvider.js.map +2 -2
  63. package/dist/esm/helpers/getSplitStyles.js +22 -14
  64. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  65. package/dist/esm/helpers/getStylesAtomic.js +1 -0
  66. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  67. package/dist/esm/helpers/insertStyleRule.js +11 -6
  68. package/dist/esm/helpers/insertStyleRule.js.map +2 -2
  69. package/dist/esm/hooks/useFeatures.js +93 -12
  70. package/dist/esm/hooks/useFeatures.js.map +2 -2
  71. package/dist/esm/hooks/useTheme.js +7 -7
  72. package/dist/esm/hooks/useTheme.js.map +2 -2
  73. package/dist/esm/styled.js +1 -8
  74. package/dist/esm/styled.js.map +2 -2
  75. package/dist/esm/tamagui-base.css +8 -0
  76. package/dist/esm/tamagui-base.css.map +7 -0
  77. package/dist/esm/views/Stack.js +1 -0
  78. package/dist/esm/views/Stack.js.map +2 -2
  79. package/dist/esm/views/Text.js +1 -0
  80. package/dist/esm/views/Text.js.map +2 -2
  81. package/dist/esm/views/Theme.js +4 -1
  82. package/dist/esm/views/Theme.js.map +2 -2
  83. package/dist/jsx/constants/pseudos.js +17 -0
  84. package/dist/jsx/createComponent.js +59 -86
  85. package/dist/jsx/createShallowUpdate.js +0 -0
  86. package/dist/jsx/defaultComponentState.js +0 -11
  87. package/dist/jsx/devtools.js +13 -0
  88. package/dist/jsx/helpers/RNComponents.js +11 -0
  89. package/dist/jsx/helpers/createMediaStyle.js +2 -0
  90. package/dist/jsx/helpers/createPropMapper.js +24 -25
  91. package/dist/jsx/helpers/createShallowUpdate.js +18 -0
  92. package/dist/jsx/helpers/createTamaguiProvider.js +1 -2
  93. package/dist/jsx/helpers/getSplitStyles.js +22 -14
  94. package/dist/jsx/helpers/getStylesAtomic.js +1 -0
  95. package/dist/jsx/helpers/insertStyleRule.js +11 -6
  96. package/dist/jsx/hooks/useFeatures.js +93 -12
  97. package/dist/jsx/hooks/useTheme.js +7 -7
  98. package/dist/jsx/styled.js +1 -8
  99. package/dist/jsx/tamagui-base.css +7 -0
  100. package/dist/jsx/views/Stack.js +1 -0
  101. package/dist/jsx/views/Text.js +1 -0
  102. package/dist/jsx/views/Theme.js +4 -1
  103. package/package.json +6 -6
  104. package/types/createComponent.d.ts +5 -6
  105. package/types/createComponent.d.ts.map +1 -1
  106. package/types/defaultComponentState.d.ts +0 -12
  107. package/types/defaultComponentState.d.ts.map +1 -1
  108. package/types/helpers/RNComponents.d.ts +2 -0
  109. package/types/helpers/RNComponents.d.ts.map +1 -0
  110. package/types/helpers/createMediaStyle.d.ts.map +1 -1
  111. package/types/helpers/createPropMapper.d.ts +2 -2
  112. package/types/helpers/createPropMapper.d.ts.map +1 -1
  113. package/types/helpers/createShallowUpdate.d.ts +4 -0
  114. package/types/helpers/createShallowUpdate.d.ts.map +1 -0
  115. package/types/helpers/createTamaguiProvider.d.ts +1 -1
  116. package/types/helpers/createTamaguiProvider.d.ts.map +1 -1
  117. package/types/helpers/getSplitStyles.d.ts +3 -14
  118. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  119. package/types/helpers/getStylesAtomic.d.ts.map +1 -1
  120. package/types/helpers/insertStyleRule.d.ts.map +1 -1
  121. package/types/hooks/useFeatures.d.ts +7 -5
  122. package/types/hooks/useFeatures.d.ts.map +1 -1
  123. package/types/styled.d.ts +3 -7
  124. package/types/styled.d.ts.map +1 -1
  125. package/types/types-rnw.d.ts +0 -5
  126. package/types/types-rnw.d.ts.map +1 -1
  127. package/types/types.d.ts +77 -64
  128. package/types/types.d.ts.map +1 -1
  129. package/types/views/Stack.d.ts +2 -2
  130. package/types/views/Stack.d.ts.map +1 -1
  131. package/types/views/Text.d.ts +2 -2
  132. package/types/views/Text.d.ts.map +1 -1
  133. package/types/views/Theme.d.ts.map +1 -1
@@ -0,0 +1,34 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+ var RNComponents_exports = {};
22
+ __export(RNComponents_exports, {
23
+ RNComponents: () => RNComponents
24
+ });
25
+ module.exports = __toCommonJS(RNComponents_exports);
26
+ var ReactNative = __toESM(require("react-native"));
27
+ const RNComponents = /* @__PURE__ */ new WeakMap();
28
+ for (const key of ["Image", "TextInput", "Text", "View"]) {
29
+ const val = ReactNative[key];
30
+ if (val && typeof val === "object") {
31
+ RNComponents.set(val, true);
32
+ }
33
+ }
34
+ //# sourceMappingURL=RNComponents.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/helpers/RNComponents.tsx"],
4
+ "sourcesContent": ["import * as ReactNative from 'react-native'\n\n// bye bye tree shaking... but only way to properly detect react-native components...\n// also neither rnw nor react support tree shaking atm\nexport const RNComponents = new WeakMap()\n\n// I was looping over all of them, but casuses deprecation warnings and there's only a few\n// we realistically support - lets whitelist rather than blacklist\nfor (const key of ['Image', 'TextInput', 'Text', 'View']) {\n const val = ReactNative[key]\n if (val && typeof val === 'object') {\n RNComponents.set(val, true)\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA6B;AAItB,MAAM,eAAe,oBAAI,QAAQ;AAIxC,WAAW,OAAO,CAAC,SAAS,aAAa,QAAQ,MAAM,GAAG;AACxD,QAAM,MAAM,YAAY;AACxB,MAAI,OAAO,OAAO,QAAQ,UAAU;AAClC,iBAAa,IAAI,KAAK,IAAI;AAAA,EAC5B;AACF;",
6
+ "names": []
7
+ }
@@ -35,6 +35,8 @@ const createMediaStyle = /* @__PURE__ */ __name(({ identifier, rules }, mediaKey
35
35
  const mediaSelector = (0, import_useMedia.mediaObjectToString)(mediaQueries[mediaKey]);
36
36
  const mediaQuery = `${screenStr} and ${mediaSelector}`;
37
37
  const styleInner = rules[0].replace(identifier, nextIdentifier);
38
+ if (styleInner.includes("2:r;"))
39
+ debugger;
38
40
  let styleRule = "";
39
41
  if (styleInner.includes("@media")) {
40
42
  styleRule = styleInner.replace("{", ` and ${mediaQuery} {`);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/createMediaStyle.ts"],
4
- "sourcesContent": ["import { StyleObject } from '@tamagui/helpers'\n\nimport { mediaObjectToString } from '../hooks/useMedia'\nimport { MediaQueries } from '../types'\n\n// TODO have this be used by extractMediaStyle in tamagui static\n// not synced to static/constants for now\nexport const MEDIA_SEP = '_'\n\nexport const createMediaStyle = (\n { identifier, rules }: StyleObject,\n mediaKey: string,\n mediaQueries: MediaQueries,\n negate?: boolean,\n importance?: number\n) => {\n const mediaKeys = Object.keys(mediaQueries)\n const importance_ = Math.max(\n 0,\n importance == undefined ? mediaKeys.indexOf(mediaKey) : importance || 0\n )\n const precendencePrefix = new Array(importance_ + 1).fill(':root').join('')\n const negKey = negate ? '0' : ''\n const ogPrefix = identifier.slice(0, identifier.indexOf('-') + 1)\n const nextIdentifier = `${identifier.replace(\n ogPrefix,\n `${ogPrefix}${MEDIA_SEP}${mediaKey}${negKey}${MEDIA_SEP}`\n )}`\n const screenStr = negate ? 'not all' : 'screen'\n const mediaSelector = mediaObjectToString(mediaQueries[mediaKey])\n const mediaQuery = `${screenStr} and ${mediaSelector}`\n const styleInner = rules[0].replace(identifier, nextIdentifier)\n // combines media queries if they already exist\n let styleRule = ''\n if (styleInner.includes('@media')) {\n // combine\n styleRule = styleInner.replace('{', ` and ${mediaQuery} {`)\n } else {\n styleRule = `@media ${mediaQuery} { ${precendencePrefix} ${styleInner} }`\n }\n return {\n styleRule,\n identifier: nextIdentifier,\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,sBAAoC;AAK7B,MAAM,YAAY;AAElB,MAAM,mBAAmB,wBAC9B,EAAE,YAAY,SACd,UACA,cACA,QACA,eACG;AACH,QAAM,YAAY,OAAO,KAAK,YAAY;AAC1C,QAAM,cAAc,KAAK,IACvB,GACA,cAAc,SAAY,UAAU,QAAQ,QAAQ,IAAI,cAAc,CACxE;AACA,QAAM,oBAAoB,IAAI,MAAM,cAAc,CAAC,EAAE,KAAK,OAAO,EAAE,KAAK,EAAE;AAC1E,QAAM,SAAS,SAAS,MAAM;AAC9B,QAAM,WAAW,WAAW,MAAM,GAAG,WAAW,QAAQ,GAAG,IAAI,CAAC;AAChE,QAAM,iBAAiB,GAAG,WAAW,QACnC,UACA,GAAG,WAAW,YAAY,WAAW,SAAS,WAChD;AACA,QAAM,YAAY,SAAS,YAAY;AACvC,QAAM,gBAAgB,yCAAoB,aAAa,SAAS;AAChE,QAAM,aAAa,GAAG,iBAAiB;AACvC,QAAM,aAAa,MAAM,GAAG,QAAQ,YAAY,cAAc;AAE9D,MAAI,YAAY;AAChB,MAAI,WAAW,SAAS,QAAQ,GAAG;AAEjC,gBAAY,WAAW,QAAQ,KAAK,QAAQ,cAAc;AAAA,EAC5D,OAAO;AACL,gBAAY,UAAU,gBAAgB,qBAAqB;AAAA,EAC7D;AACA,SAAO;AAAA,IACL;AAAA,IACA,YAAY;AAAA,EACd;AACF,GAnCgC;",
4
+ "sourcesContent": ["import { StyleObject } from '@tamagui/helpers'\n\nimport { mediaObjectToString } from '../hooks/useMedia'\nimport { MediaQueries } from '../types'\n\n// TODO have this be used by extractMediaStyle in tamagui static\n// not synced to static/constants for now\nexport const MEDIA_SEP = '_'\n\nexport const createMediaStyle = (\n { identifier, rules }: StyleObject,\n mediaKey: string,\n mediaQueries: MediaQueries,\n negate?: boolean,\n importance?: number\n) => {\n const mediaKeys = Object.keys(mediaQueries)\n const importance_ = Math.max(\n 0,\n importance == undefined ? mediaKeys.indexOf(mediaKey) : importance || 0\n )\n const precendencePrefix = new Array(importance_ + 1).fill(':root').join('')\n const negKey = negate ? '0' : ''\n const ogPrefix = identifier.slice(0, identifier.indexOf('-') + 1)\n const nextIdentifier = `${identifier.replace(\n ogPrefix,\n `${ogPrefix}${MEDIA_SEP}${mediaKey}${negKey}${MEDIA_SEP}`\n )}`\n const screenStr = negate ? 'not all' : 'screen'\n const mediaSelector = mediaObjectToString(mediaQueries[mediaKey])\n const mediaQuery = `${screenStr} and ${mediaSelector}`\n const styleInner = rules[0].replace(identifier, nextIdentifier)\n if (styleInner.includes('2:r;')) debugger\n // combines media queries if they already exist\n let styleRule = ''\n if (styleInner.includes('@media')) {\n // combine\n styleRule = styleInner.replace('{', ` and ${mediaQuery} {`)\n } else {\n styleRule = `@media ${mediaQuery} { ${precendencePrefix} ${styleInner} }`\n }\n return {\n styleRule,\n identifier: nextIdentifier,\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,sBAAoC;AAK7B,MAAM,YAAY;AAElB,MAAM,mBAAmB,wBAC9B,EAAE,YAAY,SACd,UACA,cACA,QACA,eACG;AACH,QAAM,YAAY,OAAO,KAAK,YAAY;AAC1C,QAAM,cAAc,KAAK,IACvB,GACA,cAAc,SAAY,UAAU,QAAQ,QAAQ,IAAI,cAAc,CACxE;AACA,QAAM,oBAAoB,IAAI,MAAM,cAAc,CAAC,EAAE,KAAK,OAAO,EAAE,KAAK,EAAE;AAC1E,QAAM,SAAS,SAAS,MAAM;AAC9B,QAAM,WAAW,WAAW,MAAM,GAAG,WAAW,QAAQ,GAAG,IAAI,CAAC;AAChE,QAAM,iBAAiB,GAAG,WAAW,QACnC,UACA,GAAG,WAAW,YAAY,WAAW,SAAS,WAChD;AACA,QAAM,YAAY,SAAS,YAAY;AACvC,QAAM,gBAAgB,yCAAoB,aAAa,SAAS;AAChE,QAAM,aAAa,GAAG,iBAAiB;AACvC,QAAM,aAAa,MAAM,GAAG,QAAQ,YAAY,cAAc;AAC9D,MAAI,WAAW,SAAS,MAAM;AAAG;AAEjC,MAAI,YAAY;AAChB,MAAI,WAAW,SAAS,QAAQ,GAAG;AAEjC,gBAAY,WAAW,QAAQ,KAAK,QAAQ,cAAc;AAAA,EAC5D,OAAO;AACL,gBAAY,UAAU,gBAAgB,qBAAqB;AAAA,EAC7D;AACA,SAAO;AAAA,IACL;AAAA,IACA,YAAY;AAAA,EACd;AACF,GApCgC;",
6
6
  "names": []
7
7
  }
@@ -25,8 +25,8 @@ var import_conf = require("../conf");
25
25
  var import_platform = require("../constants/platform");
26
26
  var import_createVariable = require("../createVariable");
27
27
  var import_isObj = require("./isObj");
28
- const createPropMapper = /* @__PURE__ */ __name((c) => {
29
- const variants = c.variants || {};
28
+ const createPropMapper = /* @__PURE__ */ __name((staticConfig) => {
29
+ const variants = staticConfig.variants || {};
30
30
  function getVariantFunction(variant, key, value) {
31
31
  for (const cat in tokenCategories) {
32
32
  if (key in tokenCategories[cat]) {
@@ -48,8 +48,8 @@ const createPropMapper = /* @__PURE__ */ __name((c) => {
48
48
  return fn || variant["..."] || variant["...size"];
49
49
  }
50
50
  __name(getVariantFunction, "getVariantFunction");
51
- const defaultProps = c.defaultProps || {};
52
- return (key, value, theme, props, staticConfig, returnVariablesAs = !!props.animation ? "value" : "auto", avoidDefaultProps = false) => {
51
+ const defaultProps = staticConfig.defaultProps || {};
52
+ return (key, value, theme, props, returnVariablesAs = !!props.animation ? "value" : "auto", avoidDefaultProps = false) => {
53
53
  const conf = (0, import_conf.getConfig)();
54
54
  if (!conf) {
55
55
  console.trace("no conf! err");
@@ -59,29 +59,28 @@ const createPropMapper = /* @__PURE__ */ __name((c) => {
59
59
  const variant = variants && variants[key];
60
60
  if (variant && value !== void 0) {
61
61
  let variantValue = getVariantFunction(variant, key, value);
62
- if (!variantValue) {
63
- return value;
64
- }
65
- if (typeof variantValue === "function") {
66
- variantValue = variantValue(value, {
67
- tokens: conf.tokensParsed,
68
- theme,
69
- props: avoidDefaultProps ? props : new Proxy(props, {
70
- get(target, key2) {
71
- if (Reflect.has(target, key2)) {
72
- return Reflect.get(target, key2);
73
- }
74
- if (staticConfig.defaultProps) {
75
- return Reflect.get(staticConfig.defaultProps, key2);
62
+ if (variantValue) {
63
+ if (typeof variantValue === "function") {
64
+ variantValue = variantValue(value, {
65
+ tokens: conf.tokensParsed,
66
+ theme,
67
+ props: avoidDefaultProps ? props : new Proxy(props, {
68
+ get(target, key2) {
69
+ if (Reflect.has(target, key2)) {
70
+ return Reflect.get(target, key2);
71
+ }
72
+ if (staticConfig.defaultProps) {
73
+ return Reflect.get(staticConfig.defaultProps, key2);
74
+ }
76
75
  }
77
- }
78
- })
79
- });
80
- }
81
- if ((0, import_isObj.isObj)(variantValue)) {
82
- variantValue = resolveTokens(variantValue, conf, theme, fontFamily, returnVariablesAs);
76
+ })
77
+ });
78
+ }
79
+ if ((0, import_isObj.isObj)(variantValue)) {
80
+ variantValue = resolveTokens(variantValue, conf, theme, fontFamily, returnVariablesAs);
81
+ }
82
+ return variantValue;
83
83
  }
84
- return variantValue;
85
84
  }
86
85
  let shouldReturn = false;
87
86
  if (conf.shorthands[key]) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/createPropMapper.ts"],
4
- "sourcesContent": ["import { getConfig } from '../conf'\nimport { isWeb } from '../constants/platform'\nimport { Variable, isVariable } from '../createVariable'\nimport { StaticConfig, TamaguiInternalConfig } from '../types'\nimport { isObj } from './isObj'\n\nexport type ResolveVariableTypes = 'auto' | 'value' | 'variable'\n\nexport const createPropMapper = (c: StaticConfig) => {\n const variants = c.variants || {}\n\n // goes through specificity finding best matching variant function\n function getVariantFunction(variant: any, key: string, value: any) {\n for (const cat in tokenCategories) {\n if (key in tokenCategories[cat]) {\n const spreadVariant = variant[`...${cat}`]\n if (spreadVariant) {\n return spreadVariant\n }\n }\n }\n let fn: any\n if (typeof value === 'number') {\n fn = variant[':number']\n } else if (typeof value === 'string') {\n fn = variant[':string']\n } else if (value === true || value === false) {\n fn = variant[':boolean']\n }\n fn = fn || variant[value]\n // fallback to size ultimately - could do token level detection\n return fn || variant['...'] || variant['...size']\n }\n\n const defaultProps = c.defaultProps || {}\n\n return (\n key: string,\n value: any,\n theme: any,\n props: any,\n staticConfig: StaticConfig,\n returnVariablesAs: ResolveVariableTypes = !!props.animation ? 'value' : 'auto',\n avoidDefaultProps = false\n ) => {\n const conf = getConfig()\n if (!conf) {\n console.trace('no conf! err')\n return\n }\n\n // handled here because we need to resolve this off tokens, its the only one-off like this\n let fontFamily = props.fontFamily || defaultProps.fontFamily || '$body'\n\n // expand variants\n const variant = variants && variants[key]\n\n if (variant && value !== undefined) {\n let variantValue = getVariantFunction(variant, key, value)\n\n if (!variantValue) {\n return value\n }\n\n if (typeof variantValue === 'function') {\n variantValue = variantValue(value, {\n tokens: conf.tokensParsed,\n theme,\n // we avoid passing in default props for media queries because that would confuse things like SizableText.size:\n props: avoidDefaultProps\n ? props\n : new Proxy(props, {\n get(target, key) {\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key)\n }\n // these props may be extracted into classNames, but we still want to access them\n // at runtime, so we proxy back to defaultProps but don't pass them\n if (staticConfig.defaultProps) {\n return Reflect.get(staticConfig.defaultProps, key)\n }\n },\n }),\n })\n }\n\n // console.log(\n // 'GOGO',\n // variantValue,\n // 'now',\n // resolveTokens(variantValue, conf, theme, fontFamily, returnVariablesAs)\n // )\n\n if (isObj(variantValue)) {\n variantValue = resolveTokens(variantValue, conf, theme, fontFamily, returnVariablesAs)\n }\n\n return variantValue\n }\n\n let shouldReturn = false\n\n // handle shorthands\n if (conf.shorthands[key]) {\n shouldReturn = true\n key = conf.shorthands[key]\n }\n\n if (value) {\n shouldReturn = true\n if (value[0] === '$') {\n value = getToken(key, value, conf, theme, fontFamily, returnVariablesAs)\n } else if (isVariable(value)) {\n value = getVariableValue(value, returnVariablesAs)\n }\n }\n\n if (shouldReturn) {\n return {\n [key]: value,\n }\n }\n }\n}\n\nconst resolveTokens = (\n input: Object,\n conf: TamaguiInternalConfig,\n theme: any,\n fontFamily: any,\n resolveAs?: ResolveVariableTypes\n) => {\n let res = {}\n for (const rKey in input) {\n const fKey = conf.shorthands[rKey] || rKey\n const val = input[rKey]\n if (isVariable(val)) {\n res[fKey] =\n resolveAs === 'variable' ? val : !isWeb || resolveAs === 'value' ? val.val : val.variable\n } else if (typeof val === 'string') {\n const fVal = val[0] === '$' ? getToken(fKey, val, conf, theme, fontFamily, resolveAs) : val\n res[fKey] = fVal\n } else {\n if (isObj(val)) {\n // for things like shadowOffset, hoverStyle which is a sub-object\n res[fKey] = resolveTokens(val, conf, theme, fontFamily, resolveAs)\n } else {\n // nullish values cant be tokens so need no exrta parsing\n res[fKey] = input[fKey]\n }\n }\n if (process.env.NODE_ENV === 'development') {\n if (res[fKey]?.[0] === '$') {\n console.warn(`\u26A0\uFE0F Missing token in theme ${theme.name}:`, fKey, res[fKey])\n }\n }\n }\n return res\n}\n\nconst getToken = (\n key: string,\n value: string,\n { tokensParsed }: TamaguiInternalConfig,\n theme: any,\n fontFamily: string | undefined = '$body',\n resolveAs?: ResolveVariableTypes\n) => {\n let valOrVar: any\n let hasSet = false\n const valueName = value[0] === '$' ? value.slice(1) : value\n if (valueName in theme) {\n valOrVar = theme[valueName]\n hasSet = true\n } else {\n switch (key) {\n case 'fontFamily':\n valOrVar = tokensParsed.font[value]?.family || value\n hasSet = true\n break\n case 'fontSize':\n valOrVar = tokensParsed.font[fontFamily]?.size[value] || value\n hasSet = true\n break\n case 'lineHeight':\n valOrVar = tokensParsed.font[fontFamily]?.lineHeight[value] || value\n hasSet = true\n break\n case 'letterSpacing':\n valOrVar = tokensParsed.font[fontFamily]?.letterSpacing[value] || value\n hasSet = true\n break\n case 'fontWeight':\n valOrVar = tokensParsed.font[fontFamily]?.weight[value] || value\n hasSet = true\n break\n }\n for (const cat in tokenCategories) {\n if (key in tokenCategories[cat]) {\n const res = tokensParsed[cat][value]\n if (res) {\n valOrVar = res\n hasSet = true\n }\n }\n }\n if (!hasSet) {\n const spaceVar = tokensParsed.space[value]\n if (spaceVar) {\n valOrVar = spaceVar\n hasSet = true\n }\n }\n }\n if (hasSet) {\n return getVariableValue(valOrVar, resolveAs)\n }\n if (process.env.NODE_ENV === 'development') {\n if (value && value[0] === '$') {\n console.warn(`\u26A0\uFE0F Missing token in theme:`, value, theme)\n return null\n }\n }\n return value\n}\n\nfunction getVariableValue(valOrVar: Variable | any, resolveAs: ResolveVariableTypes = 'auto') {\n if (isVariable(valOrVar)) {\n if (resolveAs === 'variable') {\n return valOrVar\n }\n if (!isWeb || resolveAs === 'value') {\n return valOrVar.val\n }\n return valOrVar.variable\n }\n return valOrVar\n}\n\n// just specificy the least costly, all else go to `space` (most keys - we can exclude)\nconst tokenCategories = {\n radius: {\n borderRadius: true,\n },\n size: {\n width: true,\n height: true,\n minWidth: true,\n minHeight: true,\n maxWidth: true,\n maxHeight: true,\n },\n color: {\n color: true,\n backgroundColor: true,\n borderColor: true,\n borderBottomColor: true,\n borderTopColor: true,\n borderLeftColor: true,\n borderRightColor: true,\n },\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { getConfig } from '../conf'\nimport { isWeb } from '../constants/platform'\nimport { Variable, isVariable } from '../createVariable'\nimport { StaticConfig, TamaguiInternalConfig } from '../types'\nimport { isObj } from './isObj'\n\nexport type ResolveVariableTypes = 'auto' | 'value' | 'variable' | 'both'\n\nexport const createPropMapper = (staticConfig: StaticConfig) => {\n const variants = staticConfig.variants || {}\n\n // goes through specificity finding best matching variant function\n function getVariantFunction(variant: any, key: string, value: any) {\n for (const cat in tokenCategories) {\n if (key in tokenCategories[cat]) {\n const spreadVariant = variant[`...${cat}`]\n if (spreadVariant) {\n return spreadVariant\n }\n }\n }\n let fn: any\n if (typeof value === 'number') {\n fn = variant[':number']\n } else if (typeof value === 'string') {\n fn = variant[':string']\n } else if (value === true || value === false) {\n fn = variant[':boolean']\n }\n fn = fn || variant[value]\n // fallback to size ultimately - could do token level detection\n return fn || variant['...'] || variant['...size']\n }\n\n const defaultProps = staticConfig.defaultProps || {}\n\n return (\n key: string,\n value: any,\n theme: any,\n props: any,\n returnVariablesAs: ResolveVariableTypes = !!props.animation ? 'value' : 'auto',\n avoidDefaultProps = false\n ) => {\n const conf = getConfig()\n if (!conf) {\n console.trace('no conf! err')\n return\n }\n\n // handled here because we need to resolve this off tokens, its the only one-off like this\n let fontFamily = props.fontFamily || defaultProps.fontFamily || '$body'\n\n // expand variants\n const variant = variants && variants[key]\n\n if (variant && value !== undefined) {\n let variantValue = getVariantFunction(variant, key, value)\n\n if (variantValue) {\n if (typeof variantValue === 'function') {\n variantValue = variantValue(value, {\n tokens: conf.tokensParsed,\n theme,\n // we avoid passing in default props for media queries because that would confuse things like SizableText.size:\n props: avoidDefaultProps\n ? props\n : new Proxy(props, {\n get(target, key) {\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key)\n }\n // these props may be extracted into classNames, but we still want to access them\n // at runtime, so we proxy back to defaultProps but don't pass them\n if (staticConfig.defaultProps) {\n return Reflect.get(staticConfig.defaultProps, key)\n }\n },\n }),\n })\n }\n\n if (isObj(variantValue)) {\n variantValue = resolveTokens(variantValue, conf, theme, fontFamily, returnVariablesAs)\n }\n\n return variantValue\n }\n }\n\n let shouldReturn = false\n\n // handle shorthands\n if (conf.shorthands[key]) {\n shouldReturn = true\n key = conf.shorthands[key]\n }\n\n if (value) {\n shouldReturn = true\n if (value[0] === '$') {\n value = getToken(key, value, conf, theme, fontFamily, returnVariablesAs)\n } else if (isVariable(value)) {\n value = getVariableValue(value, returnVariablesAs)\n }\n }\n\n if (shouldReturn) {\n return {\n [key]: value,\n }\n }\n }\n}\n\nconst resolveTokens = (\n input: Object,\n conf: TamaguiInternalConfig,\n theme: any,\n fontFamily: any,\n resolveAs?: ResolveVariableTypes\n) => {\n let res = {}\n for (const rKey in input) {\n const fKey = conf.shorthands[rKey] || rKey\n const val = input[rKey]\n if (isVariable(val)) {\n res[fKey] =\n resolveAs === 'variable' ? val : !isWeb || resolveAs === 'value' ? val.val : val.variable\n } else if (typeof val === 'string') {\n const fVal = val[0] === '$' ? getToken(fKey, val, conf, theme, fontFamily, resolveAs) : val\n res[fKey] = fVal\n } else {\n if (isObj(val)) {\n // for things like shadowOffset, hoverStyle which is a sub-object\n res[fKey] = resolveTokens(val, conf, theme, fontFamily, resolveAs)\n } else {\n // nullish values cant be tokens so need no exrta parsing\n res[fKey] = input[fKey]\n }\n }\n if (process.env.NODE_ENV === 'development') {\n if (res[fKey]?.[0] === '$') {\n console.warn(`\u26A0\uFE0F Missing token in theme ${theme.name}:`, fKey, res[fKey])\n }\n }\n }\n return res\n}\n\nconst getToken = (\n key: string,\n value: string,\n { tokensParsed }: TamaguiInternalConfig,\n theme: any,\n fontFamily: string | undefined = '$body',\n resolveAs?: ResolveVariableTypes\n) => {\n let valOrVar: any\n let hasSet = false\n const valueName = value[0] === '$' ? value.slice(1) : value\n if (valueName in theme) {\n valOrVar = theme[valueName]\n hasSet = true\n } else {\n switch (key) {\n case 'fontFamily':\n valOrVar = tokensParsed.font[value]?.family || value\n hasSet = true\n break\n case 'fontSize':\n valOrVar = tokensParsed.font[fontFamily]?.size[value] || value\n hasSet = true\n break\n case 'lineHeight':\n valOrVar = tokensParsed.font[fontFamily]?.lineHeight[value] || value\n hasSet = true\n break\n case 'letterSpacing':\n valOrVar = tokensParsed.font[fontFamily]?.letterSpacing[value] || value\n hasSet = true\n break\n case 'fontWeight':\n valOrVar = tokensParsed.font[fontFamily]?.weight[value] || value\n hasSet = true\n break\n }\n for (const cat in tokenCategories) {\n if (key in tokenCategories[cat]) {\n const res = tokensParsed[cat][value]\n if (res) {\n valOrVar = res\n hasSet = true\n }\n }\n }\n if (!hasSet) {\n const spaceVar = tokensParsed.space[value]\n if (spaceVar) {\n valOrVar = spaceVar\n hasSet = true\n }\n }\n }\n if (hasSet) {\n return getVariableValue(valOrVar, resolveAs)\n }\n if (process.env.NODE_ENV === 'development') {\n if (value && value[0] === '$') {\n console.warn(`\u26A0\uFE0F Missing token in theme:`, value, theme)\n return null\n }\n }\n return value\n}\n\nfunction getVariableValue(valOrVar: Variable | any, resolveAs: ResolveVariableTypes = 'auto') {\n if (isVariable(valOrVar)) {\n if (resolveAs === 'variable') {\n return valOrVar\n }\n if (!isWeb || resolveAs === 'value') {\n return valOrVar.val\n }\n return valOrVar.variable\n }\n return valOrVar\n}\n\n// just specificy the least costly, all else go to `space` (most keys - we can exclude)\nconst tokenCategories = {\n radius: {\n borderRadius: true,\n },\n size: {\n width: true,\n height: true,\n minWidth: true,\n minHeight: true,\n maxWidth: true,\n maxHeight: true,\n },\n color: {\n color: true,\n backgroundColor: true,\n borderColor: true,\n borderBottomColor: true,\n borderTopColor: true,\n borderLeftColor: true,\n borderRightColor: true,\n },\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA0B;AAC1B,sBAAsB;AACtB,4BAAqC;AAErC,mBAAsB;AAIf,MAAM,mBAAmB,wBAAC,iBAA+B;AAC9D,QAAM,WAAW,aAAa,YAAY,CAAC;AAG3C,8BAA4B,SAAc,KAAa,OAAY;AACjE,eAAW,OAAO,iBAAiB;AACjC,UAAI,OAAO,gBAAgB,MAAM;AAC/B,cAAM,gBAAgB,QAAQ,MAAM;AACpC,YAAI,eAAe;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,QAAI;AACJ,QAAI,OAAO,UAAU,UAAU;AAC7B,WAAK,QAAQ;AAAA,IACf,WAAW,OAAO,UAAU,UAAU;AACpC,WAAK,QAAQ;AAAA,IACf,WAAW,UAAU,QAAQ,UAAU,OAAO;AAC5C,WAAK,QAAQ;AAAA,IACf;AACA,SAAK,MAAM,QAAQ;AAEnB,WAAO,MAAM,QAAQ,UAAU,QAAQ;AAAA,EACzC;AApBS;AAsBT,QAAM,eAAe,aAAa,gBAAgB,CAAC;AAEnD,SAAO,CACL,KACA,OACA,OACA,OACA,oBAA0C,CAAC,CAAC,MAAM,YAAY,UAAU,QACxE,oBAAoB,UACjB;AACH,UAAM,OAAO,2BAAU;AACvB,QAAI,CAAC,MAAM;AACT,cAAQ,MAAM,cAAc;AAC5B;AAAA,IACF;AAGA,QAAI,aAAa,MAAM,cAAc,aAAa,cAAc;AAGhE,UAAM,UAAU,YAAY,SAAS;AAErC,QAAI,WAAW,UAAU,QAAW;AAClC,UAAI,eAAe,mBAAmB,SAAS,KAAK,KAAK;AAEzD,UAAI,cAAc;AAChB,YAAI,OAAO,iBAAiB,YAAY;AACtC,yBAAe,aAAa,OAAO;AAAA,YACjC,QAAQ,KAAK;AAAA,YACb;AAAA,YAEA,OAAO,oBACH,QACA,IAAI,MAAM,OAAO;AAAA,cACf,IAAI,QAAQ,MAAK;AACf,oBAAI,QAAQ,IAAI,QAAQ,IAAG,GAAG;AAC5B,yBAAO,QAAQ,IAAI,QAAQ,IAAG;AAAA,gBAChC;AAGA,oBAAI,aAAa,cAAc;AAC7B,yBAAO,QAAQ,IAAI,aAAa,cAAc,IAAG;AAAA,gBACnD;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACP,CAAC;AAAA,QACH;AAEA,YAAI,wBAAM,YAAY,GAAG;AACvB,yBAAe,cAAc,cAAc,MAAM,OAAO,YAAY,iBAAiB;AAAA,QACvF;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,QAAI,eAAe;AAGnB,QAAI,KAAK,WAAW,MAAM;AACxB,qBAAe;AACf,YAAM,KAAK,WAAW;AAAA,IACxB;AAEA,QAAI,OAAO;AACT,qBAAe;AACf,UAAI,MAAM,OAAO,KAAK;AACpB,gBAAQ,SAAS,KAAK,OAAO,MAAM,OAAO,YAAY,iBAAiB;AAAA,MACzE,WAAW,sCAAW,KAAK,GAAG;AAC5B,gBAAQ,iBAAiB,OAAO,iBAAiB;AAAA,MACnD;AAAA,IACF;AAEA,QAAI,cAAc;AAChB,aAAO;AAAA,SACJ,MAAM;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF,GAzGgC;AA2GhC,MAAM,gBAAgB,wBACpB,OACA,MACA,OACA,YACA,cACG;AAzHL;AA0HE,MAAI,MAAM,CAAC;AACX,aAAW,QAAQ,OAAO;AACxB,UAAM,OAAO,KAAK,WAAW,SAAS;AACtC,UAAM,MAAM,MAAM;AAClB,QAAI,sCAAW,GAAG,GAAG;AACnB,UAAI,QACF,cAAc,aAAa,MAAM,CAAC,yBAAS,cAAc,UAAU,IAAI,MAAM,IAAI;AAAA,IACrF,WAAW,OAAO,QAAQ,UAAU;AAClC,YAAM,OAAO,IAAI,OAAO,MAAM,SAAS,MAAM,KAAK,MAAM,OAAO,YAAY,SAAS,IAAI;AACxF,UAAI,QAAQ;AAAA,IACd,OAAO;AACL,UAAI,wBAAM,GAAG,GAAG;AAEd,YAAI,QAAQ,cAAc,KAAK,MAAM,OAAO,YAAY,SAAS;AAAA,MACnE,OAAO;AAEL,YAAI,QAAQ,MAAM;AAAA,MACpB;AAAA,IACF;AACA,QAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,UAAI,WAAI,UAAJ,mBAAY,QAAO,KAAK;AAC1B,gBAAQ,KAAK,uCAA6B,MAAM,SAAS,MAAM,IAAI,KAAK;AAAA,MAC1E;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT,GAjCsB;AAmCtB,MAAM,WAAW,wBACf,KACA,OACA,EAAE,gBACF,OACA,aAAiC,SACjC,cACG;AA7JL;AA8JE,MAAI;AACJ,MAAI,SAAS;AACb,QAAM,YAAY,MAAM,OAAO,MAAM,MAAM,MAAM,CAAC,IAAI;AACtD,MAAI,aAAa,OAAO;AACtB,eAAW,MAAM;AACjB,aAAS;AAAA,EACX,OAAO;AACL,YAAQ;AAAA,WACD;AACH,mBAAW,oBAAa,KAAK,WAAlB,mBAA0B,WAAU;AAC/C,iBAAS;AACT;AAAA,WACG;AACH,mBAAW,oBAAa,KAAK,gBAAlB,mBAA+B,KAAK,WAAU;AACzD,iBAAS;AACT;AAAA,WACG;AACH,mBAAW,oBAAa,KAAK,gBAAlB,mBAA+B,WAAW,WAAU;AAC/D,iBAAS;AACT;AAAA,WACG;AACH,mBAAW,oBAAa,KAAK,gBAAlB,mBAA+B,cAAc,WAAU;AAClE,iBAAS;AACT;AAAA,WACG;AACH,mBAAW,oBAAa,KAAK,gBAAlB,mBAA+B,OAAO,WAAU;AAC3D,iBAAS;AACT;AAAA;AAEJ,eAAW,OAAO,iBAAiB;AACjC,UAAI,OAAO,gBAAgB,MAAM;AAC/B,cAAM,MAAM,aAAa,KAAK;AAC9B,YAAI,KAAK;AACP,qBAAW;AACX,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,QAAQ;AACX,YAAM,WAAW,aAAa,MAAM;AACpC,UAAI,UAAU;AACZ,mBAAW;AACX,iBAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACA,MAAI,QAAQ;AACV,WAAO,iBAAiB,UAAU,SAAS;AAAA,EAC7C;AACA,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,SAAS,MAAM,OAAO,KAAK;AAC7B,cAAQ,KAAK,wCAA8B,OAAO,KAAK;AACvD,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT,GAhEiB;AAkEjB,0BAA0B,UAA0B,YAAkC,QAAQ;AAC5F,MAAI,sCAAW,QAAQ,GAAG;AACxB,QAAI,cAAc,YAAY;AAC5B,aAAO;AAAA,IACT;AACA,QAAI,CAAC,yBAAS,cAAc,SAAS;AACnC,aAAO,SAAS;AAAA,IAClB;AACA,WAAO,SAAS;AAAA,EAClB;AACA,SAAO;AACT;AAXS;AAcT,MAAM,kBAAkB;AAAA,EACtB,QAAQ;AAAA,IACN,cAAc;AAAA,EAChB;AAAA,EACA,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,IACX,UAAU;AAAA,IACV,WAAW;AAAA,EACb;AAAA,EACA,OAAO;AAAA,IACL,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,mBAAmB;AAAA,IACnB,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB;AACF;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,51 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
20
+ var __export = (target, all) => {
21
+ for (var name in all)
22
+ __defProp(target, name, { get: all[name], enumerable: true });
23
+ };
24
+ var __copyProps = (to, from, except, desc) => {
25
+ if (from && typeof from === "object" || typeof from === "function") {
26
+ for (let key of __getOwnPropNames(from))
27
+ if (!__hasOwnProp.call(to, key) && key !== except)
28
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
29
+ }
30
+ return to;
31
+ };
32
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
33
+ var createShallowUpdate_exports = {};
34
+ __export(createShallowUpdate_exports, {
35
+ createShallowUpdate: () => createShallowUpdate
36
+ });
37
+ module.exports = __toCommonJS(createShallowUpdate_exports);
38
+ function createShallowUpdate(setter) {
39
+ return (next) => {
40
+ setter((prev) => {
41
+ for (const key in next) {
42
+ if (prev[key] !== next[key]) {
43
+ return __spreadValues(__spreadValues({}, prev), next);
44
+ }
45
+ }
46
+ return prev;
47
+ });
48
+ };
49
+ }
50
+ __name(createShallowUpdate, "createShallowUpdate");
51
+ //# sourceMappingURL=createShallowUpdate.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/helpers/createShallowUpdate.tsx"],
4
+ "sourcesContent": ["import React from 'react'\n\nimport { TamaguiComponentState } from '../types'\n\nexport function createShallowUpdate(\n setter: React.Dispatch<React.SetStateAction<TamaguiComponentState>>\n) {\n return (next: Partial<TamaguiComponentState>) => {\n setter((prev) => {\n for (const key in next) {\n if (prev[key] !== next[key]) {\n return { ...prev, ...next }\n }\n }\n return prev\n })\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIO,6BACL,QACA;AACA,SAAO,CAAC,SAAyC;AAC/C,WAAO,CAAC,SAAS;AACf,iBAAW,OAAO,MAAM;AACtB,YAAI,KAAK,SAAS,KAAK,MAAM;AAC3B,iBAAO,kCAAK,OAAS;AAAA,QACvB;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;AAbgB;",
6
+ "names": []
7
+ }
@@ -63,11 +63,9 @@ function createTamaguiProvider(_a) {
63
63
  return /* @__PURE__ */ __name(function TamaguiProvider(_a2) {
64
64
  var _b2 = _a2, {
65
65
  injectCSS,
66
- fallback,
67
66
  children
68
67
  } = _b2, themePropsProvider = __objRest(_b2, [
69
68
  "injectCSS",
70
- "fallback",
71
69
  "children"
72
70
  ]);
73
71
  if (typeof document !== "undefined") {
@@ -84,9 +82,7 @@ function createTamaguiProvider(_a) {
84
82
  }
85
83
  return /* @__PURE__ */ React.createElement(import_ButtonInsideButtonContext.ButtonInsideButtonContext.Provider, {
86
84
  value: false
87
- }, /* @__PURE__ */ React.createElement(import_TextAncestorContext.TextAncestorProvider, null, /* @__PURE__ */ React.createElement(import_ThemeProvider.ThemeProvider, __spreadValues(__spreadValues({}, themeProps), themePropsProvider), /* @__PURE__ */ React.createElement(React.Suspense, {
88
- fallback: fallback || null
89
- }, children))));
85
+ }, /* @__PURE__ */ React.createElement(import_TextAncestorContext.TextAncestorProvider, null, /* @__PURE__ */ React.createElement(import_ThemeProvider.ThemeProvider, __spreadValues(__spreadValues({}, themeProps), themePropsProvider), children)));
90
86
  }, "TamaguiProvider");
91
87
  }
92
88
  __name(createTamaguiProvider, "createTamaguiProvider");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/createTamaguiProvider.tsx"],
4
- "sourcesContent": ["import * as React from 'react'\n\nimport { ButtonInsideButtonContext } from '../contexts/ButtonInsideButtonContext'\nimport { TamaguiProviderProps } from '../types'\nimport { TextAncestorProvider } from '../views/TextAncestorContext'\nimport { ThemeProvider, ThemeProviderProps } from '../views/ThemeProvider'\n\nexport function createTamaguiProvider({\n getCSS,\n ...themeProps\n}: ThemeProviderProps & {\n getCSS: () => string\n}) {\n return function TamaguiProvider({\n injectCSS,\n fallback,\n children,\n ...themePropsProvider\n }: TamaguiProviderProps) {\n // inject CSS if asked to (not SSR compliant)\n if (typeof document !== 'undefined') {\n React.useLayoutEffect(() => {\n if (!injectCSS) return\n const style = document.createElement('style')\n style.appendChild(document.createTextNode(getCSS()))\n document.head.appendChild(style)\n return () => {\n document.head.removeChild(style)\n }\n }, [])\n }\n\n return (\n <ButtonInsideButtonContext.Provider value={false}>\n <TextAncestorProvider>\n <ThemeProvider {...themeProps} {...themePropsProvider}>\n <React.Suspense fallback={fallback || null}>{children}</React.Suspense>\n </ThemeProvider>\n </TextAncestorProvider>\n </ButtonInsideButtonContext.Provider>\n )\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAuB;AAEvB,uCAA0C;AAE1C,iCAAqC;AACrC,2BAAkD;AAE3C,+BAA+B,IAKnC;AALmC,eACpC;AAAA;AAAA,MADoC,IAEjC,uBAFiC,IAEjC;AAAA,IADH;AAAA;AAKA,SAAO,gDAAyB,KAKP;AALO,mBAC9B;AAAA;AAAA,MACA;AAAA,MACA;AAAA,QAH8B,KAI3B,+BAJ2B,KAI3B;AAAA,MAHH;AAAA,MACA;AAAA,MACA;AAAA;AAIA,QAAI,OAAO,aAAa,aAAa;AACnC,YAAM,gBAAgB,MAAM;AAC1B,YAAI,CAAC;AAAW;AAChB,cAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,cAAM,YAAY,SAAS,eAAe,OAAO,CAAC,CAAC;AACnD,iBAAS,KAAK,YAAY,KAAK;AAC/B,eAAO,MAAM;AACX,mBAAS,KAAK,YAAY,KAAK;AAAA,QACjC;AAAA,MACF,GAAG,CAAC,CAAC;AAAA,IACP;AAEA,WACE,oCAAC,2DAA0B,UAA1B;AAAA,MAAmC,OAAO;AAAA,OACzC,oCAAC,uDACC,oCAAC,sEAAkB,aAAgB,qBACjC,oCAAC,MAAM,UAAN;AAAA,MAAe,UAAU,YAAY;AAAA,OAAO,QAAS,CACxD,CACF,CACF;AAAA,EAEJ,GA5BO;AA6BT;AAnCgB;",
4
+ "sourcesContent": ["import * as React from 'react'\n\nimport { ButtonInsideButtonContext } from '../contexts/ButtonInsideButtonContext'\nimport { TamaguiProviderProps } from '../types'\nimport { TextAncestorProvider } from '../views/TextAncestorContext'\nimport { ThemeProvider, ThemeProviderProps } from '../views/ThemeProvider'\n\nexport function createTamaguiProvider({\n getCSS,\n ...themeProps\n}: ThemeProviderProps & {\n getCSS: () => string\n}) {\n return function TamaguiProvider({\n injectCSS,\n children,\n ...themePropsProvider\n }: TamaguiProviderProps) {\n // inject CSS if asked to (not SSR compliant)\n if (typeof document !== 'undefined') {\n React.useLayoutEffect(() => {\n if (!injectCSS) return\n const style = document.createElement('style')\n style.appendChild(document.createTextNode(getCSS()))\n document.head.appendChild(style)\n return () => {\n document.head.removeChild(style)\n }\n }, [])\n }\n\n return (\n <ButtonInsideButtonContext.Provider value={false}>\n <TextAncestorProvider>\n <ThemeProvider {...themeProps} {...themePropsProvider}>\n {children}\n </ThemeProvider>\n </TextAncestorProvider>\n </ButtonInsideButtonContext.Provider>\n )\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAuB;AAEvB,uCAA0C;AAE1C,iCAAqC;AACrC,2BAAkD;AAE3C,+BAA+B,IAKnC;AALmC,eACpC;AAAA;AAAA,MADoC,IAEjC,uBAFiC,IAEjC;AAAA,IADH;AAAA;AAKA,SAAO,gDAAyB,KAIP;AAJO,mBAC9B;AAAA;AAAA,MACA;AAAA,QAF8B,KAG3B,+BAH2B,KAG3B;AAAA,MAFH;AAAA,MACA;AAAA;AAIA,QAAI,OAAO,aAAa,aAAa;AACnC,YAAM,gBAAgB,MAAM;AAC1B,YAAI,CAAC;AAAW;AAChB,cAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,cAAM,YAAY,SAAS,eAAe,OAAO,CAAC,CAAC;AACnD,iBAAS,KAAK,YAAY,KAAK;AAC/B,eAAO,MAAM;AACX,mBAAS,KAAK,YAAY,KAAK;AAAA,QACjC;AAAA,MACF,GAAG,CAAC,CAAC;AAAA,IACP;AAEA,WACE,oCAAC,2DAA0B,UAA1B;AAAA,MAAmC,OAAO;AAAA,OACzC,oCAAC,uDACC,oCAAC,sEAAkB,aAAgB,qBAChC,QACH,CACF,CACF;AAAA,EAEJ,GA3BO;AA4BT;AAlCgB;",
6
6
  "names": []
7
7
  }
@@ -32,7 +32,8 @@ var __copyProps = (to, from, except, desc) => {
32
32
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
33
33
  var getSplitStyles_exports = {};
34
34
  __export(getSplitStyles_exports, {
35
- getSplitStyles: () => getSplitStyles
35
+ getSplitStyles: () => getSplitStyles,
36
+ getSubStyle: () => getSubStyle
36
37
  });
37
38
  module.exports = __toCommonJS(getSplitStyles_exports);
38
39
  var import_helpers = require("@tamagui/helpers");
@@ -62,7 +63,6 @@ function normalizeStyleObject(style) {
62
63
  }
63
64
  __name(normalizeStyleObject, "normalizeStyleObject");
64
65
  const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state, defaultClassNames) => {
65
- var _a, _b, _c;
66
66
  const validStyleProps = staticConfig.isText ? import_helpers.stylePropsText : import_helpers.validStyles;
67
67
  const viewProps = {};
68
68
  const style = {};
@@ -77,12 +77,16 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
77
77
  if (val.startsWith("_transform-")) {
78
78
  const isMediaOrPseudo = key !== "transform";
79
79
  const isMedia = isMediaOrPseudo && key[11] === "_";
80
- const isPsuedo = isMediaOrPseudo && !isMedia;
80
+ const isPsuedo = isMediaOrPseudo && key[11] === "0";
81
81
  const namespace = isMedia ? key.split("_")[2] : isPsuedo ? key.split("-")[1] : "transform";
82
82
  if (!import_insertStyleRule.insertedTransforms[val]) {
83
83
  (0, import_insertStyleRule.updateInserted)();
84
84
  }
85
85
  const transform = import_insertStyleRule.insertedTransforms[val];
86
+ if (!transform || transform === "undefined") {
87
+ console.trace("NO TRANSFORM", { key, val }, state);
88
+ return;
89
+ }
86
90
  transforms[namespace] = transforms[namespace] || ["", ""];
87
91
  transforms[namespace][0] += val.replace("_transform", "");
88
92
  transforms[namespace][1] += transform;
@@ -105,7 +109,8 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
105
109
  style[atomicStyle.property] = atomicStyle.value;
106
110
  }
107
111
  }
108
- } else {
112
+ }
113
+ if (state.noClassNames || state.resolveVariablesAs === "value" || state.resolveVariablesAs === "both") {
109
114
  for (const key in cur) {
110
115
  if (key in import_helpers.stylePropsTransform) {
111
116
  (0, import_helpers.mergeTransform)(style, key, cur[key]);
@@ -135,13 +140,16 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
135
140
  }
136
141
  let isMedia = keyInit[0] === "$";
137
142
  let isPseudo = import_helpers.validPseudoKeys[keyInit];
138
- const out = isMedia || isPseudo ? true : staticConfig.propMapper(keyInit, valInit, theme, props, staticConfig, state.resolveVariablesAs);
143
+ const out = isMedia || isPseudo ? true : staticConfig.propMapper(keyInit, valInit, theme, state.fallbackProps || props, state.resolveVariablesAs);
139
144
  const expanded = out === true || !out ? [[keyInit, valInit]] : Object.entries(out);
145
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
146
+ console.log("split style", keyInit, expanded);
147
+ }
140
148
  for (const [key, val] of expanded) {
141
149
  if (val === void 0) {
142
150
  continue;
143
151
  }
144
- if (val && val[0] === "_") {
152
+ if (key !== "target" && val && val[0] === "_") {
145
153
  mergeClassName(key, val);
146
154
  continue;
147
155
  }
@@ -157,12 +165,9 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
157
165
  continue;
158
166
  }
159
167
  pseudos[key] = pseudos[key] || {};
160
- pseudos[key] = getSubStyle(val, staticConfig, theme, props, state.resolveVariablesAs, true);
168
+ pseudos[key] = getSubStyle(val, staticConfig, theme, props, state, true);
161
169
  if (import_platform.isWeb && !state.noClassNames) {
162
170
  const pseudoStyles = (0, import_getStylesAtomic.getStylesAtomic)({ [key]: pseudos[key] });
163
- if ((_b = (_a = pseudoStyles[0]) == null ? void 0 : _a.identifier) == null ? void 0 : _b.includes("undefined")) {
164
- console.warn("undefined bug?", (_c = pseudoStyles[0]) == null ? void 0 : _c.identifier);
165
- }
166
171
  for (const style2 of pseudoStyles) {
167
172
  mergeClassName(`${style2.property}-${key}`, style2.identifier);
168
173
  (0, import_insertStyleRule.insertStyleRule)(style2.identifier, style2.rules[0]);
@@ -173,10 +178,10 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
173
178
  if (isMedia) {
174
179
  const mediaKey = key.slice(1);
175
180
  if (!import_useMedia.mediaQueryConfig[mediaKey]) {
176
- viewProps[key] = valInit;
181
+ viewProps[key] = val;
177
182
  continue;
178
183
  }
179
- const mediaStyle = getSubStyle(valInit, staticConfig, theme, props, state.resolveVariablesAs, true);
184
+ const mediaStyle = getSubStyle(val, staticConfig, theme, props, state, true);
180
185
  if (import_platform.isWeb) {
181
186
  const mediaStyles = (0, import_getStylesAtomic.getStylesAtomic)(mediaStyle);
182
187
  for (const style2 of mediaStyles) {
@@ -228,6 +233,9 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
228
233
  classNames[namespace] = identifier;
229
234
  }
230
235
  }
236
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
237
+ console.log("out", pseudos);
238
+ }
231
239
  return {
232
240
  viewProps,
233
241
  style,
@@ -236,11 +244,11 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
236
244
  classNames
237
245
  };
238
246
  }, "getSplitStyles");
239
- const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props, resolveVariablesAs, avoidDefaultProps) => {
247
+ const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props, state, avoidDefaultProps) => {
240
248
  const styleOut = {};
241
249
  for (const key in styleIn) {
242
250
  const val = styleIn[key];
243
- const out = staticConfig.propMapper(key, val, theme, props, staticConfig, resolveVariablesAs, avoidDefaultProps);
251
+ const out = staticConfig.propMapper(key, val, theme, state.fallbackProps || props, state.resolveVariablesAs, avoidDefaultProps);
244
252
  const expanded = out === true || !out ? [[key, val]] : Object.entries(out);
245
253
  for (const [skey, sval] of expanded) {
246
254
  if (skey in import_helpers.stylePropsTransform) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/getSplitStyles.tsx"],
4
- "sourcesContent": ["import {\n mergeTransform,\n stylePropsText,\n stylePropsTransform,\n validPseudoKeys,\n validStyles,\n} from '@tamagui/helpers'\nimport { ViewStyle } from 'react-native'\n\nimport { isWeb } from '../constants/platform'\nimport { ComponentState } from '../defaultComponentState'\nimport { mediaQueryConfig, mediaState } from '../hooks/useMedia'\nimport {\n MediaKeys,\n MediaQueryKey,\n PsuedoPropKeys,\n StackProps,\n StaticConfigParsed,\n ThemeObject,\n} from '../types'\nimport { createMediaStyle } from './createMediaStyle'\nimport { ResolveVariableTypes } from './createPropMapper'\nimport { fixNativeShadow } from './fixNativeShadow'\nimport { ViewStyleWithPseudos, getStylesAtomic } from './getStylesAtomic'\nimport { insertStyleRule, insertedTransforms, updateInserted } from './insertStyleRule'\n\nexport type SplitStyles = ReturnType<typeof getSplitStyles>\n\nconst skipKeys = {\n // could put events in here\n animation: true,\n animated: true,\n children: true,\n key: true,\n ref: true,\n}\n\nexport type PseudoStyles = {\n hoverStyle?: ViewStyle\n pressStyle?: ViewStyle\n focusStyle?: ViewStyle\n enterStyle?: ViewStyle\n exitStyle?: ViewStyle\n}\n\nexport type ClassNamesObject = Record<string, string>\n\nexport type SplitStyleResult = ReturnType<typeof getSplitStyles>\n\nfunction normalizeStyleObject(style: any) {\n // fix flex to match web\n // see spec for flex shorthand https://developer.mozilla.org/en-US/docs/Web/CSS/flex\n if (typeof style.flex === 'number') {\n const val = style.flex\n delete style.flex\n style.flexGrow = style.flexGrow ?? val\n style.flexShrink = style.flexShrink ?? 1\n }\n\n if (!isWeb) {\n fixNativeShadow(style)\n }\n}\n\ntype TransformNamespaceKey = 'transform' | PsuedoPropKeys | MediaQueryKey\n\n// TODO can make a few of these objects lazy if profiling seems slow\n\nexport const getSplitStyles = (\n props: { [key: string]: any },\n staticConfig: StaticConfigParsed,\n theme: ThemeObject,\n state: Partial<ComponentState> & {\n noClassNames?: boolean\n resolveVariablesAs?: ResolveVariableTypes\n },\n defaultClassNames?: ClassNamesObject | null\n) => {\n const validStyleProps = staticConfig.isText ? stylePropsText : validStyles\n const viewProps: StackProps = {}\n const style: ViewStyle = {}\n const classNames: ClassNamesObject = {\n ...defaultClassNames,\n }\n const pseudos: PseudoStyles = {}\n const medias: Record<MediaKeys, ViewStyle> = {}\n let cur: ViewStyleWithPseudos | null = null\n\n // we need to gather these specific to each media query / pseudo\n // value is [hash, val], so [\"-jnjad-asdnjk\", \"scaleX(1) rotate(10deg)\"]\n let transforms: Record<TransformNamespaceKey, [string, string]> = {}\n\n function mergeClassName(key: string, val: string) {\n if (!val) return\n if (val.startsWith('_transform-')) {\n const isMediaOrPseudo = key !== 'transform'\n const isMedia = isMediaOrPseudo && key[11] === '_'\n const isPsuedo = isMediaOrPseudo && !isMedia\n const namespace: TransformNamespaceKey = isMedia\n ? key.split('_')[2]\n : isPsuedo\n ? key.split('-')[1]\n : 'transform'\n if (!insertedTransforms[val]) {\n // HMR or loaded a new chunk\n updateInserted()\n }\n const transform = insertedTransforms[val]\n // if (!transform) {\n // console.error('NO TRANSFORM', key, val)\n // return\n // }\n transforms[namespace] = transforms[namespace] || ['', '']\n transforms[namespace][0] += val.replace('_transform', '')\n transforms[namespace][1] += transform\n } else {\n classNames[key] = val\n }\n }\n\n function push() {\n if (!cur) return\n normalizeStyleObject(cur)\n if (isWeb && !state.noClassNames) {\n const atomic = getStylesAtomic(cur)\n for (const atomicStyle of atomic) {\n if (!state.noClassNames) {\n mergeClassName(atomicStyle.property, atomicStyle.identifier)\n insertStyleRule(atomicStyle.identifier, atomicStyle.rules[0])\n } else {\n style[atomicStyle.property] = atomicStyle.value\n }\n }\n } else {\n for (const key in cur) {\n if (key in stylePropsTransform) {\n mergeTransform(style, key, cur[key])\n } else {\n style[key] = cur[key]\n }\n }\n }\n // reset it for next group of styles\n cur = null\n }\n\n for (const keyInit in props) {\n const valInit = props[keyInit]\n\n if (skipKeys[keyInit]) {\n viewProps[keyInit] = valInit\n continue\n }\n\n if (\n // isPropClassName\n keyInit === 'className' ||\n // isExtractedClassName\n (validStyleProps[keyInit] && valInit && valInit[0] === '_')\n ) {\n push()\n mergeClassName(keyInit, valInit)\n if (cur) {\n if (cur[keyInit]) console.warn('just want to see how used')\n delete cur[keyInit]\n }\n continue\n }\n\n let isMedia = keyInit[0] === '$'\n let isPseudo = validPseudoKeys[keyInit]\n\n const out =\n isMedia || isPseudo\n ? true\n : staticConfig.propMapper(\n keyInit,\n valInit,\n theme,\n props,\n staticConfig,\n state.resolveVariablesAs\n )\n\n const expanded = out === true || !out ? [[keyInit, valInit]] : Object.entries(out)\n\n for (const [key, val] of expanded) {\n if (val === undefined) {\n continue\n }\n\n if (val && val[0] === '_') {\n mergeClassName(key, val)\n continue\n }\n\n isMedia = key[0] === '$'\n isPseudo = validPseudoKeys[key]\n\n if (\n (staticConfig.deoptProps && staticConfig.deoptProps.has(key)) ||\n (staticConfig.inlineProps && staticConfig.inlineProps.has(key))\n ) {\n viewProps[key] = val\n }\n\n // pseudo\n if (isPseudo) {\n if (!val) continue\n if (key === 'enterStyle' && state.mounted) {\n // once mounted we can ignore enterStyle\n continue\n }\n pseudos[key] = pseudos[key] || {}\n pseudos[key] = getSubStyle(val, staticConfig, theme, props, state.resolveVariablesAs, true)\n if (isWeb && !state.noClassNames) {\n const pseudoStyles = getStylesAtomic({ [key]: pseudos[key] })\n if (pseudoStyles[0]?.identifier?.includes('undefined')) {\n console.warn('undefined bug?', pseudoStyles[0]?.identifier)\n }\n for (const style of pseudoStyles) {\n mergeClassName(`${style.property}-${key}`, style.identifier)\n insertStyleRule(style.identifier, style.rules[0])\n }\n }\n continue\n }\n\n // media\n if (isMedia) {\n const mediaKey = key.slice(1)\n\n if (!mediaQueryConfig[mediaKey]) {\n // this isn't a media key, pass through\n viewProps[key] = valInit\n continue\n }\n\n // dont check if media is active, we just apply *all* media styles\n // we combine the media props on top regular props, could proxy this\n // TODO test proxy here instead of merge\n // THIS USED TO PROXY BACK TO REGULAR PROPS BUT THAT IS THE WRONG BEHAVIOR\n // we avoid passing in default props for media queries because that would confuse things like SizableText.size:\n const mediaStyle = getSubStyle(\n valInit,\n staticConfig,\n theme,\n props,\n state.resolveVariablesAs,\n true\n )\n\n if (isWeb) {\n const mediaStyles = getStylesAtomic(mediaStyle)\n for (const style of mediaStyles) {\n const out = createMediaStyle(style, mediaKey, mediaQueryConfig)\n mergeClassName(`${out.identifier}-${mediaKey}`, out.identifier)\n insertStyleRule(out.identifier, out.styleRule)\n }\n if (mediaState[mediaKey]) {\n Object.assign(medias, mediaStyle)\n }\n } else {\n if (mediaState[mediaKey]) {\n // TODO i think media + pseudo needs handling here\n Object.assign(style, mediaStyle)\n }\n }\n continue\n }\n\n // TODO\n if (key === 'style' || key.startsWith('_style')) {\n push()\n Object.assign(style, val)\n continue\n }\n\n if (!isWeb && key === 'pointerEvents') {\n viewProps[key] = val\n continue\n }\n\n if (validStyleProps[key]) {\n cur = cur || {}\n cur[key] = val\n continue\n }\n\n // pass to view props\n if (!staticConfig.variants || !(key in staticConfig.variants)) {\n if (key !== 'animation' && key !== 'debug') {\n push()\n viewProps[key] = val\n }\n }\n }\n }\n\n push()\n\n if (transforms) {\n for (const namespace in transforms) {\n const [hash, val] = transforms[namespace]\n const identifier = `_transform${hash}`\n if (!insertedTransforms[identifier]) {\n const rule = `.${identifier} { transform: ${val}; }`\n insertStyleRule(identifier, rule)\n }\n classNames[namespace] = identifier\n }\n }\n\n return {\n viewProps,\n style,\n medias,\n pseudos,\n classNames,\n }\n}\n\nconst getSubStyle = (\n styleIn: Object,\n staticConfig: StaticConfigParsed,\n theme: ThemeObject,\n props: any,\n resolveVariablesAs?: ResolveVariableTypes,\n avoidDefaultProps?: boolean\n): ViewStyle => {\n const styleOut: ViewStyle = {}\n for (const key in styleIn) {\n const val = styleIn[key]\n const out = staticConfig.propMapper(\n key,\n val,\n theme,\n props,\n staticConfig,\n resolveVariablesAs,\n avoidDefaultProps\n )\n const expanded = out === true || !out ? [[key, val]] : Object.entries(out)\n for (const [skey, sval] of expanded) {\n if (skey in stylePropsTransform) {\n mergeTransform(styleOut, skey, sval)\n } else {\n styleOut[skey] = sval\n }\n }\n }\n normalizeStyleObject(styleOut)\n return styleOut\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n mergeTransform,\n stylePropsText,\n stylePropsTransform,\n validPseudoKeys,\n validStyles,\n} from '@tamagui/helpers'\nimport { ViewStyle } from 'react-native'\n\nimport { isWeb } from '../constants/platform'\nimport { mediaQueryConfig, mediaState } from '../hooks/useMedia'\nimport {\n MediaKeys,\n MediaQueryKey,\n PseudoStyles,\n PsuedoPropKeys,\n SplitStyleState,\n StackProps,\n StaticConfigParsed,\n ThemeObject,\n} from '../types'\nimport { createMediaStyle } from './createMediaStyle'\nimport { ResolveVariableTypes } from './createPropMapper'\nimport { fixNativeShadow } from './fixNativeShadow'\nimport { ViewStyleWithPseudos, getStylesAtomic } from './getStylesAtomic'\nimport { insertStyleRule, insertedTransforms, updateInserted } from './insertStyleRule'\n\nexport type SplitStyles = ReturnType<typeof getSplitStyles>\n\nconst skipKeys = {\n // could put events in here\n animation: true,\n animated: true,\n children: true,\n key: true,\n ref: true,\n}\n\nexport type ClassNamesObject = Record<string, string>\n\nexport type SplitStyleResult = ReturnType<typeof getSplitStyles>\n\nfunction normalizeStyleObject(style: any) {\n // fix flex to match web\n // see spec for flex shorthand https://developer.mozilla.org/en-US/docs/Web/CSS/flex\n if (typeof style.flex === 'number') {\n const val = style.flex\n delete style.flex\n style.flexGrow = style.flexGrow ?? val\n style.flexShrink = style.flexShrink ?? 1\n }\n\n if (!isWeb) {\n fixNativeShadow(style)\n }\n}\n\ntype TransformNamespaceKey = 'transform' | PsuedoPropKeys | MediaQueryKey\n\n// TODO can make a few of these objects lazy if profiling seems slow\n\nexport const getSplitStyles = (\n props: { [key: string]: any },\n staticConfig: StaticConfigParsed,\n theme: ThemeObject,\n state: SplitStyleState,\n defaultClassNames?: ClassNamesObject | null\n) => {\n const validStyleProps = staticConfig.isText ? stylePropsText : validStyles\n const viewProps: StackProps = {}\n const style: ViewStyle = {}\n const classNames: ClassNamesObject = {\n ...defaultClassNames,\n }\n const pseudos: PseudoStyles = {}\n const medias: Record<MediaKeys, ViewStyle> = {}\n let cur: ViewStyleWithPseudos | null = null\n\n // we need to gather these specific to each media query / pseudo\n // value is [hash, val], so [\"-jnjad-asdnjk\", \"scaleX(1) rotate(10deg)\"]\n let transforms: Record<TransformNamespaceKey, [string, string]> = {}\n\n function mergeClassName(key: string, val: string) {\n if (!val) return\n if (val.startsWith('_transform-')) {\n const isMediaOrPseudo = key !== 'transform'\n const isMedia = isMediaOrPseudo && key[11] === '_'\n const isPsuedo = isMediaOrPseudo && key[11] === '0'\n const namespace: TransformNamespaceKey = isMedia\n ? key.split('_')[2]\n : isPsuedo\n ? key.split('-')[1]\n : 'transform'\n\n if (!insertedTransforms[val]) {\n // HMR or loaded a new chunk\n updateInserted()\n }\n const transform = insertedTransforms[val]\n if (!transform || transform === 'undefined') {\n console.trace('NO TRANSFORM', { key, val }, state)\n return\n }\n transforms[namespace] = transforms[namespace] || ['', '']\n transforms[namespace][0] += val.replace('_transform', '')\n transforms[namespace][1] += transform\n } else {\n classNames[key] = val\n }\n }\n\n function push() {\n if (!cur) return\n normalizeStyleObject(cur)\n\n if (isWeb && !state.noClassNames) {\n const atomic = getStylesAtomic(cur)\n for (const atomicStyle of atomic) {\n if (!state.noClassNames) {\n mergeClassName(atomicStyle.property, atomicStyle.identifier)\n insertStyleRule(atomicStyle.identifier, atomicStyle.rules[0])\n } else {\n style[atomicStyle.property] = atomicStyle.value\n }\n }\n }\n\n if (\n state.noClassNames ||\n state.resolveVariablesAs === 'value' ||\n state.resolveVariablesAs === 'both'\n ) {\n for (const key in cur) {\n if (key in stylePropsTransform) {\n mergeTransform(style, key, cur[key])\n } else {\n style[key] = cur[key]\n }\n }\n }\n\n // reset it for next group of styles\n cur = null\n }\n\n for (const keyInit in props) {\n const valInit = props[keyInit]\n\n if (skipKeys[keyInit]) {\n viewProps[keyInit] = valInit\n continue\n }\n\n if (\n // isPropClassName\n keyInit === 'className' ||\n // isExtractedClassName\n (validStyleProps[keyInit] && valInit && valInit[0] === '_')\n ) {\n push()\n mergeClassName(keyInit, valInit)\n if (cur) {\n if (cur[keyInit]) console.warn('just want to see how used')\n delete cur[keyInit]\n }\n continue\n }\n\n let isMedia = keyInit[0] === '$'\n let isPseudo = validPseudoKeys[keyInit]\n\n const out =\n isMedia || isPseudo\n ? true\n : staticConfig.propMapper(\n keyInit,\n valInit,\n theme,\n state.fallbackProps || props,\n state.resolveVariablesAs\n )\n\n const expanded = out === true || !out ? [[keyInit, valInit]] : Object.entries(out)\n\n if (process.env.NODE_ENV === 'development' && props['debug'] === 'verbose') {\n console.log('split style', keyInit, expanded)\n }\n\n for (const [key, val] of expanded) {\n if (val === undefined) {\n continue\n }\n\n if (key !== 'target' && val && val[0] === '_') {\n mergeClassName(key, val)\n continue\n }\n\n isMedia = key[0] === '$'\n isPseudo = validPseudoKeys[key]\n\n if (\n (staticConfig.deoptProps && staticConfig.deoptProps.has(key)) ||\n (staticConfig.inlineProps && staticConfig.inlineProps.has(key))\n ) {\n viewProps[key] = val\n }\n\n // pseudo\n if (isPseudo) {\n if (!val) continue\n if (key === 'enterStyle' && state.mounted) {\n // once mounted we can ignore enterStyle\n continue\n }\n pseudos[key] = pseudos[key] || {}\n pseudos[key] = getSubStyle(val, staticConfig, theme, props, state, true)\n if (isWeb && !state.noClassNames) {\n const pseudoStyles = getStylesAtomic({ [key]: pseudos[key] })\n for (const style of pseudoStyles) {\n mergeClassName(`${style.property}-${key}`, style.identifier)\n insertStyleRule(style.identifier, style.rules[0])\n }\n }\n continue\n }\n\n // media\n if (isMedia) {\n const mediaKey = key.slice(1)\n\n if (!mediaQueryConfig[mediaKey]) {\n // this isn't a media key, pass through\n viewProps[key] = val\n continue\n }\n\n // dont check if media is active, we just apply *all* media styles\n // we combine the media props on top regular props, could proxy this\n // TODO test proxy here instead of merge\n // THIS USED TO PROXY BACK TO REGULAR PROPS BUT THAT IS THE WRONG BEHAVIOR\n // we avoid passing in default props for media queries because that would confuse things like SizableText.size:\n const mediaStyle = getSubStyle(val, staticConfig, theme, props, state, true)\n\n if (isWeb) {\n const mediaStyles = getStylesAtomic(mediaStyle)\n for (const style of mediaStyles) {\n const out = createMediaStyle(style, mediaKey, mediaQueryConfig)\n mergeClassName(`${out.identifier}-${mediaKey}`, out.identifier)\n insertStyleRule(out.identifier, out.styleRule)\n }\n if (mediaState[mediaKey]) {\n Object.assign(medias, mediaStyle)\n }\n } else {\n if (mediaState[mediaKey]) {\n // TODO i think media + pseudo needs handling here\n Object.assign(style, mediaStyle)\n }\n }\n continue\n }\n\n // TODO\n if (key === 'style' || key.startsWith('_style')) {\n push()\n Object.assign(style, val)\n continue\n }\n\n if (!isWeb && key === 'pointerEvents') {\n viewProps[key] = val\n continue\n }\n\n if (validStyleProps[key]) {\n cur = cur || {}\n cur[key] = val\n continue\n }\n\n // pass to view props\n if (!staticConfig.variants || !(key in staticConfig.variants)) {\n if (key !== 'animation' && key !== 'debug') {\n push()\n viewProps[key] = val\n }\n }\n }\n }\n\n push()\n\n if (transforms) {\n for (const namespace in transforms) {\n const [hash, val] = transforms[namespace]\n const identifier = `_transform${hash}`\n if (!insertedTransforms[identifier]) {\n const rule = `.${identifier} { transform: ${val}; }`\n insertStyleRule(identifier, rule)\n }\n classNames[namespace] = identifier\n }\n }\n\n if (process.env.NODE_ENV === 'development' && props['debug'] === 'verbose') {\n console.log('out', pseudos)\n }\n\n return {\n viewProps,\n style,\n medias,\n pseudos,\n classNames,\n }\n}\n\nexport const getSubStyle = (\n styleIn: Object,\n staticConfig: StaticConfigParsed,\n theme: ThemeObject,\n props: any,\n state: SplitStyleState,\n avoidDefaultProps?: boolean\n): ViewStyle => {\n const styleOut: ViewStyle = {}\n for (const key in styleIn) {\n const val = styleIn[key]\n const out = staticConfig.propMapper(\n key,\n val,\n theme,\n state.fallbackProps || props,\n state.resolveVariablesAs,\n avoidDefaultProps\n )\n const expanded = out === true || !out ? [[key, val]] : Object.entries(out)\n for (const [skey, sval] of expanded) {\n if (skey in stylePropsTransform) {\n mergeTransform(styleOut, skey, sval)\n } else {\n styleOut[skey] = sval\n }\n }\n }\n normalizeStyleObject(styleOut)\n return styleOut\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -101,6 +101,7 @@ function getAtomicStyle(style, pseudo, options) {
101
101
  atomicStyles[key] = __spreadProps(__spreadValues({}, out[key]), {
102
102
  transformProperty
103
103
  });
104
+ console.log("got", JSON.stringify({ t, tKey, out, key, atomicStyles }, null, 2));
104
105
  }
105
106
  } else {
106
107
  atomicStyles = generateAtomicStyles(style);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/getStylesAtomic.ts"],
4
- "sourcesContent": ["import {\n StyleObject,\n invertMapTransformKeys,\n mergeTransform,\n stylePropsTransform,\n} from '@tamagui/helpers'\nimport { ViewStyle } from 'react-native'\n\nimport { rnw } from '../constants/rnw'\nimport { isVariable } from '../createVariable'\n\n// NOTE: going to refactor and merge getSplitStyles + getAtomicStyles into one\n// before i can do that need to not rely on rnw for generateAtomicStyles\n// will change that to not be external at all and just logically do it in the\n// merged getSplitStyles/getAtomicStyles file in one loop.\n\nexport type ViewStyleWithPseudos = ViewStyle & {\n hoverStyle?: ViewStyle\n pressStyle?: ViewStyle\n focusStyle?: ViewStyle\n}\n\ntype AtomicStyleOptions = {\n splitTransforms?: boolean\n}\n\nexport function getStylesAtomic(stylesIn: ViewStyleWithPseudos, options: AtomicStyleOptions = {}) {\n const { hoverStyle, pressStyle, focusStyle, ...base } = stylesIn\n let res: StyleObject[] = []\n\n // *1 order matched to *0\n for (const [index, style] of [hoverStyle, pressStyle, focusStyle, base].entries()) {\n if (!style || !Object.keys(style).length) {\n continue\n }\n const pseudo = pseudosOrdered[index]\n for (const skey in style) {\n const val = style[skey]\n if (isVariable(val)) {\n style[skey] = val.toString()\n }\n if (stylePropsTransform[skey]) {\n delete style[skey]\n mergeTransform(style, skey, val)\n }\n }\n res = [...res, ...getAtomicStyle(style, pseudo, options)]\n }\n\n return res\n}\n\nconst generateAtomicStyles = (style: ViewStyle) => {\n return rnw.atomic(rnw.createCompileableStyle(rnw.createReactDOMStyle(style))) as {\n [key: string]: StyleObject\n }\n}\n\nfunction getAtomicStyle(\n style: ViewStyle,\n pseudo: { name: string; priority: number } | undefined,\n options: AtomicStyleOptions\n): StyleObject[] {\n if (style == null || typeof style !== 'object') {\n throw new Error(`Wrong style type: \"${typeof style}\": ${style}`)\n }\n\n // why is this diff from react-native-web!? need to figure out\n for (const key in borderDefaults) {\n if (key in style) {\n style[borderDefaults[key]] = style[borderDefaults[key]] ?? 'solid'\n }\n }\n\n let atomicStyles: { [key: string]: StyleObject & { transformProperty?: string } } = {}\n\n if (options.splitTransforms && style.transform) {\n let { transform, ...rest } = style\n Object.assign(atomicStyles, generateAtomicStyles(rest))\n for (const t of transform) {\n const tKey = Object.keys(t)[0]\n const transformProperty = invertMapTransformKeys[tKey] || tKey\n const out = generateAtomicStyles({ transform: [t] })\n const key = Object.keys(out)[0]\n atomicStyles[key] = {\n ...out[key],\n transformProperty,\n }\n }\n } else {\n // TODO we can do this all in one loop likely inside getSplitStyles in existing loop and avoid O(n^3)...\n atomicStyles = generateAtomicStyles(style)\n }\n\n // TODO ... and then also avoid this loop! n^4\n return Object.keys(atomicStyles).map((key) => {\n const val = atomicStyles[key]\n // r-transform-1ns13n\n const [_, ogProperty, hash] = val.identifier.split('-')\n // pseudos have a `--` to be easier to find with concatClassNames\n const psuedoPrefix = pseudo ? `0${pseudo.name}-` : ''\n const identifier = `_${ogProperty}-${psuedoPrefix}${hash}`\n const className = `.${identifier}`\n const rules = val.rules.map((rule) => {\n if (pseudo) {\n const psuedoPrefixSelect = [...Array(pseudo.priority)].map(() => ':root').join('') + ' '\n let res = rule\n .replace(`.${val.identifier}`, `${psuedoPrefixSelect} ${className}`)\n .replace('{', `:${pseudo.name}{`)\n\n if (pseudo.name === 'hover') {\n // hover styles need to be conditional\n // perhaps this can be generalized but for now lets just shortcut\n // and hardcode for hover styles, if we need to later we can\n // WEIRD SYNTAX, SEE:\n // https://stackoverflow.com/questions/40532204/media-query-for-devices-supporting-hover\n res = `@media not all and (hover: none) { ${res} }`\n }\n return res\n }\n return rule.replace(`.${val.identifier}`, className).replace(importantRegex, '')\n })\n\n const result: StyleObject = {\n property: val.transformProperty || val.property,\n value: val.value,\n identifier,\n className,\n rules,\n }\n\n return result\n })\n}\n\nconst importantRegex = /\\!important*/g\n\nconst borderDefaults = {\n borderWidth: 'borderStyle',\n borderBottomWidth: 'borderBottomStyle',\n borderTopWidth: 'borderTopStyle',\n borderLeftWidth: 'borderLeftStyle',\n borderRightWidth: 'borderRightStyle',\n}\n\n// *0 order matches to *1\nexport const pseudos = {\n hoverStyle: {\n name: 'hover',\n priority: 1,\n },\n pressStyle: {\n name: 'active',\n priority: 2,\n },\n focusStyle: {\n name: 'focus',\n priority: 3,\n },\n}\n\nconst pseudosOrdered = Object.values(pseudos)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n StyleObject,\n invertMapTransformKeys,\n mergeTransform,\n stylePropsTransform,\n} from '@tamagui/helpers'\nimport { ViewStyle } from 'react-native'\n\nimport { rnw } from '../constants/rnw'\nimport { isVariable } from '../createVariable'\n\n// NOTE: going to refactor and merge getSplitStyles + getAtomicStyles into one\n// before i can do that need to not rely on rnw for generateAtomicStyles\n// will change that to not be external at all and just logically do it in the\n// merged getSplitStyles/getAtomicStyles file in one loop.\n\nexport type ViewStyleWithPseudos = ViewStyle & {\n hoverStyle?: ViewStyle\n pressStyle?: ViewStyle\n focusStyle?: ViewStyle\n}\n\ntype AtomicStyleOptions = {\n splitTransforms?: boolean\n}\n\nexport function getStylesAtomic(stylesIn: ViewStyleWithPseudos, options: AtomicStyleOptions = {}) {\n const { hoverStyle, pressStyle, focusStyle, ...base } = stylesIn\n let res: StyleObject[] = []\n\n // *1 order matched to *0\n for (const [index, style] of [hoverStyle, pressStyle, focusStyle, base].entries()) {\n if (!style || !Object.keys(style).length) {\n continue\n }\n const pseudo = pseudosOrdered[index]\n for (const skey in style) {\n const val = style[skey]\n if (isVariable(val)) {\n style[skey] = val.toString()\n }\n if (stylePropsTransform[skey]) {\n delete style[skey]\n mergeTransform(style, skey, val)\n }\n }\n res = [...res, ...getAtomicStyle(style, pseudo, options)]\n }\n\n return res\n}\n\nconst generateAtomicStyles = (style: ViewStyle) => {\n return rnw.atomic(rnw.createCompileableStyle(rnw.createReactDOMStyle(style))) as {\n [key: string]: StyleObject\n }\n}\n\nfunction getAtomicStyle(\n style: ViewStyle,\n pseudo: { name: string; priority: number } | undefined,\n options: AtomicStyleOptions\n): StyleObject[] {\n if (style == null || typeof style !== 'object') {\n throw new Error(`Wrong style type: \"${typeof style}\": ${style}`)\n }\n\n // why is this diff from react-native-web!? need to figure out\n for (const key in borderDefaults) {\n if (key in style) {\n style[borderDefaults[key]] = style[borderDefaults[key]] ?? 'solid'\n }\n }\n\n let atomicStyles: { [key: string]: StyleObject & { transformProperty?: string } } = {}\n\n if (options.splitTransforms && style.transform) {\n let { transform, ...rest } = style\n Object.assign(atomicStyles, generateAtomicStyles(rest))\n for (const t of transform) {\n const tKey = Object.keys(t)[0]\n const transformProperty = invertMapTransformKeys[tKey] || tKey\n const out = generateAtomicStyles({ transform: [t] })\n const key = Object.keys(out)[0]\n atomicStyles[key] = {\n ...out[key],\n transformProperty,\n }\n console.log('got', JSON.stringify({ t, tKey, out, key, atomicStyles }, null, 2))\n }\n } else {\n // TODO we can do this all in one loop likely inside getSplitStyles in existing loop and avoid O(n^3)...\n atomicStyles = generateAtomicStyles(style)\n }\n\n // TODO ... and then also avoid this loop! n^4\n return Object.keys(atomicStyles).map((key) => {\n const val = atomicStyles[key]\n // r-transform-1ns13n\n const [_, ogProperty, hash] = val.identifier.split('-')\n // pseudos have a `--` to be easier to find with concatClassNames\n const psuedoPrefix = pseudo ? `0${pseudo.name}-` : ''\n const identifier = `_${ogProperty}-${psuedoPrefix}${hash}`\n const className = `.${identifier}`\n const rules = val.rules.map((rule) => {\n if (pseudo) {\n const psuedoPrefixSelect = [...Array(pseudo.priority)].map(() => ':root').join('') + ' '\n let res = rule\n .replace(`.${val.identifier}`, `${psuedoPrefixSelect} ${className}`)\n .replace('{', `:${pseudo.name}{`)\n\n if (pseudo.name === 'hover') {\n // hover styles need to be conditional\n // perhaps this can be generalized but for now lets just shortcut\n // and hardcode for hover styles, if we need to later we can\n // WEIRD SYNTAX, SEE:\n // https://stackoverflow.com/questions/40532204/media-query-for-devices-supporting-hover\n res = `@media not all and (hover: none) { ${res} }`\n }\n return res\n }\n return rule.replace(`.${val.identifier}`, className).replace(importantRegex, '')\n })\n\n const result: StyleObject = {\n property: val.transformProperty || val.property,\n value: val.value,\n identifier,\n className,\n rules,\n }\n\n return result\n })\n}\n\nconst importantRegex = /\\!important*/g\n\nconst borderDefaults = {\n borderWidth: 'borderStyle',\n borderBottomWidth: 'borderBottomStyle',\n borderTopWidth: 'borderTopStyle',\n borderLeftWidth: 'borderLeftStyle',\n borderRightWidth: 'borderRightStyle',\n}\n\n// *0 order matches to *1\nexport const pseudos = {\n hoverStyle: {\n name: 'hover',\n priority: 1,\n },\n pressStyle: {\n name: 'active',\n priority: 2,\n },\n focusStyle: {\n name: 'focus',\n priority: 3,\n },\n}\n\nconst pseudosOrdered = Object.values(pseudos)\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -45,8 +45,9 @@ function addTransform(identifier, rule) {
45
45
  }
46
46
  __name(addTransform, "addTransform");
47
47
  let hasInsertedSinceUpdate = true;
48
+ const isClient = typeof document !== "undefined";
48
49
  function updateInserted() {
49
- if (typeof document === "undefined") {
50
+ if (!isClient) {
50
51
  return;
51
52
  }
52
53
  if (!hasInsertedSinceUpdate) {
@@ -59,17 +60,18 @@ function updateInserted() {
59
60
  for (let i = 0; i < sheets.length; i++) {
60
61
  const rules = sheets[i].cssRules;
61
62
  const firstRule = rules[0];
62
- if (!firstRule)
63
+ if (!(firstRule instanceof CSSStyleRule))
63
64
  continue;
64
- const firstSelector = firstRule["selectorText"];
65
+ const firstSelector = firstRule.selectorText;
65
66
  if (!firstSelector)
66
67
  continue;
67
68
  if (firstSelector === ":root" || firstSelector.startsWith("._")) {
68
- for (const rule of rules) {
69
- if (!rule.selectorText)
69
+ for (let i2 = 0; i2 < rules.length; i2++) {
70
+ const rule = rules.item(i2);
71
+ if (!(rule instanceof CSSStyleRule))
70
72
  continue;
71
73
  const identifier = rule.selectorText.slice(1);
72
- allSelectors[identifier] = true;
74
+ allSelectors[identifier] = process.env.NODE_ENV === "development" ? rule.cssText : true;
73
75
  if (identifier.startsWith("_transform")) {
74
76
  addTransform(identifier, rule.cssText);
75
77
  }
@@ -86,6 +88,9 @@ function insertStyleRule(identifier, rule) {
86
88
  return;
87
89
  }
88
90
  hasInsertedSinceUpdate = true;
91
+ if (identifier === "_transform-1abwpjw") {
92
+ console.trace("inserting", identifier, rule);
93
+ }
89
94
  insertedSelectors[identifier] = rule;
90
95
  allSelectors[identifier] = process.env.NODE_ENV === "development" ? rule : true;
91
96
  if (identifier.startsWith("_transform")) {