@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 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, @supports, @layer, and @scope. (${path.basename(resourcePath)})`);
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, @supports, @layer, and @scope. (${path.basename(resourcePath)})`);
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}`;
@@ -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;
@@ -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-') || val.includes('vt-') || val.includes('cr-')) {
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];
@@ -0,0 +1,4 @@
1
+ import type { CSSProperties } from 'zss-engine';
2
+ export declare const createPositionTry: (rule: CSSProperties, hash: string) => {
3
+ [x: string]: CSSProperties;
4
+ };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPositionTry = void 0;
4
+ const createPositionTry = (rule, hash) => ({
5
+ [`@position-try --pt-${hash}`]: rule,
6
+ });
7
+ exports.createPositionTry = createPositionTry;
@@ -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, @supports, @layer, and @scope.`, selectorExpr);
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, @supports, @layer, and @scope.`, selectorExpr);
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": "19.15.0",
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": "2.10.0"
27
+ "zss-engine": "3.0.1"
28
28
  },
29
29
  "publishConfig": {
30
30
  "access": "public",