mirror of
				https://github.com/jaandrle/deka-dom-el
				synced 2025-11-04 07:09:15 +01:00 
			
		
		
		
	🐛 🔤 types 3ps
This commit is contained in:
		
							
								
								
									
										30
									
								
								dist/esm-with-signals.d.min.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								dist/esm-with-signals.d.min.ts
									
									
									
									
										vendored
									
									
								
							@@ -72,6 +72,26 @@ export function assignAttribute<El extends SupportedElement, ATT extends keyof E
 | 
				
			|||||||
): ElementAttributes<El>[ATT]
 | 
					): ElementAttributes<El>[ATT]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ExtendedHTMLElementTagNameMap= HTMLElementTagNameMap & CustomElementTagNameMap;
 | 
					type ExtendedHTMLElementTagNameMap= HTMLElementTagNameMap & CustomElementTagNameMap;
 | 
				
			||||||
 | 
					export function el<
 | 
				
			||||||
 | 
						A extends ddeComponentAttributes,
 | 
				
			||||||
 | 
						EL extends SupportedElement | ddeDocumentFragment
 | 
				
			||||||
 | 
					>(
 | 
				
			||||||
 | 
						component: (attr: A)=> EL,
 | 
				
			||||||
 | 
						attrs?: NoInfer<A>,
 | 
				
			||||||
 | 
						...addons: ddeElementAddon<EL>[]
 | 
				
			||||||
 | 
					): EL extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap]
 | 
				
			||||||
 | 
						? EL
 | 
				
			||||||
 | 
						: ( EL extends ddeDocumentFragment ? EL : ddeHTMLElement )
 | 
				
			||||||
 | 
					export function el<
 | 
				
			||||||
 | 
						A extends { textContent: ddeStringable },
 | 
				
			||||||
 | 
						EL extends SupportedElement | ddeDocumentFragment
 | 
				
			||||||
 | 
					>(
 | 
				
			||||||
 | 
						component: (attr: A)=> EL,
 | 
				
			||||||
 | 
						attrs?: NoInfer<A>["textContent"],
 | 
				
			||||||
 | 
						...addons: ddeElementAddon<EL>[]
 | 
				
			||||||
 | 
					): EL extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap]
 | 
				
			||||||
 | 
						? EL
 | 
				
			||||||
 | 
						: ( EL extends ddeDocumentFragment ? EL : ddeHTMLElement )
 | 
				
			||||||
export function el<
 | 
					export function el<
 | 
				
			||||||
	TAG extends keyof ExtendedHTMLElementTagNameMap,
 | 
						TAG extends keyof ExtendedHTMLElementTagNameMap,
 | 
				
			||||||
>(
 | 
					>(
 | 
				
			||||||
@@ -89,16 +109,6 @@ export function el(
 | 
				
			|||||||
	attrs?: ElementAttributes<HTMLElement> | ddeStringable,
 | 
						attrs?: ElementAttributes<HTMLElement> | ddeStringable,
 | 
				
			||||||
	...addons: ddeElementAddon<HTMLElement>[]
 | 
						...addons: ddeElementAddon<HTMLElement>[]
 | 
				
			||||||
): ddeHTMLElement
 | 
					): ddeHTMLElement
 | 
				
			||||||
 | 
					 | 
				
			||||||
export function el<
 | 
					 | 
				
			||||||
	C extends (attr: ddeComponentAttributes)=> SupportedElement | ddeDocumentFragment
 | 
					 | 
				
			||||||
>(
 | 
					 | 
				
			||||||
	component: C,
 | 
					 | 
				
			||||||
	attrs?: Parameters<C>[0] | ddeStringable,
 | 
					 | 
				
			||||||
	...addons: ddeElementAddon<ReturnType<C>>[]
 | 
					 | 
				
			||||||
): ReturnType<C> extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap]
 | 
					 | 
				
			||||||
	? ReturnType<C>
 | 
					 | 
				
			||||||
	: ( ReturnType<C> extends ddeDocumentFragment ? ReturnType<C> : ddeHTMLElement )
 | 
					 | 
				
			||||||
export { el as createElement }
 | 
					export { el as createElement }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function elNS(
 | 
					export function elNS(
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										30
									
								
								dist/esm-with-signals.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								dist/esm-with-signals.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -72,6 +72,26 @@ export function assignAttribute<El extends SupportedElement, ATT extends keyof E
 | 
				
			|||||||
): ElementAttributes<El>[ATT]
 | 
					): ElementAttributes<El>[ATT]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ExtendedHTMLElementTagNameMap= HTMLElementTagNameMap & CustomElementTagNameMap;
 | 
					type ExtendedHTMLElementTagNameMap= HTMLElementTagNameMap & CustomElementTagNameMap;
 | 
				
			||||||
 | 
					export function el<
 | 
				
			||||||
 | 
						A extends ddeComponentAttributes,
 | 
				
			||||||
 | 
						EL extends SupportedElement | ddeDocumentFragment
 | 
				
			||||||
 | 
					>(
 | 
				
			||||||
 | 
						component: (attr: A)=> EL,
 | 
				
			||||||
 | 
						attrs?: NoInfer<A>,
 | 
				
			||||||
 | 
						...addons: ddeElementAddon<EL>[]
 | 
				
			||||||
 | 
					): EL extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap]
 | 
				
			||||||
 | 
						? EL
 | 
				
			||||||
 | 
						: ( EL extends ddeDocumentFragment ? EL : ddeHTMLElement )
 | 
				
			||||||
 | 
					export function el<
 | 
				
			||||||
 | 
						A extends { textContent: ddeStringable },
 | 
				
			||||||
 | 
						EL extends SupportedElement | ddeDocumentFragment
 | 
				
			||||||
 | 
					>(
 | 
				
			||||||
 | 
						component: (attr: A)=> EL,
 | 
				
			||||||
 | 
						attrs?: NoInfer<A>["textContent"],
 | 
				
			||||||
 | 
						...addons: ddeElementAddon<EL>[]
 | 
				
			||||||
 | 
					): EL extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap]
 | 
				
			||||||
 | 
						? EL
 | 
				
			||||||
 | 
						: ( EL extends ddeDocumentFragment ? EL : ddeHTMLElement )
 | 
				
			||||||
export function el<
 | 
					export function el<
 | 
				
			||||||
	TAG extends keyof ExtendedHTMLElementTagNameMap,
 | 
						TAG extends keyof ExtendedHTMLElementTagNameMap,
 | 
				
			||||||
>(
 | 
					>(
 | 
				
			||||||
@@ -89,16 +109,6 @@ export function el(
 | 
				
			|||||||
	attrs?: ElementAttributes<HTMLElement> | ddeStringable,
 | 
						attrs?: ElementAttributes<HTMLElement> | ddeStringable,
 | 
				
			||||||
	...addons: ddeElementAddon<HTMLElement>[]
 | 
						...addons: ddeElementAddon<HTMLElement>[]
 | 
				
			||||||
): ddeHTMLElement
 | 
					): ddeHTMLElement
 | 
				
			||||||
 | 
					 | 
				
			||||||
export function el<
 | 
					 | 
				
			||||||
	C extends (attr: ddeComponentAttributes)=> SupportedElement | ddeDocumentFragment
 | 
					 | 
				
			||||||
>(
 | 
					 | 
				
			||||||
	component: C,
 | 
					 | 
				
			||||||
	attrs?: Parameters<C>[0] | ddeStringable,
 | 
					 | 
				
			||||||
	...addons: ddeElementAddon<ReturnType<C>>[]
 | 
					 | 
				
			||||||
): ReturnType<C> extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap]
 | 
					 | 
				
			||||||
	? ReturnType<C>
 | 
					 | 
				
			||||||
	: ( ReturnType<C> extends ddeDocumentFragment ? ReturnType<C> : ddeHTMLElement )
 | 
					 | 
				
			||||||
export { el as createElement }
 | 
					export { el as createElement }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function elNS(
 | 
					export function elNS(
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										30
									
								
								dist/esm.d.min.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								dist/esm.d.min.ts
									
									
									
									
										vendored
									
									
								
							@@ -72,6 +72,26 @@ export function assignAttribute<El extends SupportedElement, ATT extends keyof E
 | 
				
			|||||||
): ElementAttributes<El>[ATT]
 | 
					): ElementAttributes<El>[ATT]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ExtendedHTMLElementTagNameMap= HTMLElementTagNameMap & CustomElementTagNameMap;
 | 
					type ExtendedHTMLElementTagNameMap= HTMLElementTagNameMap & CustomElementTagNameMap;
 | 
				
			||||||
 | 
					export function el<
 | 
				
			||||||
 | 
						A extends ddeComponentAttributes,
 | 
				
			||||||
 | 
						EL extends SupportedElement | ddeDocumentFragment
 | 
				
			||||||
 | 
					>(
 | 
				
			||||||
 | 
						component: (attr: A)=> EL,
 | 
				
			||||||
 | 
						attrs?: NoInfer<A>,
 | 
				
			||||||
 | 
						...addons: ddeElementAddon<EL>[]
 | 
				
			||||||
 | 
					): EL extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap]
 | 
				
			||||||
 | 
						? EL
 | 
				
			||||||
 | 
						: ( EL extends ddeDocumentFragment ? EL : ddeHTMLElement )
 | 
				
			||||||
 | 
					export function el<
 | 
				
			||||||
 | 
						A extends { textContent: ddeStringable },
 | 
				
			||||||
 | 
						EL extends SupportedElement | ddeDocumentFragment
 | 
				
			||||||
 | 
					>(
 | 
				
			||||||
 | 
						component: (attr: A)=> EL,
 | 
				
			||||||
 | 
						attrs?: NoInfer<A>["textContent"],
 | 
				
			||||||
 | 
						...addons: ddeElementAddon<EL>[]
 | 
				
			||||||
 | 
					): EL extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap]
 | 
				
			||||||
 | 
						? EL
 | 
				
			||||||
 | 
						: ( EL extends ddeDocumentFragment ? EL : ddeHTMLElement )
 | 
				
			||||||
export function el<
 | 
					export function el<
 | 
				
			||||||
	TAG extends keyof ExtendedHTMLElementTagNameMap,
 | 
						TAG extends keyof ExtendedHTMLElementTagNameMap,
 | 
				
			||||||
>(
 | 
					>(
 | 
				
			||||||
@@ -89,16 +109,6 @@ export function el(
 | 
				
			|||||||
	attrs?: ElementAttributes<HTMLElement> | ddeStringable,
 | 
						attrs?: ElementAttributes<HTMLElement> | ddeStringable,
 | 
				
			||||||
	...addons: ddeElementAddon<HTMLElement>[]
 | 
						...addons: ddeElementAddon<HTMLElement>[]
 | 
				
			||||||
): ddeHTMLElement
 | 
					): ddeHTMLElement
 | 
				
			||||||
 | 
					 | 
				
			||||||
export function el<
 | 
					 | 
				
			||||||
	C extends (attr: ddeComponentAttributes)=> SupportedElement | ddeDocumentFragment
 | 
					 | 
				
			||||||
>(
 | 
					 | 
				
			||||||
	component: C,
 | 
					 | 
				
			||||||
	attrs?: Parameters<C>[0] | ddeStringable,
 | 
					 | 
				
			||||||
	...addons: ddeElementAddon<ReturnType<C>>[]
 | 
					 | 
				
			||||||
): ReturnType<C> extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap]
 | 
					 | 
				
			||||||
	? ReturnType<C>
 | 
					 | 
				
			||||||
	: ( ReturnType<C> extends ddeDocumentFragment ? ReturnType<C> : ddeHTMLElement )
 | 
					 | 
				
			||||||
export { el as createElement }
 | 
					export { el as createElement }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function elNS(
 | 
					export function elNS(
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										30
									
								
								dist/esm.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								dist/esm.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -72,6 +72,26 @@ export function assignAttribute<El extends SupportedElement, ATT extends keyof E
 | 
				
			|||||||
): ElementAttributes<El>[ATT]
 | 
					): ElementAttributes<El>[ATT]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ExtendedHTMLElementTagNameMap= HTMLElementTagNameMap & CustomElementTagNameMap;
 | 
					type ExtendedHTMLElementTagNameMap= HTMLElementTagNameMap & CustomElementTagNameMap;
 | 
				
			||||||
 | 
					export function el<
 | 
				
			||||||
 | 
						A extends ddeComponentAttributes,
 | 
				
			||||||
 | 
						EL extends SupportedElement | ddeDocumentFragment
 | 
				
			||||||
 | 
					>(
 | 
				
			||||||
 | 
						component: (attr: A)=> EL,
 | 
				
			||||||
 | 
						attrs?: NoInfer<A>,
 | 
				
			||||||
 | 
						...addons: ddeElementAddon<EL>[]
 | 
				
			||||||
 | 
					): EL extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap]
 | 
				
			||||||
 | 
						? EL
 | 
				
			||||||
 | 
						: ( EL extends ddeDocumentFragment ? EL : ddeHTMLElement )
 | 
				
			||||||
 | 
					export function el<
 | 
				
			||||||
 | 
						A extends { textContent: ddeStringable },
 | 
				
			||||||
 | 
						EL extends SupportedElement | ddeDocumentFragment
 | 
				
			||||||
 | 
					>(
 | 
				
			||||||
 | 
						component: (attr: A)=> EL,
 | 
				
			||||||
 | 
						attrs?: NoInfer<A>["textContent"],
 | 
				
			||||||
 | 
						...addons: ddeElementAddon<EL>[]
 | 
				
			||||||
 | 
					): EL extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap]
 | 
				
			||||||
 | 
						? EL
 | 
				
			||||||
 | 
						: ( EL extends ddeDocumentFragment ? EL : ddeHTMLElement )
 | 
				
			||||||
export function el<
 | 
					export function el<
 | 
				
			||||||
	TAG extends keyof ExtendedHTMLElementTagNameMap,
 | 
						TAG extends keyof ExtendedHTMLElementTagNameMap,
 | 
				
			||||||
>(
 | 
					>(
 | 
				
			||||||
@@ -89,16 +109,6 @@ export function el(
 | 
				
			|||||||
	attrs?: ElementAttributes<HTMLElement> | ddeStringable,
 | 
						attrs?: ElementAttributes<HTMLElement> | ddeStringable,
 | 
				
			||||||
	...addons: ddeElementAddon<HTMLElement>[]
 | 
						...addons: ddeElementAddon<HTMLElement>[]
 | 
				
			||||||
): ddeHTMLElement
 | 
					): ddeHTMLElement
 | 
				
			||||||
 | 
					 | 
				
			||||||
export function el<
 | 
					 | 
				
			||||||
	C extends (attr: ddeComponentAttributes)=> SupportedElement | ddeDocumentFragment
 | 
					 | 
				
			||||||
>(
 | 
					 | 
				
			||||||
	component: C,
 | 
					 | 
				
			||||||
	attrs?: Parameters<C>[0] | ddeStringable,
 | 
					 | 
				
			||||||
	...addons: ddeElementAddon<ReturnType<C>>[]
 | 
					 | 
				
			||||||
): ReturnType<C> extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap]
 | 
					 | 
				
			||||||
	? ReturnType<C>
 | 
					 | 
				
			||||||
	: ( ReturnType<C> extends ddeDocumentFragment ? ReturnType<C> : ddeHTMLElement )
 | 
					 | 
				
			||||||
export { el as createElement }
 | 
					export { el as createElement }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function elNS(
 | 
					export function elNS(
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,9 @@
 | 
				
			|||||||
import { S } from "deka-dom-el/signals";
 | 
					import { S } from "deka-dom-el/signals";
 | 
				
			||||||
// A — `signal` represents a reactive value
 | 
					// PART 1 — `signal` represents a reactive value
 | 
				
			||||||
const signal= S(0);
 | 
					const signal= S(0);
 | 
				
			||||||
// B — just reacts on signal changes
 | 
					// PART 2 — just reacts on signal changes
 | 
				
			||||||
S.on(signal, console.log);
 | 
					S.on(signal, console.log);
 | 
				
			||||||
// C — just updates the value
 | 
					// PART 3 — just updates the value
 | 
				
			||||||
const update= ()=> signal.set(signal.get()+1);
 | 
					const update= ()=> signal.set(signal.get()+1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
update();
 | 
					update();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,7 +44,7 @@ export function page({ pkg, info }){
 | 
				
			|||||||
		),
 | 
							),
 | 
				
			||||||
		el(example, { src: fileURL("./components/examples/introducing/helloWorld.js"), page_id }),
 | 
							el(example, { src: fileURL("./components/examples/introducing/helloWorld.js"), page_id }),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		el(h3, t`The 3PS Pattern: A Better Way to Build UIs`),
 | 
							el(h3, { textContent: t`The 3PS Pattern: A Better Way to Build UIs`, id: "h-3ps" }),
 | 
				
			||||||
		el("p").append(...T`
 | 
							el("p").append(...T`
 | 
				
			||||||
			At the heart of DDE is the 3PS (3-Part Separation) pattern. This simple yet powerful approach helps you
 | 
								At the heart of DDE is the 3PS (3-Part Separation) pattern. This simple yet powerful approach helps you
 | 
				
			||||||
			organize your UI code into three distinct areas, making your applications more maintainable and easier to reason about.
 | 
								organize your UI code into three distinct areas, making your applications more maintainable and easier to reason about.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,21 +63,21 @@ export function page({ pkg, info }){
 | 
				
			|||||||
		el(h3, t`The 3-Part Structure of Signals`),
 | 
							el(h3, t`The 3-Part Structure of Signals`),
 | 
				
			||||||
		el("p").append(...T`
 | 
							el("p").append(...T`
 | 
				
			||||||
			Signals organize your code into three distinct parts, following the
 | 
								Signals organize your code into three distinct parts, following the
 | 
				
			||||||
			${el("a", { textContent: t`3PS principle`, href: "./#h-event-driven-programming--parts-separation--ps" })}:
 | 
								${el("a", { textContent: t`3PS principle`, href: "./#h-3ps" })}:
 | 
				
			||||||
		`),
 | 
							`),
 | 
				
			||||||
		el("div", { class: "signal-diagram" }).append(
 | 
							el("div", { class: "signal-diagram" }).append(
 | 
				
			||||||
			el("div", { class: "signal-part" }).append(
 | 
								el("div", { class: "signal-part" }).append(
 | 
				
			||||||
				el("h4", t`A: Create Signal`),
 | 
									el("h4", t`PART 1: Create Signal`),
 | 
				
			||||||
				el(code, { content: "const count = S(0);", page_id }),
 | 
									el(code, { content: "const count = S(0);", page_id }),
 | 
				
			||||||
				el("p", t`Define a reactive value that can be observed and changed`)
 | 
									el("p", t`Define a reactive value that can be observed and changed`)
 | 
				
			||||||
			),
 | 
								),
 | 
				
			||||||
			el("div", { class: "signal-part" }).append(
 | 
								el("div", { class: "signal-part" }).append(
 | 
				
			||||||
				el("h4", t`B: React to Changes`),
 | 
									el("h4", t`PART 2: React to Changes`),
 | 
				
			||||||
				el(code, { content: "S.on(count, value => updateUI(value));", page_id }),
 | 
									el(code, { content: "S.on(count, value => updateUI(value));", page_id }),
 | 
				
			||||||
				el("p", t`Subscribe to signal changes with callbacks or effects`)
 | 
									el("p", t`Subscribe to signal changes with callbacks or effects`)
 | 
				
			||||||
			),
 | 
								),
 | 
				
			||||||
			el("div", { class: "signal-part" }).append(
 | 
								el("div", { class: "signal-part" }).append(
 | 
				
			||||||
				el("h4", t`C: Update Signal`),
 | 
									el("h4", t`PART 3: Update Signal`),
 | 
				
			||||||
				el(code, { content: "count.set(count.get() + 1);", page_id }),
 | 
									el(code, { content: "count.set(count.get() + 1);", page_id }),
 | 
				
			||||||
				el("p", t`Modify the signal value, which automatically triggers updates`)
 | 
									el("p", t`Modify the signal value, which automatically triggers updates`)
 | 
				
			||||||
			)
 | 
								)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										12
									
								
								index.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								index.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -77,7 +77,17 @@ export function el<
 | 
				
			|||||||
	EL extends SupportedElement | ddeDocumentFragment
 | 
						EL extends SupportedElement | ddeDocumentFragment
 | 
				
			||||||
>(
 | 
					>(
 | 
				
			||||||
	component: (attr: A)=> EL,
 | 
						component: (attr: A)=> EL,
 | 
				
			||||||
	attrs?: A extends { textContent: any } ? ( NoInfer<A> | ddeStringable ) : NoInfer<A>,
 | 
						attrs?: NoInfer<A>,
 | 
				
			||||||
 | 
						...addons: ddeElementAddon<EL>[]
 | 
				
			||||||
 | 
					): EL extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap]
 | 
				
			||||||
 | 
						? EL
 | 
				
			||||||
 | 
						: ( EL extends ddeDocumentFragment ? EL : ddeHTMLElement )
 | 
				
			||||||
 | 
					export function el<
 | 
				
			||||||
 | 
						A extends { textContent: ddeStringable },
 | 
				
			||||||
 | 
						EL extends SupportedElement | ddeDocumentFragment
 | 
				
			||||||
 | 
					>(
 | 
				
			||||||
 | 
						component: (attr: A)=> EL,
 | 
				
			||||||
 | 
						attrs?: NoInfer<A>["textContent"],
 | 
				
			||||||
	...addons: ddeElementAddon<EL>[]
 | 
						...addons: ddeElementAddon<EL>[]
 | 
				
			||||||
): EL extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap]
 | 
					): EL extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap]
 | 
				
			||||||
	? EL
 | 
						? EL
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user