uraniyum 1.1.10 → 1.2.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/index.esm.js +59 -113
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +59 -113
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +1 -1
- package/src/styles.ts +95 -127
package/dist/index.esm.js
CHANGED
|
@@ -245,22 +245,8 @@ function add(component) {
|
|
|
245
245
|
throw new Error("Invalid component passed to add()");
|
|
246
246
|
}
|
|
247
247
|
|
|
248
|
-
const styleCache = new Map();
|
|
249
|
-
const keyframeCache = new Map();
|
|
250
248
|
let styleElement = null;
|
|
251
249
|
let styleSheet = null;
|
|
252
|
-
const ALLOWED_PREFIXES = [
|
|
253
|
-
"root",
|
|
254
|
-
"button",
|
|
255
|
-
"icon",
|
|
256
|
-
"text",
|
|
257
|
-
"container",
|
|
258
|
-
"wrapper",
|
|
259
|
-
"card",
|
|
260
|
-
"header",
|
|
261
|
-
"section",
|
|
262
|
-
];
|
|
263
|
-
const KEYFRAMES_PREFIX = "@keyframes ";
|
|
264
250
|
function ensureStyleSheet() {
|
|
265
251
|
if (!styleSheet) {
|
|
266
252
|
if (!styleElement) {
|
|
@@ -272,131 +258,105 @@ function ensureStyleSheet() {
|
|
|
272
258
|
}
|
|
273
259
|
return styleSheet;
|
|
274
260
|
}
|
|
275
|
-
function hashString(str) {
|
|
276
|
-
let hash = 5381;
|
|
277
|
-
for (let i = 0; i < str.length; i++) {
|
|
278
|
-
hash = (hash * 33) ^ str.charCodeAt(i);
|
|
279
|
-
}
|
|
280
|
-
return (hash >>> 0).toString(36);
|
|
281
|
-
}
|
|
282
261
|
const camelToKebabCache = new Map();
|
|
283
262
|
function camelToKebab(str) {
|
|
284
263
|
const cached = camelToKebabCache.get(str);
|
|
285
264
|
if (cached)
|
|
286
265
|
return cached;
|
|
287
|
-
const result = str.replace(/[A-Z]/g,
|
|
266
|
+
const result = str.replace(/[A-Z]/g, m => "-" + m.toLowerCase());
|
|
288
267
|
camelToKebabCache.set(str, result);
|
|
289
268
|
return result;
|
|
290
269
|
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
270
|
+
const atomicClassCache = new Map();
|
|
271
|
+
let atomicCounter = 0;
|
|
272
|
+
function nextAtomicClass() {
|
|
273
|
+
return `a-${atomicCounter++}`;
|
|
274
|
+
}
|
|
275
|
+
function registerAtomicRule(selector, decl) {
|
|
276
|
+
const key = `${selector}|${decl}`;
|
|
277
|
+
const cached = atomicClassCache.get(key);
|
|
278
|
+
if (cached)
|
|
279
|
+
return cached;
|
|
280
|
+
const className = nextAtomicClass();
|
|
281
|
+
atomicClassCache.set(key, className);
|
|
282
|
+
ensureStyleSheet().insertRule(`${selector.replace(/&/g, `.${className}`)}{${decl}}`, styleSheet.cssRules.length);
|
|
283
|
+
return className;
|
|
284
|
+
}
|
|
285
|
+
const KEYFRAMES_PREFIX = "@keyframes ";
|
|
286
|
+
const keyframeCache = new Map();
|
|
287
|
+
let keyframeCounter = 0;
|
|
288
|
+
function registerKeyframes(name, frames) {
|
|
289
|
+
const signature = name + JSON.stringify(frames);
|
|
290
|
+
const cached = keyframeCache.get(signature);
|
|
291
|
+
if (cached)
|
|
292
|
+
return cached;
|
|
293
|
+
const unique = `${name}-${keyframeCounter++}`;
|
|
294
|
+
const steps = [];
|
|
295
|
+
for (const step in frames) {
|
|
296
|
+
const decls = stringifyDecls(frames[step] ?? {}, new Map());
|
|
297
|
+
steps.push(`${step}{${decls}}`);
|
|
305
298
|
}
|
|
306
|
-
|
|
307
|
-
|
|
299
|
+
ensureStyleSheet().insertRule(`@keyframes ${unique}{${steps.join("")}}`, styleSheet.cssRules.length);
|
|
300
|
+
keyframeCache.set(signature, unique);
|
|
301
|
+
return unique;
|
|
308
302
|
}
|
|
309
303
|
function stringifyDecls(props, keyframes) {
|
|
310
304
|
const out = [];
|
|
311
305
|
for (const key in props) {
|
|
312
|
-
if (!Object.prototype.hasOwnProperty.call(props, key))
|
|
313
|
-
continue;
|
|
314
306
|
const raw = props[key];
|
|
315
307
|
if (raw == null || typeof raw === "object")
|
|
316
308
|
continue;
|
|
317
309
|
let val = typeof raw === "function" ? raw() : raw;
|
|
318
|
-
if (typeof val === "string"
|
|
310
|
+
if (typeof val === "string") {
|
|
319
311
|
for (const [orig, uniq] of keyframes) {
|
|
320
|
-
|
|
321
|
-
val = val.replaceAll(`$${orig}`, uniq);
|
|
322
|
-
}
|
|
312
|
+
val = val.replaceAll(`$${orig}`, uniq);
|
|
323
313
|
}
|
|
324
314
|
}
|
|
325
315
|
out.push(`${camelToKebab(key)}:${val}`);
|
|
326
316
|
}
|
|
327
317
|
return out.join(";");
|
|
328
318
|
}
|
|
329
|
-
function
|
|
330
|
-
const
|
|
331
|
-
const unique = `${name}-${hash}`;
|
|
332
|
-
const cached = keyframeCache.get(unique);
|
|
333
|
-
if (cached)
|
|
334
|
-
return cached;
|
|
335
|
-
const sheet = ensureStyleSheet();
|
|
336
|
-
const steps = [];
|
|
337
|
-
for (const step in frames) {
|
|
338
|
-
if (!Object.prototype.hasOwnProperty.call(frames, step))
|
|
339
|
-
continue;
|
|
340
|
-
const decls = stringifyDecls(frames[step] ?? {}, new Map());
|
|
341
|
-
steps.push(`${step}{${decls}}`);
|
|
342
|
-
}
|
|
343
|
-
const ruleText = `@keyframes ${unique}{${steps.join("")}}`;
|
|
344
|
-
sheet.insertRule(ruleText, sheet.cssRules.length);
|
|
345
|
-
keyframeCache.set(unique, unique);
|
|
346
|
-
return unique;
|
|
347
|
-
}
|
|
348
|
-
function buildRules(className, rule, keyframes) {
|
|
349
|
-
const rules = [];
|
|
350
|
-
const baseDecls = [];
|
|
319
|
+
function buildAtomicClasses(rule, keyframes) {
|
|
320
|
+
const classes = [];
|
|
351
321
|
for (const key in rule) {
|
|
352
|
-
if (!Object.prototype.hasOwnProperty.call(rule, key))
|
|
353
|
-
continue;
|
|
354
322
|
const val = rule[key];
|
|
355
|
-
if (key.startsWith("@keyframes")) {
|
|
356
|
-
continue;
|
|
357
|
-
}
|
|
358
323
|
if (!val)
|
|
359
324
|
continue;
|
|
360
325
|
if (key[0] === ":" && typeof val === "object") {
|
|
361
|
-
const decls = stringifyDecls(val
|
|
362
|
-
if (decls)
|
|
363
|
-
|
|
364
|
-
}
|
|
326
|
+
const decls = stringifyDecls(val, keyframes);
|
|
327
|
+
if (!decls)
|
|
328
|
+
continue;
|
|
329
|
+
classes.push(registerAtomicRule(`&${key}`, decls));
|
|
365
330
|
continue;
|
|
366
331
|
}
|
|
367
332
|
if (key.startsWith("@media") && typeof val === "object") {
|
|
368
|
-
const decls = stringifyDecls(val
|
|
369
|
-
if (decls)
|
|
370
|
-
|
|
371
|
-
|
|
333
|
+
const decls = stringifyDecls(val, keyframes);
|
|
334
|
+
if (!decls)
|
|
335
|
+
continue;
|
|
336
|
+
const className = nextAtomicClass();
|
|
337
|
+
atomicClassCache.set(`${key}|${decls}`, className);
|
|
338
|
+
ensureStyleSheet().insertRule(`${key}{.${className}{${decls}}}`, styleSheet.cssRules.length);
|
|
339
|
+
classes.push(className);
|
|
372
340
|
continue;
|
|
373
341
|
}
|
|
374
|
-
if (
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
342
|
+
if (typeof val !== "object") {
|
|
343
|
+
let resolved = typeof val === "function" ? val() : val;
|
|
344
|
+
if (typeof resolved === "string") {
|
|
345
|
+
for (const [orig, uniq] of keyframes) {
|
|
346
|
+
resolved = resolved.replaceAll(`$${orig}`, uniq);
|
|
347
|
+
}
|
|
379
348
|
}
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
if (!key.startsWith("@") && typeof val !== "object") {
|
|
383
|
-
const raw = typeof val === "function" ? val() : val;
|
|
384
|
-
baseDecls.push(`${camelToKebab(key)}:${raw}`);
|
|
349
|
+
const decl = `${camelToKebab(key)}:${resolved}`;
|
|
350
|
+
classes.push(registerAtomicRule("&", decl));
|
|
385
351
|
}
|
|
386
352
|
}
|
|
387
|
-
|
|
388
|
-
rules.push(`.${className}{${baseDecls.join(";")}}`);
|
|
389
|
-
}
|
|
390
|
-
return rules;
|
|
353
|
+
return classes;
|
|
391
354
|
}
|
|
392
355
|
function makeStyles(styles) {
|
|
393
356
|
return () => {
|
|
394
357
|
const classNames = {};
|
|
395
358
|
const keyframesMap = new Map();
|
|
396
|
-
const sheet = ensureStyleSheet();
|
|
397
359
|
for (const key in styles) {
|
|
398
|
-
if (!Object.prototype.hasOwnProperty.call(styles, key))
|
|
399
|
-
continue;
|
|
400
360
|
if (!key.startsWith(KEYFRAMES_PREFIX))
|
|
401
361
|
continue;
|
|
402
362
|
const name = key.slice(KEYFRAMES_PREFIX.length);
|
|
@@ -405,23 +365,11 @@ function makeStyles(styles) {
|
|
|
405
365
|
keyframesMap.set(name, unique);
|
|
406
366
|
}
|
|
407
367
|
for (const slot in styles) {
|
|
408
|
-
if (!Object.prototype.hasOwnProperty.call(styles, slot))
|
|
409
|
-
continue;
|
|
410
368
|
if (slot.startsWith(KEYFRAMES_PREFIX))
|
|
411
369
|
continue;
|
|
412
|
-
const rule = styles[slot];
|
|
413
|
-
const
|
|
414
|
-
|
|
415
|
-
? `${slot}-${hash}`
|
|
416
|
-
: `css-${hash}`;
|
|
417
|
-
if (!styleCache.has(className)) {
|
|
418
|
-
const rules = buildRules(className, rule, keyframesMap);
|
|
419
|
-
for (const r of rules) {
|
|
420
|
-
sheet.insertRule(r, sheet.cssRules.length);
|
|
421
|
-
}
|
|
422
|
-
styleCache.set(className, true);
|
|
423
|
-
}
|
|
424
|
-
classNames[slot] = className;
|
|
370
|
+
const rule = (styles[slot] ?? {});
|
|
371
|
+
const classes = buildAtomicClasses(rule, keyframesMap);
|
|
372
|
+
classNames[slot] = classes.join(" ");
|
|
425
373
|
}
|
|
426
374
|
return classNames;
|
|
427
375
|
};
|
|
@@ -433,8 +381,6 @@ function mergeStyleSets(...sets) {
|
|
|
433
381
|
if (!set)
|
|
434
382
|
continue;
|
|
435
383
|
for (const key in set) {
|
|
436
|
-
if (!Object.prototype.hasOwnProperty.call(set, key))
|
|
437
|
-
continue;
|
|
438
384
|
const prev = merged[key] ?? {};
|
|
439
385
|
const cur = set[key] ?? {};
|
|
440
386
|
merged[key] = { ...prev, ...cur };
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/state.ts","../src/tags.ts","../src/router.ts","../src/helpers.ts","../src/styles.ts"],"sourcesContent":["export const STATE = Symbol(\"STATE\");\nexport function isState(x) {\n return typeof x === \"object\" && x !== null && x[STATE] === true;\n}\nlet currentEffect = null;\nfunction track(st) {\n if (currentEffect) {\n st.subs.add(currentEffect);\n currentEffect.deps.add(st);\n }\n}\nfunction cleanup(effect) {\n for (const st of effect.deps)\n st.subs.delete(effect);\n effect.deps.clear();\n}\nexport function state(v) {\n const st = {\n [STATE]: true,\n subs: new Set(),\n get val() {\n track(st);\n return v;\n },\n set val(nv) {\n if (nv === v)\n return;\n v = nv;\n for (const fn of Array.from(st.subs)) {\n fn();\n }\n }\n };\n return st;\n}\nexport function derive(fn) {\n const effect = (() => {\n cleanup(effect);\n currentEffect = effect;\n try {\n fn();\n }\n finally {\n currentEffect = null;\n }\n });\n effect.deps = new Set();\n effect();\n return effect;\n}\n","import { derive } from \"./state\";\nfunction isState(x) {\n return x && typeof x === \"object\" && \"subs\" in x && \"val\" in x;\n}\n// --- Attribute detection (fix for TypeScript narrowing) ---\nfunction isAttrs(x) {\n return (x &&\n typeof x === \"object\" &&\n !(x instanceof Node) &&\n !isState(x) &&\n typeof x !== \"function\" &&\n !Array.isArray(x));\n}\nexport const tags = new Proxy({}, {\n get(_, tag) {\n return (attrsOrChild, ...children) => {\n const el = document.createElement(tag);\n // Handle attributes safely\n if (isAttrs(attrsOrChild)) {\n for (const [k, v] of Object.entries(attrsOrChild)) {\n el.setAttribute(k, String(v));\n }\n }\n else if (attrsOrChild != null) {\n // Now TypeScript knows it's ChildLike, not Attrs\n children.unshift(attrsOrChild);\n }\n processChildren(el, children);\n return el;\n };\n }\n});\nfunction processChildren(el, children) {\n for (const child of children.flat()) {\n if (child == null || child === false)\n continue;\n if (typeof child === \"function\") {\n mountReactiveFunction(el, child);\n continue;\n }\n if (isState(child)) {\n mountReactiveState(el, child);\n continue;\n }\n if (child instanceof Node) {\n el.appendChild(child);\n continue;\n }\n el.appendChild(document.createTextNode(String(child)));\n }\n}\nfunction mountReactiveFunction(parent, fn) {\n const marker = document.createTextNode(\"\");\n parent.appendChild(marker);\n let mounted = [];\n const cleanup = () => {\n for (const n of mounted) {\n if (n.parentNode === parent)\n parent.removeChild(n);\n }\n mounted = [];\n };\n derive(() => {\n cleanup();\n const value = fn();\n const values = Array.isArray(value) ? value.flat() : [value];\n for (const v of values) {\n if (v == null || v === false)\n continue;\n if (typeof v === \"function\") {\n mountReactiveFunction(parent, v);\n continue;\n }\n if (isState(v)) {\n const node = document.createTextNode(String(v.val));\n parent.insertBefore(node, marker);\n v.subs.add(() => {\n const next = String(v.val);\n if (node.data !== next)\n node.data = next;\n });\n mounted.push(node);\n continue;\n }\n if (v instanceof Node) {\n parent.insertBefore(v, marker);\n mounted.push(v);\n continue;\n }\n const text = document.createTextNode(String(v));\n parent.insertBefore(text, marker);\n mounted.push(text);\n }\n });\n}\nfunction mountReactiveState(parent, st) {\n const node = document.createTextNode(String(st.val));\n parent.appendChild(node);\n st.subs.add(() => {\n const next = String(st.val);\n if (node.data !== next)\n node.data = next;\n });\n}\n","export function router(routes) {\n const patterns = [];\n let wildcard = null;\n for (const path of Object.keys(routes)) {\n const handler = routes[path];\n if (!handler)\n continue;\n if (path === \"*\") {\n wildcard = handler;\n continue;\n }\n const keys = [];\n const pattern = path.replace(/:[^/]+/g, (m) => {\n keys.push(m.slice(1));\n return \"([^/]+)\";\n });\n patterns.push({\n regex: new RegExp(`^${pattern}$`),\n keys,\n handler\n });\n }\n let currentEl = null;\n let currentPath = \"\";\n function parseQuery(search) {\n const params = {};\n if (!search)\n return params;\n for (const [k, v] of new URLSearchParams(search))\n params[k] = v;\n return params;\n }\n function matchRoute(pathname) {\n for (const { regex, keys, handler } of patterns) {\n const match = pathname.match(regex);\n if (!match)\n continue;\n const params = {};\n keys.forEach((key, i) => {\n params[key] = decodeURIComponent(match[i + 1]);\n });\n Object.assign(params, parseQuery(location.search));\n return handler(params);\n }\n if (wildcard)\n return wildcard({});\n throw new Error(`No route matches \"${pathname}\"`);\n }\n function render() {\n const newFullPath = location.pathname + location.search;\n if (newFullPath === currentPath)\n return;\n currentPath = newFullPath;\n const next = matchRoute(location.pathname);\n if (currentEl && currentEl.parentNode) {\n document.body.removeChild(currentEl);\n }\n document.body.appendChild(next);\n currentEl = next;\n }\n window.addEventListener(\"popstate\", render);\n render();\n return {\n render,\n push(path) {\n history.pushState(null, \"\", path);\n render();\n },\n replace(path) {\n history.replaceState(null, \"\", path);\n render();\n },\n back: () => history.back()\n };\n}\n","export function add(component) {\n if (typeof component === \"function\") {\n const el = component();\n if (!(el instanceof HTMLElement)) {\n throw new Error(\"Component function must return an HTMLElement\");\n }\n document.body.appendChild(el);\n return;\n }\n if (\"render\" in component && typeof component.render === \"function\") {\n component.render();\n return;\n }\n throw new Error(\"Invalid component passed to add()\");\n}\n","const styleCache = new Map();\nconst keyframeCache = new Map();\nlet styleElement = null;\nlet styleSheet = null;\nconst ALLOWED_PREFIXES = [\n \"root\",\n \"button\",\n \"icon\",\n \"text\",\n \"container\",\n \"wrapper\",\n \"card\",\n \"header\",\n \"section\",\n];\nconst KEYFRAMES_PREFIX = \"@keyframes \";\nfunction ensureStyleSheet() {\n if (!styleSheet) {\n if (!styleElement) {\n styleElement = document.createElement(\"style\");\n styleElement.id = \"styles\";\n document.head.appendChild(styleElement);\n }\n styleSheet = styleElement.sheet;\n }\n return styleSheet;\n}\nfunction hashString(str) {\n let hash = 5381;\n for (let i = 0; i < str.length; i++) {\n hash = (hash * 33) ^ str.charCodeAt(i);\n }\n return (hash >>> 0).toString(36);\n}\nconst camelToKebabCache = new Map();\nfunction camelToKebab(str) {\n const cached = camelToKebabCache.get(str);\n if (cached)\n return cached;\n const result = str.replace(/[A-Z]/g, (m) => \"-\" + m.toLowerCase());\n camelToKebabCache.set(str, result);\n return result;\n}\nfunction stableHashRule(rule) {\n const parts = [];\n for (const key in rule) {\n if (!Object.prototype.hasOwnProperty.call(rule, key))\n continue;\n const val = rule[key];\n if (key.startsWith(\"@\") || typeof val === \"object\" || val == null)\n continue;\n let v;\n if (typeof val === \"function\")\n v = val.toString();\n else\n v = String(val);\n parts.push(`${key}:${v}`);\n }\n parts.sort();\n return hashString(parts.join(\"|\"));\n}\nfunction stringifyDecls(props, keyframes) {\n const out = [];\n for (const key in props) {\n if (!Object.prototype.hasOwnProperty.call(props, key))\n continue;\n const raw = props[key];\n if (raw == null || typeof raw === \"object\")\n continue;\n let val = typeof raw === \"function\" ? raw() : raw;\n if (typeof val === \"string\" && keyframes.size > 0) {\n for (const [orig, uniq] of keyframes) {\n if (val.includes(`$${orig}`)) {\n val = val.replaceAll(`$${orig}`, uniq);\n }\n }\n }\n out.push(`${camelToKebab(key)}:${val}`);\n }\n return out.join(\";\");\n}\nfunction registerKeyframes(name, frames) {\n const hash = hashString(name + JSON.stringify(frames));\n const unique = `${name}-${hash}`;\n const cached = keyframeCache.get(unique);\n if (cached)\n return cached;\n const sheet = ensureStyleSheet();\n const steps = [];\n for (const step in frames) {\n if (!Object.prototype.hasOwnProperty.call(frames, step))\n continue;\n const decls = stringifyDecls(frames[step] ?? {}, new Map());\n steps.push(`${step}{${decls}}`);\n }\n const ruleText = `@keyframes ${unique}{${steps.join(\"\")}}`;\n sheet.insertRule(ruleText, sheet.cssRules.length);\n keyframeCache.set(unique, unique);\n return unique;\n}\nfunction buildRules(className, rule, keyframes) {\n const rules = [];\n const baseDecls = [];\n for (const key in rule) {\n if (!Object.prototype.hasOwnProperty.call(rule, key))\n continue;\n const val = rule[key];\n if (key.startsWith(\"@keyframes\")) {\n continue;\n }\n if (!val)\n continue;\n if (key[0] === \":\" && typeof val === \"object\") {\n const decls = stringifyDecls(val ?? {}, keyframes);\n if (decls) {\n rules.push(`.${className}${key}{${decls}}`);\n }\n continue;\n }\n if (key.startsWith(\"@media\") && typeof val === \"object\") {\n const decls = stringifyDecls(val ?? {}, keyframes);\n if (decls) {\n rules.push(`${key}{.${className}{${decls}}}`);\n }\n continue;\n }\n if (key.includes(\"&\") && typeof val === \"object\") {\n const selector = key.replace(/&/g, `.${className}`);\n const decls = stringifyDecls(val ?? {}, keyframes);\n if (decls) {\n rules.push(`${selector}{${decls}}`);\n }\n continue;\n }\n if (!key.startsWith(\"@\") && typeof val !== \"object\") {\n const raw = typeof val === \"function\" ? val() : val;\n baseDecls.push(`${camelToKebab(key)}:${raw}`);\n }\n }\n if (baseDecls.length > 0) {\n rules.push(`.${className}{${baseDecls.join(\";\")}}`);\n }\n return rules;\n}\nexport function makeStyles(styles) {\n return () => {\n const classNames = {};\n const keyframesMap = new Map();\n const sheet = ensureStyleSheet();\n for (const key in styles) {\n if (!Object.prototype.hasOwnProperty.call(styles, key))\n continue;\n if (!key.startsWith(KEYFRAMES_PREFIX))\n continue;\n const name = key.slice(KEYFRAMES_PREFIX.length);\n const frames = styles[key];\n const unique = registerKeyframes(name, frames);\n keyframesMap.set(name, unique);\n }\n for (const slot in styles) {\n if (!Object.prototype.hasOwnProperty.call(styles, slot))\n continue;\n if (slot.startsWith(KEYFRAMES_PREFIX))\n continue;\n const rule = styles[slot];\n const hash = stableHashRule(rule);\n const className = ALLOWED_PREFIXES.includes(slot)\n ? `${slot}-${hash}`\n : `css-${hash}`;\n if (!styleCache.has(className)) {\n const rules = buildRules(className, rule, keyframesMap);\n for (const r of rules) {\n sheet.insertRule(r, sheet.cssRules.length);\n }\n styleCache.set(className, true);\n }\n classNames[slot] = className;\n }\n return classNames;\n };\n}\nexport const mergeClasses = (...classes) => classes.filter(Boolean).join(\" \");\nexport function mergeStyleSets(...sets) {\n const merged = {};\n for (const set of sets) {\n if (!set)\n continue;\n for (const key in set) {\n if (!Object.prototype.hasOwnProperty.call(set, key))\n continue;\n const prev = merged[key] ?? {};\n const cur = set[key] ?? {};\n merged[key] = { ...prev, ...cur };\n }\n }\n return makeStyles(merged)();\n}\n"],"names":["isState"],"mappings":"AAAY,MAAC,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE;AAC9B,SAASA,SAAO,CAAC,CAAC,EAAE;AAC3B,IAAI,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACpE,CAAC;AACD,IAAI,aAAa,GAAG,IAAI,CAAC;AACzB,SAAS,KAAK,CAAC,EAAE,EAAE;AACnB,IAAI,IAAI,aAAa,EAAE;AACvB,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACnC,QAAQ,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACnC,KAAK;AACL,CAAC;AACD,SAAS,OAAO,CAAC,MAAM,EAAE;AACzB,IAAI,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI;AAChC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC;AACM,SAAS,KAAK,CAAC,CAAC,EAAE;AACzB,IAAI,MAAM,EAAE,GAAG;AACf,QAAQ,CAAC,KAAK,GAAG,IAAI;AACrB,QAAQ,IAAI,EAAE,IAAI,GAAG,EAAE;AACvB,QAAQ,IAAI,GAAG,GAAG;AAClB,YAAY,KAAK,CAAC,EAAE,CAAC,CAAC;AACtB,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS;AACT,QAAQ,IAAI,GAAG,CAAC,EAAE,EAAE;AACpB,YAAY,IAAI,EAAE,KAAK,CAAC;AACxB,gBAAgB,OAAO;AACvB,YAAY,CAAC,GAAG,EAAE,CAAC;AACnB,YAAY,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAClD,gBAAgB,EAAE,EAAE,CAAC;AACrB,aAAa;AACb,SAAS;AACT,KAAK,CAAC;AACN,IAAI,OAAO,EAAE,CAAC;AACd,CAAC;AACM,SAAS,MAAM,CAAC,EAAE,EAAE;AAC3B,IAAI,MAAM,MAAM,IAAI,MAAM;AAC1B,QAAQ,OAAO,CAAC,MAAM,CAAC,CAAC;AACxB,QAAQ,aAAa,GAAG,MAAM,CAAC;AAC/B,QAAQ,IAAI;AACZ,YAAY,EAAE,EAAE,CAAC;AACjB,SAAS;AACT,gBAAgB;AAChB,YAAY,aAAa,GAAG,IAAI,CAAC;AACjC,SAAS;AACT,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,OAAO,MAAM,CAAC;AAClB;;AChDA,SAAS,OAAO,CAAC,CAAC,EAAE;AACpB,IAAI,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACnE,CAAC;AACD;AACA,SAAS,OAAO,CAAC,CAAC,EAAE;AACpB,IAAI,QAAQ,CAAC;AACb,QAAQ,OAAO,CAAC,KAAK,QAAQ;AAC7B,QAAQ,EAAE,CAAC,YAAY,IAAI,CAAC;AAC5B,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACnB,QAAQ,OAAO,CAAC,KAAK,UAAU;AAC/B,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAC3B,CAAC;AACW,MAAC,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;AAClC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE;AAChB,QAAQ,OAAO,CAAC,YAAY,EAAE,GAAG,QAAQ,KAAK;AAC9C,YAAY,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACnD;AACA,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;AACvC,gBAAgB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AACnE,oBAAoB,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,iBAAiB;AACjB,aAAa;AACb,iBAAiB,IAAI,YAAY,IAAI,IAAI,EAAE;AAC3C;AACA,gBAAgB,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/C,aAAa;AACb,YAAY,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC1C,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS,CAAC;AACV,KAAK;AACL,CAAC,EAAE;AACH,SAAS,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE;AACvC,IAAI,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE;AACzC,QAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK;AAC5C,YAAY,SAAS;AACrB,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AACzC,YAAY,qBAAqB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7C,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAY,kBAAkB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC1C,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,KAAK,YAAY,IAAI,EAAE;AACnC,YAAY,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAClC,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/D,KAAK;AACL,CAAC;AACD,SAAS,qBAAqB,CAAC,MAAM,EAAE,EAAE,EAAE;AAC3C,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAC/C,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC/B,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;AACrB,IAAI,MAAM,OAAO,GAAG,MAAM;AAC1B,QAAQ,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;AACjC,YAAY,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM;AACvC,gBAAgB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACtC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE,CAAC;AACrB,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,MAAM;AACjB,QAAQ,OAAO,EAAE,CAAC;AAClB,QAAQ,MAAM,KAAK,GAAG,EAAE,EAAE,CAAC;AAC3B,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACrE,QAAQ,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;AAChC,YAAY,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK;AACxC,gBAAgB,SAAS;AACzB,YAAY,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE;AACzC,gBAAgB,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACjD,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;AAC5B,gBAAgB,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpE,gBAAgB,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAClD,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AACjC,oBAAoB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/C,oBAAoB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;AAC1C,wBAAwB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzC,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,IAAI,CAAC,YAAY,IAAI,EAAE;AACnC,gBAAgB,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC/C,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,YAAY,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,SAAS;AACT,KAAK,CAAC,CAAC;AACP,CAAC;AACD,SAAS,kBAAkB,CAAC,MAAM,EAAE,EAAE,EAAE;AACxC,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7B,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AACtB,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACpC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;AAC9B,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B,KAAK,CAAC,CAAC;AACP;;ACvGO,SAAS,MAAM,CAAC,MAAM,EAAE;AAC/B,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;AACxB,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC5C,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,OAAO;AACpB,YAAY,SAAS;AACrB,QAAQ,IAAI,IAAI,KAAK,GAAG,EAAE;AAC1B,YAAY,QAAQ,GAAG,OAAO,CAAC;AAC/B,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC;AACxB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK;AACvD,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS,CAAC,CAAC;AACX,QAAQ,QAAQ,CAAC,IAAI,CAAC;AACtB,YAAY,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAY,IAAI;AAChB,YAAY,OAAO;AACnB,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC;AACzB,IAAI,IAAI,WAAW,GAAG,EAAE,CAAC;AACzB,IAAI,SAAS,UAAU,CAAC,MAAM,EAAE;AAChC,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,MAAM;AACnB,YAAY,OAAO,MAAM,CAAC;AAC1B,QAAQ,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC;AACxD,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1B,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,SAAS,UAAU,CAAC,QAAQ,EAAE;AAClC,QAAQ,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,QAAQ,EAAE;AACzD,YAAY,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAChD,YAAY,IAAI,CAAC,KAAK;AACtB,gBAAgB,SAAS;AACzB,YAAY,MAAM,MAAM,GAAG,EAAE,CAAC;AAC9B,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AACrC,gBAAgB,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/D,aAAa,CAAC,CAAC;AACf,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/D,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACnC,SAAS;AACT,QAAQ,IAAI,QAAQ;AACpB,YAAY,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,KAAK;AACL,IAAI,SAAS,MAAM,GAAG;AACtB,QAAQ,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;AAChE,QAAQ,IAAI,WAAW,KAAK,WAAW;AACvC,YAAY,OAAO;AACnB,QAAQ,WAAW,GAAG,WAAW,CAAC;AAClC,QAAQ,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnD,QAAQ,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,EAAE;AAC/C,YAAY,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxC,QAAQ,SAAS,GAAG,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,OAAO;AACX,QAAQ,MAAM;AACd,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9C,YAAY,MAAM,EAAE,CAAC;AACrB,SAAS;AACT,QAAQ,OAAO,CAAC,IAAI,EAAE;AACtB,YAAY,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACjD,YAAY,MAAM,EAAE,CAAC;AACrB,SAAS;AACT,QAAQ,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,EAAE;AAClC,KAAK,CAAC;AACN;;AC1EO,SAAS,GAAG,CAAC,SAAS,EAAE;AAC/B,IAAI,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;AACzC,QAAQ,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;AAC/B,QAAQ,IAAI,EAAE,EAAE,YAAY,WAAW,CAAC,EAAE;AAC1C,YAAY,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;AAC7E,SAAS;AACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACtC,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,IAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,UAAU,EAAE;AACzE,QAAQ,SAAS,CAAC,MAAM,EAAE,CAAC;AAC3B,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACzD;;ACdA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;AAChC,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB,IAAI,UAAU,GAAG,IAAI,CAAC;AACtB,MAAM,gBAAgB,GAAG;AACzB,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,WAAW;AACf,IAAI,SAAS;AACb,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,CAAC,CAAC;AACF,MAAM,gBAAgB,GAAG,aAAa,CAAC;AACvC,SAAS,gBAAgB,GAAG;AAC5B,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,YAAY,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC3D,YAAY,YAAY,CAAC,EAAE,GAAG,QAAQ,CAAC;AACvC,YAAY,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AACpD,SAAS;AACT,QAAQ,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC;AACxC,KAAK;AACL,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC;AACD,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,QAAQ,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC;AACD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;AACpC,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,IAAI,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9C,IAAI,IAAI,MAAM;AACd,QAAQ,OAAO,MAAM,CAAC;AACtB,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACvE,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACvC,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,cAAc,CAAC,IAAI,EAAE;AAC9B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;AAC5D,YAAY,SAAS;AACrB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,IAAI;AACzE,YAAY,SAAS;AACrB,QAAQ,IAAI,CAAC,CAAC;AACd,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU;AACrC,YAAY,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC/B;AACA,YAAY,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AACjB,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AACD,SAAS,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE;AAC1C,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB,IAAI,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AAC7B,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;AAC7D,YAAY,SAAS;AACrB,QAAQ,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;AAClD,YAAY,SAAS;AACrB,QAAQ,IAAI,GAAG,GAAG,OAAO,GAAG,KAAK,UAAU,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AAC1D,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE;AAC3D,YAAY,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE;AAClD,gBAAgB,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;AAC9C,oBAAoB,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3D,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AACD,SAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE;AACzC,IAAI,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3D,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACrC,IAAI,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7C,IAAI,IAAI,MAAM;AACd,QAAQ,OAAO,MAAM,CAAC;AACtB,IAAI,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;AACrC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AAC/B,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/D,YAAY,SAAS;AACrB,QAAQ,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACpE,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtD,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtC,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;AAChD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,MAAM,SAAS,GAAG,EAAE,CAAC;AACzB,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;AAC5D,YAAY,SAAS;AACrB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;AAC1C,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG;AAChB,YAAY,SAAS;AACrB,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACvD,YAAY,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAC/D,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,aAAa;AACb,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjE,YAAY,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAC/D,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,aAAa;AACb,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC1D,YAAY,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAChE,YAAY,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAC/D,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,aAAa;AACb,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC7D,YAAY,MAAM,GAAG,GAAG,OAAO,GAAG,KAAK,UAAU,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AAChE,YAAY,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1D,SAAS;AACT,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACM,SAAS,UAAU,CAAC,MAAM,EAAE;AACnC,IAAI,OAAO,MAAM;AACjB,QAAQ,MAAM,UAAU,GAAG,EAAE,CAAC;AAC9B,QAAQ,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AACvC,QAAQ,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;AACzC,QAAQ,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AAClC,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;AAClE,gBAAgB,SAAS;AACzB,YAAY,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACjD,gBAAgB,SAAS;AACzB,YAAY,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC5D,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC,YAAY,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3D,YAAY,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AACnC,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACnE,gBAAgB,SAAS;AACzB,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACjD,gBAAgB,SAAS;AACzB,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACtC,YAAY,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9C,YAAY,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC7D,kBAAkB,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACnC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAChC,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AAC5C,gBAAgB,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AACxE,gBAAgB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACvC,oBAAoB,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/D,iBAAiB;AACjB,gBAAgB,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAChD,aAAa;AACb,YAAY,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AACzC,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK,CAAC;AACN,CAAC;AACW,MAAC,YAAY,GAAG,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;AACvE,SAAS,cAAc,CAAC,GAAG,IAAI,EAAE;AACxC,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,GAAG;AAChB,YAAY,SAAS;AACrB,QAAQ,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AAC/B,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AAC/D,gBAAgB,SAAS;AACzB,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3C,YAAY,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACvC,YAAY,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC;AAC9C,SAAS;AACT,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;AAChC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/state.ts","../src/tags.ts","../src/router.ts","../src/helpers.ts","../src/styles.ts"],"sourcesContent":["export const STATE = Symbol(\"STATE\");\nexport function isState(x) {\n return typeof x === \"object\" && x !== null && x[STATE] === true;\n}\nlet currentEffect = null;\nfunction track(st) {\n if (currentEffect) {\n st.subs.add(currentEffect);\n currentEffect.deps.add(st);\n }\n}\nfunction cleanup(effect) {\n for (const st of effect.deps)\n st.subs.delete(effect);\n effect.deps.clear();\n}\nexport function state(v) {\n const st = {\n [STATE]: true,\n subs: new Set(),\n get val() {\n track(st);\n return v;\n },\n set val(nv) {\n if (nv === v)\n return;\n v = nv;\n for (const fn of Array.from(st.subs)) {\n fn();\n }\n }\n };\n return st;\n}\nexport function derive(fn) {\n const effect = (() => {\n cleanup(effect);\n currentEffect = effect;\n try {\n fn();\n }\n finally {\n currentEffect = null;\n }\n });\n effect.deps = new Set();\n effect();\n return effect;\n}\n","import { derive } from \"./state\";\nfunction isState(x) {\n return x && typeof x === \"object\" && \"subs\" in x && \"val\" in x;\n}\n// --- Attribute detection (fix for TypeScript narrowing) ---\nfunction isAttrs(x) {\n return (x &&\n typeof x === \"object\" &&\n !(x instanceof Node) &&\n !isState(x) &&\n typeof x !== \"function\" &&\n !Array.isArray(x));\n}\nexport const tags = new Proxy({}, {\n get(_, tag) {\n return (attrsOrChild, ...children) => {\n const el = document.createElement(tag);\n // Handle attributes safely\n if (isAttrs(attrsOrChild)) {\n for (const [k, v] of Object.entries(attrsOrChild)) {\n el.setAttribute(k, String(v));\n }\n }\n else if (attrsOrChild != null) {\n // Now TypeScript knows it's ChildLike, not Attrs\n children.unshift(attrsOrChild);\n }\n processChildren(el, children);\n return el;\n };\n }\n});\nfunction processChildren(el, children) {\n for (const child of children.flat()) {\n if (child == null || child === false)\n continue;\n if (typeof child === \"function\") {\n mountReactiveFunction(el, child);\n continue;\n }\n if (isState(child)) {\n mountReactiveState(el, child);\n continue;\n }\n if (child instanceof Node) {\n el.appendChild(child);\n continue;\n }\n el.appendChild(document.createTextNode(String(child)));\n }\n}\nfunction mountReactiveFunction(parent, fn) {\n const marker = document.createTextNode(\"\");\n parent.appendChild(marker);\n let mounted = [];\n const cleanup = () => {\n for (const n of mounted) {\n if (n.parentNode === parent)\n parent.removeChild(n);\n }\n mounted = [];\n };\n derive(() => {\n cleanup();\n const value = fn();\n const values = Array.isArray(value) ? value.flat() : [value];\n for (const v of values) {\n if (v == null || v === false)\n continue;\n if (typeof v === \"function\") {\n mountReactiveFunction(parent, v);\n continue;\n }\n if (isState(v)) {\n const node = document.createTextNode(String(v.val));\n parent.insertBefore(node, marker);\n v.subs.add(() => {\n const next = String(v.val);\n if (node.data !== next)\n node.data = next;\n });\n mounted.push(node);\n continue;\n }\n if (v instanceof Node) {\n parent.insertBefore(v, marker);\n mounted.push(v);\n continue;\n }\n const text = document.createTextNode(String(v));\n parent.insertBefore(text, marker);\n mounted.push(text);\n }\n });\n}\nfunction mountReactiveState(parent, st) {\n const node = document.createTextNode(String(st.val));\n parent.appendChild(node);\n st.subs.add(() => {\n const next = String(st.val);\n if (node.data !== next)\n node.data = next;\n });\n}\n","export function router(routes) {\n const patterns = [];\n let wildcard = null;\n for (const path of Object.keys(routes)) {\n const handler = routes[path];\n if (!handler)\n continue;\n if (path === \"*\") {\n wildcard = handler;\n continue;\n }\n const keys = [];\n const pattern = path.replace(/:[^/]+/g, (m) => {\n keys.push(m.slice(1));\n return \"([^/]+)\";\n });\n patterns.push({\n regex: new RegExp(`^${pattern}$`),\n keys,\n handler\n });\n }\n let currentEl = null;\n let currentPath = \"\";\n function parseQuery(search) {\n const params = {};\n if (!search)\n return params;\n for (const [k, v] of new URLSearchParams(search))\n params[k] = v;\n return params;\n }\n function matchRoute(pathname) {\n for (const { regex, keys, handler } of patterns) {\n const match = pathname.match(regex);\n if (!match)\n continue;\n const params = {};\n keys.forEach((key, i) => {\n params[key] = decodeURIComponent(match[i + 1]);\n });\n Object.assign(params, parseQuery(location.search));\n return handler(params);\n }\n if (wildcard)\n return wildcard({});\n throw new Error(`No route matches \"${pathname}\"`);\n }\n function render() {\n const newFullPath = location.pathname + location.search;\n if (newFullPath === currentPath)\n return;\n currentPath = newFullPath;\n const next = matchRoute(location.pathname);\n if (currentEl && currentEl.parentNode) {\n document.body.removeChild(currentEl);\n }\n document.body.appendChild(next);\n currentEl = next;\n }\n window.addEventListener(\"popstate\", render);\n render();\n return {\n render,\n push(path) {\n history.pushState(null, \"\", path);\n render();\n },\n replace(path) {\n history.replaceState(null, \"\", path);\n render();\n },\n back: () => history.back()\n };\n}\n","export function add(component) {\n if (typeof component === \"function\") {\n const el = component();\n if (!(el instanceof HTMLElement)) {\n throw new Error(\"Component function must return an HTMLElement\");\n }\n document.body.appendChild(el);\n return;\n }\n if (\"render\" in component && typeof component.render === \"function\") {\n component.render();\n return;\n }\n throw new Error(\"Invalid component passed to add()\");\n}\n","let styleElement = null;\nlet styleSheet = null;\nfunction ensureStyleSheet() {\n if (!styleSheet) {\n if (!styleElement) {\n styleElement = document.createElement(\"style\");\n styleElement.id = \"styles\";\n document.head.appendChild(styleElement);\n }\n styleSheet = styleElement.sheet;\n }\n return styleSheet;\n}\nconst camelToKebabCache = new Map();\nfunction camelToKebab(str) {\n const cached = camelToKebabCache.get(str);\n if (cached)\n return cached;\n const result = str.replace(/[A-Z]/g, m => \"-\" + m.toLowerCase());\n camelToKebabCache.set(str, result);\n return result;\n}\nconst atomicClassCache = new Map();\nlet atomicCounter = 0;\nfunction nextAtomicClass() {\n return `a-${atomicCounter++}`;\n}\nfunction registerAtomicRule(selector, decl) {\n const key = `${selector}|${decl}`;\n const cached = atomicClassCache.get(key);\n if (cached)\n return cached;\n const className = nextAtomicClass();\n atomicClassCache.set(key, className);\n ensureStyleSheet().insertRule(`${selector.replace(/&/g, `.${className}`)}{${decl}}`, styleSheet.cssRules.length);\n return className;\n}\nconst KEYFRAMES_PREFIX = \"@keyframes \";\nconst keyframeCache = new Map();\nlet keyframeCounter = 0;\nfunction registerKeyframes(name, frames) {\n const signature = name + JSON.stringify(frames);\n const cached = keyframeCache.get(signature);\n if (cached)\n return cached;\n const unique = `${name}-${keyframeCounter++}`;\n const steps = [];\n for (const step in frames) {\n const decls = stringifyDecls(frames[step] ?? {}, new Map());\n steps.push(`${step}{${decls}}`);\n }\n ensureStyleSheet().insertRule(`@keyframes ${unique}{${steps.join(\"\")}}`, styleSheet.cssRules.length);\n keyframeCache.set(signature, unique);\n return unique;\n}\nfunction stringifyDecls(props, keyframes) {\n const out = [];\n for (const key in props) {\n const raw = props[key];\n if (raw == null || typeof raw === \"object\")\n continue;\n let val = typeof raw === \"function\" ? raw() : raw;\n if (typeof val === \"string\") {\n for (const [orig, uniq] of keyframes) {\n val = val.replaceAll(`$${orig}`, uniq);\n }\n }\n out.push(`${camelToKebab(key)}:${val}`);\n }\n return out.join(\";\");\n}\nfunction buildAtomicClasses(rule, keyframes) {\n const classes = [];\n for (const key in rule) {\n const val = rule[key];\n if (!val)\n continue;\n if (key[0] === \":\" && typeof val === \"object\") {\n const decls = stringifyDecls(val, keyframes);\n if (!decls)\n continue;\n classes.push(registerAtomicRule(`&${key}`, decls));\n continue;\n }\n if (key.startsWith(\"@media\") && typeof val === \"object\") {\n const decls = stringifyDecls(val, keyframes);\n if (!decls)\n continue;\n const className = nextAtomicClass();\n atomicClassCache.set(`${key}|${decls}`, className);\n ensureStyleSheet().insertRule(`${key}{.${className}{${decls}}}`, styleSheet.cssRules.length);\n classes.push(className);\n continue;\n }\n if (typeof val !== \"object\") {\n let resolved = typeof val === \"function\" ? val() : val;\n if (typeof resolved === \"string\") {\n for (const [orig, uniq] of keyframes) {\n resolved = resolved.replaceAll(`$${orig}`, uniq);\n }\n }\n const decl = `${camelToKebab(key)}:${resolved}`;\n classes.push(registerAtomicRule(\"&\", decl));\n }\n }\n return classes;\n}\nexport function makeStyles(styles) {\n return () => {\n const classNames = {};\n const keyframesMap = new Map();\n for (const key in styles) {\n if (!key.startsWith(KEYFRAMES_PREFIX))\n continue;\n const name = key.slice(KEYFRAMES_PREFIX.length);\n const frames = styles[key];\n const unique = registerKeyframes(name, frames);\n keyframesMap.set(name, unique);\n }\n for (const slot in styles) {\n if (slot.startsWith(KEYFRAMES_PREFIX))\n continue;\n const rule = (styles[slot] ?? {});\n const classes = buildAtomicClasses(rule, keyframesMap);\n classNames[slot] = classes.join(\" \");\n }\n return classNames;\n };\n}\nexport const mergeClasses = (...classes) => classes.filter(Boolean).join(\" \");\nexport function mergeStyleSets(...sets) {\n const merged = {};\n for (const set of sets) {\n if (!set)\n continue;\n for (const key in set) {\n const prev = merged[key] ?? {};\n const cur = set[key] ?? {};\n merged[key] = { ...prev, ...cur };\n }\n }\n return makeStyles(merged)();\n}\n"],"names":["isState"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -249,22 +249,8 @@ function add(component) {
|
|
|
249
249
|
throw new Error("Invalid component passed to add()");
|
|
250
250
|
}
|
|
251
251
|
|
|
252
|
-
const styleCache = new Map();
|
|
253
|
-
const keyframeCache = new Map();
|
|
254
252
|
let styleElement = null;
|
|
255
253
|
let styleSheet = null;
|
|
256
|
-
const ALLOWED_PREFIXES = [
|
|
257
|
-
"root",
|
|
258
|
-
"button",
|
|
259
|
-
"icon",
|
|
260
|
-
"text",
|
|
261
|
-
"container",
|
|
262
|
-
"wrapper",
|
|
263
|
-
"card",
|
|
264
|
-
"header",
|
|
265
|
-
"section",
|
|
266
|
-
];
|
|
267
|
-
const KEYFRAMES_PREFIX = "@keyframes ";
|
|
268
254
|
function ensureStyleSheet() {
|
|
269
255
|
if (!styleSheet) {
|
|
270
256
|
if (!styleElement) {
|
|
@@ -276,131 +262,105 @@ function ensureStyleSheet() {
|
|
|
276
262
|
}
|
|
277
263
|
return styleSheet;
|
|
278
264
|
}
|
|
279
|
-
function hashString(str) {
|
|
280
|
-
let hash = 5381;
|
|
281
|
-
for (let i = 0; i < str.length; i++) {
|
|
282
|
-
hash = (hash * 33) ^ str.charCodeAt(i);
|
|
283
|
-
}
|
|
284
|
-
return (hash >>> 0).toString(36);
|
|
285
|
-
}
|
|
286
265
|
const camelToKebabCache = new Map();
|
|
287
266
|
function camelToKebab(str) {
|
|
288
267
|
const cached = camelToKebabCache.get(str);
|
|
289
268
|
if (cached)
|
|
290
269
|
return cached;
|
|
291
|
-
const result = str.replace(/[A-Z]/g,
|
|
270
|
+
const result = str.replace(/[A-Z]/g, m => "-" + m.toLowerCase());
|
|
292
271
|
camelToKebabCache.set(str, result);
|
|
293
272
|
return result;
|
|
294
273
|
}
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
274
|
+
const atomicClassCache = new Map();
|
|
275
|
+
let atomicCounter = 0;
|
|
276
|
+
function nextAtomicClass() {
|
|
277
|
+
return `a-${atomicCounter++}`;
|
|
278
|
+
}
|
|
279
|
+
function registerAtomicRule(selector, decl) {
|
|
280
|
+
const key = `${selector}|${decl}`;
|
|
281
|
+
const cached = atomicClassCache.get(key);
|
|
282
|
+
if (cached)
|
|
283
|
+
return cached;
|
|
284
|
+
const className = nextAtomicClass();
|
|
285
|
+
atomicClassCache.set(key, className);
|
|
286
|
+
ensureStyleSheet().insertRule(`${selector.replace(/&/g, `.${className}`)}{${decl}}`, styleSheet.cssRules.length);
|
|
287
|
+
return className;
|
|
288
|
+
}
|
|
289
|
+
const KEYFRAMES_PREFIX = "@keyframes ";
|
|
290
|
+
const keyframeCache = new Map();
|
|
291
|
+
let keyframeCounter = 0;
|
|
292
|
+
function registerKeyframes(name, frames) {
|
|
293
|
+
const signature = name + JSON.stringify(frames);
|
|
294
|
+
const cached = keyframeCache.get(signature);
|
|
295
|
+
if (cached)
|
|
296
|
+
return cached;
|
|
297
|
+
const unique = `${name}-${keyframeCounter++}`;
|
|
298
|
+
const steps = [];
|
|
299
|
+
for (const step in frames) {
|
|
300
|
+
const decls = stringifyDecls(frames[step] ?? {}, new Map());
|
|
301
|
+
steps.push(`${step}{${decls}}`);
|
|
309
302
|
}
|
|
310
|
-
|
|
311
|
-
|
|
303
|
+
ensureStyleSheet().insertRule(`@keyframes ${unique}{${steps.join("")}}`, styleSheet.cssRules.length);
|
|
304
|
+
keyframeCache.set(signature, unique);
|
|
305
|
+
return unique;
|
|
312
306
|
}
|
|
313
307
|
function stringifyDecls(props, keyframes) {
|
|
314
308
|
const out = [];
|
|
315
309
|
for (const key in props) {
|
|
316
|
-
if (!Object.prototype.hasOwnProperty.call(props, key))
|
|
317
|
-
continue;
|
|
318
310
|
const raw = props[key];
|
|
319
311
|
if (raw == null || typeof raw === "object")
|
|
320
312
|
continue;
|
|
321
313
|
let val = typeof raw === "function" ? raw() : raw;
|
|
322
|
-
if (typeof val === "string"
|
|
314
|
+
if (typeof val === "string") {
|
|
323
315
|
for (const [orig, uniq] of keyframes) {
|
|
324
|
-
|
|
325
|
-
val = val.replaceAll(`$${orig}`, uniq);
|
|
326
|
-
}
|
|
316
|
+
val = val.replaceAll(`$${orig}`, uniq);
|
|
327
317
|
}
|
|
328
318
|
}
|
|
329
319
|
out.push(`${camelToKebab(key)}:${val}`);
|
|
330
320
|
}
|
|
331
321
|
return out.join(";");
|
|
332
322
|
}
|
|
333
|
-
function
|
|
334
|
-
const
|
|
335
|
-
const unique = `${name}-${hash}`;
|
|
336
|
-
const cached = keyframeCache.get(unique);
|
|
337
|
-
if (cached)
|
|
338
|
-
return cached;
|
|
339
|
-
const sheet = ensureStyleSheet();
|
|
340
|
-
const steps = [];
|
|
341
|
-
for (const step in frames) {
|
|
342
|
-
if (!Object.prototype.hasOwnProperty.call(frames, step))
|
|
343
|
-
continue;
|
|
344
|
-
const decls = stringifyDecls(frames[step] ?? {}, new Map());
|
|
345
|
-
steps.push(`${step}{${decls}}`);
|
|
346
|
-
}
|
|
347
|
-
const ruleText = `@keyframes ${unique}{${steps.join("")}}`;
|
|
348
|
-
sheet.insertRule(ruleText, sheet.cssRules.length);
|
|
349
|
-
keyframeCache.set(unique, unique);
|
|
350
|
-
return unique;
|
|
351
|
-
}
|
|
352
|
-
function buildRules(className, rule, keyframes) {
|
|
353
|
-
const rules = [];
|
|
354
|
-
const baseDecls = [];
|
|
323
|
+
function buildAtomicClasses(rule, keyframes) {
|
|
324
|
+
const classes = [];
|
|
355
325
|
for (const key in rule) {
|
|
356
|
-
if (!Object.prototype.hasOwnProperty.call(rule, key))
|
|
357
|
-
continue;
|
|
358
326
|
const val = rule[key];
|
|
359
|
-
if (key.startsWith("@keyframes")) {
|
|
360
|
-
continue;
|
|
361
|
-
}
|
|
362
327
|
if (!val)
|
|
363
328
|
continue;
|
|
364
329
|
if (key[0] === ":" && typeof val === "object") {
|
|
365
|
-
const decls = stringifyDecls(val
|
|
366
|
-
if (decls)
|
|
367
|
-
|
|
368
|
-
}
|
|
330
|
+
const decls = stringifyDecls(val, keyframes);
|
|
331
|
+
if (!decls)
|
|
332
|
+
continue;
|
|
333
|
+
classes.push(registerAtomicRule(`&${key}`, decls));
|
|
369
334
|
continue;
|
|
370
335
|
}
|
|
371
336
|
if (key.startsWith("@media") && typeof val === "object") {
|
|
372
|
-
const decls = stringifyDecls(val
|
|
373
|
-
if (decls)
|
|
374
|
-
|
|
375
|
-
|
|
337
|
+
const decls = stringifyDecls(val, keyframes);
|
|
338
|
+
if (!decls)
|
|
339
|
+
continue;
|
|
340
|
+
const className = nextAtomicClass();
|
|
341
|
+
atomicClassCache.set(`${key}|${decls}`, className);
|
|
342
|
+
ensureStyleSheet().insertRule(`${key}{.${className}{${decls}}}`, styleSheet.cssRules.length);
|
|
343
|
+
classes.push(className);
|
|
376
344
|
continue;
|
|
377
345
|
}
|
|
378
|
-
if (
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
346
|
+
if (typeof val !== "object") {
|
|
347
|
+
let resolved = typeof val === "function" ? val() : val;
|
|
348
|
+
if (typeof resolved === "string") {
|
|
349
|
+
for (const [orig, uniq] of keyframes) {
|
|
350
|
+
resolved = resolved.replaceAll(`$${orig}`, uniq);
|
|
351
|
+
}
|
|
383
352
|
}
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
if (!key.startsWith("@") && typeof val !== "object") {
|
|
387
|
-
const raw = typeof val === "function" ? val() : val;
|
|
388
|
-
baseDecls.push(`${camelToKebab(key)}:${raw}`);
|
|
353
|
+
const decl = `${camelToKebab(key)}:${resolved}`;
|
|
354
|
+
classes.push(registerAtomicRule("&", decl));
|
|
389
355
|
}
|
|
390
356
|
}
|
|
391
|
-
|
|
392
|
-
rules.push(`.${className}{${baseDecls.join(";")}}`);
|
|
393
|
-
}
|
|
394
|
-
return rules;
|
|
357
|
+
return classes;
|
|
395
358
|
}
|
|
396
359
|
function makeStyles(styles) {
|
|
397
360
|
return () => {
|
|
398
361
|
const classNames = {};
|
|
399
362
|
const keyframesMap = new Map();
|
|
400
|
-
const sheet = ensureStyleSheet();
|
|
401
363
|
for (const key in styles) {
|
|
402
|
-
if (!Object.prototype.hasOwnProperty.call(styles, key))
|
|
403
|
-
continue;
|
|
404
364
|
if (!key.startsWith(KEYFRAMES_PREFIX))
|
|
405
365
|
continue;
|
|
406
366
|
const name = key.slice(KEYFRAMES_PREFIX.length);
|
|
@@ -409,23 +369,11 @@ function makeStyles(styles) {
|
|
|
409
369
|
keyframesMap.set(name, unique);
|
|
410
370
|
}
|
|
411
371
|
for (const slot in styles) {
|
|
412
|
-
if (!Object.prototype.hasOwnProperty.call(styles, slot))
|
|
413
|
-
continue;
|
|
414
372
|
if (slot.startsWith(KEYFRAMES_PREFIX))
|
|
415
373
|
continue;
|
|
416
|
-
const rule = styles[slot];
|
|
417
|
-
const
|
|
418
|
-
|
|
419
|
-
? `${slot}-${hash}`
|
|
420
|
-
: `css-${hash}`;
|
|
421
|
-
if (!styleCache.has(className)) {
|
|
422
|
-
const rules = buildRules(className, rule, keyframesMap);
|
|
423
|
-
for (const r of rules) {
|
|
424
|
-
sheet.insertRule(r, sheet.cssRules.length);
|
|
425
|
-
}
|
|
426
|
-
styleCache.set(className, true);
|
|
427
|
-
}
|
|
428
|
-
classNames[slot] = className;
|
|
374
|
+
const rule = (styles[slot] ?? {});
|
|
375
|
+
const classes = buildAtomicClasses(rule, keyframesMap);
|
|
376
|
+
classNames[slot] = classes.join(" ");
|
|
429
377
|
}
|
|
430
378
|
return classNames;
|
|
431
379
|
};
|
|
@@ -437,8 +385,6 @@ function mergeStyleSets(...sets) {
|
|
|
437
385
|
if (!set)
|
|
438
386
|
continue;
|
|
439
387
|
for (const key in set) {
|
|
440
|
-
if (!Object.prototype.hasOwnProperty.call(set, key))
|
|
441
|
-
continue;
|
|
442
388
|
const prev = merged[key] ?? {};
|
|
443
389
|
const cur = set[key] ?? {};
|
|
444
390
|
merged[key] = { ...prev, ...cur };
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/state.ts","../src/tags.ts","../src/router.ts","../src/helpers.ts","../src/styles.ts"],"sourcesContent":["export const STATE = Symbol(\"STATE\");\nexport function isState(x) {\n return typeof x === \"object\" && x !== null && x[STATE] === true;\n}\nlet currentEffect = null;\nfunction track(st) {\n if (currentEffect) {\n st.subs.add(currentEffect);\n currentEffect.deps.add(st);\n }\n}\nfunction cleanup(effect) {\n for (const st of effect.deps)\n st.subs.delete(effect);\n effect.deps.clear();\n}\nexport function state(v) {\n const st = {\n [STATE]: true,\n subs: new Set(),\n get val() {\n track(st);\n return v;\n },\n set val(nv) {\n if (nv === v)\n return;\n v = nv;\n for (const fn of Array.from(st.subs)) {\n fn();\n }\n }\n };\n return st;\n}\nexport function derive(fn) {\n const effect = (() => {\n cleanup(effect);\n currentEffect = effect;\n try {\n fn();\n }\n finally {\n currentEffect = null;\n }\n });\n effect.deps = new Set();\n effect();\n return effect;\n}\n","import { derive } from \"./state\";\nfunction isState(x) {\n return x && typeof x === \"object\" && \"subs\" in x && \"val\" in x;\n}\n// --- Attribute detection (fix for TypeScript narrowing) ---\nfunction isAttrs(x) {\n return (x &&\n typeof x === \"object\" &&\n !(x instanceof Node) &&\n !isState(x) &&\n typeof x !== \"function\" &&\n !Array.isArray(x));\n}\nexport const tags = new Proxy({}, {\n get(_, tag) {\n return (attrsOrChild, ...children) => {\n const el = document.createElement(tag);\n // Handle attributes safely\n if (isAttrs(attrsOrChild)) {\n for (const [k, v] of Object.entries(attrsOrChild)) {\n el.setAttribute(k, String(v));\n }\n }\n else if (attrsOrChild != null) {\n // Now TypeScript knows it's ChildLike, not Attrs\n children.unshift(attrsOrChild);\n }\n processChildren(el, children);\n return el;\n };\n }\n});\nfunction processChildren(el, children) {\n for (const child of children.flat()) {\n if (child == null || child === false)\n continue;\n if (typeof child === \"function\") {\n mountReactiveFunction(el, child);\n continue;\n }\n if (isState(child)) {\n mountReactiveState(el, child);\n continue;\n }\n if (child instanceof Node) {\n el.appendChild(child);\n continue;\n }\n el.appendChild(document.createTextNode(String(child)));\n }\n}\nfunction mountReactiveFunction(parent, fn) {\n const marker = document.createTextNode(\"\");\n parent.appendChild(marker);\n let mounted = [];\n const cleanup = () => {\n for (const n of mounted) {\n if (n.parentNode === parent)\n parent.removeChild(n);\n }\n mounted = [];\n };\n derive(() => {\n cleanup();\n const value = fn();\n const values = Array.isArray(value) ? value.flat() : [value];\n for (const v of values) {\n if (v == null || v === false)\n continue;\n if (typeof v === \"function\") {\n mountReactiveFunction(parent, v);\n continue;\n }\n if (isState(v)) {\n const node = document.createTextNode(String(v.val));\n parent.insertBefore(node, marker);\n v.subs.add(() => {\n const next = String(v.val);\n if (node.data !== next)\n node.data = next;\n });\n mounted.push(node);\n continue;\n }\n if (v instanceof Node) {\n parent.insertBefore(v, marker);\n mounted.push(v);\n continue;\n }\n const text = document.createTextNode(String(v));\n parent.insertBefore(text, marker);\n mounted.push(text);\n }\n });\n}\nfunction mountReactiveState(parent, st) {\n const node = document.createTextNode(String(st.val));\n parent.appendChild(node);\n st.subs.add(() => {\n const next = String(st.val);\n if (node.data !== next)\n node.data = next;\n });\n}\n","export function router(routes) {\n const patterns = [];\n let wildcard = null;\n for (const path of Object.keys(routes)) {\n const handler = routes[path];\n if (!handler)\n continue;\n if (path === \"*\") {\n wildcard = handler;\n continue;\n }\n const keys = [];\n const pattern = path.replace(/:[^/]+/g, (m) => {\n keys.push(m.slice(1));\n return \"([^/]+)\";\n });\n patterns.push({\n regex: new RegExp(`^${pattern}$`),\n keys,\n handler\n });\n }\n let currentEl = null;\n let currentPath = \"\";\n function parseQuery(search) {\n const params = {};\n if (!search)\n return params;\n for (const [k, v] of new URLSearchParams(search))\n params[k] = v;\n return params;\n }\n function matchRoute(pathname) {\n for (const { regex, keys, handler } of patterns) {\n const match = pathname.match(regex);\n if (!match)\n continue;\n const params = {};\n keys.forEach((key, i) => {\n params[key] = decodeURIComponent(match[i + 1]);\n });\n Object.assign(params, parseQuery(location.search));\n return handler(params);\n }\n if (wildcard)\n return wildcard({});\n throw new Error(`No route matches \"${pathname}\"`);\n }\n function render() {\n const newFullPath = location.pathname + location.search;\n if (newFullPath === currentPath)\n return;\n currentPath = newFullPath;\n const next = matchRoute(location.pathname);\n if (currentEl && currentEl.parentNode) {\n document.body.removeChild(currentEl);\n }\n document.body.appendChild(next);\n currentEl = next;\n }\n window.addEventListener(\"popstate\", render);\n render();\n return {\n render,\n push(path) {\n history.pushState(null, \"\", path);\n render();\n },\n replace(path) {\n history.replaceState(null, \"\", path);\n render();\n },\n back: () => history.back()\n };\n}\n","export function add(component) {\n if (typeof component === \"function\") {\n const el = component();\n if (!(el instanceof HTMLElement)) {\n throw new Error(\"Component function must return an HTMLElement\");\n }\n document.body.appendChild(el);\n return;\n }\n if (\"render\" in component && typeof component.render === \"function\") {\n component.render();\n return;\n }\n throw new Error(\"Invalid component passed to add()\");\n}\n","const styleCache = new Map();\nconst keyframeCache = new Map();\nlet styleElement = null;\nlet styleSheet = null;\nconst ALLOWED_PREFIXES = [\n \"root\",\n \"button\",\n \"icon\",\n \"text\",\n \"container\",\n \"wrapper\",\n \"card\",\n \"header\",\n \"section\",\n];\nconst KEYFRAMES_PREFIX = \"@keyframes \";\nfunction ensureStyleSheet() {\n if (!styleSheet) {\n if (!styleElement) {\n styleElement = document.createElement(\"style\");\n styleElement.id = \"styles\";\n document.head.appendChild(styleElement);\n }\n styleSheet = styleElement.sheet;\n }\n return styleSheet;\n}\nfunction hashString(str) {\n let hash = 5381;\n for (let i = 0; i < str.length; i++) {\n hash = (hash * 33) ^ str.charCodeAt(i);\n }\n return (hash >>> 0).toString(36);\n}\nconst camelToKebabCache = new Map();\nfunction camelToKebab(str) {\n const cached = camelToKebabCache.get(str);\n if (cached)\n return cached;\n const result = str.replace(/[A-Z]/g, (m) => \"-\" + m.toLowerCase());\n camelToKebabCache.set(str, result);\n return result;\n}\nfunction stableHashRule(rule) {\n const parts = [];\n for (const key in rule) {\n if (!Object.prototype.hasOwnProperty.call(rule, key))\n continue;\n const val = rule[key];\n if (key.startsWith(\"@\") || typeof val === \"object\" || val == null)\n continue;\n let v;\n if (typeof val === \"function\")\n v = val.toString();\n else\n v = String(val);\n parts.push(`${key}:${v}`);\n }\n parts.sort();\n return hashString(parts.join(\"|\"));\n}\nfunction stringifyDecls(props, keyframes) {\n const out = [];\n for (const key in props) {\n if (!Object.prototype.hasOwnProperty.call(props, key))\n continue;\n const raw = props[key];\n if (raw == null || typeof raw === \"object\")\n continue;\n let val = typeof raw === \"function\" ? raw() : raw;\n if (typeof val === \"string\" && keyframes.size > 0) {\n for (const [orig, uniq] of keyframes) {\n if (val.includes(`$${orig}`)) {\n val = val.replaceAll(`$${orig}`, uniq);\n }\n }\n }\n out.push(`${camelToKebab(key)}:${val}`);\n }\n return out.join(\";\");\n}\nfunction registerKeyframes(name, frames) {\n const hash = hashString(name + JSON.stringify(frames));\n const unique = `${name}-${hash}`;\n const cached = keyframeCache.get(unique);\n if (cached)\n return cached;\n const sheet = ensureStyleSheet();\n const steps = [];\n for (const step in frames) {\n if (!Object.prototype.hasOwnProperty.call(frames, step))\n continue;\n const decls = stringifyDecls(frames[step] ?? {}, new Map());\n steps.push(`${step}{${decls}}`);\n }\n const ruleText = `@keyframes ${unique}{${steps.join(\"\")}}`;\n sheet.insertRule(ruleText, sheet.cssRules.length);\n keyframeCache.set(unique, unique);\n return unique;\n}\nfunction buildRules(className, rule, keyframes) {\n const rules = [];\n const baseDecls = [];\n for (const key in rule) {\n if (!Object.prototype.hasOwnProperty.call(rule, key))\n continue;\n const val = rule[key];\n if (key.startsWith(\"@keyframes\")) {\n continue;\n }\n if (!val)\n continue;\n if (key[0] === \":\" && typeof val === \"object\") {\n const decls = stringifyDecls(val ?? {}, keyframes);\n if (decls) {\n rules.push(`.${className}${key}{${decls}}`);\n }\n continue;\n }\n if (key.startsWith(\"@media\") && typeof val === \"object\") {\n const decls = stringifyDecls(val ?? {}, keyframes);\n if (decls) {\n rules.push(`${key}{.${className}{${decls}}}`);\n }\n continue;\n }\n if (key.includes(\"&\") && typeof val === \"object\") {\n const selector = key.replace(/&/g, `.${className}`);\n const decls = stringifyDecls(val ?? {}, keyframes);\n if (decls) {\n rules.push(`${selector}{${decls}}`);\n }\n continue;\n }\n if (!key.startsWith(\"@\") && typeof val !== \"object\") {\n const raw = typeof val === \"function\" ? val() : val;\n baseDecls.push(`${camelToKebab(key)}:${raw}`);\n }\n }\n if (baseDecls.length > 0) {\n rules.push(`.${className}{${baseDecls.join(\";\")}}`);\n }\n return rules;\n}\nexport function makeStyles(styles) {\n return () => {\n const classNames = {};\n const keyframesMap = new Map();\n const sheet = ensureStyleSheet();\n for (const key in styles) {\n if (!Object.prototype.hasOwnProperty.call(styles, key))\n continue;\n if (!key.startsWith(KEYFRAMES_PREFIX))\n continue;\n const name = key.slice(KEYFRAMES_PREFIX.length);\n const frames = styles[key];\n const unique = registerKeyframes(name, frames);\n keyframesMap.set(name, unique);\n }\n for (const slot in styles) {\n if (!Object.prototype.hasOwnProperty.call(styles, slot))\n continue;\n if (slot.startsWith(KEYFRAMES_PREFIX))\n continue;\n const rule = styles[slot];\n const hash = stableHashRule(rule);\n const className = ALLOWED_PREFIXES.includes(slot)\n ? `${slot}-${hash}`\n : `css-${hash}`;\n if (!styleCache.has(className)) {\n const rules = buildRules(className, rule, keyframesMap);\n for (const r of rules) {\n sheet.insertRule(r, sheet.cssRules.length);\n }\n styleCache.set(className, true);\n }\n classNames[slot] = className;\n }\n return classNames;\n };\n}\nexport const mergeClasses = (...classes) => classes.filter(Boolean).join(\" \");\nexport function mergeStyleSets(...sets) {\n const merged = {};\n for (const set of sets) {\n if (!set)\n continue;\n for (const key in set) {\n if (!Object.prototype.hasOwnProperty.call(set, key))\n continue;\n const prev = merged[key] ?? {};\n const cur = set[key] ?? {};\n merged[key] = { ...prev, ...cur };\n }\n }\n return makeStyles(merged)();\n}\n"],"names":["isState"],"mappings":";;;;AAAY,MAAC,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE;AAC9B,SAASA,SAAO,CAAC,CAAC,EAAE;AAC3B,IAAI,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACpE,CAAC;AACD,IAAI,aAAa,GAAG,IAAI,CAAC;AACzB,SAAS,KAAK,CAAC,EAAE,EAAE;AACnB,IAAI,IAAI,aAAa,EAAE;AACvB,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACnC,QAAQ,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACnC,KAAK;AACL,CAAC;AACD,SAAS,OAAO,CAAC,MAAM,EAAE;AACzB,IAAI,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI;AAChC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC;AACM,SAAS,KAAK,CAAC,CAAC,EAAE;AACzB,IAAI,MAAM,EAAE,GAAG;AACf,QAAQ,CAAC,KAAK,GAAG,IAAI;AACrB,QAAQ,IAAI,EAAE,IAAI,GAAG,EAAE;AACvB,QAAQ,IAAI,GAAG,GAAG;AAClB,YAAY,KAAK,CAAC,EAAE,CAAC,CAAC;AACtB,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS;AACT,QAAQ,IAAI,GAAG,CAAC,EAAE,EAAE;AACpB,YAAY,IAAI,EAAE,KAAK,CAAC;AACxB,gBAAgB,OAAO;AACvB,YAAY,CAAC,GAAG,EAAE,CAAC;AACnB,YAAY,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAClD,gBAAgB,EAAE,EAAE,CAAC;AACrB,aAAa;AACb,SAAS;AACT,KAAK,CAAC;AACN,IAAI,OAAO,EAAE,CAAC;AACd,CAAC;AACM,SAAS,MAAM,CAAC,EAAE,EAAE;AAC3B,IAAI,MAAM,MAAM,IAAI,MAAM;AAC1B,QAAQ,OAAO,CAAC,MAAM,CAAC,CAAC;AACxB,QAAQ,aAAa,GAAG,MAAM,CAAC;AAC/B,QAAQ,IAAI;AACZ,YAAY,EAAE,EAAE,CAAC;AACjB,SAAS;AACT,gBAAgB;AAChB,YAAY,aAAa,GAAG,IAAI,CAAC;AACjC,SAAS;AACT,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,OAAO,MAAM,CAAC;AAClB;;AChDA,SAAS,OAAO,CAAC,CAAC,EAAE;AACpB,IAAI,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACnE,CAAC;AACD;AACA,SAAS,OAAO,CAAC,CAAC,EAAE;AACpB,IAAI,QAAQ,CAAC;AACb,QAAQ,OAAO,CAAC,KAAK,QAAQ;AAC7B,QAAQ,EAAE,CAAC,YAAY,IAAI,CAAC;AAC5B,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACnB,QAAQ,OAAO,CAAC,KAAK,UAAU;AAC/B,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAC3B,CAAC;AACW,MAAC,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;AAClC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE;AAChB,QAAQ,OAAO,CAAC,YAAY,EAAE,GAAG,QAAQ,KAAK;AAC9C,YAAY,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACnD;AACA,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;AACvC,gBAAgB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AACnE,oBAAoB,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,iBAAiB;AACjB,aAAa;AACb,iBAAiB,IAAI,YAAY,IAAI,IAAI,EAAE;AAC3C;AACA,gBAAgB,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/C,aAAa;AACb,YAAY,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC1C,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS,CAAC;AACV,KAAK;AACL,CAAC,EAAE;AACH,SAAS,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE;AACvC,IAAI,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE;AACzC,QAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK;AAC5C,YAAY,SAAS;AACrB,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AACzC,YAAY,qBAAqB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7C,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAY,kBAAkB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC1C,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,KAAK,YAAY,IAAI,EAAE;AACnC,YAAY,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAClC,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/D,KAAK;AACL,CAAC;AACD,SAAS,qBAAqB,CAAC,MAAM,EAAE,EAAE,EAAE;AAC3C,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAC/C,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC/B,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;AACrB,IAAI,MAAM,OAAO,GAAG,MAAM;AAC1B,QAAQ,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;AACjC,YAAY,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM;AACvC,gBAAgB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACtC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE,CAAC;AACrB,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,MAAM;AACjB,QAAQ,OAAO,EAAE,CAAC;AAClB,QAAQ,MAAM,KAAK,GAAG,EAAE,EAAE,CAAC;AAC3B,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACrE,QAAQ,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;AAChC,YAAY,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK;AACxC,gBAAgB,SAAS;AACzB,YAAY,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE;AACzC,gBAAgB,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACjD,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;AAC5B,gBAAgB,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpE,gBAAgB,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAClD,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AACjC,oBAAoB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/C,oBAAoB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;AAC1C,wBAAwB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzC,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,IAAI,CAAC,YAAY,IAAI,EAAE;AACnC,gBAAgB,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC/C,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,YAAY,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,SAAS;AACT,KAAK,CAAC,CAAC;AACP,CAAC;AACD,SAAS,kBAAkB,CAAC,MAAM,EAAE,EAAE,EAAE;AACxC,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7B,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AACtB,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACpC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;AAC9B,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B,KAAK,CAAC,CAAC;AACP;;ACvGO,SAAS,MAAM,CAAC,MAAM,EAAE;AAC/B,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;AACxB,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC5C,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,OAAO;AACpB,YAAY,SAAS;AACrB,QAAQ,IAAI,IAAI,KAAK,GAAG,EAAE;AAC1B,YAAY,QAAQ,GAAG,OAAO,CAAC;AAC/B,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC;AACxB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK;AACvD,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS,CAAC,CAAC;AACX,QAAQ,QAAQ,CAAC,IAAI,CAAC;AACtB,YAAY,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAY,IAAI;AAChB,YAAY,OAAO;AACnB,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC;AACzB,IAAI,IAAI,WAAW,GAAG,EAAE,CAAC;AACzB,IAAI,SAAS,UAAU,CAAC,MAAM,EAAE;AAChC,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,MAAM;AACnB,YAAY,OAAO,MAAM,CAAC;AAC1B,QAAQ,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC;AACxD,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1B,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,SAAS,UAAU,CAAC,QAAQ,EAAE;AAClC,QAAQ,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,QAAQ,EAAE;AACzD,YAAY,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAChD,YAAY,IAAI,CAAC,KAAK;AACtB,gBAAgB,SAAS;AACzB,YAAY,MAAM,MAAM,GAAG,EAAE,CAAC;AAC9B,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AACrC,gBAAgB,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/D,aAAa,CAAC,CAAC;AACf,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/D,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACnC,SAAS;AACT,QAAQ,IAAI,QAAQ;AACpB,YAAY,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,KAAK;AACL,IAAI,SAAS,MAAM,GAAG;AACtB,QAAQ,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;AAChE,QAAQ,IAAI,WAAW,KAAK,WAAW;AACvC,YAAY,OAAO;AACnB,QAAQ,WAAW,GAAG,WAAW,CAAC;AAClC,QAAQ,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnD,QAAQ,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,EAAE;AAC/C,YAAY,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxC,QAAQ,SAAS,GAAG,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,OAAO;AACX,QAAQ,MAAM;AACd,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9C,YAAY,MAAM,EAAE,CAAC;AACrB,SAAS;AACT,QAAQ,OAAO,CAAC,IAAI,EAAE;AACtB,YAAY,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACjD,YAAY,MAAM,EAAE,CAAC;AACrB,SAAS;AACT,QAAQ,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,EAAE;AAClC,KAAK,CAAC;AACN;;AC1EO,SAAS,GAAG,CAAC,SAAS,EAAE;AAC/B,IAAI,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;AACzC,QAAQ,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;AAC/B,QAAQ,IAAI,EAAE,EAAE,YAAY,WAAW,CAAC,EAAE;AAC1C,YAAY,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;AAC7E,SAAS;AACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACtC,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,IAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,UAAU,EAAE;AACzE,QAAQ,SAAS,CAAC,MAAM,EAAE,CAAC;AAC3B,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACzD;;ACdA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;AAChC,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB,IAAI,UAAU,GAAG,IAAI,CAAC;AACtB,MAAM,gBAAgB,GAAG;AACzB,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,WAAW;AACf,IAAI,SAAS;AACb,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,CAAC,CAAC;AACF,MAAM,gBAAgB,GAAG,aAAa,CAAC;AACvC,SAAS,gBAAgB,GAAG;AAC5B,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,YAAY,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC3D,YAAY,YAAY,CAAC,EAAE,GAAG,QAAQ,CAAC;AACvC,YAAY,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AACpD,SAAS;AACT,QAAQ,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC;AACxC,KAAK;AACL,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC;AACD,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,QAAQ,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC;AACD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;AACpC,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,IAAI,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9C,IAAI,IAAI,MAAM;AACd,QAAQ,OAAO,MAAM,CAAC;AACtB,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACvE,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACvC,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,cAAc,CAAC,IAAI,EAAE;AAC9B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;AAC5D,YAAY,SAAS;AACrB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,IAAI;AACzE,YAAY,SAAS;AACrB,QAAQ,IAAI,CAAC,CAAC;AACd,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU;AACrC,YAAY,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC/B;AACA,YAAY,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AACjB,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AACD,SAAS,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE;AAC1C,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB,IAAI,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AAC7B,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;AAC7D,YAAY,SAAS;AACrB,QAAQ,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;AAClD,YAAY,SAAS;AACrB,QAAQ,IAAI,GAAG,GAAG,OAAO,GAAG,KAAK,UAAU,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AAC1D,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE;AAC3D,YAAY,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE;AAClD,gBAAgB,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;AAC9C,oBAAoB,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3D,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AACD,SAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE;AACzC,IAAI,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3D,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACrC,IAAI,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7C,IAAI,IAAI,MAAM;AACd,QAAQ,OAAO,MAAM,CAAC;AACtB,IAAI,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;AACrC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AAC/B,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/D,YAAY,SAAS;AACrB,QAAQ,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACpE,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtD,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtC,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;AAChD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,MAAM,SAAS,GAAG,EAAE,CAAC;AACzB,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;AAC5D,YAAY,SAAS;AACrB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;AAC1C,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG;AAChB,YAAY,SAAS;AACrB,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACvD,YAAY,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAC/D,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,aAAa;AACb,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjE,YAAY,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAC/D,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,aAAa;AACb,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC1D,YAAY,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAChE,YAAY,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAC/D,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,aAAa;AACb,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC7D,YAAY,MAAM,GAAG,GAAG,OAAO,GAAG,KAAK,UAAU,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AAChE,YAAY,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1D,SAAS;AACT,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACM,SAAS,UAAU,CAAC,MAAM,EAAE;AACnC,IAAI,OAAO,MAAM;AACjB,QAAQ,MAAM,UAAU,GAAG,EAAE,CAAC;AAC9B,QAAQ,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AACvC,QAAQ,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;AACzC,QAAQ,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AAClC,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;AAClE,gBAAgB,SAAS;AACzB,YAAY,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACjD,gBAAgB,SAAS;AACzB,YAAY,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC5D,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC,YAAY,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3D,YAAY,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AACnC,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACnE,gBAAgB,SAAS;AACzB,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACjD,gBAAgB,SAAS;AACzB,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACtC,YAAY,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9C,YAAY,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC7D,kBAAkB,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACnC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAChC,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AAC5C,gBAAgB,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AACxE,gBAAgB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACvC,oBAAoB,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/D,iBAAiB;AACjB,gBAAgB,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAChD,aAAa;AACb,YAAY,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AACzC,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK,CAAC;AACN,CAAC;AACW,MAAC,YAAY,GAAG,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;AACvE,SAAS,cAAc,CAAC,GAAG,IAAI,EAAE;AACxC,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,GAAG;AAChB,YAAY,SAAS;AACrB,QAAQ,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AAC/B,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AAC/D,gBAAgB,SAAS;AACzB,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3C,YAAY,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACvC,YAAY,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC;AAC9C,SAAS;AACT,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;AAChC;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/state.ts","../src/tags.ts","../src/router.ts","../src/helpers.ts","../src/styles.ts"],"sourcesContent":["export const STATE = Symbol(\"STATE\");\nexport function isState(x) {\n return typeof x === \"object\" && x !== null && x[STATE] === true;\n}\nlet currentEffect = null;\nfunction track(st) {\n if (currentEffect) {\n st.subs.add(currentEffect);\n currentEffect.deps.add(st);\n }\n}\nfunction cleanup(effect) {\n for (const st of effect.deps)\n st.subs.delete(effect);\n effect.deps.clear();\n}\nexport function state(v) {\n const st = {\n [STATE]: true,\n subs: new Set(),\n get val() {\n track(st);\n return v;\n },\n set val(nv) {\n if (nv === v)\n return;\n v = nv;\n for (const fn of Array.from(st.subs)) {\n fn();\n }\n }\n };\n return st;\n}\nexport function derive(fn) {\n const effect = (() => {\n cleanup(effect);\n currentEffect = effect;\n try {\n fn();\n }\n finally {\n currentEffect = null;\n }\n });\n effect.deps = new Set();\n effect();\n return effect;\n}\n","import { derive } from \"./state\";\nfunction isState(x) {\n return x && typeof x === \"object\" && \"subs\" in x && \"val\" in x;\n}\n// --- Attribute detection (fix for TypeScript narrowing) ---\nfunction isAttrs(x) {\n return (x &&\n typeof x === \"object\" &&\n !(x instanceof Node) &&\n !isState(x) &&\n typeof x !== \"function\" &&\n !Array.isArray(x));\n}\nexport const tags = new Proxy({}, {\n get(_, tag) {\n return (attrsOrChild, ...children) => {\n const el = document.createElement(tag);\n // Handle attributes safely\n if (isAttrs(attrsOrChild)) {\n for (const [k, v] of Object.entries(attrsOrChild)) {\n el.setAttribute(k, String(v));\n }\n }\n else if (attrsOrChild != null) {\n // Now TypeScript knows it's ChildLike, not Attrs\n children.unshift(attrsOrChild);\n }\n processChildren(el, children);\n return el;\n };\n }\n});\nfunction processChildren(el, children) {\n for (const child of children.flat()) {\n if (child == null || child === false)\n continue;\n if (typeof child === \"function\") {\n mountReactiveFunction(el, child);\n continue;\n }\n if (isState(child)) {\n mountReactiveState(el, child);\n continue;\n }\n if (child instanceof Node) {\n el.appendChild(child);\n continue;\n }\n el.appendChild(document.createTextNode(String(child)));\n }\n}\nfunction mountReactiveFunction(parent, fn) {\n const marker = document.createTextNode(\"\");\n parent.appendChild(marker);\n let mounted = [];\n const cleanup = () => {\n for (const n of mounted) {\n if (n.parentNode === parent)\n parent.removeChild(n);\n }\n mounted = [];\n };\n derive(() => {\n cleanup();\n const value = fn();\n const values = Array.isArray(value) ? value.flat() : [value];\n for (const v of values) {\n if (v == null || v === false)\n continue;\n if (typeof v === \"function\") {\n mountReactiveFunction(parent, v);\n continue;\n }\n if (isState(v)) {\n const node = document.createTextNode(String(v.val));\n parent.insertBefore(node, marker);\n v.subs.add(() => {\n const next = String(v.val);\n if (node.data !== next)\n node.data = next;\n });\n mounted.push(node);\n continue;\n }\n if (v instanceof Node) {\n parent.insertBefore(v, marker);\n mounted.push(v);\n continue;\n }\n const text = document.createTextNode(String(v));\n parent.insertBefore(text, marker);\n mounted.push(text);\n }\n });\n}\nfunction mountReactiveState(parent, st) {\n const node = document.createTextNode(String(st.val));\n parent.appendChild(node);\n st.subs.add(() => {\n const next = String(st.val);\n if (node.data !== next)\n node.data = next;\n });\n}\n","export function router(routes) {\n const patterns = [];\n let wildcard = null;\n for (const path of Object.keys(routes)) {\n const handler = routes[path];\n if (!handler)\n continue;\n if (path === \"*\") {\n wildcard = handler;\n continue;\n }\n const keys = [];\n const pattern = path.replace(/:[^/]+/g, (m) => {\n keys.push(m.slice(1));\n return \"([^/]+)\";\n });\n patterns.push({\n regex: new RegExp(`^${pattern}$`),\n keys,\n handler\n });\n }\n let currentEl = null;\n let currentPath = \"\";\n function parseQuery(search) {\n const params = {};\n if (!search)\n return params;\n for (const [k, v] of new URLSearchParams(search))\n params[k] = v;\n return params;\n }\n function matchRoute(pathname) {\n for (const { regex, keys, handler } of patterns) {\n const match = pathname.match(regex);\n if (!match)\n continue;\n const params = {};\n keys.forEach((key, i) => {\n params[key] = decodeURIComponent(match[i + 1]);\n });\n Object.assign(params, parseQuery(location.search));\n return handler(params);\n }\n if (wildcard)\n return wildcard({});\n throw new Error(`No route matches \"${pathname}\"`);\n }\n function render() {\n const newFullPath = location.pathname + location.search;\n if (newFullPath === currentPath)\n return;\n currentPath = newFullPath;\n const next = matchRoute(location.pathname);\n if (currentEl && currentEl.parentNode) {\n document.body.removeChild(currentEl);\n }\n document.body.appendChild(next);\n currentEl = next;\n }\n window.addEventListener(\"popstate\", render);\n render();\n return {\n render,\n push(path) {\n history.pushState(null, \"\", path);\n render();\n },\n replace(path) {\n history.replaceState(null, \"\", path);\n render();\n },\n back: () => history.back()\n };\n}\n","export function add(component) {\n if (typeof component === \"function\") {\n const el = component();\n if (!(el instanceof HTMLElement)) {\n throw new Error(\"Component function must return an HTMLElement\");\n }\n document.body.appendChild(el);\n return;\n }\n if (\"render\" in component && typeof component.render === \"function\") {\n component.render();\n return;\n }\n throw new Error(\"Invalid component passed to add()\");\n}\n","let styleElement = null;\nlet styleSheet = null;\nfunction ensureStyleSheet() {\n if (!styleSheet) {\n if (!styleElement) {\n styleElement = document.createElement(\"style\");\n styleElement.id = \"styles\";\n document.head.appendChild(styleElement);\n }\n styleSheet = styleElement.sheet;\n }\n return styleSheet;\n}\nconst camelToKebabCache = new Map();\nfunction camelToKebab(str) {\n const cached = camelToKebabCache.get(str);\n if (cached)\n return cached;\n const result = str.replace(/[A-Z]/g, m => \"-\" + m.toLowerCase());\n camelToKebabCache.set(str, result);\n return result;\n}\nconst atomicClassCache = new Map();\nlet atomicCounter = 0;\nfunction nextAtomicClass() {\n return `a-${atomicCounter++}`;\n}\nfunction registerAtomicRule(selector, decl) {\n const key = `${selector}|${decl}`;\n const cached = atomicClassCache.get(key);\n if (cached)\n return cached;\n const className = nextAtomicClass();\n atomicClassCache.set(key, className);\n ensureStyleSheet().insertRule(`${selector.replace(/&/g, `.${className}`)}{${decl}}`, styleSheet.cssRules.length);\n return className;\n}\nconst KEYFRAMES_PREFIX = \"@keyframes \";\nconst keyframeCache = new Map();\nlet keyframeCounter = 0;\nfunction registerKeyframes(name, frames) {\n const signature = name + JSON.stringify(frames);\n const cached = keyframeCache.get(signature);\n if (cached)\n return cached;\n const unique = `${name}-${keyframeCounter++}`;\n const steps = [];\n for (const step in frames) {\n const decls = stringifyDecls(frames[step] ?? {}, new Map());\n steps.push(`${step}{${decls}}`);\n }\n ensureStyleSheet().insertRule(`@keyframes ${unique}{${steps.join(\"\")}}`, styleSheet.cssRules.length);\n keyframeCache.set(signature, unique);\n return unique;\n}\nfunction stringifyDecls(props, keyframes) {\n const out = [];\n for (const key in props) {\n const raw = props[key];\n if (raw == null || typeof raw === \"object\")\n continue;\n let val = typeof raw === \"function\" ? raw() : raw;\n if (typeof val === \"string\") {\n for (const [orig, uniq] of keyframes) {\n val = val.replaceAll(`$${orig}`, uniq);\n }\n }\n out.push(`${camelToKebab(key)}:${val}`);\n }\n return out.join(\";\");\n}\nfunction buildAtomicClasses(rule, keyframes) {\n const classes = [];\n for (const key in rule) {\n const val = rule[key];\n if (!val)\n continue;\n if (key[0] === \":\" && typeof val === \"object\") {\n const decls = stringifyDecls(val, keyframes);\n if (!decls)\n continue;\n classes.push(registerAtomicRule(`&${key}`, decls));\n continue;\n }\n if (key.startsWith(\"@media\") && typeof val === \"object\") {\n const decls = stringifyDecls(val, keyframes);\n if (!decls)\n continue;\n const className = nextAtomicClass();\n atomicClassCache.set(`${key}|${decls}`, className);\n ensureStyleSheet().insertRule(`${key}{.${className}{${decls}}}`, styleSheet.cssRules.length);\n classes.push(className);\n continue;\n }\n if (typeof val !== \"object\") {\n let resolved = typeof val === \"function\" ? val() : val;\n if (typeof resolved === \"string\") {\n for (const [orig, uniq] of keyframes) {\n resolved = resolved.replaceAll(`$${orig}`, uniq);\n }\n }\n const decl = `${camelToKebab(key)}:${resolved}`;\n classes.push(registerAtomicRule(\"&\", decl));\n }\n }\n return classes;\n}\nexport function makeStyles(styles) {\n return () => {\n const classNames = {};\n const keyframesMap = new Map();\n for (const key in styles) {\n if (!key.startsWith(KEYFRAMES_PREFIX))\n continue;\n const name = key.slice(KEYFRAMES_PREFIX.length);\n const frames = styles[key];\n const unique = registerKeyframes(name, frames);\n keyframesMap.set(name, unique);\n }\n for (const slot in styles) {\n if (slot.startsWith(KEYFRAMES_PREFIX))\n continue;\n const rule = (styles[slot] ?? {});\n const classes = buildAtomicClasses(rule, keyframesMap);\n classNames[slot] = classes.join(\" \");\n }\n return classNames;\n };\n}\nexport const mergeClasses = (...classes) => classes.filter(Boolean).join(\" \");\nexport function mergeStyleSets(...sets) {\n const merged = {};\n for (const set of sets) {\n if (!set)\n continue;\n for (const key in set) {\n const prev = merged[key] ?? {};\n const cur = set[key] ?? {};\n merged[key] = { ...prev, ...cur };\n }\n }\n return makeStyles(merged)();\n}\n"],"names":["isState"],"mappings":"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"}
|
package/dist/index.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).MiniUI={})}(this,function(t){"use strict";const n=Symbol("STATE");let e=null;function o(t){const n=()=>{!function(t){for(const n of t.deps)n.subs.delete(t);t.deps.clear()}(n),e=n;try{t()}finally{e=null}};return n.deps=new Set,n(),n}function r(t){return t&&"object"==typeof t&&"subs"in t&&"val"in t}const
|
|
1
|
+
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).MiniUI={})}(this,function(t){"use strict";const n=Symbol("STATE");let e=null;function o(t){const n=()=>{!function(t){for(const n of t.deps)n.subs.delete(t);t.deps.clear()}(n),e=n;try{t()}finally{e=null}};return n.deps=new Set,n(),n}function r(t){return t&&"object"==typeof t&&"subs"in t&&"val"in t}const s=new Proxy({},{get:(t,n)=>(t,...e)=>{const o=document.createElement(n);if(!(s=t)||"object"!=typeof s||s instanceof Node||r(s)||"function"==typeof s||Array.isArray(s))null!=t&&e.unshift(t);else for(const[n,e]of Object.entries(t))o.setAttribute(n,String(e));var s;return function(t,n){for(const e of n.flat())null!=e&&!1!==e&&("function"!=typeof e?r(e)?i(t,e):e instanceof Node?t.appendChild(e):t.appendChild(document.createTextNode(String(e))):c(t,e))}(o,e),o}});function c(t,n){const e=document.createTextNode("");t.appendChild(e);let s=[];o(()=>{(()=>{for(const n of s)n.parentNode===t&&t.removeChild(n);s=[]})();const o=n(),i=Array.isArray(o)?o.flat():[o];for(const n of i){if(null==n||!1===n)continue;if("function"==typeof n){c(t,n);continue}if(r(n)){const o=document.createTextNode(String(n.val));t.insertBefore(o,e),n.subs.add(()=>{const t=String(n.val);o.data!==t&&(o.data=t)}),s.push(o);continue}if(n instanceof Node){t.insertBefore(n,e),s.push(n);continue}const o=document.createTextNode(String(n));t.insertBefore(o,e),s.push(o)}})}function i(t,n){const e=document.createTextNode(String(n.val));t.appendChild(e),n.subs.add(()=>{const t=String(n.val);e.data!==t&&(e.data=t)})}let f=null,u=null;function a(){return u||(f||(f=document.createElement("style"),f.id="styles",document.head.appendChild(f)),u=f.sheet),u}const l=new Map;function d(t){const n=l.get(t);if(n)return n;const e=t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase());return l.set(t,e),e}const p=new Map;let h=0;function y(){return"a-"+h++}function m(t,n){const e=`${t}|${n}`,o=p.get(e);if(o)return o;const r=y();return p.set(e,r),a().insertRule(`${t.replace(/&/g,`.${r}`)}{${n}}`,u.cssRules.length),r}const g="@keyframes ",b=new Map;let $=0;function S(t,n){const e=t+JSON.stringify(n),o=b.get(e);if(o)return o;const r=`${t}-${$++}`,s=[];for(const t in n){const e=w(n[t]??{},new Map);s.push(`${t}{${e}}`)}return a().insertRule(`@keyframes ${r}{${s.join("")}}`,u.cssRules.length),b.set(e,r),r}function w(t,n){const e=[];for(const o in t){const r=t[o];if(null==r||"object"==typeof r)continue;let s="function"==typeof r?r():r;if("string"==typeof s)for(const[t,e]of n)s=s.replaceAll(`$${t}`,e);e.push(`${d(o)}:${s}`)}return e.join(";")}function j(t,n){const e=[];for(const o in t){const r=t[o];if(r){if(":"===o[0]&&"object"==typeof r){const t=w(r,n);if(!t)continue;e.push(m(`&${o}`,t));continue}if(o.startsWith("@media")&&"object"==typeof r){const t=w(r,n);if(!t)continue;const s=y();p.set(`${o}|${t}`,s),a().insertRule(`${o}{.${s}{${t}}}`,u.cssRules.length),e.push(s);continue}if("object"!=typeof r){let t="function"==typeof r?r():r;if("string"==typeof t)for(const[e,o]of n)t=t.replaceAll(`$${e}`,o);const s=`${d(o)}:${t}`;e.push(m("&",s))}}}return e}function v(t){return()=>{const n={},e=new Map;for(const n in t){if(!n.startsWith(g))continue;const o=n.slice(11),r=S(o,t[n]);e.set(o,r)}for(const o in t){if(o.startsWith(g))continue;const r=j(t[o]??{},e);n[o]=r.join(" ")}return n}}t.STATE=n,t.add=function(t){if("function"==typeof t){const n=t();if(!(n instanceof HTMLElement))throw new Error("Component function must return an HTMLElement");return void document.body.appendChild(n)}if(!("render"in t)||"function"!=typeof t.render)throw new Error("Invalid component passed to add()");t.render()},t.derive=o,t.isState=function(t){return"object"==typeof t&&null!==t&&!0===t[n]},t.makeStyles=v,t.mergeClasses=(...t)=>t.filter(Boolean).join(" "),t.mergeStyleSets=function(...t){const n={};for(const e of t)if(e)for(const t in e){const o=n[t]??{},r=e[t]??{};n[t]={...o,...r}}return v(n)()},t.router=function(t){const n=[];let e=null;for(const o of Object.keys(t)){const r=t[o];if(!r)continue;if("*"===o){e=r;continue}const s=[],c=o.replace(/:[^/]+/g,t=>(s.push(t.slice(1)),"([^/]+)"));n.push({regex:new RegExp(`^${c}$`),keys:s,handler:r})}let o=null,r="";function s(t){const n={};if(!t)return n;for(const[e,o]of new URLSearchParams(t))n[e]=o;return n}function c(){const t=location.pathname+location.search;if(t===r)return;r=t;const c=function(t){for(const{regex:e,keys:o,handler:r}of n){const n=t.match(e);if(!n)continue;const c={};return o.forEach((t,e)=>{c[t]=decodeURIComponent(n[e+1])}),Object.assign(c,s(location.search)),r(c)}if(e)return e({});throw new Error(`No route matches "${t}"`)}(location.pathname);o&&o.parentNode&&document.body.removeChild(o),document.body.appendChild(c),o=c}return window.addEventListener("popstate",c),c(),{render:c,push(t){history.pushState(null,"",t),c()},replace(t){history.replaceState(null,"",t),c()},back:()=>history.back()}},t.state=function(t){const o={[n]:!0,subs:new Set,get val(){return function(t){e&&(t.subs.add(e),e.deps.add(t))}(o),t},set val(n){if(n!==t){t=n;for(const t of Array.from(o.subs))t()}}};return o},t.tags=s,Object.defineProperty(t,"__esModule",{value:!0})});
|
|
2
2
|
//# sourceMappingURL=index.min.js.map
|
package/dist/index.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.min.js","sources":["../src/state.ts","../src/tags.ts","../src/styles.ts","../src/helpers.ts","../src/router.ts"],"sourcesContent":["export const STATE = Symbol(\"STATE\");\nexport function isState(x) {\n return typeof x === \"object\" && x !== null && x[STATE] === true;\n}\nlet currentEffect = null;\nfunction track(st) {\n if (currentEffect) {\n st.subs.add(currentEffect);\n currentEffect.deps.add(st);\n }\n}\nfunction cleanup(effect) {\n for (const st of effect.deps)\n st.subs.delete(effect);\n effect.deps.clear();\n}\nexport function state(v) {\n const st = {\n [STATE]: true,\n subs: new Set(),\n get val() {\n track(st);\n return v;\n },\n set val(nv) {\n if (nv === v)\n return;\n v = nv;\n for (const fn of Array.from(st.subs)) {\n fn();\n }\n }\n };\n return st;\n}\nexport function derive(fn) {\n const effect = (() => {\n cleanup(effect);\n currentEffect = effect;\n try {\n fn();\n }\n finally {\n currentEffect = null;\n }\n });\n effect.deps = new Set();\n effect();\n return effect;\n}\n","import { derive } from \"./state\";\nfunction isState(x) {\n return x && typeof x === \"object\" && \"subs\" in x && \"val\" in x;\n}\n// --- Attribute detection (fix for TypeScript narrowing) ---\nfunction isAttrs(x) {\n return (x &&\n typeof x === \"object\" &&\n !(x instanceof Node) &&\n !isState(x) &&\n typeof x !== \"function\" &&\n !Array.isArray(x));\n}\nexport const tags = new Proxy({}, {\n get(_, tag) {\n return (attrsOrChild, ...children) => {\n const el = document.createElement(tag);\n // Handle attributes safely\n if (isAttrs(attrsOrChild)) {\n for (const [k, v] of Object.entries(attrsOrChild)) {\n el.setAttribute(k, String(v));\n }\n }\n else if (attrsOrChild != null) {\n // Now TypeScript knows it's ChildLike, not Attrs\n children.unshift(attrsOrChild);\n }\n processChildren(el, children);\n return el;\n };\n }\n});\nfunction processChildren(el, children) {\n for (const child of children.flat()) {\n if (child == null || child === false)\n continue;\n if (typeof child === \"function\") {\n mountReactiveFunction(el, child);\n continue;\n }\n if (isState(child)) {\n mountReactiveState(el, child);\n continue;\n }\n if (child instanceof Node) {\n el.appendChild(child);\n continue;\n }\n el.appendChild(document.createTextNode(String(child)));\n }\n}\nfunction mountReactiveFunction(parent, fn) {\n const marker = document.createTextNode(\"\");\n parent.appendChild(marker);\n let mounted = [];\n const cleanup = () => {\n for (const n of mounted) {\n if (n.parentNode === parent)\n parent.removeChild(n);\n }\n mounted = [];\n };\n derive(() => {\n cleanup();\n const value = fn();\n const values = Array.isArray(value) ? value.flat() : [value];\n for (const v of values) {\n if (v == null || v === false)\n continue;\n if (typeof v === \"function\") {\n mountReactiveFunction(parent, v);\n continue;\n }\n if (isState(v)) {\n const node = document.createTextNode(String(v.val));\n parent.insertBefore(node, marker);\n v.subs.add(() => {\n const next = String(v.val);\n if (node.data !== next)\n node.data = next;\n });\n mounted.push(node);\n continue;\n }\n if (v instanceof Node) {\n parent.insertBefore(v, marker);\n mounted.push(v);\n continue;\n }\n const text = document.createTextNode(String(v));\n parent.insertBefore(text, marker);\n mounted.push(text);\n }\n });\n}\nfunction mountReactiveState(parent, st) {\n const node = document.createTextNode(String(st.val));\n parent.appendChild(node);\n st.subs.add(() => {\n const next = String(st.val);\n if (node.data !== next)\n node.data = next;\n });\n}\n","const styleCache = new Map();\nconst keyframeCache = new Map();\nlet styleElement = null;\nlet styleSheet = null;\nconst ALLOWED_PREFIXES = [\n \"root\",\n \"button\",\n \"icon\",\n \"text\",\n \"container\",\n \"wrapper\",\n \"card\",\n \"header\",\n \"section\",\n];\nconst KEYFRAMES_PREFIX = \"@keyframes \";\nfunction ensureStyleSheet() {\n if (!styleSheet) {\n if (!styleElement) {\n styleElement = document.createElement(\"style\");\n styleElement.id = \"styles\";\n document.head.appendChild(styleElement);\n }\n styleSheet = styleElement.sheet;\n }\n return styleSheet;\n}\nfunction hashString(str) {\n let hash = 5381;\n for (let i = 0; i < str.length; i++) {\n hash = (hash * 33) ^ str.charCodeAt(i);\n }\n return (hash >>> 0).toString(36);\n}\nconst camelToKebabCache = new Map();\nfunction camelToKebab(str) {\n const cached = camelToKebabCache.get(str);\n if (cached)\n return cached;\n const result = str.replace(/[A-Z]/g, (m) => \"-\" + m.toLowerCase());\n camelToKebabCache.set(str, result);\n return result;\n}\nfunction stableHashRule(rule) {\n const parts = [];\n for (const key in rule) {\n if (!Object.prototype.hasOwnProperty.call(rule, key))\n continue;\n const val = rule[key];\n if (key.startsWith(\"@\") || typeof val === \"object\" || val == null)\n continue;\n let v;\n if (typeof val === \"function\")\n v = val.toString();\n else\n v = String(val);\n parts.push(`${key}:${v}`);\n }\n parts.sort();\n return hashString(parts.join(\"|\"));\n}\nfunction stringifyDecls(props, keyframes) {\n const out = [];\n for (const key in props) {\n if (!Object.prototype.hasOwnProperty.call(props, key))\n continue;\n const raw = props[key];\n if (raw == null || typeof raw === \"object\")\n continue;\n let val = typeof raw === \"function\" ? raw() : raw;\n if (typeof val === \"string\" && keyframes.size > 0) {\n for (const [orig, uniq] of keyframes) {\n if (val.includes(`$${orig}`)) {\n val = val.replaceAll(`$${orig}`, uniq);\n }\n }\n }\n out.push(`${camelToKebab(key)}:${val}`);\n }\n return out.join(\";\");\n}\nfunction registerKeyframes(name, frames) {\n const hash = hashString(name + JSON.stringify(frames));\n const unique = `${name}-${hash}`;\n const cached = keyframeCache.get(unique);\n if (cached)\n return cached;\n const sheet = ensureStyleSheet();\n const steps = [];\n for (const step in frames) {\n if (!Object.prototype.hasOwnProperty.call(frames, step))\n continue;\n const decls = stringifyDecls(frames[step] ?? {}, new Map());\n steps.push(`${step}{${decls}}`);\n }\n const ruleText = `@keyframes ${unique}{${steps.join(\"\")}}`;\n sheet.insertRule(ruleText, sheet.cssRules.length);\n keyframeCache.set(unique, unique);\n return unique;\n}\nfunction buildRules(className, rule, keyframes) {\n const rules = [];\n const baseDecls = [];\n for (const key in rule) {\n if (!Object.prototype.hasOwnProperty.call(rule, key))\n continue;\n const val = rule[key];\n if (key.startsWith(\"@keyframes\")) {\n continue;\n }\n if (!val)\n continue;\n if (key[0] === \":\" && typeof val === \"object\") {\n const decls = stringifyDecls(val ?? {}, keyframes);\n if (decls) {\n rules.push(`.${className}${key}{${decls}}`);\n }\n continue;\n }\n if (key.startsWith(\"@media\") && typeof val === \"object\") {\n const decls = stringifyDecls(val ?? {}, keyframes);\n if (decls) {\n rules.push(`${key}{.${className}{${decls}}}`);\n }\n continue;\n }\n if (key.includes(\"&\") && typeof val === \"object\") {\n const selector = key.replace(/&/g, `.${className}`);\n const decls = stringifyDecls(val ?? {}, keyframes);\n if (decls) {\n rules.push(`${selector}{${decls}}`);\n }\n continue;\n }\n if (!key.startsWith(\"@\") && typeof val !== \"object\") {\n const raw = typeof val === \"function\" ? val() : val;\n baseDecls.push(`${camelToKebab(key)}:${raw}`);\n }\n }\n if (baseDecls.length > 0) {\n rules.push(`.${className}{${baseDecls.join(\";\")}}`);\n }\n return rules;\n}\nexport function makeStyles(styles) {\n return () => {\n const classNames = {};\n const keyframesMap = new Map();\n const sheet = ensureStyleSheet();\n for (const key in styles) {\n if (!Object.prototype.hasOwnProperty.call(styles, key))\n continue;\n if (!key.startsWith(KEYFRAMES_PREFIX))\n continue;\n const name = key.slice(KEYFRAMES_PREFIX.length);\n const frames = styles[key];\n const unique = registerKeyframes(name, frames);\n keyframesMap.set(name, unique);\n }\n for (const slot in styles) {\n if (!Object.prototype.hasOwnProperty.call(styles, slot))\n continue;\n if (slot.startsWith(KEYFRAMES_PREFIX))\n continue;\n const rule = styles[slot];\n const hash = stableHashRule(rule);\n const className = ALLOWED_PREFIXES.includes(slot)\n ? `${slot}-${hash}`\n : `css-${hash}`;\n if (!styleCache.has(className)) {\n const rules = buildRules(className, rule, keyframesMap);\n for (const r of rules) {\n sheet.insertRule(r, sheet.cssRules.length);\n }\n styleCache.set(className, true);\n }\n classNames[slot] = className;\n }\n return classNames;\n };\n}\nexport const mergeClasses = (...classes) => classes.filter(Boolean).join(\" \");\nexport function mergeStyleSets(...sets) {\n const merged = {};\n for (const set of sets) {\n if (!set)\n continue;\n for (const key in set) {\n if (!Object.prototype.hasOwnProperty.call(set, key))\n continue;\n const prev = merged[key] ?? {};\n const cur = set[key] ?? {};\n merged[key] = { ...prev, ...cur };\n }\n }\n return makeStyles(merged)();\n}\n","export function add(component) {\n if (typeof component === \"function\") {\n const el = component();\n if (!(el instanceof HTMLElement)) {\n throw new Error(\"Component function must return an HTMLElement\");\n }\n document.body.appendChild(el);\n return;\n }\n if (\"render\" in component && typeof component.render === \"function\") {\n component.render();\n return;\n }\n throw new Error(\"Invalid component passed to add()\");\n}\n","export function router(routes) {\n const patterns = [];\n let wildcard = null;\n for (const path of Object.keys(routes)) {\n const handler = routes[path];\n if (!handler)\n continue;\n if (path === \"*\") {\n wildcard = handler;\n continue;\n }\n const keys = [];\n const pattern = path.replace(/:[^/]+/g, (m) => {\n keys.push(m.slice(1));\n return \"([^/]+)\";\n });\n patterns.push({\n regex: new RegExp(`^${pattern}$`),\n keys,\n handler\n });\n }\n let currentEl = null;\n let currentPath = \"\";\n function parseQuery(search) {\n const params = {};\n if (!search)\n return params;\n for (const [k, v] of new URLSearchParams(search))\n params[k] = v;\n return params;\n }\n function matchRoute(pathname) {\n for (const { regex, keys, handler } of patterns) {\n const match = pathname.match(regex);\n if (!match)\n continue;\n const params = {};\n keys.forEach((key, i) => {\n params[key] = decodeURIComponent(match[i + 1]);\n });\n Object.assign(params, parseQuery(location.search));\n return handler(params);\n }\n if (wildcard)\n return wildcard({});\n throw new Error(`No route matches \"${pathname}\"`);\n }\n function render() {\n const newFullPath = location.pathname + location.search;\n if (newFullPath === currentPath)\n return;\n currentPath = newFullPath;\n const next = matchRoute(location.pathname);\n if (currentEl && currentEl.parentNode) {\n document.body.removeChild(currentEl);\n }\n document.body.appendChild(next);\n currentEl = next;\n }\n window.addEventListener(\"popstate\", render);\n render();\n return {\n render,\n push(path) {\n history.pushState(null, \"\", path);\n render();\n },\n replace(path) {\n history.replaceState(null, \"\", path);\n render();\n },\n back: () => history.back()\n };\n}\n"],"names":["STATE","Symbol","currentEffect","derive","fn","effect","st","deps","subs","delete","clear","cleanup","Set","isState","x","tags","Proxy","get","_","tag","attrsOrChild","children","el","document","createElement","Node","Array","isArray","unshift","k","v","Object","entries","setAttribute","String","child","flat","mountReactiveState","appendChild","createTextNode","mountReactiveFunction","processChildren","parent","marker","mounted","n","parentNode","removeChild","value","values","node","val","insertBefore","add","next","data","push","text","styleCache","Map","keyframeCache","styleElement","styleSheet","ALLOWED_PREFIXES","KEYFRAMES_PREFIX","ensureStyleSheet","id","head","sheet","hashString","str","hash","i","length","charCodeAt","toString","camelToKebabCache","camelToKebab","cached","result","replace","m","toLowerCase","set","stableHashRule","rule","parts","key","prototype","hasOwnProperty","call","startsWith","sort","join","stringifyDecls","props","keyframes","out","raw","size","orig","uniq","includes","replaceAll","registerKeyframes","name","frames","unique","JSON","stringify","steps","step","decls","ruleText","insertRule","cssRules","buildRules","className","rules","baseDecls","selector","makeStyles","styles","classNames","keyframesMap","slice","slot","has","r","component","HTMLElement","Error","body","render","classes","filter","Boolean","sets","merged","prev","cur","routes","patterns","wildcard","path","keys","handler","pattern","regex","RegExp","currentEl","currentPath","parseQuery","search","params","URLSearchParams","newFullPath","location","pathname","match","forEach","decodeURIComponent","assign","matchRoute","window","addEventListener","history","pushState","replaceState","back","track","nv","from"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.min.js","sources":["../src/state.ts","../src/tags.ts","../src/styles.ts","../src/helpers.ts","../src/router.ts"],"sourcesContent":["export const STATE = Symbol(\"STATE\");\nexport function isState(x) {\n return typeof x === \"object\" && x !== null && x[STATE] === true;\n}\nlet currentEffect = null;\nfunction track(st) {\n if (currentEffect) {\n st.subs.add(currentEffect);\n currentEffect.deps.add(st);\n }\n}\nfunction cleanup(effect) {\n for (const st of effect.deps)\n st.subs.delete(effect);\n effect.deps.clear();\n}\nexport function state(v) {\n const st = {\n [STATE]: true,\n subs: new Set(),\n get val() {\n track(st);\n return v;\n },\n set val(nv) {\n if (nv === v)\n return;\n v = nv;\n for (const fn of Array.from(st.subs)) {\n fn();\n }\n }\n };\n return st;\n}\nexport function derive(fn) {\n const effect = (() => {\n cleanup(effect);\n currentEffect = effect;\n try {\n fn();\n }\n finally {\n currentEffect = null;\n }\n });\n effect.deps = new Set();\n effect();\n return effect;\n}\n","import { derive } from \"./state\";\nfunction isState(x) {\n return x && typeof x === \"object\" && \"subs\" in x && \"val\" in x;\n}\n// --- Attribute detection (fix for TypeScript narrowing) ---\nfunction isAttrs(x) {\n return (x &&\n typeof x === \"object\" &&\n !(x instanceof Node) &&\n !isState(x) &&\n typeof x !== \"function\" &&\n !Array.isArray(x));\n}\nexport const tags = new Proxy({}, {\n get(_, tag) {\n return (attrsOrChild, ...children) => {\n const el = document.createElement(tag);\n // Handle attributes safely\n if (isAttrs(attrsOrChild)) {\n for (const [k, v] of Object.entries(attrsOrChild)) {\n el.setAttribute(k, String(v));\n }\n }\n else if (attrsOrChild != null) {\n // Now TypeScript knows it's ChildLike, not Attrs\n children.unshift(attrsOrChild);\n }\n processChildren(el, children);\n return el;\n };\n }\n});\nfunction processChildren(el, children) {\n for (const child of children.flat()) {\n if (child == null || child === false)\n continue;\n if (typeof child === \"function\") {\n mountReactiveFunction(el, child);\n continue;\n }\n if (isState(child)) {\n mountReactiveState(el, child);\n continue;\n }\n if (child instanceof Node) {\n el.appendChild(child);\n continue;\n }\n el.appendChild(document.createTextNode(String(child)));\n }\n}\nfunction mountReactiveFunction(parent, fn) {\n const marker = document.createTextNode(\"\");\n parent.appendChild(marker);\n let mounted = [];\n const cleanup = () => {\n for (const n of mounted) {\n if (n.parentNode === parent)\n parent.removeChild(n);\n }\n mounted = [];\n };\n derive(() => {\n cleanup();\n const value = fn();\n const values = Array.isArray(value) ? value.flat() : [value];\n for (const v of values) {\n if (v == null || v === false)\n continue;\n if (typeof v === \"function\") {\n mountReactiveFunction(parent, v);\n continue;\n }\n if (isState(v)) {\n const node = document.createTextNode(String(v.val));\n parent.insertBefore(node, marker);\n v.subs.add(() => {\n const next = String(v.val);\n if (node.data !== next)\n node.data = next;\n });\n mounted.push(node);\n continue;\n }\n if (v instanceof Node) {\n parent.insertBefore(v, marker);\n mounted.push(v);\n continue;\n }\n const text = document.createTextNode(String(v));\n parent.insertBefore(text, marker);\n mounted.push(text);\n }\n });\n}\nfunction mountReactiveState(parent, st) {\n const node = document.createTextNode(String(st.val));\n parent.appendChild(node);\n st.subs.add(() => {\n const next = String(st.val);\n if (node.data !== next)\n node.data = next;\n });\n}\n","let styleElement = null;\nlet styleSheet = null;\nfunction ensureStyleSheet() {\n if (!styleSheet) {\n if (!styleElement) {\n styleElement = document.createElement(\"style\");\n styleElement.id = \"styles\";\n document.head.appendChild(styleElement);\n }\n styleSheet = styleElement.sheet;\n }\n return styleSheet;\n}\nconst camelToKebabCache = new Map();\nfunction camelToKebab(str) {\n const cached = camelToKebabCache.get(str);\n if (cached)\n return cached;\n const result = str.replace(/[A-Z]/g, m => \"-\" + m.toLowerCase());\n camelToKebabCache.set(str, result);\n return result;\n}\nconst atomicClassCache = new Map();\nlet atomicCounter = 0;\nfunction nextAtomicClass() {\n return `a-${atomicCounter++}`;\n}\nfunction registerAtomicRule(selector, decl) {\n const key = `${selector}|${decl}`;\n const cached = atomicClassCache.get(key);\n if (cached)\n return cached;\n const className = nextAtomicClass();\n atomicClassCache.set(key, className);\n ensureStyleSheet().insertRule(`${selector.replace(/&/g, `.${className}`)}{${decl}}`, styleSheet.cssRules.length);\n return className;\n}\nconst KEYFRAMES_PREFIX = \"@keyframes \";\nconst keyframeCache = new Map();\nlet keyframeCounter = 0;\nfunction registerKeyframes(name, frames) {\n const signature = name + JSON.stringify(frames);\n const cached = keyframeCache.get(signature);\n if (cached)\n return cached;\n const unique = `${name}-${keyframeCounter++}`;\n const steps = [];\n for (const step in frames) {\n const decls = stringifyDecls(frames[step] ?? {}, new Map());\n steps.push(`${step}{${decls}}`);\n }\n ensureStyleSheet().insertRule(`@keyframes ${unique}{${steps.join(\"\")}}`, styleSheet.cssRules.length);\n keyframeCache.set(signature, unique);\n return unique;\n}\nfunction stringifyDecls(props, keyframes) {\n const out = [];\n for (const key in props) {\n const raw = props[key];\n if (raw == null || typeof raw === \"object\")\n continue;\n let val = typeof raw === \"function\" ? raw() : raw;\n if (typeof val === \"string\") {\n for (const [orig, uniq] of keyframes) {\n val = val.replaceAll(`$${orig}`, uniq);\n }\n }\n out.push(`${camelToKebab(key)}:${val}`);\n }\n return out.join(\";\");\n}\nfunction buildAtomicClasses(rule, keyframes) {\n const classes = [];\n for (const key in rule) {\n const val = rule[key];\n if (!val)\n continue;\n if (key[0] === \":\" && typeof val === \"object\") {\n const decls = stringifyDecls(val, keyframes);\n if (!decls)\n continue;\n classes.push(registerAtomicRule(`&${key}`, decls));\n continue;\n }\n if (key.startsWith(\"@media\") && typeof val === \"object\") {\n const decls = stringifyDecls(val, keyframes);\n if (!decls)\n continue;\n const className = nextAtomicClass();\n atomicClassCache.set(`${key}|${decls}`, className);\n ensureStyleSheet().insertRule(`${key}{.${className}{${decls}}}`, styleSheet.cssRules.length);\n classes.push(className);\n continue;\n }\n if (typeof val !== \"object\") {\n let resolved = typeof val === \"function\" ? val() : val;\n if (typeof resolved === \"string\") {\n for (const [orig, uniq] of keyframes) {\n resolved = resolved.replaceAll(`$${orig}`, uniq);\n }\n }\n const decl = `${camelToKebab(key)}:${resolved}`;\n classes.push(registerAtomicRule(\"&\", decl));\n }\n }\n return classes;\n}\nexport function makeStyles(styles) {\n return () => {\n const classNames = {};\n const keyframesMap = new Map();\n for (const key in styles) {\n if (!key.startsWith(KEYFRAMES_PREFIX))\n continue;\n const name = key.slice(KEYFRAMES_PREFIX.length);\n const frames = styles[key];\n const unique = registerKeyframes(name, frames);\n keyframesMap.set(name, unique);\n }\n for (const slot in styles) {\n if (slot.startsWith(KEYFRAMES_PREFIX))\n continue;\n const rule = (styles[slot] ?? {});\n const classes = buildAtomicClasses(rule, keyframesMap);\n classNames[slot] = classes.join(\" \");\n }\n return classNames;\n };\n}\nexport const mergeClasses = (...classes) => classes.filter(Boolean).join(\" \");\nexport function mergeStyleSets(...sets) {\n const merged = {};\n for (const set of sets) {\n if (!set)\n continue;\n for (const key in set) {\n const prev = merged[key] ?? {};\n const cur = set[key] ?? {};\n merged[key] = { ...prev, ...cur };\n }\n }\n return makeStyles(merged)();\n}\n","export function add(component) {\n if (typeof component === \"function\") {\n const el = component();\n if (!(el instanceof HTMLElement)) {\n throw new Error(\"Component function must return an HTMLElement\");\n }\n document.body.appendChild(el);\n return;\n }\n if (\"render\" in component && typeof component.render === \"function\") {\n component.render();\n return;\n }\n throw new Error(\"Invalid component passed to add()\");\n}\n","export function router(routes) {\n const patterns = [];\n let wildcard = null;\n for (const path of Object.keys(routes)) {\n const handler = routes[path];\n if (!handler)\n continue;\n if (path === \"*\") {\n wildcard = handler;\n continue;\n }\n const keys = [];\n const pattern = path.replace(/:[^/]+/g, (m) => {\n keys.push(m.slice(1));\n return \"([^/]+)\";\n });\n patterns.push({\n regex: new RegExp(`^${pattern}$`),\n keys,\n handler\n });\n }\n let currentEl = null;\n let currentPath = \"\";\n function parseQuery(search) {\n const params = {};\n if (!search)\n return params;\n for (const [k, v] of new URLSearchParams(search))\n params[k] = v;\n return params;\n }\n function matchRoute(pathname) {\n for (const { regex, keys, handler } of patterns) {\n const match = pathname.match(regex);\n if (!match)\n continue;\n const params = {};\n keys.forEach((key, i) => {\n params[key] = decodeURIComponent(match[i + 1]);\n });\n Object.assign(params, parseQuery(location.search));\n return handler(params);\n }\n if (wildcard)\n return wildcard({});\n throw new Error(`No route matches \"${pathname}\"`);\n }\n function render() {\n const newFullPath = location.pathname + location.search;\n if (newFullPath === currentPath)\n return;\n currentPath = newFullPath;\n const next = matchRoute(location.pathname);\n if (currentEl && currentEl.parentNode) {\n document.body.removeChild(currentEl);\n }\n document.body.appendChild(next);\n currentEl = next;\n }\n window.addEventListener(\"popstate\", render);\n render();\n return {\n render,\n push(path) {\n history.pushState(null, \"\", path);\n render();\n },\n replace(path) {\n history.replaceState(null, \"\", path);\n render();\n },\n back: () => history.back()\n };\n}\n"],"names":["STATE","Symbol","currentEffect","derive","fn","effect","st","deps","subs","delete","clear","cleanup","Set","isState","x","tags","Proxy","get","_","tag","attrsOrChild","children","el","document","createElement","Node","Array","isArray","unshift","k","v","Object","entries","setAttribute","String","child","flat","mountReactiveState","appendChild","createTextNode","mountReactiveFunction","processChildren","parent","marker","mounted","n","parentNode","removeChild","value","values","node","val","insertBefore","add","next","data","push","text","styleElement","styleSheet","ensureStyleSheet","id","head","sheet","camelToKebabCache","Map","camelToKebab","str","cached","result","replace","m","toLowerCase","set","atomicClassCache","atomicCounter","nextAtomicClass","registerAtomicRule","selector","decl","key","className","insertRule","cssRules","length","KEYFRAMES_PREFIX","keyframeCache","keyframeCounter","registerKeyframes","name","frames","signature","JSON","stringify","unique","steps","step","decls","stringifyDecls","join","props","keyframes","out","raw","orig","uniq","replaceAll","buildAtomicClasses","rule","classes","startsWith","resolved","makeStyles","styles","classNames","keyframesMap","slice","slot","component","HTMLElement","Error","body","render","filter","Boolean","sets","merged","prev","cur","routes","patterns","wildcard","path","keys","handler","pattern","regex","RegExp","currentEl","currentPath","parseQuery","search","params","URLSearchParams","newFullPath","location","pathname","match","forEach","i","decodeURIComponent","assign","matchRoute","window","addEventListener","history","pushState","replaceState","back","track","nv","from"],"mappings":"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"}
|
package/package.json
CHANGED
package/src/styles.ts
CHANGED
|
@@ -11,25 +11,9 @@ export interface StyleRule {
|
|
|
11
11
|
export type StylesMap = Record<string, StyleRule>;
|
|
12
12
|
export type ClassNames<T extends StylesMap> = { [K in keyof T]: string };
|
|
13
13
|
|
|
14
|
-
const styleCache = new Map<string, true>();
|
|
15
|
-
const keyframeCache = new Map<string, string>();
|
|
16
14
|
let styleElement: HTMLStyleElement | null = null;
|
|
17
15
|
let styleSheet: CSSStyleSheet | null = null;
|
|
18
16
|
|
|
19
|
-
const ALLOWED_PREFIXES = [
|
|
20
|
-
"root",
|
|
21
|
-
"button",
|
|
22
|
-
"icon",
|
|
23
|
-
"text",
|
|
24
|
-
"container",
|
|
25
|
-
"wrapper",
|
|
26
|
-
"card",
|
|
27
|
-
"header",
|
|
28
|
-
"section",
|
|
29
|
-
];
|
|
30
|
-
|
|
31
|
-
const KEYFRAMES_PREFIX = "@keyframes ";
|
|
32
|
-
|
|
33
17
|
function ensureStyleSheet(): CSSStyleSheet {
|
|
34
18
|
if (!styleSheet) {
|
|
35
19
|
if (!styleElement) {
|
|
@@ -42,43 +26,73 @@ function ensureStyleSheet(): CSSStyleSheet {
|
|
|
42
26
|
return styleSheet;
|
|
43
27
|
}
|
|
44
28
|
|
|
45
|
-
function hashString(str: string): string {
|
|
46
|
-
let hash = 5381;
|
|
47
|
-
for (let i = 0; i < str.length; i++) {
|
|
48
|
-
hash = (hash * 33) ^ str.charCodeAt(i);
|
|
49
|
-
}
|
|
50
|
-
return (hash >>> 0).toString(36);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
29
|
const camelToKebabCache = new Map<string, string>();
|
|
54
30
|
|
|
55
31
|
function camelToKebab(str: string): string {
|
|
56
32
|
const cached = camelToKebabCache.get(str);
|
|
57
33
|
if (cached) return cached;
|
|
58
34
|
|
|
59
|
-
const result = str.replace(/[A-Z]/g,
|
|
35
|
+
const result = str.replace(/[A-Z]/g, m => "-" + m.toLowerCase());
|
|
60
36
|
camelToKebabCache.set(str, result);
|
|
61
37
|
return result;
|
|
62
38
|
}
|
|
63
39
|
|
|
64
|
-
|
|
65
|
-
const parts: string[] = [];
|
|
40
|
+
type AtomicKey = string;
|
|
66
41
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const val = rule[key];
|
|
42
|
+
const atomicClassCache = new Map<AtomicKey, string>();
|
|
43
|
+
let atomicCounter = 0;
|
|
70
44
|
|
|
71
|
-
|
|
45
|
+
function nextAtomicClass(): string {
|
|
46
|
+
return `a-${atomicCounter++}`;
|
|
47
|
+
}
|
|
72
48
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
49
|
+
function registerAtomicRule(
|
|
50
|
+
selector: string,
|
|
51
|
+
decl: string,
|
|
52
|
+
): string {
|
|
53
|
+
const key = `${selector}|${decl}`;
|
|
54
|
+
|
|
55
|
+
const cached = atomicClassCache.get(key);
|
|
56
|
+
if (cached) return cached;
|
|
57
|
+
|
|
58
|
+
const className = nextAtomicClass();
|
|
59
|
+
atomicClassCache.set(key, className);
|
|
60
|
+
|
|
61
|
+
ensureStyleSheet().insertRule(
|
|
62
|
+
`${selector.replace(/&/g, `.${className}`)}{${decl}}`,
|
|
63
|
+
styleSheet!.cssRules.length,
|
|
64
|
+
);
|
|
76
65
|
|
|
77
|
-
|
|
66
|
+
return className;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const KEYFRAMES_PREFIX = "@keyframes ";
|
|
70
|
+
const keyframeCache = new Map<string, string>();
|
|
71
|
+
let keyframeCounter = 0;
|
|
72
|
+
|
|
73
|
+
function registerKeyframes(
|
|
74
|
+
name: string,
|
|
75
|
+
frames: Record<string, any>,
|
|
76
|
+
): string {
|
|
77
|
+
const signature = name + JSON.stringify(frames);
|
|
78
|
+
const cached = keyframeCache.get(signature);
|
|
79
|
+
if (cached) return cached;
|
|
80
|
+
|
|
81
|
+
const unique = `${name}-${keyframeCounter++}`;
|
|
82
|
+
|
|
83
|
+
const steps: string[] = [];
|
|
84
|
+
for (const step in frames) {
|
|
85
|
+
const decls = stringifyDecls(frames[step] ?? {}, new Map());
|
|
86
|
+
steps.push(`${step}{${decls}}`);
|
|
78
87
|
}
|
|
79
88
|
|
|
80
|
-
|
|
81
|
-
|
|
89
|
+
ensureStyleSheet().insertRule(
|
|
90
|
+
`@keyframes ${unique}{${steps.join("")}}`,
|
|
91
|
+
styleSheet!.cssRules.length,
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
keyframeCache.set(signature, unique);
|
|
95
|
+
return unique;
|
|
82
96
|
}
|
|
83
97
|
|
|
84
98
|
function stringifyDecls(
|
|
@@ -88,19 +102,15 @@ function stringifyDecls(
|
|
|
88
102
|
const out: string[] = [];
|
|
89
103
|
|
|
90
104
|
for (const key in props) {
|
|
91
|
-
if (!Object.prototype.hasOwnProperty.call(props, key)) continue;
|
|
92
105
|
const raw = props[key];
|
|
93
|
-
|
|
94
106
|
if (raw == null || typeof raw === "object") continue;
|
|
95
107
|
|
|
96
|
-
let val
|
|
97
|
-
typeof raw === "function" ? raw() :
|
|
108
|
+
let val =
|
|
109
|
+
typeof raw === "function" ? raw() : raw;
|
|
98
110
|
|
|
99
|
-
if (typeof val === "string"
|
|
111
|
+
if (typeof val === "string") {
|
|
100
112
|
for (const [orig, uniq] of keyframes) {
|
|
101
|
-
|
|
102
|
-
val = val.replaceAll(`$${orig}`, uniq);
|
|
103
|
-
}
|
|
113
|
+
val = val.replaceAll(`$${orig}`, uniq);
|
|
104
114
|
}
|
|
105
115
|
}
|
|
106
116
|
|
|
@@ -110,123 +120,83 @@ function stringifyDecls(
|
|
|
110
120
|
return out.join(";");
|
|
111
121
|
}
|
|
112
122
|
|
|
113
|
-
function
|
|
114
|
-
|
|
115
|
-
frames: Record<string, any>,
|
|
116
|
-
): string {
|
|
117
|
-
const hash = hashString(name + JSON.stringify(frames));
|
|
118
|
-
const unique = `${name}-${hash}`;
|
|
119
|
-
|
|
120
|
-
const cached = keyframeCache.get(unique);
|
|
121
|
-
if (cached) return cached;
|
|
122
|
-
|
|
123
|
-
const sheet = ensureStyleSheet();
|
|
124
|
-
|
|
125
|
-
const steps: string[] = [];
|
|
126
|
-
for (const step in frames) {
|
|
127
|
-
if (!Object.prototype.hasOwnProperty.call(frames, step)) continue;
|
|
128
|
-
const decls = stringifyDecls(frames[step] ?? {}, new Map());
|
|
129
|
-
steps.push(`${step}{${decls}}`);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
const ruleText = `@keyframes ${unique}{${steps.join("")}}`;
|
|
133
|
-
sheet.insertRule(ruleText, sheet.cssRules.length);
|
|
134
|
-
keyframeCache.set(unique, unique);
|
|
135
|
-
|
|
136
|
-
return unique;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
function buildRules(
|
|
140
|
-
className: string,
|
|
141
|
-
rule: Record<string, any>,
|
|
123
|
+
function buildAtomicClasses(
|
|
124
|
+
rule: StyleRule,
|
|
142
125
|
keyframes: Map<string, string>,
|
|
143
126
|
): string[] {
|
|
144
|
-
const
|
|
145
|
-
const baseDecls: string[] = [];
|
|
127
|
+
const classes: string[] = [];
|
|
146
128
|
|
|
147
129
|
for (const key in rule) {
|
|
148
|
-
if (!Object.prototype.hasOwnProperty.call(rule, key)) continue;
|
|
149
130
|
const val = rule[key];
|
|
150
|
-
|
|
151
|
-
if (key.startsWith("@keyframes")) {
|
|
152
|
-
continue;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
131
|
if (!val) continue;
|
|
156
132
|
|
|
157
133
|
if (key[0] === ":" && typeof val === "object") {
|
|
158
|
-
const decls = stringifyDecls(val
|
|
159
|
-
if (decls)
|
|
160
|
-
|
|
161
|
-
|
|
134
|
+
const decls = stringifyDecls(val, keyframes);
|
|
135
|
+
if (!decls) continue;
|
|
136
|
+
|
|
137
|
+
classes.push(
|
|
138
|
+
registerAtomicRule(`&${key}`, decls),
|
|
139
|
+
);
|
|
162
140
|
continue;
|
|
163
141
|
}
|
|
164
142
|
|
|
165
143
|
if (key.startsWith("@media") && typeof val === "object") {
|
|
166
|
-
const decls = stringifyDecls(val
|
|
167
|
-
if (decls)
|
|
168
|
-
|
|
169
|
-
|
|
144
|
+
const decls = stringifyDecls(val, keyframes);
|
|
145
|
+
if (!decls) continue;
|
|
146
|
+
|
|
147
|
+
const className = nextAtomicClass();
|
|
148
|
+
atomicClassCache.set(`${key}|${decls}`, className);
|
|
149
|
+
|
|
150
|
+
ensureStyleSheet().insertRule(
|
|
151
|
+
`${key}{.${className}{${decls}}}`,
|
|
152
|
+
styleSheet!.cssRules.length,
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
classes.push(className);
|
|
170
156
|
continue;
|
|
171
157
|
}
|
|
172
158
|
|
|
173
|
-
if (
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
159
|
+
if (typeof val !== "object") {
|
|
160
|
+
let resolved =
|
|
161
|
+
typeof val === "function" ? val() : val;
|
|
162
|
+
|
|
163
|
+
if (typeof resolved === "string") {
|
|
164
|
+
for (const [orig, uniq] of keyframes) {
|
|
165
|
+
resolved = resolved.replaceAll(`$${orig}`, uniq);
|
|
166
|
+
}
|
|
178
167
|
}
|
|
179
|
-
continue;
|
|
180
|
-
}
|
|
181
168
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
169
|
+
const decl = `${camelToKebab(key)}:${resolved}`;
|
|
170
|
+
classes.push(
|
|
171
|
+
registerAtomicRule("&", decl),
|
|
172
|
+
);
|
|
185
173
|
}
|
|
186
174
|
}
|
|
187
175
|
|
|
188
|
-
|
|
189
|
-
rules.push(`.${className}{${baseDecls.join(";")}}`);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
return rules;
|
|
176
|
+
return classes;
|
|
193
177
|
}
|
|
194
178
|
|
|
195
179
|
export function makeStyles<T extends StylesMap>(styles: T) {
|
|
196
180
|
return (): ClassNames<T> => {
|
|
197
181
|
const classNames = {} as ClassNames<T>;
|
|
198
182
|
const keyframesMap = new Map<string, string>();
|
|
199
|
-
const sheet = ensureStyleSheet();
|
|
200
183
|
|
|
201
184
|
for (const key in styles) {
|
|
202
|
-
if (!Object.prototype.hasOwnProperty.call(styles, key)) continue;
|
|
203
185
|
if (!key.startsWith(KEYFRAMES_PREFIX)) continue;
|
|
204
186
|
|
|
205
187
|
const name = key.slice(KEYFRAMES_PREFIX.length);
|
|
206
|
-
const frames = styles[key] as
|
|
188
|
+
const frames = styles[key] as any;
|
|
207
189
|
const unique = registerKeyframes(name, frames);
|
|
208
190
|
keyframesMap.set(name, unique);
|
|
209
191
|
}
|
|
210
192
|
|
|
211
193
|
for (const slot in styles) {
|
|
212
|
-
if (!Object.prototype.hasOwnProperty.call(styles, slot)) continue;
|
|
213
194
|
if (slot.startsWith(KEYFRAMES_PREFIX)) continue;
|
|
214
195
|
|
|
215
|
-
const rule = styles[slot] as StyleRule;
|
|
216
|
-
const
|
|
217
|
-
const className = ALLOWED_PREFIXES.includes(slot)
|
|
218
|
-
? `${slot}-${hash}`
|
|
219
|
-
: `css-${hash}`;
|
|
196
|
+
const rule = (styles[slot] ?? {}) as StyleRule;
|
|
197
|
+
const classes = buildAtomicClasses(rule, keyframesMap);
|
|
220
198
|
|
|
221
|
-
|
|
222
|
-
const rules = buildRules(className, rule, keyframesMap);
|
|
223
|
-
for (const r of rules) {
|
|
224
|
-
sheet.insertRule(r, sheet.cssRules.length);
|
|
225
|
-
}
|
|
226
|
-
styleCache.set(className, true);
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
(classNames as any)[slot] = className;
|
|
199
|
+
(classNames as any)[slot] = classes.join(" ");
|
|
230
200
|
}
|
|
231
201
|
|
|
232
202
|
return classNames;
|
|
@@ -245,13 +215,11 @@ export function mergeStyleSets<T extends StylesMap>(
|
|
|
245
215
|
for (const set of sets) {
|
|
246
216
|
if (!set) continue;
|
|
247
217
|
for (const key in set) {
|
|
248
|
-
if (!Object.prototype.hasOwnProperty.call(set, key)) continue;
|
|
249
|
-
|
|
250
218
|
const prev = (merged[key] as StyleRule) ?? {};
|
|
251
219
|
const cur = (set[key] as StyleRule) ?? {};
|
|
252
|
-
merged[key] = { ...prev, ...cur }
|
|
220
|
+
merged[key] = { ...prev, ...cur };
|
|
253
221
|
}
|
|
254
222
|
}
|
|
255
223
|
|
|
256
224
|
return makeStyles(merged as T)();
|
|
257
|
-
}
|
|
225
|
+
}
|