@plumeria/core 2.2.2 → 2.2.4

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 CHANGED
@@ -4,12 +4,12 @@ declare const x: (className: string, varSet: XVariableSet) => ReturnX;
4
4
 
5
5
  declare class StyleSheet {
6
6
  private constructor();
7
- static create<const T extends Record<string, CSSProperties>>(object: CreateStyleType<T>): ReturnType<T>;
8
- static props(...objects: (false | Readonly<CSSProperties> | null | undefined)[]): string;
9
- static keyframes(object: CreateKeyframes): string;
10
- static viewTransition(object: ViewTransitionOptions): string;
11
- static createTheme<const T extends CreateTheme>(object: T): ReturnVariableType<T>;
12
- static createStatic<const T extends CreateValues>(object: T): T;
7
+ static create<const T extends Record<string, CSSProperties>>(rule: CreateStyleType<T>): ReturnType<T>;
8
+ static props(...rules: (false | Readonly<CSSProperties> | null | undefined)[]): string;
9
+ static keyframes(rule: CreateKeyframes): string;
10
+ static viewTransition(rule: ViewTransitionOptions): string;
11
+ static createTheme<const T extends CreateTheme>(rule: T): ReturnVariableType<T>;
12
+ static createStatic<const T extends CreateValues>(rule: T): T;
13
13
  }
14
14
  declare const css: typeof StyleSheet;
15
15
 
package/dist/index.js CHANGED
@@ -2,12 +2,12 @@ const require_css = require('./css.js');
2
2
  const zss_engine = require_css.__toESM(require("zss-engine"));
3
3
 
4
4
  const styleAtomMap = new WeakMap();
5
- function create(object) {
5
+ function create(rule) {
6
6
  const result = {};
7
- Object.entries(object).forEach(([key, styleObj]) => {
7
+ Object.entries(rule).forEach(([key, styleRule]) => {
8
8
  const flat = {};
9
9
  const nonFlat = {};
10
- (0, zss_engine.splitAtomicAndNested)(styleObj, flat, nonFlat);
10
+ (0, zss_engine.splitAtomicAndNested)(styleRule, flat, nonFlat);
11
11
  const finalFlat = (0, zss_engine.overrideLonghand)(flat);
12
12
  const records = [];
13
13
  Object.entries(finalFlat).forEach(([prop, value]) => {
@@ -49,40 +49,46 @@ function create(object) {
49
49
  if (atRule.startsWith("@media") || atRule.startsWith("@container")) nonFlatQuery[atRule] = nestedObj;
50
50
  else nonFlatBase[atRule] = nestedObj;
51
51
  });
52
- [nonFlatBase, nonFlatQuery].forEach((targetNonFlat) => {
53
- if (Object.keys(targetNonFlat).length === 0) return;
54
- const nonFlatObj = { [key]: targetNonFlat };
52
+ Object.entries(nonFlatBase).forEach(([selector, style]) => {
53
+ const nonFlatObj = { [key]: { [selector]: style } };
55
54
  const nonFlatHash = (0, zss_engine.genBase36Hash)(nonFlatObj, 1, 7);
56
55
  const { styleSheet } = (0, zss_engine.transpile)(nonFlatObj, nonFlatHash);
57
- const isQuery = styleSheet.includes("@media") || styleSheet.includes("@container");
58
- const finalSheet = isQuery ? styleSheet.replace(`.${nonFlatHash}`, `.${nonFlatHash}:not(#\\#)`) : styleSheet;
59
- Object.entries(targetNonFlat).forEach(([atRule, nestedObj]) => {
60
- Object.keys(nestedObj).forEach((prop) => {
61
- records.push({
62
- key: atRule + prop,
63
- hash: nonFlatHash,
64
- sheet: finalSheet
65
- });
56
+ records.push({
57
+ key: selector,
58
+ hash: nonFlatHash,
59
+ sheet: styleSheet
60
+ });
61
+ });
62
+ Object.entries(nonFlatQuery).forEach(([atRule, nestedStyles]) => {
63
+ Object.entries(nestedStyles).forEach(([pseudoSelector, style]) => {
64
+ const nonFlatObj = { [key]: { [atRule]: { [pseudoSelector]: style } } };
65
+ const nonFlatHash = (0, zss_engine.genBase36Hash)(nonFlatObj, 1, 7);
66
+ const { styleSheet } = (0, zss_engine.transpile)(nonFlatObj, nonFlatHash);
67
+ const finalSheet = styleSheet.replace(`.${nonFlatHash}`, `.${nonFlatHash}:not(#\\#)`);
68
+ records.push({
69
+ key: atRule + pseudoSelector,
70
+ hash: nonFlatHash,
71
+ sheet: finalSheet
66
72
  });
67
73
  });
68
74
  });
69
75
  }
70
- styleAtomMap.set(styleObj, records);
71
- Object.defineProperty(result, key, { get: () => Object.freeze(styleObj) });
76
+ styleAtomMap.set(styleRule, records);
77
+ Object.defineProperty(result, key, { get: () => Object.freeze(styleRule) });
72
78
  });
73
79
  return Object.freeze(result);
74
80
  }
75
81
 
76
82
  const setSheets = new Set();
77
- function props(...objects) {
83
+ function props(...rules) {
78
84
  const seenSheets = new Set();
79
85
  const baseSheets = [];
80
86
  const classList = [];
81
87
  const chosen = new Map();
82
88
  const rightmostKeys = [];
83
89
  const orderedKeys = [];
84
- for (let i = objects.length - 1; i >= 0; i--) {
85
- const obj = objects[i];
90
+ for (let i = rules.length - 1; i >= 0; i--) {
91
+ const obj = rules[i];
86
92
  if (!obj) continue;
87
93
  const records = styleAtomMap.get(obj);
88
94
  if (!records) continue;
@@ -92,13 +98,13 @@ function props(...objects) {
92
98
  propsIdx: i
93
99
  });
94
100
  }
95
- for (let i = 0; i < objects.length; i++) {
96
- const obj = objects[i];
101
+ for (let i = 0; i < rules.length; i++) {
102
+ const obj = rules[i];
97
103
  if (!obj) continue;
98
104
  const records = styleAtomMap.get(obj);
99
105
  if (!records) continue;
100
106
  for (const { key } of records) if (chosen.has(key) && chosen.get(key).propsIdx === i) {
101
- if (i === objects.length - 1) rightmostKeys.push({
107
+ if (i === rules.length - 1) rightmostKeys.push({
102
108
  ...chosen.get(key),
103
109
  key
104
110
  });
@@ -126,55 +132,56 @@ function props(...objects) {
126
132
  return classList.join(" ");
127
133
  }
128
134
 
129
- function global(object) {
130
- const { styleSheet } = (0, zss_engine.transpile)(object, void 0, "--global");
135
+ function global(rule) {
136
+ const { styleSheet } = (0, zss_engine.transpile)(rule, void 0, "--global");
131
137
  if (typeof require_css.gQueue.promise === "undefined") require_css.gQueue.init();
132
138
  require_css.gQueue.resolve(styleSheet);
133
139
  }
134
140
 
135
- const keyframes = (object) => {
136
- const hash = (0, zss_engine.genBase36Hash)(object, 1, 8);
141
+ const keyframes = (rule) => {
142
+ const hash = (0, zss_engine.genBase36Hash)(rule, 1, 8);
137
143
  const ident = `kf-${hash}`;
138
- global({ [`@keyframes ${ident}`]: object });
144
+ global({ [`@keyframes ${ident}`]: rule });
139
145
  return ident;
140
146
  };
141
147
 
142
- const viewTransition = (object) => {
143
- const hash = (0, zss_engine.genBase36Hash)(object, 1, 8);
148
+ const viewTransition = (rule) => {
149
+ const hash = (0, zss_engine.genBase36Hash)(rule, 1, 8);
144
150
  const ident = `vt-${hash}`;
145
151
  global({
146
- [`::view-transition-group(${ident})`]: object.group,
147
- [`::view-transition-image-pair(${ident})`]: object.imagePair,
148
- [`::view-transition-old(${ident})`]: object.old,
149
- [`::view-transition-new(${ident})`]: object.new
152
+ [`::view-transition-group(${ident})`]: rule.group,
153
+ [`::view-transition-image-pair(${ident})`]: rule.imagePair,
154
+ [`::view-transition-old(${ident})`]: rule.old,
155
+ [`::view-transition-new(${ident})`]: rule.new
150
156
  });
151
157
  return ident;
152
158
  };
153
159
 
154
- const createTheme = (object) => {
160
+ const createTheme = (rule) => {
155
161
  const styles = {};
156
162
  const result = {};
157
- Object.entries(object).forEach(([key, value]) => {
158
- const kebabKey = (0, zss_engine.camelToKebabCase)(key);
159
- result[key] = `var(--${kebabKey})`;
160
- Object.entries(value).forEach(([subKey, subValue]) => {
161
- if (subKey.startsWith("@media")) {
162
- styles[":root"] ||= {};
163
- styles[":root"][subKey] ||= {};
164
- styles[":root"][subKey][`--${kebabKey}`] = subValue;
165
- } else {
166
- const themeSelector = subKey === "default" ? ":root" : `:root[data-theme="${subKey}"]`;
167
- styles[themeSelector] ||= {};
168
- styles[themeSelector][`--${kebabKey}`] = subValue;
169
- }
170
- });
171
- });
163
+ for (const key in rule) {
164
+ const varName = `${(0, zss_engine.camelToKebabCase)(key)}`;
165
+ const varKey = `--${varName}`;
166
+ result[key] = `var(--${varName})`;
167
+ const themeMap = rule[key];
168
+ for (const themeKey in themeMap) {
169
+ const value = themeMap[themeKey];
170
+ const isQuery = themeKey.startsWith("@media") || themeKey.startsWith("@container");
171
+ const selector = isQuery || themeKey === "default" ? ":root" : `:root[data-theme="${themeKey}"]`;
172
+ const target = styles[selector] ||= {};
173
+ if (isQuery) {
174
+ const queryObj = target[themeKey] ||= {};
175
+ queryObj[varKey] = value;
176
+ } else target[varKey] = value;
177
+ }
178
+ }
172
179
  global(styles);
173
180
  return result;
174
181
  };
175
182
 
176
- const createStatic = (object) => {
177
- return object;
183
+ const createStatic = (rule) => {
184
+ return rule;
178
185
  };
179
186
 
180
187
  const x = (className, varSet) => ({
@@ -184,23 +191,23 @@ const x = (className, varSet) => ({
184
191
 
185
192
  var StyleSheet = class {
186
193
  constructor() {}
187
- static create(object) {
188
- return create(object);
194
+ static create(rule) {
195
+ return create(rule);
189
196
  }
190
- static props(...objects) {
191
- return props(...objects);
197
+ static props(...rules) {
198
+ return props(...rules);
192
199
  }
193
- static keyframes(object) {
194
- return keyframes(object);
200
+ static keyframes(rule) {
201
+ return keyframes(rule);
195
202
  }
196
- static viewTransition(object) {
197
- return viewTransition(object);
203
+ static viewTransition(rule) {
204
+ return viewTransition(rule);
198
205
  }
199
- static createTheme(object) {
200
- return createTheme(object);
206
+ static createTheme(rule) {
207
+ return createTheme(rule);
201
208
  }
202
- static createStatic(object) {
203
- return createStatic(object);
209
+ static createStatic(rule) {
210
+ return createStatic(rule);
204
211
  }
205
212
  };
206
213
  const css = StyleSheet;
package/dist/index.mjs CHANGED
@@ -2,12 +2,12 @@ import { gQueue, pQueue } from "./css.mjs";
2
2
  import { camelToKebabCase, genBase36Hash, overrideLonghand, processAtomicProps, splitAtomicAndNested, transpile } from "zss-engine";
3
3
 
4
4
  const styleAtomMap = new WeakMap();
5
- function create(object) {
5
+ function create(rule) {
6
6
  const result = {};
7
- Object.entries(object).forEach(([key, styleObj]) => {
7
+ Object.entries(rule).forEach(([key, styleRule]) => {
8
8
  const flat = {};
9
9
  const nonFlat = {};
10
- splitAtomicAndNested(styleObj, flat, nonFlat);
10
+ splitAtomicAndNested(styleRule, flat, nonFlat);
11
11
  const finalFlat = overrideLonghand(flat);
12
12
  const records = [];
13
13
  Object.entries(finalFlat).forEach(([prop, value]) => {
@@ -49,40 +49,46 @@ function create(object) {
49
49
  if (atRule.startsWith("@media") || atRule.startsWith("@container")) nonFlatQuery[atRule] = nestedObj;
50
50
  else nonFlatBase[atRule] = nestedObj;
51
51
  });
52
- [nonFlatBase, nonFlatQuery].forEach((targetNonFlat) => {
53
- if (Object.keys(targetNonFlat).length === 0) return;
54
- const nonFlatObj = { [key]: targetNonFlat };
52
+ Object.entries(nonFlatBase).forEach(([selector, style]) => {
53
+ const nonFlatObj = { [key]: { [selector]: style } };
55
54
  const nonFlatHash = genBase36Hash(nonFlatObj, 1, 7);
56
55
  const { styleSheet } = transpile(nonFlatObj, nonFlatHash);
57
- const isQuery = styleSheet.includes("@media") || styleSheet.includes("@container");
58
- const finalSheet = isQuery ? styleSheet.replace(`.${nonFlatHash}`, `.${nonFlatHash}:not(#\\#)`) : styleSheet;
59
- Object.entries(targetNonFlat).forEach(([atRule, nestedObj]) => {
60
- Object.keys(nestedObj).forEach((prop) => {
61
- records.push({
62
- key: atRule + prop,
63
- hash: nonFlatHash,
64
- sheet: finalSheet
65
- });
56
+ records.push({
57
+ key: selector,
58
+ hash: nonFlatHash,
59
+ sheet: styleSheet
60
+ });
61
+ });
62
+ Object.entries(nonFlatQuery).forEach(([atRule, nestedStyles]) => {
63
+ Object.entries(nestedStyles).forEach(([pseudoSelector, style]) => {
64
+ const nonFlatObj = { [key]: { [atRule]: { [pseudoSelector]: style } } };
65
+ const nonFlatHash = genBase36Hash(nonFlatObj, 1, 7);
66
+ const { styleSheet } = transpile(nonFlatObj, nonFlatHash);
67
+ const finalSheet = styleSheet.replace(`.${nonFlatHash}`, `.${nonFlatHash}:not(#\\#)`);
68
+ records.push({
69
+ key: atRule + pseudoSelector,
70
+ hash: nonFlatHash,
71
+ sheet: finalSheet
66
72
  });
67
73
  });
68
74
  });
69
75
  }
70
- styleAtomMap.set(styleObj, records);
71
- Object.defineProperty(result, key, { get: () => Object.freeze(styleObj) });
76
+ styleAtomMap.set(styleRule, records);
77
+ Object.defineProperty(result, key, { get: () => Object.freeze(styleRule) });
72
78
  });
73
79
  return Object.freeze(result);
74
80
  }
75
81
 
76
82
  const setSheets = new Set();
77
- function props(...objects) {
83
+ function props(...rules) {
78
84
  const seenSheets = new Set();
79
85
  const baseSheets = [];
80
86
  const classList = [];
81
87
  const chosen = new Map();
82
88
  const rightmostKeys = [];
83
89
  const orderedKeys = [];
84
- for (let i = objects.length - 1; i >= 0; i--) {
85
- const obj = objects[i];
90
+ for (let i = rules.length - 1; i >= 0; i--) {
91
+ const obj = rules[i];
86
92
  if (!obj) continue;
87
93
  const records = styleAtomMap.get(obj);
88
94
  if (!records) continue;
@@ -92,13 +98,13 @@ function props(...objects) {
92
98
  propsIdx: i
93
99
  });
94
100
  }
95
- for (let i = 0; i < objects.length; i++) {
96
- const obj = objects[i];
101
+ for (let i = 0; i < rules.length; i++) {
102
+ const obj = rules[i];
97
103
  if (!obj) continue;
98
104
  const records = styleAtomMap.get(obj);
99
105
  if (!records) continue;
100
106
  for (const { key } of records) if (chosen.has(key) && chosen.get(key).propsIdx === i) {
101
- if (i === objects.length - 1) rightmostKeys.push({
107
+ if (i === rules.length - 1) rightmostKeys.push({
102
108
  ...chosen.get(key),
103
109
  key
104
110
  });
@@ -126,55 +132,56 @@ function props(...objects) {
126
132
  return classList.join(" ");
127
133
  }
128
134
 
129
- function global(object) {
130
- const { styleSheet } = transpile(object, void 0, "--global");
135
+ function global(rule) {
136
+ const { styleSheet } = transpile(rule, void 0, "--global");
131
137
  if (typeof gQueue.promise === "undefined") gQueue.init();
132
138
  gQueue.resolve(styleSheet);
133
139
  }
134
140
 
135
- const keyframes = (object) => {
136
- const hash = genBase36Hash(object, 1, 8);
141
+ const keyframes = (rule) => {
142
+ const hash = genBase36Hash(rule, 1, 8);
137
143
  const ident = `kf-${hash}`;
138
- global({ [`@keyframes ${ident}`]: object });
144
+ global({ [`@keyframes ${ident}`]: rule });
139
145
  return ident;
140
146
  };
141
147
 
142
- const viewTransition = (object) => {
143
- const hash = genBase36Hash(object, 1, 8);
148
+ const viewTransition = (rule) => {
149
+ const hash = genBase36Hash(rule, 1, 8);
144
150
  const ident = `vt-${hash}`;
145
151
  global({
146
- [`::view-transition-group(${ident})`]: object.group,
147
- [`::view-transition-image-pair(${ident})`]: object.imagePair,
148
- [`::view-transition-old(${ident})`]: object.old,
149
- [`::view-transition-new(${ident})`]: object.new
152
+ [`::view-transition-group(${ident})`]: rule.group,
153
+ [`::view-transition-image-pair(${ident})`]: rule.imagePair,
154
+ [`::view-transition-old(${ident})`]: rule.old,
155
+ [`::view-transition-new(${ident})`]: rule.new
150
156
  });
151
157
  return ident;
152
158
  };
153
159
 
154
- const createTheme = (object) => {
160
+ const createTheme = (rule) => {
155
161
  const styles = {};
156
162
  const result = {};
157
- Object.entries(object).forEach(([key, value]) => {
158
- const kebabKey = camelToKebabCase(key);
159
- result[key] = `var(--${kebabKey})`;
160
- Object.entries(value).forEach(([subKey, subValue]) => {
161
- if (subKey.startsWith("@media")) {
162
- styles[":root"] ||= {};
163
- styles[":root"][subKey] ||= {};
164
- styles[":root"][subKey][`--${kebabKey}`] = subValue;
165
- } else {
166
- const themeSelector = subKey === "default" ? ":root" : `:root[data-theme="${subKey}"]`;
167
- styles[themeSelector] ||= {};
168
- styles[themeSelector][`--${kebabKey}`] = subValue;
169
- }
170
- });
171
- });
163
+ for (const key in rule) {
164
+ const varName = `${camelToKebabCase(key)}`;
165
+ const varKey = `--${varName}`;
166
+ result[key] = `var(--${varName})`;
167
+ const themeMap = rule[key];
168
+ for (const themeKey in themeMap) {
169
+ const value = themeMap[themeKey];
170
+ const isQuery = themeKey.startsWith("@media") || themeKey.startsWith("@container");
171
+ const selector = isQuery || themeKey === "default" ? ":root" : `:root[data-theme="${themeKey}"]`;
172
+ const target = styles[selector] ||= {};
173
+ if (isQuery) {
174
+ const queryObj = target[themeKey] ||= {};
175
+ queryObj[varKey] = value;
176
+ } else target[varKey] = value;
177
+ }
178
+ }
172
179
  global(styles);
173
180
  return result;
174
181
  };
175
182
 
176
- const createStatic = (object) => {
177
- return object;
183
+ const createStatic = (rule) => {
184
+ return rule;
178
185
  };
179
186
 
180
187
  const x = (className, varSet) => ({
@@ -184,23 +191,23 @@ const x = (className, varSet) => ({
184
191
 
185
192
  var StyleSheet = class {
186
193
  constructor() {}
187
- static create(object) {
188
- return create(object);
194
+ static create(rule) {
195
+ return create(rule);
189
196
  }
190
- static props(...objects) {
191
- return props(...objects);
197
+ static props(...rules) {
198
+ return props(...rules);
192
199
  }
193
- static keyframes(object) {
194
- return keyframes(object);
200
+ static keyframes(rule) {
201
+ return keyframes(rule);
195
202
  }
196
- static viewTransition(object) {
197
- return viewTransition(object);
203
+ static viewTransition(rule) {
204
+ return viewTransition(rule);
198
205
  }
199
- static createTheme(object) {
200
- return createTheme(object);
206
+ static createTheme(rule) {
207
+ return createTheme(rule);
201
208
  }
202
- static createStatic(object) {
203
- return createStatic(object);
209
+ static createStatic(rule) {
210
+ return createStatic(rule);
204
211
  }
205
212
  };
206
213
  const css = StyleSheet;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plumeria/core",
3
- "version": "2.2.2",
3
+ "version": "2.2.4",
4
4
  "description": "An atomic CSS runtime designed to disappear.",
5
5
  "author": "Refirst 11",
6
6
  "license": "MIT",
@@ -45,7 +45,7 @@
45
45
  "stylesheet.css"
46
46
  ],
47
47
  "dependencies": {
48
- "zss-engine": "1.2.2"
48
+ "zss-engine": "2.0.0"
49
49
  },
50
50
  "publishConfig": {
51
51
  "access": "public",