@codefast/cli 1.0.0-canary.6 → 1.0.0-canary.7
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/README.md +106 -480
- package/dist/arrange/analyze.js +25 -0
- package/dist/arrange/analyze.js.map +1 -0
- package/dist/arrange/cli-schema.js +29 -0
- package/dist/arrange/cli-schema.js.map +1 -0
- package/dist/arrange/command.js +170 -0
- package/dist/arrange/command.js.map +1 -0
- package/dist/arrange/domain/analyze-service.js +122 -0
- package/dist/arrange/domain/analyze-service.js.map +1 -0
- package/dist/arrange/domain/ast/ast-node.js +240 -0
- package/dist/arrange/domain/ast/ast-node.js.map +1 -0
- package/dist/arrange/domain/ast/collectors-cn.js +81 -0
- package/dist/arrange/domain/ast/collectors-cn.js.map +1 -0
- package/dist/arrange/domain/ast/collectors-jsx.js +24 -0
- package/dist/arrange/domain/ast/collectors-jsx.js.map +1 -0
- package/dist/arrange/domain/ast/collectors-tv.js +319 -0
- package/dist/arrange/domain/ast/collectors-tv.js.map +1 -0
- package/dist/arrange/domain/ast/helpers.js +151 -0
- package/dist/arrange/domain/ast/helpers.js.map +1 -0
- package/dist/arrange/domain/ast/simplify-targets.js +161 -0
- package/dist/arrange/domain/ast/simplify-targets.js.map +1 -0
- package/dist/arrange/domain/ast/targets.js +182 -0
- package/dist/arrange/domain/ast/targets.js.map +1 -0
- package/dist/arrange/domain/constants.js +225 -0
- package/dist/arrange/domain/constants.js.map +1 -0
- package/dist/arrange/domain/grouping-service.js +128 -0
- package/dist/arrange/domain/grouping-service.js.map +1 -0
- package/dist/arrange/domain/grouping.js +435 -0
- package/dist/arrange/domain/grouping.js.map +1 -0
- package/dist/arrange/domain/imports.js +160 -0
- package/dist/arrange/domain/imports.js.map +1 -0
- package/dist/arrange/domain/source-text-formatters.js +100 -0
- package/dist/arrange/domain/source-text-formatters.js.map +1 -0
- package/dist/arrange/domain/tailwind-token.js +50 -0
- package/dist/arrange/domain/tailwind-token.js.map +1 -0
- package/dist/arrange/domain/token-classifier.js +448 -0
- package/dist/arrange/domain/token-classifier.js.map +1 -0
- package/dist/arrange/domain/types.js +11 -0
- package/dist/arrange/domain/types.js.map +1 -0
- package/dist/arrange/output.js +120 -0
- package/dist/arrange/output.js.map +1 -0
- package/dist/arrange/process-file.js +44 -0
- package/dist/arrange/process-file.js.map +1 -0
- package/dist/arrange/resolve-target.js +33 -0
- package/dist/arrange/resolve-target.js.map +1 -0
- package/dist/arrange/scan-target.js +30 -0
- package/dist/arrange/scan-target.js.map +1 -0
- package/dist/arrange/simplify-process-file.js +29 -0
- package/dist/arrange/simplify-process-file.js.map +1 -0
- package/dist/arrange/simplify-sync.js +29 -0
- package/dist/arrange/simplify-sync.js.map +1 -0
- package/dist/arrange/source-parse.js +17 -0
- package/dist/arrange/source-parse.js.map +1 -0
- package/dist/arrange/suggest.js +14 -0
- package/dist/arrange/suggest.js.map +1 -0
- package/dist/arrange/sync.js +48 -0
- package/dist/arrange/sync.js.map +1 -0
- package/dist/arrange/typescript-ast-translator.js +455 -0
- package/dist/arrange/typescript-ast-translator.js.map +1 -0
- package/dist/arrange/workspace.js +31 -0
- package/dist/arrange/workspace.js.map +1 -0
- package/dist/audit/cli-schema.js +22 -0
- package/dist/audit/cli-schema.js.map +1 -0
- package/dist/audit/command.js +60 -0
- package/dist/audit/command.js.map +1 -0
- package/dist/audit/domain/audit-file.js +101 -0
- package/dist/audit/domain/audit-file.js.map +1 -0
- package/dist/audit/domain/mappings.js +103 -0
- package/dist/audit/domain/mappings.js.map +1 -0
- package/dist/audit/domain/tokenize.js +83 -0
- package/dist/audit/domain/tokenize.js.map +1 -0
- package/dist/audit/domain/types.js +2 -0
- package/dist/audit/domain/types.js.map +1 -0
- package/dist/audit/output.js +44 -0
- package/dist/audit/output.js.map +1 -0
- package/dist/audit/prepare.js +42 -0
- package/dist/audit/prepare.js.map +1 -0
- package/dist/audit/run.js +57 -0
- package/dist/audit/run.js.map +1 -0
- package/dist/{bin.mjs → bin.js} +2 -4
- package/dist/bin.js.map +1 -0
- package/dist/cli.js +45 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/cli/format-error.js +19 -0
- package/dist/core/cli/format-error.js.map +1 -0
- package/dist/core/cli/global-options.js +10 -0
- package/dist/core/cli/global-options.js.map +1 -0
- package/dist/core/cli/positional.js +9 -0
- package/dist/core/cli/positional.js.map +1 -0
- package/dist/core/cli/result-handle.js +69 -0
- package/dist/core/cli/result-handle.js.map +1 -0
- package/dist/core/config/loader.js +88 -0
- package/dist/core/config/loader.js.map +1 -0
- package/dist/core/config/schema.js +97 -0
- package/dist/core/config/schema.js.map +1 -0
- package/dist/core/config/warnings.js +12 -0
- package/dist/core/config/warnings.js.map +1 -0
- package/dist/core/config.js +18 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/errors.js +58 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/exit-codes.js +15 -0
- package/dist/core/exit-codes.js.map +1 -0
- package/dist/core/filesystem/node.js +33 -0
- package/dist/core/filesystem/node.js.map +1 -0
- package/dist/core/filesystem/port.js +2 -0
- package/dist/core/filesystem/port.js.map +1 -0
- package/dist/core/glob.js +20 -0
- package/dist/core/glob.js.map +1 -0
- package/dist/core/logger.js +13 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/result.js +16 -0
- package/dist/core/result.js.map +1 -0
- package/dist/core/schema-parse.js +21 -0
- package/dist/core/schema-parse.js.map +1 -0
- package/dist/core/source-text-edit.js +62 -0
- package/dist/core/source-text-edit.js.map +1 -0
- package/dist/core/verbose-diagnostics.js +9 -0
- package/dist/core/verbose-diagnostics.js.map +1 -0
- package/dist/core/workspace/resolver.js +208 -0
- package/dist/core/workspace/resolver.js.map +1 -0
- package/dist/core/workspace/typescript-walk.js +41 -0
- package/dist/core/workspace/typescript-walk.js.map +1 -0
- package/dist/mirror/cli-result.js +20 -0
- package/dist/mirror/cli-result.js.map +1 -0
- package/dist/mirror/cli-schema.js +11 -0
- package/dist/mirror/cli-schema.js.map +1 -0
- package/dist/mirror/command.js +73 -0
- package/dist/mirror/command.js.map +1 -0
- package/dist/mirror/dist-filesystem-impl.js +53 -0
- package/dist/mirror/dist-filesystem-impl.js.map +1 -0
- package/dist/mirror/domain/constants.js +21 -0
- package/dist/mirror/domain/constants.js.map +1 -0
- package/dist/mirror/domain/dirent-guard.js +16 -0
- package/dist/mirror/domain/dirent-guard.js.map +1 -0
- package/dist/mirror/domain/dist-filesystem.js +2 -0
- package/dist/mirror/domain/dist-filesystem.js.map +1 -0
- package/dist/mirror/domain/errors.js +19 -0
- package/dist/mirror/domain/errors.js.map +1 -0
- package/dist/mirror/domain/exports.js +284 -0
- package/dist/mirror/domain/exports.js.map +1 -0
- package/dist/mirror/domain/package-display-name.js +10 -0
- package/dist/mirror/domain/package-display-name.js.map +1 -0
- package/dist/mirror/domain/path-normalizer.js +8 -0
- package/dist/mirror/domain/path-normalizer.js.map +1 -0
- package/dist/mirror/domain/types.js +2 -0
- package/dist/mirror/domain/types.js.map +1 -0
- package/dist/mirror/output.js +47 -0
- package/dist/mirror/output.js.map +1 -0
- package/dist/mirror/package-path.js +40 -0
- package/dist/mirror/package-path.js.map +1 -0
- package/dist/mirror/prepare.js +37 -0
- package/dist/mirror/prepare.js.map +1 -0
- package/dist/mirror/supplement-exports.js +157 -0
- package/dist/mirror/supplement-exports.js.map +1 -0
- package/dist/mirror/sync-reporter.js +125 -0
- package/dist/mirror/sync-reporter.js.map +1 -0
- package/dist/mirror/sync-types.js +2 -0
- package/dist/mirror/sync-types.js.map +1 -0
- package/dist/mirror/sync-workspace-package.js +117 -0
- package/dist/mirror/sync-workspace-package.js.map +1 -0
- package/dist/mirror/sync.js +90 -0
- package/dist/mirror/sync.js.map +1 -0
- package/dist/mirror/write-exports.js +145 -0
- package/dist/mirror/write-exports.js.map +1 -0
- package/dist/tag/cli-result.js +12 -0
- package/dist/tag/cli-result.js.map +1 -0
- package/dist/tag/cli-schema.js +13 -0
- package/dist/tag/cli-schema.js.map +1 -0
- package/dist/tag/command.js +69 -0
- package/dist/tag/command.js.map +1 -0
- package/dist/tag/domain/types.js +2 -0
- package/dist/tag/domain/types.js.map +1 -0
- package/dist/tag/output.js +101 -0
- package/dist/tag/output.js.map +1 -0
- package/dist/tag/prepare.js +30 -0
- package/dist/tag/prepare.js.map +1 -0
- package/dist/tag/resolve-target-path.js +14 -0
- package/dist/tag/resolve-target-path.js.map +1 -0
- package/dist/tag/since-writer.js +231 -0
- package/dist/tag/since-writer.js.map +1 -0
- package/dist/tag/sync.js +166 -0
- package/dist/tag/sync.js.map +1 -0
- package/dist/tag/target-candidates.js +79 -0
- package/dist/tag/target-candidates.js.map +1 -0
- package/dist/tag/target-runner.js +25 -0
- package/dist/tag/target-runner.js.map +1 -0
- package/dist/tag/version-resolver.js +28 -0
- package/dist/tag/version-resolver.js.map +1 -0
- package/package.json +27 -21
- package/dist/arrange/analyze.mjs +0 -24
- package/dist/arrange/cli-schema.mjs +0 -27
- package/dist/arrange/command.mjs +0 -130
- package/dist/arrange/domain/analyze-service.mjs +0 -102
- package/dist/arrange/domain/ast/ast-node.mjs +0 -215
- package/dist/arrange/domain/ast/collectors-cn.mjs +0 -64
- package/dist/arrange/domain/ast/collectors-jsx.mjs +0 -23
- package/dist/arrange/domain/ast/collectors-tv.mjs +0 -189
- package/dist/arrange/domain/ast/helpers.mjs +0 -108
- package/dist/arrange/domain/ast/simplify-targets.mjs +0 -109
- package/dist/arrange/domain/ast/targets.mjs +0 -134
- package/dist/arrange/domain/constants.mjs +0 -213
- package/dist/arrange/domain/grouping-service.mjs +0 -121
- package/dist/arrange/domain/grouping.mjs +0 -338
- package/dist/arrange/domain/imports.mjs +0 -107
- package/dist/arrange/domain/source-text-formatters.mjs +0 -88
- package/dist/arrange/domain/tailwind-token.mjs +0 -40
- package/dist/arrange/domain/token-classifier.mjs +0 -218
- package/dist/arrange/domain/types.mjs +0 -1
- package/dist/arrange/output.mjs +0 -87
- package/dist/arrange/process-file.mjs +0 -42
- package/dist/arrange/resolve-target.mjs +0 -24
- package/dist/arrange/scan-target.mjs +0 -29
- package/dist/arrange/simplify-process-file.mjs +0 -35
- package/dist/arrange/simplify-sync.mjs +0 -32
- package/dist/arrange/source-parse.mjs +0 -18
- package/dist/arrange/suggest.mjs +0 -15
- package/dist/arrange/sync.mjs +0 -51
- package/dist/arrange/typescript-ast-translator.mjs +0 -354
- package/dist/arrange/workspace.mjs +0 -31
- package/dist/cli.mjs +0 -34
- package/dist/core/cli/format-error.mjs +0 -15
- package/dist/core/cli/global-options.mjs +0 -10
- package/dist/core/cli/positional.mjs +0 -11
- package/dist/core/cli/result-handle.mjs +0 -51
- package/dist/core/config/loader.mjs +0 -79
- package/dist/core/config/schema.mjs +0 -60
- package/dist/core/config/warnings.mjs +0 -12
- package/dist/core/config.mjs +0 -19
- package/dist/core/errors.mjs +0 -35
- package/dist/core/exit-codes.mjs +0 -17
- package/dist/core/filesystem/node.mjs +0 -32
- package/dist/core/filesystem/port.mjs +0 -1
- package/dist/core/glob.mjs +0 -20
- package/dist/core/logger.mjs +0 -15
- package/dist/core/result.mjs +0 -21
- package/dist/core/schema-parse.mjs +0 -18
- package/dist/core/source-text-edit.mjs +0 -56
- package/dist/core/verbose-diagnostics.mjs +0 -11
- package/dist/core/workspace/resolver.mjs +0 -177
- package/dist/core/workspace/typescript-walk.mjs +0 -36
- package/dist/mirror/cli-result.mjs +0 -22
- package/dist/mirror/cli-schema.mjs +0 -13
- package/dist/mirror/command.mjs +0 -58
- package/dist/mirror/dist-filesystem-impl.mjs +0 -42
- package/dist/mirror/domain/constants.mjs +0 -31
- package/dist/mirror/domain/dirent-guard.mjs +0 -16
- package/dist/mirror/domain/dist-filesystem.mjs +0 -1
- package/dist/mirror/domain/errors.mjs +0 -21
- package/dist/mirror/domain/exports.mjs +0 -226
- package/dist/mirror/domain/package-display-name.mjs +0 -12
- package/dist/mirror/domain/path-normalizer.mjs +0 -10
- package/dist/mirror/domain/types.mjs +0 -1
- package/dist/mirror/output.mjs +0 -48
- package/dist/mirror/package-path.mjs +0 -32
- package/dist/mirror/prepare.mjs +0 -33
- package/dist/mirror/supplement-exports.mjs +0 -114
- package/dist/mirror/sync-reporter.mjs +0 -107
- package/dist/mirror/sync-types.mjs +0 -1
- package/dist/mirror/sync-workspace-package.mjs +0 -109
- package/dist/mirror/sync.mjs +0 -88
- package/dist/mirror/write-exports.mjs +0 -94
- package/dist/tag/cli-result.mjs +0 -11
- package/dist/tag/cli-schema.mjs +0 -15
- package/dist/tag/command.mjs +0 -56
- package/dist/tag/domain/types.mjs +0 -1
- package/dist/tag/output.mjs +0 -87
- package/dist/tag/prepare.mjs +0 -29
- package/dist/tag/resolve-target-path.mjs +0 -12
- package/dist/tag/since-writer.mjs +0 -131
- package/dist/tag/sync.mjs +0 -149
- package/dist/tag/target-candidates.mjs +0 -68
- package/dist/tag/target-runner.mjs +0 -26
- package/dist/tag/version-resolver.mjs +0 -25
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { forEachDomainChild, isDomainArrayLiteralExpression, isDomainCallExpression, isDomainJsxAttribute, isDomainJsxExpression, isDomainObjectLiteralExpression, isDomainPropertyAssignment, isDomainSpreadElement, isDomainTailwindClassLiteral, } from "#/arrange/domain/ast/ast-node";
|
|
2
|
+
import { buildKnownCnTvBindings, isCnOrTvIdentifier } from "#/arrange/domain/ast/helpers";
|
|
3
|
+
import { MAX_OBJECT_DEPTH } from "#/arrange/domain/constants";
|
|
4
|
+
import { escapeTsStringLiteralContent } from "#/arrange/domain/source-text-formatters";
|
|
5
|
+
import { indentOfLineContaining } from "#/core/source-text-edit";
|
|
6
|
+
function toFlatString(text) {
|
|
7
|
+
return `"${escapeTsStringLiteralContent(text.trim())}"`;
|
|
8
|
+
}
|
|
9
|
+
function joinLiterals(args) {
|
|
10
|
+
return args
|
|
11
|
+
.filter(isDomainTailwindClassLiteral)
|
|
12
|
+
.map((lit) => lit.text)
|
|
13
|
+
.join(" ");
|
|
14
|
+
}
|
|
15
|
+
function isAllStaticLiterals(args) {
|
|
16
|
+
return args.length > 0 && args.every(isDomainTailwindClassLiteral);
|
|
17
|
+
}
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Mixed cn() merge: ALL static args → one string first, dynamic args follow
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
/**
|
|
22
|
+
* For a cn() call that has both static and dynamic args:
|
|
23
|
+
* - Merge ALL static string literals (regardless of position) into one string.
|
|
24
|
+
* - Place the merged string first.
|
|
25
|
+
* - Append all dynamic args in their original relative order.
|
|
26
|
+
*
|
|
27
|
+
* Returns `null` when nothing changes (0 statics, or already 1 static at arg[0]).
|
|
28
|
+
*/
|
|
29
|
+
function buildMixedCnReplacement(call, sourceText) {
|
|
30
|
+
const args = [...call.arguments];
|
|
31
|
+
if (args.length === 0) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
const staticTexts = [];
|
|
35
|
+
const dynamicSrcs = [];
|
|
36
|
+
for (const arg of args) {
|
|
37
|
+
if (isDomainTailwindClassLiteral(arg)) {
|
|
38
|
+
staticTexts.push(arg.text);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
dynamicSrcs.push(sourceText.slice(arg.pos, arg.end));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (staticTexts.length === 0) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
// Already simplest form: 1 static arg already at the front.
|
|
48
|
+
const firstArg = args[0];
|
|
49
|
+
if (staticTexts.length === 1 && firstArg !== undefined && isDomainTailwindClassLiteral(firstArg)) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
const flatStatic = staticTexts.join(" ").trim();
|
|
53
|
+
const baseIndent = indentOfLineContaining(sourceText, call.pos);
|
|
54
|
+
const argIndent = `${baseIndent} `;
|
|
55
|
+
const lines = [
|
|
56
|
+
`${argIndent}"${escapeTsStringLiteralContent(flatStatic)}",`,
|
|
57
|
+
...dynamicSrcs.map((src) => `${argIndent}${src},`),
|
|
58
|
+
];
|
|
59
|
+
return `cn(\n${lines.join("\n")}\n${baseIndent})`;
|
|
60
|
+
}
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
// tv() array collector
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
function collectTvArrayEdits(obj, results, depth) {
|
|
65
|
+
if (depth > MAX_OBJECT_DEPTH) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
for (const prop of obj.properties) {
|
|
69
|
+
if (!isDomainPropertyAssignment(prop)) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const init = prop.initializer;
|
|
73
|
+
if (isDomainArrayLiteralExpression(init)) {
|
|
74
|
+
const elements = [...init.elements];
|
|
75
|
+
const hasSpread = elements.some(isDomainSpreadElement);
|
|
76
|
+
if (!hasSpread && elements.length > 0 && isAllStaticLiterals(elements)) {
|
|
77
|
+
results.push({
|
|
78
|
+
start: init.pos,
|
|
79
|
+
end: init.end,
|
|
80
|
+
replacement: toFlatString(joinLiterals(elements)),
|
|
81
|
+
label: "tv-array",
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
else if (isDomainObjectLiteralExpression(init)) {
|
|
86
|
+
collectTvArrayEdits(init, results, depth + 1);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
// Public collector
|
|
92
|
+
// ---------------------------------------------------------------------------
|
|
93
|
+
/**
|
|
94
|
+
* Collect all simplify edits for a source file:
|
|
95
|
+
* - Arrays of pure string literals inside tv() slots → flat string
|
|
96
|
+
* - cn() calls whose every argument is a static string literal → flat string (unwrap cn)
|
|
97
|
+
* - cn() calls with mixed static + dynamic args → merge adjacent statics into one string
|
|
98
|
+
* - JSX className={cn(...all-static...)} → className="flat string"
|
|
99
|
+
*
|
|
100
|
+
* @since 0.3.16-canary.0
|
|
101
|
+
*/
|
|
102
|
+
export function collectSimplifyTargets(sourceFile) {
|
|
103
|
+
const sourceText = sourceFile.text;
|
|
104
|
+
const results = [];
|
|
105
|
+
const knownBindings = buildKnownCnTvBindings(sourceFile);
|
|
106
|
+
const seenCnPos = new Set();
|
|
107
|
+
const visitNode = (node) => {
|
|
108
|
+
if (isDomainCallExpression(node)) {
|
|
109
|
+
if (isCnOrTvIdentifier(node.expression, "tv", knownBindings)) {
|
|
110
|
+
const arg0 = node.arguments[0];
|
|
111
|
+
if (arg0 && isDomainObjectLiteralExpression(arg0)) {
|
|
112
|
+
collectTvArrayEdits(arg0, results, 0);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else if (isCnOrTvIdentifier(node.expression, "cn", knownBindings) && !seenCnPos.has(node.pos)) {
|
|
116
|
+
seenCnPos.add(node.pos);
|
|
117
|
+
const args = [...node.arguments];
|
|
118
|
+
if (isAllStaticLiterals(args)) {
|
|
119
|
+
// All static → remove cn() wrapper entirely
|
|
120
|
+
const flat = joinLiterals(args);
|
|
121
|
+
const parent = node.parent;
|
|
122
|
+
if (parent && isDomainJsxExpression(parent) && parent.parent && isDomainJsxAttribute(parent.parent)) {
|
|
123
|
+
// className={cn("a", "b")} → className="a b"
|
|
124
|
+
results.push({
|
|
125
|
+
start: parent.pos,
|
|
126
|
+
end: parent.end,
|
|
127
|
+
replacement: toFlatString(flat),
|
|
128
|
+
label: "jsx-cn",
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
results.push({
|
|
133
|
+
start: node.pos,
|
|
134
|
+
end: node.end,
|
|
135
|
+
replacement: toFlatString(flat),
|
|
136
|
+
label: "cn-static",
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
// Mixed static + dynamic → merge adjacent statics
|
|
142
|
+
const replacement = buildMixedCnReplacement(node, sourceText);
|
|
143
|
+
if (replacement !== null) {
|
|
144
|
+
results.push({
|
|
145
|
+
start: node.pos,
|
|
146
|
+
end: node.end,
|
|
147
|
+
replacement,
|
|
148
|
+
label: "cn-merge",
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
forEachDomainChild(node, visitNode);
|
|
155
|
+
};
|
|
156
|
+
for (const stmt of sourceFile.statements) {
|
|
157
|
+
visitNode(stmt);
|
|
158
|
+
}
|
|
159
|
+
return results;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=simplify-targets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simplify-targets.js","sourceRoot":"","sources":["../../../../src/arrange/domain/ast/simplify-targets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { isDomainArrayLiteralExpression, isDomainJsxAttribute, isDomainPropertyAssignment, isDomainTailwindClassLiteral, forEachDomainChild, } from "#/arrange/domain/ast/ast-node";
|
|
2
|
+
import { isUnsafeLiteralForCnStyleApplySplit } from "#/arrange/domain/ast/collectors-cn";
|
|
3
|
+
import { jsxClassNameStaticLiteral } from "#/arrange/domain/ast/collectors-jsx";
|
|
4
|
+
import { collectGroupableStringNodes, slotClassString } from "#/arrange/domain/ast/collectors-tv";
|
|
5
|
+
import { APPLY_MIN_TOKENS } from "#/arrange/domain/constants";
|
|
6
|
+
import { areCnTailwindPartitionsEquivalent, suggestCnGroups, summarizeGroupBucketLabels, } from "#/arrange/domain/grouping";
|
|
7
|
+
import { escapeTsStringLiteralContent, formatArray, formatArrayElementsAsSiblingLines, formatJsxCnAttributeValue, } from "#/arrange/domain/source-text-formatters";
|
|
8
|
+
import { tokenizeClassString } from "#/arrange/domain/tailwind-token";
|
|
9
|
+
import { endAfterOptionalCommaFollowingInSource, indentOfLineContaining, textPrefixFromLineStartToPosition, } from "#/core/source-text-edit";
|
|
10
|
+
/**
|
|
11
|
+
* @since 0.3.16-canary.0
|
|
12
|
+
*/
|
|
13
|
+
export function targetReplaceStart(target) {
|
|
14
|
+
if (target.kind === "cnArg") {
|
|
15
|
+
return target.item.cnCall ? target.item.cnCall.pos : target.item.primaryClassLiteral.pos;
|
|
16
|
+
}
|
|
17
|
+
return target.valueNode.pos;
|
|
18
|
+
}
|
|
19
|
+
function collectLongJsxClassNameTargets(sourceFile) {
|
|
20
|
+
const results = [];
|
|
21
|
+
const visitTypeScriptSubtree = (tsNode) => {
|
|
22
|
+
if (isDomainJsxAttribute(tsNode)) {
|
|
23
|
+
const parsed = jsxClassNameStaticLiteral(tsNode);
|
|
24
|
+
if (parsed && tokenizeClassString(parsed.lit.text).length >= APPLY_MIN_TOKENS) {
|
|
25
|
+
results.push({
|
|
26
|
+
kind: "jsxClassName",
|
|
27
|
+
sf: sourceFile,
|
|
28
|
+
lit: parsed.lit,
|
|
29
|
+
valueNode: parsed.valueNode,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
forEachDomainChild(tsNode, visitTypeScriptSubtree);
|
|
34
|
+
};
|
|
35
|
+
for (const stmt of sourceFile.statements) {
|
|
36
|
+
visitTypeScriptSubtree(stmt);
|
|
37
|
+
}
|
|
38
|
+
return results;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* @since 0.3.16-canary.0
|
|
42
|
+
*/
|
|
43
|
+
export function collectGroupTargets(sourceFile, filePath) {
|
|
44
|
+
const cnPart = collectGroupableStringNodes(sourceFile).map((stringNode) => ({
|
|
45
|
+
kind: "cnArg",
|
|
46
|
+
item: stringNode,
|
|
47
|
+
}));
|
|
48
|
+
if (!filePath.endsWith(".tsx")) {
|
|
49
|
+
return cnPart;
|
|
50
|
+
}
|
|
51
|
+
return [...cnPart, ...collectLongJsxClassNameTargets(sourceFile)];
|
|
52
|
+
}
|
|
53
|
+
function formatCnCallReplacement(stringNode, sourceText, withClassName) {
|
|
54
|
+
const call = stringNode.cnCall;
|
|
55
|
+
if (call === undefined) {
|
|
56
|
+
throw new Error("formatCnCallReplacement requires a cn() call on the string node");
|
|
57
|
+
}
|
|
58
|
+
const baseIndent = indentOfLineContaining(sourceText, call.pos);
|
|
59
|
+
const argIndent = `${baseIndent} `;
|
|
60
|
+
const dynamicArgTexts = [];
|
|
61
|
+
for (const arg of call.arguments) {
|
|
62
|
+
const isSimpleStatic = isDomainTailwindClassLiteral(arg) && !isUnsafeLiteralForCnStyleApplySplit(arg);
|
|
63
|
+
if (!isSimpleStatic) {
|
|
64
|
+
dynamicArgTexts.push(sourceText.slice(arg.pos, arg.end));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const pool = slotClassString(stringNode);
|
|
68
|
+
const groups = pool.trim() ? suggestCnGroups(pool) : [];
|
|
69
|
+
const allArgs = [];
|
|
70
|
+
if (groups.length > 1) {
|
|
71
|
+
for (const group of groups) {
|
|
72
|
+
allArgs.push(`${argIndent}"${escapeTsStringLiteralContent(group)}"`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else if (groups.length === 1) {
|
|
76
|
+
const onlyGroup = groups[0];
|
|
77
|
+
if (onlyGroup === undefined) {
|
|
78
|
+
throw new Error("invariant: single cn group missing");
|
|
79
|
+
}
|
|
80
|
+
allArgs.push(`${argIndent}"${escapeTsStringLiteralContent(onlyGroup)}"`);
|
|
81
|
+
}
|
|
82
|
+
for (const dynamicArgumentSource of dynamicArgTexts) {
|
|
83
|
+
allArgs.push(`${argIndent}${dynamicArgumentSource}`);
|
|
84
|
+
}
|
|
85
|
+
if (withClassName) {
|
|
86
|
+
allArgs.push(`${argIndent}className`);
|
|
87
|
+
}
|
|
88
|
+
// Keep formatter behavior explicit: multiline cn() calls with multiple args use trailing comma.
|
|
89
|
+
const commaAfterLastArg = allArgs.length > 1;
|
|
90
|
+
const argLines = allArgs.map((argLine, lineIndex) => lineIndex < allArgs.length - 1 || commaAfterLastArg ? `${argLine},` : argLine);
|
|
91
|
+
return `cn(\n${argLines.join("\n")}\n${baseIndent})`;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* @since 0.3.16-canary.0
|
|
95
|
+
*/
|
|
96
|
+
export function planGroupEditForTarget(target, textAfterUnwrap, withClassName) {
|
|
97
|
+
if (target.kind === "jsxClassName") {
|
|
98
|
+
const groups = suggestCnGroups(target.lit.text);
|
|
99
|
+
if (groups.length <= 1) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
const start = target.valueNode.pos;
|
|
103
|
+
const end = target.valueNode.end;
|
|
104
|
+
const replacement = formatJsxCnAttributeValue(groups, textAfterUnwrap, start);
|
|
105
|
+
return {
|
|
106
|
+
start,
|
|
107
|
+
end,
|
|
108
|
+
replacement,
|
|
109
|
+
bucketSummary: summarizeGroupBucketLabels(groups),
|
|
110
|
+
jsxCn: true,
|
|
111
|
+
lineSf: target.sf,
|
|
112
|
+
reportNode: target.lit,
|
|
113
|
+
label: "JSX className",
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
const pool = slotClassString(target.item);
|
|
117
|
+
const groups = suggestCnGroups(pool);
|
|
118
|
+
if (groups.length <= 1) {
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
if (areCnTailwindPartitionsEquivalent(target.item.nodes.map((classLiteral) => classLiteral.text), groups)) {
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
if (!target.item.cnCall) {
|
|
125
|
+
const anchorClassLiteral = target.item.primaryClassLiteral;
|
|
126
|
+
const parentNode = anchorClassLiteral.parent;
|
|
127
|
+
const parentArray = target.item.nodes.length > 1 && parentNode !== null && isDomainArrayLiteralExpression(parentNode)
|
|
128
|
+
? parentNode
|
|
129
|
+
: null;
|
|
130
|
+
// A bare string value of a property (e.g. `slot: "a b c"`) must be wrapped in
|
|
131
|
+
// an array literal. Emitting sibling lines would prepend the property prefix
|
|
132
|
+
// (`slot: `) to each continuation line, producing duplicate object keys.
|
|
133
|
+
const bareStringProperty = !parentArray && parentNode !== null && isDomainPropertyAssignment(parentNode);
|
|
134
|
+
if (parentArray || bareStringProperty) {
|
|
135
|
+
const start = parentArray ? parentArray.pos : anchorClassLiteral.pos;
|
|
136
|
+
const end = parentArray ? parentArray.end : anchorClassLiteral.end;
|
|
137
|
+
const baseIndent = indentOfLineContaining(textAfterUnwrap, start);
|
|
138
|
+
const replacement = formatArray(groups)
|
|
139
|
+
.split("\n")
|
|
140
|
+
.map((line, lineIndex) => (lineIndex === 0 ? line : `${baseIndent}${line}`))
|
|
141
|
+
.join("\n");
|
|
142
|
+
return {
|
|
143
|
+
start,
|
|
144
|
+
end,
|
|
145
|
+
replacement,
|
|
146
|
+
bucketSummary: summarizeGroupBucketLabels(groups),
|
|
147
|
+
jsxCn: false,
|
|
148
|
+
lineSf: target.item.sf,
|
|
149
|
+
reportNode: anchorClassLiteral,
|
|
150
|
+
label: target.item.isTvContext ? "tv" : "cn",
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
const start = anchorClassLiteral.pos;
|
|
154
|
+
const end = endAfterOptionalCommaFollowingInSource(textAfterUnwrap, anchorClassLiteral.end);
|
|
155
|
+
const replacement = formatArrayElementsAsSiblingLines(groups, textPrefixFromLineStartToPosition(textAfterUnwrap, start));
|
|
156
|
+
return {
|
|
157
|
+
start,
|
|
158
|
+
end,
|
|
159
|
+
replacement,
|
|
160
|
+
bucketSummary: summarizeGroupBucketLabels(groups),
|
|
161
|
+
jsxCn: false,
|
|
162
|
+
lineSf: target.item.sf,
|
|
163
|
+
reportNode: anchorClassLiteral,
|
|
164
|
+
label: target.item.isTvContext ? "tv" : "cn",
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
const call = target.item.cnCall;
|
|
168
|
+
const start = call.pos;
|
|
169
|
+
const end = call.end;
|
|
170
|
+
const replacement = formatCnCallReplacement(target.item, textAfterUnwrap, withClassName);
|
|
171
|
+
return {
|
|
172
|
+
start,
|
|
173
|
+
end,
|
|
174
|
+
replacement,
|
|
175
|
+
bucketSummary: summarizeGroupBucketLabels(groups),
|
|
176
|
+
jsxCn: false,
|
|
177
|
+
lineSf: target.item.sf,
|
|
178
|
+
reportNode: target.item.primaryClassLiteral,
|
|
179
|
+
label: target.item.isTvContext ? "tv" : "cn",
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=targets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../../../src/arrange/domain/ast/targets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analyze report: long literal threshold (token count).
|
|
3
|
+
*
|
|
4
|
+
* @since 0.3.16-canary.0
|
|
5
|
+
*/
|
|
6
|
+
export const LONG_STRING_TOKEN_THRESHOLD = 18;
|
|
7
|
+
/**
|
|
8
|
+
* Minimum token count for a string to be considered a candidate for grouping
|
|
9
|
+
* in the apply/preview pipeline. Intentionally much lower than
|
|
10
|
+
* {@link LONG_STRING_TOKEN_THRESHOLD} (analyze only).
|
|
11
|
+
*
|
|
12
|
+
* @since 0.3.16-canary.0
|
|
13
|
+
*/
|
|
14
|
+
export const APPLY_MIN_TOKENS = 2;
|
|
15
|
+
/**
|
|
16
|
+
* Minimum tokens a group must have to stand alone before singleton-merging.
|
|
17
|
+
* Set to 2 so single-token groups are not collapsed into unrelated buckets by the merger.
|
|
18
|
+
*
|
|
19
|
+
* @since 0.3.16-canary.0
|
|
20
|
+
*/
|
|
21
|
+
export const MIN_GROUP_TOKENS = 2;
|
|
22
|
+
/**
|
|
23
|
+
* Dynamic max groups clamp: base bound.
|
|
24
|
+
*
|
|
25
|
+
* @since 0.3.16-canary.0
|
|
26
|
+
*/
|
|
27
|
+
export const MAX_GROUPS_BASE = 4;
|
|
28
|
+
/**
|
|
29
|
+
* Dynamic max groups clamp: upper cap.
|
|
30
|
+
*
|
|
31
|
+
* @since 0.3.16-canary.0
|
|
32
|
+
*/
|
|
33
|
+
export const MAX_GROUPS_CAP = 24;
|
|
34
|
+
/**
|
|
35
|
+
* Extra slots so a few state / aria groups do not force `capGroups` to merge
|
|
36
|
+
* unrelated buckets (e.g. `bg-border` + `outline-hidden`).
|
|
37
|
+
*
|
|
38
|
+
* @since 0.3.16-canary.0
|
|
39
|
+
*/
|
|
40
|
+
export const MAX_GROUPS_HEADROOM = 2;
|
|
41
|
+
/**
|
|
42
|
+
* Maximum findings printed per category in the analyze report.
|
|
43
|
+
*
|
|
44
|
+
* @since 0.3.16-canary.0
|
|
45
|
+
*/
|
|
46
|
+
export const MAX_REPORT_LINES = 40;
|
|
47
|
+
/**
|
|
48
|
+
* Maximum recursion depth when traversing `tv()` object literals.
|
|
49
|
+
*
|
|
50
|
+
* @since 0.3.16-canary.0
|
|
51
|
+
*/
|
|
52
|
+
export const MAX_OBJECT_DEPTH = 12;
|
|
53
|
+
/**
|
|
54
|
+
* Maximum depth when peeling conditional / parens / arrays inside `cn(...)` args.
|
|
55
|
+
*
|
|
56
|
+
* @since 0.3.16-canary.0
|
|
57
|
+
*/
|
|
58
|
+
export const MAX_CLASS_EXPR_DEPTH = 12;
|
|
59
|
+
/**
|
|
60
|
+
* Maximum variant-stripping passes in {@link stripVariants}.
|
|
61
|
+
* Real-world Tailwind stacks rarely exceed 4–5 segments (e.g. `@md/sidebar:group-hover:dark:focus-visible:`);
|
|
62
|
+
* 12 is a conservative safety cap that prevents runaway loops on malformed input.
|
|
63
|
+
*
|
|
64
|
+
* @since 0.3.16-canary.0
|
|
65
|
+
*/
|
|
66
|
+
export const MAX_STRIP_VARIANT_PASSES = 12;
|
|
67
|
+
/**
|
|
68
|
+
* Passed when optional `knownBindings` is missing — size 0 disables matching
|
|
69
|
+
* for `cn` / `tv` identifier resolution.
|
|
70
|
+
*
|
|
71
|
+
* @since 0.3.16-canary.0
|
|
72
|
+
*/
|
|
73
|
+
export const EMPTY_CN_TV_BINDINGS = new Set();
|
|
74
|
+
/**
|
|
75
|
+
* Bucket sort order — **render pipeline** (lower → earlier in `cn()` output).
|
|
76
|
+
*
|
|
77
|
+
* Matches README: Existence → Position → Layout → Sizing → Spacing → Shape → Background
|
|
78
|
+
* → Shadow → Typography → Composite → Motion → Starting → Behavior → State → Selector,
|
|
79
|
+
* then `other` and `arbitrary` as sort tails for unknown utilities and arbitrary properties.
|
|
80
|
+
*
|
|
81
|
+
* @since 0.3.16-canary.0
|
|
82
|
+
*/
|
|
83
|
+
export const BUCKET_ORDER = {
|
|
84
|
+
existence: 0,
|
|
85
|
+
position: 1,
|
|
86
|
+
layout: 2,
|
|
87
|
+
sizing: 3,
|
|
88
|
+
spacing: 4,
|
|
89
|
+
shape: 5,
|
|
90
|
+
background: 6,
|
|
91
|
+
shadow: 7,
|
|
92
|
+
typography: 8,
|
|
93
|
+
composite: 9,
|
|
94
|
+
motion: 10,
|
|
95
|
+
starting: 11,
|
|
96
|
+
behavior: 12,
|
|
97
|
+
state: 13,
|
|
98
|
+
selector: 14,
|
|
99
|
+
other: 15,
|
|
100
|
+
arbitrary: 16,
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Compatible bucket **pairs** — two adjacent tokens whose buckets appear in the same
|
|
104
|
+
* `Set` may stay in one `cn()` string chunk. Compatibility is **not transitive**: there is
|
|
105
|
+
* no `{position, sizing}` pair, so `fixed inset-0` and `overflow-auto` become **separate**
|
|
106
|
+
* literals unless **layout** tokens sit between them in sorted order; then
|
|
107
|
+
* `position↔layout` and `layout↔sizing` each justify one hop and the whole “box in flow”
|
|
108
|
+
* (place + tracks + scrollport) stays in one chunk — co-located because they jointly define
|
|
109
|
+
* stacking and scroll behavior for the same surface.
|
|
110
|
+
*
|
|
111
|
+
* @since 0.3.16-canary.0
|
|
112
|
+
*/
|
|
113
|
+
export const COMPATIBLE_BUCKET_SETS = [
|
|
114
|
+
// existence + position: named container / group / peer context edited next to inset & z-index.
|
|
115
|
+
new Set(["existence", "position"]),
|
|
116
|
+
// existence + layout: `group/cmd` + `flex …` are one template row (context + grid/flex).
|
|
117
|
+
new Set(["existence", "layout"]),
|
|
118
|
+
// position + layout: `fixed inset-0` + `grid` describe the same stacking + track shell.
|
|
119
|
+
new Set(["position", "layout"]),
|
|
120
|
+
// layout + sizing: `grid` + `overflow-auto` / min size are one scrollport / track concern.
|
|
121
|
+
new Set(["layout", "sizing"]),
|
|
122
|
+
// shape + shadow: radius/border + shadow/outline overlay are one “chrome” literal in UIs.
|
|
123
|
+
new Set(["shape", "shadow"]),
|
|
124
|
+
// background + shadow: fill + depth (card surface) without splitting noise across args.
|
|
125
|
+
new Set(["background", "shadow"]),
|
|
126
|
+
// background + typography: destructive buttons etc. (`bg-*` + `text-*` on the same control).
|
|
127
|
+
new Set(["background", "typography"]),
|
|
128
|
+
// layout + typography: title rows (`flex` + `text-sm`) in one literal when adjacent in sort order.
|
|
129
|
+
new Set(["layout", "typography"]),
|
|
130
|
+
// sizing + typography: chart shell (`aspect-video` + `text-xs`) before selector-variant chunks.
|
|
131
|
+
new Set(["sizing", "typography"]),
|
|
132
|
+
// motion + behavior: `transition-*` with `pointer-events-*` / `select-*` on the same surface.
|
|
133
|
+
new Set(["motion", "behavior"]),
|
|
134
|
+
// motion + starting: `transition` beside `starting:*` for coordinated enter/exit motion.
|
|
135
|
+
new Set(["motion", "starting"]),
|
|
136
|
+
// composite + motion: transforms then transitions (`-translate-*` + `transition-*` + `ease-*`).
|
|
137
|
+
new Set(["composite", "motion"]),
|
|
138
|
+
// sizing + composite: width/position utilities with transforms in one interaction block.
|
|
139
|
+
new Set(["sizing", "composite"]),
|
|
140
|
+
// sizing + spacing: width utilities with padding on the same slot (`w-auto` + `px-3`).
|
|
141
|
+
new Set(["sizing", "spacing"]),
|
|
142
|
+
];
|
|
143
|
+
/**
|
|
144
|
+
* Responsive / variant prefix — Tailwind v4 aware.
|
|
145
|
+
*
|
|
146
|
+
* v3: sm: md: … — v4: @sm:, @min-[600px]:, @[480px]:, named @md/sidebar:,
|
|
147
|
+
* viewport md/sidebar:, min-[100px]: / max-[100px]:, …
|
|
148
|
+
*
|
|
149
|
+
* @since 0.3.16-canary.0
|
|
150
|
+
*/
|
|
151
|
+
export const RESPONSIVE_PREFIX = /^(?:@(?:min|max)-\[[^\]]+\]:|@\[[^\]]+\]:|@(?:[a-z0-9]+(?:-[a-z0-9]+)*)(?:\/[a-z][a-z0-9-]*)?:|(?:max-|min-)?(?:sm|md|lg|xl|2xl|3xl)(?:\/[a-z][a-z0-9-]*)?:|(?:max-|min-)\[[^\]]+\]:)/;
|
|
152
|
+
/**
|
|
153
|
+
* State variant stems — hoisted to module scope (not recreated per call).
|
|
154
|
+
*
|
|
155
|
+
* @since 0.3.16-canary.0
|
|
156
|
+
*/
|
|
157
|
+
export const STATE_PREFIXES = new Set([
|
|
158
|
+
"hover",
|
|
159
|
+
"focus",
|
|
160
|
+
"focus-within",
|
|
161
|
+
"focus-visible",
|
|
162
|
+
"active",
|
|
163
|
+
"visited",
|
|
164
|
+
"link",
|
|
165
|
+
"any-link",
|
|
166
|
+
"disabled",
|
|
167
|
+
"enabled",
|
|
168
|
+
"checked",
|
|
169
|
+
"indeterminate",
|
|
170
|
+
"required",
|
|
171
|
+
"optional",
|
|
172
|
+
"valid",
|
|
173
|
+
"invalid",
|
|
174
|
+
"in-range",
|
|
175
|
+
"out-of-range",
|
|
176
|
+
"read-only",
|
|
177
|
+
"read-write",
|
|
178
|
+
"placeholder-shown",
|
|
179
|
+
"default",
|
|
180
|
+
"autofill",
|
|
181
|
+
"open",
|
|
182
|
+
"closed",
|
|
183
|
+
"first",
|
|
184
|
+
"last",
|
|
185
|
+
"only",
|
|
186
|
+
"odd",
|
|
187
|
+
"even",
|
|
188
|
+
"first-of-type",
|
|
189
|
+
"last-of-type",
|
|
190
|
+
"only-of-type",
|
|
191
|
+
"first-child",
|
|
192
|
+
"last-child",
|
|
193
|
+
"only-child",
|
|
194
|
+
"empty",
|
|
195
|
+
"target",
|
|
196
|
+
"group",
|
|
197
|
+
"peer",
|
|
198
|
+
"aria",
|
|
199
|
+
"data",
|
|
200
|
+
"dark",
|
|
201
|
+
"light",
|
|
202
|
+
"supports",
|
|
203
|
+
"motion-reduce",
|
|
204
|
+
"motion-safe",
|
|
205
|
+
"print",
|
|
206
|
+
"screen",
|
|
207
|
+
"ltr",
|
|
208
|
+
"rtl",
|
|
209
|
+
"not",
|
|
210
|
+
"has",
|
|
211
|
+
"in",
|
|
212
|
+
"nth",
|
|
213
|
+
"file",
|
|
214
|
+
"selection",
|
|
215
|
+
"marker",
|
|
216
|
+
"placeholder",
|
|
217
|
+
"before",
|
|
218
|
+
"after",
|
|
219
|
+
"first-line",
|
|
220
|
+
"first-letter",
|
|
221
|
+
"backdrop",
|
|
222
|
+
"details-content",
|
|
223
|
+
"popover-open",
|
|
224
|
+
]);
|
|
225
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/arrange/domain/constants.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AAEjC;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;AAEtD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,SAAS,EAAE,CAAC;IACZ,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,CAAC;IACb,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,EAAE;IACV,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,EAAE;IACT,SAAS,EAAE,EAAE;CACd,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAuC;IACxE,+FAA+F;IAC/F,IAAI,GAAG,CAAS,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC1C,yFAAyF;IACzF,IAAI,GAAG,CAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACxC,wFAAwF;IACxF,IAAI,GAAG,CAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACvC,2FAA2F;IAC3F,IAAI,GAAG,CAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrC,0FAA0F;IAC1F,IAAI,GAAG,CAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpC,wFAAwF;IACxF,IAAI,GAAG,CAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACzC,6FAA6F;IAC7F,IAAI,GAAG,CAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC7C,mGAAmG;IACnG,IAAI,GAAG,CAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACzC,gGAAgG;IAChG,IAAI,GAAG,CAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACzC,8FAA8F;IAC9F,IAAI,GAAG,CAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACvC,yFAAyF;IACzF,IAAI,GAAG,CAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACvC,gGAAgG;IAChG,IAAI,GAAG,CAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACxC,yFAAyF;IACzF,IAAI,GAAG,CAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACxC,uFAAuF;IACvF,IAAI,GAAG,CAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;CACvC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAC5B,uLAAuL,CAAC;AAE1L;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IACpC,OAAO;IACP,OAAO;IACP,cAAc;IACd,eAAe;IACf,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,UAAU;IACV,SAAS;IACT,SAAS;IACT,eAAe;IACf,UAAU;IACV,UAAU;IACV,OAAO;IACP,SAAS;IACT,UAAU;IACV,cAAc;IACd,WAAW;IACX,YAAY;IACZ,mBAAmB;IACnB,SAAS;IACT,UAAU;IACV,MAAM;IACN,QAAQ;IACR,OAAO;IACP,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,eAAe;IACf,cAAc;IACd,cAAc;IACd,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,UAAU;IACV,eAAe;IACf,aAAa;IACb,OAAO;IACP,QAAQ;IACR,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,KAAK;IACL,MAAM;IACN,WAAW;IACX,QAAQ;IACR,aAAa;IACb,QAAQ;IACR,OAAO;IACP,YAAY;IACZ,cAAc;IACd,UAAU;IACV,iBAAiB;IACjB,cAAc;CACf,CAAC,CAAC"}
|