@plumeria/utils 19.14.4 → 20.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compile.js +48 -12
- package/dist/dynamicKey.d.ts +3 -1
- package/dist/dynamicKey.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/parser.d.ts +2 -2
- package/dist/parser.js +153 -34
- package/dist/positionTry.d.ts +4 -0
- package/dist/positionTry.js +7 -0
- package/dist/propertyPolicy.js +5 -1
- package/dist/transform.js +125 -15
- package/dist/types.d.ts +6 -0
- package/dist/varType.d.ts +9 -0
- package/dist/varType.js +35 -0
- package/package.json +2 -2
package/dist/compile.js
CHANGED
|
@@ -43,6 +43,7 @@ const rs = __importStar(require("@rust-gear/glob"));
|
|
|
43
43
|
const index_1 = require("./index");
|
|
44
44
|
const index_2 = require("./index");
|
|
45
45
|
const dynamicKey_1 = require("./dynamicKey");
|
|
46
|
+
const varType_1 = require("./varType");
|
|
46
47
|
const unwrapExport = (node) => {
|
|
47
48
|
if (node?.type === 'ExportDeclaration')
|
|
48
49
|
return node.declaration;
|
|
@@ -126,6 +127,8 @@ const isStaticArgValue = (node) => node.type === 'StringLiteral' ||
|
|
|
126
127
|
const dynamicTablesOf = (ctx) => ({
|
|
127
128
|
keyframesHashTable: ctx.mergedKeyframesTable,
|
|
128
129
|
viewTransitionHashTable: ctx.mergedViewTransitionTable,
|
|
130
|
+
varTypeHashTable: ctx.mergedVarTypeTable,
|
|
131
|
+
positionTryHashTable: ctx.mergedPositionTryTable,
|
|
129
132
|
createThemeHashTable: ctx.mergedCreateThemeHashTable,
|
|
130
133
|
createThemeObjectTable: ctx.scannedTables.createThemeObjectTable,
|
|
131
134
|
createHashTable: ctx.mergedCreateTable,
|
|
@@ -345,6 +348,8 @@ function compileCSS(options) {
|
|
|
345
348
|
const importMap = {};
|
|
346
349
|
const keyframesImportMap = {};
|
|
347
350
|
const viewTransitionImportMap = {};
|
|
351
|
+
const varTypeImportMap = {};
|
|
352
|
+
const positionTryImportMap = {};
|
|
348
353
|
const createImportMap = {};
|
|
349
354
|
const createFunctionImportMap = {};
|
|
350
355
|
const createThemeImportMap = {};
|
|
@@ -406,6 +411,12 @@ function compileCSS(options) {
|
|
|
406
411
|
if (scannedTables.viewTransitionHashTable[uniqueKey])
|
|
407
412
|
viewTransitionImportMap[localName] =
|
|
408
413
|
scannedTables.viewTransitionHashTable[uniqueKey];
|
|
414
|
+
if (scannedTables.varTypeHashTable?.[uniqueKey])
|
|
415
|
+
varTypeImportMap[localName] =
|
|
416
|
+
scannedTables.varTypeHashTable[uniqueKey];
|
|
417
|
+
if (scannedTables.positionTryHashTable?.[uniqueKey])
|
|
418
|
+
positionTryImportMap[localName] =
|
|
419
|
+
scannedTables.positionTryHashTable[uniqueKey];
|
|
409
420
|
if (scannedTables.createHashTable[uniqueKey])
|
|
410
421
|
createImportMap[localName] =
|
|
411
422
|
scannedTables.createHashTable[uniqueKey];
|
|
@@ -446,6 +457,25 @@ function compileCSS(options) {
|
|
|
446
457
|
for (const key of Object.keys(viewTransitionImportMap)) {
|
|
447
458
|
mergedViewTransitionTable[key] = viewTransitionImportMap[key];
|
|
448
459
|
}
|
|
460
|
+
const varTypeHashTable = scannedTables.varTypeHashTable ?? {};
|
|
461
|
+
const mergedVarTypeTable = Object.create(varTypeHashTable);
|
|
462
|
+
for (const key of (0, index_1.fileTableKeys)(resourcePath, 'varTypeHashTable') ?? []) {
|
|
463
|
+
mergedVarTypeTable[key.slice(resourcePath.length + 1)] =
|
|
464
|
+
varTypeHashTable[key];
|
|
465
|
+
}
|
|
466
|
+
for (const key of Object.keys(varTypeImportMap)) {
|
|
467
|
+
mergedVarTypeTable[key] = varTypeImportMap[key];
|
|
468
|
+
}
|
|
469
|
+
const positionTryHashTable = scannedTables.positionTryHashTable ?? {};
|
|
470
|
+
const mergedPositionTryTable = Object.create(positionTryHashTable);
|
|
471
|
+
for (const key of (0, index_1.fileTableKeys)(resourcePath, 'positionTryHashTable') ??
|
|
472
|
+
[]) {
|
|
473
|
+
mergedPositionTryTable[key.slice(resourcePath.length + 1)] =
|
|
474
|
+
positionTryHashTable[key];
|
|
475
|
+
}
|
|
476
|
+
for (const key of Object.keys(positionTryImportMap)) {
|
|
477
|
+
mergedPositionTryTable[key] = positionTryImportMap[key];
|
|
478
|
+
}
|
|
449
479
|
const mergedCreateThemeHashTable = Object.create(scannedTables.createThemeHashTable);
|
|
450
480
|
for (const key of (0, index_1.fileTableKeys)(resourcePath, 'createThemeHashTable') ??
|
|
451
481
|
[]) {
|
|
@@ -477,6 +507,8 @@ function compileCSS(options) {
|
|
|
477
507
|
mergedStaticTable,
|
|
478
508
|
mergedKeyframesTable,
|
|
479
509
|
mergedViewTransitionTable,
|
|
510
|
+
mergedVarTypeTable,
|
|
511
|
+
mergedPositionTryTable,
|
|
480
512
|
mergedCreateThemeHashTable,
|
|
481
513
|
mergedCreateStaticHashTable,
|
|
482
514
|
mergedCreateTable,
|
|
@@ -601,7 +633,7 @@ function compileCSS(options) {
|
|
|
601
633
|
return merged;
|
|
602
634
|
}
|
|
603
635
|
if (index_1.t.isObjectExpression(expr)) {
|
|
604
|
-
return (0, index_1.objectExpressionToObject)(expr, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable);
|
|
636
|
+
return (0, index_1.objectExpressionToObject)(expr, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable, undefined, ctx.mergedVarTypeTable, ctx.mergedPositionTryTable);
|
|
605
637
|
}
|
|
606
638
|
else if (index_1.t.isMemberExpression(expr) &&
|
|
607
639
|
index_1.t.isIdentifier(expr.object) &&
|
|
@@ -715,7 +747,7 @@ function compileCSS(options) {
|
|
|
715
747
|
properties: argExpr.properties.filter((prop) => prop.type === 'Identifier' ||
|
|
716
748
|
(prop.type === 'KeyValueProperty' &&
|
|
717
749
|
isStaticArgValue(prop.value))),
|
|
718
|
-
}, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable);
|
|
750
|
+
}, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable, undefined, ctx.mergedVarTypeTable, ctx.mergedPositionTryTable);
|
|
719
751
|
if (func.named) {
|
|
720
752
|
const argExpr = callArgs[0]?.expression;
|
|
721
753
|
if (callArgs.length > 1 ||
|
|
@@ -973,7 +1005,7 @@ function compileCSS(options) {
|
|
|
973
1005
|
propName = originalName;
|
|
974
1006
|
}
|
|
975
1007
|
if (propName) {
|
|
976
|
-
if (['create', 'createTheme', 'createStatic'].includes(propName) &&
|
|
1008
|
+
if (['create', 'createTheme', 'createStatic', 'varType'].includes(propName) &&
|
|
977
1009
|
!registeredStyleCalls.has(node.span.start)) {
|
|
978
1010
|
throw new Error(`[plumeria] css.${propName} must be assigned to a named top-level variable. ` +
|
|
979
1011
|
`Destructuring, assignment statements, and default-exported calls cannot be compiled. ` +
|
|
@@ -1003,14 +1035,14 @@ function compileCSS(options) {
|
|
|
1003
1035
|
else if (propName === 'keyframes' &&
|
|
1004
1036
|
args.length > 0 &&
|
|
1005
1037
|
index_1.t.isObjectExpression(args[0].expression)) {
|
|
1006
|
-
const obj = (0, index_1.objectExpressionToObject)(args[0].expression, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable);
|
|
1038
|
+
const obj = (0, index_1.objectExpressionToObject)(args[0].expression, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable, undefined, ctx.mergedVarTypeTable, ctx.mergedPositionTryTable);
|
|
1007
1039
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
1008
1040
|
writes.keyframesObjectTable[hash] = obj;
|
|
1009
1041
|
}
|
|
1010
1042
|
else if (propName === 'viewTransition' &&
|
|
1011
1043
|
args.length > 0 &&
|
|
1012
1044
|
index_1.t.isObjectExpression(args[0].expression)) {
|
|
1013
|
-
const obj = (0, index_1.objectExpressionToObject)(args[0].expression, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable);
|
|
1045
|
+
const obj = (0, index_1.objectExpressionToObject)(args[0].expression, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable, undefined, ctx.mergedVarTypeTable, ctx.mergedPositionTryTable);
|
|
1014
1046
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
1015
1047
|
writes.viewTransitionObjectTable[hash] = obj;
|
|
1016
1048
|
}
|
|
@@ -1025,9 +1057,9 @@ function compileCSS(options) {
|
|
|
1025
1057
|
}
|
|
1026
1058
|
if (selector.startsWith('@') && !(0, zss_engine_1.isAtRule)(selector)) {
|
|
1027
1059
|
throw new Error(`[plumeria] Unsupported at-rule: "${selector}". createTheme only supports ` +
|
|
1028
|
-
`nesting at-rules such as @media, @container,
|
|
1060
|
+
`nesting at-rules such as @media, @container, and @supports. (${path.basename(resourcePath)})`);
|
|
1029
1061
|
}
|
|
1030
|
-
const obj = (0, index_1.objectExpressionToObject)(args[1].expression, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable);
|
|
1062
|
+
const obj = (0, index_1.objectExpressionToObject)(args[1].expression, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable, undefined, ctx.mergedVarTypeTable, ctx.mergedPositionTryTable);
|
|
1031
1063
|
const hash = (0, index_1.themeHashOf)(selector, obj);
|
|
1032
1064
|
writes.createThemeObjectTable[hash] = obj;
|
|
1033
1065
|
if (ctx.scannedTables.createThemeSelectorTable) {
|
|
@@ -1037,7 +1069,7 @@ function compileCSS(options) {
|
|
|
1037
1069
|
else if (propName === 'createStatic' &&
|
|
1038
1070
|
args.length > 0 &&
|
|
1039
1071
|
index_1.t.isObjectExpression(args[0].expression)) {
|
|
1040
|
-
const obj = (0, index_1.objectExpressionToObject)(args[0].expression, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable);
|
|
1072
|
+
const obj = (0, index_1.objectExpressionToObject)(args[0].expression, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable, undefined, ctx.mergedVarTypeTable, ctx.mergedPositionTryTable);
|
|
1041
1073
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
1042
1074
|
writes.createStaticObjectTable[hash] = obj;
|
|
1043
1075
|
}
|
|
@@ -1088,7 +1120,7 @@ function compileCSS(options) {
|
|
|
1088
1120
|
? ctx.scannedTables.createAtomicMapTable[ctx.mergedCreateThemeHashTable[name]]
|
|
1089
1121
|
: undefined);
|
|
1090
1122
|
if (pName === 'create') {
|
|
1091
|
-
const obj = (0, index_1.objectExpressionToObject)(arg, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable, resolveVariable);
|
|
1123
|
+
const obj = (0, index_1.objectExpressionToObject)(arg, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable, resolveVariable, ctx.mergedVarTypeTable, ctx.mergedPositionTryTable);
|
|
1092
1124
|
if (obj) {
|
|
1093
1125
|
const styleFunctions = (0, index_1.styleFunctionsOf)(arg);
|
|
1094
1126
|
ctx.localCreateStyles[node.id.value] = {
|
|
@@ -1107,9 +1139,9 @@ function compileCSS(options) {
|
|
|
1107
1139
|
}
|
|
1108
1140
|
if (selector.startsWith('@') && !(0, zss_engine_1.isAtRule)(selector)) {
|
|
1109
1141
|
throw new Error(`[plumeria] Unsupported at-rule: "${selector}". createTheme only supports ` +
|
|
1110
|
-
`nesting at-rules such as @media, @container,
|
|
1142
|
+
`nesting at-rules such as @media, @container, and @supports. (${path.basename(resourcePath)})`);
|
|
1111
1143
|
}
|
|
1112
|
-
const obj = (0, index_1.objectExpressionToObject)(arg, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable);
|
|
1144
|
+
const obj = (0, index_1.objectExpressionToObject)(arg, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable, undefined, ctx.mergedVarTypeTable, ctx.mergedPositionTryTable);
|
|
1113
1145
|
const hash = (0, index_1.themeHashOf)(selector, obj);
|
|
1114
1146
|
const uKey = `${resourcePath}-${node.id.value}`;
|
|
1115
1147
|
writes.createThemeHashTable[uKey] = hash;
|
|
@@ -1129,8 +1161,12 @@ function compileCSS(options) {
|
|
|
1129
1161
|
obj: ctx.scannedTables.createAtomicMapTable[hash],
|
|
1130
1162
|
};
|
|
1131
1163
|
}
|
|
1164
|
+
else if (pName === 'varType') {
|
|
1165
|
+
const obj = (0, index_1.objectExpressionToObject)(arg, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable, undefined, ctx.mergedVarTypeTable, ctx.mergedPositionTryTable);
|
|
1166
|
+
ctx.mergedVarTypeTable[node.id.value] = (0, varType_1.checkedVarTypeHash)(node.id.value, obj);
|
|
1167
|
+
}
|
|
1132
1168
|
else if (pName === 'createStatic') {
|
|
1133
|
-
const obj = (0, index_1.objectExpressionToObject)(arg, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable);
|
|
1169
|
+
const obj = (0, index_1.objectExpressionToObject)(arg, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable, undefined, ctx.mergedVarTypeTable, ctx.mergedPositionTryTable);
|
|
1134
1170
|
if (obj) {
|
|
1135
1171
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
1136
1172
|
const uKey = `${resourcePath}-${node.id.value}`;
|
package/dist/dynamicKey.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Expression, ObjectExpression } from '@swc/core';
|
|
2
|
-
import type { CSSObject, StaticTable, KeyframesHashTable, ViewTransitionHashTable, CreateHashTable, CreateThemeHashTable, CreateThemeObjectTable, CreateStaticHashTable, CreateStaticObjectTable } from './types';
|
|
2
|
+
import type { CSSObject, StaticTable, KeyframesHashTable, ViewTransitionHashTable, VarTypeHashTable, PositionTryHashTable, CreateHashTable, CreateThemeHashTable, CreateThemeObjectTable, CreateStaticHashTable, CreateStaticObjectTable } from './types';
|
|
3
3
|
export type NamedParam = {
|
|
4
4
|
key: string;
|
|
5
5
|
local: string;
|
|
@@ -29,6 +29,8 @@ export declare const applyVarFallback: (style: CSSObject, cssVar: string, litera
|
|
|
29
29
|
export type DynamicStyleTables = {
|
|
30
30
|
keyframesHashTable: KeyframesHashTable;
|
|
31
31
|
viewTransitionHashTable: ViewTransitionHashTable;
|
|
32
|
+
varTypeHashTable?: VarTypeHashTable;
|
|
33
|
+
positionTryHashTable?: PositionTryHashTable;
|
|
32
34
|
createThemeHashTable: CreateThemeHashTable;
|
|
33
35
|
createThemeObjectTable: CreateThemeObjectTable;
|
|
34
36
|
createHashTable: CreateHashTable;
|
package/dist/dynamicKey.js
CHANGED
|
@@ -381,7 +381,7 @@ const resolveDynamicStyle = (func, runtimeParams, staticTable, tables, providedP
|
|
|
381
381
|
value: expr,
|
|
382
382
|
},
|
|
383
383
|
],
|
|
384
|
-
}, table, tables.keyframesHashTable, tables.viewTransitionHashTable, tables.createThemeHashTable, tables.createThemeObjectTable, tables.createHashTable, tables.createStaticHashTable, tables.createStaticObjectTable).value;
|
|
384
|
+
}, table, tables.keyframesHashTable, tables.viewTransitionHashTable, tables.createThemeHashTable, tables.createThemeObjectTable, tables.createHashTable, tables.createStaticHashTable, tables.createStaticObjectTable, undefined, tables.varTypeHashTable, tables.positionTryHashTable).value;
|
|
385
385
|
const withDefault = Object.entries(func.defaults ?? {}).filter(([param]) => providedParams
|
|
386
386
|
? !providedParams.has(param)
|
|
387
387
|
: tempStaticTable[param] === undefined);
|
|
@@ -424,7 +424,7 @@ const resolveDynamicStyle = (func, runtimeParams, staticTable, tables, providedP
|
|
|
424
424
|
return undefined;
|
|
425
425
|
}
|
|
426
426
|
});
|
|
427
|
-
const resolveBody = () => (0, parser_1.objectExpressionToObject)(body, tempStaticTable, tables.keyframesHashTable, tables.viewTransitionHashTable, tables.createThemeHashTable, tables.createThemeObjectTable, tables.createHashTable, tables.createStaticHashTable, tables.createStaticObjectTable);
|
|
427
|
+
const resolveBody = () => (0, parser_1.objectExpressionToObject)(body, tempStaticTable, tables.keyframesHashTable, tables.viewTransitionHashTable, tables.createThemeHashTable, tables.createThemeObjectTable, tables.createHashTable, tables.createStaticHashTable, tables.createStaticObjectTable, undefined, tables.varTypeHashTable, tables.positionTryHashTable);
|
|
428
428
|
const varNames = [...varParams, ...derived.map(({ name }) => name)];
|
|
429
429
|
if (varNames.length > 0) {
|
|
430
430
|
varNames.forEach((name) => (tempStaticTable[name] = name));
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { CSSObject, StaticTable, KeyframesHashTable, ViewTransitionHashTable, CreateHashTable, CreateFunctionTable, CreateThemeHashTable, CreateStaticHashTable, } from './types';
|
|
1
|
+
export type { CSSObject, StaticTable, KeyframesHashTable, ViewTransitionHashTable, VarTypeHashTable, PositionTryHashTable, CreateHashTable, CreateFunctionTable, CreateThemeHashTable, CreateStaticHashTable, } from './types';
|
|
2
2
|
export { objectExpressionToObject, collectLocalConsts, traverse, t, getRootIdentifier, resolveOriginError, unwrapExpression, extractOndemandStyles, appendSheet, deepMerge, scanAll, scanOverlay, fileTableKeys, resolveFileError, getFileDependencies, resolveExport, resolveComponentKey, resolveThemeSelector, } from './parser';
|
|
3
3
|
export { resolveExportValue } from './constValue';
|
|
4
4
|
export type { StyleRecord } from './create';
|
package/dist/parser.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CSSObject, Tables, StaticTable, KeyframesHashTable, ViewTransitionHashTable, CreateHashTable, CreateThemeHashTable, CreateThemeObjectTable, CreateStaticHashTable, CreateStaticObjectTable, SheetSink } from './types';
|
|
1
|
+
import type { CSSObject, Tables, StaticTable, KeyframesHashTable, ViewTransitionHashTable, VarTypeHashTable, PositionTryHashTable, CreateHashTable, CreateThemeHashTable, CreateThemeObjectTable, CreateStaticHashTable, CreateStaticObjectTable, SheetSink } from './types';
|
|
2
2
|
import type { Module, Expression, CallExpression, Identifier, KeyValueProperty, StringLiteral, NumericLiteral, BooleanLiteral, ObjectExpression, MemberExpression, TemplateLiteral, BinaryExpression, UnaryExpression, ParenthesisExpression, VariableDeclaration, VariableDeclarator, ExportDeclaration, ConditionalExpression, JSXExpression, ArrowFunctionExpression, FunctionExpression } from '@swc/core';
|
|
3
3
|
export declare function unwrapExpression(node: any): any;
|
|
4
4
|
export declare const getRootIdentifier: (node: Expression) => string | null;
|
|
@@ -43,7 +43,7 @@ export declare function traverse(node: Module | JSXExpression, visitor: {
|
|
|
43
43
|
stop: () => void;
|
|
44
44
|
}) => void;
|
|
45
45
|
}): void;
|
|
46
|
-
export declare function objectExpressionToObject(node: ObjectExpression, staticTable: StaticTable, keyframesHashTable: KeyframesHashTable, viewTransitionHashTable: ViewTransitionHashTable, createThemeHashTable: CreateThemeHashTable, createThemeObjectTable: CreateThemeObjectTable, createHashTable: CreateHashTable, createStaticHashTable: CreateStaticHashTable, createStaticObjectTable: CreateStaticObjectTable, resolveVariable?: (name: string) => any): CSSObject;
|
|
46
|
+
export declare function objectExpressionToObject(node: ObjectExpression, staticTable: StaticTable, keyframesHashTable: KeyframesHashTable, viewTransitionHashTable: ViewTransitionHashTable, createThemeHashTable: CreateThemeHashTable, createThemeObjectTable: CreateThemeObjectTable, createHashTable: CreateHashTable, createStaticHashTable: CreateStaticHashTable, createStaticObjectTable: CreateStaticObjectTable, resolveVariable?: (name: string) => any, varTypeHashTable?: VarTypeHashTable, positionTryHashTable?: PositionTryHashTable): CSSObject;
|
|
47
47
|
export declare function collectLocalConstNodes(ast: Module): Map<string, any>;
|
|
48
48
|
export declare function collectLocalConsts(ast: Module): Record<string, any>;
|
|
49
49
|
export declare function readsParams(node: any, params: Set<string>): boolean;
|
package/dist/parser.js
CHANGED
|
@@ -61,6 +61,8 @@ const fs = __importStar(require("fs"));
|
|
|
61
61
|
const rs = __importStar(require("@rust-gear/glob"));
|
|
62
62
|
const zss_engine_1 = require("zss-engine");
|
|
63
63
|
const viewTransition_1 = require("./viewTransition");
|
|
64
|
+
const varType_1 = require("./varType");
|
|
65
|
+
const positionTry_1 = require("./positionTry");
|
|
64
66
|
const constants_1 = require("./constants");
|
|
65
67
|
const stylePropFilter_1 = require("./stylePropFilter");
|
|
66
68
|
const create_1 = require("./create");
|
|
@@ -274,12 +276,12 @@ function traverse(node, visitor) {
|
|
|
274
276
|
}
|
|
275
277
|
walk(node);
|
|
276
278
|
}
|
|
277
|
-
function objectExpressionToObject(node, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createHashTable, createStaticHashTable, createStaticObjectTable, resolveVariable) {
|
|
279
|
+
function objectExpressionToObject(node, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createHashTable, createStaticHashTable, createStaticObjectTable, resolveVariable, varTypeHashTable = {}, positionTryHashTable = {}) {
|
|
278
280
|
const obj = Object.create(null);
|
|
279
281
|
node.properties.forEach((prop) => {
|
|
280
282
|
if (prop.type === 'SpreadElement') {
|
|
281
283
|
const arg = prop.arguments;
|
|
282
|
-
const spreadVal = evaluateExpression(arg, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
284
|
+
const spreadVal = evaluateExpression(arg, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
283
285
|
if (typeof spreadVal === 'object' && spreadVal !== null) {
|
|
284
286
|
Object.assign(obj, spreadVal);
|
|
285
287
|
}
|
|
@@ -301,7 +303,7 @@ function objectExpressionToObject(node, staticTable, keyframesHashTable, viewTra
|
|
|
301
303
|
}
|
|
302
304
|
if (!exports.t.isObjectProperty(prop))
|
|
303
305
|
return;
|
|
304
|
-
const rawKey = getPropertyKey(prop.key, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
306
|
+
const rawKey = getPropertyKey(prop.key, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
305
307
|
if (!rawKey)
|
|
306
308
|
return;
|
|
307
309
|
const key = typeof rawKey === 'string' ? (0, zss_engine_1.stripSelectorComments)(rawKey) : rawKey;
|
|
@@ -340,6 +342,15 @@ function objectExpressionToObject(node, staticTable, keyframesHashTable, viewTra
|
|
|
340
342
|
obj[key] = 'vt-' + resolvedViewTransitioin;
|
|
341
343
|
return;
|
|
342
344
|
}
|
|
345
|
+
if (exports.t.isIdentifier(val) && varTypeHashTable[val.value] !== undefined) {
|
|
346
|
+
obj[key] = '--pr-' + varTypeHashTable[val.value];
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
if (exports.t.isIdentifier(val) &&
|
|
350
|
+
positionTryHashTable[val.value] !== undefined) {
|
|
351
|
+
obj[key] = '--pt-' + positionTryHashTable[val.value];
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
343
354
|
const resolvedCreate = resolveCreateTableMemberExpression(val, createHashTable);
|
|
344
355
|
if (resolvedCreate !== undefined) {
|
|
345
356
|
obj[key] = 'cr-' + resolvedCreate;
|
|
@@ -362,13 +373,13 @@ function objectExpressionToObject(node, staticTable, keyframesHashTable, viewTra
|
|
|
362
373
|
obj[key] = val.value;
|
|
363
374
|
}
|
|
364
375
|
else if (exports.t.isUnaryExpression(val)) {
|
|
365
|
-
obj[key] = evaluateExpression(val, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
376
|
+
obj[key] = evaluateExpression(val, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
366
377
|
}
|
|
367
378
|
else if (exports.t.isObjectExpression(val)) {
|
|
368
|
-
obj[key] = objectExpressionToObject(val, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createHashTable, createStaticHashTable, createStaticObjectTable, resolveVariable);
|
|
379
|
+
obj[key] = objectExpressionToObject(val, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createHashTable, createStaticHashTable, createStaticObjectTable, resolveVariable, varTypeHashTable, positionTryHashTable);
|
|
369
380
|
}
|
|
370
381
|
else if (exports.t.isBinaryExpression(val) || exports.t.isTemplateLiteral(val)) {
|
|
371
|
-
obj[key] = evaluateExpression(val, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
382
|
+
obj[key] = evaluateExpression(val, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
372
383
|
}
|
|
373
384
|
else if (exports.t.isMemberExpression(val)) {
|
|
374
385
|
const resolved = resolveStaticTableMemberExpression(val, staticTable);
|
|
@@ -439,7 +450,7 @@ function collectLocalConsts(ast) {
|
|
|
439
450
|
else if (exports.t.isBinaryExpression(init) ||
|
|
440
451
|
exports.t.isTemplateLiteral(init) ||
|
|
441
452
|
exports.t.isUnaryExpression(init)) {
|
|
442
|
-
result = evaluateExpression(init, localConsts, {}, {}, {}, {}, {}, {});
|
|
453
|
+
result = evaluateExpression(init, localConsts, {}, {}, {}, {}, {}, {}, {}, {});
|
|
443
454
|
}
|
|
444
455
|
}
|
|
445
456
|
catch (e) {
|
|
@@ -670,7 +681,7 @@ function inlineOuterScope(objExpression, resolveProperty) {
|
|
|
670
681
|
});
|
|
671
682
|
return changed ? { ...objExpression, properties } : objExpression;
|
|
672
683
|
}
|
|
673
|
-
function getPropertyKey(node, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable) {
|
|
684
|
+
function getPropertyKey(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable) {
|
|
674
685
|
if (exports.t.isIdentifier(node)) {
|
|
675
686
|
return node.value;
|
|
676
687
|
}
|
|
@@ -690,9 +701,15 @@ function getPropertyKey(node, staticTable, keyframesHashTable, viewTransitionHas
|
|
|
690
701
|
typeof staticTable[expr.value] === 'string') {
|
|
691
702
|
return staticTable[expr.value];
|
|
692
703
|
}
|
|
704
|
+
if (varTypeHashTable[expr.value] !== undefined) {
|
|
705
|
+
return '--pr-' + varTypeHashTable[expr.value];
|
|
706
|
+
}
|
|
707
|
+
if (positionTryHashTable[expr.value] !== undefined) {
|
|
708
|
+
return '--pt-' + positionTryHashTable[expr.value];
|
|
709
|
+
}
|
|
693
710
|
}
|
|
694
711
|
if (exports.t.isCallExpression(expr)) {
|
|
695
|
-
const result = evaluateExpression(expr, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
712
|
+
const result = evaluateExpression(expr, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
696
713
|
if (typeof result === 'string')
|
|
697
714
|
return result;
|
|
698
715
|
}
|
|
@@ -708,28 +725,28 @@ function getPropertyKey(node, staticTable, keyframesHashTable, viewTransitionHas
|
|
|
708
725
|
return themeResult;
|
|
709
726
|
}
|
|
710
727
|
if (exports.t.isTemplateLiteral(expr)) {
|
|
711
|
-
return evaluateTemplateLiteral(expr, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
728
|
+
return evaluateTemplateLiteral(expr, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
712
729
|
}
|
|
713
730
|
if (exports.t.isBinaryExpression(expr)) {
|
|
714
|
-
return evaluateBinaryExpression(expr, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
731
|
+
return evaluateBinaryExpression(expr, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
715
732
|
}
|
|
716
733
|
return '';
|
|
717
734
|
}
|
|
718
735
|
if (exports.t.isTemplateLiteral(node)) {
|
|
719
|
-
return evaluateTemplateLiteral(node, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
736
|
+
return evaluateTemplateLiteral(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
720
737
|
}
|
|
721
738
|
if (exports.t.isBinaryExpression(node)) {
|
|
722
|
-
return evaluateBinaryExpression(node, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
739
|
+
return evaluateBinaryExpression(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
723
740
|
}
|
|
724
741
|
return '';
|
|
725
742
|
}
|
|
726
|
-
function evaluateTemplateLiteral(node, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable) {
|
|
743
|
+
function evaluateTemplateLiteral(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable) {
|
|
727
744
|
let result = '';
|
|
728
745
|
for (let i = 0; i < node.quasis.length; i++) {
|
|
729
746
|
result += node.quasis[i].cooked || node.quasis[i].raw;
|
|
730
747
|
if (i < node.expressions.length) {
|
|
731
748
|
const expr = node.expressions[i];
|
|
732
|
-
const evaluatedExpr = evaluateExpression(expr, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
749
|
+
const evaluatedExpr = evaluateExpression(expr, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
733
750
|
if (evaluatedExpr === null || typeof evaluatedExpr === 'object')
|
|
734
751
|
throw new Error(`[plumeria] Template value cannot be resolved to a primitive: ${(0, exports.expressionLabel)(expr)} inside \${} must resolve to a string or number at build time.`);
|
|
735
752
|
result += String(evaluatedExpr);
|
|
@@ -737,15 +754,15 @@ function evaluateTemplateLiteral(node, staticTable, keyframesHashTable, viewTran
|
|
|
737
754
|
}
|
|
738
755
|
return result;
|
|
739
756
|
}
|
|
740
|
-
function evaluateBinaryExpression(node, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable) {
|
|
741
|
-
const left = evaluateExpression(node.left, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
757
|
+
function evaluateBinaryExpression(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable) {
|
|
758
|
+
const left = evaluateExpression(node.left, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
742
759
|
if (node.operator === '&&' && !left)
|
|
743
760
|
return left;
|
|
744
761
|
if (node.operator === '||' && left)
|
|
745
762
|
return left;
|
|
746
763
|
if (node.operator === '??' && left !== null)
|
|
747
764
|
return left;
|
|
748
|
-
const right = evaluateExpression(node.right, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
765
|
+
const right = evaluateExpression(node.right, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
749
766
|
if (['&&', '||', '??'].includes(node.operator))
|
|
750
767
|
return right;
|
|
751
768
|
if (typeof left === 'number' && typeof right === 'number') {
|
|
@@ -815,8 +832,8 @@ function evaluateCallExpression(node, staticTable) {
|
|
|
815
832
|
if (method === 'marker') {
|
|
816
833
|
const args = node.arguments;
|
|
817
834
|
if (args.length >= 2) {
|
|
818
|
-
const id = evaluateExpression(args[0].expression, staticTable, {}, {}, {}, {}, {}, {});
|
|
819
|
-
const pseudo = evaluateExpression(args[1].expression, staticTable, {}, {}, {}, {}, {}, {});
|
|
835
|
+
const id = evaluateExpression(args[0].expression, staticTable, {}, {}, {}, {}, {}, {}, {}, {});
|
|
836
|
+
const pseudo = evaluateExpression(args[1].expression, staticTable, {}, {}, {}, {}, {}, {}, {}, {});
|
|
820
837
|
if (typeof id === 'string' && typeof pseudo === 'string') {
|
|
821
838
|
const varName = getMarkerVar(id, pseudo);
|
|
822
839
|
return {
|
|
@@ -830,8 +847,8 @@ function evaluateCallExpression(node, staticTable) {
|
|
|
830
847
|
if (method === 'extended') {
|
|
831
848
|
const args = node.arguments;
|
|
832
849
|
if (args.length >= 2) {
|
|
833
|
-
const id = evaluateExpression(args[0].expression, staticTable, {}, {}, {}, {}, {}, {});
|
|
834
|
-
const pseudo = evaluateExpression(args[1].expression, staticTable, {}, {}, {}, {}, {}, {});
|
|
850
|
+
const id = evaluateExpression(args[0].expression, staticTable, {}, {}, {}, {}, {}, {}, {}, {});
|
|
851
|
+
const pseudo = evaluateExpression(args[1].expression, staticTable, {}, {}, {}, {}, {}, {}, {}, {});
|
|
835
852
|
if (typeof id === 'string' && typeof pseudo === 'string') {
|
|
836
853
|
const varName = getMarkerVar(id, pseudo);
|
|
837
854
|
return `@container style(${varName}: 1)`;
|
|
@@ -840,7 +857,7 @@ function evaluateCallExpression(node, staticTable) {
|
|
|
840
857
|
}
|
|
841
858
|
return null;
|
|
842
859
|
}
|
|
843
|
-
function evaluateExpression(node, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable) {
|
|
860
|
+
function evaluateExpression(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable) {
|
|
844
861
|
node = unwrapExpression(node);
|
|
845
862
|
if (exports.t.isCallExpression(node)) {
|
|
846
863
|
return evaluateCallExpression(node, staticTable);
|
|
@@ -867,6 +884,12 @@ function evaluateExpression(node, staticTable, keyframesHashTable, viewTransitio
|
|
|
867
884
|
if (viewTransitionHashTable[node.value] !== undefined) {
|
|
868
885
|
return 'vt-' + viewTransitionHashTable[node.value];
|
|
869
886
|
}
|
|
887
|
+
if (varTypeHashTable[node.value] !== undefined) {
|
|
888
|
+
return '--pr-' + varTypeHashTable[node.value];
|
|
889
|
+
}
|
|
890
|
+
if (positionTryHashTable[node.value] !== undefined) {
|
|
891
|
+
return '--pt-' + positionTryHashTable[node.value];
|
|
892
|
+
}
|
|
870
893
|
if (createStaticHashTable[node.value] !== undefined) {
|
|
871
894
|
const hash = createStaticHashTable[node.value];
|
|
872
895
|
if (createStaticObjectTable[hash] !== undefined) {
|
|
@@ -891,13 +914,13 @@ function evaluateExpression(node, staticTable, keyframesHashTable, viewTransitio
|
|
|
891
914
|
throw new Error(`[plumeria] Cannot resolve static member expression: ${(0, exports.expressionLabel)(node)}. Its object must be a const or a value created by css.createStatic or css.createTheme.`);
|
|
892
915
|
}
|
|
893
916
|
if (exports.t.isBinaryExpression(node)) {
|
|
894
|
-
return evaluateBinaryExpression(node, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
917
|
+
return evaluateBinaryExpression(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
895
918
|
}
|
|
896
919
|
if (exports.t.isTemplateLiteral(node)) {
|
|
897
|
-
return evaluateTemplateLiteral(node, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
920
|
+
return evaluateTemplateLiteral(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
898
921
|
}
|
|
899
922
|
if (exports.t.isUnaryExpression(node)) {
|
|
900
|
-
const value = evaluateExpression(node.argument, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
923
|
+
const value = evaluateExpression(node.argument, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
901
924
|
if (node.operator === '!')
|
|
902
925
|
return !value;
|
|
903
926
|
if (typeof value === 'number') {
|
|
@@ -911,7 +934,7 @@ function evaluateExpression(node, staticTable, keyframesHashTable, viewTransitio
|
|
|
911
934
|
throw new Error(`[plumeria] Unsupported unary operand for ${node.operator}: ${(0, exports.expressionLabel)(node.argument)} must resolve to a number at build time.`);
|
|
912
935
|
}
|
|
913
936
|
if (exports.t.isParenthesisExpression(node)) {
|
|
914
|
-
return evaluateExpression(node.expression, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
937
|
+
return evaluateExpression(node.expression, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
915
938
|
}
|
|
916
939
|
throw new Error(`[plumeria] Unsupported expression type: ${(0, exports.expressionLabel)(node)}. Style values must be literals, consts, or arithmetic and template expressions of them.`);
|
|
917
940
|
}
|
|
@@ -1023,7 +1046,7 @@ function resolveCreateStaticTableMemberExpression(node, createStaticHashTable, c
|
|
|
1023
1046
|
}
|
|
1024
1047
|
function resolveThemeSelector(node, staticTable, createStaticHashTable, createStaticObjectTable) {
|
|
1025
1048
|
try {
|
|
1026
|
-
const value = evaluateExpression(node, staticTable, {}, {}, {}, {}, createStaticHashTable, createStaticObjectTable);
|
|
1049
|
+
const value = evaluateExpression(node, staticTable, {}, {}, {}, {}, {}, {}, createStaticHashTable, createStaticObjectTable);
|
|
1027
1050
|
return typeof value === 'string' ? value : '';
|
|
1028
1051
|
}
|
|
1029
1052
|
catch {
|
|
@@ -1074,7 +1097,11 @@ const globalAgregatedTables = {
|
|
|
1074
1097
|
keyframesHashTable: {},
|
|
1075
1098
|
keyframesObjectTable: {},
|
|
1076
1099
|
viewTransitionHashTable: {},
|
|
1100
|
+
varTypeHashTable: {},
|
|
1101
|
+
positionTryHashTable: {},
|
|
1077
1102
|
viewTransitionObjectTable: {},
|
|
1103
|
+
varTypeObjectTable: {},
|
|
1104
|
+
positionTryObjectTable: {},
|
|
1078
1105
|
createThemeObjectTable: {},
|
|
1079
1106
|
createThemeSelectorTable: {},
|
|
1080
1107
|
createHashTable: {},
|
|
@@ -1098,6 +1125,8 @@ const detachedTables = new Set([
|
|
|
1098
1125
|
'staticTable',
|
|
1099
1126
|
'keyframesHashTable',
|
|
1100
1127
|
'viewTransitionHashTable',
|
|
1128
|
+
'varTypeHashTable',
|
|
1129
|
+
'positionTryHashTable',
|
|
1101
1130
|
'createHashTable',
|
|
1102
1131
|
'createObjectTable',
|
|
1103
1132
|
'createFunctionTable',
|
|
@@ -1433,6 +1462,8 @@ function runScan(scanCwd, styleProp) {
|
|
|
1433
1462
|
keyframesHashTable: {},
|
|
1434
1463
|
keyframesObjectTable: {},
|
|
1435
1464
|
viewTransitionHashTable: {},
|
|
1465
|
+
varTypeHashTable: {},
|
|
1466
|
+
positionTryHashTable: {},
|
|
1436
1467
|
viewTransitionObjectTable: {},
|
|
1437
1468
|
createThemeHashTable: {},
|
|
1438
1469
|
createThemeSelectorTable: {},
|
|
@@ -1492,7 +1523,11 @@ function runScan(scanCwd, styleProp) {
|
|
|
1492
1523
|
const localKeyframesHashTable = {};
|
|
1493
1524
|
const localKeyframesObjectTable = {};
|
|
1494
1525
|
const localViewTransitionHashTable = {};
|
|
1526
|
+
const localVarTypeHashTable = {};
|
|
1495
1527
|
const localViewTransitionObjectTable = {};
|
|
1528
|
+
const localVarTypeObjectTable = {};
|
|
1529
|
+
const localPositionTryHashTable = {};
|
|
1530
|
+
const localPositionTryObjectTable = {};
|
|
1496
1531
|
const localCreateThemeObjectTable = {};
|
|
1497
1532
|
const localCreateThemeSelectorTable = {};
|
|
1498
1533
|
const localCreateHashTable = {};
|
|
@@ -1578,6 +1613,22 @@ function runScan(scanCwd, styleProp) {
|
|
|
1578
1613
|
localTables.keyframesObjectTable[hash];
|
|
1579
1614
|
}
|
|
1580
1615
|
}
|
|
1616
|
+
if (localTables.varTypeHashTable?.[uniqueKey]) {
|
|
1617
|
+
const hash = localTables.varTypeHashTable[uniqueKey];
|
|
1618
|
+
localVarTypeHashTable[localName] = hash;
|
|
1619
|
+
if (localTables.varTypeObjectTable?.[hash]) {
|
|
1620
|
+
localVarTypeObjectTable[hash] =
|
|
1621
|
+
localTables.varTypeObjectTable[hash];
|
|
1622
|
+
}
|
|
1623
|
+
}
|
|
1624
|
+
if (localTables.positionTryHashTable?.[uniqueKey]) {
|
|
1625
|
+
const hash = localTables.positionTryHashTable[uniqueKey];
|
|
1626
|
+
localPositionTryHashTable[localName] = hash;
|
|
1627
|
+
if (localTables.positionTryObjectTable?.[hash]) {
|
|
1628
|
+
localPositionTryObjectTable[hash] =
|
|
1629
|
+
localTables.positionTryObjectTable[hash];
|
|
1630
|
+
}
|
|
1631
|
+
}
|
|
1581
1632
|
if (localTables.viewTransitionHashTable[uniqueKey]) {
|
|
1582
1633
|
const hash = localTables.viewTransitionHashTable[uniqueKey];
|
|
1583
1634
|
localViewTransitionHashTable[localName] = hash;
|
|
@@ -1681,6 +1732,8 @@ function runScan(scanCwd, styleProp) {
|
|
|
1681
1732
|
'createStatic',
|
|
1682
1733
|
'keyframes',
|
|
1683
1734
|
'viewTransition',
|
|
1735
|
+
'positionTry',
|
|
1736
|
+
'varType',
|
|
1684
1737
|
].includes(method)) {
|
|
1685
1738
|
const argument = decl.init.arguments[method === 'createTheme' ? 1 : 0];
|
|
1686
1739
|
if (argument)
|
|
@@ -1710,13 +1763,15 @@ function runScan(scanCwd, styleProp) {
|
|
|
1710
1763
|
const isPassOneMethod = method === 'createStatic' ||
|
|
1711
1764
|
method === 'createTheme' ||
|
|
1712
1765
|
method === 'keyframes' ||
|
|
1713
|
-
method === 'viewTransition'
|
|
1766
|
+
method === 'viewTransition' ||
|
|
1767
|
+
method === 'positionTry' ||
|
|
1768
|
+
method === 'varType';
|
|
1714
1769
|
if (isFirstPass && !isPassOneMethod)
|
|
1715
1770
|
continue;
|
|
1716
1771
|
const objExpression = isCreateTheme
|
|
1717
1772
|
? init.arguments[1].expression
|
|
1718
1773
|
: init.arguments[0].expression;
|
|
1719
|
-
const obj = objectExpressionToObject(objExpression, scopedStaticTable, localKeyframesHashTable, localViewTransitionHashTable, localCreateThemeHashTable, localCreateThemeObjectTable, localCreateHashTable, localCreateStaticHashTable, localCreateStaticObjectTable, resolveVariable);
|
|
1774
|
+
const obj = objectExpressionToObject(objExpression, scopedStaticTable, localKeyframesHashTable, localViewTransitionHashTable, localCreateThemeHashTable, localCreateThemeObjectTable, localCreateHashTable, localCreateStaticHashTable, localCreateStaticObjectTable, resolveVariable, localVarTypeHashTable, localPositionTryHashTable);
|
|
1720
1775
|
const uniqueKey = `${filePath}-${name}`;
|
|
1721
1776
|
if (method === 'createStatic') {
|
|
1722
1777
|
localStaticTable[name] = obj;
|
|
@@ -1739,6 +1794,24 @@ function runScan(scanCwd, styleProp) {
|
|
|
1739
1794
|
localKeyframesObjectTable[hash] = obj;
|
|
1740
1795
|
registerObjectOwner('keyframesObjectTable', hash, filePath);
|
|
1741
1796
|
}
|
|
1797
|
+
else if (method === 'varType') {
|
|
1798
|
+
const hash = (0, varType_1.checkedVarTypeHash)(name, obj);
|
|
1799
|
+
localVarTypeHashTable[name] = hash;
|
|
1800
|
+
localTables.varTypeHashTable[uniqueKey] = hash;
|
|
1801
|
+
registerFileKey('varTypeHashTable', uniqueKey, filePath);
|
|
1802
|
+
(localTables.varTypeObjectTable ??= {})[hash] = obj;
|
|
1803
|
+
localVarTypeObjectTable[hash] = obj;
|
|
1804
|
+
registerObjectOwner('varTypeObjectTable', hash, filePath);
|
|
1805
|
+
}
|
|
1806
|
+
else if (method === 'positionTry') {
|
|
1807
|
+
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
1808
|
+
localPositionTryHashTable[name] = hash;
|
|
1809
|
+
localTables.positionTryHashTable[uniqueKey] = hash;
|
|
1810
|
+
registerFileKey('positionTryHashTable', uniqueKey, filePath);
|
|
1811
|
+
(localTables.positionTryObjectTable ??= {})[hash] = obj;
|
|
1812
|
+
localPositionTryObjectTable[hash] = obj;
|
|
1813
|
+
registerObjectOwner('positionTryObjectTable', hash, filePath);
|
|
1814
|
+
}
|
|
1742
1815
|
else if (method === 'viewTransition') {
|
|
1743
1816
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
1744
1817
|
localViewTransitionHashTable[name] = hash;
|
|
@@ -1788,7 +1861,7 @@ function runScan(scanCwd, styleProp) {
|
|
|
1788
1861
|
inlineOuterScope(objExpression, (property) => objectExpressionToObject({
|
|
1789
1862
|
...objExpression,
|
|
1790
1863
|
properties: [property],
|
|
1791
|
-
}, scopedStaticTable, localKeyframesHashTable, localViewTransitionHashTable, localCreateThemeHashTable, localCreateThemeObjectTable, localCreateHashTable, localCreateStaticHashTable, localCreateStaticObjectTable, resolveVariable));
|
|
1864
|
+
}, scopedStaticTable, localKeyframesHashTable, localViewTransitionHashTable, localCreateThemeHashTable, localCreateThemeObjectTable, localCreateHashTable, localCreateStaticHashTable, localCreateStaticObjectTable, resolveVariable, localVarTypeHashTable, localPositionTryHashTable));
|
|
1792
1865
|
registerFileKey('createFunctionTable', uniqueKey, filePath);
|
|
1793
1866
|
}
|
|
1794
1867
|
const hashMap = {};
|
|
@@ -1817,7 +1890,11 @@ function runScan(scanCwd, styleProp) {
|
|
|
1817
1890
|
localKeyframesHashTable,
|
|
1818
1891
|
localKeyframesObjectTable,
|
|
1819
1892
|
localViewTransitionHashTable,
|
|
1893
|
+
localVarTypeHashTable,
|
|
1894
|
+
localPositionTryHashTable,
|
|
1820
1895
|
localViewTransitionObjectTable,
|
|
1896
|
+
localVarTypeObjectTable,
|
|
1897
|
+
localPositionTryObjectTable,
|
|
1821
1898
|
localCreateThemeObjectTable,
|
|
1822
1899
|
localCreateThemeSelectorTable,
|
|
1823
1900
|
localCreateHashTable,
|
|
@@ -1837,7 +1914,7 @@ function runScan(scanCwd, styleProp) {
|
|
|
1837
1914
|
for (const entry of jsxPhaseQueue) {
|
|
1838
1915
|
try {
|
|
1839
1916
|
delete fileErrors[entry.filePath];
|
|
1840
|
-
const { filePath, ast, mtimeMs, localDependencies, localStaticTable, localKeyframesHashTable, localKeyframesObjectTable, localViewTransitionHashTable, localViewTransitionObjectTable, localCreateThemeObjectTable, localCreateThemeSelectorTable, localCreateHashTable, localCreateObjectTable, localCreateAtomicMapTable, localCreateThemeHashTable, localCreateStaticHashTable, localCreateStaticObjectTable, localImports, } = entry;
|
|
1917
|
+
const { filePath, ast, mtimeMs, localDependencies, localStaticTable, localKeyframesHashTable, localKeyframesObjectTable, localViewTransitionHashTable, localVarTypeHashTable, localPositionTryHashTable, localViewTransitionObjectTable, localVarTypeObjectTable, localPositionTryObjectTable, localCreateThemeObjectTable, localCreateThemeSelectorTable, localCreateHashTable, localCreateObjectTable, localCreateAtomicMapTable, localCreateThemeHashTable, localCreateStaticHashTable, localCreateStaticObjectTable, localImports, } = entry;
|
|
1841
1918
|
const localCreateFunctionTable = {};
|
|
1842
1919
|
for (const localName of Object.keys(localImports)) {
|
|
1843
1920
|
const { actualPath, importedName } = localImports[localName];
|
|
@@ -1858,6 +1935,8 @@ function runScan(scanCwd, styleProp) {
|
|
|
1858
1935
|
const dynamicStyleTables = {
|
|
1859
1936
|
keyframesHashTable: localKeyframesHashTable,
|
|
1860
1937
|
viewTransitionHashTable: localViewTransitionHashTable,
|
|
1938
|
+
varTypeHashTable: localVarTypeHashTable,
|
|
1939
|
+
positionTryHashTable: localPositionTryHashTable,
|
|
1861
1940
|
createThemeHashTable: localCreateThemeHashTable,
|
|
1862
1941
|
createThemeObjectTable: localTables.createThemeObjectTable,
|
|
1863
1942
|
createHashTable: localCreateHashTable,
|
|
@@ -2273,7 +2352,11 @@ function runScan(scanCwd, styleProp) {
|
|
|
2273
2352
|
keyframesHashTable: localKeyframesHashTable,
|
|
2274
2353
|
keyframesObjectTable: localKeyframesObjectTable,
|
|
2275
2354
|
viewTransitionHashTable: localViewTransitionHashTable,
|
|
2355
|
+
varTypeHashTable: localVarTypeHashTable,
|
|
2356
|
+
positionTryHashTable: localPositionTryHashTable,
|
|
2276
2357
|
viewTransitionObjectTable: localViewTransitionObjectTable,
|
|
2358
|
+
varTypeObjectTable: localVarTypeObjectTable,
|
|
2359
|
+
positionTryObjectTable: localPositionTryObjectTable,
|
|
2277
2360
|
createThemeHashTable: localCreateThemeHashTable,
|
|
2278
2361
|
createThemeSelectorTable: localCreateThemeSelectorTable,
|
|
2279
2362
|
createThemeObjectTable: localCreateThemeObjectTable,
|
|
@@ -2472,6 +2555,8 @@ function extractAndCacheExports(filePath, ast, mtimeMs) {
|
|
|
2472
2555
|
keyframesHashTable: {},
|
|
2473
2556
|
keyframesObjectTable: {},
|
|
2474
2557
|
viewTransitionHashTable: {},
|
|
2558
|
+
varTypeHashTable: {},
|
|
2559
|
+
positionTryHashTable: {},
|
|
2475
2560
|
viewTransitionObjectTable: {},
|
|
2476
2561
|
createThemeHashTable: {},
|
|
2477
2562
|
createThemeSelectorTable: {},
|
|
@@ -2548,7 +2633,7 @@ function resolveExport(filePath, exportName, visited = new Set()) {
|
|
|
2548
2633
|
}
|
|
2549
2634
|
return null;
|
|
2550
2635
|
}
|
|
2551
|
-
const REFERENCE_MARKER = /(kf|vt|cr)-([0-9a-z]+)/g;
|
|
2636
|
+
const REFERENCE_MARKER = /(kf|vt|pt|cr|pr)-([0-9a-z]+)/g;
|
|
2552
2637
|
const CUSTOM_PROPERTY = /var\(\s*(--[^\s,)]+)/g;
|
|
2553
2638
|
const appendSheet = (sheets) => {
|
|
2554
2639
|
const existingSheets = new Set(sheets);
|
|
@@ -2566,16 +2651,35 @@ function extractOndemandStyles(obj, addSheet, t) {
|
|
|
2566
2651
|
const visited = new Set();
|
|
2567
2652
|
const keyframesHashes = new Set();
|
|
2568
2653
|
const viewTransitionHashes = new Set();
|
|
2654
|
+
const positionTryHashes = new Set();
|
|
2655
|
+
const varTypeHashes = new Set();
|
|
2569
2656
|
const createHashes = new Set();
|
|
2570
2657
|
const usedVariables = new Set();
|
|
2658
|
+
function findVarTypes(text) {
|
|
2659
|
+
for (const [, kind, hash] of text.matchAll(REFERENCE_MARKER)) {
|
|
2660
|
+
if (kind === 'pr' && t.varTypeObjectTable?.[hash])
|
|
2661
|
+
varTypeHashes.add(hash);
|
|
2662
|
+
}
|
|
2663
|
+
}
|
|
2571
2664
|
function walk(n) {
|
|
2572
2665
|
if (!n || typeof n !== 'object' || visited.has(n))
|
|
2573
2666
|
return;
|
|
2574
2667
|
visited.add(n);
|
|
2668
|
+
for (const key of Object.keys(n)) {
|
|
2669
|
+
if (key.includes('pr-'))
|
|
2670
|
+
findVarTypes(key);
|
|
2671
|
+
}
|
|
2575
2672
|
Object.values(n).forEach((val) => {
|
|
2576
2673
|
if (typeof val === 'string') {
|
|
2577
|
-
if (val.includes('
|
|
2674
|
+
if (val.includes('pr-'))
|
|
2675
|
+
findVarTypes(val);
|
|
2676
|
+
if (val.includes('kf-') ||
|
|
2677
|
+
val.includes('vt-') ||
|
|
2678
|
+
val.includes('pt-') ||
|
|
2679
|
+
val.includes('cr-')) {
|
|
2578
2680
|
for (const [, kind, hash] of val.matchAll(REFERENCE_MARKER)) {
|
|
2681
|
+
if (kind === 'pr')
|
|
2682
|
+
continue;
|
|
2579
2683
|
if (kind === 'kf') {
|
|
2580
2684
|
if (!keyframesHashes.has(hash) && t.keyframesObjectTable[hash]) {
|
|
2581
2685
|
keyframesHashes.add(hash);
|
|
@@ -2589,6 +2693,13 @@ function extractOndemandStyles(obj, addSheet, t) {
|
|
|
2589
2693
|
walk(t.viewTransitionObjectTable[hash]);
|
|
2590
2694
|
}
|
|
2591
2695
|
}
|
|
2696
|
+
else if (kind === 'pt') {
|
|
2697
|
+
if (!positionTryHashes.has(hash) &&
|
|
2698
|
+
t.positionTryObjectTable?.[hash]) {
|
|
2699
|
+
positionTryHashes.add(hash);
|
|
2700
|
+
walk(t.positionTryObjectTable[hash]);
|
|
2701
|
+
}
|
|
2702
|
+
}
|
|
2592
2703
|
else if (!createHashes.has(hash) && t.createObjectTable[hash]) {
|
|
2593
2704
|
createHashes.add(hash);
|
|
2594
2705
|
walk(t.createObjectTable[hash]);
|
|
@@ -2616,6 +2727,10 @@ function extractOndemandStyles(obj, addSheet, t) {
|
|
|
2616
2727
|
}
|
|
2617
2728
|
}
|
|
2618
2729
|
}
|
|
2730
|
+
for (const hash of varTypeHashes) {
|
|
2731
|
+
const { styleSheet } = (0, zss_engine_1.transpile)((0, varType_1.createVarType)(t.varTypeObjectTable[hash], hash), undefined, '--global');
|
|
2732
|
+
addSheet(styleSheet);
|
|
2733
|
+
}
|
|
2619
2734
|
if (viewTransitionHashes.size > 0) {
|
|
2620
2735
|
for (const hash of viewTransitionHashes) {
|
|
2621
2736
|
const obj = t.viewTransitionObjectTable[hash];
|
|
@@ -2625,6 +2740,10 @@ function extractOndemandStyles(obj, addSheet, t) {
|
|
|
2625
2740
|
}
|
|
2626
2741
|
}
|
|
2627
2742
|
}
|
|
2743
|
+
for (const hash of positionTryHashes) {
|
|
2744
|
+
const { styleSheet } = (0, zss_engine_1.transpile)((0, positionTry_1.createPositionTry)(t.positionTryObjectTable[hash], hash), undefined, '--global');
|
|
2745
|
+
addSheet(styleSheet);
|
|
2746
|
+
}
|
|
2628
2747
|
if (createHashes.size > 0) {
|
|
2629
2748
|
for (const hash of createHashes) {
|
|
2630
2749
|
const obj = t.createObjectTable[hash];
|
package/dist/propertyPolicy.js
CHANGED
|
@@ -37,7 +37,7 @@ exports.assertPropertyPolicy = exports.resolvePropertyPolicy = void 0;
|
|
|
37
37
|
const path = __importStar(require("path"));
|
|
38
38
|
const zss_engine_1 = require("zss-engine");
|
|
39
39
|
const parser_1 = require("./parser");
|
|
40
|
-
const STYLE_APIS = ['create', 'keyframes', 'viewTransition'];
|
|
40
|
+
const STYLE_APIS = ['create', 'keyframes', 'viewTransition', 'positionTry'];
|
|
41
41
|
const MESSAGES = {
|
|
42
42
|
physical: (name, counterpart) => `'${name}' is the physical name of this property. Write it as '${counterpart}', which follows the writing mode.`,
|
|
43
43
|
logical: (name, counterpart) => `'${name}' is the logical name of this property. This project is written in physical properties; use '${counterpart}'.`,
|
|
@@ -137,6 +137,10 @@ const assertPropertyPolicy = (ast, policy, resourcePath) => {
|
|
|
137
137
|
node.arguments.forEach(({ expression }) => {
|
|
138
138
|
if (!parser_1.t.isObjectExpression(expression))
|
|
139
139
|
return;
|
|
140
|
+
if (apiName === 'positionTry') {
|
|
141
|
+
check(expression);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
140
144
|
expression.properties.forEach((prop) => {
|
|
141
145
|
if (!parser_1.t.isObjectProperty(prop))
|
|
142
146
|
return;
|
package/dist/transform.js
CHANGED
|
@@ -39,6 +39,7 @@ const path = __importStar(require("path"));
|
|
|
39
39
|
const zss_engine_1 = require("zss-engine");
|
|
40
40
|
const parser_1 = require("./parser");
|
|
41
41
|
const unresolvableValue_1 = require("./unresolvableValue");
|
|
42
|
+
const varType_1 = require("./varType");
|
|
42
43
|
const spreadValues = (tables, constNodes, sourceOf) => {
|
|
43
44
|
const spread = (prop) => {
|
|
44
45
|
let values;
|
|
@@ -341,6 +342,8 @@ const transformSource = async (env) => {
|
|
|
341
342
|
const importMap = {};
|
|
342
343
|
const keyframesImportMap = {};
|
|
343
344
|
const viewTransitionImportMap = {};
|
|
345
|
+
const varTypeImportMap = {};
|
|
346
|
+
const positionTryImportMap = {};
|
|
344
347
|
const createImportMap = {};
|
|
345
348
|
const createFunctionImportMap = {};
|
|
346
349
|
const createThemeImportMap = {};
|
|
@@ -404,6 +407,14 @@ const transformSource = async (env) => {
|
|
|
404
407
|
viewTransitionImportMap[localName] =
|
|
405
408
|
scannedTables.viewTransitionHashTable[uniqueKey];
|
|
406
409
|
}
|
|
410
|
+
if (scannedTables.varTypeHashTable?.[uniqueKey]) {
|
|
411
|
+
varTypeImportMap[localName] =
|
|
412
|
+
scannedTables.varTypeHashTable[uniqueKey];
|
|
413
|
+
}
|
|
414
|
+
if (scannedTables.positionTryHashTable?.[uniqueKey]) {
|
|
415
|
+
positionTryImportMap[localName] =
|
|
416
|
+
scannedTables.positionTryHashTable[uniqueKey];
|
|
417
|
+
}
|
|
407
418
|
if (scannedTables.createHashTable[uniqueKey]) {
|
|
408
419
|
createImportMap[localName] =
|
|
409
420
|
scannedTables.createHashTable[uniqueKey];
|
|
@@ -447,6 +458,24 @@ const transformSource = async (env) => {
|
|
|
447
458
|
for (const key of Object.keys(viewTransitionImportMap)) {
|
|
448
459
|
mergedViewTransitionTable[key] = viewTransitionImportMap[key];
|
|
449
460
|
}
|
|
461
|
+
const varTypeHashTable = scannedTables.varTypeHashTable ?? {};
|
|
462
|
+
const mergedVarTypeTable = Object.create(varTypeHashTable);
|
|
463
|
+
for (const key of (0, parser_1.fileTableKeys)(resourcePath, 'varTypeHashTable') ?? []) {
|
|
464
|
+
mergedVarTypeTable[key.slice(resourcePath.length + 1)] =
|
|
465
|
+
varTypeHashTable[key];
|
|
466
|
+
}
|
|
467
|
+
for (const key of Object.keys(varTypeImportMap)) {
|
|
468
|
+
mergedVarTypeTable[key] = varTypeImportMap[key];
|
|
469
|
+
}
|
|
470
|
+
const positionTryHashTable = scannedTables.positionTryHashTable ?? {};
|
|
471
|
+
const mergedPositionTryTable = Object.create(positionTryHashTable);
|
|
472
|
+
for (const key of (0, parser_1.fileTableKeys)(resourcePath, 'positionTryHashTable') ?? []) {
|
|
473
|
+
mergedPositionTryTable[key.slice(resourcePath.length + 1)] =
|
|
474
|
+
positionTryHashTable[key];
|
|
475
|
+
}
|
|
476
|
+
for (const key of Object.keys(positionTryImportMap)) {
|
|
477
|
+
mergedPositionTryTable[key] = positionTryImportMap[key];
|
|
478
|
+
}
|
|
450
479
|
const mergedCreateTable = Object.create(scannedTables.createHashTable);
|
|
451
480
|
for (const key of (0, parser_1.fileTableKeys)(resourcePath, 'createHashTable') ?? []) {
|
|
452
481
|
mergedCreateTable[key.slice(resourcePath.length + 1)] =
|
|
@@ -475,6 +504,8 @@ const transformSource = async (env) => {
|
|
|
475
504
|
const dynamicStyleTables = {
|
|
476
505
|
keyframesHashTable: mergedKeyframesTable,
|
|
477
506
|
viewTransitionHashTable: mergedViewTransitionTable,
|
|
507
|
+
varTypeHashTable: mergedVarTypeTable,
|
|
508
|
+
positionTryHashTable: mergedPositionTryTable,
|
|
478
509
|
createThemeHashTable: mergedCreateThemeHashTable,
|
|
479
510
|
createThemeObjectTable: scannedTables.createThemeObjectTable,
|
|
480
511
|
createHashTable: mergedCreateTable,
|
|
@@ -595,11 +626,11 @@ const transformSource = async (env) => {
|
|
|
595
626
|
}
|
|
596
627
|
}
|
|
597
628
|
if (propName && init && parser_1.t.isCallExpression(init)) {
|
|
598
|
-
if (['create', 'createTheme', 'createStatic'].includes(propName) &&
|
|
629
|
+
if (['create', 'createTheme', 'createStatic', 'varType'].includes(propName) &&
|
|
599
630
|
!topLevelDeclarators.has(node)) {
|
|
600
631
|
throwCompilationError(`[plumeria] css.${propName} must be assigned to a top-level variable so its styles can be resolved across files. Move this declaration outside the function or block.`, node);
|
|
601
632
|
}
|
|
602
|
-
if (['create', 'createTheme', 'createStatic'].includes(propName)) {
|
|
633
|
+
if (['create', 'createTheme', 'createStatic', 'varType'].includes(propName)) {
|
|
603
634
|
const argumentIndex = propName === 'createTheme' ? 1 : 0;
|
|
604
635
|
const argument = init.arguments[argumentIndex];
|
|
605
636
|
const object = argument && literalObjectArgument(argument.expression);
|
|
@@ -610,7 +641,7 @@ const transformSource = async (env) => {
|
|
|
610
641
|
}
|
|
611
642
|
if (propName === 'create' &&
|
|
612
643
|
parser_1.t.isObjectExpression(init.arguments[0].expression)) {
|
|
613
|
-
const obj = (0, parser_1.objectExpressionToObject)(init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable);
|
|
644
|
+
const obj = (0, parser_1.objectExpressionToObject)(init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
614
645
|
(0, unresolvableValue_1.assertNoDroppedValues)(init.arguments[0].expression, obj, spreadValues([
|
|
615
646
|
mergedStaticTable,
|
|
616
647
|
mergedKeyframesTable,
|
|
@@ -620,6 +651,9 @@ const transformSource = async (env) => {
|
|
|
620
651
|
mergedCreateTable,
|
|
621
652
|
mergedCreateStaticHashTable,
|
|
622
653
|
scannedTables.createStaticObjectTable,
|
|
654
|
+
undefined,
|
|
655
|
+
mergedVarTypeTable,
|
|
656
|
+
mergedPositionTryTable,
|
|
623
657
|
], localConstNodes, getSource));
|
|
624
658
|
if (obj) {
|
|
625
659
|
const hashMap = {};
|
|
@@ -668,9 +702,9 @@ const transformSource = async (env) => {
|
|
|
668
702
|
`Pass a string literal such as ".dark", or a name this file declares as one.`, selectorExpr);
|
|
669
703
|
}
|
|
670
704
|
if (selector.startsWith('@') && !(0, zss_engine_1.isAtRule)(selector)) {
|
|
671
|
-
throwCompilationError(`[plumeria] Unsupported at-rule: "${selector}". createTheme only supports nesting at-rules such as @media, @container,
|
|
705
|
+
throwCompilationError(`[plumeria] Unsupported at-rule: "${selector}". createTheme only supports nesting at-rules such as @media, @container, and @supports.`, selectorExpr);
|
|
672
706
|
}
|
|
673
|
-
const obj = (0, parser_1.objectExpressionToObject)(init.arguments[1].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable);
|
|
707
|
+
const obj = (0, parser_1.objectExpressionToObject)(init.arguments[1].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
674
708
|
(0, unresolvableValue_1.assertNoDroppedValues)(init.arguments[1].expression, obj, spreadValues([
|
|
675
709
|
mergedStaticTable,
|
|
676
710
|
mergedKeyframesTable,
|
|
@@ -680,6 +714,9 @@ const transformSource = async (env) => {
|
|
|
680
714
|
mergedCreateTable,
|
|
681
715
|
mergedCreateStaticHashTable,
|
|
682
716
|
scannedTables.createStaticObjectTable,
|
|
717
|
+
undefined,
|
|
718
|
+
mergedVarTypeTable,
|
|
719
|
+
mergedPositionTryTable,
|
|
683
720
|
], localConstNodes, getSource));
|
|
684
721
|
const hash = (0, createTheme_1.themeHashOf)(selector, obj);
|
|
685
722
|
if (parser_1.t.isIdentifier(node.id)) {
|
|
@@ -713,12 +750,45 @@ const transformSource = async (env) => {
|
|
|
713
750
|
};
|
|
714
751
|
}
|
|
715
752
|
}
|
|
753
|
+
else if (propName === 'varType' &&
|
|
754
|
+
parser_1.t.isIdentifier(node.id) &&
|
|
755
|
+
parser_1.t.isObjectExpression(init.arguments[0].expression)) {
|
|
756
|
+
const expr = init.arguments[0].expression;
|
|
757
|
+
const obj = (0, parser_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
758
|
+
(0, unresolvableValue_1.assertNoDroppedValues)(expr, obj, spreadValues([
|
|
759
|
+
mergedStaticTable,
|
|
760
|
+
mergedKeyframesTable,
|
|
761
|
+
mergedViewTransitionTable,
|
|
762
|
+
mergedCreateThemeHashTable,
|
|
763
|
+
scannedTables.createThemeObjectTable,
|
|
764
|
+
mergedCreateTable,
|
|
765
|
+
mergedCreateStaticHashTable,
|
|
766
|
+
scannedTables.createStaticObjectTable,
|
|
767
|
+
undefined,
|
|
768
|
+
mergedVarTypeTable,
|
|
769
|
+
mergedPositionTryTable,
|
|
770
|
+
], localConstNodes, getSource));
|
|
771
|
+
let hash = '';
|
|
772
|
+
try {
|
|
773
|
+
hash = (0, varType_1.checkedVarTypeHash)(node.id.value, obj);
|
|
774
|
+
}
|
|
775
|
+
catch (error) {
|
|
776
|
+
throwCompilationError(error.message, init);
|
|
777
|
+
}
|
|
778
|
+
mergedVarTypeTable[node.id.value] = hash;
|
|
779
|
+
(scannedTables.varTypeObjectTable ??= {})[hash] = obj;
|
|
780
|
+
replacements.push({
|
|
781
|
+
start: init.span.start - baseByteOffset,
|
|
782
|
+
end: init.span.end - baseByteOffset,
|
|
783
|
+
content: JSON.stringify(`--pr-${hash}`),
|
|
784
|
+
});
|
|
785
|
+
}
|
|
716
786
|
else if (propName === 'createStatic' &&
|
|
717
787
|
parser_1.t.isObjectExpression(init.arguments[0].expression)) {
|
|
718
788
|
if (parser_1.t.isIdentifier(node.id)) {
|
|
719
789
|
idSpans.add(node.id.span.start);
|
|
720
790
|
}
|
|
721
|
-
const obj = (0, parser_1.objectExpressionToObject)(init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable);
|
|
791
|
+
const obj = (0, parser_1.objectExpressionToObject)(init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
722
792
|
(0, unresolvableValue_1.assertNoDroppedValues)(init.arguments[0].expression, obj, spreadValues([
|
|
723
793
|
mergedStaticTable,
|
|
724
794
|
mergedKeyframesTable,
|
|
@@ -728,6 +798,9 @@ const transformSource = async (env) => {
|
|
|
728
798
|
mergedCreateTable,
|
|
729
799
|
mergedCreateStaticHashTable,
|
|
730
800
|
scannedTables.createStaticObjectTable,
|
|
801
|
+
undefined,
|
|
802
|
+
mergedVarTypeTable,
|
|
803
|
+
mergedPositionTryTable,
|
|
731
804
|
], localConstNodes, getSource));
|
|
732
805
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
733
806
|
if (parser_1.t.isIdentifier(node.id)) {
|
|
@@ -832,7 +905,7 @@ const transformSource = async (env) => {
|
|
|
832
905
|
}
|
|
833
906
|
}
|
|
834
907
|
if (propName) {
|
|
835
|
-
if (['create', 'createTheme', 'createStatic'].includes(propName) &&
|
|
908
|
+
if (['create', 'createTheme', 'createStatic', 'varType'].includes(propName) &&
|
|
836
909
|
!registeredStyleCalls.has(node.span.start)) {
|
|
837
910
|
throwCompilationError(`[plumeria] css.${propName} must be assigned to a named top-level variable. Destructuring, assignment statements, and default-exported calls cannot be compiled.`, node);
|
|
838
911
|
}
|
|
@@ -840,7 +913,7 @@ const transformSource = async (env) => {
|
|
|
840
913
|
if (propName === 'keyframes' && args.length > 0) {
|
|
841
914
|
const expr = args[0].expression;
|
|
842
915
|
if (parser_1.t.isObjectExpression(expr)) {
|
|
843
|
-
const obj = (0, parser_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable);
|
|
916
|
+
const obj = (0, parser_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
844
917
|
(0, unresolvableValue_1.assertNoDroppedValues)(expr, obj, spreadValues([
|
|
845
918
|
mergedStaticTable,
|
|
846
919
|
mergedKeyframesTable,
|
|
@@ -850,6 +923,9 @@ const transformSource = async (env) => {
|
|
|
850
923
|
mergedCreateTable,
|
|
851
924
|
mergedCreateStaticHashTable,
|
|
852
925
|
scannedTables.createStaticObjectTable,
|
|
926
|
+
undefined,
|
|
927
|
+
mergedVarTypeTable,
|
|
928
|
+
mergedPositionTryTable,
|
|
853
929
|
], localConstNodes, getSource));
|
|
854
930
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
855
931
|
scannedTables.keyframesObjectTable[hash] = obj;
|
|
@@ -863,7 +939,7 @@ const transformSource = async (env) => {
|
|
|
863
939
|
else if (propName === 'viewTransition' &&
|
|
864
940
|
args.length > 0 &&
|
|
865
941
|
parser_1.t.isObjectExpression(args[0].expression)) {
|
|
866
|
-
const obj = (0, parser_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable);
|
|
942
|
+
const obj = (0, parser_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
867
943
|
(0, unresolvableValue_1.assertNoDroppedValues)(args[0].expression, obj, spreadValues([
|
|
868
944
|
mergedStaticTable,
|
|
869
945
|
mergedKeyframesTable,
|
|
@@ -873,6 +949,9 @@ const transformSource = async (env) => {
|
|
|
873
949
|
mergedCreateTable,
|
|
874
950
|
mergedCreateStaticHashTable,
|
|
875
951
|
scannedTables.createStaticObjectTable,
|
|
952
|
+
undefined,
|
|
953
|
+
mergedVarTypeTable,
|
|
954
|
+
mergedPositionTryTable,
|
|
876
955
|
], localConstNodes, getSource));
|
|
877
956
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
878
957
|
scannedTables.viewTransitionObjectTable[hash] = obj;
|
|
@@ -882,6 +961,31 @@ const transformSource = async (env) => {
|
|
|
882
961
|
content: JSON.stringify(`vt-${hash}`),
|
|
883
962
|
});
|
|
884
963
|
}
|
|
964
|
+
else if (propName === 'positionTry' &&
|
|
965
|
+
args.length > 0 &&
|
|
966
|
+
parser_1.t.isObjectExpression(args[0].expression)) {
|
|
967
|
+
const obj = (0, parser_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
968
|
+
(0, unresolvableValue_1.assertNoDroppedValues)(args[0].expression, obj, spreadValues([
|
|
969
|
+
mergedStaticTable,
|
|
970
|
+
mergedKeyframesTable,
|
|
971
|
+
mergedViewTransitionTable,
|
|
972
|
+
mergedCreateThemeHashTable,
|
|
973
|
+
scannedTables.createThemeObjectTable,
|
|
974
|
+
mergedCreateTable,
|
|
975
|
+
mergedCreateStaticHashTable,
|
|
976
|
+
scannedTables.createStaticObjectTable,
|
|
977
|
+
undefined,
|
|
978
|
+
mergedVarTypeTable,
|
|
979
|
+
mergedPositionTryTable,
|
|
980
|
+
], localConstNodes, getSource));
|
|
981
|
+
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
982
|
+
(scannedTables.positionTryObjectTable ??= {})[hash] = obj;
|
|
983
|
+
replacements.push({
|
|
984
|
+
start: node.span.start - baseByteOffset,
|
|
985
|
+
end: node.span.end - baseByteOffset,
|
|
986
|
+
content: JSON.stringify(`--pt-${hash}`),
|
|
987
|
+
});
|
|
988
|
+
}
|
|
885
989
|
else if (propName === 'createTheme' &&
|
|
886
990
|
args.length >= 2 &&
|
|
887
991
|
parser_1.t.isObjectExpression(args[1].expression)) {
|
|
@@ -892,9 +996,9 @@ const transformSource = async (env) => {
|
|
|
892
996
|
`Pass a string literal such as ".dark", or a name this file declares as one.`, selectorExpr);
|
|
893
997
|
}
|
|
894
998
|
if (selector.startsWith('@') && !(0, zss_engine_1.isAtRule)(selector)) {
|
|
895
|
-
throwCompilationError(`[plumeria] Unsupported at-rule: "${selector}". createTheme only supports nesting at-rules such as @media, @container,
|
|
999
|
+
throwCompilationError(`[plumeria] Unsupported at-rule: "${selector}". createTheme only supports nesting at-rules such as @media, @container, and @supports.`, selectorExpr);
|
|
896
1000
|
}
|
|
897
|
-
const obj = (0, parser_1.objectExpressionToObject)(args[1].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable);
|
|
1001
|
+
const obj = (0, parser_1.objectExpressionToObject)(args[1].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
898
1002
|
(0, unresolvableValue_1.assertNoDroppedValues)(args[1].expression, obj, spreadValues([
|
|
899
1003
|
mergedStaticTable,
|
|
900
1004
|
mergedKeyframesTable,
|
|
@@ -904,6 +1008,9 @@ const transformSource = async (env) => {
|
|
|
904
1008
|
mergedCreateTable,
|
|
905
1009
|
mergedCreateStaticHashTable,
|
|
906
1010
|
scannedTables.createStaticObjectTable,
|
|
1011
|
+
undefined,
|
|
1012
|
+
mergedVarTypeTable,
|
|
1013
|
+
mergedPositionTryTable,
|
|
907
1014
|
], localConstNodes, getSource));
|
|
908
1015
|
const hash = (0, createTheme_1.themeHashOf)(selector, obj);
|
|
909
1016
|
scannedTables.createThemeObjectTable[hash] = obj;
|
|
@@ -914,7 +1021,7 @@ const transformSource = async (env) => {
|
|
|
914
1021
|
else if (propName === 'createStatic' &&
|
|
915
1022
|
args.length > 0 &&
|
|
916
1023
|
parser_1.t.isObjectExpression(args[0].expression)) {
|
|
917
|
-
const obj = (0, parser_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable);
|
|
1024
|
+
const obj = (0, parser_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
918
1025
|
(0, unresolvableValue_1.assertNoDroppedValues)(args[0].expression, obj, spreadValues([
|
|
919
1026
|
mergedStaticTable,
|
|
920
1027
|
mergedKeyframesTable,
|
|
@@ -924,6 +1031,9 @@ const transformSource = async (env) => {
|
|
|
924
1031
|
mergedCreateTable,
|
|
925
1032
|
mergedCreateStaticHashTable,
|
|
926
1033
|
scannedTables.createStaticObjectTable,
|
|
1034
|
+
undefined,
|
|
1035
|
+
mergedVarTypeTable,
|
|
1036
|
+
mergedPositionTryTable,
|
|
927
1037
|
], localConstNodes, getSource));
|
|
928
1038
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
929
1039
|
scannedTables.createStaticObjectTable[hash] = obj;
|
|
@@ -931,7 +1041,7 @@ const transformSource = async (env) => {
|
|
|
931
1041
|
else if (propName === 'create' &&
|
|
932
1042
|
args.length > 0 &&
|
|
933
1043
|
parser_1.t.isObjectExpression(args[0].expression)) {
|
|
934
|
-
const obj = (0, parser_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable);
|
|
1044
|
+
const obj = (0, parser_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
935
1045
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
936
1046
|
scannedTables.createObjectTable[hash] = obj;
|
|
937
1047
|
}
|
|
@@ -1031,7 +1141,7 @@ const transformSource = async (env) => {
|
|
|
1031
1141
|
return merged;
|
|
1032
1142
|
}
|
|
1033
1143
|
if (parser_1.t.isObjectExpression(expr)) {
|
|
1034
|
-
return (0, parser_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable);
|
|
1144
|
+
return (0, parser_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
1035
1145
|
}
|
|
1036
1146
|
else if (parser_1.t.isMemberExpression(expr) &&
|
|
1037
1147
|
parser_1.t.isIdentifier(expr.object) &&
|
|
@@ -1130,7 +1240,7 @@ const transformSource = async (env) => {
|
|
|
1130
1240
|
properties: argExpr.properties.filter((prop) => prop.type === 'Identifier' ||
|
|
1131
1241
|
(prop.type === 'KeyValueProperty' &&
|
|
1132
1242
|
isStaticArgValue(prop.value))),
|
|
1133
|
-
}, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable);
|
|
1243
|
+
}, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
1134
1244
|
if (func.named) {
|
|
1135
1245
|
const argExpr = callArgs[0]?.expression;
|
|
1136
1246
|
if (callArgs.length > 1 ||
|
package/dist/types.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export type StaticTable = Record<string, CSSValue>;
|
|
|
9
9
|
export type KeyframesHashTable = Record<string, string>;
|
|
10
10
|
export type KeyframesObjectTable = Record<string, CSSObject>;
|
|
11
11
|
export type ViewTransitionHashTable = Record<string, string>;
|
|
12
|
+
export type VarTypeHashTable = Record<string, string>;
|
|
13
|
+
export type PositionTryHashTable = Record<string, string>;
|
|
12
14
|
export type ViewTransitionObjectTable = Record<string, CSSObject>;
|
|
13
15
|
export type CreateThemeObjectTable = Record<string, CSSObject>;
|
|
14
16
|
export type CreateHashTable = Record<string, string>;
|
|
@@ -38,6 +40,10 @@ export interface Tables {
|
|
|
38
40
|
keyframesObjectTable: KeyframesObjectTable;
|
|
39
41
|
viewTransitionHashTable: ViewTransitionHashTable;
|
|
40
42
|
viewTransitionObjectTable: ViewTransitionObjectTable;
|
|
43
|
+
varTypeHashTable?: VarTypeHashTable;
|
|
44
|
+
varTypeObjectTable?: Record<string, CSSObject>;
|
|
45
|
+
positionTryHashTable?: PositionTryHashTable;
|
|
46
|
+
positionTryObjectTable?: Record<string, CSSObject>;
|
|
41
47
|
createThemeHashTable: CreateThemeHashTable;
|
|
42
48
|
createThemeSelectorTable: CreateThemeSelectorTable;
|
|
43
49
|
createThemeObjectTable: CreateThemeObjectTable;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const varTypeHashOf: (name: string, rule: Record<string, unknown>) => string;
|
|
2
|
+
export declare const createVarType: (rule: Record<string, unknown>, hash: string) => {
|
|
3
|
+
[x: string]: {
|
|
4
|
+
initialValue?: {} | null | undefined;
|
|
5
|
+
syntax: string;
|
|
6
|
+
inherits: string;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
export declare const checkedVarTypeHash: (name: string, rule: Record<string, unknown>) => string;
|
package/dist/varType.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkedVarTypeHash = exports.createVarType = exports.varTypeHashOf = void 0;
|
|
4
|
+
const lightningcss_1 = require("lightningcss");
|
|
5
|
+
const zss_engine_1 = require("zss-engine");
|
|
6
|
+
const varTypeHashOf = (name, rule) => (0, zss_engine_1.genBase36Hash)({ _varTypeName: name, ...rule }, 1, 8);
|
|
7
|
+
exports.varTypeHashOf = varTypeHashOf;
|
|
8
|
+
const createVarType = (rule, hash) => ({
|
|
9
|
+
[`@property --pr-${hash}`]: {
|
|
10
|
+
syntax: `"${typeof rule.syntax === 'string' ? rule.syntax : '*'}"`,
|
|
11
|
+
inherits: rule.inherits === true ? 'true' : 'false',
|
|
12
|
+
...(rule.initialValue !== undefined && {
|
|
13
|
+
initialValue: rule.initialValue,
|
|
14
|
+
}),
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
exports.createVarType = createVarType;
|
|
18
|
+
const checkedVarTypeHash = (name, rule) => {
|
|
19
|
+
const hash = (0, exports.varTypeHashOf)(name, rule);
|
|
20
|
+
const { styleSheet } = (0, zss_engine_1.transpile)((0, exports.createVarType)(rule, hash), undefined, '--global');
|
|
21
|
+
try {
|
|
22
|
+
(0, lightningcss_1.transform)({ filename: 'global.css', code: Buffer.from(styleSheet) });
|
|
23
|
+
return hash;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
const syntax = typeof rule.syntax === 'string' ? `syntax "${rule.syntax}"` : 'no syntax';
|
|
27
|
+
const initial = typeof rule.initialValue === 'string'
|
|
28
|
+
? `initialValue "${rule.initialValue}"`
|
|
29
|
+
: typeof rule.initialValue === 'number'
|
|
30
|
+
? `initialValue ${rule.initialValue}`
|
|
31
|
+
: 'no initialValue';
|
|
32
|
+
throw new Error(`[plumeria] css.varType "${name}" is not a valid @property: ${syntax} with ${initial}. The syntax has to be a valid @property syntax, and the initial value has to match it.`);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.checkedVarTypeHash = checkedVarTypeHash;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plumeria/utils",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "20.0.0",
|
|
4
4
|
"description": "Plumeria Utils",
|
|
5
5
|
"author": "Refirst 11",
|
|
6
6
|
"license": "MIT",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@swc/core": "1.15.47",
|
|
25
25
|
"lightningcss": "^1.32.0",
|
|
26
26
|
"postcss": "8.5.26",
|
|
27
|
-
"zss-engine": "
|
|
27
|
+
"zss-engine": "3.0.1"
|
|
28
28
|
},
|
|
29
29
|
"publishConfig": {
|
|
30
30
|
"access": "public",
|