@@ -19,6 +19,8 @@ export class MarkdownInputField extends MarkdownRenderChild {
1919	intervalCounter : number ; 
2020	valueQueue : any [ ] ; 
2121
22+ 	arguments : {  name : string ,  value : any  } [ ] ; 
23+ 
2224	constructor ( containerEl : HTMLElement ,  fullDeclaration : string ,  plugin : MetaBindPlugin ,  filePath : string ,  uid : number )  { 
2325		super ( containerEl ) ; 
2426
@@ -33,14 +35,50 @@ export class MarkdownInputField extends MarkdownRenderChild {
3335		this . intervalCounter  =  0 ; 
3436		this . limitInterval  =  window . setInterval ( this . incrementInterval . bind ( this ) ,  10 ) ; 
3537
36- 		const  regExp  =  new  RegExp ( / \[ .* ?\] / ) ; 
37- 		let  declaration   =   regExp . exec ( fullDeclaration ) [ 0 ] ; 
38+ 		const  declarationRegExp :  RegExp  =  new  RegExp ( / \[ .* ?\] / ) ; 
39+ 		let  declaration :  string   =   declarationRegExp . exec ( fullDeclaration ) [ 0 ] ; 
3840		declaration  =  declaration . replace ( '[' ,  '' ) . replace ( ']' ,  '' ) ; 
3941		let  declarationParts : string [ ]  =  declaration . split ( ':' ) ; 
4042		let  boundTo : string  =  declarationParts [ 1 ]  ??  '' ; 
4143
4244		this . isBound  =  ! ! boundTo ; 
43- 		this . inputFieldType  =  declarationParts [ 0 ] . toLowerCase ( ) ; 
45+ 		let  inputFieldTypeWithArguments : string  =  declarationParts [ 0 ] ; 
46+ 		const  inputFieldArgumentsRegExp : RegExp  =  new  RegExp ( / \( .* \) / ) ; 
47+ 		this . inputFieldType  =  inputFieldTypeWithArguments . replace ( inputFieldArgumentsRegExp ,  '' ) ; 
48+ 
49+ 		this . arguments  =  [ ] ; 
50+ 		let  inputFieldArgumentsRegExpResult  =  inputFieldArgumentsRegExp . exec ( inputFieldTypeWithArguments ) ; 
51+ 		let  inputFieldArgumentsString  =  inputFieldArgumentsRegExpResult  ? inputFieldArgumentsRegExpResult [ 0 ]  : '' ; 
52+ 		console . log ( inputFieldArgumentsString ) ; 
53+ 		if  ( inputFieldArgumentsString )  { 
54+ 			inputFieldArgumentsString  =  inputFieldArgumentsString . substring ( 1 ,  inputFieldArgumentsString . length  -  1 ) ; 
55+ 			let  inputFieldArguments : string [ ]  =  inputFieldArgumentsString . split ( ',' ) ; 
56+ 
57+ 			inputFieldArguments  =  inputFieldArguments . map ( x  =>  x . trim ( ) ) ; 
58+ 			for  ( const  inputFieldArgument  of  inputFieldArguments )  { 
59+ 				if  ( inputFieldArgument . startsWith ( 'class' ) )  { 
60+ 					let  classArgumentsString : string  =  inputFieldArgumentsRegExp . exec ( inputFieldArgument ) [ 0 ] ; 
61+ 					if  ( ! classArgumentsString  &&  classArgumentsString . length  >=  2 )  { 
62+ 						this . error  =  'class needs an argument' ; 
63+ 						return ; 
64+ 					} 
65+ 					classArgumentsString  =  classArgumentsString . substring ( 1 ,  classArgumentsString . length  -  1 ) ; 
66+ 					if  ( ! classArgumentsString )  { 
67+ 						this . error  =  'class argument can not be empty' ; 
68+ 						return ; 
69+ 					} 
70+ 
71+ 					let  inputFieldStyleArgument : {  name : string ,  value : string  }  =  { name : 'class' ,  value : classArgumentsString } ; 
72+ 
73+ 					this . arguments . push ( inputFieldStyleArgument ) ; 
74+ 				} 
75+ 
76+ 				if  ( inputFieldArgument . startsWith ( 'addLabels' ) )  { 
77+ 					this . arguments . push ( { name : 'labels' ,  value : true } ) ; 
78+ 				} 
79+ 			} 
80+ 		} 
81+ 
4482
4583		if  ( this . isBound )  { 
4684			let  boundToParts  =  boundTo . split ( '#' ) ; 
@@ -75,6 +113,7 @@ export class MarkdownInputField extends MarkdownRenderChild {
75113			this . metaData  =  plugin . getMetaDataForFile ( this . file ) ; 
76114		} 
77115
116+ 
78117		// console.log(this, 3) 
79118	} 
80119
@@ -112,7 +151,7 @@ export class MarkdownInputField extends MarkdownRenderChild {
112151	} 
113152
114153	async  onload ( )  { 
115- 		//console.log('load',  this);
154+ 		Logger . logDebug ( this ) ; 
116155
117156		this . metaData  =  await  this . metaData ; 
118157
@@ -128,28 +167,54 @@ export class MarkdownInputField extends MarkdownRenderChild {
128167
129168		this . plugin . registerMarkdownInputField ( this ) ; 
130169
170+ 		let  element : HTMLElement  =  null ; 
171+ 
131172		if  ( this . inputFieldType  ===  'toggle' )  { 
132173			const  newEl  =  new  ToggleComponent ( container ) ; 
133174			newEl . setValue ( this . getInitialValue ( ) ) ; 
134175			newEl . onChange ( async  ( value )  =>  { 
135176				await  this . updateMetaData ( value ) ; 
136177			} ) ; 
137178			this . inputElement  =  newEl ; 
179+ 			element  =  newEl . toggleEl ; 
138180		}  else  if  ( this . inputFieldType  ===  'slider' )  { 
181+ 			let  minValue  =  0 ; 
182+ 			let  maxValue  =  100 ; 
183+ 
184+ 			let  labelArgument  =  this . arguments . filter ( x  =>  x . name  ===  'labels' ) . first ( ) ; 
185+ 			if  ( labelArgument  &&  labelArgument . value  ===  true )  { 
186+ 				container . createSpan ( { text : minValue . toString ( ) } ) ; 
187+ 			} 
188+ 
139189			const  newEl  =  new  SliderComponent ( container ) ; 
140190			newEl . setValue ( this . getInitialValue ( ) ) ; 
141191			newEl . onChange ( async  ( value )  =>  { 
142192				await  this . updateMetaData ( value ) ; 
143193			} ) ; 
144194			newEl . setDynamicTooltip ( ) ; 
195+ 
196+ 			if  ( labelArgument  &&  labelArgument . value  ===  true )  { 
197+ 				container . createSpan ( { text : maxValue . toString ( ) } ) ; 
198+ 			} 
199+ 
145200			this . inputElement  =  newEl ; 
201+ 			element  =  newEl . sliderEl ; 
146202		}  else  if  ( this . inputFieldType  ===  'text' )  { 
147203			const  newEl  =  new  TextComponent ( container ) ; 
148204			newEl . setValue ( this . getInitialValue ( ) ) ; 
149205			newEl . onChange ( async  ( value )  =>  { 
150206				await  this . updateMetaData ( value ) ; 
151207			} ) ; 
152208			this . inputElement  =  newEl ; 
209+ 			element  =  newEl . inputEl ; 
210+ 		} 
211+ 
212+ 		if  ( element )  { 
213+ 			for  ( const  argument  of  this . arguments )  { 
214+ 				if  ( argument . name  ===  'class' )  { 
215+ 					element . addClass ( argument . value ) ; 
216+ 				} 
217+ 			} 
153218		} 
154219
155220		this . containerEl . empty ( ) ; 
0 commit comments