uraniyum 1.1.9 → 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.js CHANGED
@@ -243,32 +243,14 @@ function add(component) {
243
243
  return;
244
244
  }
245
245
  if ("render" in component && typeof component.render === "function") {
246
- if (!(component.element instanceof HTMLElement)) {
247
- throw new Error("Component object must have an HTMLElement in .element");
248
- }
249
- document.body.appendChild(component.element);
250
246
  component.render();
251
247
  return;
252
248
  }
253
249
  throw new Error("Invalid component passed to add()");
254
250
  }
255
251
 
256
- const styleCache = new Map();
257
- const keyframeCache = new Map();
258
252
  let styleElement = null;
259
253
  let styleSheet = null;
260
- const ALLOWED_PREFIXES = [
261
- "root",
262
- "button",
263
- "icon",
264
- "text",
265
- "container",
266
- "wrapper",
267
- "card",
268
- "header",
269
- "section",
270
- ];
271
- const KEYFRAMES_PREFIX = "@keyframes ";
272
254
  function ensureStyleSheet() {
273
255
  if (!styleSheet) {
274
256
  if (!styleElement) {
@@ -280,131 +262,105 @@ function ensureStyleSheet() {
280
262
  }
281
263
  return styleSheet;
282
264
  }
283
- function hashString(str) {
284
- let hash = 5381;
285
- for (let i = 0; i < str.length; i++) {
286
- hash = (hash * 33) ^ str.charCodeAt(i);
287
- }
288
- return (hash >>> 0).toString(36);
289
- }
290
265
  const camelToKebabCache = new Map();
291
266
  function camelToKebab(str) {
292
267
  const cached = camelToKebabCache.get(str);
293
268
  if (cached)
294
269
  return cached;
295
- const result = str.replace(/[A-Z]/g, (m) => "-" + m.toLowerCase());
270
+ const result = str.replace(/[A-Z]/g, m => "-" + m.toLowerCase());
296
271
  camelToKebabCache.set(str, result);
297
272
  return result;
298
273
  }
299
- function stableHashRule(rule) {
300
- const parts = [];
301
- for (const key in rule) {
302
- if (!Object.prototype.hasOwnProperty.call(rule, key))
303
- continue;
304
- const val = rule[key];
305
- if (key.startsWith("@") || typeof val === "object" || val == null)
306
- continue;
307
- let v;
308
- if (typeof val === "function")
309
- v = val.toString();
310
- else
311
- v = String(val);
312
- parts.push(`${key}:${v}`);
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}}`);
313
302
  }
314
- parts.sort();
315
- return hashString(parts.join("|"));
303
+ ensureStyleSheet().insertRule(`@keyframes ${unique}{${steps.join("")}}`, styleSheet.cssRules.length);
304
+ keyframeCache.set(signature, unique);
305
+ return unique;
316
306
  }
317
307
  function stringifyDecls(props, keyframes) {
318
308
  const out = [];
319
309
  for (const key in props) {
320
- if (!Object.prototype.hasOwnProperty.call(props, key))
321
- continue;
322
310
  const raw = props[key];
323
311
  if (raw == null || typeof raw === "object")
324
312
  continue;
325
313
  let val = typeof raw === "function" ? raw() : raw;
326
- if (typeof val === "string" && keyframes.size > 0) {
314
+ if (typeof val === "string") {
327
315
  for (const [orig, uniq] of keyframes) {
328
- if (val.includes(`$${orig}`)) {
329
- val = val.replaceAll(`$${orig}`, uniq);
330
- }
316
+ val = val.replaceAll(`$${orig}`, uniq);
331
317
  }
332
318
  }
333
319
  out.push(`${camelToKebab(key)}:${val}`);
334
320
  }
335
321
  return out.join(";");
336
322
  }
337
- function registerKeyframes(name, frames) {
338
- const hash = hashString(name + JSON.stringify(frames));
339
- const unique = `${name}-${hash}`;
340
- const cached = keyframeCache.get(unique);
341
- if (cached)
342
- return cached;
343
- const sheet = ensureStyleSheet();
344
- const steps = [];
345
- for (const step in frames) {
346
- if (!Object.prototype.hasOwnProperty.call(frames, step))
347
- continue;
348
- const decls = stringifyDecls(frames[step] ?? {}, new Map());
349
- steps.push(`${step}{${decls}}`);
350
- }
351
- const ruleText = `@keyframes ${unique}{${steps.join("")}}`;
352
- sheet.insertRule(ruleText, sheet.cssRules.length);
353
- keyframeCache.set(unique, unique);
354
- return unique;
355
- }
356
- function buildRules(className, rule, keyframes) {
357
- const rules = [];
358
- const baseDecls = [];
323
+ function buildAtomicClasses(rule, keyframes) {
324
+ const classes = [];
359
325
  for (const key in rule) {
360
- if (!Object.prototype.hasOwnProperty.call(rule, key))
361
- continue;
362
326
  const val = rule[key];
363
- if (key.startsWith("@keyframes")) {
364
- continue;
365
- }
366
327
  if (!val)
367
328
  continue;
368
329
  if (key[0] === ":" && typeof val === "object") {
369
- const decls = stringifyDecls(val ?? {}, keyframes);
370
- if (decls) {
371
- rules.push(`.${className}${key}{${decls}}`);
372
- }
330
+ const decls = stringifyDecls(val, keyframes);
331
+ if (!decls)
332
+ continue;
333
+ classes.push(registerAtomicRule(`&${key}`, decls));
373
334
  continue;
374
335
  }
375
336
  if (key.startsWith("@media") && typeof val === "object") {
376
- const decls = stringifyDecls(val ?? {}, keyframes);
377
- if (decls) {
378
- rules.push(`${key}{.${className}{${decls}}}`);
379
- }
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);
380
344
  continue;
381
345
  }
382
- if (key.includes("&") && typeof val === "object") {
383
- const selector = key.replace(/&/g, `.${className}`);
384
- const decls = stringifyDecls(val ?? {}, keyframes);
385
- if (decls) {
386
- rules.push(`${selector}{${decls}}`);
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
+ }
387
352
  }
388
- continue;
389
- }
390
- if (!key.startsWith("@") && typeof val !== "object") {
391
- const raw = typeof val === "function" ? val() : val;
392
- baseDecls.push(`${camelToKebab(key)}:${raw}`);
353
+ const decl = `${camelToKebab(key)}:${resolved}`;
354
+ classes.push(registerAtomicRule("&", decl));
393
355
  }
394
356
  }
395
- if (baseDecls.length > 0) {
396
- rules.push(`.${className}{${baseDecls.join(";")}}`);
397
- }
398
- return rules;
357
+ return classes;
399
358
  }
400
359
  function makeStyles(styles) {
401
360
  return () => {
402
361
  const classNames = {};
403
362
  const keyframesMap = new Map();
404
- const sheet = ensureStyleSheet();
405
363
  for (const key in styles) {
406
- if (!Object.prototype.hasOwnProperty.call(styles, key))
407
- continue;
408
364
  if (!key.startsWith(KEYFRAMES_PREFIX))
409
365
  continue;
410
366
  const name = key.slice(KEYFRAMES_PREFIX.length);
@@ -413,23 +369,11 @@ function makeStyles(styles) {
413
369
  keyframesMap.set(name, unique);
414
370
  }
415
371
  for (const slot in styles) {
416
- if (!Object.prototype.hasOwnProperty.call(styles, slot))
417
- continue;
418
372
  if (slot.startsWith(KEYFRAMES_PREFIX))
419
373
  continue;
420
- const rule = styles[slot];
421
- const hash = stableHashRule(rule);
422
- const className = ALLOWED_PREFIXES.includes(slot)
423
- ? `${slot}-${hash}`
424
- : `css-${hash}`;
425
- if (!styleCache.has(className)) {
426
- const rules = buildRules(className, rule, keyframesMap);
427
- for (const r of rules) {
428
- sheet.insertRule(r, sheet.cssRules.length);
429
- }
430
- styleCache.set(className, true);
431
- }
432
- classNames[slot] = className;
374
+ const rule = (styles[slot] ?? {});
375
+ const classes = buildAtomicClasses(rule, keyframesMap);
376
+ classNames[slot] = classes.join(" ");
433
377
  }
434
378
  return classNames;
435
379
  };
@@ -441,8 +385,6 @@ function mergeStyleSets(...sets) {
441
385
  if (!set)
442
386
  continue;
443
387
  for (const key in set) {
444
- if (!Object.prototype.hasOwnProperty.call(set, key))
445
- continue;
446
388
  const prev = merged[key] ?? {};
447
389
  const cur = set[key] ?? {};
448
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 if (!(component.element instanceof HTMLElement)) {\n throw new Error(\"Component object must have an HTMLElement in .element\");\n }\n document.body.appendChild(component.element);\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":"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"}
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,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).MiniUI={})}(this,function(t){"use strict";const e=Symbol("STATE");let n=null;function o(t){const e=()=>{!function(t){for(const e of t.deps)e.subs.delete(t);t.deps.clear()}(e),n=e;try{t()}finally{n=null}};return e.deps=new Set,e(),e}function r(t){return t&&"object"==typeof t&&"subs"in t&&"val"in t}const c=new Proxy({},{get:(t,e)=>(t,...n)=>{const o=document.createElement(e);if(!(c=t)||"object"!=typeof c||c instanceof Node||r(c)||"function"==typeof c||Array.isArray(c))null!=t&&n.unshift(t);else for(const[e,n]of Object.entries(t))o.setAttribute(e,String(n));var c;return function(t,e){for(const n of e.flat())null!=n&&!1!==n&&("function"!=typeof n?r(n)?i(t,n):n instanceof Node?t.appendChild(n):t.appendChild(document.createTextNode(String(n))):s(t,n))}(o,n),o}});function s(t,e){const n=document.createTextNode("");t.appendChild(n);let c=[];o(()=>{(()=>{for(const e of c)e.parentNode===t&&t.removeChild(e);c=[]})();const o=e(),i=Array.isArray(o)?o.flat():[o];for(const e of i){if(null==e||!1===e)continue;if("function"==typeof e){s(t,e);continue}if(r(e)){const o=document.createTextNode(String(e.val));t.insertBefore(o,n),e.subs.add(()=>{const t=String(e.val);o.data!==t&&(o.data=t)}),c.push(o);continue}if(e instanceof Node){t.insertBefore(e,n),c.push(e);continue}const o=document.createTextNode(String(e));t.insertBefore(o,n),c.push(o)}})}function i(t,e){const n=document.createTextNode(String(e.val));t.appendChild(n),e.subs.add(()=>{const t=String(e.val);n.data!==t&&(n.data=t)})}const f=new Map,u=new Map;let a=null,l=null;const p=["root","button","icon","text","container","wrapper","card","header","section"],d="@keyframes ";function h(){return l||(a||(a=document.createElement("style"),a.id="styles",document.head.appendChild(a)),l=a.sheet),l}function y(t){let e=5381;for(let n=0;n<t.length;n++)e=33*e^t.charCodeAt(n);return(e>>>0).toString(36)}const m=new Map;function b(t){const e=m.get(t);if(e)return e;const n=t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase());return m.set(t,n),n}function $(t){const e=[];for(const n in t){if(!Object.prototype.hasOwnProperty.call(t,n))continue;const o=t[n];if(n.startsWith("@")||"object"==typeof o||null==o)continue;let r;r="function"==typeof o?o.toString():String(o),e.push(`${n}:${r}`)}return e.sort(),y(e.join("|"))}function g(t,e){const n=[];for(const o in t){if(!Object.prototype.hasOwnProperty.call(t,o))continue;const r=t[o];if(null==r||"object"==typeof r)continue;let c="function"==typeof r?r():r;if("string"==typeof c&&e.size>0)for(const[t,n]of e)c.includes(`$${t}`)&&(c=c.replaceAll(`$${t}`,n));n.push(`${b(o)}:${c}`)}return n.join(";")}function w(t,e){const n=`${t}-${y(t+JSON.stringify(e))}`,o=u.get(n);if(o)return o;const r=h(),c=[];for(const t in e){if(!Object.prototype.hasOwnProperty.call(e,t))continue;const n=g(e[t]??{},new Map);c.push(`${t}{${n}}`)}const s=`@keyframes ${n}{${c.join("")}}`;return r.insertRule(s,r.cssRules.length),u.set(n,n),n}function j(t,e,n){const o=[],r=[];for(const c in e){if(!Object.prototype.hasOwnProperty.call(e,c))continue;const s=e[c];if(!c.startsWith("@keyframes")&&s){if(":"===c[0]&&"object"==typeof s){const e=g(s??{},n);e&&o.push(`.${t}${c}{${e}}`);continue}if(c.startsWith("@media")&&"object"==typeof s){const e=g(s??{},n);e&&o.push(`${c}{.${t}{${e}}}`);continue}if(c.includes("&")&&"object"==typeof s){const e=c.replace(/&/g,`.${t}`),r=g(s??{},n);r&&o.push(`${e}{${r}}`);continue}if(!c.startsWith("@")&&"object"!=typeof s){const t="function"==typeof s?s():s;r.push(`${b(c)}:${t}`)}}}return r.length>0&&o.push(`.${t}{${r.join(";")}}`),o}function S(t){return()=>{const e={},n=new Map,o=h();for(const e in t){if(!Object.prototype.hasOwnProperty.call(t,e))continue;if(!e.startsWith(d))continue;const o=e.slice(11),r=w(o,t[e]);n.set(o,r)}for(const r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;if(r.startsWith(d))continue;const c=t[r],s=$(c),i=p.includes(r)?`${r}-${s}`:`css-${s}`;if(!f.has(i)){const t=j(i,c,n);for(const e of t)o.insertRule(e,o.cssRules.length);f.set(i,!0)}e[r]=i}return e}}t.STATE=e,t.add=function(t){if("function"==typeof t){const e=t();if(!(e instanceof HTMLElement))throw new Error("Component function must return an HTMLElement");return void document.body.appendChild(e)}if("render"in t&&"function"==typeof t.render){if(!(t.element instanceof HTMLElement))throw new Error("Component object must have an HTMLElement in .element");return document.body.appendChild(t.element),void t.render()}throw new Error("Invalid component passed to add()")},t.derive=o,t.isState=function(t){return"object"==typeof t&&null!==t&&!0===t[e]},t.makeStyles=S,t.mergeClasses=(...t)=>t.filter(Boolean).join(" "),t.mergeStyleSets=function(...t){const e={};for(const n of t)if(n)for(const t in n){if(!Object.prototype.hasOwnProperty.call(n,t))continue;const o=e[t]??{},r=n[t]??{};e[t]={...o,...r}}return S(e)()},t.router=function(t){const e=[];let n=null;for(const o of Object.keys(t)){const r=t[o];if(!r)continue;if("*"===o){n=r;continue}const c=[],s=o.replace(/:[^/]+/g,t=>(c.push(t.slice(1)),"([^/]+)"));e.push({regex:new RegExp(`^${s}$`),keys:c,handler:r})}let o=null,r="";function c(t){const e={};if(!t)return e;for(const[n,o]of new URLSearchParams(t))e[n]=o;return e}function s(){const t=location.pathname+location.search;if(t===r)return;r=t;const s=function(t){for(const{regex:n,keys:o,handler:r}of e){const e=t.match(n);if(!e)continue;const s={};return o.forEach((t,n)=>{s[t]=decodeURIComponent(e[n+1])}),Object.assign(s,c(location.search)),r(s)}if(n)return n({});throw new Error(`No route matches "${t}"`)}(location.pathname);o&&o.parentNode&&document.body.removeChild(o),document.body.appendChild(s),o=s}return window.addEventListener("popstate",s),s(),{render:s,push(t){history.pushState(null,"",t),s()},replace(t){history.replaceState(null,"",t),s()},back:()=>history.back()}},t.state=function(t){const o={[e]:!0,subs:new Set,get val(){return function(t){n&&(t.subs.add(n),n.deps.add(t))}(o),t},set val(e){if(e!==t){t=e;for(const t of Array.from(o.subs))t()}}};return o},t.tags=c,Object.defineProperty(t,"__esModule",{value:!0})});
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
@@ -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 if (!(component.element instanceof HTMLElement)) {\n throw new Error(\"Component object must have an HTMLElement in .element\");\n }\n document.body.appendChild(component.element);\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","element","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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uraniyum",
3
- "version": "1.1.9",
3
+ "version": "1.2.0",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.esm.js",
6
6
  "browser": "dist/index.min.js",
package/src/helpers.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  type Component =
2
2
  | (() => HTMLElement)
3
- | { render: () => void; element: HTMLElement };
3
+ | { render: () => void };
4
4
 
5
5
  export function add(component: Component) {
6
+
6
7
  if (typeof component === "function") {
7
8
  const el = component();
8
9
  if (!(el instanceof HTMLElement)) {
@@ -13,10 +14,6 @@ export function add(component: Component) {
13
14
  }
14
15
 
15
16
  if ("render" in component && typeof component.render === "function") {
16
- if (!(component.element instanceof HTMLElement)) {
17
- throw new Error("Component object must have an HTMLElement in .element");
18
- }
19
- document.body.appendChild(component.element);
20
17
  component.render();
21
18
  return;
22
19
  }