@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.
- package/app/components/text-editor/text-editor.component.d.ts +2 -2
- package/app/fs-text-editor.module.d.ts +2 -2
- package/app/modules/ngx-monaco-editor/base-editor.d.ts +18 -0
- package/app/modules/ngx-monaco-editor/config.d.ts +9 -0
- package/app/modules/ngx-monaco-editor/diff-editor.component.d.ts +17 -0
- package/app/modules/ngx-monaco-editor/editor.component.d.ts +23 -0
- package/app/modules/ngx-monaco-editor/editor.module.d.ts +12 -0
- package/app/modules/ngx-monaco-editor/types.d.ts +9 -0
- package/bundles/firestitch-text-editor.umd.js +1020 -225
- package/bundles/firestitch-text-editor.umd.js.map +1 -1
- package/esm2015/app/components/text-editor/text-editor.component.js +8 -8
- package/esm2015/app/fs-text-editor.module.js +6 -6
- package/esm2015/app/modules/ngx-monaco-editor/base-editor.js +77 -0
- package/esm2015/app/modules/ngx-monaco-editor/config.js +3 -0
- package/esm2015/app/modules/ngx-monaco-editor/diff-editor.component.js +91 -0
- package/esm2015/app/modules/ngx-monaco-editor/editor.component.js +121 -0
- package/esm2015/app/modules/ngx-monaco-editor/editor.module.js +40 -0
- package/esm2015/app/modules/ngx-monaco-editor/types.js +2 -0
- package/fesm2015/firestitch-text-editor.js +321 -11
- package/fesm2015/firestitch-text-editor.js.map +1 -1
- package/package.json +2 -8
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9uZ3gtbW9uYWNvLWVkaXRvci9lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUF5QixNQUFNLFVBQVUsQ0FBQzs7QUF5QjNFLE1BQU0sT0FBTyxlQUFnQixTQUFRLFVBQVU7SUE0QjdDLFlBQW9CLElBQVksRUFBNEMsWUFBbUM7UUFDN0csS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBREYsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUE0QyxpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUEzQnZHLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFFNUIsb0JBQWUsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ2pDLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUEwQnJCLENBQUM7SUF4QkQsSUFDSSxPQUFPLENBQUMsT0FBWTtRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUNJLEtBQUssQ0FBQyxLQUFxQjtRQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBTUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzFCLGlEQUFpRDtRQUNqRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNwQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVTLFVBQVUsQ0FBQyxPQUFZO1FBRS9CLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRWpDLElBQUksUUFBUSxFQUFFO1lBQ1osTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7WUFDOUQsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQ3RCLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNyQztpQkFBTTtnQkFDTCxPQUFPLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDM0c7U0FDRjtRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVsRixJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQzlDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFdEMsaUVBQWlFO1lBQ2pFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDakIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUVILGtDQUFrQztRQUNsQyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtZQUNsQyxJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDOUM7UUFDRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3BHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDOzs2R0ExRlUsZUFBZSx3Q0E0QmdCLHdCQUF3QjtpR0E1QnZELGVBQWUsNEZBTmYsQ0FBQztZQUNWLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDOUMsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLGlEQWhCUSx1REFBdUQ7NEZBa0J0RCxlQUFlO2tCQXBCM0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUUsdURBQXVEO29CQUNqRSxNQUFNLEVBQUUsQ0FBQzs7Ozs7Ozs7OztHQVVSLENBQUM7b0JBQ0YsU0FBUyxFQUFFLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7NEJBQzlDLEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7aUJBQ0g7OzBCQTZCb0MsTUFBTTsyQkFBQyx3QkFBd0I7NENBckI5RCxPQUFPO3NCQURWLEtBQUs7dUJBQUMsU0FBUztnQkFjWixLQUFLO3NCQURSLEtBQUs7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbnB1dCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQmFzZUVkaXRvciB9IGZyb20gJy4vYmFzZS1lZGl0b3InO1xuaW1wb3J0IHsgTkdYX01PTkFDT19FRElUT1JfQ09ORklHLCBOZ3hNb25hY29FZGl0b3JDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBOZ3hFZGl0b3JNb2RlbCB9IGZyb20gJy4vdHlwZXMnO1xuXG5kZWNsYXJlIHZhciBtb25hY286IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LW1vbmFjby1lZGl0b3InLFxuICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9XCJlZGl0b3ItY29udGFpbmVyXCIgI2VkaXRvckNvbnRhaW5lcj48L2Rpdj4nLFxuICBzdHlsZXM6IFtgXG4gICAgICA6aG9zdCB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgaGVpZ2h0OiAyMDBweDtcbiAgICAgIH1cblxuICAgICAgLmVkaXRvci1jb250YWluZXIge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGhlaWdodDogOTglO1xuICAgICAgfVxuICBgXSxcbiAgcHJvdmlkZXJzOiBbe1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+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 {
|
|
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
|
|
7
|
-
|
|
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.
|
|
119
|
-
FsTextEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
|
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:
|
|
124
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
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.
|
|
163
|
-
FsTextEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.
|
|
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.
|
|
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.
|
|
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: [
|