@firestitch/text-editor 12.3.1 → 12.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,121 @@
1
+ import { Component, forwardRef, Inject, Input, NgZone } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { fromEvent } from 'rxjs';
4
+ import { BaseEditor } from './base-editor';
5
+ import { NGX_MONACO_EDITOR_CONFIG } from './config';
6
+ import * as i0 from "@angular/core";
7
+ export class EditorComponent extends BaseEditor {
8
+ constructor(zone, editorConfig) {
9
+ super(editorConfig);
10
+ this.zone = zone;
11
+ this.editorConfig = editorConfig;
12
+ this._value = '';
13
+ this.propagateChange = (_) => { };
14
+ this.onTouched = () => { };
15
+ }
16
+ set options(options) {
17
+ this._options = Object.assign({}, this.config.defaultOptions, options);
18
+ if (this._editor) {
19
+ this._editor.dispose();
20
+ this.initMonaco(options);
21
+ }
22
+ }
23
+ get options() {
24
+ return this._options;
25
+ }
26
+ set model(model) {
27
+ this.options.model = model;
28
+ if (this._editor) {
29
+ this._editor.dispose();
30
+ this.initMonaco(this.options);
31
+ }
32
+ }
33
+ writeValue(value) {
34
+ this._value = value || '';
35
+ // Fix for value change while dispose in process.
36
+ setTimeout(() => {
37
+ if (this._editor && !this.options.model) {
38
+ this._editor.setValue(this._value);
39
+ }
40
+ });
41
+ }
42
+ registerOnChange(fn) {
43
+ this.propagateChange = fn;
44
+ }
45
+ registerOnTouched(fn) {
46
+ this.onTouched = fn;
47
+ }
48
+ initMonaco(options) {
49
+ const hasModel = !!options.model;
50
+ if (hasModel) {
51
+ const model = monaco.editor.getModel(options.model.uri || '');
52
+ if (model) {
53
+ options.model = model;
54
+ options.model.setValue(this._value);
55
+ }
56
+ else {
57
+ options.model = monaco.editor.createModel(options.model.value, options.model.language, options.model.uri);
58
+ }
59
+ }
60
+ this._editor = monaco.editor.create(this._editorContainer.nativeElement, options);
61
+ if (!hasModel) {
62
+ this._editor.setValue(this._value);
63
+ }
64
+ this._editor.onDidChangeModelContent((e) => {
65
+ const value = this._editor.getValue();
66
+ // value is not propagated to parent when executing outside zone.
67
+ this.zone.run(() => {
68
+ this.propagateChange(value);
69
+ this._value = value;
70
+ });
71
+ });
72
+ this._editor.onDidBlurEditorWidget(() => {
73
+ this.onTouched();
74
+ });
75
+ // refresh layout on resize event.
76
+ if (this._windowResizeSubscription) {
77
+ this._windowResizeSubscription.unsubscribe();
78
+ }
79
+ this._windowResizeSubscription = fromEvent(window, 'resize').subscribe(() => this._editor.layout());
80
+ this.onInit.emit(this._editor);
81
+ }
82
+ }
83
+ EditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditorComponent, deps: [{ token: i0.NgZone }, { token: NGX_MONACO_EDITOR_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
84
+ EditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: EditorComponent, selector: "ngx-monaco-editor", inputs: { options: "options", model: "model" }, providers: [{
85
+ provide: NG_VALUE_ACCESSOR,
86
+ useExisting: forwardRef(() => EditorComponent),
87
+ multi: true
88
+ }], usesInheritance: true, ngImport: i0, template: '<div class="editor-container" #editorContainer></div>', isInline: true, styles: ["\n :host {\n display: block;\n height: 200px;\n }\n\n .editor-container {\n width: 100%;\n height: 98%;\n }\n "] });
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditorComponent, decorators: [{
90
+ type: Component,
91
+ args: [{
92
+ selector: 'ngx-monaco-editor',
93
+ template: '<div class="editor-container" #editorContainer></div>',
94
+ styles: [`
95
+ :host {
96
+ display: block;
97
+ height: 200px;
98
+ }
99
+
100
+ .editor-container {
101
+ width: 100%;
102
+ height: 98%;
103
+ }
104
+ `],
105
+ providers: [{
106
+ provide: NG_VALUE_ACCESSOR,
107
+ useExisting: forwardRef(() => EditorComponent),
108
+ multi: true
109
+ }]
110
+ }]
111
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: undefined, decorators: [{
112
+ type: Inject,
113
+ args: [NGX_MONACO_EDITOR_CONFIG]
114
+ }] }]; }, propDecorators: { options: [{
115
+ type: Input,
116
+ args: ['options']
117
+ }], model: [{
118
+ type: Input,
119
+ args: ['model']
120
+ }] } });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9uZ3gtbW9uYWNvLWVkaXRvci9lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUF5QixNQUFNLFVBQVUsQ0FBQzs7QUF5QjNFLE1BQU0sT0FBTyxlQUFnQixTQUFRLFVBQVU7SUE0QjdDLFlBQW9CLElBQVksRUFBNEMsWUFBbUM7UUFDN0csS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBREYsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUE0QyxpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUEzQnZHLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFFNUIsb0JBQWUsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ2pDLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUEwQnJCLENBQUM7SUF4QkQsSUFDSSxPQUFPLENBQUMsT0FBWTtRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZC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QztRQUNsQyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtZQUNsQyxJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDOUM7UUFDRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3BHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDOzs2R0ExRlUsZUFBZSx3Q0E0QmdCLHdCQUF3QjtpR0E1QnZELGVBQWUsNEZBTmYsQ0FBQztZQUNWLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDOUMsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLGlEQWhCUSx1REFBdUQ7NEZBa0J0RCxlQUFlO2tCQXBCM0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUUsdURBQXVEO29CQUNqRSxNQUFNLEVBQUUsQ0FBQzs7Ozs7Ozs7OztHQVVSLENBQUM7b0JBQ0YsU0FBUyxFQUFFLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7NEJBQzlDLEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7aUJBQ0g7OzBCQTZCb0MsTUFBTTsyQkFBQyx3QkFBd0I7NENBckI5RCxPQUFPO3NCQURWLEtBQUs7dUJBQUMsU0FBUztnQkFjWixLQUFLO3NCQURSLEtBQUs7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbnB1dCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQmFzZUVkaXRvciB9IGZyb20gJy4vYmFzZS1lZGl0b3InO1xuaW1wb3J0IHsgTkdYX01PTkFDT19FRElUT1JfQ09ORklHLCBOZ3hNb25hY29FZGl0b3JDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBOZ3hFZGl0b3JNb2RlbCB9IGZyb20gJy4vdHlwZXMnO1xuXG5kZWNsYXJlIHZhciBtb25hY286IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LW1vbmFjby1lZGl0b3InLFxuICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9XCJlZGl0b3ItY29udGFpbmVyXCIgI2VkaXRvckNvbnRhaW5lcj48L2Rpdj4nLFxuICBzdHlsZXM6IFtgXG4gICAgICA6aG9zdCB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgaGVpZ2h0OiAyMDBweDtcbiAgICAgIH1cblxuICAgICAgLmVkaXRvci1jb250YWluZXIge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGhlaWdodDogOTglO1xuICAgICAgfVxuICBgXSxcbiAgcHJvdmlkZXJzOiBbe1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVkaXRvckNvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbiAgfV1cbn0pXG5leHBvcnQgY2xhc3MgRWRpdG9yQ29tcG9uZW50IGV4dGVuZHMgQmFzZUVkaXRvciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZyA9ICcnO1xuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBASW5wdXQoJ29wdGlvbnMnKVxuICBzZXQgb3B0aW9ucyhvcHRpb25zOiBhbnkpIHtcbiAgICB0aGlzLl9vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jb25maWcuZGVmYXVsdE9wdGlvbnMsIG9wdGlvbnMpO1xuICAgIGlmICh0aGlzLl9lZGl0b3IpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5kaXNwb3NlKCk7XG4gICAgICB0aGlzLmluaXRNb25hY28ob3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIEBJbnB1dCgnbW9kZWwnKVxuICBzZXQgbW9kZWwobW9kZWw6IE5neEVkaXRvck1vZGVsKSB7XG4gICAgdGhpcy5vcHRpb25zLm1vZGVsID0gbW9kZWw7XG4gICAgaWYgKHRoaXMuX2VkaXRvcikge1xuICAgICAgdGhpcy5fZWRpdG9yLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuaW5pdE1vbmFjbyh0aGlzLm9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lLCBASW5qZWN0KE5HWF9NT05BQ09fRURJVE9SX0NPTkZJRykgcHJpdmF0ZSBlZGl0b3JDb25maWc6IE5neE1vbmFjb0VkaXRvckNvbmZpZykge1xuICAgIHN1cGVyKGVkaXRvckNvbmZpZyk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlIHx8ICcnO1xuICAgIC8vIEZpeCBmb3IgdmFsdWUgY2hhbmdlIHdoaWxlIGRpc3Bvc2UgaW4gcHJvY2Vzcy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9lZGl0b3IgJiYgIXRoaXMub3B0aW9ucy5tb2RlbCkge1xuICAgICAgICB0aGlzLl9lZGl0b3Iuc2V0VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRNb25hY28ob3B0aW9uczogYW55KTogdm9pZCB7XG5cbiAgICBjb25zdCBoYXNNb2RlbCA9ICEhb3B0aW9ucy5tb2RlbDtcblxuICAgIGlmIChoYXNNb2RlbCkge1xuICAgICAgY29uc3QgbW9kZWwgPSBtb25hY28uZWRpdG9yLmdldE1vZGVsKG9wdGlvbnMubW9kZWwudXJpIHx8ICcnKTtcbiAgICAgIGlmIChtb2RlbCkge1xuICAgICAgICBvcHRpb25zLm1vZGVsID0gbW9kZWw7XG4gICAgICAgIG9wdGlvbnMubW9kZWwuc2V0VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucy5tb2RlbCA9IG1vbmFjby5lZGl0b3IuY3JlYXRlTW9kZWwob3B0aW9ucy5tb2RlbC52YWx1ZSwgb3B0aW9ucy5tb2RlbC5sYW5ndWFnZSwgb3B0aW9ucy5tb2RlbC51cmkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2VkaXRvciA9IG1vbmFjby5lZGl0b3IuY3JlYXRlKHRoaXMuX2VkaXRvckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCBvcHRpb25zKTtcblxuICAgIGlmICghaGFzTW9kZWwpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5zZXRWYWx1ZSh0aGlzLl92YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZWRpdG9yLm9uRGlkQ2hhbmdlTW9kZWxDb250ZW50KChlOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fZWRpdG9yLmdldFZhbHVlKCk7XG5cbiAgICAgIC8vIHZhbHVlIGlzIG5vdCBwcm9wYWdhdGVkIHRvIHBhcmVudCB3aGVuIGV4ZWN1dGluZyBvdXRzaWRlIHpvbmUuXG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodmFsdWUpO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9lZGl0b3Iub25EaWRCbHVyRWRpdG9yV2lkZ2V0KCgpID0+IHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfSk7XG5cbiAgICAvLyByZWZyZXNoIGxheW91dCBvbiByZXNpemUgZXZlbnQuXG4gICAgaWYgKHRoaXMuX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fd2luZG93UmVzaXplU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbiA9IGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZWRpdG9yLmxheW91dCgpKTtcbiAgICB0aGlzLm9uSW5pdC5lbWl0KHRoaXMuX2VkaXRvcik7XG4gIH1cblxufVxuIl19
@@ -0,0 +1,40 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { NGX_MONACO_EDITOR_CONFIG } from './config';
4
+ import { DiffEditorComponent } from './diff-editor.component';
5
+ import { EditorComponent } from './editor.component';
6
+ import * as i0 from "@angular/core";
7
+ export class MonacoEditorModule {
8
+ static forRoot(config = {}) {
9
+ return {
10
+ ngModule: MonacoEditorModule,
11
+ providers: [
12
+ { provide: NGX_MONACO_EDITOR_CONFIG, useValue: config }
13
+ ]
14
+ };
15
+ }
16
+ }
17
+ MonacoEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
18
+ MonacoEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoEditorModule, declarations: [EditorComponent,
19
+ DiffEditorComponent], imports: [CommonModule], exports: [EditorComponent,
20
+ DiffEditorComponent] });
21
+ MonacoEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoEditorModule, imports: [[
22
+ CommonModule
23
+ ]] });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoEditorModule, decorators: [{
25
+ type: NgModule,
26
+ args: [{
27
+ imports: [
28
+ CommonModule
29
+ ],
30
+ declarations: [
31
+ EditorComponent,
32
+ DiffEditorComponent
33
+ ],
34
+ exports: [
35
+ EditorComponent,
36
+ DiffEditorComponent
37
+ ]
38
+ }]
39
+ }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9uZ3gtbW9uYWNvLWVkaXRvci9lZGl0b3IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsd0JBQXdCLEVBQXlCLE1BQU0sVUFBVSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFlckQsTUFBTSxPQUFPLGtCQUFrQjtJQUN0QixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQWdDLEVBQUU7UUFDdEQsT0FBTztZQUNMLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7YUFDeEQ7U0FDRixDQUFDO0lBQ0osQ0FBQzs7Z0hBUlUsa0JBQWtCO2lIQUFsQixrQkFBa0IsaUJBUjNCLGVBQWU7UUFDZixtQkFBbUIsYUFKbkIsWUFBWSxhQU9aLGVBQWU7UUFDZixtQkFBbUI7aUhBR1Ysa0JBQWtCLFlBWnBCO1lBQ1AsWUFBWTtTQUNiOzRGQVVVLGtCQUFrQjtrQkFiOUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osZUFBZTt3QkFDZixtQkFBbUI7cUJBQ3BCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxlQUFlO3dCQUNmLG1CQUFtQjtxQkFDcEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTkdYX01PTkFDT19FRElUT1JfQ09ORklHLCBOZ3hNb25hY29FZGl0b3JDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBEaWZmRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9kaWZmLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9lZGl0b3IuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBFZGl0b3JDb21wb25lbnQsXG4gICAgRGlmZkVkaXRvckNvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRWRpdG9yQ29tcG9uZW50LFxuICAgIERpZmZFZGl0b3JDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNb25hY29FZGl0b3JNb2R1bGUge1xuICBwdWJsaWMgc3RhdGljIGZvclJvb3QoY29uZmlnOiBOZ3hNb25hY29FZGl0b3JDb25maWcgPSB7fSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TW9uYWNvRWRpdG9yTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBNb25hY29FZGl0b3JNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBOR1hfTU9OQUNPX0VESVRPUl9DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvbmd4LW1vbmFjby1lZGl0b3IvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGlmZkVkaXRvck1vZGVsIHtcbiAgICBjb2RlOiBzdHJpbmc7XG4gICAgbGFuZ3VhZ2U6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTmd4RWRpdG9yTW9kZWwge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFuZ3VhZ2U/OiBzdHJpbmc7XG4gICAgdXJpPzogYW55O1xufVxuIl19
@@ -1,10 +1,200 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, forwardRef, Component, Inject, Input, Output, ViewChild, NgModule } from '@angular/core';
2
+ import { InjectionToken, EventEmitter, Component, Inject, ViewChild, Output, forwardRef, Input, NgModule } from '@angular/core';
3
3
  import { DOCUMENT, CommonModule } from '@angular/common';
4
4
  import * as i2 from '@angular/forms';
5
5
  import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
6
- import * as i1 from 'ngx-monaco-editor';
7
- import { EditorComponent, MonacoEditorModule } from 'ngx-monaco-editor';
6
+ import { fromEvent } from 'rxjs';
7
+
8
+ const NGX_MONACO_EDITOR_CONFIG = new InjectionToken('NGX_MONACO_EDITOR_CONFIG');
9
+
10
+ let loadedMonaco = false;
11
+ let loadPromise;
12
+ class BaseEditor {
13
+ constructor(config) {
14
+ this.config = config;
15
+ this.onInit = new EventEmitter();
16
+ }
17
+ ngAfterViewInit() {
18
+ if (loadedMonaco) {
19
+ // Wait until monaco editor is available
20
+ loadPromise.then(() => {
21
+ this.initMonaco(this._options);
22
+ });
23
+ }
24
+ else {
25
+ loadedMonaco = true;
26
+ loadPromise = new Promise((resolve) => {
27
+ const baseUrl = (this.config.baseUrl || './assets') + '/monaco-editor/min/vs';
28
+ if (typeof (window.monaco) === 'object') {
29
+ resolve();
30
+ return;
31
+ }
32
+ const onGotAmdLoader = () => {
33
+ // Load monaco
34
+ window.require.config({ paths: { 'vs': `${baseUrl}` } });
35
+ window.require([`vs/editor/editor.main`], () => {
36
+ if (typeof this.config.onMonacoLoad === 'function') {
37
+ this.config.onMonacoLoad();
38
+ }
39
+ this.initMonaco(this._options);
40
+ resolve();
41
+ });
42
+ };
43
+ // Load AMD loader if necessary
44
+ if (!window.require) {
45
+ const loaderScript = document.createElement('script');
46
+ loaderScript.type = 'text/javascript';
47
+ loaderScript.src = `${baseUrl}/loader.js`;
48
+ loaderScript.addEventListener('load', onGotAmdLoader);
49
+ document.body.appendChild(loaderScript);
50
+ }
51
+ else {
52
+ onGotAmdLoader();
53
+ }
54
+ });
55
+ }
56
+ }
57
+ ngOnDestroy() {
58
+ if (this._windowResizeSubscription) {
59
+ this._windowResizeSubscription.unsubscribe();
60
+ }
61
+ if (this._editor) {
62
+ this._editor.dispose();
63
+ this._editor = undefined;
64
+ }
65
+ }
66
+ }
67
+ BaseEditor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseEditor, deps: [{ token: NGX_MONACO_EDITOR_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
68
+ BaseEditor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BaseEditor, selector: "ng-component", outputs: { onInit: "onInit" }, viewQueries: [{ propertyName: "_editorContainer", first: true, predicate: ["editorContainer"], descendants: true, static: true }], ngImport: i0, template: '', isInline: true });
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseEditor, decorators: [{
70
+ type: Component,
71
+ args: [{
72
+ template: ''
73
+ }]
74
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
75
+ type: Inject,
76
+ args: [NGX_MONACO_EDITOR_CONFIG]
77
+ }] }]; }, propDecorators: { _editorContainer: [{
78
+ type: ViewChild,
79
+ args: ['editorContainer', { static: true }]
80
+ }], onInit: [{
81
+ type: Output
82
+ }] } });
83
+
84
+ class EditorComponent extends BaseEditor {
85
+ constructor(zone, editorConfig) {
86
+ super(editorConfig);
87
+ this.zone = zone;
88
+ this.editorConfig = editorConfig;
89
+ this._value = '';
90
+ this.propagateChange = (_) => { };
91
+ this.onTouched = () => { };
92
+ }
93
+ set options(options) {
94
+ this._options = Object.assign({}, this.config.defaultOptions, options);
95
+ if (this._editor) {
96
+ this._editor.dispose();
97
+ this.initMonaco(options);
98
+ }
99
+ }
100
+ get options() {
101
+ return this._options;
102
+ }
103
+ set model(model) {
104
+ this.options.model = model;
105
+ if (this._editor) {
106
+ this._editor.dispose();
107
+ this.initMonaco(this.options);
108
+ }
109
+ }
110
+ writeValue(value) {
111
+ this._value = value || '';
112
+ // Fix for value change while dispose in process.
113
+ setTimeout(() => {
114
+ if (this._editor && !this.options.model) {
115
+ this._editor.setValue(this._value);
116
+ }
117
+ });
118
+ }
119
+ registerOnChange(fn) {
120
+ this.propagateChange = fn;
121
+ }
122
+ registerOnTouched(fn) {
123
+ this.onTouched = fn;
124
+ }
125
+ initMonaco(options) {
126
+ const hasModel = !!options.model;
127
+ if (hasModel) {
128
+ const model = monaco.editor.getModel(options.model.uri || '');
129
+ if (model) {
130
+ options.model = model;
131
+ options.model.setValue(this._value);
132
+ }
133
+ else {
134
+ options.model = monaco.editor.createModel(options.model.value, options.model.language, options.model.uri);
135
+ }
136
+ }
137
+ this._editor = monaco.editor.create(this._editorContainer.nativeElement, options);
138
+ if (!hasModel) {
139
+ this._editor.setValue(this._value);
140
+ }
141
+ this._editor.onDidChangeModelContent((e) => {
142
+ const value = this._editor.getValue();
143
+ // value is not propagated to parent when executing outside zone.
144
+ this.zone.run(() => {
145
+ this.propagateChange(value);
146
+ this._value = value;
147
+ });
148
+ });
149
+ this._editor.onDidBlurEditorWidget(() => {
150
+ this.onTouched();
151
+ });
152
+ // refresh layout on resize event.
153
+ if (this._windowResizeSubscription) {
154
+ this._windowResizeSubscription.unsubscribe();
155
+ }
156
+ this._windowResizeSubscription = fromEvent(window, 'resize').subscribe(() => this._editor.layout());
157
+ this.onInit.emit(this._editor);
158
+ }
159
+ }
160
+ EditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditorComponent, deps: [{ token: i0.NgZone }, { token: NGX_MONACO_EDITOR_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
161
+ EditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: EditorComponent, selector: "ngx-monaco-editor", inputs: { options: "options", model: "model" }, providers: [{
162
+ provide: NG_VALUE_ACCESSOR,
163
+ useExisting: forwardRef(() => EditorComponent),
164
+ multi: true
165
+ }], usesInheritance: true, ngImport: i0, template: '<div class="editor-container" #editorContainer></div>', isInline: true, styles: ["\n :host {\n display: block;\n height: 200px;\n }\n\n .editor-container {\n width: 100%;\n height: 98%;\n }\n "] });
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditorComponent, decorators: [{
167
+ type: Component,
168
+ args: [{
169
+ selector: 'ngx-monaco-editor',
170
+ template: '<div class="editor-container" #editorContainer></div>',
171
+ styles: [`
172
+ :host {
173
+ display: block;
174
+ height: 200px;
175
+ }
176
+
177
+ .editor-container {
178
+ width: 100%;
179
+ height: 98%;
180
+ }
181
+ `],
182
+ providers: [{
183
+ provide: NG_VALUE_ACCESSOR,
184
+ useExisting: forwardRef(() => EditorComponent),
185
+ multi: true
186
+ }]
187
+ }]
188
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: undefined, decorators: [{
189
+ type: Inject,
190
+ args: [NGX_MONACO_EDITOR_CONFIG]
191
+ }] }]; }, propDecorators: { options: [{
192
+ type: Input,
193
+ args: ['options']
194
+ }], model: [{
195
+ type: Input,
196
+ args: ['model']
197
+ }] } });
8
198
 
9
199
  class FsTextEditorComponent {
10
200
  constructor(_element, _document) {
@@ -115,13 +305,13 @@ class FsTextEditorComponent {
115
305
  }, true);
116
306
  }
117
307
  }
118
- FsTextEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsTextEditorComponent, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
119
- FsTextEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsTextEditorComponent, selector: "fs-text-editor", inputs: { config: "config", scrollable: "scrollable" }, outputs: { init: "init", blur: "blur" }, providers: [{
308
+ FsTextEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsTextEditorComponent, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
309
+ FsTextEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FsTextEditorComponent, selector: "fs-text-editor", inputs: { config: "config", scrollable: "scrollable" }, outputs: { init: "init", blur: "blur" }, providers: [{
120
310
  provide: NG_VALUE_ACCESSOR,
121
311
  useExisting: forwardRef(() => FsTextEditorComponent),
122
312
  multi: true
123
- }], viewQueries: [{ propertyName: "_editorContainer", first: true, predicate: EditorComponent, descendants: true, static: true }], ngImport: i0, template: "<ngx-monaco-editor\n [ngModel]=\"value\"\n (ngModelChange)=\"changed($event)\"\n [options]=\"config\"\n (onInit)=\"onEditorInit($event)\">\n</ngx-monaco-editor>\n", styles: [":host ngx-monaco-editor{height:100%!important}:host ::ng-deep .decorationsOverviewRuler{display:none}:host ::ng-deep .margin,:host ::ng-deep .monaco-editor-background{top:0px!important}\n"], components: [{ type: i1.EditorComponent, selector: "ngx-monaco-editor", inputs: ["options", "model"] }], directives: [{ type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsTextEditorComponent, decorators: [{
313
+ }], viewQueries: [{ propertyName: "_editorContainer", first: true, predicate: EditorComponent, descendants: true, static: true }], ngImport: i0, template: "<ngx-monaco-editor\n [ngModel]=\"value\"\n (ngModelChange)=\"changed($event)\"\n [options]=\"config\"\n (onInit)=\"onEditorInit($event)\">\n</ngx-monaco-editor>\n", styles: [":host ngx-monaco-editor{height:100%!important}:host ::ng-deep .decorationsOverviewRuler{display:none}:host ::ng-deep .margin,:host ::ng-deep .monaco-editor-background{top:0px!important}\n"], components: [{ type: EditorComponent, selector: "ngx-monaco-editor", inputs: ["options", "model"] }], directives: [{ type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsTextEditorComponent, decorators: [{
125
315
  type: Component,
126
316
  args: [{
127
317
  selector: 'fs-text-editor',
@@ -149,6 +339,126 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
149
339
  args: [EditorComponent, { static: true }]
150
340
  }] } });
151
341
 
342
+ class DiffEditorComponent extends BaseEditor {
343
+ constructor(editorConfig) {
344
+ super(editorConfig);
345
+ this.editorConfig = editorConfig;
346
+ }
347
+ set options(options) {
348
+ this._options = Object.assign({}, this.config.defaultOptions, options);
349
+ if (this._editor) {
350
+ this._editor.dispose();
351
+ this.initMonaco(options);
352
+ }
353
+ }
354
+ get options() {
355
+ return this._options;
356
+ }
357
+ set originalModel(model) {
358
+ this._originalModel = model;
359
+ if (this._editor) {
360
+ this._editor.dispose();
361
+ this.initMonaco(this.options);
362
+ }
363
+ }
364
+ set modifiedModel(model) {
365
+ this._modifiedModel = model;
366
+ if (this._editor) {
367
+ this._editor.dispose();
368
+ this.initMonaco(this.options);
369
+ }
370
+ }
371
+ initMonaco(options) {
372
+ if (!this._originalModel || !this._modifiedModel) {
373
+ throw new Error('originalModel or modifiedModel not found for ngx-monaco-diff-editor');
374
+ }
375
+ this._originalModel.language = this._originalModel.language || options.language;
376
+ this._modifiedModel.language = this._modifiedModel.language || options.language;
377
+ let originalModel = monaco.editor.createModel(this._originalModel.code, this._originalModel.language);
378
+ let modifiedModel = monaco.editor.createModel(this._modifiedModel.code, this._modifiedModel.language);
379
+ this._editorContainer.nativeElement.innerHTML = '';
380
+ const theme = options.theme;
381
+ this._editor = monaco.editor.createDiffEditor(this._editorContainer.nativeElement, options);
382
+ options.theme = theme;
383
+ this._editor.setModel({
384
+ original: originalModel,
385
+ modified: modifiedModel
386
+ });
387
+ // refresh layout on resize event.
388
+ if (this._windowResizeSubscription) {
389
+ this._windowResizeSubscription.unsubscribe();
390
+ }
391
+ this._windowResizeSubscription = fromEvent(window, 'resize').subscribe(() => this._editor.layout());
392
+ this.onInit.emit(this._editor);
393
+ }
394
+ }
395
+ DiffEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiffEditorComponent, deps: [{ token: NGX_MONACO_EDITOR_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
396
+ DiffEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DiffEditorComponent, selector: "ngx-monaco-diff-editor", inputs: { options: "options", originalModel: "originalModel", modifiedModel: "modifiedModel" }, usesInheritance: true, ngImport: i0, template: '<div class="editor-container" #editorContainer></div>', isInline: true, styles: ["\n :host {\n display: block;\n height: 200px;\n }\n\n .editor-container {\n width: 100%;\n height: 98%;\n }\n "] });
397
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiffEditorComponent, decorators: [{
398
+ type: Component,
399
+ args: [{
400
+ selector: 'ngx-monaco-diff-editor',
401
+ template: '<div class="editor-container" #editorContainer></div>',
402
+ styles: [`
403
+ :host {
404
+ display: block;
405
+ height: 200px;
406
+ }
407
+
408
+ .editor-container {
409
+ width: 100%;
410
+ height: 98%;
411
+ }
412
+ `]
413
+ }]
414
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
415
+ type: Inject,
416
+ args: [NGX_MONACO_EDITOR_CONFIG]
417
+ }] }]; }, propDecorators: { options: [{
418
+ type: Input,
419
+ args: ['options']
420
+ }], originalModel: [{
421
+ type: Input,
422
+ args: ['originalModel']
423
+ }], modifiedModel: [{
424
+ type: Input,
425
+ args: ['modifiedModel']
426
+ }] } });
427
+
428
+ class MonacoEditorModule {
429
+ static forRoot(config = {}) {
430
+ return {
431
+ ngModule: MonacoEditorModule,
432
+ providers: [
433
+ { provide: NGX_MONACO_EDITOR_CONFIG, useValue: config }
434
+ ]
435
+ };
436
+ }
437
+ }
438
+ MonacoEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
439
+ MonacoEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoEditorModule, declarations: [EditorComponent,
440
+ DiffEditorComponent], imports: [CommonModule], exports: [EditorComponent,
441
+ DiffEditorComponent] });
442
+ MonacoEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoEditorModule, imports: [[
443
+ CommonModule
444
+ ]] });
445
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoEditorModule, decorators: [{
446
+ type: NgModule,
447
+ args: [{
448
+ imports: [
449
+ CommonModule
450
+ ],
451
+ declarations: [
452
+ EditorComponent,
453
+ DiffEditorComponent
454
+ ],
455
+ exports: [
456
+ EditorComponent,
457
+ DiffEditorComponent
458
+ ]
459
+ }]
460
+ }] });
461
+
152
462
  class FsTextEditorModule {
153
463
  static forRoot(config) {
154
464
  return {
@@ -159,16 +469,16 @@ class FsTextEditorModule {
159
469
  };
160
470
  }
161
471
  }
162
- FsTextEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsTextEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
163
- FsTextEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsTextEditorModule, declarations: [FsTextEditorComponent], imports: [CommonModule,
472
+ FsTextEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsTextEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
473
+ FsTextEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsTextEditorModule, declarations: [FsTextEditorComponent], imports: [CommonModule,
164
474
  MonacoEditorModule,
165
475
  FormsModule], exports: [FsTextEditorComponent] });
166
- FsTextEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsTextEditorModule, imports: [[
476
+ FsTextEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsTextEditorModule, imports: [[
167
477
  CommonModule,
168
478
  MonacoEditorModule,
169
479
  FormsModule,
170
480
  ]] });
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsTextEditorModule, decorators: [{
481
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsTextEditorModule, decorators: [{
172
482
  type: NgModule,
173
483
  args: [{
174
484
  imports: [