@tamagui/static 1.0.11 → 1.0.12

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 (217) hide show
  1. package/dist/extractor/createExtractor.js +0 -46
  2. package/dist/extractor/createExtractor.js.map +2 -2
  3. package/dist/extractor/ensureImportingConcat.js +3 -1
  4. package/dist/extractor/ensureImportingConcat.js.map +2 -2
  5. package/dist/extractor/extractToClassNames.js +19 -2
  6. package/dist/extractor/extractToClassNames.js.map +2 -2
  7. package/dist/extractor/getStaticBindingsForScope.js +3 -5
  8. package/dist/extractor/getStaticBindingsForScope.js.map +2 -2
  9. package/package.json +13 -13
  10. package/src/extractor/createExtractor.ts +0 -59
  11. package/src/extractor/ensureImportingConcat.ts +36 -0
  12. package/src/extractor/extractToClassNames.ts +23 -2
  13. package/src/extractor/getStaticBindingsForScope.ts +3 -5
  14. package/dist/cjs/constants.js +0 -49
  15. package/dist/cjs/constants.js.map +0 -7
  16. package/dist/cjs/extractor/accessSafe.js +0 -35
  17. package/dist/cjs/extractor/accessSafe.js.map +0 -7
  18. package/dist/cjs/extractor/babelParse.js +0 -56
  19. package/dist/cjs/extractor/babelParse.js.map +0 -7
  20. package/dist/cjs/extractor/buildClassName.js +0 -64
  21. package/dist/cjs/extractor/buildClassName.js.map +0 -7
  22. package/dist/cjs/extractor/bundle.js +0 -137
  23. package/dist/cjs/extractor/bundle.js.map +0 -7
  24. package/dist/cjs/extractor/createEvaluator.js +0 -81
  25. package/dist/cjs/extractor/createEvaluator.js.map +0 -7
  26. package/dist/cjs/extractor/createExtractor.js +0 -1330
  27. package/dist/cjs/extractor/createExtractor.js.map +0 -7
  28. package/dist/cjs/extractor/defaultTamaguiConfig.js +0 -167
  29. package/dist/cjs/extractor/defaultTamaguiConfig.js.map +0 -7
  30. package/dist/cjs/extractor/ensureImportingConcat.js +0 -48
  31. package/dist/cjs/extractor/ensureImportingConcat.js.map +0 -7
  32. package/dist/cjs/extractor/evaluateAstNode.js +0 -118
  33. package/dist/cjs/extractor/evaluateAstNode.js.map +0 -7
  34. package/dist/cjs/extractor/extractHelpers.js +0 -131
  35. package/dist/cjs/extractor/extractHelpers.js.map +0 -7
  36. package/dist/cjs/extractor/extractMediaStyle.js +0 -174
  37. package/dist/cjs/extractor/extractMediaStyle.js.map +0 -7
  38. package/dist/cjs/extractor/extractToClassNames.js +0 -305
  39. package/dist/cjs/extractor/extractToClassNames.js.map +0 -7
  40. package/dist/cjs/extractor/findTopmostFunction.js +0 -44
  41. package/dist/cjs/extractor/findTopmostFunction.js.map +0 -7
  42. package/dist/cjs/extractor/generatedUid.js +0 -52
  43. package/dist/cjs/extractor/generatedUid.js.map +0 -7
  44. package/dist/cjs/extractor/getPrefixLogs.js +0 -32
  45. package/dist/cjs/extractor/getPrefixLogs.js.map +0 -7
  46. package/dist/cjs/extractor/getPropValueFromAttributes.js +0 -73
  47. package/dist/cjs/extractor/getPropValueFromAttributes.js.map +0 -7
  48. package/dist/cjs/extractor/getSourceModule.js +0 -93
  49. package/dist/cjs/extractor/getSourceModule.js.map +0 -7
  50. package/dist/cjs/extractor/getStaticBindingsForScope.js +0 -184
  51. package/dist/cjs/extractor/getStaticBindingsForScope.js.map +0 -7
  52. package/dist/cjs/extractor/hoistClassNames.js +0 -67
  53. package/dist/cjs/extractor/hoistClassNames.js.map +0 -7
  54. package/dist/cjs/extractor/literalToAst.js +0 -103
  55. package/dist/cjs/extractor/literalToAst.js.map +0 -7
  56. package/dist/cjs/extractor/loadFile.js +0 -21
  57. package/dist/cjs/extractor/loadFile.js.map +0 -7
  58. package/dist/cjs/extractor/loadTamagui.js +0 -105
  59. package/dist/cjs/extractor/loadTamagui.js.map +0 -7
  60. package/dist/cjs/extractor/logLines.js +0 -44
  61. package/dist/cjs/extractor/logLines.js.map +0 -7
  62. package/dist/cjs/extractor/normalizeTernaries.js +0 -76
  63. package/dist/cjs/extractor/normalizeTernaries.js.map +0 -7
  64. package/dist/cjs/extractor/removeUnusedHooks.js +0 -103
  65. package/dist/cjs/extractor/removeUnusedHooks.js.map +0 -7
  66. package/dist/cjs/extractor/timer.js +0 -46
  67. package/dist/cjs/extractor/timer.js.map +0 -7
  68. package/dist/cjs/extractor/validHTMLAttributes.js +0 -127
  69. package/dist/cjs/extractor/validHTMLAttributes.js.map +0 -7
  70. package/dist/cjs/getPragmaOptions.js +0 -67
  71. package/dist/cjs/getPragmaOptions.js.map +0 -7
  72. package/dist/cjs/helpers/memoize.js +0 -45
  73. package/dist/cjs/helpers/memoize.js.map +0 -7
  74. package/dist/cjs/index.js +0 -43
  75. package/dist/cjs/index.js.map +0 -7
  76. package/dist/cjs/require.js +0 -104
  77. package/dist/cjs/require.js.map +0 -7
  78. package/dist/cjs/types.js +0 -17
  79. package/dist/cjs/types.js.map +0 -7
  80. package/dist/cjs/webpackPlugin.js +0 -34
  81. package/dist/cjs/webpackPlugin.js.map +0 -7
  82. package/dist/esm/constants.js +0 -17
  83. package/dist/esm/constants.js.map +0 -7
  84. package/dist/esm/extractor/accessSafe.js +0 -8
  85. package/dist/esm/extractor/accessSafe.js.map +0 -7
  86. package/dist/esm/extractor/babelParse.js +0 -28
  87. package/dist/esm/extractor/babelParse.js.map +0 -7
  88. package/dist/esm/extractor/buildClassName.js +0 -37
  89. package/dist/esm/extractor/buildClassName.js.map +0 -7
  90. package/dist/esm/extractor/bundle.js +0 -112
  91. package/dist/esm/extractor/bundle.js.map +0 -7
  92. package/dist/esm/extractor/createEvaluator.js +0 -53
  93. package/dist/esm/extractor/createEvaluator.js.map +0 -7
  94. package/dist/esm/extractor/createExtractor.js +0 -1311
  95. package/dist/esm/extractor/createExtractor.js.map +0 -7
  96. package/dist/esm/extractor/defaultTamaguiConfig.js +0 -143
  97. package/dist/esm/extractor/defaultTamaguiConfig.js.map +0 -7
  98. package/dist/esm/extractor/ensureImportingConcat.js +0 -21
  99. package/dist/esm/extractor/ensureImportingConcat.js.map +0 -7
  100. package/dist/esm/extractor/evaluateAstNode.js +0 -91
  101. package/dist/esm/extractor/evaluateAstNode.js.map +0 -7
  102. package/dist/esm/extractor/extractHelpers.js +0 -97
  103. package/dist/esm/extractor/extractHelpers.js.map +0 -7
  104. package/dist/esm/extractor/extractMediaStyle.js +0 -146
  105. package/dist/esm/extractor/extractMediaStyle.js.map +0 -7
  106. package/dist/esm/extractor/extractToClassNames.js +0 -278
  107. package/dist/esm/extractor/extractToClassNames.js.map +0 -7
  108. package/dist/esm/extractor/findTopmostFunction.js +0 -20
  109. package/dist/esm/extractor/findTopmostFunction.js.map +0 -7
  110. package/dist/esm/extractor/generatedUid.js +0 -25
  111. package/dist/esm/extractor/generatedUid.js.map +0 -7
  112. package/dist/esm/extractor/getPrefixLogs.js +0 -8
  113. package/dist/esm/extractor/getPrefixLogs.js.map +0 -7
  114. package/dist/esm/extractor/getPropValueFromAttributes.js +0 -46
  115. package/dist/esm/extractor/getPropValueFromAttributes.js.map +0 -7
  116. package/dist/esm/extractor/getSourceModule.js +0 -66
  117. package/dist/esm/extractor/getSourceModule.js.map +0 -7
  118. package/dist/esm/extractor/getStaticBindingsForScope.js +0 -157
  119. package/dist/esm/extractor/getStaticBindingsForScope.js.map +0 -7
  120. package/dist/esm/extractor/hoistClassNames.js +0 -40
  121. package/dist/esm/extractor/hoistClassNames.js.map +0 -7
  122. package/dist/esm/extractor/literalToAst.js +0 -75
  123. package/dist/esm/extractor/literalToAst.js.map +0 -7
  124. package/dist/esm/extractor/loadFile.js +0 -20
  125. package/dist/esm/extractor/loadFile.js.map +0 -7
  126. package/dist/esm/extractor/loadTamagui.js +0 -81
  127. package/dist/esm/extractor/loadTamagui.js.map +0 -7
  128. package/dist/esm/extractor/logLines.js +0 -20
  129. package/dist/esm/extractor/logLines.js.map +0 -7
  130. package/dist/esm/extractor/normalizeTernaries.js +0 -49
  131. package/dist/esm/extractor/normalizeTernaries.js.map +0 -7
  132. package/dist/esm/extractor/removeUnusedHooks.js +0 -76
  133. package/dist/esm/extractor/removeUnusedHooks.js.map +0 -7
  134. package/dist/esm/extractor/timer.js +0 -22
  135. package/dist/esm/extractor/timer.js.map +0 -7
  136. package/dist/esm/extractor/validHTMLAttributes.js +0 -102
  137. package/dist/esm/extractor/validHTMLAttributes.js.map +0 -7
  138. package/dist/esm/getPragmaOptions.js +0 -44
  139. package/dist/esm/getPragmaOptions.js.map +0 -7
  140. package/dist/esm/helpers/memoize.js +0 -22
  141. package/dist/esm/helpers/memoize.js.map +0 -7
  142. package/dist/esm/index.js +0 -16
  143. package/dist/esm/index.js.map +0 -7
  144. package/dist/esm/require.js +0 -78
  145. package/dist/esm/require.js.map +0 -7
  146. package/dist/esm/types.js +0 -1
  147. package/dist/esm/types.js.map +0 -7
  148. package/dist/esm/webpackPlugin.js +0 -11
  149. package/dist/esm/webpackPlugin.js.map +0 -7
  150. package/dist/jsx/constants.js +0 -17
  151. package/dist/jsx/constants.js.map +0 -7
  152. package/dist/jsx/extractor/accessSafe.js +0 -8
  153. package/dist/jsx/extractor/accessSafe.js.map +0 -7
  154. package/dist/jsx/extractor/babelParse.js +0 -28
  155. package/dist/jsx/extractor/babelParse.js.map +0 -7
  156. package/dist/jsx/extractor/buildClassName.js +0 -37
  157. package/dist/jsx/extractor/buildClassName.js.map +0 -7
  158. package/dist/jsx/extractor/bundle.js +0 -86
  159. package/dist/jsx/extractor/bundle.js.map +0 -7
  160. package/dist/jsx/extractor/createEvaluator.js +0 -53
  161. package/dist/jsx/extractor/createEvaluator.js.map +0 -7
  162. package/dist/jsx/extractor/createExtractor.js +0 -1311
  163. package/dist/jsx/extractor/createExtractor.js.map +0 -7
  164. package/dist/jsx/extractor/defaultTamaguiConfig.js +0 -143
  165. package/dist/jsx/extractor/defaultTamaguiConfig.js.map +0 -7
  166. package/dist/jsx/extractor/ensureImportingConcat.js +0 -21
  167. package/dist/jsx/extractor/ensureImportingConcat.js.map +0 -7
  168. package/dist/jsx/extractor/evaluateAstNode.js +0 -91
  169. package/dist/jsx/extractor/evaluateAstNode.js.map +0 -7
  170. package/dist/jsx/extractor/extractHelpers.js +0 -97
  171. package/dist/jsx/extractor/extractHelpers.js.map +0 -7
  172. package/dist/jsx/extractor/extractMediaStyle.js +0 -146
  173. package/dist/jsx/extractor/extractMediaStyle.js.map +0 -7
  174. package/dist/jsx/extractor/extractToClassNames.js +0 -280
  175. package/dist/jsx/extractor/extractToClassNames.js.map +0 -7
  176. package/dist/jsx/extractor/findTopmostFunction.js +0 -20
  177. package/dist/jsx/extractor/findTopmostFunction.js.map +0 -7
  178. package/dist/jsx/extractor/generatedUid.js +0 -25
  179. package/dist/jsx/extractor/generatedUid.js.map +0 -7
  180. package/dist/jsx/extractor/getPrefixLogs.js +0 -9
  181. package/dist/jsx/extractor/getPrefixLogs.js.map +0 -7
  182. package/dist/jsx/extractor/getPropValueFromAttributes.js +0 -46
  183. package/dist/jsx/extractor/getPropValueFromAttributes.js.map +0 -7
  184. package/dist/jsx/extractor/getSourceModule.js +0 -66
  185. package/dist/jsx/extractor/getSourceModule.js.map +0 -7
  186. package/dist/jsx/extractor/getStaticBindingsForScope.js +0 -157
  187. package/dist/jsx/extractor/getStaticBindingsForScope.js.map +0 -7
  188. package/dist/jsx/extractor/hoistClassNames.js +0 -40
  189. package/dist/jsx/extractor/hoistClassNames.js.map +0 -7
  190. package/dist/jsx/extractor/literalToAst.js +0 -75
  191. package/dist/jsx/extractor/literalToAst.js.map +0 -7
  192. package/dist/jsx/extractor/loadFile.js +0 -20
  193. package/dist/jsx/extractor/loadFile.js.map +0 -7
  194. package/dist/jsx/extractor/loadTamagui.js +0 -81
  195. package/dist/jsx/extractor/loadTamagui.js.map +0 -7
  196. package/dist/jsx/extractor/logLines.js +0 -20
  197. package/dist/jsx/extractor/logLines.js.map +0 -7
  198. package/dist/jsx/extractor/normalizeTernaries.js +0 -50
  199. package/dist/jsx/extractor/normalizeTernaries.js.map +0 -7
  200. package/dist/jsx/extractor/removeUnusedHooks.js +0 -77
  201. package/dist/jsx/extractor/removeUnusedHooks.js.map +0 -7
  202. package/dist/jsx/extractor/timer.js +0 -22
  203. package/dist/jsx/extractor/timer.js.map +0 -7
  204. package/dist/jsx/extractor/validHTMLAttributes.js +0 -102
  205. package/dist/jsx/extractor/validHTMLAttributes.js.map +0 -7
  206. package/dist/jsx/getPragmaOptions.js +0 -44
  207. package/dist/jsx/getPragmaOptions.js.map +0 -7
  208. package/dist/jsx/helpers/memoize.js +0 -22
  209. package/dist/jsx/helpers/memoize.js.map +0 -7
  210. package/dist/jsx/index.js +0 -16
  211. package/dist/jsx/index.js.map +0 -7
  212. package/dist/jsx/require.js +0 -78
  213. package/dist/jsx/require.js.map +0 -7
  214. package/dist/jsx/types.js +0 -1
  215. package/dist/jsx/types.js.map +0 -7
  216. package/dist/jsx/webpackPlugin.js +0 -11
  217. package/dist/jsx/webpackPlugin.js.map +0 -7
@@ -1,97 +0,0 @@
1
- import generate from "@babel/generator";
2
- import * as t from "@babel/types";
3
- function isPresent(input) {
4
- return input != null;
5
- }
6
- function isSimpleSpread(node) {
7
- return t.isIdentifier(node.argument) || t.isMemberExpression(node.argument);
8
- }
9
- const attrStr = (attr) => {
10
- return !attr ? "" : attr.type === "attr" ? getNameAttr(attr.value) : attr.type === "ternary" ? `...${ternaryStr(attr.value)}` : `${attr.type}(${objToStr(attr.value)})`;
11
- };
12
- const objToStr = (obj, spacer = ", ") => {
13
- if (!obj) {
14
- return `${obj}`;
15
- }
16
- return `{${Object.entries(obj).map(([k, v]) => `${k}:${Array.isArray(v) ? `[...]` : v && typeof v === "object" ? `${objToStr(v, ",")}` : JSON.stringify(v)}`).join(spacer)}}`;
17
- };
18
- const getNameAttr = (attr) => {
19
- if (t.isJSXSpreadAttribute(attr)) {
20
- return `...${attr.argument["name"]}`;
21
- }
22
- return "name" in attr ? attr.name.name : `unknown-${attr["type"]}`;
23
- };
24
- const ternaryStr = (x) => {
25
- const conditional = t.isIdentifier(x.test) ? x.test.name : t.isMemberExpression(x.test) ? [x.test.object["name"], x.test.property["name"]] : generate(x.test).code;
26
- return [
27
- "ternary(",
28
- conditional,
29
- isFilledObj(x.consequent) ? ` ? ${objToStr(x.consequent)}` : " ? \u{1F6AB}",
30
- isFilledObj(x.alternate) ? ` : ${objToStr(x.alternate)}` : " : \u{1F6AB}",
31
- ")"
32
- ].flat().join("");
33
- };
34
- const isFilledObj = (obj) => obj && Object.keys(obj).length;
35
- function findComponentName(scope) {
36
- var _a;
37
- let componentName = "";
38
- let cur = scope.path;
39
- while (cur.parentPath && !t.isProgram(cur.parentPath.parent)) {
40
- cur = cur.parentPath;
41
- }
42
- let node = cur.parent;
43
- if (t.isExportNamedDeclaration(node)) {
44
- node = node.declaration;
45
- }
46
- if (t.isVariableDeclaration(node)) {
47
- const [dec] = node.declarations;
48
- if (t.isVariableDeclarator(dec) && t.isIdentifier(dec.id)) {
49
- return dec.id.name;
50
- }
51
- }
52
- if (t.isFunctionDeclaration(node)) {
53
- return (_a = node.id) == null ? void 0 : _a.name;
54
- }
55
- return componentName;
56
- }
57
- function isValidThemeHook(jsxPath, n, sourcePath) {
58
- var _a;
59
- if (!t.isIdentifier(n.object) || !t.isIdentifier(n.property))
60
- return false;
61
- const bindings = jsxPath.scope.getAllBindings();
62
- const binding = bindings[n.object.name];
63
- if (!(binding == null ? void 0 : binding.path))
64
- return false;
65
- if (!binding.path.isVariableDeclarator())
66
- return false;
67
- const init = binding.path.node.init;
68
- if (!t.isCallExpression(init))
69
- return false;
70
- if (!t.isIdentifier(init.callee))
71
- return false;
72
- if (init.callee.name !== "useTheme")
73
- return false;
74
- const importNode = (_a = binding.scope.getBinding("useTheme")) == null ? void 0 : _a.path.parent;
75
- if (!t.isImportDeclaration(importNode))
76
- return false;
77
- if (importNode.source.value !== "tamagui") {
78
- if (!isInsideTamagui(sourcePath)) {
79
- return false;
80
- }
81
- }
82
- return true;
83
- }
84
- const isInsideTamagui = (srcName) => {
85
- return srcName.includes("/dist/jsx") || srcName.includes("/core/src");
86
- };
87
- export {
88
- attrStr,
89
- findComponentName,
90
- isInsideTamagui,
91
- isPresent,
92
- isSimpleSpread,
93
- isValidThemeHook,
94
- objToStr,
95
- ternaryStr
96
- };
97
- //# sourceMappingURL=extractHelpers.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/extractor/extractHelpers.ts"],
4
- "sourcesContent": ["import generate from '@babel/generator'\nimport type { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\n\nimport { ExtractedAttr, Ternary } from '../types'\nimport { astToLiteral } from './literalToAst'\n\nexport function isPresent<T extends Object>(input: null | void | undefined | T): input is T {\n return input != null\n}\n\nexport function isSimpleSpread(node: t.JSXSpreadAttribute) {\n return t.isIdentifier(node.argument) || t.isMemberExpression(node.argument)\n}\n\nexport const attrStr = (attr?: ExtractedAttr) => {\n return !attr\n ? ''\n : attr.type === 'attr'\n ? getNameAttr(attr.value)\n : attr.type === 'ternary'\n ? `...${ternaryStr(attr.value)}`\n : `${attr.type}(${objToStr(attr.value)})`\n}\n\nexport const objToStr = (obj: any, spacer = ', ') => {\n if (!obj) {\n return `${obj}`\n }\n return `{${Object.entries(obj)\n .map(\n ([k, v]) =>\n `${k}:${\n Array.isArray(v)\n ? `[...]`\n : v && typeof v === 'object'\n ? `${objToStr(v, ',')}`\n : JSON.stringify(v)\n }`\n )\n .join(spacer)}}`\n}\n\nconst getNameAttr = (attr: t.JSXAttribute | t.JSXSpreadAttribute) => {\n if (t.isJSXSpreadAttribute(attr)) {\n return `...${attr.argument['name']}`\n }\n return 'name' in attr ? attr.name.name : `unknown-${attr['type']}`\n}\n\nexport const ternaryStr = (x: Ternary) => {\n const conditional = t.isIdentifier(x.test)\n ? x.test.name\n : t.isMemberExpression(x.test)\n ? [x.test.object['name'], x.test.property['name']]\n : generate(x.test).code\n return [\n 'ternary(',\n conditional,\n isFilledObj(x.consequent) ? ` ? ${objToStr(x.consequent)}` : ' ? \uD83D\uDEAB',\n isFilledObj(x.alternate) ? ` : ${objToStr(x.alternate)}` : ' : \uD83D\uDEAB',\n ')',\n ]\n .flat()\n .join('')\n}\n\nconst isFilledObj = (obj: any) => obj && Object.keys(obj).length\n\nexport function findComponentName(scope) {\n let componentName = ''\n let cur = scope.path\n while (cur.parentPath && !t.isProgram(cur.parentPath.parent)) {\n cur = cur.parentPath\n }\n let node = cur.parent\n if (t.isExportNamedDeclaration(node)) {\n node = node.declaration\n }\n if (t.isVariableDeclaration(node)) {\n const [dec] = node.declarations\n if (t.isVariableDeclarator(dec) && t.isIdentifier(dec.id)) {\n return dec.id.name\n }\n }\n if (t.isFunctionDeclaration(node)) {\n return node.id?.name\n }\n return componentName\n}\n\nexport function isValidThemeHook(\n jsxPath: NodePath<t.JSXElement>,\n n: t.MemberExpression,\n sourcePath: string\n) {\n if (!t.isIdentifier(n.object) || !t.isIdentifier(n.property)) return false\n const bindings = jsxPath.scope.getAllBindings()\n const binding = bindings[n.object.name]\n if (!binding?.path) return false\n if (!binding.path.isVariableDeclarator()) return false\n const init = binding.path.node.init\n if (!t.isCallExpression(init)) return false\n if (!t.isIdentifier(init.callee)) return false\n // TODO could support renaming useTheme by looking up import first\n if (init.callee.name !== 'useTheme') return false\n const importNode = binding.scope.getBinding('useTheme')?.path.parent\n if (!t.isImportDeclaration(importNode)) return false\n if (importNode.source.value !== 'tamagui') {\n if (!isInsideTamagui(sourcePath)) {\n return false\n }\n }\n return true\n}\n\nexport const isInsideTamagui = (srcName: string) => {\n return srcName.includes('/dist/jsx') || srcName.includes('/core/src')\n}\n"],
5
- "mappings": "AAAA;AAEA;AAKO,mBAAqC,OAAgD;AAC1F,SAAO,SAAS;AAClB;AAEO,wBAAwB,MAA4B;AACzD,SAAO,EAAE,aAAa,KAAK,QAAQ,KAAK,EAAE,mBAAmB,KAAK,QAAQ;AAC5E;AAEO,MAAM,UAAU,CAAC,SAAyB;AAC/C,SAAO,CAAC,OACJ,KACA,KAAK,SAAS,SACd,YAAY,KAAK,KAAK,IACtB,KAAK,SAAS,YACd,MAAM,WAAW,KAAK,KAAK,MAC3B,GAAG,KAAK,QAAQ,SAAS,KAAK,KAAK;AACzC;AAEO,MAAM,WAAW,CAAC,KAAU,SAAS,SAAS;AACnD,MAAI,CAAC,KAAK;AACR,WAAO,GAAG;AAAA,EACZ;AACA,SAAO,IAAI,OAAO,QAAQ,GAAG,EAC1B,IACC,CAAC,CAAC,GAAG,OACH,GAAG,KACD,MAAM,QAAQ,CAAC,IACX,UACA,KAAK,OAAO,MAAM,WAClB,GAAG,SAAS,GAAG,GAAG,MAClB,KAAK,UAAU,CAAC,GAE1B,EACC,KAAK,MAAM;AAChB;AAEA,MAAM,cAAc,CAAC,SAAgD;AACnE,MAAI,EAAE,qBAAqB,IAAI,GAAG;AAChC,WAAO,MAAM,KAAK,SAAS;AAAA,EAC7B;AACA,SAAO,UAAU,OAAO,KAAK,KAAK,OAAO,WAAW,KAAK;AAC3D;AAEO,MAAM,aAAa,CAAC,MAAe;AACxC,QAAM,cAAc,EAAE,aAAa,EAAE,IAAI,IACrC,EAAE,KAAK,OACP,EAAE,mBAAmB,EAAE,IAAI,IAC3B,CAAC,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK,SAAS,OAAO,IAC/C,SAAS,EAAE,IAAI,EAAE;AACrB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,YAAY,EAAE,UAAU,IAAI,MAAM,SAAS,EAAE,UAAU,MAAM;AAAA,IAC7D,YAAY,EAAE,SAAS,IAAI,MAAM,SAAS,EAAE,SAAS,MAAM;AAAA,IAC3D;AAAA,EACF,EACG,KAAK,EACL,KAAK,EAAE;AACZ;AAEA,MAAM,cAAc,CAAC,QAAa,OAAO,OAAO,KAAK,GAAG,EAAE;AAEnD,2BAA2B,OAAO;AArEzC;AAsEE,MAAI,gBAAgB;AACpB,MAAI,MAAM,MAAM;AAChB,SAAO,IAAI,cAAc,CAAC,EAAE,UAAU,IAAI,WAAW,MAAM,GAAG;AAC5D,UAAM,IAAI;AAAA,EACZ;AACA,MAAI,OAAO,IAAI;AACf,MAAI,EAAE,yBAAyB,IAAI,GAAG;AACpC,WAAO,KAAK;AAAA,EACd;AACA,MAAI,EAAE,sBAAsB,IAAI,GAAG;AACjC,UAAM,CAAC,OAAO,KAAK;AACnB,QAAI,EAAE,qBAAqB,GAAG,KAAK,EAAE,aAAa,IAAI,EAAE,GAAG;AACzD,aAAO,IAAI,GAAG;AAAA,IAChB;AAAA,EACF;AACA,MAAI,EAAE,sBAAsB,IAAI,GAAG;AACjC,WAAO,WAAK,OAAL,mBAAS;AAAA,EAClB;AACA,SAAO;AACT;AAEO,0BACL,SACA,GACA,YACA;AA/FF;AAgGE,MAAI,CAAC,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC,EAAE,aAAa,EAAE,QAAQ;AAAG,WAAO;AACrE,QAAM,WAAW,QAAQ,MAAM,eAAe;AAC9C,QAAM,UAAU,SAAS,EAAE,OAAO;AAClC,MAAI,CAAC,oCAAS;AAAM,WAAO;AAC3B,MAAI,CAAC,QAAQ,KAAK,qBAAqB;AAAG,WAAO;AACjD,QAAM,OAAO,QAAQ,KAAK,KAAK;AAC/B,MAAI,CAAC,EAAE,iBAAiB,IAAI;AAAG,WAAO;AACtC,MAAI,CAAC,EAAE,aAAa,KAAK,MAAM;AAAG,WAAO;AAEzC,MAAI,KAAK,OAAO,SAAS;AAAY,WAAO;AAC5C,QAAM,aAAa,cAAQ,MAAM,WAAW,UAAU,MAAnC,mBAAsC,KAAK;AAC9D,MAAI,CAAC,EAAE,oBAAoB,UAAU;AAAG,WAAO;AAC/C,MAAI,WAAW,OAAO,UAAU,WAAW;AACzC,QAAI,CAAC,gBAAgB,UAAU,GAAG;AAChC,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEO,MAAM,kBAAkB,CAAC,YAAoB;AAClD,SAAO,QAAQ,SAAS,WAAW,KAAK,QAAQ,SAAS,WAAW;AACtE;",
6
- "names": []
7
- }
@@ -1,146 +0,0 @@
1
- import * as t from "@babel/types";
2
- import { getStylesAtomic, mediaObjectToString } from "@tamagui/core-node";
3
- import { MEDIA_SEP } from "../constants";
4
- import { isInsideTamagui, isPresent } from "./extractHelpers";
5
- function extractMediaStyle(ternary, jsxPath, tamaguiConfig, sourcePath, importance = 0, shouldPrintDebug = false) {
6
- const mt = getMediaQueryTernary(ternary, jsxPath, sourcePath);
7
- if (!mt) {
8
- return null;
9
- }
10
- const { key } = mt;
11
- const mq = tamaguiConfig.media[key];
12
- if (!mq) {
13
- console.error(`Media query "${key}" not found: ${Object.keys(tamaguiConfig.media)}`);
14
- return null;
15
- }
16
- const getStyleObj = (styleObj, negate = false) => {
17
- return styleObj ? { styleObj, negate } : null;
18
- };
19
- const styleOpts = [
20
- getStyleObj(ternary.consequent, false),
21
- getStyleObj(ternary.alternate, true)
22
- ].filter(isPresent);
23
- if (shouldPrintDebug && !styleOpts.length) {
24
- console.log(" media query, no styles?");
25
- return null;
26
- }
27
- const mediaKeys = Object.keys(tamaguiConfig.media);
28
- const mediaKeyPrecendence = mediaKeys.reduce((acc, cur, i) => {
29
- acc[cur] = new Array(importance + 1).fill(":root").join("");
30
- return acc;
31
- }, {});
32
- let mediaStyles = [];
33
- for (const { styleObj, negate } of styleOpts) {
34
- const styles = getStylesAtomic(styleObj);
35
- const singleMediaStyles = styles.map((style) => {
36
- const negKey = negate ? "0" : "";
37
- const ogPrefix = style.identifier.slice(0, style.identifier.indexOf("-") + 1);
38
- const identifier = `${style.identifier.replace(ogPrefix, `${ogPrefix}${MEDIA_SEP}${key}${negKey}${MEDIA_SEP}`)}`;
39
- const className = `.${identifier}`;
40
- const mediaSelector = mediaObjectToString(tamaguiConfig.media[key]);
41
- const screenStr = negate ? "not all" : "screen";
42
- const mediaQuery = `${screenStr} and ${mediaSelector}`;
43
- const precendencePrefix = mediaKeyPrecendence[key];
44
- const styleInner = style.rules.map((rule) => rule.replace(style.identifier, identifier)).join(";");
45
- let styleRule = "";
46
- if (styleInner.includes("@media")) {
47
- styleRule = styleInner.replace("{", ` and ${mediaQuery} {`);
48
- } else {
49
- styleRule = `@media ${mediaQuery} { ${precendencePrefix} ${styleInner} }`;
50
- }
51
- return {
52
- ...style,
53
- identifier,
54
- className,
55
- rules: [styleRule]
56
- };
57
- });
58
- if (shouldPrintDebug === "verbose") {
59
- console.log(" media styles:", importance, styleObj, singleMediaStyles.map((x) => x.identifier).join(", "));
60
- }
61
- mediaStyles = [...mediaStyles, ...singleMediaStyles];
62
- }
63
- ternary.remove();
64
- return { mediaStyles, ternaryWithoutMedia: mt.ternaryWithoutMedia };
65
- }
66
- function getMediaQueryTernary(ternary, jsxPath, sourcePath) {
67
- if (t.isLogicalExpression(ternary.test) && ternary.test.operator === "&&") {
68
- const mediaLeft = getMediaInfoFromExpression(ternary.test.left, jsxPath, sourcePath, ternary.inlineMediaQuery);
69
- if (mediaLeft) {
70
- return {
71
- ...mediaLeft,
72
- ternaryWithoutMedia: {
73
- ...ternary,
74
- test: ternary.test.right
75
- }
76
- };
77
- }
78
- }
79
- const result = getMediaInfoFromExpression(ternary.test, jsxPath, sourcePath, ternary.inlineMediaQuery);
80
- if (result) {
81
- return {
82
- ...result,
83
- ternaryWithoutMedia: null
84
- };
85
- }
86
- return null;
87
- }
88
- function getMediaInfoFromExpression(test, jsxPath, sourcePath, inlineMediaQuery) {
89
- var _a, _b, _c;
90
- if (inlineMediaQuery) {
91
- return {
92
- key: inlineMediaQuery,
93
- bindingName: inlineMediaQuery
94
- };
95
- }
96
- if (t.isMemberExpression(test) && t.isIdentifier(test.object) && t.isIdentifier(test.property)) {
97
- const name = test.object["name"];
98
- const key = test.property["name"];
99
- const bindings = jsxPath.scope.getAllBindings();
100
- const binding = bindings[name];
101
- if (!binding)
102
- return false;
103
- const bindingNode = (_a = binding.path) == null ? void 0 : _a.node;
104
- if (!t.isVariableDeclarator(bindingNode) || !bindingNode.init)
105
- return false;
106
- if (!isValidMediaCall(jsxPath, bindingNode.init, sourcePath))
107
- return false;
108
- return { key, bindingName: name };
109
- }
110
- if (t.isIdentifier(test)) {
111
- const key = test.name;
112
- const node = (_c = (_b = jsxPath.scope.getBinding(test.name)) == null ? void 0 : _b.path) == null ? void 0 : _c.node;
113
- if (!t.isVariableDeclarator(node))
114
- return false;
115
- if (!node.init || !isValidMediaCall(jsxPath, node.init, sourcePath))
116
- return false;
117
- return { key, bindingName: key };
118
- }
119
- return null;
120
- }
121
- function isValidMediaCall(jsxPath, init, sourcePath) {
122
- if (!t.isCallExpression(init))
123
- return false;
124
- if (!t.isIdentifier(init.callee))
125
- return false;
126
- if (init.callee.name !== "useMedia")
127
- return false;
128
- const bindings = jsxPath.scope.getAllBindings();
129
- const mediaBinding = bindings["useMedia"];
130
- if (!mediaBinding)
131
- return false;
132
- const useMediaImport = mediaBinding.path.parent;
133
- if (!t.isImportDeclaration(useMediaImport))
134
- return false;
135
- if (useMediaImport.source.value !== "tamagui") {
136
- if (!isInsideTamagui(sourcePath)) {
137
- return false;
138
- }
139
- }
140
- return true;
141
- }
142
- export {
143
- extractMediaStyle,
144
- isValidMediaCall
145
- };
146
- //# sourceMappingURL=extractMediaStyle.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/extractor/extractMediaStyle.ts"],
4
- "sourcesContent": ["import { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\nimport { TamaguiInternalConfig, getStylesAtomic, mediaObjectToString } from '@tamagui/core-node'\nimport { ViewStyle } from 'react-native'\n\nimport { MEDIA_SEP } from '../constants'\nimport { StyleObject, Ternary } from '../types'\nimport { isInsideTamagui, isPresent } from './extractHelpers'\n\nexport function extractMediaStyle(\n ternary: Ternary,\n jsxPath: NodePath<t.JSXElement>,\n tamaguiConfig: TamaguiInternalConfig,\n sourcePath: string,\n importance = 0,\n shouldPrintDebug: boolean | 'verbose' = false\n) {\n const mt = getMediaQueryTernary(ternary, jsxPath, sourcePath)\n if (!mt) {\n return null\n }\n const { key } = mt\n const mq = tamaguiConfig.media[key]\n if (!mq) {\n console.error(`Media query \"${key}\" not found: ${Object.keys(tamaguiConfig.media)}`)\n return null\n }\n const getStyleObj = (styleObj: ViewStyle | null, negate = false) => {\n return styleObj ? { styleObj, negate } : null\n }\n const styleOpts = [\n getStyleObj(ternary.consequent, false),\n getStyleObj(ternary.alternate, true),\n ].filter(isPresent)\n if (shouldPrintDebug && !styleOpts.length) {\n console.log(' media query, no styles?')\n return null\n }\n // for now order first strongest\n const mediaKeys = Object.keys(tamaguiConfig.media)\n const mediaKeyPrecendence = mediaKeys.reduce((acc, cur, i) => {\n acc[cur] = new Array(importance + 1).fill(':root').join('')\n return acc\n }, {})\n let mediaStyles: StyleObject[] = []\n for (const { styleObj, negate } of styleOpts) {\n const styles = getStylesAtomic(styleObj)\n const singleMediaStyles = styles.map((style) => {\n const negKey = negate ? '0' : ''\n const ogPrefix = style.identifier.slice(0, style.identifier.indexOf('-') + 1)\n // adds an extra separator before and after to detect later in concatClassName\n // so it goes from: \"_f-[hash]\"\n // to: \"_f-_sm0_[hash]\" or \"_f-_sm_[hash]\"\n const identifier = `${style.identifier.replace(\n ogPrefix,\n `${ogPrefix}${MEDIA_SEP}${key}${negKey}${MEDIA_SEP}`\n )}`\n const className = `.${identifier}`\n const mediaSelector = mediaObjectToString(tamaguiConfig.media[key])\n const screenStr = negate ? 'not all' : 'screen'\n const mediaQuery = `${screenStr} and ${mediaSelector}`\n const precendencePrefix = mediaKeyPrecendence[key]\n const styleInner = style.rules\n .map((rule) => rule.replace(style.identifier, identifier))\n .join(';')\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 ...style,\n identifier,\n className,\n rules: [styleRule],\n }\n })\n if (shouldPrintDebug === 'verbose') {\n // prettier-ignore\n console.log(' media styles:', importance, styleObj, singleMediaStyles.map(x => x.identifier).join(', '))\n }\n // add to output\n mediaStyles = [...mediaStyles, ...singleMediaStyles]\n }\n // filter out\n ternary.remove()\n return { mediaStyles, ternaryWithoutMedia: mt.ternaryWithoutMedia }\n}\n\nfunction getMediaQueryTernary(\n ternary: Ternary,\n jsxPath: NodePath<t.JSXElement>,\n sourcePath: string\n): null | {\n key: string\n bindingName: string\n ternaryWithoutMedia: Ternary | null\n} {\n // this handles unwrapping logical && media query ternarys\n // first, unwrap if it has media logicalExpression\n if (t.isLogicalExpression(ternary.test) && ternary.test.operator === '&&') {\n // *should* be normalized to always be on left side\n const mediaLeft = getMediaInfoFromExpression(\n ternary.test.left,\n jsxPath,\n sourcePath,\n ternary.inlineMediaQuery\n )\n if (mediaLeft) {\n return {\n ...mediaLeft,\n ternaryWithoutMedia: {\n ...ternary,\n test: ternary.test.right,\n },\n }\n }\n }\n // const media = useMedia()\n // ... media.sm\n const result = getMediaInfoFromExpression(\n ternary.test,\n jsxPath,\n sourcePath,\n ternary.inlineMediaQuery\n )\n if (result) {\n return {\n ...result,\n ternaryWithoutMedia: null,\n }\n }\n return null\n}\n\nfunction getMediaInfoFromExpression(\n test: t.Expression,\n jsxPath: NodePath<t.JSXElement>,\n sourcePath: string,\n inlineMediaQuery?: string\n) {\n if (inlineMediaQuery) {\n return {\n key: inlineMediaQuery,\n bindingName: inlineMediaQuery,\n }\n }\n if (t.isMemberExpression(test) && t.isIdentifier(test.object) && t.isIdentifier(test.property)) {\n const name = test.object['name']\n const key = test.property['name']\n const bindings = jsxPath.scope.getAllBindings()\n const binding = bindings[name]\n if (!binding) return false\n const bindingNode = binding.path?.node\n if (!t.isVariableDeclarator(bindingNode) || !bindingNode.init) return false\n if (!isValidMediaCall(jsxPath, bindingNode.init, sourcePath)) return false\n return { key, bindingName: name }\n }\n if (t.isIdentifier(test)) {\n const key = test.name\n const node = jsxPath.scope.getBinding(test.name)?.path?.node\n if (!t.isVariableDeclarator(node)) return false\n if (!node.init || !isValidMediaCall(jsxPath, node.init, sourcePath)) return false\n return { key, bindingName: key }\n }\n return null\n}\n\nexport function isValidMediaCall(\n jsxPath: NodePath<t.JSXElement>,\n init: t.Expression,\n sourcePath: string\n) {\n if (!t.isCallExpression(init)) return false\n if (!t.isIdentifier(init.callee)) return false\n // TODO could support renaming useMedia by looking up import first\n if (init.callee.name !== 'useMedia') return false\n const bindings = jsxPath.scope.getAllBindings()\n const mediaBinding = bindings['useMedia']\n if (!mediaBinding) return false\n const useMediaImport = mediaBinding.path.parent\n if (!t.isImportDeclaration(useMediaImport)) return false\n if (useMediaImport.source.value !== 'tamagui') {\n if (!isInsideTamagui(sourcePath)) {\n return false\n }\n }\n return true\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,280 +0,0 @@
1
- import * as path from "path";
2
- import { basename } from "path";
3
- import * as util from "util";
4
- import generate from "@babel/generator";
5
- import * as t from "@babel/types";
6
- import { getStylesAtomic } from "@tamagui/core-node";
7
- import { concatClassName } from "@tamagui/helpers";
8
- import invariant from "invariant";
9
- import { CONCAT_CLASSNAME_IMPORT } from "../constants";
10
- import { babelParse } from "./babelParse";
11
- import { buildClassName } from "./buildClassName";
12
- import { ensureImportingConcat } from "./ensureImportingConcat";
13
- import { isSimpleSpread } from "./extractHelpers";
14
- import { extractMediaStyle } from "./extractMediaStyle";
15
- import { getPrefixLogs } from "./getPrefixLogs";
16
- import { hoistClassNames } from "./hoistClassNames";
17
- import { logLines } from "./logLines";
18
- import { timer } from "./timer";
19
- const mergeStyleGroups = {
20
- shadowOpacity: true,
21
- shadowRadius: true,
22
- shadowColor: true,
23
- shadowOffset: true
24
- };
25
- function extractToClassNames({
26
- extractor,
27
- source,
28
- sourcePath,
29
- options,
30
- shouldPrintDebug
31
- }) {
32
- var _a;
33
- const tm = timer();
34
- if (typeof source !== "string") {
35
- throw new Error("`source` must be a string of javascript");
36
- }
37
- invariant(typeof sourcePath === "string" && path.isAbsolute(sourcePath), "`sourcePath` must be an absolute path to a .js file");
38
- const shouldLogTiming = (_a = options.logTimings) != null ? _a : true;
39
- const start = Date.now();
40
- const mem = shouldLogTiming ? process.memoryUsage() : null;
41
- let ast;
42
- try {
43
- ast = babelParse(source);
44
- } catch (err) {
45
- console.error("babel parse error:", sourcePath);
46
- throw err;
47
- }
48
- tm.mark(`babel-parse`, shouldPrintDebug === "verbose");
49
- const cssMap = /* @__PURE__ */ new Map();
50
- const existingHoists = {};
51
- let hasFlattened = false;
52
- const res = extractor.parse(ast, {
53
- sourcePath,
54
- shouldPrintDebug,
55
- ...options,
56
- target: "html",
57
- extractStyledDefinitions: true,
58
- onStyleRule(identifier, rules) {
59
- cssMap.set(`.${identifier}`, { css: rules.join(";"), commentTexts: [] });
60
- },
61
- getFlattenedNode: ({ tag }) => {
62
- hasFlattened = true;
63
- return tag;
64
- },
65
- onExtractTag: ({
66
- attrs,
67
- node,
68
- attemptEval,
69
- jsxPath,
70
- originalNodeName,
71
- filePath,
72
- lineNumbers,
73
- programPath,
74
- isFlattened
75
- }) => {
76
- var _a2, _b;
77
- const didFlattenThisTag = hasFlattened;
78
- hasFlattened = false;
79
- let finalClassNames = [];
80
- let finalAttrs = [];
81
- let finalStyles = [];
82
- let viewStyles = {};
83
- for (const attr of attrs) {
84
- if (attr.type === "style") {
85
- viewStyles = {
86
- ...viewStyles,
87
- ...attr.value
88
- };
89
- }
90
- }
91
- const ensureNeededPrevStyle = (style) => {
92
- var _a3;
93
- const keys = Object.keys(style);
94
- if (!keys.some((key) => mergeStyleGroups[key])) {
95
- return style;
96
- }
97
- for (const k in mergeStyleGroups) {
98
- if (k in viewStyles) {
99
- style[k] = (_a3 = style[k]) != null ? _a3 : viewStyles[k];
100
- }
101
- }
102
- return style;
103
- };
104
- const addStyles = (style) => {
105
- if (!style)
106
- return [];
107
- const styleWithPrev = ensureNeededPrevStyle(style);
108
- const res2 = getStylesAtomic(styleWithPrev);
109
- if (res2.length) {
110
- finalStyles = [...finalStyles, ...res2];
111
- }
112
- return res2;
113
- };
114
- let lastMediaImportance = 1;
115
- for (const attr of attrs) {
116
- switch (attr.type) {
117
- case "style":
118
- if (!isFlattened) {
119
- const styles2 = getStylesAtomic(attr.value);
120
- finalStyles = [...finalStyles, ...styles2];
121
- for (const style of styles2) {
122
- const prop = style.pseudo ? `${style.property}-${style.pseudo}` : style.property;
123
- finalAttrs.push(t.jsxAttribute(t.jsxIdentifier(prop), t.stringLiteral(style.identifier)));
124
- }
125
- } else {
126
- const styles2 = addStyles(attr.value);
127
- const newClassNames = concatClassName(styles2.map((x) => x.identifier).join(" "));
128
- const existing = finalClassNames.find((x) => x.type == "StringLiteral");
129
- if (existing) {
130
- existing.value = `${existing.value} ${newClassNames}`;
131
- } else {
132
- finalClassNames = [...finalClassNames, t.stringLiteral(newClassNames)];
133
- }
134
- }
135
- break;
136
- case "attr":
137
- const val = attr.value;
138
- if (t.isJSXSpreadAttribute(val)) {
139
- if (isSimpleSpread(val)) {
140
- finalClassNames.push(t.logicalExpression("&&", val.argument, t.memberExpression(val.argument, t.identifier("className"))));
141
- }
142
- } else if (val.name.name === "className") {
143
- const value = val.value;
144
- if (value) {
145
- try {
146
- const evaluatedValue = attemptEval(value);
147
- finalClassNames.push(t.stringLiteral(evaluatedValue));
148
- } catch (e) {
149
- finalClassNames.push(value["expression"]);
150
- }
151
- }
152
- continue;
153
- }
154
- finalAttrs.push(val);
155
- break;
156
- case "ternary":
157
- const mediaExtraction = extractMediaStyle(attr.value, jsxPath, extractor.getTamagui(), sourcePath, lastMediaImportance, shouldPrintDebug);
158
- if (shouldPrintDebug) {
159
- if (mediaExtraction) {
160
- console.log("ternary (mediaStyles)", (_b = (_a2 = mediaExtraction.ternaryWithoutMedia) == null ? void 0 : _a2.inlineMediaQuery) != null ? _b : "", mediaExtraction.mediaStyles.map((x) => x.identifier).join("."));
161
- }
162
- }
163
- if (!mediaExtraction) {
164
- addTernaryStyle(attr.value, addStyles(attr.value.consequent), addStyles(attr.value.alternate));
165
- continue;
166
- }
167
- lastMediaImportance++;
168
- if (mediaExtraction.mediaStyles) {
169
- finalStyles = [...finalStyles, ...mediaExtraction.mediaStyles];
170
- }
171
- if (mediaExtraction.ternaryWithoutMedia) {
172
- addTernaryStyle(mediaExtraction.ternaryWithoutMedia, mediaExtraction.mediaStyles, []);
173
- } else {
174
- finalClassNames = [
175
- ...finalClassNames,
176
- ...mediaExtraction.mediaStyles.map((x) => t.stringLiteral(x.identifier))
177
- ];
178
- }
179
- break;
180
- }
181
- }
182
- function addTernaryStyle(ternary, a, b) {
183
- const cCN = a.map((x) => x.identifier).join(" ");
184
- const aCN = b.map((x) => x.identifier).join(" ");
185
- if (a.length && b.length) {
186
- finalClassNames.push(t.conditionalExpression(ternary.test, t.stringLiteral(cCN), t.stringLiteral(aCN)));
187
- } else {
188
- finalClassNames.push(t.conditionalExpression(ternary.test, t.stringLiteral(" " + cCN), t.stringLiteral(" " + aCN)));
189
- }
190
- }
191
- if (shouldPrintDebug) {
192
- console.log(" finalClassNames\n", logLines(finalClassNames.map((x) => x["value"]).join(" ")));
193
- }
194
- node.attributes = finalAttrs;
195
- if (finalClassNames.length) {
196
- let names = buildClassName(finalClassNames);
197
- if (t.isStringLiteral(names)) {
198
- names.value = concatClassName(names.value);
199
- }
200
- const nameExpr = names ? hoistClassNames(jsxPath, existingHoists, names) : null;
201
- let expr = nameExpr;
202
- if (nameExpr && !t.isIdentifier(nameExpr)) {
203
- if (!didFlattenThisTag) {
204
- } else {
205
- ensureImportingConcat(programPath);
206
- const simpleSpreads = attrs.filter((x) => t.isJSXSpreadAttribute(x.value) && isSimpleSpread(x.value));
207
- expr = t.callExpression(t.identifier(CONCAT_CLASSNAME_IMPORT), [
208
- expr,
209
- ...simpleSpreads.map((val) => val.value["argument"])
210
- ]);
211
- }
212
- }
213
- node.attributes.push(t.jsxAttribute(t.jsxIdentifier("className"), t.jsxExpressionContainer(expr)));
214
- }
215
- const comment = util.format("/* %s:%s (%s) */", filePath, lineNumbers, originalNodeName);
216
- for (const { identifier, rules } of finalStyles) {
217
- const className = `.${identifier}`;
218
- if (cssMap.has(className)) {
219
- if (comment) {
220
- const val = cssMap.get(className);
221
- val.commentTexts.push(comment);
222
- cssMap.set(className, val);
223
- }
224
- } else if (rules.length) {
225
- if (rules.length > 1) {
226
- console.log(" rules error", { rules });
227
- throw new Error(`Shouldn't have more than one rule`);
228
- }
229
- cssMap.set(className, {
230
- css: rules[0],
231
- commentTexts: [comment]
232
- });
233
- }
234
- }
235
- }
236
- });
237
- if (!res || !res.modified && !res.optimized && !res.flattened && !res.styled) {
238
- if (shouldPrintDebug) {
239
- console.log("no res or none modified", res);
240
- }
241
- return null;
242
- }
243
- const styles = Array.from(cssMap.values()).map((x) => x.css).join("\n").trim();
244
- const result = generate(ast, {
245
- concise: false,
246
- filename: sourcePath,
247
- retainLines: false,
248
- sourceFileName: sourcePath,
249
- sourceMaps: true
250
- }, source);
251
- if (shouldPrintDebug) {
252
- console.log("\n -------- output code ------- \n\n", result.code.split("\n").filter((x) => !x.startsWith("//")).join("\n"));
253
- console.log("\n -------- output style -------- \n\n", styles);
254
- }
255
- if (shouldLogTiming) {
256
- const memUsed = mem ? Math.round((process.memoryUsage().heapUsed - mem.heapUsed) / 1024 / 1204 * 10) / 10 : 0;
257
- const path2 = basename(sourcePath).replace(/\.[jt]sx?$/, "").slice(0, 22).trim().padStart(24);
258
- const numStyled = `${res.styled}`.padStart(3);
259
- const numOptimized = `${res.optimized}`.padStart(3);
260
- const numFound = `${res.found}`.padStart(3);
261
- const numFlattened = `${res.flattened}`.padStart(3);
262
- const memory = process.env.DEBUG && memUsed > 10 ? ` ${memUsed}MB` : "";
263
- const timing = Date.now() - start;
264
- const timingWarning = timing > 150 ? "\u26A0\uFE0F" : timing > 150 ? "\u2622\uFE0F" : "";
265
- const timingStr = `${timing}ms ${timingWarning}`.padStart(6);
266
- const pre = getPrefixLogs(options);
267
- const memStr = memory ? `(${memory})` : "";
268
- console.log(`${pre} ${path2} ${numFound} \xB7 ${numOptimized} \xB7 ${numFlattened} \xB7 ${numStyled} ${timingStr} ${memStr}`);
269
- }
270
- return {
271
- ast,
272
- styles,
273
- js: result.code,
274
- map: result.map
275
- };
276
- }
277
- export {
278
- extractToClassNames
279
- };
280
- //# sourceMappingURL=extractToClassNames.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/extractor/extractToClassNames.ts"],
4
- "sourcesContent": ["import * as path from 'path'\nimport { basename } from 'path'\nimport * as util from 'util'\n\nimport generate from '@babel/generator'\nimport * as t from '@babel/types'\nimport { getStylesAtomic } from '@tamagui/core-node'\nimport { concatClassName } from '@tamagui/helpers'\nimport invariant from 'invariant'\nimport { ViewStyle } from 'react-native'\n\nimport { CONCAT_CLASSNAME_IMPORT } from '../constants'\nimport { ClassNameObject, StyleObject, TamaguiOptions, Ternary } from '../types'\nimport { babelParse } from './babelParse'\nimport { buildClassName } from './buildClassName'\nimport { Extractor } from './createExtractor'\nimport { ensureImportingConcat } from './ensureImportingConcat'\nimport { isSimpleSpread } from './extractHelpers'\nimport { extractMediaStyle } from './extractMediaStyle'\nimport { getPrefixLogs } from './getPrefixLogs'\nimport { hoistClassNames } from './hoistClassNames'\nimport { logLines } from './logLines'\nimport { timer } from './timer'\n\nconst mergeStyleGroups = {\n shadowOpacity: true,\n shadowRadius: true,\n shadowColor: true,\n shadowOffset: true,\n}\n\nexport type ExtractedResponse = {\n js: string | Buffer\n styles: string\n stylesPath?: string\n ast: t.File\n map: any // RawSourceMap from 'source-map'\n}\n\nexport function extractToClassNames({\n extractor,\n source,\n sourcePath,\n options,\n shouldPrintDebug,\n}: {\n extractor: Extractor\n source: string | Buffer\n sourcePath: string\n options: TamaguiOptions\n shouldPrintDebug: boolean | 'verbose'\n}): ExtractedResponse | null {\n const tm = timer()\n\n if (typeof source !== 'string') {\n throw new Error('`source` must be a string of javascript')\n }\n invariant(\n typeof sourcePath === 'string' && path.isAbsolute(sourcePath),\n '`sourcePath` must be an absolute path to a .js file'\n )\n\n const shouldLogTiming = options.logTimings ?? true\n const start = Date.now()\n const mem = shouldLogTiming ? process.memoryUsage() : null\n\n // Using a map for (officially supported) guaranteed insertion order\n let ast: t.File\n\n try {\n ast = babelParse(source)\n } catch (err) {\n console.error('babel parse error:', sourcePath)\n throw err\n }\n\n tm.mark(`babel-parse`, shouldPrintDebug === 'verbose')\n\n const cssMap = new Map<string, { css: string; commentTexts: string[] }>()\n const existingHoists: { [key: string]: t.Identifier } = {}\n\n let hasFlattened = false\n\n const res = extractor.parse(ast, {\n sourcePath,\n shouldPrintDebug,\n ...options,\n target: 'html',\n extractStyledDefinitions: true,\n onStyleRule(identifier, rules) {\n cssMap.set(`.${identifier}`, { css: rules.join(';'), commentTexts: [] })\n },\n getFlattenedNode: ({ tag }) => {\n hasFlattened = true\n return tag\n },\n onExtractTag: ({\n attrs,\n node,\n attemptEval,\n jsxPath,\n originalNodeName,\n filePath,\n lineNumbers,\n programPath,\n isFlattened,\n }) => {\n // reset hasFlattened\n const didFlattenThisTag = hasFlattened\n hasFlattened = false\n\n let finalClassNames: ClassNameObject[] = []\n let finalAttrs: (t.JSXAttribute | t.JSXSpreadAttribute)[] = []\n let finalStyles: StyleObject[] = []\n\n let viewStyles = {}\n for (const attr of attrs) {\n if (attr.type === 'style') {\n viewStyles = {\n ...viewStyles,\n ...attr.value,\n }\n }\n }\n\n const ensureNeededPrevStyle = (style: ViewStyle) => {\n // ensure all group keys are merged\n const keys = Object.keys(style)\n if (!keys.some((key) => mergeStyleGroups[key])) {\n return style\n }\n for (const k in mergeStyleGroups) {\n if (k in viewStyles) {\n style[k] = style[k] ?? viewStyles[k]\n }\n }\n return style\n }\n\n const addStyles = (style: ViewStyle | null): StyleObject[] => {\n if (!style) return []\n const styleWithPrev = ensureNeededPrevStyle(style)\n const res = getStylesAtomic(styleWithPrev)\n if (res.length) {\n finalStyles = [...finalStyles, ...res]\n }\n return res\n }\n\n // 1 to start above any :hover styles\n let lastMediaImportance = 1\n for (const attr of attrs) {\n switch (attr.type) {\n case 'style':\n if (!isFlattened) {\n const styles = getStylesAtomic(attr.value)\n\n finalStyles = [...finalStyles, ...styles]\n\n for (const style of styles) {\n // leave them as attributes\n const prop = style.pseudo ? `${style.property}-${style.pseudo}` : style.property\n finalAttrs.push(\n t.jsxAttribute(t.jsxIdentifier(prop), t.stringLiteral(style.identifier))\n )\n }\n } else {\n const styles = addStyles(attr.value)\n const newClassNames = concatClassName(styles.map((x) => x.identifier).join(' '))\n const existing = finalClassNames.find(\n (x) => x.type == 'StringLiteral'\n ) as t.StringLiteral | null\n\n if (existing) {\n existing.value = `${existing.value} ${newClassNames}`\n } else {\n finalClassNames = [...finalClassNames, t.stringLiteral(newClassNames)]\n }\n }\n\n break\n case 'attr':\n const val = attr.value\n if (t.isJSXSpreadAttribute(val)) {\n if (isSimpleSpread(val)) {\n finalClassNames.push(\n t.logicalExpression(\n '&&',\n val.argument,\n t.memberExpression(val.argument, t.identifier('className'))\n )\n )\n }\n } else if (val.name.name === 'className') {\n const value = val.value\n if (value) {\n try {\n const evaluatedValue = attemptEval(value)\n finalClassNames.push(t.stringLiteral(evaluatedValue))\n } catch (e) {\n finalClassNames.push(value['expression'])\n }\n }\n continue\n }\n finalAttrs.push(val)\n break\n case 'ternary':\n const mediaExtraction = extractMediaStyle(\n attr.value,\n jsxPath,\n extractor.getTamagui(),\n sourcePath,\n lastMediaImportance,\n shouldPrintDebug\n )\n if (shouldPrintDebug) {\n if (mediaExtraction) {\n // prettier-ignore\n console.log('ternary (mediaStyles)', mediaExtraction.ternaryWithoutMedia?.inlineMediaQuery ?? '', mediaExtraction.mediaStyles.map((x) => x.identifier).join('.'))\n }\n }\n if (!mediaExtraction) {\n addTernaryStyle(\n attr.value,\n addStyles(attr.value.consequent),\n addStyles(attr.value.alternate)\n )\n continue\n }\n lastMediaImportance++\n if (mediaExtraction.mediaStyles) {\n finalStyles = [...finalStyles, ...mediaExtraction.mediaStyles]\n }\n if (mediaExtraction.ternaryWithoutMedia) {\n addTernaryStyle(mediaExtraction.ternaryWithoutMedia, mediaExtraction.mediaStyles, [])\n } else {\n finalClassNames = [\n ...finalClassNames,\n ...mediaExtraction.mediaStyles.map((x) => t.stringLiteral(x.identifier)),\n ]\n }\n break\n }\n }\n\n function addTernaryStyle(ternary: Ternary, a: any, b: any) {\n const cCN = a.map((x) => x.identifier).join(' ')\n const aCN = b.map((x) => x.identifier).join(' ')\n if (a.length && b.length) {\n finalClassNames.push(\n t.conditionalExpression(ternary.test, t.stringLiteral(cCN), t.stringLiteral(aCN))\n )\n } else {\n finalClassNames.push(\n t.conditionalExpression(\n ternary.test,\n t.stringLiteral(' ' + cCN),\n t.stringLiteral(' ' + aCN)\n )\n )\n }\n }\n\n if (shouldPrintDebug) {\n // prettier-ignore\n console.log(' finalClassNames\\n', logLines(finalClassNames.map(x => x['value']).join(' ')))\n }\n\n node.attributes = finalAttrs\n\n if (finalClassNames.length) {\n // inserts the _cn variable and uses it for className\n let names = buildClassName(finalClassNames)\n if (t.isStringLiteral(names)) {\n names.value = concatClassName(names.value)\n }\n const nameExpr = names ? hoistClassNames(jsxPath, existingHoists, names) : null\n let expr = nameExpr\n\n // if has some spreads, use concat helper\n if (nameExpr && !t.isIdentifier(nameExpr)) {\n if (!didFlattenThisTag) {\n // not flat\n } else {\n ensureImportingConcat(programPath)\n const simpleSpreads = attrs.filter(\n (x) => t.isJSXSpreadAttribute(x.value) && isSimpleSpread(x.value)\n )\n expr = t.callExpression(t.identifier(CONCAT_CLASSNAME_IMPORT), [\n expr,\n ...simpleSpreads.map((val) => val.value['argument']),\n ])\n }\n }\n\n node.attributes.push(\n t.jsxAttribute(t.jsxIdentifier('className'), t.jsxExpressionContainer(expr))\n )\n }\n\n const comment = util.format('/* %s:%s (%s) */', filePath, lineNumbers, originalNodeName)\n\n for (const { identifier, rules } of finalStyles) {\n const className = `.${identifier}`\n if (cssMap.has(className)) {\n if (comment) {\n const val = cssMap.get(className)!\n val.commentTexts.push(comment)\n cssMap.set(className, val)\n }\n } else if (rules.length) {\n if (rules.length > 1) {\n console.log(' rules error', { rules })\n throw new Error(`Shouldn't have more than one rule`)\n }\n cssMap.set(className, {\n css: rules[0],\n commentTexts: [comment],\n })\n }\n }\n },\n })\n\n if (!res || (!res.modified && !res.optimized && !res.flattened && !res.styled)) {\n if (shouldPrintDebug) {\n console.log('no res or none modified', res)\n }\n return null\n }\n\n const styles = Array.from(cssMap.values())\n .map((x) => x.css)\n .join('\\n')\n .trim()\n\n const result = generate(\n ast,\n {\n concise: false,\n filename: sourcePath,\n // this makes the debug output terrible, and i think sourcemap works already\n retainLines: false,\n sourceFileName: sourcePath,\n sourceMaps: true,\n },\n source\n )\n\n if (shouldPrintDebug) {\n console.log(\n '\\n -------- output code ------- \\n\\n',\n result.code\n .split('\\n')\n .filter((x) => !x.startsWith('//'))\n .join('\\n')\n )\n console.log('\\n -------- output style -------- \\n\\n', styles)\n }\n\n if (shouldLogTiming) {\n const memUsed = mem\n ? Math.round(((process.memoryUsage().heapUsed - mem.heapUsed) / 1024 / 1204) * 10) / 10\n : 0\n const path = basename(sourcePath)\n .replace(/\\.[jt]sx?$/, '')\n .slice(0, 22)\n .trim()\n .padStart(24)\n\n const numStyled = `${res.styled}`.padStart(3)\n const numOptimized = `${res.optimized}`.padStart(3)\n const numFound = `${res.found}`.padStart(3)\n const numFlattened = `${res.flattened}`.padStart(3)\n const memory = process.env.DEBUG && memUsed > 10 ? ` ${memUsed}MB` : ''\n const timing = Date.now() - start\n const timingWarning = timing > 150 ? '\u26A0\uFE0F' : timing > 150 ? '\u2622\uFE0F' : ''\n const timingStr = `${timing}ms ${timingWarning}`.padStart(6)\n const pre = getPrefixLogs(options)\n const memStr = memory ? `(${memory})` : ''\n console.log(\n `${pre} ${path} ${numFound} \u00B7 ${numOptimized} \u00B7 ${numFlattened} \u00B7 ${numStyled} ${timingStr} ${memStr}`\n )\n }\n\n return {\n ast,\n styles,\n js: result.code,\n map: result.map,\n }\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,20 +0,0 @@
1
- function findTopmostFunction(jsxPath) {
2
- const isFunction = (path) => path.isArrowFunctionExpression() || path.isFunctionDeclaration() || path.isFunctionExpression();
3
- let compFn = jsxPath.findParent(isFunction);
4
- while (compFn) {
5
- const parent = compFn.findParent(isFunction);
6
- if (parent) {
7
- compFn = parent;
8
- } else {
9
- break;
10
- }
11
- }
12
- if (!compFn) {
13
- return null;
14
- }
15
- return compFn;
16
- }
17
- export {
18
- findTopmostFunction
19
- };
20
- //# sourceMappingURL=findTopmostFunction.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/extractor/findTopmostFunction.ts"],
4
- "sourcesContent": ["import { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\n\nexport function findTopmostFunction(jsxPath: NodePath<t.JSXElement>) {\n // get topmost fn\n const isFunction = (path: NodePath<any>) =>\n path.isArrowFunctionExpression() || path.isFunctionDeclaration() || path.isFunctionExpression()\n let compFn: NodePath<any> | null = jsxPath.findParent(isFunction)\n while (compFn) {\n const parent = compFn.findParent(isFunction)\n if (parent) {\n compFn = parent\n } else {\n break\n }\n }\n if (!compFn) {\n // console.error(`Couldn't find a topmost function for media query extraction`)\n return null\n }\n return compFn\n}\n"],
5
- "mappings": "AAGO,6BAA6B,SAAiC;AAEnE,QAAM,aAAa,CAAC,SAClB,KAAK,0BAA0B,KAAK,KAAK,sBAAsB,KAAK,KAAK,qBAAqB;AAChG,MAAI,SAA+B,QAAQ,WAAW,UAAU;AAChE,SAAO,QAAQ;AACb,UAAM,SAAS,OAAO,WAAW,UAAU;AAC3C,QAAI,QAAQ;AACV,eAAS;AAAA,IACX,OAAO;AACL;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,QAAQ;AAEX,WAAO;AAAA,EACT;AACA,SAAO;AACT;",
6
- "names": []
7
- }