@plumeria/utils 1.0.4 → 2.0.1
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/index.d.ts +2 -2
- package/dist/index.js +4 -4
- package/dist/parser.d.ts +6 -6
- package/dist/parser.js +59 -60
- package/dist/transform.d.ts +3 -3
- package/dist/transform.js +63 -47
- package/dist/types.d.ts +7 -7
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export type { CSSObject, FileStyles } from './types';
|
|
2
|
-
export { createCSS, createVars,
|
|
3
|
-
export {
|
|
2
|
+
export { createCSS, createVars, createTheme } from './transform';
|
|
3
|
+
export { scanForCreateStatic, scanForCreateTheme, scanForKeyframes, scanForViewTransition, objectExpressionToObject, collectLocalConsts, traverse, t, tables, } from './parser';
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.tables = exports.t = exports.traverse = exports.collectLocalConsts = exports.objectExpressionToObject = exports.scanForViewTransition = exports.scanForKeyframes = exports.
|
|
3
|
+
exports.tables = exports.t = exports.traverse = exports.collectLocalConsts = exports.objectExpressionToObject = exports.scanForViewTransition = exports.scanForKeyframes = exports.scanForCreateTheme = exports.scanForCreateStatic = exports.createTheme = exports.createVars = exports.createCSS = void 0;
|
|
4
4
|
var transform_1 = require("./transform");
|
|
5
5
|
Object.defineProperty(exports, "createCSS", { enumerable: true, get: function () { return transform_1.createCSS; } });
|
|
6
6
|
Object.defineProperty(exports, "createVars", { enumerable: true, get: function () { return transform_1.createVars; } });
|
|
7
|
-
Object.defineProperty(exports, "
|
|
7
|
+
Object.defineProperty(exports, "createTheme", { enumerable: true, get: function () { return transform_1.createTheme; } });
|
|
8
8
|
var parser_1 = require("./parser");
|
|
9
|
-
Object.defineProperty(exports, "
|
|
10
|
-
Object.defineProperty(exports, "
|
|
9
|
+
Object.defineProperty(exports, "scanForCreateStatic", { enumerable: true, get: function () { return parser_1.scanForCreateStatic; } });
|
|
10
|
+
Object.defineProperty(exports, "scanForCreateTheme", { enumerable: true, get: function () { return parser_1.scanForCreateTheme; } });
|
|
11
11
|
Object.defineProperty(exports, "scanForKeyframes", { enumerable: true, get: function () { return parser_1.scanForKeyframes; } });
|
|
12
12
|
Object.defineProperty(exports, "scanForViewTransition", { enumerable: true, get: function () { return parser_1.scanForViewTransition; } });
|
|
13
13
|
Object.defineProperty(exports, "objectExpressionToObject", { enumerable: true, get: function () { return parser_1.objectExpressionToObject; } });
|
package/dist/parser.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CSSObject,
|
|
1
|
+
import type { CSSObject, StaticTable, KeyframesHashTable, KeyframesObjectTable, ThemeTable, ViewTransitionObjectTable, ViewTransitionHashTable, Tables } from './types';
|
|
2
2
|
import { Module, CallExpression, Identifier, KeyValueProperty, StringLiteral, NumericLiteral, BooleanLiteral, ObjectExpression, MemberExpression, TemplateLiteral, BinaryExpression, UnaryExpression, VariableDeclaration, VariableDeclarator, ExportDeclaration } from '@swc/core';
|
|
3
3
|
export declare const t: {
|
|
4
4
|
isObjectExpression: (node: any) => node is ObjectExpression;
|
|
@@ -26,7 +26,7 @@ export declare function traverse(node: Module, visitor: {
|
|
|
26
26
|
}) => void;
|
|
27
27
|
}): void;
|
|
28
28
|
export declare const tables: Tables;
|
|
29
|
-
export declare function objectExpressionToObject(node: ObjectExpression,
|
|
29
|
+
export declare function objectExpressionToObject(node: ObjectExpression, staticTable: StaticTable, keyframesHashTable: KeyframesHashTable, viewTransitionHashTable: ViewTransitionHashTable, themeTable: ThemeTable): CSSObject;
|
|
30
30
|
export declare function collectLocalConsts(ast: Module): Record<string, any>;
|
|
31
31
|
export declare function scanForKeyframes(addDependency: (path: string) => void): {
|
|
32
32
|
keyframesHashTableLocal: KeyframesHashTable;
|
|
@@ -36,8 +36,8 @@ export declare function scanForViewTransition(addDependency: (path: string) => v
|
|
|
36
36
|
viewTransitionHashTableLocal: ViewTransitionHashTable;
|
|
37
37
|
viewTransitionObjectTableLocal: ViewTransitionObjectTable;
|
|
38
38
|
};
|
|
39
|
-
export declare function
|
|
40
|
-
export declare function
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
export declare function scanForCreateStatic(addDependency: (path: string) => void): StaticTable;
|
|
40
|
+
export declare function scanForCreateTheme(addDependency: (path: string) => void): {
|
|
41
|
+
themeTableLocal: Record<string, Record<string, any>>;
|
|
42
|
+
createThemeObjectTableLocal: Record<string, any>;
|
|
43
43
|
};
|
package/dist/parser.js
CHANGED
|
@@ -9,8 +9,8 @@ exports.objectExpressionToObject = objectExpressionToObject;
|
|
|
9
9
|
exports.collectLocalConsts = collectLocalConsts;
|
|
10
10
|
exports.scanForKeyframes = scanForKeyframes;
|
|
11
11
|
exports.scanForViewTransition = scanForViewTransition;
|
|
12
|
-
exports.
|
|
13
|
-
exports.
|
|
12
|
+
exports.scanForCreateStatic = scanForCreateStatic;
|
|
13
|
+
exports.scanForCreateTheme = scanForCreateTheme;
|
|
14
14
|
const core_1 = require("@swc/core");
|
|
15
15
|
const path_1 = __importDefault(require("path"));
|
|
16
16
|
const fs_1 = __importDefault(require("fs"));
|
|
@@ -74,20 +74,20 @@ const GLOB_OPTIONS = {
|
|
|
74
74
|
cwd: PROJECT_ROOT,
|
|
75
75
|
};
|
|
76
76
|
exports.tables = {
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
staticTable: {},
|
|
78
|
+
themeTable: {},
|
|
79
79
|
keyframesHashTable: {},
|
|
80
80
|
keyframesObjectTable: {},
|
|
81
81
|
viewTransitionHashTable: {},
|
|
82
82
|
viewTransitionObjectTable: {},
|
|
83
|
-
|
|
83
|
+
createThemeObjectTable: {},
|
|
84
84
|
};
|
|
85
|
-
function objectExpressionToObject(node,
|
|
85
|
+
function objectExpressionToObject(node, staticTable, keyframesHashTable, viewTransitionHashTable, themeTable) {
|
|
86
86
|
const obj = {};
|
|
87
87
|
node.properties.forEach((prop) => {
|
|
88
88
|
if (!exports.t.isObjectProperty(prop))
|
|
89
89
|
return;
|
|
90
|
-
const key = getPropertyKey(prop.key,
|
|
90
|
+
const key = getPropertyKey(prop.key, staticTable);
|
|
91
91
|
if (!key)
|
|
92
92
|
return;
|
|
93
93
|
const val = prop.value;
|
|
@@ -102,7 +102,7 @@ function objectExpressionToObject(node, constTable, keyframesHashTable, viewTran
|
|
|
102
102
|
obj[key] = 'vt-' + resolvedViewTransitioin;
|
|
103
103
|
return;
|
|
104
104
|
}
|
|
105
|
-
const resolvedTheme =
|
|
105
|
+
const resolvedTheme = resolveThemeTableMemberExpressionByNode(val, themeTable);
|
|
106
106
|
if (resolvedTheme !== undefined) {
|
|
107
107
|
obj[key] = resolvedTheme;
|
|
108
108
|
return;
|
|
@@ -117,15 +117,15 @@ function objectExpressionToObject(node, constTable, keyframesHashTable, viewTran
|
|
|
117
117
|
obj[key] = evaluateUnaryExpression(val);
|
|
118
118
|
}
|
|
119
119
|
else if (exports.t.isObjectExpression(val)) {
|
|
120
|
-
obj[key] = objectExpressionToObject(val,
|
|
120
|
+
obj[key] = objectExpressionToObject(val, staticTable, keyframesHashTable, viewTransitionHashTable, themeTable);
|
|
121
121
|
}
|
|
122
122
|
else if (exports.t.isMemberExpression(val)) {
|
|
123
|
-
const resolved =
|
|
123
|
+
const resolved = resolveStaticTableMemberExpression(val, staticTable);
|
|
124
124
|
obj[key] = resolved !== undefined ? resolved : '[unresolved]';
|
|
125
125
|
}
|
|
126
126
|
else if (exports.t.isIdentifier(val)) {
|
|
127
|
-
if (
|
|
128
|
-
obj[key] =
|
|
127
|
+
if (staticTable[val.value] !== undefined) {
|
|
128
|
+
obj[key] = staticTable[val.value];
|
|
129
129
|
}
|
|
130
130
|
else {
|
|
131
131
|
obj[key] = '[unresolved identifier]';
|
|
@@ -146,17 +146,18 @@ function collectLocalConsts(ast) {
|
|
|
146
146
|
localConsts[node.id.value] = node.init.value;
|
|
147
147
|
}
|
|
148
148
|
else if (exports.t.isObjectExpression(node.init)) {
|
|
149
|
-
localConsts[node.id.value] = objectExpressionToObject(node.init, localConsts, exports.tables.keyframesHashTable, exports.tables.viewTransitionHashTable, exports.tables.
|
|
149
|
+
localConsts[node.id.value] = objectExpressionToObject(node.init, localConsts, exports.tables.keyframesHashTable, exports.tables.viewTransitionHashTable, exports.tables.themeTable);
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
},
|
|
153
153
|
});
|
|
154
154
|
return localConsts;
|
|
155
155
|
}
|
|
156
|
-
function getPropertyKey(node,
|
|
156
|
+
function getPropertyKey(node, staticTable) {
|
|
157
157
|
if (exports.t.isIdentifier(node)) {
|
|
158
|
-
if (
|
|
159
|
-
|
|
158
|
+
if (staticTable[node.value] &&
|
|
159
|
+
typeof staticTable[node.value] === 'string') {
|
|
160
|
+
return staticTable[node.value];
|
|
160
161
|
}
|
|
161
162
|
return node.value;
|
|
162
163
|
}
|
|
@@ -169,53 +170,53 @@ function getPropertyKey(node, constTable) {
|
|
|
169
170
|
return expr.value;
|
|
170
171
|
}
|
|
171
172
|
if (exports.t.isIdentifier(expr)) {
|
|
172
|
-
if (
|
|
173
|
-
typeof
|
|
174
|
-
return
|
|
173
|
+
if (staticTable[expr.value] &&
|
|
174
|
+
typeof staticTable[expr.value] === 'string') {
|
|
175
|
+
return staticTable[expr.value];
|
|
175
176
|
}
|
|
176
177
|
}
|
|
177
178
|
if (exports.t.isMemberExpression(expr)) {
|
|
178
|
-
const result =
|
|
179
|
+
const result = resolveStaticTableMemberExpression(expr, staticTable);
|
|
179
180
|
if (typeof result === 'string')
|
|
180
181
|
return result;
|
|
181
182
|
}
|
|
182
183
|
if (exports.t.isTemplateLiteral(expr)) {
|
|
183
|
-
return evaluateTemplateLiteral(expr,
|
|
184
|
+
return evaluateTemplateLiteral(expr, staticTable);
|
|
184
185
|
}
|
|
185
186
|
if (exports.t.isBinaryExpression(expr)) {
|
|
186
|
-
return evaluateBinaryExpression(expr,
|
|
187
|
+
return evaluateBinaryExpression(expr, staticTable);
|
|
187
188
|
}
|
|
188
189
|
return '';
|
|
189
190
|
}
|
|
190
191
|
if (exports.t.isTemplateLiteral(node)) {
|
|
191
|
-
return evaluateTemplateLiteral(node,
|
|
192
|
+
return evaluateTemplateLiteral(node, staticTable);
|
|
192
193
|
}
|
|
193
194
|
if (exports.t.isBinaryExpression(node)) {
|
|
194
|
-
return evaluateBinaryExpression(node,
|
|
195
|
+
return evaluateBinaryExpression(node, staticTable);
|
|
195
196
|
}
|
|
196
197
|
return '';
|
|
197
198
|
}
|
|
198
|
-
function evaluateTemplateLiteral(node,
|
|
199
|
+
function evaluateTemplateLiteral(node, staticTable) {
|
|
199
200
|
let result = '';
|
|
200
201
|
for (let i = 0; i < node.quasis.length; i++) {
|
|
201
202
|
result += node.quasis[i].cooked || node.quasis[i].raw;
|
|
202
203
|
if (i < node.expressions.length) {
|
|
203
204
|
const expr = node.expressions[i];
|
|
204
|
-
const evaluatedExpr = evaluateExpression(expr,
|
|
205
|
+
const evaluatedExpr = evaluateExpression(expr, staticTable);
|
|
205
206
|
result += String(evaluatedExpr);
|
|
206
207
|
}
|
|
207
208
|
}
|
|
208
209
|
return result;
|
|
209
210
|
}
|
|
210
|
-
function evaluateBinaryExpression(node,
|
|
211
|
-
const left = evaluateExpression(node.left,
|
|
212
|
-
const right = evaluateExpression(node.right,
|
|
211
|
+
function evaluateBinaryExpression(node, staticTable) {
|
|
212
|
+
const left = evaluateExpression(node.left, staticTable);
|
|
213
|
+
const right = evaluateExpression(node.right, staticTable);
|
|
213
214
|
if (node.operator === '+') {
|
|
214
215
|
return String(left) + String(right);
|
|
215
216
|
}
|
|
216
217
|
throw new Error(`Unsupported binary operator: ${node.operator}`);
|
|
217
218
|
}
|
|
218
|
-
function evaluateExpression(node,
|
|
219
|
+
function evaluateExpression(node, staticTable) {
|
|
219
220
|
if (exports.t.isStringLiteral(node)) {
|
|
220
221
|
return node.value;
|
|
221
222
|
}
|
|
@@ -229,8 +230,8 @@ function evaluateExpression(node, constTable) {
|
|
|
229
230
|
return null;
|
|
230
231
|
}
|
|
231
232
|
if (exports.t.isIdentifier(node)) {
|
|
232
|
-
if (
|
|
233
|
-
return
|
|
233
|
+
if (staticTable[node.value] !== undefined) {
|
|
234
|
+
return staticTable[node.value];
|
|
234
235
|
}
|
|
235
236
|
if (exports.tables.keyframesHashTable[node.value] !== undefined) {
|
|
236
237
|
return exports.tables.keyframesHashTable[node.value];
|
|
@@ -241,21 +242,21 @@ function evaluateExpression(node, constTable) {
|
|
|
241
242
|
return `[unresolved: ${node.value}]`;
|
|
242
243
|
}
|
|
243
244
|
if (exports.t.isMemberExpression(node)) {
|
|
244
|
-
const resolved =
|
|
245
|
+
const resolved = resolveStaticTableMemberExpression(node, staticTable);
|
|
245
246
|
if (resolved !== undefined) {
|
|
246
247
|
return resolved;
|
|
247
248
|
}
|
|
248
|
-
const resolvedTheme =
|
|
249
|
+
const resolvedTheme = resolveThemeTableMemberExpressionByNode(node, exports.tables.themeTable);
|
|
249
250
|
if (resolvedTheme !== undefined) {
|
|
250
251
|
return resolvedTheme;
|
|
251
252
|
}
|
|
252
253
|
return `[unresolved member expression]`;
|
|
253
254
|
}
|
|
254
255
|
if (exports.t.isBinaryExpression(node)) {
|
|
255
|
-
return evaluateBinaryExpression(node,
|
|
256
|
+
return evaluateBinaryExpression(node, staticTable);
|
|
256
257
|
}
|
|
257
258
|
if (exports.t.isTemplateLiteral(node)) {
|
|
258
|
-
return evaluateTemplateLiteral(node,
|
|
259
|
+
return evaluateTemplateLiteral(node, staticTable);
|
|
259
260
|
}
|
|
260
261
|
if (exports.t.isUnaryExpression(node)) {
|
|
261
262
|
return evaluateUnaryExpression(node);
|
|
@@ -298,18 +299,18 @@ function resolveViewTransitionTableMemberExpression(node, viewTransitionHashTabl
|
|
|
298
299
|
}
|
|
299
300
|
}
|
|
300
301
|
}
|
|
301
|
-
function
|
|
302
|
+
function resolveStaticTableMemberExpression(node, staticTable) {
|
|
302
303
|
if (exports.t.isIdentifier(node.object) && exports.t.isIdentifier(node.property)) {
|
|
303
304
|
const varName = node.object.value;
|
|
304
305
|
const key = node.property.value;
|
|
305
|
-
const tableValue =
|
|
306
|
+
const tableValue = staticTable[varName];
|
|
306
307
|
if (tableValue && typeof tableValue === 'object' && key in tableValue) {
|
|
307
308
|
return tableValue[key];
|
|
308
309
|
}
|
|
309
310
|
}
|
|
310
311
|
return undefined;
|
|
311
312
|
}
|
|
312
|
-
function
|
|
313
|
+
function resolveThemeTableMemberExpressionByNode(node, themeTable) {
|
|
313
314
|
if (exports.t.isMemberExpression(node) && exports.t.isIdentifier(node.object)) {
|
|
314
315
|
const varName = node.object.value;
|
|
315
316
|
let key;
|
|
@@ -320,9 +321,7 @@ function resolveTokensTableMemberExpressionByNode(node, tokensTable) {
|
|
|
320
321
|
exports.t.isStringLiteral(node.property.expression)) {
|
|
321
322
|
key = node.property.expression.value;
|
|
322
323
|
}
|
|
323
|
-
if (key &&
|
|
324
|
-
tokensTable[varName] &&
|
|
325
|
-
tokensTable[varName][key] !== undefined) {
|
|
324
|
+
if (key && themeTable[varName] && themeTable[varName][key] !== undefined) {
|
|
326
325
|
const cssVarName = (0, zss_engine_1.camelToKebabCase)(key);
|
|
327
326
|
return `var(--${cssVarName})`;
|
|
328
327
|
}
|
|
@@ -363,7 +362,7 @@ function scanForKeyframes(addDependency) {
|
|
|
363
362
|
decl.init.arguments.length > 0 &&
|
|
364
363
|
exports.t.isObjectExpression(decl.init.arguments[0].expression)) {
|
|
365
364
|
const varName = decl.id.value;
|
|
366
|
-
const obj = objectExpressionToObject(decl.init.arguments[0].expression, exports.tables.
|
|
365
|
+
const obj = objectExpressionToObject(decl.init.arguments[0].expression, exports.tables.staticTable, keyframesHashTableLocal, exports.tables.viewTransitionHashTable, exports.tables.themeTable);
|
|
367
366
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
368
367
|
keyframesHashTableLocal[varName] = hash;
|
|
369
368
|
keyframesObjectTableLocal[hash] = obj;
|
|
@@ -412,7 +411,7 @@ function scanForViewTransition(addDependency) {
|
|
|
412
411
|
decl.init.arguments.length > 0 &&
|
|
413
412
|
exports.t.isObjectExpression(decl.init.arguments[0].expression)) {
|
|
414
413
|
const varName = decl.id.value;
|
|
415
|
-
const obj = objectExpressionToObject(decl.init.arguments[0].expression, exports.tables.
|
|
414
|
+
const obj = objectExpressionToObject(decl.init.arguments[0].expression, exports.tables.staticTable, exports.tables.keyframesHashTable, viewTransitionHashTableLocal, exports.tables.themeTable);
|
|
416
415
|
const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
|
|
417
416
|
viewTransitionHashTableLocal[varName] = hash;
|
|
418
417
|
viewTransitionObjectTableLocal[hash] = obj;
|
|
@@ -425,11 +424,11 @@ function scanForViewTransition(addDependency) {
|
|
|
425
424
|
viewTransitionObjectTableLocal,
|
|
426
425
|
};
|
|
427
426
|
}
|
|
428
|
-
function
|
|
429
|
-
const
|
|
427
|
+
function scanForCreateStatic(addDependency) {
|
|
428
|
+
const staticTableLocal = {};
|
|
430
429
|
const files = fs_1.default.globSync(PATTERN_PATH, GLOB_OPTIONS);
|
|
431
430
|
for (const filePath of files) {
|
|
432
|
-
if (!isCSSDefineFile(filePath, '
|
|
431
|
+
if (!isCSSDefineFile(filePath, 'createStatic'))
|
|
433
432
|
continue;
|
|
434
433
|
addDependency(filePath);
|
|
435
434
|
const source = fs_1.default.readFileSync(filePath, 'utf8');
|
|
@@ -454,24 +453,24 @@ function scanForDefineConsts(addDependency) {
|
|
|
454
453
|
exports.t.isCallExpression(decl.init) &&
|
|
455
454
|
exports.t.isMemberExpression(decl.init.callee) &&
|
|
456
455
|
exports.t.isIdentifier(decl.init.callee.object, { name: 'css' }) &&
|
|
457
|
-
exports.t.isIdentifier(decl.init.callee.property, { name: '
|
|
456
|
+
exports.t.isIdentifier(decl.init.callee.property, { name: 'createStatic' }) &&
|
|
458
457
|
decl.init.arguments.length > 0 &&
|
|
459
458
|
exports.t.isObjectExpression(decl.init.arguments[0].expression)) {
|
|
460
459
|
const varName = decl.id.value;
|
|
461
|
-
const obj = objectExpressionToObject(decl.init.arguments[0].expression,
|
|
462
|
-
|
|
460
|
+
const obj = objectExpressionToObject(decl.init.arguments[0].expression, staticTableLocal, exports.tables.keyframesHashTable, exports.tables.viewTransitionHashTable, exports.tables.themeTable);
|
|
461
|
+
staticTableLocal[varName] = obj;
|
|
463
462
|
}
|
|
464
463
|
}
|
|
465
464
|
}
|
|
466
465
|
}
|
|
467
|
-
return
|
|
466
|
+
return staticTableLocal;
|
|
468
467
|
}
|
|
469
|
-
function
|
|
470
|
-
const
|
|
471
|
-
const
|
|
468
|
+
function scanForCreateTheme(addDependency) {
|
|
469
|
+
const themeTableLocal = {};
|
|
470
|
+
const createThemeObjectTableLocal = {};
|
|
472
471
|
const files = fs_1.default.globSync(PATTERN_PATH, GLOB_OPTIONS);
|
|
473
472
|
for (const filePath of files) {
|
|
474
|
-
if (!isCSSDefineFile(filePath, '
|
|
473
|
+
if (!isCSSDefineFile(filePath, 'createTheme'))
|
|
475
474
|
continue;
|
|
476
475
|
addDependency(filePath);
|
|
477
476
|
const source = fs_1.default.readFileSync(filePath, 'utf8');
|
|
@@ -496,18 +495,18 @@ function scanForDefineTokens(addDependency) {
|
|
|
496
495
|
exports.t.isCallExpression(decl.init) &&
|
|
497
496
|
exports.t.isMemberExpression(decl.init.callee) &&
|
|
498
497
|
exports.t.isIdentifier(decl.init.callee.object, { name: 'css' }) &&
|
|
499
|
-
exports.t.isIdentifier(decl.init.callee.property, { name: '
|
|
498
|
+
exports.t.isIdentifier(decl.init.callee.property, { name: 'createTheme' }) &&
|
|
500
499
|
decl.init.arguments.length > 0 &&
|
|
501
500
|
exports.t.isObjectExpression(decl.init.arguments[0].expression)) {
|
|
502
501
|
const varName = decl.id.value;
|
|
503
|
-
const obj = objectExpressionToObject(decl.init.arguments[0].expression, exports.tables.
|
|
504
|
-
|
|
505
|
-
|
|
502
|
+
const obj = objectExpressionToObject(decl.init.arguments[0].expression, exports.tables.staticTable, exports.tables.keyframesHashTable, exports.tables.viewTransitionHashTable, themeTableLocal);
|
|
503
|
+
themeTableLocal[varName] = obj;
|
|
504
|
+
createThemeObjectTableLocal[varName] = obj;
|
|
506
505
|
}
|
|
507
506
|
}
|
|
508
507
|
}
|
|
509
508
|
}
|
|
510
|
-
return {
|
|
509
|
+
return { themeTableLocal, createThemeObjectTableLocal };
|
|
511
510
|
}
|
|
512
511
|
function isCSSDefineFile(filePath, target) {
|
|
513
512
|
if (fs_1.default.statSync(filePath).isDirectory())
|
package/dist/transform.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { CSSProperties, CreateStyleType,
|
|
1
|
+
import type { CSSProperties, CreateStyleType, CreateTheme, CreateValues } from 'zss-engine';
|
|
2
2
|
declare function createCSS<T extends Record<string, CSSProperties>>(object: CreateStyleType<T>): string;
|
|
3
3
|
declare const createVars: <const T extends CreateValues>(object: T) => Record<string, CreateValues>;
|
|
4
|
-
declare const
|
|
5
|
-
export { createCSS, createVars,
|
|
4
|
+
declare const createTheme: <const T extends CreateTheme>(object: T) => Record<string, Record<string, string | number | object>>;
|
|
5
|
+
export { createCSS, createVars, createTheme };
|
package/dist/transform.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createTheme = exports.createVars = void 0;
|
|
4
4
|
exports.createCSS = createCSS;
|
|
5
5
|
const zss_engine_1 = require("zss-engine");
|
|
6
6
|
function compileToSingleCSS(object) {
|
|
@@ -14,57 +14,73 @@ function compileToSingleCSS(object) {
|
|
|
14
14
|
const finalFlat = (0, zss_engine_1.overrideLonghand)(flat);
|
|
15
15
|
const records = [];
|
|
16
16
|
Object.entries(finalFlat).forEach(([prop, value]) => {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
17
|
+
if ((prop.startsWith('@media') || prop.startsWith('@container')) &&
|
|
18
|
+
typeof value === 'object' &&
|
|
19
|
+
value !== null) {
|
|
20
|
+
Object.entries(value).forEach(([innerProp, innerValue]) => {
|
|
21
|
+
const atomicMap = new Map();
|
|
22
|
+
(0, zss_engine_1.processAtomicProps)({ [innerProp]: innerValue }, atomicMap, prop);
|
|
23
|
+
const querySheetParts = [];
|
|
24
|
+
const queryHashParts = [];
|
|
25
|
+
for (const [hash, sheet] of atomicMap) {
|
|
26
|
+
querySheetParts.push(sheet.replace(`.${hash}`, `.${hash}:not(#\\#):not(#\\#)`));
|
|
27
|
+
queryHashParts.push(hash);
|
|
28
|
+
}
|
|
29
|
+
if (querySheetParts.length > 0) {
|
|
30
|
+
records.push({
|
|
31
|
+
key: prop + innerProp,
|
|
32
|
+
hash: queryHashParts.join(' '),
|
|
33
|
+
sheet: querySheetParts.join(''),
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
const atomicMap = new Map();
|
|
40
|
+
(0, zss_engine_1.processAtomicProps)({ [prop]: value }, atomicMap);
|
|
41
|
+
const baseSheetParts = [];
|
|
42
|
+
const baseHashParts = [];
|
|
43
|
+
for (const [hash, sheet] of atomicMap) {
|
|
34
44
|
baseSheetParts.push(sheet);
|
|
35
45
|
baseHashParts.push(hash);
|
|
36
46
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
if (querySheetParts.length > 0) {
|
|
46
|
-
records.push({
|
|
47
|
-
key: prop + '__queries__',
|
|
48
|
-
hash: queryHashParts.join(' '),
|
|
49
|
-
sheet: querySheetParts.join(''),
|
|
50
|
-
});
|
|
47
|
+
if (baseSheetParts.length > 0) {
|
|
48
|
+
records.push({
|
|
49
|
+
key: prop,
|
|
50
|
+
hash: baseHashParts.join(' '),
|
|
51
|
+
sheet: baseSheetParts.join(''),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
51
54
|
}
|
|
52
55
|
});
|
|
53
56
|
if (Object.keys(nonFlat).length > 0) {
|
|
54
|
-
const
|
|
55
|
-
const
|
|
56
|
-
const nonFlatHash = (0, zss_engine_1.genBase36Hash)(nonFlatObj, 1, 7);
|
|
57
|
-
const { styleSheet } = (0, zss_engine_1.transpile)(nonFlatObj, nonFlatHash);
|
|
58
|
-
const isQuery = styleSheet.includes('@media') || styleSheet.includes('@container');
|
|
59
|
-
const finalSheet = isQuery
|
|
60
|
-
? styleSheet.replace(`.${nonFlatHash}`, `.${nonFlatHash}:not(#\\#):not(#\\#)`)
|
|
61
|
-
: styleSheet;
|
|
57
|
+
const nonFlatBase = {};
|
|
58
|
+
const nonFlatQuery = {};
|
|
62
59
|
Object.entries(nonFlat).forEach(([atRule, nestedObj]) => {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
60
|
+
if (atRule.startsWith('@media') || atRule.startsWith('@container')) {
|
|
61
|
+
nonFlatQuery[atRule] = nestedObj;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
nonFlatBase[atRule] = nestedObj;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
[nonFlatBase, nonFlatQuery].forEach((targetNonFlat) => {
|
|
68
|
+
if (Object.keys(targetNonFlat).length === 0)
|
|
69
|
+
return;
|
|
70
|
+
const nonFlatObj = { [key]: targetNonFlat };
|
|
71
|
+
const nonFlatHash = (0, zss_engine_1.genBase36Hash)(nonFlatObj, 1, 7);
|
|
72
|
+
const { styleSheet } = (0, zss_engine_1.transpile)(nonFlatObj, nonFlatHash);
|
|
73
|
+
const isQuery = styleSheet.includes('@media') || styleSheet.includes('@container');
|
|
74
|
+
const finalSheet = isQuery
|
|
75
|
+
? styleSheet.replace(`.${nonFlatHash}`, `.${nonFlatHash}:not(#\\#):not(#\\#)`)
|
|
76
|
+
: styleSheet;
|
|
77
|
+
Object.entries(targetNonFlat).forEach(([atRule, nestedObj]) => {
|
|
78
|
+
Object.keys(nestedObj).forEach((prop) => {
|
|
79
|
+
records.push({
|
|
80
|
+
key: atRule + prop,
|
|
81
|
+
hash: nonFlatHash,
|
|
82
|
+
sheet: finalSheet,
|
|
83
|
+
});
|
|
68
84
|
});
|
|
69
85
|
});
|
|
70
86
|
});
|
|
@@ -97,7 +113,7 @@ const createVars = (object) => {
|
|
|
97
113
|
return styles;
|
|
98
114
|
};
|
|
99
115
|
exports.createVars = createVars;
|
|
100
|
-
const
|
|
116
|
+
const createTheme = (object) => {
|
|
101
117
|
const styles = {};
|
|
102
118
|
Object.entries(object).forEach(([key, value]) => {
|
|
103
119
|
const kebabKey = (0, zss_engine_1.camelToKebabCase)(key);
|
|
@@ -116,4 +132,4 @@ const createTokens = (object) => {
|
|
|
116
132
|
});
|
|
117
133
|
return styles;
|
|
118
134
|
};
|
|
119
|
-
exports.
|
|
135
|
+
exports.createTheme = createTheme;
|
package/dist/types.d.ts
CHANGED
|
@@ -4,26 +4,26 @@ export type CSSValue = CSSPrimitive | CSSObject | ParseErrorString;
|
|
|
4
4
|
export type CSSObject = {
|
|
5
5
|
[key: string]: CSSValue;
|
|
6
6
|
};
|
|
7
|
-
export type
|
|
8
|
-
export type
|
|
7
|
+
export type StaticTable = Record<string, CSSObject | string>;
|
|
8
|
+
export type ThemeTable = Record<string, CSSObject>;
|
|
9
9
|
export type KeyframesHashTable = Record<string, string>;
|
|
10
10
|
export type KeyframesObjectTable = Record<string, CSSObject>;
|
|
11
11
|
export type ViewTransitionHashTable = Record<string, string>;
|
|
12
12
|
export type ViewTransitionObjectTable = Record<string, CSSObject>;
|
|
13
|
-
export type
|
|
13
|
+
export type CreateThemeObjectTable = Record<string, CSSObject>;
|
|
14
14
|
export interface Tables {
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
staticTable: StaticTable;
|
|
16
|
+
themeTable: ThemeTable;
|
|
17
17
|
keyframesHashTable: KeyframesHashTable;
|
|
18
18
|
keyframesObjectTable: KeyframesObjectTable;
|
|
19
19
|
viewTransitionHashTable: ViewTransitionHashTable;
|
|
20
20
|
viewTransitionObjectTable: ViewTransitionObjectTable;
|
|
21
|
-
|
|
21
|
+
createThemeObjectTable: CreateThemeObjectTable;
|
|
22
22
|
}
|
|
23
23
|
export interface FileStyles {
|
|
24
24
|
baseStyles?: string;
|
|
25
25
|
keyframeStyles?: string;
|
|
26
26
|
viewTransitionStyles?: string;
|
|
27
|
-
|
|
27
|
+
themeStyles?: string;
|
|
28
28
|
}
|
|
29
29
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plumeria/utils",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "Plumeria Utils",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"@swc/core": "1.15.2"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"zss-engine": "1.
|
|
21
|
+
"zss-engine": "1.2.0"
|
|
22
22
|
},
|
|
23
23
|
"publishConfig": {
|
|
24
24
|
"access": "public",
|