11export const StateSymbol : unique symbol ;
2-
32export type State = { [ k : string ] : unknown } ;
4- export type CustomElement = HTMLElement & {
3+ export type CustomElement < S extends State = { } > = HTMLElement & {
54 adoptedCallback ?( ) : void ;
65 attributeChangedCallback ?(
76 name : string ,
@@ -11,16 +10,23 @@ export type CustomElement = HTMLElement & {
1110 connectedCallback ?( ) : void ;
1211 disconnectedCallback ?( ) : void ;
1312 elements ?: { [ k : string ] : HTMLElement } ;
14- state : Partial < State > ;
13+ state : Partial < S > ;
1514} ;
1615export type Constructor < E extends CustomElement = CustomElement > = {
1716 new ( ) : E ;
1817} & { observedAttributes : Array < string > } ;
18+ export type FactorizeHOF <
19+ S extends State = State ,
20+ E extends CustomElement = CustomElement ,
21+ > = (
22+ f : ( Component : Constructor < E > , render : ( e : E , s : S ) => void ) => void ,
23+ ) => void ;
24+ export type ConstructHOF < E extends CustomElement = CustomElement > = (
25+ f : ( e : E ) => void ,
26+ ) => void ;
1927export type HOF < S extends State , E extends CustomElement = CustomElement > = (
20- factorize : (
21- f : ( Component : Constructor < E > , render : ( e : E , s : S ) => void ) => void ,
22- ) => void ,
23- construct : ( f : ( e : E ) => void ) => void ,
28+ factorize : FactorizeHOF < S , E > ,
29+ construct : ConstructHOF < E > ,
2430) => void ;
2531export type AsyncRenderCallback <
2632 S extends State ,
@@ -70,7 +76,7 @@ export declare enum Callbacks {
7076type ValueOf < T > = T [ keyof T ] ;
7177
7278export function factorizeComponent <
73- S extends State ,
79+ S extends State = State ,
7480 E extends CustomElement = CustomElement ,
7581> (
7682 render : Render < S , E > ,
@@ -105,7 +111,8 @@ export function useShadow<
105111export function useTemplate <
106112 S extends State ,
107113 E extends CustomElement = CustomElement ,
114+ X extends Node = Node ,
108115> (
109116 getTemplate : ( ) => HTMLTemplateElement ,
110- map ?: { [ k : string ] : ( e : E ) => CustomElement } ,
117+ map ?: { [ k : string ] : ( e : E ) => X | null } ,
111118) : HOF < S , E > ;
0 commit comments