1- import { GenericRenderer , RenderFunction } from ' ./core' ;
2- import { BaseScheduler } from ' ./scheduler' ;
1+ import { GenericRenderer , RenderFunction } from " ./core" ;
2+ import { BaseScheduler } from " ./scheduler" ;
33
4- const toCamelCase = ( val = '' ) : string =>
5- val . replace ( / - + ( [ a - z ] ) ? / g, ( _ , char ) => char ? char . toUpperCase ( ) : '' ) ;
4+ const toCamelCase = ( val = "" ) : string =>
5+ val . replace ( / - + ( [ a - z ] ) ? / g, ( _ , char ) => ( char ? char . toUpperCase ( ) : "" ) ) ;
66
77interface Renderer < P extends object > extends GenericRenderer < HTMLElement , P > {
88 ( this : Component < P > , host : Component < P > ) : unknown | void ;
@@ -15,8 +15,15 @@ type Constructor<P extends object> = new (...args: unknown[]) => Component<P>;
1515
1616interface Creator {
1717 < P extends object > ( renderer : Renderer < P > ) : Constructor < P > ;
18- < P extends object > ( renderer : Renderer < P > , options : Options < P > ) : Constructor < P > ;
19- < P extends object > ( renderer : Renderer < P > , baseElement : Constructor < { } > , options : Omit < Options < P > , 'baseElement' > ) : Constructor < P > ;
18+ < P extends object > (
19+ renderer : Renderer < P > ,
20+ options : Options < P >
21+ ) : Constructor < P > ;
22+ < P extends object > (
23+ renderer : Renderer < P > ,
24+ baseElement : Constructor < { } > ,
25+ options : Omit < Options < P > , "baseElement" >
26+ ) : Constructor < P > ;
2027}
2128
2229interface Options < P > {
@@ -27,12 +34,25 @@ interface Options<P> {
2734}
2835
2936function makeComponent ( render : RenderFunction ) : Creator {
30- class Scheduler < P extends object > extends BaseScheduler < P , HTMLElement , Renderer < P > , Component < P > > {
37+ class Scheduler < P extends object > extends BaseScheduler <
38+ P ,
39+ HTMLElement ,
40+ Renderer < P > ,
41+ Component < P >
42+ > {
3143 frag : DocumentFragment | HTMLElement ;
3244
33- constructor ( renderer : Renderer < P > , frag : DocumentFragment , host : HTMLElement ) ;
45+ constructor (
46+ renderer : Renderer < P > ,
47+ frag : DocumentFragment ,
48+ host : HTMLElement
49+ ) ;
3450 constructor ( renderer : Renderer < P > , host : HTMLElement ) ;
35- constructor ( renderer : Renderer < P > , frag : DocumentFragment | HTMLElement , host ?: HTMLElement ) {
51+ constructor (
52+ renderer : Renderer < P > ,
53+ frag : DocumentFragment | HTMLElement ,
54+ host ?: HTMLElement
55+ ) {
3656 super ( renderer , ( host || frag ) as Component < P > ) ;
3757 this . frag = frag ;
3858 }
@@ -43,11 +63,28 @@ function makeComponent(render: RenderFunction): Creator {
4363 }
4464
4565 function component < P extends object > ( renderer : Renderer < P > ) : Constructor < P > ;
46- function component < P extends object > ( renderer : Renderer < P > , options : Options < P > ) : Constructor < P > ;
47- function component < P extends object > ( renderer : Renderer < P > , baseElement : Constructor < P > , options : Omit < Options < P > , 'baseElement' > ) : Constructor < P > ;
48- function component < P extends object > ( renderer : Renderer < P > , baseElementOrOptions ?: Constructor < P > | Options < P > , options ?: Options < P > ) : Constructor < P > {
49- const BaseElement = ( options || baseElementOrOptions as Options < P > || { } ) . baseElement || HTMLElement ;
50- const { observedAttributes = [ ] , useShadowDOM = true , shadowRootInit = { } } = options || baseElementOrOptions as Options < P > || { } ;
66+ function component < P extends object > (
67+ renderer : Renderer < P > ,
68+ options : Options < P >
69+ ) : Constructor < P > ;
70+ function component < P extends object > (
71+ renderer : Renderer < P > ,
72+ baseElement : Constructor < P > ,
73+ options : Omit < Options < P > , "baseElement" >
74+ ) : Constructor < P > ;
75+ function component < P extends object > (
76+ renderer : Renderer < P > ,
77+ baseElementOrOptions ?: Constructor < P > | Options < P > ,
78+ options ?: Options < P >
79+ ) : Constructor < P > {
80+ const BaseElement =
81+ ( options || ( baseElementOrOptions as Options < P > ) || { } ) . baseElement ||
82+ HTMLElement ;
83+ const {
84+ observedAttributes = [ ] ,
85+ useShadowDOM = true ,
86+ shadowRootInit = { } ,
87+ } = options || ( baseElementOrOptions as Options < P > ) || { } ;
5188
5289 class Element extends BaseElement {
5390 _scheduler : Scheduler < P > ;
@@ -61,7 +98,7 @@ function makeComponent(render: RenderFunction): Creator {
6198 if ( useShadowDOM === false ) {
6299 this . _scheduler = new Scheduler ( renderer , this ) ;
63100 } else {
64- this . attachShadow ( { mode : ' open' , ...shadowRootInit } ) ;
101+ this . attachShadow ( { mode : " open" , ...shadowRootInit } ) ;
65102 this . _scheduler = new Scheduler ( renderer , this . shadowRoot ! , this ) ;
66103 }
67104 }
@@ -74,14 +111,18 @@ function makeComponent(render: RenderFunction): Creator {
74111 this . _scheduler . teardown ( ) ;
75112 }
76113
77- attributeChangedCallback ( name : string , oldValue : unknown , newValue : unknown ) : void {
78- if ( oldValue === newValue ) {
114+ attributeChangedCallback (
115+ name : string ,
116+ oldValue : unknown ,
117+ newValue : unknown
118+ ) : void {
119+ if ( oldValue === newValue ) {
79120 return ;
80121 }
81- let val = newValue === '' ? true : newValue ;
122+ let val = newValue === "" ? true : newValue ;
82123 Reflect . set ( this , toCamelCase ( name ) , val ) ;
83124 }
84- } ;
125+ }
85126
86127 function reflectiveProp < T > ( initialValue : T ) : Readonly < PropertyDescriptor > {
87128 let value = initialValue ;
@@ -97,11 +138,11 @@ function makeComponent(render: RenderFunction): Creator {
97138 if ( isSetup && value === newValue ) return ;
98139 isSetup = true ;
99140 value = newValue ;
100- if ( this . _scheduler ) {
141+ if ( this . _scheduler ) {
101142 this . _scheduler . update ( ) ;
102143 }
103- }
104- } )
144+ } ,
145+ } ) ;
105146 }
106147
107148 const proto = new Proxy ( BaseElement . prototype , {
@@ -111,35 +152,35 @@ function makeComponent(render: RenderFunction): Creator {
111152
112153 set ( target , key : string , value , receiver ) : boolean {
113154 let desc : PropertyDescriptor | undefined ;
114- if ( key in target ) {
155+ if ( key in target ) {
115156 desc = Object . getOwnPropertyDescriptor ( target , key ) ;
116- if ( desc && desc . set ) {
157+ if ( desc && desc . set ) {
117158 desc . set . call ( receiver , value ) ;
118159 return true ;
119160 }
120161
121162 Reflect . set ( target , key , value , receiver ) ;
122- return true
163+ return true ;
123164 }
124165
125- if ( typeof key === ' symbol' || key [ 0 ] === '_' ) {
166+ if ( typeof key === " symbol" || key [ 0 ] === "_" ) {
126167 desc = {
127168 enumerable : true ,
128169 configurable : true ,
129170 writable : true ,
130- value
171+ value,
131172 } ;
132173 } else {
133174 desc = reflectiveProp ( value ) ;
134175 }
135176 Object . defineProperty ( receiver , key , desc ) ;
136177
137- if ( desc . set ) {
178+ if ( desc . set ) {
138179 desc . set . call ( receiver , value ) ;
139180 }
140181
141182 return true ;
142- }
183+ } ,
143184 } ) ;
144185
145186 Object . setPrototypeOf ( Element . prototype , proto ) ;
@@ -150,4 +191,9 @@ function makeComponent(render: RenderFunction): Creator {
150191 return component ;
151192}
152193
153- export { makeComponent , Component , Constructor as ComponentConstructor , Creator as ComponentCreator } ;
194+ export {
195+ makeComponent ,
196+ Component ,
197+ Constructor as ComponentConstructor ,
198+ Creator as ComponentCreator ,
199+ } ;
0 commit comments