@tamagui/static 1.14.1 → 1.14.2

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 (195) hide show
  1. package/dist/cjs/constants.js +52 -1
  2. package/dist/cjs/constants.js.map +2 -2
  3. package/dist/cjs/extractor/accessSafe.js +52 -1
  4. package/dist/cjs/extractor/accessSafe.js.map +2 -2
  5. package/dist/cjs/extractor/babelParse.js +66 -1
  6. package/dist/cjs/extractor/babelParse.js.map +2 -2
  7. package/dist/cjs/extractor/buildClassName.js +99 -1
  8. package/dist/cjs/extractor/buildClassName.js.map +2 -2
  9. package/dist/cjs/extractor/bundle.js +126 -1
  10. package/dist/cjs/extractor/bundle.js.map +2 -2
  11. package/dist/cjs/extractor/createEvaluator.js +86 -1
  12. package/dist/cjs/extractor/createEvaluator.js.map +2 -2
  13. package/dist/cjs/extractor/createExtractor.js +1630 -15
  14. package/dist/cjs/extractor/createExtractor.js.map +2 -2
  15. package/dist/cjs/extractor/ensureImportingConcat.js +64 -1
  16. package/dist/cjs/extractor/ensureImportingConcat.js.map +2 -2
  17. package/dist/cjs/extractor/evaluateAstNode.js +130 -1
  18. package/dist/cjs/extractor/evaluateAstNode.js.map +2 -2
  19. package/dist/cjs/extractor/extractHelpers.js +207 -1
  20. package/dist/cjs/extractor/extractHelpers.js.map +2 -2
  21. package/dist/cjs/extractor/extractMediaStyle.js +193 -1
  22. package/dist/cjs/extractor/extractMediaStyle.js.map +2 -2
  23. package/dist/cjs/extractor/extractToClassNames.js +413 -13
  24. package/dist/cjs/extractor/extractToClassNames.js.map +2 -2
  25. package/dist/cjs/extractor/findTopmostFunction.js +43 -1
  26. package/dist/cjs/extractor/findTopmostFunction.js.map +2 -2
  27. package/dist/cjs/extractor/generatedUid.js +59 -1
  28. package/dist/cjs/extractor/generatedUid.js.map +2 -2
  29. package/dist/cjs/extractor/getPrefixLogs.js +31 -1
  30. package/dist/cjs/extractor/getPrefixLogs.js.map +2 -2
  31. package/dist/cjs/extractor/getPropValueFromAttributes.js +89 -1
  32. package/dist/cjs/extractor/getPropValueFromAttributes.js.map +2 -2
  33. package/dist/cjs/extractor/getSourceModule.js +103 -1
  34. package/dist/cjs/extractor/getSourceModule.js.map +2 -2
  35. package/dist/cjs/extractor/getStaticBindingsForScope.js +225 -1
  36. package/dist/cjs/extractor/getStaticBindingsForScope.js.map +2 -2
  37. package/dist/cjs/extractor/hoistClassNames.js +74 -1
  38. package/dist/cjs/extractor/hoistClassNames.js.map +2 -2
  39. package/dist/cjs/extractor/literalToAst.js +115 -1
  40. package/dist/cjs/extractor/literalToAst.js.map +2 -2
  41. package/dist/cjs/extractor/loadFile.js +20 -2
  42. package/dist/cjs/extractor/loadFile.js.map +2 -2
  43. package/dist/cjs/extractor/loadTamagui.js +432 -15
  44. package/dist/cjs/extractor/loadTamagui.js.map +2 -2
  45. package/dist/cjs/extractor/logLines.js +43 -3
  46. package/dist/cjs/extractor/logLines.js.map +2 -2
  47. package/dist/cjs/extractor/normalizeTernaries.js +85 -1
  48. package/dist/cjs/extractor/normalizeTernaries.js.map +2 -2
  49. package/dist/cjs/extractor/removeUnusedHooks.js +109 -1
  50. package/dist/cjs/extractor/removeUnusedHooks.js.map +2 -2
  51. package/dist/cjs/extractor/timer.js +52 -1
  52. package/dist/cjs/extractor/timer.js.map +2 -2
  53. package/dist/cjs/extractor/validHTMLAttributes.js +126 -1
  54. package/dist/cjs/extractor/validHTMLAttributes.js.map +2 -2
  55. package/dist/cjs/getPragmaOptions.js +67 -2
  56. package/dist/cjs/getPragmaOptions.js.map +2 -2
  57. package/dist/cjs/helpers/memoize.js +45 -1
  58. package/dist/cjs/helpers/memoize.js.map +2 -2
  59. package/dist/cjs/index.js +42 -1
  60. package/dist/cjs/index.js.map +2 -2
  61. package/dist/cjs/require.js +81 -5
  62. package/dist/cjs/require.js.map +2 -2
  63. package/dist/cjs/types.js +16 -1
  64. package/dist/cjs/types.js.map +2 -2
  65. package/dist/cjs/webpackPlugin.js +34 -1
  66. package/dist/cjs/webpackPlugin.js.map +2 -2
  67. package/dist/esm/constants.js +14 -1
  68. package/dist/esm/constants.js.map +2 -2
  69. package/dist/esm/constants.mjs +14 -1
  70. package/dist/esm/constants.mjs.map +2 -2
  71. package/dist/esm/extractor/accessSafe.js +18 -1
  72. package/dist/esm/extractor/accessSafe.js.map +2 -2
  73. package/dist/esm/extractor/accessSafe.mjs +18 -1
  74. package/dist/esm/extractor/accessSafe.mjs.map +2 -2
  75. package/dist/esm/extractor/babelParse.js +31 -1
  76. package/dist/esm/extractor/babelParse.js.map +2 -2
  77. package/dist/esm/extractor/babelParse.mjs +31 -1
  78. package/dist/esm/extractor/babelParse.mjs.map +2 -2
  79. package/dist/esm/extractor/buildClassName.js +64 -1
  80. package/dist/esm/extractor/buildClassName.js.map +2 -2
  81. package/dist/esm/extractor/buildClassName.mjs +64 -1
  82. package/dist/esm/extractor/buildClassName.mjs.map +2 -2
  83. package/dist/esm/extractor/bundle.js +91 -1
  84. package/dist/esm/extractor/bundle.js.map +2 -2
  85. package/dist/esm/extractor/bundle.mjs +91 -1
  86. package/dist/esm/extractor/bundle.mjs.map +2 -2
  87. package/dist/esm/extractor/createEvaluator.js +51 -1
  88. package/dist/esm/extractor/createEvaluator.js.map +2 -2
  89. package/dist/esm/extractor/createEvaluator.mjs +51 -1
  90. package/dist/esm/extractor/createEvaluator.mjs.map +2 -2
  91. package/dist/esm/extractor/createExtractor.js +1613 -15
  92. package/dist/esm/extractor/createExtractor.js.map +2 -2
  93. package/dist/esm/extractor/createExtractor.mjs +1613 -15
  94. package/dist/esm/extractor/createExtractor.mjs.map +2 -2
  95. package/dist/esm/extractor/ensureImportingConcat.js +30 -1
  96. package/dist/esm/extractor/ensureImportingConcat.js.map +2 -2
  97. package/dist/esm/extractor/ensureImportingConcat.mjs +30 -1
  98. package/dist/esm/extractor/ensureImportingConcat.mjs.map +2 -2
  99. package/dist/esm/extractor/evaluateAstNode.js +96 -1
  100. package/dist/esm/extractor/evaluateAstNode.js.map +2 -2
  101. package/dist/esm/extractor/evaluateAstNode.mjs +96 -1
  102. package/dist/esm/extractor/evaluateAstNode.mjs.map +2 -2
  103. package/dist/esm/extractor/extractHelpers.js +161 -1
  104. package/dist/esm/extractor/extractHelpers.js.map +2 -2
  105. package/dist/esm/extractor/extractHelpers.mjs +161 -1
  106. package/dist/esm/extractor/extractHelpers.mjs.map +2 -2
  107. package/dist/esm/extractor/extractMediaStyle.js +158 -1
  108. package/dist/esm/extractor/extractMediaStyle.js.map +2 -2
  109. package/dist/esm/extractor/extractMediaStyle.mjs +158 -1
  110. package/dist/esm/extractor/extractMediaStyle.mjs.map +2 -2
  111. package/dist/esm/extractor/extractToClassNames.js +379 -13
  112. package/dist/esm/extractor/extractToClassNames.js.map +2 -2
  113. package/dist/esm/extractor/extractToClassNames.mjs +379 -13
  114. package/dist/esm/extractor/extractToClassNames.mjs.map +2 -2
  115. package/dist/esm/extractor/findTopmostFunction.js +19 -1
  116. package/dist/esm/extractor/findTopmostFunction.js.map +2 -2
  117. package/dist/esm/extractor/findTopmostFunction.mjs +19 -1
  118. package/dist/esm/extractor/findTopmostFunction.mjs.map +2 -2
  119. package/dist/esm/extractor/generatedUid.js +25 -1
  120. package/dist/esm/extractor/generatedUid.js.map +2 -2
  121. package/dist/esm/extractor/generatedUid.mjs +25 -1
  122. package/dist/esm/extractor/generatedUid.mjs.map +2 -2
  123. package/dist/esm/extractor/getPrefixLogs.js +7 -1
  124. package/dist/esm/extractor/getPrefixLogs.js.map +2 -2
  125. package/dist/esm/extractor/getPrefixLogs.mjs +7 -1
  126. package/dist/esm/extractor/getPrefixLogs.mjs.map +2 -2
  127. package/dist/esm/extractor/getPropValueFromAttributes.js +55 -1
  128. package/dist/esm/extractor/getPropValueFromAttributes.js.map +2 -2
  129. package/dist/esm/extractor/getPropValueFromAttributes.mjs +55 -1
  130. package/dist/esm/extractor/getPropValueFromAttributes.mjs.map +2 -2
  131. package/dist/esm/extractor/getSourceModule.js +69 -1
  132. package/dist/esm/extractor/getSourceModule.js.map +2 -2
  133. package/dist/esm/extractor/getSourceModule.mjs +69 -1
  134. package/dist/esm/extractor/getSourceModule.mjs.map +2 -2
  135. package/dist/esm/extractor/getStaticBindingsForScope.js +190 -1
  136. package/dist/esm/extractor/getStaticBindingsForScope.js.map +2 -2
  137. package/dist/esm/extractor/getStaticBindingsForScope.mjs +190 -1
  138. package/dist/esm/extractor/getStaticBindingsForScope.mjs.map +2 -2
  139. package/dist/esm/extractor/hoistClassNames.js +40 -1
  140. package/dist/esm/extractor/hoistClassNames.js.map +2 -2
  141. package/dist/esm/extractor/hoistClassNames.mjs +40 -1
  142. package/dist/esm/extractor/hoistClassNames.mjs.map +2 -2
  143. package/dist/esm/extractor/literalToAst.js +80 -1
  144. package/dist/esm/extractor/literalToAst.js.map +2 -2
  145. package/dist/esm/extractor/literalToAst.mjs +80 -1
  146. package/dist/esm/extractor/literalToAst.mjs.map +2 -2
  147. package/dist/esm/extractor/loadFile.js +19 -2
  148. package/dist/esm/extractor/loadFile.js.map +2 -2
  149. package/dist/esm/extractor/loadFile.mjs +19 -2
  150. package/dist/esm/extractor/loadFile.mjs.map +2 -2
  151. package/dist/esm/extractor/loadTamagui.js +396 -15
  152. package/dist/esm/extractor/loadTamagui.js.map +2 -2
  153. package/dist/esm/extractor/loadTamagui.mjs +396 -15
  154. package/dist/esm/extractor/loadTamagui.mjs.map +2 -2
  155. package/dist/esm/extractor/logLines.js +19 -3
  156. package/dist/esm/extractor/logLines.js.map +2 -2
  157. package/dist/esm/extractor/logLines.mjs +19 -3
  158. package/dist/esm/extractor/logLines.mjs.map +2 -2
  159. package/dist/esm/extractor/normalizeTernaries.js +51 -1
  160. package/dist/esm/extractor/normalizeTernaries.js.map +2 -2
  161. package/dist/esm/extractor/normalizeTernaries.mjs +51 -1
  162. package/dist/esm/extractor/normalizeTernaries.mjs.map +2 -2
  163. package/dist/esm/extractor/removeUnusedHooks.js +75 -1
  164. package/dist/esm/extractor/removeUnusedHooks.js.map +2 -2
  165. package/dist/esm/extractor/removeUnusedHooks.mjs +75 -1
  166. package/dist/esm/extractor/removeUnusedHooks.mjs.map +2 -2
  167. package/dist/esm/extractor/timer.js +28 -1
  168. package/dist/esm/extractor/timer.js.map +2 -2
  169. package/dist/esm/extractor/timer.mjs +28 -1
  170. package/dist/esm/extractor/timer.mjs.map +2 -2
  171. package/dist/esm/extractor/validHTMLAttributes.js +101 -1
  172. package/dist/esm/extractor/validHTMLAttributes.js.map +2 -2
  173. package/dist/esm/extractor/validHTMLAttributes.mjs +101 -1
  174. package/dist/esm/extractor/validHTMLAttributes.mjs.map +2 -2
  175. package/dist/esm/getPragmaOptions.js +43 -2
  176. package/dist/esm/getPragmaOptions.js.map +2 -2
  177. package/dist/esm/getPragmaOptions.mjs +43 -2
  178. package/dist/esm/getPragmaOptions.mjs.map +2 -2
  179. package/dist/esm/helpers/memoize.js +21 -1
  180. package/dist/esm/helpers/memoize.js.map +2 -2
  181. package/dist/esm/helpers/memoize.mjs +21 -1
  182. package/dist/esm/helpers/memoize.mjs.map +2 -2
  183. package/dist/esm/index.js +15 -1
  184. package/dist/esm/index.js.map +2 -2
  185. package/dist/esm/index.mjs +15 -1
  186. package/dist/esm/index.mjs.map +2 -2
  187. package/dist/esm/require.js +55 -5
  188. package/dist/esm/require.js.map +2 -2
  189. package/dist/esm/require.mjs +55 -5
  190. package/dist/esm/require.mjs.map +2 -2
  191. package/dist/esm/webpackPlugin.js +10 -1
  192. package/dist/esm/webpackPlugin.js.map +2 -2
  193. package/dist/esm/webpackPlugin.mjs +10 -1
  194. package/dist/esm/webpackPlugin.mjs.map +2 -2
  195. package/package.json +14 -14
@@ -1,2 +1,159 @@
1
- import*as o from"@babel/types";import{getStylesAtomic as A,mediaObjectToString as v}from"@tamagui/core-node";import{MEDIA_SEP as T}from"../constants.js";import{isPresent as B,isValidImport as J}from"./extractHelpers.js";function R(s,e,i,n,a,t=0,f=!1){const c=K(s,e,i,a);if(!c)return null;const{key:r}=c;if(!n.media[r])return console.error(`Media query "${r}" not found: ${Object.keys(n.media)}`),null;const y=(l,u=!1)=>l?{styleObj:l,negate:u}:null,p=[y(e.consequent,!1),y(e.alternate,!0)].filter(B);if(f&&!p.length)return console.log(" media query, no styles?"),null;const W=Object.keys(n.media).reduce((l,u,j)=>(l[u]=new Array(t+1).fill(":root").join(""),l),{});let b=[];for(const{styleObj:l,negate:u}of p){const $=A(l).map(d=>{const x=u?"0":"",h=d.identifier.slice(0,d.identifier.indexOf("-")+1),S=`${d.identifier.replace(h,`${h}${T}${r}${x}${T}`)}`,k=`.${S}`,F=v(n.media[r]),O=`${u?"not all":"screen"} and ${F}`,V=W[r],I=d.rules.map(q=>q.replace(d.identifier,S)).join(";");let M="";return I.includes("@media")?M=I.replace("{",` and ${O} {`):M=`@media ${O} { ${V} ${I} }`,{...d,identifier:S,className:k,rules:[M]}});f==="verbose"&&console.log(" media styles:",t,l,$.map(d=>d.identifier).join(", ")),b=[...b,...$]}return e.remove(),{mediaStyles:b,ternaryWithoutMedia:c.ternaryWithoutMedia}}function K(s,e,i,n){if(o.isLogicalExpression(e.test)&&e.test.operator==="&&"){const t=E(s,e.test.left,i,n,e.inlineMediaQuery);if(t)return{...t,ternaryWithoutMedia:{...e,test:e.test.right}}}const a=E(s,e.test,i,n,e.inlineMediaQuery);return a?{...a,ternaryWithoutMedia:null}:null}function E(s,e,i,n,a){var t,f,c;if(a)return{key:a,bindingName:a};if(o.isMemberExpression(e)&&o.isIdentifier(e.object)&&o.isIdentifier(e.property)){const r=e.object.name,m=e.property.name,p=i.scope.getAllBindings()[r];if(!p)return!1;const g=(t=p.path)==null?void 0:t.node;return!o.isVariableDeclarator(g)||!g.init||!N(s,i,g.init,n)?!1:{key:m,bindingName:r}}if(o.isIdentifier(e)){const r=e.name,m=(c=(f=i.scope.getBinding(e.name))==null?void 0:f.path)==null?void 0:c.node;return!o.isVariableDeclarator(m)||!m.init||!N(s,i,m.init,n)?!1:{key:r,bindingName:r}}return null}function N(s,e,i,n){if(!o.isCallExpression(i)||!o.isIdentifier(i.callee)||i.callee.name!=="useMedia")return!1;const t=e.scope.getAllBindings().useMedia;if(!t)return!1;const f=t.path.parent;return!(!o.isImportDeclaration(f)||!J(s,n))}export{R as extractMediaStyle,N as isValidMediaCall};
1
+ import * as t from "@babel/types";
2
+ import { getStylesAtomic, mediaObjectToString } from "@tamagui/core-node";
3
+ import { MEDIA_SEP } from "../constants.js";
4
+ import { isPresent, isValidImport } from "./extractHelpers.js";
5
+ function extractMediaStyle(props, ternary, jsxPath, tamaguiConfig, sourcePath, importance = 0, shouldPrintDebug = false) {
6
+ const mt = getMediaQueryTernary(props, 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(
39
+ ogPrefix,
40
+ `${ogPrefix}${MEDIA_SEP}${key}${negKey}${MEDIA_SEP}`
41
+ )}`;
42
+ const className = `.${identifier}`;
43
+ const mediaSelector = mediaObjectToString(tamaguiConfig.media[key]);
44
+ const screenStr = negate ? "not all" : "screen";
45
+ const mediaQuery = `${screenStr} and ${mediaSelector}`;
46
+ const precendencePrefix = mediaKeyPrecendence[key];
47
+ const styleInner = style.rules.map((rule) => rule.replace(style.identifier, identifier)).join(";");
48
+ let styleRule = "";
49
+ if (styleInner.includes("@media")) {
50
+ styleRule = styleInner.replace("{", ` and ${mediaQuery} {`);
51
+ } else {
52
+ styleRule = `@media ${mediaQuery} { ${precendencePrefix} ${styleInner} }`;
53
+ }
54
+ return {
55
+ ...style,
56
+ identifier,
57
+ className,
58
+ rules: [styleRule]
59
+ };
60
+ });
61
+ if (shouldPrintDebug === "verbose") {
62
+ console.log(" media styles:", importance, styleObj, singleMediaStyles.map((x) => x.identifier).join(", "));
63
+ }
64
+ mediaStyles = [...mediaStyles, ...singleMediaStyles];
65
+ }
66
+ ternary.remove();
67
+ return { mediaStyles, ternaryWithoutMedia: mt.ternaryWithoutMedia };
68
+ }
69
+ function getMediaQueryTernary(props, ternary, jsxPath, sourcePath) {
70
+ if (t.isLogicalExpression(ternary.test) && ternary.test.operator === "&&") {
71
+ const mediaLeft = getMediaInfoFromExpression(
72
+ props,
73
+ ternary.test.left,
74
+ jsxPath,
75
+ sourcePath,
76
+ ternary.inlineMediaQuery
77
+ );
78
+ if (mediaLeft) {
79
+ return {
80
+ ...mediaLeft,
81
+ ternaryWithoutMedia: {
82
+ ...ternary,
83
+ test: ternary.test.right
84
+ }
85
+ };
86
+ }
87
+ }
88
+ const result = getMediaInfoFromExpression(
89
+ props,
90
+ ternary.test,
91
+ jsxPath,
92
+ sourcePath,
93
+ ternary.inlineMediaQuery
94
+ );
95
+ if (result) {
96
+ return {
97
+ ...result,
98
+ ternaryWithoutMedia: null
99
+ };
100
+ }
101
+ return null;
102
+ }
103
+ function getMediaInfoFromExpression(props, test, jsxPath, sourcePath, inlineMediaQuery) {
104
+ var _a, _b, _c;
105
+ if (inlineMediaQuery) {
106
+ return {
107
+ key: inlineMediaQuery,
108
+ bindingName: inlineMediaQuery
109
+ };
110
+ }
111
+ if (t.isMemberExpression(test) && t.isIdentifier(test.object) && t.isIdentifier(test.property)) {
112
+ const name = test.object["name"];
113
+ const key = test.property["name"];
114
+ const bindings = jsxPath.scope.getAllBindings();
115
+ const binding = bindings[name];
116
+ if (!binding)
117
+ return false;
118
+ const bindingNode = (_a = binding.path) == null ? void 0 : _a.node;
119
+ if (!t.isVariableDeclarator(bindingNode) || !bindingNode.init)
120
+ return false;
121
+ if (!isValidMediaCall(props, jsxPath, bindingNode.init, sourcePath))
122
+ return false;
123
+ return { key, bindingName: name };
124
+ }
125
+ if (t.isIdentifier(test)) {
126
+ const key = test.name;
127
+ const node = (_c = (_b = jsxPath.scope.getBinding(test.name)) == null ? void 0 : _b.path) == null ? void 0 : _c.node;
128
+ if (!t.isVariableDeclarator(node))
129
+ return false;
130
+ if (!node.init || !isValidMediaCall(props, jsxPath, node.init, sourcePath))
131
+ return false;
132
+ return { key, bindingName: key };
133
+ }
134
+ return null;
135
+ }
136
+ function isValidMediaCall(props, jsxPath, init, sourcePath) {
137
+ if (!t.isCallExpression(init))
138
+ return false;
139
+ if (!t.isIdentifier(init.callee))
140
+ return false;
141
+ if (init.callee.name !== "useMedia")
142
+ return false;
143
+ const bindings = jsxPath.scope.getAllBindings();
144
+ const mediaBinding = bindings["useMedia"];
145
+ if (!mediaBinding)
146
+ return false;
147
+ const useMediaImport = mediaBinding.path.parent;
148
+ if (!t.isImportDeclaration(useMediaImport))
149
+ return false;
150
+ if (!isValidImport(props, sourcePath)) {
151
+ return false;
152
+ }
153
+ return true;
154
+ }
155
+ export {
156
+ extractMediaStyle,
157
+ isValidMediaCall
158
+ };
2
159
  //# sourceMappingURL=extractMediaStyle.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/extractMediaStyle.ts"],
4
4
  "sourcesContent": ["import { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\nimport { TamaguiInternalConfig, getStylesAtomic, mediaObjectToString } from '@tamagui/core-node'\nimport type { ViewStyle } from 'react-native'\n\nimport { MEDIA_SEP } from '../constants.js'\nimport type { StyleObject, TamaguiOptionsWithFileInfo, Ternary } from '../types.js'\nimport { isPresent, isValidImport } from './extractHelpers.js'\n\nexport function extractMediaStyle(\n props: TamaguiOptionsWithFileInfo,\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(props, ternary, jsxPath, sourcePath)\n if (!mt) {\n return null\n }\n const { key } = mt\n const mq = tamaguiConfig.media[key]\n if (!mq) {\n // eslint-disable-next-line no-console\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 // eslint-disable-next-line no-console\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\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 // eslint-disable-next-line no-console\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 props: TamaguiOptionsWithFileInfo,\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 props,\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 props,\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 props: TamaguiOptionsWithFileInfo,\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(props, 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(props, jsxPath, node.init, sourcePath)) return false\n return { key, bindingName: key }\n }\n return null\n}\n\nexport function isValidMediaCall(\n props: TamaguiOptionsWithFileInfo,\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 (!isValidImport(props, sourcePath)) {\n return false\n }\n return true\n}\n"],
5
- "mappings": "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",
6
- "names": ["t", "getStylesAtomic", "mediaObjectToString", "MEDIA_SEP", "isPresent", "isValidImport", "extractMediaStyle", "props", "ternary", "jsxPath", "tamaguiConfig", "sourcePath", "importance", "shouldPrintDebug", "mt", "getMediaQueryTernary", "key", "getStyleObj", "styleObj", "negate", "styleOpts", "mediaKeyPrecendence", "acc", "cur", "i", "mediaStyles", "singleMediaStyles", "style", "negKey", "ogPrefix", "identifier", "className", "mediaSelector", "mediaQuery", "precendencePrefix", "styleInner", "rule", "styleRule", "x", "mediaLeft", "getMediaInfoFromExpression", "result", "test", "inlineMediaQuery", "_a", "_b", "_c", "name", "binding", "bindingNode", "isValidMediaCall", "node", "init", "mediaBinding", "useMediaImport"]
5
+ "mappings": "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",
6
+ "names": []
7
7
  }
@@ -1,2 +1,159 @@
1
- import*as o from"@babel/types";import{getStylesAtomic as A,mediaObjectToString as v}from"@tamagui/core-node";import{MEDIA_SEP as T}from"../constants.js";import{isPresent as B,isValidImport as J}from"./extractHelpers.js";function R(s,e,i,n,a,t=0,f=!1){const c=K(s,e,i,a);if(!c)return null;const{key:r}=c;if(!n.media[r])return console.error(`Media query "${r}" not found: ${Object.keys(n.media)}`),null;const y=(l,u=!1)=>l?{styleObj:l,negate:u}:null,p=[y(e.consequent,!1),y(e.alternate,!0)].filter(B);if(f&&!p.length)return console.log(" media query, no styles?"),null;const W=Object.keys(n.media).reduce((l,u,j)=>(l[u]=new Array(t+1).fill(":root").join(""),l),{});let b=[];for(const{styleObj:l,negate:u}of p){const $=A(l).map(d=>{const x=u?"0":"",h=d.identifier.slice(0,d.identifier.indexOf("-")+1),S=`${d.identifier.replace(h,`${h}${T}${r}${x}${T}`)}`,k=`.${S}`,F=v(n.media[r]),O=`${u?"not all":"screen"} and ${F}`,V=W[r],I=d.rules.map(q=>q.replace(d.identifier,S)).join(";");let M="";return I.includes("@media")?M=I.replace("{",` and ${O} {`):M=`@media ${O} { ${V} ${I} }`,{...d,identifier:S,className:k,rules:[M]}});f==="verbose"&&console.log(" media styles:",t,l,$.map(d=>d.identifier).join(", ")),b=[...b,...$]}return e.remove(),{mediaStyles:b,ternaryWithoutMedia:c.ternaryWithoutMedia}}function K(s,e,i,n){if(o.isLogicalExpression(e.test)&&e.test.operator==="&&"){const t=E(s,e.test.left,i,n,e.inlineMediaQuery);if(t)return{...t,ternaryWithoutMedia:{...e,test:e.test.right}}}const a=E(s,e.test,i,n,e.inlineMediaQuery);return a?{...a,ternaryWithoutMedia:null}:null}function E(s,e,i,n,a){var t,f,c;if(a)return{key:a,bindingName:a};if(o.isMemberExpression(e)&&o.isIdentifier(e.object)&&o.isIdentifier(e.property)){const r=e.object.name,m=e.property.name,p=i.scope.getAllBindings()[r];if(!p)return!1;const g=(t=p.path)==null?void 0:t.node;return!o.isVariableDeclarator(g)||!g.init||!N(s,i,g.init,n)?!1:{key:m,bindingName:r}}if(o.isIdentifier(e)){const r=e.name,m=(c=(f=i.scope.getBinding(e.name))==null?void 0:f.path)==null?void 0:c.node;return!o.isVariableDeclarator(m)||!m.init||!N(s,i,m.init,n)?!1:{key:r,bindingName:r}}return null}function N(s,e,i,n){if(!o.isCallExpression(i)||!o.isIdentifier(i.callee)||i.callee.name!=="useMedia")return!1;const t=e.scope.getAllBindings().useMedia;if(!t)return!1;const f=t.path.parent;return!(!o.isImportDeclaration(f)||!J(s,n))}export{R as extractMediaStyle,N as isValidMediaCall};
1
+ import * as t from "@babel/types";
2
+ import { getStylesAtomic, mediaObjectToString } from "@tamagui/core-node";
3
+ import { MEDIA_SEP } from "../constants.js";
4
+ import { isPresent, isValidImport } from "./extractHelpers.js";
5
+ function extractMediaStyle(props, ternary, jsxPath, tamaguiConfig, sourcePath, importance = 0, shouldPrintDebug = false) {
6
+ const mt = getMediaQueryTernary(props, 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(
39
+ ogPrefix,
40
+ `${ogPrefix}${MEDIA_SEP}${key}${negKey}${MEDIA_SEP}`
41
+ )}`;
42
+ const className = `.${identifier}`;
43
+ const mediaSelector = mediaObjectToString(tamaguiConfig.media[key]);
44
+ const screenStr = negate ? "not all" : "screen";
45
+ const mediaQuery = `${screenStr} and ${mediaSelector}`;
46
+ const precendencePrefix = mediaKeyPrecendence[key];
47
+ const styleInner = style.rules.map((rule) => rule.replace(style.identifier, identifier)).join(";");
48
+ let styleRule = "";
49
+ if (styleInner.includes("@media")) {
50
+ styleRule = styleInner.replace("{", ` and ${mediaQuery} {`);
51
+ } else {
52
+ styleRule = `@media ${mediaQuery} { ${precendencePrefix} ${styleInner} }`;
53
+ }
54
+ return {
55
+ ...style,
56
+ identifier,
57
+ className,
58
+ rules: [styleRule]
59
+ };
60
+ });
61
+ if (shouldPrintDebug === "verbose") {
62
+ console.log(" media styles:", importance, styleObj, singleMediaStyles.map((x) => x.identifier).join(", "));
63
+ }
64
+ mediaStyles = [...mediaStyles, ...singleMediaStyles];
65
+ }
66
+ ternary.remove();
67
+ return { mediaStyles, ternaryWithoutMedia: mt.ternaryWithoutMedia };
68
+ }
69
+ function getMediaQueryTernary(props, ternary, jsxPath, sourcePath) {
70
+ if (t.isLogicalExpression(ternary.test) && ternary.test.operator === "&&") {
71
+ const mediaLeft = getMediaInfoFromExpression(
72
+ props,
73
+ ternary.test.left,
74
+ jsxPath,
75
+ sourcePath,
76
+ ternary.inlineMediaQuery
77
+ );
78
+ if (mediaLeft) {
79
+ return {
80
+ ...mediaLeft,
81
+ ternaryWithoutMedia: {
82
+ ...ternary,
83
+ test: ternary.test.right
84
+ }
85
+ };
86
+ }
87
+ }
88
+ const result = getMediaInfoFromExpression(
89
+ props,
90
+ ternary.test,
91
+ jsxPath,
92
+ sourcePath,
93
+ ternary.inlineMediaQuery
94
+ );
95
+ if (result) {
96
+ return {
97
+ ...result,
98
+ ternaryWithoutMedia: null
99
+ };
100
+ }
101
+ return null;
102
+ }
103
+ function getMediaInfoFromExpression(props, test, jsxPath, sourcePath, inlineMediaQuery) {
104
+ var _a, _b, _c;
105
+ if (inlineMediaQuery) {
106
+ return {
107
+ key: inlineMediaQuery,
108
+ bindingName: inlineMediaQuery
109
+ };
110
+ }
111
+ if (t.isMemberExpression(test) && t.isIdentifier(test.object) && t.isIdentifier(test.property)) {
112
+ const name = test.object["name"];
113
+ const key = test.property["name"];
114
+ const bindings = jsxPath.scope.getAllBindings();
115
+ const binding = bindings[name];
116
+ if (!binding)
117
+ return false;
118
+ const bindingNode = (_a = binding.path) == null ? void 0 : _a.node;
119
+ if (!t.isVariableDeclarator(bindingNode) || !bindingNode.init)
120
+ return false;
121
+ if (!isValidMediaCall(props, jsxPath, bindingNode.init, sourcePath))
122
+ return false;
123
+ return { key, bindingName: name };
124
+ }
125
+ if (t.isIdentifier(test)) {
126
+ const key = test.name;
127
+ const node = (_c = (_b = jsxPath.scope.getBinding(test.name)) == null ? void 0 : _b.path) == null ? void 0 : _c.node;
128
+ if (!t.isVariableDeclarator(node))
129
+ return false;
130
+ if (!node.init || !isValidMediaCall(props, jsxPath, node.init, sourcePath))
131
+ return false;
132
+ return { key, bindingName: key };
133
+ }
134
+ return null;
135
+ }
136
+ function isValidMediaCall(props, jsxPath, init, sourcePath) {
137
+ if (!t.isCallExpression(init))
138
+ return false;
139
+ if (!t.isIdentifier(init.callee))
140
+ return false;
141
+ if (init.callee.name !== "useMedia")
142
+ return false;
143
+ const bindings = jsxPath.scope.getAllBindings();
144
+ const mediaBinding = bindings["useMedia"];
145
+ if (!mediaBinding)
146
+ return false;
147
+ const useMediaImport = mediaBinding.path.parent;
148
+ if (!t.isImportDeclaration(useMediaImport))
149
+ return false;
150
+ if (!isValidImport(props, sourcePath)) {
151
+ return false;
152
+ }
153
+ return true;
154
+ }
155
+ export {
156
+ extractMediaStyle,
157
+ isValidMediaCall
158
+ };
2
159
  //# sourceMappingURL=extractMediaStyle.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/extractMediaStyle.ts"],
4
4
  "sourcesContent": ["import { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\nimport { TamaguiInternalConfig, getStylesAtomic, mediaObjectToString } from '@tamagui/core-node'\nimport type { ViewStyle } from 'react-native'\n\nimport { MEDIA_SEP } from '../constants.js'\nimport type { StyleObject, TamaguiOptionsWithFileInfo, Ternary } from '../types.js'\nimport { isPresent, isValidImport } from './extractHelpers.js'\n\nexport function extractMediaStyle(\n props: TamaguiOptionsWithFileInfo,\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(props, ternary, jsxPath, sourcePath)\n if (!mt) {\n return null\n }\n const { key } = mt\n const mq = tamaguiConfig.media[key]\n if (!mq) {\n // eslint-disable-next-line no-console\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 // eslint-disable-next-line no-console\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\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 // eslint-disable-next-line no-console\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 props: TamaguiOptionsWithFileInfo,\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 props,\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 props,\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 props: TamaguiOptionsWithFileInfo,\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(props, 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(props, jsxPath, node.init, sourcePath)) return false\n return { key, bindingName: key }\n }\n return null\n}\n\nexport function isValidMediaCall(\n props: TamaguiOptionsWithFileInfo,\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 (!isValidImport(props, sourcePath)) {\n return false\n }\n return true\n}\n"],
5
- "mappings": "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",
6
- "names": ["t", "getStylesAtomic", "mediaObjectToString", "MEDIA_SEP", "isPresent", "isValidImport", "extractMediaStyle", "props", "ternary", "jsxPath", "tamaguiConfig", "sourcePath", "importance", "shouldPrintDebug", "mt", "getMediaQueryTernary", "key", "getStyleObj", "styleObj", "negate", "styleOpts", "mediaKeyPrecendence", "acc", "cur", "i", "mediaStyles", "singleMediaStyles", "style", "negKey", "ogPrefix", "identifier", "className", "mediaSelector", "mediaQuery", "precendencePrefix", "styleInner", "rule", "styleRule", "x", "mediaLeft", "getMediaInfoFromExpression", "result", "test", "inlineMediaQuery", "_a", "_b", "_c", "name", "binding", "bindingNode", "isValidMediaCall", "node", "init", "mediaBinding", "useMediaImport"]
5
+ "mappings": "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",
6
+ "names": []
7
7
  }