@tamagui/static 1.100.6 → 1.101.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. package/dist/cjs/extractor/createExtractor.js +21 -12
  2. package/dist/cjs/extractor/createExtractor.js.map +1 -1
  3. package/dist/cjs/extractor/createExtractor.native.js +18 -12
  4. package/dist/cjs/extractor/createExtractor.native.js.map +2 -2
  5. package/dist/cjs/extractor/extractMediaStyle.js +2 -2
  6. package/dist/cjs/extractor/extractMediaStyle.js.map +1 -1
  7. package/dist/cjs/extractor/extractMediaStyle.native.js +2 -2
  8. package/dist/cjs/extractor/extractMediaStyle.native.js.map +2 -2
  9. package/dist/cjs/extractor/extractToClassNames.js +17 -15
  10. package/dist/cjs/extractor/extractToClassNames.js.map +1 -1
  11. package/dist/cjs/extractor/extractToClassNames.native.js +12 -14
  12. package/dist/cjs/extractor/extractToClassNames.native.js.map +2 -2
  13. package/dist/cjs/extractor/extractToNative.js +319 -0
  14. package/dist/cjs/extractor/extractToNative.js.map +6 -0
  15. package/dist/cjs/extractor/extractToNative.native.js +353 -0
  16. package/dist/cjs/extractor/extractToNative.native.js.map +6 -0
  17. package/dist/cjs/index.js +1 -0
  18. package/dist/cjs/index.js.map +1 -1
  19. package/dist/cjs/index.native.js +2 -0
  20. package/dist/cjs/index.native.js.map +1 -1
  21. package/dist/esm/extractor/createExtractor.js +24 -11
  22. package/dist/esm/extractor/createExtractor.js.map +1 -1
  23. package/dist/esm/extractor/createExtractor.mjs +16 -12
  24. package/dist/esm/extractor/createExtractor.native.js +18 -11
  25. package/dist/esm/extractor/createExtractor.native.js.map +2 -2
  26. package/dist/esm/extractor/extractMediaStyle.js +2 -2
  27. package/dist/esm/extractor/extractMediaStyle.js.map +1 -1
  28. package/dist/esm/extractor/extractMediaStyle.mjs +2 -2
  29. package/dist/esm/extractor/extractMediaStyle.native.js +2 -2
  30. package/dist/esm/extractor/extractMediaStyle.native.js.map +2 -2
  31. package/dist/esm/extractor/extractToClassNames.js +16 -15
  32. package/dist/esm/extractor/extractToClassNames.js.map +1 -1
  33. package/dist/esm/extractor/extractToClassNames.mjs +14 -16
  34. package/dist/esm/extractor/extractToClassNames.native.js +11 -14
  35. package/dist/esm/extractor/extractToClassNames.native.js.map +2 -2
  36. package/dist/esm/extractor/extractToNative.js +309 -0
  37. package/dist/esm/extractor/extractToNative.js.map +6 -0
  38. package/dist/esm/extractor/extractToNative.mjs +232 -0
  39. package/dist/esm/extractor/extractToNative.native.js +329 -0
  40. package/dist/esm/extractor/extractToNative.native.js.map +6 -0
  41. package/dist/esm/index.js +1 -0
  42. package/dist/esm/index.js.map +1 -1
  43. package/dist/esm/index.mjs +1 -0
  44. package/dist/esm/index.native.js +1 -0
  45. package/dist/esm/index.native.js.map +1 -1
  46. package/package.json +16 -15
  47. package/src/extractor/createExtractor.ts +23 -22
  48. package/src/extractor/extractMediaStyle.ts +2 -2
  49. package/src/extractor/extractToClassNames.ts +30 -16
  50. package/src/extractor/extractToNative.ts +504 -0
  51. package/src/index.ts +1 -0
  52. package/types/extractor/babelParse.d.ts +0 -1
  53. package/types/extractor/babelParse.d.ts.map +1 -1
  54. package/types/extractor/createEvaluator.d.ts.map +1 -1
  55. package/types/extractor/createExtractor.d.ts.map +1 -1
  56. package/types/extractor/extractToClassNames.d.ts +0 -1
  57. package/types/extractor/extractToClassNames.d.ts.map +1 -1
  58. package/types/extractor/extractToNative.d.ts +13 -0
  59. package/types/extractor/extractToNative.d.ts.map +1 -0
  60. package/types/extractor/getStaticBindingsForScope.d.ts.map +1 -1
  61. package/types/extractor/loadTamagui.d.ts.map +1 -1
  62. package/types/index.d.ts +1 -0
  63. package/types/index.d.ts.map +1 -1
@@ -0,0 +1,319 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
16
+ // If the importer is in node compatibility mode or this is not an ESM
17
+ // file that has been converted to a CommonJS file using a Babel-
18
+ // compatible transform (i.e. "__esModule" has not been set), then set
19
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
21
+ mod
22
+ )), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
23
+ var extractToNative_exports = {};
24
+ __export(extractToNative_exports, {
25
+ extractToNative: () => extractToNative,
26
+ getBabelParseDefinition: () => getBabelParseDefinition,
27
+ getBabelPlugin: () => getBabelPlugin
28
+ });
29
+ module.exports = __toCommonJS(extractToNative_exports);
30
+ var import_node_path = require("node:path"), import_core = require("@babel/core"), import_generator = __toESM(require("@babel/generator")), import_helper_plugin_utils = require("@babel/helper-plugin-utils"), import_parser = require("@babel/parser"), import_template = __toESM(require("@babel/template")), t = __toESM(require("@babel/types")), import_static = require("@tamagui/static");
31
+ const importNativeView = (0, import_template.default)(`
32
+ const __ReactNativeView = require('react-native').View;
33
+ const __ReactNativeText = require('react-native').Text;
34
+ `), importStyleSheet = (0, import_template.default)(`
35
+ const __ReactNativeStyleSheet = require('react-native').StyleSheet;
36
+ `), importWithStyle = (0, import_template.default)(`
37
+ const __withStableStyle = require('@tamagui/core')._withStableStyle;
38
+ `), extractor = (0, import_static.createExtractor)({ platform: "native" });
39
+ let tamaguiBuildOptionsLoaded;
40
+ function extractToNative(sourceFileName, sourceCode, options) {
41
+ const ast = (0, import_parser.parse)(sourceCode, {
42
+ sourceType: "module",
43
+ plugins: ["jsx", "typescript"]
44
+ }), babelPlugin = getBabelPlugin(), out = (0, import_core.transformFromAstSync)(ast, sourceCode, {
45
+ plugins: [[babelPlugin, options]],
46
+ configFile: !1,
47
+ sourceFileName,
48
+ filename: sourceFileName
49
+ });
50
+ if (!out)
51
+ throw new Error("No output returned");
52
+ return out;
53
+ }
54
+ function getBabelPlugin() {
55
+ return (0, import_helper_plugin_utils.declare)((api, options) => (api.assertVersion(7), getBabelParseDefinition(options)));
56
+ }
57
+ function getBabelParseDefinition(options) {
58
+ return {
59
+ name: "tamagui",
60
+ visitor: {
61
+ Program: {
62
+ enter(root) {
63
+ let sourcePath = this.file.opts.filename;
64
+ if (sourcePath?.includes("node_modules") || !sourcePath?.endsWith(".jsx") && !sourcePath?.endsWith(".tsx"))
65
+ return;
66
+ process.env.SOURCE_ROOT?.endsWith("ios") && (sourcePath = sourcePath.replace("/ios", ""));
67
+ let hasImportedView = !1, hasImportedViewWrapper = !1;
68
+ const sheetStyles = {}, sheetIdentifier = root.scope.generateUidIdentifier("sheet"), firstCommentContents = (
69
+ // join because you can join together multiple pragmas
70
+ root.node.body[0]?.leadingComments?.map((comment) => comment?.value || " ").join(" ") ?? ""
71
+ ), firstComment = firstCommentContents ? `//${firstCommentContents}` : "", { shouldPrintDebug, shouldDisable } = (0, import_static.getPragmaOptions)({
72
+ source: firstComment,
73
+ path: sourcePath
74
+ });
75
+ if (shouldDisable)
76
+ return;
77
+ !options.config && !options.components && (tamaguiBuildOptionsLoaded ||= (0, import_static.loadTamaguiBuildConfigSync)({}));
78
+ const finalOptions = {
79
+ // @ts-ignore just in case they leave it out
80
+ platform: "native",
81
+ ...tamaguiBuildOptionsLoaded,
82
+ ...options
83
+ }, printLog = (0, import_static.createLogger)(sourcePath, finalOptions);
84
+ function addSheetStyle(style, node) {
85
+ let key = `${`${Object.keys(sheetStyles).length}`}`;
86
+ if (process.env.NODE_ENV === "development") {
87
+ const lineNumbers = node.loc ? node.loc.start.line + (node.loc.start.line !== node.loc.end.line ? `-${node.loc.end.line}` : "") : "";
88
+ key += `:${(0, import_node_path.basename)(sourcePath)}:${lineNumbers}`;
89
+ }
90
+ return sheetStyles[key] = style, readStyleExpr(key);
91
+ }
92
+ function readStyleExpr(key) {
93
+ return (0, import_template.default)("SHEET['KEY']")({
94
+ SHEET: sheetIdentifier.name,
95
+ KEY: key
96
+ }).expression;
97
+ }
98
+ let res;
99
+ try {
100
+ res = extractor.parseSync(root, {
101
+ importsWhitelist: ["constants.js", "colors.js"],
102
+ extractStyledDefinitions: options.forceExtractStyleDefinitions,
103
+ excludeProps: /* @__PURE__ */ new Set([
104
+ "className",
105
+ "userSelect",
106
+ "whiteSpace",
107
+ "textOverflow",
108
+ "cursor",
109
+ "contain"
110
+ ]),
111
+ shouldPrintDebug,
112
+ ...finalOptions,
113
+ // disable this extraction for now at least, need to figure out merging theme vs non-theme
114
+ // because theme need to stay in render(), whereas non-theme can be extracted
115
+ // for now just turn it off entirely at a small perf loss
116
+ disableExtractInlineMedia: !0,
117
+ // disable extracting variables as no native concept of them (only theme values)
118
+ disableExtractVariables: options.experimentalFlattenThemesOnNative ? !1 : "theme",
119
+ sourcePath,
120
+ // disabling flattening for now
121
+ // it's flattening a plain <Paragraph>hello</Paragraph> which breaks things because themes
122
+ // thinking it's not really worth the effort to do much compilation on native
123
+ // for now just disable flatten as it can only run in narrow places on native
124
+ // disableFlattening: 'styled',
125
+ getFlattenedNode({ isTextView }) {
126
+ return hasImportedView || (hasImportedView = !0, root.unshiftContainer("body", importNativeView())), isTextView ? "__ReactNativeText" : "__ReactNativeView";
127
+ },
128
+ onExtractTag(props) {
129
+ const { isFlattened } = props;
130
+ if (!isFlattened)
131
+ return;
132
+ assertValidTag(props.node);
133
+ const stylesExpr = t.arrayExpression([]), hocStylesExpr = t.arrayExpression([]), expressions = [], finalAttrs = [], themeKeysUsed = /* @__PURE__ */ new Set();
134
+ function getStyleExpression(style) {
135
+ if (!style) return;
136
+ const { plain, themed } = splitThemeStyles(style);
137
+ let themeExpr = null;
138
+ if (themed && options.experimentalFlattenThemesOnNative) {
139
+ for (const key in themed)
140
+ themeKeysUsed.add(themed[key].split("$")[1]);
141
+ themeExpr = getThemedStyleExpression(themed);
142
+ }
143
+ const ident = addSheetStyle(plain, props.node);
144
+ return themeExpr ? (addStyleExpression(ident), addStyleExpression(ident, !0), themeExpr) : ident;
145
+ }
146
+ function addStyleExpression(expr, HOC = !1) {
147
+ Array.isArray(expr) ? (HOC ? hocStylesExpr : stylesExpr).elements.push(...expr) : (HOC ? hocStylesExpr : stylesExpr).elements.push(expr);
148
+ }
149
+ function getThemedStyleExpression(styles) {
150
+ const themedStylesAst = (0, import_static.literalToAst)(styles);
151
+ return themedStylesAst.properties.forEach((_) => {
152
+ const prop = _;
153
+ prop.value.type === "StringLiteral" && (prop.value = t.memberExpression(
154
+ t.identifier("theme"),
155
+ t.identifier(prop.value.value.slice(1) + ".get()")
156
+ ));
157
+ }), themedStylesAst;
158
+ }
159
+ let hasDynamicStyle = !1;
160
+ for (const attr of props.attrs)
161
+ switch (attr.type) {
162
+ case "style": {
163
+ let styleExpr = getStyleExpression(attr.value);
164
+ addStyleExpression(styleExpr), options.experimentalFlattenThemesOnNative && addStyleExpression(styleExpr, !0);
165
+ break;
166
+ }
167
+ case "ternary": {
168
+ const { consequent, alternate } = attr.value, consExpr = getStyleExpression(consequent), altExpr = getStyleExpression(alternate);
169
+ options.experimentalFlattenThemesOnNative && (expressions.push(attr.value.test), addStyleExpression(
170
+ t.conditionalExpression(
171
+ t.identifier(`_expressions[${expressions.length - 1}]`),
172
+ consExpr || t.nullLiteral(),
173
+ altExpr || t.nullLiteral()
174
+ ),
175
+ !0
176
+ ));
177
+ const styleExpr = t.conditionalExpression(
178
+ attr.value.test,
179
+ consExpr || t.nullLiteral(),
180
+ altExpr || t.nullLiteral()
181
+ );
182
+ addStyleExpression(
183
+ styleExpr
184
+ // TODO: what is this for ?
185
+ // isFlattened ? simpleHash(JSON.stringify({ consequent, alternate })) : undefined
186
+ );
187
+ break;
188
+ }
189
+ case "dynamic-style": {
190
+ hasDynamicStyle = !0, expressions.push(attr.value), options.experimentalFlattenDynamicValues ? addStyleExpression(
191
+ t.objectExpression([
192
+ t.objectProperty(
193
+ t.identifier(attr.name),
194
+ t.identifier(`_expressions[${expressions.length - 1}]`)
195
+ )
196
+ ]),
197
+ !0
198
+ ) : addStyleExpression(
199
+ t.objectExpression([
200
+ t.objectProperty(
201
+ t.identifier(attr.name),
202
+ attr.value
203
+ )
204
+ ])
205
+ );
206
+ break;
207
+ }
208
+ case "attr": {
209
+ t.isJSXSpreadAttribute(attr.value) && (0, import_static.isSimpleSpread)(attr.value) && (stylesExpr.elements.push(
210
+ t.memberExpression(attr.value.argument, t.identifier("style"))
211
+ ), options.experimentalFlattenThemesOnNative && hocStylesExpr.elements.push(
212
+ t.memberExpression(
213
+ attr.value.argument,
214
+ t.identifier("style")
215
+ )
216
+ )), finalAttrs.push(attr.value);
217
+ break;
218
+ }
219
+ }
220
+ if (props.node.attributes = finalAttrs, props.isFlattened)
221
+ if (options.experimentalFlattenThemesOnNative && (themeKeysUsed.size || hocStylesExpr.elements.length > 1 || hasDynamicStyle)) {
222
+ hasImportedViewWrapper || (root.unshiftContainer("body", importWithStyle()), hasImportedViewWrapper = !0);
223
+ const name = props.node.name.name, WrapperIdentifier = root.scope.generateUidIdentifier(
224
+ name + "Wrapper"
225
+ );
226
+ root.pushContainer(
227
+ "body",
228
+ t.variableDeclaration("const", [
229
+ t.variableDeclarator(
230
+ WrapperIdentifier,
231
+ t.callExpression(t.identifier("__withStableStyle"), [
232
+ t.identifier(name),
233
+ t.arrowFunctionExpression(
234
+ [t.identifier("theme"), t.identifier("_expressions")],
235
+ t.blockStatement([
236
+ t.returnStatement(
237
+ t.callExpression(
238
+ t.memberExpression(
239
+ t.identifier("React"),
240
+ t.identifier("useMemo")
241
+ ),
242
+ [
243
+ t.arrowFunctionExpression(
244
+ [],
245
+ t.blockStatement([
246
+ t.returnStatement(
247
+ t.arrayExpression([...hocStylesExpr.elements])
248
+ )
249
+ ])
250
+ ),
251
+ t.arrayExpression([
252
+ t.spreadElement(t.identifier("_expressions"))
253
+ ])
254
+ ]
255
+ )
256
+ )
257
+ ])
258
+ )
259
+ ])
260
+ )
261
+ ])
262
+ ), props.node.name = WrapperIdentifier, props.jsxPath.node.closingElement && (props.jsxPath.node.closingElement.name = WrapperIdentifier), expressions.length && props.node.attributes.push(
263
+ t.jsxAttribute(
264
+ t.jsxIdentifier("expressions"),
265
+ t.jsxExpressionContainer(t.arrayExpression(expressions))
266
+ )
267
+ );
268
+ } else
269
+ props.node.attributes.push(
270
+ t.jsxAttribute(
271
+ t.jsxIdentifier("style"),
272
+ t.jsxExpressionContainer(
273
+ stylesExpr.elements.length === 1 ? stylesExpr.elements[0] : stylesExpr
274
+ )
275
+ )
276
+ );
277
+ }
278
+ });
279
+ } catch (err) {
280
+ if (err instanceof Error) {
281
+ let message = `${shouldPrintDebug === "verbose" ? err : err.message}`;
282
+ message.includes("Unexpected return value from visitor method") && (message = "Unexpected return value from visitor method"), console.warn("Error in Tamagui parse, skipping", message, err.stack);
283
+ return;
284
+ }
285
+ }
286
+ if (!Object.keys(sheetStyles).length) {
287
+ shouldPrintDebug && console.info("END no styles"), res && printLog(res);
288
+ return;
289
+ }
290
+ const sheetObject = (0, import_static.literalToAst)(sheetStyles), sheetOuter = (0, import_template.default)(
291
+ "const SHEET = __ReactNativeStyleSheet.create(null)"
292
+ )({
293
+ SHEET: sheetIdentifier.name
294
+ });
295
+ sheetOuter.declarations[0].init.arguments[0] = sheetObject, root.unshiftContainer("body", sheetOuter), root.unshiftContainer("body", importStyleSheet()), shouldPrintDebug && (console.info(`
296
+ -------- output code -------
297
+ `), console.info(
298
+ (0, import_generator.default)(root.parent).code.split(`
299
+ `).filter((x) => !x.startsWith("//")).join(`
300
+ `)
301
+ )), res && printLog(res);
302
+ }
303
+ }
304
+ }
305
+ };
306
+ }
307
+ function assertValidTag(node) {
308
+ node.attributes.find((x) => x.type === "JSXAttribute" && x.name.name === "style") && process.env.DEBUG?.startsWith("tamagui") && console.warn("\u26A0\uFE0F Cannot pass style attribute to extracted style");
309
+ }
310
+ function splitThemeStyles(style) {
311
+ const themed = {}, plain = {};
312
+ let noTheme = !0;
313
+ for (const key in style) {
314
+ const val = style[key];
315
+ val && val[0] === "$" ? (themed[key] = val, noTheme = !1) : plain[key] = val;
316
+ }
317
+ return { themed: noTheme ? null : themed, plain };
318
+ }
319
+ //# sourceMappingURL=extractToNative.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/extractor/extractToNative.ts"],
4
+ "mappings": "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",
5
+ "names": ["template", "generator"]
6
+ }