@tamagui/static 1.61.2 → 1.62.0
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/constants.js +8 -19
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/constants.native.js +43 -0
- package/dist/cjs/constants.native.js.map +6 -0
- package/dist/cjs/extractor/accessSafe.js +8 -14
- package/dist/cjs/extractor/accessSafe.js.map +1 -1
- package/dist/cjs/extractor/accessSafe.native.js +52 -0
- package/dist/cjs/extractor/accessSafe.native.js.map +6 -0
- package/dist/cjs/extractor/babelParse.js +9 -17
- package/dist/cjs/extractor/babelParse.js.map +1 -1
- package/dist/cjs/extractor/babelParse.native.js +65 -0
- package/dist/cjs/extractor/babelParse.native.js.map +6 -0
- package/dist/cjs/extractor/buildClassName.js +44 -67
- package/dist/cjs/extractor/buildClassName.js.map +1 -1
- package/dist/cjs/extractor/buildClassName.native.js +78 -0
- package/dist/cjs/extractor/buildClassName.native.js.map +6 -0
- package/dist/cjs/extractor/bundle.js +44 -79
- package/dist/cjs/extractor/bundle.js.map +1 -1
- package/dist/cjs/extractor/bundle.native.js +118 -0
- package/dist/cjs/extractor/bundle.native.js.map +6 -0
- package/dist/cjs/extractor/bundleConfig.js +107 -204
- package/dist/cjs/extractor/bundleConfig.js.map +1 -1
- package/dist/cjs/extractor/bundleConfig.native.js +316 -0
- package/dist/cjs/extractor/bundleConfig.native.js.map +6 -0
- package/dist/cjs/extractor/createEvaluator.js +13 -41
- package/dist/cjs/extractor/createEvaluator.js.map +1 -1
- package/dist/cjs/extractor/createEvaluator.native.js +60 -0
- package/dist/cjs/extractor/createEvaluator.native.js.map +6 -0
- package/dist/cjs/extractor/createExtractor.js +497 -1128
- package/dist/cjs/extractor/createExtractor.js.map +2 -2
- package/dist/cjs/extractor/createExtractor.native.js +1067 -0
- package/dist/cjs/extractor/createExtractor.native.js.map +6 -0
- package/dist/cjs/extractor/ensureImportingConcat.js +12 -23
- package/dist/cjs/extractor/ensureImportingConcat.js.map +1 -1
- package/dist/cjs/extractor/ensureImportingConcat.native.js +55 -0
- package/dist/cjs/extractor/ensureImportingConcat.native.js.map +6 -0
- package/dist/cjs/extractor/esbuildAliasPlugin.js +40 -0
- package/dist/cjs/extractor/esbuildAliasPlugin.js.map +6 -0
- package/dist/cjs/extractor/esbuildAliasPlugin.native.js +41 -0
- package/dist/cjs/extractor/esbuildAliasPlugin.native.js.map +6 -0
- package/dist/cjs/extractor/evaluateAstNode.js +67 -95
- package/dist/cjs/extractor/evaluateAstNode.js.map +1 -1
- package/dist/cjs/extractor/evaluateAstNode.native.js +104 -0
- package/dist/cjs/extractor/evaluateAstNode.native.js.map +6 -0
- package/dist/cjs/extractor/extractHelpers.js +43 -123
- package/dist/cjs/extractor/extractHelpers.js.map +1 -1
- package/dist/cjs/extractor/extractHelpers.native.js +131 -0
- package/dist/cjs/extractor/extractHelpers.native.js.map +6 -0
- package/dist/cjs/extractor/extractMediaStyle.js +42 -110
- package/dist/cjs/extractor/extractMediaStyle.js.map +1 -1
- package/dist/cjs/extractor/extractMediaStyle.native.js +127 -0
- package/dist/cjs/extractor/extractMediaStyle.native.js.map +6 -0
- package/dist/cjs/extractor/extractToClassNames.js +134 -254
- package/dist/cjs/extractor/extractToClassNames.js.map +1 -1
- package/dist/cjs/extractor/extractToClassNames.native.js +304 -0
- package/dist/cjs/extractor/extractToClassNames.native.js.map +6 -0
- package/dist/cjs/extractor/findTopmostFunction.js +9 -17
- package/dist/cjs/extractor/findTopmostFunction.js.map +1 -1
- package/dist/cjs/extractor/findTopmostFunction.native.js +37 -0
- package/dist/cjs/extractor/findTopmostFunction.native.js.map +6 -0
- package/dist/cjs/extractor/generateTamaguiStudioConfig.js +34 -78
- package/dist/cjs/extractor/generateTamaguiStudioConfig.js.map +1 -1
- package/dist/cjs/extractor/generateTamaguiStudioConfig.native.js +120 -0
- package/dist/cjs/extractor/generateTamaguiStudioConfig.native.js.map +6 -0
- package/dist/cjs/extractor/generatedUid.js +14 -28
- package/dist/cjs/extractor/generatedUid.js.map +1 -1
- package/dist/cjs/extractor/generatedUid.native.js +47 -0
- package/dist/cjs/extractor/generatedUid.native.js.map +6 -0
- package/dist/cjs/extractor/getPrefixLogs.js +6 -10
- package/dist/cjs/extractor/getPrefixLogs.js.map +1 -1
- package/dist/cjs/extractor/getPrefixLogs.native.js +29 -0
- package/dist/cjs/extractor/getPrefixLogs.native.js.map +6 -0
- package/dist/cjs/extractor/getPropValueFromAttributes.js +21 -42
- package/dist/cjs/extractor/getPropValueFromAttributes.js.map +1 -1
- package/dist/cjs/extractor/getPropValueFromAttributes.native.js +70 -0
- package/dist/cjs/extractor/getPropValueFromAttributes.native.js.map +6 -0
- package/dist/cjs/extractor/getSourceModule.js +23 -57
- package/dist/cjs/extractor/getSourceModule.js.map +1 -1
- package/dist/cjs/extractor/getSourceModule.native.js +71 -0
- package/dist/cjs/extractor/getSourceModule.native.js.map +6 -0
- package/dist/cjs/extractor/getStaticBindingsForScope.js +42 -116
- package/dist/cjs/extractor/getStaticBindingsForScope.js.map +1 -1
- package/dist/cjs/extractor/getStaticBindingsForScope.native.js +153 -0
- package/dist/cjs/extractor/getStaticBindingsForScope.native.js.map +6 -0
- package/dist/cjs/extractor/getTamaguiConfigPathFromOptionsConfig.js +6 -13
- package/dist/cjs/extractor/getTamaguiConfigPathFromOptionsConfig.js.map +1 -1
- package/dist/cjs/extractor/getTamaguiConfigPathFromOptionsConfig.native.js +29 -0
- package/dist/cjs/extractor/getTamaguiConfigPathFromOptionsConfig.native.js.map +6 -0
- package/dist/cjs/extractor/hoistClassNames.js +16 -30
- package/dist/cjs/extractor/hoistClassNames.js.map +1 -1
- package/dist/cjs/extractor/hoistClassNames.native.js +66 -0
- package/dist/cjs/extractor/hoistClassNames.native.js.map +6 -0
- package/dist/cjs/extractor/literalToAst.js +32 -53
- package/dist/cjs/extractor/literalToAst.js.map +1 -1
- package/dist/cjs/extractor/literalToAst.native.js +96 -0
- package/dist/cjs/extractor/literalToAst.native.js.map +6 -0
- package/dist/cjs/extractor/loadFile.js +4 -11
- package/dist/cjs/extractor/loadFile.js.map +1 -1
- package/dist/cjs/extractor/loadFile.native.js +15 -0
- package/dist/cjs/extractor/loadFile.native.js.map +6 -0
- package/dist/cjs/extractor/loadTamagui.js +76 -147
- package/dist/cjs/extractor/loadTamagui.js.map +1 -1
- package/dist/cjs/extractor/loadTamagui.native.js +240 -0
- package/dist/cjs/extractor/loadTamagui.native.js.map +6 -0
- package/dist/cjs/extractor/logLines.js +12 -22
- package/dist/cjs/extractor/logLines.js.map +1 -1
- package/dist/cjs/extractor/logLines.native.js +35 -0
- package/dist/cjs/extractor/logLines.native.js.map +6 -0
- package/dist/cjs/extractor/normalizeTernaries.js +27 -54
- package/dist/cjs/extractor/normalizeTernaries.js.map +1 -1
- package/dist/cjs/extractor/normalizeTernaries.native.js +64 -0
- package/dist/cjs/extractor/normalizeTernaries.native.js.map +6 -0
- package/dist/cjs/extractor/propsToFontFamilyCache.js +6 -11
- package/dist/cjs/extractor/propsToFontFamilyCache.js.map +1 -1
- package/dist/cjs/extractor/propsToFontFamilyCache.native.js +41 -0
- package/dist/cjs/extractor/propsToFontFamilyCache.native.js.map +6 -0
- package/dist/cjs/extractor/removeUnusedHooks.js +25 -56
- package/dist/cjs/extractor/removeUnusedHooks.js.map +1 -1
- package/dist/cjs/extractor/removeUnusedHooks.native.js +80 -0
- package/dist/cjs/extractor/removeUnusedHooks.native.js.map +6 -0
- package/dist/cjs/extractor/timer.js +9 -20
- package/dist/cjs/extractor/timer.js.map +1 -1
- package/dist/cjs/extractor/timer.native.js +43 -0
- package/dist/cjs/extractor/timer.native.js.map +6 -0
- package/dist/cjs/extractor/validHTMLAttributes.js +51 -55
- package/dist/cjs/extractor/validHTMLAttributes.js.map +1 -1
- package/dist/cjs/extractor/validHTMLAttributes.native.js +73 -0
- package/dist/cjs/extractor/validHTMLAttributes.native.js.map +6 -0
- package/dist/cjs/getPragmaOptions.js +12 -38
- package/dist/cjs/getPragmaOptions.js.map +1 -1
- package/dist/cjs/getPragmaOptions.native.js +43 -0
- package/dist/cjs/getPragmaOptions.native.js.map +6 -0
- package/dist/cjs/helpers/memoize.js +10 -19
- package/dist/cjs/helpers/memoize.js.map +1 -1
- package/dist/cjs/helpers/memoize.native.js +38 -0
- package/dist/cjs/helpers/memoize.native.js.map +6 -0
- package/dist/cjs/helpers/requireTamaguiCore.js +29 -0
- package/dist/cjs/helpers/requireTamaguiCore.js.map +6 -0
- package/dist/cjs/helpers/requireTamaguiCore.native.js +30 -0
- package/dist/cjs/helpers/requireTamaguiCore.native.js.map +6 -0
- package/dist/cjs/index.js +7 -35
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +21 -0
- package/dist/cjs/index.native.js.map +6 -0
- package/dist/cjs/registerRequire.js +93 -0
- package/dist/cjs/registerRequire.js.map +6 -0
- package/dist/cjs/registerRequire.native.js +94 -0
- package/dist/cjs/registerRequire.native.js.map +6 -0
- package/dist/cjs/setup.js +2 -0
- package/dist/cjs/setup.js.map +6 -0
- package/dist/cjs/setup.native.js +3 -0
- package/dist/cjs/setup.native.js.map +6 -0
- package/dist/cjs/static.js +41 -0
- package/dist/cjs/static.js.map +6 -0
- package/dist/cjs/static.native.js +42 -0
- package/dist/cjs/static.native.js.map +6 -0
- package/dist/cjs/types.js +3 -6
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/types.native.js +15 -0
- package/dist/cjs/types.native.js.map +6 -0
- package/dist/cjs/webpackPlugin.js +5 -9
- package/dist/cjs/webpackPlugin.js.map +1 -1
- package/dist/cjs/webpackPlugin.native.js +32 -0
- package/dist/cjs/webpackPlugin.native.js.map +6 -0
- package/dist/esm/constants.js +1 -6
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/extractor/accessSafe.js +1 -1
- package/dist/esm/extractor/accessSafe.js.map +1 -1
- package/dist/esm/extractor/babelParse.js +2 -4
- package/dist/esm/extractor/babelParse.js.map +1 -1
- package/dist/esm/extractor/buildClassName.js +37 -54
- package/dist/esm/extractor/buildClassName.js.map +1 -1
- package/dist/esm/extractor/bundle.js +36 -60
- package/dist/esm/extractor/bundle.js.map +1 -1
- package/dist/esm/extractor/bundleConfig.js +100 -180
- package/dist/esm/extractor/bundleConfig.js.map +1 -1
- package/dist/esm/extractor/createEvaluator.js +5 -22
- package/dist/esm/extractor/createEvaluator.js.map +1 -1
- package/dist/esm/extractor/createExtractor.js +484 -1098
- package/dist/esm/extractor/createExtractor.js.map +2 -2
- package/dist/esm/extractor/ensureImportingConcat.js +5 -10
- package/dist/esm/extractor/ensureImportingConcat.js.map +1 -1
- package/dist/esm/extractor/esbuildAliasPlugin.js +20 -0
- package/dist/esm/extractor/esbuildAliasPlugin.js.map +6 -0
- package/dist/esm/extractor/evaluateAstNode.js +60 -82
- package/dist/esm/extractor/evaluateAstNode.js.map +1 -1
- package/dist/esm/extractor/extractHelpers.js +35 -105
- package/dist/esm/extractor/extractHelpers.js.map +1 -1
- package/dist/esm/extractor/extractMediaStyle.js +35 -97
- package/dist/esm/extractor/extractMediaStyle.js.map +1 -1
- package/dist/esm/extractor/extractToClassNames.js +126 -224
- package/dist/esm/extractor/extractToClassNames.js.map +1 -1
- package/dist/esm/extractor/findTopmostFunction.js +4 -8
- package/dist/esm/extractor/findTopmostFunction.js.map +1 -1
- package/dist/esm/extractor/generateTamaguiStudioConfig.js +25 -59
- package/dist/esm/extractor/generateTamaguiStudioConfig.js.map +1 -1
- package/dist/esm/extractor/generatedUid.js +7 -15
- package/dist/esm/extractor/generatedUid.js.map +1 -1
- package/dist/esm/extractor/getPrefixLogs.js +1 -1
- package/dist/esm/extractor/getPrefixLogs.js.map +1 -1
- package/dist/esm/extractor/getPropValueFromAttributes.js +13 -26
- package/dist/esm/extractor/getPropValueFromAttributes.js.map +1 -1
- package/dist/esm/extractor/getSourceModule.js +16 -44
- package/dist/esm/extractor/getSourceModule.js.map +1 -1
- package/dist/esm/extractor/getStaticBindingsForScope.js +34 -98
- package/dist/esm/extractor/getStaticBindingsForScope.js.map +1 -1
- package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.js +1 -4
- package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.js.map +1 -1
- package/dist/esm/extractor/hoistClassNames.js +9 -17
- package/dist/esm/extractor/hoistClassNames.js.map +1 -1
- package/dist/esm/extractor/literalToAst.js +25 -40
- package/dist/esm/extractor/literalToAst.js.map +1 -1
- package/dist/esm/extractor/loadFile.js +4 -10
- package/dist/esm/extractor/loadFile.js.map +1 -1
- package/dist/esm/extractor/loadTamagui.js +69 -124
- package/dist/esm/extractor/loadTamagui.js.map +1 -1
- package/dist/esm/extractor/logLines.js +7 -13
- package/dist/esm/extractor/logLines.js.map +1 -1
- package/dist/esm/extractor/normalizeTernaries.js +19 -38
- package/dist/esm/extractor/normalizeTernaries.js.map +1 -1
- package/dist/esm/extractor/propsToFontFamilyCache.js +1 -2
- package/dist/esm/extractor/propsToFontFamilyCache.js.map +1 -1
- package/dist/esm/extractor/removeUnusedHooks.js +18 -43
- package/dist/esm/extractor/removeUnusedHooks.js.map +1 -1
- package/dist/esm/extractor/timer.js +4 -11
- package/dist/esm/extractor/timer.js.map +1 -1
- package/dist/esm/extractor/validHTMLAttributes.js +46 -46
- package/dist/esm/getPragmaOptions.js +7 -29
- package/dist/esm/getPragmaOptions.js.map +1 -1
- package/dist/esm/helpers/memoize.js +5 -10
- package/dist/esm/helpers/memoize.js.map +1 -1
- package/dist/esm/helpers/requireTamaguiCore.js +9 -0
- package/dist/esm/helpers/requireTamaguiCore.js.map +6 -0
- package/dist/esm/index.js +2 -14
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/registerRequire.js +73 -0
- package/dist/esm/registerRequire.js.map +6 -0
- package/dist/esm/setup.js +2 -0
- package/dist/esm/setup.js.map +6 -0
- package/dist/esm/static.js +15 -0
- package/dist/esm/static.js.map +6 -0
- package/package.json +15 -15
- package/src/extractor/bundle.ts +12 -10
- package/src/extractor/bundleConfig.ts +25 -20
- package/src/extractor/createEvaluator.ts +0 -16
- package/src/extractor/createExtractor.ts +12 -9
- package/src/extractor/esbuildAliasPlugin.ts +40 -0
- package/src/extractor/extractMediaStyle.ts +3 -5
- package/src/extractor/extractToClassNames.ts +2 -1
- package/src/extractor/generateTamaguiStudioConfig.ts +3 -1
- package/src/extractor/loadTamagui.ts +26 -22
- package/src/helpers/requireTamaguiCore.ts +13 -0
- package/src/index.ts +2 -9
- package/src/registerRequire.ts +156 -0
- package/src/setup.ts +1 -0
- package/src/static.ts +9 -0
- package/src/types.ts +3 -1
- package/types/extractor/bundle.d.ts +2 -2
- package/types/extractor/bundle.d.ts.map +1 -1
- package/types/extractor/bundleConfig.d.ts.map +1 -1
- package/types/extractor/createEvaluator.d.ts.map +1 -1
- package/types/extractor/createExtractor.d.ts +1 -1
- package/types/extractor/createExtractor.d.ts.map +1 -1
- package/types/extractor/esbuildAliasPlugin.d.ts +18 -0
- package/types/extractor/esbuildAliasPlugin.d.ts.map +1 -0
- package/types/extractor/extractMediaStyle.d.ts +1 -1
- package/types/extractor/extractMediaStyle.d.ts.map +1 -1
- package/types/extractor/extractToClassNames.d.ts.map +1 -1
- package/types/extractor/generateTamaguiStudioConfig.d.ts.map +1 -1
- package/types/extractor/loadTamagui.d.ts +2 -2
- package/types/extractor/loadTamagui.d.ts.map +1 -1
- package/types/helpers/requireTamaguiCore.d.ts +3 -0
- package/types/helpers/requireTamaguiCore.d.ts.map +1 -0
- package/types/index.d.ts +2 -9
- package/types/index.d.ts.map +1 -1
- package/types/registerRequire.d.ts +7 -0
- package/types/registerRequire.d.ts.map +1 -0
- package/types/setup.d.ts +2 -0
- package/types/setup.d.ts.map +1 -0
- package/types/static.d.ts +10 -0
- package/types/static.d.ts.map +1 -0
- package/types/types.d.ts +2 -1
- package/types/types.d.ts.map +1 -1
- package/dist/cjs/require.js +0 -125
- package/dist/cjs/require.js.map +0 -6
- package/dist/esm/require.js +0 -100
- package/dist/esm/require.js.map +0 -6
- package/src/require.ts +0 -150
- package/types/require.d.ts +0 -3
- package/types/require.d.ts.map +0 -1
|
@@ -1,20 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __create = Object.create;
|
|
3
2
|
var __defProp = Object.defineProperty;
|
|
4
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
6
|
var __export = (target, all) => {
|
|
9
7
|
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable:
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
9
|
+
}, __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from == "object" || typeof from == "function")
|
|
14
11
|
for (let key of __getOwnPropNames(from))
|
|
15
|
-
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
12
|
+
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
13
|
return to;
|
|
19
14
|
};
|
|
20
15
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
@@ -22,92 +17,56 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
22
17
|
// file that has been converted to a CommonJS file using a Babel-
|
|
23
18
|
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
19
|
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable:
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
|
|
26
21
|
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
22
|
+
)), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
29
23
|
var createExtractor_exports = {};
|
|
30
24
|
__export(createExtractor_exports, {
|
|
31
25
|
createExtractor: () => createExtractor
|
|
32
26
|
});
|
|
33
27
|
module.exports = __toCommonJS(createExtractor_exports);
|
|
34
|
-
var import_path = require("path");
|
|
35
|
-
var import_traverse = __toESM(require("@babel/traverse"));
|
|
36
|
-
var t = __toESM(require("@babel/types"));
|
|
37
|
-
var import_core_node = require("@tamagui/core-node");
|
|
38
|
-
var import_react_native_web_internals = require("react-native-web-internals");
|
|
39
|
-
var import_constants = require("../constants");
|
|
40
|
-
var import_createEvaluator = require("./createEvaluator");
|
|
41
|
-
var import_evaluateAstNode = require("./evaluateAstNode");
|
|
42
|
-
var import_extractHelpers = require("./extractHelpers");
|
|
43
|
-
var import_findTopmostFunction = require("./findTopmostFunction");
|
|
44
|
-
var import_getStaticBindingsForScope = require("./getStaticBindingsForScope");
|
|
45
|
-
var import_literalToAst = require("./literalToAst");
|
|
46
|
-
var import_loadTamagui = require("./loadTamagui");
|
|
47
|
-
var import_logLines = require("./logLines");
|
|
48
|
-
var import_normalizeTernaries = require("./normalizeTernaries");
|
|
49
|
-
var import_propsToFontFamilyCache = require("./propsToFontFamilyCache");
|
|
50
|
-
var import_removeUnusedHooks = require("./removeUnusedHooks");
|
|
51
|
-
var import_timer = require("./timer");
|
|
52
|
-
var import_validHTMLAttributes = require("./validHTMLAttributes");
|
|
28
|
+
var import_path = require("path"), import_traverse = __toESM(require("@babel/traverse")), t = __toESM(require("@babel/types")), import_react_native_web_internals = require("react-native-web-internals"), import_constants = require("../constants"), import_requireTamaguiCore = require("../helpers/requireTamaguiCore"), import_createEvaluator = require("./createEvaluator"), import_evaluateAstNode = require("./evaluateAstNode"), import_extractHelpers = require("./extractHelpers"), import_findTopmostFunction = require("./findTopmostFunction"), import_getStaticBindingsForScope = require("./getStaticBindingsForScope"), import_literalToAst = require("./literalToAst"), import_loadTamagui = require("./loadTamagui"), import_logLines = require("./logLines"), import_normalizeTernaries = require("./normalizeTernaries"), import_propsToFontFamilyCache = require("./propsToFontFamilyCache"), import_removeUnusedHooks = require("./removeUnusedHooks"), import_timer = require("./timer"), import_validHTMLAttributes = require("./validHTMLAttributes");
|
|
53
29
|
const UNTOUCHED_PROPS = {
|
|
54
|
-
key:
|
|
55
|
-
style:
|
|
56
|
-
className:
|
|
57
|
-
}
|
|
58
|
-
const INLINE_EXTRACTABLE = {
|
|
30
|
+
key: !0,
|
|
31
|
+
style: !0,
|
|
32
|
+
className: !0
|
|
33
|
+
}, INLINE_EXTRACTABLE = {
|
|
59
34
|
ref: "ref",
|
|
60
35
|
key: "key",
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
useTheme: true
|
|
72
|
-
};
|
|
73
|
-
const createTernary = (x) => x;
|
|
74
|
-
let hasLoggedBaseInfo = false;
|
|
36
|
+
onPress: "onClick",
|
|
37
|
+
onHoverIn: "onMouseEnter",
|
|
38
|
+
onHoverOut: "onMouseLeave",
|
|
39
|
+
onPressIn: "onMouseDown",
|
|
40
|
+
onPressOut: "onMouseUp"
|
|
41
|
+
}, validHooks = {
|
|
42
|
+
useMedia: !0,
|
|
43
|
+
useTheme: !0
|
|
44
|
+
}, createTernary = (x) => x;
|
|
45
|
+
let hasLoggedBaseInfo = !1;
|
|
75
46
|
function isFullyDisabled(props) {
|
|
76
47
|
return props.disableExtraction && props.disableDebugAttr;
|
|
77
48
|
}
|
|
78
49
|
function createExtractor({ logger = console } = { logger: console }) {
|
|
79
|
-
if (!process.env.TAMAGUI_TARGET) {
|
|
80
|
-
console.warn('\u26A0\uFE0F Please set process.env.TAMAGUI_TARGET to either "web" or "native"');
|
|
81
|
-
process.exit(1);
|
|
82
|
-
}
|
|
83
50
|
const componentState = {
|
|
84
|
-
focus:
|
|
85
|
-
hover:
|
|
86
|
-
unmounted:
|
|
87
|
-
press:
|
|
88
|
-
pressIn:
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
};
|
|
95
|
-
const shouldAddDebugProp = (
|
|
51
|
+
focus: !1,
|
|
52
|
+
hover: !1,
|
|
53
|
+
unmounted: !0,
|
|
54
|
+
press: !1,
|
|
55
|
+
pressIn: !1
|
|
56
|
+
}, styleProps = {
|
|
57
|
+
resolveVariablesAs: "variable",
|
|
58
|
+
noClassNames: !1,
|
|
59
|
+
isAnimated: !1
|
|
60
|
+
}, shouldAddDebugProp = (
|
|
96
61
|
// really basic disable this for next.js because it messes with ssr
|
|
97
|
-
!process.env.npm_package_dependencies_next &&
|
|
62
|
+
!process.env.npm_package_dependencies_next && !0 && process.env.IDENTIFY_TAGS !== "false" && (process.env.NODE_ENV === "development" || process.env.DEBUG || process.env.IDENTIFY_TAGS)
|
|
98
63
|
);
|
|
99
64
|
let projectInfo = null;
|
|
100
65
|
function loadSync(props) {
|
|
101
|
-
|
|
102
|
-
return null;
|
|
103
|
-
}
|
|
104
|
-
return projectInfo || (projectInfo = (0, import_loadTamagui.loadTamaguiSync)(props));
|
|
66
|
+
return isFullyDisabled(props) ? null : projectInfo ||= (0, import_loadTamagui.loadTamaguiSync)(props);
|
|
105
67
|
}
|
|
106
68
|
async function load(props) {
|
|
107
|
-
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
110
|
-
return projectInfo || (projectInfo = await (0, import_loadTamagui.loadTamagui)(props));
|
|
69
|
+
return isFullyDisabled(props) ? null : projectInfo ||= await (0, import_loadTamagui.loadTamagui)(props);
|
|
111
70
|
}
|
|
112
71
|
return {
|
|
113
72
|
options: {
|
|
@@ -117,7 +76,7 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
117
76
|
loadTamagui: load,
|
|
118
77
|
loadTamaguiSync: loadSync,
|
|
119
78
|
getTamagui() {
|
|
120
|
-
return projectInfo
|
|
79
|
+
return projectInfo?.tamaguiConfig;
|
|
121
80
|
},
|
|
122
81
|
parseSync: (f, props) => {
|
|
123
82
|
const projectInfo2 = loadSync(props);
|
|
@@ -129,11 +88,10 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
129
88
|
}
|
|
130
89
|
};
|
|
131
90
|
function parseWithConfig({ components, tamaguiConfig }, fileOrPath, options) {
|
|
132
|
-
var _a;
|
|
133
91
|
const {
|
|
134
92
|
config = "tamagui.config.ts",
|
|
135
93
|
importsWhitelist = ["constants.js"],
|
|
136
|
-
evaluateVars =
|
|
94
|
+
evaluateVars = !0,
|
|
137
95
|
sourcePath = "",
|
|
138
96
|
onExtractTag,
|
|
139
97
|
onStyleRule,
|
|
@@ -145,183 +103,111 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
145
103
|
disableDebugAttr,
|
|
146
104
|
disableExtractFoundComponents,
|
|
147
105
|
includeExtensions = [".ts", ".tsx", ".jsx"],
|
|
148
|
-
extractStyledDefinitions =
|
|
106
|
+
extractStyledDefinitions = !1,
|
|
149
107
|
prefixLogs,
|
|
150
108
|
excludeProps,
|
|
151
109
|
target,
|
|
152
110
|
...restProps
|
|
153
|
-
} = options
|
|
154
|
-
|
|
155
|
-
|
|
111
|
+
} = options, {
|
|
112
|
+
expandStylesAndRemoveNullishValues,
|
|
113
|
+
getSplitStyles,
|
|
114
|
+
mediaQueryConfig,
|
|
115
|
+
propMapper,
|
|
116
|
+
proxyThemeVariables,
|
|
117
|
+
pseudoDescriptors
|
|
118
|
+
} = (0, import_requireTamaguiCore.requireTamaguiCore)(target === "html" ? "web" : "native");
|
|
119
|
+
let shouldPrintDebug = options.shouldPrintDebug || !1;
|
|
120
|
+
if (disable === !0 || Array.isArray(disable) && disable.includes(sourcePath))
|
|
156
121
|
return null;
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
logger.info(
|
|
166
|
-
`Ignoring file due to includeExtensions: ${sourcePath}, includeExtensions: ${includeExtensions.join(
|
|
167
|
-
", "
|
|
168
|
-
)}`
|
|
169
|
-
);
|
|
170
|
-
}
|
|
171
|
-
return null;
|
|
172
|
-
}
|
|
122
|
+
if (!isFullyDisabled(options) && !components)
|
|
123
|
+
throw new Error("Must provide components");
|
|
124
|
+
if (sourcePath && includeExtensions && !includeExtensions.some((ext) => sourcePath.endsWith(ext)))
|
|
125
|
+
return shouldPrintDebug && logger.info(
|
|
126
|
+
`Ignoring file due to includeExtensions: ${sourcePath}, includeExtensions: ${includeExtensions.join(
|
|
127
|
+
", "
|
|
128
|
+
)}`
|
|
129
|
+
), null;
|
|
173
130
|
function isValidStyleKey(name, staticConfig) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
if (target === "native" && name[0] === "$" && import_core_node.mediaQueryConfig[name.slice(1)]) {
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
|
-
return !!(((_a2 = staticConfig.validStyles) == null ? void 0 : _a2[name]) || import_core_node.pseudoDescriptors[name] || // dont disable variants or else you lose many things flattening
|
|
182
|
-
((_b = staticConfig.variants) == null ? void 0 : _b[name]) || ((_c = projectInfo == null ? void 0 : projectInfo.tamaguiConfig) == null ? void 0 : _c.shorthands[name]) || (name[0] === "$" ? !!import_core_node.mediaQueryConfig[name.slice(1)] : false));
|
|
131
|
+
if (!projectInfo)
|
|
132
|
+
throw new Error("Tamagui extractor not loaded yet");
|
|
133
|
+
return target === "native" && name[0] === "$" && mediaQueryConfig[name.slice(1)] ? !1 : !!(staticConfig.validStyles?.[name] || pseudoDescriptors[name] || // dont disable variants or else you lose many things flattening
|
|
134
|
+
staticConfig.variants?.[name] || projectInfo?.tamaguiConfig?.shorthands[name] || name[0] === "$" && mediaQueryConfig[name.slice(1)]);
|
|
183
135
|
}
|
|
184
|
-
const isTargetingHTML = target === "html"
|
|
185
|
-
const ogDebug = shouldPrintDebug;
|
|
186
|
-
const tm = (0, import_timer.timer)();
|
|
187
|
-
const propsWithFileInfo = {
|
|
136
|
+
const isTargetingHTML = target === "html", ogDebug = shouldPrintDebug, tm = (0, import_timer.timer)(), propsWithFileInfo = {
|
|
188
137
|
...options,
|
|
189
138
|
sourcePath,
|
|
190
139
|
allLoadedComponents: components ? [...components] : []
|
|
191
140
|
};
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
)
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
tm.mark("load-tamagui", !!shouldPrintDebug);
|
|
212
|
-
if (!isFullyDisabled(options)) {
|
|
213
|
-
if (!(tamaguiConfig == null ? void 0 : tamaguiConfig.themes)) {
|
|
214
|
-
console.error(
|
|
215
|
-
`\u26D4\uFE0F Error: Missing "themes" in your tamagui.config file, this may be due to duplicated dependency versions. Try out https://github.com/bmish/check-dependency-version-consistency to see if there are mis-matches, or search your lockfile.`
|
|
216
|
-
);
|
|
217
|
-
console.log(` Got config:`, tamaguiConfig);
|
|
218
|
-
process.exit(0);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
const firstThemeName = Object.keys((tamaguiConfig == null ? void 0 : tamaguiConfig.themes) || {})[0];
|
|
222
|
-
const firstTheme = (tamaguiConfig == null ? void 0 : tamaguiConfig.themes[firstThemeName]) || {};
|
|
223
|
-
if (!firstTheme || typeof firstTheme !== "object") {
|
|
224
|
-
console.error(`Missing theme, an error occurred when importing your config`);
|
|
225
|
-
console.log(`Got config:`, tamaguiConfig);
|
|
226
|
-
console.log(`Looking for theme:`, firstThemeName);
|
|
227
|
-
process.exit(0);
|
|
228
|
-
}
|
|
229
|
-
const proxiedTheme = (0, import_core_node.proxyThemeVariables)(firstTheme);
|
|
230
|
-
const themeAccessListeners = /* @__PURE__ */ new Set();
|
|
231
|
-
const defaultTheme = new Proxy(proxiedTheme, {
|
|
141
|
+
hasLoggedBaseInfo || (hasLoggedBaseInfo = !0, shouldPrintDebug && logger.info(
|
|
142
|
+
[
|
|
143
|
+
"loaded components:",
|
|
144
|
+
propsWithFileInfo.allLoadedComponents.map((comp) => Object.keys(comp.nameToInfo).join(", ")).join(", ")
|
|
145
|
+
].join(" ")
|
|
146
|
+
), process.env.DEBUG?.startsWith("tamagui") && logger.info(
|
|
147
|
+
[
|
|
148
|
+
"loaded:",
|
|
149
|
+
JSON.stringify(propsWithFileInfo.allLoadedComponents, null, 2)
|
|
150
|
+
].join(`
|
|
151
|
+
`)
|
|
152
|
+
)), tm.mark("load-tamagui", !!shouldPrintDebug), isFullyDisabled(options) || tamaguiConfig?.themes || (console.error(
|
|
153
|
+
'\u26D4\uFE0F Error: Missing "themes" in your tamagui.config file, this may be due to duplicated dependency versions. Try out https://github.com/bmish/check-dependency-version-consistency to see if there are mis-matches, or search your lockfile.'
|
|
154
|
+
), console.log(" Got config:", tamaguiConfig), process.exit(0));
|
|
155
|
+
const firstThemeName = Object.keys(tamaguiConfig?.themes || {})[0], firstTheme = tamaguiConfig?.themes[firstThemeName] || {};
|
|
156
|
+
(!firstTheme || typeof firstTheme != "object") && (console.error("Missing theme, an error occurred when importing your config"), console.log("Got config:", tamaguiConfig), console.log("Looking for theme:", firstThemeName), process.exit(0));
|
|
157
|
+
const proxiedTheme = proxyThemeVariables(firstTheme), themeAccessListeners = /* @__PURE__ */ new Set(), defaultTheme = new Proxy(proxiedTheme, {
|
|
232
158
|
get(target2, key) {
|
|
233
|
-
|
|
234
|
-
themeAccessListeners.forEach((cb) => cb(String(key)));
|
|
235
|
-
}
|
|
236
|
-
return Reflect.get(target2, key);
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
const body = fileOrPath.type === "Program" ? fileOrPath.get("body") : fileOrPath.program.body;
|
|
240
|
-
if (!isFullyDisabled(options)) {
|
|
241
|
-
if (Object.keys(components || []).length === 0) {
|
|
242
|
-
console.warn(
|
|
243
|
-
`Warning: Tamagui didn't find any valid components (DEBUG=tamagui for more)`
|
|
244
|
-
);
|
|
245
|
-
if (process.env.DEBUG === "tamagui") {
|
|
246
|
-
console.log(`components`, Object.keys(components || []), components);
|
|
247
|
-
}
|
|
159
|
+
return Reflect.has(target2, key) && themeAccessListeners.forEach((cb) => cb(String(key))), Reflect.get(target2, key);
|
|
248
160
|
}
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
)
|
|
254
|
-
|
|
255
|
-
let doesUseValidImport =
|
|
256
|
-
let hasImportedTheme = false;
|
|
161
|
+
}), body = fileOrPath.type === "Program" ? fileOrPath.get("body") : fileOrPath.program.body;
|
|
162
|
+
isFullyDisabled(options) || Object.keys(components || []).length === 0 && (console.warn(
|
|
163
|
+
"Warning: Tamagui didn't find any valid components (DEBUG=tamagui for more)"
|
|
164
|
+
), process.env.DEBUG === "tamagui" && console.log("components", Object.keys(components || []), components)), shouldPrintDebug === "verbose" && logger.info(
|
|
165
|
+
`allLoadedComponent modules ${propsWithFileInfo.allLoadedComponents.map((k) => k.moduleName).join(", ")}`
|
|
166
|
+
);
|
|
167
|
+
let doesUseValidImport = !1, hasImportedTheme = !1;
|
|
257
168
|
const importDeclarations = [];
|
|
258
169
|
for (const bodyPath of body) {
|
|
259
170
|
if (bodyPath.type !== "ImportDeclaration")
|
|
260
171
|
continue;
|
|
261
|
-
const node = "node" in bodyPath ? bodyPath.node : bodyPath;
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
importDeclarations.push(node);
|
|
266
|
-
}
|
|
267
|
-
if (extractStyledDefinitions) {
|
|
268
|
-
if (valid) {
|
|
269
|
-
if (node.specifiers.some((specifier) => specifier.local.name === "styled")) {
|
|
270
|
-
doesUseValidImport = true;
|
|
271
|
-
break;
|
|
272
|
-
}
|
|
273
|
-
}
|
|
172
|
+
const node = "node" in bodyPath ? bodyPath.node : bodyPath, moduleName = node.source.value, valid = (0, import_extractHelpers.isValidImport)(propsWithFileInfo, moduleName);
|
|
173
|
+
if (valid && importDeclarations.push(node), extractStyledDefinitions && valid && node.specifiers.some((specifier) => specifier.local.name === "styled")) {
|
|
174
|
+
doesUseValidImport = !0;
|
|
175
|
+
break;
|
|
274
176
|
}
|
|
275
177
|
if (valid) {
|
|
276
|
-
const names = node.specifiers.map((specifier) => specifier.local.name)
|
|
277
|
-
|
|
278
|
-
(name) => Boolean((0, import_extractHelpers.isValidImport)(propsWithFileInfo, moduleName, name) || validHooks[name])
|
|
178
|
+
const names = node.specifiers.map((specifier) => specifier.local.name), isValidComponent = names.some(
|
|
179
|
+
(name) => !!((0, import_extractHelpers.isValidImport)(propsWithFileInfo, moduleName, name) || validHooks[name])
|
|
279
180
|
);
|
|
280
|
-
if (shouldPrintDebug === "verbose"
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
}
|
|
289
|
-
if (isValidComponent) {
|
|
290
|
-
doesUseValidImport = true;
|
|
181
|
+
if (shouldPrintDebug === "verbose" && logger.info(
|
|
182
|
+
` - import ${isValidComponent ? "\u2705" : "\u21E3"} - ${names.join(
|
|
183
|
+
", "
|
|
184
|
+
)} from '${moduleName}' - (valid: ${JSON.stringify(
|
|
185
|
+
(0, import_extractHelpers.getValidComponentsPaths)(propsWithFileInfo)
|
|
186
|
+
)})`
|
|
187
|
+
), isValidComponent) {
|
|
188
|
+
doesUseValidImport = !0;
|
|
291
189
|
break;
|
|
292
190
|
}
|
|
293
191
|
}
|
|
294
192
|
}
|
|
295
|
-
if (shouldPrintDebug
|
|
296
|
-
|
|
297
|
-
`${JSON.stringify({ doesUseValidImport, hasImportedTheme }, null, 2)}
|
|
193
|
+
if (shouldPrintDebug && logger.info(
|
|
194
|
+
`${JSON.stringify({ doesUseValidImport, hasImportedTheme }, null, 2)}
|
|
298
195
|
`
|
|
299
|
-
|
|
300
|
-
}
|
|
301
|
-
if (!doesUseValidImport) {
|
|
196
|
+
), !doesUseValidImport)
|
|
302
197
|
return null;
|
|
303
|
-
}
|
|
304
198
|
function getValidImportedComponent(componentName) {
|
|
305
199
|
const importDeclaration = importDeclarations.find(
|
|
306
200
|
(dec) => dec.specifiers.some((spec) => spec.local.name === componentName)
|
|
307
201
|
);
|
|
308
|
-
|
|
309
|
-
return null;
|
|
310
|
-
}
|
|
311
|
-
return (0, import_extractHelpers.getValidImport)(
|
|
202
|
+
return importDeclaration ? (0, import_extractHelpers.getValidImport)(
|
|
312
203
|
propsWithFileInfo,
|
|
313
204
|
importDeclaration.source.value,
|
|
314
205
|
componentName
|
|
315
|
-
);
|
|
206
|
+
) : null;
|
|
316
207
|
}
|
|
317
208
|
tm.mark("import-check", !!shouldPrintDebug);
|
|
318
|
-
let couldntParse =
|
|
319
|
-
const modifiedComponents = /* @__PURE__ */ new Set();
|
|
320
|
-
const bindingCache = {};
|
|
321
|
-
const callTraverse = (a) => {
|
|
322
|
-
return fileOrPath.type === "File" ? (0, import_traverse.default)(fileOrPath, a) : fileOrPath.traverse(a);
|
|
323
|
-
};
|
|
324
|
-
const shouldDisableExtraction = disableExtraction === true || Array.isArray(disableExtraction) && disableExtraction.includes(sourcePath);
|
|
209
|
+
let couldntParse = !1;
|
|
210
|
+
const modifiedComponents = /* @__PURE__ */ new Set(), bindingCache = {}, callTraverse = (a) => fileOrPath.type === "File" ? (0, import_traverse.default)(fileOrPath, a) : fileOrPath.traverse(a), shouldDisableExtraction = disableExtraction === !0 || Array.isArray(disableExtraction) && disableExtraction.includes(sourcePath);
|
|
325
211
|
let programPath = null;
|
|
326
212
|
const res = {
|
|
327
213
|
styled: 0,
|
|
@@ -330,7 +216,7 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
330
216
|
modified: 0,
|
|
331
217
|
found: 0
|
|
332
218
|
};
|
|
333
|
-
callTraverse({
|
|
219
|
+
if (callTraverse({
|
|
334
220
|
// @ts-ignore
|
|
335
221
|
Program: {
|
|
336
222
|
enter(path) {
|
|
@@ -339,28 +225,17 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
339
225
|
},
|
|
340
226
|
// styled() calls
|
|
341
227
|
CallExpression(path) {
|
|
342
|
-
|
|
343
|
-
if (disable || shouldDisableExtraction || extractStyledDefinitions === false) {
|
|
228
|
+
if (disable || shouldDisableExtraction || extractStyledDefinitions === !1 || !t.isIdentifier(path.node.callee) || path.node.callee.name !== "styled")
|
|
344
229
|
return;
|
|
345
|
-
|
|
346
|
-
if (!t.isIdentifier(
|
|
230
|
+
const variableName = t.isVariableDeclarator(path.parent) && t.isIdentifier(path.parent.id) ? path.parent.id.name : "unknown", parentNode = path.node.arguments[0];
|
|
231
|
+
if (!t.isIdentifier(parentNode))
|
|
347
232
|
return;
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
const parentNode = path.node.arguments[0];
|
|
351
|
-
if (!t.isIdentifier(parentNode)) {
|
|
352
|
-
return;
|
|
353
|
-
}
|
|
354
|
-
const parentName = parentNode.name;
|
|
355
|
-
const definition = path.node.arguments[1];
|
|
356
|
-
if (!parentName || !definition || !t.isObjectExpression(definition)) {
|
|
233
|
+
const parentName = parentNode.name, definition = path.node.arguments[1];
|
|
234
|
+
if (!parentName || !definition || !t.isObjectExpression(definition))
|
|
357
235
|
return;
|
|
358
|
-
}
|
|
359
236
|
const Component = getValidImportedComponent(parentName);
|
|
360
237
|
if (!Component) {
|
|
361
|
-
|
|
362
|
-
logger.info(` No component found`);
|
|
363
|
-
}
|
|
238
|
+
shouldPrintDebug && logger.info(" No component found");
|
|
364
239
|
return;
|
|
365
240
|
}
|
|
366
241
|
const componentSkipProps = /* @__PURE__ */ new Set([
|
|
@@ -376,39 +251,30 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
376
251
|
"focusStyle",
|
|
377
252
|
"hoverStyle",
|
|
378
253
|
"pressStyle"
|
|
379
|
-
])
|
|
380
|
-
const skipped = /* @__PURE__ */ new Set();
|
|
381
|
-
const styles = {};
|
|
382
|
-
const staticNamespace = (0, import_getStaticBindingsForScope.getStaticBindingsForScope)(
|
|
254
|
+
]), skipped = /* @__PURE__ */ new Set(), styles = {}, staticNamespace = (0, import_getStaticBindingsForScope.getStaticBindingsForScope)(
|
|
383
255
|
path.scope,
|
|
384
256
|
importsWhitelist,
|
|
385
257
|
sourcePath,
|
|
386
258
|
bindingCache,
|
|
387
259
|
shouldPrintDebug
|
|
388
|
-
)
|
|
389
|
-
const attemptEval = !evaluateVars ? import_evaluateAstNode.evaluateAstNode : (0, import_createEvaluator.createEvaluator)({
|
|
260
|
+
), attemptEval = evaluateVars ? (0, import_createEvaluator.createEvaluator)({
|
|
390
261
|
props: propsWithFileInfo,
|
|
391
262
|
staticNamespace,
|
|
392
263
|
sourcePath,
|
|
393
264
|
shouldPrintDebug
|
|
394
|
-
});
|
|
395
|
-
const attemptEvalSafe = (0, import_createEvaluator.createSafeEvaluator)(attemptEval);
|
|
265
|
+
}) : import_evaluateAstNode.evaluateAstNode, attemptEvalSafe = (0, import_createEvaluator.createSafeEvaluator)(attemptEval);
|
|
396
266
|
for (const property of definition.properties) {
|
|
397
267
|
if (!t.isObjectProperty(property) || !t.isIdentifier(property.key) || !isValidStyleKey(property.key.name, Component.staticConfig) || // TODO make pseudos and variants work
|
|
398
268
|
// skip pseudos
|
|
399
|
-
|
|
400
|
-
|
|
269
|
+
pseudoDescriptors[property.key.name] || // skip variants
|
|
270
|
+
Component.staticConfig.variants?.[property.key.name] || componentSkipProps.has(property.key.name)) {
|
|
401
271
|
skipped.add(property);
|
|
402
272
|
continue;
|
|
403
273
|
}
|
|
404
274
|
const out2 = attemptEvalSafe(property.value);
|
|
405
|
-
|
|
406
|
-
skipped.add(property);
|
|
407
|
-
} else {
|
|
408
|
-
styles[property.key.name] = out2;
|
|
409
|
-
}
|
|
275
|
+
out2 === import_constants.FAILED_EVAL ? skipped.add(property) : styles[property.key.name] = out2;
|
|
410
276
|
}
|
|
411
|
-
const out =
|
|
277
|
+
const out = getSplitStyles(
|
|
412
278
|
styles,
|
|
413
279
|
Component.staticConfig,
|
|
414
280
|
defaultTheme,
|
|
@@ -419,134 +285,82 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
419
285
|
void 0,
|
|
420
286
|
void 0,
|
|
421
287
|
shouldPrintDebug
|
|
422
|
-
)
|
|
423
|
-
const classNames = {
|
|
288
|
+
), classNames = {
|
|
424
289
|
...out.classNames
|
|
425
290
|
};
|
|
426
|
-
if (shouldPrintDebug
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
`Extracted styled(${variableName})
|
|
291
|
+
if (shouldPrintDebug && logger.info(
|
|
292
|
+
[
|
|
293
|
+
`Extracted styled(${variableName})
|
|
430
294
|
`,
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
295
|
+
JSON.stringify(styles, null, 2),
|
|
296
|
+
`
|
|
297
|
+
classNames:`,
|
|
298
|
+
JSON.stringify(classNames, null, 2),
|
|
299
|
+
`
|
|
300
|
+
rulesToInsert:`,
|
|
301
|
+
out.rulesToInsert.flatMap((rule) => rule.rules).join(`
|
|
302
|
+
`)
|
|
303
|
+
].join(" ")
|
|
304
|
+
), definition.properties = definition.properties.map((prop) => {
|
|
305
|
+
if (skipped.has(prop) || !t.isObjectProperty(prop) || !t.isIdentifier(prop.key))
|
|
441
306
|
return prop;
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
return prop;
|
|
449
|
-
});
|
|
450
|
-
if (out.rulesToInsert) {
|
|
451
|
-
for (const { identifier, rules } of out.rulesToInsert) {
|
|
452
|
-
onStyleRule == null ? void 0 : onStyleRule(identifier, rules);
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
res.styled++;
|
|
456
|
-
if (shouldPrintDebug) {
|
|
457
|
-
logger.info(`Extracted styled(${variableName})`);
|
|
458
|
-
}
|
|
307
|
+
const key = prop.key.name, value = classNames[key];
|
|
308
|
+
return value ? t.objectProperty(t.stringLiteral(key), t.stringLiteral(value)) : prop;
|
|
309
|
+
}), out.rulesToInsert)
|
|
310
|
+
for (const { identifier, rules } of out.rulesToInsert)
|
|
311
|
+
onStyleRule?.(identifier, rules);
|
|
312
|
+
res.styled++, shouldPrintDebug && logger.info(`Extracted styled(${variableName})`);
|
|
459
313
|
},
|
|
460
314
|
JSXElement(traversePath) {
|
|
461
|
-
var _a2;
|
|
462
315
|
tm.mark("jsx-element", !!shouldPrintDebug);
|
|
463
|
-
const node = traversePath.node.openingElement;
|
|
464
|
-
|
|
465
|
-
const componentName = (0, import_extractHelpers.findComponentName)(traversePath.scope);
|
|
466
|
-
const closingElement = traversePath.node.closingElement;
|
|
467
|
-
if (t.isJSXMemberExpression(closingElement == null ? void 0 : closingElement.name) || !t.isJSXIdentifier(node.name)) {
|
|
316
|
+
const node = traversePath.node.openingElement, ogAttributes = node.attributes.map((attr) => ({ ...attr })), componentName = (0, import_extractHelpers.findComponentName)(traversePath.scope), closingElement = traversePath.node.closingElement;
|
|
317
|
+
if (t.isJSXMemberExpression(closingElement?.name) || !t.isJSXIdentifier(node.name))
|
|
468
318
|
return;
|
|
469
|
-
}
|
|
470
319
|
const binding = traversePath.scope.getBinding(node.name.name);
|
|
471
320
|
let modulePath = "";
|
|
472
321
|
if (binding) {
|
|
473
322
|
if (!t.isImportDeclaration(binding.path.parent)) {
|
|
474
|
-
|
|
475
|
-
logger.info(` - Binding not import declaration, skip`);
|
|
476
|
-
}
|
|
323
|
+
shouldPrintDebug && logger.info(" - Binding not import declaration, skip");
|
|
477
324
|
return;
|
|
478
325
|
}
|
|
479
|
-
modulePath = binding.path.parent.source.value
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
` - Binding for ${componentName} not internal import or from components ${binding.identifier.name} in ${modulePath}`
|
|
484
|
-
);
|
|
485
|
-
}
|
|
326
|
+
if (modulePath = binding.path.parent.source.value, !(0, import_extractHelpers.isValidImport)(propsWithFileInfo, modulePath, binding.identifier.name)) {
|
|
327
|
+
shouldPrintDebug && logger.info(
|
|
328
|
+
` - Binding for ${componentName} not internal import or from components ${binding.identifier.name} in ${modulePath}`
|
|
329
|
+
);
|
|
486
330
|
return;
|
|
487
331
|
}
|
|
488
332
|
}
|
|
489
333
|
const component = (0, import_extractHelpers.getValidComponent)(propsWithFileInfo, modulePath, node.name.name);
|
|
490
334
|
if (!component || !component.staticConfig) {
|
|
491
|
-
|
|
492
|
-
logger.info(` - No Tamagui conf on this: ${node.name.name}`);
|
|
493
|
-
}
|
|
335
|
+
shouldPrintDebug && logger.info(` - No Tamagui conf on this: ${node.name.name}`);
|
|
494
336
|
return;
|
|
495
337
|
}
|
|
496
338
|
const originalNodeName = node.name.name;
|
|
497
339
|
res.found++;
|
|
498
|
-
const filePath = `./${(0, import_path.relative)(process.cwd(), sourcePath)}
|
|
499
|
-
const lineNumbers = node.loc ? node.loc.start.line + (node.loc.start.line !== node.loc.end.line ? `-${node.loc.end.line}` : "") : "";
|
|
500
|
-
const codePosition = `${filePath}:${lineNumbers}`;
|
|
501
|
-
const debugPropValue = node.attributes.filter(
|
|
340
|
+
const filePath = `./${(0, import_path.relative)(process.cwd(), sourcePath)}`, lineNumbers = node.loc ? node.loc.start.line + (node.loc.start.line !== node.loc.end.line ? `-${node.loc.end.line}` : "") : "", codePosition = `${filePath}:${lineNumbers}`, debugPropValue = node.attributes.filter(
|
|
502
341
|
(n) => t.isJSXAttribute(n) && t.isJSXIdentifier(n.name) && n.name.name === "debug"
|
|
503
|
-
).map((n) =>
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
);
|
|
518
|
-
logger.info(["\x1B[1m", "\x1B[32m", `<${originalNodeName} />`, disableDebugAttr ? "" : "\u{1F41B}"].join(" "));
|
|
519
|
-
}
|
|
520
|
-
if (shouldAddDebugProp && !disableDebugAttr) {
|
|
521
|
-
res.modified++;
|
|
522
|
-
node.attributes.unshift(
|
|
523
|
-
t.jsxAttribute(t.jsxIdentifier("data-is"), t.stringLiteral(node.name.name))
|
|
524
|
-
);
|
|
525
|
-
if (componentName) {
|
|
526
|
-
node.attributes.unshift(
|
|
527
|
-
t.jsxAttribute(t.jsxIdentifier("data-in"), t.stringLiteral(componentName))
|
|
528
|
-
);
|
|
529
|
-
}
|
|
530
|
-
node.attributes.unshift(
|
|
531
|
-
t.jsxAttribute(
|
|
532
|
-
t.jsxIdentifier("data-at"),
|
|
533
|
-
t.stringLiteral(`${(0, import_path.basename)(filePath)}:${lineNumbers}`)
|
|
534
|
-
)
|
|
535
|
-
);
|
|
536
|
-
}
|
|
537
|
-
if (shouldDisableExtraction) {
|
|
538
|
-
if (shouldPrintDebug === "verbose") {
|
|
539
|
-
console.log(` Extraction disabled`);
|
|
540
|
-
}
|
|
342
|
+
).map((n) => n.value === null ? !0 : t.isStringLiteral(n.value) ? n.value.value : !1)[0];
|
|
343
|
+
if (debugPropValue && (shouldPrintDebug = debugPropValue), shouldPrintDebug && (logger.info(`
|
|
344
|
+
`), logger.info(
|
|
345
|
+
`\x1B[33m%s\x1B[0m ${componentName} | ${codePosition} -------------------`
|
|
346
|
+
), logger.info(["\x1B[1m", "\x1B[32m", `<${originalNodeName} />`, disableDebugAttr ? "" : "\u{1F41B}"].join(" "))), shouldAddDebugProp && !disableDebugAttr && (res.modified++, node.attributes.unshift(
|
|
347
|
+
t.jsxAttribute(t.jsxIdentifier("data-is"), t.stringLiteral(node.name.name))
|
|
348
|
+
), componentName && node.attributes.unshift(
|
|
349
|
+
t.jsxAttribute(t.jsxIdentifier("data-in"), t.stringLiteral(componentName))
|
|
350
|
+
), node.attributes.unshift(
|
|
351
|
+
t.jsxAttribute(
|
|
352
|
+
t.jsxIdentifier("data-at"),
|
|
353
|
+
t.stringLiteral(`${(0, import_path.basename)(filePath)}:${lineNumbers}`)
|
|
354
|
+
)
|
|
355
|
+
)), shouldDisableExtraction) {
|
|
356
|
+
shouldPrintDebug === "verbose" && console.log(" Extraction disabled");
|
|
541
357
|
return;
|
|
542
358
|
}
|
|
543
359
|
try {
|
|
544
|
-
let
|
|
545
|
-
const attribute = path.node;
|
|
546
|
-
const attr = { type: "attr", value: attribute };
|
|
360
|
+
let evaluateAttribute = function(path) {
|
|
361
|
+
const attribute = path.node, attr = { type: "attr", value: attribute };
|
|
547
362
|
if (t.isJSXSpreadAttribute(attribute)) {
|
|
548
|
-
const arg = attribute.argument
|
|
549
|
-
const conditional = t.isConditionalExpression(arg) ? (
|
|
363
|
+
const arg = attribute.argument, conditional = t.isConditionalExpression(arg) ? (
|
|
550
364
|
// <YStack {...isSmall ? { color: 'red } : { color: 'blue }}
|
|
551
365
|
[arg.test, arg.consequent, arg.alternate]
|
|
552
366
|
) : t.isLogicalExpression(arg) && arg.operator === "&&" ? (
|
|
@@ -556,16 +370,10 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
556
370
|
if (conditional) {
|
|
557
371
|
const [test, alt, cons] = conditional;
|
|
558
372
|
if (!test)
|
|
559
|
-
throw new Error(
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
}
|
|
564
|
-
return attr;
|
|
565
|
-
}
|
|
566
|
-
return [
|
|
567
|
-
...createTernariesFromObjectProperties2(test, alt) || [],
|
|
568
|
-
...cons && createTernariesFromObjectProperties2(
|
|
373
|
+
throw new Error("no test");
|
|
374
|
+
return [alt, cons].some((side) => side && !isStaticObject(side)) ? (shouldPrintDebug && logger.info(`not extractable ${alt} ${cons}`), attr) : [
|
|
375
|
+
...createTernariesFromObjectProperties(test, alt) || [],
|
|
376
|
+
...cons && createTernariesFromObjectProperties(
|
|
569
377
|
t.unaryExpression("!", test),
|
|
570
378
|
cons
|
|
571
379
|
) || []
|
|
@@ -575,209 +383,92 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
575
383
|
}));
|
|
576
384
|
}
|
|
577
385
|
}
|
|
578
|
-
if (t.isJSXSpreadAttribute(attribute) || !attribute.name || typeof attribute.name.name
|
|
579
|
-
|
|
580
|
-
logger.info(" ! inlining, spread attr");
|
|
581
|
-
}
|
|
582
|
-
inlined.set(`${Math.random()}`, "spread");
|
|
583
|
-
return attr;
|
|
584
|
-
}
|
|
386
|
+
if (t.isJSXSpreadAttribute(attribute) || !attribute.name || typeof attribute.name.name != "string")
|
|
387
|
+
return shouldPrintDebug && logger.info(" ! inlining, spread attr"), inlined.set(`${Math.random()}`, "spread"), attr;
|
|
585
388
|
const name = attribute.name.name;
|
|
586
|
-
if (excludeProps
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
if (
|
|
593
|
-
inlined.set(name, name);
|
|
594
|
-
if (shouldPrintDebug) {
|
|
595
|
-
logger.info([" ! inlining, inline prop", name].join(" "));
|
|
596
|
-
}
|
|
597
|
-
return attr;
|
|
598
|
-
}
|
|
599
|
-
if (deoptProps.has(name)) {
|
|
600
|
-
shouldDeopt = true;
|
|
601
|
-
inlined.set(name, name);
|
|
602
|
-
if (shouldPrintDebug) {
|
|
603
|
-
logger.info([" ! inlining, deopted prop", name].join(" "));
|
|
604
|
-
}
|
|
605
|
-
return attr;
|
|
606
|
-
}
|
|
607
|
-
if (UNTOUCHED_PROPS[name]) {
|
|
389
|
+
if (excludeProps?.has(name))
|
|
390
|
+
return shouldPrintDebug && logger.info([" excluding prop", name].join(" ")), null;
|
|
391
|
+
if (inlineProps.has(name))
|
|
392
|
+
return inlined.set(name, name), shouldPrintDebug && logger.info([" ! inlining, inline prop", name].join(" ")), attr;
|
|
393
|
+
if (deoptProps.has(name))
|
|
394
|
+
return shouldDeopt = !0, inlined.set(name, name), shouldPrintDebug && logger.info([" ! inlining, deopted prop", name].join(" ")), attr;
|
|
395
|
+
if (UNTOUCHED_PROPS[name])
|
|
608
396
|
return attr;
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
return attr;
|
|
613
|
-
}
|
|
614
|
-
if (name.startsWith("data-")) {
|
|
397
|
+
if (INLINE_EXTRACTABLE[name])
|
|
398
|
+
return inlined.set(name, INLINE_EXTRACTABLE[name]), attr;
|
|
399
|
+
if (name.startsWith("data-"))
|
|
615
400
|
return attr;
|
|
616
|
-
|
|
617
|
-
if (name[0] === "$" && t.isJSXExpressionContainer(attribute == null ? void 0 : attribute.value)) {
|
|
401
|
+
if (name[0] === "$" && t.isJSXExpressionContainer(attribute?.value)) {
|
|
618
402
|
const shortname = name.slice(1);
|
|
619
|
-
if (
|
|
620
|
-
if (target === "native")
|
|
621
|
-
shouldDeopt = true;
|
|
622
|
-
}
|
|
623
|
-
if (disableExtractInlineMedia) {
|
|
403
|
+
if (mediaQueryConfig[shortname]) {
|
|
404
|
+
if (target === "native" && (shouldDeopt = !0), disableExtractInlineMedia)
|
|
624
405
|
return attr;
|
|
625
|
-
}
|
|
626
406
|
const expression = attribute.value.expression;
|
|
627
407
|
if (!t.isJSXEmptyExpression(expression)) {
|
|
628
|
-
const ternaries2 =
|
|
408
|
+
const ternaries2 = createTernariesFromObjectProperties(
|
|
629
409
|
t.stringLiteral(shortname),
|
|
630
410
|
expression,
|
|
631
411
|
{
|
|
632
412
|
inlineMediaQuery: shortname
|
|
633
413
|
}
|
|
634
414
|
);
|
|
635
|
-
if (ternaries2)
|
|
415
|
+
if (ternaries2)
|
|
636
416
|
return ternaries2.map((value2) => ({
|
|
637
417
|
type: "ternary",
|
|
638
418
|
value: value2
|
|
639
419
|
}));
|
|
640
|
-
}
|
|
641
420
|
}
|
|
642
421
|
}
|
|
643
422
|
}
|
|
644
|
-
const [value, valuePath] = (() => {
|
|
645
|
-
if (t.isJSXExpressionContainer(attribute == null ? void 0 : attribute.value)) {
|
|
646
|
-
return [attribute.value.expression, path.get("value")];
|
|
647
|
-
} else {
|
|
648
|
-
return [attribute.value, path.get("value")];
|
|
649
|
-
}
|
|
650
|
-
})();
|
|
651
|
-
const remove = () => {
|
|
423
|
+
const [value, valuePath] = (() => t.isJSXExpressionContainer(attribute?.value) ? [attribute.value.expression, path.get("value")] : [attribute.value, path.get("value")])(), remove = () => {
|
|
652
424
|
Array.isArray(valuePath) ? valuePath.map((p) => p.remove()) : valuePath.remove();
|
|
653
425
|
};
|
|
654
|
-
if (name === "ref")
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
}
|
|
658
|
-
inlined.set("ref", "ref");
|
|
659
|
-
return attr;
|
|
660
|
-
}
|
|
661
|
-
if (name === "tag") {
|
|
426
|
+
if (name === "ref")
|
|
427
|
+
return shouldPrintDebug && logger.info([" ! inlining, ref", name].join(" ")), inlined.set("ref", "ref"), attr;
|
|
428
|
+
if (name === "tag")
|
|
662
429
|
return {
|
|
663
430
|
type: "attr",
|
|
664
431
|
value: path.node
|
|
665
432
|
};
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
].join(" ")
|
|
676
|
-
);
|
|
677
|
-
}
|
|
678
|
-
inlined.set(name, true);
|
|
679
|
-
return attr;
|
|
680
|
-
}
|
|
681
|
-
}
|
|
682
|
-
}
|
|
683
|
-
if (name === "theme") {
|
|
684
|
-
inlined.set("theme", attr.value);
|
|
685
|
-
return attr;
|
|
686
|
-
}
|
|
433
|
+
if (disableExtractVariables === !0 && value && value.type === "StringLiteral" && value.value[0] === "$")
|
|
434
|
+
return shouldPrintDebug && logger.info(
|
|
435
|
+
[
|
|
436
|
+
` ! inlining, native disable extract: ${name} =`,
|
|
437
|
+
value.value
|
|
438
|
+
].join(" ")
|
|
439
|
+
), inlined.set(name, !0), attr;
|
|
440
|
+
if (name === "theme")
|
|
441
|
+
return inlined.set("theme", attr.value), attr;
|
|
687
442
|
const styleValue = attemptEvalSafe(value);
|
|
688
443
|
if (!variants[name] && !isValidStyleKey(name, staticConfig)) {
|
|
689
|
-
let keys = [name];
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
if (out) {
|
|
693
|
-
if (!Array.isArray(out)) {
|
|
694
|
-
logger.warn(`Error expected array but got`, out);
|
|
695
|
-
couldntParse = true;
|
|
696
|
-
shouldDeopt = true;
|
|
697
|
-
} else {
|
|
698
|
-
out = Object.fromEntries(out);
|
|
699
|
-
keys = Object.keys(out);
|
|
700
|
-
}
|
|
701
|
-
}
|
|
702
|
-
if (out) {
|
|
703
|
-
if (isTargetingHTML) {
|
|
704
|
-
out = (0, import_react_native_web_internals.createDOMProps)(isTextView ? "span" : "div", out);
|
|
705
|
-
delete out.className;
|
|
706
|
-
}
|
|
707
|
-
keys = Object.keys(out);
|
|
708
|
-
}
|
|
709
|
-
let didInline = false;
|
|
444
|
+
let keys = [name], out = null;
|
|
445
|
+
out = propMapper(name, styleValue, propMapperStyleState), out && (Array.isArray(out) ? (out = Object.fromEntries(out), keys = Object.keys(out)) : (logger.warn("Error expected array but got", out), couldntParse = !0, shouldDeopt = !0)), out && (isTargetingHTML && (out = (0, import_react_native_web_internals.createDOMProps)(isTextView ? "span" : "div", out), delete out.className), keys = Object.keys(out));
|
|
446
|
+
let didInline = !1;
|
|
710
447
|
const attributes = keys.map((key) => {
|
|
711
448
|
const val = out[key];
|
|
712
|
-
|
|
713
|
-
if (isStyle) {
|
|
714
|
-
return {
|
|
715
|
-
type: "style",
|
|
716
|
-
value: { [key]: styleValue },
|
|
717
|
-
name: key,
|
|
718
|
-
attr: path.node
|
|
719
|
-
};
|
|
720
|
-
}
|
|
721
|
-
if (import_validHTMLAttributes.validHTMLAttributes[key] || key.startsWith("aria-") || key.startsWith("data-") || // this is debug stuff added by vite / new jsx transform
|
|
722
|
-
key === "__source" || key === "__self") {
|
|
723
|
-
return attr;
|
|
724
|
-
}
|
|
725
|
-
if (shouldPrintDebug) {
|
|
726
|
-
logger.info(" ! inlining, non-static " + key);
|
|
727
|
-
}
|
|
728
|
-
didInline = true;
|
|
729
|
-
inlined.set(key, val);
|
|
730
|
-
return val;
|
|
731
|
-
});
|
|
732
|
-
if (didInline) {
|
|
733
|
-
if (shouldPrintDebug) {
|
|
734
|
-
logger.info(` bailing flattening due to attributes ${attributes}`);
|
|
735
|
-
}
|
|
736
|
-
return attr;
|
|
737
|
-
}
|
|
738
|
-
return attributes;
|
|
739
|
-
}
|
|
740
|
-
if (styleValue !== import_constants.FAILED_EVAL) {
|
|
741
|
-
if (inlineWhenUnflattened.has(name)) {
|
|
742
|
-
inlineWhenUnflattenedOGVals[name] = { styleValue, attr };
|
|
743
|
-
}
|
|
744
|
-
if (isValidStyleKey(name, staticConfig)) {
|
|
745
|
-
if (shouldPrintDebug) {
|
|
746
|
-
logger.info(` style: ${name} = ${styleValue}`);
|
|
747
|
-
}
|
|
748
|
-
if (!(name in defaultProps)) {
|
|
749
|
-
if (!hasSetOptimized) {
|
|
750
|
-
res.optimized++;
|
|
751
|
-
hasSetOptimized = true;
|
|
752
|
-
}
|
|
753
|
-
}
|
|
754
|
-
return {
|
|
449
|
+
return isValidStyleKey(key, staticConfig) ? {
|
|
755
450
|
type: "style",
|
|
756
|
-
value: { [
|
|
757
|
-
name,
|
|
451
|
+
value: { [key]: styleValue },
|
|
452
|
+
name: key,
|
|
758
453
|
attr: path.node
|
|
759
|
-
}
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
}
|
|
764
|
-
inlined.set(name, true);
|
|
765
|
-
return attr;
|
|
766
|
-
}
|
|
454
|
+
} : import_validHTMLAttributes.validHTMLAttributes[key] || key.startsWith("aria-") || key.startsWith("data-") || // this is debug stuff added by vite / new jsx transform
|
|
455
|
+
key === "__source" || key === "__self" ? attr : (shouldPrintDebug && logger.info(" ! inlining, non-static " + key), didInline = !0, inlined.set(key, val), val);
|
|
456
|
+
});
|
|
457
|
+
return didInline ? (shouldPrintDebug && logger.info(` bailing flattening due to attributes ${attributes}`), attr) : attributes;
|
|
767
458
|
}
|
|
459
|
+
if (styleValue !== import_constants.FAILED_EVAL)
|
|
460
|
+
return inlineWhenUnflattened.has(name) && (inlineWhenUnflattenedOGVals[name] = { styleValue, attr }), isValidStyleKey(name, staticConfig) ? (shouldPrintDebug && logger.info(` style: ${name} = ${styleValue}`), name in defaultProps || hasSetOptimized || (res.optimized++, hasSetOptimized = !0), {
|
|
461
|
+
type: "style",
|
|
462
|
+
value: { [name]: styleValue },
|
|
463
|
+
name,
|
|
464
|
+
attr: path.node
|
|
465
|
+
}) : (variants[name] && variantValues.set(name, styleValue), inlined.set(name, !0), attr);
|
|
768
466
|
if (t.isBinaryExpression(value)) {
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
const rVal = attemptEvalSafe(right);
|
|
775
|
-
if (shouldPrintDebug) {
|
|
776
|
-
logger.info(
|
|
777
|
-
` evalBinaryExpression lVal ${String(lVal)}, rVal ${String(rVal)}`
|
|
778
|
-
);
|
|
779
|
-
}
|
|
780
|
-
if (lVal !== import_constants.FAILED_EVAL && t.isConditionalExpression(right)) {
|
|
467
|
+
shouldPrintDebug && logger.info(` binary expression ${name} = ${value}`);
|
|
468
|
+
const { operator, left, right } = value, lVal = attemptEvalSafe(left), rVal = attemptEvalSafe(right);
|
|
469
|
+
if (shouldPrintDebug && logger.info(
|
|
470
|
+
` evalBinaryExpression lVal ${String(lVal)}, rVal ${String(rVal)}`
|
|
471
|
+
), lVal !== import_constants.FAILED_EVAL && t.isConditionalExpression(right)) {
|
|
781
472
|
const ternary = addBinaryConditional(operator, left, right);
|
|
782
473
|
if (ternary)
|
|
783
474
|
return ternary;
|
|
@@ -787,43 +478,23 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
787
478
|
if (ternary)
|
|
788
479
|
return ternary;
|
|
789
480
|
}
|
|
790
|
-
|
|
791
|
-
logger.info(` evalBinaryExpression cant extract`);
|
|
792
|
-
}
|
|
793
|
-
inlined.set(name, true);
|
|
794
|
-
return attr;
|
|
481
|
+
return shouldPrintDebug && logger.info(" evalBinaryExpression cant extract"), inlined.set(name, !0), attr;
|
|
795
482
|
}
|
|
796
483
|
const staticConditional = getStaticConditional(value);
|
|
797
|
-
if (staticConditional)
|
|
798
|
-
|
|
799
|
-
logger.info(` static conditional ${name} ${value}`);
|
|
800
|
-
}
|
|
801
|
-
return { type: "ternary", value: staticConditional };
|
|
802
|
-
}
|
|
484
|
+
if (staticConditional)
|
|
485
|
+
return shouldPrintDebug === "verbose" && logger.info(` static conditional ${name} ${value}`), { type: "ternary", value: staticConditional };
|
|
803
486
|
const staticLogical = getStaticLogical(value);
|
|
804
|
-
if (staticLogical)
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
}
|
|
808
|
-
return { type: "ternary", value: staticLogical };
|
|
809
|
-
}
|
|
810
|
-
inlined.set(name, true);
|
|
811
|
-
if (shouldPrintDebug) {
|
|
812
|
-
logger.info(` ! inline no match ${name} ${value}`);
|
|
813
|
-
}
|
|
814
|
-
return attr;
|
|
487
|
+
if (staticLogical)
|
|
488
|
+
return shouldPrintDebug === "verbose" && logger.info(` static ternary ${name} = ${value}`), { type: "ternary", value: staticLogical };
|
|
489
|
+
return inlined.set(name, !0), shouldPrintDebug && logger.info(` ! inline no match ${name} ${value}`), attr;
|
|
815
490
|
function addBinaryConditional(operator, staticExpr, cond) {
|
|
816
491
|
if (getStaticConditional(cond)) {
|
|
817
492
|
const alt = attemptEval(
|
|
818
493
|
t.binaryExpression(operator, staticExpr, cond.alternate)
|
|
819
|
-
)
|
|
820
|
-
const cons = attemptEval(
|
|
494
|
+
), cons = attemptEval(
|
|
821
495
|
t.binaryExpression(operator, staticExpr, cond.consequent)
|
|
822
496
|
);
|
|
823
|
-
|
|
824
|
-
logger.info([" binaryConditional", cond.test, cons, alt].join(" "));
|
|
825
|
-
}
|
|
826
|
-
return {
|
|
497
|
+
return shouldPrintDebug && logger.info([" binaryConditional", cond.test, cons, alt].join(" ")), {
|
|
827
498
|
type: "ternary",
|
|
828
499
|
value: {
|
|
829
500
|
test: cond.test,
|
|
@@ -836,10 +507,9 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
836
507
|
return null;
|
|
837
508
|
}
|
|
838
509
|
function getStaticConditional(value2) {
|
|
839
|
-
if (t.isConditionalExpression(value2))
|
|
510
|
+
if (t.isConditionalExpression(value2))
|
|
840
511
|
try {
|
|
841
|
-
const aVal = attemptEval(value2.alternate);
|
|
842
|
-
const cVal = attemptEval(value2.consequent);
|
|
512
|
+
const aVal = attemptEval(value2.alternate), cVal = attemptEval(value2.consequent);
|
|
843
513
|
if (shouldPrintDebug) {
|
|
844
514
|
const type = value2.test.type;
|
|
845
515
|
logger.info([" static ternary", type, cVal, aVal].join(" "));
|
|
@@ -851,89 +521,61 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
851
521
|
alternate: { [name]: aVal }
|
|
852
522
|
};
|
|
853
523
|
} catch (err) {
|
|
854
|
-
|
|
855
|
-
logger.info([" cant eval ternary", err.message].join(" "));
|
|
856
|
-
}
|
|
524
|
+
shouldPrintDebug && logger.info([" cant eval ternary", err.message].join(" "));
|
|
857
525
|
}
|
|
858
|
-
}
|
|
859
526
|
return null;
|
|
860
527
|
}
|
|
861
528
|
function getStaticLogical(value2) {
|
|
862
|
-
if (t.isLogicalExpression(value2))
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
}
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
alternate: null
|
|
874
|
-
};
|
|
875
|
-
} catch (err) {
|
|
876
|
-
if (shouldPrintDebug) {
|
|
877
|
-
logger.info([" cant static eval logical", err].join(" "));
|
|
878
|
-
}
|
|
879
|
-
}
|
|
529
|
+
if (t.isLogicalExpression(value2) && value2.operator === "&&")
|
|
530
|
+
try {
|
|
531
|
+
const val = attemptEval(value2.right);
|
|
532
|
+
return shouldPrintDebug && logger.info([" staticLogical", value2.left, name, val].join(" ")), {
|
|
533
|
+
test: value2.left,
|
|
534
|
+
remove,
|
|
535
|
+
consequent: { [name]: val },
|
|
536
|
+
alternate: null
|
|
537
|
+
};
|
|
538
|
+
} catch (err) {
|
|
539
|
+
shouldPrintDebug && logger.info([" cant static eval logical", err].join(" "));
|
|
880
540
|
}
|
|
881
|
-
}
|
|
882
541
|
return null;
|
|
883
542
|
}
|
|
884
|
-
},
|
|
543
|
+
}, isStaticObject = function(obj) {
|
|
885
544
|
return t.isObjectExpression(obj) && obj.properties.every((prop) => {
|
|
886
|
-
if (!t.isObjectProperty(prop))
|
|
887
|
-
logger.info(["not object prop", prop].join(" "));
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
const propName = prop.key["name"];
|
|
891
|
-
if (!isValidStyleKey(propName, staticConfig) && propName !== "tag") {
|
|
892
|
-
if (shouldPrintDebug) {
|
|
893
|
-
logger.info([" not a valid style prop!", propName].join(" "));
|
|
894
|
-
}
|
|
895
|
-
return false;
|
|
896
|
-
}
|
|
897
|
-
return true;
|
|
545
|
+
if (!t.isObjectProperty(prop))
|
|
546
|
+
return logger.info(["not object prop", prop].join(" ")), !1;
|
|
547
|
+
const propName = prop.key.name;
|
|
548
|
+
return !isValidStyleKey(propName, staticConfig) && propName !== "tag" ? (shouldPrintDebug && logger.info([" not a valid style prop!", propName].join(" ")), !1) : !0;
|
|
898
549
|
});
|
|
899
|
-
},
|
|
900
|
-
if (!side)
|
|
550
|
+
}, createTernariesFromObjectProperties = function(test, side, ternaryPartial = {}) {
|
|
551
|
+
if (!side)
|
|
901
552
|
return null;
|
|
902
|
-
|
|
903
|
-
if (!isStaticObject2(side)) {
|
|
553
|
+
if (!isStaticObject(side))
|
|
904
554
|
throw new Error("not extractable");
|
|
905
|
-
}
|
|
906
555
|
return side.properties.flatMap((property) => {
|
|
907
|
-
if (!t.isObjectProperty(property))
|
|
556
|
+
if (!t.isObjectProperty(property))
|
|
908
557
|
throw new Error("expected object property");
|
|
909
|
-
}
|
|
910
558
|
if (t.isIdentifier(property.key)) {
|
|
911
|
-
const key = property.key.name;
|
|
912
|
-
|
|
913
|
-
const isMediaQuery = key[0] === "$" && import_core_node.mediaQueryConfig[mediaQueryKey];
|
|
914
|
-
if (isMediaQuery) {
|
|
559
|
+
const key = property.key.name, mediaQueryKey = key.slice(1);
|
|
560
|
+
if (key[0] === "$" && mediaQueryConfig[mediaQueryKey])
|
|
915
561
|
if (t.isExpression(property.value)) {
|
|
916
|
-
const ternaries2 =
|
|
562
|
+
const ternaries2 = createTernariesFromObjectProperties(
|
|
917
563
|
t.stringLiteral(mediaQueryKey),
|
|
918
564
|
property.value,
|
|
919
565
|
{
|
|
920
566
|
inlineMediaQuery: mediaQueryKey
|
|
921
567
|
}
|
|
922
568
|
);
|
|
923
|
-
if (ternaries2)
|
|
569
|
+
if (ternaries2)
|
|
924
570
|
return ternaries2.map((value) => ({
|
|
925
571
|
...ternaryPartial,
|
|
926
572
|
...value,
|
|
927
573
|
// ensure media query test stays on left side (see getMediaQueryTernary)
|
|
928
574
|
test: t.logicalExpression("&&", value.test, test)
|
|
929
575
|
}));
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
}
|
|
933
|
-
} else {
|
|
576
|
+
logger.info(["\u26A0\uFE0F no ternaries?", property].join(" "));
|
|
577
|
+
} else
|
|
934
578
|
logger.info(["\u26A0\uFE0F not expression", property].join(" "));
|
|
935
|
-
}
|
|
936
|
-
}
|
|
937
579
|
}
|
|
938
580
|
if (t.isConditionalExpression(property.value)) {
|
|
939
581
|
const [truthy, falsy] = [
|
|
@@ -969,8 +611,7 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
969
611
|
}
|
|
970
612
|
const obj = t.objectExpression([
|
|
971
613
|
t.objectProperty(property.key, property.value)
|
|
972
|
-
]);
|
|
973
|
-
const consequent = attemptEval(obj);
|
|
614
|
+
]), consequent = attemptEval(obj);
|
|
974
615
|
return createTernary({
|
|
975
616
|
remove() {
|
|
976
617
|
},
|
|
@@ -980,103 +621,67 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
980
621
|
alternate: null
|
|
981
622
|
});
|
|
982
623
|
});
|
|
983
|
-
},
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
}
|
|
987
|
-
obj[key] = val;
|
|
988
|
-
}, expandStylesAndRemoveNullishValuesWithoutVariants2 = function(style) {
|
|
624
|
+
}, mergeToEnd = function(obj, key, val) {
|
|
625
|
+
key in obj && delete obj[key], obj[key] = val;
|
|
626
|
+
}, expandStylesAndRemoveNullishValuesWithoutVariants = function(style) {
|
|
989
627
|
let res2 = {};
|
|
990
|
-
for (const key in style)
|
|
991
|
-
if (staticConfig.variants && key in staticConfig.variants)
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
const expanded =
|
|
995
|
-
for (const key2 in expanded)
|
|
996
|
-
|
|
997
|
-
}
|
|
628
|
+
for (const key in style)
|
|
629
|
+
if (staticConfig.variants && key in staticConfig.variants)
|
|
630
|
+
mergeToEnd(res2, key, style[key]);
|
|
631
|
+
else {
|
|
632
|
+
const expanded = expandStylesAndRemoveNullishValues({ [key]: style[key] });
|
|
633
|
+
for (const key2 in expanded)
|
|
634
|
+
mergeToEnd(res2, key2, expanded[key2]);
|
|
998
635
|
}
|
|
999
|
-
}
|
|
1000
636
|
return res2;
|
|
1001
|
-
},
|
|
1002
|
-
for (const key in next)
|
|
1003
|
-
|
|
1004
|
-
prev2[key] = prev2[key] || {};
|
|
1005
|
-
Object.assign(prev2[key], next[key]);
|
|
1006
|
-
} else {
|
|
1007
|
-
mergeToEnd2(prev2, key, next[key]);
|
|
1008
|
-
}
|
|
1009
|
-
}
|
|
637
|
+
}, mergeStyles = function(prev2, next) {
|
|
638
|
+
for (const key in next)
|
|
639
|
+
pseudoDescriptors[key] ? (prev2[key] = prev2[key] || {}, Object.assign(prev2[key], next[key])) : mergeToEnd(prev2, key, next[key]);
|
|
1010
640
|
};
|
|
1011
|
-
|
|
1012
|
-
const { staticConfig } = component;
|
|
1013
|
-
const defaultProps = { ...staticConfig.defaultProps || {} };
|
|
1014
|
-
const variants = staticConfig.variants || {};
|
|
1015
|
-
const isTextView = staticConfig.isText || false;
|
|
1016
|
-
const validStyles = (staticConfig == null ? void 0 : staticConfig.validStyles) ?? {};
|
|
641
|
+
const { staticConfig } = component, defaultProps = { ...staticConfig.defaultProps || {} }, variants = staticConfig.variants || {}, isTextView = staticConfig.isText || !1, validStyles = staticConfig?.validStyles ?? {};
|
|
1017
642
|
let tagName = defaultProps.tag ?? (isTextView ? "span" : "div");
|
|
1018
643
|
traversePath.get("openingElement").get("attributes").forEach((path) => {
|
|
1019
644
|
const attr = path.node;
|
|
1020
|
-
if (t.isJSXSpreadAttribute(attr))
|
|
1021
|
-
return;
|
|
1022
|
-
if (attr.name.name !== "tag")
|
|
645
|
+
if (t.isJSXSpreadAttribute(attr) || attr.name.name !== "tag")
|
|
1023
646
|
return;
|
|
1024
647
|
const val = attr.value;
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
});
|
|
1029
|
-
if (shouldPrintDebug === "verbose") {
|
|
1030
|
-
console.log(` Start tag ${tagName}`);
|
|
1031
|
-
}
|
|
1032
|
-
const flatNode = getFlattenedNode == null ? void 0 : getFlattenedNode({ isTextView, tag: tagName });
|
|
1033
|
-
const inlineProps = /* @__PURE__ */ new Set([
|
|
648
|
+
t.isStringLiteral(val) && (tagName = val.value);
|
|
649
|
+
}), shouldPrintDebug === "verbose" && console.log(` Start tag ${tagName}`);
|
|
650
|
+
const flatNode = getFlattenedNode?.({ isTextView, tag: tagName }), inlineProps = /* @__PURE__ */ new Set([
|
|
1034
651
|
// adding some always inline props
|
|
1035
652
|
"dataSet",
|
|
1036
653
|
...restProps.inlineProps || [],
|
|
1037
654
|
...staticConfig.inlineProps || []
|
|
1038
|
-
])
|
|
1039
|
-
const deoptProps = /* @__PURE__ */ new Set([
|
|
655
|
+
]), deoptProps = /* @__PURE__ */ new Set([
|
|
1040
656
|
// always de-opt animation these
|
|
1041
657
|
"animation",
|
|
1042
658
|
"disableOptimization",
|
|
1043
659
|
// when using a non-CSS driver, de-opt on enterStyle/exitStyle
|
|
1044
|
-
...
|
|
660
|
+
...tamaguiConfig?.animations.isReactNative ? ["enterStyle", "exitStyle"] : [],
|
|
1045
661
|
...restProps.deoptProps || [],
|
|
1046
662
|
...staticConfig.deoptProps || []
|
|
1047
|
-
])
|
|
1048
|
-
const inlineWhenUnflattened = /* @__PURE__ */ new Set([
|
|
663
|
+
]), inlineWhenUnflattened = /* @__PURE__ */ new Set([
|
|
1049
664
|
...staticConfig.inlineWhenUnflattened || []
|
|
1050
|
-
])
|
|
1051
|
-
const staticNamespace = (0, import_getStaticBindingsForScope.getStaticBindingsForScope)(
|
|
665
|
+
]), staticNamespace = (0, import_getStaticBindingsForScope.getStaticBindingsForScope)(
|
|
1052
666
|
traversePath.scope,
|
|
1053
667
|
importsWhitelist,
|
|
1054
668
|
sourcePath,
|
|
1055
669
|
bindingCache,
|
|
1056
670
|
shouldPrintDebug
|
|
1057
|
-
)
|
|
1058
|
-
const attemptEval = !evaluateVars ? import_evaluateAstNode.evaluateAstNode : (0, import_createEvaluator.createEvaluator)({
|
|
671
|
+
), attemptEval = evaluateVars ? (0, import_createEvaluator.createEvaluator)({
|
|
1059
672
|
props: propsWithFileInfo,
|
|
1060
673
|
staticNamespace,
|
|
1061
674
|
sourcePath,
|
|
1062
675
|
traversePath,
|
|
1063
676
|
shouldPrintDebug
|
|
1064
|
-
});
|
|
1065
|
-
|
|
1066
|
-
if (shouldPrintDebug) {
|
|
1067
|
-
logger.info(` staticNamespace ${Object.keys(staticNamespace).join(", ")}`);
|
|
1068
|
-
}
|
|
1069
|
-
if (couldntParse) {
|
|
677
|
+
}) : import_evaluateAstNode.evaluateAstNode, attemptEvalSafe = (0, import_createEvaluator.createSafeEvaluator)(attemptEval);
|
|
678
|
+
if (shouldPrintDebug && logger.info(` staticNamespace ${Object.keys(staticNamespace).join(", ")}`), couldntParse)
|
|
1070
679
|
return;
|
|
1071
|
-
}
|
|
1072
680
|
tm.mark("jsx-element-flattened", !!shouldPrintDebug);
|
|
1073
|
-
let attrs = [];
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
const
|
|
1077
|
-
let hasSetOptimized = false;
|
|
1078
|
-
const inlineWhenUnflattenedOGVals = {};
|
|
1079
|
-
const propMapperStyleState = {
|
|
681
|
+
let attrs = [], shouldDeopt = !1;
|
|
682
|
+
const inlined = /* @__PURE__ */ new Map(), variantValues = /* @__PURE__ */ new Map();
|
|
683
|
+
let hasSetOptimized = !1;
|
|
684
|
+
const inlineWhenUnflattenedOGVals = {}, propMapperStyleState = {
|
|
1080
685
|
staticConfig,
|
|
1081
686
|
usedKeys: {},
|
|
1082
687
|
classNames: {},
|
|
@@ -1093,342 +698,217 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
1093
698
|
},
|
|
1094
699
|
debug: shouldPrintDebug
|
|
1095
700
|
};
|
|
1096
|
-
attrs = traversePath.get("openingElement").get("attributes").flatMap((path) => {
|
|
1097
|
-
var _a3;
|
|
701
|
+
if (attrs = traversePath.get("openingElement").get("attributes").flatMap((path) => {
|
|
1098
702
|
try {
|
|
1099
|
-
const res2 =
|
|
1100
|
-
tm.mark("jsx-element-evaluate-attr", !!shouldPrintDebug);
|
|
1101
|
-
if (!res2) {
|
|
1102
|
-
path.remove();
|
|
1103
|
-
}
|
|
1104
|
-
return res2;
|
|
703
|
+
const res2 = evaluateAttribute(path);
|
|
704
|
+
return tm.mark("jsx-element-evaluate-attr", !!shouldPrintDebug), res2 || path.remove(), res2;
|
|
1105
705
|
} catch (err) {
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
);
|
|
1114
|
-
if (shouldPrintDebug === "verbose") {
|
|
1115
|
-
logger.info(`node ${(_a3 = path.node) == null ? void 0 : _a3.type}`);
|
|
1116
|
-
}
|
|
1117
|
-
}
|
|
1118
|
-
inlined.set(`${Math.random()}`, "spread");
|
|
1119
|
-
return {
|
|
706
|
+
return shouldPrintDebug && (logger.info(
|
|
707
|
+
[
|
|
708
|
+
"Recoverable error extracting attribute",
|
|
709
|
+
err.message,
|
|
710
|
+
shouldPrintDebug === "verbose" ? err.stack : ""
|
|
711
|
+
].join(" ")
|
|
712
|
+
), shouldPrintDebug === "verbose" && logger.info(`node ${path.node?.type}`)), inlined.set(`${Math.random()}`, "spread"), {
|
|
1120
713
|
type: "attr",
|
|
1121
714
|
value: path.node
|
|
1122
715
|
};
|
|
1123
716
|
}
|
|
1124
|
-
}).flat(4).filter(import_extractHelpers.isPresent)
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
if (shouldPrintDebug) {
|
|
1132
|
-
logger.info(
|
|
1133
|
-
[` avoid optimizing:`, { couldntParse, shouldDeopt }].join(" ")
|
|
1134
|
-
);
|
|
1135
|
-
}
|
|
1136
|
-
node.attributes = ogAttributes;
|
|
717
|
+
}).flat(4).filter(import_extractHelpers.isPresent), shouldPrintDebug && logger.info(
|
|
718
|
+
[` - attrs (before):
|
|
719
|
+
`, (0, import_logLines.logLines)(attrs.map(import_extractHelpers.attrStr).join(", "))].join(" ")
|
|
720
|
+
), couldntParse || shouldDeopt) {
|
|
721
|
+
shouldPrintDebug && logger.info(
|
|
722
|
+
[" avoid optimizing:", { couldntParse, shouldDeopt }].join(" ")
|
|
723
|
+
), node.attributes = ogAttributes;
|
|
1137
724
|
return;
|
|
1138
725
|
}
|
|
1139
726
|
const parentFn = (0, import_findTopmostFunction.findTopmostFunction)(traversePath);
|
|
1140
|
-
|
|
1141
|
-
modifiedComponents.add(parentFn);
|
|
1142
|
-
}
|
|
727
|
+
parentFn && modifiedComponents.add(parentFn);
|
|
1143
728
|
let ternaries = [];
|
|
1144
729
|
attrs = attrs.reduce((out, cur) => {
|
|
1145
730
|
const next = attrs[attrs.indexOf(cur) + 1];
|
|
1146
|
-
if (cur.type === "ternary") {
|
|
1147
|
-
ternaries.push(cur.value);
|
|
1148
|
-
}
|
|
1149
|
-
if ((!next || next.type !== "ternary") && ternaries.length) {
|
|
731
|
+
if (cur.type === "ternary" && ternaries.push(cur.value), (!next || next.type !== "ternary") && ternaries.length) {
|
|
1150
732
|
const normalized = (0, import_normalizeTernaries.normalizeTernaries)(ternaries).map(
|
|
1151
|
-
({ alternate, consequent, ...rest }) => {
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
};
|
|
1160
|
-
}
|
|
733
|
+
({ alternate, consequent, ...rest }) => ({
|
|
734
|
+
type: "ternary",
|
|
735
|
+
value: {
|
|
736
|
+
...rest,
|
|
737
|
+
alternate: alternate || null,
|
|
738
|
+
consequent: consequent || null
|
|
739
|
+
}
|
|
740
|
+
})
|
|
1161
741
|
);
|
|
1162
742
|
try {
|
|
1163
743
|
return [...out, ...normalized];
|
|
1164
744
|
} finally {
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
);
|
|
1169
|
-
}
|
|
1170
|
-
ternaries = [];
|
|
745
|
+
shouldPrintDebug && logger.info(
|
|
746
|
+
` normalizeTernaries (${ternaries.length} => ${normalized.length})`
|
|
747
|
+
), ternaries = [];
|
|
1171
748
|
}
|
|
1172
749
|
}
|
|
1173
|
-
|
|
1174
|
-
return out;
|
|
1175
|
-
}
|
|
1176
|
-
out.push(cur);
|
|
1177
|
-
return out;
|
|
750
|
+
return cur.type === "ternary" || out.push(cur), out;
|
|
1178
751
|
}, []).flat();
|
|
1179
752
|
const hasSpread = attrs.some(
|
|
1180
753
|
(x) => x.type === "attr" && t.isJSXSpreadAttribute(x.value)
|
|
1181
|
-
);
|
|
1182
|
-
|
|
1183
|
-
const themeVal = inlined.get("theme");
|
|
1184
|
-
if (target !== "native") {
|
|
1185
|
-
inlined.delete("theme");
|
|
1186
|
-
}
|
|
754
|
+
), hasOnlyStringChildren = !hasSpread && (node.selfClosing || traversePath.node.children && traversePath.node.children.every((x) => x.type === "JSXText")), themeVal = inlined.get("theme");
|
|
755
|
+
target !== "native" && inlined.delete("theme");
|
|
1187
756
|
for (const [key] of [...inlined]) {
|
|
1188
|
-
const isStaticObjectVariant =
|
|
1189
|
-
|
|
1190
|
-
inlined.delete(key);
|
|
1191
|
-
}
|
|
757
|
+
const isStaticObjectVariant = staticConfig.variants?.[key] && variantValues.has(key);
|
|
758
|
+
(INLINE_EXTRACTABLE[key] || isStaticObjectVariant) && inlined.delete(key);
|
|
1192
759
|
}
|
|
1193
760
|
const canFlattenProps = inlined.size === 0;
|
|
1194
|
-
let shouldFlatten =
|
|
1195
|
-
|
|
1196
|
-
)
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
if (disableExtractVariables) {
|
|
1200
|
-
themeAccessListeners.add((key) => {
|
|
1201
|
-
shouldFlatten = false;
|
|
1202
|
-
usedThemeKeys.add(key);
|
|
1203
|
-
if (shouldPrintDebug === "verbose") {
|
|
1204
|
-
logger.info([" ! accessing theme key, avoid flatten", key].join(" "));
|
|
1205
|
-
}
|
|
1206
|
-
});
|
|
1207
|
-
}
|
|
1208
|
-
if (shouldPrintDebug) {
|
|
761
|
+
let shouldFlatten = !!(flatNode && !shouldDeopt && canFlattenProps && !hasSpread && !staticConfig.isStyledHOC && !staticConfig.isHOC && !staticConfig.isReactNative && staticConfig.neverFlatten !== !0 && (staticConfig.neverFlatten !== "jsx" || hasOnlyStringChildren));
|
|
762
|
+
const shouldWrapTheme = shouldFlatten && themeVal, usedThemeKeys = /* @__PURE__ */ new Set();
|
|
763
|
+
if (disableExtractVariables && themeAccessListeners.add((key) => {
|
|
764
|
+
shouldFlatten = !1, usedThemeKeys.add(key), shouldPrintDebug === "verbose" && logger.info([" ! accessing theme key, avoid flatten", key].join(" "));
|
|
765
|
+
}), shouldPrintDebug)
|
|
1209
766
|
try {
|
|
1210
767
|
logger.info([" flatten?", shouldFlatten, (0, import_extractHelpers.objToStr)({ hasSpread, shouldDeopt, canFlattenProps, shouldWrapTheme, hasOnlyStringChildren }), "inlined", inlined.size, [...inlined]].join(" "));
|
|
1211
768
|
} catch {
|
|
1212
769
|
}
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
logger.info([" - wrapping theme", themeVal].join(" "));
|
|
1222
|
-
}
|
|
1223
|
-
attrs = attrs.filter(
|
|
1224
|
-
(x) => x.type === "attr" && t.isJSXAttribute(x.value) && x.value.name.name === "theme" ? false : true
|
|
1225
|
-
);
|
|
1226
|
-
if (!hasImportedTheme) {
|
|
1227
|
-
hasImportedTheme = true;
|
|
1228
|
-
programPath.node.body.push(
|
|
1229
|
-
t.importDeclaration(
|
|
1230
|
-
[
|
|
1231
|
-
t.importSpecifier(
|
|
1232
|
-
t.identifier("_TamaguiTheme"),
|
|
1233
|
-
t.identifier("Theme")
|
|
1234
|
-
)
|
|
1235
|
-
],
|
|
1236
|
-
t.stringLiteral("@tamagui/core")
|
|
1237
|
-
)
|
|
1238
|
-
);
|
|
1239
|
-
}
|
|
1240
|
-
traversePath.replaceWith(
|
|
1241
|
-
t.jsxElement(
|
|
1242
|
-
t.jsxOpeningElement(t.jsxIdentifier("_TamaguiTheme"), [
|
|
1243
|
-
t.jsxAttribute(t.jsxIdentifier("name"), themeVal.value)
|
|
1244
|
-
]),
|
|
1245
|
-
t.jsxClosingElement(t.jsxIdentifier("_TamaguiTheme")),
|
|
1246
|
-
[traversePath.node]
|
|
770
|
+
if (shouldFlatten && shouldWrapTheme && (programPath ? (shouldPrintDebug && logger.info([" - wrapping theme", themeVal].join(" ")), attrs = attrs.filter(
|
|
771
|
+
(x) => !(x.type === "attr" && t.isJSXAttribute(x.value) && x.value.name.name === "theme")
|
|
772
|
+
), hasImportedTheme || (hasImportedTheme = !0, programPath.node.body.push(
|
|
773
|
+
t.importDeclaration(
|
|
774
|
+
[
|
|
775
|
+
t.importSpecifier(
|
|
776
|
+
t.identifier("_TamaguiTheme"),
|
|
777
|
+
t.identifier("Theme")
|
|
1247
778
|
)
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
779
|
+
],
|
|
780
|
+
t.stringLiteral("@tamagui/web")
|
|
781
|
+
)
|
|
782
|
+
)), traversePath.replaceWith(
|
|
783
|
+
t.jsxElement(
|
|
784
|
+
t.jsxOpeningElement(t.jsxIdentifier("_TamaguiTheme"), [
|
|
785
|
+
t.jsxAttribute(t.jsxIdentifier("name"), themeVal.value)
|
|
786
|
+
]),
|
|
787
|
+
t.jsxClosingElement(t.jsxIdentifier("_TamaguiTheme")),
|
|
788
|
+
[traversePath.node]
|
|
789
|
+
)
|
|
790
|
+
)) : console.warn(
|
|
791
|
+
`No program path found, avoiding importing flattening / importing theme in ${sourcePath}`
|
|
792
|
+
)), shouldFlatten) {
|
|
1252
793
|
const defaultStyleAttrs = Object.keys(defaultProps).flatMap((key) => {
|
|
1253
|
-
if (!isValidStyleKey(key, staticConfig))
|
|
794
|
+
if (!isValidStyleKey(key, staticConfig))
|
|
1254
795
|
return [];
|
|
1255
|
-
|
|
1256
|
-
const value = defaultProps[key];
|
|
1257
|
-
const name = (tamaguiConfig == null ? void 0 : tamaguiConfig.shorthands[key]) || key;
|
|
796
|
+
const value = defaultProps[key], name = tamaguiConfig?.shorthands[key] || key;
|
|
1258
797
|
if (value === void 0) {
|
|
1259
798
|
logger.warn(
|
|
1260
799
|
`\u26A0\uFE0F Error evaluating default style for component, prop ${key} ${value}`
|
|
1261
|
-
);
|
|
1262
|
-
shouldDeopt = true;
|
|
800
|
+
), shouldDeopt = !0;
|
|
1263
801
|
return;
|
|
1264
802
|
}
|
|
1265
|
-
|
|
803
|
+
return {
|
|
1266
804
|
type: "style",
|
|
1267
805
|
name,
|
|
1268
806
|
value: { [name]: value }
|
|
1269
807
|
};
|
|
1270
|
-
return attr;
|
|
1271
808
|
});
|
|
1272
|
-
|
|
1273
|
-
attrs = [...defaultStyleAttrs, ...attrs];
|
|
1274
|
-
}
|
|
809
|
+
defaultStyleAttrs.length && (attrs = [...defaultStyleAttrs, ...attrs]);
|
|
1275
810
|
}
|
|
1276
811
|
if (shouldDeopt || !shouldFlatten) {
|
|
1277
|
-
|
|
1278
|
-
logger.info(`Deopting ${shouldDeopt} ${shouldFlatten}`);
|
|
1279
|
-
}
|
|
1280
|
-
node.attributes = ogAttributes;
|
|
812
|
+
shouldPrintDebug && logger.info(`Deopting ${shouldDeopt} ${shouldFlatten}`), node.attributes = ogAttributes;
|
|
1281
813
|
return;
|
|
1282
814
|
}
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
}
|
|
815
|
+
shouldPrintDebug && logger.info(
|
|
816
|
+
[` - attrs (flattened):
|
|
817
|
+
`, (0, import_logLines.logLines)(attrs.map(import_extractHelpers.attrStr).join(", "))].join(
|
|
818
|
+
" "
|
|
819
|
+
)
|
|
820
|
+
);
|
|
1290
821
|
let foundStaticProps = {};
|
|
1291
822
|
for (const key in attrs) {
|
|
1292
823
|
const cur = attrs[key];
|
|
1293
824
|
if (cur.type === "style") {
|
|
1294
|
-
const expanded =
|
|
825
|
+
const expanded = expandStylesAndRemoveNullishValuesWithoutVariants(
|
|
1295
826
|
cur.value
|
|
1296
827
|
);
|
|
1297
|
-
for (const key2 in expanded)
|
|
1298
|
-
|
|
1299
|
-
}
|
|
828
|
+
for (const key2 in expanded)
|
|
829
|
+
mergeToEnd(foundStaticProps, key2, expanded[key2]);
|
|
1300
830
|
continue;
|
|
1301
831
|
}
|
|
1302
832
|
if (cur.type === "attr") {
|
|
1303
|
-
if (t.isJSXSpreadAttribute(cur.value))
|
|
1304
|
-
continue;
|
|
1305
|
-
}
|
|
1306
|
-
if (!t.isJSXIdentifier(cur.value.name)) {
|
|
833
|
+
if (t.isJSXSpreadAttribute(cur.value) || !t.isJSXIdentifier(cur.value.name))
|
|
1307
834
|
continue;
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
const value = attemptEvalSafe(cur.value.value || t.booleanLiteral(true));
|
|
1311
|
-
if (value !== import_constants.FAILED_EVAL) {
|
|
1312
|
-
mergeToEnd2(foundStaticProps, key2, value);
|
|
1313
|
-
}
|
|
835
|
+
const key2 = cur.value.name.name, value = attemptEvalSafe(cur.value.value || t.booleanLiteral(!0));
|
|
836
|
+
value !== import_constants.FAILED_EVAL && mergeToEnd(foundStaticProps, key2, value);
|
|
1314
837
|
}
|
|
1315
838
|
}
|
|
1316
839
|
const completeProps = {};
|
|
1317
|
-
for (const key in defaultProps)
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
}
|
|
1321
|
-
}
|
|
1322
|
-
for (const key in foundStaticProps) {
|
|
840
|
+
for (const key in defaultProps)
|
|
841
|
+
key in foundStaticProps || (completeProps[key] = defaultProps[key]);
|
|
842
|
+
for (const key in foundStaticProps)
|
|
1323
843
|
completeProps[key] = foundStaticProps[key];
|
|
1324
|
-
}
|
|
1325
844
|
attrs = attrs.reduce((acc, cur) => {
|
|
1326
845
|
if (!cur)
|
|
1327
846
|
return acc;
|
|
1328
|
-
if (cur.type === "attr" && !t.isJSXSpreadAttribute(cur.value)) {
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
if (
|
|
1332
|
-
|
|
1333
|
-
|
|
847
|
+
if (cur.type === "attr" && !t.isJSXSpreadAttribute(cur.value) && shouldFlatten) {
|
|
848
|
+
const name = cur.value.name.name;
|
|
849
|
+
if (typeof name == "string") {
|
|
850
|
+
if (name === "tag")
|
|
851
|
+
return acc;
|
|
852
|
+
if (variants[name] && variantValues.has(name)) {
|
|
853
|
+
const styleState = {
|
|
854
|
+
...propMapperStyleState,
|
|
855
|
+
props: completeProps,
|
|
856
|
+
curProps: completeProps
|
|
857
|
+
};
|
|
858
|
+
let out = Object.fromEntries(
|
|
859
|
+
propMapper(name, variantValues.get(name), styleState) || []
|
|
860
|
+
);
|
|
861
|
+
if (out && isTargetingHTML) {
|
|
862
|
+
const cn = out.className;
|
|
863
|
+
out = (0, import_react_native_web_internals.createDOMProps)(isTextView ? "span" : "div", out), out.className = cn;
|
|
1334
864
|
}
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
)
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
}
|
|
1352
|
-
for (const key2 in out) {
|
|
1353
|
-
const value2 = out[key2];
|
|
1354
|
-
if (isValidStyleKey(key2, staticConfig)) {
|
|
1355
|
-
acc.push({
|
|
1356
|
-
type: "style",
|
|
1357
|
-
value: { [key2]: value2 },
|
|
1358
|
-
name: key2,
|
|
1359
|
-
attr: cur.value
|
|
1360
|
-
});
|
|
1361
|
-
} else {
|
|
1362
|
-
acc.push({
|
|
1363
|
-
type: "attr",
|
|
1364
|
-
value: t.jsxAttribute(
|
|
1365
|
-
t.jsxIdentifier(key2),
|
|
1366
|
-
t.jsxExpressionContainer(
|
|
1367
|
-
typeof value2 === "string" ? t.stringLiteral(value2) : (0, import_literalToAst.literalToAst)(value2)
|
|
1368
|
-
)
|
|
1369
|
-
)
|
|
1370
|
-
});
|
|
1371
|
-
}
|
|
1372
|
-
}
|
|
865
|
+
shouldPrintDebug && logger.info([" - expanded variant", name, out].join(" "));
|
|
866
|
+
for (const key2 in out) {
|
|
867
|
+
const value2 = out[key2];
|
|
868
|
+
isValidStyleKey(key2, staticConfig) ? acc.push({
|
|
869
|
+
type: "style",
|
|
870
|
+
value: { [key2]: value2 },
|
|
871
|
+
name: key2,
|
|
872
|
+
attr: cur.value
|
|
873
|
+
}) : acc.push({
|
|
874
|
+
type: "attr",
|
|
875
|
+
value: t.jsxAttribute(
|
|
876
|
+
t.jsxIdentifier(key2),
|
|
877
|
+
t.jsxExpressionContainer(
|
|
878
|
+
typeof value2 == "string" ? t.stringLiteral(value2) : (0, import_literalToAst.literalToAst)(value2)
|
|
879
|
+
)
|
|
880
|
+
)
|
|
881
|
+
});
|
|
1373
882
|
}
|
|
1374
883
|
}
|
|
1375
884
|
}
|
|
1376
885
|
}
|
|
1377
|
-
if (cur.type !== "style")
|
|
1378
|
-
acc.push(cur);
|
|
1379
|
-
return acc;
|
|
1380
|
-
}
|
|
886
|
+
if (cur.type !== "style")
|
|
887
|
+
return acc.push(cur), acc;
|
|
1381
888
|
let key = Object.keys(cur.value)[0];
|
|
1382
|
-
const value = cur.value[key];
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
if (disableExtractVariables) {
|
|
1389
|
-
if (value[0] === "$" && (usedThemeKeys.has(key) || usedThemeKeys.has(fullKey))) {
|
|
1390
|
-
if (shouldPrintDebug) {
|
|
1391
|
-
logger.info([` keeping variable inline: ${key} =`, value].join(" "));
|
|
1392
|
-
}
|
|
1393
|
-
acc.push({
|
|
1394
|
-
type: "attr",
|
|
1395
|
-
value: t.jsxAttribute(
|
|
1396
|
-
t.jsxIdentifier(key),
|
|
1397
|
-
t.jsxExpressionContainer(t.stringLiteral(value))
|
|
1398
|
-
)
|
|
1399
|
-
});
|
|
1400
|
-
return acc;
|
|
1401
|
-
}
|
|
1402
|
-
}
|
|
1403
|
-
acc.push(cur);
|
|
1404
|
-
return acc;
|
|
1405
|
-
}, []);
|
|
1406
|
-
tm.mark("jsx-element-expanded", !!shouldPrintDebug);
|
|
1407
|
-
if (shouldPrintDebug) {
|
|
1408
|
-
logger.info(
|
|
1409
|
-
[" - attrs (expanded): \n", (0, import_logLines.logLines)(attrs.map(import_extractHelpers.attrStr).join(", "))].join(
|
|
1410
|
-
" "
|
|
889
|
+
const value = cur.value[key], fullKey = tamaguiConfig?.shorthands[key];
|
|
890
|
+
return fullKey && (cur.value = { [fullKey]: value }, key = fullKey), disableExtractVariables && value[0] === "$" && (usedThemeKeys.has(key) || usedThemeKeys.has(fullKey)) ? (shouldPrintDebug && logger.info([` keeping variable inline: ${key} =`, value].join(" ")), acc.push({
|
|
891
|
+
type: "attr",
|
|
892
|
+
value: t.jsxAttribute(
|
|
893
|
+
t.jsxIdentifier(key),
|
|
894
|
+
t.jsxExpressionContainer(t.stringLiteral(value))
|
|
1411
895
|
)
|
|
1412
|
-
);
|
|
1413
|
-
}
|
|
896
|
+
}), acc) : (acc.push(cur), acc);
|
|
897
|
+
}, []), tm.mark("jsx-element-expanded", !!shouldPrintDebug), shouldPrintDebug && logger.info(
|
|
898
|
+
[` - attrs (expanded):
|
|
899
|
+
`, (0, import_logLines.logLines)(attrs.map(import_extractHelpers.attrStr).join(", "))].join(
|
|
900
|
+
" "
|
|
901
|
+
)
|
|
902
|
+
);
|
|
1414
903
|
let prev = null;
|
|
1415
|
-
const getProps = (props, includeProps =
|
|
1416
|
-
if (!props)
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
if (excludeProps == null ? void 0 : excludeProps.size) {
|
|
1422
|
-
for (const key in props) {
|
|
1423
|
-
if (excludeProps.has(key)) {
|
|
1424
|
-
if (shouldPrintDebug)
|
|
1425
|
-
logger.info([" delete excluded", key].join(" "));
|
|
1426
|
-
delete props[key];
|
|
1427
|
-
}
|
|
1428
|
-
}
|
|
1429
|
-
}
|
|
904
|
+
const getProps = (props, includeProps = !1, debugName = "") => {
|
|
905
|
+
if (!props)
|
|
906
|
+
return shouldPrintDebug && logger.info([" getProps() no props"].join(" ")), {};
|
|
907
|
+
if (excludeProps?.size)
|
|
908
|
+
for (const key in props)
|
|
909
|
+
excludeProps.has(key) && (shouldPrintDebug && logger.info([" delete excluded", key].join(" ")), delete props[key]);
|
|
1430
910
|
try {
|
|
1431
|
-
const out =
|
|
911
|
+
const out = getSplitStyles(
|
|
1432
912
|
props,
|
|
1433
913
|
staticConfig,
|
|
1434
914
|
defaultTheme,
|
|
@@ -1436,226 +916,124 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
1436
916
|
componentState,
|
|
1437
917
|
{
|
|
1438
918
|
...styleProps,
|
|
919
|
+
noClassNames: !0,
|
|
1439
920
|
fallbackProps: completeProps
|
|
1440
921
|
},
|
|
1441
922
|
void 0,
|
|
1442
923
|
void 0,
|
|
1443
924
|
void 0,
|
|
1444
925
|
debugPropValue || shouldPrintDebug
|
|
1445
|
-
)
|
|
1446
|
-
const outProps = {
|
|
926
|
+
), outProps = {
|
|
1447
927
|
...includeProps ? out.viewProps : {},
|
|
1448
928
|
...out.style,
|
|
1449
929
|
...out.pseudos
|
|
1450
930
|
};
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
logger.info(`
|
|
1456
|
-
getProps (outProps): ${(0, import_logLines.logLines)((0, import_extractHelpers.objToStr)(outProps))}`);
|
|
1457
|
-
}
|
|
1458
|
-
if (out.fontFamily) {
|
|
1459
|
-
(0, import_propsToFontFamilyCache.setPropsToFontFamily)(outProps, out.fontFamily);
|
|
1460
|
-
if (shouldPrintDebug) {
|
|
1461
|
-
logger.info(`
|
|
1462
|
-
\u{1F4AC} new font fam: ${out.fontFamily}`);
|
|
1463
|
-
}
|
|
1464
|
-
}
|
|
1465
|
-
return outProps;
|
|
931
|
+
return shouldPrintDebug && (logger.info(`(${debugName})`), logger.info(`
|
|
932
|
+
getProps (props in): ${(0, import_logLines.logLines)((0, import_extractHelpers.objToStr)(props))}`), logger.info(`
|
|
933
|
+
getProps (outProps): ${(0, import_logLines.logLines)((0, import_extractHelpers.objToStr)(outProps))}`)), out.fontFamily && ((0, import_propsToFontFamilyCache.setPropsToFontFamily)(outProps, out.fontFamily), shouldPrintDebug && logger.info(`
|
|
934
|
+
\u{1F4AC} new font fam: ${out.fontFamily}`)), outProps;
|
|
1466
935
|
} catch (err) {
|
|
1467
|
-
logger.info(["error", err.message, err.stack].join(" "));
|
|
1468
|
-
return {};
|
|
936
|
+
return logger.info(["error", err.message, err.stack].join(" ")), {};
|
|
1469
937
|
}
|
|
1470
938
|
};
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
});
|
|
1476
|
-
}
|
|
1477
|
-
attrs = attrs.reduce((acc, cur) => {
|
|
939
|
+
shouldFlatten && attrs.unshift({
|
|
940
|
+
type: "style",
|
|
941
|
+
value: defaultProps
|
|
942
|
+
}), attrs = attrs.reduce((acc, cur) => {
|
|
1478
943
|
if (cur.type === "style") {
|
|
1479
|
-
const key = Object.keys(cur.value)[0];
|
|
1480
|
-
|
|
1481
|
-
const shouldKeepOriginalAttr = (
|
|
944
|
+
const key = Object.keys(cur.value)[0], value = cur.value[key];
|
|
945
|
+
if (
|
|
1482
946
|
// !isStyleAndAttr[key] &&
|
|
1483
947
|
!shouldFlatten && // de-opt if non-style
|
|
1484
|
-
!validStyles[key] && !
|
|
1485
|
-
)
|
|
1486
|
-
|
|
1487
|
-
if (shouldPrintDebug) {
|
|
1488
|
-
logger.info([" - keeping as non-style", key].join(" "));
|
|
1489
|
-
}
|
|
1490
|
-
prev = cur;
|
|
1491
|
-
acc.push({
|
|
948
|
+
!validStyles[key] && !pseudoDescriptors[key] && !(key.startsWith("data-") || key.startsWith("aria-"))
|
|
949
|
+
)
|
|
950
|
+
return shouldPrintDebug && logger.info([" - keeping as non-style", key].join(" ")), prev = cur, acc.push({
|
|
1492
951
|
type: "attr",
|
|
1493
952
|
value: t.jsxAttribute(
|
|
1494
953
|
t.jsxIdentifier(key),
|
|
1495
954
|
t.jsxExpressionContainer(
|
|
1496
|
-
typeof value
|
|
955
|
+
typeof value == "string" ? t.stringLiteral(value) : (0, import_literalToAst.literalToAst)(value)
|
|
1497
956
|
)
|
|
1498
957
|
)
|
|
1499
|
-
});
|
|
1500
|
-
|
|
1501
|
-
return acc;
|
|
1502
|
-
}
|
|
1503
|
-
if ((prev == null ? void 0 : prev.type) === "style") {
|
|
1504
|
-
mergeStyles2(prev.value, cur.value);
|
|
1505
|
-
return acc;
|
|
1506
|
-
}
|
|
958
|
+
}), acc.push(cur), acc;
|
|
959
|
+
if (prev?.type === "style")
|
|
960
|
+
return mergeStyles(prev.value, cur.value), acc;
|
|
1507
961
|
}
|
|
1508
|
-
prev = cur;
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
(0, import_logLines.logLines)(attrs.map(import_extractHelpers.attrStr).join(", "))
|
|
1517
|
-
].join(" ")
|
|
1518
|
-
);
|
|
1519
|
-
}
|
|
962
|
+
return prev = cur, acc.push(cur), acc;
|
|
963
|
+
}, []), shouldPrintDebug && logger.info(
|
|
964
|
+
[
|
|
965
|
+
` - attrs (combined \u{1F500}):
|
|
966
|
+
`,
|
|
967
|
+
(0, import_logLines.logLines)(attrs.map(import_extractHelpers.attrStr).join(", "))
|
|
968
|
+
].join(" ")
|
|
969
|
+
);
|
|
1520
970
|
let getStyleError = null;
|
|
1521
|
-
for (const attr of attrs)
|
|
971
|
+
for (const attr of attrs)
|
|
1522
972
|
try {
|
|
1523
|
-
|
|
1524
|
-
console.log(` Processing ${attr.type}:`);
|
|
1525
|
-
}
|
|
1526
|
-
switch (attr.type) {
|
|
973
|
+
switch (shouldPrintDebug && console.log(` Processing ${attr.type}:`), attr.type) {
|
|
1527
974
|
case "ternary": {
|
|
1528
|
-
const a = getProps(attr.value.alternate,
|
|
1529
|
-
|
|
1530
|
-
if (a)
|
|
1531
|
-
attr.value.alternate = a;
|
|
1532
|
-
if (c)
|
|
1533
|
-
attr.value.consequent = c;
|
|
1534
|
-
if (shouldPrintDebug)
|
|
1535
|
-
logger.info([" => tern ", (0, import_extractHelpers.attrStr)(attr)].join(" "));
|
|
975
|
+
const a = getProps(attr.value.alternate, !1, "ternary.alternate"), c = getProps(attr.value.consequent, !1, "ternary.consequent");
|
|
976
|
+
a && (attr.value.alternate = a), c && (attr.value.consequent = c), shouldPrintDebug && logger.info([" => tern ", (0, import_extractHelpers.attrStr)(attr)].join(" "));
|
|
1536
977
|
continue;
|
|
1537
978
|
}
|
|
1538
979
|
case "style": {
|
|
1539
|
-
const styles = getProps(attr.value,
|
|
1540
|
-
|
|
1541
|
-
attr.value = styles;
|
|
1542
|
-
}
|
|
1543
|
-
if (shouldPrintDebug)
|
|
1544
|
-
logger.info([" * styles (in)", (0, import_logLines.logLines)((0, import_extractHelpers.objToStr)(attr.value))].join(" "));
|
|
1545
|
-
if (shouldPrintDebug)
|
|
1546
|
-
logger.info([" * styles (out)", (0, import_logLines.logLines)((0, import_extractHelpers.objToStr)(styles))].join(" "));
|
|
980
|
+
const styles = getProps(attr.value, !1, "style");
|
|
981
|
+
styles && (attr.value = styles), shouldPrintDebug && logger.info([" * styles (in)", (0, import_logLines.logLines)((0, import_extractHelpers.objToStr)(attr.value))].join(" ")), shouldPrintDebug && logger.info([" * styles (out)", (0, import_logLines.logLines)((0, import_extractHelpers.objToStr)(styles))].join(" "));
|
|
1547
982
|
continue;
|
|
1548
983
|
}
|
|
1549
|
-
case "attr":
|
|
984
|
+
case "attr":
|
|
1550
985
|
if (shouldFlatten && t.isJSXAttribute(attr.value)) {
|
|
1551
986
|
const key = attr.value.name.name;
|
|
1552
|
-
if (key === "style" || key === "className" || key === "tag")
|
|
987
|
+
if (key === "style" || key === "className" || key === "tag")
|
|
1553
988
|
continue;
|
|
1554
|
-
}
|
|
1555
989
|
const value = attemptEvalSafe(
|
|
1556
|
-
attr.value.value || t.booleanLiteral(
|
|
990
|
+
attr.value.value || t.booleanLiteral(!0)
|
|
1557
991
|
);
|
|
1558
992
|
if (value !== import_constants.FAILED_EVAL) {
|
|
1559
|
-
const outProps = getProps({ [key]: value },
|
|
1560
|
-
const outKey = Object.keys(outProps)[0];
|
|
993
|
+
const outProps = getProps({ [key]: value }, !0, `attr.${key}`), outKey = Object.keys(outProps)[0];
|
|
1561
994
|
if (outKey) {
|
|
1562
995
|
const outVal = outProps[outKey];
|
|
1563
996
|
attr.value = t.jsxAttribute(
|
|
1564
997
|
t.jsxIdentifier(outKey),
|
|
1565
998
|
t.jsxExpressionContainer(
|
|
1566
|
-
typeof outVal
|
|
999
|
+
typeof outVal == "string" ? t.stringLiteral(outVal) : (0, import_literalToAst.literalToAst)(outVal)
|
|
1567
1000
|
)
|
|
1568
1001
|
);
|
|
1569
1002
|
}
|
|
1570
1003
|
}
|
|
1571
1004
|
}
|
|
1572
|
-
}
|
|
1573
1005
|
}
|
|
1574
1006
|
} catch (err) {
|
|
1575
1007
|
getStyleError = err;
|
|
1576
1008
|
}
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
logger.info(["
|
|
1580
|
-
}
|
|
1581
|
-
tm.mark("jsx-element-styles", !!shouldPrintDebug);
|
|
1582
|
-
if (getStyleError) {
|
|
1583
|
-
logger.info([" \u26A0\uFE0F postprocessing error, deopt", getStyleError].join(" "));
|
|
1584
|
-
node.attributes = ogAttributes;
|
|
1585
|
-
return null;
|
|
1586
|
-
}
|
|
1009
|
+
if (shouldPrintDebug && logger.info([` - attrs (ternaries/combined):
|
|
1010
|
+
`, (0, import_logLines.logLines)(attrs.map(import_extractHelpers.attrStr).join(", "))].join(" ")), tm.mark("jsx-element-styles", !!shouldPrintDebug), getStyleError)
|
|
1011
|
+
return logger.info([" \u26A0\uFE0F postprocessing error, deopt", getStyleError].join(" ")), node.attributes = ogAttributes, null;
|
|
1587
1012
|
const existingStyleKeys = /* @__PURE__ */ new Set();
|
|
1588
1013
|
for (let i = attrs.length - 1; i >= 0; i--) {
|
|
1589
1014
|
const attr = attrs[i];
|
|
1590
|
-
if (shouldFlatten) {
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
if (t.isJSXIdentifier(attr.value.name)) {
|
|
1594
|
-
const name = attr.value.name.name;
|
|
1595
|
-
if (INLINE_EXTRACTABLE[name]) {
|
|
1596
|
-
attr.value.name.name = INLINE_EXTRACTABLE[name];
|
|
1597
|
-
}
|
|
1598
|
-
}
|
|
1599
|
-
}
|
|
1600
|
-
}
|
|
1601
|
-
}
|
|
1602
|
-
if (attr.type === "style") {
|
|
1603
|
-
for (const key in attr.value) {
|
|
1604
|
-
if (existingStyleKeys.has(key)) {
|
|
1605
|
-
if (shouldPrintDebug) {
|
|
1606
|
-
logger.info([` >> delete existing ${key}`].join(" "));
|
|
1607
|
-
}
|
|
1608
|
-
delete attr.value[key];
|
|
1609
|
-
} else {
|
|
1610
|
-
existingStyleKeys.add(key);
|
|
1611
|
-
}
|
|
1612
|
-
}
|
|
1015
|
+
if (shouldFlatten && attr.type === "attr" && t.isJSXAttribute(attr.value) && t.isJSXIdentifier(attr.value.name)) {
|
|
1016
|
+
const name = attr.value.name.name;
|
|
1017
|
+
INLINE_EXTRACTABLE[name] && (attr.value.name.name = INLINE_EXTRACTABLE[name]);
|
|
1613
1018
|
}
|
|
1019
|
+
if (attr.type === "style")
|
|
1020
|
+
for (const key in attr.value)
|
|
1021
|
+
existingStyleKeys.has(key) ? (shouldPrintDebug && logger.info([` >> delete existing ${key}`].join(" ")), delete attr.value[key]) : existingStyleKeys.add(key);
|
|
1614
1022
|
}
|
|
1615
|
-
if (!shouldFlatten) {
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
if (val) {
|
|
1624
|
-
delete attr.value[key];
|
|
1625
|
-
attrs.splice(index - 1, 0, val.attr);
|
|
1626
|
-
} else {
|
|
1627
|
-
delete attr.value[key];
|
|
1628
|
-
}
|
|
1629
|
-
}
|
|
1023
|
+
if (!shouldFlatten && inlineWhenUnflattened.size) {
|
|
1024
|
+
for (const [index, attr] of attrs.entries())
|
|
1025
|
+
if (attr.type === "style")
|
|
1026
|
+
for (const key in attr.value) {
|
|
1027
|
+
if (!inlineWhenUnflattened.has(key))
|
|
1028
|
+
continue;
|
|
1029
|
+
const val = inlineWhenUnflattenedOGVals[key];
|
|
1030
|
+
val ? (delete attr.value[key], attrs.splice(index - 1, 0, val.attr)) : delete attr.value[key];
|
|
1630
1031
|
}
|
|
1631
|
-
}
|
|
1632
|
-
}
|
|
1633
|
-
}
|
|
1634
|
-
if (shouldFlatten) {
|
|
1635
|
-
if (shouldPrintDebug) {
|
|
1636
|
-
logger.info([" [\u2705] flattening", originalNodeName, flatNode].join(" "));
|
|
1637
|
-
}
|
|
1638
|
-
node.name.name = flatNode;
|
|
1639
|
-
res.flattened++;
|
|
1640
|
-
if (closingElement) {
|
|
1641
|
-
closingElement.name.name = flatNode;
|
|
1642
|
-
}
|
|
1643
|
-
}
|
|
1644
|
-
const isNativeNotFlat = !shouldFlatten && target === "native";
|
|
1645
|
-
if (isNativeNotFlat) {
|
|
1646
|
-
if (shouldPrintDebug) {
|
|
1647
|
-
logger.info(`Disabled flattening except for simple cases on native for now`);
|
|
1648
|
-
}
|
|
1649
|
-
node.attributes = ogAttributes;
|
|
1650
|
-
return null;
|
|
1651
|
-
}
|
|
1652
|
-
if (shouldPrintDebug) {
|
|
1653
|
-
logger.info([` - inlined props (${inlined.size}):`, shouldDeopt ? " deopted" : "", hasSpread ? " has spread" : "", staticConfig.neverFlatten ? "neverFlatten" : ""].join(" "));
|
|
1654
|
-
logger.info(` - shouldFlatten/isFlattened: ${shouldFlatten}`);
|
|
1655
|
-
logger.info(` - attrs (end):
|
|
1656
|
-
${(0, import_logLines.logLines)(attrs.map(import_extractHelpers.attrStr).join(", "))}`);
|
|
1657
1032
|
}
|
|
1658
|
-
|
|
1033
|
+
if (shouldFlatten && (shouldPrintDebug && logger.info([" [\u2705] flattening", originalNodeName, flatNode].join(" ")), node.name.name = flatNode, res.flattened++, closingElement && (closingElement.name.name = flatNode)), !shouldFlatten && target === "native")
|
|
1034
|
+
return shouldPrintDebug && logger.info("Disabled flattening except for simple cases on native for now"), node.attributes = ogAttributes, null;
|
|
1035
|
+
shouldPrintDebug && (logger.info([` - inlined props (${inlined.size}):`, shouldDeopt ? " deopted" : "", hasSpread ? " has spread" : "", staticConfig.neverFlatten ? "neverFlatten" : ""].join(" ")), logger.info(` - shouldFlatten/isFlattened: ${shouldFlatten}`), logger.info(` - attrs (end):
|
|
1036
|
+
${(0, import_logLines.logLines)(attrs.map(import_extractHelpers.attrStr).join(", "))}`)), onExtractTag({
|
|
1659
1037
|
parserProps: propsWithFileInfo,
|
|
1660
1038
|
attrs,
|
|
1661
1039
|
node,
|
|
@@ -1671,27 +1049,18 @@ function createExtractor({ logger = console } = { logger: console }) {
|
|
|
1671
1049
|
staticConfig
|
|
1672
1050
|
});
|
|
1673
1051
|
} catch (err) {
|
|
1674
|
-
node.attributes = ogAttributes;
|
|
1675
|
-
console.error(`@tamagui/static Error: ${err.message} ${err.stack}`);
|
|
1052
|
+
node.attributes = ogAttributes, console.error(`@tamagui/static Error: ${err.message} ${err.stack}`);
|
|
1676
1053
|
} finally {
|
|
1677
|
-
|
|
1678
|
-
shouldPrintDebug = ogDebug;
|
|
1679
|
-
}
|
|
1054
|
+
debugPropValue && (shouldPrintDebug = ogDebug);
|
|
1680
1055
|
}
|
|
1681
1056
|
}
|
|
1682
|
-
})
|
|
1683
|
-
tm.mark("jsx-done", !!shouldPrintDebug);
|
|
1684
|
-
if (modifiedComponents.size) {
|
|
1057
|
+
}), tm.mark("jsx-done", !!shouldPrintDebug), modifiedComponents.size) {
|
|
1685
1058
|
const all = Array.from(modifiedComponents);
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
}
|
|
1689
|
-
for (const comp of all) {
|
|
1059
|
+
shouldPrintDebug && logger.info(` [\u{1FA9D}] hook check ${all.length}`);
|
|
1060
|
+
for (const comp of all)
|
|
1690
1061
|
(0, import_removeUnusedHooks.removeUnusedHooks)(comp, shouldPrintDebug);
|
|
1691
|
-
}
|
|
1692
1062
|
}
|
|
1693
|
-
tm.done(shouldPrintDebug === "verbose");
|
|
1694
|
-
return res;
|
|
1063
|
+
return tm.done(shouldPrintDebug === "verbose"), res;
|
|
1695
1064
|
}
|
|
1696
1065
|
}
|
|
1697
1066
|
// Annotate the CommonJS export names for ESM import in node:
|