@tamagui/static 1.13.3 → 1.14.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 +1 -52
- package/dist/cjs/constants.js.map +2 -2
- package/dist/cjs/extractor/accessSafe.js +1 -52
- package/dist/cjs/extractor/accessSafe.js.map +2 -2
- package/dist/cjs/extractor/babelParse.js +1 -66
- package/dist/cjs/extractor/babelParse.js.map +2 -2
- package/dist/cjs/extractor/buildClassName.js +1 -99
- package/dist/cjs/extractor/buildClassName.js.map +2 -2
- package/dist/cjs/extractor/bundle.js +1 -126
- package/dist/cjs/extractor/bundle.js.map +2 -2
- package/dist/cjs/extractor/createEvaluator.js +1 -86
- package/dist/cjs/extractor/createEvaluator.js.map +2 -2
- package/dist/cjs/extractor/createExtractor.js +15 -1630
- package/dist/cjs/extractor/createExtractor.js.map +2 -2
- package/dist/cjs/extractor/ensureImportingConcat.js +1 -64
- package/dist/cjs/extractor/ensureImportingConcat.js.map +2 -2
- package/dist/cjs/extractor/evaluateAstNode.js +1 -130
- package/dist/cjs/extractor/evaluateAstNode.js.map +2 -2
- package/dist/cjs/extractor/extractHelpers.js +1 -207
- package/dist/cjs/extractor/extractHelpers.js.map +2 -2
- package/dist/cjs/extractor/extractMediaStyle.js +1 -193
- package/dist/cjs/extractor/extractMediaStyle.js.map +2 -2
- package/dist/cjs/extractor/extractToClassNames.js +13 -413
- package/dist/cjs/extractor/extractToClassNames.js.map +2 -2
- package/dist/cjs/extractor/findTopmostFunction.js +1 -43
- package/dist/cjs/extractor/findTopmostFunction.js.map +2 -2
- package/dist/cjs/extractor/generatedUid.js +1 -59
- package/dist/cjs/extractor/generatedUid.js.map +2 -2
- package/dist/cjs/extractor/getPrefixLogs.js +1 -31
- package/dist/cjs/extractor/getPrefixLogs.js.map +2 -2
- package/dist/cjs/extractor/getPropValueFromAttributes.js +1 -89
- package/dist/cjs/extractor/getPropValueFromAttributes.js.map +2 -2
- package/dist/cjs/extractor/getSourceModule.js +1 -103
- package/dist/cjs/extractor/getSourceModule.js.map +2 -2
- package/dist/cjs/extractor/getStaticBindingsForScope.js +1 -225
- package/dist/cjs/extractor/getStaticBindingsForScope.js.map +2 -2
- package/dist/cjs/extractor/hoistClassNames.js +1 -74
- package/dist/cjs/extractor/hoistClassNames.js.map +2 -2
- package/dist/cjs/extractor/literalToAst.js +1 -115
- package/dist/cjs/extractor/literalToAst.js.map +2 -2
- package/dist/cjs/extractor/loadFile.js +2 -20
- package/dist/cjs/extractor/loadFile.js.map +2 -2
- package/dist/cjs/extractor/loadTamagui.js +15 -432
- package/dist/cjs/extractor/loadTamagui.js.map +2 -2
- package/dist/cjs/extractor/logLines.js +3 -43
- package/dist/cjs/extractor/logLines.js.map +2 -2
- package/dist/cjs/extractor/normalizeTernaries.js +1 -85
- package/dist/cjs/extractor/normalizeTernaries.js.map +2 -2
- package/dist/cjs/extractor/removeUnusedHooks.js +1 -109
- package/dist/cjs/extractor/removeUnusedHooks.js.map +2 -2
- package/dist/cjs/extractor/timer.js +1 -52
- package/dist/cjs/extractor/timer.js.map +2 -2
- package/dist/cjs/extractor/validHTMLAttributes.js +1 -126
- package/dist/cjs/extractor/validHTMLAttributes.js.map +2 -2
- package/dist/cjs/getPragmaOptions.js +2 -67
- package/dist/cjs/getPragmaOptions.js.map +2 -2
- package/dist/cjs/helpers/memoize.js +1 -45
- package/dist/cjs/helpers/memoize.js.map +2 -2
- package/dist/cjs/index.js +1 -42
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/require.js +5 -81
- package/dist/cjs/require.js.map +2 -2
- package/dist/cjs/types.js +1 -16
- package/dist/cjs/types.js.map +2 -2
- package/dist/cjs/webpackPlugin.js +1 -34
- package/dist/cjs/webpackPlugin.js.map +2 -2
- package/dist/esm/constants.js +1 -14
- package/dist/esm/constants.js.map +2 -2
- package/dist/esm/constants.mjs +1 -14
- package/dist/esm/constants.mjs.map +2 -2
- package/dist/esm/extractor/accessSafe.js +1 -18
- package/dist/esm/extractor/accessSafe.js.map +2 -2
- package/dist/esm/extractor/accessSafe.mjs +1 -18
- package/dist/esm/extractor/accessSafe.mjs.map +2 -2
- package/dist/esm/extractor/babelParse.js +1 -31
- package/dist/esm/extractor/babelParse.js.map +2 -2
- package/dist/esm/extractor/babelParse.mjs +1 -31
- package/dist/esm/extractor/babelParse.mjs.map +2 -2
- package/dist/esm/extractor/buildClassName.js +1 -64
- package/dist/esm/extractor/buildClassName.js.map +2 -2
- package/dist/esm/extractor/buildClassName.mjs +1 -64
- package/dist/esm/extractor/buildClassName.mjs.map +2 -2
- package/dist/esm/extractor/bundle.js +1 -91
- package/dist/esm/extractor/bundle.js.map +2 -2
- package/dist/esm/extractor/bundle.mjs +1 -91
- package/dist/esm/extractor/bundle.mjs.map +2 -2
- package/dist/esm/extractor/createEvaluator.js +1 -51
- package/dist/esm/extractor/createEvaluator.js.map +2 -2
- package/dist/esm/extractor/createEvaluator.mjs +1 -51
- package/dist/esm/extractor/createEvaluator.mjs.map +2 -2
- package/dist/esm/extractor/createExtractor.js +15 -1613
- package/dist/esm/extractor/createExtractor.js.map +2 -2
- package/dist/esm/extractor/createExtractor.mjs +15 -1613
- package/dist/esm/extractor/createExtractor.mjs.map +2 -2
- package/dist/esm/extractor/ensureImportingConcat.js +1 -30
- package/dist/esm/extractor/ensureImportingConcat.js.map +2 -2
- package/dist/esm/extractor/ensureImportingConcat.mjs +1 -30
- package/dist/esm/extractor/ensureImportingConcat.mjs.map +2 -2
- package/dist/esm/extractor/evaluateAstNode.js +1 -96
- package/dist/esm/extractor/evaluateAstNode.js.map +2 -2
- package/dist/esm/extractor/evaluateAstNode.mjs +1 -96
- package/dist/esm/extractor/evaluateAstNode.mjs.map +2 -2
- package/dist/esm/extractor/extractHelpers.js +1 -161
- package/dist/esm/extractor/extractHelpers.js.map +2 -2
- package/dist/esm/extractor/extractHelpers.mjs +1 -161
- package/dist/esm/extractor/extractHelpers.mjs.map +2 -2
- package/dist/esm/extractor/extractMediaStyle.js +1 -158
- package/dist/esm/extractor/extractMediaStyle.js.map +2 -2
- package/dist/esm/extractor/extractMediaStyle.mjs +1 -158
- package/dist/esm/extractor/extractMediaStyle.mjs.map +2 -2
- package/dist/esm/extractor/extractToClassNames.js +13 -379
- package/dist/esm/extractor/extractToClassNames.js.map +2 -2
- package/dist/esm/extractor/extractToClassNames.mjs +13 -379
- package/dist/esm/extractor/extractToClassNames.mjs.map +2 -2
- package/dist/esm/extractor/findTopmostFunction.js +1 -19
- package/dist/esm/extractor/findTopmostFunction.js.map +2 -2
- package/dist/esm/extractor/findTopmostFunction.mjs +1 -19
- package/dist/esm/extractor/findTopmostFunction.mjs.map +2 -2
- package/dist/esm/extractor/generatedUid.js +1 -25
- package/dist/esm/extractor/generatedUid.js.map +2 -2
- package/dist/esm/extractor/generatedUid.mjs +1 -25
- package/dist/esm/extractor/generatedUid.mjs.map +2 -2
- package/dist/esm/extractor/getPrefixLogs.js +1 -7
- package/dist/esm/extractor/getPrefixLogs.js.map +2 -2
- package/dist/esm/extractor/getPrefixLogs.mjs +1 -7
- package/dist/esm/extractor/getPrefixLogs.mjs.map +2 -2
- package/dist/esm/extractor/getPropValueFromAttributes.js +1 -55
- package/dist/esm/extractor/getPropValueFromAttributes.js.map +2 -2
- package/dist/esm/extractor/getPropValueFromAttributes.mjs +1 -55
- package/dist/esm/extractor/getPropValueFromAttributes.mjs.map +2 -2
- package/dist/esm/extractor/getSourceModule.js +1 -69
- package/dist/esm/extractor/getSourceModule.js.map +2 -2
- package/dist/esm/extractor/getSourceModule.mjs +1 -69
- package/dist/esm/extractor/getSourceModule.mjs.map +2 -2
- package/dist/esm/extractor/getStaticBindingsForScope.js +1 -190
- package/dist/esm/extractor/getStaticBindingsForScope.js.map +2 -2
- package/dist/esm/extractor/getStaticBindingsForScope.mjs +1 -190
- package/dist/esm/extractor/getStaticBindingsForScope.mjs.map +2 -2
- package/dist/esm/extractor/hoistClassNames.js +1 -40
- package/dist/esm/extractor/hoistClassNames.js.map +2 -2
- package/dist/esm/extractor/hoistClassNames.mjs +1 -40
- package/dist/esm/extractor/hoistClassNames.mjs.map +2 -2
- package/dist/esm/extractor/literalToAst.js +1 -80
- package/dist/esm/extractor/literalToAst.js.map +2 -2
- package/dist/esm/extractor/literalToAst.mjs +1 -80
- package/dist/esm/extractor/literalToAst.mjs.map +2 -2
- package/dist/esm/extractor/loadFile.js +2 -19
- package/dist/esm/extractor/loadFile.js.map +2 -2
- package/dist/esm/extractor/loadFile.mjs +2 -19
- package/dist/esm/extractor/loadFile.mjs.map +2 -2
- package/dist/esm/extractor/loadTamagui.js +15 -396
- package/dist/esm/extractor/loadTamagui.js.map +2 -2
- package/dist/esm/extractor/loadTamagui.mjs +15 -396
- package/dist/esm/extractor/loadTamagui.mjs.map +2 -2
- package/dist/esm/extractor/logLines.js +3 -19
- package/dist/esm/extractor/logLines.js.map +2 -2
- package/dist/esm/extractor/logLines.mjs +3 -19
- package/dist/esm/extractor/logLines.mjs.map +2 -2
- package/dist/esm/extractor/normalizeTernaries.js +1 -51
- package/dist/esm/extractor/normalizeTernaries.js.map +2 -2
- package/dist/esm/extractor/normalizeTernaries.mjs +1 -51
- package/dist/esm/extractor/normalizeTernaries.mjs.map +2 -2
- package/dist/esm/extractor/removeUnusedHooks.js +1 -75
- package/dist/esm/extractor/removeUnusedHooks.js.map +2 -2
- package/dist/esm/extractor/removeUnusedHooks.mjs +1 -75
- package/dist/esm/extractor/removeUnusedHooks.mjs.map +2 -2
- package/dist/esm/extractor/timer.js +1 -28
- package/dist/esm/extractor/timer.js.map +2 -2
- package/dist/esm/extractor/timer.mjs +1 -28
- package/dist/esm/extractor/timer.mjs.map +2 -2
- package/dist/esm/extractor/validHTMLAttributes.js +1 -101
- package/dist/esm/extractor/validHTMLAttributes.js.map +2 -2
- package/dist/esm/extractor/validHTMLAttributes.mjs +1 -101
- package/dist/esm/extractor/validHTMLAttributes.mjs.map +2 -2
- package/dist/esm/getPragmaOptions.js +2 -43
- package/dist/esm/getPragmaOptions.js.map +2 -2
- package/dist/esm/getPragmaOptions.mjs +2 -43
- package/dist/esm/getPragmaOptions.mjs.map +2 -2
- package/dist/esm/helpers/memoize.js +1 -21
- package/dist/esm/helpers/memoize.js.map +2 -2
- package/dist/esm/helpers/memoize.mjs +1 -21
- package/dist/esm/helpers/memoize.mjs.map +2 -2
- package/dist/esm/index.js +1 -15
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/index.mjs +1 -15
- package/dist/esm/index.mjs.map +2 -2
- package/dist/esm/require.js +5 -55
- package/dist/esm/require.js.map +2 -2
- package/dist/esm/require.mjs +5 -55
- package/dist/esm/require.mjs.map +2 -2
- package/dist/esm/webpackPlugin.js +1 -10
- package/dist/esm/webpackPlugin.js.map +2 -2
- package/dist/esm/webpackPlugin.mjs +1 -10
- package/dist/esm/webpackPlugin.mjs.map +2 -2
- package/package.json +14 -14
|
@@ -1,381 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { basename } from "path";
|
|
3
|
-
import * as util from "util";
|
|
4
|
-
import generate from "@babel/generator";
|
|
5
|
-
import * as t from "@babel/types";
|
|
6
|
-
import { getStylesAtomic } from "@tamagui/core-node";
|
|
7
|
-
import { concatClassName } from "@tamagui/helpers";
|
|
8
|
-
import { babelParse } from "./babelParse.js";
|
|
9
|
-
import { buildClassName } from "./buildClassName.js";
|
|
10
|
-
import { ensureImportingConcat } from "./ensureImportingConcat.js";
|
|
11
|
-
import { isSimpleSpread } from "./extractHelpers.js";
|
|
12
|
-
import { extractMediaStyle } from "./extractMediaStyle.js";
|
|
13
|
-
import { getPrefixLogs } from "./getPrefixLogs.js";
|
|
14
|
-
import { hoistClassNames } from "./hoistClassNames.js";
|
|
15
|
-
import { logLines } from "./logLines.js";
|
|
16
|
-
import { timer } from "./timer.js";
|
|
17
|
-
const mergeStyleGroups = {
|
|
18
|
-
shadowOpacity: true,
|
|
19
|
-
shadowRadius: true,
|
|
20
|
-
shadowColor: true,
|
|
21
|
-
shadowOffset: true
|
|
22
|
-
};
|
|
23
|
-
async function extractToClassNames({
|
|
24
|
-
extractor,
|
|
25
|
-
source,
|
|
26
|
-
sourcePath,
|
|
27
|
-
options,
|
|
28
|
-
shouldPrintDebug
|
|
29
|
-
}) {
|
|
30
|
-
const tm = timer();
|
|
31
|
-
if (shouldPrintDebug) {
|
|
32
|
-
console.log(`--- ${sourcePath} ---
|
|
1
|
+
import*as Z from"path";import{basename as K}from"path";import*as Y from"util";import D from"@babel/generator";import*as i from"@babel/types";import{getStylesAtomic as J}from"@tamagui/core-node";import{concatClassName as P}from"@tamagui/helpers";import{babelParse as ee}from"./babelParse.js";import{buildClassName as te}from"./buildClassName.js";import{ensureImportingConcat as se}from"./ensureImportingConcat.js";import{isSimpleSpread as R}from"./extractHelpers.js";import{extractMediaStyle as ie}from"./extractMediaStyle.js";import{getPrefixLogs as ae}from"./getPrefixLogs.js";import{hoistClassNames as ne}from"./hoistClassNames.js";import{logLines as re}from"./logLines.js";import{timer as oe}from"./timer.js";const V={shadowOpacity:!0,shadowRadius:!0,shadowColor:!0,shadowOffset:!0};async function je({extractor:j,source:T,sourcePath:n,options:g,shouldPrintDebug:c}){const X=oe();if(c&&console.log(`--- ${n} ---
|
|
33
2
|
|
|
34
|
-
`);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const shouldLogTiming = options.logTimings ?? true;
|
|
47
|
-
const start = Date.now();
|
|
48
|
-
const mem = shouldLogTiming ? process.memoryUsage() : null;
|
|
49
|
-
let ast;
|
|
50
|
-
try {
|
|
51
|
-
ast = babelParse(source);
|
|
52
|
-
} catch (err) {
|
|
53
|
-
console.error("babel parse error:", sourcePath == null ? void 0 : sourcePath.slice(0, 100));
|
|
54
|
-
throw err;
|
|
55
|
-
}
|
|
56
|
-
tm.mark(`babel-parse`, shouldPrintDebug === "verbose");
|
|
57
|
-
const cssMap = /* @__PURE__ */ new Map();
|
|
58
|
-
const existingHoists = {};
|
|
59
|
-
let hasFlattened = false;
|
|
60
|
-
const res = await extractor.parse(ast, {
|
|
61
|
-
shouldPrintDebug,
|
|
62
|
-
...options,
|
|
63
|
-
sourcePath,
|
|
64
|
-
target: "html",
|
|
65
|
-
extractStyledDefinitions: true,
|
|
66
|
-
onStyleRule(identifier, rules) {
|
|
67
|
-
const css = rules.join(";");
|
|
68
|
-
if (shouldPrintDebug) {
|
|
69
|
-
console.log(`adding styled() rule: .${identifier} ${css}`);
|
|
70
|
-
}
|
|
71
|
-
cssMap.set(`.${identifier}`, { css, commentTexts: [] });
|
|
72
|
-
},
|
|
73
|
-
getFlattenedNode: ({ tag }) => {
|
|
74
|
-
hasFlattened = true;
|
|
75
|
-
return tag;
|
|
76
|
-
},
|
|
77
|
-
onExtractTag: ({
|
|
78
|
-
parserProps,
|
|
79
|
-
attrs,
|
|
80
|
-
node,
|
|
81
|
-
attemptEval,
|
|
82
|
-
jsxPath,
|
|
83
|
-
originalNodeName,
|
|
84
|
-
filePath,
|
|
85
|
-
lineNumbers,
|
|
86
|
-
programPath,
|
|
87
|
-
isFlattened,
|
|
88
|
-
completeProps,
|
|
89
|
-
staticConfig
|
|
90
|
-
}) => {
|
|
91
|
-
var _a;
|
|
92
|
-
if (staticConfig.acceptsClassName === false) {
|
|
93
|
-
if (shouldPrintDebug) {
|
|
94
|
-
console.log(`bail, acceptsClassName is false`);
|
|
95
|
-
}
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
const didFlattenThisTag = hasFlattened;
|
|
99
|
-
hasFlattened = false;
|
|
100
|
-
let finalClassNames = [];
|
|
101
|
-
const finalAttrs = [];
|
|
102
|
-
let finalStyles = [];
|
|
103
|
-
let viewStyles = {};
|
|
104
|
-
for (const attr of attrs) {
|
|
105
|
-
if (attr.type === "style") {
|
|
106
|
-
viewStyles = {
|
|
107
|
-
...viewStyles,
|
|
108
|
-
...attr.value
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
const ensureNeededPrevStyle = (style) => {
|
|
113
|
-
const keys = Object.keys(style);
|
|
114
|
-
if (!keys.some((key) => mergeStyleGroups[key])) {
|
|
115
|
-
return style;
|
|
116
|
-
}
|
|
117
|
-
for (const k in mergeStyleGroups) {
|
|
118
|
-
if (k in viewStyles) {
|
|
119
|
-
style[k] = style[k] ?? viewStyles[k];
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return style;
|
|
123
|
-
};
|
|
124
|
-
const addStyles = (style) => {
|
|
125
|
-
if (!style)
|
|
126
|
-
return [];
|
|
127
|
-
const styleWithPrev = ensureNeededPrevStyle(style);
|
|
128
|
-
const res2 = getStylesAtomic(styleWithPrev);
|
|
129
|
-
if (res2.length) {
|
|
130
|
-
finalStyles = [...finalStyles, ...res2];
|
|
131
|
-
}
|
|
132
|
-
return res2;
|
|
133
|
-
};
|
|
134
|
-
let lastMediaImportance = 1;
|
|
135
|
-
for (const attr of attrs) {
|
|
136
|
-
switch (attr.type) {
|
|
137
|
-
case "style": {
|
|
138
|
-
if (!isFlattened) {
|
|
139
|
-
const styles2 = getStylesAtomic(attr.value);
|
|
140
|
-
finalStyles = [...finalStyles, ...styles2];
|
|
141
|
-
for (const style of styles2) {
|
|
142
|
-
const prop = style.pseudo ? `${style.property}-${style.pseudo}` : style.property;
|
|
143
|
-
finalAttrs.push(
|
|
144
|
-
t.jsxAttribute(t.jsxIdentifier(prop), t.stringLiteral(style.identifier))
|
|
145
|
-
);
|
|
146
|
-
}
|
|
147
|
-
} else {
|
|
148
|
-
const styles2 = addStyles(attr.value);
|
|
149
|
-
const newClassNames = concatClassName(
|
|
150
|
-
styles2.map((x) => x.identifier).join(" ")
|
|
151
|
-
);
|
|
152
|
-
const existing = finalClassNames.find(
|
|
153
|
-
(x) => x.type == "StringLiteral"
|
|
154
|
-
);
|
|
155
|
-
if (existing) {
|
|
156
|
-
existing.value = `${existing.value} ${newClassNames}`;
|
|
157
|
-
} else {
|
|
158
|
-
finalClassNames = [...finalClassNames, t.stringLiteral(newClassNames)];
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
break;
|
|
162
|
-
}
|
|
163
|
-
case "attr": {
|
|
164
|
-
const val = attr.value;
|
|
165
|
-
if (t.isJSXSpreadAttribute(val)) {
|
|
166
|
-
if (isSimpleSpread(val)) {
|
|
167
|
-
finalClassNames.push(
|
|
168
|
-
t.logicalExpression(
|
|
169
|
-
"&&",
|
|
170
|
-
val.argument,
|
|
171
|
-
t.memberExpression(val.argument, t.identifier("className"))
|
|
172
|
-
)
|
|
173
|
-
);
|
|
174
|
-
}
|
|
175
|
-
} else if (val.name.name === "className") {
|
|
176
|
-
const value = val.value;
|
|
177
|
-
if (value) {
|
|
178
|
-
try {
|
|
179
|
-
const evaluatedValue = attemptEval(value);
|
|
180
|
-
finalClassNames.push(t.stringLiteral(evaluatedValue));
|
|
181
|
-
} catch (e) {
|
|
182
|
-
finalClassNames.push(value["expression"]);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
continue;
|
|
186
|
-
}
|
|
187
|
-
finalAttrs.push(val);
|
|
188
|
-
break;
|
|
189
|
-
}
|
|
190
|
-
case "ternary": {
|
|
191
|
-
const mediaExtraction = extractMediaStyle(
|
|
192
|
-
parserProps,
|
|
193
|
-
attr.value,
|
|
194
|
-
jsxPath,
|
|
195
|
-
extractor.getTamagui(),
|
|
196
|
-
sourcePath || "",
|
|
197
|
-
lastMediaImportance,
|
|
198
|
-
shouldPrintDebug
|
|
199
|
-
);
|
|
200
|
-
if (shouldPrintDebug) {
|
|
201
|
-
if (mediaExtraction) {
|
|
202
|
-
console.log(
|
|
203
|
-
"ternary (mediaStyles)",
|
|
204
|
-
((_a = mediaExtraction.ternaryWithoutMedia) == null ? void 0 : _a.inlineMediaQuery) ?? "",
|
|
205
|
-
mediaExtraction.mediaStyles.map((x) => x.identifier).join(".")
|
|
206
|
-
);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
if (!mediaExtraction) {
|
|
210
|
-
addTernaryStyle(
|
|
211
|
-
attr.value,
|
|
212
|
-
addStyles(attr.value.consequent),
|
|
213
|
-
addStyles(attr.value.alternate)
|
|
214
|
-
);
|
|
215
|
-
continue;
|
|
216
|
-
}
|
|
217
|
-
lastMediaImportance++;
|
|
218
|
-
if (mediaExtraction.mediaStyles) {
|
|
219
|
-
finalStyles = [...finalStyles, ...mediaExtraction.mediaStyles];
|
|
220
|
-
}
|
|
221
|
-
if (mediaExtraction.ternaryWithoutMedia) {
|
|
222
|
-
addTernaryStyle(
|
|
223
|
-
mediaExtraction.ternaryWithoutMedia,
|
|
224
|
-
mediaExtraction.mediaStyles,
|
|
225
|
-
[]
|
|
226
|
-
);
|
|
227
|
-
} else {
|
|
228
|
-
finalClassNames = [
|
|
229
|
-
...finalClassNames,
|
|
230
|
-
...mediaExtraction.mediaStyles.map((x) => t.stringLiteral(x.identifier))
|
|
231
|
-
];
|
|
232
|
-
}
|
|
233
|
-
break;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
function addTernaryStyle(ternary, a, b) {
|
|
238
|
-
const cCN = a.map((x) => x.identifier).join(" ");
|
|
239
|
-
const aCN = b.map((x) => x.identifier).join(" ");
|
|
240
|
-
if (a.length && b.length) {
|
|
241
|
-
finalClassNames.push(
|
|
242
|
-
t.conditionalExpression(
|
|
243
|
-
ternary.test,
|
|
244
|
-
t.stringLiteral(cCN),
|
|
245
|
-
t.stringLiteral(aCN)
|
|
246
|
-
)
|
|
247
|
-
);
|
|
248
|
-
} else {
|
|
249
|
-
finalClassNames.push(
|
|
250
|
-
t.conditionalExpression(
|
|
251
|
-
ternary.test,
|
|
252
|
-
t.stringLiteral(" " + cCN),
|
|
253
|
-
t.stringLiteral(" " + aCN)
|
|
254
|
-
)
|
|
255
|
-
);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
if (shouldPrintDebug) {
|
|
259
|
-
console.log(
|
|
260
|
-
" finalClassNames\n",
|
|
261
|
-
logLines(finalClassNames.map((x) => x["value"]).join(" "))
|
|
262
|
-
);
|
|
263
|
-
}
|
|
264
|
-
node.attributes = finalAttrs;
|
|
265
|
-
if (finalClassNames.length) {
|
|
266
|
-
const extraClassNames = (() => {
|
|
267
|
-
let value = "";
|
|
268
|
-
if (!isFlattened) {
|
|
269
|
-
return value;
|
|
270
|
-
}
|
|
271
|
-
if (process.env.TAMAGUI_DEBUG_OPTIMIZATIONS) {
|
|
272
|
-
value += `is_tamagui_flattened`;
|
|
273
|
-
}
|
|
274
|
-
if (staticConfig.componentName) {
|
|
275
|
-
value += ` is_${staticConfig.componentName}`;
|
|
276
|
-
}
|
|
277
|
-
if (staticConfig.isText) {
|
|
278
|
-
let family = completeProps.fontFamily;
|
|
279
|
-
if (family[0] === "$") {
|
|
280
|
-
family = family.slice(1);
|
|
281
|
-
}
|
|
282
|
-
value += ` font_${family}`;
|
|
283
|
-
}
|
|
284
|
-
return value;
|
|
285
|
-
})();
|
|
286
|
-
const names = buildClassName(finalClassNames, extraClassNames);
|
|
287
|
-
const nameExpr = names ? hoistClassNames(jsxPath, existingHoists, names) : null;
|
|
288
|
-
let expr = nameExpr;
|
|
289
|
-
if (nameExpr && !t.isIdentifier(nameExpr)) {
|
|
290
|
-
if (!didFlattenThisTag) {
|
|
291
|
-
} else {
|
|
292
|
-
ensureImportingConcat(programPath);
|
|
293
|
-
const simpleSpreads = attrs.filter(
|
|
294
|
-
(x) => t.isJSXSpreadAttribute(x.value) && isSimpleSpread(x.value)
|
|
295
|
-
);
|
|
296
|
-
expr = t.callExpression(t.identifier("concatClassName"), [
|
|
297
|
-
expr,
|
|
298
|
-
...simpleSpreads.map((val) => val.value["argument"])
|
|
299
|
-
]);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
node.attributes.push(
|
|
303
|
-
t.jsxAttribute(t.jsxIdentifier("className"), t.jsxExpressionContainer(expr))
|
|
304
|
-
);
|
|
305
|
-
}
|
|
306
|
-
const comment = util.format(
|
|
307
|
-
"/* %s:%s (%s) */",
|
|
308
|
-
filePath,
|
|
309
|
-
lineNumbers,
|
|
310
|
-
originalNodeName
|
|
311
|
-
);
|
|
312
|
-
for (const { identifier, rules } of finalStyles) {
|
|
313
|
-
const className = `.${identifier}`;
|
|
314
|
-
if (cssMap.has(className)) {
|
|
315
|
-
if (comment) {
|
|
316
|
-
const val = cssMap.get(className);
|
|
317
|
-
val.commentTexts.push(comment);
|
|
318
|
-
cssMap.set(className, val);
|
|
319
|
-
}
|
|
320
|
-
} else if (rules.length) {
|
|
321
|
-
cssMap.set(className, {
|
|
322
|
-
css: rules.join("\n"),
|
|
323
|
-
commentTexts: [comment]
|
|
324
|
-
});
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
});
|
|
329
|
-
if (!res || !res.modified && !res.optimized && !res.flattened && !res.styled) {
|
|
330
|
-
if (shouldPrintDebug) {
|
|
331
|
-
console.log("no res or none modified", res);
|
|
332
|
-
}
|
|
333
|
-
return null;
|
|
334
|
-
}
|
|
335
|
-
const styles = Array.from(cssMap.values()).map((x) => x.css).join("\n").trim();
|
|
336
|
-
const result = generate(
|
|
337
|
-
ast,
|
|
338
|
-
{
|
|
339
|
-
concise: false,
|
|
340
|
-
filename: sourcePath,
|
|
341
|
-
// this makes the debug output terrible, and i think sourcemap works already
|
|
342
|
-
retainLines: false,
|
|
343
|
-
sourceFileName: sourcePath,
|
|
344
|
-
sourceMaps: true
|
|
345
|
-
},
|
|
346
|
-
source
|
|
347
|
-
);
|
|
348
|
-
if (shouldPrintDebug) {
|
|
349
|
-
console.log(
|
|
350
|
-
"\n -------- output code ------- \n\n",
|
|
351
|
-
result.code.split("\n").filter((x) => !x.startsWith("//")).join("\n")
|
|
352
|
-
);
|
|
353
|
-
console.log("\n -------- output style -------- \n\n", styles);
|
|
354
|
-
}
|
|
355
|
-
if (shouldLogTiming) {
|
|
356
|
-
const memUsed = mem ? Math.round((process.memoryUsage().heapUsed - mem.heapUsed) / 1024 / 1204 * 10) / 10 : 0;
|
|
357
|
-
const path2 = basename(sourcePath || "").replace(/\.[jt]sx?$/, "").slice(0, 22).trim().padStart(24);
|
|
358
|
-
const numStyled = `${res.styled}`.padStart(3);
|
|
359
|
-
const numOptimized = `${res.optimized}`.padStart(3);
|
|
360
|
-
const numFound = `${res.found}`.padStart(3);
|
|
361
|
-
const numFlattened = `${res.flattened}`.padStart(3);
|
|
362
|
-
const memory = process.env.DEBUG && memUsed > 10 ? ` ${memUsed}MB` : "";
|
|
363
|
-
const timing = Date.now() - start;
|
|
364
|
-
const timingStr = `${timing}ms`.padStart(6);
|
|
365
|
-
const pre = getPrefixLogs(options);
|
|
366
|
-
const memStr = memory ? `(${memory})` : "";
|
|
367
|
-
console.log(
|
|
368
|
-
`${pre} ${path2} ${numFound} \xB7 ${numOptimized} \xB7 ${numFlattened} \xB7 ${numStyled} ${timingStr} ${memStr}`
|
|
369
|
-
);
|
|
370
|
-
}
|
|
371
|
-
return {
|
|
372
|
-
ast,
|
|
373
|
-
styles,
|
|
374
|
-
js: result.code,
|
|
375
|
-
map: result.map
|
|
376
|
-
};
|
|
377
|
-
}
|
|
378
|
-
export {
|
|
379
|
-
extractToClassNames
|
|
380
|
-
};
|
|
3
|
+
`),typeof T!="string")throw new Error("`source` must be a string of javascript");if(n&&!Z.isAbsolute(n))throw new Error("`sourcePath` must be an absolute path to a .js file");/.[tj]sx?$/i.test(n||"")||console.log(`${n==null?void 0:n.slice(0,100)} - bad filename.`),await j.loadTamagui(g);const k=g.logTimings??!0,z=Date.now(),F=k?process.memoryUsage():null;let S;try{S=ee(T)}catch(r){throw console.error("babel parse error:",n==null?void 0:n.slice(0,100)),r}X.mark("babel-parse",c==="verbose");const y=new Map,q={};let w=!1;const p=await j.parse(S,{shouldPrintDebug:c,...g,sourcePath:n,target:"html",extractStyledDefinitions:!0,onStyleRule(r,f){const d=f.join(";");c&&console.log(`adding styled() rule: .${r} ${d}`),y.set(`.${r}`,{css:d,commentTexts:[]})},getFlattenedNode:({tag:r})=>(w=!0,r),onExtractTag:({parserProps:r,attrs:f,node:d,attemptEval:h,jsxPath:x,originalNodeName:C,filePath:v,lineNumbers:_,programPath:L,isFlattened:$,completeProps:A,staticConfig:N})=>{var G;if(N.acceptsClassName===!1){c&&console.log("bail, acceptsClassName is false");return}const H=w;w=!1;let l=[];const M=[];let u=[],b={};for(const s of f)s.type==="style"&&(b={...b,...s.value});const Q=s=>{if(!Object.keys(s).some(e=>V[e]))return s;for(const e in V)e in b&&(s[e]=s[e]??b[e]);return s},O=s=>{if(!s)return[];const t=Q(s),e=J(t);return e.length&&(u=[...u,...e]),e};let B=1;for(const s of f)switch(s.type){case"style":{if($){const t=O(s.value),e=P(t.map(o=>o.identifier).join(" ")),a=l.find(o=>o.type=="StringLiteral");a?a.value=`${a.value} ${e}`:l=[...l,i.stringLiteral(e)]}else{const t=J(s.value);u=[...u,...t];for(const e of t){const a=e.pseudo?`${e.property}-${e.pseudo}`:e.property;M.push(i.jsxAttribute(i.jsxIdentifier(a),i.stringLiteral(e.identifier)))}}break}case"attr":{const t=s.value;if(i.isJSXSpreadAttribute(t))R(t)&&l.push(i.logicalExpression("&&",t.argument,i.memberExpression(t.argument,i.identifier("className"))));else if(t.name.name==="className"){const e=t.value;if(e)try{const a=h(e);l.push(i.stringLiteral(a))}catch{l.push(e.expression)}continue}M.push(t);break}case"ternary":{const t=ie(r,s.value,x,j.getTamagui(),n||"",B,c);if(c&&t&&console.log("ternary (mediaStyles)",((G=t.ternaryWithoutMedia)==null?void 0:G.inlineMediaQuery)??"",t.mediaStyles.map(e=>e.identifier).join(".")),!t){W(s.value,O(s.value.consequent),O(s.value.alternate));continue}B++,t.mediaStyles&&(u=[...u,...t.mediaStyles]),t.ternaryWithoutMedia?W(t.ternaryWithoutMedia,t.mediaStyles,[]):l=[...l,...t.mediaStyles.map(e=>i.stringLiteral(e.identifier))];break}}function W(s,t,e){const a=t.map(m=>m.identifier).join(" "),o=e.map(m=>m.identifier).join(" ");t.length&&e.length?l.push(i.conditionalExpression(s.test,i.stringLiteral(a),i.stringLiteral(o))):l.push(i.conditionalExpression(s.test,i.stringLiteral(" "+a),i.stringLiteral(" "+o)))}if(c&&console.log(` finalClassNames
|
|
4
|
+
`,re(l.map(s=>s.value).join(" "))),d.attributes=M,l.length){const s=(()=>{let o="";if(!$)return o;if(process.env.TAMAGUI_DEBUG_OPTIMIZATIONS&&(o+="is_tamagui_flattened"),N.componentName&&(o+=` is_${N.componentName}`),N.isText){let m=A.fontFamily;m[0]==="$"&&(m=m.slice(1)),o+=` font_${m}`}return o})(),t=te(l,s),e=t?ne(x,q,t):null;let a=e;if(e&&!i.isIdentifier(e)&&H){se(L);const o=f.filter(m=>i.isJSXSpreadAttribute(m.value)&&R(m.value));a=i.callExpression(i.identifier("concatClassName"),[a,...o.map(m=>m.value.argument)])}d.attributes.push(i.jsxAttribute(i.jsxIdentifier("className"),i.jsxExpressionContainer(a)))}const I=Y.format("/* %s:%s (%s) */",v,_,C);for(const{identifier:s,rules:t}of u){const e=`.${s}`;if(y.has(e)){if(I){const a=y.get(e);a.commentTexts.push(I),y.set(e,a)}}else t.length&&y.set(e,{css:t.join(`
|
|
5
|
+
`),commentTexts:[I]})}}});if(!p||!p.modified&&!p.optimized&&!p.flattened&&!p.styled)return c&&console.log("no res or none modified",p),null;const U=Array.from(y.values()).map(r=>r.css).join(`
|
|
6
|
+
`).trim(),E=D(S,{concise:!1,filename:n,retainLines:!1,sourceFileName:n,sourceMaps:!0},T);if(c&&(console.log(`
|
|
7
|
+
-------- output code -------
|
|
8
|
+
|
|
9
|
+
`,E.code.split(`
|
|
10
|
+
`).filter(r=>!r.startsWith("//")).join(`
|
|
11
|
+
`)),console.log(`
|
|
12
|
+
-------- output style --------
|
|
13
|
+
|
|
14
|
+
`,U)),k){const r=F?Math.round((process.memoryUsage().heapUsed-F.heapUsed)/1024/1204*10)/10:0,f=K(n||"").replace(/\.[jt]sx?$/,"").slice(0,22).trim().padStart(24),d=`${p.styled}`.padStart(3),h=`${p.optimized}`.padStart(3),x=`${p.found}`.padStart(3),C=`${p.flattened}`.padStart(3),v=process.env.DEBUG&&r>10?` ${r}MB`:"",L=`${Date.now()-z}ms`.padStart(6),$=ae(g),A=v?`(${v})`:"";console.log(`${$} ${f} ${x} \xB7 ${h} \xB7 ${C} \xB7 ${d} ${L} ${A}`)}return{ast:S,styles:U,js:E.code,map:E.map}}export{je as extractToClassNames};
|
|
381
15
|
//# sourceMappingURL=extractToClassNames.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/extractor/extractToClassNames.ts"],
|
|
4
4
|
"sourcesContent": ["import * as path from 'path'\nimport { basename } from 'path'\nimport * as util from 'util'\n\nimport generate from '@babel/generator'\nimport * as t from '@babel/types'\nimport { getStylesAtomic } from '@tamagui/core-node'\nimport { concatClassName } from '@tamagui/helpers'\nimport type { ViewStyle } from 'react-native'\n\nimport type { ClassNameObject, StyleObject, TamaguiOptions, Ternary } from '../types.js'\nimport { babelParse } from './babelParse.js'\nimport { buildClassName } from './buildClassName.js'\nimport { Extractor } from './createExtractor.js'\nimport { ensureImportingConcat } from './ensureImportingConcat.js'\nimport { isSimpleSpread } from './extractHelpers.js'\nimport { extractMediaStyle } from './extractMediaStyle.js'\nimport { getPrefixLogs } from './getPrefixLogs.js'\nimport { hoistClassNames } from './hoistClassNames.js'\nimport { logLines } from './logLines.js'\nimport { timer } from './timer.js'\n\nconst mergeStyleGroups = {\n shadowOpacity: true,\n shadowRadius: true,\n shadowColor: true,\n shadowOffset: true,\n}\n\nexport type ExtractedResponse = {\n js: string | Buffer\n styles: string\n stylesPath?: string\n ast: t.File\n map: any // RawSourceMap from 'source-map'\n}\n\nexport type ExtractToClassNamesProps = {\n extractor: Extractor\n source: string | Buffer\n sourcePath?: string\n options: TamaguiOptions\n shouldPrintDebug: boolean | 'verbose'\n}\n\nexport async function extractToClassNames({\n extractor,\n source,\n sourcePath,\n options,\n shouldPrintDebug,\n}: ExtractToClassNamesProps): Promise<ExtractedResponse | null> {\n const tm = timer()\n\n if (shouldPrintDebug) {\n console.log(`--- ${sourcePath} --- \\n\\n`)\n }\n\n if (typeof source !== 'string') {\n throw new Error('`source` must be a string of javascript')\n }\n if (sourcePath && !path.isAbsolute(sourcePath)) {\n throw new Error('`sourcePath` must be an absolute path to a .js file')\n }\n if (!/.[tj]sx?$/i.test(sourcePath || '')) {\n console.log(`${sourcePath?.slice(0, 100)} - bad filename.`)\n }\n\n // dont include loading in timing of parsing (one time cost)\n await extractor.loadTamagui(options)\n\n const shouldLogTiming = options.logTimings ?? true\n const start = Date.now()\n const mem = shouldLogTiming ? process.memoryUsage() : null\n\n // Using a map for (officially supported) guaranteed insertion order\n let ast: t.File\n\n try {\n ast = babelParse(source)\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('babel parse error:', sourcePath?.slice(0, 100))\n throw err\n }\n\n tm.mark(`babel-parse`, shouldPrintDebug === 'verbose')\n\n const cssMap = new Map<string, { css: string; commentTexts: string[] }>()\n const existingHoists: { [key: string]: t.Identifier } = {}\n\n let hasFlattened = false\n\n const res = await extractor.parse(ast, {\n shouldPrintDebug,\n ...options,\n sourcePath,\n target: 'html',\n extractStyledDefinitions: true,\n onStyleRule(identifier, rules) {\n const css = rules.join(';')\n if (shouldPrintDebug) {\n // eslint-disable-next-line no-console\n console.log(`adding styled() rule: .${identifier} ${css}`)\n }\n cssMap.set(`.${identifier}`, { css, commentTexts: [] })\n },\n getFlattenedNode: ({ tag }) => {\n hasFlattened = true\n return tag\n },\n onExtractTag: ({\n parserProps,\n attrs,\n node,\n attemptEval,\n jsxPath,\n originalNodeName,\n filePath,\n lineNumbers,\n programPath,\n isFlattened,\n completeProps,\n staticConfig,\n }) => {\n // bail out of views that don't accept className (falls back to runtime + style={})\n if (staticConfig.acceptsClassName === false) {\n if (shouldPrintDebug) {\n // eslint-disable-next-line no-console\n console.log(`bail, acceptsClassName is false`)\n }\n return\n }\n\n // reset hasFlattened\n const didFlattenThisTag = hasFlattened\n hasFlattened = false\n\n let finalClassNames: ClassNameObject[] = []\n const finalAttrs: (t.JSXAttribute | t.JSXSpreadAttribute)[] = []\n let finalStyles: StyleObject[] = []\n\n let viewStyles = {}\n for (const attr of attrs) {\n if (attr.type === 'style') {\n viewStyles = {\n ...viewStyles,\n ...attr.value,\n }\n }\n }\n\n const ensureNeededPrevStyle = (style: ViewStyle) => {\n // ensure all group keys are merged\n const keys = Object.keys(style)\n if (!keys.some((key) => mergeStyleGroups[key])) {\n return style\n }\n for (const k in mergeStyleGroups) {\n if (k in viewStyles) {\n style[k] = style[k] ?? viewStyles[k]\n }\n }\n return style\n }\n\n const addStyles = (style: ViewStyle | null): StyleObject[] => {\n if (!style) return []\n const styleWithPrev = ensureNeededPrevStyle(style)\n const res = getStylesAtomic(styleWithPrev)\n if (res.length) {\n finalStyles = [...finalStyles, ...res]\n }\n return res\n }\n\n // 1 to start above any :hover styles\n let lastMediaImportance = 1\n for (const attr of attrs) {\n switch (attr.type) {\n case 'style': {\n if (!isFlattened) {\n const styles = getStylesAtomic(attr.value)\n\n finalStyles = [...finalStyles, ...styles]\n\n for (const style of styles) {\n // leave them as attributes\n const prop = style.pseudo\n ? `${style.property}-${style.pseudo}`\n : style.property\n finalAttrs.push(\n t.jsxAttribute(t.jsxIdentifier(prop), t.stringLiteral(style.identifier))\n )\n }\n } else {\n const styles = addStyles(attr.value)\n const newClassNames = concatClassName(\n styles.map((x) => x.identifier).join(' ')\n )\n const existing = finalClassNames.find(\n (x) => x.type == 'StringLiteral'\n ) as t.StringLiteral | null\n\n if (existing) {\n existing.value = `${existing.value} ${newClassNames}`\n } else {\n finalClassNames = [...finalClassNames, t.stringLiteral(newClassNames)]\n }\n }\n\n break\n }\n case 'attr': {\n const val = attr.value\n if (t.isJSXSpreadAttribute(val)) {\n if (isSimpleSpread(val)) {\n finalClassNames.push(\n t.logicalExpression(\n '&&',\n val.argument,\n t.memberExpression(val.argument, t.identifier('className'))\n )\n )\n }\n } else if (val.name.name === 'className') {\n const value = val.value\n if (value) {\n try {\n const evaluatedValue = attemptEval(value)\n finalClassNames.push(t.stringLiteral(evaluatedValue))\n } catch (e) {\n finalClassNames.push(value['expression'])\n }\n }\n continue\n }\n finalAttrs.push(val)\n break\n }\n case 'ternary': {\n const mediaExtraction = extractMediaStyle(\n parserProps,\n attr.value,\n jsxPath,\n extractor.getTamagui()!,\n sourcePath || '',\n lastMediaImportance,\n shouldPrintDebug\n )\n if (shouldPrintDebug) {\n if (mediaExtraction) {\n // eslint-disable-next-line no-console\n console.log(\n 'ternary (mediaStyles)',\n mediaExtraction.ternaryWithoutMedia?.inlineMediaQuery ?? '',\n mediaExtraction.mediaStyles.map((x) => x.identifier).join('.')\n )\n }\n }\n if (!mediaExtraction) {\n addTernaryStyle(\n attr.value,\n addStyles(attr.value.consequent),\n addStyles(attr.value.alternate)\n )\n continue\n }\n lastMediaImportance++\n if (mediaExtraction.mediaStyles) {\n finalStyles = [...finalStyles, ...mediaExtraction.mediaStyles]\n }\n if (mediaExtraction.ternaryWithoutMedia) {\n addTernaryStyle(\n mediaExtraction.ternaryWithoutMedia,\n mediaExtraction.mediaStyles,\n []\n )\n } else {\n finalClassNames = [\n ...finalClassNames,\n ...mediaExtraction.mediaStyles.map((x) => t.stringLiteral(x.identifier)),\n ]\n }\n break\n }\n }\n }\n\n function addTernaryStyle(ternary: Ternary, a: any, b: any) {\n const cCN = a.map((x) => x.identifier).join(' ')\n const aCN = b.map((x) => x.identifier).join(' ')\n\n if (a.length && b.length) {\n finalClassNames.push(\n t.conditionalExpression(\n ternary.test,\n t.stringLiteral(cCN),\n t.stringLiteral(aCN)\n )\n )\n } else {\n finalClassNames.push(\n t.conditionalExpression(\n ternary.test,\n t.stringLiteral(' ' + cCN),\n t.stringLiteral(' ' + aCN)\n )\n )\n }\n }\n\n if (shouldPrintDebug) {\n // eslint-disable-next-line no-console\n console.log(\n ' finalClassNames\\n',\n logLines(finalClassNames.map((x) => x['value']).join(' '))\n )\n }\n\n node.attributes = finalAttrs\n\n if (finalClassNames.length) {\n const extraClassNames = (() => {\n let value = ''\n if (!isFlattened) {\n return value\n }\n\n // helper to see how many get flattened\n if (process.env.TAMAGUI_DEBUG_OPTIMIZATIONS) {\n value += `is_tamagui_flattened`\n }\n\n // add is_Component className\n if (staticConfig.componentName) {\n value += ` is_${staticConfig.componentName}`\n }\n\n if (staticConfig.isText) {\n let family = completeProps.fontFamily\n if (family[0] === '$') {\n family = family.slice(1)\n }\n value += ` font_${family}`\n }\n\n return value\n })()\n\n // inserts the _cn variable and uses it for className\n const names = buildClassName(finalClassNames, extraClassNames)\n\n const nameExpr = names ? hoistClassNames(jsxPath, existingHoists, names) : null\n let expr = nameExpr\n\n // if has some spreads, use concat helper\n if (nameExpr && !t.isIdentifier(nameExpr)) {\n if (!didFlattenThisTag) {\n // not flat\n } else {\n ensureImportingConcat(programPath)\n const simpleSpreads = attrs.filter(\n (x) => t.isJSXSpreadAttribute(x.value) && isSimpleSpread(x.value)\n )\n expr = t.callExpression(t.identifier('concatClassName'), [\n expr,\n ...simpleSpreads.map((val) => val.value['argument']),\n ])\n }\n }\n\n node.attributes.push(\n t.jsxAttribute(t.jsxIdentifier('className'), t.jsxExpressionContainer(expr))\n )\n }\n\n const comment = util.format(\n '/* %s:%s (%s) */',\n filePath,\n lineNumbers,\n originalNodeName\n )\n\n for (const { identifier, rules } of finalStyles) {\n const className = `.${identifier}`\n if (cssMap.has(className)) {\n if (comment) {\n const val = cssMap.get(className)!\n val.commentTexts.push(comment)\n cssMap.set(className, val)\n }\n } else if (rules.length) {\n cssMap.set(className, {\n css: rules.join('\\n'),\n commentTexts: [comment],\n })\n }\n }\n },\n })\n\n if (!res || (!res.modified && !res.optimized && !res.flattened && !res.styled)) {\n if (shouldPrintDebug) {\n // eslint-disable-next-line no-console\n console.log('no res or none modified', res)\n }\n return null\n }\n\n const styles = Array.from(cssMap.values())\n .map((x) => x.css)\n .join('\\n')\n .trim()\n\n // @ts-ignore\n const result = generate(\n ast as any,\n {\n concise: false,\n filename: sourcePath,\n // this makes the debug output terrible, and i think sourcemap works already\n retainLines: false,\n sourceFileName: sourcePath,\n sourceMaps: true,\n },\n source\n )\n\n if (shouldPrintDebug) {\n // eslint-disable-next-line no-console\n console.log(\n '\\n -------- output code ------- \\n\\n',\n result.code\n .split('\\n')\n .filter((x) => !x.startsWith('//'))\n .join('\\n')\n )\n // eslint-disable-next-line no-console\n console.log('\\n -------- output style -------- \\n\\n', styles)\n }\n\n if (shouldLogTiming) {\n const memUsed = mem\n ? Math.round(((process.memoryUsage().heapUsed - mem.heapUsed) / 1024 / 1204) * 10) /\n 10\n : 0\n const path = basename(sourcePath || '')\n .replace(/\\.[jt]sx?$/, '')\n .slice(0, 22)\n .trim()\n .padStart(24)\n\n const numStyled = `${res.styled}`.padStart(3)\n const numOptimized = `${res.optimized}`.padStart(3)\n const numFound = `${res.found}`.padStart(3)\n const numFlattened = `${res.flattened}`.padStart(3)\n const memory = process.env.DEBUG && memUsed > 10 ? ` ${memUsed}MB` : ''\n const timing = Date.now() - start\n const timingStr = `${timing}ms`.padStart(6)\n const pre = getPrefixLogs(options)\n const memStr = memory ? `(${memory})` : ''\n // eslint-disable-next-line no-console\n console.log(\n `${pre} ${path} ${numFound} \u00B7 ${numOptimized} \u00B7 ${numFlattened} \u00B7 ${numStyled} ${timingStr} ${memStr}`\n )\n }\n\n return {\n ast,\n styles,\n js: result.code,\n map: result.map,\n }\n}\n"],
|
|
5
|
-
"mappings": "AAAA,
|
|
6
|
-
"names": ["res", "styles", "
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["path", "basename", "util", "generate", "t", "getStylesAtomic", "concatClassName", "babelParse", "buildClassName", "ensureImportingConcat", "isSimpleSpread", "extractMediaStyle", "getPrefixLogs", "hoistClassNames", "logLines", "timer", "mergeStyleGroups", "extractToClassNames", "extractor", "source", "sourcePath", "options", "shouldPrintDebug", "tm", "shouldLogTiming", "start", "mem", "ast", "err", "cssMap", "existingHoists", "hasFlattened", "res", "identifier", "rules", "css", "tag", "parserProps", "attrs", "node", "attemptEval", "jsxPath", "originalNodeName", "filePath", "lineNumbers", "programPath", "isFlattened", "completeProps", "staticConfig", "_a", "didFlattenThisTag", "finalClassNames", "finalAttrs", "finalStyles", "viewStyles", "attr", "ensureNeededPrevStyle", "style", "key", "k", "addStyles", "styleWithPrev", "lastMediaImportance", "styles", "newClassNames", "x", "existing", "prop", "val", "value", "evaluatedValue", "mediaExtraction", "addTernaryStyle", "ternary", "a", "b", "cCN", "aCN", "extraClassNames", "family", "names", "nameExpr", "expr", "simpleSpreads", "comment", "className", "result", "memUsed", "numStyled", "numOptimized", "numFound", "numFlattened", "memory", "timingStr", "pre", "memStr"]
|
|
7
7
|
}
|