@@ -31,7 +31,18 @@ export function isFieldTypeAllowedInline(type: FieldType): boolean {
31
31
return type === FieldType . INPUT_FIELD || type === FieldType . VIEW_FIELD || type === FieldType . INLINE_BUTTON ;
32
32
}
33
33
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 > {
35
46
readonly plugin : Plugin ;
36
47
readonly inputField : InputFieldAPI ;
37
48
@@ -47,21 +58,21 @@ export class API<Plugin extends IPlugin> {
47
58
48
59
readonly syntaxHighlighting : SyntaxHighlightingAPI ;
49
60
50
- constructor ( plugin : Plugin ) {
61
+ constructor ( plugin : Plugin , overrides ?: APIFieldOverrides ) {
51
62
this . plugin = plugin ;
52
63
this . inputField = new InputFieldAPI ( plugin ) ;
53
64
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 ) ;
57
68
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 ) ;
60
71
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 ) ;
63
74
64
- this . syntaxHighlighting = new SyntaxHighlightingAPI ( plugin ) ;
75
+ this . syntaxHighlighting = overrides ?. syntaxHighlighting ?? new SyntaxHighlightingAPI ( plugin ) ;
65
76
}
66
77
67
78
public createField (
0 commit comments