@tamagui/static 1.0.1-beta.149 → 1.0.1-beta.152

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 (226) hide show
  1. package/dist/{cjs/constants.js → constants.js} +4 -1
  2. package/dist/{esm/constants.js.map → constants.js.map} +3 -3
  3. package/dist/{cjs/extractor → extractor}/accessSafe.js +13 -2
  4. package/dist/{esm/extractor → extractor}/accessSafe.js.map +2 -2
  5. package/dist/{cjs/extractor → extractor}/babelParse.js +4 -1
  6. package/dist/{cjs/extractor → extractor}/babelParse.js.map +2 -2
  7. package/dist/{cjs/extractor → extractor}/buildClassName.js +19 -4
  8. package/dist/extractor/buildClassName.js.map +7 -0
  9. package/dist/{cjs/extractor → extractor}/createEvaluator.js +7 -4
  10. package/dist/extractor/createEvaluator.js.map +7 -0
  11. package/dist/{cjs/extractor → extractor}/createExtractor.js +186 -64
  12. package/dist/{esm/extractor → extractor}/createExtractor.js.map +4 -4
  13. package/dist/{cjs/extractor → extractor}/ensureImportingConcat.js +21 -6
  14. package/dist/extractor/ensureImportingConcat.js.map +7 -0
  15. package/dist/{cjs/extractor → extractor}/evaluateAstNode.js +13 -4
  16. package/dist/{esm/extractor → extractor}/evaluateAstNode.js.map +2 -2
  17. package/dist/{cjs/extractor → extractor}/extractHelpers.js +8 -3
  18. package/dist/extractor/extractHelpers.js.map +7 -0
  19. package/dist/{cjs/extractor → extractor}/extractMediaStyle.js +22 -6
  20. package/dist/extractor/extractMediaStyle.js.map +7 -0
  21. package/dist/{cjs/extractor → extractor}/extractToClassNames.js +87 -32
  22. package/dist/extractor/extractToClassNames.js.map +7 -0
  23. package/dist/{cjs/extractor → extractor}/findTopmostFunction.js +0 -0
  24. package/dist/{cjs/extractor → extractor}/findTopmostFunction.js.map +2 -2
  25. package/dist/{cjs/extractor → extractor}/generatedUid.js +8 -2
  26. package/dist/{cjs/extractor → extractor}/generatedUid.js.map +3 -3
  27. package/dist/{cjs/extractor → extractor}/getPrefixLogs.js +0 -0
  28. package/dist/extractor/getPrefixLogs.js.map +7 -0
  29. package/dist/{cjs/extractor → extractor}/getPropValueFromAttributes.js +23 -13
  30. package/dist/extractor/getPropValueFromAttributes.js.map +7 -0
  31. package/dist/{cjs/extractor → extractor}/getSourceModule.js +4 -1
  32. package/dist/{esm/extractor → extractor}/getSourceModule.js.map +2 -2
  33. package/dist/{cjs/extractor → extractor}/getStaticBindingsForScope.js +9 -4
  34. package/dist/extractor/getStaticBindingsForScope.js.map +7 -0
  35. package/dist/{cjs/extractor → extractor}/hoistClassNames.js +4 -1
  36. package/dist/{jsx/extractor → extractor}/hoistClassNames.js.map +3 -3
  37. package/dist/{cjs/extractor → extractor}/literalToAst.js +18 -10
  38. package/dist/{jsx/extractor → extractor}/literalToAst.js.map +2 -2
  39. package/dist/{cjs/extractor → extractor}/loadFile.js +0 -0
  40. package/dist/{cjs/extractor → extractor}/loadFile.js.map +1 -1
  41. package/dist/{cjs/extractor → extractor}/loadTamagui.js +34 -7
  42. package/dist/extractor/loadTamagui.js.map +7 -0
  43. package/dist/{cjs/extractor → extractor}/logLines.js +0 -0
  44. package/dist/{cjs/extractor → extractor}/logLines.js.map +2 -2
  45. package/dist/{cjs/extractor → extractor}/normalizeTernaries.js +8 -2
  46. package/dist/extractor/normalizeTernaries.js.map +7 -0
  47. package/dist/{cjs/extractor → extractor}/removeUnusedHooks.js +4 -1
  48. package/dist/{esm/extractor → extractor}/removeUnusedHooks.js.map +2 -2
  49. package/dist/{cjs/extractor → extractor}/timer.js +0 -0
  50. package/dist/{cjs/extractor → extractor}/timer.js.map +1 -1
  51. package/dist/{cjs/extractor → extractor}/validHTMLAttributes.js +0 -0
  52. package/dist/{cjs/extractor → extractor}/validHTMLAttributes.js.map +1 -1
  53. package/dist/{cjs/getPragmaOptions.js → getPragmaOptions.js} +0 -0
  54. package/dist/{cjs/getPragmaOptions.js.map → getPragmaOptions.js.map} +2 -2
  55. package/dist/{cjs/index.js → index.js} +9 -9
  56. package/dist/index.js.map +7 -0
  57. package/dist/{cjs/require.js → require.js} +10 -4
  58. package/dist/require.js.map +7 -0
  59. package/dist/{cjs/types.js → types.js} +0 -0
  60. package/dist/types.js.map +7 -0
  61. package/dist/{cjs/webpackPlugin.js → webpackPlugin.js} +0 -0
  62. package/dist/{cjs/webpackPlugin.js.map → webpackPlugin.js.map} +1 -1
  63. package/package.json +15 -15
  64. package/src/extractor/buildClassName.ts +1 -1
  65. package/src/extractor/createEvaluator.ts +3 -3
  66. package/src/extractor/createExtractor.ts +21 -15
  67. package/src/extractor/ensureImportingConcat.ts +1 -1
  68. package/src/extractor/extractHelpers.ts +4 -3
  69. package/src/extractor/extractMediaStyle.ts +3 -3
  70. package/src/extractor/extractToClassNames.ts +12 -12
  71. package/src/extractor/getPrefixLogs.ts +1 -1
  72. package/src/extractor/getPropValueFromAttributes.ts +2 -2
  73. package/src/extractor/getStaticBindingsForScope.ts +2 -2
  74. package/src/extractor/loadTamagui.ts +27 -5
  75. package/src/extractor/normalizeTernaries.ts +1 -1
  76. package/src/index.ts +9 -10
  77. package/src/require.ts +1 -1
  78. package/src/types.ts +4 -3
  79. package/tamagui.tsconfig.json +5 -0
  80. package/types/extractor/buildClassName.d.ts +1 -1
  81. package/types/extractor/createExtractor.d.ts +4 -4
  82. package/types/extractor/extractHelpers.d.ts +1 -1
  83. package/types/extractor/extractMediaStyle.d.ts +1 -1
  84. package/types/extractor/extractToClassNames.d.ts +2 -2
  85. package/types/extractor/getPrefixLogs.d.ts +1 -1
  86. package/types/extractor/normalizeTernaries.d.ts +1 -1
  87. package/types/index.d.ts +9 -9
  88. package/types/types.d.ts +4 -3
  89. package/dist/cjs/constants.js.map +0 -7
  90. package/dist/cjs/extractor/accessSafe.js.map +0 -7
  91. package/dist/cjs/extractor/buildClassName.js.map +0 -7
  92. package/dist/cjs/extractor/createEvaluator.js.map +0 -7
  93. package/dist/cjs/extractor/createExtractor.js.map +0 -7
  94. package/dist/cjs/extractor/ensureImportingConcat.js.map +0 -7
  95. package/dist/cjs/extractor/evaluateAstNode.js.map +0 -7
  96. package/dist/cjs/extractor/extractHelpers.js.map +0 -7
  97. package/dist/cjs/extractor/extractMediaStyle.js.map +0 -7
  98. package/dist/cjs/extractor/extractToClassNames.js.map +0 -7
  99. package/dist/cjs/extractor/getPrefixLogs.js.map +0 -7
  100. package/dist/cjs/extractor/getPropValueFromAttributes.js.map +0 -7
  101. package/dist/cjs/extractor/getSourceModule.js.map +0 -7
  102. package/dist/cjs/extractor/getStaticBindingsForScope.js.map +0 -7
  103. package/dist/cjs/extractor/hoistClassNames.js.map +0 -7
  104. package/dist/cjs/extractor/literalToAst.js.map +0 -7
  105. package/dist/cjs/extractor/loadTamagui.js.map +0 -7
  106. package/dist/cjs/extractor/normalizeTernaries.js.map +0 -7
  107. package/dist/cjs/extractor/removeUnusedHooks.js.map +0 -7
  108. package/dist/cjs/index.js.map +0 -7
  109. package/dist/cjs/require.js.map +0 -7
  110. package/dist/cjs/types.js.map +0 -7
  111. package/dist/esm/constants.js +0 -17
  112. package/dist/esm/extractor/accessSafe.js +0 -8
  113. package/dist/esm/extractor/babelParse.js +0 -28
  114. package/dist/esm/extractor/babelParse.js.map +0 -7
  115. package/dist/esm/extractor/buildClassName.js +0 -37
  116. package/dist/esm/extractor/buildClassName.js.map +0 -7
  117. package/dist/esm/extractor/createEvaluator.js +0 -52
  118. package/dist/esm/extractor/createEvaluator.js.map +0 -7
  119. package/dist/esm/extractor/createExtractor.js +0 -1374
  120. package/dist/esm/extractor/ensureImportingConcat.js +0 -21
  121. package/dist/esm/extractor/ensureImportingConcat.js.map +0 -7
  122. package/dist/esm/extractor/evaluateAstNode.js +0 -91
  123. package/dist/esm/extractor/extractHelpers.js +0 -97
  124. package/dist/esm/extractor/extractHelpers.js.map +0 -7
  125. package/dist/esm/extractor/extractMediaStyle.js +0 -146
  126. package/dist/esm/extractor/extractMediaStyle.js.map +0 -7
  127. package/dist/esm/extractor/extractToClassNames.js +0 -308
  128. package/dist/esm/extractor/extractToClassNames.js.map +0 -7
  129. package/dist/esm/extractor/findTopmostFunction.js +0 -20
  130. package/dist/esm/extractor/findTopmostFunction.js.map +0 -7
  131. package/dist/esm/extractor/generatedUid.js +0 -25
  132. package/dist/esm/extractor/generatedUid.js.map +0 -7
  133. package/dist/esm/extractor/getPrefixLogs.js +0 -8
  134. package/dist/esm/extractor/getPrefixLogs.js.map +0 -7
  135. package/dist/esm/extractor/getPropValueFromAttributes.js +0 -46
  136. package/dist/esm/extractor/getPropValueFromAttributes.js.map +0 -7
  137. package/dist/esm/extractor/getSourceModule.js +0 -66
  138. package/dist/esm/extractor/getStaticBindingsForScope.js +0 -172
  139. package/dist/esm/extractor/getStaticBindingsForScope.js.map +0 -7
  140. package/dist/esm/extractor/hoistClassNames.js +0 -40
  141. package/dist/esm/extractor/hoistClassNames.js.map +0 -7
  142. package/dist/esm/extractor/literalToAst.js +0 -75
  143. package/dist/esm/extractor/literalToAst.js.map +0 -7
  144. package/dist/esm/extractor/loadFile.js +0 -20
  145. package/dist/esm/extractor/loadFile.js.map +0 -7
  146. package/dist/esm/extractor/loadTamagui.js +0 -255
  147. package/dist/esm/extractor/loadTamagui.js.map +0 -7
  148. package/dist/esm/extractor/logLines.js +0 -20
  149. package/dist/esm/extractor/logLines.js.map +0 -7
  150. package/dist/esm/extractor/normalizeTernaries.js +0 -49
  151. package/dist/esm/extractor/normalizeTernaries.js.map +0 -7
  152. package/dist/esm/extractor/removeUnusedHooks.js +0 -76
  153. package/dist/esm/extractor/timer.js +0 -29
  154. package/dist/esm/extractor/timer.js.map +0 -7
  155. package/dist/esm/extractor/validHTMLAttributes.js +0 -102
  156. package/dist/esm/extractor/validHTMLAttributes.js.map +0 -7
  157. package/dist/esm/getPragmaOptions.js +0 -44
  158. package/dist/esm/getPragmaOptions.js.map +0 -7
  159. package/dist/esm/index.js +0 -17
  160. package/dist/esm/index.js.map +0 -7
  161. package/dist/esm/require.js +0 -62
  162. package/dist/esm/require.js.map +0 -7
  163. package/dist/esm/types.js +0 -1
  164. package/dist/esm/types.js.map +0 -7
  165. package/dist/esm/webpackPlugin.js +0 -11
  166. package/dist/esm/webpackPlugin.js.map +0 -7
  167. package/dist/jsx/constants.js +0 -16
  168. package/dist/jsx/constants.js.map +0 -7
  169. package/dist/jsx/extractor/accessSafe.js +0 -8
  170. package/dist/jsx/extractor/accessSafe.js.map +0 -7
  171. package/dist/jsx/extractor/babelParse.js +0 -28
  172. package/dist/jsx/extractor/babelParse.js.map +0 -7
  173. package/dist/jsx/extractor/buildClassName.js +0 -37
  174. package/dist/jsx/extractor/buildClassName.js.map +0 -7
  175. package/dist/jsx/extractor/createEvaluator.js +0 -52
  176. package/dist/jsx/extractor/createEvaluator.js.map +0 -7
  177. package/dist/jsx/extractor/createExtractor.js +0 -1367
  178. package/dist/jsx/extractor/createExtractor.js.map +0 -7
  179. package/dist/jsx/extractor/ensureImportingConcat.js +0 -21
  180. package/dist/jsx/extractor/ensureImportingConcat.js.map +0 -7
  181. package/dist/jsx/extractor/evaluateAstNode.js +0 -91
  182. package/dist/jsx/extractor/evaluateAstNode.js.map +0 -7
  183. package/dist/jsx/extractor/extractHelpers.js +0 -95
  184. package/dist/jsx/extractor/extractHelpers.js.map +0 -7
  185. package/dist/jsx/extractor/extractMediaStyle.js +0 -145
  186. package/dist/jsx/extractor/extractMediaStyle.js.map +0 -7
  187. package/dist/jsx/extractor/extractToClassNames.js +0 -307
  188. package/dist/jsx/extractor/extractToClassNames.js.map +0 -7
  189. package/dist/jsx/extractor/findTopmostFunction.js +0 -20
  190. package/dist/jsx/extractor/findTopmostFunction.js.map +0 -7
  191. package/dist/jsx/extractor/generatedUid.js +0 -25
  192. package/dist/jsx/extractor/generatedUid.js.map +0 -7
  193. package/dist/jsx/extractor/getPrefixLogs.js +0 -8
  194. package/dist/jsx/extractor/getPrefixLogs.js.map +0 -7
  195. package/dist/jsx/extractor/getPropValueFromAttributes.js +0 -46
  196. package/dist/jsx/extractor/getPropValueFromAttributes.js.map +0 -7
  197. package/dist/jsx/extractor/getSourceModule.js +0 -66
  198. package/dist/jsx/extractor/getSourceModule.js.map +0 -7
  199. package/dist/jsx/extractor/getStaticBindingsForScope.js +0 -172
  200. package/dist/jsx/extractor/getStaticBindingsForScope.js.map +0 -7
  201. package/dist/jsx/extractor/hoistClassNames.js +0 -40
  202. package/dist/jsx/extractor/literalToAst.js +0 -75
  203. package/dist/jsx/extractor/loadFile.js +0 -19
  204. package/dist/jsx/extractor/loadFile.js.map +0 -7
  205. package/dist/jsx/extractor/loadTamagui.js +0 -253
  206. package/dist/jsx/extractor/loadTamagui.js.map +0 -7
  207. package/dist/jsx/extractor/logLines.js +0 -20
  208. package/dist/jsx/extractor/logLines.js.map +0 -7
  209. package/dist/jsx/extractor/normalizeTernaries.js +0 -49
  210. package/dist/jsx/extractor/normalizeTernaries.js.map +0 -7
  211. package/dist/jsx/extractor/removeUnusedHooks.js +0 -75
  212. package/dist/jsx/extractor/removeUnusedHooks.js.map +0 -7
  213. package/dist/jsx/extractor/timer.js +0 -29
  214. package/dist/jsx/extractor/timer.js.map +0 -7
  215. package/dist/jsx/extractor/validHTMLAttributes.js +0 -102
  216. package/dist/jsx/extractor/validHTMLAttributes.js.map +0 -7
  217. package/dist/jsx/getPragmaOptions.js +0 -43
  218. package/dist/jsx/getPragmaOptions.js.map +0 -7
  219. package/dist/jsx/index.js +0 -17
  220. package/dist/jsx/index.js.map +0 -7
  221. package/dist/jsx/require.js +0 -62
  222. package/dist/jsx/require.js.map +0 -7
  223. package/dist/jsx/types.js +0 -1
  224. package/dist/jsx/types.js.map +0 -7
  225. package/dist/jsx/webpackPlugin.js +0 -11
  226. package/dist/jsx/webpackPlugin.js.map +0 -7
@@ -1,21 +0,0 @@
1
- import * as t from "@babel/types";
2
- import { CONCAT_CLASSNAME_IMPORT } from "../constants";
3
- const importConcatPkg = "@tamagui/helpers";
4
- function ensureImportingConcat(path) {
5
- const bodyPath = path.get("body");
6
- const imported = bodyPath.find((x) => x.isImportDeclaration() && x.node.source.value === importConcatPkg);
7
- const importSpecifier = t.importSpecifier(t.identifier(CONCAT_CLASSNAME_IMPORT), t.identifier(CONCAT_CLASSNAME_IMPORT));
8
- if (!imported) {
9
- path.node.body.push(t.importDeclaration([importSpecifier], t.stringLiteral(importConcatPkg)));
10
- return;
11
- }
12
- const specifiers = imported.node.specifiers;
13
- const alreadyImported = specifiers.some((x) => t.isImportSpecifier(x) && t.isIdentifier(x.imported) && x.imported.name === CONCAT_CLASSNAME_IMPORT);
14
- if (!alreadyImported) {
15
- specifiers.push(t.importSpecifier(t.identifier(CONCAT_CLASSNAME_IMPORT), t.identifier(CONCAT_CLASSNAME_IMPORT)));
16
- }
17
- }
18
- export {
19
- ensureImportingConcat
20
- };
21
- //# sourceMappingURL=ensureImportingConcat.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/extractor/ensureImportingConcat.ts"],
4
- "sourcesContent": ["import { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\n\nimport { CONCAT_CLASSNAME_IMPORT } from '../constants'\n\nconst importConcatPkg = '@tamagui/helpers'\n\nexport function ensureImportingConcat(path: NodePath<t.Program>) {\n const bodyPath = path.get('body')\n const imported: NodePath<t.ImportDeclaration> | undefined = bodyPath.find(\n (x) => x.isImportDeclaration() && x.node.source.value === importConcatPkg\n ) as any\n const importSpecifier = t.importSpecifier(\n t.identifier(CONCAT_CLASSNAME_IMPORT),\n t.identifier(CONCAT_CLASSNAME_IMPORT)\n )\n\n if (!imported) {\n path.node.body.push(t.importDeclaration([importSpecifier], t.stringLiteral(importConcatPkg)))\n return\n }\n\n const specifiers = imported.node.specifiers\n const alreadyImported = specifiers.some(\n (x) =>\n t.isImportSpecifier(x) &&\n t.isIdentifier(x.imported) &&\n x.imported.name === CONCAT_CLASSNAME_IMPORT\n )\n\n if (!alreadyImported) {\n specifiers.push(\n t.importSpecifier(\n t.identifier(CONCAT_CLASSNAME_IMPORT),\n t.identifier(CONCAT_CLASSNAME_IMPORT)\n )\n )\n }\n}\n"],
5
- "mappings": "AACA;AAEA;AAEA,MAAM,kBAAkB;AAEjB,+BAA+B,MAA2B;AAC/D,QAAM,WAAW,KAAK,IAAI,MAAM;AAChC,QAAM,WAAsD,SAAS,KACnE,CAAC,MAAM,EAAE,oBAAoB,KAAK,EAAE,KAAK,OAAO,UAAU,eAC5D;AACA,QAAM,kBAAkB,EAAE,gBACxB,EAAE,WAAW,uBAAuB,GACpC,EAAE,WAAW,uBAAuB,CACtC;AAEA,MAAI,CAAC,UAAU;AACb,SAAK,KAAK,KAAK,KAAK,EAAE,kBAAkB,CAAC,eAAe,GAAG,EAAE,cAAc,eAAe,CAAC,CAAC;AAC5F;AAAA,EACF;AAEA,QAAM,aAAa,SAAS,KAAK;AACjC,QAAM,kBAAkB,WAAW,KACjC,CAAC,MACC,EAAE,kBAAkB,CAAC,KACrB,EAAE,aAAa,EAAE,QAAQ,KACzB,EAAE,SAAS,SAAS,uBACxB;AAEA,MAAI,CAAC,iBAAiB;AACpB,eAAW,KACT,EAAE,gBACA,EAAE,WAAW,uBAAuB,GACpC,EAAE,WAAW,uBAAuB,CACtC,CACF;AAAA,EACF;AACF;",
6
- "names": []
7
- }
@@ -1,91 +0,0 @@
1
- import * as t from "@babel/types";
2
- function evaluateAstNode(exprNode, evalFn, shouldPrintDebug) {
3
- if (exprNode === void 0) {
4
- return void 0;
5
- }
6
- if (exprNode === null) {
7
- return true;
8
- }
9
- if (t.isJSXExpressionContainer(exprNode)) {
10
- return evaluateAstNode(exprNode.expression);
11
- }
12
- if (t.isObjectExpression(exprNode)) {
13
- const ret = {};
14
- for (let idx = -1, len = exprNode.properties.length; ++idx < len; ) {
15
- const value = exprNode.properties[idx];
16
- if (!t.isObjectProperty(value)) {
17
- throw new Error("evaluateAstNode can only evaluate object properties");
18
- }
19
- let key;
20
- if (value.computed) {
21
- if (typeof evalFn !== "function") {
22
- throw new Error("evaluateAstNode does not support computed keys unless an eval function is provided");
23
- }
24
- key = evaluateAstNode(value.key, evalFn);
25
- } else if (t.isIdentifier(value.key)) {
26
- key = value.key.name;
27
- } else if (t.isStringLiteral(value.key) || t.isNumericLiteral(value.key)) {
28
- key = value.key.value;
29
- } else {
30
- throw new Error("Unsupported key type: " + value.key.type);
31
- }
32
- if (typeof key !== "string" && typeof key !== "number") {
33
- throw new Error("key must be either a string or a number");
34
- }
35
- ret[key] = evaluateAstNode(value.value, evalFn);
36
- }
37
- return ret;
38
- }
39
- if (t.isArrayExpression(exprNode)) {
40
- return exprNode.elements.map((x) => {
41
- return evaluateAstNode(x, evalFn);
42
- });
43
- }
44
- if (t.isUnaryExpression(exprNode) && exprNode.operator === "-") {
45
- const ret = evaluateAstNode(exprNode.argument, evalFn);
46
- if (ret == null) {
47
- return null;
48
- }
49
- return -ret;
50
- }
51
- if (t.isTemplateLiteral(exprNode)) {
52
- if (typeof evalFn !== "function") {
53
- throw new Error("evaluateAstNode does not support template literals unless an eval function is provided");
54
- }
55
- let ret = "";
56
- for (let idx = -1, len = exprNode.quasis.length; ++idx < len; ) {
57
- const quasi = exprNode.quasis[idx];
58
- const expr = exprNode.expressions[idx];
59
- ret += quasi.value.raw;
60
- if (expr) {
61
- ret += evaluateAstNode(expr, evalFn);
62
- }
63
- }
64
- return ret;
65
- }
66
- if (t.isNullLiteral(exprNode)) {
67
- return null;
68
- }
69
- if (t.isNumericLiteral(exprNode) || t.isStringLiteral(exprNode) || t.isBooleanLiteral(exprNode)) {
70
- return exprNode.value;
71
- }
72
- if (t.isBinaryExpression(exprNode)) {
73
- if (exprNode.operator === "+") {
74
- return evaluateAstNode(exprNode.left, evalFn) + evaluateAstNode(exprNode.right, evalFn);
75
- } else if (exprNode.operator === "-") {
76
- return evaluateAstNode(exprNode.left, evalFn) - evaluateAstNode(exprNode.right, evalFn);
77
- } else if (exprNode.operator === "*") {
78
- return evaluateAstNode(exprNode.left, evalFn) * evaluateAstNode(exprNode.right, evalFn);
79
- } else if (exprNode.operator === "/") {
80
- return evaluateAstNode(exprNode.left, evalFn) / evaluateAstNode(exprNode.right, evalFn);
81
- }
82
- }
83
- if (typeof evalFn !== "function") {
84
- throw new Error("evaluateAstNode does not support non-literal values unless an eval function is provided");
85
- }
86
- return evalFn(exprNode);
87
- }
88
- export {
89
- evaluateAstNode
90
- };
91
- //# sourceMappingURL=evaluateAstNode.js.map
@@ -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": "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",
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": "AACA;AACA;AAGA;AAEA;AAEO,2BACL,SACA,SACA,eACA,YACA,aAAa,GACb,mBAAwC,OACxC;AACA,QAAM,KAAK,qBAAqB,SAAS,SAAS,UAAU;AAC5D,MAAI,CAAC,IAAI;AACP,WAAO;AAAA,EACT;AACA,QAAM,EAAE,QAAQ;AAChB,QAAM,KAAK,cAAc,MAAM;AAC/B,MAAI,CAAC,IAAI;AACP,YAAQ,MAAM,gBAAgB,mBAAmB,OAAO,KAAK,cAAc,KAAK,GAAG;AACnF,WAAO;AAAA,EACT;AACA,QAAM,cAAc,CAAC,UAA4B,SAAS,UAAU;AAClE,WAAO,WAAW,EAAE,UAAU,OAAO,IAAI;AAAA,EAC3C;AACA,QAAM,YAAY;AAAA,IAChB,YAAY,QAAQ,YAAY,KAAK;AAAA,IACrC,YAAY,QAAQ,WAAW,IAAI;AAAA,EACrC,EAAE,OAAO,SAAS;AAClB,MAAI,oBAAoB,CAAC,UAAU,QAAQ;AACzC,YAAQ,IAAI,2BAA2B;AACvC,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,OAAO,KAAK,cAAc,KAAK;AACjD,QAAM,sBAAsB,UAAU,OAAO,CAAC,KAAK,KAAK,MAAM;AAC5D,QAAI,OAAO,IAAI,MAAM,aAAa,CAAC,EAAE,KAAK,OAAO,EAAE,KAAK,EAAE;AAC1D,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACL,MAAI,cAA6B,CAAC;AAClC,aAAW,EAAE,UAAU,YAAY,WAAW;AAC5C,UAAM,SAAS,gBAAgB,QAAQ;AACvC,UAAM,oBAAoB,OAAO,IAAI,CAAC,UAAU;AAC9C,YAAM,SAAS,SAAS,MAAM;AAC9B,YAAM,WAAW,MAAM,WAAW,MAAM,GAAG,MAAM,WAAW,QAAQ,GAAG,IAAI,CAAC;AAI5E,YAAM,aAAa,GAAG,MAAM,WAAW,QACrC,UACA,GAAG,WAAW,YAAY,MAAM,SAAS,WAC3C;AACA,YAAM,YAAY,IAAI;AACtB,YAAM,gBAAgB,oBAAoB,cAAc,MAAM,IAAI;AAClE,YAAM,YAAY,SAAS,YAAY;AACvC,YAAM,aAAa,GAAG,iBAAiB;AACvC,YAAM,oBAAoB,oBAAoB;AAC9C,YAAM,aAAa,MAAM,MACtB,IAAI,CAAC,SAAS,KAAK,QAAQ,MAAM,YAAY,UAAU,CAAC,EACxD,KAAK,GAAG;AAEX,UAAI,YAAY;AAChB,UAAI,WAAW,SAAS,QAAQ,GAAG;AAEjC,oBAAY,WAAW,QAAQ,KAAK,QAAQ,cAAc;AAAA,MAC5D,OAAO;AACL,oBAAY,UAAU,gBAAgB,qBAAqB;AAAA,MAC7D;AACA,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA,OAAO,CAAC,SAAS;AAAA,MACnB;AAAA,IACF,CAAC;AACD,QAAI,qBAAqB,WAAW;AAElC,cAAQ,IAAI,mBAAmB,YAAY,UAAU,kBAAkB,IAAI,OAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;AAAA,IAC1G;AAEA,kBAAc,CAAC,GAAG,aAAa,GAAG,iBAAiB;AAAA,EACrD;AAEA,UAAQ,OAAO;AACf,SAAO,EAAE,aAAa,qBAAqB,GAAG,oBAAoB;AACpE;AAEA,8BACE,SACA,SACA,YAKA;AAGA,MAAI,EAAE,oBAAoB,QAAQ,IAAI,KAAK,QAAQ,KAAK,aAAa,MAAM;AAEzE,UAAM,YAAY,2BAChB,QAAQ,KAAK,MACb,SACA,YACA,QAAQ,gBACV;AACA,QAAI,WAAW;AACb,aAAO;AAAA,QACL,GAAG;AAAA,QACH,qBAAqB;AAAA,UACnB,GAAG;AAAA,UACH,MAAM,QAAQ,KAAK;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,QAAM,SAAS,2BACb,QAAQ,MACR,SACA,YACA,QAAQ,gBACV;AACA,MAAI,QAAQ;AACV,WAAO;AAAA,MACL,GAAG;AAAA,MACH,qBAAqB;AAAA,IACvB;AAAA,EACF;AACA,SAAO;AACT;AAEA,oCACE,MACA,SACA,YACA,kBACA;AA/IF;AAgJE,MAAI,kBAAkB;AACpB,WAAO;AAAA,MACL,KAAK;AAAA,MACL,aAAa;AAAA,IACf;AAAA,EACF;AACA,MAAI,EAAE,mBAAmB,IAAI,KAAK,EAAE,aAAa,KAAK,MAAM,KAAK,EAAE,aAAa,KAAK,QAAQ,GAAG;AAC9F,UAAM,OAAO,KAAK,OAAO;AACzB,UAAM,MAAM,KAAK,SAAS;AAC1B,UAAM,WAAW,QAAQ,MAAM,eAAe;AAC9C,UAAM,UAAU,SAAS;AACzB,QAAI,CAAC;AAAS,aAAO;AACrB,UAAM,cAAc,cAAQ,SAAR,mBAAc;AAClC,QAAI,CAAC,EAAE,qBAAqB,WAAW,KAAK,CAAC,YAAY;AAAM,aAAO;AACtE,QAAI,CAAC,iBAAiB,SAAS,YAAY,MAAM,UAAU;AAAG,aAAO;AACrE,WAAO,EAAE,KAAK,aAAa,KAAK;AAAA,EAClC;AACA,MAAI,EAAE,aAAa,IAAI,GAAG;AACxB,UAAM,MAAM,KAAK;AACjB,UAAM,OAAO,oBAAQ,MAAM,WAAW,KAAK,IAAI,MAAlC,mBAAqC,SAArC,mBAA2C;AACxD,QAAI,CAAC,EAAE,qBAAqB,IAAI;AAAG,aAAO;AAC1C,QAAI,CAAC,KAAK,QAAQ,CAAC,iBAAiB,SAAS,KAAK,MAAM,UAAU;AAAG,aAAO;AAC5E,WAAO,EAAE,KAAK,aAAa,IAAI;AAAA,EACjC;AACA,SAAO;AACT;AAEO,0BACL,SACA,MACA,YACA;AACA,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,WAAW,QAAQ,MAAM,eAAe;AAC9C,QAAM,eAAe,SAAS;AAC9B,MAAI,CAAC;AAAc,WAAO;AAC1B,QAAM,iBAAiB,aAAa,KAAK;AACzC,MAAI,CAAC,EAAE,oBAAoB,cAAc;AAAG,WAAO;AACnD,MAAI,eAAe,OAAO,UAAU,WAAW;AAC7C,QAAI,CAAC,gBAAgB,UAAU,GAAG;AAChC,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;",
6
- "names": []
7
- }