@@ -5,10 +5,7 @@ interface WidgetDefinition {
55 value : {
66 type : string ;
77 default : number ;
8- range : [
9- number ,
10- number
11- ] ;
8+ range : [ number , number ] ;
129 } ;
1310}
1411
@@ -17,48 +14,35 @@ interface ConfigDefinition {
1714 widgets : Array < WidgetDefinition > ;
1815}
1916
17+ const typeTemplateMap : { [ key : string ] : string } = {
18+ text : "text-widget-template" ,
19+ title : "title-widget-template" ,
20+ image : "image-widget-template" ,
21+ slider : "slider-widget-template" ,
22+ switch : "switch-widget-template" ,
23+ number : "number-widget-template" ,
24+ } ;
2025
2126export class ConfigClass {
22- file : { config : ConfigDefinition } ;
27+ file : { config : ConfigDefinition } ;
2328 widgets : Array < WidgetDefinition > = [ ] ;
2429
2530 constructor ( config_object : object ) {
26- this . file = config_object as { config : ConfigDefinition } ;
31+ this . file = config_object as { config : ConfigDefinition } ;
2732 this . widgets = this . file . config . widgets ;
2833 }
2934
3035 public get_widgets_html ( ) {
3136 let html_widgets : Array < DocumentFragment > = [ ] ;
32-
37+
3338 let i = 0 ;
34- this . widgets . forEach ( element => {
39+ this . widgets . forEach ( ( element ) => {
3540 const type = element . type ;
3641
37- let template = document . getElementById ( "text-widget-template" ) as HTMLTemplateElement ;
38-
39- // Get correct template
40- switch ( type ) {
41- case "heading" :
42- template = document . getElementById ( "title-widget-template" ) as HTMLTemplateElement ;
43- break ;
44- case "title" :
45- template = document . getElementById ( "title-widget-template" ) as HTMLTemplateElement ;
46- break ;
47- case "text" :
48- template = document . getElementById ( "text-widget-template" ) as HTMLTemplateElement ;
49- break ;
50- case "image" :
51- template = document . getElementById ( "image-widget-template" ) as HTMLTemplateElement ;
52- break ;
53- case "switch" :
54- template = document . getElementById ( "switch-widget-template" ) as HTMLTemplateElement ;
55- break ;
56- case "number" :
57- template = document . getElementById ( "number-widget-template" ) as HTMLTemplateElement ;
58- break ;
59- case "slider" :
60- template = document . getElementById ( "slider-widget-template" ) as HTMLTemplateElement ;
61- break ;
42+ let template = document . getElementById ( typeTemplateMap [ type ] ) as HTMLTemplateElement | null ;
43+ if ( ! template ) {
44+ console . error ( `Template not found for type: ${ type } ` ) ;
45+ template = document . getElementById ( "text-widget-template" ) as HTMLTemplateElement ;
6246 }
6347
6448 // Create the thing
@@ -72,11 +56,15 @@ export class ConfigClass {
7256 // else if (element.default == "enabled") {
7357 // (clone.querySelector(".widget-switch-input") as HTMLInputElement).checked = true;
7458 // }
75- }
76- else if ( type == "slider" || type == "number" || type == "value" ) {
77- ( clone . querySelector ( ".widget-input" ) as HTMLInputElement ) . valueAsNumber = element . value . default ;
78- if ( element . value . range ) ( clone . querySelector ( ".widget-input" ) as HTMLInputElement ) . min = element . value . range [ 0 ] . toString ( ) ;
79- if ( element . value . range ) ( clone . querySelector ( ".widget-input" ) as HTMLInputElement ) . max = element . value . range [ 1 ] . toString ( ) ;
59+ } else if ( type == "slider" || type == "number" || type == "value" ) {
60+ ( clone . querySelector ( ".widget-input" ) as HTMLInputElement ) . valueAsNumber =
61+ element . value . default ;
62+ if ( element . value . range )
63+ ( clone . querySelector ( ".widget-input" ) as HTMLInputElement ) . min =
64+ element . value . range [ 0 ] . toString ( ) ;
65+ if ( element . value . range )
66+ ( clone . querySelector ( ".widget-input" ) as HTMLInputElement ) . max =
67+ element . value . range [ 1 ] . toString ( ) ;
8068
8169 if ( element . value . type ) {
8270 if ( element . value . type == "percent" ) {
@@ -87,11 +75,13 @@ export class ConfigClass {
8775
8876 // Set input ID
8977 if ( type != "text" && type != "image" && type != "title" && type != "heading" ) {
90- ( clone . querySelector ( ".widget-input" ) as HTMLInputElement ) . id = "widget-input-" + i . toString ( ) ;
78+ ( clone . querySelector ( ".widget-input" ) as HTMLInputElement ) . id =
79+ "widget-input-" + i . toString ( ) ;
9180 }
92-
81+
9382 // Push to array
94- html_widgets . push ( clone ) ; i += 1 ;
83+ html_widgets . push ( clone ) ;
84+ i += 1 ;
9585 } ) ;
9686
9787 // Return array of HTML elements
0 commit comments