@tamagui/codemod-flat-values 3.0.0-beta.889.1 → 3.0.0-beta.901.1
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/builtInNames.mjs +2 -1
- package/dist/builtInNames.mjs.map +1 -1
- package/dist/convert.mjs +98 -23
- package/dist/convert.mjs.map +1 -1
- package/dist/grammar.mjs +6 -1
- package/dist/grammar.mjs.map +1 -1
- package/dist/index.mjs +15 -3
- package/dist/index.mjs.map +1 -1
- package/dist/report.mjs +22 -6
- package/dist/report.mjs.map +1 -1
- package/dist/sheetAnatomy.mjs +200 -0
- package/dist/sheetAnatomy.mjs.map +1 -0
- package/package.json +6 -6
- package/src/builtInNames.ts +2 -0
- package/src/convert.ts +149 -45
- package/src/grammar.ts +10 -0
- package/src/index.ts +32 -1
- package/src/report.ts +46 -18
- package/src/sheetAnatomy.ts +277 -0
package/dist/builtInNames.mjs
CHANGED
|
@@ -2,7 +2,8 @@ import { v6ThemeNameReplacements } from "@tamagui/style-grammar/tooling";
|
|
|
2
2
|
|
|
3
3
|
const v6CodemodBuiltInNameReplacements = {
|
|
4
4
|
...v6ThemeNameReplacements,
|
|
5
|
-
backgroundActive: "background-press"
|
|
5
|
+
backgroundActive: "background-press",
|
|
6
|
+
true: "4"
|
|
6
7
|
};
|
|
7
8
|
const builtInTokenPattern = new RegExp(`\\$(${Object.keys(v6CodemodBuiltInNameReplacements).join("|")})(?![\\w-])`, "g");
|
|
8
9
|
function replaceV6BuiltInTokens(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtInNames.js","names":[],"sources":["builtInNames.js"],"sourcesContent":["import { v6ThemeNameReplacements } from \"@tamagui/style-grammar/tooling\";\nconst v6CodemodBuiltInNameReplacements = {\n ...v6ThemeNameReplacements,\n // v3 removed backgroundActive after its component defaults had already\n // stopped resolving; press is the corrected active-state default\n backgroundActive: \"background-press\"\n};\nconst builtInTokenPattern = new RegExp(\n `\\\\$(${Object.keys(v6CodemodBuiltInNameReplacements).join(\"|\")})(?![\\\\w-])`,\n \"g\"\n);\nfunction replaceV6BuiltInTokens(value) {\n return value.replace(\n builtInTokenPattern,\n (_, name) => `$${v6CodemodBuiltInNameReplacements[name]}`\n );\n}\nexport {\n replaceV6BuiltInTokens,\n v6CodemodBuiltInNameReplacements\n};\n//# sourceMappingURL=builtInNames.js.map\n"],"mappings":";;;AACA,MAAM,mCAAmC;CACvC,GAAG;CAGH,kBAAkB;
|
|
1
|
+
{"version":3,"file":"builtInNames.js","names":[],"sources":["builtInNames.js"],"sourcesContent":["import { v6ThemeNameReplacements } from \"@tamagui/style-grammar/tooling\";\nconst v6CodemodBuiltInNameReplacements = {\n ...v6ThemeNameReplacements,\n // v3 removed backgroundActive after its component defaults had already\n // stopped resolving; press is the corrected active-state default\n backgroundActive: \"background-press\",\n // v3 configs no longer alias `true`; the default config pointed it at `4`\n true: \"4\"\n};\nconst builtInTokenPattern = new RegExp(\n `\\\\$(${Object.keys(v6CodemodBuiltInNameReplacements).join(\"|\")})(?![\\\\w-])`,\n \"g\"\n);\nfunction replaceV6BuiltInTokens(value) {\n return value.replace(\n builtInTokenPattern,\n (_, name) => `$${v6CodemodBuiltInNameReplacements[name]}`\n );\n}\nexport {\n replaceV6BuiltInTokens,\n v6CodemodBuiltInNameReplacements\n};\n//# sourceMappingURL=builtInNames.js.map\n"],"mappings":";;;AACA,MAAM,mCAAmC;CACvC,GAAG;CAGH,kBAAkB;CAElB,MAAM;AACR;AACA,MAAM,sBAAsB,IAAI,OAC9B,OAAO,OAAO,KAAK,gCAAgC,CAAC,CAAC,KAAK,GAAG,EAAE,cAC/D,GACF;AACA,SAAS,uBAAuB,OAAO;CACrC,OAAO,MAAM,QACX,sBACC,GAAG,SAAS,IAAI,iCAAiC,OACpD;AACF"}
|
package/dist/convert.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Node, SyntaxKind } from "ts-morph";
|
|
2
2
|
import { compact, literalTree, numericValue, runtimeType, staticLeafValue, unwrapExpression } from "./expressions.mjs";
|
|
3
|
-
import { assessFlatConversion, convertLegacyConditionProp, expandToLonghands, flatStringValue, mergeProgramValues, parseValue, printProgram, resolveProp, sharedPayload, shorthands, styleProps, unitSuffix } from "./grammar.mjs";
|
|
3
|
+
import { assessFlatConversion, convertLegacyConditionProp, expandToLonghands, flatStringValue, mergeProgramValues, parseValue, printProgram, resolveProp, sharedPayload, shorthands, styleProps, tokenVariantProps, unitSuffix } from "./grammar.mjs";
|
|
4
4
|
import { isLegacyConditionName, resolveLegacyName } from "./legacyNames.mjs";
|
|
5
5
|
import { classifyStructuredNativeValue } from "./structuredNative.mjs";
|
|
6
6
|
|
|
@@ -23,6 +23,7 @@ function createSite(kind, registry, containers, targets, host) {
|
|
|
23
23
|
members: [],
|
|
24
24
|
comments: /* @__PURE__ */ new Map(),
|
|
25
25
|
extras: [],
|
|
26
|
+
respelled: [],
|
|
26
27
|
warnings: [],
|
|
27
28
|
flags: [],
|
|
28
29
|
inventory: [],
|
|
@@ -54,6 +55,9 @@ function addAssessment(site, property, assessment) {
|
|
|
54
55
|
});
|
|
55
56
|
}
|
|
56
57
|
}
|
|
58
|
+
function isConvertedName(name) {
|
|
59
|
+
return name === "group" || styleProps.has(name) || tokenVariantProps.has(name) || isLegacyConditionName(name);
|
|
60
|
+
}
|
|
57
61
|
function addFlag(list, code, detail) {
|
|
58
62
|
if (!list.some((flag) => flag.code === code && flag.detail === detail)) {
|
|
59
63
|
list.push({
|
|
@@ -66,25 +70,34 @@ function addNote(site, note) {
|
|
|
66
70
|
if (!site.notes.includes(note)) site.notes.push(note);
|
|
67
71
|
}
|
|
68
72
|
const legacyPaletteStepPattern = /(?:^|[^\w-])\$?((?:gray|mauve|slate|sage|olive|sand|tomato|red|ruby|crimson|pink|plum|purple|violet|iris|indigo|blue|cyan|teal|jade|green|grass|bronze|gold|brown|orange|amber|yellow|lime|mint|sky)(?:1[0-2]|[1-9]))(?![\w-])/g;
|
|
69
|
-
|
|
73
|
+
const legacyTrueTokenPattern = /(?:^|[^\w-])\$true(?![\w-])/;
|
|
74
|
+
function legacyTokenWarnings(prop, values) {
|
|
75
|
+
const warnings = [];
|
|
76
|
+
if (values.some((value) => legacyTrueTokenPattern.test(value))) {
|
|
77
|
+
warnings.push({
|
|
78
|
+
code: "legacy-true-token",
|
|
79
|
+
detail: `${prop} spelled the \`$true\` alias, written as \`4\` because the default config aliased it there; confirm the app's tokens agree`
|
|
80
|
+
});
|
|
81
|
+
}
|
|
70
82
|
const names = /* @__PURE__ */ new Set();
|
|
71
83
|
for (const value of values) {
|
|
72
84
|
legacyPaletteStepPattern.lastIndex = 0;
|
|
73
85
|
for (const match of value.matchAll(legacyPaletteStepPattern)) names.add(match[1]);
|
|
74
86
|
}
|
|
75
|
-
if (!names.size) return
|
|
87
|
+
if (!names.size) return warnings;
|
|
76
88
|
const formatted = [...names].sort().map((name) => `\`${name}\``).join(", ");
|
|
77
|
-
|
|
89
|
+
warnings.push({
|
|
78
90
|
code: "legacy-palette-token",
|
|
79
91
|
detail: `${prop} preserves ${formatted}, which @tamagui/config/v6 does not define; choose an absolute palette token or an adaptive colorN value`
|
|
80
|
-
};
|
|
92
|
+
});
|
|
93
|
+
return warnings;
|
|
81
94
|
}
|
|
82
95
|
const empty = {
|
|
83
96
|
payload: null,
|
|
84
97
|
text: null,
|
|
85
98
|
dynamic: false,
|
|
86
99
|
problem: null,
|
|
87
|
-
|
|
100
|
+
warnings: [],
|
|
88
101
|
blocked: null,
|
|
89
102
|
inventory: null
|
|
90
103
|
};
|
|
@@ -144,7 +157,7 @@ function classifyDynamic(prop, expression, registry) {
|
|
|
144
157
|
payload: interpolate(prop, tree.text, tree.kind, registry),
|
|
145
158
|
text: rewrittenTokenText,
|
|
146
159
|
dynamic: true,
|
|
147
|
-
|
|
160
|
+
warnings: legacyTokenWarnings(prop, tree.strings)
|
|
148
161
|
};
|
|
149
162
|
}
|
|
150
163
|
if (tree) {
|
|
@@ -207,8 +220,9 @@ function classifyDynamic(prop, expression, registry) {
|
|
|
207
220
|
function pushBase(site, prop, text, value, literalString) {
|
|
208
221
|
const index = site.index++;
|
|
209
222
|
if (literalString !== null) {
|
|
210
|
-
const warning
|
|
211
|
-
|
|
223
|
+
for (const warning of legacyTokenWarnings(prop, [literalString])) {
|
|
224
|
+
addFlag(site.warnings, warning.code, warning.detail);
|
|
225
|
+
}
|
|
212
226
|
if (literalString.includes("$")) {
|
|
213
227
|
site.legacy = true;
|
|
214
228
|
const allowed2 = assessProgram(site, prop, []);
|
|
@@ -305,8 +319,8 @@ function pushBase(site, prop, text, value, literalString) {
|
|
|
305
319
|
site.legacy = true;
|
|
306
320
|
addFlag(site.flags, classified.problem.code, classified.problem.detail);
|
|
307
321
|
}
|
|
308
|
-
|
|
309
|
-
addFlag(site.warnings,
|
|
322
|
+
for (const warning of classified.warnings) {
|
|
323
|
+
addFlag(site.warnings, warning.code, warning.detail);
|
|
310
324
|
}
|
|
311
325
|
if (classified.inventory) {
|
|
312
326
|
addFlag(site.inventory, classified.inventory.code, classified.inventory.detail);
|
|
@@ -481,8 +495,8 @@ function pushLegacy(site, name, text, initializer, node) {
|
|
|
481
495
|
for (let index2 = 0; index2 < evaluated.leaves.length; index2++) {
|
|
482
496
|
const leaf = evaluated.leaves[index2];
|
|
483
497
|
const classified = classifyDynamic(leaf.prop, leaf.expression, site.registry);
|
|
484
|
-
|
|
485
|
-
addFlag(site.warnings,
|
|
498
|
+
for (const warning of classified.warnings) {
|
|
499
|
+
addFlag(site.warnings, warning.code, `${leaf.path}: ${warning.detail}`);
|
|
486
500
|
}
|
|
487
501
|
if (classified.payload === null) {
|
|
488
502
|
const flag = classified.problem ?? classified.blocked;
|
|
@@ -871,7 +885,7 @@ function isConvertedJsxAttribute(attribute) {
|
|
|
871
885
|
if (Node.isJsxSpreadAttribute(attribute)) return true;
|
|
872
886
|
if (!Node.isJsxAttribute(attribute)) return false;
|
|
873
887
|
const name = jsxAttributeName(attribute);
|
|
874
|
-
return !!name && (name
|
|
888
|
+
return !!name && isConvertedName(name);
|
|
875
889
|
}
|
|
876
890
|
function rewriteJsxSite(opening, entries) {
|
|
877
891
|
const attributes = opening.getAttributes();
|
|
@@ -894,7 +908,7 @@ function rewriteJsxSite(opening, entries) {
|
|
|
894
908
|
const prefix = source.slice(0, first.getStart() - start);
|
|
895
909
|
const suffix = source.slice(last.getEnd() - start);
|
|
896
910
|
const authoredMultiline = prefix.includes("\n") || source.slice(first.getStart() - start, last.getEnd() - start).includes("\n");
|
|
897
|
-
opening.replaceWithText(authoredMultiline ? `${prefix.replace(/[ \t]+$/, "")}${rendered.join("\n")}${suffix.replace(/\n[ \t]+/, "\n")}` : `${prefix}${rendered.join(" ")}${suffix}`);
|
|
911
|
+
opening.replaceWithText(authoredMultiline ? `${prefix.replace(/[ \t]+$/, "")}${rendered.map((text) => ` ${text}`).join("\n")}${suffix.replace(/\n[ \t]+/, "\n")}` : `${prefix}${rendered.join(" ")}${suffix}`);
|
|
898
912
|
}
|
|
899
913
|
function containerExtras(site, declaration, index) {
|
|
900
914
|
const target = site.containers.targets.get(declaration);
|
|
@@ -921,7 +935,7 @@ function convertJsxSite(opening, registry, containers, targets, host, write = fa
|
|
|
921
935
|
if (Node.isPropertyAssignment(property)) {
|
|
922
936
|
const name2 = propertyName(property.getNameNode());
|
|
923
937
|
if (name2 !== null) {
|
|
924
|
-
if (
|
|
938
|
+
if (isConvertedName(name2)) {
|
|
925
939
|
pushStyledProperty(site, name2, property, `${name2}={${property.getInitializerOrThrow().getText()}}`);
|
|
926
940
|
} else {
|
|
927
941
|
site.members.push({
|
|
@@ -967,6 +981,10 @@ function convertJsxSite(opening, registry, containers, targets, host, write = fa
|
|
|
967
981
|
pushLegacy(site, name, text, jsxExpression(attribute), attribute);
|
|
968
982
|
continue;
|
|
969
983
|
}
|
|
984
|
+
if (tokenVariantProps.has(name)) {
|
|
985
|
+
if (pushTokenVariant(site, name, attribute, text)) before.push(text);
|
|
986
|
+
continue;
|
|
987
|
+
}
|
|
970
988
|
if (!styleProps.has(name)) continue;
|
|
971
989
|
before.push(text);
|
|
972
990
|
const literal = jsxLiteralString(attribute);
|
|
@@ -981,7 +999,7 @@ function convertJsxSite(opening, registry, containers, targets, host, write = fa
|
|
|
981
999
|
line: sourceFile.getLineAndColumnAtPos(opening.getStart()).line,
|
|
982
1000
|
before: before.join(" "),
|
|
983
1001
|
after: entries.map((entry) => entry.text).join(" ") || "(no style props left)",
|
|
984
|
-
programs,
|
|
1002
|
+
programs: [...programs, ...site.respelled],
|
|
985
1003
|
assessments: site.assessments,
|
|
986
1004
|
assessmentVerdict: assessmentVerdict(site.assessments),
|
|
987
1005
|
warnings: site.warnings,
|
|
@@ -1014,10 +1032,67 @@ function pushStyledProperty(site, name, property, authoredText) {
|
|
|
1014
1032
|
pushLegacy(site, name, text, initializer, property);
|
|
1015
1033
|
return;
|
|
1016
1034
|
}
|
|
1035
|
+
if (tokenVariantProps.has(name)) {
|
|
1036
|
+
pushTokenVariant(site, name, property, text);
|
|
1037
|
+
return;
|
|
1038
|
+
}
|
|
1017
1039
|
if (!styleProps.has(name)) return;
|
|
1018
1040
|
const literal = Node.isStringLiteral(initializer) || Node.isNoSubstitutionTemplateLiteral(initializer) ? initializer.getLiteralValue() : null;
|
|
1019
1041
|
pushBase(site, name, text, literal === null ? initializer : null, literal);
|
|
1020
1042
|
}
|
|
1043
|
+
function pushTokenVariant(site, name, node, text) {
|
|
1044
|
+
const index = site.index++;
|
|
1045
|
+
const initializer = node.getInitializer();
|
|
1046
|
+
const value = initializer !== void 0 && Node.isJsxExpression(initializer) ? initializer.getExpression() : initializer;
|
|
1047
|
+
const literals = value === void 0 ? [] : [value, ...value.getDescendants()].filter((candidate) => (Node.isStringLiteral(candidate) || Node.isNoSubstitutionTemplateLiteral(candidate)) && candidate.getLiteralValue().startsWith("$"));
|
|
1048
|
+
if (value === void 0 || literals.length === 0) {
|
|
1049
|
+
site.members.push({
|
|
1050
|
+
type: "passthrough",
|
|
1051
|
+
index,
|
|
1052
|
+
text
|
|
1053
|
+
});
|
|
1054
|
+
return false;
|
|
1055
|
+
}
|
|
1056
|
+
const source = value.getText();
|
|
1057
|
+
const start = value.getStart();
|
|
1058
|
+
let rewritten = "";
|
|
1059
|
+
let cursor = start;
|
|
1060
|
+
for (const literal of literals) {
|
|
1061
|
+
let replacement = "true";
|
|
1062
|
+
if (literal.getLiteralValue() !== "$true") {
|
|
1063
|
+
const flat = flatStringValue(literal.getLiteralValue(), site.registry);
|
|
1064
|
+
if (flat.text === null) {
|
|
1065
|
+
site.legacy = true;
|
|
1066
|
+
addFlag(site.flags, flat.error?.code ?? "unsupported-legacy-value", `${name}: ${flat.error?.message ?? `${literal.getText()} has no flat spelling`}`);
|
|
1067
|
+
site.members.push({
|
|
1068
|
+
type: "passthrough",
|
|
1069
|
+
index,
|
|
1070
|
+
text
|
|
1071
|
+
});
|
|
1072
|
+
return true;
|
|
1073
|
+
}
|
|
1074
|
+
const quote = literal.getText()[0];
|
|
1075
|
+
replacement = `${quote}${flat.text}${quote}`;
|
|
1076
|
+
}
|
|
1077
|
+
rewritten += source.slice(cursor - start, literal.getStart() - start);
|
|
1078
|
+
rewritten += replacement;
|
|
1079
|
+
cursor = literal.getEnd();
|
|
1080
|
+
}
|
|
1081
|
+
rewritten += source.slice(cursor - start);
|
|
1082
|
+
site.legacy = true;
|
|
1083
|
+
const output = Node.isJsxAttribute(node) ? Node.isStringLiteral(initializer) ? rewritten === "true" ? name : `${name}=${rewritten}` : `${name}={${rewritten}}` : site.kind === "jsx" ? `${name}={${rewritten}}` : textWithOuterComments(node, `${node.getNameNode().getText()}: ${rewritten}`);
|
|
1084
|
+
site.members.push({
|
|
1085
|
+
type: "passthrough",
|
|
1086
|
+
index,
|
|
1087
|
+
text: output
|
|
1088
|
+
});
|
|
1089
|
+
site.respelled.push({
|
|
1090
|
+
name,
|
|
1091
|
+
value: rewritten,
|
|
1092
|
+
dynamic: literals.length !== 1 || literals[0] !== value
|
|
1093
|
+
});
|
|
1094
|
+
return true;
|
|
1095
|
+
}
|
|
1021
1096
|
function convertStyleObject(object, kind, label, registry, containers, targets, host, write = false) {
|
|
1022
1097
|
const site = createSite(kind, registry, containers, targets, host);
|
|
1023
1098
|
const before = [];
|
|
@@ -1030,7 +1105,7 @@ function convertStyleObject(object, kind, label, registry, containers, targets,
|
|
|
1030
1105
|
if (Node.isPropertyAssignment(nested)) {
|
|
1031
1106
|
const name2 = propertyName(nested.getNameNode());
|
|
1032
1107
|
if (name2 !== null) {
|
|
1033
|
-
if (
|
|
1108
|
+
if (isConvertedName(name2)) {
|
|
1034
1109
|
pushStyledProperty(site, name2, nested);
|
|
1035
1110
|
} else {
|
|
1036
1111
|
site.members.push({
|
|
@@ -1065,7 +1140,7 @@ function convertStyleObject(object, kind, label, registry, containers, targets,
|
|
|
1065
1140
|
}
|
|
1066
1141
|
const name = propertyName(nameNode);
|
|
1067
1142
|
if (name === null) continue;
|
|
1068
|
-
if (!
|
|
1143
|
+
if (!isConvertedName(name)) continue;
|
|
1069
1144
|
before.push(compact(property.getText()));
|
|
1070
1145
|
pushStyledProperty(site, name, property);
|
|
1071
1146
|
}
|
|
@@ -1078,7 +1153,7 @@ function convertStyleObject(object, kind, label, registry, containers, targets,
|
|
|
1078
1153
|
line: sourceFile.getLineAndColumnAtPos(object.getStart()).line,
|
|
1079
1154
|
before: before.join(", "),
|
|
1080
1155
|
after: entries.map((entry) => entry.text).join(", ") || "(no style props left)",
|
|
1081
|
-
programs,
|
|
1156
|
+
programs: [...programs, ...site.respelled],
|
|
1082
1157
|
assessments: site.assessments,
|
|
1083
1158
|
assessmentVerdict: assessmentVerdict(site.assessments),
|
|
1084
1159
|
warnings: site.warnings,
|
|
@@ -1099,7 +1174,7 @@ function isConvertedStyledProperty(property) {
|
|
|
1099
1174
|
const nameNode = property.getNameNode();
|
|
1100
1175
|
if (Node.isComputedPropertyName(nameNode)) return false;
|
|
1101
1176
|
const name = propertyName(nameNode);
|
|
1102
|
-
return !!name && (name
|
|
1177
|
+
return !!name && isConvertedName(name);
|
|
1103
1178
|
}
|
|
1104
1179
|
function allCommentTexts(node) {
|
|
1105
1180
|
const comments = /* @__PURE__ */ new Map();
|
|
@@ -1110,13 +1185,13 @@ function allCommentTexts(node) {
|
|
|
1110
1185
|
}
|
|
1111
1186
|
return [...comments.entries()].sort((left, right) => left[0] - right[0]).map((entry) => entry[1]);
|
|
1112
1187
|
}
|
|
1113
|
-
function textWithOuterComments(node) {
|
|
1188
|
+
function textWithOuterComments(node, text = node.getText()) {
|
|
1114
1189
|
const comments = /* @__PURE__ */ new Map();
|
|
1115
1190
|
for (const range of [...node.getLeadingCommentRanges(), ...node.getTrailingCommentRanges()]) {
|
|
1116
1191
|
comments.set(range.getPos(), range.getText());
|
|
1117
1192
|
}
|
|
1118
1193
|
const prefix = [...comments.entries()].sort((left, right) => left[0] - right[0]).map((entry) => entry[1]);
|
|
1119
|
-
return [...prefix,
|
|
1194
|
+
return [...prefix, text].join("\n ");
|
|
1120
1195
|
}
|
|
1121
1196
|
function rewriteStyleObject(object, entries) {
|
|
1122
1197
|
const rendered = [];
|
package/dist/convert.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","names":[],"sources":["convert.js"],"sourcesContent":["import {\n Node,\n SyntaxKind\n} from \"ts-morph\";\nimport {\n compact,\n literalTree,\n numericValue,\n runtimeType,\n staticLeafValue,\n unwrapExpression\n} from \"./expressions\";\nimport {\n assessFlatConversion,\n convertLegacyConditionProp,\n expandToLonghands,\n flatStringValue,\n mergeProgramValues,\n parseValue,\n printProgram,\n resolveProp,\n sharedPayload,\n shorthands,\n styleProps,\n unitSuffix\n} from \"./grammar\";\nimport { isLegacyConditionName, resolveLegacyName } from \"./legacyNames\";\nimport { classifyStructuredNativeValue } from \"./structuredNative\";\nfunction assessmentVerdict(assessments) {\n if (assessments.some((assessment) => assessment.verdict === \"ineligible\")) {\n return \"ineligible\";\n }\n if (assessments.some((assessment) => assessment.verdict === \"needs-relocation\")) {\n return \"needs-relocation\";\n }\n return assessments.length ? \"unknown-host\" : \"clean\";\n}\nfunction createSite(kind, registry, containers, targets, host) {\n return {\n kind,\n registry,\n containers,\n targets,\n host,\n members: [],\n comments: /* @__PURE__ */ new Map(),\n extras: [],\n warnings: [],\n flags: [],\n inventory: [],\n pending: [],\n assessments: [],\n notes: [],\n legacy: false,\n index: 0\n };\n}\nfunction assessProgram(site, property, modifiers) {\n const targetProperty = resolveProp(property);\n const assessment = assessFlatConversion(\n {\n property: targetProperty,\n modifiers,\n targets: site.targets,\n host: site.host\n },\n site.registry\n );\n if (assessment.verdict !== \"clean\") addAssessment(site, targetProperty, assessment);\n return assessment.verdict !== \"ineligible\";\n}\nfunction addAssessment(site, property, assessment) {\n if (assessment.verdict === \"clean\") return;\n if (!site.assessments.some(\n (finding) => finding.property === property && finding.verdict === assessment.verdict && JSON.stringify(finding.reasons) === JSON.stringify(assessment.reasons)\n )) {\n site.assessments.push({\n property,\n verdict: assessment.verdict,\n reasons: assessment.reasons\n });\n }\n}\nfunction addFlag(list, code, detail) {\n if (!list.some((flag) => flag.code === code && flag.detail === detail)) {\n list.push({ code, detail });\n }\n}\nfunction addNote(site, note) {\n if (!site.notes.includes(note)) site.notes.push(note);\n}\nconst legacyPaletteStepPattern = /(?:^|[^\\w-])\\$?((?:gray|mauve|slate|sage|olive|sand|tomato|red|ruby|crimson|pink|plum|purple|violet|iris|indigo|blue|cyan|teal|jade|green|grass|bronze|gold|brown|orange|amber|yellow|lime|mint|sky)(?:1[0-2]|[1-9]))(?![\\w-])/g;\nfunction legacyPaletteStepWarning(prop, values) {\n const names = /* @__PURE__ */ new Set();\n for (const value of values) {\n legacyPaletteStepPattern.lastIndex = 0;\n for (const match of value.matchAll(legacyPaletteStepPattern)) names.add(match[1]);\n }\n if (!names.size) return null;\n const formatted = [...names].sort().map((name) => `\\`${name}\\``).join(\", \");\n return {\n code: \"legacy-palette-token\",\n detail: `${prop} preserves ${formatted}, which @tamagui/config/v6 does not define; choose an absolute palette token or an adaptive colorN value`\n };\n}\nconst empty = {\n payload: null,\n text: null,\n dynamic: false,\n problem: null,\n warning: null,\n blocked: null,\n inventory: null\n};\nfunction interpolate(prop, text, kind, registry) {\n return `\\${${text}}${kind === \"number\" ? unitSuffix(resolveProp(prop), registry) : \"\"}`;\n}\nfunction classifyStatic(prop, value, registry) {\n const probe = sharedPayload(prop, value, registry);\n const error = probe.errors[0];\n if (error || probe.payload === null) {\n const flag = {\n code: error?.code ?? \"unsupported-legacy-value\",\n detail: `${prop}: ${error?.message ?? `\"${String(value)}\" has no flat spelling`}`\n };\n return { ...empty, problem: flag, blocked: flag };\n }\n return { ...empty, payload: probe.payload };\n}\nfunction reparsesAsBase(value, registry) {\n const parsed = parseValue(value, registry);\n return parsed.ok && parsed.value.clauses.length === 0 && parsed.value.base === value.trim();\n}\nfunction classifyDynamic(prop, expression, registry) {\n const current = unwrapExpression(expression);\n const source = compact(current.getText());\n const structured = classifyStructuredNativeValue(\n resolveProp(prop),\n current,\n source,\n registry\n );\n if (structured) {\n return {\n ...empty,\n payload: structured.payload,\n blocked: structured.blocked\n };\n }\n const tree = literalTree(current, registry);\n if (tree && tree.error) {\n const flag2 = {\n code: tree.error.code,\n detail: `${prop}: ${tree.error.message}`\n };\n return { ...empty, problem: flag2, blocked: flag2 };\n }\n if (tree && tree.kind !== \"nullish\") {\n const rewrittenTokenText = /\\$(?=[\\w-])/.test(source) && tree.text !== source ? tree.text : null;\n return {\n ...empty,\n payload: interpolate(prop, tree.text, tree.kind, registry),\n text: rewrittenTokenText,\n dynamic: true,\n warning: legacyPaletteStepWarning(prop, tree.strings)\n };\n }\n if (tree) {\n const flag2 = {\n code: \"empty-style-value\",\n detail: `${prop} value \"${source}\" is always nullish and cannot join a program`\n };\n return { ...empty, blocked: flag2 };\n }\n const runtime = runtimeType(current);\n if (runtime.kind === \"number\") {\n return {\n ...empty,\n payload: interpolate(prop, source, \"number\", registry),\n dynamic: true\n };\n }\n if (runtime.kind === \"string\") {\n const tokens = runtime.literals?.filter((literal) => literal.startsWith(\"$\"));\n if (tokens?.length) {\n const flag2 = {\n code: \"legacy-token-constant\",\n detail: `${prop} value \"${source}\" resolves to legacy token ${tokens.map((token) => `\"${token}\"`).join(\", \")}; migrate the constant it comes from`\n };\n return { ...empty, problem: flag2, blocked: flag2 };\n }\n if (runtime.literals === null) {\n return {\n ...empty,\n payload: interpolate(prop, source, \"string\", registry),\n dynamic: true,\n inventory: {\n code: \"dynamic-string-value\",\n detail: `${prop} value \"${source}\" is an open string; confirm it never holds a legacy \"$token\" spelling`\n }\n };\n }\n return {\n ...empty,\n payload: interpolate(prop, source, \"string\", registry),\n dynamic: true\n };\n }\n const flag = {\n code: \"unprovable-dynamic-value\",\n detail: `${prop} value \"${source}\" has no provable number or string type, so it cannot fold into a program`\n };\n return { ...empty, blocked: flag };\n}\nfunction pushBase(site, prop, text, value, literalString) {\n const index = site.index++;\n if (literalString !== null) {\n const warning = legacyPaletteStepWarning(prop, [literalString]);\n if (warning) addFlag(site.warnings, warning.code, warning.detail);\n if (literalString.includes(\"$\")) {\n site.legacy = true;\n const allowed2 = assessProgram(site, prop, []);\n const flat = flatStringValue(literalString, site.registry);\n const problem = flat.text === null ? {\n code: flat.error?.code ?? \"unsupported-legacy-value\",\n detail: `${prop}: ${flat.error?.message ?? `${JSON.stringify(literalString)} has no flat spelling`}`\n } : !reparsesAsBase(flat.text, site.registry) ? {\n code: \"value-reparses-as-program\",\n detail: `${prop} value ${JSON.stringify(flat.text)} does not read back as one flat base value`\n } : null;\n if (problem !== null) addFlag(site.flags, problem.code, problem.detail);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: allowed2 && problem === null ? flat.text : null,\n dynamic: false,\n blocked: problem,\n token: allowed2,\n activated: false\n });\n return;\n }\n if (!reparsesAsBase(literalString, site.registry)) {\n const flag = {\n code: \"value-reparses-as-program\",\n detail: `${prop} value ${JSON.stringify(literalString)} does not read back as one flat base value`\n };\n addFlag(site.flags, flag.code, flag.detail);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: null,\n dynamic: false,\n blocked: flag,\n token: false,\n activated: false\n });\n return;\n }\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: literalString,\n dynamic: false,\n blocked: null,\n token: false,\n activated: false\n });\n return;\n }\n const number = value ? numericValue(value) : null;\n if (number !== null) {\n const classified2 = classifyStatic(prop, number, site.registry);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: classified2.payload,\n dynamic: false,\n blocked: classified2.blocked,\n token: false,\n activated: false\n });\n return;\n }\n const kind = value?.getKind();\n if (value === null || kind === SyntaxKind.TrueKeyword || kind === SyntaxKind.FalseKeyword || kind === SyntaxKind.NullKeyword) {\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: null,\n dynamic: false,\n blocked: {\n code: \"non-css-style-value\",\n detail: `${prop} value \"${compact(text)}\" is not a CSS value and cannot join a program`\n },\n token: false,\n activated: false\n });\n return;\n }\n const classified = classifyDynamic(prop, value, site.registry);\n if (classified.problem) {\n site.legacy = true;\n addFlag(site.flags, classified.problem.code, classified.problem.detail);\n }\n if (classified.warning) {\n addFlag(site.warnings, classified.warning.code, classified.warning.detail);\n }\n if (classified.inventory) {\n addFlag(site.inventory, classified.inventory.code, classified.inventory.detail);\n }\n if (classified.text !== null) site.legacy = true;\n const allowed = classified.text === null || assessProgram(site, prop, []);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: allowed ? classified.payload : null,\n dynamic: classified.dynamic,\n blocked: classified.blocked,\n token: allowed && classified.text !== null,\n activated: false\n });\n}\nconst sentinelMark = \"\u0001\";\nfunction evaluateLegacyObject(object, rootPath) {\n const leaves = [];\n const visit = (current, currentPath) => {\n const value = {};\n for (const property of current.getProperties()) {\n if (Node.isSpreadAssignment(property)) {\n return {\n value: null,\n fatal: `spread \"${compact(property.getText())}\" hides legacy condition entries`\n };\n }\n if (!Node.isPropertyAssignment(property)) {\n return {\n value: null,\n fatal: `property \"${compact(property.getText())}\" is not a static assignment`\n };\n }\n const nameNode = property.getNameNode();\n if (Node.isComputedPropertyName(nameNode)) {\n return {\n value: null,\n fatal: `computed property \"${compact(nameNode.getText())}\" hides the affected style property`\n };\n }\n const name = propertyName(nameNode);\n if (name === null) {\n return {\n value: null,\n fatal: `property name \"${compact(nameNode.getText())}\" is not statically known`\n };\n }\n const path = `${currentPath}.${name}`;\n const initializer = unwrapExpression(property.getInitializerOrThrow());\n if (Node.isObjectLiteralExpression(initializer)) {\n const nested = visit(initializer, path);\n if (nested.fatal) return nested;\n value[name] = nested.value;\n continue;\n }\n const leaf = staticLeafValue(initializer);\n if (leaf) {\n value[name] = leaf.value;\n continue;\n }\n value[name] = `${sentinelMark}${leaves.length}${sentinelMark}`;\n leaves.push({ path, prop: name, expression: initializer });\n }\n return { value, fatal: null };\n };\n const result = visit(object, rootPath);\n return { ...result, leaves };\n}\nfunction conditionProperties(value) {\n const properties = /* @__PURE__ */ new Set();\n const visit = (object) => {\n for (const key in object) {\n const child = object[key];\n if (child !== null && typeof child === \"object\" && isLegacyConditionName(key)) {\n visit(child);\n continue;\n }\n if (!styleProps.has(key)) continue;\n for (const property of expandToLonghands(key, shorthands)) properties.add(property);\n }\n };\n visit(value);\n return properties;\n}\nfunction pushLegacy(site, name, text, initializer, node) {\n const index = site.index++;\n site.legacy = true;\n const keep = (properties2) => {\n site.members.push({\n type: \"legacy\",\n index,\n name,\n text,\n contributions: [],\n properties: properties2,\n failed: true\n });\n };\n if (initializer === null || !Node.isObjectLiteralExpression(initializer)) {\n addFlag(\n site.flags,\n \"dynamic-legacy-condition\",\n `\"${name}\" is not an inline object literal, so its entries are not statically known`\n );\n keep(null);\n return;\n }\n const evaluated = evaluateLegacyObject(initializer, name);\n if (evaluated.fatal || evaluated.value === null) {\n addFlag(site.flags, \"dynamic-legacy-condition\", evaluated.fatal ?? \"unresolved\");\n keep(null);\n return;\n }\n const properties = conditionProperties(evaluated.value);\n const eligibilityStack = [{ object: evaluated.value, path: name }];\n let hasRejectedProperty = false;\n while (eligibilityStack.length > 0) {\n const current = eligibilityStack.pop();\n for (const prop in current.object) {\n const value = current.object[prop];\n const targetProp = resolveProp(prop);\n if (styleProps.has(targetProp) && !isLegacyConditionName(prop)) {\n const assessment = assessFlatConversion(\n {\n property: targetProp,\n targets: site.targets,\n host: site.host\n },\n site.registry\n );\n if (assessment.verdict === \"ineligible\") {\n addAssessment(site, targetProp, assessment);\n hasRejectedProperty = true;\n }\n continue;\n }\n if (value !== null && typeof value === \"object\" && !Array.isArray(value) && isLegacyConditionName(prop)) {\n eligibilityStack.push({\n object: value,\n path: `${current.path}.${prop}`\n });\n }\n }\n }\n if (hasRejectedProperty) {\n keep(properties);\n return;\n }\n const unresolved = site.containers.unresolved.get(node);\n if (unresolved !== void 0) {\n addFlag(site.flags, unresolved.code, unresolved.detail);\n keep(properties);\n return;\n }\n const resolution = resolveLegacyName(name, site.registry);\n if (!resolution.ok) {\n addFlag(site.flags, resolution.code, resolution.message);\n keep(properties);\n return;\n }\n const payloads = /* @__PURE__ */ new Map();\n let failed = false;\n for (let index2 = 0; index2 < evaluated.leaves.length; index2++) {\n const leaf = evaluated.leaves[index2];\n const classified = classifyDynamic(leaf.prop, leaf.expression, site.registry);\n if (classified.warning) {\n addFlag(\n site.warnings,\n classified.warning.code,\n `${leaf.path}: ${classified.warning.detail}`\n );\n }\n if (classified.payload === null) {\n const flag = classified.problem ?? classified.blocked;\n addFlag(\n site.flags,\n flag?.code ?? \"dynamic-condition-value\",\n `${leaf.path}: ${flag?.detail ?? \"the value is not statically known\"}`\n );\n failed = true;\n continue;\n }\n payloads.set(`${sentinelMark}${index2}${sentinelMark}`, classified.payload);\n }\n if (failed) {\n keep(properties);\n return;\n }\n const { canonical, replaceRoot } = resolution.resolved;\n const converted = convertLegacyConditionProp(canonical, evaluated.value, {\n registry: site.registry\n });\n if (converted === null) {\n addFlag(\n site.flags,\n \"unknown-legacy-condition\",\n `\"${name}\" is not a registered legacy condition spelling`\n );\n keep(properties);\n return;\n }\n for (const error of converted.errors) {\n const path = error.path.startsWith(canonical) ? `${name}${error.path.slice(canonical.length)}` : error.path;\n addFlag(site.flags, error.code, `${path}: ${error.message}`);\n failed = true;\n }\n const contributions = [];\n for (const contribution of converted.contributions) {\n if (!styleProps.has(contribution.prop)) {\n addFlag(\n site.flags,\n \"non-style-condition-entry\",\n `${name}.${contribution.prop} is not a style property, so a flat value cannot carry it`\n );\n failed = true;\n continue;\n }\n const modifiers = replaceRoot ? [...replaceRoot, ...contribution.clause.modifiers.slice(1)] : contribution.clause.modifiers;\n const dynamicPayload = payloads.get(contribution.clause.payload);\n contributions.push({\n prop: contribution.prop,\n clause: {\n modifiers,\n payload: dynamicPayload ?? contribution.clause.payload\n },\n dynamic: dynamicPayload !== void 0\n });\n if (!assessProgram(site, contribution.prop, modifiers)) failed = true;\n }\n if (failed) {\n keep(properties);\n return;\n }\n site.members.push({\n type: \"legacy\",\n index,\n name,\n text,\n contributions,\n properties,\n failed: false\n });\n}\nfunction activationName(prop) {\n return resolveProp(prop);\n}\nconst noProperties = /* @__PURE__ */ new Set();\nconst legacyStatePriorities = Object.freeze({\n hover: 2,\n press: 3,\n active: 3,\n focus: 4,\n \"focus-visible\": 4,\n \"focus-within\": 4,\n enter: 4,\n disabled: 5,\n exit: 5\n});\nfunction legacyStatePriority(modifiers) {\n let priority = null;\n for (const modifier of modifiers) {\n const candidate = legacyStatePriorities[modifier];\n if (candidate !== void 0 && (priority === null || candidate > priority)) {\n priority = candidate;\n }\n }\n return priority;\n}\nfunction orderedEntries(site) {\n const ordered = [];\n for (const member of site.members) {\n if (member.type === \"authored\") {\n if (!member.activated || member.payload === null) continue;\n ordered.push({\n prop: member.prop,\n value: { base: member.payload, clauses: [] },\n dynamic: member.dynamic,\n index: member.index,\n base: true,\n from: null,\n legacyStatePriority: null\n });\n continue;\n }\n if (member.type !== \"legacy\" || member.failed) continue;\n for (const contribution of member.contributions) {\n ordered.push({\n prop: contribution.prop,\n value: { base: null, clauses: [contribution.clause] },\n dynamic: contribution.dynamic,\n index: member.index,\n base: false,\n from: member,\n legacyStatePriority: legacyStatePriority(contribution.clause.modifiers)\n });\n }\n }\n const ranked = ordered.filter((entry) => entry.legacyStatePriority !== null).sort(\n (left, right) => left.legacyStatePriority - right.legacyStatePriority || left.index - right.index\n );\n if (ranked.length < 2) return ordered;\n let rankedIndex = 0;\n return ordered.map(\n (entry) => entry.legacyStatePriority === null ? entry : ranked[rankedIndex++]\n );\n}\nfunction buildSlots(ordered) {\n const slots = /* @__PURE__ */ new Map();\n for (const entry of ordered) {\n for (const property of expandToLonghands(entry.prop, shorthands)) {\n const previous = slots.get(property);\n const value = previous ? mergeProgramValues(previous.value, entry.value) : entry.value;\n slots.delete(property);\n slots.set(property, {\n property,\n sourceProp: entry.prop,\n value,\n anchor: previous ? Math.min(previous.anchor, entry.index) : entry.index,\n last: previous ? Math.max(previous.last, entry.index) : entry.index,\n dynamic: (previous?.dynamic ?? false) || entry.dynamic\n });\n }\n }\n return slots;\n}\nfunction barriers(site) {\n const list = [];\n for (const member of site.members) {\n if (member.type === \"spread\") {\n list.push({ index: member.index, source: member.text, bases: null, clauses: null });\n continue;\n }\n if (member.type === \"authored\" && !member.activated) {\n list.push({\n index: member.index,\n source: member.text,\n bases: new Set(expandToLonghands(member.prop, shorthands)),\n clauses: noProperties\n });\n continue;\n }\n if (member.type === \"legacy\" && member.failed) {\n list.push({\n index: member.index,\n source: member.name,\n bases: noProperties,\n clauses: member.properties\n });\n }\n }\n return list;\n}\nfunction resolveBarriers(site, ordered, slots) {\n let changed = false;\n for (const slot of slots.values()) {\n const contributions = ordered.filter(\n (entry) => expandToLonghands(entry.prop, shorthands).includes(slot.property)\n );\n for (const barrier of barriers(site)) {\n if (barrier.index <= slot.anchor || barrier.index >= slot.last) continue;\n if (barrier.clauses === null || barrier.clauses.has(slot.property)) {\n for (const entry of contributions) {\n if (entry.base || entry.index < barrier.index || !entry.from) continue;\n addFlag(\n site.flags,\n \"condition-order-not-preservable\",\n `\"${compact(barrier.source)}\" can set \"${slot.property}\" between the values contributing to it, so \"${entry.from.name}\" stays authored instead of merging`\n );\n entry.from.failed = true;\n changed = true;\n }\n }\n if (barrier.bases === null || barrier.bases.has(slot.property)) {\n for (const entry of contributions) {\n if (!entry.base || entry.index < barrier.index) continue;\n const authored = site.members.find(\n (member) => member.type === \"authored\" && member.index === entry.index && member.activated\n );\n if (authored && authored.type === \"authored\") {\n authored.payload = null;\n authored.blocked = {\n code: \"base-order-not-preservable\",\n detail: `\"${compact(barrier.source)}\" can set \"${slot.property}\" between the values contributing to it, so this base cannot move`\n };\n changed = true;\n continue;\n }\n addFlag(\n site.flags,\n \"base-order-not-preservable\",\n `\"${compact(barrier.source)}\" can set \"${slot.property}\" between the values contributing to it, so the merged base may win where it did not before`\n );\n }\n }\n }\n }\n return changed;\n}\nfunction assemble(site) {\n let slots = /* @__PURE__ */ new Map();\n for (; ; ) {\n let changed = false;\n const contributed = /* @__PURE__ */ new Set();\n for (const member of site.members) {\n if (member.type !== \"legacy\" || member.failed) continue;\n for (const contribution of member.contributions) {\n contributed.add(activationName(contribution.prop));\n }\n }\n for (const member of site.members) {\n if (member.type !== \"authored\") continue;\n const name = activationName(member.prop);\n member.activated = member.token && member.payload !== null || contributed.has(name);\n if (!member.activated || member.payload !== null) continue;\n const blocked = member.blocked;\n addFlag(\n site.flags,\n blocked?.code ?? \"unprovable-dynamic-value\",\n `a legacy condition targets \"${member.prop}\": ${blocked?.detail ?? `its base value \"${compact(member.text)}\" cannot join a program`}`\n );\n member.activated = false;\n for (const other of site.members) {\n if (other.type !== \"legacy\" || other.failed) continue;\n if (other.contributions.some((one) => activationName(one.prop) === name)) {\n other.failed = true;\n changed = true;\n }\n }\n }\n if (changed) continue;\n const ordered = orderedEntries(site);\n slots = buildSlots(ordered);\n if (!resolveBarriers(site, ordered, slots)) break;\n }\n const entries = [];\n for (const member of site.members) {\n if (member.type === \"authored\" && member.activated) continue;\n if (member.type === \"legacy\" && !member.failed) continue;\n entries.push({ index: member.index, text: member.text });\n }\n const printed = printSlots(site, slots);\n entries.push(...printed.output);\n entries.push(...site.extras);\n entries.sort((left, right) => left.index - right.index);\n return { entries, programs: printed.programs };\n}\nfunction printSlots(site, slots) {\n const printed = /* @__PURE__ */ new Set();\n const output = [];\n const programs = [];\n const outputCommentRanges = [];\n for (const [property, slot] of slots) {\n if (printed.has(property)) continue;\n const serialized = printProgram(slot.value);\n const expansion = expandToLonghands(slot.sourceProp, shorthands);\n const collapses = expansion.length > 0 && expansion.every((expanded) => {\n const candidate = slots.get(expanded);\n return candidate !== void 0 && candidate.sourceProp === slot.sourceProp && candidate.anchor === slot.anchor && candidate.dynamic === slot.dynamic && printProgram(candidate.value) === serialized;\n });\n const name = collapses ? slot.sourceProp : property;\n if (collapses) for (const expanded of expansion) printed.add(expanded);\n else printed.add(property);\n const value = slot.dynamic ? `\\`${serialized}\\`` : JSON.stringify(serialized);\n programs.push({ name, value: serialized, dynamic: slot.dynamic });\n const propertyText = site.kind === \"styled\" ? `${name}: ${value}` : `${name}=${slot.dynamic ? `{${value}}` : value}`;\n output.push({\n index: slot.anchor,\n text: propertyText\n });\n outputCommentRanges.push({\n outputIndex: output.length - 1,\n first: slot.anchor,\n last: slot.last\n });\n }\n verify(\n site,\n slots,\n [...output].sort((left, right) => left.index - right.index)\n );\n if (site.kind === \"styled\") {\n const commentedIndexes = /* @__PURE__ */ new Set();\n for (const range of outputCommentRanges) {\n const comments = [];\n for (const [index, texts] of site.comments) {\n if (index < range.first || index > range.last || commentedIndexes.has(index)) {\n continue;\n }\n comments.push(...texts);\n commentedIndexes.add(index);\n }\n if (comments.length) {\n output[range.outputIndex].text = `${comments.join(\"\\n\")}\n${output[range.outputIndex].text}`;\n }\n }\n }\n return { output, programs };\n}\nfunction sanitize(text) {\n let result = \"\";\n for (let index = 0; index < text.length; index++) {\n if (text[index] !== \"$\" || text[index + 1] !== \"{\") {\n result += text[index];\n continue;\n }\n let depth = 0;\n let end = index + 1;\n for (; end < text.length; end++) {\n if (text[end] === \"{\") depth++;\n else if (text[end] === \"}\" && --depth === 0) break;\n }\n result += \"zz\";\n index = end;\n }\n return result;\n}\nfunction verify(site, slots, output) {\n const separator = site.kind === \"styled\" ? \": \" : \"=\";\n const reparsed = /* @__PURE__ */ new Map();\n for (const entry of output) {\n const split = entry.text.indexOf(separator);\n const prop = entry.text.slice(0, split);\n let raw = entry.text.slice(split + separator.length);\n if (raw.startsWith(\"{\")) raw = raw.slice(1, -1);\n const text = sanitize(raw.slice(1, -1));\n const parsed = parseValue(text, site.registry);\n if (!parsed.ok) {\n addFlag(\n site.flags,\n \"emitted-value-invalid\",\n `\"${prop}=${text}\" does not parse: ${parsed.errors.map((error) => error.message).join(\"; \")}`\n );\n return;\n }\n for (const property of expandToLonghands(prop, shorthands)) {\n const previous = reparsed.get(property);\n reparsed.set(\n property,\n previous ? mergeProgramValues(previous, parsed.value) : parsed.value\n );\n }\n }\n for (const [property, slot] of slots) {\n const actual = reparsed.get(property);\n const expected = sanitize(printProgram(slot.value));\n if (actual === void 0 || sanitize(printProgram(actual)) !== expected) {\n addFlag(\n site.flags,\n \"emitted-program-mismatch\",\n `\"${property}\" reads back as \"${actual ? sanitize(printProgram(actual)) : \"(missing)\"}\" instead of \"${expected}\"`\n );\n }\n }\n}\nfunction propertyName(node) {\n if (Node.isIdentifier(node) || Node.isStringLiteral(node) || Node.isNumericLiteral(node)) {\n return node.getText().replace(/^['\"]|['\"]$/g, \"\");\n }\n return null;\n}\nfunction jsxAttributeName(attribute) {\n const name = attribute.getNameNode();\n return Node.isIdentifier(name) ? name.getText() : null;\n}\nfunction jsxLiteralString(attribute) {\n const initializer = attribute.getInitializer();\n if (Node.isStringLiteral(initializer)) return initializer.getLiteralValue();\n const expression = jsxExpression(attribute);\n if (expression && (Node.isStringLiteral(expression) || Node.isNoSubstitutionTemplateLiteral(expression))) {\n return expression.getLiteralValue();\n }\n return null;\n}\nfunction jsxExpression(attribute) {\n const initializer = attribute.getInitializer();\n if (!Node.isJsxExpression(initializer)) return null;\n const expression = initializer.getExpression();\n return expression ? unwrapExpression(expression) : null;\n}\nfunction isConvertedJsxAttribute(attribute) {\n if (Node.isJsxSpreadAttribute(attribute)) return true;\n if (!Node.isJsxAttribute(attribute)) return false;\n const name = jsxAttributeName(attribute);\n return !!name && (name === \"group\" || styleProps.has(name) || isLegacyConditionName(name));\n}\nfunction rewriteJsxSite(opening, entries) {\n const attributes = opening.getAttributes();\n const rendered = [];\n let inserted = false;\n for (const attribute of attributes) {\n if (isConvertedJsxAttribute(attribute)) {\n if (!inserted) {\n rendered.push(...entries.map((entry) => entry.text));\n inserted = true;\n }\n } else {\n rendered.push(attribute.getText());\n }\n }\n const source = opening.getText();\n const start = opening.getStart();\n const first = attributes[0];\n const last = attributes[attributes.length - 1];\n const prefix = source.slice(0, first.getStart() - start);\n const suffix = source.slice(last.getEnd() - start);\n const authoredMultiline = prefix.includes(\"\\n\") || source.slice(first.getStart() - start, last.getEnd() - start).includes(\"\\n\");\n opening.replaceWithText(\n authoredMultiline ? `${prefix.replace(/[ \\t]+$/, \"\")}${rendered.join(\"\\n\")}${suffix.replace(/\\n[ \\t]+/, \"\\n\")}` : `${prefix}${rendered.join(\" \")}${suffix}`\n );\n}\nfunction containerExtras(site, declaration, index) {\n const target = site.containers.targets.get(declaration);\n if (target === void 0) return;\n const name = target.named && target.group !== \"\" ? target.group : null;\n const text = site.kind === \"styled\" ? name === null ? \"container: true\" : `container: ${JSON.stringify(name)}` : name === null ? \"container\" : `container=${JSON.stringify(name)}`;\n site.legacy = true;\n site.extras.push({ index, text });\n if (target.flag !== null) addFlag(site.flags, target.flag.code, target.flag.detail);\n addNote(\n site,\n `a descendant uses a legacy container-size condition on this group, so it declares a query container`\n );\n}\nfunction convertJsxSite(opening, registry, containers, targets, host, write = false) {\n const site = createSite(\"jsx\", registry, containers, targets, host);\n const before = [];\n for (const attribute of opening.getAttributes()) {\n if (Node.isJsxSpreadAttribute(attribute)) {\n const expression = unwrapExpression(attribute.getExpression());\n if (Node.isObjectLiteralExpression(expression)) {\n before.push(compact(attribute.getText()));\n for (const property of expression.getProperties()) {\n if (Node.isPropertyAssignment(property)) {\n const name2 = propertyName(property.getNameNode());\n if (name2 !== null) {\n if (name2 === \"group\" || styleProps.has(name2) || isLegacyConditionName(name2)) {\n pushStyledProperty(\n site,\n name2,\n property,\n `${name2}={${property.getInitializerOrThrow().getText()}}`\n );\n } else {\n site.members.push({\n type: \"passthrough\",\n index: site.index++,\n text: `${name2}={${property.getInitializerOrThrow().getText()}}`\n });\n }\n continue;\n }\n }\n site.members.push({\n type: \"spread\",\n index: site.index++,\n text: Node.isSpreadAssignment(property) ? `{${property.getText()}}` : `{...{ ${property.getText()} }}`\n });\n }\n continue;\n }\n before.push(compact(attribute.getText()));\n site.members.push({\n type: \"spread\",\n index: site.index++,\n text: attribute.getText()\n });\n continue;\n }\n const name = jsxAttributeName(attribute);\n if (!name) continue;\n const text = compact(attribute.getText());\n if (name === \"group\") {\n before.push(text);\n containerExtras(site, attribute, site.index);\n site.members.push({ type: \"passthrough\", index: site.index++, text });\n continue;\n }\n if (isLegacyConditionName(name)) {\n before.push(text);\n pushLegacy(site, name, text, jsxExpression(attribute), attribute);\n continue;\n }\n if (!styleProps.has(name)) continue;\n before.push(text);\n const literal = jsxLiteralString(attribute);\n pushBase(\n site,\n name,\n text,\n literal === null ? jsxExpression(attribute) : null,\n literal\n );\n }\n if (!site.legacy) return null;\n const { entries, programs } = assemble(site);\n const sourceFile = opening.getSourceFile();\n const report = {\n kind: \"jsx\",\n label: `<${opening.getTagNameNode().getText()}>`,\n line: sourceFile.getLineAndColumnAtPos(opening.getStart()).line,\n before: before.join(\" \"),\n after: entries.map((entry) => entry.text).join(\" \") || \"(no style props left)\",\n programs,\n assessments: site.assessments,\n assessmentVerdict: assessmentVerdict(site.assessments),\n warnings: site.warnings,\n flags: site.flags,\n inventory: site.inventory,\n pending: site.pending,\n notes: site.notes,\n legacyLeft: site.members.filter((member) => member.type === \"legacy\" && member.failed).length\n };\n if (write && !site.flags.some(\n (flag) => flag.code === \"emitted-program-mismatch\" || flag.code === \"emitted-value-invalid\"\n )) {\n rewriteJsxSite(opening, entries);\n }\n return report;\n}\nfunction pushStyledProperty(site, name, property, authoredText) {\n const comments = allCommentTexts(property);\n if (comments.length) site.comments.set(site.index, comments);\n const text = authoredText ?? textWithOuterComments(property);\n const initializer = unwrapExpression(property.getInitializerOrThrow());\n if (name === \"group\") {\n containerExtras(site, property, site.index);\n site.members.push({ type: \"passthrough\", index: site.index++, text });\n return;\n }\n if (isLegacyConditionName(name)) {\n pushLegacy(site, name, text, initializer, property);\n return;\n }\n if (!styleProps.has(name)) return;\n const literal = Node.isStringLiteral(initializer) || Node.isNoSubstitutionTemplateLiteral(initializer) ? initializer.getLiteralValue() : null;\n pushBase(site, name, text, literal === null ? initializer : null, literal);\n}\nfunction convertStyleObject(object, kind, label, registry, containers, targets, host, write = false) {\n const site = createSite(kind, registry, containers, targets, host);\n const before = [];\n for (const property of object.getProperties()) {\n if (Node.isSpreadAssignment(property)) {\n const expression = unwrapExpression(property.getExpression());\n before.push(compact(property.getText()));\n if (Node.isObjectLiteralExpression(expression)) {\n for (const nested of expression.getProperties()) {\n if (Node.isPropertyAssignment(nested)) {\n const name2 = propertyName(nested.getNameNode());\n if (name2 !== null) {\n if (name2 === \"group\" || styleProps.has(name2) || isLegacyConditionName(name2)) {\n pushStyledProperty(site, name2, nested);\n } else {\n site.members.push({\n type: \"passthrough\",\n index: site.index++,\n text: compact(nested.getText())\n });\n }\n continue;\n }\n }\n site.members.push({\n type: \"spread\",\n index: site.index++,\n text: compact(nested.getText())\n });\n }\n continue;\n }\n site.members.push({\n type: \"spread\",\n index: site.index++,\n text: compact(property.getText())\n });\n continue;\n }\n if (!Node.isPropertyAssignment(property)) continue;\n const nameNode = property.getNameNode();\n if (Node.isComputedPropertyName(nameNode)) {\n addFlag(\n site.flags,\n \"computed-property\",\n `\"${compact(nameNode.getText())}\" hides the affected style property`\n );\n continue;\n }\n const name = propertyName(nameNode);\n if (name === null) continue;\n if (!styleProps.has(name) && !isLegacyConditionName(name) && name !== \"group\")\n continue;\n before.push(compact(property.getText()));\n pushStyledProperty(site, name, property);\n }\n if (!site.legacy) return null;\n const { entries, programs } = assemble(site);\n const sourceFile = object.getSourceFile();\n const report = {\n kind,\n label,\n line: sourceFile.getLineAndColumnAtPos(object.getStart()).line,\n before: before.join(\", \"),\n after: entries.map((entry) => entry.text).join(\", \") || \"(no style props left)\",\n programs,\n assessments: site.assessments,\n assessmentVerdict: assessmentVerdict(site.assessments),\n warnings: site.warnings,\n flags: site.flags,\n inventory: site.inventory,\n pending: site.pending,\n notes: site.notes,\n legacyLeft: site.members.filter((member) => member.type === \"legacy\" && member.failed).length\n };\n if (write && !site.flags.some(\n (flag) => flag.code === \"emitted-program-mismatch\" || flag.code === \"emitted-value-invalid\"\n )) {\n rewriteStyleObject(object, entries);\n }\n return report;\n}\nfunction isConvertedStyledProperty(property) {\n if (Node.isSpreadAssignment(property)) return true;\n if (!Node.isPropertyAssignment(property)) return false;\n const nameNode = property.getNameNode();\n if (Node.isComputedPropertyName(nameNode)) return false;\n const name = propertyName(nameNode);\n return !!name && (name === \"group\" || styleProps.has(name) || isLegacyConditionName(name));\n}\nfunction allCommentTexts(node) {\n const comments = /* @__PURE__ */ new Map();\n for (const current of [node, ...node.getDescendants()]) {\n for (const range of [\n ...current.getLeadingCommentRanges(),\n ...current.getTrailingCommentRanges()\n ]) {\n comments.set(range.getPos(), range.getText());\n }\n }\n return [...comments.entries()].sort((left, right) => left[0] - right[0]).map((entry) => entry[1]);\n}\nfunction textWithOuterComments(node) {\n const comments = /* @__PURE__ */ new Map();\n for (const range of [\n ...node.getLeadingCommentRanges(),\n ...node.getTrailingCommentRanges()\n ]) {\n comments.set(range.getPos(), range.getText());\n }\n const prefix = [...comments.entries()].sort((left, right) => left[0] - right[0]).map((entry) => entry[1]);\n return [...prefix, node.getText()].join(\"\\n\");\n}\nfunction rewriteStyleObject(object, entries) {\n const rendered = [];\n let inserted = false;\n for (const property of object.getProperties()) {\n if (isConvertedStyledProperty(property)) {\n if (!inserted) {\n rendered.push(...entries.map((entry) => entry.text));\n inserted = true;\n }\n } else {\n rendered.push(textWithOuterComments(property));\n }\n }\n if (rendered.length === 0) {\n object.replaceWithText(\"{}\");\n return;\n }\n object.replaceWithText(`{\n${rendered.map((text) => ` ${text}`).join(\",\\n\")}\n}`);\n}\nexport {\n convertJsxSite,\n convertStyleObject,\n sanitize\n};\n//# sourceMappingURL=convert.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"convert.js","names":[],"sources":["convert.js"],"sourcesContent":["import {\n Node,\n SyntaxKind\n} from \"ts-morph\";\nimport {\n compact,\n literalTree,\n numericValue,\n runtimeType,\n staticLeafValue,\n unwrapExpression\n} from \"./expressions\";\nimport {\n assessFlatConversion,\n convertLegacyConditionProp,\n expandToLonghands,\n flatStringValue,\n mergeProgramValues,\n parseValue,\n printProgram,\n resolveProp,\n sharedPayload,\n shorthands,\n styleProps,\n tokenVariantProps,\n unitSuffix\n} from \"./grammar\";\nimport { isLegacyConditionName, resolveLegacyName } from \"./legacyNames\";\nimport { classifyStructuredNativeValue } from \"./structuredNative\";\nfunction assessmentVerdict(assessments) {\n if (assessments.some((assessment) => assessment.verdict === \"ineligible\")) {\n return \"ineligible\";\n }\n if (assessments.some((assessment) => assessment.verdict === \"needs-relocation\")) {\n return \"needs-relocation\";\n }\n return assessments.length ? \"unknown-host\" : \"clean\";\n}\nfunction createSite(kind, registry, containers, targets, host) {\n return {\n kind,\n registry,\n containers,\n targets,\n host,\n members: [],\n comments: /* @__PURE__ */ new Map(),\n extras: [],\n respelled: [],\n warnings: [],\n flags: [],\n inventory: [],\n pending: [],\n assessments: [],\n notes: [],\n legacy: false,\n index: 0\n };\n}\nfunction assessProgram(site, property, modifiers) {\n const targetProperty = resolveProp(property);\n const assessment = assessFlatConversion(\n {\n property: targetProperty,\n modifiers,\n targets: site.targets,\n host: site.host\n },\n site.registry\n );\n if (assessment.verdict !== \"clean\") addAssessment(site, targetProperty, assessment);\n return assessment.verdict !== \"ineligible\";\n}\nfunction addAssessment(site, property, assessment) {\n if (assessment.verdict === \"clean\") return;\n if (!site.assessments.some(\n (finding) => finding.property === property && finding.verdict === assessment.verdict && JSON.stringify(finding.reasons) === JSON.stringify(assessment.reasons)\n )) {\n site.assessments.push({\n property,\n verdict: assessment.verdict,\n reasons: assessment.reasons\n });\n }\n}\nfunction isConvertedName(name) {\n return name === \"group\" || styleProps.has(name) || tokenVariantProps.has(name) || isLegacyConditionName(name);\n}\nfunction addFlag(list, code, detail) {\n if (!list.some((flag) => flag.code === code && flag.detail === detail)) {\n list.push({ code, detail });\n }\n}\nfunction addNote(site, note) {\n if (!site.notes.includes(note)) site.notes.push(note);\n}\nconst legacyPaletteStepPattern = /(?:^|[^\\w-])\\$?((?:gray|mauve|slate|sage|olive|sand|tomato|red|ruby|crimson|pink|plum|purple|violet|iris|indigo|blue|cyan|teal|jade|green|grass|bronze|gold|brown|orange|amber|yellow|lime|mint|sky)(?:1[0-2]|[1-9]))(?![\\w-])/g;\nconst legacyTrueTokenPattern = /(?:^|[^\\w-])\\$true(?![\\w-])/;\nfunction legacyTokenWarnings(prop, values) {\n const warnings = [];\n if (values.some((value) => legacyTrueTokenPattern.test(value))) {\n warnings.push({\n code: \"legacy-true-token\",\n detail: `${prop} spelled the \\`$true\\` alias, written as \\`4\\` because the default config aliased it there; confirm the app's tokens agree`\n });\n }\n const names = /* @__PURE__ */ new Set();\n for (const value of values) {\n legacyPaletteStepPattern.lastIndex = 0;\n for (const match of value.matchAll(legacyPaletteStepPattern)) names.add(match[1]);\n }\n if (!names.size) return warnings;\n const formatted = [...names].sort().map((name) => `\\`${name}\\``).join(\", \");\n warnings.push({\n code: \"legacy-palette-token\",\n detail: `${prop} preserves ${formatted}, which @tamagui/config/v6 does not define; choose an absolute palette token or an adaptive colorN value`\n });\n return warnings;\n}\nconst empty = {\n payload: null,\n text: null,\n dynamic: false,\n problem: null,\n warnings: [],\n blocked: null,\n inventory: null\n};\nfunction interpolate(prop, text, kind, registry) {\n return `\\${${text}}${kind === \"number\" ? unitSuffix(resolveProp(prop), registry) : \"\"}`;\n}\nfunction classifyStatic(prop, value, registry) {\n const probe = sharedPayload(prop, value, registry);\n const error = probe.errors[0];\n if (error || probe.payload === null) {\n const flag = {\n code: error?.code ?? \"unsupported-legacy-value\",\n detail: `${prop}: ${error?.message ?? `\"${String(value)}\" has no flat spelling`}`\n };\n return { ...empty, problem: flag, blocked: flag };\n }\n return { ...empty, payload: probe.payload };\n}\nfunction reparsesAsBase(value, registry) {\n const parsed = parseValue(value, registry);\n return parsed.ok && parsed.value.clauses.length === 0 && parsed.value.base === value.trim();\n}\nfunction classifyDynamic(prop, expression, registry) {\n const current = unwrapExpression(expression);\n const source = compact(current.getText());\n const structured = classifyStructuredNativeValue(\n resolveProp(prop),\n current,\n source,\n registry\n );\n if (structured) {\n return {\n ...empty,\n payload: structured.payload,\n blocked: structured.blocked\n };\n }\n const tree = literalTree(current, registry);\n if (tree && tree.error) {\n const flag2 = {\n code: tree.error.code,\n detail: `${prop}: ${tree.error.message}`\n };\n return { ...empty, problem: flag2, blocked: flag2 };\n }\n if (tree && tree.kind !== \"nullish\") {\n const rewrittenTokenText = /\\$(?=[\\w-])/.test(source) && tree.text !== source ? tree.text : null;\n return {\n ...empty,\n payload: interpolate(prop, tree.text, tree.kind, registry),\n text: rewrittenTokenText,\n dynamic: true,\n warnings: legacyTokenWarnings(prop, tree.strings)\n };\n }\n if (tree) {\n const flag2 = {\n code: \"empty-style-value\",\n detail: `${prop} value \"${source}\" is always nullish and cannot join a program`\n };\n return { ...empty, blocked: flag2 };\n }\n const runtime = runtimeType(current);\n if (runtime.kind === \"number\") {\n return {\n ...empty,\n payload: interpolate(prop, source, \"number\", registry),\n dynamic: true\n };\n }\n if (runtime.kind === \"string\") {\n const tokens = runtime.literals?.filter((literal) => literal.startsWith(\"$\"));\n if (tokens?.length) {\n const flag2 = {\n code: \"legacy-token-constant\",\n detail: `${prop} value \"${source}\" resolves to legacy token ${tokens.map((token) => `\"${token}\"`).join(\", \")}; migrate the constant it comes from`\n };\n return { ...empty, problem: flag2, blocked: flag2 };\n }\n if (runtime.literals === null) {\n return {\n ...empty,\n payload: interpolate(prop, source, \"string\", registry),\n dynamic: true,\n inventory: {\n code: \"dynamic-string-value\",\n detail: `${prop} value \"${source}\" is an open string; confirm it never holds a legacy \"$token\" spelling`\n }\n };\n }\n return {\n ...empty,\n payload: interpolate(prop, source, \"string\", registry),\n dynamic: true\n };\n }\n const flag = {\n code: \"unprovable-dynamic-value\",\n detail: `${prop} value \"${source}\" has no provable number or string type, so it cannot fold into a program`\n };\n return { ...empty, blocked: flag };\n}\nfunction pushBase(site, prop, text, value, literalString) {\n const index = site.index++;\n if (literalString !== null) {\n for (const warning of legacyTokenWarnings(prop, [literalString])) {\n addFlag(site.warnings, warning.code, warning.detail);\n }\n if (literalString.includes(\"$\")) {\n site.legacy = true;\n const allowed2 = assessProgram(site, prop, []);\n const flat = flatStringValue(literalString, site.registry);\n const problem = flat.text === null ? {\n code: flat.error?.code ?? \"unsupported-legacy-value\",\n detail: `${prop}: ${flat.error?.message ?? `${JSON.stringify(literalString)} has no flat spelling`}`\n } : !reparsesAsBase(flat.text, site.registry) ? {\n code: \"value-reparses-as-program\",\n detail: `${prop} value ${JSON.stringify(flat.text)} does not read back as one flat base value`\n } : null;\n if (problem !== null) addFlag(site.flags, problem.code, problem.detail);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: allowed2 && problem === null ? flat.text : null,\n dynamic: false,\n blocked: problem,\n token: allowed2,\n activated: false\n });\n return;\n }\n if (!reparsesAsBase(literalString, site.registry)) {\n const flag = {\n code: \"value-reparses-as-program\",\n detail: `${prop} value ${JSON.stringify(literalString)} does not read back as one flat base value`\n };\n addFlag(site.flags, flag.code, flag.detail);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: null,\n dynamic: false,\n blocked: flag,\n token: false,\n activated: false\n });\n return;\n }\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: literalString,\n dynamic: false,\n blocked: null,\n token: false,\n activated: false\n });\n return;\n }\n const number = value ? numericValue(value) : null;\n if (number !== null) {\n const classified2 = classifyStatic(prop, number, site.registry);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: classified2.payload,\n dynamic: false,\n blocked: classified2.blocked,\n token: false,\n activated: false\n });\n return;\n }\n const kind = value?.getKind();\n if (value === null || kind === SyntaxKind.TrueKeyword || kind === SyntaxKind.FalseKeyword || kind === SyntaxKind.NullKeyword) {\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: null,\n dynamic: false,\n blocked: {\n code: \"non-css-style-value\",\n detail: `${prop} value \"${compact(text)}\" is not a CSS value and cannot join a program`\n },\n token: false,\n activated: false\n });\n return;\n }\n const classified = classifyDynamic(prop, value, site.registry);\n if (classified.problem) {\n site.legacy = true;\n addFlag(site.flags, classified.problem.code, classified.problem.detail);\n }\n for (const warning of classified.warnings) {\n addFlag(site.warnings, warning.code, warning.detail);\n }\n if (classified.inventory) {\n addFlag(site.inventory, classified.inventory.code, classified.inventory.detail);\n }\n if (classified.text !== null) site.legacy = true;\n const allowed = classified.text === null || assessProgram(site, prop, []);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: allowed ? classified.payload : null,\n dynamic: classified.dynamic,\n blocked: classified.blocked,\n token: allowed && classified.text !== null,\n activated: false\n });\n}\nconst sentinelMark = \"\u0001\";\nfunction evaluateLegacyObject(object, rootPath) {\n const leaves = [];\n const visit = (current, currentPath) => {\n const value = {};\n for (const property of current.getProperties()) {\n if (Node.isSpreadAssignment(property)) {\n return {\n value: null,\n fatal: `spread \"${compact(property.getText())}\" hides legacy condition entries`\n };\n }\n if (!Node.isPropertyAssignment(property)) {\n return {\n value: null,\n fatal: `property \"${compact(property.getText())}\" is not a static assignment`\n };\n }\n const nameNode = property.getNameNode();\n if (Node.isComputedPropertyName(nameNode)) {\n return {\n value: null,\n fatal: `computed property \"${compact(nameNode.getText())}\" hides the affected style property`\n };\n }\n const name = propertyName(nameNode);\n if (name === null) {\n return {\n value: null,\n fatal: `property name \"${compact(nameNode.getText())}\" is not statically known`\n };\n }\n const path = `${currentPath}.${name}`;\n const initializer = unwrapExpression(property.getInitializerOrThrow());\n if (Node.isObjectLiteralExpression(initializer)) {\n const nested = visit(initializer, path);\n if (nested.fatal) return nested;\n value[name] = nested.value;\n continue;\n }\n const leaf = staticLeafValue(initializer);\n if (leaf) {\n value[name] = leaf.value;\n continue;\n }\n value[name] = `${sentinelMark}${leaves.length}${sentinelMark}`;\n leaves.push({ path, prop: name, expression: initializer });\n }\n return { value, fatal: null };\n };\n const result = visit(object, rootPath);\n return { ...result, leaves };\n}\nfunction conditionProperties(value) {\n const properties = /* @__PURE__ */ new Set();\n const visit = (object) => {\n for (const key in object) {\n const child = object[key];\n if (child !== null && typeof child === \"object\" && isLegacyConditionName(key)) {\n visit(child);\n continue;\n }\n if (!styleProps.has(key)) continue;\n for (const property of expandToLonghands(key, shorthands)) properties.add(property);\n }\n };\n visit(value);\n return properties;\n}\nfunction pushLegacy(site, name, text, initializer, node) {\n const index = site.index++;\n site.legacy = true;\n const keep = (properties2) => {\n site.members.push({\n type: \"legacy\",\n index,\n name,\n text,\n contributions: [],\n properties: properties2,\n failed: true\n });\n };\n if (initializer === null || !Node.isObjectLiteralExpression(initializer)) {\n addFlag(\n site.flags,\n \"dynamic-legacy-condition\",\n `\"${name}\" is not an inline object literal, so its entries are not statically known`\n );\n keep(null);\n return;\n }\n const evaluated = evaluateLegacyObject(initializer, name);\n if (evaluated.fatal || evaluated.value === null) {\n addFlag(site.flags, \"dynamic-legacy-condition\", evaluated.fatal ?? \"unresolved\");\n keep(null);\n return;\n }\n const properties = conditionProperties(evaluated.value);\n const eligibilityStack = [{ object: evaluated.value, path: name }];\n let hasRejectedProperty = false;\n while (eligibilityStack.length > 0) {\n const current = eligibilityStack.pop();\n for (const prop in current.object) {\n const value = current.object[prop];\n const targetProp = resolveProp(prop);\n if (styleProps.has(targetProp) && !isLegacyConditionName(prop)) {\n const assessment = assessFlatConversion(\n {\n property: targetProp,\n targets: site.targets,\n host: site.host\n },\n site.registry\n );\n if (assessment.verdict === \"ineligible\") {\n addAssessment(site, targetProp, assessment);\n hasRejectedProperty = true;\n }\n continue;\n }\n if (value !== null && typeof value === \"object\" && !Array.isArray(value) && isLegacyConditionName(prop)) {\n eligibilityStack.push({\n object: value,\n path: `${current.path}.${prop}`\n });\n }\n }\n }\n if (hasRejectedProperty) {\n keep(properties);\n return;\n }\n const unresolved = site.containers.unresolved.get(node);\n if (unresolved !== void 0) {\n addFlag(site.flags, unresolved.code, unresolved.detail);\n keep(properties);\n return;\n }\n const resolution = resolveLegacyName(name, site.registry);\n if (!resolution.ok) {\n addFlag(site.flags, resolution.code, resolution.message);\n keep(properties);\n return;\n }\n const payloads = /* @__PURE__ */ new Map();\n let failed = false;\n for (let index2 = 0; index2 < evaluated.leaves.length; index2++) {\n const leaf = evaluated.leaves[index2];\n const classified = classifyDynamic(leaf.prop, leaf.expression, site.registry);\n for (const warning of classified.warnings) {\n addFlag(site.warnings, warning.code, `${leaf.path}: ${warning.detail}`);\n }\n if (classified.payload === null) {\n const flag = classified.problem ?? classified.blocked;\n addFlag(\n site.flags,\n flag?.code ?? \"dynamic-condition-value\",\n `${leaf.path}: ${flag?.detail ?? \"the value is not statically known\"}`\n );\n failed = true;\n continue;\n }\n payloads.set(`${sentinelMark}${index2}${sentinelMark}`, classified.payload);\n }\n if (failed) {\n keep(properties);\n return;\n }\n const { canonical, replaceRoot } = resolution.resolved;\n const converted = convertLegacyConditionProp(canonical, evaluated.value, {\n registry: site.registry\n });\n if (converted === null) {\n addFlag(\n site.flags,\n \"unknown-legacy-condition\",\n `\"${name}\" is not a registered legacy condition spelling`\n );\n keep(properties);\n return;\n }\n for (const error of converted.errors) {\n const path = error.path.startsWith(canonical) ? `${name}${error.path.slice(canonical.length)}` : error.path;\n addFlag(site.flags, error.code, `${path}: ${error.message}`);\n failed = true;\n }\n const contributions = [];\n for (const contribution of converted.contributions) {\n if (!styleProps.has(contribution.prop)) {\n addFlag(\n site.flags,\n \"non-style-condition-entry\",\n `${name}.${contribution.prop} is not a style property, so a flat value cannot carry it`\n );\n failed = true;\n continue;\n }\n const modifiers = replaceRoot ? [...replaceRoot, ...contribution.clause.modifiers.slice(1)] : contribution.clause.modifiers;\n const dynamicPayload = payloads.get(contribution.clause.payload);\n contributions.push({\n prop: contribution.prop,\n clause: {\n modifiers,\n payload: dynamicPayload ?? contribution.clause.payload\n },\n dynamic: dynamicPayload !== void 0\n });\n if (!assessProgram(site, contribution.prop, modifiers)) failed = true;\n }\n if (failed) {\n keep(properties);\n return;\n }\n site.members.push({\n type: \"legacy\",\n index,\n name,\n text,\n contributions,\n properties,\n failed: false\n });\n}\nfunction activationName(prop) {\n return resolveProp(prop);\n}\nconst noProperties = /* @__PURE__ */ new Set();\nconst legacyStatePriorities = Object.freeze({\n hover: 2,\n press: 3,\n active: 3,\n focus: 4,\n \"focus-visible\": 4,\n \"focus-within\": 4,\n enter: 4,\n disabled: 5,\n exit: 5\n});\nfunction legacyStatePriority(modifiers) {\n let priority = null;\n for (const modifier of modifiers) {\n const candidate = legacyStatePriorities[modifier];\n if (candidate !== void 0 && (priority === null || candidate > priority)) {\n priority = candidate;\n }\n }\n return priority;\n}\nfunction orderedEntries(site) {\n const ordered = [];\n for (const member of site.members) {\n if (member.type === \"authored\") {\n if (!member.activated || member.payload === null) continue;\n ordered.push({\n prop: member.prop,\n value: { base: member.payload, clauses: [] },\n dynamic: member.dynamic,\n index: member.index,\n base: true,\n from: null,\n legacyStatePriority: null\n });\n continue;\n }\n if (member.type !== \"legacy\" || member.failed) continue;\n for (const contribution of member.contributions) {\n ordered.push({\n prop: contribution.prop,\n value: { base: null, clauses: [contribution.clause] },\n dynamic: contribution.dynamic,\n index: member.index,\n base: false,\n from: member,\n legacyStatePriority: legacyStatePriority(contribution.clause.modifiers)\n });\n }\n }\n const ranked = ordered.filter((entry) => entry.legacyStatePriority !== null).sort(\n (left, right) => left.legacyStatePriority - right.legacyStatePriority || left.index - right.index\n );\n if (ranked.length < 2) return ordered;\n let rankedIndex = 0;\n return ordered.map(\n (entry) => entry.legacyStatePriority === null ? entry : ranked[rankedIndex++]\n );\n}\nfunction buildSlots(ordered) {\n const slots = /* @__PURE__ */ new Map();\n for (const entry of ordered) {\n for (const property of expandToLonghands(entry.prop, shorthands)) {\n const previous = slots.get(property);\n const value = previous ? mergeProgramValues(previous.value, entry.value) : entry.value;\n slots.delete(property);\n slots.set(property, {\n property,\n sourceProp: entry.prop,\n value,\n anchor: previous ? Math.min(previous.anchor, entry.index) : entry.index,\n last: previous ? Math.max(previous.last, entry.index) : entry.index,\n dynamic: (previous?.dynamic ?? false) || entry.dynamic\n });\n }\n }\n return slots;\n}\nfunction barriers(site) {\n const list = [];\n for (const member of site.members) {\n if (member.type === \"spread\") {\n list.push({ index: member.index, source: member.text, bases: null, clauses: null });\n continue;\n }\n if (member.type === \"authored\" && !member.activated) {\n list.push({\n index: member.index,\n source: member.text,\n bases: new Set(expandToLonghands(member.prop, shorthands)),\n clauses: noProperties\n });\n continue;\n }\n if (member.type === \"legacy\" && member.failed) {\n list.push({\n index: member.index,\n source: member.name,\n bases: noProperties,\n clauses: member.properties\n });\n }\n }\n return list;\n}\nfunction resolveBarriers(site, ordered, slots) {\n let changed = false;\n for (const slot of slots.values()) {\n const contributions = ordered.filter(\n (entry) => expandToLonghands(entry.prop, shorthands).includes(slot.property)\n );\n for (const barrier of barriers(site)) {\n if (barrier.index <= slot.anchor || barrier.index >= slot.last) continue;\n if (barrier.clauses === null || barrier.clauses.has(slot.property)) {\n for (const entry of contributions) {\n if (entry.base || entry.index < barrier.index || !entry.from) continue;\n addFlag(\n site.flags,\n \"condition-order-not-preservable\",\n `\"${compact(barrier.source)}\" can set \"${slot.property}\" between the values contributing to it, so \"${entry.from.name}\" stays authored instead of merging`\n );\n entry.from.failed = true;\n changed = true;\n }\n }\n if (barrier.bases === null || barrier.bases.has(slot.property)) {\n for (const entry of contributions) {\n if (!entry.base || entry.index < barrier.index) continue;\n const authored = site.members.find(\n (member) => member.type === \"authored\" && member.index === entry.index && member.activated\n );\n if (authored && authored.type === \"authored\") {\n authored.payload = null;\n authored.blocked = {\n code: \"base-order-not-preservable\",\n detail: `\"${compact(barrier.source)}\" can set \"${slot.property}\" between the values contributing to it, so this base cannot move`\n };\n changed = true;\n continue;\n }\n addFlag(\n site.flags,\n \"base-order-not-preservable\",\n `\"${compact(barrier.source)}\" can set \"${slot.property}\" between the values contributing to it, so the merged base may win where it did not before`\n );\n }\n }\n }\n }\n return changed;\n}\nfunction assemble(site) {\n let slots = /* @__PURE__ */ new Map();\n for (; ; ) {\n let changed = false;\n const contributed = /* @__PURE__ */ new Set();\n for (const member of site.members) {\n if (member.type !== \"legacy\" || member.failed) continue;\n for (const contribution of member.contributions) {\n contributed.add(activationName(contribution.prop));\n }\n }\n for (const member of site.members) {\n if (member.type !== \"authored\") continue;\n const name = activationName(member.prop);\n member.activated = member.token && member.payload !== null || contributed.has(name);\n if (!member.activated || member.payload !== null) continue;\n const blocked = member.blocked;\n addFlag(\n site.flags,\n blocked?.code ?? \"unprovable-dynamic-value\",\n `a legacy condition targets \"${member.prop}\": ${blocked?.detail ?? `its base value \"${compact(member.text)}\" cannot join a program`}`\n );\n member.activated = false;\n for (const other of site.members) {\n if (other.type !== \"legacy\" || other.failed) continue;\n if (other.contributions.some((one) => activationName(one.prop) === name)) {\n other.failed = true;\n changed = true;\n }\n }\n }\n if (changed) continue;\n const ordered = orderedEntries(site);\n slots = buildSlots(ordered);\n if (!resolveBarriers(site, ordered, slots)) break;\n }\n const entries = [];\n for (const member of site.members) {\n if (member.type === \"authored\" && member.activated) continue;\n if (member.type === \"legacy\" && !member.failed) continue;\n entries.push({ index: member.index, text: member.text });\n }\n const printed = printSlots(site, slots);\n entries.push(...printed.output);\n entries.push(...site.extras);\n entries.sort((left, right) => left.index - right.index);\n return { entries, programs: printed.programs };\n}\nfunction printSlots(site, slots) {\n const printed = /* @__PURE__ */ new Set();\n const output = [];\n const programs = [];\n const outputCommentRanges = [];\n for (const [property, slot] of slots) {\n if (printed.has(property)) continue;\n const serialized = printProgram(slot.value);\n const expansion = expandToLonghands(slot.sourceProp, shorthands);\n const collapses = expansion.length > 0 && expansion.every((expanded) => {\n const candidate = slots.get(expanded);\n return candidate !== void 0 && candidate.sourceProp === slot.sourceProp && candidate.anchor === slot.anchor && candidate.dynamic === slot.dynamic && printProgram(candidate.value) === serialized;\n });\n const name = collapses ? slot.sourceProp : property;\n if (collapses) for (const expanded of expansion) printed.add(expanded);\n else printed.add(property);\n const value = slot.dynamic ? `\\`${serialized}\\`` : JSON.stringify(serialized);\n programs.push({ name, value: serialized, dynamic: slot.dynamic });\n const propertyText = site.kind === \"styled\" ? `${name}: ${value}` : `${name}=${slot.dynamic ? `{${value}}` : value}`;\n output.push({\n index: slot.anchor,\n text: propertyText\n });\n outputCommentRanges.push({\n outputIndex: output.length - 1,\n first: slot.anchor,\n last: slot.last\n });\n }\n verify(\n site,\n slots,\n [...output].sort((left, right) => left.index - right.index)\n );\n if (site.kind === \"styled\") {\n const commentedIndexes = /* @__PURE__ */ new Set();\n for (const range of outputCommentRanges) {\n const comments = [];\n for (const [index, texts] of site.comments) {\n if (index < range.first || index > range.last || commentedIndexes.has(index)) {\n continue;\n }\n comments.push(...texts);\n commentedIndexes.add(index);\n }\n if (comments.length) {\n output[range.outputIndex].text = `${comments.join(\"\\n\")}\n${output[range.outputIndex].text}`;\n }\n }\n }\n return { output, programs };\n}\nfunction sanitize(text) {\n let result = \"\";\n for (let index = 0; index < text.length; index++) {\n if (text[index] !== \"$\" || text[index + 1] !== \"{\") {\n result += text[index];\n continue;\n }\n let depth = 0;\n let end = index + 1;\n for (; end < text.length; end++) {\n if (text[end] === \"{\") depth++;\n else if (text[end] === \"}\" && --depth === 0) break;\n }\n result += \"zz\";\n index = end;\n }\n return result;\n}\nfunction verify(site, slots, output) {\n const separator = site.kind === \"styled\" ? \": \" : \"=\";\n const reparsed = /* @__PURE__ */ new Map();\n for (const entry of output) {\n const split = entry.text.indexOf(separator);\n const prop = entry.text.slice(0, split);\n let raw = entry.text.slice(split + separator.length);\n if (raw.startsWith(\"{\")) raw = raw.slice(1, -1);\n const text = sanitize(raw.slice(1, -1));\n const parsed = parseValue(text, site.registry);\n if (!parsed.ok) {\n addFlag(\n site.flags,\n \"emitted-value-invalid\",\n `\"${prop}=${text}\" does not parse: ${parsed.errors.map((error) => error.message).join(\"; \")}`\n );\n return;\n }\n for (const property of expandToLonghands(prop, shorthands)) {\n const previous = reparsed.get(property);\n reparsed.set(\n property,\n previous ? mergeProgramValues(previous, parsed.value) : parsed.value\n );\n }\n }\n for (const [property, slot] of slots) {\n const actual = reparsed.get(property);\n const expected = sanitize(printProgram(slot.value));\n if (actual === void 0 || sanitize(printProgram(actual)) !== expected) {\n addFlag(\n site.flags,\n \"emitted-program-mismatch\",\n `\"${property}\" reads back as \"${actual ? sanitize(printProgram(actual)) : \"(missing)\"}\" instead of \"${expected}\"`\n );\n }\n }\n}\nfunction propertyName(node) {\n if (Node.isIdentifier(node) || Node.isStringLiteral(node) || Node.isNumericLiteral(node)) {\n return node.getText().replace(/^['\"]|['\"]$/g, \"\");\n }\n return null;\n}\nfunction jsxAttributeName(attribute) {\n const name = attribute.getNameNode();\n return Node.isIdentifier(name) ? name.getText() : null;\n}\nfunction jsxLiteralString(attribute) {\n const initializer = attribute.getInitializer();\n if (Node.isStringLiteral(initializer)) return initializer.getLiteralValue();\n const expression = jsxExpression(attribute);\n if (expression && (Node.isStringLiteral(expression) || Node.isNoSubstitutionTemplateLiteral(expression))) {\n return expression.getLiteralValue();\n }\n return null;\n}\nfunction jsxExpression(attribute) {\n const initializer = attribute.getInitializer();\n if (!Node.isJsxExpression(initializer)) return null;\n const expression = initializer.getExpression();\n return expression ? unwrapExpression(expression) : null;\n}\nfunction isConvertedJsxAttribute(attribute) {\n if (Node.isJsxSpreadAttribute(attribute)) return true;\n if (!Node.isJsxAttribute(attribute)) return false;\n const name = jsxAttributeName(attribute);\n return !!name && isConvertedName(name);\n}\nfunction rewriteJsxSite(opening, entries) {\n const attributes = opening.getAttributes();\n const rendered = [];\n let inserted = false;\n for (const attribute of attributes) {\n if (isConvertedJsxAttribute(attribute)) {\n if (!inserted) {\n rendered.push(...entries.map((entry) => entry.text));\n inserted = true;\n }\n } else {\n rendered.push(attribute.getText());\n }\n }\n const source = opening.getText();\n const start = opening.getStart();\n const first = attributes[0];\n const last = attributes[attributes.length - 1];\n const prefix = source.slice(0, first.getStart() - start);\n const suffix = source.slice(last.getEnd() - start);\n const authoredMultiline = prefix.includes(\"\\n\") || source.slice(first.getStart() - start, last.getEnd() - start).includes(\"\\n\");\n opening.replaceWithText(\n authoredMultiline ? `${prefix.replace(/[ \\t]+$/, \"\")}${rendered.map((text) => ` ${text}`).join(\"\\n\")}${suffix.replace(/\\n[ \\t]+/, \"\\n\")}` : `${prefix}${rendered.join(\" \")}${suffix}`\n );\n}\nfunction containerExtras(site, declaration, index) {\n const target = site.containers.targets.get(declaration);\n if (target === void 0) return;\n const name = target.named && target.group !== \"\" ? target.group : null;\n const text = site.kind === \"styled\" ? name === null ? \"container: true\" : `container: ${JSON.stringify(name)}` : name === null ? \"container\" : `container=${JSON.stringify(name)}`;\n site.legacy = true;\n site.extras.push({ index, text });\n if (target.flag !== null) addFlag(site.flags, target.flag.code, target.flag.detail);\n addNote(\n site,\n `a descendant uses a legacy container-size condition on this group, so it declares a query container`\n );\n}\nfunction convertJsxSite(opening, registry, containers, targets, host, write = false) {\n const site = createSite(\"jsx\", registry, containers, targets, host);\n const before = [];\n for (const attribute of opening.getAttributes()) {\n if (Node.isJsxSpreadAttribute(attribute)) {\n const expression = unwrapExpression(attribute.getExpression());\n if (Node.isObjectLiteralExpression(expression)) {\n before.push(compact(attribute.getText()));\n for (const property of expression.getProperties()) {\n if (Node.isPropertyAssignment(property)) {\n const name2 = propertyName(property.getNameNode());\n if (name2 !== null) {\n if (isConvertedName(name2)) {\n pushStyledProperty(\n site,\n name2,\n property,\n `${name2}={${property.getInitializerOrThrow().getText()}}`\n );\n } else {\n site.members.push({\n type: \"passthrough\",\n index: site.index++,\n text: `${name2}={${property.getInitializerOrThrow().getText()}}`\n });\n }\n continue;\n }\n }\n site.members.push({\n type: \"spread\",\n index: site.index++,\n text: Node.isSpreadAssignment(property) ? `{${property.getText()}}` : `{...{ ${property.getText()} }}`\n });\n }\n continue;\n }\n before.push(compact(attribute.getText()));\n site.members.push({\n type: \"spread\",\n index: site.index++,\n text: attribute.getText()\n });\n continue;\n }\n const name = jsxAttributeName(attribute);\n if (!name) continue;\n const text = compact(attribute.getText());\n if (name === \"group\") {\n before.push(text);\n containerExtras(site, attribute, site.index);\n site.members.push({ type: \"passthrough\", index: site.index++, text });\n continue;\n }\n if (isLegacyConditionName(name)) {\n before.push(text);\n pushLegacy(site, name, text, jsxExpression(attribute), attribute);\n continue;\n }\n if (tokenVariantProps.has(name)) {\n if (pushTokenVariant(site, name, attribute, text)) before.push(text);\n continue;\n }\n if (!styleProps.has(name)) continue;\n before.push(text);\n const literal = jsxLiteralString(attribute);\n pushBase(\n site,\n name,\n text,\n literal === null ? jsxExpression(attribute) : null,\n literal\n );\n }\n if (!site.legacy) return null;\n const { entries, programs } = assemble(site);\n const sourceFile = opening.getSourceFile();\n const report = {\n kind: \"jsx\",\n label: `<${opening.getTagNameNode().getText()}>`,\n line: sourceFile.getLineAndColumnAtPos(opening.getStart()).line,\n before: before.join(\" \"),\n after: entries.map((entry) => entry.text).join(\" \") || \"(no style props left)\",\n programs: [...programs, ...site.respelled],\n assessments: site.assessments,\n assessmentVerdict: assessmentVerdict(site.assessments),\n warnings: site.warnings,\n flags: site.flags,\n inventory: site.inventory,\n pending: site.pending,\n notes: site.notes,\n legacyLeft: site.members.filter((member) => member.type === \"legacy\" && member.failed).length\n };\n if (write && !site.flags.some(\n (flag) => flag.code === \"emitted-program-mismatch\" || flag.code === \"emitted-value-invalid\"\n )) {\n rewriteJsxSite(opening, entries);\n }\n return report;\n}\nfunction pushStyledProperty(site, name, property, authoredText) {\n const comments = allCommentTexts(property);\n if (comments.length) site.comments.set(site.index, comments);\n const text = authoredText ?? textWithOuterComments(property);\n const initializer = unwrapExpression(property.getInitializerOrThrow());\n if (name === \"group\") {\n containerExtras(site, property, site.index);\n site.members.push({ type: \"passthrough\", index: site.index++, text });\n return;\n }\n if (isLegacyConditionName(name)) {\n pushLegacy(site, name, text, initializer, property);\n return;\n }\n if (tokenVariantProps.has(name)) {\n pushTokenVariant(site, name, property, text);\n return;\n }\n if (!styleProps.has(name)) return;\n const literal = Node.isStringLiteral(initializer) || Node.isNoSubstitutionTemplateLiteral(initializer) ? initializer.getLiteralValue() : null;\n pushBase(site, name, text, literal === null ? initializer : null, literal);\n}\nfunction pushTokenVariant(site, name, node, text) {\n const index = site.index++;\n const initializer = node.getInitializer();\n const value = initializer !== void 0 && Node.isJsxExpression(initializer) ? initializer.getExpression() : initializer;\n const literals = value === void 0 ? [] : [value, ...value.getDescendants()].filter(\n (candidate) => (Node.isStringLiteral(candidate) || Node.isNoSubstitutionTemplateLiteral(candidate)) && candidate.getLiteralValue().startsWith(\"$\")\n );\n if (value === void 0 || literals.length === 0) {\n site.members.push({ type: \"passthrough\", index, text });\n return false;\n }\n const source = value.getText();\n const start = value.getStart();\n let rewritten = \"\";\n let cursor = start;\n for (const literal of literals) {\n let replacement = \"true\";\n if (literal.getLiteralValue() !== \"$true\") {\n const flat = flatStringValue(literal.getLiteralValue(), site.registry);\n if (flat.text === null) {\n site.legacy = true;\n addFlag(\n site.flags,\n flat.error?.code ?? \"unsupported-legacy-value\",\n `${name}: ${flat.error?.message ?? `${literal.getText()} has no flat spelling`}`\n );\n site.members.push({ type: \"passthrough\", index, text });\n return true;\n }\n const quote = literal.getText()[0];\n replacement = `${quote}${flat.text}${quote}`;\n }\n rewritten += source.slice(cursor - start, literal.getStart() - start);\n rewritten += replacement;\n cursor = literal.getEnd();\n }\n rewritten += source.slice(cursor - start);\n site.legacy = true;\n const output = Node.isJsxAttribute(node) ? Node.isStringLiteral(initializer) ? rewritten === \"true\" ? name : `${name}=${rewritten}` : `${name}={${rewritten}}` : site.kind === \"jsx\" ? `${name}={${rewritten}}` : textWithOuterComments(node, `${node.getNameNode().getText()}: ${rewritten}`);\n site.members.push({ type: \"passthrough\", index, text: output });\n site.respelled.push({\n name,\n value: rewritten,\n dynamic: literals.length !== 1 || literals[0] !== value\n });\n return true;\n}\nfunction convertStyleObject(object, kind, label, registry, containers, targets, host, write = false) {\n const site = createSite(kind, registry, containers, targets, host);\n const before = [];\n for (const property of object.getProperties()) {\n if (Node.isSpreadAssignment(property)) {\n const expression = unwrapExpression(property.getExpression());\n before.push(compact(property.getText()));\n if (Node.isObjectLiteralExpression(expression)) {\n for (const nested of expression.getProperties()) {\n if (Node.isPropertyAssignment(nested)) {\n const name2 = propertyName(nested.getNameNode());\n if (name2 !== null) {\n if (isConvertedName(name2)) {\n pushStyledProperty(site, name2, nested);\n } else {\n site.members.push({\n type: \"passthrough\",\n index: site.index++,\n text: compact(nested.getText())\n });\n }\n continue;\n }\n }\n site.members.push({\n type: \"spread\",\n index: site.index++,\n text: compact(nested.getText())\n });\n }\n continue;\n }\n site.members.push({\n type: \"spread\",\n index: site.index++,\n text: compact(property.getText())\n });\n continue;\n }\n if (!Node.isPropertyAssignment(property)) continue;\n const nameNode = property.getNameNode();\n if (Node.isComputedPropertyName(nameNode)) {\n addFlag(\n site.flags,\n \"computed-property\",\n `\"${compact(nameNode.getText())}\" hides the affected style property`\n );\n continue;\n }\n const name = propertyName(nameNode);\n if (name === null) continue;\n if (!isConvertedName(name)) continue;\n before.push(compact(property.getText()));\n pushStyledProperty(site, name, property);\n }\n if (!site.legacy) return null;\n const { entries, programs } = assemble(site);\n const sourceFile = object.getSourceFile();\n const report = {\n kind,\n label,\n line: sourceFile.getLineAndColumnAtPos(object.getStart()).line,\n before: before.join(\", \"),\n after: entries.map((entry) => entry.text).join(\", \") || \"(no style props left)\",\n programs: [...programs, ...site.respelled],\n assessments: site.assessments,\n assessmentVerdict: assessmentVerdict(site.assessments),\n warnings: site.warnings,\n flags: site.flags,\n inventory: site.inventory,\n pending: site.pending,\n notes: site.notes,\n legacyLeft: site.members.filter((member) => member.type === \"legacy\" && member.failed).length\n };\n if (write && !site.flags.some(\n (flag) => flag.code === \"emitted-program-mismatch\" || flag.code === \"emitted-value-invalid\"\n )) {\n rewriteStyleObject(object, entries);\n }\n return report;\n}\nfunction isConvertedStyledProperty(property) {\n if (Node.isSpreadAssignment(property)) return true;\n if (!Node.isPropertyAssignment(property)) return false;\n const nameNode = property.getNameNode();\n if (Node.isComputedPropertyName(nameNode)) return false;\n const name = propertyName(nameNode);\n return !!name && isConvertedName(name);\n}\nfunction allCommentTexts(node) {\n const comments = /* @__PURE__ */ new Map();\n for (const current of [node, ...node.getDescendants()]) {\n for (const range of [\n ...current.getLeadingCommentRanges(),\n ...current.getTrailingCommentRanges()\n ]) {\n comments.set(range.getPos(), range.getText());\n }\n }\n return [...comments.entries()].sort((left, right) => left[0] - right[0]).map((entry) => entry[1]);\n}\nfunction textWithOuterComments(node, text = node.getText()) {\n const comments = /* @__PURE__ */ new Map();\n for (const range of [\n ...node.getLeadingCommentRanges(),\n ...node.getTrailingCommentRanges()\n ]) {\n comments.set(range.getPos(), range.getText());\n }\n const prefix = [...comments.entries()].sort((left, right) => left[0] - right[0]).map((entry) => entry[1]);\n return [...prefix, text].join(\"\\n \");\n}\nfunction rewriteStyleObject(object, entries) {\n const rendered = [];\n let inserted = false;\n for (const property of object.getProperties()) {\n if (isConvertedStyledProperty(property)) {\n if (!inserted) {\n rendered.push(...entries.map((entry) => entry.text));\n inserted = true;\n }\n } else {\n rendered.push(textWithOuterComments(property));\n }\n }\n if (rendered.length === 0) {\n object.replaceWithText(\"{}\");\n return;\n }\n object.replaceWithText(`{\n${rendered.map((text) => ` ${text}`).join(\",\\n\")}\n}`);\n}\nexport {\n convertJsxSite,\n convertStyleObject,\n sanitize\n};\n//# sourceMappingURL=convert.js.map\n"],"mappings":"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"}
|