export abstract class ControlsCommon { abstract label : string ; abstract name : string ; abstract icon : string ; abstract dndType : string ; abstract content ( ) ; } export interface ControlsContent { required ? : boolean ; name : string ; label : string ; type : string ; value ? : any ; } export interface StructureContent { name : string ; label : string ; type : string ; fields ? : Array < any > ; } export function randomName ( desc ) { return `${ desc }-${ Math . floor ( Math . random ( ) * ( 99999 - 10000 + 1 ) ) + 10000 }` ; } export class Controller { public typeController : ControlsCommon ; constructor ( public name , public control ) { this . typeController = control ; } }