@zdigambar/ngx-element 7.0.1 → 9.0.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 +107 -105
- package/esm2022/lib/lazy-component-loaded-event.mjs +2 -2
- package/esm2022/lib/ngx-element.component.mjs +98 -98
- package/esm2022/lib/ngx-element.module.mjs +34 -34
- package/esm2022/lib/ngx-element.service.mjs +135 -135
- package/esm2022/lib/tokens.mjs +4 -4
- package/esm2022/public-api.mjs +5 -5
- package/esm2022/zdigambar-ngx-element.mjs +4 -4
- package/fesm2022/zdigambar-ngx-element.mjs +254 -254
- package/fesm2022/zdigambar-ngx-element.mjs.map +1 -1
- package/index.d.ts +5 -6
- package/lib/lazy-component-loaded-event.d.ts +5 -6
- package/lib/ngx-element.component.d.ts +24 -25
- package/lib/ngx-element.module.d.ts +12 -13
- package/lib/ngx-element.service.d.ts +31 -32
- package/lib/tokens.d.ts +7 -8
- package/package.json +7 -5
- package/public-api.d.ts +1 -2
- package/lib/lazy-component-loaded-event.d.ts.map +0 -1
- package/lib/ngx-element.component.d.ts.map +0 -1
- package/lib/ngx-element.module.d.ts.map +0 -1
- package/lib/ngx-element.service.d.ts.map +0 -1
- package/lib/tokens.d.ts.map +0 -1
- package/public-api.d.ts.map +0 -1
- package/zdigambar-ngx-element.d.ts.map +0 -1
|
@@ -1,135 +1,135 @@
|
|
|
1
|
-
import { Injectable, Inject, NgModuleFactory, ComponentFactoryResolver } from '@angular/core';
|
|
2
|
-
import { LAZY_CMPS_PATH_TOKEN } from './tokens';
|
|
3
|
-
import { from } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class NgxElementService {
|
|
6
|
-
constructor(modulePaths, compiler, injector) {
|
|
7
|
-
this.compiler = compiler;
|
|
8
|
-
this.injector = injector;
|
|
9
|
-
this.loadedComponents = new Map();
|
|
10
|
-
this.elementsLoading = new Map();
|
|
11
|
-
this.injectors = new Map();
|
|
12
|
-
this.componentFactoryResolvers = new Map();
|
|
13
|
-
const ELEMENT_MODULE_PATHS = new Map();
|
|
14
|
-
modulePaths.forEach(route => {
|
|
15
|
-
ELEMENT_MODULE_PATHS.set(route.selector, route);
|
|
16
|
-
});
|
|
17
|
-
this.componentsToLoad = ELEMENT_MODULE_PATHS;
|
|
18
|
-
}
|
|
19
|
-
receiveContext(component, injector) {
|
|
20
|
-
this.injectors.set(component, injector);
|
|
21
|
-
this.componentFactoryResolvers.set(component, injector.get(ComponentFactoryResolver));
|
|
22
|
-
}
|
|
23
|
-
getInjector(component) {
|
|
24
|
-
return this.injectors.get(component);
|
|
25
|
-
}
|
|
26
|
-
getComponentFactoryResolver(component) {
|
|
27
|
-
return this.componentFactoryResolvers.get(component);
|
|
28
|
-
}
|
|
29
|
-
getComponentsToLoad() {
|
|
30
|
-
return this.componentsToLoad;
|
|
31
|
-
}
|
|
32
|
-
getComponentToLoad(selector) {
|
|
33
|
-
// Returns observable that completes when the lazy module has been loaded.
|
|
34
|
-
const registered = this.loadComponent(selector);
|
|
35
|
-
return from(registered);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Allows to lazy load a component given its selector.
|
|
39
|
-
* If the component selector has been registered, it's according module
|
|
40
|
-
* will be fetched lazily
|
|
41
|
-
* @param componentTag selector of the component to load
|
|
42
|
-
*/
|
|
43
|
-
loadComponent(componentSelector) {
|
|
44
|
-
if (this.elementsLoading.has(componentSelector)) {
|
|
45
|
-
return this.elementsLoading.get(componentSelector);
|
|
46
|
-
}
|
|
47
|
-
if (this.componentsToLoad.has(componentSelector)) {
|
|
48
|
-
const cmpRegistryEntry = this.componentsToLoad.get(componentSelector);
|
|
49
|
-
const path = cmpRegistryEntry.loadChildren;
|
|
50
|
-
const loadPromise = new Promise((resolve, reject) => {
|
|
51
|
-
path()
|
|
52
|
-
.then(elementModuleOrFactory => {
|
|
53
|
-
/**
|
|
54
|
-
* With View Engine, the NgModule factory is created and provided when loaded.
|
|
55
|
-
* With Ivy, only the NgModule class is provided loaded and must be compiled.
|
|
56
|
-
* This uses the same mechanism as the deprecated `SystemJsNgModuleLoader` in
|
|
57
|
-
* in `packages/core/src/linker/system_js_ng_module_factory_loader.ts`
|
|
58
|
-
* to pass on the NgModuleFactory, or compile the NgModule and return its NgModuleFactory.
|
|
59
|
-
*/
|
|
60
|
-
if (elementModuleOrFactory instanceof NgModuleFactory) {
|
|
61
|
-
return elementModuleOrFactory;
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
try {
|
|
65
|
-
return this.compiler.compileModuleAsync(elementModuleOrFactory);
|
|
66
|
-
}
|
|
67
|
-
catch (err) {
|
|
68
|
-
// return the error
|
|
69
|
-
reject(err);
|
|
70
|
-
// break the promise chain
|
|
71
|
-
throw err;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
})
|
|
75
|
-
.then(moduleFactory => {
|
|
76
|
-
const elementModuleRef = moduleFactory.create(this.injector);
|
|
77
|
-
let componentClass;
|
|
78
|
-
if (typeof elementModuleRef.instance.customElementComponent === 'object') {
|
|
79
|
-
componentClass = elementModuleRef.instance.customElementComponent[componentSelector];
|
|
80
|
-
if (!componentClass) {
|
|
81
|
-
// tslint:disable-next-line: no-string-throw
|
|
82
|
-
throw `You specified multiple component elements in module ${elementModuleRef} but there was no match for tag
|
|
83
|
-
${componentSelector} in ${JSON.stringify(elementModuleRef.instance.customElementComponent)}.
|
|
84
|
-
Make sure the selector in the module is aligned with the one specified in the lazy module definition.`;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
componentClass = elementModuleRef.instance.customElementComponent;
|
|
89
|
-
}
|
|
90
|
-
// Register injector of the lazy module.
|
|
91
|
-
// This is needed to share the entryComponents between the lazy module and the application
|
|
92
|
-
const moduleInjector = elementModuleRef.injector;
|
|
93
|
-
this.receiveContext(componentClass, moduleInjector);
|
|
94
|
-
this.loadedComponents.set(componentSelector, componentClass);
|
|
95
|
-
this.elementsLoading.delete(componentSelector);
|
|
96
|
-
this.componentsToLoad.delete(componentSelector);
|
|
97
|
-
resolve({
|
|
98
|
-
selector: componentSelector,
|
|
99
|
-
componentClass
|
|
100
|
-
});
|
|
101
|
-
})
|
|
102
|
-
.catch(err => {
|
|
103
|
-
this.elementsLoading.delete(componentSelector);
|
|
104
|
-
return Promise.reject(err);
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
this.elementsLoading.set(componentSelector, loadPromise);
|
|
108
|
-
return loadPromise;
|
|
109
|
-
}
|
|
110
|
-
else if (this.loadedComponents.has(componentSelector)) {
|
|
111
|
-
// component already loaded
|
|
112
|
-
return new Promise(resolve => {
|
|
113
|
-
resolve({
|
|
114
|
-
selector: componentSelector,
|
|
115
|
-
componentClass: this.loadedComponents.get(componentSelector)
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
throw new Error(`Unrecognized component "${componentSelector}". Make sure it is registered in the component registry`);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
124
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
125
|
-
}
|
|
126
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
127
|
-
type: Injectable,
|
|
128
|
-
args: [{
|
|
129
|
-
providedIn: 'root'
|
|
130
|
-
}]
|
|
131
|
-
}], ctorParameters:
|
|
132
|
-
type: Inject,
|
|
133
|
-
args: [LAZY_CMPS_PATH_TOKEN]
|
|
134
|
-
}] }, { type: i0.Compiler }, { type: i0.Injector }]
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWVsZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1lbGVtZW50L3NyYy9saWIvbmd4LWVsZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQTRCLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxvQkFBb0IsRUFBb0IsTUFBTSxVQUFVLENBQUM7QUFFbEUsT0FBTyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLeEMsTUFBTSxPQUFPLGlCQUFpQjtJQVE1QixZQUVFLFdBRUcsRUFDSyxRQUFrQixFQUNsQixRQUFrQjtRQURsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFacEIscUJBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQXFCLENBQUM7UUFDaEQsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBdUMsQ0FBQztRQUV6RSxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7UUFDM0MsOEJBQXlCLEdBQUcsSUFBSSxHQUFHLEVBQXVDLENBQUM7UUFVekUsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO1FBQ3BELFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUIsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUM7SUFDL0MsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUFvQixFQUFFLFFBQWtCO1FBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztR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QUFvQjttSEFUbkIsaUJBQWlCLGNBRmhCLE1BQU07OzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVVJLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBOZ01vZHVsZUZhY3RvcnksIFR5cGUsIENvbXBpbGVyLCBJbmplY3RvciwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMQVpZX0NNUFNfUEFUSF9UT0tFTiwgTGF6eUNvbXBvbmVudERlZiB9IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB7IExhenlDbXBMb2FkZWRFdmVudCB9IGZyb20gJy4vbGF6eS1jb21wb25lbnQtbG9hZGVkLWV2ZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20gfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmd4RWxlbWVudFNlcnZpY2Uge1xuICBwcml2YXRlIGNvbXBvbmVudHNUb0xvYWQ6IE1hcDxzdHJpbmcsIExhenlDb21wb25lbnREZWY+O1xuICBwcml2YXRlIGxvYWRlZENvbXBvbmVudHMgPSBuZXcgTWFwPHN0cmluZywgVHlwZTxhbnk+PigpO1xuICBwcml2YXRlIGVsZW1lbnRzTG9hZGluZyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPExhenlDbXBMb2FkZWRFdmVudD4+KCk7XG5cbiAgaW5qZWN0b3JzID0gbmV3IE1hcDxUeXBlPGFueT4sIEluamVjdG9yPigpO1xuICBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJzID0gbmV3IE1hcDxUeXBlPGFueT4sIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KExBWllfQ01QU19QQVRIX1RPS0VOKVxuICAgIG1vZHVsZVBhdGhzOiB7XG4gICAgICBzZWxlY3Rvcjogc3RyaW5nXG4gICAgfVtdLFxuICAgIHByaXZhdGUgY29tcGlsZXI6IENvbXBpbGVyLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge1xuICAgIGNvbnN0IEVMRU1FTlRfTU9EVUxFX1BBVEhTID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICBtb2R1bGVQYXRocy5mb3JFYWNoKHJvdXRlID0+IHtcbiAgICAgIEVMRU1FTlRfTU9EVUxFX1BBVEhTLnNldChyb3V0ZS5zZWxlY3Rvciwgcm91dGUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb21wb25lbnRzVG9Mb2FkID0gRUxFTUVOVF9NT0RVTEVfUEFUSFM7XG4gIH1cblxuICByZWNlaXZlQ29udGV4dChjb21wb25lbnQ6IFR5cGU8YW55PiwgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5pbmplY3RvcnMuc2V0KGNvbXBvbmVudCwgaW5qZWN0b3IpO1xuICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVycy5zZXQoY29tcG9uZW50LCBpbmplY3Rvci5nZXQoQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKSk7XG4gIH1cblxuICBnZXRJbmplY3Rvcihjb21wb25lbnQ6IFR5cGU8YW55Pik6IEluamVjdG9yIHtcbiAgICByZXR1cm4gdGhpcy5pbmplY3RvcnMuZ2V0KGNvbXBvbmVudCk7XG4gIH1cblxuICBnZXRDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIoY29tcG9uZW50OiBUeXBlPGFueT4pOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcnMuZ2V0KGNvbXBvbmVudCk7XG4gIH1cblxuICBnZXRDb21wb25lbnRzVG9Mb2FkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudHNUb0xvYWQ7XG4gIH1cblxuICBnZXRDb21wb25lbnRUb0xvYWQoc2VsZWN0b3I6IHN0cmluZyk6IE9ic2VydmFibGU8TGF6eUNtcExvYWRlZEV2ZW50PiB7XG4gICAgLy8gUmV0dXJucyBvYnNlcnZhYmxlIHRoYXQgY29tcGxldGVzIHdoZW4gdGhlIGxhenkgbW9kdWxlIGhhcyBiZWVuIGxvYWRlZC5cbiAgICBjb25zdCByZWdpc3RlcmVkID0gdGhpcy5sb2FkQ29tcG9uZW50KHNlbGVjdG9yKTtcbiAgICByZXR1cm4gZnJvbShyZWdpc3RlcmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gbGF6eSBsb2FkIGEgY29tcG9uZW50IGdpdmVuIGl0cyBzZWxlY3Rvci5cbiAgICogSWYgdGhlIGNvbXBvbmVudCBzZWxlY3RvciBoYXMgYmVlbiByZWdpc3RlcmVkLCBpdCdzIGFjY29yZGluZyBtb2R1bGVcbiAgICogd2lsbCBiZSBmZXRjaGVkIGxhemlseVxuICAgKiBAcGFyYW0gY29tcG9uZW50VGFnIHNlbGVjdG9yIG9mIHRoZSBjb21wb25lbnQgdG8gbG9hZFxuICAgKi9cbiAgbG9hZENvbXBvbmVudChjb21wb25lbnRTZWxlY3Rvcjogc3RyaW5nKTogUHJvbWlzZTxMYXp5Q21wTG9hZGVkRXZlbnQ+IHtcbiAgICBpZiAodGhpcy5lbGVtZW50c0xvYWRpbmcuaGFzKGNvbXBvbmVudFNlbGVjdG9yKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudHNMb2FkaW5nLmdldChjb21wb25lbnRTZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29tcG9uZW50c1RvTG9hZC5oYXMoY29tcG9uZW50U2VsZWN0b3IpKSB7XG4gICAgICBjb25zdCBjbXBSZWdpc3RyeUVudHJ5ID0gdGhpcy5jb21wb25lbnRzVG9Mb2FkLmdldChjb21wb25lbnRTZWxlY3Rvcik7XG4gICAgICBjb25zdCBwYXRoID0gY21wUmVnaXN0cnlFbnRyeS5sb2FkQ2hpbGRyZW47XG5cbiAgICAgIGNvbnN0IGxvYWRQcm9taXNlID0gbmV3IFByb21pc2U8TGF6eUNtcExvYWRlZEV2ZW50PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIChwYXRoKCkgYXMgUHJvbWlzZTxOZ01vZHVsZUZhY3Rvcnk8YW55PiB8IFR5cGU8YW55Pj4pXG4gICAgICAgICAgLnRoZW4oZWxlbWVudE1vZHVsZU9yRmFjdG9yeSA9PiB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdpdGggVmlldyBFbmdpbmUsIHRoZSBOZ01vZHVsZSBmYWN0b3J5IGlzIGNyZWF0ZWQgYW5kIHByb3ZpZGVkIHdoZW4gbG9hZGVkLlxuICAgICAgICAgICAgICogV2l0aCBJdnksIG9ubHkgdGhlIE5nTW9kdWxlIGNsYXNzIGlzIHByb3ZpZGVkIGxvYWRlZCBhbmQgbXVzdCBiZSBjb21waWxlZC5cbiAgICAgICAgICAgICAqIFRoaXMgdXNlcyB0aGUgc2FtZSBtZWNoYW5pc20gYXMgdGhlIGRlcHJlY2F0ZWQgYFN5c3RlbUpzTmdNb2R1bGVMb2FkZXJgIGluXG4gICAgICAgICAgICAgKiBpbiBgcGFja2FnZXMvY29yZS9zcmMvbGlua2VyL3N5c3RlbV9qc19uZ19tb2R1bGVfZmFjdG9yeV9sb2FkZXIudHNgXG4gICAgICAgICAgICAgKiB0byBwYXNzIG9uIHRoZSBOZ01vZHVsZUZhY3RvcnksIG9yIGNvbXBpbGUgdGhlIE5nTW9kdWxlIGFuZCByZXR1cm4gaXRzIE5nTW9kdWxlRmFjdG9yeS5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKGVsZW1lbnRNb2R1bGVPckZhY3RvcnkgaW5zdGFuY2VvZiBOZ01vZHVsZUZhY3RvcnkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRNb2R1bGVPckZhY3Rvcnk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBpbGVyLmNvbXBpbGVNb2R1bGVBc3luYyhlbGVtZW50TW9kdWxlT3JGYWN0b3J5KTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gcmV0dXJuIHRoZSBlcnJvclxuICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuXG4gICAgICAgICAgICAgICAgLy8gYnJlYWsgdGhlIHByb21pc2UgY2hhaW5cbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKG1vZHVsZUZhY3RvcnkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBlbGVtZW50TW9kdWxlUmVmID0gbW9kdWxlRmFjdG9yeS5jcmVhdGUodGhpcy5pbmplY3Rvcik7XG4gICAgICAgICAgICAgIGxldCBjb21wb25lbnRDbGFzcztcblxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnRNb2R1bGVSZWYuaW5zdGFuY2UuY3VzdG9tRWxlbWVudENvbXBvbmVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRDbGFzcyA9IGVsZW1lbnRNb2R1bGVSZWYuaW5zdGFuY2UuY3VzdG9tRWxlbWVudENvbXBvbmVudFtjb21wb25lbnRTZWxlY3Rvcl07XG5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbXBvbmVudENsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXN0cmluZy10aHJvd1xuICAgICAgICAgICAgICAgICAgdGhyb3cgYFlvdSBzcGVjaWZpZWQgbXVsdGlwbGUgY29tcG9uZW50IGVsZW1lbnRzIGluIG1vZHVsZSAke2VsZW1lbnRNb2R1bGVSZWZ9IGJ1dCB0aGVyZSB3YXMgbm8gbWF0Y2ggZm9yIHRhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgJHtjb21wb25lbnRTZWxlY3Rvcn0gaW4gJHtKU09OLnN0cmluZ2lmeShlbGVtZW50TW9kdWxlUmVmLmluc3RhbmNlLmN1c3RvbUVsZW1lbnRDb21wb25lbnQpfS5cbiAgICAgICAgICAgICAgICAgICAgICAgICBNYWtlIHN1cmUgdGhlIHNlbGVjdG9yIGluIHRoZSBtb2R1bGUgaXMgYWxpZ25lZCB3aXRoIHRoZSBvbmUgc3BlY2lmaWVkIGluIHRoZSBsYXp5IG1vZHVsZSBkZWZpbml0aW9uLmA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudENsYXNzID0gZWxlbWVudE1vZHVsZVJlZi5pbnN0YW5jZS5jdXN0b21FbGVtZW50Q29tcG9uZW50O1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gUmVnaXN0ZXIgaW5qZWN0b3Igb2YgdGhlIGxhenkgbW9kdWxlLlxuICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCB0byBzaGFyZSB0aGUgZW50cnlDb21wb25lbnRzIGJldHdlZW4gdGhlIGxhenkgbW9kdWxlIGFuZCB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgY29uc3QgbW9kdWxlSW5qZWN0b3IgPSBlbGVtZW50TW9kdWxlUmVmLmluamVjdG9yO1xuICAgICAgICAgICAgICB0aGlzLnJlY2VpdmVDb250ZXh0KGNvbXBvbmVudENsYXNzLCBtb2R1bGVJbmplY3Rvcik7XG5cbiAgICAgICAgICAgICAgdGhpcy5sb2FkZWRDb21wb25lbnRzLnNldChjb21wb25lbnRTZWxlY3RvciwgY29tcG9uZW50Q2xhc3MpO1xuICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzTG9hZGluZy5kZWxldGUoY29tcG9uZW50U2VsZWN0b3IpO1xuICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudHNUb0xvYWQuZGVsZXRlKGNvbXBvbmVudFNlbGVjdG9yKTtcblxuICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICBzZWxlY3RvcjogY29tcG9uZW50U2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50Q2xhc3NcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudHNMb2FkaW5nLmRlbGV0ZShjb21wb25lbnRTZWxlY3Rvcik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmVsZW1lbnRzTG9hZGluZy5zZXQoY29tcG9uZW50U2VsZWN0b3IsIGxvYWRQcm9taXNlKTtcbiAgICAgIHJldHVybiBsb2FkUHJvbWlzZTtcblxuICAgIH0gZWxzZSBpZiAodGhpcy5sb2FkZWRDb21wb25lbnRzLmhhcyhjb21wb25lbnRTZWxlY3RvcikpIHtcbiAgICAgIC8vIGNvbXBvbmVudCBhbHJlYWR5IGxvYWRlZFxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICBzZWxlY3RvcjogY29tcG9uZW50U2VsZWN0b3IsXG4gICAgICAgICAgY29tcG9uZW50Q2xhc3M6IHRoaXMubG9hZGVkQ29tcG9uZW50cy5nZXQoY29tcG9uZW50U2VsZWN0b3IpXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFVucmVjb2duaXplZCBjb21wb25lbnQgXCIke2NvbXBvbmVudFNlbGVjdG9yfVwiLiBNYWtlIHN1cmUgaXQgaXMgcmVnaXN0ZXJlZCBpbiB0aGUgY29tcG9uZW50IHJlZ2lzdHJ5YFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn0iXX0=
|
|
1
|
+
import { Injectable, Inject, NgModuleFactory, ComponentFactoryResolver } from '@angular/core';
|
|
2
|
+
import { LAZY_CMPS_PATH_TOKEN } from './tokens';
|
|
3
|
+
import { from } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class NgxElementService {
|
|
6
|
+
constructor(modulePaths, compiler, injector) {
|
|
7
|
+
this.compiler = compiler;
|
|
8
|
+
this.injector = injector;
|
|
9
|
+
this.loadedComponents = new Map();
|
|
10
|
+
this.elementsLoading = new Map();
|
|
11
|
+
this.injectors = new Map();
|
|
12
|
+
this.componentFactoryResolvers = new Map();
|
|
13
|
+
const ELEMENT_MODULE_PATHS = new Map();
|
|
14
|
+
modulePaths.forEach(route => {
|
|
15
|
+
ELEMENT_MODULE_PATHS.set(route.selector, route);
|
|
16
|
+
});
|
|
17
|
+
this.componentsToLoad = ELEMENT_MODULE_PATHS;
|
|
18
|
+
}
|
|
19
|
+
receiveContext(component, injector) {
|
|
20
|
+
this.injectors.set(component, injector);
|
|
21
|
+
this.componentFactoryResolvers.set(component, injector.get(ComponentFactoryResolver));
|
|
22
|
+
}
|
|
23
|
+
getInjector(component) {
|
|
24
|
+
return this.injectors.get(component);
|
|
25
|
+
}
|
|
26
|
+
getComponentFactoryResolver(component) {
|
|
27
|
+
return this.componentFactoryResolvers.get(component);
|
|
28
|
+
}
|
|
29
|
+
getComponentsToLoad() {
|
|
30
|
+
return this.componentsToLoad;
|
|
31
|
+
}
|
|
32
|
+
getComponentToLoad(selector) {
|
|
33
|
+
// Returns observable that completes when the lazy module has been loaded.
|
|
34
|
+
const registered = this.loadComponent(selector);
|
|
35
|
+
return from(registered);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Allows to lazy load a component given its selector.
|
|
39
|
+
* If the component selector has been registered, it's according module
|
|
40
|
+
* will be fetched lazily
|
|
41
|
+
* @param componentTag selector of the component to load
|
|
42
|
+
*/
|
|
43
|
+
loadComponent(componentSelector) {
|
|
44
|
+
if (this.elementsLoading.has(componentSelector)) {
|
|
45
|
+
return this.elementsLoading.get(componentSelector);
|
|
46
|
+
}
|
|
47
|
+
if (this.componentsToLoad.has(componentSelector)) {
|
|
48
|
+
const cmpRegistryEntry = this.componentsToLoad.get(componentSelector);
|
|
49
|
+
const path = cmpRegistryEntry.loadChildren;
|
|
50
|
+
const loadPromise = new Promise((resolve, reject) => {
|
|
51
|
+
path()
|
|
52
|
+
.then(elementModuleOrFactory => {
|
|
53
|
+
/**
|
|
54
|
+
* With View Engine, the NgModule factory is created and provided when loaded.
|
|
55
|
+
* With Ivy, only the NgModule class is provided loaded and must be compiled.
|
|
56
|
+
* This uses the same mechanism as the deprecated `SystemJsNgModuleLoader` in
|
|
57
|
+
* in `packages/core/src/linker/system_js_ng_module_factory_loader.ts`
|
|
58
|
+
* to pass on the NgModuleFactory, or compile the NgModule and return its NgModuleFactory.
|
|
59
|
+
*/
|
|
60
|
+
if (elementModuleOrFactory instanceof NgModuleFactory) {
|
|
61
|
+
return elementModuleOrFactory;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
try {
|
|
65
|
+
return this.compiler.compileModuleAsync(elementModuleOrFactory);
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
// return the error
|
|
69
|
+
reject(err);
|
|
70
|
+
// break the promise chain
|
|
71
|
+
throw err;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
})
|
|
75
|
+
.then(moduleFactory => {
|
|
76
|
+
const elementModuleRef = moduleFactory.create(this.injector);
|
|
77
|
+
let componentClass;
|
|
78
|
+
if (typeof elementModuleRef.instance.customElementComponent === 'object') {
|
|
79
|
+
componentClass = elementModuleRef.instance.customElementComponent[componentSelector];
|
|
80
|
+
if (!componentClass) {
|
|
81
|
+
// tslint:disable-next-line: no-string-throw
|
|
82
|
+
throw `You specified multiple component elements in module ${elementModuleRef} but there was no match for tag
|
|
83
|
+
${componentSelector} in ${JSON.stringify(elementModuleRef.instance.customElementComponent)}.
|
|
84
|
+
Make sure the selector in the module is aligned with the one specified in the lazy module definition.`;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
componentClass = elementModuleRef.instance.customElementComponent;
|
|
89
|
+
}
|
|
90
|
+
// Register injector of the lazy module.
|
|
91
|
+
// This is needed to share the entryComponents between the lazy module and the application
|
|
92
|
+
const moduleInjector = elementModuleRef.injector;
|
|
93
|
+
this.receiveContext(componentClass, moduleInjector);
|
|
94
|
+
this.loadedComponents.set(componentSelector, componentClass);
|
|
95
|
+
this.elementsLoading.delete(componentSelector);
|
|
96
|
+
this.componentsToLoad.delete(componentSelector);
|
|
97
|
+
resolve({
|
|
98
|
+
selector: componentSelector,
|
|
99
|
+
componentClass
|
|
100
|
+
});
|
|
101
|
+
})
|
|
102
|
+
.catch(err => {
|
|
103
|
+
this.elementsLoading.delete(componentSelector);
|
|
104
|
+
return Promise.reject(err);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
this.elementsLoading.set(componentSelector, loadPromise);
|
|
108
|
+
return loadPromise;
|
|
109
|
+
}
|
|
110
|
+
else if (this.loadedComponents.has(componentSelector)) {
|
|
111
|
+
// component already loaded
|
|
112
|
+
return new Promise(resolve => {
|
|
113
|
+
resolve({
|
|
114
|
+
selector: componentSelector,
|
|
115
|
+
componentClass: this.loadedComponents.get(componentSelector)
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
throw new Error(`Unrecognized component "${componentSelector}". Make sure it is registered in the component registry`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxElementService, deps: [{ token: LAZY_CMPS_PATH_TOKEN }, { token: i0.Compiler }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
124
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxElementService, providedIn: 'root' }); }
|
|
125
|
+
}
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxElementService, decorators: [{
|
|
127
|
+
type: Injectable,
|
|
128
|
+
args: [{
|
|
129
|
+
providedIn: 'root'
|
|
130
|
+
}]
|
|
131
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
132
|
+
type: Inject,
|
|
133
|
+
args: [LAZY_CMPS_PATH_TOKEN]
|
|
134
|
+
}] }, { type: i0.Compiler }, { type: i0.Injector }] });
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWVsZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1lbGVtZW50L3NyYy9saWIvbmd4LWVsZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQTRCLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxvQkFBb0IsRUFBb0IsTUFBTSxVQUFVLENBQUM7QUFFbEUsT0FBTyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLeEMsTUFBTSxPQUFPLGlCQUFpQjtJQVE1QixZQUVFLFdBRUcsRUFDSyxRQUFrQixFQUNsQixRQUFrQjtRQURsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFacEIscUJBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQXFCLENBQUM7UUFDaEQsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBdUMsQ0FBQztRQUV6RSxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7UUFDM0MsOEJBQXlCLEdBQUcsSUFBSSxHQUFHLEVBQXVDLENBQUM7UUFVekUsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO1FBQ3BELFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUIsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUM7SUFDL0MsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUFvQixFQUFFLFFBQWtCO1FBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztR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YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FDYiwyQkFBMkIsaUJBQWlCLHlEQUF5RCxDQUN0RyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7K0dBM0lVLGlCQUFpQixrQkFTbEIsb0JBQW9CO21IQVRuQixpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBVUksTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE5nTW9kdWxlRmFjdG9yeSwgVHlwZSwgQ29tcGlsZXIsIEluamVjdG9yLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTEFaWV9DTVBTX1BBVEhfVE9LRU4sIExhenlDb21wb25lbnREZWYgfSBmcm9tICcuL3Rva2Vucyc7XHJcbmltcG9ydCB7IExhenlDbXBMb2FkZWRFdmVudCB9IGZyb20gJy4vbGF6eS1jb21wb25lbnQtbG9hZGVkLWV2ZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4RWxlbWVudFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgY29tcG9uZW50c1RvTG9hZDogTWFwPHN0cmluZywgTGF6eUNvbXBvbmVudERlZj47XHJcbiAgcHJpdmF0ZSBsb2FkZWRDb21wb25lbnRzID0gbmV3IE1hcDxzdHJpbmcsIFR5cGU8YW55Pj4oKTtcclxuICBwcml2YXRlIGVsZW1lbnRzTG9hZGluZyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPExhenlDbXBMb2FkZWRFdmVudD4+KCk7XHJcblxyXG4gIGluamVjdG9ycyA9IG5ldyBNYXA8VHlwZTxhbnk+LCBJbmplY3Rvcj4oKTtcclxuICBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJzID0gbmV3IE1hcDxUeXBlPGFueT4sIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KExBWllfQ01QU19QQVRIX1RPS0VOKVxyXG4gICAgbW9kdWxlUGF0aHM6IHtcclxuICAgICAgc2VsZWN0b3I6IHN0cmluZ1xyXG4gICAgfVtdLFxyXG4gICAgcHJpdmF0ZSBjb21waWxlcjogQ29tcGlsZXIsXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxyXG4gICkge1xyXG4gICAgY29uc3QgRUxFTUVOVF9NT0RVTEVfUEFUSFMgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xyXG4gICAgbW9kdWxlUGF0aHMuZm9yRWFjaChyb3V0ZSA9PiB7XHJcbiAgICAgIEVMRU1FTlRfTU9EVUxFX1BBVEhTLnNldChyb3V0ZS5zZWxlY3Rvciwgcm91dGUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb21wb25lbnRzVG9Mb2FkID0gRUxFTUVOVF9NT0RVTEVfUEFUSFM7XHJcbiAgfVxyXG5cclxuICByZWNlaXZlQ29udGV4dChjb21wb25lbnQ6IFR5cGU8YW55PiwgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICB0aGlzLmluamVjdG9ycy5zZXQoY29tcG9uZW50LCBpbmplY3Rvcik7XHJcbiAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcnMuc2V0KGNvbXBvbmVudCwgaW5qZWN0b3IuZ2V0KENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5qZWN0b3IoY29tcG9uZW50OiBUeXBlPGFueT4pOiBJbmplY3RvciB7XHJcbiAgICByZXR1cm4gdGhpcy5pbmplY3RvcnMuZ2V0KGNvbXBvbmVudCk7XHJcbiAgfVxyXG5cclxuICBnZXRDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIoY29tcG9uZW50OiBUeXBlPGFueT4pOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVycy5nZXQoY29tcG9uZW50KTtcclxuICB9XHJcblxyXG4gIGdldENvbXBvbmVudHNUb0xvYWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRzVG9Mb2FkO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29tcG9uZW50VG9Mb2FkKHNlbGVjdG9yOiBzdHJpbmcpOiBPYnNlcnZhYmxlPExhenlDbXBMb2FkZWRFdmVudD4ge1xyXG4gICAgLy8gUmV0dXJucyBvYnNlcnZhYmxlIHRoYXQgY29tcGxldGVzIHdoZW4gdGhlIGxhenkgbW9kdWxlIGhhcyBiZWVuIGxvYWRlZC5cclxuICAgIGNvbnN0IHJlZ2lzdGVyZWQgPSB0aGlzLmxvYWRDb21wb25lbnQoc2VsZWN0b3IpO1xyXG4gICAgcmV0dXJuIGZyb20ocmVnaXN0ZXJlZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbGxvd3MgdG8gbGF6eSBsb2FkIGEgY29tcG9uZW50IGdpdmVuIGl0cyBzZWxlY3Rvci5cclxuICAgKiBJZiB0aGUgY29tcG9uZW50IHNlbGVjdG9yIGhhcyBiZWVuIHJlZ2lzdGVyZWQsIGl0J3MgYWNjb3JkaW5nIG1vZHVsZVxyXG4gICAqIHdpbGwgYmUgZmV0Y2hlZCBsYXppbHlcclxuICAgKiBAcGFyYW0gY29tcG9uZW50VGFnIHNlbGVjdG9yIG9mIHRoZSBjb21wb25lbnQgdG8gbG9hZFxyXG4gICAqL1xyXG4gIGxvYWRDb21wb25lbnQoY29tcG9uZW50U2VsZWN0b3I6IHN0cmluZyk6IFByb21pc2U8TGF6eUNtcExvYWRlZEV2ZW50PiB7XHJcbiAgICBpZiAodGhpcy5lbGVtZW50c0xvYWRpbmcuaGFzKGNvbXBvbmVudFNlbGVjdG9yKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5lbGVtZW50c0xvYWRpbmcuZ2V0KGNvbXBvbmVudFNlbGVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb21wb25lbnRzVG9Mb2FkLmhhcyhjb21wb25lbnRTZWxlY3RvcikpIHtcclxuICAgICAgY29uc3QgY21wUmVnaXN0cnlFbnRyeSA9IHRoaXMuY29tcG9uZW50c1RvTG9hZC5nZXQoY29tcG9uZW50U2VsZWN0b3IpO1xyXG4gICAgICBjb25zdCBwYXRoID0gY21wUmVnaXN0cnlFbnRyeS5sb2FkQ2hpbGRyZW47XHJcblxyXG4gICAgICBjb25zdCBsb2FkUHJvbWlzZSA9IG5ldyBQcm9taXNlPExhenlDbXBMb2FkZWRFdmVudD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIChwYXRoKCkgYXMgUHJvbWlzZTxOZ01vZHVsZUZhY3Rvcnk8YW55PiB8IFR5cGU8YW55Pj4pXHJcbiAgICAgICAgICAudGhlbihlbGVtZW50TW9kdWxlT3JGYWN0b3J5ID0+IHtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFdpdGggVmlldyBFbmdpbmUsIHRoZSBOZ01vZHVsZSBmYWN0b3J5IGlzIGNyZWF0ZWQgYW5kIHByb3ZpZGVkIHdoZW4gbG9hZGVkLlxyXG4gICAgICAgICAgICAgKiBXaXRoIEl2eSwgb25seSB0aGUgTmdNb2R1bGUgY2xhc3MgaXMgcHJvdmlkZWQgbG9hZGVkIGFuZCBtdXN0IGJlIGNvbXBpbGVkLlxyXG4gICAgICAgICAgICAgKiBUaGlzIHVzZXMgdGhlIHNhbWUgbWVjaGFuaXNtIGFzIHRoZSBkZXByZWNhdGVkIGBTeXN0ZW1Kc05nTW9kdWxlTG9hZGVyYCBpblxyXG4gICAgICAgICAgICAgKiBpbiBgcGFja2FnZXMvY29yZS9zcmMvbGlua2VyL3N5c3RlbV9qc19uZ19tb2R1bGVfZmFjdG9yeV9sb2FkZXIudHNgXHJcbiAgICAgICAgICAgICAqIHRvIHBhc3Mgb24gdGhlIE5nTW9kdWxlRmFjdG9yeSwgb3IgY29tcGlsZSB0aGUgTmdNb2R1bGUgYW5kIHJldHVybiBpdHMgTmdNb2R1bGVGYWN0b3J5LlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRNb2R1bGVPckZhY3RvcnkgaW5zdGFuY2VvZiBOZ01vZHVsZUZhY3RvcnkpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudE1vZHVsZU9yRmFjdG9yeTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZXIuY29tcGlsZU1vZHVsZUFzeW5jKGVsZW1lbnRNb2R1bGVPckZhY3RvcnkpO1xyXG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgLy8gcmV0dXJuIHRoZSBlcnJvclxyXG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gYnJlYWsgdGhlIHByb21pc2UgY2hhaW5cclxuICAgICAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihtb2R1bGVGYWN0b3J5ID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBlbGVtZW50TW9kdWxlUmVmID0gbW9kdWxlRmFjdG9yeS5jcmVhdGUodGhpcy5pbmplY3Rvcik7XHJcbiAgICAgICAgICAgICAgbGV0IGNvbXBvbmVudENsYXNzO1xyXG5cclxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnRNb2R1bGVSZWYuaW5zdGFuY2UuY3VzdG9tRWxlbWVudENvbXBvbmVudCA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudENsYXNzID0gZWxlbWVudE1vZHVsZVJlZi5pbnN0YW5jZS5jdXN0b21FbGVtZW50Q29tcG9uZW50W2NvbXBvbmVudFNlbGVjdG9yXTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIWNvbXBvbmVudENsYXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tc3RyaW5nLXRocm93XHJcbiAgICAgICAgICAgICAgICAgIHRocm93IGBZb3Ugc3BlY2lmaWVkIG11bHRpcGxlIGNvbXBvbmVudCBlbGVtZW50cyBpbiBtb2R1bGUgJHtlbGVtZW50TW9kdWxlUmVmfSBidXQgdGhlcmUgd2FzIG5vIG1hdGNoIGZvciB0YWdcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHtjb21wb25lbnRTZWxlY3Rvcn0gaW4gJHtKU09OLnN0cmluZ2lmeShlbGVtZW50TW9kdWxlUmVmLmluc3RhbmNlLmN1c3RvbUVsZW1lbnRDb21wb25lbnQpfS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIE1ha2Ugc3VyZSB0aGUgc2VsZWN0b3IgaW4gdGhlIG1vZHVsZSBpcyBhbGlnbmVkIHdpdGggdGhlIG9uZSBzcGVjaWZpZWQgaW4gdGhlIGxhenkgbW9kdWxlIGRlZmluaXRpb24uYDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50Q2xhc3MgPSBlbGVtZW50TW9kdWxlUmVmLmluc3RhbmNlLmN1c3RvbUVsZW1lbnRDb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAvLyBSZWdpc3RlciBpbmplY3RvciBvZiB0aGUgbGF6eSBtb2R1bGUuXHJcbiAgICAgICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgdG8gc2hhcmUgdGhlIGVudHJ5Q29tcG9uZW50cyBiZXR3ZWVuIHRoZSBsYXp5IG1vZHVsZSBhbmQgdGhlIGFwcGxpY2F0aW9uXHJcbiAgICAgICAgICAgICAgY29uc3QgbW9kdWxlSW5qZWN0b3IgPSBlbGVtZW50TW9kdWxlUmVmLmluamVjdG9yO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVjZWl2ZUNvbnRleHQoY29tcG9uZW50Q2xhc3MsIG1vZHVsZUluamVjdG9yKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5sb2FkZWRDb21wb25lbnRzLnNldChjb21wb25lbnRTZWxlY3RvciwgY29tcG9uZW50Q2xhc3MpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZWxlbWVudHNMb2FkaW5nLmRlbGV0ZShjb21wb25lbnRTZWxlY3Rvcik7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRzVG9Mb2FkLmRlbGV0ZShjb21wb25lbnRTZWxlY3Rvcik7XHJcblxyXG4gICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgc2VsZWN0b3I6IGNvbXBvbmVudFNlbGVjdG9yLFxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50Q2xhc3NcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50c0xvYWRpbmcuZGVsZXRlKGNvbXBvbmVudFNlbGVjdG9yKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmVsZW1lbnRzTG9hZGluZy5zZXQoY29tcG9uZW50U2VsZWN0b3IsIGxvYWRQcm9taXNlKTtcclxuICAgICAgcmV0dXJuIGxvYWRQcm9taXNlO1xyXG5cclxuICAgIH0gZWxzZSBpZiAodGhpcy5sb2FkZWRDb21wb25lbnRzLmhhcyhjb21wb25lbnRTZWxlY3RvcikpIHtcclxuICAgICAgLy8gY29tcG9uZW50IGFscmVhZHkgbG9hZGVkXHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICByZXNvbHZlKHtcclxuICAgICAgICAgIHNlbGVjdG9yOiBjb21wb25lbnRTZWxlY3RvcixcclxuICAgICAgICAgIGNvbXBvbmVudENsYXNzOiB0aGlzLmxvYWRlZENvbXBvbmVudHMuZ2V0KGNvbXBvbmVudFNlbGVjdG9yKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICBgVW5yZWNvZ25pemVkIGNvbXBvbmVudCBcIiR7Y29tcG9uZW50U2VsZWN0b3J9XCIuIE1ha2Ugc3VyZSBpdCBpcyByZWdpc3RlcmVkIGluIHRoZSBjb21wb25lbnQgcmVnaXN0cnlgXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59Il19
|
package/esm2022/lib/tokens.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
/* Injection token to provide the element path modules. */
|
|
3
|
-
export const LAZY_CMPS_PATH_TOKEN = new InjectionToken('ngx-lazy-cmp-registry');
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
/* Injection token to provide the element path modules. */
|
|
3
|
+
export const LAZY_CMPS_PATH_TOKEN = new InjectionToken('ngx-lazy-cmp-registry');
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWVsZW1lbnQvc3JjL2xpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQywwREFBMEQ7QUFDMUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQUMsdUJBQXVCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvYWRDaGlsZHJlbkNhbGxiYWNrIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbi8qIEluamVjdGlvbiB0b2tlbiB0byBwcm92aWRlIHRoZSBlbGVtZW50IHBhdGggbW9kdWxlcy4gKi9cclxuZXhwb3J0IGNvbnN0IExBWllfQ01QU19QQVRIX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuKCduZ3gtbGF6eS1jbXAtcmVnaXN0cnknKTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGF6eUNvbXBvbmVudERlZiB7XHJcbiAgc2VsZWN0b3I6IHN0cmluZztcclxuICBsb2FkQ2hpbGRyZW46IExvYWRDaGlsZHJlbkNhbGxiYWNrOyAvLyBwcm9wIG5lZWRzIHRvIGJlIG5hbWVkIGxpa2UgdGhpc1xyXG59XHJcbiJdfQ==
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of ngx-element
|
|
3
|
-
*/
|
|
4
|
-
export * from './lib/ngx-element.module';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of ngx-element
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/ngx-element.module';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1lbGVtZW50L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3gtZWxlbWVudFxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC1lbGVtZW50Lm1vZHVsZSc7XHJcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemRpZ2FtYmFyLW5neC1lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvbmd4LWVsZW1lbnQvc3JjL3pkaWdhbWJhci1uZ3gtZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|