@plumeria/utils 18.3.3 → 18.3.5

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.
@@ -1,7 +1,8 @@
1
1
  import type { CreateTheme } from './types';
2
- declare const createTheme: <const T extends CreateTheme>(themeSelector: string, rule: T) => {
2
+ declare const themeHashOf: (themeSelector: string, rule: Record<string, unknown>) => string;
3
+ declare const createTheme: <const T extends CreateTheme>(themeSelector: string, rule: T, themeHash: string) => {
3
4
  ':where(:root)': {
4
5
  [x: string]: string | Record<string, string>;
5
6
  };
6
7
  };
7
- export { createTheme };
8
+ export { createTheme, themeHashOf };
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createTheme = void 0;
3
+ exports.themeHashOf = exports.createTheme = void 0;
4
4
  const zss_engine_1 = require("zss-engine");
5
- const createTheme = (themeSelector, rule) => {
5
+ const themeHashOf = (themeSelector, rule) => (0, zss_engine_1.genBase36Hash)({ _themeSelector: themeSelector, ...rule }, 1, 8);
6
+ exports.themeHashOf = themeHashOf;
7
+ const createTheme = (themeSelector, rule, themeHash) => {
6
8
  const rootTarget = {};
7
9
  const themeTarget = {};
8
10
  for (const key in rule) {
9
11
  const valueObj = rule[key];
10
- const hash = (0, zss_engine_1.genBase36Hash)({ [key]: valueObj }, 1, 8);
12
+ const hash = (0, zss_engine_1.genBase36Hash)({ _theme: themeHash, [key]: valueObj }, 1, 8);
11
13
  const cssVarName = `--${hash}-${(0, zss_engine_1.camelToKebabCase)(key)}`;
12
14
  rootTarget[cssVarName] = valueObj.default;
13
15
  themeTarget[cssVarName] = valueObj.theme;
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  export type { CSSObject, StaticTable, KeyframesHashTable, ViewTransitionHashTable, CreateHashTable, CreateFunctionTable, VariantsHashTable, CreateThemeHashTable, CreateStaticHashTable, } from './types';
2
- export { objectExpressionToObject, collectLocalConsts, traverse, t, getRootIdentifier, extractOndemandStyles, deepMerge, scanAll, getFileDependencies, resolveExport, resolveComponentKey, } from './parser';
2
+ export { objectExpressionToObject, collectLocalConsts, traverse, t, getRootIdentifier, extractOndemandStyles, deepMerge, scanAll, getFileDependencies, resolveExport, resolveComponentKey, resolveThemeSelector, } from './parser';
3
3
  export type { StyleRecord } from './create';
4
4
  export { getStyleRecords } from './create';
5
5
  export type { Specificity } from 'zss-engine';
6
6
  export { getSpecificity, getPseudoElement } from 'zss-engine';
7
7
  export type { StyleSource } from './escalation';
8
8
  export { getStateWeights } from './escalation';
9
- export { createTheme } from './createTheme';
9
+ export { themeHashOf } from './createTheme';
10
10
  export { resolveImportPath } from './resolver';
11
11
  export { optimizer } from './optimizer';
12
12
  export { processVariants } from './variants';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_STYLE_PROP = exports.timedAsync = exports.timed = exports.tally = exports.measure = exports.mark = exports.profiling = exports.collectReferenceIdentifiers = exports.getLeadingCommentLength = exports.processVariants = exports.optimizer = exports.resolveImportPath = exports.createTheme = exports.getStateWeights = exports.getPseudoElement = exports.getSpecificity = exports.getStyleRecords = exports.resolveComponentKey = exports.resolveExport = exports.getFileDependencies = exports.scanAll = exports.deepMerge = exports.extractOndemandStyles = exports.getRootIdentifier = exports.t = exports.traverse = exports.collectLocalConsts = exports.objectExpressionToObject = void 0;
3
+ exports.DEFAULT_STYLE_PROP = exports.timedAsync = exports.timed = exports.tally = exports.measure = exports.mark = exports.profiling = exports.collectReferenceIdentifiers = exports.getLeadingCommentLength = exports.processVariants = exports.optimizer = exports.resolveImportPath = exports.themeHashOf = exports.getStateWeights = exports.getPseudoElement = exports.getSpecificity = exports.getStyleRecords = exports.resolveThemeSelector = exports.resolveComponentKey = exports.resolveExport = exports.getFileDependencies = exports.scanAll = exports.deepMerge = exports.extractOndemandStyles = exports.getRootIdentifier = exports.t = exports.traverse = exports.collectLocalConsts = exports.objectExpressionToObject = void 0;
4
4
  var parser_1 = require("./parser");
5
5
  Object.defineProperty(exports, "objectExpressionToObject", { enumerable: true, get: function () { return parser_1.objectExpressionToObject; } });
6
6
  Object.defineProperty(exports, "collectLocalConsts", { enumerable: true, get: function () { return parser_1.collectLocalConsts; } });
@@ -13,6 +13,7 @@ Object.defineProperty(exports, "scanAll", { enumerable: true, get: function () {
13
13
  Object.defineProperty(exports, "getFileDependencies", { enumerable: true, get: function () { return parser_1.getFileDependencies; } });
14
14
  Object.defineProperty(exports, "resolveExport", { enumerable: true, get: function () { return parser_1.resolveExport; } });
15
15
  Object.defineProperty(exports, "resolveComponentKey", { enumerable: true, get: function () { return parser_1.resolveComponentKey; } });
16
+ Object.defineProperty(exports, "resolveThemeSelector", { enumerable: true, get: function () { return parser_1.resolveThemeSelector; } });
16
17
  var create_1 = require("./create");
17
18
  Object.defineProperty(exports, "getStyleRecords", { enumerable: true, get: function () { return create_1.getStyleRecords; } });
18
19
  var zss_engine_1 = require("zss-engine");
@@ -21,7 +22,7 @@ Object.defineProperty(exports, "getPseudoElement", { enumerable: true, get: func
21
22
  var escalation_1 = require("./escalation");
22
23
  Object.defineProperty(exports, "getStateWeights", { enumerable: true, get: function () { return escalation_1.getStateWeights; } });
23
24
  var createTheme_1 = require("./createTheme");
24
- Object.defineProperty(exports, "createTheme", { enumerable: true, get: function () { return createTheme_1.createTheme; } });
25
+ Object.defineProperty(exports, "themeHashOf", { enumerable: true, get: function () { return createTheme_1.themeHashOf; } });
25
26
  var resolver_1 = require("./resolver");
26
27
  Object.defineProperty(exports, "resolveImportPath", { enumerable: true, get: function () { return resolver_1.resolveImportPath; } });
27
28
  var optimizer_1 = require("./optimizer");
package/dist/parser.d.ts CHANGED
@@ -36,6 +36,7 @@ export declare function traverse(node: Module | JSXExpression, visitor: {
36
36
  }): void;
37
37
  export declare function objectExpressionToObject(node: ObjectExpression, staticTable: StaticTable, keyframesHashTable: KeyframesHashTable, viewTransitionHashTable: ViewTransitionHashTable, createThemeHashTable: CreateThemeHashTable, createThemeObjectTable: CreateThemeObjectTable, createHashTable: CreateHashTable, createStaticHashTable: CreateStaticHashTable, createStaticObjectTable: CreateStaticObjectTable, variantsHashTable: VariantsHashTable, resolveVariable?: (name: string) => any): CSSObject;
38
38
  export declare function collectLocalConsts(ast: Module): Record<string, any>;
39
+ export declare function resolveThemeSelector(node: Expression, staticTable: StaticTable, createStaticHashTable: CreateStaticHashTable, createStaticObjectTable: CreateStaticObjectTable): string;
39
40
  export declare function scanAll(): Tables;
40
41
  export declare function getFileDependencies(filePath: string): string[];
41
42
  export declare function resolveExport(filePath: string, exportName: string, visited?: Set<string>): {
package/dist/parser.js CHANGED
@@ -38,6 +38,7 @@ exports.resolveComponentKey = resolveComponentKey;
38
38
  exports.traverse = traverse;
39
39
  exports.objectExpressionToObject = objectExpressionToObject;
40
40
  exports.collectLocalConsts = collectLocalConsts;
41
+ exports.resolveThemeSelector = resolveThemeSelector;
41
42
  exports.scanAll = scanAll;
42
43
  exports.getFileDependencies = getFileDependencies;
43
44
  exports.resolveExport = resolveExport;
@@ -851,7 +852,7 @@ function resolveCreateThemeTableMemberExpressionByNode(node, createThemeHashTabl
851
852
  }
852
853
  if (key && themeObj[key] !== undefined) {
853
854
  const value = themeObj[key];
854
- const atomicHash = (0, zss_engine_1.genBase36Hash)({ [key]: value }, 1, 8);
855
+ const atomicHash = (0, zss_engine_1.genBase36Hash)({ _theme: hash, [key]: value }, 1, 8);
855
856
  const cssVarName = (0, zss_engine_1.camelToKebabCase)(key);
856
857
  return `var(--${atomicHash}-${cssVarName})`;
857
858
  }
@@ -883,6 +884,15 @@ function resolveCreateStaticTableMemberExpression(node, createStaticHashTable, c
883
884
  }
884
885
  return undefined;
885
886
  }
887
+ function resolveThemeSelector(node, staticTable, createStaticHashTable, createStaticObjectTable) {
888
+ try {
889
+ const value = evaluateExpression(node, staticTable, {}, {}, {}, {}, createStaticHashTable, createStaticObjectTable);
890
+ return typeof value === 'string' ? value : '';
891
+ }
892
+ catch {
893
+ return '';
894
+ }
895
+ }
886
896
  const fileCache = {};
887
897
  const dependentsMap = new Map();
888
898
  let knownFiles = new Set();
@@ -1342,12 +1352,8 @@ function scanAll() {
1342
1352
  registerObjectOwner('viewTransitionObjectTable', hash, filePath);
1343
1353
  }
1344
1354
  else if (method === 'createTheme') {
1345
- let selector = '';
1346
- const selectorExpr = init.arguments[0].expression;
1347
- if (exports.t.isStringLiteral(selectorExpr)) {
1348
- selector = selectorExpr.value;
1349
- }
1350
- const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
1355
+ const selector = resolveThemeSelector(init.arguments[0].expression, scopedStaticTable, localCreateStaticHashTable, localCreateStaticObjectTable);
1356
+ const hash = (0, createTheme_1.themeHashOf)(selector, obj);
1351
1357
  localTables.createThemeObjectTable[hash] = obj;
1352
1358
  localCreateThemeObjectTable[hash] = obj;
1353
1359
  registerObjectOwner('createThemeObjectTable', hash, filePath);
@@ -1358,7 +1364,7 @@ function scanAll() {
1358
1364
  registerObjectOwner('createThemeSelectorTable', hash, filePath);
1359
1365
  const hashMap = {};
1360
1366
  for (const [key, value] of Object.entries(obj)) {
1361
- const atomicHash = (0, zss_engine_1.genBase36Hash)({ [key]: value }, 1, 8);
1367
+ const atomicHash = (0, zss_engine_1.genBase36Hash)({ _theme: hash, [key]: value }, 1, 8);
1362
1368
  const cssVarName = (0, zss_engine_1.camelToKebabCase)(key);
1363
1369
  hashMap[key] = `var(--${atomicHash}-${cssVarName})`;
1364
1370
  }
@@ -1936,12 +1942,10 @@ function extractOndemandStyles(obj, extractedSheets, t) {
1936
1942
  if (definition && typeof definition === 'object' && selector) {
1937
1943
  Object.keys(definition).forEach((key) => {
1938
1944
  const value = definition[key];
1939
- const atomicHash = (0, zss_engine_1.genBase36Hash)({ [key]: value }, 1, 8);
1945
+ const atomicHash = (0, zss_engine_1.genBase36Hash)({ _theme: hash, [key]: value }, 1, 8);
1940
1946
  const varName = `--${atomicHash}-${(0, zss_engine_1.camelToKebabCase)(key)}`;
1941
1947
  if (usedVariables.has(varName)) {
1942
- const styles = (0, createTheme_1.createTheme)(selector, {
1943
- [key]: value,
1944
- });
1948
+ const styles = (0, createTheme_1.createTheme)(selector, { [key]: value }, hash);
1945
1949
  const { styleSheet } = (0, zss_engine_1.transpile)(styles, undefined, '--global');
1946
1950
  addSheet(styleSheet);
1947
1951
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plumeria/utils",
3
- "version": "18.3.3",
3
+ "version": "18.3.5",
4
4
  "description": "Internal helpers shared by the Plumeria compiler and bundler plugins.",
5
5
  "author": "Refirst 11",
6
6
  "license": "MIT",