@tamagui/static 1.1.7 → 1.1.9

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 (155) hide show
  1. package/dist/{constants.js → cjs/constants.js} +4 -0
  2. package/dist/{constants.js.map → cjs/constants.js.map} +2 -2
  3. package/dist/{extractor → cjs/extractor}/accessSafe.js +7 -0
  4. package/dist/cjs/extractor/accessSafe.js.map +7 -0
  5. package/dist/{extractor → cjs/extractor}/babelParse.js +4 -0
  6. package/dist/cjs/extractor/babelParse.js.map +7 -0
  7. package/dist/{extractor → cjs/extractor}/buildClassName.js +9 -1
  8. package/dist/cjs/extractor/buildClassName.js.map +7 -0
  9. package/dist/{extractor → cjs/extractor}/bundle.js +7 -3
  10. package/dist/cjs/extractor/bundle.js.map +7 -0
  11. package/dist/{extractor → cjs/extractor}/createEvaluator.js +4 -0
  12. package/dist/cjs/extractor/createEvaluator.js.map +7 -0
  13. package/dist/{extractor → cjs/extractor}/createExtractor.js +34 -6
  14. package/dist/cjs/extractor/createExtractor.js.map +7 -0
  15. package/dist/{extractor → cjs/extractor}/ensureImportingConcat.js +4 -0
  16. package/dist/cjs/extractor/ensureImportingConcat.js.map +7 -0
  17. package/dist/{extractor → cjs/extractor}/evaluateAstNode.js +4 -0
  18. package/dist/cjs/extractor/evaluateAstNode.js.map +7 -0
  19. package/dist/{extractor → cjs/extractor}/extractHelpers.js +8 -1
  20. package/dist/cjs/extractor/extractHelpers.js.map +7 -0
  21. package/dist/{extractor → cjs/extractor}/extractMediaStyle.js +4 -0
  22. package/dist/cjs/extractor/extractMediaStyle.js.map +7 -0
  23. package/dist/{extractor → cjs/extractor}/extractToClassNames.js +6 -3
  24. package/dist/cjs/extractor/extractToClassNames.js.map +7 -0
  25. package/dist/{extractor → cjs/extractor}/findTopmostFunction.js +0 -0
  26. package/dist/{extractor → cjs/extractor}/findTopmostFunction.js.map +1 -1
  27. package/dist/{extractor → cjs/extractor}/generatedUid.js +4 -0
  28. package/dist/cjs/extractor/generatedUid.js.map +7 -0
  29. package/dist/{extractor → cjs/extractor}/getPrefixLogs.js +0 -0
  30. package/dist/{extractor → cjs/extractor}/getPrefixLogs.js.map +1 -1
  31. package/dist/{extractor → cjs/extractor}/getPropValueFromAttributes.js +8 -1
  32. package/dist/cjs/extractor/getPropValueFromAttributes.js.map +7 -0
  33. package/dist/{extractor → cjs/extractor}/getSourceModule.js +9 -1
  34. package/dist/cjs/extractor/getSourceModule.js.map +7 -0
  35. package/dist/{extractor → cjs/extractor}/getStaticBindingsForScope.js +4 -0
  36. package/dist/cjs/extractor/getStaticBindingsForScope.js.map +7 -0
  37. package/dist/{extractor → cjs/extractor}/hoistClassNames.js +5 -0
  38. package/dist/cjs/extractor/hoistClassNames.js.map +7 -0
  39. package/dist/{extractor → cjs/extractor}/literalToAst.js +5 -0
  40. package/dist/cjs/extractor/literalToAst.js.map +7 -0
  41. package/dist/{extractor → cjs/extractor}/loadFile.js +0 -0
  42. package/dist/{extractor → cjs/extractor}/loadFile.js.map +1 -1
  43. package/dist/{extractor → cjs/extractor}/loadTamagui.js +12 -5
  44. package/dist/cjs/extractor/loadTamagui.js.map +7 -0
  45. package/dist/{extractor → cjs/extractor}/logLines.js +0 -0
  46. package/dist/{extractor → cjs/extractor}/logLines.js.map +2 -2
  47. package/dist/{extractor → cjs/extractor}/normalizeTernaries.js +4 -0
  48. package/dist/cjs/extractor/normalizeTernaries.js.map +7 -0
  49. package/dist/{extractor → cjs/extractor}/removeUnusedHooks.js +4 -0
  50. package/dist/cjs/extractor/removeUnusedHooks.js.map +7 -0
  51. package/dist/{extractor → cjs/extractor}/timer.js +0 -0
  52. package/dist/{extractor → cjs/extractor}/timer.js.map +1 -1
  53. package/dist/{extractor → cjs/extractor}/validHTMLAttributes.js +0 -0
  54. package/dist/{extractor → cjs/extractor}/validHTMLAttributes.js.map +1 -1
  55. package/dist/{getPragmaOptions.js → cjs/getPragmaOptions.js} +0 -0
  56. package/dist/{getPragmaOptions.js.map → cjs/getPragmaOptions.js.map} +2 -2
  57. package/dist/{helpers → cjs/helpers}/memoize.js +0 -0
  58. package/dist/{helpers → cjs/helpers}/memoize.js.map +2 -2
  59. package/dist/{index.js → cjs/index.js} +0 -0
  60. package/dist/{index.js.map → cjs/index.js.map} +1 -1
  61. package/dist/{require.js → cjs/require.js} +2 -1
  62. package/dist/{require.js.map → cjs/require.js.map} +2 -2
  63. package/dist/{types.js → cjs/types.js} +0 -0
  64. package/dist/cjs/types.js.map +7 -0
  65. package/dist/{webpackPlugin.js → cjs/webpackPlugin.js} +0 -0
  66. package/dist/{webpackPlugin.js.map → cjs/webpackPlugin.js.map} +1 -1
  67. package/dist/esm/constants.js +15 -0
  68. package/dist/esm/constants.js.map +7 -0
  69. package/dist/esm/extractor/accessSafe.js +19 -0
  70. package/dist/{extractor → esm/extractor}/accessSafe.js.map +2 -2
  71. package/dist/esm/extractor/babelParse.js +32 -0
  72. package/dist/{extractor → esm/extractor}/babelParse.js.map +2 -2
  73. package/dist/esm/extractor/buildClassName.js +65 -0
  74. package/dist/{extractor → esm/extractor}/buildClassName.js.map +2 -2
  75. package/dist/esm/extractor/bundle.js +86 -0
  76. package/dist/esm/extractor/bundle.js.map +7 -0
  77. package/dist/esm/extractor/createEvaluator.js +52 -0
  78. package/dist/esm/extractor/createEvaluator.js.map +7 -0
  79. package/dist/esm/extractor/createExtractor.js +1612 -0
  80. package/dist/esm/extractor/createExtractor.js.map +7 -0
  81. package/dist/esm/extractor/ensureImportingConcat.js +31 -0
  82. package/dist/{extractor → esm/extractor}/ensureImportingConcat.js.map +2 -2
  83. package/dist/esm/extractor/evaluateAstNode.js +97 -0
  84. package/dist/{extractor → esm/extractor}/evaluateAstNode.js.map +2 -2
  85. package/dist/esm/extractor/extractHelpers.js +162 -0
  86. package/dist/esm/extractor/extractHelpers.js.map +7 -0
  87. package/dist/esm/extractor/extractMediaStyle.js +159 -0
  88. package/dist/{extractor → esm/extractor}/extractMediaStyle.js.map +2 -2
  89. package/dist/esm/extractor/extractToClassNames.js +381 -0
  90. package/dist/esm/extractor/extractToClassNames.js.map +7 -0
  91. package/dist/esm/extractor/findTopmostFunction.js +20 -0
  92. package/dist/esm/extractor/findTopmostFunction.js.map +7 -0
  93. package/dist/esm/extractor/generatedUid.js +26 -0
  94. package/dist/{extractor → esm/extractor}/generatedUid.js.map +2 -2
  95. package/dist/esm/extractor/getPrefixLogs.js +8 -0
  96. package/dist/esm/extractor/getPrefixLogs.js.map +7 -0
  97. package/dist/esm/extractor/getPropValueFromAttributes.js +56 -0
  98. package/dist/{extractor → esm/extractor}/getPropValueFromAttributes.js.map +4 -4
  99. package/dist/esm/extractor/getSourceModule.js +70 -0
  100. package/dist/{extractor → esm/extractor}/getSourceModule.js.map +2 -2
  101. package/dist/esm/extractor/getStaticBindingsForScope.js +191 -0
  102. package/dist/{extractor → esm/extractor}/getStaticBindingsForScope.js.map +2 -2
  103. package/dist/esm/extractor/hoistClassNames.js +41 -0
  104. package/dist/{extractor → esm/extractor}/hoistClassNames.js.map +2 -2
  105. package/dist/esm/extractor/literalToAst.js +81 -0
  106. package/dist/{extractor → esm/extractor}/literalToAst.js.map +2 -2
  107. package/dist/esm/extractor/loadFile.js +20 -0
  108. package/dist/esm/extractor/loadFile.js.map +7 -0
  109. package/dist/esm/extractor/loadTamagui.js +411 -0
  110. package/dist/esm/extractor/loadTamagui.js.map +7 -0
  111. package/dist/esm/extractor/logLines.js +20 -0
  112. package/dist/esm/extractor/logLines.js.map +7 -0
  113. package/dist/esm/extractor/normalizeTernaries.js +52 -0
  114. package/dist/esm/extractor/normalizeTernaries.js.map +7 -0
  115. package/dist/esm/extractor/removeUnusedHooks.js +76 -0
  116. package/dist/{extractor → esm/extractor}/removeUnusedHooks.js.map +2 -2
  117. package/dist/esm/extractor/timer.js +29 -0
  118. package/dist/esm/extractor/timer.js.map +7 -0
  119. package/dist/esm/extractor/validHTMLAttributes.js +102 -0
  120. package/dist/esm/extractor/validHTMLAttributes.js.map +7 -0
  121. package/dist/esm/getPragmaOptions.js +44 -0
  122. package/dist/esm/getPragmaOptions.js.map +7 -0
  123. package/dist/esm/helpers/memoize.js +22 -0
  124. package/dist/esm/helpers/memoize.js.map +7 -0
  125. package/dist/esm/index.js +16 -0
  126. package/dist/esm/index.js.map +7 -0
  127. package/dist/esm/require.js +61 -0
  128. package/dist/esm/require.js.map +7 -0
  129. package/dist/esm/types.js +1 -0
  130. package/dist/esm/types.js.map +7 -0
  131. package/dist/esm/webpackPlugin.js +11 -0
  132. package/dist/esm/webpackPlugin.js.map +7 -0
  133. package/package.json +18 -18
  134. package/src/extractor/bundle.ts +2 -2
  135. package/src/extractor/createEvaluator.ts +1 -0
  136. package/src/extractor/createExtractor.ts +1 -0
  137. package/src/extractor/extractHelpers.ts +14 -5
  138. package/src/extractor/extractToClassNames.ts +2 -2
  139. package/src/extractor/getPropValueFromAttributes.ts +4 -1
  140. package/src/extractor/loadTamagui.ts +12 -7
  141. package/src/extractor/normalizeTernaries.ts +1 -0
  142. package/src/types.ts +7 -4
  143. package/types/extractor/bundle.d.ts +2 -2
  144. package/types/extractor/createExtractor.d.ts +1 -1
  145. package/types/extractor/extractHelpers.d.ts +2 -6
  146. package/types/extractor/getPrefixLogs.d.ts +1 -1
  147. package/types/types.d.ts +3 -3
  148. package/dist/extractor/bundle.js.map +0 -7
  149. package/dist/extractor/createEvaluator.js.map +0 -7
  150. package/dist/extractor/createExtractor.js.map +0 -7
  151. package/dist/extractor/extractHelpers.js.map +0 -7
  152. package/dist/extractor/extractToClassNames.js.map +0 -7
  153. package/dist/extractor/loadTamagui.js.map +0 -7
  154. package/dist/extractor/normalizeTernaries.js.map +0 -7
  155. package/dist/types.js.map +0 -7
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/constants.ts"],
3
+ "sources": ["../../src/constants.ts"],
4
4
  "sourcesContent": ["import findCacheDir from 'find-cache-dir'\n\nexport const CSS_FILE_NAME = '__snack.css'\n\n// ENSURE THIS ISNT THE SAME AS THE SEPARATOR USED FOR STYLE KEYS\nexport const MEDIA_SEP = '_'\n\n// ensure cache dir\nexport const cacheDir = findCacheDir({ name: 'tamagui', create: true })\n\nexport const FAILED_EVAL = Symbol('failed_style_eval')\n\nexport const SHOULD_DEBUG = process.env.DEBUG === '*' || process.env.DEBUG?.startsWith('tamagui')\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAyB;AAAzB;AAEO,MAAM,gBAAgB;AAGtB,MAAM,YAAY;AAGlB,MAAM,eAAW,sBAAAA,SAAa,EAAE,MAAM,WAAW,QAAQ,KAAK,CAAC;AAE/D,MAAM,cAAc,OAAO,mBAAmB;AAE9C,MAAM,eAAe,QAAQ,IAAI,UAAU,SAAO,aAAQ,IAAI,UAAZ,mBAAmB,WAAW;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAyB;AAAzB;AAEO,MAAM,gBAAgB;AAGtB,MAAM,YAAY;AAGlB,MAAM,eAAW,sBAAAA,SAAa,EAAE,MAAM,WAAW,QAAQ,KAAK,CAAC;AAE/D,MAAM,cAAc,OAAO,mBAAmB;AAE9C,MAAM,eAAe,QAAQ,IAAI,UAAU,SAAO,aAAQ,IAAI,UAAZ,mBAAmB,WAAW;",
6
6
  "names": ["findCacheDir"]
7
7
  }
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -33,9 +37,12 @@ function accessSafe(obj, member) {
33
37
  "&&",
34
38
  t.logicalExpression(
35
39
  "&&",
40
+ // typeof obj === 'object
36
41
  t.binaryExpression("===", t.unaryExpression("typeof", obj), t.stringLiteral("object")),
42
+ // obj !== null
37
43
  t.binaryExpression("!==", obj, t.nullLiteral())
38
44
  ),
45
+ // obj.member
39
46
  t.memberExpression(obj, t.identifier(member), false)
40
47
  );
41
48
  }
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/extractor/accessSafe.ts"],
4
+ "sourcesContent": ["import * as t from '@babel/types'\n\n// accessSafe wraps memberExpressions in object/null checks\n// TODO: inject this as a function? this gets pretty repetitive\nexport function accessSafe(obj: t.Expression, member: string): t.LogicalExpression {\n return t.logicalExpression(\n '&&',\n t.logicalExpression(\n '&&',\n // typeof obj === 'object\n t.binaryExpression('===', t.unaryExpression('typeof', obj), t.stringLiteral('object')),\n // obj !== null\n t.binaryExpression('!==', obj, t.nullLiteral())\n ),\n // obj.member\n t.memberExpression(obj, t.identifier(member), false)\n )\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAmB;AAIZ,SAAS,WAAW,KAAmB,QAAqC;AACjF,SAAO,EAAE;AAAA,IACP;AAAA,IACA,EAAE;AAAA,MACA;AAAA;AAAA,MAEA,EAAE,iBAAiB,OAAO,EAAE,gBAAgB,UAAU,GAAG,GAAG,EAAE,cAAc,QAAQ,CAAC;AAAA;AAAA,MAErF,EAAE,iBAAiB,OAAO,KAAK,EAAE,YAAY,CAAC;AAAA,IAChD;AAAA;AAAA,IAEA,EAAE,iBAAiB,KAAK,EAAE,WAAW,MAAM,GAAG,KAAK;AAAA,EACrD;AACF;",
6
+ "names": []
7
+ }
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/extractor/babelParse.ts"],
4
+ "sourcesContent": ["import * as babelParser from '@babel/parser'\nimport * as t from '@babel/types'\n\nconst plugins: babelParser.ParserPlugin[] = [\n 'asyncGenerators',\n 'classProperties',\n 'dynamicImport',\n 'functionBind',\n 'jsx',\n 'numericSeparator',\n 'objectRestSpread',\n 'optionalCatchBinding',\n 'decorators-legacy',\n 'typescript',\n 'optionalChaining',\n 'nullishCoalescingOperator',\n]\n\nexport const parserOptions: babelParser.ParserOptions = Object.freeze({\n plugins,\n sourceType: 'module',\n})\n\nconst parser = babelParser.parse.bind(babelParser)\n\nexport function babelParse(code: string | Buffer): t.File {\n try {\n return parser(code.toString(), parserOptions) as any\n } catch (err) {\n throw new Error(`Error parsing babel: ${err} in code`)\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA6B;AAG7B,MAAM,UAAsC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,MAAM,gBAA2C,OAAO,OAAO;AAAA,EACpE;AAAA,EACA,YAAY;AACd,CAAC;AAED,MAAM,SAAS,YAAY,MAAM,KAAK,WAAW;AAE1C,SAAS,WAAW,MAA+B;AACxD,MAAI;AACF,WAAO,OAAO,KAAK,SAAS,GAAG,aAAa;AAAA,EAC9C,SAAS,KAAP;AACA,UAAM,IAAI,MAAM,wBAAwB,aAAa;AAAA,EACvD;AACF;",
6
+ "names": []
7
+ }
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -43,7 +47,11 @@ const buildClassName = (objectsIn, extras = "") => {
43
47
  const buildClassNameLogic = (objects) => {
44
48
  return objects.reduce((acc, val) => {
45
49
  if (acc == null) {
46
- if (t.isConditionalExpression(val) || t.isStringLiteral(val) || t.isNumericLiteral(val)) {
50
+ if (
51
+ // pass conditional expressions through
52
+ t.isConditionalExpression(val) || // pass non-null literals through
53
+ t.isStringLiteral(val) || t.isNumericLiteral(val)
54
+ ) {
47
55
  return val;
48
56
  }
49
57
  return t.logicalExpression("||", val, t.stringLiteral(""));
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/extractor/buildClassName.ts"],
4
+ "sourcesContent": ["import * as t from '@babel/types'\n\nimport type { ClassNameObject } from '../types.js'\n\ntype Builder = (\n objects: ClassNameObject[],\n extras?: string\n) => t.Expression | t.StringLiteral | null\n\nexport const buildClassName: Builder = (objectsIn, extras = '') => {\n let objects = buildClassNameLogic(objectsIn)\n if (!objects) return null\n if (t.isStringLiteral(objects)) {\n // objects.value = objects.value\n objects.value = `${extras} ${objects.value}`\n } else {\n objects = t.binaryExpression('+', t.stringLiteral(extras), objects)\n }\n return objects\n}\n\nexport const buildClassNameLogic: Builder = (objects) => {\n return objects.reduce<t.Expression | null>((acc, val) => {\n if (acc == null) {\n if (\n // pass conditional expressions through\n t.isConditionalExpression(val) ||\n // pass non-null literals through\n t.isStringLiteral(val) ||\n t.isNumericLiteral(val)\n ) {\n return val\n }\n return t.logicalExpression('||', val, t.stringLiteral(''))\n }\n\n let inner: t.Expression\n if (t.isStringLiteral(val)) {\n if (t.isStringLiteral(acc)) {\n // join adjacent string literals\n return t.stringLiteral(`${acc.value} ${val.value}`)\n }\n inner = t.stringLiteral(` ${val.value}`)\n } else if (t.isLiteral(val)) {\n inner = t.binaryExpression('+', t.stringLiteral(' '), val)\n } else if (t.isConditionalExpression(val) || t.isBinaryExpression(val)) {\n if (t.isStringLiteral(acc)) {\n return t.binaryExpression('+', t.stringLiteral(`${acc.value} `), val)\n }\n inner = t.binaryExpression('+', t.stringLiteral(' '), val)\n } else if (t.isIdentifier(val) || t.isMemberExpression(val)) {\n // identifiers and member expressions make for reasonable ternaries\n inner = t.conditionalExpression(\n val,\n t.binaryExpression('+', t.stringLiteral(' '), val),\n t.stringLiteral('')\n )\n } else {\n if (t.isStringLiteral(acc)) {\n return t.binaryExpression(\n '+',\n t.stringLiteral(`${acc.value} `),\n t.logicalExpression('||', val, t.stringLiteral(''))\n )\n }\n // use a logical expression for more complex prop values\n inner = t.binaryExpression(\n '+',\n t.stringLiteral(' '),\n t.logicalExpression('||', val, t.stringLiteral(''))\n )\n }\n\n return t.binaryExpression('+', acc, inner)\n }, null)\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAmB;AASZ,MAAM,iBAA0B,CAAC,WAAW,SAAS,OAAO;AACjE,MAAI,UAAU,oBAAoB,SAAS;AAC3C,MAAI,CAAC;AAAS,WAAO;AACrB,MAAI,EAAE,gBAAgB,OAAO,GAAG;AAE9B,YAAQ,QAAQ,GAAG,UAAU,QAAQ;AAAA,EACvC,OAAO;AACL,cAAU,EAAE,iBAAiB,KAAK,EAAE,cAAc,MAAM,GAAG,OAAO;AAAA,EACpE;AACA,SAAO;AACT;AAEO,MAAM,sBAA+B,CAAC,YAAY;AACvD,SAAO,QAAQ,OAA4B,CAAC,KAAK,QAAQ;AACvD,QAAI,OAAO,MAAM;AACf;AAAA;AAAA,QAEE,EAAE,wBAAwB,GAAG;AAAA,QAE7B,EAAE,gBAAgB,GAAG,KACrB,EAAE,iBAAiB,GAAG;AAAA,QACtB;AACA,eAAO;AAAA,MACT;AACA,aAAO,EAAE,kBAAkB,MAAM,KAAK,EAAE,cAAc,EAAE,CAAC;AAAA,IAC3D;AAEA,QAAI;AACJ,QAAI,EAAE,gBAAgB,GAAG,GAAG;AAC1B,UAAI,EAAE,gBAAgB,GAAG,GAAG;AAE1B,eAAO,EAAE,cAAc,GAAG,IAAI,SAAS,IAAI,OAAO;AAAA,MACpD;AACA,cAAQ,EAAE,cAAc,IAAI,IAAI,OAAO;AAAA,IACzC,WAAW,EAAE,UAAU,GAAG,GAAG;AAC3B,cAAQ,EAAE,iBAAiB,KAAK,EAAE,cAAc,GAAG,GAAG,GAAG;AAAA,IAC3D,WAAW,EAAE,wBAAwB,GAAG,KAAK,EAAE,mBAAmB,GAAG,GAAG;AACtE,UAAI,EAAE,gBAAgB,GAAG,GAAG;AAC1B,eAAO,EAAE,iBAAiB,KAAK,EAAE,cAAc,GAAG,IAAI,QAAQ,GAAG,GAAG;AAAA,MACtE;AACA,cAAQ,EAAE,iBAAiB,KAAK,EAAE,cAAc,GAAG,GAAG,GAAG;AAAA,IAC3D,WAAW,EAAE,aAAa,GAAG,KAAK,EAAE,mBAAmB,GAAG,GAAG;AAE3D,cAAQ,EAAE;AAAA,QACR;AAAA,QACA,EAAE,iBAAiB,KAAK,EAAE,cAAc,GAAG,GAAG,GAAG;AAAA,QACjD,EAAE,cAAc,EAAE;AAAA,MACpB;AAAA,IACF,OAAO;AACL,UAAI,EAAE,gBAAgB,GAAG,GAAG;AAC1B,eAAO,EAAE;AAAA,UACP;AAAA,UACA,EAAE,cAAc,GAAG,IAAI,QAAQ;AAAA,UAC/B,EAAE,kBAAkB,MAAM,KAAK,EAAE,cAAc,EAAE,CAAC;AAAA,QACpD;AAAA,MACF;AAEA,cAAQ,EAAE;AAAA,QACR;AAAA,QACA,EAAE,cAAc,GAAG;AAAA,QACnB,EAAE,kBAAkB,MAAM,KAAK,EAAE,cAAc,EAAE,CAAC;AAAA,MACpD;AAAA,IACF;AAEA,WAAO,EAAE,iBAAiB,KAAK,KAAK,KAAK;AAAA,EAC3C,GAAG,IAAI;AACT;",
6
+ "names": []
7
+ }
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -31,14 +35,14 @@ module.exports = __toCommonJS(bundle_exports);
31
35
  var import_path = require("path");
32
36
  var import_esbuild = __toESM(require("esbuild"));
33
37
  var import_fs_extra = require("fs-extra");
34
- var import_loadTamagui = require("./loadTamagui");
38
+ var import_loadTamagui = require("./loadTamagui.js");
35
39
  function getESBuildConfig({ entryPoints, resolvePlatformSpecificEntries, ...options }, aliases) {
36
40
  var _a;
37
41
  const alias = require("@tamagui/core-node").aliasPlugin;
38
42
  if ((_a = process.env.DEBUG) == null ? void 0 : _a.startsWith("tamagui")) {
39
43
  console.log(`Building`, entryPoints);
40
44
  }
41
- const tsconfig = (0, import_path.join)(__dirname, "..", "..", "tamagui.tsconfig.json");
45
+ const tsconfig = (0, import_path.join)(__dirname, "..", "..", "..", "tamagui.tsconfig.json");
42
46
  const resolvedEntryPoints = !resolvePlatformSpecificEntries ? entryPoints : entryPoints.map(import_loadTamagui.resolveWebOrNativeSpecificEntry);
43
47
  const res = {
44
48
  bundle: true,
@@ -93,7 +97,7 @@ async function asyncLock(props) {
93
97
  const lockFile = (0, import_path.join)((0, import_path.dirname)(props.outfile), (0, import_path.basename)(props.outfile, ".lock"));
94
98
  const lockStat = await (0, import_fs_extra.stat)(lockFile).catch(() => {
95
99
  });
96
- const lockedMsAgo = !lockStat ? Infinity : new Date().getTime() - new Date(lockStat.mtime).getTime();
100
+ const lockedMsAgo = !lockStat ? Infinity : (/* @__PURE__ */ new Date()).getTime() - new Date(lockStat.mtime).getTime();
97
101
  if (lockedMsAgo < 500) {
98
102
  if ((_a = process.env.DEBUG) == null ? void 0 : _a.startsWith("tamagui")) {
99
103
  console.log(`Waiting for existing build`, props.entryPoints);
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/extractor/bundle.ts"],
4
+ "sourcesContent": ["import { basename, dirname, join } from 'path'\n\nimport esbuild from 'esbuild'\nimport { pathExists, stat, writeFile } from 'fs-extra'\n\nimport { resolveWebOrNativeSpecificEntry } from './loadTamagui.js'\n\n/**\n * For internal loading of new files\n */\n\ntype Props = Omit<Partial<esbuild.BuildOptions>, 'entryPoints'> & {\n outfile: string\n entryPoints: string[]\n resolvePlatformSpecificEntries?: boolean\n}\n\nfunction getESBuildConfig(\n { entryPoints, resolvePlatformSpecificEntries, ...options }: Props,\n aliases?: Record<string, string>\n) {\n const alias = require('@tamagui/core-node').aliasPlugin\n if (process.env.DEBUG?.startsWith('tamagui')) {\n // eslint-disable-next-line no-console\n console.log(`Building`, entryPoints)\n }\n const tsconfig = join(__dirname, '..', '..', '..', 'tamagui.tsconfig.json')\n\n const resolvedEntryPoints = !resolvePlatformSpecificEntries\n ? entryPoints\n : entryPoints.map(resolveWebOrNativeSpecificEntry)\n\n const res: esbuild.BuildOptions = {\n bundle: true,\n entryPoints: resolvedEntryPoints,\n format: 'cjs',\n target: 'node18',\n jsx: 'transform',\n jsxFactory: 'react',\n allowOverwrite: true,\n keepNames: true,\n platform: 'node',\n tsconfig,\n loader: {\n '.js': 'jsx',\n },\n logLevel: 'warning',\n plugins: [\n {\n name: 'external',\n setup(build) {\n build.onResolve({ filter: /@tamagui\\/core/ }, (args) => {\n return {\n path: '@tamagui/core-node',\n external: true,\n }\n })\n\n build.onResolve({ filter: /^(react-native|react-native\\/.*)$/ }, (args) => {\n return {\n path: 'react-native-web-lite',\n external: true,\n }\n })\n },\n },\n alias({\n ...aliases,\n }),\n ],\n ...options,\n }\n\n return res\n}\n\nexport async function bundle(props: Props, aliases?: Record<string, string>) {\n await asyncLock(props)\n return esbuild.build(getESBuildConfig(props, aliases))\n}\n\nexport function bundleSync(props: Props, aliases?: Record<string, string>) {\n return esbuild.buildSync(getESBuildConfig(props, aliases))\n}\n\n// until i do fancier things w plugins:\nasync function asyncLock(props: Props) {\n const lockFile = join(dirname(props.outfile), basename(props.outfile, '.lock'))\n const lockStat = await stat(lockFile).catch(() => {\n /* ok */\n })\n const lockedMsAgo = !lockStat\n ? Infinity\n : new Date().getTime() - new Date(lockStat.mtime).getTime()\n if (lockedMsAgo < 500) {\n if (process.env.DEBUG?.startsWith('tamagui')) {\n // eslint-disable-next-line no-console\n console.log(`Waiting for existing build`, props.entryPoints)\n }\n let tries = 5\n while (tries--) {\n if (await pathExists(props.outfile)) {\n return\n } else {\n await new Promise((res) => setTimeout(res, 50))\n }\n }\n }\n void writeFile(lockFile, '')\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAwC;AAExC,qBAAoB;AACpB,sBAA4C;AAE5C,yBAAgD;AAYhD,SAAS,iBACP,EAAE,aAAa,gCAAgC,GAAG,QAAQ,GAC1D,SACA;AApBF;AAqBE,QAAM,QAAQ,QAAQ,oBAAoB,EAAE;AAC5C,OAAI,aAAQ,IAAI,UAAZ,mBAAmB,WAAW,YAAY;AAE5C,YAAQ,IAAI,YAAY,WAAW;AAAA,EACrC;AACA,QAAM,eAAW,kBAAK,WAAW,MAAM,MAAM,MAAM,uBAAuB;AAE1E,QAAM,sBAAsB,CAAC,iCACzB,cACA,YAAY,IAAI,kDAA+B;AAEnD,QAAM,MAA4B;AAAA,IAChC,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,UAAU;AAAA,IACV;AAAA,IACA,QAAQ;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA,UAAU;AAAA,IACV,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM,OAAO;AACX,gBAAM,UAAU,EAAE,QAAQ,iBAAiB,GAAG,CAAC,SAAS;AACtD,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AAAA,UACF,CAAC;AAED,gBAAM,UAAU,EAAE,QAAQ,oCAAoC,GAAG,CAAC,SAAS;AACzE,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,GAAG;AAAA,MACL,CAAC;AAAA,IACH;AAAA,IACA,GAAG;AAAA,EACL;AAEA,SAAO;AACT;AAEA,eAAsB,OAAO,OAAc,SAAkC;AAC3E,QAAM,UAAU,KAAK;AACrB,SAAO,eAAAA,QAAQ,MAAM,iBAAiB,OAAO,OAAO,CAAC;AACvD;AAEO,SAAS,WAAW,OAAc,SAAkC;AACzE,SAAO,eAAAA,QAAQ,UAAU,iBAAiB,OAAO,OAAO,CAAC;AAC3D;AAGA,eAAe,UAAU,OAAc;AAtFvC;AAuFE,QAAM,eAAW,sBAAK,qBAAQ,MAAM,OAAO,OAAG,sBAAS,MAAM,SAAS,OAAO,CAAC;AAC9E,QAAM,WAAW,UAAM,sBAAK,QAAQ,EAAE,MAAM,MAAM;AAAA,EAElD,CAAC;AACD,QAAM,cAAc,CAAC,WACjB,YACA,oBAAI,KAAK,GAAE,QAAQ,IAAI,IAAI,KAAK,SAAS,KAAK,EAAE,QAAQ;AAC5D,MAAI,cAAc,KAAK;AACrB,SAAI,aAAQ,IAAI,UAAZ,mBAAmB,WAAW,YAAY;AAE5C,cAAQ,IAAI,8BAA8B,MAAM,WAAW;AAAA,IAC7D;AACA,QAAI,QAAQ;AACZ,WAAO,SAAS;AACd,UAAI,UAAM,4BAAW,MAAM,OAAO,GAAG;AACnC;AAAA,MACF,OAAO;AACL,cAAM,IAAI,QAAQ,CAAC,QAAQ,WAAW,KAAK,EAAE,CAAC;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AACA,WAAK,2BAAU,UAAU,EAAE;AAC7B;",
6
+ "names": ["esbuild"]
7
+ }
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/extractor/createEvaluator.ts"],
4
+ "sourcesContent": ["import vm from 'vm'\n\nimport generate from '@babel/generator'\nimport { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\nimport { createCSSVariable } from '@tamagui/core-node'\nimport esbuild from 'esbuild'\n\nimport { FAILED_EVAL } from '../constants.js'\nimport { TamaguiOptionsWithFileInfo } from '../types.js'\nimport { evaluateAstNode } from './evaluateAstNode.js'\nimport { isValidThemeHook } from './extractHelpers.js'\n\nexport function createEvaluator({\n props,\n staticNamespace,\n sourcePath,\n traversePath,\n shouldPrintDebug,\n}: {\n props: TamaguiOptionsWithFileInfo\n staticNamespace: Record<string, any>\n sourcePath?: string\n traversePath?: NodePath<t.JSXElement>\n shouldPrintDebug: boolean | 'verbose'\n}) {\n // called when evaluateAstNode encounters a dynamic-looking prop\n const evalFn = (n: t.Node) => {\n // themes\n if (\n t.isMemberExpression(n) &&\n t.isIdentifier(n.property) &&\n traversePath &&\n isValidThemeHook(props, traversePath, n, sourcePath)\n ) {\n const key = n.property.name\n if (shouldPrintDebug) {\n // eslint-disable-next-line no-console\n console.log(' > found theme prop', key)\n }\n return createCSSVariable(key)\n }\n // variable\n if (t.isIdentifier(n) && typeof staticNamespace[n.name] !== 'undefined') {\n return staticNamespace[n.name]\n }\n const evalContext = vm.createContext(staticNamespace)\n // @ts-ignore\n const codeWithTypescriptAnnotations = `(${generate(n as any).code})`\n const code = esbuild\n .transformSync(codeWithTypescriptAnnotations, { loader: 'tsx' })\n .code.replace(/;\\n$/, '')\n\n if (shouldPrintDebug) {\n // eslint-disable-next-line no-console\n console.log('evaluating', code)\n }\n return vm.runInContext(code, evalContext)\n }\n\n return (n: t.Node) => {\n return evaluateAstNode(n, evalFn)\n }\n}\n\nexport function createSafeEvaluator(attemptEval: (n: t.Node) => any) {\n return (n: t.Node) => {\n try {\n return attemptEval(n)\n } catch (err) {\n return FAILED_EVAL\n }\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAe;AAEf,uBAAqB;AAErB,QAAmB;AACnB,uBAAkC;AAClC,qBAAoB;AAEpB,uBAA4B;AAE5B,6BAAgC;AAChC,4BAAiC;AAE1B,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AAED,QAAM,SAAS,CAAC,MAAc;AAE5B,QACE,EAAE,mBAAmB,CAAC,KACtB,EAAE,aAAa,EAAE,QAAQ,KACzB,oBACA,wCAAiB,OAAO,cAAc,GAAG,UAAU,GACnD;AACA,YAAM,MAAM,EAAE,SAAS;AACvB,UAAI,kBAAkB;AAEpB,gBAAQ,IAAI,0BAA0B,GAAG;AAAA,MAC3C;AACA,iBAAO,oCAAkB,GAAG;AAAA,IAC9B;AAEA,QAAI,EAAE,aAAa,CAAC,KAAK,OAAO,gBAAgB,EAAE,IAAI,MAAM,aAAa;AACvE,aAAO,gBAAgB,EAAE,IAAI;AAAA,IAC/B;AACA,UAAM,cAAc,UAAAA,QAAG,cAAc,eAAe;AAEpD,UAAM,gCAAgC,QAAI,iBAAAC,SAAS,CAAQ,EAAE;AAC7D,UAAM,OAAO,eAAAC,QACV,cAAc,+BAA+B,EAAE,QAAQ,MAAM,CAAC,EAC9D,KAAK,QAAQ,QAAQ,EAAE;AAE1B,QAAI,kBAAkB;AAEpB,cAAQ,IAAI,cAAc,IAAI;AAAA,IAChC;AACA,WAAO,UAAAF,QAAG,aAAa,MAAM,WAAW;AAAA,EAC1C;AAEA,SAAO,CAAC,MAAc;AACpB,eAAO,wCAAgB,GAAG,MAAM;AAAA,EAClC;AACF;AAEO,SAAS,oBAAoB,aAAiC;AACnE,SAAO,CAAC,MAAc;AACpB,QAAI;AACF,aAAO,YAAY,CAAC;AAAA,IACtB,SAAS,KAAP;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACF;",
6
+ "names": ["vm", "generate", "esbuild"]
7
+ }
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -73,7 +77,10 @@ function createExtractor({ logger = console } = { logger: console }) {
73
77
  console.log('\u26A0\uFE0F Please set process.env.TAMAGUI_TARGET to either "web" or "native"');
74
78
  process.exit(1);
75
79
  }
76
- const shouldAddDebugProp = !process.env.npm_package_dependencies_next && process.env.TAMAGUI_TARGET !== "native" && process.env.IDENTIFY_TAGS !== "false" && (process.env.NODE_ENV === "development" || process.env.DEBUG || process.env.IDENTIFY_TAGS);
80
+ const shouldAddDebugProp = (
81
+ // really basic disable this for next.js because it messes with ssr
82
+ !process.env.npm_package_dependencies_next && process.env.TAMAGUI_TARGET !== "native" && process.env.IDENTIFY_TAGS !== "false" && (process.env.NODE_ENV === "development" || process.env.DEBUG || process.env.IDENTIFY_TAGS)
83
+ );
77
84
  let projectInfo = null;
78
85
  function loadSync(props) {
79
86
  return projectInfo || (projectInfo = (0, import_loadTamagui.loadTamaguiSync)({
@@ -154,7 +161,8 @@ function createExtractor({ logger = console } = { logger: console }) {
154
161
  if (target === "native" && name[0] === "$" && import_core_node.mediaQueryConfig[name.slice(1)]) {
155
162
  return false;
156
163
  }
157
- return !!(!!((_a2 = staticConfig.validStyles) == null ? void 0 : _a2[name]) || !!import_core_node.pseudoDescriptors[name] || ((_b = staticConfig.variants) == null ? void 0 : _b[name]) || (projectInfo == null ? void 0 : projectInfo.tamaguiConfig.shorthands[name]) || (name[0] === "$" ? !!import_core_node.mediaQueryConfig[name.slice(1)] : false));
164
+ return !!(!!((_a2 = staticConfig.validStyles) == null ? void 0 : _a2[name]) || !!import_core_node.pseudoDescriptors[name] || // dont disable variants or else you lose many things flattening
165
+ ((_b = staticConfig.variants) == null ? void 0 : _b[name]) || (projectInfo == null ? void 0 : projectInfo.tamaguiConfig.shorthands[name]) || (name[0] === "$" ? !!import_core_node.mediaQueryConfig[name.slice(1)] : false));
158
166
  }
159
167
  const isTargetingHTML = target === "html";
160
168
  const ogDebug = shouldPrintDebug;
@@ -294,11 +302,13 @@ function createExtractor({ logger = console } = { logger: console }) {
294
302
  found: 0
295
303
  };
296
304
  callTraverse({
305
+ // @ts-ignore
297
306
  Program: {
298
307
  enter(path) {
299
308
  programPath = path;
300
309
  }
301
310
  },
311
+ // styled() calls
302
312
  CallExpression(path) {
303
313
  var _a2;
304
314
  if (disable || shouldDisableExtraction || extractStyledDefinitions === false) {
@@ -325,8 +335,10 @@ function createExtractor({ logger = console } = { logger: console }) {
325
335
  ...Component.staticConfig.inlineWhenUnflattened || [],
326
336
  ...Component.staticConfig.inlineProps || [],
327
337
  ...Component.staticConfig.deoptProps || [],
338
+ // for now skip variants, will return to them
328
339
  "variants",
329
340
  "defaultVariants",
341
+ // skip fontFamily its basically a "variant", important for theme use to be value always
330
342
  "fontFamily",
331
343
  "name"
332
344
  ]);
@@ -347,7 +359,8 @@ function createExtractor({ logger = console } = { logger: console }) {
347
359
  });
348
360
  const attemptEvalSafe = (0, import_createEvaluator.createSafeEvaluator)(attemptEval);
349
361
  for (const property of definition.properties) {
350
- if (!t.isObjectProperty(property) || !t.isIdentifier(property.key) || !isValidStyleKey(property.key.name, Component.staticConfig) || ((_a2 = Component.staticConfig.variants) == null ? void 0 : _a2[property.key.name]) || componentSkipProps.has(property.key.name)) {
362
+ if (!t.isObjectProperty(property) || !t.isIdentifier(property.key) || !isValidStyleKey(property.key.name, Component.staticConfig) || // skip variants
363
+ ((_a2 = Component.staticConfig.variants) == null ? void 0 : _a2[property.key.name]) || componentSkipProps.has(property.key.name)) {
351
364
  skipped.push(property);
352
365
  continue;
353
366
  }
@@ -489,7 +502,13 @@ function createExtractor({ logger = console } = { logger: console }) {
489
502
  const attr = { type: "attr", value: attribute };
490
503
  if (t.isJSXSpreadAttribute(attribute)) {
491
504
  const arg = attribute.argument;
492
- const conditional = t.isConditionalExpression(arg) ? [arg.test, arg.consequent, arg.alternate] : t.isLogicalExpression(arg) && arg.operator === "&&" ? [arg.left, arg.right, null] : null;
505
+ const conditional = t.isConditionalExpression(arg) ? (
506
+ // <YStack {...isSmall ? { color: 'red } : { color: 'blue }}
507
+ [arg.test, arg.consequent, arg.alternate]
508
+ ) : t.isLogicalExpression(arg) && arg.operator === "&&" ? (
509
+ // <YStack {...isSmall && { color: 'red }}
510
+ [arg.left, arg.right, null]
511
+ ) : null;
493
512
  if (conditional) {
494
513
  const [test, alt, cons] = conditional;
495
514
  if (!test)
@@ -664,7 +683,8 @@ function createExtractor({ logger = console } = { logger: console }) {
664
683
  attr: path.node
665
684
  };
666
685
  }
667
- if (import_validHTMLAttributes.validHTMLAttributes[key] || key.startsWith("aria-") || key.startsWith("data-") || key === "__source" || key === "__self") {
686
+ if (import_validHTMLAttributes.validHTMLAttributes[key] || key.startsWith("aria-") || key.startsWith("data-") || // this is debug stuff added by vite / new jsx transform
687
+ key === "__source" || key === "__self") {
668
688
  return attr;
669
689
  }
670
690
  if (shouldPrintDebug) {
@@ -869,6 +889,7 @@ function createExtractor({ logger = console } = { logger: console }) {
869
889
  return ternaries2.map((value) => ({
870
890
  ...ternaryPartial,
871
891
  ...value,
892
+ // ensure media query test stays on left side (see getMediaQueryTernary)
872
893
  test: t.logicalExpression("&&", value.test, test)
873
894
  }));
874
895
  } else {
@@ -980,11 +1001,13 @@ function createExtractor({ logger = console } = { logger: console }) {
980
1001
  });
981
1002
  const flatNode = getFlattenedNode == null ? void 0 : getFlattenedNode({ isTextView, tag: tagName });
982
1003
  const inlineProps = /* @__PURE__ */ new Set([
1004
+ // adding some always inline props
983
1005
  "dataSet",
984
1006
  ...restProps.inlineProps || [],
985
1007
  ...staticConfig.inlineProps || []
986
1008
  ]);
987
1009
  const deoptProps = /* @__PURE__ */ new Set([
1010
+ // always de-opt animation
988
1011
  "animation",
989
1012
  ...restProps.deoptProps || [],
990
1013
  ...staticConfig.deoptProps || []
@@ -1220,6 +1243,7 @@ function createExtractor({ logger = console } = { logger: console }) {
1220
1243
  focus: false,
1221
1244
  hover: false,
1222
1245
  unmounted: false,
1246
+ // TODO match logic in createComponent
1223
1247
  press: false,
1224
1248
  pressIn: false
1225
1249
  };
@@ -1357,7 +1381,11 @@ function createExtractor({ logger = console } = { logger: console }) {
1357
1381
  if (cur.type === "style") {
1358
1382
  const key = Object.keys(cur.value)[0];
1359
1383
  const value = cur.value[key];
1360
- const shouldKeepOriginalAttr = !shouldFlatten && !validStyles[key] && !import_core_node.pseudoDescriptors[key] && !key.startsWith("data-");
1384
+ const shouldKeepOriginalAttr = (
1385
+ // !isStyleAndAttr[key] &&
1386
+ !shouldFlatten && // de-opt if non-style
1387
+ !validStyles[key] && !import_core_node.pseudoDescriptors[key] && !key.startsWith("data-")
1388
+ );
1361
1389
  if (shouldKeepOriginalAttr) {
1362
1390
  if (shouldPrintDebug) {
1363
1391
  logger.info([" - keeping as non-style", key].join(" "));