@@ -31,7 +31,18 @@ export function isFieldTypeAllowedInline(type: FieldType): boolean {
3131 return type === FieldType . INPUT_FIELD || type === FieldType . VIEW_FIELD || type === FieldType . INLINE_BUTTON ;
3232}
3333
34- export class API < Plugin extends IPlugin > {
34+ export interface APIFieldOverrides {
35+ inputFieldParser ?: InputFieldDeclarationParser ;
36+ viewFieldParser ?: ViewFieldParser ;
37+ bindTargetParser ?: BindTargetParser ;
38+ inputFieldFactory ?: InputFieldFactory ;
39+ viewFieldFactory ?: ViewFieldFactory ;
40+ buttonActionRunner ?: ButtonActionRunner ;
41+ buttonManager ?: ButtonManager ;
42+ syntaxHighlighting ?: SyntaxHighlightingAPI ;
43+ }
44+
45+ export abstract class API < Plugin extends IPlugin > {
3546 readonly plugin : Plugin ;
3647 readonly inputField : InputFieldAPI ;
3748
@@ -47,21 +58,21 @@ export class API<Plugin extends IPlugin> {
4758
4859 readonly syntaxHighlighting : SyntaxHighlightingAPI ;
4960
50- constructor ( plugin : Plugin ) {
61+ constructor ( plugin : Plugin , overrides ?: APIFieldOverrides ) {
5162 this . plugin = plugin ;
5263 this . inputField = new InputFieldAPI ( plugin ) ;
5364
54- this . inputFieldParser = new InputFieldDeclarationParser ( plugin ) ;
55- this . viewFieldParser = new ViewFieldParser ( plugin ) ;
56- this . bindTargetParser = new BindTargetParser ( plugin ) ;
65+ this . inputFieldParser = overrides ?. inputFieldParser ?? new InputFieldDeclarationParser ( plugin ) ;
66+ this . viewFieldParser = overrides ?. viewFieldParser ?? new ViewFieldParser ( plugin ) ;
67+ this . bindTargetParser = overrides ?. bindTargetParser ?? new BindTargetParser ( plugin ) ;
5768
58- this . inputFieldFactory = new InputFieldFactory ( plugin ) ;
59- this . viewFieldFactory = new ViewFieldFactory ( plugin ) ;
69+ this . inputFieldFactory = overrides ?. inputFieldFactory ?? new InputFieldFactory ( plugin ) ;
70+ this . viewFieldFactory = overrides ?. viewFieldFactory ?? new ViewFieldFactory ( plugin ) ;
6071
61- this . buttonActionRunner = new ButtonActionRunner ( plugin ) ;
62- this . buttonManager = new ButtonManager ( ) ;
72+ this . buttonActionRunner = overrides ?. buttonActionRunner ?? new ButtonActionRunner ( plugin ) ;
73+ this . buttonManager = overrides ?. buttonManager ?? new ButtonManager ( plugin ) ;
6374
64- this . syntaxHighlighting = new SyntaxHighlightingAPI ( plugin ) ;
75+ this . syntaxHighlighting = overrides ?. syntaxHighlighting ?? new SyntaxHighlightingAPI ( plugin ) ;
6576 }
6677
6778 public createField (
0 commit comments