@tamagui/babel-plugin 1.89.20 → 1.89.22

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.
package/dist/cjs/index.js CHANGED
@@ -31,8 +31,8 @@ const __ReactNativeView = require('react-native').View;
31
31
  const __ReactNativeText = require('react-native').Text;
32
32
  `), importStyleSheet = (0, import_template.default)(`
33
33
  const __ReactNativeStyleSheet = require('react-native').StyleSheet;
34
- `), importWithTheme = (0, import_template.default)(`
35
- const __internalWithTheme = require('@tamagui/core').internalWithTheme;
34
+ `), importWithStyle = (0, import_template.default)(`
35
+ const __withStableStyle = require('@tamagui/core')._withStableStyle;
36
36
  `), extractor = (0, import_static.createExtractor)({ platform: "native" });
37
37
  var src_default = (0, import_helper_plugin_utils.declare)(function(api, options) {
38
38
  return api.assertVersion(7), {
@@ -105,22 +105,24 @@ var src_default = (0, import_helper_plugin_utils.declare)(function(api, options)
105
105
  if (!isFlattened)
106
106
  return;
107
107
  assertValidTag(props.node);
108
- const stylesExpr = t.arrayExpression([]), expressions = [], finalAttrs = [], themeKeysUsed = /* @__PURE__ */ new Set();
108
+ const stylesExpr = t.arrayExpression([]), hocStylesExpr = t.arrayExpression([]), expressions = [], finalAttrs = [], themeKeysUsed = /* @__PURE__ */ new Set();
109
109
  function getStyleExpression(style) {
110
110
  if (!style)
111
111
  return;
112
112
  const { plain, themed } = splitThemeStyles(style);
113
+ let themeExpr = null;
113
114
  if (themed && options.experimentalFlattenThemesOnNative) {
114
115
  for (const key in themed)
115
116
  themeKeysUsed.add(themed[key].split("$")[1]);
116
- return addThemedStyleExpression(themed);
117
+ themeExpr = getThemedStyleExpression(themed);
117
118
  }
118
- return addSheetStyle(plain, props.node);
119
+ const ident = addSheetStyle(plain, props.node);
120
+ return themeExpr ? (addStyleExpression(ident), addStyleExpression(ident, !0), themeExpr) : ident;
119
121
  }
120
- function addStyleExpression(expr) {
121
- Array.isArray(expr) ? stylesExpr.elements.push(...expr) : stylesExpr.elements.push(expr);
122
+ function addStyleExpression(expr, HOC = !1) {
123
+ Array.isArray(expr) ? (HOC ? hocStylesExpr : stylesExpr).elements.push(...expr) : (HOC ? hocStylesExpr : stylesExpr).elements.push(expr);
122
124
  }
123
- function addThemedStyleExpression(styles) {
125
+ function getThemedStyleExpression(styles) {
124
126
  const themedStylesAst = (0, import_static.literalToAst)(styles);
125
127
  return themedStylesAst.properties.forEach((_) => {
126
128
  const prop = _;
@@ -130,17 +132,26 @@ var src_default = (0, import_helper_plugin_utils.declare)(function(api, options)
130
132
  ));
131
133
  }), themedStylesAst;
132
134
  }
135
+ let hasDynamicStyle = !1;
133
136
  for (const attr of props.attrs)
134
137
  switch (attr.type) {
135
138
  case "style": {
136
- addStyleExpression(getStyleExpression(attr.value));
139
+ let styleExpr = getStyleExpression(attr.value);
140
+ addStyleExpression(styleExpr), options.experimentalFlattenThemesOnNative && addStyleExpression(styleExpr, !0);
137
141
  break;
138
142
  }
139
143
  case "ternary": {
140
- const { consequent, alternate } = attr.value, consExpr = getStyleExpression(consequent), altExpr = getStyleExpression(alternate), willFlattenTheme = options.experimentalFlattenThemesOnNative && themeKeysUsed.size;
141
- willFlattenTheme && expressions.push(attr.value.test);
144
+ const { consequent, alternate } = attr.value, consExpr = getStyleExpression(consequent), altExpr = getStyleExpression(alternate);
145
+ options.experimentalFlattenThemesOnNative && (expressions.push(attr.value.test), addStyleExpression(
146
+ t.conditionalExpression(
147
+ t.identifier(`_expressions[${expressions.length - 1}]`),
148
+ consExpr || t.nullLiteral(),
149
+ altExpr || t.nullLiteral()
150
+ ),
151
+ !0
152
+ ));
142
153
  const styleExpr = t.conditionalExpression(
143
- willFlattenTheme ? t.identifier(`_expressions[${expressions.length - 1}]`) : attr.value.test,
154
+ attr.value.test,
144
155
  consExpr || t.nullLiteral(),
145
156
  altExpr || t.nullLiteral()
146
157
  );
@@ -152,26 +163,36 @@ var src_default = (0, import_helper_plugin_utils.declare)(function(api, options)
152
163
  break;
153
164
  }
154
165
  case "dynamic-style": {
155
- expressions.push(attr.value), addStyleExpression(
166
+ hasDynamicStyle = !0, expressions.push(attr.value), addStyleExpression(
156
167
  t.objectExpression([
157
168
  t.objectProperty(
158
169
  t.identifier(attr.name),
159
170
  t.identifier(`_expressions[${expressions.length - 1}]`)
160
171
  )
172
+ ]),
173
+ !0
174
+ ), addStyleExpression(
175
+ t.objectExpression([
176
+ t.objectProperty(
177
+ t.identifier(attr.name),
178
+ attr.value
179
+ )
161
180
  ])
162
181
  );
163
182
  break;
164
183
  }
165
184
  case "attr": {
166
- t.isJSXSpreadAttribute(attr.value) && (0, import_static.isSimpleSpread)(attr.value) && stylesExpr.elements.push(
185
+ t.isJSXSpreadAttribute(attr.value) && (0, import_static.isSimpleSpread)(attr.value) && (stylesExpr.elements.push(
186
+ t.memberExpression(attr.value.argument, t.identifier("style"))
187
+ ), hocStylesExpr.elements.push(
167
188
  t.memberExpression(attr.value.argument, t.identifier("style"))
168
- ), finalAttrs.push(attr.value);
189
+ )), finalAttrs.push(attr.value);
169
190
  break;
170
191
  }
171
192
  }
172
193
  if (props.node.attributes = finalAttrs, props.isFlattened)
173
- if (themeKeysUsed.size) {
174
- hasImportedViewWrapper || (root.unshiftContainer("body", importWithTheme()), hasImportedViewWrapper = !0);
194
+ if (options.experimentalFlattenThemesOnNative && (themeKeysUsed.size || hocStylesExpr.elements.length > 1 || hasDynamicStyle)) {
195
+ hasImportedViewWrapper || (root.unshiftContainer("body", importWithStyle()), hasImportedViewWrapper = !0);
175
196
  const name = props.node.name.name, WrapperIdentifier = root.scope.generateUidIdentifier(
176
197
  name + "Wrapper"
177
198
  );
@@ -180,7 +201,7 @@ var src_default = (0, import_helper_plugin_utils.declare)(function(api, options)
180
201
  t.variableDeclaration("const", [
181
202
  t.variableDeclarator(
182
203
  WrapperIdentifier,
183
- t.callExpression(t.identifier("__internalWithTheme"), [
204
+ t.callExpression(t.identifier("__withStableStyle"), [
184
205
  t.identifier(name),
185
206
  t.arrowFunctionExpression(
186
207
  [t.identifier("theme"), t.identifier("_expressions")],
@@ -203,7 +224,7 @@ var src_default = (0, import_helper_plugin_utils.declare)(function(api, options)
203
224
  ),
204
225
  [
205
226
  t.objectExpression([]),
206
- ...stylesExpr.elements
227
+ ...hocStylesExpr.elements
207
228
  ]
208
229
  )
209
230
  )
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["template", "generator"]
6
6
  }
@@ -32,8 +32,8 @@ const __ReactNativeView = require('react-native').View;
32
32
  const __ReactNativeText = require('react-native').Text;
33
33
  `), importStyleSheet = (0, import_template.default)(`
34
34
  const __ReactNativeStyleSheet = require('react-native').StyleSheet;
35
- `), importWithTheme = (0, import_template.default)(`
36
- const __internalWithTheme = require('@tamagui/core').internalWithTheme;
35
+ `), importWithStyle = (0, import_template.default)(`
36
+ const __withStableStyle = require('@tamagui/core')._withStableStyle;
37
37
  `), extractor = (0, import_static.createExtractor)({ platform: "native" });
38
38
  var src_default = (0, import_helper_plugin_utils.declare)(function(api, options) {
39
39
  return api.assertVersion(7), {
@@ -107,22 +107,24 @@ var src_default = (0, import_helper_plugin_utils.declare)(function(api, options)
107
107
  if (!isFlattened)
108
108
  return;
109
109
  assertValidTag(props.node);
110
- const stylesExpr = t.arrayExpression([]), expressions = [], finalAttrs = [], themeKeysUsed = /* @__PURE__ */ new Set();
110
+ const stylesExpr = t.arrayExpression([]), hocStylesExpr = t.arrayExpression([]), expressions = [], finalAttrs = [], themeKeysUsed = /* @__PURE__ */ new Set();
111
111
  function getStyleExpression(style) {
112
112
  if (!style)
113
113
  return;
114
114
  const { plain, themed } = splitThemeStyles(style);
115
+ let themeExpr = null;
115
116
  if (themed && options.experimentalFlattenThemesOnNative) {
116
117
  for (const key in themed)
117
118
  themeKeysUsed.add(themed[key].split("$")[1]);
118
- return addThemedStyleExpression(themed);
119
+ themeExpr = getThemedStyleExpression(themed);
119
120
  }
120
- return addSheetStyle(plain, props.node);
121
+ const ident = addSheetStyle(plain, props.node);
122
+ return themeExpr ? (addStyleExpression(ident), addStyleExpression(ident, !0), themeExpr) : ident;
121
123
  }
122
- function addStyleExpression(expr) {
123
- Array.isArray(expr) ? stylesExpr.elements.push(...expr) : stylesExpr.elements.push(expr);
124
+ function addStyleExpression(expr, HOC = !1) {
125
+ Array.isArray(expr) ? (HOC ? hocStylesExpr : stylesExpr).elements.push(...expr) : (HOC ? hocStylesExpr : stylesExpr).elements.push(expr);
124
126
  }
125
- function addThemedStyleExpression(styles) {
127
+ function getThemedStyleExpression(styles) {
126
128
  const themedStylesAst = (0, import_static.literalToAst)(styles);
127
129
  return themedStylesAst.properties.forEach((_) => {
128
130
  const prop = _;
@@ -132,17 +134,26 @@ var src_default = (0, import_helper_plugin_utils.declare)(function(api, options)
132
134
  ));
133
135
  }), themedStylesAst;
134
136
  }
137
+ let hasDynamicStyle = !1;
135
138
  for (const attr of props.attrs)
136
139
  switch (attr.type) {
137
140
  case "style": {
138
- addStyleExpression(getStyleExpression(attr.value));
141
+ let styleExpr = getStyleExpression(attr.value);
142
+ addStyleExpression(styleExpr), options.experimentalFlattenThemesOnNative && addStyleExpression(styleExpr, !0);
139
143
  break;
140
144
  }
141
145
  case "ternary": {
142
- const { consequent, alternate } = attr.value, consExpr = getStyleExpression(consequent), altExpr = getStyleExpression(alternate), willFlattenTheme = options.experimentalFlattenThemesOnNative && themeKeysUsed.size;
143
- willFlattenTheme && expressions.push(attr.value.test);
146
+ const { consequent, alternate } = attr.value, consExpr = getStyleExpression(consequent), altExpr = getStyleExpression(alternate);
147
+ options.experimentalFlattenThemesOnNative && (expressions.push(attr.value.test), addStyleExpression(
148
+ t.conditionalExpression(
149
+ t.identifier(`_expressions[${expressions.length - 1}]`),
150
+ consExpr || t.nullLiteral(),
151
+ altExpr || t.nullLiteral()
152
+ ),
153
+ !0
154
+ ));
144
155
  const styleExpr = t.conditionalExpression(
145
- willFlattenTheme ? t.identifier(`_expressions[${expressions.length - 1}]`) : attr.value.test,
156
+ attr.value.test,
146
157
  consExpr || t.nullLiteral(),
147
158
  altExpr || t.nullLiteral()
148
159
  );
@@ -154,26 +165,36 @@ var src_default = (0, import_helper_plugin_utils.declare)(function(api, options)
154
165
  break;
155
166
  }
156
167
  case "dynamic-style": {
157
- expressions.push(attr.value), addStyleExpression(
168
+ hasDynamicStyle = !0, expressions.push(attr.value), addStyleExpression(
158
169
  t.objectExpression([
159
170
  t.objectProperty(
160
171
  t.identifier(attr.name),
161
172
  t.identifier(`_expressions[${expressions.length - 1}]`)
162
173
  )
174
+ ]),
175
+ !0
176
+ ), addStyleExpression(
177
+ t.objectExpression([
178
+ t.objectProperty(
179
+ t.identifier(attr.name),
180
+ attr.value
181
+ )
163
182
  ])
164
183
  );
165
184
  break;
166
185
  }
167
186
  case "attr": {
168
- t.isJSXSpreadAttribute(attr.value) && (0, import_static.isSimpleSpread)(attr.value) && stylesExpr.elements.push(
187
+ t.isJSXSpreadAttribute(attr.value) && (0, import_static.isSimpleSpread)(attr.value) && (stylesExpr.elements.push(
188
+ t.memberExpression(attr.value.argument, t.identifier("style"))
189
+ ), hocStylesExpr.elements.push(
169
190
  t.memberExpression(attr.value.argument, t.identifier("style"))
170
- ), finalAttrs.push(attr.value);
191
+ )), finalAttrs.push(attr.value);
171
192
  break;
172
193
  }
173
194
  }
174
195
  if (props.node.attributes = finalAttrs, props.isFlattened)
175
- if (themeKeysUsed.size) {
176
- hasImportedViewWrapper || (root.unshiftContainer("body", importWithTheme()), hasImportedViewWrapper = !0);
196
+ if (options.experimentalFlattenThemesOnNative && (themeKeysUsed.size || hocStylesExpr.elements.length > 1 || hasDynamicStyle)) {
197
+ hasImportedViewWrapper || (root.unshiftContainer("body", importWithStyle()), hasImportedViewWrapper = !0);
177
198
  const name = props.node.name.name, WrapperIdentifier = root.scope.generateUidIdentifier(
178
199
  name + "Wrapper"
179
200
  );
@@ -182,7 +203,7 @@ var src_default = (0, import_helper_plugin_utils.declare)(function(api, options)
182
203
  t.variableDeclaration("const", [
183
204
  t.variableDeclarator(
184
205
  WrapperIdentifier,
185
- t.callExpression(t.identifier("__internalWithTheme"), [
206
+ t.callExpression(t.identifier("__withStableStyle"), [
186
207
  t.identifier(name),
187
208
  t.arrowFunctionExpression(
188
209
  [t.identifier("theme"), t.identifier("_expressions")],
@@ -205,7 +226,7 @@ var src_default = (0, import_helper_plugin_utils.declare)(function(api, options)
205
226
  ),
206
227
  [
207
228
  t.objectExpression([]),
208
- ...stylesExpr.elements
229
+ ...hocStylesExpr.elements
209
230
  ]
210
231
  )
211
232
  )
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["template", "generator"]
6
6
  }
package/dist/esm/index.js CHANGED
@@ -14,8 +14,8 @@ const __ReactNativeView = require('react-native').View;
14
14
  const __ReactNativeText = require('react-native').Text;
15
15
  `), importStyleSheet = template(`
16
16
  const __ReactNativeStyleSheet = require('react-native').StyleSheet;
17
- `), importWithTheme = template(`
18
- const __internalWithTheme = require('@tamagui/core').internalWithTheme;
17
+ `), importWithStyle = template(`
18
+ const __withStableStyle = require('@tamagui/core')._withStableStyle;
19
19
  `), extractor = createExtractor({ platform: "native" });
20
20
  var src_default = declare(function(api, options) {
21
21
  return api.assertVersion(7), {
@@ -88,22 +88,24 @@ var src_default = declare(function(api, options) {
88
88
  if (!isFlattened)
89
89
  return;
90
90
  assertValidTag(props.node);
91
- const stylesExpr = t.arrayExpression([]), expressions = [], finalAttrs = [], themeKeysUsed = /* @__PURE__ */ new Set();
91
+ const stylesExpr = t.arrayExpression([]), hocStylesExpr = t.arrayExpression([]), expressions = [], finalAttrs = [], themeKeysUsed = /* @__PURE__ */ new Set();
92
92
  function getStyleExpression(style) {
93
93
  if (!style)
94
94
  return;
95
95
  const { plain, themed } = splitThemeStyles(style);
96
+ let themeExpr = null;
96
97
  if (themed && options.experimentalFlattenThemesOnNative) {
97
98
  for (const key in themed)
98
99
  themeKeysUsed.add(themed[key].split("$")[1]);
99
- return addThemedStyleExpression(themed);
100
+ themeExpr = getThemedStyleExpression(themed);
100
101
  }
101
- return addSheetStyle(plain, props.node);
102
+ const ident = addSheetStyle(plain, props.node);
103
+ return themeExpr ? (addStyleExpression(ident), addStyleExpression(ident, !0), themeExpr) : ident;
102
104
  }
103
- function addStyleExpression(expr) {
104
- Array.isArray(expr) ? stylesExpr.elements.push(...expr) : stylesExpr.elements.push(expr);
105
+ function addStyleExpression(expr, HOC = !1) {
106
+ Array.isArray(expr) ? (HOC ? hocStylesExpr : stylesExpr).elements.push(...expr) : (HOC ? hocStylesExpr : stylesExpr).elements.push(expr);
105
107
  }
106
- function addThemedStyleExpression(styles) {
108
+ function getThemedStyleExpression(styles) {
107
109
  const themedStylesAst = literalToAst(styles);
108
110
  return themedStylesAst.properties.forEach((_) => {
109
111
  const prop = _;
@@ -113,17 +115,26 @@ var src_default = declare(function(api, options) {
113
115
  ));
114
116
  }), themedStylesAst;
115
117
  }
118
+ let hasDynamicStyle = !1;
116
119
  for (const attr of props.attrs)
117
120
  switch (attr.type) {
118
121
  case "style": {
119
- addStyleExpression(getStyleExpression(attr.value));
122
+ let styleExpr = getStyleExpression(attr.value);
123
+ addStyleExpression(styleExpr), options.experimentalFlattenThemesOnNative && addStyleExpression(styleExpr, !0);
120
124
  break;
121
125
  }
122
126
  case "ternary": {
123
- const { consequent, alternate } = attr.value, consExpr = getStyleExpression(consequent), altExpr = getStyleExpression(alternate), willFlattenTheme = options.experimentalFlattenThemesOnNative && themeKeysUsed.size;
124
- willFlattenTheme && expressions.push(attr.value.test);
127
+ const { consequent, alternate } = attr.value, consExpr = getStyleExpression(consequent), altExpr = getStyleExpression(alternate);
128
+ options.experimentalFlattenThemesOnNative && (expressions.push(attr.value.test), addStyleExpression(
129
+ t.conditionalExpression(
130
+ t.identifier(`_expressions[${expressions.length - 1}]`),
131
+ consExpr || t.nullLiteral(),
132
+ altExpr || t.nullLiteral()
133
+ ),
134
+ !0
135
+ ));
125
136
  const styleExpr = t.conditionalExpression(
126
- willFlattenTheme ? t.identifier(`_expressions[${expressions.length - 1}]`) : attr.value.test,
137
+ attr.value.test,
127
138
  consExpr || t.nullLiteral(),
128
139
  altExpr || t.nullLiteral()
129
140
  );
@@ -135,26 +146,36 @@ var src_default = declare(function(api, options) {
135
146
  break;
136
147
  }
137
148
  case "dynamic-style": {
138
- expressions.push(attr.value), addStyleExpression(
149
+ hasDynamicStyle = !0, expressions.push(attr.value), addStyleExpression(
139
150
  t.objectExpression([
140
151
  t.objectProperty(
141
152
  t.identifier(attr.name),
142
153
  t.identifier(`_expressions[${expressions.length - 1}]`)
143
154
  )
155
+ ]),
156
+ !0
157
+ ), addStyleExpression(
158
+ t.objectExpression([
159
+ t.objectProperty(
160
+ t.identifier(attr.name),
161
+ attr.value
162
+ )
144
163
  ])
145
164
  );
146
165
  break;
147
166
  }
148
167
  case "attr": {
149
- t.isJSXSpreadAttribute(attr.value) && isSimpleSpread(attr.value) && stylesExpr.elements.push(
168
+ t.isJSXSpreadAttribute(attr.value) && isSimpleSpread(attr.value) && (stylesExpr.elements.push(
169
+ t.memberExpression(attr.value.argument, t.identifier("style"))
170
+ ), hocStylesExpr.elements.push(
150
171
  t.memberExpression(attr.value.argument, t.identifier("style"))
151
- ), finalAttrs.push(attr.value);
172
+ )), finalAttrs.push(attr.value);
152
173
  break;
153
174
  }
154
175
  }
155
176
  if (props.node.attributes = finalAttrs, props.isFlattened)
156
- if (themeKeysUsed.size) {
157
- hasImportedViewWrapper || (root.unshiftContainer("body", importWithTheme()), hasImportedViewWrapper = !0);
177
+ if (options.experimentalFlattenThemesOnNative && (themeKeysUsed.size || hocStylesExpr.elements.length > 1 || hasDynamicStyle)) {
178
+ hasImportedViewWrapper || (root.unshiftContainer("body", importWithStyle()), hasImportedViewWrapper = !0);
158
179
  const name = props.node.name.name, WrapperIdentifier = root.scope.generateUidIdentifier(
159
180
  name + "Wrapper"
160
181
  );
@@ -163,7 +184,7 @@ var src_default = declare(function(api, options) {
163
184
  t.variableDeclaration("const", [
164
185
  t.variableDeclarator(
165
186
  WrapperIdentifier,
166
- t.callExpression(t.identifier("__internalWithTheme"), [
187
+ t.callExpression(t.identifier("__withStableStyle"), [
167
188
  t.identifier(name),
168
189
  t.arrowFunctionExpression(
169
190
  [t.identifier("theme"), t.identifier("_expressions")],
@@ -186,7 +207,7 @@ var src_default = declare(function(api, options) {
186
207
  ),
187
208
  [
188
209
  t.objectExpression([]),
189
- ...stylesExpr.elements
210
+ ...hocStylesExpr.elements
190
211
  ]
191
212
  )
192
213
  )
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -11,8 +11,8 @@ const __ReactNativeText = require('react-native').Text;
11
11
  importStyleSheet = template(`
12
12
  const __ReactNativeStyleSheet = require('react-native').StyleSheet;
13
13
  `),
14
- importWithTheme = template(`
15
- const __internalWithTheme = require('@tamagui/core').internalWithTheme;
14
+ importWithStyle = template(`
15
+ const __withStableStyle = require('@tamagui/core')._withStableStyle;
16
16
  `),
17
17
  extractor = createExtractor({
18
18
  platform: "native"
@@ -89,6 +89,7 @@ var src_default = declare(function (api, options) {
89
89
  if (!isFlattened) return;
90
90
  assertValidTag(props.node);
91
91
  const stylesExpr = t.arrayExpression([]),
92
+ hocStylesExpr = t.arrayExpression([]),
92
93
  expressions = [],
93
94
  finalAttrs = [],
94
95
  themeKeysUsed = /* @__PURE__ */new Set();
@@ -98,26 +99,30 @@ var src_default = declare(function (api, options) {
98
99
  plain,
99
100
  themed
100
101
  } = splitThemeStyles(style);
102
+ let themeExpr = null;
101
103
  if (themed && options.experimentalFlattenThemesOnNative) {
102
104
  for (const key in themed) themeKeysUsed.add(themed[key].split("$")[1]);
103
- return addThemedStyleExpression(themed);
105
+ themeExpr = getThemedStyleExpression(themed);
104
106
  }
105
- return addSheetStyle(plain, props.node);
107
+ const ident = addSheetStyle(plain, props.node);
108
+ return themeExpr ? (addStyleExpression(ident), addStyleExpression(ident, !0), themeExpr) : ident;
106
109
  }
107
- function addStyleExpression(expr) {
108
- Array.isArray(expr) ? stylesExpr.elements.push(...expr) : stylesExpr.elements.push(expr);
110
+ function addStyleExpression(expr, HOC = !1) {
111
+ Array.isArray(expr) ? (HOC ? hocStylesExpr : stylesExpr).elements.push(...expr) : (HOC ? hocStylesExpr : stylesExpr).elements.push(expr);
109
112
  }
110
- function addThemedStyleExpression(styles) {
113
+ function getThemedStyleExpression(styles) {
111
114
  const themedStylesAst = literalToAst(styles);
112
115
  return themedStylesAst.properties.forEach(_ => {
113
116
  const prop = _;
114
117
  prop.value.type === "StringLiteral" && (prop.value = t.memberExpression(t.identifier("theme"), t.identifier(prop.value.value.slice(1))));
115
118
  }), themedStylesAst;
116
119
  }
120
+ let hasDynamicStyle = !1;
117
121
  for (const attr of props.attrs) switch (attr.type) {
118
122
  case "style":
119
123
  {
120
- addStyleExpression(getStyleExpression(attr.value));
124
+ let styleExpr = getStyleExpression(attr.value);
125
+ addStyleExpression(styleExpr), options.experimentalFlattenThemesOnNative && addStyleExpression(styleExpr, !0);
121
126
  break;
122
127
  }
123
128
  case "ternary":
@@ -127,10 +132,9 @@ var src_default = declare(function (api, options) {
127
132
  alternate
128
133
  } = attr.value,
129
134
  consExpr = getStyleExpression(consequent),
130
- altExpr = getStyleExpression(alternate),
131
- willFlattenTheme = options.experimentalFlattenThemesOnNative && themeKeysUsed.size;
132
- willFlattenTheme && expressions.push(attr.value.test);
133
- const styleExpr = t.conditionalExpression(willFlattenTheme ? t.identifier(`_expressions[${expressions.length - 1}]`) : attr.value.test, consExpr || t.nullLiteral(), altExpr || t.nullLiteral());
135
+ altExpr = getStyleExpression(alternate);
136
+ options.experimentalFlattenThemesOnNative && (expressions.push(attr.value.test), addStyleExpression(t.conditionalExpression(t.identifier(`_expressions[${expressions.length - 1}]`), consExpr || t.nullLiteral(), altExpr || t.nullLiteral()), !0));
137
+ const styleExpr = t.conditionalExpression(attr.value.test, consExpr || t.nullLiteral(), altExpr || t.nullLiteral());
134
138
  addStyleExpression(styleExpr
135
139
  // TODO: what is this for ?
136
140
  // isFlattened ? simpleHash(JSON.stringify({ consequent, alternate })) : undefined
@@ -140,20 +144,20 @@ var src_default = declare(function (api, options) {
140
144
  }
141
145
  case "dynamic-style":
142
146
  {
143
- expressions.push(attr.value), addStyleExpression(t.objectExpression([t.objectProperty(t.identifier(attr.name), t.identifier(`_expressions[${expressions.length - 1}]`))]));
147
+ hasDynamicStyle = !0, expressions.push(attr.value), addStyleExpression(t.objectExpression([t.objectProperty(t.identifier(attr.name), t.identifier(`_expressions[${expressions.length - 1}]`))]), !0), addStyleExpression(t.objectExpression([t.objectProperty(t.identifier(attr.name), attr.value)]));
144
148
  break;
145
149
  }
146
150
  case "attr":
147
151
  {
148
- t.isJSXSpreadAttribute(attr.value) && isSimpleSpread(attr.value) && stylesExpr.elements.push(t.memberExpression(attr.value.argument, t.identifier("style"))), finalAttrs.push(attr.value);
152
+ t.isJSXSpreadAttribute(attr.value) && isSimpleSpread(attr.value) && (stylesExpr.elements.push(t.memberExpression(attr.value.argument, t.identifier("style"))), hocStylesExpr.elements.push(t.memberExpression(attr.value.argument, t.identifier("style")))), finalAttrs.push(attr.value);
149
153
  break;
150
154
  }
151
155
  }
152
- if (props.node.attributes = finalAttrs, props.isFlattened) if (themeKeysUsed.size) {
153
- hasImportedViewWrapper || (root.unshiftContainer("body", importWithTheme()), hasImportedViewWrapper = !0);
156
+ if (props.node.attributes = finalAttrs, props.isFlattened) if (options.experimentalFlattenThemesOnNative && (themeKeysUsed.size || hocStylesExpr.elements.length > 1 || hasDynamicStyle)) {
157
+ hasImportedViewWrapper || (root.unshiftContainer("body", importWithStyle()), hasImportedViewWrapper = !0);
154
158
  const name = props.node.name.name,
155
159
  WrapperIdentifier = root.scope.generateUidIdentifier(name + "Wrapper");
156
- root.pushContainer("body", t.variableDeclaration("const", [t.variableDeclarator(WrapperIdentifier, t.callExpression(t.identifier("__internalWithTheme"), [t.identifier(name), t.arrowFunctionExpression([t.identifier("theme"), t.identifier("_expressions")], t.blockStatement([t.returnStatement(t.callExpression(t.memberExpression(t.identifier("React"), t.identifier("useMemo")), [t.arrowFunctionExpression([], t.blockStatement([t.returnStatement(t.callExpression(t.memberExpression(t.identifier("Object"), t.identifier("assign")), [t.objectExpression([]), ...stylesExpr.elements]))])), t.arrayExpression([...[...themeKeysUsed].map(k => t.memberExpression(t.identifier("theme"), t.identifier(k))), t.spreadElement(t.identifier("_expressions"))])]))]))]))])), props.node.name = WrapperIdentifier, expressions.length && props.node.attributes.push(t.jsxAttribute(t.jsxIdentifier("expressions"), t.jsxExpressionContainer(t.arrayExpression(expressions))));
160
+ root.pushContainer("body", t.variableDeclaration("const", [t.variableDeclarator(WrapperIdentifier, t.callExpression(t.identifier("__withStableStyle"), [t.identifier(name), t.arrowFunctionExpression([t.identifier("theme"), t.identifier("_expressions")], t.blockStatement([t.returnStatement(t.callExpression(t.memberExpression(t.identifier("React"), t.identifier("useMemo")), [t.arrowFunctionExpression([], t.blockStatement([t.returnStatement(t.callExpression(t.memberExpression(t.identifier("Object"), t.identifier("assign")), [t.objectExpression([]), ...hocStylesExpr.elements]))])), t.arrayExpression([...[...themeKeysUsed].map(k => t.memberExpression(t.identifier("theme"), t.identifier(k))), t.spreadElement(t.identifier("_expressions"))])]))]))]))])), props.node.name = WrapperIdentifier, expressions.length && props.node.attributes.push(t.jsxAttribute(t.jsxIdentifier("expressions"), t.jsxExpressionContainer(t.arrayExpression(expressions))));
157
161
  } else props.node.attributes.push(t.jsxAttribute(t.jsxIdentifier("style"), t.jsxExpressionContainer(stylesExpr.elements.length === 1 ? stylesExpr.elements[0] : stylesExpr)));
158
162
  }
159
163
  });
@@ -14,8 +14,8 @@ const __ReactNativeView = require('react-native').View;
14
14
  const __ReactNativeText = require('react-native').Text;
15
15
  `), importStyleSheet = template(`
16
16
  const __ReactNativeStyleSheet = require('react-native').StyleSheet;
17
- `), importWithTheme = template(`
18
- const __internalWithTheme = require('@tamagui/core').internalWithTheme;
17
+ `), importWithStyle = template(`
18
+ const __withStableStyle = require('@tamagui/core')._withStableStyle;
19
19
  `), extractor = createExtractor({ platform: "native" });
20
20
  var src_default = declare(function(api, options) {
21
21
  return api.assertVersion(7), {
@@ -89,22 +89,24 @@ var src_default = declare(function(api, options) {
89
89
  if (!isFlattened)
90
90
  return;
91
91
  assertValidTag(props.node);
92
- const stylesExpr = t.arrayExpression([]), expressions = [], finalAttrs = [], themeKeysUsed = /* @__PURE__ */ new Set();
92
+ const stylesExpr = t.arrayExpression([]), hocStylesExpr = t.arrayExpression([]), expressions = [], finalAttrs = [], themeKeysUsed = /* @__PURE__ */ new Set();
93
93
  function getStyleExpression(style) {
94
94
  if (!style)
95
95
  return;
96
96
  const { plain, themed } = splitThemeStyles(style);
97
+ let themeExpr = null;
97
98
  if (themed && options.experimentalFlattenThemesOnNative) {
98
99
  for (const key in themed)
99
100
  themeKeysUsed.add(themed[key].split("$")[1]);
100
- return addThemedStyleExpression(themed);
101
+ themeExpr = getThemedStyleExpression(themed);
101
102
  }
102
- return addSheetStyle(plain, props.node);
103
+ const ident = addSheetStyle(plain, props.node);
104
+ return themeExpr ? (addStyleExpression(ident), addStyleExpression(ident, !0), themeExpr) : ident;
103
105
  }
104
- function addStyleExpression(expr) {
105
- Array.isArray(expr) ? stylesExpr.elements.push(...expr) : stylesExpr.elements.push(expr);
106
+ function addStyleExpression(expr, HOC = !1) {
107
+ Array.isArray(expr) ? (HOC ? hocStylesExpr : stylesExpr).elements.push(...expr) : (HOC ? hocStylesExpr : stylesExpr).elements.push(expr);
106
108
  }
107
- function addThemedStyleExpression(styles) {
109
+ function getThemedStyleExpression(styles) {
108
110
  const themedStylesAst = literalToAst(styles);
109
111
  return themedStylesAst.properties.forEach((_) => {
110
112
  const prop = _;
@@ -114,17 +116,26 @@ var src_default = declare(function(api, options) {
114
116
  ));
115
117
  }), themedStylesAst;
116
118
  }
119
+ let hasDynamicStyle = !1;
117
120
  for (const attr of props.attrs)
118
121
  switch (attr.type) {
119
122
  case "style": {
120
- addStyleExpression(getStyleExpression(attr.value));
123
+ let styleExpr = getStyleExpression(attr.value);
124
+ addStyleExpression(styleExpr), options.experimentalFlattenThemesOnNative && addStyleExpression(styleExpr, !0);
121
125
  break;
122
126
  }
123
127
  case "ternary": {
124
- const { consequent, alternate } = attr.value, consExpr = getStyleExpression(consequent), altExpr = getStyleExpression(alternate), willFlattenTheme = options.experimentalFlattenThemesOnNative && themeKeysUsed.size;
125
- willFlattenTheme && expressions.push(attr.value.test);
128
+ const { consequent, alternate } = attr.value, consExpr = getStyleExpression(consequent), altExpr = getStyleExpression(alternate);
129
+ options.experimentalFlattenThemesOnNative && (expressions.push(attr.value.test), addStyleExpression(
130
+ t.conditionalExpression(
131
+ t.identifier(`_expressions[${expressions.length - 1}]`),
132
+ consExpr || t.nullLiteral(),
133
+ altExpr || t.nullLiteral()
134
+ ),
135
+ !0
136
+ ));
126
137
  const styleExpr = t.conditionalExpression(
127
- willFlattenTheme ? t.identifier(`_expressions[${expressions.length - 1}]`) : attr.value.test,
138
+ attr.value.test,
128
139
  consExpr || t.nullLiteral(),
129
140
  altExpr || t.nullLiteral()
130
141
  );
@@ -136,26 +147,36 @@ var src_default = declare(function(api, options) {
136
147
  break;
137
148
  }
138
149
  case "dynamic-style": {
139
- expressions.push(attr.value), addStyleExpression(
150
+ hasDynamicStyle = !0, expressions.push(attr.value), addStyleExpression(
140
151
  t.objectExpression([
141
152
  t.objectProperty(
142
153
  t.identifier(attr.name),
143
154
  t.identifier(`_expressions[${expressions.length - 1}]`)
144
155
  )
156
+ ]),
157
+ !0
158
+ ), addStyleExpression(
159
+ t.objectExpression([
160
+ t.objectProperty(
161
+ t.identifier(attr.name),
162
+ attr.value
163
+ )
145
164
  ])
146
165
  );
147
166
  break;
148
167
  }
149
168
  case "attr": {
150
- t.isJSXSpreadAttribute(attr.value) && isSimpleSpread(attr.value) && stylesExpr.elements.push(
169
+ t.isJSXSpreadAttribute(attr.value) && isSimpleSpread(attr.value) && (stylesExpr.elements.push(
170
+ t.memberExpression(attr.value.argument, t.identifier("style"))
171
+ ), hocStylesExpr.elements.push(
151
172
  t.memberExpression(attr.value.argument, t.identifier("style"))
152
- ), finalAttrs.push(attr.value);
173
+ )), finalAttrs.push(attr.value);
153
174
  break;
154
175
  }
155
176
  }
156
177
  if (props.node.attributes = finalAttrs, props.isFlattened)
157
- if (themeKeysUsed.size) {
158
- hasImportedViewWrapper || (root.unshiftContainer("body", importWithTheme()), hasImportedViewWrapper = !0);
178
+ if (options.experimentalFlattenThemesOnNative && (themeKeysUsed.size || hocStylesExpr.elements.length > 1 || hasDynamicStyle)) {
179
+ hasImportedViewWrapper || (root.unshiftContainer("body", importWithStyle()), hasImportedViewWrapper = !0);
159
180
  const name = props.node.name.name, WrapperIdentifier = root.scope.generateUidIdentifier(
160
181
  name + "Wrapper"
161
182
  );
@@ -164,7 +185,7 @@ var src_default = declare(function(api, options) {
164
185
  t.variableDeclaration("const", [
165
186
  t.variableDeclarator(
166
187
  WrapperIdentifier,
167
- t.callExpression(t.identifier("__internalWithTheme"), [
188
+ t.callExpression(t.identifier("__withStableStyle"), [
168
189
  t.identifier(name),
169
190
  t.arrowFunctionExpression(
170
191
  [t.identifier("theme"), t.identifier("_expressions")],
@@ -187,7 +208,7 @@ var src_default = declare(function(api, options) {
187
208
  ),
188
209
  [
189
210
  t.objectExpression([]),
190
- ...stylesExpr.elements
211
+ ...hocStylesExpr.elements
191
212
  ]
192
213
  )
193
214
  )
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/babel-plugin",
3
- "version": "1.89.20",
3
+ "version": "1.89.22",
4
4
  "source": "src/index.ts",
5
5
  "types": "./types/index.d.ts",
6
6
  "main": "dist/cjs",
@@ -27,11 +27,11 @@
27
27
  "@babel/helper-plugin-utils": "^7.22.5",
28
28
  "@babel/template": "^7.22.15",
29
29
  "@babel/traverse": "^7.23.3",
30
- "@tamagui/static": "1.89.20"
30
+ "@tamagui/static": "1.89.22"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@babel/types": "^7.23.3",
34
- "@tamagui/build": "1.89.20"
34
+ "@tamagui/build": "1.89.22"
35
35
  },
36
36
  "gitHead": "a49cc7ea6b93ba384e77a4880ae48ac4a5635c14"
37
37
  }
package/src/index.ts CHANGED
@@ -22,8 +22,8 @@ const importStyleSheet = template(`
22
22
  const __ReactNativeStyleSheet = require('react-native').StyleSheet;
23
23
  `)
24
24
 
25
- const importWithTheme = template(`
26
- const __internalWithTheme = require('@tamagui/core').internalWithTheme;
25
+ const importWithStyle = template(`
26
+ const __withStableStyle = require('@tamagui/core')._withStableStyle;
27
27
  `)
28
28
 
29
29
  const extractor = createExtractor({ platform: 'native' })
@@ -152,6 +152,7 @@ export default declare(function snackBabelPlugin(
152
152
 
153
153
  assertValidTag(props.node)
154
154
  const stylesExpr = t.arrayExpression([])
155
+ const hocStylesExpr = t.arrayExpression([])
155
156
  const expressions: t.Expression[] = []
156
157
  const finalAttrs: (t.JSXAttribute | t.JSXSpreadAttribute)[] = []
157
158
  const themeKeysUsed = new Set<string>()
@@ -163,28 +164,34 @@ export default declare(function snackBabelPlugin(
163
164
  const { plain, themed } = splitThemeStyles(style)
164
165
 
165
166
  // TODO: themed is not a good name, because it's not just theme it also includes tokens
167
+ let themeExpr: t.ObjectExpression | null = null
166
168
  if (themed && options.experimentalFlattenThemesOnNative) {
167
169
  for (const key in themed) {
168
170
  themeKeysUsed.add(themed[key].split('$')[1])
169
171
  }
170
172
 
171
173
  // make a sub-array
172
- return addThemedStyleExpression(themed)
174
+ themeExpr = getThemedStyleExpression(themed)
173
175
  }
174
176
  const ident = addSheetStyle(plain, props.node)
177
+ if (themeExpr) {
178
+ addStyleExpression(ident)
179
+ addStyleExpression(ident, true)
180
+ return themeExpr
181
+ }
175
182
  // since we only do flattened disabling this path
176
183
  return ident
177
184
  }
178
185
 
179
- function addStyleExpression(expr: any) {
186
+ function addStyleExpression(expr: any, HOC = false) {
180
187
  if (Array.isArray(expr)) {
181
- stylesExpr.elements.push(...expr)
188
+ ;(HOC ? hocStylesExpr : stylesExpr).elements.push(...expr)
182
189
  } else {
183
- stylesExpr.elements.push(expr)
190
+ ;(HOC ? hocStylesExpr : stylesExpr).elements.push(expr)
184
191
  }
185
192
  }
186
193
 
187
- function addThemedStyleExpression(styles: Object) {
194
+ function getThemedStyleExpression(styles: Object) {
188
195
  const themedStylesAst = literalToAst(styles) as t.ObjectExpression
189
196
  themedStylesAst.properties.forEach((_) => {
190
197
  const prop = _ as t.ObjectProperty
@@ -198,29 +205,38 @@ export default declare(function snackBabelPlugin(
198
205
  return themedStylesAst
199
206
  }
200
207
 
208
+ let hasDynamicStyle = false
209
+
201
210
  for (const attr of props.attrs) {
202
211
  switch (attr.type) {
203
212
  case 'style': {
204
- addStyleExpression(getStyleExpression(attr.value))
213
+ let styleExpr = getStyleExpression(attr.value)
214
+ addStyleExpression(styleExpr)
215
+ if (options.experimentalFlattenThemesOnNative) {
216
+ addStyleExpression(styleExpr, true)
217
+ }
205
218
  break
206
219
  }
207
220
 
208
221
  case 'ternary': {
209
222
  const { consequent, alternate } = attr.value
210
-
211
223
  const consExpr = getStyleExpression(consequent)
212
224
  const altExpr = getStyleExpression(alternate)
213
225
 
214
- const willFlattenTheme =
215
- options.experimentalFlattenThemesOnNative && themeKeysUsed.size
216
- if (willFlattenTheme) {
226
+ if (options.experimentalFlattenThemesOnNative) {
217
227
  expressions.push(attr.value.test)
228
+ addStyleExpression(
229
+ t.conditionalExpression(
230
+ t.identifier(`_expressions[${expressions.length - 1}]`),
231
+ consExpr || t.nullLiteral(),
232
+ altExpr || t.nullLiteral()
233
+ ),
234
+ true
235
+ )
218
236
  }
219
237
 
220
238
  const styleExpr = t.conditionalExpression(
221
- willFlattenTheme
222
- ? t.identifier(`_expressions[${expressions.length - 1}]`)
223
- : attr.value.test,
239
+ attr.value.test,
224
240
  consExpr || t.nullLiteral(),
225
241
  altExpr || t.nullLiteral()
226
242
  )
@@ -233,6 +249,7 @@ export default declare(function snackBabelPlugin(
233
249
  }
234
250
 
235
251
  case 'dynamic-style': {
252
+ hasDynamicStyle = true
236
253
  expressions.push(attr.value as t.Expression)
237
254
  addStyleExpression(
238
255
  t.objectExpression([
@@ -240,6 +257,15 @@ export default declare(function snackBabelPlugin(
240
257
  t.identifier(attr.name as string),
241
258
  t.identifier(`_expressions[${expressions.length - 1}]`)
242
259
  ),
260
+ ]),
261
+ true
262
+ )
263
+ addStyleExpression(
264
+ t.objectExpression([
265
+ t.objectProperty(
266
+ t.identifier(attr.name as string),
267
+ attr.value as t.Expression
268
+ ),
243
269
  ])
244
270
  )
245
271
  break
@@ -251,6 +277,9 @@ export default declare(function snackBabelPlugin(
251
277
  stylesExpr.elements.push(
252
278
  t.memberExpression(attr.value.argument, t.identifier('style'))
253
279
  )
280
+ hocStylesExpr.elements.push(
281
+ t.memberExpression(attr.value.argument, t.identifier('style'))
282
+ )
254
283
  }
255
284
  }
256
285
  finalAttrs.push(attr.value)
@@ -262,9 +291,14 @@ export default declare(function snackBabelPlugin(
262
291
  props.node.attributes = finalAttrs
263
292
 
264
293
  if (props.isFlattened) {
265
- if (themeKeysUsed.size) {
294
+ if (
295
+ options.experimentalFlattenThemesOnNative &&
296
+ (themeKeysUsed.size ||
297
+ hocStylesExpr.elements.length > 1 ||
298
+ hasDynamicStyle)
299
+ ) {
266
300
  if (!hasImportedViewWrapper) {
267
- root.unshiftContainer('body', importWithTheme())
301
+ root.unshiftContainer('body', importWithStyle())
268
302
  hasImportedViewWrapper = true
269
303
  }
270
304
 
@@ -278,7 +312,7 @@ export default declare(function snackBabelPlugin(
278
312
  t.variableDeclaration('const', [
279
313
  t.variableDeclarator(
280
314
  WrapperIdentifier,
281
- t.callExpression(t.identifier('__internalWithTheme'), [
315
+ t.callExpression(t.identifier('__withStableStyle'), [
282
316
  t.identifier(name),
283
317
  t.arrowFunctionExpression(
284
318
  [t.identifier('theme'), t.identifier('_expressions')],
@@ -301,7 +335,7 @@ export default declare(function snackBabelPlugin(
301
335
  ),
302
336
  [
303
337
  t.objectExpression([]),
304
- ...stylesExpr.elements,
338
+ ...hocStylesExpr.elements,
305
339
  ...[],
306
340
  ] as any[]
307
341
  )
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AA8BA,wBAiXE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AA8BA,wBAmZE"}