ngssm-ace-editor 14.1.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/README.md +3 -0
- package/esm2020/lib/ace-builds-loader.mjs +44 -0
- package/esm2020/lib/ace-editor/ace-editor.component.mjs +94 -0
- package/esm2020/lib/ngssm-ace-editor-mode.mjs +8 -0
- package/esm2020/lib/ngssm-ace-editor.module.mjs +17 -0
- package/esm2020/ngssm-ace-editor.mjs +5 -0
- package/esm2020/public-api.mjs +8 -0
- package/fesm2015/ngssm-ace-editor.mjs +170 -0
- package/fesm2015/ngssm-ace-editor.mjs.map +1 -0
- package/fesm2020/ngssm-ace-editor.mjs +166 -0
- package/fesm2020/ngssm-ace-editor.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/ace-builds-loader.d.ts +13 -0
- package/lib/ace-editor/ace-editor.component.d.ts +23 -0
- package/lib/ngssm-ace-editor-mode.d.ts +6 -0
- package/lib/ngssm-ace-editor.module.d.ts +7 -0
- package/package.json +39 -0
- package/public-api.d.ts +4 -0
package/README.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
|
3
|
+
import { ReplaySubject } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "ngssm-toolkit";
|
|
6
|
+
export class AceBuildsLoader {
|
|
7
|
+
constructor(document, logger) {
|
|
8
|
+
this.document = document;
|
|
9
|
+
this.logger = logger;
|
|
10
|
+
this._loading$ = new ReplaySubject();
|
|
11
|
+
this._initialized = false;
|
|
12
|
+
}
|
|
13
|
+
loadScripts() {
|
|
14
|
+
this.logger.debug(`[ace-editor] trying to get ace, isInitialized=${this._initialized}`);
|
|
15
|
+
if (this._initialized) {
|
|
16
|
+
return this._loading$.asObservable();
|
|
17
|
+
}
|
|
18
|
+
const script = this.document.createElement('script');
|
|
19
|
+
script.type = 'text/javascript';
|
|
20
|
+
script.src = 'ace-builds/ace.js';
|
|
21
|
+
script.onload = () => {
|
|
22
|
+
window.ace.config.set('basePath', 'ace-builds');
|
|
23
|
+
window.ace.config.set('workerPath', 'ace-builds');
|
|
24
|
+
this.logger.information(`[ace-editor] ace loaded.`);
|
|
25
|
+
this._loading$.next(true);
|
|
26
|
+
};
|
|
27
|
+
this.logger.information(`[ace-editor] loading ace.`);
|
|
28
|
+
this.document.body.appendChild(script);
|
|
29
|
+
this._initialized = true;
|
|
30
|
+
return this._loading$.asObservable();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
AceBuildsLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AceBuildsLoader, deps: [{ token: DOCUMENT }, { token: i1.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
34
|
+
AceBuildsLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AceBuildsLoader, providedIn: 'root' });
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AceBuildsLoader, decorators: [{
|
|
36
|
+
type: Injectable,
|
|
37
|
+
args: [{
|
|
38
|
+
providedIn: 'root'
|
|
39
|
+
}]
|
|
40
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
41
|
+
type: Inject,
|
|
42
|
+
args: [DOCUMENT]
|
|
43
|
+
}] }, { type: i1.Logger }]; } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNlLWJ1aWxkcy1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1hY2UtZWRpdG9yL3NyYy9saWIvYWNlLWJ1aWxkcy1sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQU9qRCxNQUFNLE9BQU8sZUFBZTtJQUkxQixZQUFzQyxRQUFhLEVBQVUsTUFBYztRQUFyQyxhQUFRLEdBQVIsUUFBUSxDQUFLO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUhuRSxjQUFTLEdBQUcsSUFBSSxhQUFhLEVBQVcsQ0FBQztRQUN6QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztJQUVpRCxDQUFDO0lBRXhFLFdBQVc7UUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsaURBQWlELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3hGLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDdEM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxNQUFNLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsbUJBQW1CLENBQUM7UUFDakMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDbEIsTUFBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN4RCxNQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7OzRHQTNCVSxlQUFlLGtCQUlOLFFBQVE7Z0hBSmpCLGVBQWUsY0FGZCxNQUFNOzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFLYyxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnbmdzc20tdG9vbGtpdCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFjZUJ1aWxkc0xvYWRlciB7XG4gIHByaXZhdGUgX2xvYWRpbmckID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIpIHt9XG5cbiAgcHVibGljIGxvYWRTY3JpcHRzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBbYWNlLWVkaXRvcl0gdHJ5aW5nIHRvIGdldCBhY2UsIGlzSW5pdGlhbGl6ZWQ9JHt0aGlzLl9pbml0aWFsaXplZH1gKTtcbiAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzY3JpcHQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgc2NyaXB0LnNyYyA9ICdhY2UtYnVpbGRzL2FjZS5qcyc7XG4gICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICh3aW5kb3cgYXMgYW55KS5hY2UuY29uZmlnLnNldCgnYmFzZVBhdGgnLCAnYWNlLWJ1aWxkcycpO1xuICAgICAgKHdpbmRvdyBhcyBhbnkpLmFjZS5jb25maWcuc2V0KCd3b3JrZXJQYXRoJywgJ2FjZS1idWlsZHMnKTtcbiAgICAgIHRoaXMubG9nZ2VyLmluZm9ybWF0aW9uKGBbYWNlLWVkaXRvcl0gYWNlIGxvYWRlZC5gKTtcbiAgICAgIHRoaXMuX2xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgfTtcblxuICAgIHRoaXMubG9nZ2VyLmluZm9ybWF0aW9uKGBbYWNlLWVkaXRvcl0gbG9hZGluZyBhY2UuYCk7XG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XG5cbiAgICB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { take } from 'rxjs';
|
|
3
|
+
import { NgssmAceEditorMode } from '../ngssm-ace-editor-mode';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../ace-builds-loader";
|
|
6
|
+
export class AceEditorComponent {
|
|
7
|
+
constructor(aceBuildsLoader, zone) {
|
|
8
|
+
this.aceBuildsLoader = aceBuildsLoader;
|
|
9
|
+
this.zone = zone;
|
|
10
|
+
this.initialContent = '';
|
|
11
|
+
this.initialReadonly = true;
|
|
12
|
+
this.initialEditorMode = NgssmAceEditorMode.text;
|
|
13
|
+
this.silentContentUpdate = false;
|
|
14
|
+
this.contentChanged = new EventEmitter();
|
|
15
|
+
this.isValidChanged = new EventEmitter();
|
|
16
|
+
}
|
|
17
|
+
set content(value) {
|
|
18
|
+
if (this.aceEditor) {
|
|
19
|
+
this.silentContentUpdate = true;
|
|
20
|
+
this.aceEditor.setValue(value, -1);
|
|
21
|
+
this.silentContentUpdate = false;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
this.initialContent = value;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
set readonly(value) {
|
|
28
|
+
if (this.aceEditor) {
|
|
29
|
+
this.aceEditor.setReadOnly(value);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this.initialReadonly = value;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
set editorMode(value) {
|
|
36
|
+
if (this.aceEditor) {
|
|
37
|
+
this.aceEditor.session.setMode(value);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this.initialEditorMode = value;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
ngAfterViewInit() {
|
|
44
|
+
this.aceBuildsLoader
|
|
45
|
+
.loadScripts()
|
|
46
|
+
.pipe(take(1))
|
|
47
|
+
.subscribe(() => {
|
|
48
|
+
this.zone.runOutsideAngular(() => {
|
|
49
|
+
const ace = window.ace;
|
|
50
|
+
this.aceEditor = ace.edit(this.aceEditorDiv?.nativeElement);
|
|
51
|
+
if (this.aceEditor) {
|
|
52
|
+
this.aceEditor.$blockScrolling = Infinity;
|
|
53
|
+
this.aceEditor.setTheme('ace/theme/github');
|
|
54
|
+
this.aceEditor.session.setMode(this.initialEditorMode);
|
|
55
|
+
this.aceEditor.setReadOnly(this.initialReadonly);
|
|
56
|
+
this.aceEditor.setValue(this.initialContent, -1);
|
|
57
|
+
this.aceEditor.on('change', () => {
|
|
58
|
+
if (!this.silentContentUpdate) {
|
|
59
|
+
this.zone.run(() => this.contentChanged.emit(this.aceEditor.getValue()));
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
this.aceEditor.getSession().on('changeAnnotation', () => {
|
|
63
|
+
const annotations = this.aceEditor.getSession().getAnnotations();
|
|
64
|
+
const isValid = annotations.findIndex((annotation) => annotation.type === 'error') === -1;
|
|
65
|
+
this.zone.run(() => this.isValidChanged.emit(isValid));
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
ngOnDestroy() {
|
|
72
|
+
this.aceEditor?.destroy();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
AceEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AceEditorComponent, deps: [{ token: i1.AceBuildsLoader }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
76
|
+
AceEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: AceEditorComponent, selector: "ngssm-ace-editor", inputs: { content: "content", readonly: "readonly", editorMode: "editorMode" }, outputs: { contentChanged: "contentChanged", isValidChanged: "isValidChanged" }, viewQueries: [{ propertyName: "aceEditorDiv", first: true, predicate: ["aceEditor"], descendants: true }], ngImport: i0, template: "<div #aceEditor class=\"ngssm-ace-editor-container\"></div>\n", styles: [":host{display:flex;flex-direction:column}:host .ngssm-ace-editor-container{flex:1}\n"] });
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AceEditorComponent, decorators: [{
|
|
78
|
+
type: Component,
|
|
79
|
+
args: [{ selector: 'ngssm-ace-editor', template: "<div #aceEditor class=\"ngssm-ace-editor-container\"></div>\n", styles: [":host{display:flex;flex-direction:column}:host .ngssm-ace-editor-container{flex:1}\n"] }]
|
|
80
|
+
}], ctorParameters: function () { return [{ type: i1.AceBuildsLoader }, { type: i0.NgZone }]; }, propDecorators: { aceEditorDiv: [{
|
|
81
|
+
type: ViewChild,
|
|
82
|
+
args: ['aceEditor']
|
|
83
|
+
}], contentChanged: [{
|
|
84
|
+
type: Output
|
|
85
|
+
}], isValidChanged: [{
|
|
86
|
+
type: Output
|
|
87
|
+
}], content: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], readonly: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], editorMode: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}] } });
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNlLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1hY2UtZWRpdG9yL3NyYy9saWIvYWNlLWVkaXRvci9hY2UtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLWFjZS1lZGl0b3Ivc3JjL2xpYi9hY2UtZWRpdG9yL2FjZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFPOUQsTUFBTSxPQUFPLGtCQUFrQjtJQVk3QixZQUFvQixlQUFnQyxFQUFVLElBQVk7UUFBdEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQVhsRSxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUN2QixzQkFBaUIsR0FBVyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFDcEQsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRzFCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM1QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFJc0IsQ0FBQztJQUU5RSxJQUFvQixPQUFPLENBQUMsS0FBYTtRQUN2QyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztZQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxD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Q2hCLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7K0dBeEVVLGtCQUFrQjttR0FBbEIsa0JBQWtCLG9VQ1gvQiwrREFDQTsyRkRVYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0Usa0JBQWtCOzJIQVVHLFlBQVk7c0JBQTFDLFNBQVM7dUJBQUMsV0FBVztnQkFDWixjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBTWEsT0FBTztzQkFBMUIsS0FBSztnQkFVYyxRQUFRO3NCQUEzQixLQUFLO2dCQVFjLFVBQVU7c0JBQTdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBY2VCdWlsZHNMb2FkZXIgfSBmcm9tICcuLi9hY2UtYnVpbGRzLWxvYWRlcic7XG5pbXBvcnQgeyBOZ3NzbUFjZUVkaXRvck1vZGUgfSBmcm9tICcuLi9uZ3NzbS1hY2UtZWRpdG9yLW1vZGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3NzbS1hY2UtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hY2UtZWRpdG9yLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQWNlRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBpbml0aWFsQ29udGVudCA9ICcnO1xuICBwcml2YXRlIGluaXRpYWxSZWFkb25seSA9IHRydWU7XG4gIHByaXZhdGUgaW5pdGlhbEVkaXRvck1vZGU6IHN0cmluZyA9IE5nc3NtQWNlRWRpdG9yTW9kZS50ZXh0O1xuICBwcml2YXRlIHNpbGVudENvbnRlbnRVcGRhdGUgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdhY2VFZGl0b3InKSBwdWJsaWMgYWNlRWRpdG9yRGl2OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuICBAT3V0cHV0KCkgY29udGVudENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGlzVmFsaWRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyBhY2VFZGl0b3I6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFjZUJ1aWxkc0xvYWRlcjogQWNlQnVpbGRzTG9hZGVyLCBwcml2YXRlIHpvbmU6IE5nWm9uZSkge31cblxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGNvbnRlbnQodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmFjZUVkaXRvcikge1xuICAgICAgdGhpcy5zaWxlbnRDb250ZW50VXBkYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWNlRWRpdG9yLnNldFZhbHVlKHZhbHVlLCAtMSk7XG4gICAgICB0aGlzLnNpbGVudENvbnRlbnRVcGRhdGUgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsQ29udGVudCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5hY2VFZGl0b3IpIHtcbiAgICAgIHRoaXMuYWNlRWRpdG9yLnNldFJlYWRPbmx5KHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsUmVhZG9ubHkgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGVkaXRvck1vZGUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmFjZUVkaXRvcikge1xuICAgICAgdGhpcy5hY2VFZGl0b3Iuc2Vzc2lvbi5zZXRNb2RlKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsRWRpdG9yTW9kZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hY2VCdWlsZHNMb2FkZXJcbiAgICAgIC5sb2FkU2NyaXB0cygpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWNlOiBhbnkgPSAod2luZG93IGFzIGFueSkuYWNlO1xuICAgICAgICAgIHRoaXMuYWNlRWRpdG9yID0gYWNlLmVkaXQodGhpcy5hY2VFZGl0b3JEaXY/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgIGlmICh0aGlzLmFjZUVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5hY2VFZGl0b3IuJGJsb2NrU2Nyb2xsaW5nID0gSW5maW5pdHk7XG4gICAgICAgICAgICB0aGlzLmFjZUVkaXRvci5zZXRUaGVtZSgnYWNlL3RoZW1lL2dpdGh1YicpO1xuICAgICAgICAgICAgdGhpcy5hY2VFZGl0b3Iuc2Vzc2lvbi5zZXRNb2RlKHRoaXMuaW5pdGlhbEVkaXRvck1vZGUpO1xuICAgICAgICAgICAgdGhpcy5hY2VFZGl0b3Iuc2V0UmVhZE9ubHkodGhpcy5pbml0aWFsUmVhZG9ubHkpO1xuICAgICAgICAgICAgdGhpcy5hY2VFZGl0b3Iuc2V0VmFsdWUodGhpcy5pbml0aWFsQ29udGVudCwgLTEpO1xuXG4gICAgICAgICAgICB0aGlzLmFjZUVkaXRvci5vbignY2hhbmdlJywgKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXRoaXMuc2lsZW50Q29udGVudFVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5jb250ZW50Q2hhbmdlZC5lbWl0KHRoaXMuYWNlRWRpdG9yLmdldFZhbHVlKCkpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmFjZUVkaXRvci5nZXRTZXNzaW9uKCkub24oJ2NoYW5nZUFubm90YXRpb24nLCAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGFubm90YXRpb25zOiBhbnlbXSA9IHRoaXMuYWNlRWRpdG9yLmdldFNlc3Npb24oKS5nZXRBbm5vdGF0aW9ucygpO1xuICAgICAgICAgICAgICBjb25zdCBpc1ZhbGlkID0gYW5ub3RhdGlvbnMuZmluZEluZGV4KChhbm5vdGF0aW9uKSA9PiBhbm5vdGF0aW9uLnR5cGUgPT09ICdlcnJvcicpID09PSAtMTtcbiAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmlzVmFsaWRDaGFuZ2VkLmVtaXQoaXNWYWxpZCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuYWNlRWRpdG9yPy5kZXN0cm95KCk7XG4gIH1cbn1cbiIsIjxkaXYgI2FjZUVkaXRvciBjbGFzcz1cIm5nc3NtLWFjZS1lZGl0b3ItY29udGFpbmVyXCI+PC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export var NgssmAceEditorMode;
|
|
2
|
+
(function (NgssmAceEditorMode) {
|
|
3
|
+
NgssmAceEditorMode["text"] = "ace/mode/text";
|
|
4
|
+
NgssmAceEditorMode["javascript"] = "ace/mode/javascript";
|
|
5
|
+
NgssmAceEditorMode["python"] = "ace/mode/python";
|
|
6
|
+
NgssmAceEditorMode["json"] = "ace/mode/json";
|
|
7
|
+
})(NgssmAceEditorMode || (NgssmAceEditorMode = {}));
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tYWNlLWVkaXRvci1tb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tYWNlLWVkaXRvci9zcmMvbGliL25nc3NtLWFjZS1lZGl0b3ItbW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxrQkFLWDtBQUxELFdBQVksa0JBQWtCO0lBQzVCLDRDQUFzQixDQUFBO0lBQ3RCLHdEQUFrQyxDQUFBO0lBQ2xDLGdEQUEwQixDQUFBO0lBQzFCLDRDQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFMVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBSzdCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gTmdzc21BY2VFZGl0b3JNb2RlIHtcbiAgdGV4dCA9ICdhY2UvbW9kZS90ZXh0JyxcbiAgamF2YXNjcmlwdCA9ICdhY2UvbW9kZS9qYXZhc2NyaXB0JyxcbiAgcHl0aG9uID0gJ2FjZS9tb2RlL3B5dGhvbicsXG4gIGpzb24gPSAnYWNlL21vZGUvanNvbidcbn1cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { AceEditorComponent } from './ace-editor/ace-editor.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class NgssmAceEditorModule {
|
|
5
|
+
}
|
|
6
|
+
NgssmAceEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgssmAceEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
7
|
+
NgssmAceEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.5", ngImport: i0, type: NgssmAceEditorModule, declarations: [AceEditorComponent], exports: [AceEditorComponent] });
|
|
8
|
+
NgssmAceEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgssmAceEditorModule });
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgssmAceEditorModule, decorators: [{
|
|
10
|
+
type: NgModule,
|
|
11
|
+
args: [{
|
|
12
|
+
declarations: [AceEditorComponent],
|
|
13
|
+
imports: [],
|
|
14
|
+
exports: [AceEditorComponent]
|
|
15
|
+
}]
|
|
16
|
+
}] });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tYWNlLWVkaXRvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1hY2UtZWRpdG9yL3NyYy9saWIvbmdzc20tYWNlLWVkaXRvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFPdkUsTUFBTSxPQUFPLG9CQUFvQjs7aUhBQXBCLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGlCQUpoQixrQkFBa0IsYUFFdkIsa0JBQWtCO2tIQUVqQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFMaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDbEMsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjZUVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vYWNlLWVkaXRvci9hY2UtZWRpdG9yLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0FjZUVkaXRvckNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtdLFxuICBleHBvcnRzOiBbQWNlRWRpdG9yQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBOZ3NzbUFjZUVkaXRvck1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tYWNlLWVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nc3NtLWFjZS1lZGl0b3Ivc3JjL25nc3NtLWFjZS1lZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of ngssm-ace-editor
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/ngssm-ace-editor.module';
|
|
5
|
+
export * from './lib/ace-editor/ace-editor.component';
|
|
6
|
+
export * from './lib/ace-builds-loader';
|
|
7
|
+
export * from './lib/ngssm-ace-editor-mode';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nc3NtLWFjZS1lZGl0b3Ivc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3NzbS1hY2UtZWRpdG9yXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmdzc20tYWNlLWVkaXRvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWNlLWVkaXRvci9hY2UtZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY2UtYnVpbGRzLWxvYWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3NzbS1hY2UtZWRpdG9yLW1vZGUnO1xuIl19
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, Inject, EventEmitter, Component, ViewChild, Output, Input, NgModule } from '@angular/core';
|
|
3
|
+
import { ReplaySubject, take } from 'rxjs';
|
|
4
|
+
import { DOCUMENT } from '@angular/common';
|
|
5
|
+
import * as i1 from 'ngssm-toolkit';
|
|
6
|
+
|
|
7
|
+
var NgssmAceEditorMode;
|
|
8
|
+
(function (NgssmAceEditorMode) {
|
|
9
|
+
NgssmAceEditorMode["text"] = "ace/mode/text";
|
|
10
|
+
NgssmAceEditorMode["javascript"] = "ace/mode/javascript";
|
|
11
|
+
NgssmAceEditorMode["python"] = "ace/mode/python";
|
|
12
|
+
NgssmAceEditorMode["json"] = "ace/mode/json";
|
|
13
|
+
})(NgssmAceEditorMode || (NgssmAceEditorMode = {}));
|
|
14
|
+
|
|
15
|
+
class AceBuildsLoader {
|
|
16
|
+
constructor(document, logger) {
|
|
17
|
+
this.document = document;
|
|
18
|
+
this.logger = logger;
|
|
19
|
+
this._loading$ = new ReplaySubject();
|
|
20
|
+
this._initialized = false;
|
|
21
|
+
}
|
|
22
|
+
loadScripts() {
|
|
23
|
+
this.logger.debug(`[ace-editor] trying to get ace, isInitialized=${this._initialized}`);
|
|
24
|
+
if (this._initialized) {
|
|
25
|
+
return this._loading$.asObservable();
|
|
26
|
+
}
|
|
27
|
+
const script = this.document.createElement('script');
|
|
28
|
+
script.type = 'text/javascript';
|
|
29
|
+
script.src = 'ace-builds/ace.js';
|
|
30
|
+
script.onload = () => {
|
|
31
|
+
window.ace.config.set('basePath', 'ace-builds');
|
|
32
|
+
window.ace.config.set('workerPath', 'ace-builds');
|
|
33
|
+
this.logger.information(`[ace-editor] ace loaded.`);
|
|
34
|
+
this._loading$.next(true);
|
|
35
|
+
};
|
|
36
|
+
this.logger.information(`[ace-editor] loading ace.`);
|
|
37
|
+
this.document.body.appendChild(script);
|
|
38
|
+
this._initialized = true;
|
|
39
|
+
return this._loading$.asObservable();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
AceBuildsLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AceBuildsLoader, deps: [{ token: DOCUMENT }, { token: i1.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
43
|
+
AceBuildsLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AceBuildsLoader, providedIn: 'root' });
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AceBuildsLoader, decorators: [{
|
|
45
|
+
type: Injectable,
|
|
46
|
+
args: [{
|
|
47
|
+
providedIn: 'root'
|
|
48
|
+
}]
|
|
49
|
+
}], ctorParameters: function () {
|
|
50
|
+
return [{ type: undefined, decorators: [{
|
|
51
|
+
type: Inject,
|
|
52
|
+
args: [DOCUMENT]
|
|
53
|
+
}] }, { type: i1.Logger }];
|
|
54
|
+
} });
|
|
55
|
+
|
|
56
|
+
class AceEditorComponent {
|
|
57
|
+
constructor(aceBuildsLoader, zone) {
|
|
58
|
+
this.aceBuildsLoader = aceBuildsLoader;
|
|
59
|
+
this.zone = zone;
|
|
60
|
+
this.initialContent = '';
|
|
61
|
+
this.initialReadonly = true;
|
|
62
|
+
this.initialEditorMode = NgssmAceEditorMode.text;
|
|
63
|
+
this.silentContentUpdate = false;
|
|
64
|
+
this.contentChanged = new EventEmitter();
|
|
65
|
+
this.isValidChanged = new EventEmitter();
|
|
66
|
+
}
|
|
67
|
+
set content(value) {
|
|
68
|
+
if (this.aceEditor) {
|
|
69
|
+
this.silentContentUpdate = true;
|
|
70
|
+
this.aceEditor.setValue(value, -1);
|
|
71
|
+
this.silentContentUpdate = false;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.initialContent = value;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
set readonly(value) {
|
|
78
|
+
if (this.aceEditor) {
|
|
79
|
+
this.aceEditor.setReadOnly(value);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
this.initialReadonly = value;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
set editorMode(value) {
|
|
86
|
+
if (this.aceEditor) {
|
|
87
|
+
this.aceEditor.session.setMode(value);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
this.initialEditorMode = value;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
ngAfterViewInit() {
|
|
94
|
+
this.aceBuildsLoader
|
|
95
|
+
.loadScripts()
|
|
96
|
+
.pipe(take(1))
|
|
97
|
+
.subscribe(() => {
|
|
98
|
+
this.zone.runOutsideAngular(() => {
|
|
99
|
+
var _a;
|
|
100
|
+
const ace = window.ace;
|
|
101
|
+
this.aceEditor = ace.edit((_a = this.aceEditorDiv) === null || _a === void 0 ? void 0 : _a.nativeElement);
|
|
102
|
+
if (this.aceEditor) {
|
|
103
|
+
this.aceEditor.$blockScrolling = Infinity;
|
|
104
|
+
this.aceEditor.setTheme('ace/theme/github');
|
|
105
|
+
this.aceEditor.session.setMode(this.initialEditorMode);
|
|
106
|
+
this.aceEditor.setReadOnly(this.initialReadonly);
|
|
107
|
+
this.aceEditor.setValue(this.initialContent, -1);
|
|
108
|
+
this.aceEditor.on('change', () => {
|
|
109
|
+
if (!this.silentContentUpdate) {
|
|
110
|
+
this.zone.run(() => this.contentChanged.emit(this.aceEditor.getValue()));
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
this.aceEditor.getSession().on('changeAnnotation', () => {
|
|
114
|
+
const annotations = this.aceEditor.getSession().getAnnotations();
|
|
115
|
+
const isValid = annotations.findIndex((annotation) => annotation.type === 'error') === -1;
|
|
116
|
+
this.zone.run(() => this.isValidChanged.emit(isValid));
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
ngOnDestroy() {
|
|
123
|
+
var _a;
|
|
124
|
+
(_a = this.aceEditor) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
AceEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AceEditorComponent, deps: [{ token: AceBuildsLoader }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
+
AceEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: AceEditorComponent, selector: "ngssm-ace-editor", inputs: { content: "content", readonly: "readonly", editorMode: "editorMode" }, outputs: { contentChanged: "contentChanged", isValidChanged: "isValidChanged" }, viewQueries: [{ propertyName: "aceEditorDiv", first: true, predicate: ["aceEditor"], descendants: true }], ngImport: i0, template: "<div #aceEditor class=\"ngssm-ace-editor-container\"></div>\n", styles: [":host{display:flex;flex-direction:column}:host .ngssm-ace-editor-container{flex:1}\n"] });
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AceEditorComponent, decorators: [{
|
|
130
|
+
type: Component,
|
|
131
|
+
args: [{ selector: 'ngssm-ace-editor', template: "<div #aceEditor class=\"ngssm-ace-editor-container\"></div>\n", styles: [":host{display:flex;flex-direction:column}:host .ngssm-ace-editor-container{flex:1}\n"] }]
|
|
132
|
+
}], ctorParameters: function () { return [{ type: AceBuildsLoader }, { type: i0.NgZone }]; }, propDecorators: { aceEditorDiv: [{
|
|
133
|
+
type: ViewChild,
|
|
134
|
+
args: ['aceEditor']
|
|
135
|
+
}], contentChanged: [{
|
|
136
|
+
type: Output
|
|
137
|
+
}], isValidChanged: [{
|
|
138
|
+
type: Output
|
|
139
|
+
}], content: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], readonly: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], editorMode: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}] } });
|
|
146
|
+
|
|
147
|
+
class NgssmAceEditorModule {
|
|
148
|
+
}
|
|
149
|
+
NgssmAceEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgssmAceEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
150
|
+
NgssmAceEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.5", ngImport: i0, type: NgssmAceEditorModule, declarations: [AceEditorComponent], exports: [AceEditorComponent] });
|
|
151
|
+
NgssmAceEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgssmAceEditorModule });
|
|
152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgssmAceEditorModule, decorators: [{
|
|
153
|
+
type: NgModule,
|
|
154
|
+
args: [{
|
|
155
|
+
declarations: [AceEditorComponent],
|
|
156
|
+
imports: [],
|
|
157
|
+
exports: [AceEditorComponent]
|
|
158
|
+
}]
|
|
159
|
+
}] });
|
|
160
|
+
|
|
161
|
+
/*
|
|
162
|
+
* Public API Surface of ngssm-ace-editor
|
|
163
|
+
*/
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Generated bundle index. Do not edit.
|
|
167
|
+
*/
|
|
168
|
+
|
|
169
|
+
export { AceBuildsLoader, AceEditorComponent, NgssmAceEditorMode, NgssmAceEditorModule };
|
|
170
|
+
//# sourceMappingURL=ngssm-ace-editor.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngssm-ace-editor.mjs","sources":["../../../projects/ngssm-ace-editor/src/lib/ngssm-ace-editor-mode.ts","../../../projects/ngssm-ace-editor/src/lib/ace-builds-loader.ts","../../../projects/ngssm-ace-editor/src/lib/ace-editor/ace-editor.component.ts","../../../projects/ngssm-ace-editor/src/lib/ace-editor/ace-editor.component.html","../../../projects/ngssm-ace-editor/src/lib/ngssm-ace-editor.module.ts","../../../projects/ngssm-ace-editor/src/public-api.ts","../../../projects/ngssm-ace-editor/src/ngssm-ace-editor.ts"],"sourcesContent":["export enum NgssmAceEditorMode {\n text = 'ace/mode/text',\n javascript = 'ace/mode/javascript',\n python = 'ace/mode/python',\n json = 'ace/mode/json'\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { Logger } from 'ngssm-toolkit';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AceBuildsLoader {\n private _loading$ = new ReplaySubject<boolean>();\n private _initialized = false;\n\n constructor(@Inject(DOCUMENT) private document: any, private logger: Logger) {}\n\n public loadScripts(): Observable<boolean> {\n this.logger.debug(`[ace-editor] trying to get ace, isInitialized=${this._initialized}`);\n if (this._initialized) {\n return this._loading$.asObservable();\n }\n\n const script = this.document.createElement('script');\n script.type = 'text/javascript';\n script.src = 'ace-builds/ace.js';\n script.onload = () => {\n (window as any).ace.config.set('basePath', 'ace-builds');\n (window as any).ace.config.set('workerPath', 'ace-builds');\n this.logger.information(`[ace-editor] ace loaded.`);\n this._loading$.next(true);\n };\n\n this.logger.information(`[ace-editor] loading ace.`);\n this.document.body.appendChild(script);\n\n this._initialized = true;\n return this._loading$.asObservable();\n }\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, NgZone, OnDestroy, Output, ViewChild } from '@angular/core';\nimport { take } from 'rxjs';\n\nimport { AceBuildsLoader } from '../ace-builds-loader';\nimport { NgssmAceEditorMode } from '../ngssm-ace-editor-mode';\n\n@Component({\n selector: 'ngssm-ace-editor',\n templateUrl: './ace-editor.component.html',\n styleUrls: ['./ace-editor.component.scss']\n})\nexport class AceEditorComponent implements AfterViewInit, OnDestroy {\n private initialContent = '';\n private initialReadonly = true;\n private initialEditorMode: string = NgssmAceEditorMode.text;\n private silentContentUpdate = false;\n\n @ViewChild('aceEditor') public aceEditorDiv: ElementRef | undefined;\n @Output() contentChanged = new EventEmitter<string>();\n @Output() isValidChanged = new EventEmitter<boolean>();\n\n public aceEditor: any;\n\n constructor(private aceBuildsLoader: AceBuildsLoader, private zone: NgZone) {}\n\n @Input() public set content(value: string) {\n if (this.aceEditor) {\n this.silentContentUpdate = true;\n this.aceEditor.setValue(value, -1);\n this.silentContentUpdate = false;\n } else {\n this.initialContent = value;\n }\n }\n\n @Input() public set readonly(value: boolean) {\n if (this.aceEditor) {\n this.aceEditor.setReadOnly(value);\n } else {\n this.initialReadonly = value;\n }\n }\n\n @Input() public set editorMode(value: string) {\n if (this.aceEditor) {\n this.aceEditor.session.setMode(value);\n } else {\n this.initialEditorMode = value;\n }\n }\n\n public ngAfterViewInit(): void {\n this.aceBuildsLoader\n .loadScripts()\n .pipe(take(1))\n .subscribe(() => {\n this.zone.runOutsideAngular(() => {\n const ace: any = (window as any).ace;\n this.aceEditor = ace.edit(this.aceEditorDiv?.nativeElement);\n if (this.aceEditor) {\n this.aceEditor.$blockScrolling = Infinity;\n this.aceEditor.setTheme('ace/theme/github');\n this.aceEditor.session.setMode(this.initialEditorMode);\n this.aceEditor.setReadOnly(this.initialReadonly);\n this.aceEditor.setValue(this.initialContent, -1);\n\n this.aceEditor.on('change', () => {\n if (!this.silentContentUpdate) {\n this.zone.run(() => this.contentChanged.emit(this.aceEditor.getValue()));\n }\n });\n this.aceEditor.getSession().on('changeAnnotation', () => {\n const annotations: any[] = this.aceEditor.getSession().getAnnotations();\n const isValid = annotations.findIndex((annotation) => annotation.type === 'error') === -1;\n this.zone.run(() => this.isValidChanged.emit(isValid));\n });\n }\n });\n });\n }\n\n public ngOnDestroy(): void {\n this.aceEditor?.destroy();\n }\n}\n","<div #aceEditor class=\"ngssm-ace-editor-container\"></div>\n","import { NgModule } from '@angular/core';\nimport { AceEditorComponent } from './ace-editor/ace-editor.component';\n\n@NgModule({\n declarations: [AceEditorComponent],\n imports: [],\n exports: [AceEditorComponent]\n})\nexport class NgssmAceEditorModule {}\n","/*\n * Public API Surface of ngssm-ace-editor\n */\n\nexport * from './lib/ngssm-ace-editor.module';\nexport * from './lib/ace-editor/ace-editor.component';\nexport * from './lib/ace-builds-loader';\nexport * from './lib/ngssm-ace-editor-mode';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AceBuildsLoader"],"mappings":"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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, Inject, EventEmitter, Component, ViewChild, Output, Input, NgModule } from '@angular/core';
|
|
3
|
+
import { ReplaySubject, take } from 'rxjs';
|
|
4
|
+
import { DOCUMENT } from '@angular/common';
|
|
5
|
+
import * as i1 from 'ngssm-toolkit';
|
|
6
|
+
|
|
7
|
+
var NgssmAceEditorMode;
|
|
8
|
+
(function (NgssmAceEditorMode) {
|
|
9
|
+
NgssmAceEditorMode["text"] = "ace/mode/text";
|
|
10
|
+
NgssmAceEditorMode["javascript"] = "ace/mode/javascript";
|
|
11
|
+
NgssmAceEditorMode["python"] = "ace/mode/python";
|
|
12
|
+
NgssmAceEditorMode["json"] = "ace/mode/json";
|
|
13
|
+
})(NgssmAceEditorMode || (NgssmAceEditorMode = {}));
|
|
14
|
+
|
|
15
|
+
class AceBuildsLoader {
|
|
16
|
+
constructor(document, logger) {
|
|
17
|
+
this.document = document;
|
|
18
|
+
this.logger = logger;
|
|
19
|
+
this._loading$ = new ReplaySubject();
|
|
20
|
+
this._initialized = false;
|
|
21
|
+
}
|
|
22
|
+
loadScripts() {
|
|
23
|
+
this.logger.debug(`[ace-editor] trying to get ace, isInitialized=${this._initialized}`);
|
|
24
|
+
if (this._initialized) {
|
|
25
|
+
return this._loading$.asObservable();
|
|
26
|
+
}
|
|
27
|
+
const script = this.document.createElement('script');
|
|
28
|
+
script.type = 'text/javascript';
|
|
29
|
+
script.src = 'ace-builds/ace.js';
|
|
30
|
+
script.onload = () => {
|
|
31
|
+
window.ace.config.set('basePath', 'ace-builds');
|
|
32
|
+
window.ace.config.set('workerPath', 'ace-builds');
|
|
33
|
+
this.logger.information(`[ace-editor] ace loaded.`);
|
|
34
|
+
this._loading$.next(true);
|
|
35
|
+
};
|
|
36
|
+
this.logger.information(`[ace-editor] loading ace.`);
|
|
37
|
+
this.document.body.appendChild(script);
|
|
38
|
+
this._initialized = true;
|
|
39
|
+
return this._loading$.asObservable();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
AceBuildsLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AceBuildsLoader, deps: [{ token: DOCUMENT }, { token: i1.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
43
|
+
AceBuildsLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AceBuildsLoader, providedIn: 'root' });
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AceBuildsLoader, decorators: [{
|
|
45
|
+
type: Injectable,
|
|
46
|
+
args: [{
|
|
47
|
+
providedIn: 'root'
|
|
48
|
+
}]
|
|
49
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
50
|
+
type: Inject,
|
|
51
|
+
args: [DOCUMENT]
|
|
52
|
+
}] }, { type: i1.Logger }]; } });
|
|
53
|
+
|
|
54
|
+
class AceEditorComponent {
|
|
55
|
+
constructor(aceBuildsLoader, zone) {
|
|
56
|
+
this.aceBuildsLoader = aceBuildsLoader;
|
|
57
|
+
this.zone = zone;
|
|
58
|
+
this.initialContent = '';
|
|
59
|
+
this.initialReadonly = true;
|
|
60
|
+
this.initialEditorMode = NgssmAceEditorMode.text;
|
|
61
|
+
this.silentContentUpdate = false;
|
|
62
|
+
this.contentChanged = new EventEmitter();
|
|
63
|
+
this.isValidChanged = new EventEmitter();
|
|
64
|
+
}
|
|
65
|
+
set content(value) {
|
|
66
|
+
if (this.aceEditor) {
|
|
67
|
+
this.silentContentUpdate = true;
|
|
68
|
+
this.aceEditor.setValue(value, -1);
|
|
69
|
+
this.silentContentUpdate = false;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this.initialContent = value;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
set readonly(value) {
|
|
76
|
+
if (this.aceEditor) {
|
|
77
|
+
this.aceEditor.setReadOnly(value);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
this.initialReadonly = value;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
set editorMode(value) {
|
|
84
|
+
if (this.aceEditor) {
|
|
85
|
+
this.aceEditor.session.setMode(value);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.initialEditorMode = value;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
ngAfterViewInit() {
|
|
92
|
+
this.aceBuildsLoader
|
|
93
|
+
.loadScripts()
|
|
94
|
+
.pipe(take(1))
|
|
95
|
+
.subscribe(() => {
|
|
96
|
+
this.zone.runOutsideAngular(() => {
|
|
97
|
+
const ace = window.ace;
|
|
98
|
+
this.aceEditor = ace.edit(this.aceEditorDiv?.nativeElement);
|
|
99
|
+
if (this.aceEditor) {
|
|
100
|
+
this.aceEditor.$blockScrolling = Infinity;
|
|
101
|
+
this.aceEditor.setTheme('ace/theme/github');
|
|
102
|
+
this.aceEditor.session.setMode(this.initialEditorMode);
|
|
103
|
+
this.aceEditor.setReadOnly(this.initialReadonly);
|
|
104
|
+
this.aceEditor.setValue(this.initialContent, -1);
|
|
105
|
+
this.aceEditor.on('change', () => {
|
|
106
|
+
if (!this.silentContentUpdate) {
|
|
107
|
+
this.zone.run(() => this.contentChanged.emit(this.aceEditor.getValue()));
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
this.aceEditor.getSession().on('changeAnnotation', () => {
|
|
111
|
+
const annotations = this.aceEditor.getSession().getAnnotations();
|
|
112
|
+
const isValid = annotations.findIndex((annotation) => annotation.type === 'error') === -1;
|
|
113
|
+
this.zone.run(() => this.isValidChanged.emit(isValid));
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
ngOnDestroy() {
|
|
120
|
+
this.aceEditor?.destroy();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
AceEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AceEditorComponent, deps: [{ token: AceBuildsLoader }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
124
|
+
AceEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: AceEditorComponent, selector: "ngssm-ace-editor", inputs: { content: "content", readonly: "readonly", editorMode: "editorMode" }, outputs: { contentChanged: "contentChanged", isValidChanged: "isValidChanged" }, viewQueries: [{ propertyName: "aceEditorDiv", first: true, predicate: ["aceEditor"], descendants: true }], ngImport: i0, template: "<div #aceEditor class=\"ngssm-ace-editor-container\"></div>\n", styles: [":host{display:flex;flex-direction:column}:host .ngssm-ace-editor-container{flex:1}\n"] });
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AceEditorComponent, decorators: [{
|
|
126
|
+
type: Component,
|
|
127
|
+
args: [{ selector: 'ngssm-ace-editor', template: "<div #aceEditor class=\"ngssm-ace-editor-container\"></div>\n", styles: [":host{display:flex;flex-direction:column}:host .ngssm-ace-editor-container{flex:1}\n"] }]
|
|
128
|
+
}], ctorParameters: function () { return [{ type: AceBuildsLoader }, { type: i0.NgZone }]; }, propDecorators: { aceEditorDiv: [{
|
|
129
|
+
type: ViewChild,
|
|
130
|
+
args: ['aceEditor']
|
|
131
|
+
}], contentChanged: [{
|
|
132
|
+
type: Output
|
|
133
|
+
}], isValidChanged: [{
|
|
134
|
+
type: Output
|
|
135
|
+
}], content: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], readonly: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], editorMode: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}] } });
|
|
142
|
+
|
|
143
|
+
class NgssmAceEditorModule {
|
|
144
|
+
}
|
|
145
|
+
NgssmAceEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgssmAceEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
146
|
+
NgssmAceEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.5", ngImport: i0, type: NgssmAceEditorModule, declarations: [AceEditorComponent], exports: [AceEditorComponent] });
|
|
147
|
+
NgssmAceEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgssmAceEditorModule });
|
|
148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgssmAceEditorModule, decorators: [{
|
|
149
|
+
type: NgModule,
|
|
150
|
+
args: [{
|
|
151
|
+
declarations: [AceEditorComponent],
|
|
152
|
+
imports: [],
|
|
153
|
+
exports: [AceEditorComponent]
|
|
154
|
+
}]
|
|
155
|
+
}] });
|
|
156
|
+
|
|
157
|
+
/*
|
|
158
|
+
* Public API Surface of ngssm-ace-editor
|
|
159
|
+
*/
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Generated bundle index. Do not edit.
|
|
163
|
+
*/
|
|
164
|
+
|
|
165
|
+
export { AceBuildsLoader, AceEditorComponent, NgssmAceEditorMode, NgssmAceEditorModule };
|
|
166
|
+
//# sourceMappingURL=ngssm-ace-editor.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngssm-ace-editor.mjs","sources":["../../../projects/ngssm-ace-editor/src/lib/ngssm-ace-editor-mode.ts","../../../projects/ngssm-ace-editor/src/lib/ace-builds-loader.ts","../../../projects/ngssm-ace-editor/src/lib/ace-editor/ace-editor.component.ts","../../../projects/ngssm-ace-editor/src/lib/ace-editor/ace-editor.component.html","../../../projects/ngssm-ace-editor/src/lib/ngssm-ace-editor.module.ts","../../../projects/ngssm-ace-editor/src/public-api.ts","../../../projects/ngssm-ace-editor/src/ngssm-ace-editor.ts"],"sourcesContent":["export enum NgssmAceEditorMode {\n text = 'ace/mode/text',\n javascript = 'ace/mode/javascript',\n python = 'ace/mode/python',\n json = 'ace/mode/json'\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { Logger } from 'ngssm-toolkit';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AceBuildsLoader {\n private _loading$ = new ReplaySubject<boolean>();\n private _initialized = false;\n\n constructor(@Inject(DOCUMENT) private document: any, private logger: Logger) {}\n\n public loadScripts(): Observable<boolean> {\n this.logger.debug(`[ace-editor] trying to get ace, isInitialized=${this._initialized}`);\n if (this._initialized) {\n return this._loading$.asObservable();\n }\n\n const script = this.document.createElement('script');\n script.type = 'text/javascript';\n script.src = 'ace-builds/ace.js';\n script.onload = () => {\n (window as any).ace.config.set('basePath', 'ace-builds');\n (window as any).ace.config.set('workerPath', 'ace-builds');\n this.logger.information(`[ace-editor] ace loaded.`);\n this._loading$.next(true);\n };\n\n this.logger.information(`[ace-editor] loading ace.`);\n this.document.body.appendChild(script);\n\n this._initialized = true;\n return this._loading$.asObservable();\n }\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, NgZone, OnDestroy, Output, ViewChild } from '@angular/core';\nimport { take } from 'rxjs';\n\nimport { AceBuildsLoader } from '../ace-builds-loader';\nimport { NgssmAceEditorMode } from '../ngssm-ace-editor-mode';\n\n@Component({\n selector: 'ngssm-ace-editor',\n templateUrl: './ace-editor.component.html',\n styleUrls: ['./ace-editor.component.scss']\n})\nexport class AceEditorComponent implements AfterViewInit, OnDestroy {\n private initialContent = '';\n private initialReadonly = true;\n private initialEditorMode: string = NgssmAceEditorMode.text;\n private silentContentUpdate = false;\n\n @ViewChild('aceEditor') public aceEditorDiv: ElementRef | undefined;\n @Output() contentChanged = new EventEmitter<string>();\n @Output() isValidChanged = new EventEmitter<boolean>();\n\n public aceEditor: any;\n\n constructor(private aceBuildsLoader: AceBuildsLoader, private zone: NgZone) {}\n\n @Input() public set content(value: string) {\n if (this.aceEditor) {\n this.silentContentUpdate = true;\n this.aceEditor.setValue(value, -1);\n this.silentContentUpdate = false;\n } else {\n this.initialContent = value;\n }\n }\n\n @Input() public set readonly(value: boolean) {\n if (this.aceEditor) {\n this.aceEditor.setReadOnly(value);\n } else {\n this.initialReadonly = value;\n }\n }\n\n @Input() public set editorMode(value: string) {\n if (this.aceEditor) {\n this.aceEditor.session.setMode(value);\n } else {\n this.initialEditorMode = value;\n }\n }\n\n public ngAfterViewInit(): void {\n this.aceBuildsLoader\n .loadScripts()\n .pipe(take(1))\n .subscribe(() => {\n this.zone.runOutsideAngular(() => {\n const ace: any = (window as any).ace;\n this.aceEditor = ace.edit(this.aceEditorDiv?.nativeElement);\n if (this.aceEditor) {\n this.aceEditor.$blockScrolling = Infinity;\n this.aceEditor.setTheme('ace/theme/github');\n this.aceEditor.session.setMode(this.initialEditorMode);\n this.aceEditor.setReadOnly(this.initialReadonly);\n this.aceEditor.setValue(this.initialContent, -1);\n\n this.aceEditor.on('change', () => {\n if (!this.silentContentUpdate) {\n this.zone.run(() => this.contentChanged.emit(this.aceEditor.getValue()));\n }\n });\n this.aceEditor.getSession().on('changeAnnotation', () => {\n const annotations: any[] = this.aceEditor.getSession().getAnnotations();\n const isValid = annotations.findIndex((annotation) => annotation.type === 'error') === -1;\n this.zone.run(() => this.isValidChanged.emit(isValid));\n });\n }\n });\n });\n }\n\n public ngOnDestroy(): void {\n this.aceEditor?.destroy();\n }\n}\n","<div #aceEditor class=\"ngssm-ace-editor-container\"></div>\n","import { NgModule } from '@angular/core';\nimport { AceEditorComponent } from './ace-editor/ace-editor.component';\n\n@NgModule({\n declarations: [AceEditorComponent],\n imports: [],\n exports: [AceEditorComponent]\n})\nexport class NgssmAceEditorModule {}\n","/*\n * Public API Surface of ngssm-ace-editor\n */\n\nexport * from './lib/ngssm-ace-editor.module';\nexport * from './lib/ace-editor/ace-editor.component';\nexport * from './lib/ace-builds-loader';\nexport * from './lib/ngssm-ace-editor-mode';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AceBuildsLoader"],"mappings":";;;;;;IAAY,mBAKX;AALD,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,eAAsB,CAAA;AACtB,IAAA,kBAAA,CAAA,YAAA,CAAA,GAAA,qBAAkC,CAAA;AAClC,IAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,iBAA0B,CAAA;AAC1B,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,eAAsB,CAAA;AACxB,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,GAK7B,EAAA,CAAA,CAAA;;MCIY,eAAe,CAAA;IAI1B,WAAsC,CAAA,QAAa,EAAU,MAAc,EAAA;QAArC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAK;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAHnE,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,aAAa,EAAW,CAAC;QACzC,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;KAEkD;IAExE,WAAW,GAAA;QAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAiD,8CAAA,EAAA,IAAI,CAAC,YAAY,CAAE,CAAA,CAAC,CAAC;QACxF,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;AACtC,SAAA;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACrD,QAAA,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC;AAChC,QAAA,MAAM,CAAC,GAAG,GAAG,mBAAmB,CAAC;AACjC,QAAA,MAAM,CAAC,MAAM,GAAG,MAAK;YAClB,MAAc,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YACxD,MAAc,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA,wBAAA,CAA0B,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA,yBAAA,CAA2B,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAEvC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;;AA3BU,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBAIN,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAJjB,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAKc,MAAM;2BAAC,QAAQ,CAAA;;;MCFjB,kBAAkB,CAAA;IAY7B,WAAoB,CAAA,eAAgC,EAAU,IAAY,EAAA;QAAtD,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAAU,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAXlE,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;QACpB,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC;AACvB,QAAA,IAAA,CAAA,iBAAiB,GAAW,kBAAkB,CAAC,IAAI,CAAC;QACpD,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAG1B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAU,CAAC;AAC5C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW,CAAC;KAIuB;IAE9E,IAAoB,OAAO,CAAC,KAAa,EAAA;QACvC,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AAClC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC7B,SAAA;KACF;IAED,IAAoB,QAAQ,CAAC,KAAc,EAAA;QACzC,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACnC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC9B,SAAA;KACF;IAED,IAAoB,UAAU,CAAC,KAAa,EAAA;QAC1C,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAChC,SAAA;KACF;IAEM,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,eAAe;AACjB,aAAA,WAAW,EAAE;AACb,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAC/B,gBAAA,MAAM,GAAG,GAAS,MAAc,CAAC,GAAG,CAAC;AACrC,gBAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;gBAC5D,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,oBAAA,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,QAAQ,CAAC;AAC1C,oBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;oBAC5C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBACvD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACjD,oBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;oBAEjD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAK;AAC/B,wBAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;4BAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC1E,yBAAA;AACH,qBAAC,CAAC,CAAC;oBACH,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,MAAK;wBACtD,MAAM,WAAW,GAAU,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,CAAC;wBACxE,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1F,wBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACzD,qBAAC,CAAC,CAAC;AACJ,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACN;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;KAC3B;;+GAxEU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,oUCX/B,+DACA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,CAAA,CAAA;2FDUa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,+DAAA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,CAAA;wHAUG,YAAY,EAAA,CAAA;sBAA1C,SAAS;uBAAC,WAAW,CAAA;gBACZ,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAMa,OAAO,EAAA,CAAA;sBAA1B,KAAK;gBAUc,QAAQ,EAAA,CAAA;sBAA3B,KAAK;gBAQc,UAAU,EAAA,CAAA;sBAA7B,KAAK;;;MEnCK,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kHAApB,oBAAoB,EAAA,YAAA,EAAA,CAJhB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAEvB,kBAAkB,CAAA,EAAA,CAAA,CAAA;kHAEjB,oBAAoB,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,kBAAkB,CAAC;AAClC,oBAAA,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC9B,iBAAA,CAAA;;;ACPD;;AAEG;;ACFH;;AAEG;;;;"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { Logger } from 'ngssm-toolkit';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class AceBuildsLoader {
|
|
5
|
+
private document;
|
|
6
|
+
private logger;
|
|
7
|
+
private _loading$;
|
|
8
|
+
private _initialized;
|
|
9
|
+
constructor(document: any, logger: Logger);
|
|
10
|
+
loadScripts(): Observable<boolean>;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AceBuildsLoader, never>;
|
|
12
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AceBuildsLoader>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AfterViewInit, ElementRef, EventEmitter, NgZone, OnDestroy } from '@angular/core';
|
|
2
|
+
import { AceBuildsLoader } from '../ace-builds-loader';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class AceEditorComponent implements AfterViewInit, OnDestroy {
|
|
5
|
+
private aceBuildsLoader;
|
|
6
|
+
private zone;
|
|
7
|
+
private initialContent;
|
|
8
|
+
private initialReadonly;
|
|
9
|
+
private initialEditorMode;
|
|
10
|
+
private silentContentUpdate;
|
|
11
|
+
aceEditorDiv: ElementRef | undefined;
|
|
12
|
+
contentChanged: EventEmitter<string>;
|
|
13
|
+
isValidChanged: EventEmitter<boolean>;
|
|
14
|
+
aceEditor: any;
|
|
15
|
+
constructor(aceBuildsLoader: AceBuildsLoader, zone: NgZone);
|
|
16
|
+
set content(value: string);
|
|
17
|
+
set readonly(value: boolean);
|
|
18
|
+
set editorMode(value: string);
|
|
19
|
+
ngAfterViewInit(): void;
|
|
20
|
+
ngOnDestroy(): void;
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AceEditorComponent, never>;
|
|
22
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AceEditorComponent, "ngssm-ace-editor", never, { "content": "content"; "readonly": "readonly"; "editorMode": "editorMode"; }, { "contentChanged": "contentChanged"; "isValidChanged": "isValidChanged"; }, never, never, false>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./ace-editor/ace-editor.component";
|
|
3
|
+
export declare class NgssmAceEditorModule {
|
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgssmAceEditorModule, never>;
|
|
5
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NgssmAceEditorModule, [typeof i1.AceEditorComponent], never, [typeof i1.AceEditorComponent]>;
|
|
6
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<NgssmAceEditorModule>;
|
|
7
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ngssm-ace-editor",
|
|
3
|
+
"version": "14.1.4",
|
|
4
|
+
"description": "NgSsm - Simple warpper of ace-editor.",
|
|
5
|
+
"author": "Lion Marc",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"peerDependencies": {
|
|
8
|
+
"@angular/common": "^14.2.0",
|
|
9
|
+
"@angular/core": "^14.2.0"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"tslib": "^2.3.0"
|
|
13
|
+
},
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "https://github.com/LionMarc/ng-simple-state-management",
|
|
17
|
+
"directory": "projects/ngssm-ace-editor"
|
|
18
|
+
},
|
|
19
|
+
"module": "fesm2015/ngssm-ace-editor.mjs",
|
|
20
|
+
"es2020": "fesm2020/ngssm-ace-editor.mjs",
|
|
21
|
+
"esm2020": "esm2020/ngssm-ace-editor.mjs",
|
|
22
|
+
"fesm2020": "fesm2020/ngssm-ace-editor.mjs",
|
|
23
|
+
"fesm2015": "fesm2015/ngssm-ace-editor.mjs",
|
|
24
|
+
"typings": "index.d.ts",
|
|
25
|
+
"exports": {
|
|
26
|
+
"./package.json": {
|
|
27
|
+
"default": "./package.json"
|
|
28
|
+
},
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./index.d.ts",
|
|
31
|
+
"esm2020": "./esm2020/ngssm-ace-editor.mjs",
|
|
32
|
+
"es2020": "./fesm2020/ngssm-ace-editor.mjs",
|
|
33
|
+
"es2015": "./fesm2015/ngssm-ace-editor.mjs",
|
|
34
|
+
"node": "./fesm2015/ngssm-ace-editor.mjs",
|
|
35
|
+
"default": "./fesm2020/ngssm-ace-editor.mjs"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"sideEffects": false
|
|
39
|
+
}
|
package/public-api.d.ts
ADDED