@libs-ui/services-dynamic-component 0.2.355-8 → 0.2.356-0

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
@@ -1,3 +1,210 @@
1
- # dynamic-component
1
+ # @libs-ui/services-dynamic-component
2
2
 
3
- This library was generated with [Nx](https://nx.dev).
3
+ > Service để tạo quản lý Angular components động tại runtime.
4
+
5
+ ## 📦 Cài đặt
6
+
7
+ ```bash
8
+ npm install @libs-ui/services-dynamic-component
9
+ ```
10
+
11
+ ## 🚀 Sử dụng
12
+
13
+ ```typescript
14
+ import { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';
15
+
16
+ @Component({...})
17
+ export class MyComponent {
18
+ private dynamicService = inject(LibsUiDynamicComponentService);
19
+
20
+ createComponent() {
21
+ const componentRef = this.dynamicService.resolveComponentFactory(MyDynamicComponent);
22
+ this.dynamicService.addToBody(componentRef);
23
+ }
24
+ }
25
+ ```
26
+
27
+ ## 📚 API Reference
28
+
29
+ ### Methods
30
+
31
+ | Method | Parameters | Returns | Description |
32
+ |--------|-----------|---------|-------------|
33
+ | `resolveComponentFactory` | `component: any` | `ComponentRef<any>` | Tạo ComponentRef từ component class |
34
+ | `addToBody` | `componentRef?: ComponentRef<any>, isAddParentDocument?: boolean, timerDelayUpdateStyleToParent?: number` | `string` | Thêm component vào document.body hoặc parent document |
35
+ | `addToElement` | `componentRef: any, elementAdd: any` | `void` | Thêm component vào element cụ thể |
36
+ | `addToElementLayoutContentDefault` | `componentRef: any, id?: string` | `void` | Thêm component vào element có id mặc định |
37
+ | `addToIdAttributeElement` | `componentRef: any, id: string` | `void` | Thêm component vào element có id cụ thể |
38
+ | `delete` | `componentRef: any, options?: { ignoreDestroyComponent?: boolean; timeoutDestroy?: number }` | `void` | Xóa component khỏi DOM và destroy |
39
+ | `remove` | `componentRef: any, _?: string, ignoreDestroyComponent?: boolean` | `void` | ⚠️ Deprecated - Dùng `delete()` thay thế |
40
+
41
+ ### Properties
42
+
43
+ | Property | Type | Description |
44
+ |----------|------|-------------|
45
+ | `IdElementLayoutContentDefault` | `string` (setter) | Set ID mặc định cho element layout content |
46
+
47
+ ## 🔍 Hidden Logic (Logic Ẩn)
48
+
49
+ ### 1. Singleton Service & State Sharing
50
+
51
+ Service là singleton (`providedIn: 'root'`), nghĩa là:
52
+ - Tất cả instances trong app share cùng một state
53
+ - `elementLayoutContent` Map được cache và share giữa tất cả usages
54
+ - `elementBody` được cache một lần và reuse
55
+
56
+ **Ví dụ:**
57
+ ```typescript
58
+ // Component A
59
+ this.dynamicService.addToIdAttributeElement(compRef, 'container-1');
60
+
61
+ // Component B - Cùng service instance
62
+ // elementLayoutContent Map đã có 'container-1' được cache
63
+ this.dynamicService.addToIdAttributeElement(compRef2, 'container-1');
64
+ // Không cần query DOM lại
65
+ ```
66
+
67
+ ### 2. Element Caching với Map
68
+
69
+ Service sử dụng `Map<string, HTMLElement>` để cache DOM elements:
70
+ - Lần đầu gọi `addToIdAttributeElement()` với id mới: Query DOM và cache
71
+ - Lần sau: Lấy từ cache, không query DOM lại
72
+ - **Lưu ý**: Nếu element bị xóa khỏi DOM, cache vẫn giữ reference cũ
73
+
74
+ **Ví dụ:**
75
+ ```typescript
76
+ // Lần 1: Query DOM và cache
77
+ this.dynamicService.addToIdAttributeElement(compRef1, 'my-container');
78
+ // elementLayoutContent.set('my-container', document.getElementById('my-container'))
79
+
80
+ // Lần 2: Lấy từ cache (nhanh hơn)
81
+ this.dynamicService.addToIdAttributeElement(compRef2, 'my-container');
82
+ // elementLayoutContent.get('my-container') - không query DOM
83
+ ```
84
+
85
+ ### 3. Parent Document Handling (iframe scenarios)
86
+
87
+ Khi `isAddParentDocument = true`:
88
+ - Component được append vào `window.parent.document.body` (không phải current document)
89
+ - Styles từ current document được clone và append vào parent document
90
+ - WeakMap được dùng để track styles đã copy, tránh duplicate
91
+
92
+ **Ví dụ:**
93
+ ```typescript
94
+ // Trong iframe
95
+ const compRef = this.dynamicService.resolveComponentFactory(MyComponent);
96
+ this.dynamicService.addToBody(compRef, true);
97
+ // Component xuất hiện trong parent window, không phải iframe
98
+ // Styles từ iframe được copy sang parent document
99
+ ```
100
+
101
+ ### 4. Style Copying Logic
102
+
103
+ Khi add component vào parent document:
104
+ - Tất cả `<style>` tags từ current document được clone
105
+ - Cloned styles được append vào parent document head
106
+ - WeakMap track ComponentRef → Array<Node> để cleanup sau
107
+ - Có debounce delay (mặc định 250ms) để tránh copy nhiều lần
108
+
109
+ **Ví dụ:**
110
+ ```typescript
111
+ // Current document có 3 style tags
112
+ // Khi addToBody(compRef, true):
113
+ // - Clone 3 style tags
114
+ // - Append vào parent.document.head
115
+ // - Track trong mapStylesToParentDocument
116
+ ```
117
+
118
+ ### 5. ComponentRef Lifecycle Management
119
+
120
+ Service quản lý lifecycle của ComponentRef:
121
+ - `attachView()`: Đăng ký view với ApplicationRef (change detection)
122
+ - `detachView()`: Hủy đăng ký view (ngừng change detection)
123
+ - `destroy()`: Destroy component hoàn toàn
124
+
125
+ **Ví dụ:**
126
+ ```typescript
127
+ const compRef = this.dynamicService.resolveComponentFactory(MyComponent);
128
+ this.dynamicService.addToBody(compRef);
129
+ // attachView() được gọi tự động
130
+
131
+ // Sau đó
132
+ this.dynamicService.delete(compRef);
133
+ // detachView() được gọi, sau đó destroy()
134
+ ```
135
+
136
+ ### 6. Delete Options - ignoreDestroyComponent & timeoutDestroy
137
+
138
+ `delete()` method có 2 options quan trọng:
139
+
140
+ **ignoreDestroyComponent = true:**
141
+ - Chỉ detach view, không destroy component
142
+ - Component vẫn tồn tại trong memory
143
+ - Dùng khi muốn reuse component sau
144
+
145
+ **timeoutDestroy:**
146
+ - Delay destroy component sau khi detach view
147
+ - Dùng khi cần animation hoặc cleanup async
148
+
149
+ **Ví dụ:**
150
+ ```typescript
151
+ // Option 1: Không destroy (reuse sau)
152
+ this.dynamicService.delete(compRef, { ignoreDestroyComponent: true });
153
+ // Component vẫn tồn tại, có thể add lại
154
+
155
+ // Option 2: Delay destroy (animation)
156
+ this.dynamicService.delete(compRef, { timeoutDestroy: 300 });
157
+ // detachView() ngay, destroy() sau 300ms
158
+ ```
159
+
160
+ ### 7. Auto Cleanup trong ngOnDestroy
161
+
162
+ Service tự động cleanup khi bị destroy:
163
+ - Clear timeout nếu có
164
+ - Clear elementLayoutContent Map
165
+ - **Lưu ý**: Styles đã copy sang parent document KHÔNG được tự động remove
166
+
167
+ **Ví dụ:**
168
+ ```typescript
169
+ // Service được destroy
170
+ ngOnDestroy() {
171
+ // Clear timeout
172
+ // Clear elementLayoutContent Map
173
+ // Nhưng styles trong parent document vẫn còn
174
+ }
175
+ ```
176
+
177
+ ### 8. WeakMap cho Style Tracking
178
+
179
+ Service dùng WeakMap để track styles:
180
+ - Key: ComponentRef (weak reference, không giữ component alive)
181
+ - Value: Array<Node> (cloned style tags)
182
+ - Khi ComponentRef bị GC, entry tự động bị xóa khỏi WeakMap
183
+
184
+ **Ví dụ:**
185
+ ```typescript
186
+ const compRef = this.dynamicService.resolveComponentFactory(MyComponent);
187
+ this.dynamicService.addToBody(compRef, true);
188
+ // mapStylesToParentDocument.set(compRef, [style1, style2, style3])
189
+
190
+ // Sau khi delete
191
+ this.dynamicService.delete(compRef);
192
+ // removeStyleToParentDocument() xóa styles khỏi parent document
193
+ // WeakMap entry vẫn tồn tại cho đến khi compRef bị GC
194
+ ```
195
+
196
+ ## ⚠️ Important Notes
197
+
198
+ - Service là singleton, state được share giữa tất cả usages
199
+ - Element caching có thể trở nên stale nếu element bị xóa khỏi DOM
200
+ - Styles copy sang parent document cần được cleanup thủ công nếu service bị destroy
201
+ - `remove()` method đã deprecated, dùng `delete()` thay thế
202
+ - ComponentRef cần được destroy để tránh memory leaks
203
+
204
+ ## 📖 Ví dụ
205
+
206
+ Xem demo tại: [http://localhost:4500/services/dynamic-component](http://localhost:4500/services/dynamic-component)
207
+
208
+ ## 📝 Version
209
+
210
+ `0.2.355-10`
@@ -138,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
138
138
  providedIn: 'root',
139
139
  }]
140
140
  }] });
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvZHluYW1pYy1jb21wb25lbnQvc3JjL2R5bmFtaWMtY29tcG9uZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQWdCLGVBQWUsRUFBbUIsTUFBTSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM5SCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBSXZDLE1BQU0sT0FBTyw2QkFBNkI7SUFDaEMsT0FBTyxDQUFVO0lBQ2pCLG9CQUFvQixHQUE2QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzNELFdBQVcsQ0FBc0I7SUFDakMseUJBQXlCLEdBQTRDLElBQUksT0FBTyxFQUFFLENBQUM7SUFDbkYsTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoQyw2QkFBNkIsR0FBRyx3QkFBd0IsQ0FBQztJQUVqRSxJQUFXLDZCQUE2QixDQUFDLEVBQVU7UUFDakQsSUFBSSxDQUFDLDZCQUE2QixHQUFHLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU0sdUJBQXVCLENBQUMsU0FBYztRQUMzQyxPQUFPLGVBQWUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVNLFNBQVMsQ0FBQyxZQUFnQyxFQUFFLG1CQUE2QixFQUFFLDZCQUFzQztRQUN0SCxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVDLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFR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OlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIENvbXBvbmVudFJlZiwgY3JlYXRlQ29tcG9uZW50LCBFbWJlZGRlZFZpZXdSZWYsIGluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlEeW5hbWljQ29tcG9uZW50U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgdGltZU91dD86IG51bWJlcjtcbiAgcHJpdmF0ZSBlbGVtZW50TGF5b3V0Q29udGVudDogTWFwPHN0cmluZywgSFRNTEVsZW1lbnQ+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGVsZW1lbnRCb2R5ITogSFRNTEVsZW1lbnQgfCBudWxsO1xuICBwcml2YXRlIG1hcFN0eWxlc1RvUGFyZW50RG9jdW1lbnQ6IFdlYWtNYXA8Q29tcG9uZW50UmVmPGFueT4sIEFycmF5PE5vZGU+PiA9IG5ldyBXZWFrTWFwKCk7XG4gIHByaXZhdGUgYXBwUmVmID0gaW5qZWN0KEFwcGxpY2F0aW9uUmVmKTtcbiAgcHJpdmF0ZSBpZEVsZW1lbnRMYXlvdXRDb250ZW50RGVmYXVsdCA9ICdsaWJzLXVpLWxheW91dC1jb250ZW50JztcblxuICBwdWJsaWMgc2V0IElkRWxlbWVudExheW91dENvbnRlbnREZWZhdWx0KGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlkRWxlbWVudExheW91dENvbnRlbnREZWZhdWx0ID0gaWQ7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50OiBhbnkpOiBDb21wb25lbnRSZWY8YW55PiB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIHsgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5hcHBSZWYuaW5qZWN0b3IgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9Cb2R5KGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+LCBpc0FkZFBhcmVudERvY3VtZW50PzogYm9vbGVhbiwgdGltZXJEZWxheVVwZGF0ZVN0eWxlVG9QYXJlbnQ/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICghY29tcG9uZW50UmVmIHx8ICFjb21wb25lbnRSZWYuaG9zdFZpZXcpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgY29uc3QgZG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmIChpc0FkZFBhcmVudERvY3VtZW50KSB7XG4gICAgICB3aW5kb3cucGFyZW50LmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9tRWxlbSk7XG4gICAgICB0aGlzLnVwZGF0ZVN0eWxlVG9QYXJlbnREb2N1bWVudChjb21wb25lbnRSZWYsIHRpbWVyRGVsYXlVcGRhdGVTdHlsZVRvUGFyZW50KTtcblxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZWxlbWVudEJvZHkpIHtcbiAgICAgIHRoaXMuZWxlbWVudEJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgIH1cbiAgICB0aGlzLmVsZW1lbnRCb2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHVibGljIGFkZFRvRWxlbWVudChjb21wb25lbnRSZWY6IGFueSwgZWxlbWVudEFkZDogYW55KSB7XG4gICAgaWYgKCFjb21wb25lbnRSZWYgfHwgIWNvbXBvbmVudFJlZi5ob3N0VmlldyB8fCAhZWxlbWVudEFkZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgY29uc3QgZG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcblxuICAgIHJldHVybiBlbGVtZW50QWRkLmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRvRWxlbWVudExheW91dENvbnRlbnREZWZhdWx0KGNvbXBvbmVudFJlZjogYW55LCBpZDogc3RyaW5nID0gdGhpcy5pZEVsZW1lbnRMYXlvdXRDb250ZW50RGVmYXVsdCkge1xuICAgIHRoaXMuYWRkVG9JZEF0dHJpYnV0ZUVsZW1lbnQoY29tcG9uZW50UmVmLCBpZCk7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9JZEF0dHJpYnV0ZUVsZW1lbnQoY29tcG9uZW50UmVmOiBhbnksIGlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuZWxlbWVudExheW91dENvbnRlbnQuaGFzKGlkKSkge1xuICAgICAgdGhpcy5lbGVtZW50TGF5b3V0Q29udGVudC5zZXQoaWQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSBhcyBIVE1MRWxlbWVudCk7XG4gICAgfVxuICAgIGlmICghY29tcG9uZW50UmVmIHx8ICFjb21wb25lbnRSZWYuaG9zdFZpZXcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICByZXR1cm4gdGhpcy5lbGVtZW50TGF5b3V0Q29udGVudC5nZXQoaWQpPy5hcHBlbmRDaGlsZChkb21FbGVtKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gY29tcG9uZW50UmVmXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqICBpZ25vcmVEZXN0cm95Q29tcG9uZW50OiBz4butIGR1bmcga2hpIGtow7RuZyBtdeG7kW4gZ+G7jWkgaMOgbSBjb21wb25lbnRSZWYuZGVzdHJveSgpXG4gICAqXG4gICAqICB0aW1lb3V0RGVzdHJveTogc+G7rSBk4bulbmcga2hpIG114buRbiBn4buNaSBow6BtIGNvbXBvbmVudFJlZi5kZXN0cm95KCkgdHLhu4UgaMahbiB0aGF5IHbDrCBuZ2F5IHNhdSBraGkgeMOzYSBlbGVtZW50IGto4buPaSBkb20oZGV0YWNoVmlldylcbiAgICogQHJldHVybnMgdm9pZFxuICAgKi9cbiAgcHVibGljIGRlbGV0ZShjb21wb25lbnRSZWY6IGFueSwgb3B0aW9ucz86IHsgaWdub3JlRGVzdHJveUNvbXBvbmVudD86IGJvb2xlYW47IHRpbWVvdXREZXN0cm95PzogbnVtYmVyIH0pIHtcbiAgICBpZiAoIWNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZVN0eWxlVG9QYXJlbnREb2N1bWVudChjb21wb25lbnRSZWYpO1xuICAgIGlmIChjb21wb25lbnRSZWYuaG9zdFZpZXcpIHtcbiAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICB9XG4gICAgaWYgKCFjb21wb25lbnRSZWYuZGVzdHJveSB8fCBvcHRpb25zPy5pZ25vcmVEZXN0cm95Q29tcG9uZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc05pbChvcHRpb25zPy50aW1lb3V0RGVzdHJveSkpIHtcbiAgICAgIGNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgIH0sIG9wdGlvbnM/LnRpbWVvdXREZXN0cm95KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBz4butIGThu6VuZyBow6BtIGBgYGRlbGV0ZSh0aGlzLmNvbXBvbmVudFJlZilgYGBcbiAgICovXG4gIHB1YmxpYyByZW1vdmUoY29tcG9uZW50UmVmOiBhbnksIF8/OiBzdHJpbmcsIGlnbm9yZURlc3Ryb3lDb21wb25lbnQ/OiBib29sZWFuKSB7XG4gICAgaWYgKCFjb21wb25lbnRSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kZWxldGUoY29tcG9uZW50UmVmLCB7IGlnbm9yZURlc3Ryb3lDb21wb25lbnQgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0eWxlVG9QYXJlbnREb2N1bWVudChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+LCB0aW1lckRlbGF5VXBkYXRlU3R5bGVUb1BhcmVudD86IG51bWJlcikge1xuICAgIGlmICh0aGlzLnRpbWVPdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVPdXQpO1xuICAgIH1cbiAgICB0aGlzLnRpbWVPdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGRvY3VtZW50UGFyZW50ID0gd2luZG93LnBhcmVudC5kb2N1bWVudDtcblxuICAgICAgaWYgKGRvY3VtZW50UGFyZW50ICYmICF0aGlzLm1hcFN0eWxlc1RvUGFyZW50RG9jdW1lbnQuaGFzKGNvbXBvbmVudFJlZikpIHtcbiAgICAgICAgY29uc3Qgc3R5bGVUYWdzID0gbmV3IEFycmF5PE5vZGU+KCk7XG5cbiAgICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3JBbGwoJ3N0eWxlJykpLmZvckVhY2goKHN0eWxlVGFnKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2xvbmVTdHlsZVRhZyA9IHN0eWxlVGFnLmNsb25lTm9kZSh0cnVlKTtcblxuICAgICAgICAgIHN0eWxlVGFncy5wdXNoKGNsb25lU3R5bGVUYWcpO1xuICAgICAgICAgIGRvY3VtZW50UGFyZW50Py5oZWFkLmFwcGVuZENoaWxkKGNsb25lU3R5bGVUYWcpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tYXBTdHlsZXNUb1BhcmVudERvY3VtZW50LnNldChjb21wb25lbnRSZWYsIHN0eWxlVGFncyk7XG4gICAgICB9XG4gICAgfSwgdGltZXJEZWxheVVwZGF0ZVN0eWxlVG9QYXJlbnQgfHwgMjUwKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlU3R5bGVUb1BhcmVudERvY3VtZW50KGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4pIHtcbiAgICBpZiAoIWNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdHlsZVRhZ3NQb3B1cCA9IHRoaXMubWFwU3R5bGVzVG9QYXJlbnREb2N1bWVudC5nZXQoY29tcG9uZW50UmVmKTtcbiAgICBjb25zdCBkb2N1bWVudFBhcmVudCA9IHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQ7XG5cbiAgICBpZiAoIXN0eWxlVGFnc1BvcHVwIHx8ICFzdHlsZVRhZ3NQb3B1cC5sZW5ndGggfHwgIWRvY3VtZW50UGFyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN0eWxlVGFnc1BvcHVwLmZvckVhY2goKHN0eWxlVGFnKSA9PiB7XG4gICAgICBkb2N1bWVudFBhcmVudD8uaGVhZC5yZW1vdmVDaGlsZChzdHlsZVRhZyk7XG4gICAgfSk7XG4gICAgdGhpcy5tYXBTdHlsZXNUb1BhcmVudERvY3VtZW50LmRlbGV0ZShjb21wb25lbnRSZWYpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMudGltZU91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZU91dCk7XG4gICAgICB0aGlzLnRpbWVPdXQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5lbGVtZW50TGF5b3V0Q29udGVudC5jbGVhcigpO1xuICB9XG59XG4iXX0=
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvZHluYW1pYy1jb21wb25lbnQvc3JjL2R5bmFtaWMtY29tcG9uZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQWdCLGVBQWUsRUFBbUIsTUFBTSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM5SCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBSXZDLE1BQU0sT0FBTyw2QkFBNkI7SUFDaEMsT0FBTyxDQUFpQztJQUN4QyxvQkFBb0IsR0FBNkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMzRCxXQUFXLENBQXNCO0lBQ2pDLHlCQUF5QixHQUE0QyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ25GLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEMsNkJBQTZCLEdBQUcsd0JBQXdCLENBQUM7SUFFakUsSUFBVyw2QkFBNkIsQ0FBQyxFQUFVO1FBQ2pELElBQUksQ0FBQyw2QkFBNkIsR0FBRyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVNLHVCQUF1QixDQUFDLFNBQWM7UUFDM0MsT0FBTyxlQUFlLENBQUMsU0FBUyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFTSxTQUFTLENBQUMsWUFBZ0MsRUFBRSxtQkFBNkIsRUFBRSw2QkFBc0M7UUFDdEgsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1QyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFB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IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBDb21wb25lbnRSZWYsIGNyZWF0ZUNvbXBvbmVudCwgRW1iZWRkZWRWaWV3UmVmLCBpbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpRHluYW1pY0NvbXBvbmVudFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHRpbWVPdXQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgcHJpdmF0ZSBlbGVtZW50TGF5b3V0Q29udGVudDogTWFwPHN0cmluZywgSFRNTEVsZW1lbnQ+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGVsZW1lbnRCb2R5ITogSFRNTEVsZW1lbnQgfCBudWxsO1xuICBwcml2YXRlIG1hcFN0eWxlc1RvUGFyZW50RG9jdW1lbnQ6IFdlYWtNYXA8Q29tcG9uZW50UmVmPGFueT4sIEFycmF5PE5vZGU+PiA9IG5ldyBXZWFrTWFwKCk7XG4gIHByaXZhdGUgYXBwUmVmID0gaW5qZWN0KEFwcGxpY2F0aW9uUmVmKTtcbiAgcHJpdmF0ZSBpZEVsZW1lbnRMYXlvdXRDb250ZW50RGVmYXVsdCA9ICdsaWJzLXVpLWxheW91dC1jb250ZW50JztcblxuICBwdWJsaWMgc2V0IElkRWxlbWVudExheW91dENvbnRlbnREZWZhdWx0KGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlkRWxlbWVudExheW91dENvbnRlbnREZWZhdWx0ID0gaWQ7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50OiBhbnkpOiBDb21wb25lbnRSZWY8YW55PiB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIHsgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5hcHBSZWYuaW5qZWN0b3IgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9Cb2R5KGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+LCBpc0FkZFBhcmVudERvY3VtZW50PzogYm9vbGVhbiwgdGltZXJEZWxheVVwZGF0ZVN0eWxlVG9QYXJlbnQ/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICghY29tcG9uZW50UmVmIHx8ICFjb21wb25lbnRSZWYuaG9zdFZpZXcpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgY29uc3QgZG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmIChpc0FkZFBhcmVudERvY3VtZW50KSB7XG4gICAgICB3aW5kb3cucGFyZW50LmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9tRWxlbSk7XG4gICAgICB0aGlzLnVwZGF0ZVN0eWxlVG9QYXJlbnREb2N1bWVudChjb21wb25lbnRSZWYsIHRpbWVyRGVsYXlVcGRhdGVTdHlsZVRvUGFyZW50KTtcblxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZWxlbWVudEJvZHkpIHtcbiAgICAgIHRoaXMuZWxlbWVudEJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgIH1cbiAgICB0aGlzLmVsZW1lbnRCb2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHVibGljIGFkZFRvRWxlbWVudChjb21wb25lbnRSZWY6IGFueSwgZWxlbWVudEFkZDogYW55KSB7XG4gICAgaWYgKCFjb21wb25lbnRSZWYgfHwgIWNvbXBvbmVudFJlZi5ob3N0VmlldyB8fCAhZWxlbWVudEFkZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgY29uc3QgZG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcblxuICAgIHJldHVybiBlbGVtZW50QWRkLmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRvRWxlbWVudExheW91dENvbnRlbnREZWZhdWx0KGNvbXBvbmVudFJlZjogYW55LCBpZDogc3RyaW5nID0gdGhpcy5pZEVsZW1lbnRMYXlvdXRDb250ZW50RGVmYXVsdCkge1xuICAgIHRoaXMuYWRkVG9JZEF0dHJpYnV0ZUVsZW1lbnQoY29tcG9uZW50UmVmLCBpZCk7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9JZEF0dHJpYnV0ZUVsZW1lbnQoY29tcG9uZW50UmVmOiBhbnksIGlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuZWxlbWVudExheW91dENvbnRlbnQuaGFzKGlkKSkge1xuICAgICAgdGhpcy5lbGVtZW50TGF5b3V0Q29udGVudC5zZXQoaWQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSBhcyBIVE1MRWxlbWVudCk7XG4gICAgfVxuICAgIGlmICghY29tcG9uZW50UmVmIHx8ICFjb21wb25lbnRSZWYuaG9zdFZpZXcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICByZXR1cm4gdGhpcy5lbGVtZW50TGF5b3V0Q29udGVudC5nZXQoaWQpPy5hcHBlbmRDaGlsZChkb21FbGVtKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gY29tcG9uZW50UmVmXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqICBpZ25vcmVEZXN0cm95Q29tcG9uZW50OiBz4butIGR1bmcga2hpIGtow7RuZyBtdeG7kW4gZ+G7jWkgaMOgbSBjb21wb25lbnRSZWYuZGVzdHJveSgpXG4gICAqXG4gICAqICB0aW1lb3V0RGVzdHJveTogc+G7rSBk4bulbmcga2hpIG114buRbiBn4buNaSBow6BtIGNvbXBvbmVudFJlZi5kZXN0cm95KCkgdHLhu4UgaMahbiB0aGF5IHbDrCBuZ2F5IHNhdSBraGkgeMOzYSBlbGVtZW50IGto4buPaSBkb20oZGV0YWNoVmlldylcbiAgICogQHJldHVybnMgdm9pZFxuICAgKi9cbiAgcHVibGljIGRlbGV0ZShjb21wb25lbnRSZWY6IGFueSwgb3B0aW9ucz86IHsgaWdub3JlRGVzdHJveUNvbXBvbmVudD86IGJvb2xlYW47IHRpbWVvdXREZXN0cm95PzogbnVtYmVyIH0pIHtcbiAgICBpZiAoIWNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZVN0eWxlVG9QYXJlbnREb2N1bWVudChjb21wb25lbnRSZWYpO1xuICAgIGlmIChjb21wb25lbnRSZWYuaG9zdFZpZXcpIHtcbiAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICB9XG4gICAgaWYgKCFjb21wb25lbnRSZWYuZGVzdHJveSB8fCBvcHRpb25zPy5pZ25vcmVEZXN0cm95Q29tcG9uZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc05pbChvcHRpb25zPy50aW1lb3V0RGVzdHJveSkpIHtcbiAgICAgIGNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgIH0sIG9wdGlvbnM/LnRpbWVvdXREZXN0cm95KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBz4butIGThu6VuZyBow6BtIGBgYGRlbGV0ZSh0aGlzLmNvbXBvbmVudFJlZilgYGBcbiAgICovXG4gIHB1YmxpYyByZW1vdmUoY29tcG9uZW50UmVmOiBhbnksIF8/OiBzdHJpbmcsIGlnbm9yZURlc3Ryb3lDb21wb25lbnQ/OiBib29sZWFuKSB7XG4gICAgaWYgKCFjb21wb25lbnRSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kZWxldGUoY29tcG9uZW50UmVmLCB7IGlnbm9yZURlc3Ryb3lDb21wb25lbnQgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0eWxlVG9QYXJlbnREb2N1bWVudChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+LCB0aW1lckRlbGF5VXBkYXRlU3R5bGVUb1BhcmVudD86IG51bWJlcikge1xuICAgIGlmICh0aGlzLnRpbWVPdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVPdXQpO1xuICAgIH1cbiAgICB0aGlzLnRpbWVPdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGRvY3VtZW50UGFyZW50ID0gd2luZG93LnBhcmVudC5kb2N1bWVudDtcblxuICAgICAgaWYgKGRvY3VtZW50UGFyZW50ICYmICF0aGlzLm1hcFN0eWxlc1RvUGFyZW50RG9jdW1lbnQuaGFzKGNvbXBvbmVudFJlZikpIHtcbiAgICAgICAgY29uc3Qgc3R5bGVUYWdzID0gbmV3IEFycmF5PE5vZGU+KCk7XG5cbiAgICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3JBbGwoJ3N0eWxlJykpLmZvckVhY2goKHN0eWxlVGFnKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2xvbmVTdHlsZVRhZyA9IHN0eWxlVGFnLmNsb25lTm9kZSh0cnVlKTtcblxuICAgICAgICAgIHN0eWxlVGFncy5wdXNoKGNsb25lU3R5bGVUYWcpO1xuICAgICAgICAgIGRvY3VtZW50UGFyZW50Py5oZWFkLmFwcGVuZENoaWxkKGNsb25lU3R5bGVUYWcpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tYXBTdHlsZXNUb1BhcmVudERvY3VtZW50LnNldChjb21wb25lbnRSZWYsIHN0eWxlVGFncyk7XG4gICAgICB9XG4gICAgfSwgdGltZXJEZWxheVVwZGF0ZVN0eWxlVG9QYXJlbnQgfHwgMjUwKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlU3R5bGVUb1BhcmVudERvY3VtZW50KGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4pIHtcbiAgICBpZiAoIWNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdHlsZVRhZ3NQb3B1cCA9IHRoaXMubWFwU3R5bGVzVG9QYXJlbnREb2N1bWVudC5nZXQoY29tcG9uZW50UmVmKTtcbiAgICBjb25zdCBkb2N1bWVudFBhcmVudCA9IHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQ7XG5cbiAgICBpZiAoIXN0eWxlVGFnc1BvcHVwIHx8ICFzdHlsZVRhZ3NQb3B1cC5sZW5ndGggfHwgIWRvY3VtZW50UGFyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN0eWxlVGFnc1BvcHVwLmZvckVhY2goKHN0eWxlVGFnKSA9PiB7XG4gICAgICBkb2N1bWVudFBhcmVudD8uaGVhZC5yZW1vdmVDaGlsZChzdHlsZVRhZyk7XG4gICAgfSk7XG4gICAgdGhpcy5tYXBTdHlsZXNUb1BhcmVudERvY3VtZW50LmRlbGV0ZShjb21wb25lbnRSZWYpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMudGltZU91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZU91dCk7XG4gICAgICB0aGlzLnRpbWVPdXQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5lbGVtZW50TGF5b3V0Q29udGVudC5jbGVhcigpO1xuICB9XG59XG4iXX0=
@@ -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, createComponent, EmbeddedViewRef, inject, Injectable, OnDestroy } from '@angular/core';\nimport { isNil } from '@libs-ui/utils';\n@Injectable({\n providedIn: 'root',\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 /**\n *\n * @param componentRef\n * @param options\n * ignoreDestroyComponent: sử dung khi không muốn gọi hàm componentRef.destroy()\n *\n * timeoutDestroy: sử dụng khi muốn gọi hàm componentRef.destroy() trễ hơn thay vì ngay sau khi xóa element khỏi dom(detachView)\n * @returns void\n */\n public delete(componentRef: any, options?: { ignoreDestroyComponent?: boolean; timeoutDestroy?: number }) {\n if (!componentRef) {\n return;\n }\n this.removeStyleToParentDocument(componentRef);\n if (componentRef.hostView) {\n this.appRef.detachView(componentRef.hostView);\n }\n if (!componentRef.destroy || options?.ignoreDestroyComponent) {\n return;\n }\n if (isNil(options?.timeoutDestroy)) {\n componentRef.destroy();\n\n return;\n }\n setTimeout(() => {\n componentRef.destroy();\n }, options?.timeoutDestroy);\n }\n\n /**\n * @deprecated sử dụng hàm ```delete(this.componentRef)```\n */\n public remove(componentRef: any, _?: string, ignoreDestroyComponent?: boolean) {\n if (!componentRef) {\n return;\n }\n this.delete(componentRef, { ignoreDestroyComponent });\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}\n","import { ComponentRef } from '@angular/core';\nimport { ExtractInputs } from '@libs-ui/interfaces-types';\n\nexport const setInputs = <T, R extends boolean = true>(componentRef: ComponentRef<T>, inputs: ExtractInputs<T, R>, required?: R): void => {\n Object.entries(inputs).forEach(([key, value]) => componentRef.setInput(key, value));\n};\n\nexport const setInput = <T>(componentRef: ComponentRef<T>, input: keyof ExtractInputs<T>, value: ExtractInputs<T>[keyof ExtractInputs<T>]): void => {\n componentRef.setInput(input as string, value);\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, createComponent, EmbeddedViewRef, inject, Injectable, OnDestroy } from '@angular/core';\nimport { isNil } from '@libs-ui/utils';\n@Injectable({\n providedIn: 'root',\n})\nexport class LibsUiDynamicComponentService implements OnDestroy {\n private timeOut?: ReturnType<typeof setTimeout>;\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 /**\n *\n * @param componentRef\n * @param options\n * ignoreDestroyComponent: sử dung khi không muốn gọi hàm componentRef.destroy()\n *\n * timeoutDestroy: sử dụng khi muốn gọi hàm componentRef.destroy() trễ hơn thay vì ngay sau khi xóa element khỏi dom(detachView)\n * @returns void\n */\n public delete(componentRef: any, options?: { ignoreDestroyComponent?: boolean; timeoutDestroy?: number }) {\n if (!componentRef) {\n return;\n }\n this.removeStyleToParentDocument(componentRef);\n if (componentRef.hostView) {\n this.appRef.detachView(componentRef.hostView);\n }\n if (!componentRef.destroy || options?.ignoreDestroyComponent) {\n return;\n }\n if (isNil(options?.timeoutDestroy)) {\n componentRef.destroy();\n\n return;\n }\n setTimeout(() => {\n componentRef.destroy();\n }, options?.timeoutDestroy);\n }\n\n /**\n * @deprecated sử dụng hàm ```delete(this.componentRef)```\n */\n public remove(componentRef: any, _?: string, ignoreDestroyComponent?: boolean) {\n if (!componentRef) {\n return;\n }\n this.delete(componentRef, { ignoreDestroyComponent });\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}\n","import { ComponentRef } from '@angular/core';\nimport { ExtractInputs } from '@libs-ui/interfaces-types';\n\nexport const setInputs = <T, R extends boolean = true>(componentRef: ComponentRef<T>, inputs: ExtractInputs<T, R>, required?: R): void => {\n Object.entries(inputs).forEach(([key, value]) => componentRef.setInput(key, value));\n};\n\nexport const setInput = <T>(componentRef: ComponentRef<T>, input: keyof ExtractInputs<T>, value: ExtractInputs<T>[keyof ExtractInputs<T>]): void => {\n componentRef.setInput(input as string, value);\n};\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.355-8",
3
+ "version": "0.2.356-0",
4
4
  "peerDependencies": {
5
5
  "@angular/core": ">=18.0.0",
6
- "@libs-ui/utils": "0.2.355-8"
6
+ "@libs-ui/utils": "0.2.356-0"
7
7
  },
8
8
  "sideEffects": false,
9
9
  "module": "fesm2022/libs-ui-services-dynamic-component.mjs",