namespace pxt . editor { export interface TextEdit { range : monaco . Range ; replacement : string ; } export interface MonacoFieldEditorHost { contentDiv ( ) : HTMLDivElement ; getText ( range ) : string ; blocksInfo ( ) : pxtc . BlocksInfo ; package ( ) : pxt . MainPackage ; writeFileAsync ( filename , content ) : Promise < void > ; readFile ( filename ) : string ; } export interface MonacoFieldEditor { getId ( ) : string ; showEditorAsync ( fileType , editrange , host ) : Promise < TextEdit > ; onClosed ( ) : void ; dispose ( ) : void ; } export interface MonacoFieldEditorDefinition { id : string ; matcher : MonacoFindArguments ; foldMatches ? : boolean ; alwaysBuildOnClose ? : boolean ; glyphCssClass ? : string ; weight ? : number ; proto : { new ( ) : MonacoFieldEditor ; } ; heightInPixels ? : number ; } export interface MonacoFindArguments { searchString : string ; isRegex : boolean ; matchWholeWord : boolean ; matchCase : boolean ; } const definitions = { } ; export function registerMonacoFieldEditor ( name , definition ) { definitions [ name ] = definition ; } export function getMonacoFieldEditor ( name ) { return definitions [ name ] ; } }