@libs-ui/services-dynamic-component 0.2.291 → 0.2.292

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,6 +1,7 @@
1
- import { ComponentRef } from '@angular/core';
1
+ import { ComponentRef, OnDestroy } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export declare class LibsUiDynamicComponentService {
3
+ export declare class LibsUiDynamicComponentService implements OnDestroy {
4
+ private timeOut?;
4
5
  private elementLayoutContent;
5
6
  private elementBody;
6
7
  private mapStylesToParentDocument;
@@ -8,13 +9,14 @@ export declare class LibsUiDynamicComponentService {
8
9
  private idElementLayoutContentDefault;
9
10
  set IdElementLayoutContentDefault(id: string);
10
11
  resolveComponentFactory(component: any): ComponentRef<any>;
11
- addToBody(componentRef: any, isAddParentDocument?: boolean): string;
12
+ addToBody(componentRef?: ComponentRef<any>, isAddParentDocument?: boolean, timerDelayUpdateStyleToParent?: number): string;
12
13
  addToElement(componentRef: any, elementAdd: any): any;
13
14
  addToElementLayoutContentDefault(componentRef: any, id?: string): void;
14
15
  addToIdAttributeElement(componentRef: any, id: string): HTMLElement | undefined;
15
16
  remove(componentRef: any, frameId?: string, ignoreDestroyComponent?: boolean): void;
16
17
  private updateStyleToParentDocument;
17
18
  private removeStyleToParentDocument;
19
+ ngOnDestroy(): void;
18
20
  static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiDynamicComponentService, never>;
19
21
  static ɵprov: i0.ɵɵInjectableDeclaration<LibsUiDynamicComponentService>;
20
22
  }
@@ -1,11 +1,11 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  import { ApplicationRef, Injectable, createComponent, inject } from '@angular/core';
3
- import { uuid } from '@libs-ui/utils';
4
3
  import * as i0 from "@angular/core";
5
4
  export class LibsUiDynamicComponentService {
5
+ timeOut;
6
6
  elementLayoutContent = new Map();
7
7
  elementBody;
8
- mapStylesToParentDocument = new Map();
8
+ mapStylesToParentDocument = new WeakMap();
9
9
  appRef = inject(ApplicationRef);
10
10
  idElementLayoutContentDefault = 'libs-ui-layout-content';
11
11
  set IdElementLayoutContentDefault(id) {
@@ -14,7 +14,7 @@ export class LibsUiDynamicComponentService {
14
14
  resolveComponentFactory(component) {
15
15
  return createComponent(component, { environmentInjector: this.appRef.injector });
16
16
  }
17
- addToBody(componentRef, isAddParentDocument) {
17
+ addToBody(componentRef, isAddParentDocument, timerDelayUpdateStyleToParent) {
18
18
  if (!componentRef || !componentRef.hostView) {
19
19
  return '';
20
20
  }
@@ -22,7 +22,8 @@ export class LibsUiDynamicComponentService {
22
22
  const domElem = componentRef.hostView.rootNodes[0];
23
23
  if (isAddParentDocument) {
24
24
  window.parent.document.body.appendChild(domElem);
25
- return this.updateStyleToParentDocument();
25
+ this.updateStyleToParentDocument(componentRef, timerDelayUpdateStyleToParent);
26
+ return '';
26
27
  }
27
28
  if (!this.elementBody) {
28
29
  this.elementBody = document.body;
@@ -52,11 +53,11 @@ export class LibsUiDynamicComponentService {
52
53
  const domElem = componentRef.hostView.rootNodes[0];
53
54
  return this.elementLayoutContent.get(id)?.appendChild(domElem);
54
55
  }
55
- remove(componentRef, frameId = '', ignoreDestroyComponent) {
56
+ remove(componentRef, frameId, ignoreDestroyComponent) {
56
57
  if (!componentRef) {
57
58
  return;
58
59
  }
59
- this.removeStyleToParentDocument(frameId);
60
+ this.removeStyleToParentDocument(componentRef);
60
61
  if (componentRef.hostView) {
61
62
  this.appRef.detachView(componentRef.hostView);
62
63
  }
@@ -64,25 +65,28 @@ export class LibsUiDynamicComponentService {
64
65
  componentRef.destroy();
65
66
  }
66
67
  }
67
- updateStyleToParentDocument() {
68
- const frameId = uuid();
69
- const documentParent = window.parent.document;
70
- if (documentParent && !this.mapStylesToParentDocument.has(frameId)) {
71
- const styleTags = new Array();
72
- Array.from(document.head.querySelectorAll("style")).forEach(styleTag => {
73
- const cloneStyleTag = styleTag.cloneNode(true);
74
- styleTags.push(cloneStyleTag);
75
- documentParent?.head.appendChild(cloneStyleTag);
76
- });
77
- this.mapStylesToParentDocument.set(frameId, styleTags);
68
+ updateStyleToParentDocument(componentRef, timerDelayUpdateStyleToParent) {
69
+ if (this.timeOut) {
70
+ clearTimeout(this.timeOut);
78
71
  }
79
- return frameId;
72
+ this.timeOut = setTimeout(() => {
73
+ const documentParent = window.parent.document;
74
+ if (documentParent && !this.mapStylesToParentDocument.has(componentRef)) {
75
+ const styleTags = new Array();
76
+ Array.from(document.head.querySelectorAll("style")).forEach(styleTag => {
77
+ const cloneStyleTag = styleTag.cloneNode(true);
78
+ styleTags.push(cloneStyleTag);
79
+ documentParent?.head.appendChild(cloneStyleTag);
80
+ });
81
+ this.mapStylesToParentDocument.set(componentRef, styleTags);
82
+ }
83
+ }, timerDelayUpdateStyleToParent || 250);
80
84
  }
81
- removeStyleToParentDocument(frameId) {
82
- if (!frameId) {
85
+ removeStyleToParentDocument(componentRef) {
86
+ if (!componentRef) {
83
87
  return;
84
88
  }
85
- const styleTagsPopup = this.mapStylesToParentDocument.get(frameId);
89
+ const styleTagsPopup = this.mapStylesToParentDocument.get(componentRef);
86
90
  const documentParent = window.parent.document;
87
91
  if (!styleTagsPopup || !styleTagsPopup.length || !documentParent) {
88
92
  return;
@@ -90,7 +94,14 @@ export class LibsUiDynamicComponentService {
90
94
  styleTagsPopup.forEach(styleTag => {
91
95
  documentParent?.head.removeChild(styleTag);
92
96
  });
93
- this.mapStylesToParentDocument.delete(frameId);
97
+ this.mapStylesToParentDocument.delete(componentRef);
98
+ }
99
+ ngOnDestroy() {
100
+ if (this.timeOut) {
101
+ clearTimeout(this.timeOut);
102
+ this.timeOut = undefined;
103
+ }
104
+ this.elementLayoutContent.clear();
94
105
  }
95
106
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiDynamicComponentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
96
107
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiDynamicComponentService, providedIn: 'root' });
@@ -101,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
101
112
  providedIn: 'root'
102
113
  }]
103
114
  }] });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvZHluYW1pYy1jb21wb25lbnQvc3JjL2R5bmFtaWMtY29tcG9uZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQWlDLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFLdEMsTUFBTSxPQUFPLDZCQUE2QjtJQUNoQyxvQkFBb0IsR0FBNEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMxRCxXQUFXLENBQXNCO0lBQ2pDLHlCQUF5QixHQUE2QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2hFLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEMsNkJBQTZCLEdBQUcsd0JBQXdCLENBQUM7SUFFakUsSUFBVyw2QkFBNkIsQ0FBQyxFQUFVO1FBQ2pELElBQUksQ0FBQyw2QkFBNkIsR0FBRyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVNLHVCQUF1QixDQUFDLFNBQWM7UUFDM0MsT0FBTyxlQUFlLENBQUMsU0FBUyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFTSxTQUFTLENBQUMsWUFBaUIsRUFBRSxtQkFBNkI7UUFDL0QsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1QyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsTUFBTSxPQUFPLEdBQUksWUFBWSxDQUFDLFFBQWlDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztRQUU1RixJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDeEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVqRCxPQUFPLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQzVDLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU0sWUFBWSxDQUFDLFlBQWlCLEVBQUUsVUFBZTtRQUNwRCxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzNELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sT0FBTyxHQUFJLFlBQVksQ0FBQyxRQUFpQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWdCLENBQUM7UUFFNUYsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxnQ0FBZ0MsQ0FBQyxZQUFpQixFQUFFLEtBQWEsSUFBSSxDQUFDLDZCQUE2QjtRQUN6RyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFHTSx1QkFBdUIsQ0FBQyxZQUFpQixFQUFFLEVBQVU7UUFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBZ0IsQ0FBQyxDQUFDO1FBQ2hGLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sT0FBTyxHQUFJLFlBQVksQ0FBQyxRQUFpQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWdCLENBQUM7UUFFNUYsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU0sTUFBTSxDQUFDLFlBQWlCLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRSxzQkFBZ0M7UUFDN0UsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwRCxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFTywyQkFBMkI7UUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFFOUMsSUFBSSxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkUsTUFBTSxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQVEsQ0FBQztZQUVwQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3JFLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRS9DLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzlCLGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2xELENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTywyQkFBMkIsQ0FBQyxPQUFlO1FBQ2pELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRSxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUU5QyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2pFLE9BQU87UUFDVCxDQUFDO1FBQ0QsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNoQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQzt3R0E5R1UsNkJBQTZCOzRHQUE3Qiw2QkFBNkIsY0FINUIsTUFBTTs7NEZBR1AsNkJBQTZCO2tCQUp6QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBDb21wb25lbnRSZWYsIEVtYmVkZGVkVmlld1JlZiwgSW5qZWN0YWJsZSwgY3JlYXRlQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHV1aWQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcblxuZXhwb3J0IGNsYXNzIExpYnNVaUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBlbGVtZW50TGF5b3V0Q29udGVudDpNYXA8c3RyaW5nLCBIVE1MRWxlbWVudD4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgZWxlbWVudEJvZHkhOiBIVE1MRWxlbWVudCB8IG51bGw7XG4gIHByaXZhdGUgbWFwU3R5bGVzVG9QYXJlbnREb2N1bWVudDogTWFwPHN0cmluZywgQXJyYXk8Tm9kZT4+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGFwcFJlZiA9IGluamVjdChBcHBsaWNhdGlvblJlZik7XG4gIHByaXZhdGUgaWRFbGVtZW50TGF5b3V0Q29udGVudERlZmF1bHQgPSAnbGlicy11aS1sYXlvdXQtY29udGVudCc7XG5cbiAgcHVibGljIHNldCBJZEVsZW1lbnRMYXlvdXRDb250ZW50RGVmYXVsdChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5pZEVsZW1lbnRMYXlvdXRDb250ZW50RGVmYXVsdCA9IGlkO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudDogYW55KTogQ29tcG9uZW50UmVmPGFueT4ge1xuICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoY29tcG9uZW50LCB7IGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuYXBwUmVmLmluamVjdG9yIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRvQm9keShjb21wb25lbnRSZWY6IGFueSwgaXNBZGRQYXJlbnREb2N1bWVudD86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIGlmICghY29tcG9uZW50UmVmIHx8ICFjb21wb25lbnRSZWYuaG9zdFZpZXcpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgY29uc3QgZG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmIChpc0FkZFBhcmVudERvY3VtZW50KSB7XG4gICAgICB3aW5kb3cucGFyZW50LmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9tRWxlbSk7XG5cbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVN0eWxlVG9QYXJlbnREb2N1bWVudCgpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZWxlbWVudEJvZHkpIHtcbiAgICAgIHRoaXMuZWxlbWVudEJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgIH1cbiAgICB0aGlzLmVsZW1lbnRCb2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHVibGljIGFkZFRvRWxlbWVudChjb21wb25lbnRSZWY6IGFueSwgZWxlbWVudEFkZDogYW55KSB7XG4gICAgaWYgKCFjb21wb25lbnRSZWYgfHwgIWNvbXBvbmVudFJlZi5ob3N0VmlldyB8fCAhZWxlbWVudEFkZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgY29uc3QgZG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcblxuICAgIHJldHVybiBlbGVtZW50QWRkLmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRvRWxlbWVudExheW91dENvbnRlbnREZWZhdWx0KGNvbXBvbmVudFJlZjogYW55LCBpZDogc3RyaW5nID0gdGhpcy5pZEVsZW1lbnRMYXlvdXRDb250ZW50RGVmYXVsdCkge1xuICAgdGhpcy5hZGRUb0lkQXR0cmlidXRlRWxlbWVudChjb21wb25lbnRSZWYsIGlkKTtcbiAgfVxuXG5cbiAgcHVibGljIGFkZFRvSWRBdHRyaWJ1dGVFbGVtZW50KGNvbXBvbmVudFJlZjogYW55LCBpZDogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRMYXlvdXRDb250ZW50LmhhcyhpZCkpIHtcbiAgICAgIHRoaXMuZWxlbWVudExheW91dENvbnRlbnQuc2V0KGlkLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkgYXMgSFRNTEVsZW1lbnQpO1xuICAgIH1cbiAgICBpZiAoIWNvbXBvbmVudFJlZiB8fCAhY29tcG9uZW50UmVmLmhvc3RWaWV3KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICBjb25zdCBkb21FbGVtID0gKGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55Pikucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudExheW91dENvbnRlbnQuZ2V0KGlkKT8uYXBwZW5kQ2hpbGQoZG9tRWxlbSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlKGNvbXBvbmVudFJlZjogYW55LCBmcmFtZUlkID0gJycsIGlnbm9yZURlc3Ryb3lDb21wb25lbnQ/OiBib29sZWFuKSB7XG4gICAgaWYgKCFjb21wb25lbnRSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5yZW1vdmVTdHlsZVRvUGFyZW50RG9jdW1lbnQoZnJhbWVJZCk7XG4gICAgaWYgKGNvbXBvbmVudFJlZi5ob3N0Vmlldykge1xuICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIH1cbiAgICBpZiAoIWlnbm9yZURlc3Ryb3lDb21wb25lbnQgJiYgY29tcG9uZW50UmVmLmRlc3Ryb3kpIHtcbiAgICAgIGNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdHlsZVRvUGFyZW50RG9jdW1lbnQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBmcmFtZUlkID0gdXVpZCgpO1xuICAgIGNvbnN0IGRvY3VtZW50UGFyZW50ID0gd2luZG93LnBhcmVudC5kb2N1bWVudDtcblxuICAgIGlmIChkb2N1bWVudFBhcmVudCAmJiAhdGhpcy5tYXBTdHlsZXNUb1BhcmVudERvY3VtZW50LmhhcyhmcmFtZUlkKSkge1xuICAgICAgY29uc3Qgc3R5bGVUYWdzID0gbmV3IEFycmF5PE5vZGU+KCk7XG5cbiAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQuaGVhZC5xdWVyeVNlbGVjdG9yQWxsKFwic3R5bGVcIikpLmZvckVhY2goc3R5bGVUYWcgPT4ge1xuICAgICAgICBjb25zdCBjbG9uZVN0eWxlVGFnID0gc3R5bGVUYWcuY2xvbmVOb2RlKHRydWUpO1xuXG4gICAgICAgIHN0eWxlVGFncy5wdXNoKGNsb25lU3R5bGVUYWcpO1xuICAgICAgICBkb2N1bWVudFBhcmVudD8uaGVhZC5hcHBlbmRDaGlsZChjbG9uZVN0eWxlVGFnKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5tYXBTdHlsZXNUb1BhcmVudERvY3VtZW50LnNldChmcmFtZUlkLCBzdHlsZVRhZ3MpO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZUlkO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVTdHlsZVRvUGFyZW50RG9jdW1lbnQoZnJhbWVJZDogc3RyaW5nKSB7XG4gICAgaWYgKCFmcmFtZUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0eWxlVGFnc1BvcHVwID0gdGhpcy5tYXBTdHlsZXNUb1BhcmVudERvY3VtZW50LmdldChmcmFtZUlkKTtcbiAgICBjb25zdCBkb2N1bWVudFBhcmVudCA9IHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQ7XG5cbiAgICBpZiAoIXN0eWxlVGFnc1BvcHVwIHx8ICFzdHlsZVRhZ3NQb3B1cC5sZW5ndGggfHwgIWRvY3VtZW50UGFyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN0eWxlVGFnc1BvcHVwLmZvckVhY2goc3R5bGVUYWcgPT4ge1xuICAgICAgZG9jdW1lbnRQYXJlbnQ/LmhlYWQucmVtb3ZlQ2hpbGQoc3R5bGVUYWcpO1xuICAgIH0pO1xuICAgIHRoaXMubWFwU3R5bGVzVG9QYXJlbnREb2N1bWVudC5kZWxldGUoZnJhbWVJZCk7XG4gIH1cbn0iXX0=
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvZHluYW1pYy1jb21wb25lbnQvc3JjL2R5bmFtaWMtY29tcG9uZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQWlDLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFjLE1BQU0sZUFBZSxDQUFDOztBQUsvSCxNQUFNLE9BQU8sNkJBQTZCO0lBQ2hDLE9BQU8sQ0FBVTtJQUNqQixvQkFBb0IsR0FBNEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMxRCxXQUFXLENBQXNCO0lBQ2pDLHlCQUF5QixHQUE0QyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ25GLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEMsNkJBQTZCLEdBQUcsd0JBQXdCLENBQUM7SUFFakUsSUFBVyw2QkFBNkIsQ0FBQyxFQUFVO1FBQ2pELElBQUksQ0FBQyw2QkFBNkIsR0FBRyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVNLHVCQUF1QixDQUFDLFNBQWM7UUFDM0MsT0FBTyxlQUFlLENBQUMsU0FBUyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFTSxTQUFTLENBQUMsWUFBZ0MsRUFBRSxtQkFBNkIsRUFBRSw2QkFBc0M7UUFDdEgsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1QyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsTUFBTSxPQUFPLEdBQUksWUFBWSxDQUFDLFFB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LGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDaEMsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RDLENBQUM7d0dBMUhVLDZCQUE2Qjs0R0FBN0IsNkJBQTZCLGNBSDVCLE1BQU07OzRGQUdQLDZCQUE2QjtrQkFKekMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50UmVmLCBFbWJlZGRlZFZpZXdSZWYsIEluamVjdGFibGUsIGNyZWF0ZUNvbXBvbmVudCwgaW5qZWN0LE9uRGVzdHJveSAgIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcblxuZXhwb3J0IGNsYXNzIExpYnNVaUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSB0aW1lT3V0PzogbnVtYmVyO1xuICBwcml2YXRlIGVsZW1lbnRMYXlvdXRDb250ZW50Ok1hcDxzdHJpbmcsIEhUTUxFbGVtZW50PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBlbGVtZW50Qm9keSE6IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgcHJpdmF0ZSBtYXBTdHlsZXNUb1BhcmVudERvY3VtZW50OiBXZWFrTWFwPENvbXBvbmVudFJlZjxhbnk+LCBBcnJheTxOb2RlPj4gPSBuZXcgV2Vha01hcCgpO1xuICBwcml2YXRlIGFwcFJlZiA9IGluamVjdChBcHBsaWNhdGlvblJlZik7XG4gIHByaXZhdGUgaWRFbGVtZW50TGF5b3V0Q29udGVudERlZmF1bHQgPSAnbGlicy11aS1sYXlvdXQtY29udGVudCc7XG5cbiAgcHVibGljIHNldCBJZEVsZW1lbnRMYXlvdXRDb250ZW50RGVmYXVsdChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5pZEVsZW1lbnRMYXlvdXRDb250ZW50RGVmYXVsdCA9IGlkO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudDogYW55KTogQ29tcG9uZW50UmVmPGFueT4ge1xuICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoY29tcG9uZW50LCB7IGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuYXBwUmVmLmluamVjdG9yIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRvQm9keShjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8YW55PiwgaXNBZGRQYXJlbnREb2N1bWVudD86IGJvb2xlYW4sIHRpbWVyRGVsYXlVcGRhdGVTdHlsZVRvUGFyZW50PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIWNvbXBvbmVudFJlZiB8fCAhY29tcG9uZW50UmVmLmhvc3RWaWV3KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoaXNBZGRQYXJlbnREb2N1bWVudCkge1xuICAgICAgd2luZG93LnBhcmVudC5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuICAgICAgdGhpcy51cGRhdGVTdHlsZVRvUGFyZW50RG9jdW1lbnQoY29tcG9uZW50UmVmLCB0aW1lckRlbGF5VXBkYXRlU3R5bGVUb1BhcmVudCk7XG5cbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRCb2R5KSB7XG4gICAgICB0aGlzLmVsZW1lbnRCb2R5ID0gZG9jdW1lbnQuYm9keTtcbiAgICB9XG4gICAgdGhpcy5lbGVtZW50Qm9keS5hcHBlbmRDaGlsZChkb21FbGVtKTtcblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb0VsZW1lbnQoY29tcG9uZW50UmVmOiBhbnksIGVsZW1lbnRBZGQ6IGFueSkge1xuICAgIGlmICghY29tcG9uZW50UmVmIHx8ICFjb21wb25lbnRSZWYuaG9zdFZpZXcgfHwgIWVsZW1lbnRBZGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICByZXR1cm4gZWxlbWVudEFkZC5hcHBlbmRDaGlsZChkb21FbGVtKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb0VsZW1lbnRMYXlvdXRDb250ZW50RGVmYXVsdChjb21wb25lbnRSZWY6IGFueSwgaWQ6IHN0cmluZyA9IHRoaXMuaWRFbGVtZW50TGF5b3V0Q29udGVudERlZmF1bHQpIHtcbiAgIHRoaXMuYWRkVG9JZEF0dHJpYnV0ZUVsZW1lbnQoY29tcG9uZW50UmVmLCBpZCk7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9JZEF0dHJpYnV0ZUVsZW1lbnQoY29tcG9uZW50UmVmOiBhbnksIGlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuZWxlbWVudExheW91dENvbnRlbnQuaGFzKGlkKSkge1xuICAgICAgdGhpcy5lbGVtZW50TGF5b3V0Q29udGVudC5zZXQoaWQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSBhcyBIVE1MRWxlbWVudCk7XG4gICAgfVxuICAgIGlmICghY29tcG9uZW50UmVmIHx8ICFjb21wb25lbnRSZWYuaG9zdFZpZXcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICByZXR1cm4gdGhpcy5lbGVtZW50TGF5b3V0Q29udGVudC5nZXQoaWQpPy5hcHBlbmRDaGlsZChkb21FbGVtKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmUoY29tcG9uZW50UmVmOiBhbnksIGZyYW1lSWQ/OnN0cmluZywgaWdub3JlRGVzdHJveUNvbXBvbmVudD86IGJvb2xlYW4pIHtcbiAgICBpZiAoIWNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZVN0eWxlVG9QYXJlbnREb2N1bWVudChjb21wb25lbnRSZWYpO1xuICAgIGlmIChjb21wb25lbnRSZWYuaG9zdFZpZXcpIHtcbiAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICB9XG4gICAgaWYgKCFpZ25vcmVEZXN0cm95Q29tcG9uZW50ICYmIGNvbXBvbmVudFJlZi5kZXN0cm95KSB7XG4gICAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3R5bGVUb1BhcmVudERvY3VtZW50KGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4sIHRpbWVyRGVsYXlVcGRhdGVTdHlsZVRvUGFyZW50PzogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMudGltZU91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZU91dCk7XG4gICAgfVxuICAgIHRoaXMudGltZU91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZG9jdW1lbnRQYXJlbnQgPSB3aW5kb3cucGFyZW50LmRvY3VtZW50O1xuICBcbiAgICAgIGlmIChkb2N1bWVudFBhcmVudCAmJiAhdGhpcy5tYXBTdHlsZXNUb1BhcmVudERvY3VtZW50Lmhhcyhjb21wb25lbnRSZWYpKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlVGFncyA9IG5ldyBBcnJheTxOb2RlPigpO1xuICBcbiAgICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3JBbGwoXCJzdHlsZVwiKSkuZm9yRWFjaChzdHlsZVRhZyA9PiB7XG4gICAgICAgICAgY29uc3QgY2xvbmVTdHlsZVRhZyA9IHN0eWxlVGFnLmNsb25lTm9kZSh0cnVlKTtcbiAgXG4gICAgICAgICAgc3R5bGVUYWdzLnB1c2goY2xvbmVTdHlsZVRhZyk7XG4gICAgICAgICAgZG9jdW1lbnRQYXJlbnQ/LmhlYWQuYXBwZW5kQ2hpbGQoY2xvbmVTdHlsZVRhZyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1hcFN0eWxlc1RvUGFyZW50RG9jdW1lbnQuc2V0KGNvbXBvbmVudFJlZiwgc3R5bGVUYWdzKTtcbiAgICAgIH1cbiAgICB9LCB0aW1lckRlbGF5VXBkYXRlU3R5bGVUb1BhcmVudCB8fCAyNTApO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVTdHlsZVRvUGFyZW50RG9jdW1lbnQoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55Pikge1xuICAgIGlmICghY29tcG9uZW50UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0eWxlVGFnc1BvcHVwID0gdGhpcy5tYXBTdHlsZXNUb1BhcmVudERvY3VtZW50LmdldChjb21wb25lbnRSZWYpO1xuICAgIGNvbnN0IGRvY3VtZW50UGFyZW50ID0gd2luZG93LnBhcmVudC5kb2N1bWVudDtcblxuICAgIGlmICghc3R5bGVUYWdzUG9wdXAgfHwgIXN0eWxlVGFnc1BvcHVwLmxlbmd0aCB8fCAhZG9jdW1lbnRQYXJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3R5bGVUYWdzUG9wdXAuZm9yRWFjaChzdHlsZVRhZyA9PiB7XG4gICAgICBkb2N1bWVudFBhcmVudD8uaGVhZC5yZW1vdmVDaGlsZChzdHlsZVRhZyk7XG4gICAgfSk7XG4gICAgdGhpcy5tYXBTdHlsZXNUb1BhcmVudERvY3VtZW50LmRlbGV0ZShjb21wb25lbnRSZWYpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICBpZiAodGhpcy50aW1lT3V0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVPdXQpO1xuICAgICAgICB0aGlzLnRpbWVPdXQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gIFxuICAgICAgdGhpcy5lbGVtZW50TGF5b3V0Q29udGVudC5jbGVhcigpO1xuICB9XG59Il19
@@ -1,12 +1,12 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, ApplicationRef, createComponent, Injectable } from '@angular/core';
3
- import { uuid } from '@libs-ui/utils';
4
3
 
5
4
  /* eslint-disable @typescript-eslint/no-explicit-any */
6
5
  class LibsUiDynamicComponentService {
6
+ timeOut;
7
7
  elementLayoutContent = new Map();
8
8
  elementBody;
9
- mapStylesToParentDocument = new Map();
9
+ mapStylesToParentDocument = new WeakMap();
10
10
  appRef = inject(ApplicationRef);
11
11
  idElementLayoutContentDefault = 'libs-ui-layout-content';
12
12
  set IdElementLayoutContentDefault(id) {
@@ -15,7 +15,7 @@ class LibsUiDynamicComponentService {
15
15
  resolveComponentFactory(component) {
16
16
  return createComponent(component, { environmentInjector: this.appRef.injector });
17
17
  }
18
- addToBody(componentRef, isAddParentDocument) {
18
+ addToBody(componentRef, isAddParentDocument, timerDelayUpdateStyleToParent) {
19
19
  if (!componentRef || !componentRef.hostView) {
20
20
  return '';
21
21
  }
@@ -23,7 +23,8 @@ class LibsUiDynamicComponentService {
23
23
  const domElem = componentRef.hostView.rootNodes[0];
24
24
  if (isAddParentDocument) {
25
25
  window.parent.document.body.appendChild(domElem);
26
- return this.updateStyleToParentDocument();
26
+ this.updateStyleToParentDocument(componentRef, timerDelayUpdateStyleToParent);
27
+ return '';
27
28
  }
28
29
  if (!this.elementBody) {
29
30
  this.elementBody = document.body;
@@ -53,11 +54,11 @@ class LibsUiDynamicComponentService {
53
54
  const domElem = componentRef.hostView.rootNodes[0];
54
55
  return this.elementLayoutContent.get(id)?.appendChild(domElem);
55
56
  }
56
- remove(componentRef, frameId = '', ignoreDestroyComponent) {
57
+ remove(componentRef, frameId, ignoreDestroyComponent) {
57
58
  if (!componentRef) {
58
59
  return;
59
60
  }
60
- this.removeStyleToParentDocument(frameId);
61
+ this.removeStyleToParentDocument(componentRef);
61
62
  if (componentRef.hostView) {
62
63
  this.appRef.detachView(componentRef.hostView);
63
64
  }
@@ -65,25 +66,28 @@ class LibsUiDynamicComponentService {
65
66
  componentRef.destroy();
66
67
  }
67
68
  }
68
- updateStyleToParentDocument() {
69
- const frameId = uuid();
70
- const documentParent = window.parent.document;
71
- if (documentParent && !this.mapStylesToParentDocument.has(frameId)) {
72
- const styleTags = new Array();
73
- Array.from(document.head.querySelectorAll("style")).forEach(styleTag => {
74
- const cloneStyleTag = styleTag.cloneNode(true);
75
- styleTags.push(cloneStyleTag);
76
- documentParent?.head.appendChild(cloneStyleTag);
77
- });
78
- this.mapStylesToParentDocument.set(frameId, styleTags);
69
+ updateStyleToParentDocument(componentRef, timerDelayUpdateStyleToParent) {
70
+ if (this.timeOut) {
71
+ clearTimeout(this.timeOut);
79
72
  }
80
- return frameId;
73
+ this.timeOut = setTimeout(() => {
74
+ const documentParent = window.parent.document;
75
+ if (documentParent && !this.mapStylesToParentDocument.has(componentRef)) {
76
+ const styleTags = new Array();
77
+ Array.from(document.head.querySelectorAll("style")).forEach(styleTag => {
78
+ const cloneStyleTag = styleTag.cloneNode(true);
79
+ styleTags.push(cloneStyleTag);
80
+ documentParent?.head.appendChild(cloneStyleTag);
81
+ });
82
+ this.mapStylesToParentDocument.set(componentRef, styleTags);
83
+ }
84
+ }, timerDelayUpdateStyleToParent || 250);
81
85
  }
82
- removeStyleToParentDocument(frameId) {
83
- if (!frameId) {
86
+ removeStyleToParentDocument(componentRef) {
87
+ if (!componentRef) {
84
88
  return;
85
89
  }
86
- const styleTagsPopup = this.mapStylesToParentDocument.get(frameId);
90
+ const styleTagsPopup = this.mapStylesToParentDocument.get(componentRef);
87
91
  const documentParent = window.parent.document;
88
92
  if (!styleTagsPopup || !styleTagsPopup.length || !documentParent) {
89
93
  return;
@@ -91,7 +95,14 @@ class LibsUiDynamicComponentService {
91
95
  styleTagsPopup.forEach(styleTag => {
92
96
  documentParent?.head.removeChild(styleTag);
93
97
  });
94
- this.mapStylesToParentDocument.delete(frameId);
98
+ this.mapStylesToParentDocument.delete(componentRef);
99
+ }
100
+ ngOnDestroy() {
101
+ if (this.timeOut) {
102
+ clearTimeout(this.timeOut);
103
+ this.timeOut = undefined;
104
+ }
105
+ this.elementLayoutContent.clear();
95
106
  }
96
107
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiDynamicComponentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
97
108
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiDynamicComponentService, providedIn: 'root' });
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-services-dynamic-component.mjs","sources":["../../../../../libs-ui/services/dynamic-component/src/dynamic-component.service.ts","../../../../../libs-ui/services/dynamic-component/src/set-inputs.ts","../../../../../libs-ui/services/dynamic-component/src/libs-ui-services-dynamic-component.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ApplicationRef, ComponentRef, EmbeddedViewRef, Injectable, createComponent, inject } from '@angular/core';\nimport { uuid } from '@libs-ui/utils';\n@Injectable({\n providedIn: 'root'\n})\n\nexport class LibsUiDynamicComponentService {\n private elementLayoutContent:Map<string, HTMLElement> = new Map();\n private elementBody!: HTMLElement | null;\n private mapStylesToParentDocument: Map<string, Array<Node>> = new Map();\n private appRef = inject(ApplicationRef);\n private idElementLayoutContentDefault = 'libs-ui-layout-content';\n\n public set IdElementLayoutContentDefault(id: string) {\n this.idElementLayoutContentDefault = id;\n }\n\n public resolveComponentFactory(component: any): ComponentRef<any> {\n return createComponent(component, { environmentInjector: this.appRef.injector });\n }\n\n public addToBody(componentRef: any, isAddParentDocument?: boolean): string {\n if (!componentRef || !componentRef.hostView) {\n return '';\n }\n\n this.appRef.attachView(componentRef.hostView);\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n\n if (isAddParentDocument) {\n window.parent.document.body.appendChild(domElem);\n\n return this.updateStyleToParentDocument();\n }\n if (!this.elementBody) {\n this.elementBody = document.body;\n }\n this.elementBody.appendChild(domElem);\n\n return '';\n }\n\n public addToElement(componentRef: any, elementAdd: any) {\n if (!componentRef || !componentRef.hostView || !elementAdd) {\n return;\n }\n this.appRef.attachView(componentRef.hostView);\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n\n return elementAdd.appendChild(domElem);\n }\n\n public addToElementLayoutContentDefault(componentRef: any, id: string = this.idElementLayoutContentDefault) {\n this.addToIdAttributeElement(componentRef, id);\n }\n\n\n public addToIdAttributeElement(componentRef: any, id: string) {\n if (!this.elementLayoutContent.has(id)) {\n this.elementLayoutContent.set(id, document.getElementById(id) as HTMLElement);\n }\n if (!componentRef || !componentRef.hostView) {\n return;\n }\n this.appRef.attachView(componentRef.hostView);\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n\n return this.elementLayoutContent.get(id)?.appendChild(domElem);\n }\n\n public remove(componentRef: any, frameId = '', ignoreDestroyComponent?: boolean) {\n if (!componentRef) {\n return;\n }\n this.removeStyleToParentDocument(frameId);\n if (componentRef.hostView) {\n this.appRef.detachView(componentRef.hostView);\n }\n if (!ignoreDestroyComponent && componentRef.destroy) {\n componentRef.destroy();\n }\n }\n\n private updateStyleToParentDocument(): string {\n const frameId = uuid();\n const documentParent = window.parent.document;\n\n if (documentParent && !this.mapStylesToParentDocument.has(frameId)) {\n const styleTags = new Array<Node>();\n\n Array.from(document.head.querySelectorAll(\"style\")).forEach(styleTag => {\n const cloneStyleTag = styleTag.cloneNode(true);\n\n styleTags.push(cloneStyleTag);\n documentParent?.head.appendChild(cloneStyleTag);\n });\n this.mapStylesToParentDocument.set(frameId, styleTags);\n }\n\n return frameId;\n }\n\n private removeStyleToParentDocument(frameId: string) {\n if (!frameId) {\n return;\n }\n const styleTagsPopup = this.mapStylesToParentDocument.get(frameId);\n const documentParent = window.parent.document;\n\n if (!styleTagsPopup || !styleTagsPopup.length || !documentParent) {\n return;\n }\n styleTagsPopup.forEach(styleTag => {\n documentParent?.head.removeChild(styleTag);\n });\n this.mapStylesToParentDocument.delete(frameId);\n }\n}","import { ComponentRef } from \"@angular/core\";\nimport { Inputs } from \"./inputs.type\";\n\nexport const setInputs = <T>(componentRef: ComponentRef<T>, inputs: Inputs<T>): void => {\n Object.entries(inputs).forEach(([key, value]) => componentRef.setInput(key, value));\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-services-dynamic-component.mjs","sources":["../../../../../libs-ui/services/dynamic-component/src/dynamic-component.service.ts","../../../../../libs-ui/services/dynamic-component/src/set-inputs.ts","../../../../../libs-ui/services/dynamic-component/src/libs-ui-services-dynamic-component.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ApplicationRef, ComponentRef, EmbeddedViewRef, Injectable, createComponent, inject,OnDestroy } from '@angular/core';\n@Injectable({\n providedIn: 'root'\n})\n\nexport class LibsUiDynamicComponentService implements OnDestroy {\n private timeOut?: number;\n private elementLayoutContent:Map<string, HTMLElement> = new Map();\n private elementBody!: HTMLElement | null;\n private mapStylesToParentDocument: WeakMap<ComponentRef<any>, Array<Node>> = new WeakMap();\n private appRef = inject(ApplicationRef);\n private idElementLayoutContentDefault = 'libs-ui-layout-content';\n\n public set IdElementLayoutContentDefault(id: string) {\n this.idElementLayoutContentDefault = id;\n }\n\n public resolveComponentFactory(component: any): ComponentRef<any> {\n return createComponent(component, { environmentInjector: this.appRef.injector });\n }\n\n public addToBody(componentRef?: ComponentRef<any>, isAddParentDocument?: boolean, timerDelayUpdateStyleToParent?: number): string {\n if (!componentRef || !componentRef.hostView) {\n return '';\n }\n\n this.appRef.attachView(componentRef.hostView);\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n\n if (isAddParentDocument) {\n window.parent.document.body.appendChild(domElem);\n this.updateStyleToParentDocument(componentRef, timerDelayUpdateStyleToParent);\n\n return '';\n }\n if (!this.elementBody) {\n this.elementBody = document.body;\n }\n this.elementBody.appendChild(domElem);\n\n return '';\n }\n\n public addToElement(componentRef: any, elementAdd: any) {\n if (!componentRef || !componentRef.hostView || !elementAdd) {\n return;\n }\n this.appRef.attachView(componentRef.hostView);\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n\n return elementAdd.appendChild(domElem);\n }\n\n public addToElementLayoutContentDefault(componentRef: any, id: string = this.idElementLayoutContentDefault) {\n this.addToIdAttributeElement(componentRef, id);\n }\n\n public addToIdAttributeElement(componentRef: any, id: string) {\n if (!this.elementLayoutContent.has(id)) {\n this.elementLayoutContent.set(id, document.getElementById(id) as HTMLElement);\n }\n if (!componentRef || !componentRef.hostView) {\n return;\n }\n this.appRef.attachView(componentRef.hostView);\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n\n return this.elementLayoutContent.get(id)?.appendChild(domElem);\n }\n\n public remove(componentRef: any, frameId?:string, ignoreDestroyComponent?: boolean) {\n if (!componentRef) {\n return;\n }\n this.removeStyleToParentDocument(componentRef);\n if (componentRef.hostView) {\n this.appRef.detachView(componentRef.hostView);\n }\n if (!ignoreDestroyComponent && componentRef.destroy) {\n componentRef.destroy();\n }\n }\n\n private updateStyleToParentDocument(componentRef: ComponentRef<any>, timerDelayUpdateStyleToParent?: number) {\n if (this.timeOut) {\n clearTimeout(this.timeOut);\n }\n this.timeOut = setTimeout(() => {\n const documentParent = window.parent.document;\n \n if (documentParent && !this.mapStylesToParentDocument.has(componentRef)) {\n const styleTags = new Array<Node>();\n \n Array.from(document.head.querySelectorAll(\"style\")).forEach(styleTag => {\n const cloneStyleTag = styleTag.cloneNode(true);\n \n styleTags.push(cloneStyleTag);\n documentParent?.head.appendChild(cloneStyleTag);\n });\n this.mapStylesToParentDocument.set(componentRef, styleTags);\n }\n }, timerDelayUpdateStyleToParent || 250);\n }\n\n private removeStyleToParentDocument(componentRef: ComponentRef<any>) {\n if (!componentRef) {\n return;\n }\n const styleTagsPopup = this.mapStylesToParentDocument.get(componentRef);\n const documentParent = window.parent.document;\n\n if (!styleTagsPopup || !styleTagsPopup.length || !documentParent) {\n return;\n }\n styleTagsPopup.forEach(styleTag => {\n documentParent?.head.removeChild(styleTag);\n });\n this.mapStylesToParentDocument.delete(componentRef);\n }\n\n ngOnDestroy() {\n if (this.timeOut) {\n clearTimeout(this.timeOut);\n this.timeOut = undefined;\n }\n \n this.elementLayoutContent.clear();\n }\n}","import { ComponentRef } from \"@angular/core\";\nimport { Inputs } from \"./inputs.type\";\n\nexport const setInputs = <T>(componentRef: ComponentRef<T>, inputs: Inputs<T>): void => {\n Object.entries(inputs).forEach(([key, value]) => componentRef.setInput(key, value));\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@libs-ui/services-dynamic-component",
3
- "version": "0.2.291",
3
+ "version": "0.2.292",
4
4
  "peerDependencies": {
5
5
  "@angular/core": ">=18.0.0",
6
- "@libs-ui/utils": "0.2.291"
6
+ "@libs-ui/utils": "0.2.292"
7
7
  },
8
8
  "sideEffects": false,
9
9
  "module": "fesm2022/libs-ui-services-dynamic-component.mjs",