nuclo 0.1.38 → 0.1.40
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/README.md +57 -40
- package/dist/core/conditionalRenderer.d.ts.map +1 -1
- package/dist/core/modifierProcessor.d.ts.map +1 -1
- package/dist/core/runtimeBootstrap.d.ts +1 -1
- package/dist/core/styleManager.d.ts.map +1 -1
- package/dist/list/renderer.d.ts +1 -1
- package/dist/list/renderer.d.ts.map +1 -1
- package/dist/list/runtime.d.ts +2 -2
- package/dist/list/runtime.d.ts.map +1 -1
- package/dist/list/types.d.ts +9 -9
- package/dist/list/types.d.ts.map +1 -1
- package/dist/nuclo.cjs +1 -1
- package/dist/nuclo.cjs.map +1 -1
- package/dist/nuclo.js +1 -1
- package/dist/nuclo.js.map +1 -1
- package/dist/nuclo.umd.js +1 -1
- package/dist/nuclo.umd.js.map +1 -1
- package/dist/utility/arrayUtils.d.ts +1 -1
- package/dist/utility/arrayUtils.d.ts.map +1 -1
- package/dist/utility/conditionalInfo.d.ts +5 -5
- package/dist/utility/conditionalInfo.d.ts.map +1 -1
- package/dist/utility/conditions.d.ts.map +1 -1
- package/dist/utility/events.d.ts.map +1 -1
- package/dist/utility/modifierPredicates.d.ts +2 -3
- package/dist/utility/modifierPredicates.d.ts.map +1 -1
- package/dist/utility/renderables.d.ts +1 -1
- package/dist/utility/renderables.d.ts.map +1 -1
- package/package.json +14 -6
package/README.md
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
# nuclo
|
|
2
2
|
|
|
3
|
-
**A DOM library for
|
|
3
|
+
**A simple, explicit DOM library for building reactive user interfaces.**
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Build reactive UIs without the magic tricks. Just functions, mutations, and a single `update()` call when you feel like it.
|
|
5
|
+
Build reactive UIs without the magic. Just functions, plain JavaScript objects, and explicit `update()` calls. No virtual DOM, no complex state management, no build configuration required.
|
|
8
6
|
|
|
9
7
|
```ts
|
|
10
8
|
import 'nuclo';
|
|
@@ -24,12 +22,12 @@ render(counter, document.body);
|
|
|
24
22
|
|
|
25
23
|
## Why nuclo?
|
|
26
24
|
|
|
27
|
-
- **
|
|
28
|
-
- **
|
|
29
|
-
- **Tiny
|
|
30
|
-
- **Global
|
|
31
|
-
- **TypeScript-
|
|
32
|
-
- **
|
|
25
|
+
- **Explicit and Predictable** – You control when updates happen with a simple `update()` call
|
|
26
|
+
- **Direct DOM Manipulation** – Work directly with the DOM, no virtual layer in between
|
|
27
|
+
- **Tiny Footprint** – Minimal bundle size, maximum performance
|
|
28
|
+
- **Global Tag Builders** – Natural API with global functions for all HTML and SVG elements
|
|
29
|
+
- **TypeScript-First** – Full type definitions for all 140+ HTML and SVG tags
|
|
30
|
+
- **Fine-Grained Reactivity** – Only updates what changed, nothing more
|
|
33
31
|
|
|
34
32
|
---
|
|
35
33
|
|
|
@@ -206,7 +204,7 @@ import 'nuclo';
|
|
|
206
204
|
type Product = { id: number; title: string; category: string };
|
|
207
205
|
type State = { status: 'idle' | 'loading' | 'error'; products: Product[]; error?: string };
|
|
208
206
|
|
|
209
|
-
|
|
207
|
+
const state: State = { status: 'idle', products: [] };
|
|
210
208
|
let searchQuery = 'phone';
|
|
211
209
|
|
|
212
210
|
async function fetchProducts() {
|
|
@@ -270,7 +268,7 @@ render(app, document.body);
|
|
|
270
268
|
|
|
271
269
|
### 1. **Explicit Updates**
|
|
272
270
|
|
|
273
|
-
|
|
271
|
+
nuclo doesn't auto-detect changes. You call `update()` when ready:
|
|
274
272
|
|
|
275
273
|
```ts
|
|
276
274
|
let name = 'World';
|
|
@@ -285,11 +283,11 @@ update();
|
|
|
285
283
|
|
|
286
284
|
**Advantages of explicit `update()`:**
|
|
287
285
|
|
|
288
|
-
- **Performance**: Batch mutations
|
|
289
|
-
- **Control**: You
|
|
290
|
-
- **Predictability**: Zero surprise re-renders
|
|
291
|
-
- **Simplicity**: No proxies, no dependency graphs,
|
|
292
|
-
- **Debugging**:
|
|
286
|
+
- **Performance**: Batch multiple mutations into a single update cycle
|
|
287
|
+
- **Control**: You decide exactly when the UI should refresh
|
|
288
|
+
- **Predictability**: Zero surprise re-renders, explicit update flow
|
|
289
|
+
- **Simplicity**: No proxies, no dependency graphs, just objects and functions
|
|
290
|
+
- **Debugging**: Set a breakpoint at `update()` to trace all state changes
|
|
293
291
|
|
|
294
292
|
```ts
|
|
295
293
|
// Example: Batch updates for better performance
|
|
@@ -443,16 +441,16 @@ div({
|
|
|
443
441
|
|
|
444
442
|
### Batch Updates
|
|
445
443
|
|
|
446
|
-
|
|
444
|
+
Make multiple changes, then update once:
|
|
447
445
|
|
|
448
446
|
```ts
|
|
449
|
-
//
|
|
447
|
+
// Efficient: One update for all changes
|
|
450
448
|
items.push(item1);
|
|
451
449
|
items.push(item2);
|
|
452
450
|
items.sort();
|
|
453
451
|
update();
|
|
454
452
|
|
|
455
|
-
//
|
|
453
|
+
// Works but inefficient: Multiple updates
|
|
456
454
|
items.push(item1);
|
|
457
455
|
update();
|
|
458
456
|
items.push(item2);
|
|
@@ -461,14 +459,14 @@ update();
|
|
|
461
459
|
|
|
462
460
|
### Object Identity for Lists
|
|
463
461
|
|
|
464
|
-
Lists track items by reference. Mutate
|
|
462
|
+
Lists track items by reference. Mutate objects in place:
|
|
465
463
|
|
|
466
464
|
```ts
|
|
467
|
-
//
|
|
465
|
+
// Good: Mutate the object
|
|
468
466
|
todos[0].done = true;
|
|
469
467
|
update();
|
|
470
468
|
|
|
471
|
-
//
|
|
469
|
+
// Avoid: Creates new object, DOM element recreated
|
|
472
470
|
todos[0] = { ...todos[0], done: true };
|
|
473
471
|
update();
|
|
474
472
|
```
|
|
@@ -537,12 +535,12 @@ div(
|
|
|
537
535
|
|
|
538
536
|
## Performance
|
|
539
537
|
|
|
540
|
-
- **No virtual DOM diffing** –
|
|
541
|
-
- **Fine-grained updates** – Only updates what changed
|
|
542
|
-
- **Element reuse** – Lists
|
|
543
|
-
- **Branch preservation** –
|
|
538
|
+
- **No virtual DOM diffing** – Direct DOM manipulation for maximum efficiency
|
|
539
|
+
- **Fine-grained updates** – Only updates what changed, nothing more
|
|
540
|
+
- **Element reuse** – Lists intelligently reuse DOM elements when items move
|
|
541
|
+
- **Branch preservation** – Conditional branches persist until conditions change
|
|
544
542
|
|
|
545
|
-
For high-frequency updates (animations, game loops
|
|
543
|
+
For high-frequency updates (animations, game loops), batch mutations before calling `update()`.
|
|
546
544
|
|
|
547
545
|
---
|
|
548
546
|
|
|
@@ -550,7 +548,7 @@ For high-frequency updates (animations, game loops, existential crises), batch m
|
|
|
550
548
|
|
|
551
549
|
### Inspect Markers
|
|
552
550
|
|
|
553
|
-
Open DevTools
|
|
551
|
+
Open DevTools to see comment markers that help you understand the structure:
|
|
554
552
|
|
|
555
553
|
```html
|
|
556
554
|
<!-- when-start-1 -->
|
|
@@ -563,26 +561,45 @@ Open DevTools, stare at the DOM like it owes you money:
|
|
|
563
561
|
<!-- list-end -->
|
|
564
562
|
```
|
|
565
563
|
|
|
566
|
-
These
|
|
564
|
+
These markers identify conditional and list boundaries in the DOM.
|
|
567
565
|
|
|
568
566
|
### Common Issues
|
|
569
567
|
|
|
570
568
|
**Content not updating?**
|
|
571
|
-
-
|
|
572
|
-
-
|
|
569
|
+
- Ensure you're calling `update()` after state changes
|
|
570
|
+
- Verify your reactive functions are returning the expected values
|
|
573
571
|
|
|
574
572
|
**List items not reusing elements?**
|
|
575
|
-
-
|
|
576
|
-
-
|
|
573
|
+
- Keep object references stable (mutate instead of replacing)
|
|
574
|
+
- Avoid creating new objects when updating properties
|
|
577
575
|
|
|
578
576
|
---
|
|
579
577
|
|
|
580
578
|
## Roadmap
|
|
581
579
|
|
|
582
|
-
- Keyed list variant
|
|
583
|
-
- Transition
|
|
584
|
-
- Dev mode diagnostics
|
|
585
|
-
-
|
|
580
|
+
- Keyed list variant for explicit key-based tracking
|
|
581
|
+
- Transition and animation helpers
|
|
582
|
+
- Dev mode diagnostics and warnings
|
|
583
|
+
- Server-side rendering (SSR) support
|
|
584
|
+
|
|
585
|
+
---
|
|
586
|
+
|
|
587
|
+
## Documentation
|
|
588
|
+
|
|
589
|
+
Full documentation is available at [https://dan2dev.github.io/nuclo/](https://dan2dev.github.io/nuclo/)
|
|
590
|
+
|
|
591
|
+
- [Getting Started](https://dan2dev.github.io/nuclo/getting-started.html)
|
|
592
|
+
- [API Reference](https://dan2dev.github.io/nuclo/api.html)
|
|
593
|
+
- [Examples](https://dan2dev.github.io/nuclo/examples.html)
|
|
594
|
+
|
|
595
|
+
---
|
|
596
|
+
|
|
597
|
+
## Author
|
|
598
|
+
|
|
599
|
+
Created by **Danilo Celestino de Castro**
|
|
600
|
+
|
|
601
|
+
- GitHub: [@dan2dev](https://github.com/dan2dev)
|
|
602
|
+
- Twitter: [@dan2dev](https://twitter.com/dan2dev)
|
|
586
603
|
|
|
587
604
|
---
|
|
588
605
|
|
|
@@ -590,6 +607,6 @@ These comment markers are your breadcrumbs. Follow them to victory.
|
|
|
590
607
|
|
|
591
608
|
MIT License - see [LICENSE.md](LICENSE.md) for details.
|
|
592
609
|
|
|
593
|
-
This library is free and open source. When using nuclo, please include attribution in your documentation
|
|
610
|
+
This library is free and open source. When using nuclo, please include attribution in your documentation or application.
|
|
594
611
|
|
|
595
|
-
**TL;DR:** Use it freely,
|
|
612
|
+
**TL;DR:** Use it freely, give credit where it's due!
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditionalRenderer.d.ts","sourceRoot":"","sources":["../../src/core/conditionalRenderer.ts"],"names":[],"mappings":"AAMA,wBAAgB,wBAAwB,CAAC,QAAQ,SAAS,cAAc,EACtE,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,MAAM,OAAO,EACxB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,GACxD,eAAe,CAAC,QAAQ,CAAC,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"conditionalRenderer.d.ts","sourceRoot":"","sources":["../../src/core/conditionalRenderer.ts"],"names":[],"mappings":"AAMA,wBAAgB,wBAAwB,CAAC,QAAQ,SAAS,cAAc,EACtE,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,MAAM,OAAO,EACxB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,GACxD,eAAe,CAAC,QAAQ,CAAC,GAAG,OAAO,CAoBrC;AAWD,wBAAgB,2BAA2B,CAAC,QAAQ,SAAS,cAAc,EACzE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,GACxD;IACD,SAAS,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;CAChE,CAWA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modifierProcessor.d.ts","sourceRoot":"","sources":["../../src/core/modifierProcessor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"modifierProcessor.d.ts","sourceRoot":"","sources":["../../src/core/modifierProcessor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE/F,MAAM,MAAM,YAAY,CAAC,QAAQ,SAAS,cAAc,GAAG,cAAc,IACrE,OAAO,CAAC,QAAQ,CAAC,GACjB,SAAS,CAAC,QAAQ,CAAC,CAAC;AAExB,wBAAgB,iBAAiB,CAAC,QAAQ,SAAS,cAAc,EAC/D,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EACjC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,EAChC,KAAK,EAAE,MAAM,GACZ,IAAI,GAAG,IAAI,CAoDb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styleManager.d.ts","sourceRoot":"","sources":["../../src/core/styleManager.ts"],"names":[],"mappings":"AAGA,KAAK,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACpD,KAAK,aAAa,GAAG,MAAM,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC;AAE9D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,SAAS,cAAc,EAChE,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,EAClC,MAAM,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GACzC,IAAI,
|
|
1
|
+
{"version":3,"file":"styleManager.d.ts","sourceRoot":"","sources":["../../src/core/styleManager.ts"],"names":[],"mappings":"AAGA,KAAK,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACpD,KAAK,aAAa,GAAG,MAAM,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC;AAE9D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,SAAS,cAAc,EAChE,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,EAClC,MAAM,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GACzC,IAAI,CAeN;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS,cAAc,EACjE,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,EAClC,UAAU,EAAE,eAAe,GAAG,aAAa,GAAG,IAAI,GAAG,SAAS,GAC7D,IAAI,CAgBN"}
|
package/dist/list/renderer.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ import type { ListRenderer, ListItemsProvider } from "./types";
|
|
|
2
2
|
/**
|
|
3
3
|
* Maps items to DOM elements, keeping them in sync with changes.
|
|
4
4
|
*/
|
|
5
|
-
export declare function list<TItem>(itemsProvider: ListItemsProvider<TItem>, render: ListRenderer<TItem>): NodeModFn<
|
|
5
|
+
export declare function list<TItem, TTagName extends ElementTagName = ElementTagName>(itemsProvider: ListItemsProvider<TItem>, render: ListRenderer<TItem, TTagName>): NodeModFn<TTagName>;
|
|
6
6
|
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/list/renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/D;;GAEG;AACH,wBAAgB,IAAI,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/list/renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/D;;GAEG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,QAAQ,SAAS,cAAc,GAAG,cAAc,EAC1E,aAAa,EAAE,iBAAiB,CAAC,KAAK,CAAC,EACvC,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,GACpC,SAAS,CAAC,QAAQ,CAAC,CAMrB"}
|
package/dist/list/runtime.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ListRenderer, ListRuntime, ListItemsProvider } from "./types";
|
|
2
|
-
export declare function sync<TItem>(runtime: ListRuntime<TItem>): void;
|
|
3
|
-
export declare function createListRuntime<TItem>(itemsProvider: ListItemsProvider<TItem>, renderItem: ListRenderer<TItem>, host: ExpandedElement<
|
|
2
|
+
export declare function sync<TItem, TTagName extends ElementTagName>(runtime: ListRuntime<TItem, TTagName>): void;
|
|
3
|
+
export declare function createListRuntime<TItem, TTagName extends ElementTagName = ElementTagName>(itemsProvider: ListItemsProvider<TItem>, renderItem: ListRenderer<TItem, TTagName>, host: ExpandedElement<TTagName>): ListRuntime<TItem, TTagName>;
|
|
4
4
|
export declare function updateListRuntimes(): void;
|
|
5
5
|
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/list/runtime.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAkB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAiB5F,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/list/runtime.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAkB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAiB5F,wBAAgB,IAAI,CAAC,KAAK,EAAE,QAAQ,SAAS,cAAc,EACzD,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,GACpC,IAAI,CAkFN;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,SAAS,cAAc,GAAG,cAAc,EACvF,aAAa,EAAE,iBAAiB,CAAC,KAAK,CAAC,EACvC,UAAU,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,EACzC,IAAI,EAAE,eAAe,CAAC,QAAQ,CAAC,GAC9B,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAqB9B;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CASzC"}
|
package/dist/list/types.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
export type ListRenderer<TItem> = (item: TItem, index: number) => ExpandedElement<
|
|
2
|
-
export type ListItemsProvider<TItem> = () => TItem[];
|
|
3
|
-
export interface ListItemRecord<TItem> {
|
|
1
|
+
export type ListRenderer<TItem, TTagName extends ElementTagName = ElementTagName> = (item: TItem, index: number) => ExpandedElement<TTagName> | NodeModFn<TTagName> | Node | null;
|
|
2
|
+
export type ListItemsProvider<TItem> = () => readonly TItem[];
|
|
3
|
+
export interface ListItemRecord<TItem, TTagName extends ElementTagName = ElementTagName> {
|
|
4
4
|
item: TItem;
|
|
5
|
-
element: ExpandedElement<
|
|
5
|
+
element: ExpandedElement<TTagName>;
|
|
6
6
|
}
|
|
7
|
-
export interface ListRuntime<TItem> {
|
|
7
|
+
export interface ListRuntime<TItem, TTagName extends ElementTagName = ElementTagName> {
|
|
8
8
|
itemsProvider: ListItemsProvider<TItem>;
|
|
9
|
-
renderItem: ListRenderer<TItem>;
|
|
9
|
+
renderItem: ListRenderer<TItem, TTagName>;
|
|
10
10
|
startMarker: Comment;
|
|
11
11
|
endMarker: Comment;
|
|
12
|
-
records: ListItemRecord<TItem>[];
|
|
13
|
-
host: ExpandedElement<
|
|
14
|
-
lastSyncedItems: TItem[];
|
|
12
|
+
records: ListItemRecord<TItem, TTagName>[];
|
|
13
|
+
host: ExpandedElement<TTagName>;
|
|
14
|
+
lastSyncedItems: readonly TItem[];
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/list/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/list/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,CAAC,KAAK,IAAI,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/list/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,CAAC,KAAK,EAAE,QAAQ,SAAS,cAAc,GAAG,cAAc,IAAI,CAClF,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,MAAM,KACV,eAAe,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnE,MAAM,MAAM,iBAAiB,CAAC,KAAK,IAAI,MAAM,SAAS,KAAK,EAAE,CAAC;AAE9D,MAAM,WAAW,cAAc,CAAC,KAAK,EAAE,QAAQ,SAAS,cAAc,GAAG,cAAc;IACrF,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAW,CAAC,KAAK,EAAE,QAAQ,SAAS,cAAc,GAAG,cAAc;IAClF,aAAa,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxC,UAAU,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1C,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;IAC3C,IAAI,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAChC,eAAe,EAAE,SAAS,KAAK,EAAE,CAAC;CACnC"}
|
package/dist/nuclo.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function e(e){return null===e||"object"!=typeof e&&"function"!=typeof e}function t(e){return e instanceof Node}function n(e){return"object"==typeof e&&null!==e}function r(e){return n(e)&&"tagName"in e}function o(e){return"function"==typeof e}function i(e,t){"undefined"!=typeof console&&console.error(`nuclo: ${e}`,t)}function c(e,t){try{return e()}catch(e){return i("Operation failed",e),t}}const u="undefined"!=typeof window&&"undefined"!=typeof document;function a(e){if(!e?.parentNode)return!1;try{return e.parentNode.removeChild(e),!0}catch{return!1}}function s(e){if(!u)return null;try{return document.createComment(e)}catch{return null}}function l(e){if(!u)throw new Error("Cannot create comment in non-browser environment");const t=s(`${e}-${Math.random().toString(36).slice(2)}`);if(!t)throw new Error("Failed to create comment");return t}function d(e){const t=s(`${e}-end`);if(!t)throw new Error("Failed to create end comment");return{start:l(`${e}-start`),end:t}}function f(e){return!!e&&("boolean"==typeof e.isConnected?e.isConnected:document.contains(e))}const p=new Map,h=new Map;function m(e,t){t.attributeResolvers.forEach(({resolver:e,applyValue:t},n)=>{try{t(c(e))}catch(e){i(`Failed to update reactive attribute: ${n}`,e)}})}function g(e,t){if("function"!=typeof e)return i("Invalid resolver provided to createReactiveTextNode"),document.createTextNode("");const n=arguments.length>1?t:c(e,""),r=void 0===n?"":String(n),o=document.createTextNode(r);return p.set(o,{resolver:e,lastValue:r}),o}function y(e,t,n,r){if(!(e instanceof Element&&t&&"function"==typeof n))return void i("Invalid parameters for registerAttributeResolver");const o=function(e){let t=h.get(e);return t||(t={attributeResolvers:new Map},h.set(e,t)),t}(e);o.attributeResolvers.set(t,{resolver:n,applyValue:r});try{r(c(n))}catch(e){i("Failed to apply initial attribute value",e)}if(!o.updateListener){const t=()=>m(0,o);e.addEventListener("update",t),o.updateListener=t}}function v(e,t){e&&e.style&&t&&Object.entries(t).forEach(([t,n])=>{if(null==n||""===n)e.style.removeProperty(t),e.style[t]="";else try{e.style[t]=String(n)}catch{}})}function b(e,t,n){if(null==n)return;if("style"===t)return i=n,void((r=e)&&(o(i)?y(r,"style",()=>{try{return i()}catch{return null}},e=>{v(r,e)}):v(r,i)));var r,i;const c=n=>{null!=n&&(t in e?e[t]=n:e instanceof Element&&e.setAttribute(String(t),String(n)))};o(n)&&0===n.length?y(e,String(t),n,c):c(n)}function x(e,t){if(t)for(const n of Object.keys(t)){b(e,n,t[n])}}const C=new WeakMap;function E(e){const{value:t,error:n}=function(e){const t=C.get(e);if(t)return t;try{const t={value:e(),error:!1};return C.set(e,t),t}catch{const t={value:void 0,error:!0};return C.set(e,t),t}}(e);return!n&&"boolean"==typeof t}function w(e,r,i){if(!o(e)||0!==e.length||!E(e))return!1;const c=r.filter((e,t)=>t!==i);if(0===c.length)return!1;return c.some(e=>n(e)||t(e)||o(e)&&e.length>0)}function M(r,c,u){if(null==c)return null;if(o(c)){if(0===c.length)try{let t=C.get(c);if(!t){t={value:c(),error:!1},C.set(c,t)}if(t.error){const e=document.createDocumentFragment(),t=document.createComment(` text-${u} `),n=g(()=>"");return e.appendChild(t),e.appendChild(n),e}const n=t.value;if(e(n)&&null!=n){const e=document.createDocumentFragment(),t=document.createComment(` text-${u} `),r=g(c,n);return e.appendChild(t),e.appendChild(r),e}return null}catch(e){C.set(c,{value:void 0,error:!0}),i("Error evaluating reactive text function:",e);const t=document.createDocumentFragment(),n=document.createComment(` text-${u} `),r=g(()=>"");return t.appendChild(n),t.appendChild(r),t}const o=c(r,u);if(null==o)return null;if(e(o)){const e=document.createDocumentFragment(),t=document.createComment(` text-${u} `),n=document.createTextNode(String(o));return e.appendChild(t),e.appendChild(n),e}return t(o)?o:(n(o)&&x(r,o),null)}const a=c;if(null==a)return null;if(e(a)){const e=document.createDocumentFragment(),t=document.createComment(` text-${u} `),n=document.createTextNode(String(a));return e.appendChild(t),e.appendChild(n),e}return t(a)?a:(n(a)&&x(r,a),null)}const S=new Set;function N(e,t){e._conditionalInfo=t,S.add(e)}function k(e,t,n=0){if(!t||0===t.length)return{element:e,nextIndex:n,appended:0};let r=n,o=0;const i=e;for(let n=0;n<t.length;n+=1){const c=t[n];if(null==c)continue;const u=M(e,c,r);u&&(u.parentNode!==i&&i.appendChild(u),r+=1,o+=1)}return{element:e,nextIndex:r,appended:o}}function T(e,t){const n=document.createElement(e);return k(n,t,0),n}function F(e){const t=function(e){for(let t=0;t<e.length;t+=1)if(w(e[t],e,t))return t;return-1}(e);return-1===t?{condition:null,otherModifiers:e}:{condition:e[t],otherModifiers:e.filter((e,n)=>n!==t)}}function I(e,...t){return(n,r)=>{const{condition:o,otherModifiers:i}=F(t);if(o)return function(e,t,n){const r=t();if(!u)return r?T(e,n):document.createComment(`conditional-${e}-ssr`);if(r){const r=T(e,n);return N(r,{condition:t,tagName:e,modifiers:n}),r}const o=document.createComment(`conditional-${e}-hidden`);return N(o,{condition:t,tagName:e,modifiers:n}),o}(e,o,i);const c=document.createElement(e);return k(c,i,r),c}}function L(e){return(...t)=>I(e,...t)}const $=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","menu","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","script","search","section","select","slot","small","source","span","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"];function B(e=globalThis){const t="__vc_tags_registered";e[t]||($.forEach(t=>function(e,t){t in e||(e[t]=L(t))}(e,t)),e[t]=!0)}const _=new Set;function D(e,t,n){return function(e,t,n){if(o(e)){const o=e(t,n);return o&&r(o)?o:null}return e&&r(e)?e:null}(e.renderItem(t,n),e.host,n)}function G(e){a(e.element)}function O(e){const{host:t,startMarker:n,endMarker:r}=e,o=n.parentNode??t,i=e.itemsProvider();if(function(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if((n in e?e[n]:void 0)!==(n in t?t[n]:void 0))return!1;return!0}(e.lastSyncedItems,i))return;const c=new Map,u=new Map;e.records.forEach(e=>{const t=u.get(e.item);t?t.push(e):u.set(e.item,[e])}),i.forEach((t,n)=>{if(n<e.lastSyncedItems.length&&e.lastSyncedItems[n]===t){const r=e.records[n];if(r&&r.item===t){c.set(n,r);const e=u.get(t);if(e){const n=e.indexOf(r);n>=0&&(e.splice(n,1),0===e.length&&u.delete(t))}}}});const a=[],s=new Set(e.records);let l=r;for(let t=i.length-1;t>=0;t--){const n=i[t];let r=c.get(t);if(!r){const e=u.get(n);e&&e.length>0&&(r=e.shift(),0===e.length&&u.delete(n))}if(r)s.delete(r);else{const o=D(e,n,t);if(!o)continue;r={item:n,element:o}}a.unshift(r);const d=r.element;d.nextSibling!==l&&o.insertBefore(d,l),l=d}s.forEach(G),e.records=a,e.lastSyncedItems=[...i]}function j(e,t){return n=>{const r=function(e,t,n){const{start:r,end:o}=d("list"),i={itemsProvider:e,renderItem:t,startMarker:r,endMarker:o,records:[],host:n,lastSyncedItems:[]},c=n;return c.appendChild(r),c.appendChild(o),_.add(i),O(i),i}(e,t,n);return r.startMarker}}function A(e,t){try{return e()}catch(e){if(!t)throw e;return t(e),!1}}function P(e,t){return"function"==typeof e?A(e,t):Boolean(e)}const R=new Set;function V(e){const{groups:t,elseContent:n,host:r,index:i,endMarker:c}=e;let u=null;for(let e=0;e<t.length;e++)if(P(t[e].condition)){u=e;break}if(null===u&&n.length&&(u=-1),u===e.activeIndex)return;if(function(e,t){let n=e.nextSibling;for(;n&&n!==t;){const e=n.nextSibling;a(n),n=e}}(e.startMarker,e.endMarker),e.activeIndex=u,null===u)return;const s=[],l=e=>{for(const t of e){if(o(t)){if(0===t.length){C.delete(t);const e=M(r,t,i);e&&s.push(e);continue}const e=r,n=e.appendChild;e.appendChild=function(t){return e.insertBefore(t,c)};try{const e=M(r,t,i);e&&!e.parentNode&&s.push(e)}finally{e.appendChild=n}continue}const e=M(r,t,i);e&&s.push(e)}};u>=0?l(t[u].content):-1===u&&l(n),function(e,t){const n=t.parentNode;n&&e.forEach(e=>function(e,t,n){if(!e||!t)return!1;try{return e.insertBefore(t,n),!0}catch{return!1}}(n,e,t))}(s,c)}class q{groups=[];elseContent=[];constructor(e,...t){this.groups.push({condition:e,content:t})}when(e,...t){return this.groups.push({condition:e,content:t}),this}else(...e){return this.elseContent=e,this}render(e,t){if(!u)return document.createComment("when-ssr");const{start:n,end:r}=d("when"),o={startMarker:n,endMarker:r,host:e,index:t,groups:[...this.groups],elseContent:[...this.elseContent],activeIndex:null,update:()=>V(o)};R.add(o);const i=e;return i.appendChild(n),i.appendChild(r),V(o),n}}function z(e){return Object.assign((t,n)=>e.render(t,n),{when:(t,...n)=>(e.when(t,...n),z(e)),else:(...t)=>(e.else(...t),z(e))})}function H(e,...t){return z(new q(e,...t))}function W(e,t){if(e.parentNode)try{e.parentNode.replaceChild(t,e)}catch(e){console.error("Error replacing conditional node:",e)}}function J(e){const t=function(e){return e._conditionalInfo??null}(e);if(!t)return;const n=A(t.condition,e=>{console.error("Error evaluating conditional condition:",e)}),r=e.nodeType===Node.ELEMENT_NODE;if(n&&!r){const n=function(e){const t=document.createElement(e.tagName);try{k(t,e.modifiers,0)}catch(t){console.error(`Error applying modifiers in conditional element "${e.tagName}":`,t)}return t}(t);N(n,t),W(e,n)}else if(!n&&r){const n=function(e){return document.createComment(`conditional-${e.tagName}-hidden`)}(t);N(n,t),W(e,n)}}const K=[function(){_.forEach(e=>{e.startMarker.isConnected&&e.endMarker.isConnected?O(e):_.delete(e)})},function(){R.forEach(e=>{try{e.update()}catch(t){R.delete(e)}})},function(){if(u)try{S.forEach(e=>{e.isConnected?J(e):function(e){S.delete(e)}(e)})}catch(e){console.error("Error during conditional elements update:",e)}},function(){h.forEach((e,t)=>{if(!f(t))return e.updateListener&&t.removeEventListener("update",e.updateListener),void h.delete(t);m(0,e)})},function(){p.forEach((e,t)=>{if(f(t))try{const n=c(e.resolver),r=void 0===n?"":String(n);r!==e.lastValue&&(t.textContent=r,e.lastValue=r)}catch(e){i("Failed to update reactive text node",e)}else p.delete(t)})},function(){if("undefined"==typeof document)return;const e=[];document.body&&e.push(document.body),e.push(document),e.forEach(e=>{try{e.dispatchEvent(new Event("update",{bubbles:!0}))}catch(e){console.error("Error dispatching global update event:",e)}})}];function Q(){for(const e of K)e()}function U(e,t,n){return r=>{const o=r;if(!o||"function"!=typeof o.addEventListener)return;o.addEventListener(e,n=>{try{t.call(o,n)}catch(t){"undefined"!=typeof console&&console.error&&console.error(`[nuclo:on] Error in '${e}' listener:`,t)}},n)}}function X(e,t,n=0){const r=e(t||document.body,n);return(t||document.body).appendChild(r),r}function Y(){if(B(),"undefined"!=typeof globalThis){const e=globalThis;e.list=j,e.update=Q,e.when=H,e.on=U,e.render=X}}"undefined"!=typeof globalThis&&Y(),exports.HTML_TAGS=$,exports.SELF_CLOSING_TAGS=["area","base","br","col","embed","hr","img","input","link","meta","source","track","wbr"],exports.SVG_TAGS=["a","animate","animateMotion","animateTransform","circle","clipPath","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","foreignObject","g","image","line","linearGradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialGradient","rect","script","set","stop","style","svg","switch","symbol","text","textPath","title","tspan","use","view"],exports.appendChildren=function(e,...t){return e?(t.forEach(t=>{if(null!=t){let n;if("string"==typeof t){const e=function(e){if(!u)return null;try{return document.createTextNode(String(e))}catch{return null}}(t);if(!e)return;n=e}else n=t;!function(e,t){if(!e||!t)return!1;try{return e.appendChild(t),!0}catch{return!1}}(e,n)}}),e):e},exports.applyAttributes=x,exports.applyNodeModifier=M,exports.createElementFactory=I,exports.createTagBuilder=L,exports.initializeRuntime=Y,exports.isBoolean=function(e){return"boolean"==typeof e},exports.isBrowser=u,exports.isFunction=o,exports.isNode=t,exports.isObject=n,exports.isPrimitive=e,exports.isTagLike=r,exports.list=j,exports.on=U,exports.registerGlobalTagBuilders=B,exports.render=X,exports.update=Q,exports.when=H;
|
|
1
|
+
"use strict";function e(e){return null===e||"object"!=typeof e&&"function"!=typeof e}function t(e){return e instanceof Node}function n(e){return"object"==typeof e&&null!==e}function r(e){return n(e)&&"tagName"in e}function o(e){return"function"==typeof e}function i(e,t){"undefined"!=typeof console&&console.error(`nuclo: ${e}`,t)}function c(e,t){try{return e()}catch(e){return i("Operation failed",e),t}}const u="undefined"!=typeof window&&"undefined"!=typeof document;function s(e){if(!e?.parentNode)return!1;try{return e.parentNode.removeChild(e),!0}catch{return!1}}function a(e){if(!u)return null;try{return document.createComment(e)}catch{return null}}function l(e){if(!u)throw new Error("Cannot create comment in non-browser environment");const t=a(`${e}-${Math.random().toString(36).slice(2)}`);if(!t)throw new Error("Failed to create comment");return t}function d(e){const t=a(`${e}-end`);if(!t)throw new Error("Failed to create end comment");return{start:l(`${e}-start`),end:t}}function f(e){return!!e&&("boolean"==typeof e.isConnected?e.isConnected:document.contains(e))}const p=new Map,h=new Map;function m(e,t){t.attributeResolvers.forEach(({resolver:e,applyValue:t},n)=>{try{t(c(e))}catch(e){i(`Failed to update reactive attribute: ${n}`,e)}})}function g(e,t,n,r){if(!(e instanceof Element&&t&&"function"==typeof n))return void i("Invalid parameters for registerAttributeResolver");const o=function(e){let t=h.get(e);return t||(t={attributeResolvers:new Map},h.set(e,t)),t}(e);o.attributeResolvers.set(t,{resolver:n,applyValue:r});try{r(c(n))}catch(e){i("Failed to apply initial attribute value",e)}if(!o.updateListener){const t=()=>m(0,o);e.addEventListener("update",t),o.updateListener=t}}function y(e,t){if(e?.style&&t)for(const[n,r]of Object.entries(t))if(null==r||""===r)e.style.removeProperty(n),e.style[n]="";else try{e.style[n]=String(r)}catch{}}function b(e,t,n){if(null==n)return;if("style"===t)return i=n,void((r=e)&&(o(i)?g(r,"style",()=>{try{return i()}catch{return null}},e=>{y(r,e)}):y(r,i)));var r,i;const c=n=>{null!=n&&(t in e?e[t]=n:e instanceof Element&&e.setAttribute(String(t),String(n)))};o(n)&&0===n.length?g(e,String(t),n,c):c(n)}function v(e,t){if(t)for(const n of Object.keys(t)){b(e,n,t[n])}}const x=new WeakMap;function C(e){const{value:t,error:n}=function(e){const t=x.get(e);if(t)return t;try{const t={value:e(),error:!1};return x.set(e,t),t}catch{const t={value:void 0,error:!0};return x.set(e,t),t}}(e);return!n&&"boolean"==typeof t}function E(e,r,i){if(!o(e)||0!==e.length||!C(e))return!1;const c=r.filter((e,t)=>t!==i);if(0===c.length)return!1;return c.some(e=>n(e)||t(e)||o(e)&&e.length>0)}function w(r,c,u){if(null==c)return null;if(o(c)){if(0===c.length)try{let t=x.get(c);if(!t){t={value:c(),error:!1},x.set(c,t)}if(t.error)return M(u,()=>"");const n=t.value;return e(n)&&null!=n?M(u,c,n):null}catch(e){return x.set(c,{value:void 0,error:!0}),i("Error evaluating reactive text function:",e),M(u,()=>"")}const o=c(r,u);return null==o?null:e(o)?S(u,o):t(o)?o:(n(o)&&v(r,o),null)}const s=c;return null==s?null:e(s)?S(u,s):t(s)?s:(n(s)&&v(r,s),null)}function M(e,t,n){const r=document.createDocumentFragment(),o=document.createComment(` text-${e} `),u=function(e,t){if("function"!=typeof e)return i("Invalid resolver provided to createReactiveTextNode"),document.createTextNode("");const n=arguments.length>1?t:c(e,""),r=void 0===n?"":String(n),o=document.createTextNode(r);return p.set(o,{resolver:e,lastValue:r}),o}(t,n);return r.appendChild(o),r.appendChild(u),r}function S(e,t){const n=document.createDocumentFragment(),r=document.createComment(` text-${e} `),o=document.createTextNode(String(t));return n.appendChild(r),n.appendChild(o),n}const N=new Set;function k(e,t){e._conditionalInfo=t,N.add(e)}function T(e,t,n=0){if(!t||0===t.length)return{element:e,nextIndex:n,appended:0};let r=n,o=0;const i=e;for(let n=0;n<t.length;n+=1){const c=t[n];if(null==c)continue;const u=w(e,c,r);u&&(u.parentNode!==i&&i.appendChild(u),r+=1,o+=1)}return{element:e,nextIndex:r,appended:o}}function I(e,t){const n=document.createElement(e);return T(n,t,0),n}function L(e){const t=function(e){for(let t=0;t<e.length;t+=1)if(E(e[t],e,t))return t;return-1}(e);return-1===t?{condition:null,otherModifiers:e}:{condition:e[t],otherModifiers:e.filter((e,n)=>n!==t)}}function F(e,...t){return(n,r)=>{const{condition:o,otherModifiers:i}=L(t);if(o)return function(e,t,n){const r=t();if(!u)return r?I(e,n):document.createComment(`conditional-${e}-ssr`);const o={condition:t,tagName:e,modifiers:n};if(r){const t=I(e,n);return k(t,o),t}const i=document.createComment(`conditional-${e}-hidden`);return k(i,o),i}(e,o,i);const c=document.createElement(e);return T(c,i,r),c}}function $(e){return(...t)=>F(e,...t)}const B=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","menu","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","script","search","section","select","slot","small","source","span","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"];function _(e=globalThis){const t="__nuclo_tags_registered";e[t]||(B.forEach(t=>function(e,t){t in e||(e[t]=$(t))}(e,t)),e[t]=!0)}const G=new Set;function O(e,t,n){return function(e,t,n){if(o(e)){const o=e(t,n);return o&&r(o)?o:null}return e&&r(e)?e:null}(e.renderItem(t,n),e.host,n)}function j(e){s(e.element)}function A(e){const{host:t,startMarker:n,endMarker:r}=e,o=n.parentNode??t,i=e.itemsProvider();if(function(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if((n in e?e[n]:void 0)!==(n in t?t[n]:void 0))return!1;return!0}(e.lastSyncedItems,i))return;const c=new Map,u=new Map;e.records.forEach(e=>{const t=u.get(e.item);t?t.push(e):u.set(e.item,[e])}),i.forEach((t,n)=>{if(n<e.lastSyncedItems.length&&e.lastSyncedItems[n]===t){const r=e.records[n];if(r&&r.item===t){c.set(n,r);const e=u.get(t);if(e){const n=e.indexOf(r);n>=0&&(e.splice(n,1),0===e.length&&u.delete(t))}}}});const s=[],a=new Set(e.records);let l=r;for(let t=i.length-1;t>=0;t--){const n=i[t];let r=c.get(t);if(!r){const e=u.get(n);e&&e.length>0&&(r=e.shift(),0===e.length&&u.delete(n))}if(r)a.delete(r);else{const o=O(e,n,t);if(!o)continue;r={item:n,element:o}}s.unshift(r);const d=r.element;d.nextSibling!==l&&o.insertBefore(d,l),l=d}a.forEach(j),e.records=s,e.lastSyncedItems=[...i]}function D(e,t){return(n,r)=>{const o=function(e,t,n){const{start:r,end:o}=d("list"),i={itemsProvider:e,renderItem:t,startMarker:r,endMarker:o,records:[],host:n,lastSyncedItems:[]},c=n;return c.appendChild(r),c.appendChild(o),G.add(i),A(i),i}(e,t,n);return o.startMarker}}function P(e,t){try{return e()}catch(e){if(t)return t(e),!1;throw e}}function R(e,t){return"function"==typeof e?P(e,t):Boolean(e)}const V=new Set;function q(e){const{groups:t,elseContent:n,host:r,index:i,endMarker:c}=e;let u=null;for(let e=0;e<t.length;e++)if(R(t[e].condition)){u=e;break}if(null===u&&n.length&&(u=-1),u===e.activeIndex)return;if(function(e,t){let n=e.nextSibling;for(;n&&n!==t;){const e=n.nextSibling;s(n),n=e}}(e.startMarker,e.endMarker),e.activeIndex=u,null===u)return;const a=[],l=e=>{for(const t of e){if(o(t)){if(0===t.length){x.delete(t);const e=w(r,t,i);e&&a.push(e);continue}const e=r,n=e.appendChild;e.appendChild=function(t){return e.insertBefore(t,c)};try{const e=w(r,t,i);e&&!e.parentNode&&a.push(e)}finally{e.appendChild=n}continue}const e=w(r,t,i);e&&a.push(e)}};u>=0?l(t[u].content):-1===u&&l(n),function(e,t){const n=t.parentNode;n&&e.forEach(e=>function(e,t,n){if(!e||!t)return!1;try{return e.insertBefore(t,n),!0}catch{return!1}}(n,e,t))}(a,c)}class z{groups=[];elseContent=[];constructor(e,...t){this.groups.push({condition:e,content:t})}when(e,...t){return this.groups.push({condition:e,content:t}),this}else(...e){return this.elseContent=e,this}render(e,t){if(!u)return document.createComment("when-ssr");const{start:n,end:r}=d("when"),o={startMarker:n,endMarker:r,host:e,index:t,groups:[...this.groups],elseContent:[...this.elseContent],activeIndex:null,update:()=>q(o)};V.add(o);const i=e;return i.appendChild(n),i.appendChild(r),q(o),n}}function H(e){return Object.assign((t,n)=>e.render(t,n),{when:(t,...n)=>(e.when(t,...n),H(e)),else:(...t)=>(e.else(...t),H(e))})}function W(e,...t){return H(new z(e,...t))}function J(e,t){if(e.parentNode)try{e.parentNode.replaceChild(t,e)}catch(e){console.error("Error replacing conditional node:",e)}}function K(e){const t=function(e){return e._conditionalInfo??null}(e);if(!t)return;const n=P(t.condition,e=>{console.error("Error evaluating conditional condition:",e)}),r=e.nodeType===Node.ELEMENT_NODE;if(n&&!r){const n=function(e){const t=document.createElement(e.tagName);try{T(t,e.modifiers,0)}catch(t){console.error(`Error applying modifiers in conditional element "${e.tagName}":`,t)}return t}(t);k(n,t),J(e,n)}else if(!n&&r){const n=function(e){return document.createComment(`conditional-${e.tagName}-hidden`)}(t);k(n,t),J(e,n)}}const Q=[function(){G.forEach(e=>{e.startMarker.isConnected&&e.endMarker.isConnected?A(e):G.delete(e)})},function(){V.forEach(e=>{try{e.update()}catch(t){V.delete(e)}})},function(){if(u)try{N.forEach(e=>{e.isConnected?K(e):function(e){N.delete(e)}(e)})}catch(e){console.error("Error during conditional elements update:",e)}},function(){h.forEach((e,t)=>{if(!f(t))return e.updateListener&&t.removeEventListener("update",e.updateListener),void h.delete(t);m(0,e)})},function(){p.forEach((e,t)=>{if(f(t))try{const n=c(e.resolver),r=void 0===n?"":String(n);r!==e.lastValue&&(t.textContent=r,e.lastValue=r)}catch(e){i("Failed to update reactive text node",e)}else p.delete(t)})},function(){if("undefined"==typeof document)return;const e=document.body?[document.body,document]:[document];for(const t of e)try{t.dispatchEvent(new Event("update",{bubbles:!0}))}catch(e){console.error("Error dispatching global update event:",e)}}];function U(){for(const e of Q)e()}function X(e,t,n){return r=>{const o=r;if(!o||"function"!=typeof o.addEventListener)return;o.addEventListener(e,n=>{try{t.call(o,n)}catch(t){"undefined"!=typeof console&&console.error&&console.error(`[nuclo:on] Error in '${e}' listener:`,t)}},n)}}function Y(e,t,n=0){const r=e(t||document.body,n);return(t||document.body).appendChild(r),r}function Z(){if(_(),"undefined"!=typeof globalThis){const e=globalThis;e.list=D,e.update=U,e.when=W,e.on=X,e.render=Y}}"undefined"!=typeof globalThis&&Z(),exports.HTML_TAGS=B,exports.SELF_CLOSING_TAGS=["area","base","br","col","embed","hr","img","input","link","meta","source","track","wbr"],exports.SVG_TAGS=["a","animate","animateMotion","animateTransform","circle","clipPath","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","foreignObject","g","image","line","linearGradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialGradient","rect","script","set","stop","style","svg","switch","symbol","text","textPath","title","tspan","use","view"],exports.appendChildren=function(e,...t){return e?(t.forEach(t=>{if(null!=t){let n;if("string"==typeof t){const e=function(e){if(!u)return null;try{return document.createTextNode(String(e))}catch{return null}}(t);if(!e)return;n=e}else n=t;!function(e,t){if(!e||!t)return!1;try{return e.appendChild(t),!0}catch{return!1}}(e,n)}}),e):e},exports.applyAttributes=v,exports.applyNodeModifier=w,exports.createElementFactory=F,exports.createTagBuilder=$,exports.initializeRuntime=Z,exports.isBoolean=function(e){return"boolean"==typeof e},exports.isBrowser=u,exports.isFunction=o,exports.isNode=t,exports.isObject=n,exports.isPrimitive=e,exports.isTagLike=r,exports.list=D,exports.on=X,exports.registerGlobalTagBuilders=_,exports.render=Y,exports.update=U,exports.when=W;
|
|
2
2
|
//# sourceMappingURL=nuclo.cjs.map
|