@firestitch/text-editor 18.0.2 → 18.0.4
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 +7 -6
- package/app/fs-text-editor.module.d.ts +5 -5
- package/app/interfaces/config.interface.d.ts +3 -1
- package/app/modules/ngx-monaco-editor/base-editor.d.ts +2 -4
- package/app/modules/ngx-monaco-editor/config.d.ts +1 -1
- package/app/modules/ngx-monaco-editor/diff-editor.component.d.ts +3 -6
- package/app/modules/ngx-monaco-editor/editor.component.d.ts +1 -4
- package/app/modules/ngx-monaco-editor/editor.module.d.ts +4 -4
- package/esm2022/app/components/text-editor/text-editor.component.mjs +158 -0
- package/esm2022/app/fs-text-editor.module.mjs +40 -0
- package/{esm2020 → esm2022}/app/interfaces/config.interface.mjs +1 -1
- package/esm2022/app/modules/ngx-monaco-editor/base-editor.mjs +75 -0
- package/esm2022/app/modules/ngx-monaco-editor/config.mjs +3 -0
- package/esm2022/app/modules/ngx-monaco-editor/diff-editor.component.mjs +71 -0
- package/esm2022/app/modules/ngx-monaco-editor/editor.component.mjs +99 -0
- package/esm2022/app/modules/ngx-monaco-editor/editor.module.mjs +37 -0
- package/{fesm2020 → fesm2022}/firestitch-text-editor.mjs +90 -126
- package/fesm2022/firestitch-text-editor.mjs.map +1 -0
- package/package.json +8 -14
- package/esm2020/app/components/text-editor/text-editor.component.mjs +0 -150
- package/esm2020/app/fs-text-editor.module.mjs +0 -42
- package/esm2020/app/modules/ngx-monaco-editor/base-editor.mjs +0 -77
- package/esm2020/app/modules/ngx-monaco-editor/config.mjs +0 -3
- package/esm2020/app/modules/ngx-monaco-editor/diff-editor.component.mjs +0 -91
- package/esm2020/app/modules/ngx-monaco-editor/editor.component.mjs +0 -118
- package/esm2020/app/modules/ngx-monaco-editor/editor.module.mjs +0 -40
- package/fesm2015/firestitch-text-editor.mjs +0 -505
- package/fesm2015/firestitch-text-editor.mjs.map +0 -1
- package/fesm2020/firestitch-text-editor.mjs.map +0 -1
- /package/{esm2020 → esm2022}/app/modules/ngx-monaco-editor/types.mjs +0 -0
- /package/{esm2020 → esm2022}/firestitch-text-editor.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/{firestitch-text-editor.d.ts → index.d.ts} +0 -0
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { EventEmitter, OnInit } from '@angular/core';
|
|
1
|
+
import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
|
|
2
2
|
import { ControlValueAccessor } from '@angular/forms';
|
|
3
3
|
import { FsTextEditorConfig } from '../../interfaces/config.interface';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class FsTextEditorComponent implements OnInit, ControlValueAccessor {
|
|
6
|
-
private _document;
|
|
5
|
+
export declare class FsTextEditorComponent implements OnInit, ControlValueAccessor, OnDestroy {
|
|
7
6
|
readonly LINE_HEIGHT = 18;
|
|
8
7
|
config: FsTextEditorConfig;
|
|
9
8
|
scrollable: boolean;
|
|
@@ -14,7 +13,9 @@ export declare class FsTextEditorComponent implements OnInit, ControlValueAccess
|
|
|
14
13
|
private _editorRef;
|
|
15
14
|
private _value;
|
|
16
15
|
private _window;
|
|
17
|
-
|
|
16
|
+
private _document;
|
|
17
|
+
private _elementRef;
|
|
18
|
+
constructor();
|
|
18
19
|
get monaco(): any;
|
|
19
20
|
ngOnInit(): void;
|
|
20
21
|
get value(): string;
|
|
@@ -24,10 +25,10 @@ export declare class FsTextEditorComponent implements OnInit, ControlValueAccess
|
|
|
24
25
|
updateLayout(): void;
|
|
25
26
|
registerOnChange(fn: any): void;
|
|
26
27
|
registerOnTouched(fn: any): void;
|
|
28
|
+
ngOnDestroy(): void;
|
|
27
29
|
private _initEditor;
|
|
28
30
|
private _updateEditorHeight;
|
|
29
31
|
private _disableScroll;
|
|
30
|
-
private _cleanupAMDLoader;
|
|
31
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsTextEditorComponent, never>;
|
|
32
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsTextEditorComponent, "fs-text-editor", never, { "config": "config"; "scrollable": "scrollable"; }, { "ready": "ready"; "blur": "blur"; }, never, never>;
|
|
33
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsTextEditorComponent, "fs-text-editor", never, { "config": { "alias": "config"; "required": false; }; "scrollable": { "alias": "scrollable"; "required": false; }; }, { "ready": "ready"; "blur": "blur"; }, never, never, true, never>;
|
|
33
34
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { ModuleWithProviders } from '@angular/core';
|
|
2
2
|
import { NgxMonacoEditorConfig } from './modules/ngx-monaco-editor/config';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "
|
|
5
|
-
import * as i2 from "
|
|
6
|
-
import * as i3 from "
|
|
7
|
-
import * as i4 from "
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "./modules/ngx-monaco-editor/editor.module";
|
|
6
|
+
import * as i3 from "@angular/forms";
|
|
7
|
+
import * as i4 from "./components/text-editor/text-editor.component";
|
|
8
8
|
export declare class FsTextEditorModule {
|
|
9
9
|
static forRoot(config?: NgxMonacoEditorConfig): ModuleWithProviders<FsTextEditorModule>;
|
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsTextEditorModule, never>;
|
|
11
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<FsTextEditorModule, [typeof i1.
|
|
11
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<FsTextEditorModule, never, [typeof i1.CommonModule, typeof i2.MonacoEditorModule, typeof i3.FormsModule, typeof i4.FsTextEditorComponent], [typeof i4.FsTextEditorComponent]>;
|
|
12
12
|
static ɵinj: i0.ɵɵInjectorDeclaration<FsTextEditorModule>;
|
|
13
13
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { editor } from 'monaco-editor';
|
|
2
2
|
export interface FsTextEditorConfig extends editor.IStandaloneEditorConstructionOptions {
|
|
3
3
|
height?: any;
|
|
4
|
-
ready?: (editor: editor.ICodeEditor) => void;
|
|
4
|
+
ready?: (editor: editor.ICodeEditor, monaco: any) => void;
|
|
5
|
+
destroy?: (editor: editor.ICodeEditor, monaco: any) => void;
|
|
5
6
|
blur?: () => void;
|
|
6
7
|
focus?: () => void;
|
|
8
|
+
minHeight?: number;
|
|
7
9
|
}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import { AfterViewInit, ElementRef, EventEmitter, OnDestroy } from '@angular/core';
|
|
2
2
|
import { Subscription } from 'rxjs';
|
|
3
3
|
import { editor } from 'monaco-editor';
|
|
4
|
-
import { NgxMonacoEditorConfig } from './config';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
export declare abstract class BaseEditor implements AfterViewInit, OnDestroy {
|
|
7
|
-
protected config: NgxMonacoEditorConfig;
|
|
8
6
|
_editorContainer: ElementRef;
|
|
9
7
|
onInit: EventEmitter<any>;
|
|
10
8
|
protected _editor: editor.ICodeEditor;
|
|
11
9
|
protected _options: any;
|
|
12
10
|
protected _windowResizeSubscription: Subscription;
|
|
13
|
-
|
|
11
|
+
config: import("./config").NgxMonacoEditorConfig;
|
|
14
12
|
ngAfterViewInit(): void;
|
|
15
13
|
ngOnDestroy(): void;
|
|
16
14
|
protected abstract initMonaco(options: any): void;
|
|
17
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<BaseEditor, never>;
|
|
18
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<BaseEditor, "ng-component", never, {}, { "onInit": "onInit"; }, never, never>;
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BaseEditor, "ng-component", never, {}, { "onInit": "onInit"; }, never, never, false, never>;
|
|
19
17
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export declare const NGX_MONACO_EDITOR_CONFIG: InjectionToken<
|
|
2
|
+
export declare const NGX_MONACO_EDITOR_CONFIG: InjectionToken<NgxMonacoEditorConfig>;
|
|
3
3
|
export interface NgxMonacoEditorConfig {
|
|
4
4
|
baseUrl?: string;
|
|
5
5
|
defaultOptions?: {
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import { BaseEditor } from './base-editor';
|
|
2
|
-
import { NgxMonacoEditorConfig } from './config';
|
|
3
2
|
import { DiffEditorModel } from './types';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export declare class DiffEditorComponent extends BaseEditor {
|
|
6
|
-
private
|
|
7
|
-
|
|
8
|
-
_modifiedModel: DiffEditorModel;
|
|
5
|
+
private _originalModel;
|
|
6
|
+
private _modifiedModel;
|
|
9
7
|
set options(options: any);
|
|
10
8
|
get options(): any;
|
|
11
9
|
set originalModel(model: DiffEditorModel);
|
|
12
10
|
set modifiedModel(model: DiffEditorModel);
|
|
13
|
-
constructor(editorConfig: NgxMonacoEditorConfig);
|
|
14
11
|
protected initMonaco(options: any): void;
|
|
15
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<DiffEditorComponent, never>;
|
|
16
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DiffEditorComponent, "ngx-monaco-diff-editor", never, { "options": "options"; "originalModel": "originalModel"; "modifiedModel": "modifiedModel"; }, {}, never, never>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DiffEditorComponent, "ngx-monaco-diff-editor", never, { "options": { "alias": "options"; "required": false; }; "originalModel": { "alias": "originalModel"; "required": false; }; "modifiedModel": { "alias": "modifiedModel"; "required": false; }; }, {}, never, never, true, never>;
|
|
17
14
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { NgZone } from '@angular/core';
|
|
2
1
|
import { ControlValueAccessor } from '@angular/forms';
|
|
3
2
|
import { BaseEditor } from './base-editor';
|
|
4
|
-
import { NgxMonacoEditorConfig } from './config';
|
|
5
3
|
import { NgxEditorModel } from './types';
|
|
6
4
|
import * as i0 from "@angular/core";
|
|
7
5
|
export declare class EditorComponent extends BaseEditor implements ControlValueAccessor {
|
|
@@ -13,11 +11,10 @@ export declare class EditorComponent extends BaseEditor implements ControlValueA
|
|
|
13
11
|
set options(options: any);
|
|
14
12
|
get options(): any;
|
|
15
13
|
set model(model: NgxEditorModel);
|
|
16
|
-
constructor(zone: NgZone, editorConfig: NgxMonacoEditorConfig);
|
|
17
14
|
writeValue(value: any): void;
|
|
18
15
|
registerOnChange(fn: any): void;
|
|
19
16
|
registerOnTouched(fn: any): void;
|
|
20
17
|
protected initMonaco(options: any): void;
|
|
21
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<EditorComponent, never>;
|
|
22
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<EditorComponent, "ngx-monaco-editor", never, { "options": "options"; "model": "model"; }, {}, never, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<EditorComponent, "ngx-monaco-editor", never, { "options": { "alias": "options"; "required": false; }; "model": { "alias": "model"; "required": false; }; }, {}, never, never, true, never>;
|
|
23
20
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ModuleWithProviders } from '@angular/core';
|
|
2
2
|
import { NgxMonacoEditorConfig } from './config';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "
|
|
5
|
-
import * as i2 from "./
|
|
6
|
-
import * as i3 from "
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "./editor.component";
|
|
6
|
+
import * as i3 from "./diff-editor.component";
|
|
7
7
|
export declare class MonacoEditorModule {
|
|
8
8
|
static forRoot(config?: NgxMonacoEditorConfig): ModuleWithProviders<MonacoEditorModule>;
|
|
9
9
|
static ɵfac: i0.ɵɵFactoryDeclaration<MonacoEditorModule, never>;
|
|
10
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<MonacoEditorModule, [typeof i1.
|
|
10
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<MonacoEditorModule, never, [typeof i1.CommonModule, typeof i2.EditorComponent, typeof i3.DiffEditorComponent], [typeof i2.EditorComponent, typeof i3.DiffEditorComponent]>;
|
|
11
11
|
static ɵinj: i0.ɵɵInjectorDeclaration<MonacoEditorModule>;
|
|
12
12
|
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Component, ElementRef, EventEmitter, Input, Output, forwardRef, inject } from '@angular/core';
|
|
3
|
+
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import { EditorComponent } from '../../modules/ngx-monaco-editor/editor.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/forms";
|
|
7
|
+
export class FsTextEditorComponent {
|
|
8
|
+
LINE_HEIGHT = 18;
|
|
9
|
+
config = {};
|
|
10
|
+
scrollable = false;
|
|
11
|
+
ready = new EventEmitter();
|
|
12
|
+
blur = new EventEmitter();
|
|
13
|
+
onChange;
|
|
14
|
+
onTouched;
|
|
15
|
+
_editorRef;
|
|
16
|
+
_value = '';
|
|
17
|
+
_window;
|
|
18
|
+
_document = inject(DOCUMENT);
|
|
19
|
+
_elementRef = inject(ElementRef);
|
|
20
|
+
constructor() {
|
|
21
|
+
this._window = this._document.defaultView;
|
|
22
|
+
}
|
|
23
|
+
get monaco() {
|
|
24
|
+
return this._window.monaco;
|
|
25
|
+
}
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
if (this.config) {
|
|
28
|
+
this.config = {
|
|
29
|
+
minimap: {
|
|
30
|
+
enabled: false,
|
|
31
|
+
},
|
|
32
|
+
minHeight: this.config.minHeight ?? 150,
|
|
33
|
+
theme: 'vs-dark',
|
|
34
|
+
automaticLayout: !!this.config.height,
|
|
35
|
+
scrollBeyondLastLine: false,
|
|
36
|
+
scrollbar: {
|
|
37
|
+
vertical: this.config.height ? 'auto' : 'hidden',
|
|
38
|
+
},
|
|
39
|
+
hideCursorInOverviewRuler: true,
|
|
40
|
+
...this.config,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (this.config.minHeight) {
|
|
44
|
+
this._elementRef.nativeElement.style
|
|
45
|
+
.setProperty('--min-height', `${this.config.minHeight}px`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
get value() {
|
|
49
|
+
return this._value;
|
|
50
|
+
}
|
|
51
|
+
onEditorInit(event) {
|
|
52
|
+
// Timeout allows the content to fully load to and calculate height
|
|
53
|
+
setTimeout(() => {
|
|
54
|
+
this._editorRef = event;
|
|
55
|
+
this._initEditor();
|
|
56
|
+
this.ready.next(event);
|
|
57
|
+
if (!this.scrollable && !this.config.height) {
|
|
58
|
+
this._disableScroll();
|
|
59
|
+
}
|
|
60
|
+
if (this.config.ready) {
|
|
61
|
+
this.config.ready(this._editorRef, this.monaco);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
// moved forward for cases when several editors should be initialized on the same page
|
|
65
|
+
// setTimeout(() => {
|
|
66
|
+
// this._cleanupAMDLoader();
|
|
67
|
+
// }, 100);
|
|
68
|
+
}
|
|
69
|
+
writeValue(value) {
|
|
70
|
+
this._value = value || '';
|
|
71
|
+
}
|
|
72
|
+
changed(e) {
|
|
73
|
+
if (this._value !== e) {
|
|
74
|
+
this._value = e;
|
|
75
|
+
this.onChange(e);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
updateLayout() {
|
|
79
|
+
this._editorRef.layout();
|
|
80
|
+
}
|
|
81
|
+
registerOnChange(fn) {
|
|
82
|
+
this.onChange = fn;
|
|
83
|
+
}
|
|
84
|
+
registerOnTouched(fn) {
|
|
85
|
+
this.onTouched = fn;
|
|
86
|
+
}
|
|
87
|
+
ngOnDestroy() {
|
|
88
|
+
if (this.config.destroy) {
|
|
89
|
+
this.config.destroy(this._editorRef, this.monaco);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
_initEditor() {
|
|
93
|
+
if (this._editorRef && !this.config.height) {
|
|
94
|
+
this._updateEditorHeight();
|
|
95
|
+
this._editorRef.onDidChangeModelContent(() => {
|
|
96
|
+
this._updateEditorHeight();
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
this._editorRef.onDidBlurEditorText(() => {
|
|
100
|
+
this.blur.next(null);
|
|
101
|
+
if (this.config.blur) {
|
|
102
|
+
this.config.blur();
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
this._editorRef.onDidFocusEditorText(() => {
|
|
106
|
+
if (this.config.focus) {
|
|
107
|
+
this.config.focus();
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
_updateEditorHeight() {
|
|
112
|
+
const editorDomNode = this._editorRef.getDomNode();
|
|
113
|
+
if (!editorDomNode) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const container = editorDomNode.getElementsByClassName('view-lines')[0];
|
|
117
|
+
const lineHeight = container.firstChild
|
|
118
|
+
? container.firstChild.offsetHeight
|
|
119
|
+
: this.LINE_HEIGHT;
|
|
120
|
+
const editorModel = this._editorRef.getModel();
|
|
121
|
+
if (!editorModel) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const nextHeight = this._editorRef.getModel().getLineCount() * lineHeight;
|
|
125
|
+
// set the height and redo layout
|
|
126
|
+
editorDomNode.style.height = `${nextHeight}px`;
|
|
127
|
+
this.updateLayout();
|
|
128
|
+
}
|
|
129
|
+
_disableScroll() {
|
|
130
|
+
const node = this._editorRef.getDomNode();
|
|
131
|
+
node.addEventListener('wheel', (e) => {
|
|
132
|
+
e.stopPropagation();
|
|
133
|
+
}, true);
|
|
134
|
+
}
|
|
135
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsTextEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
136
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsTextEditorComponent, isStandalone: true, selector: "fs-text-editor", inputs: { config: "config", scrollable: "scrollable" }, outputs: { ready: "ready", blur: "blur" }, providers: [{
|
|
137
|
+
provide: NG_VALUE_ACCESSOR,
|
|
138
|
+
useExisting: forwardRef(() => FsTextEditorComponent),
|
|
139
|
+
multi: true,
|
|
140
|
+
}], ngImport: i0, template: "<ngx-monaco-editor\n [ngModel]=\"value\"\n (ngModelChange)=\"changed($event)\"\n [options]=\"config\"\n (onInit)=\"onEditorInit($event)\">\n</ngx-monaco-editor>", styles: ["ngx-monaco-editor{display:block}ngx-monaco-editor ::ng-deep .monaco-editor{min-height:var(--min-height)}\n"], dependencies: [{ kind: "component", type: EditorComponent, selector: "ngx-monaco-editor", inputs: ["options", "model"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
141
|
+
}
|
|
142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsTextEditorComponent, decorators: [{
|
|
143
|
+
type: Component,
|
|
144
|
+
args: [{ selector: 'fs-text-editor', providers: [{
|
|
145
|
+
provide: NG_VALUE_ACCESSOR,
|
|
146
|
+
useExisting: forwardRef(() => FsTextEditorComponent),
|
|
147
|
+
multi: true,
|
|
148
|
+
}], standalone: true, imports: [EditorComponent, FormsModule], template: "<ngx-monaco-editor\n [ngModel]=\"value\"\n (ngModelChange)=\"changed($event)\"\n [options]=\"config\"\n (onInit)=\"onEditorInit($event)\">\n</ngx-monaco-editor>", styles: ["ngx-monaco-editor{display:block}ngx-monaco-editor ::ng-deep .monaco-editor{min-height:var(--min-height)}\n"] }]
|
|
149
|
+
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], scrollable: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], ready: [{
|
|
154
|
+
type: Output
|
|
155
|
+
}], blur: [{
|
|
156
|
+
type: Output
|
|
157
|
+
}] } });
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUt0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0RBQWtELENBQUM7OztBQWVuRixNQUFNLE9BQU8scUJBQXFCO0lBRWhCLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFFakIsTUFBTSxHQUF1QixFQUFFLENBQUM7SUFDaEMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUVsQixLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMzQixJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVwQyxRQUFRLENBQW1CO0lBQzNCLFNBQVMsQ0FBYTtJQUVyQixVQUFVLENBQXFCO0lBQy9CLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDWixPQUFPLENBQU07SUFDYixTQUFTLEdBQUcsTUFBTSxDQUFXLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFekM7UUFDRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO0lB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QUFFLElBQUk7eUJBQ1osQ0FBQyxjQUNVLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUM7d0RBTXZCLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFFVyxLQUFLO3NCQUFyQixNQUFNO2dCQUNVLElBQUk7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIGZvcndhcmRSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgZWRpdG9yIH0gZnJvbSAnbW9uYWNvLWVkaXRvcic7XG5cbmltcG9ydCB7IEZzVGV4dEVkaXRvckNvbmZpZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2R1bGVzL25neC1tb25hY28tZWRpdG9yL2VkaXRvci5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLXRleHQtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbe1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZzVGV4dEVkaXRvckNvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWUsXG4gIH1dLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRWRpdG9yQ29tcG9uZW50LCBGb3Jtc01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEZzVGV4dEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IExJTkVfSEVJR0hUID0gMTg7XG5cbiAgQElucHV0KCkgcHVibGljIGNvbmZpZzogRnNUZXh0RWRpdG9yQ29uZmlnID0ge307XG4gIEBJbnB1dCgpIHB1YmxpYyBzY3JvbGxhYmxlID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBibHVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBvbkNoYW5nZTogKF86IGFueSkgPT4gdm9pZDtcbiAgcHVibGljIG9uVG91Y2hlZDogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIF9lZGl0b3JSZWY6IGVkaXRvci5JQ29kZUVkaXRvcjtcbiAgcHJpdmF0ZSBfdmFsdWUgPSAnJztcbiAgcHJpdmF0ZSBfd2luZG93OiBhbnk7ICBcbiAgcHJpdmF0ZSBfZG9jdW1lbnQgPSBpbmplY3Q8RG9jdW1lbnQ+KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSBfZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl93aW5kb3cgPSB0aGlzLl9kb2N1bWVudC5kZWZhdWx0VmlldztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9uYWNvKCkge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cubW9uYWNvO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAgIG1pbmltYXA6IHtcbiAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgbWluSGVpZ2h0OiB0aGlzLmNvbmZpZy5taW5IZWlnaHQgPz8gMTUwLFxuICAgICAgICB0aGVtZTogJ3ZzLWRhcmsnLFxuICAgICAgICBhdXRvbWF0aWNMYXlvdXQ6ICEhdGhpcy5jb25maWcuaGVpZ2h0LFxuICAgICAgICBzY3JvbGxCZXlvbmRMYXN0TGluZTogZmFsc2UsXG4gICAgICAgIHNjcm9sbGJhcjoge1xuICAgICAgICAgIHZlcnRpY2FsOiB0aGlzLmNvbmZpZy5oZWlnaHQgPyAnYXV0bycgOiAnaGlkZGVuJyxcbiAgICAgICAgfSxcbiAgICAgICAgaGlkZUN1cnNvckluT3ZlcnZpZXdSdWxlcjogdHJ1ZSxcbiAgICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5jb25maWcubWluSGVpZ2h0KSB7XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGVcbiAgICAgICAgLnNldFByb3BlcnR5KCctLW1pbi1oZWlnaHQnLCBgJHt0aGlzLmNvbmZpZy5taW5IZWlnaHR9cHhgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRvckluaXQoZXZlbnQpIHtcbiAgICAvLyBUaW1lb3V0IGFsbG93cyB0aGUgY29udGVudCB0byBmdWxseSBsb2FkIHRvIGFuZCBjYWxjdWxhdGUgaGVpZ2h0XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl9lZGl0b3JSZWYgPSBldmVudDtcbiAgICAgIHRoaXMuX2luaXRFZGl0b3IoKTtcbiAgICAgIHRoaXMucmVhZHkubmV4dChldmVudCk7XG5cbiAgICAgIGlmICghdGhpcy5zY3JvbGxhYmxlICYmICF0aGlzLmNvbmZpZy5oZWlnaHQpIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZVNjcm9sbCgpO1xuICAgICAgfVxuXG4gICAgICBpZih0aGlzLmNvbmZpZy5yZWFkeSkge1xuICAgICAgICB0aGlzLmNvbmZpZy5yZWFkeSh0aGlzLl9lZGl0b3JSZWYsIHRoaXMubW9uYWNvKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIG1vdmVkIGZvcndhcmQgZm9yIGNhc2VzIHdoZW4gc2V2ZXJhbCBlZGl0b3JzIHNob3VsZCBiZSBpbml0aWFsaXplZCBvbiB0aGUgc2FtZSBwYWdlXG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgLy8gICB0aGlzLl9jbGVhbnVwQU1ETG9hZGVyKCk7XG4gICAgLy8gfSwgMTAwKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlIHx8ICcnO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZWQoZSkge1xuICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBlO1xuICAgICAgdGhpcy5vbkNoYW5nZShlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlTGF5b3V0KCk6IHZvaWQge1xuICAgIHRoaXMuX2VkaXRvclJlZi5sYXlvdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYodGhpcy5jb25maWcuZGVzdHJveSkge1xuICAgICAgdGhpcy5jb25maWcuZGVzdHJveSh0aGlzLl9lZGl0b3JSZWYsIHRoaXMubW9uYWNvKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pbml0RWRpdG9yKCkge1xuICAgIGlmICh0aGlzLl9lZGl0b3JSZWYgJiYgIXRoaXMuY29uZmlnLmhlaWdodCkge1xuICAgICAgdGhpcy5fdXBkYXRlRWRpdG9ySGVpZ2h0KCk7XG5cbiAgICAgIHRoaXMuX2VkaXRvclJlZi5vbkRpZENoYW5nZU1vZGVsQ29udGVudCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUVkaXRvckhlaWdodCgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZWRpdG9yUmVmLm9uRGlkQmx1ckVkaXRvclRleHQoKCkgPT4ge1xuICAgICAgdGhpcy5ibHVyLm5leHQobnVsbCk7XG4gICAgICBpZih0aGlzLmNvbmZpZy5ibHVyKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmJsdXIoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuX2VkaXRvclJlZi5vbkRpZEZvY3VzRWRpdG9yVGV4dCgoKSA9PiB7XG4gICAgICBpZih0aGlzLmNvbmZpZy5mb2N1cykge1xuICAgICAgICB0aGlzLmNvbmZpZy5mb2N1cygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRWRpdG9ySGVpZ2h0KCkge1xuICAgIGNvbnN0IGVkaXRvckRvbU5vZGUgPSB0aGlzLl9lZGl0b3JSZWYuZ2V0RG9tTm9kZSgpO1xuXG4gICAgaWYgKCFlZGl0b3JEb21Ob2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gZWRpdG9yRG9tTm9kZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd2aWV3LWxpbmVzJylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgbGluZUhlaWdodCA9IGNvbnRhaW5lci5maXJzdENoaWxkXG4gICAgICA/IChjb250YWluZXIuZmlyc3RDaGlsZCBhcyBIVE1MRWxlbWVudCkub2Zmc2V0SGVpZ2h0XG4gICAgICA6IHRoaXMuTElORV9IRUlHSFQ7XG5cbiAgICBjb25zdCBlZGl0b3JNb2RlbCA9IHRoaXMuX2VkaXRvclJlZi5nZXRNb2RlbCgpO1xuXG4gICAgaWYgKCFlZGl0b3JNb2RlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRIZWlnaHQgPSB0aGlzLl9lZGl0b3JSZWYuZ2V0TW9kZWwoKS5nZXRMaW5lQ291bnQoKSAqIGxpbmVIZWlnaHQ7XG5cbiAgICAvLyBzZXQgdGhlIGhlaWdodCBhbmQgcmVkbyBsYXlvdXRcbiAgICBlZGl0b3JEb21Ob2RlLnN0eWxlLmhlaWdodCA9IGAke25leHRIZWlnaHQgIH1weGA7XG4gICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVTY3JvbGwoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuX2VkaXRvclJlZi5nZXREb21Ob2RlKCk7XG5cbiAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgKGUpID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSwgdHJ1ZSk7XG4gIH1cbn1cbiIsIjxuZ3gtbW9uYWNvLWVkaXRvclxuICBbbmdNb2RlbF09XCJ2YWx1ZVwiXG4gIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZWQoJGV2ZW50KVwiXG4gIFtvcHRpb25zXT1cImNvbmZpZ1wiXG4gIChvbkluaXQpPVwib25FZGl0b3JJbml0KCRldmVudClcIj5cbjwvbmd4LW1vbmFjby1lZGl0b3I+Il19
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { FsTextEditorComponent } from './components/text-editor/text-editor.component';
|
|
5
|
+
import { MonacoEditorModule } from './modules/ngx-monaco-editor/editor.module';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class FsTextEditorModule {
|
|
8
|
+
static forRoot(config) {
|
|
9
|
+
return {
|
|
10
|
+
ngModule: FsTextEditorModule,
|
|
11
|
+
providers: [
|
|
12
|
+
MonacoEditorModule.forRoot(config).providers,
|
|
13
|
+
],
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsTextEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: FsTextEditorModule, imports: [CommonModule,
|
|
18
|
+
MonacoEditorModule,
|
|
19
|
+
FormsModule,
|
|
20
|
+
FsTextEditorComponent], exports: [FsTextEditorComponent] });
|
|
21
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsTextEditorModule, imports: [CommonModule,
|
|
22
|
+
MonacoEditorModule,
|
|
23
|
+
FormsModule,
|
|
24
|
+
FsTextEditorComponent] });
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsTextEditorModule, decorators: [{
|
|
27
|
+
type: NgModule,
|
|
28
|
+
args: [{
|
|
29
|
+
imports: [
|
|
30
|
+
CommonModule,
|
|
31
|
+
MonacoEditorModule,
|
|
32
|
+
FormsModule,
|
|
33
|
+
FsTextEditorComponent,
|
|
34
|
+
],
|
|
35
|
+
exports: [
|
|
36
|
+
FsTextEditorComponent,
|
|
37
|
+
],
|
|
38
|
+
}]
|
|
39
|
+
}] });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtdGV4dC1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9mcy10ZXh0LWVkaXRvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUV2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7QUFjL0UsTUFBTSxPQUFPLGtCQUFrQjtJQUN0QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQThCO1FBQ2xELE9BQU87WUFDTCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLFNBQVMsRUFBRTtnQkFDVCxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUzthQUM3QztTQUNGLENBQUM7SUFDSixDQUFDO3VHQVJVLGtCQUFrQjt3R0FBbEIsa0JBQWtCLFlBVDNCLFlBQVk7WUFDWixrQkFBa0I7WUFDbEIsV0FBVztZQUNYLHFCQUFxQixhQUdyQixxQkFBcUI7d0dBR1osa0JBQWtCLFlBVDNCLFlBQVk7WUFDWixrQkFBa0I7WUFDbEIsV0FBVztZQUNYLHFCQUFxQjs7MkZBTVosa0JBQWtCO2tCQVg5QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsV0FBVzt3QkFDWCxxQkFBcUI7cUJBQ3RCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxxQkFBcUI7cUJBQ3RCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRnNUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hNb25hY29FZGl0b3JDb25maWcgfSBmcm9tICcuL21vZHVsZXMvbmd4LW1vbmFjby1lZGl0b3IvY29uZmlnJztcbmltcG9ydCB7IE1vbmFjb0VkaXRvck1vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy9uZ3gtbW9uYWNvLWVkaXRvci9lZGl0b3IubW9kdWxlJztcblxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1vbmFjb0VkaXRvck1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBGc1RleHRFZGl0b3JDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGc1RleHRFZGl0b3JDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzVGV4dEVkaXRvck1vZHVsZSB7XG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBOZ3hNb25hY29FZGl0b3JDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEZzVGV4dEVkaXRvck1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRnNUZXh0RWRpdG9yTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIE1vbmFjb0VkaXRvck1vZHVsZS5mb3JSb290KGNvbmZpZykucHJvdmlkZXJzLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvaW50ZXJmYWNlcy9jb25maWcuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlZGl0b3IgfSBmcm9tICdtb25hY28tZWRpdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBGc1RleHRFZGl0b3JDb25maWcgZXh0ZW5kcyBlZGl0b3IuSVN0YW5kYWxvbmVFZGl0b3JDb25zdHJ1Y3Rpb25PcHRpb25zIHtcbiAgaGVpZ2h0PzogYW55O1xuICByZWFkeT86IChlZGl0b3I6IGVkaXRvci5JQ29kZUVkaXRvciwgbW9uYWNvOiBhbnkpID0+IHZvaWQ7XG4gIGRlc3Ryb3k/OiAoZWRpdG9yOiBlZGl0b3IuSUNvZGVFZGl0b3IsIG1vbmFjbzogYW55KSA9PiB2b2lkO1xuICBibHVyPzogKCkgPT4gdm9pZDtcbiAgZm9jdXM/OiAoKSA9PiB2b2lkO1xuICBtaW5IZWlnaHQ/OiBudW1iZXI7XG59XG4iXX0=
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Component, ElementRef, EventEmitter, Output, ViewChild, inject } from '@angular/core';
|
|
2
|
+
import { NGX_MONACO_EDITOR_CONFIG } from './config';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
let loadedMonaco = false;
|
|
5
|
+
let loadPromise;
|
|
6
|
+
export class BaseEditor {
|
|
7
|
+
_editorContainer;
|
|
8
|
+
onInit = new EventEmitter();
|
|
9
|
+
_editor;
|
|
10
|
+
_options;
|
|
11
|
+
_windowResizeSubscription;
|
|
12
|
+
config = inject(NGX_MONACO_EDITOR_CONFIG);
|
|
13
|
+
ngAfterViewInit() {
|
|
14
|
+
if (loadedMonaco) {
|
|
15
|
+
loadPromise.then(() => {
|
|
16
|
+
this.initMonaco(this._options);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
loadedMonaco = true;
|
|
21
|
+
loadPromise = new Promise((resolve) => {
|
|
22
|
+
const baseUrl = `${this.config.baseUrl || './assets'}/monaco-editor/min/vs`;
|
|
23
|
+
if (typeof (window.monaco) === 'object') {
|
|
24
|
+
resolve();
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const onGotAmdLoader = () => {
|
|
28
|
+
// Load monaco
|
|
29
|
+
window.require.config({ paths: { vs: `${baseUrl}` } });
|
|
30
|
+
window.require(['vs/editor/editor.main'], () => {
|
|
31
|
+
if (typeof this.config.onMonacoLoad === 'function') {
|
|
32
|
+
this.config.onMonacoLoad();
|
|
33
|
+
}
|
|
34
|
+
this.initMonaco(this._options);
|
|
35
|
+
resolve();
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
// Load AMD loader if necessary
|
|
39
|
+
if (!window.require) {
|
|
40
|
+
const loaderScript = document.createElement('script');
|
|
41
|
+
loaderScript.type = 'text/javascript';
|
|
42
|
+
loaderScript.src = `${baseUrl}/loader.js`;
|
|
43
|
+
loaderScript.addEventListener('load', onGotAmdLoader);
|
|
44
|
+
document.body.appendChild(loaderScript);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
onGotAmdLoader();
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
ngOnDestroy() {
|
|
53
|
+
if (this._windowResizeSubscription) {
|
|
54
|
+
this._windowResizeSubscription.unsubscribe();
|
|
55
|
+
}
|
|
56
|
+
if (this._editor) {
|
|
57
|
+
this._editor.dispose();
|
|
58
|
+
this._editor = undefined;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BaseEditor, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
62
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: BaseEditor, selector: "ng-component", outputs: { onInit: "onInit" }, viewQueries: [{ propertyName: "_editorContainer", first: true, predicate: ["editorContainer"], descendants: true, static: true }], ngImport: i0, template: '', isInline: true });
|
|
63
|
+
}
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BaseEditor, decorators: [{
|
|
65
|
+
type: Component,
|
|
66
|
+
args: [{
|
|
67
|
+
template: '',
|
|
68
|
+
}]
|
|
69
|
+
}], propDecorators: { _editorContainer: [{
|
|
70
|
+
type: ViewChild,
|
|
71
|
+
args: ['editorContainer', { static: true }]
|
|
72
|
+
}], onInit: [{
|
|
73
|
+
type: Output
|
|
74
|
+
}] } });
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvbmd4LW1vbmFjby1lZGl0b3IvYmFzZS1lZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU16SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBRXBELElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztBQUN6QixJQUFJLFdBQTBCLENBQUM7QUFLL0IsTUFBTSxPQUFnQixVQUFVO0lBRXlCLGdCQUFnQixDQUFhO0lBRW5FLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRXhDLE9BQU8sQ0FBcUI7SUFDNUIsUUFBUSxDQUFNO0lBQ2QseUJBQXlCLENBQWU7SUFFM0MsTUFBTSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBRTFDLGVBQWU7UUFDcEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDcEIsV0FBVyxHQUFHLElBQUksT0FBTyxDQUFPLENBQUMsT0FBWSxFQUFFLEVBQUU7Z0JBQy9DLE1BQU0sT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksVUFBWSx1QkFBdUIsQ0FBQztnQkFDOUUsSUFBSSxPQUFPLENBQU8sTUFBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUMvQyxPQUFPLEVBQUUsQ0FBQztvQkFFVixPQUFPO2dCQUNULENBQUM7Z0JBQ0QsTUFBTSxjQUFjLEdBQVEsR0FBRyxFQUFFO29CQUMvQixjQUFjO29CQUNSLE1BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3hELE1BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEdBQUcsRUFBRTt3QkFDcEQsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxLQUFLLFVBQVUsRUFBRSxDQUFDOzRCQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO3dCQUM3QixDQUFDO3dCQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUMvQixPQUFPLEVBQUUsQ0FBQztvQkFDWixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUM7Z0JBRUYsK0JBQStCO2dCQUMvQixJQUFJLENBQU8sTUFBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUMzQixNQUFNLFlBQVksR0FBc0IsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDekUsWUFBWSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztvQkFDdEMsWUFBWSxDQUFDLEdBQUcsR0FBRyxHQUFHLE9BQU8sWUFBWSxDQUFDO29CQUMxQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO29CQUN0RCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDMUMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7dUdBNURtQixVQUFVOzJGQUFWLFVBQVUsc05BRnBCLEVBQUU7OzJGQUVRLFVBQVU7a0JBSC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7OEJBR3dELGdCQUFnQjtzQkFBdEUsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRTdCLE1BQU07c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdDaGlsZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBlZGl0b3IgfSBmcm9tICdtb25hY28tZWRpdG9yJztcblxuaW1wb3J0IHsgTkdYX01PTkFDT19FRElUT1JfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuXG5sZXQgbG9hZGVkTW9uYWNvID0gZmFsc2U7XG5sZXQgbG9hZFByb21pc2U6IFByb21pc2U8dm9pZD47XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VFZGl0b3IgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvckNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBfZWRpdG9yQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgb25Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJvdGVjdGVkIF9lZGl0b3I6IGVkaXRvci5JQ29kZUVkaXRvcjtcbiAgcHJvdGVjdGVkIF9vcHRpb25zOiBhbnk7XG4gIHByb3RlY3RlZCBfd2luZG93UmVzaXplU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHVibGljIGNvbmZpZyA9IGluamVjdChOR1hfTU9OQUNPX0VESVRPUl9DT05GSUcpO1xuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKGxvYWRlZE1vbmFjbykge1xuICAgICAgbG9hZFByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdE1vbmFjbyh0aGlzLl9vcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkZWRNb25hY28gPSB0cnVlO1xuICAgICAgbG9hZFByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2VVcmwgPSBgJHt0aGlzLmNvbmZpZy5iYXNlVXJsIHx8ICcuL2Fzc2V0cycgIH0vbW9uYWNvLWVkaXRvci9taW4vdnNgO1xuICAgICAgICBpZiAodHlwZW9mICgoPGFueT53aW5kb3cpLm1vbmFjbykgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9uR290QW1kTG9hZGVyOiBhbnkgPSAoKSA9PiB7XG4gICAgICAgICAgLy8gTG9hZCBtb25hY29cbiAgICAgICAgICAoPGFueT53aW5kb3cpLnJlcXVpcmUuY29uZmlnKHsgcGF0aHM6IHsgdnM6IGAke2Jhc2VVcmx9YCB9IH0pO1xuICAgICAgICAgICg8YW55PndpbmRvdykucmVxdWlyZShbJ3ZzL2VkaXRvci9lZGl0b3IubWFpbiddLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLm9uTW9uYWNvTG9hZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5vbk1vbmFjb0xvYWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5pdE1vbmFjbyh0aGlzLl9vcHRpb25zKTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBMb2FkIEFNRCBsb2FkZXIgaWYgbmVjZXNzYXJ5XG4gICAgICAgIGlmICghKDxhbnk+d2luZG93KS5yZXF1aXJlKSB7XG4gICAgICAgICAgY29uc3QgbG9hZGVyU2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgIGxvYWRlclNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgICAgICAgbG9hZGVyU2NyaXB0LnNyYyA9IGAke2Jhc2VVcmx9L2xvYWRlci5qc2A7XG4gICAgICAgICAgbG9hZGVyU2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBvbkdvdEFtZExvYWRlcik7XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsb2FkZXJTY3JpcHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uR290QW1kTG9hZGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5fd2luZG93UmVzaXplU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2VkaXRvcikge1xuICAgICAgdGhpcy5fZWRpdG9yLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX2VkaXRvciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5pdE1vbmFjbyhvcHRpb25zOiBhbnkpOiB2b2lkO1xufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const NGX_MONACO_EDITOR_CONFIG = new InjectionToken('NGX_MONACO_EDITOR_CONFIG');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL25neC1tb25hY28tZWRpdG9yL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUF3QiwwQkFBMEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IE5HWF9NT05BQ09fRURJVE9SX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3hNb25hY29FZGl0b3JDb25maWc+KCdOR1hfTU9OQUNPX0VESVRPUl9DT05GSUcnKTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3hNb25hY29FZGl0b3JDb25maWcge1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICBkZWZhdWx0T3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55OyB9O1xuICBvbk1vbmFjb0xvYWQ/OiBGdW5jdGlvbjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { fromEvent } from 'rxjs';
|
|
3
|
+
import { BaseEditor } from './base-editor';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class DiffEditorComponent extends BaseEditor {
|
|
6
|
+
_originalModel;
|
|
7
|
+
_modifiedModel;
|
|
8
|
+
set options(options) {
|
|
9
|
+
this._options = { ...this.config.defaultOptions, ...options };
|
|
10
|
+
if (this._editor) {
|
|
11
|
+
this._editor.dispose();
|
|
12
|
+
this.initMonaco(options);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
get options() {
|
|
16
|
+
return this._options;
|
|
17
|
+
}
|
|
18
|
+
set originalModel(model) {
|
|
19
|
+
this._originalModel = model;
|
|
20
|
+
if (this._editor) {
|
|
21
|
+
this._editor.dispose();
|
|
22
|
+
this.initMonaco(this.options);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
set modifiedModel(model) {
|
|
26
|
+
this._modifiedModel = model;
|
|
27
|
+
if (this._editor) {
|
|
28
|
+
this._editor.dispose();
|
|
29
|
+
this.initMonaco(this.options);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
initMonaco(options) {
|
|
33
|
+
if (!this._originalModel || !this._modifiedModel) {
|
|
34
|
+
throw new Error('originalModel or modifiedModel not found for ngx-monaco-diff-editor');
|
|
35
|
+
}
|
|
36
|
+
this._originalModel.language = this._originalModel.language || options.language;
|
|
37
|
+
this._modifiedModel.language = this._modifiedModel.language || options.language;
|
|
38
|
+
const originalModel = monaco.editor.createModel(this._originalModel.code, this._originalModel.language);
|
|
39
|
+
const modifiedModel = monaco.editor.createModel(this._modifiedModel.code, this._modifiedModel.language);
|
|
40
|
+
this._editorContainer.nativeElement.innerHTML = '';
|
|
41
|
+
const theme = options.theme;
|
|
42
|
+
this._editor = monaco.editor.createDiffEditor(this._editorContainer.nativeElement, options);
|
|
43
|
+
options.theme = theme;
|
|
44
|
+
this._editor.setModel({
|
|
45
|
+
original: originalModel,
|
|
46
|
+
modified: modifiedModel,
|
|
47
|
+
});
|
|
48
|
+
// refresh layout on resize event.
|
|
49
|
+
if (this._windowResizeSubscription) {
|
|
50
|
+
this._windowResizeSubscription.unsubscribe();
|
|
51
|
+
}
|
|
52
|
+
this._windowResizeSubscription = fromEvent(window, 'resize').subscribe(() => this._editor.layout());
|
|
53
|
+
this.onInit.emit(this._editor);
|
|
54
|
+
}
|
|
55
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DiffEditorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: DiffEditorComponent, isStandalone: true, 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: [":host{display:block;height:200px}.editor-container{width:100%;height:100%}\n"] });
|
|
57
|
+
}
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DiffEditorComponent, decorators: [{
|
|
59
|
+
type: Component,
|
|
60
|
+
args: [{ selector: 'ngx-monaco-diff-editor', template: '<div class="editor-container" #editorContainer></div>', standalone: true, styles: [":host{display:block;height:200px}.editor-container{width:100%;height:100%}\n"] }]
|
|
61
|
+
}], propDecorators: { options: [{
|
|
62
|
+
type: Input,
|
|
63
|
+
args: ['options']
|
|
64
|
+
}], originalModel: [{
|
|
65
|
+
type: Input,
|
|
66
|
+
args: ['originalModel']
|
|
67
|
+
}], modifiedModel: [{
|
|
68
|
+
type: Input,
|
|
69
|
+
args: ['modifiedModel']
|
|
70
|
+
}] } });
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL25neC1tb25hY28tZWRpdG9yL2RpZmYtZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBcUIzQyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsVUFBVTtJQUV6QyxjQUFjLENBQWtCO0lBQ2hDLGNBQWMsQ0FBa0I7SUFFeEMsSUFDVyxPQUFPLENBQUMsT0FBWTtRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQzlELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQ1csYUFBYSxDQUFDLEtBQXNCO1FBQzdDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUNXLGFBQWEsQ0FBQyxLQUFzQjtRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRVMsVUFBVSxDQUFDLE9BQVk7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDakQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO1FBQ3pGLENBQUM7UUFFRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ2hGLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFFaEYsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4RyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNuRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVGLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxhQUFhO1lBQ3ZCLFFBQVEsRUFBRSxhQUFhO1NBQ2pCLENBQUMsQ0FBQztRQUVWLGtDQUFrQztRQUNsQyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLHlCQUF5QixHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNwRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQzt1R0E5RFUsbUJBQW1COzJGQUFuQixtQkFBbUIseU1BZHBCLHVEQUF1RDs7MkZBY3RELG1CQUFtQjtrQkFoQi9CLFNBQVM7K0JBQ0Usd0JBQXdCLFlBQ3hCLHVEQUF1RCxjQVlyRCxJQUFJOzhCQVFMLE9BQU87c0JBRGpCLEtBQUs7dUJBQUMsU0FBUztnQkFjTCxhQUFhO3NCQUR2QixLQUFLO3VCQUFDLGVBQWU7Z0JBVVgsYUFBYTtzQkFEdkIsS0FBSzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQmFzZUVkaXRvciB9IGZyb20gJy4vYmFzZS1lZGl0b3InO1xuaW1wb3J0IHsgRGlmZkVkaXRvck1vZGVsIH0gZnJvbSAnLi90eXBlcyc7XG5cbmRlY2xhcmUgbGV0IG1vbmFjbzogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtbW9uYWNvLWRpZmYtZWRpdG9yJyxcbiAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwiZWRpdG9yLWNvbnRhaW5lclwiICNlZGl0b3JDb250YWluZXI+PC9kaXY+JyxcbiAgc3R5bGVzOiBbYFxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgaGVpZ2h0OiAyMDBweDtcbiAgICB9XG5cbiAgICAuZWRpdG9yLWNvbnRhaW5lciB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG4gIGBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBEaWZmRWRpdG9yQ29tcG9uZW50IGV4dGVuZHMgQmFzZUVkaXRvciB7XG5cbiAgcHJpdmF0ZSBfb3JpZ2luYWxNb2RlbDogRGlmZkVkaXRvck1vZGVsO1xuICBwcml2YXRlIF9tb2RpZmllZE1vZGVsOiBEaWZmRWRpdG9yTW9kZWw7XG5cbiAgQElucHV0KCdvcHRpb25zJylcbiAgcHVibGljIHNldCBvcHRpb25zKG9wdGlvbnM6IGFueSkge1xuICAgIHRoaXMuX29wdGlvbnMgPSB7IC4uLnRoaXMuY29uZmlnLmRlZmF1bHRPcHRpb25zLCAuLi5vcHRpb25zIH07XG4gICAgaWYgKHRoaXMuX2VkaXRvcikge1xuICAgICAgdGhpcy5fZWRpdG9yLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuaW5pdE1vbmFjbyhvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wdGlvbnMoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIEBJbnB1dCgnb3JpZ2luYWxNb2RlbCcpXG4gIHB1YmxpYyBzZXQgb3JpZ2luYWxNb2RlbChtb2RlbDogRGlmZkVkaXRvck1vZGVsKSB7XG4gICAgdGhpcy5fb3JpZ2luYWxNb2RlbCA9IG1vZGVsO1xuICAgIGlmICh0aGlzLl9lZGl0b3IpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5kaXNwb3NlKCk7XG4gICAgICB0aGlzLmluaXRNb25hY28odGhpcy5vcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoJ21vZGlmaWVkTW9kZWwnKVxuICBwdWJsaWMgc2V0IG1vZGlmaWVkTW9kZWwobW9kZWw6IERpZmZFZGl0b3JNb2RlbCkge1xuICAgIHRoaXMuX21vZGlmaWVkTW9kZWwgPSBtb2RlbDtcbiAgICBpZiAodGhpcy5fZWRpdG9yKSB7XG4gICAgICB0aGlzLl9lZGl0b3IuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5pbml0TW9uYWNvKHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRNb25hY28ob3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9vcmlnaW5hbE1vZGVsIHx8ICF0aGlzLl9tb2RpZmllZE1vZGVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29yaWdpbmFsTW9kZWwgb3IgbW9kaWZpZWRNb2RlbCBub3QgZm91bmQgZm9yIG5neC1tb25hY28tZGlmZi1lZGl0b3InKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vcmlnaW5hbE1vZGVsLmxhbmd1YWdlID0gdGhpcy5fb3JpZ2luYWxNb2RlbC5sYW5ndWFnZSB8fCBvcHRpb25zLmxhbmd1YWdlO1xuICAgIHRoaXMuX21vZGlmaWVkTW9kZWwubGFuZ3VhZ2UgPSB0aGlzLl9tb2RpZmllZE1vZGVsLmxhbmd1YWdlIHx8IG9wdGlvbnMubGFuZ3VhZ2U7XG5cbiAgICBjb25zdCBvcmlnaW5hbE1vZGVsID0gbW9uYWNvLmVkaXRvci5jcmVhdGVNb2RlbCh0aGlzLl9vcmlnaW5hbE1vZGVsLmNvZGUsIHRoaXMuX29yaWdpbmFsTW9kZWwubGFuZ3VhZ2UpO1xuICAgIGNvbnN0IG1vZGlmaWVkTW9kZWwgPSBtb25hY28uZWRpdG9yLmNyZWF0ZU1vZGVsKHRoaXMuX21vZGlmaWVkTW9kZWwuY29kZSwgdGhpcy5fbW9kaWZpZWRNb2RlbC5sYW5ndWFnZSk7XG5cbiAgICB0aGlzLl9lZGl0b3JDb250YWluZXIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICBjb25zdCB0aGVtZSA9IG9wdGlvbnMudGhlbWU7XG4gICAgdGhpcy5fZWRpdG9yID0gbW9uYWNvLmVkaXRvci5jcmVhdGVEaWZmRWRpdG9yKHRoaXMuX2VkaXRvckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCBvcHRpb25zKTtcbiAgICBvcHRpb25zLnRoZW1lID0gdGhlbWU7XG4gICAgdGhpcy5fZWRpdG9yLnNldE1vZGVsKHtcbiAgICAgIG9yaWdpbmFsOiBvcmlnaW5hbE1vZGVsLFxuICAgICAgbW9kaWZpZWQ6IG1vZGlmaWVkTW9kZWwsXG4gICAgfSBhcyBhbnkpO1xuXG4gICAgLy8gcmVmcmVzaCBsYXlvdXQgb24gcmVzaXplIGV2ZW50LlxuICAgIGlmICh0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuX3dpbmRvd1Jlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLl93aW5kb3dSZXNpemVTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2VkaXRvci5sYXlvdXQoKSk7XG4gICAgdGhpcy5vbkluaXQuZW1pdCh0aGlzLl9lZGl0b3IpO1xuICB9XG5cbn1cbiJdfQ==
|