uraniyum 1.3.1 → 1.3.3
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 +245 -66
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +245 -65
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/styles.d.ts +24 -0
- package/package.json +1 -1
- package/src/styles.ts +293 -89
package/dist/index.esm.js
CHANGED
|
@@ -247,15 +247,34 @@ function add(component) {
|
|
|
247
247
|
|
|
248
248
|
const PRECEDENCE_LAYERS = 3;
|
|
249
249
|
/* -------------------------------------------------------------------------- */
|
|
250
|
-
/* Stylesheet management
|
|
250
|
+
/* Stylesheet management (one <style> per layer) */
|
|
251
251
|
/* -------------------------------------------------------------------------- */
|
|
252
252
|
const styleElements = Array(PRECEDENCE_LAYERS).fill(null);
|
|
253
253
|
const styleSheets = Array(PRECEDENCE_LAYERS).fill(null);
|
|
254
254
|
function ensureStyleSheet(layer) {
|
|
255
|
+
if (layer < 0 || layer >= PRECEDENCE_LAYERS) {
|
|
256
|
+
throw new Error(`Invalid style layer ${layer}. Must be 0..${PRECEDENCE_LAYERS - 1}`);
|
|
257
|
+
}
|
|
255
258
|
if (!styleSheets[layer]) {
|
|
256
|
-
const el = document.createElement(
|
|
259
|
+
const el = document.createElement('style');
|
|
257
260
|
el.id = `styles-layer-${layer}`;
|
|
258
|
-
|
|
261
|
+
// Insert in DOM order by layer to keep cascade predictable
|
|
262
|
+
// (lower layers first, higher layers later).
|
|
263
|
+
let inserted = false;
|
|
264
|
+
for (let i = layer - 1; i >= 0; i--) {
|
|
265
|
+
const prev = styleElements[i];
|
|
266
|
+
if (prev && prev.parentNode) {
|
|
267
|
+
prev.parentNode.insertBefore(el, prev.nextSibling);
|
|
268
|
+
inserted = true;
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
if (!inserted) {
|
|
273
|
+
// No lower layer exists yet; put at start of head so future layers can insert after.
|
|
274
|
+
// If head is empty, this is equivalent to appendChild.
|
|
275
|
+
const head = document.head;
|
|
276
|
+
head.insertBefore(el, head.firstChild);
|
|
277
|
+
}
|
|
259
278
|
styleElements[layer] = el;
|
|
260
279
|
styleSheets[layer] = el.sheet;
|
|
261
280
|
}
|
|
@@ -269,12 +288,12 @@ function camelToKebab(str) {
|
|
|
269
288
|
const cached = camelToKebabCache.get(str);
|
|
270
289
|
if (cached)
|
|
271
290
|
return cached;
|
|
272
|
-
const res = str.replace(/[A-Z]/g, m =>
|
|
291
|
+
const res = str.replace(/[A-Z]/g, m => '-' + m.toLowerCase());
|
|
273
292
|
camelToKebabCache.set(str, res);
|
|
274
293
|
return res;
|
|
275
294
|
}
|
|
276
295
|
function resolveValue(v) {
|
|
277
|
-
return typeof v ===
|
|
296
|
+
return typeof v === 'function' ? v() : v;
|
|
278
297
|
}
|
|
279
298
|
function hashString(str) {
|
|
280
299
|
let hash = 5381;
|
|
@@ -283,58 +302,73 @@ function hashString(str) {
|
|
|
283
302
|
}
|
|
284
303
|
return (hash >>> 0).toString(36);
|
|
285
304
|
}
|
|
286
|
-
const atomicClassCache = new Map();
|
|
287
|
-
const atomicRuleRegistry = new Map();
|
|
288
|
-
const insertedRules = new Set();
|
|
289
|
-
function makeClassName(signature, layer) {
|
|
290
|
-
return `f${hashString(`${layer}|${signature}`)}`;
|
|
291
|
-
}
|
|
292
305
|
function prefixSelector(selector, className) {
|
|
306
|
+
// handles: "&", "&:hover", "&:hover,&:active"
|
|
293
307
|
return selector
|
|
294
|
-
.split(
|
|
295
|
-
.map(
|
|
296
|
-
.join(
|
|
308
|
+
.split(',')
|
|
309
|
+
.map(part => part.trim().replace(/&/g, `.${className}`))
|
|
310
|
+
.join(',');
|
|
297
311
|
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
312
|
+
/* -------------------------------------------------------------------------- */
|
|
313
|
+
/* Atomic rule generation */
|
|
314
|
+
/* -------------------------------------------------------------------------- */
|
|
315
|
+
/**
|
|
316
|
+
* IMPORTANT CHANGE:
|
|
317
|
+
* Atomic classes are now scoped per makeStyles instance via `styleSetId`.
|
|
318
|
+
*
|
|
319
|
+
* This prevents earlier style sets (e.g. root styles) from "owning" an atomic
|
|
320
|
+
* declaration in the cache, which would force later style sets (e.g. disabled)
|
|
321
|
+
* to reuse a class whose CSS rule was inserted earlier — breaking override order.
|
|
322
|
+
*/
|
|
323
|
+
let styleSetCounter = 0;
|
|
324
|
+
// Cache key: styleSetId | layer | selector | decl -> className
|
|
325
|
+
const atomicCache = new Map();
|
|
326
|
+
function makeClassName(signature, layer) {
|
|
327
|
+
return `f${hashString(`${layer}|${signature}`)}`;
|
|
328
|
+
}
|
|
329
|
+
function getAtomicClass(styleSetId, layer, selector, decl) {
|
|
330
|
+
const signature = `${styleSetId}|${selector}|${decl}`;
|
|
331
|
+
const cacheKey = `${layer}|${signature}`;
|
|
332
|
+
const cached = atomicCache.get(cacheKey);
|
|
301
333
|
if (cached)
|
|
302
334
|
return cached;
|
|
303
|
-
const
|
|
304
|
-
const
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
rules.push({ className, layer, cssText });
|
|
312
|
-
}
|
|
313
|
-
atomicClassCache.set(signature, classes);
|
|
314
|
-
atomicRuleRegistry.set(signature, rules);
|
|
315
|
-
return classes;
|
|
335
|
+
const className = makeClassName(signature, layer);
|
|
336
|
+
const rule = selector === '&'
|
|
337
|
+
? `.${className}{${decl}}`
|
|
338
|
+
: `${prefixSelector(selector, className)}{${decl}}`;
|
|
339
|
+
const sheet = ensureStyleSheet(layer);
|
|
340
|
+
sheet.insertRule(rule, sheet.cssRules.length);
|
|
341
|
+
atomicCache.set(cacheKey, className);
|
|
342
|
+
return className;
|
|
316
343
|
}
|
|
317
|
-
function buildAtomicEntries(rule) {
|
|
344
|
+
function buildAtomicEntries(styleSetId, layer, rule) {
|
|
318
345
|
const entries = [];
|
|
319
346
|
for (const key in rule) {
|
|
320
347
|
const val = rule[key];
|
|
321
348
|
if (val == null)
|
|
322
349
|
continue;
|
|
323
|
-
|
|
350
|
+
// Pseudo selectors
|
|
351
|
+
if (key.startsWith(':') && typeof val === 'object') {
|
|
324
352
|
for (const prop in val) {
|
|
325
353
|
const v = val[prop];
|
|
326
|
-
if (v == null || typeof v ===
|
|
354
|
+
if (v == null || typeof v === 'object')
|
|
327
355
|
continue;
|
|
328
356
|
const decl = `${camelToKebab(prop)}:${resolveValue(v)}`;
|
|
329
|
-
|
|
357
|
+
const className = getAtomicClass(styleSetId, layer, `&${key}`, decl);
|
|
358
|
+
entries.push({ className });
|
|
330
359
|
}
|
|
331
360
|
continue;
|
|
332
361
|
}
|
|
333
|
-
|
|
362
|
+
// @media, @supports
|
|
363
|
+
if (key.startsWith('@') && typeof val === 'object') {
|
|
364
|
+
// handled elsewhere (reset styles), skip for atomic
|
|
334
365
|
continue;
|
|
335
|
-
|
|
366
|
+
}
|
|
367
|
+
// Normal CSS property
|
|
368
|
+
if (typeof val !== 'object') {
|
|
336
369
|
const decl = `${camelToKebab(key)}:${resolveValue(val)}`;
|
|
337
|
-
|
|
370
|
+
const className = getAtomicClass(styleSetId, layer, '&', decl);
|
|
371
|
+
entries.push({ className });
|
|
338
372
|
}
|
|
339
373
|
}
|
|
340
374
|
return entries;
|
|
@@ -343,20 +377,20 @@ function buildAtomicEntries(rule) {
|
|
|
343
377
|
/* makeStyles */
|
|
344
378
|
/* -------------------------------------------------------------------------- */
|
|
345
379
|
function makeStyles(styles, layer = 0) {
|
|
380
|
+
const styleSetId = ++styleSetCounter;
|
|
346
381
|
return () => {
|
|
347
382
|
const result = {};
|
|
348
383
|
for (const slot in styles) {
|
|
349
|
-
const rule = styles[slot] ?? {};
|
|
350
|
-
const entries = buildAtomicEntries(rule);
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
.join(" ");
|
|
384
|
+
const rule = (styles[slot] ?? {});
|
|
385
|
+
const entries = buildAtomicEntries(styleSetId, layer, rule);
|
|
386
|
+
const classes = entries.map(e => e.className).join(' ');
|
|
387
|
+
result[slot] = classes;
|
|
354
388
|
}
|
|
355
389
|
return result;
|
|
356
390
|
};
|
|
357
391
|
}
|
|
358
392
|
/* -------------------------------------------------------------------------- */
|
|
359
|
-
/* makeResetStyles
|
|
393
|
+
/* makeResetStyles */
|
|
360
394
|
/* -------------------------------------------------------------------------- */
|
|
361
395
|
const resetCache = new Map();
|
|
362
396
|
function stringifyRule(selector, styles) {
|
|
@@ -366,16 +400,21 @@ function stringifyRule(selector, styles) {
|
|
|
366
400
|
const val = styles[key];
|
|
367
401
|
if (val == null)
|
|
368
402
|
continue;
|
|
369
|
-
if (key.startsWith(
|
|
403
|
+
if (key.startsWith(':') && typeof val === 'object') {
|
|
370
404
|
rules.push(...stringifyRule(`${selector}${key}`, val));
|
|
371
405
|
continue;
|
|
372
406
|
}
|
|
373
|
-
|
|
407
|
+
// NOTE: @media/@supports are still not supported in reset in your engine.
|
|
408
|
+
// You can add them later by emitting nested rules instead of skipping.
|
|
409
|
+
if (key.startsWith('@') && typeof val === 'object') {
|
|
410
|
+
continue;
|
|
411
|
+
}
|
|
412
|
+
if (typeof val !== 'object') {
|
|
374
413
|
decls.push(`${camelToKebab(key)}:${resolveValue(val)}`);
|
|
375
414
|
}
|
|
376
415
|
}
|
|
377
416
|
if (decls.length) {
|
|
378
|
-
rules.unshift(`${selector}{${decls.join(
|
|
417
|
+
rules.unshift(`${selector}{${decls.join(';')}}`);
|
|
379
418
|
}
|
|
380
419
|
return rules;
|
|
381
420
|
}
|
|
@@ -397,32 +436,172 @@ function makeResetStyles(styles) {
|
|
|
397
436
|
};
|
|
398
437
|
}
|
|
399
438
|
/* -------------------------------------------------------------------------- */
|
|
400
|
-
/* mergeClasses
|
|
439
|
+
/* mergeClasses */
|
|
401
440
|
/* -------------------------------------------------------------------------- */
|
|
441
|
+
/**
|
|
442
|
+
* Keep "last occurrence wins" order (more intuitive and closer to what people expect).
|
|
443
|
+
* This does NOT affect CSS specificity, but it makes class strings stable and helps debugging.
|
|
444
|
+
*/
|
|
402
445
|
function mergeClasses(...inputs) {
|
|
403
|
-
const
|
|
404
|
-
const result = [];
|
|
446
|
+
const all = [];
|
|
405
447
|
for (const input of inputs) {
|
|
406
|
-
if (typeof input !==
|
|
448
|
+
if (typeof input !== 'string')
|
|
407
449
|
continue;
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
// 🔑 INSERT RULES IN MERGE ORDER
|
|
413
|
-
for (const rules of atomicRuleRegistry.values()) {
|
|
414
|
-
for (const rule of rules) {
|
|
415
|
-
if (rule.className === cls && !insertedRules.has(rule.cssText)) {
|
|
416
|
-
ensureStyleSheet(rule.layer).insertRule(rule.cssText, ensureStyleSheet(rule.layer).cssRules.length);
|
|
417
|
-
insertedRules.add(rule.cssText);
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
result.push(cls);
|
|
450
|
+
const parts = input.trim().split(/\s+/);
|
|
451
|
+
for (const cls of parts) {
|
|
452
|
+
if (cls)
|
|
453
|
+
all.push(cls);
|
|
422
454
|
}
|
|
423
455
|
}
|
|
424
|
-
|
|
456
|
+
const lastIndex = new Map();
|
|
457
|
+
let index = 0;
|
|
458
|
+
for (const cls of all) {
|
|
459
|
+
lastIndex.set(cls, index++);
|
|
460
|
+
}
|
|
461
|
+
return Array.from(lastIndex.entries())
|
|
462
|
+
.sort((a, b) => a[1] - b[1])
|
|
463
|
+
.map(([cls]) => cls)
|
|
464
|
+
.join(' ');
|
|
425
465
|
}
|
|
466
|
+
function pickShorthand(obj) {
|
|
467
|
+
const out = {};
|
|
468
|
+
for (const k in obj) {
|
|
469
|
+
const v = obj[k];
|
|
470
|
+
if (v !== undefined)
|
|
471
|
+
out[k] = v;
|
|
472
|
+
}
|
|
473
|
+
return out;
|
|
474
|
+
}
|
|
475
|
+
const shorthands = {
|
|
476
|
+
/* ---------------------------------- */
|
|
477
|
+
/* Border */
|
|
478
|
+
/* ---------------------------------- */
|
|
479
|
+
border(width, style, color) {
|
|
480
|
+
return {
|
|
481
|
+
...shorthands.borderWidth(width),
|
|
482
|
+
...shorthands.borderStyle(style),
|
|
483
|
+
...shorthands.borderColor(color),
|
|
484
|
+
};
|
|
485
|
+
},
|
|
486
|
+
borderWidth(all) {
|
|
487
|
+
return pickShorthand({
|
|
488
|
+
borderTopWidth: all,
|
|
489
|
+
borderRightWidth: all,
|
|
490
|
+
borderBottomWidth: all,
|
|
491
|
+
borderLeftWidth: all,
|
|
492
|
+
});
|
|
493
|
+
},
|
|
494
|
+
borderStyle(all) {
|
|
495
|
+
return pickShorthand({
|
|
496
|
+
borderTopStyle: all,
|
|
497
|
+
borderRightStyle: all,
|
|
498
|
+
borderBottomStyle: all,
|
|
499
|
+
borderLeftStyle: all,
|
|
500
|
+
});
|
|
501
|
+
},
|
|
502
|
+
borderColor(all) {
|
|
503
|
+
return pickShorthand({
|
|
504
|
+
borderTopColor: all,
|
|
505
|
+
borderRightColor: all,
|
|
506
|
+
borderBottomColor: all,
|
|
507
|
+
borderLeftColor: all,
|
|
508
|
+
});
|
|
509
|
+
},
|
|
510
|
+
borderRadius(tl, tr, br, bl) {
|
|
511
|
+
if (tr === undefined && br === undefined && bl === undefined) {
|
|
512
|
+
return pickShorthand({
|
|
513
|
+
borderTopLeftRadius: tl,
|
|
514
|
+
borderTopRightRadius: tl,
|
|
515
|
+
borderBottomRightRadius: tl,
|
|
516
|
+
borderBottomLeftRadius: tl,
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
return pickShorthand({
|
|
520
|
+
borderTopLeftRadius: tl,
|
|
521
|
+
borderTopRightRadius: tr,
|
|
522
|
+
borderBottomRightRadius: br,
|
|
523
|
+
borderBottomLeftRadius: bl,
|
|
524
|
+
});
|
|
525
|
+
},
|
|
526
|
+
/* ---------------------------------- */
|
|
527
|
+
/* Padding / Margin */
|
|
528
|
+
/* ---------------------------------- */
|
|
529
|
+
padding(all) {
|
|
530
|
+
return pickShorthand({
|
|
531
|
+
paddingTop: all,
|
|
532
|
+
paddingRight: all,
|
|
533
|
+
paddingBottom: all,
|
|
534
|
+
paddingLeft: all,
|
|
535
|
+
});
|
|
536
|
+
},
|
|
537
|
+
paddingHorizontal(v) {
|
|
538
|
+
return pickShorthand({
|
|
539
|
+
paddingLeft: v,
|
|
540
|
+
paddingRight: v,
|
|
541
|
+
});
|
|
542
|
+
},
|
|
543
|
+
paddingVertical(v) {
|
|
544
|
+
return pickShorthand({
|
|
545
|
+
paddingTop: v,
|
|
546
|
+
paddingBottom: v,
|
|
547
|
+
});
|
|
548
|
+
},
|
|
549
|
+
margin(all) {
|
|
550
|
+
return pickShorthand({
|
|
551
|
+
marginTop: all,
|
|
552
|
+
marginRight: all,
|
|
553
|
+
marginBottom: all,
|
|
554
|
+
marginLeft: all,
|
|
555
|
+
});
|
|
556
|
+
},
|
|
557
|
+
marginHorizontal(v) {
|
|
558
|
+
return pickShorthand({
|
|
559
|
+
marginLeft: v,
|
|
560
|
+
marginRight: v,
|
|
561
|
+
});
|
|
562
|
+
},
|
|
563
|
+
marginVertical(v) {
|
|
564
|
+
return pickShorthand({
|
|
565
|
+
marginTop: v,
|
|
566
|
+
marginBottom: v,
|
|
567
|
+
});
|
|
568
|
+
},
|
|
569
|
+
/* ---------------------------------- */
|
|
570
|
+
/* Layout */
|
|
571
|
+
/* ---------------------------------- */
|
|
572
|
+
inset(all) {
|
|
573
|
+
return pickShorthand({
|
|
574
|
+
top: all,
|
|
575
|
+
right: all,
|
|
576
|
+
bottom: all,
|
|
577
|
+
left: all,
|
|
578
|
+
});
|
|
579
|
+
},
|
|
580
|
+
insetHorizontal(v) {
|
|
581
|
+
return pickShorthand({
|
|
582
|
+
left: v,
|
|
583
|
+
right: v,
|
|
584
|
+
});
|
|
585
|
+
},
|
|
586
|
+
insetVertical(v) {
|
|
587
|
+
return pickShorthand({
|
|
588
|
+
top: v,
|
|
589
|
+
bottom: v,
|
|
590
|
+
});
|
|
591
|
+
},
|
|
592
|
+
size(w, h) {
|
|
593
|
+
if (h === undefined) {
|
|
594
|
+
return pickShorthand({ width: w, height: w });
|
|
595
|
+
}
|
|
596
|
+
return pickShorthand({ width: w, height: h });
|
|
597
|
+
},
|
|
598
|
+
overflow(v) {
|
|
599
|
+
return pickShorthand({
|
|
600
|
+
overflowX: v,
|
|
601
|
+
overflowY: v,
|
|
602
|
+
});
|
|
603
|
+
},
|
|
604
|
+
};
|
|
426
605
|
|
|
427
|
-
export { STATE, add, derive, isState$1 as isState, makeResetStyles, makeStyles, mergeClasses, router, state, tags };
|
|
606
|
+
export { STATE, add, derive, isState$1 as isState, makeResetStyles, makeStyles, mergeClasses, router, shorthands, state, tags };
|
|
428
607
|
//# sourceMappingURL=index.esm.js.map
|
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 PRECEDENCE_LAYERS = 3;\n/* -------------------------------------------------------------------------- */\n/* Stylesheet management */\n/* -------------------------------------------------------------------------- */\nconst styleElements = Array(PRECEDENCE_LAYERS).fill(null);\nconst styleSheets = Array(PRECEDENCE_LAYERS).fill(null);\nfunction ensureStyleSheet(layer) {\n if (!styleSheets[layer]) {\n const el = document.createElement(\"style\");\n el.id = `styles-layer-${layer}`;\n document.head.appendChild(el);\n styleElements[layer] = el;\n styleSheets[layer] = el.sheet;\n }\n return styleSheets[layer];\n}\n/* -------------------------------------------------------------------------- */\n/* Utilities */\n/* -------------------------------------------------------------------------- */\nconst camelToKebabCache = new Map();\nfunction camelToKebab(str) {\n const cached = camelToKebabCache.get(str);\n if (cached)\n return cached;\n const res = str.replace(/[A-Z]/g, m => \"-\" + m.toLowerCase());\n camelToKebabCache.set(str, res);\n return res;\n}\nfunction resolveValue(v) {\n return typeof v === \"function\" ? v() : v;\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 atomicClassCache = new Map();\nconst atomicRuleRegistry = new Map();\nconst insertedRules = new Set();\nfunction makeClassName(signature, layer) {\n return `f${hashString(`${layer}|${signature}`)}`;\n}\nfunction prefixSelector(selector, className) {\n return selector\n .split(\",\")\n .map(p => p.trim().replace(/&/g, `.${className}`))\n .join(\",\");\n}\nfunction getAtomicClasses(selector, decl) {\n const signature = `${selector}|${decl}`;\n const cached = atomicClassCache.get(signature);\n if (cached)\n return cached;\n const classes = [];\n const rules = [];\n for (let layer = 0; layer < PRECEDENCE_LAYERS; layer++) {\n const className = makeClassName(signature, layer);\n classes.push(className);\n const cssText = selector === \"&\"\n ? `.${className}{${decl}}`\n : `${prefixSelector(selector, className)}{${decl}}`;\n rules.push({ className, layer, cssText });\n }\n atomicClassCache.set(signature, classes);\n atomicRuleRegistry.set(signature, rules);\n return classes;\n}\nfunction buildAtomicEntries(rule) {\n const entries = [];\n for (const key in rule) {\n const val = rule[key];\n if (val == null)\n continue;\n if (key.startsWith(\":\") && typeof val === \"object\") {\n for (const prop in val) {\n const v = val[prop];\n if (v == null || typeof v === \"object\")\n continue;\n const decl = `${camelToKebab(prop)}:${resolveValue(v)}`;\n entries.push({ classes: getAtomicClasses(`&${key}`, decl) });\n }\n continue;\n }\n if (key.startsWith(\"@\"))\n continue;\n if (typeof val !== \"object\") {\n const decl = `${camelToKebab(key)}:${resolveValue(val)}`;\n entries.push({ classes: getAtomicClasses(\"&\", decl) });\n }\n }\n return entries;\n}\n/* -------------------------------------------------------------------------- */\n/* makeStyles */\n/* -------------------------------------------------------------------------- */\nexport function makeStyles(styles, layer = 0) {\n return () => {\n const result = {};\n for (const slot in styles) {\n const rule = styles[slot] ?? {};\n const entries = buildAtomicEntries(rule);\n result[slot] = entries\n .map(e => e.classes[layer])\n .join(\" \");\n }\n return result;\n };\n}\n/* -------------------------------------------------------------------------- */\n/* makeResetStyles (UNCHANGED, eager) */\n/* -------------------------------------------------------------------------- */\nconst resetCache = new Map();\nfunction stringifyRule(selector, styles) {\n const rules = [];\n const decls = [];\n for (const key in styles) {\n const val = styles[key];\n if (val == null)\n continue;\n if (key.startsWith(\":\") && typeof val === \"object\") {\n rules.push(...stringifyRule(`${selector}${key}`, val));\n continue;\n }\n if (typeof val !== \"object\") {\n decls.push(`${camelToKebab(key)}:${resolveValue(val)}`);\n }\n }\n if (decls.length) {\n rules.unshift(`${selector}{${decls.join(\";\")}}`);\n }\n return rules;\n}\nexport function makeResetStyles(styles) {\n const signature = JSON.stringify(styles);\n return () => {\n const cached = resetCache.get(signature);\n if (cached)\n return cached;\n const className = `r${hashString(signature)}`;\n const selector = `.${className}`;\n const rules = stringifyRule(selector, styles);\n const sheet = ensureStyleSheet(0);\n for (const rule of rules) {\n sheet.insertRule(rule, sheet.cssRules.length);\n }\n resetCache.set(signature, className);\n return className;\n };\n}\n/* -------------------------------------------------------------------------- */\n/* mergeClasses (FLUENT ORDER GUARANTEE) */\n/* -------------------------------------------------------------------------- */\nexport function mergeClasses(...inputs) {\n const seen = new Set();\n const result = [];\n for (const input of inputs) {\n if (typeof input !== \"string\")\n continue;\n for (const cls of input.trim().split(/\\s+/)) {\n if (seen.has(cls))\n continue;\n seen.add(cls);\n // 🔑 INSERT RULES IN MERGE ORDER\n for (const rules of atomicRuleRegistry.values()) {\n for (const rule of rules) {\n if (rule.className === cls && !insertedRules.has(rule.cssText)) {\n ensureStyleSheet(rule.layer).insertRule(rule.cssText, ensureStyleSheet(rule.layer).cssRules.length);\n insertedRules.add(rule.cssText);\n }\n }\n }\n result.push(cls);\n }\n }\n return result.join(\" \");\n}\n"],"names":["isState"],"mappings":"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"}
|
|
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 PRECEDENCE_LAYERS = 3;\n/* -------------------------------------------------------------------------- */\n/* Stylesheet management (one <style> per layer) */\n/* -------------------------------------------------------------------------- */\nconst styleElements = Array(PRECEDENCE_LAYERS).fill(null);\nconst styleSheets = Array(PRECEDENCE_LAYERS).fill(null);\nfunction ensureStyleSheet(layer) {\n if (layer < 0 || layer >= PRECEDENCE_LAYERS) {\n throw new Error(`Invalid style layer ${layer}. Must be 0..${PRECEDENCE_LAYERS - 1}`);\n }\n if (!styleSheets[layer]) {\n const el = document.createElement('style');\n el.id = `styles-layer-${layer}`;\n // Insert in DOM order by layer to keep cascade predictable\n // (lower layers first, higher layers later).\n let inserted = false;\n for (let i = layer - 1; i >= 0; i--) {\n const prev = styleElements[i];\n if (prev && prev.parentNode) {\n prev.parentNode.insertBefore(el, prev.nextSibling);\n inserted = true;\n break;\n }\n }\n if (!inserted) {\n // No lower layer exists yet; put at start of head so future layers can insert after.\n // If head is empty, this is equivalent to appendChild.\n const head = document.head;\n head.insertBefore(el, head.firstChild);\n }\n styleElements[layer] = el;\n styleSheets[layer] = el.sheet;\n }\n return styleSheets[layer];\n}\n/* -------------------------------------------------------------------------- */\n/* Utilities */\n/* -------------------------------------------------------------------------- */\nconst camelToKebabCache = new Map();\nfunction camelToKebab(str) {\n const cached = camelToKebabCache.get(str);\n if (cached)\n return cached;\n const res = str.replace(/[A-Z]/g, m => '-' + m.toLowerCase());\n camelToKebabCache.set(str, res);\n return res;\n}\nfunction resolveValue(v) {\n return typeof v === 'function' ? v() : v;\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}\nfunction prefixSelector(selector, className) {\n // handles: \"&\", \"&:hover\", \"&:hover,&:active\"\n return selector\n .split(',')\n .map(part => part.trim().replace(/&/g, `.${className}`))\n .join(',');\n}\n/* -------------------------------------------------------------------------- */\n/* Atomic rule generation */\n/* -------------------------------------------------------------------------- */\n/**\n * IMPORTANT CHANGE:\n * Atomic classes are now scoped per makeStyles instance via `styleSetId`.\n *\n * This prevents earlier style sets (e.g. root styles) from \"owning\" an atomic\n * declaration in the cache, which would force later style sets (e.g. disabled)\n * to reuse a class whose CSS rule was inserted earlier — breaking override order.\n */\nlet styleSetCounter = 0;\n// Cache key: styleSetId | layer | selector | decl -> className\nconst atomicCache = new Map();\nfunction makeClassName(signature, layer) {\n return `f${hashString(`${layer}|${signature}`)}`;\n}\nfunction getAtomicClass(styleSetId, layer, selector, decl) {\n const signature = `${styleSetId}|${selector}|${decl}`;\n const cacheKey = `${layer}|${signature}`;\n const cached = atomicCache.get(cacheKey);\n if (cached)\n return cached;\n const className = makeClassName(signature, layer);\n const rule = selector === '&'\n ? `.${className}{${decl}}`\n : `${prefixSelector(selector, className)}{${decl}}`;\n const sheet = ensureStyleSheet(layer);\n sheet.insertRule(rule, sheet.cssRules.length);\n atomicCache.set(cacheKey, className);\n return className;\n}\nfunction buildAtomicEntries(styleSetId, layer, rule) {\n const entries = [];\n for (const key in rule) {\n const val = rule[key];\n if (val == null)\n continue;\n // Pseudo selectors\n if (key.startsWith(':') && typeof val === 'object') {\n for (const prop in val) {\n const v = val[prop];\n if (v == null || typeof v === 'object')\n continue;\n const decl = `${camelToKebab(prop)}:${resolveValue(v)}`;\n const className = getAtomicClass(styleSetId, layer, `&${key}`, decl);\n entries.push({ className });\n }\n continue;\n }\n // @media, @supports\n if (key.startsWith('@') && typeof val === 'object') {\n // handled elsewhere (reset styles), skip for atomic\n continue;\n }\n // Normal CSS property\n if (typeof val !== 'object') {\n const decl = `${camelToKebab(key)}:${resolveValue(val)}`;\n const className = getAtomicClass(styleSetId, layer, '&', decl);\n entries.push({ className });\n }\n }\n return entries;\n}\n/* -------------------------------------------------------------------------- */\n/* makeStyles */\n/* -------------------------------------------------------------------------- */\nexport function makeStyles(styles, layer = 0) {\n const styleSetId = ++styleSetCounter;\n return () => {\n const result = {};\n for (const slot in styles) {\n const rule = (styles[slot] ?? {});\n const entries = buildAtomicEntries(styleSetId, layer, rule);\n const classes = entries.map(e => e.className).join(' ');\n result[slot] = classes;\n }\n return result;\n };\n}\n/* -------------------------------------------------------------------------- */\n/* makeResetStyles */\n/* -------------------------------------------------------------------------- */\nconst resetCache = new Map();\nfunction stringifyRule(selector, styles) {\n const rules = [];\n const decls = [];\n for (const key in styles) {\n const val = styles[key];\n if (val == null)\n continue;\n if (key.startsWith(':') && typeof val === 'object') {\n rules.push(...stringifyRule(`${selector}${key}`, val));\n continue;\n }\n // NOTE: @media/@supports are still not supported in reset in your engine.\n // You can add them later by emitting nested rules instead of skipping.\n if (key.startsWith('@') && typeof val === 'object') {\n continue;\n }\n if (typeof val !== 'object') {\n decls.push(`${camelToKebab(key)}:${resolveValue(val)}`);\n }\n }\n if (decls.length) {\n rules.unshift(`${selector}{${decls.join(';')}}`);\n }\n return rules;\n}\nexport function makeResetStyles(styles) {\n const signature = JSON.stringify(styles);\n return () => {\n const cached = resetCache.get(signature);\n if (cached)\n return cached;\n const className = `r${hashString(signature)}`;\n const selector = `.${className}`;\n const rules = stringifyRule(selector, styles);\n const sheet = ensureStyleSheet(0);\n for (const rule of rules) {\n sheet.insertRule(rule, sheet.cssRules.length);\n }\n resetCache.set(signature, className);\n return className;\n };\n}\n/* -------------------------------------------------------------------------- */\n/* mergeClasses */\n/* -------------------------------------------------------------------------- */\n/**\n * Keep \"last occurrence wins\" order (more intuitive and closer to what people expect).\n * This does NOT affect CSS specificity, but it makes class strings stable and helps debugging.\n */\nexport function mergeClasses(...inputs) {\n const all = [];\n for (const input of inputs) {\n if (typeof input !== 'string')\n continue;\n const parts = input.trim().split(/\\s+/);\n for (const cls of parts) {\n if (cls)\n all.push(cls);\n }\n }\n const lastIndex = new Map();\n let index = 0;\n for (const cls of all) {\n lastIndex.set(cls, index++);\n }\n return Array.from(lastIndex.entries())\n .sort((a, b) => a[1] - b[1])\n .map(([cls]) => cls)\n .join(' ');\n}\nfunction pickShorthand(obj) {\n const out = {};\n for (const k in obj) {\n const v = obj[k];\n if (v !== undefined)\n out[k] = v;\n }\n return out;\n}\nexport const shorthands = {\n /* ---------------------------------- */\n /* Border */\n /* ---------------------------------- */\n border(width, style, color) {\n return {\n ...shorthands.borderWidth(width),\n ...shorthands.borderStyle(style),\n ...shorthands.borderColor(color),\n };\n },\n borderWidth(all) {\n return pickShorthand({\n borderTopWidth: all,\n borderRightWidth: all,\n borderBottomWidth: all,\n borderLeftWidth: all,\n });\n },\n borderStyle(all) {\n return pickShorthand({\n borderTopStyle: all,\n borderRightStyle: all,\n borderBottomStyle: all,\n borderLeftStyle: all,\n });\n },\n borderColor(all) {\n return pickShorthand({\n borderTopColor: all,\n borderRightColor: all,\n borderBottomColor: all,\n borderLeftColor: all,\n });\n },\n borderRadius(tl, tr, br, bl) {\n if (tr === undefined && br === undefined && bl === undefined) {\n return pickShorthand({\n borderTopLeftRadius: tl,\n borderTopRightRadius: tl,\n borderBottomRightRadius: tl,\n borderBottomLeftRadius: tl,\n });\n }\n return pickShorthand({\n borderTopLeftRadius: tl,\n borderTopRightRadius: tr,\n borderBottomRightRadius: br,\n borderBottomLeftRadius: bl,\n });\n },\n /* ---------------------------------- */\n /* Padding / Margin */\n /* ---------------------------------- */\n padding(all) {\n return pickShorthand({\n paddingTop: all,\n paddingRight: all,\n paddingBottom: all,\n paddingLeft: all,\n });\n },\n paddingHorizontal(v) {\n return pickShorthand({\n paddingLeft: v,\n paddingRight: v,\n });\n },\n paddingVertical(v) {\n return pickShorthand({\n paddingTop: v,\n paddingBottom: v,\n });\n },\n margin(all) {\n return pickShorthand({\n marginTop: all,\n marginRight: all,\n marginBottom: all,\n marginLeft: all,\n });\n },\n marginHorizontal(v) {\n return pickShorthand({\n marginLeft: v,\n marginRight: v,\n });\n },\n marginVertical(v) {\n return pickShorthand({\n marginTop: v,\n marginBottom: v,\n });\n },\n /* ---------------------------------- */\n /* Layout */\n /* ---------------------------------- */\n inset(all) {\n return pickShorthand({\n top: all,\n right: all,\n bottom: all,\n left: all,\n });\n },\n insetHorizontal(v) {\n return pickShorthand({\n left: v,\n right: v,\n });\n },\n insetVertical(v) {\n return pickShorthand({\n top: v,\n bottom: v,\n });\n },\n size(w, h) {\n if (h === undefined) {\n return pickShorthand({ width: w, height: w });\n }\n return pickShorthand({ width: w, height: h });\n },\n overflow(v) {\n return pickShorthand({\n overflowX: v,\n overflowY: v,\n });\n },\n};\n"],"names":["isState"],"mappings":"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"}
|