ngssm-ace-editor 16.0.1 → 16.0.3

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.
@@ -1,15 +1,18 @@
1
1
  import { DOCUMENT } from '@angular/common';
2
2
  import { Inject, Injectable } from '@angular/core';
3
- import { ReplaySubject } from 'rxjs';
3
+ import { BehaviorSubject } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "ngssm-store";
6
6
  class AceBuildsLoader {
7
7
  constructor(document, logger) {
8
8
  this.document = document;
9
9
  this.logger = logger;
10
- this._loading$ = new ReplaySubject();
10
+ this._loading$ = new BehaviorSubject(true);
11
11
  this._initialized = false;
12
12
  }
13
+ get loading$() {
14
+ return this._loading$.asObservable();
15
+ }
13
16
  loadScripts() {
14
17
  this.logger.debug(`[ace-editor] trying to get ace, isInitialized=${this._initialized}`);
15
18
  if (this._initialized) {
@@ -22,7 +25,7 @@ class AceBuildsLoader {
22
25
  window.ace.config.set('basePath', 'ace-builds');
23
26
  window.ace.config.set('workerPath', 'ace-builds');
24
27
  this.logger.information(`[ace-editor] ace loaded.`);
25
- this._loading$.next(true);
28
+ this._loading$.next(false);
26
29
  };
27
30
  this.logger.information(`[ace-editor] loading ace.`);
28
31
  this.document.body.appendChild(script);
@@ -42,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
42
45
  type: Inject,
43
46
  args: [DOCUMENT]
44
47
  }] }, { type: i1.Logger }]; } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNlLWJ1aWxkcy1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1hY2UtZWRpdG9yL3NyYy9saWIvYWNlLWJ1aWxkcy1sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUlqRCxNQUdhLGVBQWU7SUFJMUIsWUFBc0MsUUFBYSxFQUFVLE1BQWM7UUFBckMsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFIbkUsY0FBUyxHQUFHLElBQUksYUFBYSxFQUFXLENBQUM7UUFDekMsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFFaUQsQ0FBQztJQUV4RSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGlEQUFpRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUN4RixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3RDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsTUFBTSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztRQUNoQyxNQUFNLENBQUMsR0FBRyxHQUFHLG1CQUFtQixDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO1lBQ2xCLE1BQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDeEQsTUFBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDOzhHQTNCVSxlQUFlLGtCQUlOLFFBQVE7a0hBSmpCLGVBQWUsY0FGZCxNQUFNOztTQUVQLGVBQWU7MkZBQWYsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUtjLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFjZUJ1aWxkc0xvYWRlciB7XG4gIHByaXZhdGUgX2xvYWRpbmckID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIpIHt9XG5cbiAgcHVibGljIGxvYWRTY3JpcHRzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBbYWNlLWVkaXRvcl0gdHJ5aW5nIHRvIGdldCBhY2UsIGlzSW5pdGlhbGl6ZWQ9JHt0aGlzLl9pbml0aWFsaXplZH1gKTtcbiAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzY3JpcHQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgc2NyaXB0LnNyYyA9ICdhY2UtYnVpbGRzL2FjZS5qcyc7XG4gICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICh3aW5kb3cgYXMgYW55KS5hY2UuY29uZmlnLnNldCgnYmFzZVBhdGgnLCAnYWNlLWJ1aWxkcycpO1xuICAgICAgKHdpbmRvdyBhcyBhbnkpLmFjZS5jb25maWcuc2V0KCd3b3JrZXJQYXRoJywgJ2FjZS1idWlsZHMnKTtcbiAgICAgIHRoaXMubG9nZ2VyLmluZm9ybWF0aW9uKGBbYWNlLWVkaXRvcl0gYWNlIGxvYWRlZC5gKTtcbiAgICAgIHRoaXMuX2xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgfTtcblxuICAgIHRoaXMubG9nZ2VyLmluZm9ybWF0aW9uKGBbYWNlLWVkaXRvcl0gbG9hZGluZyBhY2UuYCk7XG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XG5cbiAgICB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG59XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNlLWJ1aWxkcy1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1hY2UtZWRpdG9yL3NyYy9saWIvYWNlLWJ1aWxkcy1sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7OztBQUluRCxNQUdhLGVBQWU7SUFJMUIsWUFBc0MsUUFBYSxFQUFVLE1BQWM7UUFBckMsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFIbkUsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQy9DLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBRWlELENBQUM7SUFFL0UsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxpREFBaUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDeEYsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN0QztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7UUFDaEMsTUFBTSxDQUFDLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQztRQUNqQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNsQixNQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3hELE1BQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsQ0FBQzs4R0EvQlUsZUFBZSxrQkFJTixRQUFRO2tIQUpqQixlQUFlLGNBRmQsTUFBTTs7U0FFUCxlQUFlOzJGQUFmLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFLYyxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFjZUJ1aWxkc0xvYWRlciB7XG4gIHByaXZhdGUgX2xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIpIHt9XG5cbiAgcHVibGljIGdldCBsb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgbG9hZFNjcmlwdHMoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoYFthY2UtZWRpdG9yXSB0cnlpbmcgdG8gZ2V0IGFjZSwgaXNJbml0aWFsaXplZD0ke3RoaXMuX2luaXRpYWxpemVkfWApO1xuICAgIGlmICh0aGlzLl9pbml0aWFsaXplZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICBzY3JpcHQuc3JjID0gJ2FjZS1idWlsZHMvYWNlLmpzJztcbiAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgICAgKHdpbmRvdyBhcyBhbnkpLmFjZS5jb25maWcuc2V0KCdiYXNlUGF0aCcsICdhY2UtYnVpbGRzJyk7XG4gICAgICAod2luZG93IGFzIGFueSkuYWNlLmNvbmZpZy5zZXQoJ3dvcmtlclBhdGgnLCAnYWNlLWJ1aWxkcycpO1xuICAgICAgdGhpcy5sb2dnZXIuaW5mb3JtYXRpb24oYFthY2UtZWRpdG9yXSBhY2UgbG9hZGVkLmApO1xuICAgICAgdGhpcy5fbG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgfTtcblxuICAgIHRoaXMubG9nZ2VyLmluZm9ybWF0aW9uKGBbYWNlLWVkaXRvcl0gbG9hZGluZyBhY2UuYCk7XG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XG5cbiAgICB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG59XG4iXX0=
@@ -1,10 +1,12 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
- import { take } from 'rxjs';
3
+ import { filter, take } from 'rxjs';
4
+ import { NgssmComponentOverlayDirective } from 'ngssm-toolkit';
4
5
  import { NgssmAceEditorApi } from '../ngssm-ace-editor-api';
5
6
  import { NgssmAceEditorMode } from '../ngssm-ace-editor-mode';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "../ace-builds-loader";
9
+ import * as i2 from "@angular/common";
8
10
  class NgssmAceEditorComponent {
9
11
  constructor(aceBuildsLoader, zone) {
10
12
  this.aceBuildsLoader = aceBuildsLoader;
@@ -17,6 +19,9 @@ class NgssmAceEditorComponent {
17
19
  this.isValidChanged = new EventEmitter();
18
20
  this.editorReady = new EventEmitter();
19
21
  }
22
+ get loading$() {
23
+ return this.aceBuildsLoader.loading$;
24
+ }
20
25
  set content(value) {
21
26
  if (this.api?.aceEditor) {
22
27
  this.silentContentUpdate = true;
@@ -46,7 +51,7 @@ class NgssmAceEditorComponent {
46
51
  ngAfterViewInit() {
47
52
  this.aceBuildsLoader
48
53
  .loadScripts()
49
- .pipe(take(1))
54
+ .pipe(filter((v) => !v), take(1))
50
55
  .subscribe(() => {
51
56
  this.zone.runOutsideAngular(() => {
52
57
  const ace = window.ace;
@@ -77,12 +82,12 @@ class NgssmAceEditorComponent {
77
82
  this.api?.aceEditor?.destroy();
78
83
  }
79
84
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgssmAceEditorComponent, deps: [{ token: i1.AceBuildsLoader }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
80
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgssmAceEditorComponent, isStandalone: true, selector: "ngssm-ace-editor", inputs: { content: "content", readonly: "readonly", editorMode: "editorMode" }, outputs: { contentChanged: "contentChanged", isValidChanged: "isValidChanged", editorReady: "editorReady" }, 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"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
85
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgssmAceEditorComponent, isStandalone: true, selector: "ngssm-ace-editor", inputs: { content: "content", readonly: "readonly", editorMode: "editorMode" }, outputs: { contentChanged: "contentChanged", isValidChanged: "isValidChanged", editorReady: "editorReady" }, viewQueries: [{ propertyName: "aceEditorDiv", first: true, predicate: ["aceEditor"], descendants: true }], ngImport: i0, template: "<div #aceEditor class=\"ngssm-ace-editor-container\" [ngssmDisplayOverlay]=\"(loading$ | async) === true\"></div>", styles: [":host{display:flex;flex-direction:column}:host .ngssm-ace-editor-container{flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "directive", type: NgssmComponentOverlayDirective, selector: "[ngssmDisplayOverlay]", inputs: ["overlayTemplate", "overlayComponent", "overlayMessage", "ngssmDisplayOverlay"] }] }); }
81
86
  }
82
87
  export { NgssmAceEditorComponent };
83
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgssmAceEditorComponent, decorators: [{
84
89
  type: Component,
85
- args: [{ selector: 'ngssm-ace-editor', standalone: true, imports: [CommonModule], 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"] }]
90
+ args: [{ selector: 'ngssm-ace-editor', standalone: true, imports: [CommonModule, NgssmComponentOverlayDirective], template: "<div #aceEditor class=\"ngssm-ace-editor-container\" [ngssmDisplayOverlay]=\"(loading$ | async) === true\"></div>", styles: [":host{display:flex;flex-direction:column}:host .ngssm-ace-editor-container{flex:1}\n"] }]
86
91
  }], ctorParameters: function () { return [{ type: i1.AceBuildsLoader }, { type: i0.NgZone }]; }, propDecorators: { aceEditorDiv: [{
87
92
  type: ViewChild,
88
93
  args: ['aceEditor']
@@ -99,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
99
104
  }], editorMode: [{
100
105
  type: Input
101
106
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tYWNlLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1hY2UtZWRpdG9yL3NyYy9saWIvbmdzc20tYWNlLWVkaXRvci9uZ3NzbS1hY2UtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLWFjZS1lZGl0b3Ivc3JjL2xpYi9uZ3NzbS1hY2UtZWRpdG9yL25nc3NtLWFjZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBRTlELE1BT2EsdUJBQXVCO0lBYWxDLFlBQW9CLGVBQWdDLEVBQVUsSUFBWTtRQUF0RCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBWmxFLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLHNCQUFpQixHQUFXLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQUNwRCx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFHbkIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM3QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO0lBSVEsQ0FB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QUFDLFVBQVUsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO3dCQUM3RSxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUMxRixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO29CQUN6RCxDQUFDLENBQUMsQ0FBQztvQkFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ2pDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2pDLENBQUM7OEdBNUVVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLG9YQ2ZwQywrREFDQSw2SURVWSxZQUFZOztTQUlYLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQVBuQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7MkhBVVEsWUFBWTtzQkFBMUMsU0FBUzt1QkFBQyxXQUFXO2dCQUNMLGNBQWM7c0JBQTlCLE1BQU07Z0JBQ1UsY0FBYztzQkFBOUIsTUFBTTtnQkFDVSxXQUFXO3NCQUEzQixNQUFNO2dCQU1hLE9BQU87c0JBQTFCLEtBQUs7Z0JBVWMsUUFBUTtzQkFBM0IsS0FBSztnQkFRYyxVQUFVO3NCQUE3QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFjZUJ1aWxkc0xvYWRlciB9IGZyb20gJy4uL2FjZS1idWlsZHMtbG9hZGVyJztcbmltcG9ydCB7IE5nc3NtQWNlRWRpdG9yQXBpIH0gZnJvbSAnLi4vbmdzc20tYWNlLWVkaXRvci1hcGknO1xuaW1wb3J0IHsgTmdzc21BY2VFZGl0b3JNb2RlIH0gZnJvbSAnLi4vbmdzc20tYWNlLWVkaXRvci1tb2RlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdzc20tYWNlLWVkaXRvcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vbmdzc20tYWNlLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25nc3NtLWFjZS1lZGl0b3IuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3NzbUFjZUVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgaW5pdGlhbENvbnRlbnQgPSAnJztcbiAgcHJpdmF0ZSBpbml0aWFsUmVhZG9ubHkgPSB0cnVlO1xuICBwcml2YXRlIGluaXRpYWxFZGl0b3JNb2RlOiBzdHJpbmcgPSBOZ3NzbUFjZUVkaXRvck1vZGUudGV4dDtcbiAgcHJpdmF0ZSBzaWxlbnRDb250ZW50VXBkYXRlID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnYWNlRWRpdG9yJykgcHVibGljIGFjZUVkaXRvckRpdjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgQE91dHB1dCgpIHB1YmxpYyBjb250ZW50Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGlzVmFsaWRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGVkaXRvclJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxOZ3NzbUFjZUVkaXRvckFwaT4oKTtcblxuICBwdWJsaWMgYXBpOiBOZ3NzbUFjZUVkaXRvckFwaSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFjZUJ1aWxkc0xvYWRlcjogQWNlQnVpbGRzTG9hZGVyLCBwcml2YXRlIHpvbmU6IE5nWm9uZSkge31cblxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGNvbnRlbnQodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmFwaT8uYWNlRWRpdG9yKSB7XG4gICAgICB0aGlzLnNpbGVudENvbnRlbnRVcGRhdGUgPSB0cnVlO1xuICAgICAgdGhpcy5hcGkuYWNlRWRpdG9yLnNldFZhbHVlKHZhbHVlLCAtMSk7XG4gICAgICB0aGlzLnNpbGVudENvbnRlbnRVcGRhdGUgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsQ29udGVudCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5hcGk/LmFjZUVkaXRvcikge1xuICAgICAgdGhpcy5hcGkuYWNlRWRpdG9yLnNldFJlYWRPbmx5KHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsUmVhZG9ubHkgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGVkaXRvck1vZGUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmFwaT8uYWNlRWRpdG9yKSB7XG4gICAgICB0aGlzLmFwaS5hY2VFZGl0b3Iuc2Vzc2lvbi5zZXRNb2RlKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsRWRpdG9yTW9kZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hY2VCdWlsZHNMb2FkZXJcbiAgICAgIC5sb2FkU2NyaXB0cygpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWNlOiBhbnkgPSAod2luZG93IGFzIGFueSkuYWNlO1xuICAgICAgICAgIGNvbnN0IGFjZUVkaXRvciA9IGFjZS5lZGl0KHRoaXMuYWNlRWRpdG9yRGl2Py5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICBpZiAoYWNlRWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmFwaSA9IG5ldyBOZ3NzbUFjZUVkaXRvckFwaShhY2VFZGl0b3IpO1xuICAgICAgICAgICAgdGhpcy5hcGkuYWNlRWRpdG9yLiRibG9ja1Njcm9sbGluZyA9IEluZmluaXR5O1xuICAgICAgICAgICAgdGhpcy5hcGkuYWNlRWRpdG9yLnNldFRoZW1lKCdhY2UvdGhlbWUvZ2l0aHViJyk7XG4gICAgICAgICAgICB0aGlzLmFwaS5hY2VFZGl0b3Iuc2Vzc2lvbi5zZXRNb2RlKHRoaXMuaW5pdGlhbEVkaXRvck1vZGUpO1xuICAgICAgICAgICAgdGhpcy5hcGkuYWNlRWRpdG9yLnNldFJlYWRPbmx5KHRoaXMuaW5pdGlhbFJlYWRvbmx5KTtcbiAgICAgICAgICAgIHRoaXMuYXBpLmFjZUVkaXRvci5zZXRWYWx1ZSh0aGlzLmluaXRpYWxDb250ZW50LCAtMSk7XG5cbiAgICAgICAgICAgIHRoaXMuYXBpLmFjZUVkaXRvci5vbignY2hhbmdlJywgKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXRoaXMuc2lsZW50Q29udGVudFVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5jb250ZW50Q2hhbmdlZC5lbWl0KHRoaXMuYXBpPy5hY2VFZGl0b3IuZ2V0VmFsdWUoKSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYXBpLmFjZUVkaXRvci5nZXRTZXNzaW9uKCkub24oJ2NoYW5nZUFubm90YXRpb24nLCAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGFubm90YXRpb25zOiBhbnlbXSA9IHRoaXMuYXBpPy5hY2VFZGl0b3IuZ2V0U2Vzc2lvbigpLmdldEFubm90YXRpb25zKCk7XG4gICAgICAgICAgICAgIGNvbnN0IGlzVmFsaWQgPSBhbm5vdGF0aW9ucy5maW5kSW5kZXgoKGFubm90YXRpb24pID0+IGFubm90YXRpb24udHlwZSA9PT0gJ2Vycm9yJykgPT09IC0xO1xuICAgICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMuaXNWYWxpZENoYW5nZWQuZW1pdChpc1ZhbGlkKSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5lZGl0b3JSZWFkeS5lbWl0KHRoaXMuYXBpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hcGk/LmFjZUVkaXRvcj8uZGVzdHJveSgpO1xuICB9XG59XG4iLCI8ZGl2ICNhY2VFZGl0b3IgY2xhc3M9XCJuZ3NzbS1hY2UtZWRpdG9yLWNvbnRhaW5lclwiPjwvZGl2PlxuIl19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tYWNlLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1hY2UtZWRpdG9yL3NyYy9saWIvbmdzc20tYWNlLWVkaXRvci9uZ3NzbS1hY2UtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLWFjZS1lZGl0b3Ivc3JjL2xpYi9uZ3NzbS1hY2UtZWRpdG9yL25nc3NtLWFjZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFjLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBRTlELE1BT2EsdUJBQXVCO0lBYWxDLFlBQW9CLGVBQWdDLEVBQVUsSUFBWTtRQUF0RCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBWmxFLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLHNCQUFpQixHQUFXLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQUNwRCx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFHbkIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVB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QUEzQixNQUFNO2dCQVVhLE9BQU87c0JBQTFCLEtBQUs7Z0JBVWMsUUFBUTtzQkFBM0IsS0FBSztnQkFRYyxVQUFVO3NCQUE3QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTmdzc21Db21wb25lbnRPdmVybGF5RGlyZWN0aXZlIH0gZnJvbSAnbmdzc20tdG9vbGtpdCc7XG5cbmltcG9ydCB7IEFjZUJ1aWxkc0xvYWRlciB9IGZyb20gJy4uL2FjZS1idWlsZHMtbG9hZGVyJztcbmltcG9ydCB7IE5nc3NtQWNlRWRpdG9yQXBpIH0gZnJvbSAnLi4vbmdzc20tYWNlLWVkaXRvci1hcGknO1xuaW1wb3J0IHsgTmdzc21BY2VFZGl0b3JNb2RlIH0gZnJvbSAnLi4vbmdzc20tYWNlLWVkaXRvci1tb2RlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdzc20tYWNlLWVkaXRvcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE5nc3NtQ29tcG9uZW50T3ZlcmxheURpcmVjdGl2ZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3NzbS1hY2UtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmdzc20tYWNlLWVkaXRvci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5nc3NtQWNlRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBpbml0aWFsQ29udGVudCA9ICcnO1xuICBwcml2YXRlIGluaXRpYWxSZWFkb25seSA9IHRydWU7XG4gIHByaXZhdGUgaW5pdGlhbEVkaXRvck1vZGU6IHN0cmluZyA9IE5nc3NtQWNlRWRpdG9yTW9kZS50ZXh0O1xuICBwcml2YXRlIHNpbGVudENvbnRlbnRVcGRhdGUgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdhY2VFZGl0b3InKSBwdWJsaWMgYWNlRWRpdG9yRGl2OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuICBAT3V0cHV0KCkgcHVibGljIGNvbnRlbnRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaXNWYWxpZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgZWRpdG9yUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPE5nc3NtQWNlRWRpdG9yQXBpPigpO1xuXG4gIHB1YmxpYyBhcGk6IE5nc3NtQWNlRWRpdG9yQXBpIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWNlQnVpbGRzTG9hZGVyOiBBY2VCdWlsZHNMb2FkZXIsIHByaXZhdGUgem9uZTogTmdab25lKSB7fVxuXG4gIHB1YmxpYyBnZXQgbG9hZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYWNlQnVpbGRzTG9hZGVyLmxvYWRpbmckO1xuICB9XG5cbiAgQElucHV0KCkgcHVibGljIHNldCBjb250ZW50KHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5hcGk/LmFjZUVkaXRvcikge1xuICAgICAgdGhpcy5zaWxlbnRDb250ZW50VXBkYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuYXBpLmFjZUVkaXRvci5zZXRWYWx1ZSh2YWx1ZSwgLTEpO1xuICAgICAgdGhpcy5zaWxlbnRDb250ZW50VXBkYXRlID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdGlhbENvbnRlbnQgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuYXBpPy5hY2VFZGl0b3IpIHtcbiAgICAgIHRoaXMuYXBpLmFjZUVkaXRvci5zZXRSZWFkT25seSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdGlhbFJlYWRvbmx5ID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgcHVibGljIHNldCBlZGl0b3JNb2RlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5hcGk/LmFjZUVkaXRvcikge1xuICAgICAgdGhpcy5hcGkuYWNlRWRpdG9yLnNlc3Npb24uc2V0TW9kZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdGlhbEVkaXRvck1vZGUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWNlQnVpbGRzTG9hZGVyXG4gICAgICAubG9hZFNjcmlwdHMoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigodikgPT4gIXYpLFxuICAgICAgICB0YWtlKDEpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBhY2U6IGFueSA9ICh3aW5kb3cgYXMgYW55KS5hY2U7XG4gICAgICAgICAgY29uc3QgYWNlRWRpdG9yID0gYWNlLmVkaXQodGhpcy5hY2VFZGl0b3JEaXY/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgIGlmIChhY2VFZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuYXBpID0gbmV3IE5nc3NtQWNlRWRpdG9yQXBpKGFjZUVkaXRvcik7XG4gICAgICAgICAgICB0aGlzLmFwaS5hY2VFZGl0b3IuJGJsb2NrU2Nyb2xsaW5nID0gSW5maW5pdHk7XG4gICAgICAgICAgICB0aGlzLmFwaS5hY2VFZGl0b3Iuc2V0VGhlbWUoJ2FjZS90aGVtZS9naXRodWInKTtcbiAgICAgICAgICAgIHRoaXMuYXBpLmFjZUVkaXRvci5zZXNzaW9uLnNldE1vZGUodGhpcy5pbml0aWFsRWRpdG9yTW9kZSk7XG4gICAgICAgICAgICB0aGlzLmFwaS5hY2VFZGl0b3Iuc2V0UmVhZE9ubHkodGhpcy5pbml0aWFsUmVhZG9ubHkpO1xuICAgICAgICAgICAgdGhpcy5hcGkuYWNlRWRpdG9yLnNldFZhbHVlKHRoaXMuaW5pdGlhbENvbnRlbnQsIC0xKTtcblxuICAgICAgICAgICAgdGhpcy5hcGkuYWNlRWRpdG9yLm9uKCdjaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghdGhpcy5zaWxlbnRDb250ZW50VXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmNvbnRlbnRDaGFuZ2VkLmVtaXQodGhpcy5hcGk/LmFjZUVkaXRvci5nZXRWYWx1ZSgpKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5hcGkuYWNlRWRpdG9yLmdldFNlc3Npb24oKS5vbignY2hhbmdlQW5ub3RhdGlvbicsICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgYW5ub3RhdGlvbnM6IGFueVtdID0gdGhpcy5hcGk/LmFjZUVkaXRvci5nZXRTZXNzaW9uKCkuZ2V0QW5ub3RhdGlvbnMoKTtcbiAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IGFubm90YXRpb25zLmZpbmRJbmRleCgoYW5ub3RhdGlvbikgPT4gYW5ub3RhdGlvbi50eXBlID09PSAnZXJyb3InKSA9PT0gLTE7XG4gICAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5pc1ZhbGlkQ2hhbmdlZC5lbWl0KGlzVmFsaWQpKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmVkaXRvclJlYWR5LmVtaXQodGhpcy5hcGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmFwaT8uYWNlRWRpdG9yPy5kZXN0cm95KCk7XG4gIH1cbn1cbiIsIjxkaXYgI2FjZUVkaXRvciBjbGFzcz1cIm5nc3NtLWFjZS1lZGl0b3ItY29udGFpbmVyXCIgW25nc3NtRGlzcGxheU92ZXJsYXldPVwiKGxvYWRpbmckIHwgYXN5bmMpID09PSB0cnVlXCI+PC9kaXY+Il19
@@ -1,7 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Inject, EventEmitter, Component, ViewChild, Output, Input } from '@angular/core';
3
+ import * as i2 from '@angular/common';
3
4
  import { DOCUMENT, CommonModule } from '@angular/common';
4
- import { ReplaySubject, take } from 'rxjs';
5
+ import { BehaviorSubject, filter, take } from 'rxjs';
6
+ import { NgssmComponentOverlayDirective } from 'ngssm-toolkit';
5
7
  import * as i1 from 'ngssm-store';
6
8
 
7
9
  class NgssmAceEditorApi {
@@ -32,9 +34,12 @@ class AceBuildsLoader {
32
34
  constructor(document, logger) {
33
35
  this.document = document;
34
36
  this.logger = logger;
35
- this._loading$ = new ReplaySubject();
37
+ this._loading$ = new BehaviorSubject(true);
36
38
  this._initialized = false;
37
39
  }
40
+ get loading$() {
41
+ return this._loading$.asObservable();
42
+ }
38
43
  loadScripts() {
39
44
  this.logger.debug(`[ace-editor] trying to get ace, isInitialized=${this._initialized}`);
40
45
  if (this._initialized) {
@@ -47,7 +52,7 @@ class AceBuildsLoader {
47
52
  window.ace.config.set('basePath', 'ace-builds');
48
53
  window.ace.config.set('workerPath', 'ace-builds');
49
54
  this.logger.information(`[ace-editor] ace loaded.`);
50
- this._loading$.next(true);
55
+ this._loading$.next(false);
51
56
  };
52
57
  this.logger.information(`[ace-editor] loading ace.`);
53
58
  this.document.body.appendChild(script);
@@ -79,6 +84,9 @@ class NgssmAceEditorComponent {
79
84
  this.isValidChanged = new EventEmitter();
80
85
  this.editorReady = new EventEmitter();
81
86
  }
87
+ get loading$() {
88
+ return this.aceBuildsLoader.loading$;
89
+ }
82
90
  set content(value) {
83
91
  if (this.api?.aceEditor) {
84
92
  this.silentContentUpdate = true;
@@ -108,7 +116,7 @@ class NgssmAceEditorComponent {
108
116
  ngAfterViewInit() {
109
117
  this.aceBuildsLoader
110
118
  .loadScripts()
111
- .pipe(take(1))
119
+ .pipe(filter((v) => !v), take(1))
112
120
  .subscribe(() => {
113
121
  this.zone.runOutsideAngular(() => {
114
122
  const ace = window.ace;
@@ -139,11 +147,11 @@ class NgssmAceEditorComponent {
139
147
  this.api?.aceEditor?.destroy();
140
148
  }
141
149
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgssmAceEditorComponent, deps: [{ token: AceBuildsLoader }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgssmAceEditorComponent, isStandalone: true, selector: "ngssm-ace-editor", inputs: { content: "content", readonly: "readonly", editorMode: "editorMode" }, outputs: { contentChanged: "contentChanged", isValidChanged: "isValidChanged", editorReady: "editorReady" }, 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"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
150
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgssmAceEditorComponent, isStandalone: true, selector: "ngssm-ace-editor", inputs: { content: "content", readonly: "readonly", editorMode: "editorMode" }, outputs: { contentChanged: "contentChanged", isValidChanged: "isValidChanged", editorReady: "editorReady" }, viewQueries: [{ propertyName: "aceEditorDiv", first: true, predicate: ["aceEditor"], descendants: true }], ngImport: i0, template: "<div #aceEditor class=\"ngssm-ace-editor-container\" [ngssmDisplayOverlay]=\"(loading$ | async) === true\"></div>", styles: [":host{display:flex;flex-direction:column}:host .ngssm-ace-editor-container{flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "directive", type: NgssmComponentOverlayDirective, selector: "[ngssmDisplayOverlay]", inputs: ["overlayTemplate", "overlayComponent", "overlayMessage", "ngssmDisplayOverlay"] }] }); }
143
151
  }
144
152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgssmAceEditorComponent, decorators: [{
145
153
  type: Component,
146
- args: [{ selector: 'ngssm-ace-editor', standalone: true, imports: [CommonModule], 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"] }]
154
+ args: [{ selector: 'ngssm-ace-editor', standalone: true, imports: [CommonModule, NgssmComponentOverlayDirective], template: "<div #aceEditor class=\"ngssm-ace-editor-container\" [ngssmDisplayOverlay]=\"(loading$ | async) === true\"></div>", styles: [":host{display:flex;flex-direction:column}:host .ngssm-ace-editor-container{flex:1}\n"] }]
147
155
  }], ctorParameters: function () { return [{ type: AceBuildsLoader }, { type: i0.NgZone }]; }, propDecorators: { aceEditorDiv: [{
148
156
  type: ViewChild,
149
157
  args: ['aceEditor']
@@ -1 +1 @@
1
- {"version":3,"file":"ngssm-ace-editor.mjs","sources":["../../../projects/ngssm-ace-editor/src/lib/ngssm-ace-editor-api.ts","../../../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/ngssm-ace-editor/ngssm-ace-editor.component.ts","../../../projects/ngssm-ace-editor/src/lib/ngssm-ace-editor/ngssm-ace-editor.component.html","../../../projects/ngssm-ace-editor/src/public-api.ts","../../../projects/ngssm-ace-editor/src/ngssm-ace-editor.ts"],"sourcesContent":["export class NgssmAceEditorApi {\n private readonly markerIds: number[] = [];\n\n constructor(public aceEditor: any) {}\n\n public addRowsMarker(firstRow: number, lastRow: number, cssClass: string): void {\n const result = (window as any).ace.require('ace/range');\n const markerId = this.aceEditor.getSession().addMarker(new result.Range(firstRow, 0, lastRow, Infinity), cssClass, 'fullLine');\n this.markerIds.push(markerId);\n }\n\n public clearAllRowsMarkers(): void {\n this.markerIds.forEach((markerId) => this.aceEditor.getSession().removeMarker(markerId));\n this.markerIds.splice(0);\n }\n}\n","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-store';\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 { CommonModule } from '@angular/common';\nimport { take } from 'rxjs';\n\nimport { AceBuildsLoader } from '../ace-builds-loader';\nimport { NgssmAceEditorApi } from '../ngssm-ace-editor-api';\nimport { NgssmAceEditorMode } from '../ngssm-ace-editor-mode';\n\n@Component({\n selector: 'ngssm-ace-editor',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ngssm-ace-editor.component.html',\n styleUrls: ['./ngssm-ace-editor.component.scss']\n})\nexport class NgssmAceEditorComponent 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() public contentChanged = new EventEmitter<string>();\n @Output() public isValidChanged = new EventEmitter<boolean>();\n @Output() public editorReady = new EventEmitter<NgssmAceEditorApi>();\n\n public api: NgssmAceEditorApi | undefined;\n\n constructor(private aceBuildsLoader: AceBuildsLoader, private zone: NgZone) {}\n\n @Input() public set content(value: string) {\n if (this.api?.aceEditor) {\n this.silentContentUpdate = true;\n this.api.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.api?.aceEditor) {\n this.api.aceEditor.setReadOnly(value);\n } else {\n this.initialReadonly = value;\n }\n }\n\n @Input() public set editorMode(value: string) {\n if (this.api?.aceEditor) {\n this.api.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 const aceEditor = ace.edit(this.aceEditorDiv?.nativeElement);\n if (aceEditor) {\n this.api = new NgssmAceEditorApi(aceEditor);\n this.api.aceEditor.$blockScrolling = Infinity;\n this.api.aceEditor.setTheme('ace/theme/github');\n this.api.aceEditor.session.setMode(this.initialEditorMode);\n this.api.aceEditor.setReadOnly(this.initialReadonly);\n this.api.aceEditor.setValue(this.initialContent, -1);\n\n this.api.aceEditor.on('change', () => {\n if (!this.silentContentUpdate) {\n this.zone.run(() => this.contentChanged.emit(this.api?.aceEditor.getValue()));\n }\n });\n this.api.aceEditor.getSession().on('changeAnnotation', () => {\n const annotations: any[] = this.api?.aceEditor.getSession().getAnnotations();\n const isValid = annotations.findIndex((annotation) => annotation.type === 'error') === -1;\n this.zone.run(() => this.isValidChanged.emit(isValid));\n });\n\n this.editorReady.emit(this.api);\n }\n });\n });\n }\n\n public ngOnDestroy(): void {\n this.api?.aceEditor?.destroy();\n }\n}\n","<div #aceEditor class=\"ngssm-ace-editor-container\"></div>\n","/*\n * Public API Surface of ngssm-ace-editor\n */\n\nexport * from './lib/ngssm-ace-editor/ngssm-ace-editor.component';\nexport * from './lib/ace-builds-loader';\nexport * from './lib/ngssm-ace-editor-mode';\nexport * from './lib/ngssm-ace-editor-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AceBuildsLoader"],"mappings":"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"}
1
+ {"version":3,"file":"ngssm-ace-editor.mjs","sources":["../../../projects/ngssm-ace-editor/src/lib/ngssm-ace-editor-api.ts","../../../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/ngssm-ace-editor/ngssm-ace-editor.component.ts","../../../projects/ngssm-ace-editor/src/lib/ngssm-ace-editor/ngssm-ace-editor.component.html","../../../projects/ngssm-ace-editor/src/public-api.ts","../../../projects/ngssm-ace-editor/src/ngssm-ace-editor.ts"],"sourcesContent":["export class NgssmAceEditorApi {\n private readonly markerIds: number[] = [];\n\n constructor(public aceEditor: any) {}\n\n public addRowsMarker(firstRow: number, lastRow: number, cssClass: string): void {\n const result = (window as any).ace.require('ace/range');\n const markerId = this.aceEditor.getSession().addMarker(new result.Range(firstRow, 0, lastRow, Infinity), cssClass, 'fullLine');\n this.markerIds.push(markerId);\n }\n\n public clearAllRowsMarkers(): void {\n this.markerIds.forEach((markerId) => this.aceEditor.getSession().removeMarker(markerId));\n this.markerIds.splice(0);\n }\n}\n","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 { BehaviorSubject, Observable } from 'rxjs';\n\nimport { Logger } from 'ngssm-store';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AceBuildsLoader {\n private _loading$ = new BehaviorSubject<boolean>(true);\n private _initialized = false;\n\n constructor(@Inject(DOCUMENT) private document: any, private logger: Logger) {}\n\n public get loading$(): Observable<boolean> {\n return this._loading$.asObservable();\n }\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(false);\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 { CommonModule } from '@angular/common';\nimport { Observable, filter, take } from 'rxjs';\n\nimport { NgssmComponentOverlayDirective } from 'ngssm-toolkit';\n\nimport { AceBuildsLoader } from '../ace-builds-loader';\nimport { NgssmAceEditorApi } from '../ngssm-ace-editor-api';\nimport { NgssmAceEditorMode } from '../ngssm-ace-editor-mode';\n\n@Component({\n selector: 'ngssm-ace-editor',\n standalone: true,\n imports: [CommonModule, NgssmComponentOverlayDirective],\n templateUrl: './ngssm-ace-editor.component.html',\n styleUrls: ['./ngssm-ace-editor.component.scss']\n})\nexport class NgssmAceEditorComponent 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() public contentChanged = new EventEmitter<string>();\n @Output() public isValidChanged = new EventEmitter<boolean>();\n @Output() public editorReady = new EventEmitter<NgssmAceEditorApi>();\n\n public api: NgssmAceEditorApi | undefined;\n\n constructor(private aceBuildsLoader: AceBuildsLoader, private zone: NgZone) {}\n\n public get loading$(): Observable<boolean> {\n return this.aceBuildsLoader.loading$;\n }\n\n @Input() public set content(value: string) {\n if (this.api?.aceEditor) {\n this.silentContentUpdate = true;\n this.api.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.api?.aceEditor) {\n this.api.aceEditor.setReadOnly(value);\n } else {\n this.initialReadonly = value;\n }\n }\n\n @Input() public set editorMode(value: string) {\n if (this.api?.aceEditor) {\n this.api.aceEditor.session.setMode(value);\n } else {\n this.initialEditorMode = value;\n }\n }\n\n public ngAfterViewInit(): void {\n this.aceBuildsLoader\n .loadScripts()\n .pipe(\n filter((v) => !v),\n take(1)\n )\n .subscribe(() => {\n this.zone.runOutsideAngular(() => {\n const ace: any = (window as any).ace;\n const aceEditor = ace.edit(this.aceEditorDiv?.nativeElement);\n if (aceEditor) {\n this.api = new NgssmAceEditorApi(aceEditor);\n this.api.aceEditor.$blockScrolling = Infinity;\n this.api.aceEditor.setTheme('ace/theme/github');\n this.api.aceEditor.session.setMode(this.initialEditorMode);\n this.api.aceEditor.setReadOnly(this.initialReadonly);\n this.api.aceEditor.setValue(this.initialContent, -1);\n\n this.api.aceEditor.on('change', () => {\n if (!this.silentContentUpdate) {\n this.zone.run(() => this.contentChanged.emit(this.api?.aceEditor.getValue()));\n }\n });\n this.api.aceEditor.getSession().on('changeAnnotation', () => {\n const annotations: any[] = this.api?.aceEditor.getSession().getAnnotations();\n const isValid = annotations.findIndex((annotation) => annotation.type === 'error') === -1;\n this.zone.run(() => this.isValidChanged.emit(isValid));\n });\n\n this.editorReady.emit(this.api);\n }\n });\n });\n }\n\n public ngOnDestroy(): void {\n this.api?.aceEditor?.destroy();\n }\n}\n","<div #aceEditor class=\"ngssm-ace-editor-container\" [ngssmDisplayOverlay]=\"(loading$ | async) === true\"></div>","/*\n * Public API Surface of ngssm-ace-editor\n */\n\nexport * from './lib/ngssm-ace-editor/ngssm-ace-editor.component';\nexport * from './lib/ace-builds-loader';\nexport * from './lib/ngssm-ace-editor-mode';\nexport * from './lib/ngssm-ace-editor-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AceBuildsLoader"],"mappings":"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"}
@@ -7,6 +7,7 @@ export declare class AceBuildsLoader {
7
7
  private _loading$;
8
8
  private _initialized;
9
9
  constructor(document: any, logger: Logger);
10
+ get loading$(): Observable<boolean>;
10
11
  loadScripts(): Observable<boolean>;
11
12
  static ɵfac: i0.ɵɵFactoryDeclaration<AceBuildsLoader, never>;
12
13
  static ɵprov: i0.ɵɵInjectableDeclaration<AceBuildsLoader>;
@@ -1,4 +1,5 @@
1
1
  import { AfterViewInit, ElementRef, EventEmitter, NgZone, OnDestroy } from '@angular/core';
2
+ import { Observable } from 'rxjs';
2
3
  import { AceBuildsLoader } from '../ace-builds-loader';
3
4
  import { NgssmAceEditorApi } from '../ngssm-ace-editor-api';
4
5
  import * as i0 from "@angular/core";
@@ -15,6 +16,7 @@ export declare class NgssmAceEditorComponent implements AfterViewInit, OnDestroy
15
16
  editorReady: EventEmitter<NgssmAceEditorApi>;
16
17
  api: NgssmAceEditorApi | undefined;
17
18
  constructor(aceBuildsLoader: AceBuildsLoader, zone: NgZone);
19
+ get loading$(): Observable<boolean>;
18
20
  set content(value: string);
19
21
  set readonly(value: boolean);
20
22
  set editorMode(value: string);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngssm-ace-editor",
3
- "version": "16.0.1",
3
+ "version": "16.0.3",
4
4
  "description": "NgSsm - Simple warpper of ace-editor.",
5
5
  "author": "Lion Marc",
6
6
  "license": "MIT",