@libs-ui/services-dynamic-component 0.2.28 → 0.2.30-6.1

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,17 +1,22 @@
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;
7
8
  private appRef;
9
+ private idElementLayoutContentDefault;
10
+ set IdElementLayoutContentDefault(id: string);
8
11
  resolveComponentFactory(component: any): ComponentRef<any>;
9
- addToBody(componentRef: any, isAddParentDocument?: boolean): string;
12
+ addToBody(componentRef?: ComponentRef<any>, isAddParentDocument?: boolean, timerDelayUpdateStyleToParent?: number): string;
10
13
  addToElement(componentRef: any, elementAdd: any): any;
14
+ addToElementLayoutContentDefault(componentRef: any, id?: string): void;
11
15
  addToIdAttributeElement(componentRef: any, id: string): HTMLElement | undefined;
12
16
  remove(componentRef: any, frameId?: string, ignoreDestroyComponent?: boolean): void;
13
17
  private updateStyleToParentDocument;
14
18
  private removeStyleToParentDocument;
19
+ ngOnDestroy(): void;
15
20
  static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiDynamicComponentService, never>;
16
21
  static ɵprov: i0.ɵɵInjectableDeclaration<LibsUiDynamicComponentService>;
17
22
  }
@@ -1,16 +1,20 @@
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 {
6
- elementLayoutContent;
5
+ timeOut;
6
+ elementLayoutContent = new Map();
7
7
  elementBody;
8
- mapStylesToParentDocument = new Map();
8
+ mapStylesToParentDocument = new WeakMap();
9
9
  appRef = inject(ApplicationRef);
10
+ idElementLayoutContentDefault = 'libs-ui-layout-content';
11
+ set IdElementLayoutContentDefault(id) {
12
+ this.idElementLayoutContentDefault = id;
13
+ }
10
14
  resolveComponentFactory(component) {
11
15
  return createComponent(component, { environmentInjector: this.appRef.injector });
12
16
  }
13
- addToBody(componentRef, isAddParentDocument) {
17
+ addToBody(componentRef, isAddParentDocument, timerDelayUpdateStyleToParent) {
14
18
  if (!componentRef || !componentRef.hostView) {
15
19
  return '';
16
20
  }
@@ -18,7 +22,8 @@ export class LibsUiDynamicComponentService {
18
22
  const domElem = componentRef.hostView.rootNodes[0];
19
23
  if (isAddParentDocument) {
20
24
  window.parent.document.body.appendChild(domElem);
21
- return this.updateStyleToParentDocument();
25
+ this.updateStyleToParentDocument(componentRef, timerDelayUpdateStyleToParent);
26
+ return '';
22
27
  }
23
28
  if (!this.elementBody) {
24
29
  this.elementBody = document.body;
@@ -34,22 +39,25 @@ export class LibsUiDynamicComponentService {
34
39
  const domElem = componentRef.hostView.rootNodes[0];
35
40
  return elementAdd.appendChild(domElem);
36
41
  }
42
+ addToElementLayoutContentDefault(componentRef, id = this.idElementLayoutContentDefault) {
43
+ this.addToIdAttributeElement(componentRef, id);
44
+ }
37
45
  addToIdAttributeElement(componentRef, id) {
38
- if (!this.elementLayoutContent) {
39
- this.elementLayoutContent = document.getElementById(id);
46
+ if (!this.elementLayoutContent.has(id)) {
47
+ this.elementLayoutContent.set(id, document.getElementById(id));
40
48
  }
41
49
  if (!componentRef || !componentRef.hostView) {
42
50
  return;
43
51
  }
44
52
  this.appRef.attachView(componentRef.hostView);
45
53
  const domElem = componentRef.hostView.rootNodes[0];
46
- return this.elementLayoutContent?.appendChild(domElem);
54
+ return this.elementLayoutContent.get(id)?.appendChild(domElem);
47
55
  }
48
- remove(componentRef, frameId = '', ignoreDestroyComponent) {
56
+ remove(componentRef, frameId, ignoreDestroyComponent) {
49
57
  if (!componentRef) {
50
58
  return;
51
59
  }
52
- this.removeStyleToParentDocument(frameId);
60
+ this.removeStyleToParentDocument(componentRef);
53
61
  if (componentRef.hostView) {
54
62
  this.appRef.detachView(componentRef.hostView);
55
63
  }
@@ -57,25 +65,28 @@ export class LibsUiDynamicComponentService {
57
65
  componentRef.destroy();
58
66
  }
59
67
  }
60
- updateStyleToParentDocument() {
61
- const frameId = uuid();
62
- const documentParent = window.parent.document;
63
- if (documentParent && !this.mapStylesToParentDocument.has(frameId)) {
64
- const styleTags = new Array();
65
- Array.from(document.head.querySelectorAll("style")).forEach(styleTag => {
66
- const cloneStyleTag = styleTag.cloneNode(true);
67
- styleTags.push(cloneStyleTag);
68
- documentParent?.head.appendChild(cloneStyleTag);
69
- });
70
- this.mapStylesToParentDocument.set(frameId, styleTags);
68
+ updateStyleToParentDocument(componentRef, timerDelayUpdateStyleToParent) {
69
+ if (this.timeOut) {
70
+ clearTimeout(this.timeOut);
71
71
  }
72
- 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);
73
84
  }
74
- removeStyleToParentDocument(frameId) {
75
- if (!frameId) {
85
+ removeStyleToParentDocument(componentRef) {
86
+ if (!componentRef) {
76
87
  return;
77
88
  }
78
- const styleTagsPopup = this.mapStylesToParentDocument.get(frameId);
89
+ const styleTagsPopup = this.mapStylesToParentDocument.get(componentRef);
79
90
  const documentParent = window.parent.document;
80
91
  if (!styleTagsPopup || !styleTagsPopup.length || !documentParent) {
81
92
  return;
@@ -83,7 +94,14 @@ export class LibsUiDynamicComponentService {
83
94
  styleTagsPopup.forEach(styleTag => {
84
95
  documentParent?.head.removeChild(styleTag);
85
96
  });
86
- 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();
87
105
  }
88
106
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiDynamicComponentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
89
107
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiDynamicComponentService, providedIn: 'root' });
@@ -94,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
94
112
  providedIn: 'root'
95
113
  }]
96
114
  }] });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvZHluYW1pYy1jb21wb25lbnQvc3JjL2R5bmFtaWMtY29tcG9uZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQWlDLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFLdEMsTUFBTSxPQUFPLDZCQUE2QjtJQUNoQyxvQkFBb0IsQ0FBc0I7SUFDMUMsV0FBVyxDQUFzQjtJQUNqQyx5QkFBeUIsR0FBNkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNoRSxNQUFNLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRWpDLHVCQUF1QixDQUFDLFNBQWM7UUFDM0MsT0FBTyxlQUFlLENBQUMsU0FBUyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFTSxTQUFTLENBQUMsWUFBaUIsRUFBRSxtQkFBNkI7UUFDL0QsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1QyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsTUFBTSxPQUFPLEdBQUksWUFBWSxDQUFDLFFBQWlDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztRQUU1RixJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDeEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdB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YSxDQUFDLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLDJCQUEyQixDQUFDLE9BQWU7UUFDakQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBRTlDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDakUsT0FBTztRQUNULENBQUM7UUFDRCxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2hDLGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRCxDQUFDO3dHQXBHVSw2QkFBNkI7NEdBQTdCLDZCQUE2QixjQUg1QixNQUFNOzs0RkFHUCw2QkFBNkI7a0JBSnpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIENvbXBvbmVudFJlZiwgRW1iZWRkZWRWaWV3UmVmLCBJbmplY3RhYmxlLCBjcmVhdGVDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdXVpZCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuXG5leHBvcnQgY2xhc3MgTGlic1VpRHluYW1pY0NvbXBvbmVudFNlcnZpY2Uge1xuICBwcml2YXRlIGVsZW1lbnRMYXlvdXRDb250ZW50ITogSFRNTEVsZW1lbnQgfCBudWxsO1xuICBwcml2YXRlIGVsZW1lbnRCb2R5ITogSFRNTEVsZW1lbnQgfCBudWxsO1xuICBwcml2YXRlIG1hcFN0eWxlc1RvUGFyZW50RG9jdW1lbnQ6IE1hcDxzdHJpbmcsIEFycmF5PE5vZGU+PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBhcHBSZWYgPSBpbmplY3QoQXBwbGljYXRpb25SZWYpO1xuXG4gIHB1YmxpYyByZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnQ6IGFueSk6IENvbXBvbmVudFJlZjxhbnk+IHtcbiAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCwgeyBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLmFwcFJlZi5pbmplY3RvciB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb0JvZHkoY29tcG9uZW50UmVmOiBhbnksIGlzQWRkUGFyZW50RG9jdW1lbnQ/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBpZiAoIWNvbXBvbmVudFJlZiB8fCAhY29tcG9uZW50UmVmLmhvc3RWaWV3KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoaXNBZGRQYXJlbnREb2N1bWVudCkge1xuICAgICAgd2luZG93LnBhcmVudC5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuXG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVTdHlsZVRvUGFyZW50RG9jdW1lbnQoKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRCb2R5KSB7XG4gICAgICB0aGlzLmVsZW1lbnRCb2R5ID0gZG9jdW1lbnQuYm9keTtcbiAgICB9XG4gICAgdGhpcy5lbGVtZW50Qm9keS5hcHBlbmRDaGlsZChkb21FbGVtKTtcblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb0VsZW1lbnQoY29tcG9uZW50UmVmOiBhbnksIGVsZW1lbnRBZGQ6IGFueSkge1xuICAgIGlmICghY29tcG9uZW50UmVmIHx8ICFjb21wb25lbnRSZWYuaG9zdFZpZXcgfHwgIWVsZW1lbnRBZGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICByZXR1cm4gZWxlbWVudEFkZC5hcHBlbmRDaGlsZChkb21FbGVtKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb0lkQXR0cmlidXRlRWxlbWVudChjb21wb25lbnRSZWY6IGFueSwgaWQ6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5lbGVtZW50TGF5b3V0Q29udGVudCkge1xuICAgICAgdGhpcy5lbGVtZW50TGF5b3V0Q29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICB9XG4gICAgaWYgKCFjb21wb25lbnRSZWYgfHwgIWNvbXBvbmVudFJlZi5ob3N0Vmlldykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgY29uc3QgZG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcblxuICAgIHJldHVybiB0aGlzLmVsZW1lbnRMYXlvdXRDb250ZW50Py5hcHBlbmRDaGlsZChkb21FbGVtKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmUoY29tcG9uZW50UmVmOiBhbnksIGZyYW1lSWQgPSAnJywgaWdub3JlRGVzdHJveUNvbXBvbmVudD86IGJvb2xlYW4pIHtcbiAgICBpZiAoIWNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZVN0eWxlVG9QYXJlbnREb2N1bWVudChmcmFtZUlkKTtcbiAgICBpZiAoY29tcG9uZW50UmVmLmhvc3RWaWV3KSB7XG4gICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgfVxuICAgIGlmICghaWdub3JlRGVzdHJveUNvbXBvbmVudCAmJiBjb21wb25lbnRSZWYuZGVzdHJveSkge1xuICAgICAgY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0eWxlVG9QYXJlbnREb2N1bWVudCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZyYW1lSWQgPSB1dWlkKCk7XG4gICAgY29uc3QgZG9jdW1lbnRQYXJlbnQgPSB3aW5kb3cucGFyZW50LmRvY3VtZW50O1xuXG4gICAgaWYgKGRvY3VtZW50UGFyZW50ICYmICF0aGlzLm1hcFN0eWxlc1RvUGFyZW50RG9jdW1lbnQuaGFzKGZyYW1lSWQpKSB7XG4gICAgICBjb25zdCBzdHlsZVRhZ3MgPSBuZXcgQXJyYXk8Tm9kZT4oKTtcblxuICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3JBbGwoXCJzdHlsZVwiKSkuZm9yRWFjaChzdHlsZVRhZyA9PiB7XG4gICAgICAgIGNvbnN0IGNsb25lU3R5bGVUYWcgPSBzdHlsZVRhZy5jbG9uZU5vZGUodHJ1ZSk7XG5cbiAgICAgICAgc3R5bGVUYWdzLnB1c2goY2xvbmVTdHlsZVRhZyk7XG4gICAgICAgIGRvY3VtZW50UGFyZW50Py5oZWFkLmFwcGVuZENoaWxkKGNsb25lU3R5bGVUYWcpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLm1hcFN0eWxlc1RvUGFyZW50RG9jdW1lbnQuc2V0KGZyYW1lSWQsIHN0eWxlVGFncyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYW1lSWQ7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVN0eWxlVG9QYXJlbnREb2N1bWVudChmcmFtZUlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIWZyYW1lSWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc3R5bGVUYWdzUG9wdXAgPSB0aGlzLm1hcFN0eWxlc1RvUGFyZW50RG9jdW1lbnQuZ2V0KGZyYW1lSWQpO1xuICAgIGNvbnN0IGRvY3VtZW50UGFyZW50ID0gd2luZG93LnBhcmVudC5kb2N1bWVudDtcblxuICAgIGlmICghc3R5bGVUYWdzUG9wdXAgfHwgIXN0eWxlVGFnc1BvcHVwLmxlbmd0aCB8fCAhZG9jdW1lbnRQYXJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3R5bGVUYWdzUG9wdXAuZm9yRWFjaChzdHlsZVRhZyA9PiB7XG4gICAgICBkb2N1bWVudFBhcmVudD8uaGVhZC5yZW1vdmVDaGlsZChzdHlsZVRhZyk7XG4gICAgfSk7XG4gICAgdGhpcy5tYXBTdHlsZXNUb1BhcmVudERvY3VtZW50LmRlbGV0ZShmcmFtZUlkKTtcbiAgfVxufSJdfQ==
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvZHluYW1pYy1jb21wb25lbnQvc3JjL2R5bmFtaWMtY29tcG9uZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQWlDLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFjLE1BQU0sZUFBZSxDQUFDOztBQUsvSCxNQUFNLE9BQU8sNkJBQTZCO0lBQ2hDLE9BQU8sQ0FBVTtJQUNqQixvQkFBb0IsR0FBNEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMxRCxXQUFXLENBQXNCO0lBQ2pDLHlCQUF5QixHQUE0QyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ25GLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEMsNkJBQTZCLEdBQUcsd0JBQXdCLENBQUM7SUFFakUsSUFBVyw2QkFBNkIsQ0FBQyxFQUFVO1FBQ2pELElBQUksQ0FBQyw2QkFBNkIsR0FBRyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVNLHVCQUF1QixDQUFDLFNBQWM7UUFDM0MsT0FBTyxlQUFlLENBQUMsU0FBUyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFTSxTQUFTLENBQUMsWUFBZ0MsRUFBRSxtQkFBNkIsRUFBRSw2QkFBc0M7UUFDdEgsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1QyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsTUFBTSxPQUFPLEdBQUksWUFBWSxDQUFDLFFB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LGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDaEMsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RDLENBQUM7d0dBMUhVLDZCQUE2Qjs0R0FBN0IsNkJBQTZCLGNBSDVCLE1BQU07OzRGQUdQLDZCQUE2QjtrQkFKekMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50UmVmLCBFbWJlZGRlZFZpZXdSZWYsIEluamVjdGFibGUsIGNyZWF0ZUNvbXBvbmVudCwgaW5qZWN0LE9uRGVzdHJveSAgIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcblxuZXhwb3J0IGNsYXNzIExpYnNVaUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSB0aW1lT3V0PzogbnVtYmVyO1xuICBwcml2YXRlIGVsZW1lbnRMYXlvdXRDb250ZW50Ok1hcDxzdHJpbmcsIEhUTUxFbGVtZW50PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBlbGVtZW50Qm9keSE6IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgcHJpdmF0ZSBtYXBTdHlsZXNUb1BhcmVudERvY3VtZW50OiBXZWFrTWFwPENvbXBvbmVudFJlZjxhbnk+LCBBcnJheTxOb2RlPj4gPSBuZXcgV2Vha01hcCgpO1xuICBwcml2YXRlIGFwcFJlZiA9IGluamVjdChBcHBsaWNhdGlvblJlZik7XG4gIHByaXZhdGUgaWRFbGVtZW50TGF5b3V0Q29udGVudERlZmF1bHQgPSAnbGlicy11aS1sYXlvdXQtY29udGVudCc7XG5cbiAgcHVibGljIHNldCBJZEVsZW1lbnRMYXlvdXRDb250ZW50RGVmYXVsdChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5pZEVsZW1lbnRMYXlvdXRDb250ZW50RGVmYXVsdCA9IGlkO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudDogYW55KTogQ29tcG9uZW50UmVmPGFueT4ge1xuICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoY29tcG9uZW50LCB7IGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuYXBwUmVmLmluamVjdG9yIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRvQm9keShjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8YW55PiwgaXNBZGRQYXJlbnREb2N1bWVudD86IGJvb2xlYW4sIHRpbWVyRGVsYXlVcGRhdGVTdHlsZVRvUGFyZW50PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIWNvbXBvbmVudFJlZiB8fCAhY29tcG9uZW50UmVmLmhvc3RWaWV3KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoaXNBZGRQYXJlbnREb2N1bWVudCkge1xuICAgICAgd2luZG93LnBhcmVudC5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuICAgICAgdGhpcy51cGRhdGVTdHlsZVRvUGFyZW50RG9jdW1lbnQoY29tcG9uZW50UmVmLCB0aW1lckRlbGF5VXBkYXRlU3R5bGVUb1BhcmVudCk7XG5cbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRCb2R5KSB7XG4gICAgICB0aGlzLmVsZW1lbnRCb2R5ID0gZG9jdW1lbnQuYm9keTtcbiAgICB9XG4gICAgdGhpcy5lbGVtZW50Qm9keS5hcHBlbmRDaGlsZChkb21FbGVtKTtcblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb0VsZW1lbnQoY29tcG9uZW50UmVmOiBhbnksIGVsZW1lbnRBZGQ6IGFueSkge1xuICAgIGlmICghY29tcG9uZW50UmVmIHx8ICFjb21wb25lbnRSZWYuaG9zdFZpZXcgfHwgIWVsZW1lbnRBZGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICByZXR1cm4gZWxlbWVudEFkZC5hcHBlbmRDaGlsZChkb21FbGVtKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb0VsZW1lbnRMYXlvdXRDb250ZW50RGVmYXVsdChjb21wb25lbnRSZWY6IGFueSwgaWQ6IHN0cmluZyA9IHRoaXMuaWRFbGVtZW50TGF5b3V0Q29udGVudERlZmF1bHQpIHtcbiAgIHRoaXMuYWRkVG9JZEF0dHJpYnV0ZUVsZW1lbnQoY29tcG9uZW50UmVmLCBpZCk7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9JZEF0dHJpYnV0ZUVsZW1lbnQoY29tcG9uZW50UmVmOiBhbnksIGlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuZWxlbWVudExheW91dENvbnRlbnQuaGFzKGlkKSkge1xuICAgICAgdGhpcy5lbGVtZW50TGF5b3V0Q29udGVudC5zZXQoaWQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSBhcyBIVE1MRWxlbWVudCk7XG4gICAgfVxuICAgIGlmICghY29tcG9uZW50UmVmIHx8ICFjb21wb25lbnRSZWYuaG9zdFZpZXcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICByZXR1cm4gdGhpcy5lbGVtZW50TGF5b3V0Q29udGVudC5nZXQoaWQpPy5hcHBlbmRDaGlsZChkb21FbGVtKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmUoY29tcG9uZW50UmVmOiBhbnksIGZyYW1lSWQ/OnN0cmluZywgaWdub3JlRGVzdHJveUNvbXBvbmVudD86IGJvb2xlYW4pIHtcbiAgICBpZiAoIWNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZVN0eWxlVG9QYXJlbnREb2N1bWVudChjb21wb25lbnRSZWYpO1xuICAgIGlmIChjb21wb25lbnRSZWYuaG9zdFZpZXcpIHtcbiAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICB9XG4gICAgaWYgKCFpZ25vcmVEZXN0cm95Q29tcG9uZW50ICYmIGNvbXBvbmVudFJlZi5kZXN0cm95KSB7XG4gICAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3R5bGVUb1BhcmVudERvY3VtZW50KGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4sIHRpbWVyRGVsYXlVcGRhdGVTdHlsZVRvUGFyZW50PzogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMudGltZU91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZU91dCk7XG4gICAgfVxuICAgIHRoaXMudGltZU91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZG9jdW1lbnRQYXJlbnQgPSB3aW5kb3cucGFyZW50LmRvY3VtZW50O1xuICBcbiAgICAgIGlmIChkb2N1bWVudFBhcmVudCAmJiAhdGhpcy5tYXBTdHlsZXNUb1BhcmVudERvY3VtZW50Lmhhcyhjb21wb25lbnRSZWYpKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlVGFncyA9IG5ldyBBcnJheTxOb2RlPigpO1xuICBcbiAgICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3JBbGwoXCJzdHlsZVwiKSkuZm9yRWFjaChzdHlsZVRhZyA9PiB7XG4gICAgICAgICAgY29uc3QgY2xvbmVTdHlsZVRhZyA9IHN0eWxlVGFnLmNsb25lTm9kZSh0cnVlKTtcbiAgXG4gICAgICAgICAgc3R5bGVUYWdzLnB1c2goY2xvbmVTdHlsZVRhZyk7XG4gICAgICAgICAgZG9jdW1lbnRQYXJlbnQ/LmhlYWQuYXBwZW5kQ2hpbGQoY2xvbmVTdHlsZVRhZyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1hcFN0eWxlc1RvUGFyZW50RG9jdW1lbnQuc2V0KGNvbXBvbmVudFJlZiwgc3R5bGVUYWdzKTtcbiAgICAgIH1cbiAgICB9LCB0aW1lckRlbGF5VXBkYXRlU3R5bGVUb1BhcmVudCB8fCAyNTApO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVTdHlsZVRvUGFyZW50RG9jdW1lbnQoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55Pikge1xuICAgIGlmICghY29tcG9uZW50UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0eWxlVGFnc1BvcHVwID0gdGhpcy5tYXBTdHlsZXNUb1BhcmVudERvY3VtZW50LmdldChjb21wb25lbnRSZWYpO1xuICAgIGNvbnN0IGRvY3VtZW50UGFyZW50ID0gd2luZG93LnBhcmVudC5kb2N1bWVudDtcblxuICAgIGlmICghc3R5bGVUYWdzUG9wdXAgfHwgIXN0eWxlVGFnc1BvcHVwLmxlbmd0aCB8fCAhZG9jdW1lbnRQYXJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3R5bGVUYWdzUG9wdXAuZm9yRWFjaChzdHlsZVRhZyA9PiB7XG4gICAgICBkb2N1bWVudFBhcmVudD8uaGVhZC5yZW1vdmVDaGlsZChzdHlsZVRhZyk7XG4gICAgfSk7XG4gICAgdGhpcy5tYXBTdHlsZXNUb1BhcmVudERvY3VtZW50LmRlbGV0ZShjb21wb25lbnRSZWYpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICBpZiAodGhpcy50aW1lT3V0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVPdXQpO1xuICAgICAgICB0aGlzLnRpbWVPdXQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gIFxuICAgICAgdGhpcy5lbGVtZW50TGF5b3V0Q29udGVudC5jbGVhcigpO1xuICB9XG59Il19
package/esm2022/index.mjs CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './dynamic-component.service';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2R5bmFtaWMtY29tcG9uZW50L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9keW5hbWljLWNvbXBvbmVudC5zZXJ2aWNlJzsiXX0=
2
+ export * from './set-inputs';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2R5bmFtaWMtY29tcG9uZW50L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9keW5hbWljLWNvbXBvbmVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2V0LWlucHV0cyc7XG5cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export const setInputs = (componentRef, inputs) => {
2
+ Object.entries(inputs).forEach(([key, value]) => componentRef.setInput(key, value));
3
+ };
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LWlucHV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvZHluYW1pYy1jb21wb25lbnQvc3JjL3NldC1pbnB1dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUksWUFBNkIsRUFBRSxNQUFpQixFQUFRLEVBQUU7SUFDckYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN0RixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSW5wdXRzIH0gZnJvbSBcIkBsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IHNldElucHV0cyA9IDxUPihjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUPiwgaW5wdXRzOiBJbnB1dHM8VD4pOiB2b2lkID0+IHtcbiAgT2JqZWN0LmVudHJpZXMoaW5wdXRzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IGNvbXBvbmVudFJlZi5zZXRJbnB1dChrZXksIHZhbHVlKSk7XG59Il19
@@ -1,17 +1,21 @@
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 {
7
- elementLayoutContent;
6
+ timeOut;
7
+ elementLayoutContent = new Map();
8
8
  elementBody;
9
- mapStylesToParentDocument = new Map();
9
+ mapStylesToParentDocument = new WeakMap();
10
10
  appRef = inject(ApplicationRef);
11
+ idElementLayoutContentDefault = 'libs-ui-layout-content';
12
+ set IdElementLayoutContentDefault(id) {
13
+ this.idElementLayoutContentDefault = id;
14
+ }
11
15
  resolveComponentFactory(component) {
12
16
  return createComponent(component, { environmentInjector: this.appRef.injector });
13
17
  }
14
- addToBody(componentRef, isAddParentDocument) {
18
+ addToBody(componentRef, isAddParentDocument, timerDelayUpdateStyleToParent) {
15
19
  if (!componentRef || !componentRef.hostView) {
16
20
  return '';
17
21
  }
@@ -19,7 +23,8 @@ class LibsUiDynamicComponentService {
19
23
  const domElem = componentRef.hostView.rootNodes[0];
20
24
  if (isAddParentDocument) {
21
25
  window.parent.document.body.appendChild(domElem);
22
- return this.updateStyleToParentDocument();
26
+ this.updateStyleToParentDocument(componentRef, timerDelayUpdateStyleToParent);
27
+ return '';
23
28
  }
24
29
  if (!this.elementBody) {
25
30
  this.elementBody = document.body;
@@ -35,22 +40,25 @@ class LibsUiDynamicComponentService {
35
40
  const domElem = componentRef.hostView.rootNodes[0];
36
41
  return elementAdd.appendChild(domElem);
37
42
  }
43
+ addToElementLayoutContentDefault(componentRef, id = this.idElementLayoutContentDefault) {
44
+ this.addToIdAttributeElement(componentRef, id);
45
+ }
38
46
  addToIdAttributeElement(componentRef, id) {
39
- if (!this.elementLayoutContent) {
40
- this.elementLayoutContent = document.getElementById(id);
47
+ if (!this.elementLayoutContent.has(id)) {
48
+ this.elementLayoutContent.set(id, document.getElementById(id));
41
49
  }
42
50
  if (!componentRef || !componentRef.hostView) {
43
51
  return;
44
52
  }
45
53
  this.appRef.attachView(componentRef.hostView);
46
54
  const domElem = componentRef.hostView.rootNodes[0];
47
- return this.elementLayoutContent?.appendChild(domElem);
55
+ return this.elementLayoutContent.get(id)?.appendChild(domElem);
48
56
  }
49
- remove(componentRef, frameId = '', ignoreDestroyComponent) {
57
+ remove(componentRef, frameId, ignoreDestroyComponent) {
50
58
  if (!componentRef) {
51
59
  return;
52
60
  }
53
- this.removeStyleToParentDocument(frameId);
61
+ this.removeStyleToParentDocument(componentRef);
54
62
  if (componentRef.hostView) {
55
63
  this.appRef.detachView(componentRef.hostView);
56
64
  }
@@ -58,25 +66,28 @@ class LibsUiDynamicComponentService {
58
66
  componentRef.destroy();
59
67
  }
60
68
  }
61
- updateStyleToParentDocument() {
62
- const frameId = uuid();
63
- const documentParent = window.parent.document;
64
- if (documentParent && !this.mapStylesToParentDocument.has(frameId)) {
65
- const styleTags = new Array();
66
- Array.from(document.head.querySelectorAll("style")).forEach(styleTag => {
67
- const cloneStyleTag = styleTag.cloneNode(true);
68
- styleTags.push(cloneStyleTag);
69
- documentParent?.head.appendChild(cloneStyleTag);
70
- });
71
- this.mapStylesToParentDocument.set(frameId, styleTags);
69
+ updateStyleToParentDocument(componentRef, timerDelayUpdateStyleToParent) {
70
+ if (this.timeOut) {
71
+ clearTimeout(this.timeOut);
72
72
  }
73
- 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);
74
85
  }
75
- removeStyleToParentDocument(frameId) {
76
- if (!frameId) {
86
+ removeStyleToParentDocument(componentRef) {
87
+ if (!componentRef) {
77
88
  return;
78
89
  }
79
- const styleTagsPopup = this.mapStylesToParentDocument.get(frameId);
90
+ const styleTagsPopup = this.mapStylesToParentDocument.get(componentRef);
80
91
  const documentParent = window.parent.document;
81
92
  if (!styleTagsPopup || !styleTagsPopup.length || !documentParent) {
82
93
  return;
@@ -84,7 +95,14 @@ class LibsUiDynamicComponentService {
84
95
  styleTagsPopup.forEach(styleTag => {
85
96
  documentParent?.head.removeChild(styleTag);
86
97
  });
87
- 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();
88
106
  }
89
107
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiDynamicComponentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
90
108
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiDynamicComponentService, providedIn: 'root' });
@@ -96,9 +114,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
96
114
  }]
97
115
  }] });
98
116
 
117
+ const setInputs = (componentRef, inputs) => {
118
+ Object.entries(inputs).forEach(([key, value]) => componentRef.setInput(key, value));
119
+ };
120
+
99
121
  /**
100
122
  * Generated bundle index. Do not edit.
101
123
  */
102
124
 
103
- export { LibsUiDynamicComponentService };
125
+ export { LibsUiDynamicComponentService, setInputs };
104
126
  //# sourceMappingURL=libs-ui-services-dynamic-component.mjs.map
@@ -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/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!: HTMLElement | null;\n private elementBody!: HTMLElement | null;\n private mapStylesToParentDocument: Map<string, Array<Node>> = new Map();\n private appRef = inject(ApplicationRef);\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 addToIdAttributeElement(componentRef: any, id: string) {\n if (!this.elementLayoutContent) {\n this.elementLayoutContent = document.getElementById(id);\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?.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}","/**\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 \"@libs-ui/interfaces-types\";\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/index.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export * from './dynamic-component.service';
2
+ export * from './set-inputs';
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@libs-ui/services-dynamic-component",
3
- "version": "0.2.28",
3
+ "version": "0.2.306.1",
4
4
  "peerDependencies": {
5
- "@angular/common": "^18.2.0",
6
- "@angular/core": "^18.2.0"
5
+ "@angular/core": ">=18.0.0",
6
+ "@libs-ui/utils": "0.2.306.1"
7
7
  },
8
8
  "sideEffects": false,
9
9
  "module": "fesm2022/libs-ui-services-dynamic-component.mjs",
@@ -0,0 +1,3 @@
1
+ import { ComponentRef } from "@angular/core";
2
+ import { Inputs } from "@libs-ui/interfaces-types";
3
+ export declare const setInputs: <T>(componentRef: ComponentRef<T>, inputs: Inputs<T>) => void;