angular-toolbox 1.2.0 → 1.2.2

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 CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  A library that provides useful tools for Angular apps development.
4
4
 
5
- [![Angular Toolbox version](https://img.shields.io/badge/Angular%20Toolbox:1.2.0-%231E90FF.svg)]()
5
+ [![Angular Toolbox version](https://img.shields.io/badge/Angular%20Toolbox:1.2.2-%231E90FF.svg)]()
6
6
 
7
7
  ## License
8
8
 
@@ -5,12 +5,17 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be found in
6
6
  * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
7
7
  */
8
+ import { EventEmitter } from "@angular/core";
8
9
  /**
9
10
  * The abstract class that must be implemented by services that provide
10
11
  * functionality to display Angular component within a new browser window.
11
12
  */
12
13
  export class AbstractWindowService {
13
14
  constructor() {
15
+ /**
16
+ * An event triggered each time a window is closed.
17
+ */
18
+ this.windowClose = new EventEmitter();
14
19
  /**
15
20
  * @private
16
21
  */
@@ -41,4 +46,4 @@ export class AbstractWindowService {
41
46
  this.windowRefMap.clear();
42
47
  }
43
48
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtd2luZG93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9tb2RlbC9zZXJ2aWNlL3VpL3dpbmRvdy9hYnN0cmFjdC13aW5kb3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFNSDs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLHFCQUFxQjtJQUEzQztRQUVFOztXQUVHO1FBQ08saUJBQVksR0FBbUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQXFEckUsQ0FBQztJQW5EQzs7Ozs7O09BTUc7SUFDSSxHQUFHLENBQUMsSUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztDQTBCRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgUGFzY2FsIEVDSEVNQU5OLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKlxyXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpblxyXG4gKiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcGFzY2FsZWNoZW1hbm4uY29tL2FuZ3VsYXItdG9vbGJveC9yZXNvdXJjZXMvbGljZW5zZVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBVdWlkIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxcIjtcclxuaW1wb3J0IHsgRGVzdHJveWFibGUsIFdpbmRvd1JlZiB9IGZyb20gXCIuLi8uLi8uLi9idXNpbmVzc1wiO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBhYnN0cmFjdCBjbGFzcyB0aGF0IG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc2VydmljZXMgdGhhdCBwcm92aWRlXHJcbiAqIGZ1bmN0aW9uYWxpdHkgdG8gZGlzcGxheSBBbmd1bGFyIGNvbXBvbmVudCB3aXRoaW4gYSBuZXcgYnJvd3NlciB3aW5kb3cuXHJcbiAqL1xyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RXaW5kb3dTZXJ2aWNlIGltcGxlbWVudHMgRGVzdHJveWFibGUge1xyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCB3aW5kb3dSZWZNYXA6IE1hcDxVdWlkLCBXaW5kb3dSZWY8YW55LCBhbnk+PiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgd2luZG93IHJlZmVyZW5jZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYFV1aWRgIG9iamVjdC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gdXVpZCBUaGUgYFV1aWRgIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIHdpbmRvdyByZWZlcmVuY2UgdG8gZ2V0LlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIEEgYFdpbmRvd1JlZmAgb2JqZWN0LCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcmVmZXJlbmNlIGNhbm5vdCBiZSBmb3VuZC5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0KHV1aWQ6IFV1aWQpOiBXaW5kb3dSZWY8YW55LCBhbnk+IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLndpbmRvd1JlZk1hcC5nZXQodXVpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGFsbCB0aGUgd2luZG93IHJlZmVyZW5jZSBvYmplY3RzIGNyZWF0ZWQgYnkgdGhlIHNlcnZpY2UuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgQSBsaXN0IG9mIGBXaW5kb3dSZWZgIG9iamVjdHMgY3JlYXRlZCBieSB0aGlzIHNlcnZpY2UuXHJcbiAgICovXHJcbiAgcHVibGljIGdldEFsbCgpOiBXaW5kb3dSZWY8YW55LCBhbnk+W10ge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy53aW5kb3dSZWZNYXAudmFsdWVzKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMud2luZG93UmVmTWFwLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVucyBhIG5ldyBicm93c2VyIHdpbmRvdyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJvcGVydGllcyBhbmQgYXR0YWNoZXMgYW4gaW5zdGFuY2Ugb2YgXHJcbiAgICogdGhlIHNwZWNpZmllZCBjb21wb25lbnQgaW50byB0aGUgd2luZG93IGNvbnRhaW5lci5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gY29tcG9uZW50IFRoZSBjb21wb25lbnQgdG8gYXR0YWNoIGluIHRoZSBuZXcgd2luZG93LlxyXG4gICAqIEBwYXJhbSBpbml0IFRoZSBjb25maWcgdXNlZCB0byBpbml0aWFsaXplIHRoZSB3aW5kb3cuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgQSBgVXVpZGAgb2JqZWN0LlxyXG4gICAqL1xyXG4gIGFic3RyYWN0IG9wZW48VD4oY29tcG9uZW50OiBUeXBlPFQ+LCBpbml0PzogYW55KTogVXVpZDtcclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2VzIHRoZSB3aW5kb3cgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYFV1aWRgIG9iamVjdC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gdXVpZCBUaGUgYFV1aWRgIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIHdpbmRvdyB0byBjbG9zZS5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgd2hldGhlciB0aGUgd2luZG93IGV4aXN0cyBhbmQgaXMgY2xvc2VkOyBgZmFsc2VgIG90aGVyd2lzZS5cclxuICAgKi9cclxuICBhYnN0cmFjdCBjbG9zZSh1dWlkOiBVdWlkKTogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2VzIGFsbCBvcGVuZWQgd2luZG93cy5cclxuICAgKi9cclxuICBhYnN0cmFjdCBjbG9zZUFsbCgpOiB2b2lkO1xyXG59Il19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtd2luZG93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9tb2RlbC9zZXJ2aWNlL3VpL3dpbmRvdy9hYnN0cmFjdC13aW5kb3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBSW5EOzs7R0FHRztBQUNILE1BQU0sT0FBZ0IscUJBQXFCO0lBQTNDO1FBRUU7O1dBRUc7UUFDYSxnQkFBVyxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXJFOztXQUVHO1FBQ08saUJBQVksR0FBbUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQXFEckUsQ0FBQztJQW5EQzs7Ozs7O09BTUc7SUFDSSxHQUFHLENBQUMsSUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztDQTBCRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgUGFzY2FsIEVDSEVNQU5OLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKlxyXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpblxyXG4gKiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcGFzY2FsZWNoZW1hbm4uY29tL2FuZ3VsYXItdG9vbGJveC9yZXNvdXJjZXMvbGljZW5zZVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgVHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFV1aWQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbFwiO1xyXG5pbXBvcnQgeyBEZXN0cm95YWJsZSwgV2luZG93UmVmIH0gZnJvbSBcIi4uLy4uLy4uL2J1c2luZXNzXCI7XHJcblxyXG4vKipcclxuICogVGhlIGFic3RyYWN0IGNsYXNzIHRoYXQgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzZXJ2aWNlcyB0aGF0IHByb3ZpZGVcclxuICogZnVuY3Rpb25hbGl0eSB0byBkaXNwbGF5IEFuZ3VsYXIgY29tcG9uZW50IHdpdGhpbiBhIG5ldyBicm93c2VyIHdpbmRvdy5cclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFdpbmRvd1NlcnZpY2UgaW1wbGVtZW50cyBEZXN0cm95YWJsZSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuIGV2ZW50IHRyaWdnZXJlZCBlYWNoIHRpbWUgYSB3aW5kb3cgaXMgY2xvc2VkLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSB3aW5kb3dDbG9zZTogRXZlbnRFbWl0dGVyPFV1aWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCB3aW5kb3dSZWZNYXA6IE1hcDxVdWlkLCBXaW5kb3dSZWY8YW55LCBhbnk+PiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgd2luZG93IHJlZmVyZW5jZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYFV1aWRgIG9iamVjdC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gdXVpZCBUaGUgYFV1aWRgIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIHdpbmRvdyByZWZlcmVuY2UgdG8gZ2V0LlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIEEgYFdpbmRvd1JlZmAgb2JqZWN0LCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcmVmZXJlbmNlIGNhbm5vdCBiZSBmb3VuZC5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0KHV1aWQ6IFV1aWQpOiBXaW5kb3dSZWY8YW55LCBhbnk+IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLndpbmRvd1JlZk1hcC5nZXQodXVpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGFsbCB0aGUgd2luZG93IHJlZmVyZW5jZSBvYmplY3RzIGNyZWF0ZWQgYnkgdGhlIHNlcnZpY2UuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgQSBsaXN0IG9mIGBXaW5kb3dSZWZgIG9iamVjdHMgY3JlYXRlZCBieSB0aGlzIHNlcnZpY2UuXHJcbiAgICovXHJcbiAgcHVibGljIGdldEFsbCgpOiBXaW5kb3dSZWY8YW55LCBhbnk+W10ge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy53aW5kb3dSZWZNYXAudmFsdWVzKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMud2luZG93UmVmTWFwLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVucyBhIG5ldyBicm93c2VyIHdpbmRvdyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJvcGVydGllcyBhbmQgYXR0YWNoZXMgYW4gaW5zdGFuY2Ugb2YgXHJcbiAgICogdGhlIHNwZWNpZmllZCBjb21wb25lbnQgaW50byB0aGUgd2luZG93IGNvbnRhaW5lci5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gY29tcG9uZW50IFRoZSBjb21wb25lbnQgdG8gYXR0YWNoIGluIHRoZSBuZXcgd2luZG93LlxyXG4gICAqIEBwYXJhbSBpbml0IFRoZSBjb25maWcgdXNlZCB0byBpbml0aWFsaXplIHRoZSB3aW5kb3cuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgQSBgVXVpZGAgb2JqZWN0LlxyXG4gICAqL1xyXG4gIGFic3RyYWN0IG9wZW48VD4oY29tcG9uZW50OiBUeXBlPFQ+LCBpbml0PzogYW55KTogVXVpZDtcclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2VzIHRoZSB3aW5kb3cgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYFV1aWRgIG9iamVjdC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gdXVpZCBUaGUgYFV1aWRgIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIHdpbmRvdyB0byBjbG9zZS5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgd2hldGhlciB0aGUgd2luZG93IGV4aXN0cyBhbmQgaXMgY2xvc2VkOyBgZmFsc2VgIG90aGVyd2lzZS5cclxuICAgKi9cclxuICBhYnN0cmFjdCBjbG9zZSh1dWlkOiBVdWlkKTogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2VzIGFsbCBvcGVuZWQgd2luZG93cy5cclxuICAgKi9cclxuICBhYnN0cmFjdCBjbG9zZUFsbCgpOiB2b2lkO1xyXG59Il19
@@ -12,6 +12,10 @@ import { BrowserWindowFeaturesBuilder } from "../../../../util/window/window-fea
12
12
  import { WindowHeaderTagUtil } from "../../../../util/window/window-header-tag-util";
13
13
  import { AbstractWindowService } from "./abstract-window.service";
14
14
  import * as i0 from "@angular/core";
15
+ /**
16
+ * @private
17
+ */
18
+ const EVT_TYPE = "beforeunload";
15
19
  /**
16
20
  * Provides functionality to display Angular component within a new browser window.
17
21
  */
@@ -22,7 +26,11 @@ export class WindowService extends AbstractWindowService {
22
26
  constructor(_appRef) {
23
27
  super();
24
28
  this._appRef = _appRef;
25
- window.addEventListener("beforeunload", () => this.beforUnloadHandler());
29
+ const beforeUnloadHandler = () => {
30
+ this.ngOnDestroy();
31
+ window.removeEventListener(EVT_TYPE, beforeUnloadHandler);
32
+ };
33
+ window.addEventListener(EVT_TYPE, beforeUnloadHandler);
26
34
  }
27
35
  /**
28
36
  * @inheritdoc
@@ -38,6 +46,11 @@ export class WindowService extends AbstractWindowService {
38
46
  window: win,
39
47
  componentRef: componentRef
40
48
  };
49
+ const unloadListener = () => {
50
+ this.windowClose.emit(id);
51
+ win.removeEventListener(EVT_TYPE, unloadListener);
52
+ };
53
+ win.addEventListener(EVT_TYPE, unloadListener);
41
54
  this.windowRefMap.set(id, winRef);
42
55
  return id;
43
56
  }
@@ -70,13 +83,6 @@ export class WindowService extends AbstractWindowService {
70
83
  this.closeAll();
71
84
  this.destroy();
72
85
  }
73
- /**
74
- * @private
75
- */
76
- beforUnloadHandler() {
77
- this.ngOnDestroy();
78
- window.removeEventListener("beforeunload", () => this.beforUnloadHandler());
79
- }
80
86
  /**
81
87
  * @private
82
88
  */
@@ -94,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
94
100
  providedIn: 'root'
95
101
  }]
96
102
  }], ctorParameters: () => [{ type: i0.ApplicationRef }] });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9tb2RlbC9zZXJ2aWNlL3VpL3dpbmRvdy93aW5kb3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQWdDLFVBQVUsRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDekUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBRWxFOztHQUVHO0FBSUgsTUFBTSxPQUFPLGFBQWMsU0FBUSxxQkFBcUI7SUFFdEQ7O09BRUc7SUFDSCxZQUFvQixPQUF1QjtRQUN6QyxLQUFLLEVBQUUsQ0FBQztRQURVLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBRXpDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJLENBQUksU0FBa0IsRUFBRSxJQUFpQjtRQUNsRCxNQUFNLEVBQUUsR0FBUyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUIsTUFBTSxRQUFRLEdBQVcsNEJBQTRCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sR0FBRyxHQUFnQixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBZ0IsQ0FBQztRQUNsRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsTUFBTSxZQUFZLEdBQW9CLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNGLE1BQU0sTUFBTSxHQUF5QjtZQUNuQyxNQUFNLEVBQUUsR0FBYTtZQUNyQixZQUFZLEVBQUUsWUFBWTtTQUMzQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQVU7UUFDckIsTUFBTSxNQUFNLEdBQXVDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixNQUFNLENBQUMsTUFBTSxHQUFFLElBQVcsQ0FBQztRQUMzQixNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxZQUFtQixDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNiLE1BQU0sSUFBSSxHQUEyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRDs7T0FFRztJQUNLLFNBQVMsQ0FBQyxJQUFpQjtRQUNqQyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQztRQUNuRCxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQzs4R0F4RVUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICpcclxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW5cclxuICogdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcclxuICovXHJcblxyXG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIFV1aWQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbFwiO1xyXG5pbXBvcnQgeyBXaW5kb3dJbml0LCBXaW5kb3dSZWYgfSBmcm9tIFwiLi4vLi4vLi4vYnVzaW5lc3NcIjtcclxuaW1wb3J0IHsgV2luZG93VGFyZ2V0IH0gZnJvbSBcIi4uLy4uLy4uL2J1c2luZXNzL3VpL3dpbmRvdy93aW5kb3ctdGFyZ2V0XCI7XHJcbmltcG9ydCB7IEJyb3dzZXJXaW5kb3dGZWF0dXJlc0J1aWxkZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbC93aW5kb3cvd2luZG93LWZlYXR1cmVzLWJ1aWxkZXJcIjtcclxuaW1wb3J0IHsgV2luZG93SGVhZGVyVGFnVXRpbCB9IGZyb20gXCIuLi8uLi8uLi8uLi91dGlsL3dpbmRvdy93aW5kb3ctaGVhZGVyLXRhZy11dGlsXCI7XHJcbmltcG9ydCB7IEFic3RyYWN0V2luZG93U2VydmljZSB9IGZyb20gXCIuL2Fic3RyYWN0LXdpbmRvdy5zZXJ2aWNlXCI7XHJcblxyXG4vKipcclxuICogUHJvdmlkZXMgZnVuY3Rpb25hbGl0eSB0byBkaXNwbGF5IEFuZ3VsYXIgY29tcG9uZW50IHdpdGhpbiBhIG5ldyBicm93c2VyIHdpbmRvdy5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFdpbmRvd1NlcnZpY2UgZXh0ZW5kcyBBYnN0cmFjdFdpbmRvd1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FwcFJlZjogQXBwbGljYXRpb25SZWYpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCAoKSA9PiB0aGlzLmJlZm9yVW5sb2FkSGFuZGxlcigpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpbmhlcml0ZG9jXHJcbiAgICovXHJcbiAgcHVibGljIG9wZW48VD4oY29tcG9uZW50OiBUeXBlPFQ+LCBpbml0PzogV2luZG93SW5pdCk6IFV1aWQge1xyXG4gICAgY29uc3QgaWQ6IFV1aWQgPSBVdWlkLmJ1aWxkKCk7XHJcbiAgICBjb25zdCBmZWF0dXJlczogc3RyaW5nID0gQnJvd3NlcldpbmRvd0ZlYXR1cmVzQnVpbGRlci5idWlsZChpbml0KTtcclxuICAgIGNvbnN0IHdpbjogV2luZG93UHJveHkgPSB3aW5kb3cub3BlbihFTVBUWV9TVFJJTkcsIHRoaXMuZ2V0VGFyZ2V0KGluaXQpLCBmZWF0dXJlcykgYXMgV2luZG93UHJveHk7XHJcbiAgICBXaW5kb3dIZWFkZXJUYWdVdGlsLnNldFRpdGxlKHdpbiwgaW5pdCk7XHJcbiAgICBXaW5kb3dIZWFkZXJUYWdVdGlsLnNldEljb24od2luLCBpbml0KTtcclxuICAgIGNvbnN0IGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFQ+ID0gdGhpcy5fYXBwUmVmLmJvb3RzdHJhcChjb21wb25lbnQsIHdpbi5kb2N1bWVudC5ib2R5KTtcclxuICAgIGNvbnN0IHdpblJlZjogV2luZG93UmVmPFQsIFdpbmRvdz4gPSB7XHJcbiAgICAgIHdpbmRvdzogd2luIGFzIFdpbmRvdyxcclxuICAgICAgY29tcG9uZW50UmVmOiBjb21wb25lbnRSZWZcclxuICAgIH07XHJcbiAgICB0aGlzLndpbmRvd1JlZk1hcC5zZXQoaWQsIHdpblJlZik7XHJcbiAgICByZXR1cm4gaWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaW5oZXJpdGRvY1xyXG4gICAqL1xyXG4gIHB1YmxpYyBjbG9zZSh1dWlkOiBVdWlkKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB3aW5SZWY6IFdpbmRvd1JlZjxhbnksIFdpbmRvdz4gfCB1bmRlZmluZWQgPSB0aGlzLndpbmRvd1JlZk1hcC5nZXQodXVpZCk7XHJcbiAgICBpZiAoIXdpblJlZikgcmV0dXJuIGZhbHNlO1xyXG4gICAgdGhpcy53aW5kb3dSZWZNYXAuZGVsZXRlKHV1aWQpO1xyXG4gICAgd2luUmVmLndpbmRvdy5jbG9zZSgpO1xyXG4gICAgd2luUmVmLndpbmRvdz0gbnVsbCBhcyBhbnk7XHJcbiAgICB3aW5SZWYuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcclxuICAgIHdpblJlZi5jb21wb25lbnRSZWYgYXMgYW55O1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaW5oZXJpdGRvY1xyXG4gICAqL1xyXG4gIHB1YmxpYyBjbG9zZUFsbCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGtleXM6IEl0ZXJhYmxlSXRlcmF0b3I8VXVpZD4gPSB0aGlzLndpbmRvd1JlZk1hcC5rZXlzKCk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB0aGlzLmNsb3NlKGtleSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xvc2VBbGwoKTtcclxuICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIGJlZm9yVW5sb2FkSGFuZGxlcigpOiB2b2lkIHtcclxuICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsICgpID0+IHRoaXMuYmVmb3JVbmxvYWRIYW5kbGVyKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIGdldFRhcmdldChpbml0PzogV2luZG93SW5pdCk6IFdpbmRvd1RhcmdldCB7XHJcbiAgICBpZiAoaW5pdCkgcmV0dXJuIGluaXQudGFyZ2V0IHx8IFdpbmRvd1RhcmdldC5CTEFOSztcclxuICAgIHJldHVybiBXaW5kb3dUYXJnZXQuQkxBTks7XHJcbiAgfVxyXG59Il19
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9tb2RlbC9zZXJ2aWNlL3VpL3dpbmRvdy93aW5kb3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQWdDLFVBQVUsRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDekUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBT2xFOztHQUVHO0FBQ0gsTUFBTSxRQUFRLEdBQVcsY0FBYyxDQUFDO0FBRXhDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGFBQWMsU0FBUSxxQkFBcUI7SUFFdEQ7O09BRUc7SUFDSCxZQUFvQixPQUF1QjtRQUN6QyxLQUFLLEVBQUUsQ0FBQztRQURVLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBRXpDLE1BQU0sbUJBQW1CLEdBQWdCLEdBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJLENBQUksU0FBa0IsRUFBRSxJQUFpQjtRQUNsRCxNQUFNLEVBQUUsR0FBUyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUIsTUFBTSxRQUFRLEdBQVcsNEJBQTRCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sR0FBRyxHQUFnQixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBZ0IsQ0FBQztRQUNsRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsTUFBTSxZQUFZLEdBQW9CLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNGLE1BQU0sTUFBTSxHQUF5QjtZQUNuQyxNQUFNLEVBQUUsR0FBYTtZQUNyQixZQUFZLEVBQUUsWUFBWTtTQUMzQixDQUFDO1FBQ0YsTUFBTSxjQUFjLEdBQWdCLEdBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQixHQUFHLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQztRQUNGLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQVU7UUFDckIsTUFBTSxNQUFNLEdBQXVDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixNQUFNLENBQUMsTUFBTSxHQUFHLElBQVcsQ0FBQztRQUM1QixNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxZQUFtQixDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNiLE1BQU0sSUFBSSxHQUEyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNLLFNBQVMsQ0FBQyxJQUFpQjtRQUNqQyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQztRQUNuRCxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQzs4R0F6RVUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICpcclxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW5cclxuICogdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcclxuICovXHJcblxyXG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIFV1aWQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbFwiO1xyXG5pbXBvcnQgeyBXaW5kb3dJbml0LCBXaW5kb3dSZWYgfSBmcm9tIFwiLi4vLi4vLi4vYnVzaW5lc3NcIjtcclxuaW1wb3J0IHsgV2luZG93VGFyZ2V0IH0gZnJvbSBcIi4uLy4uLy4uL2J1c2luZXNzL3VpL3dpbmRvdy93aW5kb3ctdGFyZ2V0XCI7XHJcbmltcG9ydCB7IEJyb3dzZXJXaW5kb3dGZWF0dXJlc0J1aWxkZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbC93aW5kb3cvd2luZG93LWZlYXR1cmVzLWJ1aWxkZXJcIjtcclxuaW1wb3J0IHsgV2luZG93SGVhZGVyVGFnVXRpbCB9IGZyb20gXCIuLi8uLi8uLi8uLi91dGlsL3dpbmRvdy93aW5kb3ctaGVhZGVyLXRhZy11dGlsXCI7XHJcbmltcG9ydCB7IEFic3RyYWN0V2luZG93U2VydmljZSB9IGZyb20gXCIuL2Fic3RyYWN0LXdpbmRvdy5zZXJ2aWNlXCI7XHJcblxyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbnR5cGUgRXZ0TGlzdGVuZXIgPSAodGhpczogV2luZG93LCBldjogQmVmb3JlVW5sb2FkRXZlbnQpID0+IGFueTtcclxuXHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgRVZUX1RZUEU6IHN0cmluZyA9IFwiYmVmb3JldW5sb2FkXCI7XHJcblxyXG4vKipcclxuICogUHJvdmlkZXMgZnVuY3Rpb25hbGl0eSB0byBkaXNwbGF5IEFuZ3VsYXIgY29tcG9uZW50IHdpdGhpbiBhIG5ldyBicm93c2VyIHdpbmRvdy5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFdpbmRvd1NlcnZpY2UgZXh0ZW5kcyBBYnN0cmFjdFdpbmRvd1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FwcFJlZjogQXBwbGljYXRpb25SZWYpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBjb25zdCBiZWZvcmVVbmxvYWRIYW5kbGVyOiBFdnRMaXN0ZW5lciA9ICgpPT4ge1xyXG4gICAgICB0aGlzLm5nT25EZXN0cm95KCk7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKEVWVF9UWVBFLCBiZWZvcmVVbmxvYWRIYW5kbGVyKTtcclxuICAgIH07XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihFVlRfVFlQRSwgYmVmb3JlVW5sb2FkSGFuZGxlcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaW5oZXJpdGRvY1xyXG4gICAqL1xyXG4gIHB1YmxpYyBvcGVuPFQ+KGNvbXBvbmVudDogVHlwZTxUPiwgaW5pdD86IFdpbmRvd0luaXQpOiBVdWlkIHtcclxuICAgIGNvbnN0IGlkOiBVdWlkID0gVXVpZC5idWlsZCgpO1xyXG4gICAgY29uc3QgZmVhdHVyZXM6IHN0cmluZyA9IEJyb3dzZXJXaW5kb3dGZWF0dXJlc0J1aWxkZXIuYnVpbGQoaW5pdCk7XHJcbiAgICBjb25zdCB3aW46IFdpbmRvd1Byb3h5ID0gd2luZG93Lm9wZW4oRU1QVFlfU1RSSU5HLCB0aGlzLmdldFRhcmdldChpbml0KSwgZmVhdHVyZXMpIGFzIFdpbmRvd1Byb3h5O1xyXG4gICAgV2luZG93SGVhZGVyVGFnVXRpbC5zZXRUaXRsZSh3aW4sIGluaXQpO1xyXG4gICAgV2luZG93SGVhZGVyVGFnVXRpbC5zZXRJY29uKHdpbiwgaW5pdCk7XHJcbiAgICBjb25zdCBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUPiA9IHRoaXMuX2FwcFJlZi5ib290c3RyYXAoY29tcG9uZW50LCB3aW4uZG9jdW1lbnQuYm9keSk7XHJcbiAgICBjb25zdCB3aW5SZWY6IFdpbmRvd1JlZjxULCBXaW5kb3c+ID0ge1xyXG4gICAgICB3aW5kb3c6IHdpbiBhcyBXaW5kb3csXHJcbiAgICAgIGNvbXBvbmVudFJlZjogY29tcG9uZW50UmVmXHJcbiAgICB9O1xyXG4gICAgY29uc3QgdW5sb2FkTGlzdGVuZXI6IEV2dExpc3RlbmVyID0gKCk9PiB7XHJcbiAgICAgIHRoaXMud2luZG93Q2xvc2UuZW1pdChpZCk7XHJcbiAgICAgIHdpbi5yZW1vdmVFdmVudExpc3RlbmVyKEVWVF9UWVBFLCB1bmxvYWRMaXN0ZW5lcik7XHJcbiAgICB9O1xyXG4gICAgd2luLmFkZEV2ZW50TGlzdGVuZXIoRVZUX1RZUEUsIHVubG9hZExpc3RlbmVyKTtcclxuICAgIHRoaXMud2luZG93UmVmTWFwLnNldChpZCwgd2luUmVmKTtcclxuICAgIHJldHVybiBpZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpbmhlcml0ZG9jXHJcbiAgICovXHJcbiAgcHVibGljIGNsb3NlKHV1aWQ6IFV1aWQpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHdpblJlZjogV2luZG93UmVmPGFueSwgV2luZG93PiB8IHVuZGVmaW5lZCA9IHRoaXMud2luZG93UmVmTWFwLmdldCh1dWlkKTtcclxuICAgIGlmICghd2luUmVmKSByZXR1cm4gZmFsc2U7XHJcbiAgICB0aGlzLndpbmRvd1JlZk1hcC5kZWxldGUodXVpZCk7XHJcbiAgICB3aW5SZWYud2luZG93LmNsb3NlKCk7XHJcbiAgICB3aW5SZWYud2luZG93ID0gbnVsbCBhcyBhbnk7XHJcbiAgICB3aW5SZWYuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcclxuICAgIHdpblJlZi5jb21wb25lbnRSZWYgYXMgYW55O1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaW5oZXJpdGRvY1xyXG4gICAqL1xyXG4gIHB1YmxpYyBjbG9zZUFsbCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGtleXM6IEl0ZXJhYmxlSXRlcmF0b3I8VXVpZD4gPSB0aGlzLndpbmRvd1JlZk1hcC5rZXlzKCk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB0aGlzLmNsb3NlKGtleSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xvc2VBbGwoKTtcclxuICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIGdldFRhcmdldChpbml0PzogV2luZG93SW5pdCk6IFdpbmRvd1RhcmdldCB7XHJcbiAgICBpZiAoaW5pdCkgcmV0dXJuIGluaXQudGFyZ2V0IHx8IFdpbmRvd1RhcmdldC5CTEFOSztcclxuICAgIHJldHVybiBXaW5kb3dUYXJnZXQuQkxBTks7XHJcbiAgfVxyXG59Il19
@@ -15,8 +15,8 @@ import * as i0 from "@angular/core";
15
15
  const LAYERS_VERSION_CONFIG = {
16
16
  major: 1,
17
17
  minor: 2,
18
- patch: 0,
19
- buildTimestamp: 1725808881311
18
+ patch: 2,
19
+ buildTimestamp: 1725951428350
20
20
  };
21
21
  /**
22
22
  * The public service that exposes the current version of the Angular Toolbox library.
@@ -34,4 +34,4 @@ export class AngularToolboxVersionService extends AbstractVersionManager {
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AngularToolboxVersionService, decorators: [{
35
35
  type: Injectable
36
36
  }], ctorParameters: () => [] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10b29sYm94LXZlcnNpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL21vZGVsL3NlcnZpY2UvdmVyc2lvbi9hbmd1bGFyLXRvb2xib3gtdmVyc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUd2RDs7O0dBR0c7QUFDSCxNQUFNLHFCQUFxQixHQUFrQjtJQUMzQyxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLENBQUM7SUFDUixjQUFjLEVBQUUsYUFBYTtDQUM5QixDQUFDO0FBRUY7O0dBRUc7QUFFSCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsc0JBQXNCO0lBRXRFOztPQUVHO0lBQ0g7UUFDRSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUMvQixDQUFDOzhHQVBVLDRCQUE0QjtrSEFBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUR4QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdFZlcnNpb25NYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vY29yZSc7XHJcbmltcG9ydCB7IFZlcnNpb25Db25maWcgfSBmcm9tICcuLi8uLi9idXNpbmVzcyc7XHJcblxyXG4vKipcclxuICogQHByaXZhdGVcclxuICogVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgQW5ndWxhciBUb29sYm94IGxpYnJhcnkuXHJcbiAqL1xyXG5jb25zdCBMQVlFUlNfVkVSU0lPTl9DT05GSUc6IFZlcnNpb25Db25maWcgPSB7XHJcbiAgbWFqb3I6IDEsXHJcbiAgbWlub3I6IDIsXHJcbiAgcGF0Y2g6IDAsXHJcbiAgYnVpbGRUaW1lc3RhbXA6IDE3MjU4MDg4ODEzMTFcclxufTtcclxuXHJcbi8qKlxyXG4gKiBUaGUgcHVibGljIHNlcnZpY2UgdGhhdCBleHBvc2VzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIEFuZ3VsYXIgVG9vbGJveCBsaWJyYXJ5LlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQW5ndWxhclRvb2xib3hWZXJzaW9uU2VydmljZSBleHRlbmRzIEFic3RyYWN0VmVyc2lvbk1hbmFnZXIge1xyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoTEFZRVJTX1ZFUlNJT05fQ09ORklHKTtcclxuICB9XHJcbn1cclxuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10b29sYm94LXZlcnNpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL21vZGVsL3NlcnZpY2UvdmVyc2lvbi9hbmd1bGFyLXRvb2xib3gtdmVyc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUd2RDs7O0dBR0c7QUFDSCxNQUFNLHFCQUFxQixHQUFrQjtJQUMzQyxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLENBQUM7SUFDUixjQUFjLEVBQUUsYUFBYTtDQUM5QixDQUFDO0FBRUY7O0dBRUc7QUFFSCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsc0JBQXNCO0lBRXRFOztPQUVHO0lBQ0g7UUFDRSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUMvQixDQUFDOzhHQVBVLDRCQUE0QjtrSEFBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUR4QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdFZlcnNpb25NYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vY29yZSc7XHJcbmltcG9ydCB7IFZlcnNpb25Db25maWcgfSBmcm9tICcuLi8uLi9idXNpbmVzcyc7XHJcblxyXG4vKipcclxuICogQHByaXZhdGVcclxuICogVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgQW5ndWxhciBUb29sYm94IGxpYnJhcnkuXHJcbiAqL1xyXG5jb25zdCBMQVlFUlNfVkVSU0lPTl9DT05GSUc6IFZlcnNpb25Db25maWcgPSB7XHJcbiAgbWFqb3I6IDEsXHJcbiAgbWlub3I6IDIsXHJcbiAgcGF0Y2g6IDIsXHJcbiAgYnVpbGRUaW1lc3RhbXA6IDE3MjU5NTE0MjgzNTBcclxufTtcclxuXHJcbi8qKlxyXG4gKiBUaGUgcHVibGljIHNlcnZpY2UgdGhhdCBleHBvc2VzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIEFuZ3VsYXIgVG9vbGJveCBsaWJyYXJ5LlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQW5ndWxhclRvb2xib3hWZXJzaW9uU2VydmljZSBleHRlbmRzIEFic3RyYWN0VmVyc2lvbk1hbmFnZXIge1xyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoTEFZRVJTX1ZFUlNJT05fQ09ORklHKTtcclxuICB9XHJcbn1cclxuIl19
@@ -544,8 +544,8 @@ class AbstractVersionManager {
544
544
  const LAYERS_VERSION_CONFIG = {
545
545
  major: 1,
546
546
  minor: 2,
547
- patch: 0,
548
- buildTimestamp: 1725808881311
547
+ patch: 2,
548
+ buildTimestamp: 1725951428350
549
549
  };
550
550
  /**
551
551
  * The public service that exposes the current version of the Angular Toolbox library.
@@ -2175,6 +2175,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
2175
2175
  */
2176
2176
  class AbstractWindowService {
2177
2177
  constructor() {
2178
+ /**
2179
+ * An event triggered each time a window is closed.
2180
+ */
2181
+ this.windowClose = new EventEmitter();
2178
2182
  /**
2179
2183
  * @private
2180
2184
  */
@@ -2332,6 +2336,10 @@ class WindowHeaderTagUtil {
2332
2336
  * Use of this source code is governed by an MIT-style license that can be found in
2333
2337
  * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
2334
2338
  */
2339
+ /**
2340
+ * @private
2341
+ */
2342
+ const EVT_TYPE = "beforeunload";
2335
2343
  /**
2336
2344
  * Provides functionality to display Angular component within a new browser window.
2337
2345
  */
@@ -2342,7 +2350,11 @@ class WindowService extends AbstractWindowService {
2342
2350
  constructor(_appRef) {
2343
2351
  super();
2344
2352
  this._appRef = _appRef;
2345
- window.addEventListener("beforeunload", () => this.beforUnloadHandler());
2353
+ const beforeUnloadHandler = () => {
2354
+ this.ngOnDestroy();
2355
+ window.removeEventListener(EVT_TYPE, beforeUnloadHandler);
2356
+ };
2357
+ window.addEventListener(EVT_TYPE, beforeUnloadHandler);
2346
2358
  }
2347
2359
  /**
2348
2360
  * @inheritdoc
@@ -2358,6 +2370,11 @@ class WindowService extends AbstractWindowService {
2358
2370
  window: win,
2359
2371
  componentRef: componentRef
2360
2372
  };
2373
+ const unloadListener = () => {
2374
+ this.windowClose.emit(id);
2375
+ win.removeEventListener(EVT_TYPE, unloadListener);
2376
+ };
2377
+ win.addEventListener(EVT_TYPE, unloadListener);
2361
2378
  this.windowRefMap.set(id, winRef);
2362
2379
  return id;
2363
2380
  }
@@ -2390,13 +2407,6 @@ class WindowService extends AbstractWindowService {
2390
2407
  this.closeAll();
2391
2408
  this.destroy();
2392
2409
  }
2393
- /**
2394
- * @private
2395
- */
2396
- beforUnloadHandler() {
2397
- this.ngOnDestroy();
2398
- window.removeEventListener("beforeunload", () => this.beforUnloadHandler());
2399
- }
2400
2410
  /**
2401
2411
  * @private
2402
2412
  */