@plumeria/utils 19.15.0 → 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 +28 -12
- package/dist/dynamicKey.d.ts +2 -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 +91 -33
- package/dist/positionTry.d.ts +4 -0
- package/dist/positionTry.js +7 -0
- package/dist/propertyPolicy.js +5 -1
- package/dist/transform.js +61 -13
- package/dist/types.d.ts +3 -0
- package/package.json +2 -2
package/dist/compile.js
CHANGED
|
@@ -128,6 +128,7 @@ const dynamicTablesOf = (ctx) => ({
|
|
|
128
128
|
keyframesHashTable: ctx.mergedKeyframesTable,
|
|
129
129
|
viewTransitionHashTable: ctx.mergedViewTransitionTable,
|
|
130
130
|
varTypeHashTable: ctx.mergedVarTypeTable,
|
|
131
|
+
positionTryHashTable: ctx.mergedPositionTryTable,
|
|
131
132
|
createThemeHashTable: ctx.mergedCreateThemeHashTable,
|
|
132
133
|
createThemeObjectTable: ctx.scannedTables.createThemeObjectTable,
|
|
133
134
|
createHashTable: ctx.mergedCreateTable,
|
|
@@ -348,6 +349,7 @@ function compileCSS(options) {
|
|
|
348
349
|
const keyframesImportMap = {};
|
|
349
350
|
const viewTransitionImportMap = {};
|
|
350
351
|
const varTypeImportMap = {};
|
|
352
|
+
const positionTryImportMap = {};
|
|
351
353
|
const createImportMap = {};
|
|
352
354
|
const createFunctionImportMap = {};
|
|
353
355
|
const createThemeImportMap = {};
|
|
@@ -412,6 +414,9 @@ function compileCSS(options) {
|
|
|
412
414
|
if (scannedTables.varTypeHashTable?.[uniqueKey])
|
|
413
415
|
varTypeImportMap[localName] =
|
|
414
416
|
scannedTables.varTypeHashTable[uniqueKey];
|
|
417
|
+
if (scannedTables.positionTryHashTable?.[uniqueKey])
|
|
418
|
+
positionTryImportMap[localName] =
|
|
419
|
+
scannedTables.positionTryHashTable[uniqueKey];
|
|
415
420
|
if (scannedTables.createHashTable[uniqueKey])
|
|
416
421
|
createImportMap[localName] =
|
|
417
422
|
scannedTables.createHashTable[uniqueKey];
|
|
@@ -461,6 +466,16 @@ function compileCSS(options) {
|
|
|
461
466
|
for (const key of Object.keys(varTypeImportMap)) {
|
|
462
467
|
mergedVarTypeTable[key] = varTypeImportMap[key];
|
|
463
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
|
+
}
|
|
464
479
|
const mergedCreateThemeHashTable = Object.create(scannedTables.createThemeHashTable);
|
|
465
480
|
for (const key of (0, index_1.fileTableKeys)(resourcePath, 'createThemeHashTable') ??
|
|
466
481
|
[]) {
|
|
@@ -493,6 +508,7 @@ function compileCSS(options) {
|
|
|
493
508
|
mergedKeyframesTable,
|
|
494
509
|
mergedViewTransitionTable,
|
|
495
510
|
mergedVarTypeTable,
|
|
511
|
+
mergedPositionTryTable,
|
|
496
512
|
mergedCreateThemeHashTable,
|
|
497
513
|
mergedCreateStaticHashTable,
|
|
498
514
|
mergedCreateTable,
|
|
@@ -617,7 +633,7 @@ function compileCSS(options) {
|
|
|
617
633
|
return merged;
|
|
618
634
|
}
|
|
619
635
|
if (index_1.t.isObjectExpression(expr)) {
|
|
620
|
-
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);
|
|
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);
|
|
621
637
|
}
|
|
622
638
|
else if (index_1.t.isMemberExpression(expr) &&
|
|
623
639
|
index_1.t.isIdentifier(expr.object) &&
|
|
@@ -731,7 +747,7 @@ function compileCSS(options) {
|
|
|
731
747
|
properties: argExpr.properties.filter((prop) => prop.type === 'Identifier' ||
|
|
732
748
|
(prop.type === 'KeyValueProperty' &&
|
|
733
749
|
isStaticArgValue(prop.value))),
|
|
734
|
-
}, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable, undefined, ctx.mergedVarTypeTable);
|
|
750
|
+
}, ctx.mergedStaticTable, ctx.mergedKeyframesTable, ctx.mergedViewTransitionTable, ctx.mergedCreateThemeHashTable, ctx.scannedTables.createThemeObjectTable, ctx.mergedCreateTable, ctx.mergedCreateStaticHashTable, ctx.scannedTables.createStaticObjectTable, undefined, ctx.mergedVarTypeTable, ctx.mergedPositionTryTable);
|
|
735
751
|
if (func.named) {
|
|
736
752
|
const argExpr = callArgs[0]?.expression;
|
|
737
753
|
if (callArgs.length > 1 ||
|
|
@@ -1019,14 +1035,14 @@ function compileCSS(options) {
|
|
|
1019
1035
|
else if (propName === 'keyframes' &&
|
|
1020
1036
|
args.length > 0 &&
|
|
1021
1037
|
index_1.t.isObjectExpression(args[0].expression)) {
|
|
1022
|
-
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);
|
|
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);
|
|
1023
1039
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
1024
1040
|
writes.keyframesObjectTable[hash] = obj;
|
|
1025
1041
|
}
|
|
1026
1042
|
else if (propName === 'viewTransition' &&
|
|
1027
1043
|
args.length > 0 &&
|
|
1028
1044
|
index_1.t.isObjectExpression(args[0].expression)) {
|
|
1029
|
-
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);
|
|
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);
|
|
1030
1046
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
1031
1047
|
writes.viewTransitionObjectTable[hash] = obj;
|
|
1032
1048
|
}
|
|
@@ -1041,9 +1057,9 @@ function compileCSS(options) {
|
|
|
1041
1057
|
}
|
|
1042
1058
|
if (selector.startsWith('@') && !(0, zss_engine_1.isAtRule)(selector)) {
|
|
1043
1059
|
throw new Error(`[plumeria] Unsupported at-rule: "${selector}". createTheme only supports ` +
|
|
1044
|
-
`nesting at-rules such as @media, @container,
|
|
1060
|
+
`nesting at-rules such as @media, @container, and @supports. (${path.basename(resourcePath)})`);
|
|
1045
1061
|
}
|
|
1046
|
-
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);
|
|
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);
|
|
1047
1063
|
const hash = (0, index_1.themeHashOf)(selector, obj);
|
|
1048
1064
|
writes.createThemeObjectTable[hash] = obj;
|
|
1049
1065
|
if (ctx.scannedTables.createThemeSelectorTable) {
|
|
@@ -1053,7 +1069,7 @@ function compileCSS(options) {
|
|
|
1053
1069
|
else if (propName === 'createStatic' &&
|
|
1054
1070
|
args.length > 0 &&
|
|
1055
1071
|
index_1.t.isObjectExpression(args[0].expression)) {
|
|
1056
|
-
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);
|
|
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);
|
|
1057
1073
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
1058
1074
|
writes.createStaticObjectTable[hash] = obj;
|
|
1059
1075
|
}
|
|
@@ -1104,7 +1120,7 @@ function compileCSS(options) {
|
|
|
1104
1120
|
? ctx.scannedTables.createAtomicMapTable[ctx.mergedCreateThemeHashTable[name]]
|
|
1105
1121
|
: undefined);
|
|
1106
1122
|
if (pName === 'create') {
|
|
1107
|
-
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);
|
|
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);
|
|
1108
1124
|
if (obj) {
|
|
1109
1125
|
const styleFunctions = (0, index_1.styleFunctionsOf)(arg);
|
|
1110
1126
|
ctx.localCreateStyles[node.id.value] = {
|
|
@@ -1123,9 +1139,9 @@ function compileCSS(options) {
|
|
|
1123
1139
|
}
|
|
1124
1140
|
if (selector.startsWith('@') && !(0, zss_engine_1.isAtRule)(selector)) {
|
|
1125
1141
|
throw new Error(`[plumeria] Unsupported at-rule: "${selector}". createTheme only supports ` +
|
|
1126
|
-
`nesting at-rules such as @media, @container,
|
|
1142
|
+
`nesting at-rules such as @media, @container, and @supports. (${path.basename(resourcePath)})`);
|
|
1127
1143
|
}
|
|
1128
|
-
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);
|
|
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);
|
|
1129
1145
|
const hash = (0, index_1.themeHashOf)(selector, obj);
|
|
1130
1146
|
const uKey = `${resourcePath}-${node.id.value}`;
|
|
1131
1147
|
writes.createThemeHashTable[uKey] = hash;
|
|
@@ -1146,11 +1162,11 @@ function compileCSS(options) {
|
|
|
1146
1162
|
};
|
|
1147
1163
|
}
|
|
1148
1164
|
else if (pName === 'varType') {
|
|
1149
|
-
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);
|
|
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);
|
|
1150
1166
|
ctx.mergedVarTypeTable[node.id.value] = (0, varType_1.checkedVarTypeHash)(node.id.value, obj);
|
|
1151
1167
|
}
|
|
1152
1168
|
else if (pName === 'createStatic') {
|
|
1153
|
-
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);
|
|
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);
|
|
1154
1170
|
if (obj) {
|
|
1155
1171
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
1156
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, VarTypeHashTable, 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;
|
|
@@ -30,6 +30,7 @@ export type DynamicStyleTables = {
|
|
|
30
30
|
keyframesHashTable: KeyframesHashTable;
|
|
31
31
|
viewTransitionHashTable: ViewTransitionHashTable;
|
|
32
32
|
varTypeHashTable?: VarTypeHashTable;
|
|
33
|
+
positionTryHashTable?: PositionTryHashTable;
|
|
33
34
|
createThemeHashTable: CreateThemeHashTable;
|
|
34
35
|
createThemeObjectTable: CreateThemeObjectTable;
|
|
35
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, undefined, tables.varTypeHashTable).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, undefined, tables.varTypeHashTable);
|
|
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, VarTypeHashTable, 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, VarTypeHashTable, 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, varTypeHashTable?: VarTypeHashTable): 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
|
@@ -62,6 +62,7 @@ const rs = __importStar(require("@rust-gear/glob"));
|
|
|
62
62
|
const zss_engine_1 = require("zss-engine");
|
|
63
63
|
const viewTransition_1 = require("./viewTransition");
|
|
64
64
|
const varType_1 = require("./varType");
|
|
65
|
+
const positionTry_1 = require("./positionTry");
|
|
65
66
|
const constants_1 = require("./constants");
|
|
66
67
|
const stylePropFilter_1 = require("./stylePropFilter");
|
|
67
68
|
const create_1 = require("./create");
|
|
@@ -275,12 +276,12 @@ function traverse(node, visitor) {
|
|
|
275
276
|
}
|
|
276
277
|
walk(node);
|
|
277
278
|
}
|
|
278
|
-
function objectExpressionToObject(node, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createHashTable, createStaticHashTable, createStaticObjectTable, resolveVariable, varTypeHashTable = {}) {
|
|
279
|
+
function objectExpressionToObject(node, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createHashTable, createStaticHashTable, createStaticObjectTable, resolveVariable, varTypeHashTable = {}, positionTryHashTable = {}) {
|
|
279
280
|
const obj = Object.create(null);
|
|
280
281
|
node.properties.forEach((prop) => {
|
|
281
282
|
if (prop.type === 'SpreadElement') {
|
|
282
283
|
const arg = prop.arguments;
|
|
283
|
-
const spreadVal = evaluateExpression(arg, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
284
|
+
const spreadVal = evaluateExpression(arg, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
284
285
|
if (typeof spreadVal === 'object' && spreadVal !== null) {
|
|
285
286
|
Object.assign(obj, spreadVal);
|
|
286
287
|
}
|
|
@@ -302,7 +303,7 @@ function objectExpressionToObject(node, staticTable, keyframesHashTable, viewTra
|
|
|
302
303
|
}
|
|
303
304
|
if (!exports.t.isObjectProperty(prop))
|
|
304
305
|
return;
|
|
305
|
-
const rawKey = getPropertyKey(prop.key, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
306
|
+
const rawKey = getPropertyKey(prop.key, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
306
307
|
if (!rawKey)
|
|
307
308
|
return;
|
|
308
309
|
const key = typeof rawKey === 'string' ? (0, zss_engine_1.stripSelectorComments)(rawKey) : rawKey;
|
|
@@ -345,6 +346,11 @@ function objectExpressionToObject(node, staticTable, keyframesHashTable, viewTra
|
|
|
345
346
|
obj[key] = '--pr-' + varTypeHashTable[val.value];
|
|
346
347
|
return;
|
|
347
348
|
}
|
|
349
|
+
if (exports.t.isIdentifier(val) &&
|
|
350
|
+
positionTryHashTable[val.value] !== undefined) {
|
|
351
|
+
obj[key] = '--pt-' + positionTryHashTable[val.value];
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
348
354
|
const resolvedCreate = resolveCreateTableMemberExpression(val, createHashTable);
|
|
349
355
|
if (resolvedCreate !== undefined) {
|
|
350
356
|
obj[key] = 'cr-' + resolvedCreate;
|
|
@@ -367,13 +373,13 @@ function objectExpressionToObject(node, staticTable, keyframesHashTable, viewTra
|
|
|
367
373
|
obj[key] = val.value;
|
|
368
374
|
}
|
|
369
375
|
else if (exports.t.isUnaryExpression(val)) {
|
|
370
|
-
obj[key] = evaluateExpression(val, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
376
|
+
obj[key] = evaluateExpression(val, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
371
377
|
}
|
|
372
378
|
else if (exports.t.isObjectExpression(val)) {
|
|
373
|
-
obj[key] = objectExpressionToObject(val, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createHashTable, createStaticHashTable, createStaticObjectTable, resolveVariable, varTypeHashTable);
|
|
379
|
+
obj[key] = objectExpressionToObject(val, staticTable, keyframesHashTable, viewTransitionHashTable, createThemeHashTable, createThemeObjectTable, createHashTable, createStaticHashTable, createStaticObjectTable, resolveVariable, varTypeHashTable, positionTryHashTable);
|
|
374
380
|
}
|
|
375
381
|
else if (exports.t.isBinaryExpression(val) || exports.t.isTemplateLiteral(val)) {
|
|
376
|
-
obj[key] = evaluateExpression(val, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
382
|
+
obj[key] = evaluateExpression(val, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
377
383
|
}
|
|
378
384
|
else if (exports.t.isMemberExpression(val)) {
|
|
379
385
|
const resolved = resolveStaticTableMemberExpression(val, staticTable);
|
|
@@ -444,7 +450,7 @@ function collectLocalConsts(ast) {
|
|
|
444
450
|
else if (exports.t.isBinaryExpression(init) ||
|
|
445
451
|
exports.t.isTemplateLiteral(init) ||
|
|
446
452
|
exports.t.isUnaryExpression(init)) {
|
|
447
|
-
result = evaluateExpression(init, localConsts, {}, {}, {}, {}, {}, {}, {});
|
|
453
|
+
result = evaluateExpression(init, localConsts, {}, {}, {}, {}, {}, {}, {}, {});
|
|
448
454
|
}
|
|
449
455
|
}
|
|
450
456
|
catch (e) {
|
|
@@ -675,7 +681,7 @@ function inlineOuterScope(objExpression, resolveProperty) {
|
|
|
675
681
|
});
|
|
676
682
|
return changed ? { ...objExpression, properties } : objExpression;
|
|
677
683
|
}
|
|
678
|
-
function getPropertyKey(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable) {
|
|
684
|
+
function getPropertyKey(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable) {
|
|
679
685
|
if (exports.t.isIdentifier(node)) {
|
|
680
686
|
return node.value;
|
|
681
687
|
}
|
|
@@ -698,9 +704,12 @@ function getPropertyKey(node, staticTable, keyframesHashTable, viewTransitionHas
|
|
|
698
704
|
if (varTypeHashTable[expr.value] !== undefined) {
|
|
699
705
|
return '--pr-' + varTypeHashTable[expr.value];
|
|
700
706
|
}
|
|
707
|
+
if (positionTryHashTable[expr.value] !== undefined) {
|
|
708
|
+
return '--pt-' + positionTryHashTable[expr.value];
|
|
709
|
+
}
|
|
701
710
|
}
|
|
702
711
|
if (exports.t.isCallExpression(expr)) {
|
|
703
|
-
const result = evaluateExpression(expr, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
712
|
+
const result = evaluateExpression(expr, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
704
713
|
if (typeof result === 'string')
|
|
705
714
|
return result;
|
|
706
715
|
}
|
|
@@ -716,28 +725,28 @@ function getPropertyKey(node, staticTable, keyframesHashTable, viewTransitionHas
|
|
|
716
725
|
return themeResult;
|
|
717
726
|
}
|
|
718
727
|
if (exports.t.isTemplateLiteral(expr)) {
|
|
719
|
-
return evaluateTemplateLiteral(expr, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
728
|
+
return evaluateTemplateLiteral(expr, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
720
729
|
}
|
|
721
730
|
if (exports.t.isBinaryExpression(expr)) {
|
|
722
|
-
return evaluateBinaryExpression(expr, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
731
|
+
return evaluateBinaryExpression(expr, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
723
732
|
}
|
|
724
733
|
return '';
|
|
725
734
|
}
|
|
726
735
|
if (exports.t.isTemplateLiteral(node)) {
|
|
727
|
-
return evaluateTemplateLiteral(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
736
|
+
return evaluateTemplateLiteral(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
728
737
|
}
|
|
729
738
|
if (exports.t.isBinaryExpression(node)) {
|
|
730
|
-
return evaluateBinaryExpression(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
739
|
+
return evaluateBinaryExpression(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
731
740
|
}
|
|
732
741
|
return '';
|
|
733
742
|
}
|
|
734
|
-
function evaluateTemplateLiteral(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable) {
|
|
743
|
+
function evaluateTemplateLiteral(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable) {
|
|
735
744
|
let result = '';
|
|
736
745
|
for (let i = 0; i < node.quasis.length; i++) {
|
|
737
746
|
result += node.quasis[i].cooked || node.quasis[i].raw;
|
|
738
747
|
if (i < node.expressions.length) {
|
|
739
748
|
const expr = node.expressions[i];
|
|
740
|
-
const evaluatedExpr = evaluateExpression(expr, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
749
|
+
const evaluatedExpr = evaluateExpression(expr, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
741
750
|
if (evaluatedExpr === null || typeof evaluatedExpr === 'object')
|
|
742
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.`);
|
|
743
752
|
result += String(evaluatedExpr);
|
|
@@ -745,15 +754,15 @@ function evaluateTemplateLiteral(node, staticTable, keyframesHashTable, viewTran
|
|
|
745
754
|
}
|
|
746
755
|
return result;
|
|
747
756
|
}
|
|
748
|
-
function evaluateBinaryExpression(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable) {
|
|
749
|
-
const left = evaluateExpression(node.left, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, 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);
|
|
750
759
|
if (node.operator === '&&' && !left)
|
|
751
760
|
return left;
|
|
752
761
|
if (node.operator === '||' && left)
|
|
753
762
|
return left;
|
|
754
763
|
if (node.operator === '??' && left !== null)
|
|
755
764
|
return left;
|
|
756
|
-
const right = evaluateExpression(node.right, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
765
|
+
const right = evaluateExpression(node.right, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
757
766
|
if (['&&', '||', '??'].includes(node.operator))
|
|
758
767
|
return right;
|
|
759
768
|
if (typeof left === 'number' && typeof right === 'number') {
|
|
@@ -823,8 +832,8 @@ function evaluateCallExpression(node, staticTable) {
|
|
|
823
832
|
if (method === 'marker') {
|
|
824
833
|
const args = node.arguments;
|
|
825
834
|
if (args.length >= 2) {
|
|
826
|
-
const id = evaluateExpression(args[0].expression, staticTable, {}, {}, {}, {}, {}, {}, {});
|
|
827
|
-
const pseudo = evaluateExpression(args[1].expression, staticTable, {}, {}, {}, {}, {}, {}, {});
|
|
835
|
+
const id = evaluateExpression(args[0].expression, staticTable, {}, {}, {}, {}, {}, {}, {}, {});
|
|
836
|
+
const pseudo = evaluateExpression(args[1].expression, staticTable, {}, {}, {}, {}, {}, {}, {}, {});
|
|
828
837
|
if (typeof id === 'string' && typeof pseudo === 'string') {
|
|
829
838
|
const varName = getMarkerVar(id, pseudo);
|
|
830
839
|
return {
|
|
@@ -838,8 +847,8 @@ function evaluateCallExpression(node, staticTable) {
|
|
|
838
847
|
if (method === 'extended') {
|
|
839
848
|
const args = node.arguments;
|
|
840
849
|
if (args.length >= 2) {
|
|
841
|
-
const id = evaluateExpression(args[0].expression, staticTable, {}, {}, {}, {}, {}, {}, {});
|
|
842
|
-
const pseudo = evaluateExpression(args[1].expression, staticTable, {}, {}, {}, {}, {}, {}, {});
|
|
850
|
+
const id = evaluateExpression(args[0].expression, staticTable, {}, {}, {}, {}, {}, {}, {}, {});
|
|
851
|
+
const pseudo = evaluateExpression(args[1].expression, staticTable, {}, {}, {}, {}, {}, {}, {}, {});
|
|
843
852
|
if (typeof id === 'string' && typeof pseudo === 'string') {
|
|
844
853
|
const varName = getMarkerVar(id, pseudo);
|
|
845
854
|
return `@container style(${varName}: 1)`;
|
|
@@ -848,7 +857,7 @@ function evaluateCallExpression(node, staticTable) {
|
|
|
848
857
|
}
|
|
849
858
|
return null;
|
|
850
859
|
}
|
|
851
|
-
function evaluateExpression(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable) {
|
|
860
|
+
function evaluateExpression(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable) {
|
|
852
861
|
node = unwrapExpression(node);
|
|
853
862
|
if (exports.t.isCallExpression(node)) {
|
|
854
863
|
return evaluateCallExpression(node, staticTable);
|
|
@@ -878,6 +887,9 @@ function evaluateExpression(node, staticTable, keyframesHashTable, viewTransitio
|
|
|
878
887
|
if (varTypeHashTable[node.value] !== undefined) {
|
|
879
888
|
return '--pr-' + varTypeHashTable[node.value];
|
|
880
889
|
}
|
|
890
|
+
if (positionTryHashTable[node.value] !== undefined) {
|
|
891
|
+
return '--pt-' + positionTryHashTable[node.value];
|
|
892
|
+
}
|
|
881
893
|
if (createStaticHashTable[node.value] !== undefined) {
|
|
882
894
|
const hash = createStaticHashTable[node.value];
|
|
883
895
|
if (createStaticObjectTable[hash] !== undefined) {
|
|
@@ -902,13 +914,13 @@ function evaluateExpression(node, staticTable, keyframesHashTable, viewTransitio
|
|
|
902
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.`);
|
|
903
915
|
}
|
|
904
916
|
if (exports.t.isBinaryExpression(node)) {
|
|
905
|
-
return evaluateBinaryExpression(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
917
|
+
return evaluateBinaryExpression(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
906
918
|
}
|
|
907
919
|
if (exports.t.isTemplateLiteral(node)) {
|
|
908
|
-
return evaluateTemplateLiteral(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
920
|
+
return evaluateTemplateLiteral(node, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
909
921
|
}
|
|
910
922
|
if (exports.t.isUnaryExpression(node)) {
|
|
911
|
-
const value = evaluateExpression(node.argument, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
923
|
+
const value = evaluateExpression(node.argument, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
912
924
|
if (node.operator === '!')
|
|
913
925
|
return !value;
|
|
914
926
|
if (typeof value === 'number') {
|
|
@@ -922,7 +934,7 @@ function evaluateExpression(node, staticTable, keyframesHashTable, viewTransitio
|
|
|
922
934
|
throw new Error(`[plumeria] Unsupported unary operand for ${node.operator}: ${(0, exports.expressionLabel)(node.argument)} must resolve to a number at build time.`);
|
|
923
935
|
}
|
|
924
936
|
if (exports.t.isParenthesisExpression(node)) {
|
|
925
|
-
return evaluateExpression(node.expression, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
937
|
+
return evaluateExpression(node.expression, staticTable, keyframesHashTable, viewTransitionHashTable, varTypeHashTable, positionTryHashTable, createThemeHashTable, createThemeObjectTable, createStaticHashTable, createStaticObjectTable);
|
|
926
938
|
}
|
|
927
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.`);
|
|
928
940
|
}
|
|
@@ -1034,7 +1046,7 @@ function resolveCreateStaticTableMemberExpression(node, createStaticHashTable, c
|
|
|
1034
1046
|
}
|
|
1035
1047
|
function resolveThemeSelector(node, staticTable, createStaticHashTable, createStaticObjectTable) {
|
|
1036
1048
|
try {
|
|
1037
|
-
const value = evaluateExpression(node, staticTable, {}, {}, {}, {}, {}, createStaticHashTable, createStaticObjectTable);
|
|
1049
|
+
const value = evaluateExpression(node, staticTable, {}, {}, {}, {}, {}, {}, createStaticHashTable, createStaticObjectTable);
|
|
1038
1050
|
return typeof value === 'string' ? value : '';
|
|
1039
1051
|
}
|
|
1040
1052
|
catch {
|
|
@@ -1086,8 +1098,10 @@ const globalAgregatedTables = {
|
|
|
1086
1098
|
keyframesObjectTable: {},
|
|
1087
1099
|
viewTransitionHashTable: {},
|
|
1088
1100
|
varTypeHashTable: {},
|
|
1101
|
+
positionTryHashTable: {},
|
|
1089
1102
|
viewTransitionObjectTable: {},
|
|
1090
1103
|
varTypeObjectTable: {},
|
|
1104
|
+
positionTryObjectTable: {},
|
|
1091
1105
|
createThemeObjectTable: {},
|
|
1092
1106
|
createThemeSelectorTable: {},
|
|
1093
1107
|
createHashTable: {},
|
|
@@ -1112,6 +1126,7 @@ const detachedTables = new Set([
|
|
|
1112
1126
|
'keyframesHashTable',
|
|
1113
1127
|
'viewTransitionHashTable',
|
|
1114
1128
|
'varTypeHashTable',
|
|
1129
|
+
'positionTryHashTable',
|
|
1115
1130
|
'createHashTable',
|
|
1116
1131
|
'createObjectTable',
|
|
1117
1132
|
'createFunctionTable',
|
|
@@ -1448,6 +1463,7 @@ function runScan(scanCwd, styleProp) {
|
|
|
1448
1463
|
keyframesObjectTable: {},
|
|
1449
1464
|
viewTransitionHashTable: {},
|
|
1450
1465
|
varTypeHashTable: {},
|
|
1466
|
+
positionTryHashTable: {},
|
|
1451
1467
|
viewTransitionObjectTable: {},
|
|
1452
1468
|
createThemeHashTable: {},
|
|
1453
1469
|
createThemeSelectorTable: {},
|
|
@@ -1510,6 +1526,8 @@ function runScan(scanCwd, styleProp) {
|
|
|
1510
1526
|
const localVarTypeHashTable = {};
|
|
1511
1527
|
const localViewTransitionObjectTable = {};
|
|
1512
1528
|
const localVarTypeObjectTable = {};
|
|
1529
|
+
const localPositionTryHashTable = {};
|
|
1530
|
+
const localPositionTryObjectTable = {};
|
|
1513
1531
|
const localCreateThemeObjectTable = {};
|
|
1514
1532
|
const localCreateThemeSelectorTable = {};
|
|
1515
1533
|
const localCreateHashTable = {};
|
|
@@ -1603,6 +1621,14 @@ function runScan(scanCwd, styleProp) {
|
|
|
1603
1621
|
localTables.varTypeObjectTable[hash];
|
|
1604
1622
|
}
|
|
1605
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
|
+
}
|
|
1606
1632
|
if (localTables.viewTransitionHashTable[uniqueKey]) {
|
|
1607
1633
|
const hash = localTables.viewTransitionHashTable[uniqueKey];
|
|
1608
1634
|
localViewTransitionHashTable[localName] = hash;
|
|
@@ -1706,6 +1732,7 @@ function runScan(scanCwd, styleProp) {
|
|
|
1706
1732
|
'createStatic',
|
|
1707
1733
|
'keyframes',
|
|
1708
1734
|
'viewTransition',
|
|
1735
|
+
'positionTry',
|
|
1709
1736
|
'varType',
|
|
1710
1737
|
].includes(method)) {
|
|
1711
1738
|
const argument = decl.init.arguments[method === 'createTheme' ? 1 : 0];
|
|
@@ -1737,13 +1764,14 @@ function runScan(scanCwd, styleProp) {
|
|
|
1737
1764
|
method === 'createTheme' ||
|
|
1738
1765
|
method === 'keyframes' ||
|
|
1739
1766
|
method === 'viewTransition' ||
|
|
1767
|
+
method === 'positionTry' ||
|
|
1740
1768
|
method === 'varType';
|
|
1741
1769
|
if (isFirstPass && !isPassOneMethod)
|
|
1742
1770
|
continue;
|
|
1743
1771
|
const objExpression = isCreateTheme
|
|
1744
1772
|
? init.arguments[1].expression
|
|
1745
1773
|
: init.arguments[0].expression;
|
|
1746
|
-
const obj = objectExpressionToObject(objExpression, scopedStaticTable, localKeyframesHashTable, localViewTransitionHashTable, localCreateThemeHashTable, localCreateThemeObjectTable, localCreateHashTable, localCreateStaticHashTable, localCreateStaticObjectTable, resolveVariable, localVarTypeHashTable);
|
|
1774
|
+
const obj = objectExpressionToObject(objExpression, scopedStaticTable, localKeyframesHashTable, localViewTransitionHashTable, localCreateThemeHashTable, localCreateThemeObjectTable, localCreateHashTable, localCreateStaticHashTable, localCreateStaticObjectTable, resolveVariable, localVarTypeHashTable, localPositionTryHashTable);
|
|
1747
1775
|
const uniqueKey = `${filePath}-${name}`;
|
|
1748
1776
|
if (method === 'createStatic') {
|
|
1749
1777
|
localStaticTable[name] = obj;
|
|
@@ -1775,6 +1803,15 @@ function runScan(scanCwd, styleProp) {
|
|
|
1775
1803
|
localVarTypeObjectTable[hash] = obj;
|
|
1776
1804
|
registerObjectOwner('varTypeObjectTable', hash, filePath);
|
|
1777
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
|
+
}
|
|
1778
1815
|
else if (method === 'viewTransition') {
|
|
1779
1816
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
1780
1817
|
localViewTransitionHashTable[name] = hash;
|
|
@@ -1824,7 +1861,7 @@ function runScan(scanCwd, styleProp) {
|
|
|
1824
1861
|
inlineOuterScope(objExpression, (property) => objectExpressionToObject({
|
|
1825
1862
|
...objExpression,
|
|
1826
1863
|
properties: [property],
|
|
1827
|
-
}, scopedStaticTable, localKeyframesHashTable, localViewTransitionHashTable, localCreateThemeHashTable, localCreateThemeObjectTable, localCreateHashTable, localCreateStaticHashTable, localCreateStaticObjectTable, resolveVariable, localVarTypeHashTable));
|
|
1864
|
+
}, scopedStaticTable, localKeyframesHashTable, localViewTransitionHashTable, localCreateThemeHashTable, localCreateThemeObjectTable, localCreateHashTable, localCreateStaticHashTable, localCreateStaticObjectTable, resolveVariable, localVarTypeHashTable, localPositionTryHashTable));
|
|
1828
1865
|
registerFileKey('createFunctionTable', uniqueKey, filePath);
|
|
1829
1866
|
}
|
|
1830
1867
|
const hashMap = {};
|
|
@@ -1854,8 +1891,10 @@ function runScan(scanCwd, styleProp) {
|
|
|
1854
1891
|
localKeyframesObjectTable,
|
|
1855
1892
|
localViewTransitionHashTable,
|
|
1856
1893
|
localVarTypeHashTable,
|
|
1894
|
+
localPositionTryHashTable,
|
|
1857
1895
|
localViewTransitionObjectTable,
|
|
1858
1896
|
localVarTypeObjectTable,
|
|
1897
|
+
localPositionTryObjectTable,
|
|
1859
1898
|
localCreateThemeObjectTable,
|
|
1860
1899
|
localCreateThemeSelectorTable,
|
|
1861
1900
|
localCreateHashTable,
|
|
@@ -1875,7 +1914,7 @@ function runScan(scanCwd, styleProp) {
|
|
|
1875
1914
|
for (const entry of jsxPhaseQueue) {
|
|
1876
1915
|
try {
|
|
1877
1916
|
delete fileErrors[entry.filePath];
|
|
1878
|
-
const { filePath, ast, mtimeMs, localDependencies, localStaticTable, localKeyframesHashTable, localKeyframesObjectTable, localViewTransitionHashTable, localVarTypeHashTable, localViewTransitionObjectTable, localVarTypeObjectTable, 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;
|
|
1879
1918
|
const localCreateFunctionTable = {};
|
|
1880
1919
|
for (const localName of Object.keys(localImports)) {
|
|
1881
1920
|
const { actualPath, importedName } = localImports[localName];
|
|
@@ -1897,6 +1936,7 @@ function runScan(scanCwd, styleProp) {
|
|
|
1897
1936
|
keyframesHashTable: localKeyframesHashTable,
|
|
1898
1937
|
viewTransitionHashTable: localViewTransitionHashTable,
|
|
1899
1938
|
varTypeHashTable: localVarTypeHashTable,
|
|
1939
|
+
positionTryHashTable: localPositionTryHashTable,
|
|
1900
1940
|
createThemeHashTable: localCreateThemeHashTable,
|
|
1901
1941
|
createThemeObjectTable: localTables.createThemeObjectTable,
|
|
1902
1942
|
createHashTable: localCreateHashTable,
|
|
@@ -2313,8 +2353,10 @@ function runScan(scanCwd, styleProp) {
|
|
|
2313
2353
|
keyframesObjectTable: localKeyframesObjectTable,
|
|
2314
2354
|
viewTransitionHashTable: localViewTransitionHashTable,
|
|
2315
2355
|
varTypeHashTable: localVarTypeHashTable,
|
|
2356
|
+
positionTryHashTable: localPositionTryHashTable,
|
|
2316
2357
|
viewTransitionObjectTable: localViewTransitionObjectTable,
|
|
2317
2358
|
varTypeObjectTable: localVarTypeObjectTable,
|
|
2359
|
+
positionTryObjectTable: localPositionTryObjectTable,
|
|
2318
2360
|
createThemeHashTable: localCreateThemeHashTable,
|
|
2319
2361
|
createThemeSelectorTable: localCreateThemeSelectorTable,
|
|
2320
2362
|
createThemeObjectTable: localCreateThemeObjectTable,
|
|
@@ -2514,6 +2556,7 @@ function extractAndCacheExports(filePath, ast, mtimeMs) {
|
|
|
2514
2556
|
keyframesObjectTable: {},
|
|
2515
2557
|
viewTransitionHashTable: {},
|
|
2516
2558
|
varTypeHashTable: {},
|
|
2559
|
+
positionTryHashTable: {},
|
|
2517
2560
|
viewTransitionObjectTable: {},
|
|
2518
2561
|
createThemeHashTable: {},
|
|
2519
2562
|
createThemeSelectorTable: {},
|
|
@@ -2590,7 +2633,7 @@ function resolveExport(filePath, exportName, visited = new Set()) {
|
|
|
2590
2633
|
}
|
|
2591
2634
|
return null;
|
|
2592
2635
|
}
|
|
2593
|
-
const REFERENCE_MARKER = /(kf|vt|cr|pr)-([0-9a-z]+)/g;
|
|
2636
|
+
const REFERENCE_MARKER = /(kf|vt|pt|cr|pr)-([0-9a-z]+)/g;
|
|
2594
2637
|
const CUSTOM_PROPERTY = /var\(\s*(--[^\s,)]+)/g;
|
|
2595
2638
|
const appendSheet = (sheets) => {
|
|
2596
2639
|
const existingSheets = new Set(sheets);
|
|
@@ -2608,6 +2651,7 @@ function extractOndemandStyles(obj, addSheet, t) {
|
|
|
2608
2651
|
const visited = new Set();
|
|
2609
2652
|
const keyframesHashes = new Set();
|
|
2610
2653
|
const viewTransitionHashes = new Set();
|
|
2654
|
+
const positionTryHashes = new Set();
|
|
2611
2655
|
const varTypeHashes = new Set();
|
|
2612
2656
|
const createHashes = new Set();
|
|
2613
2657
|
const usedVariables = new Set();
|
|
@@ -2629,7 +2673,10 @@ function extractOndemandStyles(obj, addSheet, t) {
|
|
|
2629
2673
|
if (typeof val === 'string') {
|
|
2630
2674
|
if (val.includes('pr-'))
|
|
2631
2675
|
findVarTypes(val);
|
|
2632
|
-
if (val.includes('kf-') ||
|
|
2676
|
+
if (val.includes('kf-') ||
|
|
2677
|
+
val.includes('vt-') ||
|
|
2678
|
+
val.includes('pt-') ||
|
|
2679
|
+
val.includes('cr-')) {
|
|
2633
2680
|
for (const [, kind, hash] of val.matchAll(REFERENCE_MARKER)) {
|
|
2634
2681
|
if (kind === 'pr')
|
|
2635
2682
|
continue;
|
|
@@ -2646,6 +2693,13 @@ function extractOndemandStyles(obj, addSheet, t) {
|
|
|
2646
2693
|
walk(t.viewTransitionObjectTable[hash]);
|
|
2647
2694
|
}
|
|
2648
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
|
+
}
|
|
2649
2703
|
else if (!createHashes.has(hash) && t.createObjectTable[hash]) {
|
|
2650
2704
|
createHashes.add(hash);
|
|
2651
2705
|
walk(t.createObjectTable[hash]);
|
|
@@ -2686,6 +2740,10 @@ function extractOndemandStyles(obj, addSheet, t) {
|
|
|
2686
2740
|
}
|
|
2687
2741
|
}
|
|
2688
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
|
+
}
|
|
2689
2747
|
if (createHashes.size > 0) {
|
|
2690
2748
|
for (const hash of createHashes) {
|
|
2691
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
|
@@ -343,6 +343,7 @@ const transformSource = async (env) => {
|
|
|
343
343
|
const keyframesImportMap = {};
|
|
344
344
|
const viewTransitionImportMap = {};
|
|
345
345
|
const varTypeImportMap = {};
|
|
346
|
+
const positionTryImportMap = {};
|
|
346
347
|
const createImportMap = {};
|
|
347
348
|
const createFunctionImportMap = {};
|
|
348
349
|
const createThemeImportMap = {};
|
|
@@ -410,6 +411,10 @@ const transformSource = async (env) => {
|
|
|
410
411
|
varTypeImportMap[localName] =
|
|
411
412
|
scannedTables.varTypeHashTable[uniqueKey];
|
|
412
413
|
}
|
|
414
|
+
if (scannedTables.positionTryHashTable?.[uniqueKey]) {
|
|
415
|
+
positionTryImportMap[localName] =
|
|
416
|
+
scannedTables.positionTryHashTable[uniqueKey];
|
|
417
|
+
}
|
|
413
418
|
if (scannedTables.createHashTable[uniqueKey]) {
|
|
414
419
|
createImportMap[localName] =
|
|
415
420
|
scannedTables.createHashTable[uniqueKey];
|
|
@@ -462,6 +467,15 @@ const transformSource = async (env) => {
|
|
|
462
467
|
for (const key of Object.keys(varTypeImportMap)) {
|
|
463
468
|
mergedVarTypeTable[key] = varTypeImportMap[key];
|
|
464
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
|
+
}
|
|
465
479
|
const mergedCreateTable = Object.create(scannedTables.createHashTable);
|
|
466
480
|
for (const key of (0, parser_1.fileTableKeys)(resourcePath, 'createHashTable') ?? []) {
|
|
467
481
|
mergedCreateTable[key.slice(resourcePath.length + 1)] =
|
|
@@ -491,6 +505,7 @@ const transformSource = async (env) => {
|
|
|
491
505
|
keyframesHashTable: mergedKeyframesTable,
|
|
492
506
|
viewTransitionHashTable: mergedViewTransitionTable,
|
|
493
507
|
varTypeHashTable: mergedVarTypeTable,
|
|
508
|
+
positionTryHashTable: mergedPositionTryTable,
|
|
494
509
|
createThemeHashTable: mergedCreateThemeHashTable,
|
|
495
510
|
createThemeObjectTable: scannedTables.createThemeObjectTable,
|
|
496
511
|
createHashTable: mergedCreateTable,
|
|
@@ -626,7 +641,7 @@ const transformSource = async (env) => {
|
|
|
626
641
|
}
|
|
627
642
|
if (propName === 'create' &&
|
|
628
643
|
parser_1.t.isObjectExpression(init.arguments[0].expression)) {
|
|
629
|
-
const obj = (0, parser_1.objectExpressionToObject)(init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable);
|
|
644
|
+
const obj = (0, parser_1.objectExpressionToObject)(init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
630
645
|
(0, unresolvableValue_1.assertNoDroppedValues)(init.arguments[0].expression, obj, spreadValues([
|
|
631
646
|
mergedStaticTable,
|
|
632
647
|
mergedKeyframesTable,
|
|
@@ -638,6 +653,7 @@ const transformSource = async (env) => {
|
|
|
638
653
|
scannedTables.createStaticObjectTable,
|
|
639
654
|
undefined,
|
|
640
655
|
mergedVarTypeTable,
|
|
656
|
+
mergedPositionTryTable,
|
|
641
657
|
], localConstNodes, getSource));
|
|
642
658
|
if (obj) {
|
|
643
659
|
const hashMap = {};
|
|
@@ -686,9 +702,9 @@ const transformSource = async (env) => {
|
|
|
686
702
|
`Pass a string literal such as ".dark", or a name this file declares as one.`, selectorExpr);
|
|
687
703
|
}
|
|
688
704
|
if (selector.startsWith('@') && !(0, zss_engine_1.isAtRule)(selector)) {
|
|
689
|
-
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);
|
|
690
706
|
}
|
|
691
|
-
const obj = (0, parser_1.objectExpressionToObject)(init.arguments[1].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable);
|
|
707
|
+
const obj = (0, parser_1.objectExpressionToObject)(init.arguments[1].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
692
708
|
(0, unresolvableValue_1.assertNoDroppedValues)(init.arguments[1].expression, obj, spreadValues([
|
|
693
709
|
mergedStaticTable,
|
|
694
710
|
mergedKeyframesTable,
|
|
@@ -700,6 +716,7 @@ const transformSource = async (env) => {
|
|
|
700
716
|
scannedTables.createStaticObjectTable,
|
|
701
717
|
undefined,
|
|
702
718
|
mergedVarTypeTable,
|
|
719
|
+
mergedPositionTryTable,
|
|
703
720
|
], localConstNodes, getSource));
|
|
704
721
|
const hash = (0, createTheme_1.themeHashOf)(selector, obj);
|
|
705
722
|
if (parser_1.t.isIdentifier(node.id)) {
|
|
@@ -737,7 +754,7 @@ const transformSource = async (env) => {
|
|
|
737
754
|
parser_1.t.isIdentifier(node.id) &&
|
|
738
755
|
parser_1.t.isObjectExpression(init.arguments[0].expression)) {
|
|
739
756
|
const expr = init.arguments[0].expression;
|
|
740
|
-
const obj = (0, parser_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable);
|
|
757
|
+
const obj = (0, parser_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
741
758
|
(0, unresolvableValue_1.assertNoDroppedValues)(expr, obj, spreadValues([
|
|
742
759
|
mergedStaticTable,
|
|
743
760
|
mergedKeyframesTable,
|
|
@@ -749,6 +766,7 @@ const transformSource = async (env) => {
|
|
|
749
766
|
scannedTables.createStaticObjectTable,
|
|
750
767
|
undefined,
|
|
751
768
|
mergedVarTypeTable,
|
|
769
|
+
mergedPositionTryTable,
|
|
752
770
|
], localConstNodes, getSource));
|
|
753
771
|
let hash = '';
|
|
754
772
|
try {
|
|
@@ -770,7 +788,7 @@ const transformSource = async (env) => {
|
|
|
770
788
|
if (parser_1.t.isIdentifier(node.id)) {
|
|
771
789
|
idSpans.add(node.id.span.start);
|
|
772
790
|
}
|
|
773
|
-
const obj = (0, parser_1.objectExpressionToObject)(init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable);
|
|
791
|
+
const obj = (0, parser_1.objectExpressionToObject)(init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
774
792
|
(0, unresolvableValue_1.assertNoDroppedValues)(init.arguments[0].expression, obj, spreadValues([
|
|
775
793
|
mergedStaticTable,
|
|
776
794
|
mergedKeyframesTable,
|
|
@@ -782,6 +800,7 @@ const transformSource = async (env) => {
|
|
|
782
800
|
scannedTables.createStaticObjectTable,
|
|
783
801
|
undefined,
|
|
784
802
|
mergedVarTypeTable,
|
|
803
|
+
mergedPositionTryTable,
|
|
785
804
|
], localConstNodes, getSource));
|
|
786
805
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
787
806
|
if (parser_1.t.isIdentifier(node.id)) {
|
|
@@ -894,7 +913,7 @@ const transformSource = async (env) => {
|
|
|
894
913
|
if (propName === 'keyframes' && args.length > 0) {
|
|
895
914
|
const expr = args[0].expression;
|
|
896
915
|
if (parser_1.t.isObjectExpression(expr)) {
|
|
897
|
-
const obj = (0, parser_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable);
|
|
916
|
+
const obj = (0, parser_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
898
917
|
(0, unresolvableValue_1.assertNoDroppedValues)(expr, obj, spreadValues([
|
|
899
918
|
mergedStaticTable,
|
|
900
919
|
mergedKeyframesTable,
|
|
@@ -906,6 +925,7 @@ const transformSource = async (env) => {
|
|
|
906
925
|
scannedTables.createStaticObjectTable,
|
|
907
926
|
undefined,
|
|
908
927
|
mergedVarTypeTable,
|
|
928
|
+
mergedPositionTryTable,
|
|
909
929
|
], localConstNodes, getSource));
|
|
910
930
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
911
931
|
scannedTables.keyframesObjectTable[hash] = obj;
|
|
@@ -919,7 +939,7 @@ const transformSource = async (env) => {
|
|
|
919
939
|
else if (propName === 'viewTransition' &&
|
|
920
940
|
args.length > 0 &&
|
|
921
941
|
parser_1.t.isObjectExpression(args[0].expression)) {
|
|
922
|
-
const obj = (0, parser_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable);
|
|
942
|
+
const obj = (0, parser_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
923
943
|
(0, unresolvableValue_1.assertNoDroppedValues)(args[0].expression, obj, spreadValues([
|
|
924
944
|
mergedStaticTable,
|
|
925
945
|
mergedKeyframesTable,
|
|
@@ -931,6 +951,7 @@ const transformSource = async (env) => {
|
|
|
931
951
|
scannedTables.createStaticObjectTable,
|
|
932
952
|
undefined,
|
|
933
953
|
mergedVarTypeTable,
|
|
954
|
+
mergedPositionTryTable,
|
|
934
955
|
], localConstNodes, getSource));
|
|
935
956
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
936
957
|
scannedTables.viewTransitionObjectTable[hash] = obj;
|
|
@@ -940,6 +961,31 @@ const transformSource = async (env) => {
|
|
|
940
961
|
content: JSON.stringify(`vt-${hash}`),
|
|
941
962
|
});
|
|
942
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
|
+
}
|
|
943
989
|
else if (propName === 'createTheme' &&
|
|
944
990
|
args.length >= 2 &&
|
|
945
991
|
parser_1.t.isObjectExpression(args[1].expression)) {
|
|
@@ -950,9 +996,9 @@ const transformSource = async (env) => {
|
|
|
950
996
|
`Pass a string literal such as ".dark", or a name this file declares as one.`, selectorExpr);
|
|
951
997
|
}
|
|
952
998
|
if (selector.startsWith('@') && !(0, zss_engine_1.isAtRule)(selector)) {
|
|
953
|
-
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);
|
|
954
1000
|
}
|
|
955
|
-
const obj = (0, parser_1.objectExpressionToObject)(args[1].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable);
|
|
1001
|
+
const obj = (0, parser_1.objectExpressionToObject)(args[1].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
956
1002
|
(0, unresolvableValue_1.assertNoDroppedValues)(args[1].expression, obj, spreadValues([
|
|
957
1003
|
mergedStaticTable,
|
|
958
1004
|
mergedKeyframesTable,
|
|
@@ -964,6 +1010,7 @@ const transformSource = async (env) => {
|
|
|
964
1010
|
scannedTables.createStaticObjectTable,
|
|
965
1011
|
undefined,
|
|
966
1012
|
mergedVarTypeTable,
|
|
1013
|
+
mergedPositionTryTable,
|
|
967
1014
|
], localConstNodes, getSource));
|
|
968
1015
|
const hash = (0, createTheme_1.themeHashOf)(selector, obj);
|
|
969
1016
|
scannedTables.createThemeObjectTable[hash] = obj;
|
|
@@ -974,7 +1021,7 @@ const transformSource = async (env) => {
|
|
|
974
1021
|
else if (propName === 'createStatic' &&
|
|
975
1022
|
args.length > 0 &&
|
|
976
1023
|
parser_1.t.isObjectExpression(args[0].expression)) {
|
|
977
|
-
const obj = (0, parser_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable);
|
|
1024
|
+
const obj = (0, parser_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
978
1025
|
(0, unresolvableValue_1.assertNoDroppedValues)(args[0].expression, obj, spreadValues([
|
|
979
1026
|
mergedStaticTable,
|
|
980
1027
|
mergedKeyframesTable,
|
|
@@ -986,6 +1033,7 @@ const transformSource = async (env) => {
|
|
|
986
1033
|
scannedTables.createStaticObjectTable,
|
|
987
1034
|
undefined,
|
|
988
1035
|
mergedVarTypeTable,
|
|
1036
|
+
mergedPositionTryTable,
|
|
989
1037
|
], localConstNodes, getSource));
|
|
990
1038
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
991
1039
|
scannedTables.createStaticObjectTable[hash] = obj;
|
|
@@ -993,7 +1041,7 @@ const transformSource = async (env) => {
|
|
|
993
1041
|
else if (propName === 'create' &&
|
|
994
1042
|
args.length > 0 &&
|
|
995
1043
|
parser_1.t.isObjectExpression(args[0].expression)) {
|
|
996
|
-
const obj = (0, parser_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable);
|
|
1044
|
+
const obj = (0, parser_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
997
1045
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
998
1046
|
scannedTables.createObjectTable[hash] = obj;
|
|
999
1047
|
}
|
|
@@ -1093,7 +1141,7 @@ const transformSource = async (env) => {
|
|
|
1093
1141
|
return merged;
|
|
1094
1142
|
}
|
|
1095
1143
|
if (parser_1.t.isObjectExpression(expr)) {
|
|
1096
|
-
return (0, parser_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable);
|
|
1144
|
+
return (0, parser_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
1097
1145
|
}
|
|
1098
1146
|
else if (parser_1.t.isMemberExpression(expr) &&
|
|
1099
1147
|
parser_1.t.isIdentifier(expr.object) &&
|
|
@@ -1192,7 +1240,7 @@ const transformSource = async (env) => {
|
|
|
1192
1240
|
properties: argExpr.properties.filter((prop) => prop.type === 'Identifier' ||
|
|
1193
1241
|
(prop.type === 'KeyValueProperty' &&
|
|
1194
1242
|
isStaticArgValue(prop.value))),
|
|
1195
|
-
}, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable);
|
|
1243
|
+
}, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, undefined, mergedVarTypeTable, mergedPositionTryTable);
|
|
1196
1244
|
if (func.named) {
|
|
1197
1245
|
const argExpr = callArgs[0]?.expression;
|
|
1198
1246
|
if (callArgs.length > 1 ||
|
package/dist/types.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export type KeyframesHashTable = Record<string, string>;
|
|
|
10
10
|
export type KeyframesObjectTable = Record<string, CSSObject>;
|
|
11
11
|
export type ViewTransitionHashTable = Record<string, string>;
|
|
12
12
|
export type VarTypeHashTable = Record<string, string>;
|
|
13
|
+
export type PositionTryHashTable = Record<string, string>;
|
|
13
14
|
export type ViewTransitionObjectTable = Record<string, CSSObject>;
|
|
14
15
|
export type CreateThemeObjectTable = Record<string, CSSObject>;
|
|
15
16
|
export type CreateHashTable = Record<string, string>;
|
|
@@ -41,6 +42,8 @@ export interface Tables {
|
|
|
41
42
|
viewTransitionObjectTable: ViewTransitionObjectTable;
|
|
42
43
|
varTypeHashTable?: VarTypeHashTable;
|
|
43
44
|
varTypeObjectTable?: Record<string, CSSObject>;
|
|
45
|
+
positionTryHashTable?: PositionTryHashTable;
|
|
46
|
+
positionTryObjectTable?: Record<string, CSSObject>;
|
|
44
47
|
createThemeHashTable: CreateThemeHashTable;
|
|
45
48
|
createThemeSelectorTable: CreateThemeSelectorTable;
|
|
46
49
|
createThemeObjectTable: CreateThemeObjectTable;
|
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",
|