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 ADDED
@@ -0,0 +1,3 @@
1
+ # ngssm-ace-editor
2
+
3
+ Simple wrapper of [ace-editor](https://ace.c9.io/).
@@ -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":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="ngssm-ace-editor" />
5
+ export * from './public-api';
@@ -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,6 @@
1
+ export declare enum NgssmAceEditorMode {
2
+ text = "ace/mode/text",
3
+ javascript = "ace/mode/javascript",
4
+ python = "ace/mode/python",
5
+ json = "ace/mode/json"
6
+ }
@@ -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
+ }
@@ -0,0 +1,4 @@
1
+ export * from './lib/ngssm-ace-editor.module';
2
+ export * from './lib/ace-editor/ace-editor.component';
3
+ export * from './lib/ace-builds-loader';
4
+ export * from './lib/ngssm-ace-editor-mode';