@zdigambar/ngx-element 9.0.0 → 10.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 CHANGED
@@ -10,6 +10,9 @@
10
10
  | 7.x.x | ^16.x.x |
11
11
  | 8.x.x | ^17.x.x |
12
12
  | 9.x.x | ^18.x.x |
13
+ | 10.x.x | ^19.x.x |
14
+ | 11.x.x | ^20.x.x |
15
+ | 12.x.x | ^21.x.x |
13
16
 
14
17
  # NgxElement
15
18
 
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, ComponentFactoryResolver, NgModuleFactory, Injectable, Inject, Injector, ViewContainerRef, Component, Input, ViewChild, NgModule } from '@angular/core';
2
+ import { InjectionToken, ComponentFactoryResolver, NgModuleFactory, Inject, Injectable, Injector, ViewContainerRef, ViewChild, Input, Component, NgModule } from '@angular/core';
3
3
  import { createCustomElement } from '@angular/elements';
4
4
  import { from, merge } from 'rxjs';
5
5
  import { map } from 'rxjs/operators';
@@ -125,10 +125,10 @@ class NgxElementService {
125
125
  throw new Error(`Unrecognized component "${componentSelector}". Make sure it is registered in the component registry`);
126
126
  }
127
127
  }
128
- 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 }); }
129
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxElementService, providedIn: 'root' }); }
128
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: NgxElementService, deps: [{ token: LAZY_CMPS_PATH_TOKEN }, { token: i0.Compiler }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
129
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: NgxElementService, providedIn: 'root' }); }
130
130
  }
131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxElementService, decorators: [{
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: NgxElementService, decorators: [{
132
132
  type: Injectable,
133
133
  args: [{
134
134
  providedIn: 'root'
@@ -218,12 +218,12 @@ class NgxElementComponent {
218
218
  this.componentRef.destroy();
219
219
  this.ngElementEventsSubscription.unsubscribe();
220
220
  }
221
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxElementComponent, deps: [{ token: NgxElementService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
222
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NgxElementComponent, selector: "lib-ngx-element", inputs: { selector: "selector" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: `<ng-template #container></ng-template>`, isInline: true }); }
221
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: NgxElementComponent, deps: [{ token: NgxElementService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
222
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: NgxElementComponent, isStandalone: false, selector: "lib-ngx-element", inputs: { selector: "selector" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: `<ng-template #container></ng-template>`, isInline: true }); }
223
223
  }
224
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxElementComponent, decorators: [{
224
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: NgxElementComponent, decorators: [{
225
225
  type: Component,
226
- args: [{ selector: 'lib-ngx-element', template: `<ng-template #container></ng-template>` }]
226
+ args: [{ selector: 'lib-ngx-element', template: `<ng-template #container></ng-template>`, standalone: false }]
227
227
  }], ctorParameters: () => [{ type: NgxElementService }, { type: i0.ElementRef }], propDecorators: { selector: [{
228
228
  type: Input
229
229
  }], container: [{
@@ -249,11 +249,11 @@ class NgxElementModule {
249
249
  };
250
250
  }
251
251
  ngDoBootstrap() { }
252
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxElementModule, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
253
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NgxElementModule, declarations: [NgxElementComponent] }); }
254
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxElementModule }); }
252
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: NgxElementModule, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
253
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.18", ngImport: i0, type: NgxElementModule, declarations: [NgxElementComponent] }); }
254
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: NgxElementModule }); }
255
255
  }
256
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxElementModule, decorators: [{
256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: NgxElementModule, decorators: [{
257
257
  type: NgModule,
258
258
  args: [{
259
259
  declarations: [NgxElementComponent]
@@ -1 +1 @@
1
- {"version":3,"file":"zdigambar-ngx-element.mjs","sources":["../../../projects/ngx-element/src/lib/tokens.ts","../../../projects/ngx-element/src/lib/ngx-element.service.ts","../../../projects/ngx-element/src/lib/ngx-element.component.ts","../../../projects/ngx-element/src/lib/ngx-element.module.ts","../../../projects/ngx-element/src/public-api.ts","../../../projects/ngx-element/src/zdigambar-ngx-element.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { LoadChildrenCallback } from '@angular/router';\r\n\r\n/* Injection token to provide the element path modules. */\r\nexport const LAZY_CMPS_PATH_TOKEN = new InjectionToken('ngx-lazy-cmp-registry');\r\n\r\nexport interface LazyComponentDef {\r\n selector: string;\r\n loadChildren: LoadChildrenCallback; // prop needs to be named like this\r\n}\r\n","import { Injectable, Inject, NgModuleFactory, Type, Compiler, Injector, ComponentFactoryResolver } from '@angular/core';\r\nimport { LAZY_CMPS_PATH_TOKEN, LazyComponentDef } from './tokens';\r\nimport { LazyCmpLoadedEvent } from './lazy-component-loaded-event';\r\nimport { Observable, from } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxElementService {\r\n private componentsToLoad: Map<string, LazyComponentDef>;\r\n private loadedComponents = new Map<string, Type<any>>();\r\n private elementsLoading = new Map<string, Promise<LazyCmpLoadedEvent>>();\r\n\r\n injectors = new Map<Type<any>, Injector>();\r\n componentFactoryResolvers = new Map<Type<any>, ComponentFactoryResolver>();\r\n\r\n constructor(\r\n @Inject(LAZY_CMPS_PATH_TOKEN)\r\n modulePaths: {\r\n selector: string\r\n }[],\r\n private compiler: Compiler,\r\n private injector: Injector\r\n ) {\r\n const ELEMENT_MODULE_PATHS = new Map<string, any>();\r\n modulePaths.forEach(route => {\r\n ELEMENT_MODULE_PATHS.set(route.selector, route);\r\n });\r\n\r\n this.componentsToLoad = ELEMENT_MODULE_PATHS;\r\n }\r\n\r\n receiveContext(component: Type<any>, injector: Injector) {\r\n this.injectors.set(component, injector);\r\n this.componentFactoryResolvers.set(component, injector.get(ComponentFactoryResolver));\r\n }\r\n\r\n getInjector(component: Type<any>): Injector {\r\n return this.injectors.get(component);\r\n }\r\n\r\n getComponentFactoryResolver(component: Type<any>): ComponentFactoryResolver {\r\n return this.componentFactoryResolvers.get(component);\r\n }\r\n\r\n getComponentsToLoad() {\r\n return this.componentsToLoad;\r\n }\r\n\r\n getComponentToLoad(selector: string): Observable<LazyCmpLoadedEvent> {\r\n // Returns observable that completes when the lazy module has been loaded.\r\n const registered = this.loadComponent(selector);\r\n return from(registered);\r\n }\r\n\r\n /**\r\n * Allows to lazy load a component given its selector.\r\n * If the component selector has been registered, it's according module\r\n * will be fetched lazily\r\n * @param componentTag selector of the component to load\r\n */\r\n loadComponent(componentSelector: string): Promise<LazyCmpLoadedEvent> {\r\n if (this.elementsLoading.has(componentSelector)) {\r\n return this.elementsLoading.get(componentSelector);\r\n }\r\n\r\n if (this.componentsToLoad.has(componentSelector)) {\r\n const cmpRegistryEntry = this.componentsToLoad.get(componentSelector);\r\n const path = cmpRegistryEntry.loadChildren;\r\n\r\n const loadPromise = new Promise<LazyCmpLoadedEvent>((resolve, reject) => {\r\n (path() as Promise<NgModuleFactory<any> | Type<any>>)\r\n .then(elementModuleOrFactory => {\r\n /**\r\n * With View Engine, the NgModule factory is created and provided when loaded.\r\n * With Ivy, only the NgModule class is provided loaded and must be compiled.\r\n * This uses the same mechanism as the deprecated `SystemJsNgModuleLoader` in\r\n * in `packages/core/src/linker/system_js_ng_module_factory_loader.ts`\r\n * to pass on the NgModuleFactory, or compile the NgModule and return its NgModuleFactory.\r\n */\r\n if (elementModuleOrFactory instanceof NgModuleFactory) {\r\n return elementModuleOrFactory;\r\n } else {\r\n try {\r\n return this.compiler.compileModuleAsync(elementModuleOrFactory);\r\n } catch (err) {\r\n // return the error\r\n reject(err);\r\n\r\n // break the promise chain\r\n throw err;\r\n }\r\n }\r\n })\r\n .then(moduleFactory => {\r\n const elementModuleRef = moduleFactory.create(this.injector);\r\n let componentClass;\r\n\r\n if (typeof elementModuleRef.instance.customElementComponent === 'object') {\r\n componentClass = elementModuleRef.instance.customElementComponent[componentSelector];\r\n\r\n if (!componentClass) {\r\n // tslint:disable-next-line: no-string-throw\r\n throw `You specified multiple component elements in module ${elementModuleRef} but there was no match for tag\r\n ${componentSelector} in ${JSON.stringify(elementModuleRef.instance.customElementComponent)}.\r\n Make sure the selector in the module is aligned with the one specified in the lazy module definition.`;\r\n }\r\n } else {\r\n componentClass = elementModuleRef.instance.customElementComponent;\r\n }\r\n\r\n // Register injector of the lazy module.\r\n // This is needed to share the entryComponents between the lazy module and the application\r\n const moduleInjector = elementModuleRef.injector;\r\n this.receiveContext(componentClass, moduleInjector);\r\n\r\n this.loadedComponents.set(componentSelector, componentClass);\r\n this.elementsLoading.delete(componentSelector);\r\n this.componentsToLoad.delete(componentSelector);\r\n\r\n resolve({\r\n selector: componentSelector,\r\n componentClass\r\n });\r\n })\r\n .catch(err => {\r\n this.elementsLoading.delete(componentSelector);\r\n return Promise.reject(err);\r\n });\r\n });\r\n\r\n this.elementsLoading.set(componentSelector, loadPromise);\r\n return loadPromise;\r\n\r\n } else if (this.loadedComponents.has(componentSelector)) {\r\n // component already loaded\r\n return new Promise(resolve => {\r\n resolve({\r\n selector: componentSelector,\r\n componentClass: this.loadedComponents.get(componentSelector)\r\n });\r\n });\r\n } else {\r\n throw new Error(\r\n `Unrecognized component \"${componentSelector}\". Make sure it is registered in the component registry`\r\n );\r\n }\r\n }\r\n}","import {\r\n Component,\r\n ComponentFactory,\r\n ComponentRef,\r\n OnInit,\r\n Input,\r\n ViewChild,\r\n ViewContainerRef,\r\n OnDestroy,\r\n EventEmitter,\r\n ElementRef,\r\n Injector,\r\n Type,\r\n} from '@angular/core';\r\nimport { NgxElementService } from './ngx-element.service';\r\nimport { merge, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'lib-ngx-element',\r\n template: `<ng-template #container></ng-template>`,\r\n styles: [],\r\n})\r\nexport class NgxElementComponent implements OnInit, OnDestroy {\r\n private ngElementEventsSubscription: Subscription;\r\n @Input() selector: string;\r\n @ViewChild('container', { read: ViewContainerRef }) container;\r\n componentRef: ComponentRef<any>;\r\n componentToLoad: Type<any>;\r\n injector: Injector;\r\n\r\n constructor(\r\n private ngxElementService: NgxElementService,\r\n private elementRef: ElementRef\r\n ) {}\r\n\r\n private setProxiedOutputs(factory: ComponentFactory<any>): void {\r\n const eventEmitters = factory.outputs.map(({ propName, templateName }) => {\r\n const emitter = (this.componentRef.instance as any)[propName] as EventEmitter<any>;\r\n return emitter.pipe(map((value: any) => ({ name: templateName, value })));\r\n });\r\n const outputEvents = merge(...eventEmitters);\r\n this.ngElementEventsSubscription = outputEvents.subscribe((subscription) => {\r\n const customEvent = document.createEvent('CustomEvent');\r\n customEvent.initCustomEvent(subscription.name, false, false, subscription.value);\r\n this.elementRef.nativeElement.dispatchEvent(customEvent);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.ngxElementService.getComponentToLoad(this.selector).subscribe((event) => {\r\n this.componentToLoad = event.componentClass;\r\n const attributes = this.getElementAttributes();\r\n this.createComponent(attributes);\r\n });\r\n }\r\n\r\n createComponent(attributes) {\r\n this.container.clear();\r\n const factory = this.ngxElementService.getComponentFactoryResolver(this.componentToLoad).resolveComponentFactory(this.componentToLoad);\r\n this.injector = Injector.create({\r\n providers: [{ provide: this.componentToLoad, useValue: this.componentToLoad }],\r\n parent: this.ngxElementService.getInjector(this.componentToLoad),\r\n });\r\n this.componentRef = this.container.createComponent(factory, 0, this.injector);\r\n this.setAttributes(attributes);\r\n this.listenToAttributeChanges();\r\n this.setProxiedOutputs(factory);\r\n }\r\n\r\n setAttributes(attributes) {\r\n attributes.forEach((attr) => {\r\n this.componentRef.instance[attr.name] = attr.value;\r\n });\r\n }\r\n\r\n getElementAttributes() {\r\n const attrs = this.elementRef.nativeElement.attributes;\r\n const attributes = [];\r\n for (let attr, i = 0; i < attrs.length; i++) {\r\n attr = attrs[i];\r\n if (attr.nodeName.match('^data-')) {\r\n attributes.push({\r\n name: this.camelCaseAttribute(attr.nodeName),\r\n value: attr.nodeValue,\r\n });\r\n }\r\n }\r\n return attributes;\r\n }\r\n\r\n camelCaseAttribute(attribute: string) {\r\n const attr = attribute.replace('data-', '');\r\n const chunks = attr.split('-');\r\n if (chunks.length > 1) {\r\n return chunks[0] + chunks.slice(1).map((chunk) => chunk.replace(/^\\w/, (c) => c.toUpperCase())).join('');\r\n }\r\n return attr;\r\n }\r\n\r\n listenToAttributeChanges() {\r\n const observer = new MutationObserver((mutations) => {\r\n mutations.forEach((mutation) => {\r\n if (mutation.type === 'attributes') {\r\n const attributes = this.getElementAttributes();\r\n this.setAttributes(attributes);\r\n }\r\n });\r\n });\r\n observer.observe(this.elementRef.nativeElement, {\r\n attributes: true,\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.componentRef.destroy();\r\n this.ngElementEventsSubscription.unsubscribe();\r\n }\r\n}\r\n","import { NgModule, Injector, ModuleWithProviders } from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\nimport { NgxElementComponent } from './ngx-element.component';\r\nimport { LAZY_CMPS_PATH_TOKEN } from './tokens';\r\n\r\n@NgModule({\r\n declarations: [NgxElementComponent]\r\n})\r\nexport class NgxElementModule {\r\n\r\n constructor(private injector: Injector) {\r\n const ngxElement = createCustomElement(NgxElementComponent, { injector });\r\n customElements.define('ngx-element', ngxElement);\r\n }\r\n\r\n static forRoot(modulePaths: any[]): ModuleWithProviders<NgxElementModule> {\r\n return {\r\n ngModule: NgxElementModule,\r\n providers: [\r\n {\r\n provide: LAZY_CMPS_PATH_TOKEN,\r\n useValue: modulePaths\r\n }\r\n ]\r\n };\r\n }\r\n\r\n ngDoBootstrap() {}\r\n}\r\n","/*\r\n * Public API Surface of ngx-element\r\n */\r\n\r\nexport * from './lib/ngx-element.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxElementService"],"mappings":"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"}
1
+ {"version":3,"file":"zdigambar-ngx-element.mjs","sources":["../../../projects/ngx-element/src/lib/tokens.ts","../../../projects/ngx-element/src/lib/ngx-element.service.ts","../../../projects/ngx-element/src/lib/ngx-element.component.ts","../../../projects/ngx-element/src/lib/ngx-element.module.ts","../../../projects/ngx-element/src/public-api.ts","../../../projects/ngx-element/src/zdigambar-ngx-element.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { LoadChildrenCallback } from '@angular/router';\r\n\r\n/* Injection token to provide the element path modules. */\r\nexport const LAZY_CMPS_PATH_TOKEN = new InjectionToken('ngx-lazy-cmp-registry');\r\n\r\nexport interface LazyComponentDef {\r\n selector: string;\r\n loadChildren: LoadChildrenCallback; // prop needs to be named like this\r\n}\r\n","import { Injectable, Inject, NgModuleFactory, Type, Compiler, Injector, ComponentFactoryResolver } from '@angular/core';\r\nimport { LAZY_CMPS_PATH_TOKEN, LazyComponentDef } from './tokens';\r\nimport { LazyCmpLoadedEvent } from './lazy-component-loaded-event';\r\nimport { Observable, from } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxElementService {\r\n private componentsToLoad: Map<string, LazyComponentDef>;\r\n private loadedComponents = new Map<string, Type<any>>();\r\n private elementsLoading = new Map<string, Promise<LazyCmpLoadedEvent>>();\r\n\r\n injectors = new Map<Type<any>, Injector>();\r\n componentFactoryResolvers = new Map<Type<any>, ComponentFactoryResolver>();\r\n\r\n constructor(\r\n @Inject(LAZY_CMPS_PATH_TOKEN)\r\n modulePaths: {\r\n selector: string\r\n }[],\r\n private compiler: Compiler,\r\n private injector: Injector\r\n ) {\r\n const ELEMENT_MODULE_PATHS = new Map<string, any>();\r\n modulePaths.forEach(route => {\r\n ELEMENT_MODULE_PATHS.set(route.selector, route);\r\n });\r\n\r\n this.componentsToLoad = ELEMENT_MODULE_PATHS;\r\n }\r\n\r\n receiveContext(component: Type<any>, injector: Injector) {\r\n this.injectors.set(component, injector);\r\n this.componentFactoryResolvers.set(component, injector.get(ComponentFactoryResolver));\r\n }\r\n\r\n getInjector(component: Type<any>): Injector {\r\n return this.injectors.get(component);\r\n }\r\n\r\n getComponentFactoryResolver(component: Type<any>): ComponentFactoryResolver {\r\n return this.componentFactoryResolvers.get(component);\r\n }\r\n\r\n getComponentsToLoad() {\r\n return this.componentsToLoad;\r\n }\r\n\r\n getComponentToLoad(selector: string): Observable<LazyCmpLoadedEvent> {\r\n // Returns observable that completes when the lazy module has been loaded.\r\n const registered = this.loadComponent(selector);\r\n return from(registered);\r\n }\r\n\r\n /**\r\n * Allows to lazy load a component given its selector.\r\n * If the component selector has been registered, it's according module\r\n * will be fetched lazily\r\n * @param componentTag selector of the component to load\r\n */\r\n loadComponent(componentSelector: string): Promise<LazyCmpLoadedEvent> {\r\n if (this.elementsLoading.has(componentSelector)) {\r\n return this.elementsLoading.get(componentSelector);\r\n }\r\n\r\n if (this.componentsToLoad.has(componentSelector)) {\r\n const cmpRegistryEntry = this.componentsToLoad.get(componentSelector);\r\n const path = cmpRegistryEntry.loadChildren;\r\n\r\n const loadPromise = new Promise<LazyCmpLoadedEvent>((resolve, reject) => {\r\n (path() as Promise<NgModuleFactory<any> | Type<any>>)\r\n .then(elementModuleOrFactory => {\r\n /**\r\n * With View Engine, the NgModule factory is created and provided when loaded.\r\n * With Ivy, only the NgModule class is provided loaded and must be compiled.\r\n * This uses the same mechanism as the deprecated `SystemJsNgModuleLoader` in\r\n * in `packages/core/src/linker/system_js_ng_module_factory_loader.ts`\r\n * to pass on the NgModuleFactory, or compile the NgModule and return its NgModuleFactory.\r\n */\r\n if (elementModuleOrFactory instanceof NgModuleFactory) {\r\n return elementModuleOrFactory;\r\n } else {\r\n try {\r\n return this.compiler.compileModuleAsync(elementModuleOrFactory);\r\n } catch (err) {\r\n // return the error\r\n reject(err);\r\n\r\n // break the promise chain\r\n throw err;\r\n }\r\n }\r\n })\r\n .then(moduleFactory => {\r\n const elementModuleRef = moduleFactory.create(this.injector);\r\n let componentClass;\r\n\r\n if (typeof elementModuleRef.instance.customElementComponent === 'object') {\r\n componentClass = elementModuleRef.instance.customElementComponent[componentSelector];\r\n\r\n if (!componentClass) {\r\n // tslint:disable-next-line: no-string-throw\r\n throw `You specified multiple component elements in module ${elementModuleRef} but there was no match for tag\r\n ${componentSelector} in ${JSON.stringify(elementModuleRef.instance.customElementComponent)}.\r\n Make sure the selector in the module is aligned with the one specified in the lazy module definition.`;\r\n }\r\n } else {\r\n componentClass = elementModuleRef.instance.customElementComponent;\r\n }\r\n\r\n // Register injector of the lazy module.\r\n // This is needed to share the entryComponents between the lazy module and the application\r\n const moduleInjector = elementModuleRef.injector;\r\n this.receiveContext(componentClass, moduleInjector);\r\n\r\n this.loadedComponents.set(componentSelector, componentClass);\r\n this.elementsLoading.delete(componentSelector);\r\n this.componentsToLoad.delete(componentSelector);\r\n\r\n resolve({\r\n selector: componentSelector,\r\n componentClass\r\n });\r\n })\r\n .catch(err => {\r\n this.elementsLoading.delete(componentSelector);\r\n return Promise.reject(err);\r\n });\r\n });\r\n\r\n this.elementsLoading.set(componentSelector, loadPromise);\r\n return loadPromise;\r\n\r\n } else if (this.loadedComponents.has(componentSelector)) {\r\n // component already loaded\r\n return new Promise(resolve => {\r\n resolve({\r\n selector: componentSelector,\r\n componentClass: this.loadedComponents.get(componentSelector)\r\n });\r\n });\r\n } else {\r\n throw new Error(\r\n `Unrecognized component \"${componentSelector}\". Make sure it is registered in the component registry`\r\n );\r\n }\r\n }\r\n}","import {\r\n Component,\r\n ComponentFactory,\r\n ComponentRef,\r\n OnInit,\r\n Input,\r\n ViewChild,\r\n ViewContainerRef,\r\n OnDestroy,\r\n EventEmitter,\r\n ElementRef,\r\n Injector,\r\n Type,\r\n} from '@angular/core';\r\nimport { NgxElementService } from './ngx-element.service';\r\nimport { merge, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Component({\n selector: 'lib-ngx-element',\n template: `<ng-template #container></ng-template>`,\n styles: [],\n standalone: false\n})\r\nexport class NgxElementComponent implements OnInit, OnDestroy {\r\n private ngElementEventsSubscription: Subscription;\r\n @Input() selector: string;\r\n @ViewChild('container', { read: ViewContainerRef }) container;\r\n componentRef: ComponentRef<any>;\r\n componentToLoad: Type<any>;\r\n injector: Injector;\r\n\r\n constructor(\r\n private ngxElementService: NgxElementService,\r\n private elementRef: ElementRef\r\n ) {}\r\n\r\n private setProxiedOutputs(factory: ComponentFactory<any>): void {\r\n const eventEmitters = factory.outputs.map(({ propName, templateName }) => {\r\n const emitter = (this.componentRef.instance as any)[propName] as EventEmitter<any>;\r\n return emitter.pipe(map((value: any) => ({ name: templateName, value })));\r\n });\r\n const outputEvents = merge(...eventEmitters);\r\n this.ngElementEventsSubscription = outputEvents.subscribe((subscription) => {\r\n const customEvent = document.createEvent('CustomEvent');\r\n customEvent.initCustomEvent(subscription.name, false, false, subscription.value);\r\n this.elementRef.nativeElement.dispatchEvent(customEvent);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.ngxElementService.getComponentToLoad(this.selector).subscribe((event) => {\r\n this.componentToLoad = event.componentClass;\r\n const attributes = this.getElementAttributes();\r\n this.createComponent(attributes);\r\n });\r\n }\r\n\r\n createComponent(attributes) {\r\n this.container.clear();\r\n const factory = this.ngxElementService.getComponentFactoryResolver(this.componentToLoad).resolveComponentFactory(this.componentToLoad);\r\n this.injector = Injector.create({\r\n providers: [{ provide: this.componentToLoad, useValue: this.componentToLoad }],\r\n parent: this.ngxElementService.getInjector(this.componentToLoad),\r\n });\r\n this.componentRef = this.container.createComponent(factory, 0, this.injector);\r\n this.setAttributes(attributes);\r\n this.listenToAttributeChanges();\r\n this.setProxiedOutputs(factory);\r\n }\r\n\r\n setAttributes(attributes) {\r\n attributes.forEach((attr) => {\r\n this.componentRef.instance[attr.name] = attr.value;\r\n });\r\n }\r\n\r\n getElementAttributes() {\r\n const attrs = this.elementRef.nativeElement.attributes;\r\n const attributes = [];\r\n for (let attr, i = 0; i < attrs.length; i++) {\r\n attr = attrs[i];\r\n if (attr.nodeName.match('^data-')) {\r\n attributes.push({\r\n name: this.camelCaseAttribute(attr.nodeName),\r\n value: attr.nodeValue,\r\n });\r\n }\r\n }\r\n return attributes;\r\n }\r\n\r\n camelCaseAttribute(attribute: string) {\r\n const attr = attribute.replace('data-', '');\r\n const chunks = attr.split('-');\r\n if (chunks.length > 1) {\r\n return chunks[0] + chunks.slice(1).map((chunk) => chunk.replace(/^\\w/, (c) => c.toUpperCase())).join('');\r\n }\r\n return attr;\r\n }\r\n\r\n listenToAttributeChanges() {\r\n const observer = new MutationObserver((mutations) => {\r\n mutations.forEach((mutation) => {\r\n if (mutation.type === 'attributes') {\r\n const attributes = this.getElementAttributes();\r\n this.setAttributes(attributes);\r\n }\r\n });\r\n });\r\n observer.observe(this.elementRef.nativeElement, {\r\n attributes: true,\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.componentRef.destroy();\r\n this.ngElementEventsSubscription.unsubscribe();\r\n }\r\n}\r\n","import { NgModule, Injector, ModuleWithProviders } from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\nimport { NgxElementComponent } from './ngx-element.component';\r\nimport { LAZY_CMPS_PATH_TOKEN } from './tokens';\r\n\r\n@NgModule({\r\n declarations: [NgxElementComponent]\r\n})\r\nexport class NgxElementModule {\r\n\r\n constructor(private injector: Injector) {\r\n const ngxElement = createCustomElement(NgxElementComponent, { injector });\r\n customElements.define('ngx-element', ngxElement);\r\n }\r\n\r\n static forRoot(modulePaths: any[]): ModuleWithProviders<NgxElementModule> {\r\n return {\r\n ngModule: NgxElementModule,\r\n providers: [\r\n {\r\n provide: LAZY_CMPS_PATH_TOKEN,\r\n useValue: modulePaths\r\n }\r\n ]\r\n };\r\n }\r\n\r\n ngDoBootstrap() {}\r\n}\r\n","/*\r\n * Public API Surface of ngx-element\r\n */\r\n\r\nexport * from './lib/ngx-element.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxElementService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zdigambar/ngx-element",
3
- "version": "9.0.0",
3
+ "version": "10.0.0",
4
4
  "description": "A simple way to lazy load Angular components in non-angular projects",
5
5
  "author": "Digambar Zurkale",
6
6
  "repository": {
@@ -18,15 +18,17 @@
18
18
  "AEM with non angular 10,angular 11,angular 12,angular 13,angular 14,angular 15,angular 16",
19
19
  "angular 17",
20
20
  "angular 18",
21
+ "angular 19",
22
+ "angular 20",
21
23
  "web components",
22
24
  "lazy loading",
23
25
  "non-angular"
24
26
  ],
25
27
  "licence": "MIT",
26
28
  "peerDependencies": {
27
- "@angular/common": "^18.2.13",
28
- "@angular/core": "^18.2.13",
29
- "@angular/elements": "^18.2.13"
29
+ "@angular/common": "^19.2.18",
30
+ "@angular/core": "^19.2.18",
31
+ "@angular/elements": "^19.2.18"
30
32
  },
31
33
  "module": "fesm2022/zdigambar-ngx-element.mjs",
32
34
  "typings": "index.d.ts",
@@ -36,8 +38,6 @@
36
38
  },
37
39
  ".": {
38
40
  "types": "./index.d.ts",
39
- "esm2022": "./esm2022/zdigambar-ngx-element.mjs",
40
- "esm": "./esm2022/zdigambar-ngx-element.mjs",
41
41
  "default": "./fesm2022/zdigambar-ngx-element.mjs"
42
42
  }
43
43
  },
@@ -45,4 +45,4 @@
45
45
  "dependencies": {
46
46
  "tslib": "^2.3.0"
47
47
  }
48
- }
48
+ }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1jb21wb25lbnQtbG9hZGVkLWV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWVsZW1lbnQvc3JjL2xpYi9sYXp5LWNvbXBvbmVudC1sb2FkZWQtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGF6eUNtcExvYWRlZEV2ZW50IHtcclxuICAgIHNlbGVjdG9yOiBzdHJpbmc7XHJcbiAgICBjb21wb25lbnRDbGFzczogVHlwZTxhbnk+O1xyXG59XHJcbiJdfQ==
@@ -1,98 +0,0 @@
1
- import { Component, Input, ViewChild, ViewContainerRef, Injector, } from '@angular/core';
2
- import { merge } from 'rxjs';
3
- import { map } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./ngx-element.service";
6
- export class NgxElementComponent {
7
- constructor(ngxElementService, elementRef) {
8
- this.ngxElementService = ngxElementService;
9
- this.elementRef = elementRef;
10
- }
11
- setProxiedOutputs(factory) {
12
- const eventEmitters = factory.outputs.map(({ propName, templateName }) => {
13
- const emitter = this.componentRef.instance[propName];
14
- return emitter.pipe(map((value) => ({ name: templateName, value })));
15
- });
16
- const outputEvents = merge(...eventEmitters);
17
- this.ngElementEventsSubscription = outputEvents.subscribe((subscription) => {
18
- const customEvent = document.createEvent('CustomEvent');
19
- customEvent.initCustomEvent(subscription.name, false, false, subscription.value);
20
- this.elementRef.nativeElement.dispatchEvent(customEvent);
21
- });
22
- }
23
- ngOnInit() {
24
- this.ngxElementService.getComponentToLoad(this.selector).subscribe((event) => {
25
- this.componentToLoad = event.componentClass;
26
- const attributes = this.getElementAttributes();
27
- this.createComponent(attributes);
28
- });
29
- }
30
- createComponent(attributes) {
31
- this.container.clear();
32
- const factory = this.ngxElementService.getComponentFactoryResolver(this.componentToLoad).resolveComponentFactory(this.componentToLoad);
33
- this.injector = Injector.create({
34
- providers: [{ provide: this.componentToLoad, useValue: this.componentToLoad }],
35
- parent: this.ngxElementService.getInjector(this.componentToLoad),
36
- });
37
- this.componentRef = this.container.createComponent(factory, 0, this.injector);
38
- this.setAttributes(attributes);
39
- this.listenToAttributeChanges();
40
- this.setProxiedOutputs(factory);
41
- }
42
- setAttributes(attributes) {
43
- attributes.forEach((attr) => {
44
- this.componentRef.instance[attr.name] = attr.value;
45
- });
46
- }
47
- getElementAttributes() {
48
- const attrs = this.elementRef.nativeElement.attributes;
49
- const attributes = [];
50
- for (let attr, i = 0; i < attrs.length; i++) {
51
- attr = attrs[i];
52
- if (attr.nodeName.match('^data-')) {
53
- attributes.push({
54
- name: this.camelCaseAttribute(attr.nodeName),
55
- value: attr.nodeValue,
56
- });
57
- }
58
- }
59
- return attributes;
60
- }
61
- camelCaseAttribute(attribute) {
62
- const attr = attribute.replace('data-', '');
63
- const chunks = attr.split('-');
64
- if (chunks.length > 1) {
65
- return chunks[0] + chunks.slice(1).map((chunk) => chunk.replace(/^\w/, (c) => c.toUpperCase())).join('');
66
- }
67
- return attr;
68
- }
69
- listenToAttributeChanges() {
70
- const observer = new MutationObserver((mutations) => {
71
- mutations.forEach((mutation) => {
72
- if (mutation.type === 'attributes') {
73
- const attributes = this.getElementAttributes();
74
- this.setAttributes(attributes);
75
- }
76
- });
77
- });
78
- observer.observe(this.elementRef.nativeElement, {
79
- attributes: true,
80
- });
81
- }
82
- ngOnDestroy() {
83
- this.componentRef.destroy();
84
- this.ngElementEventsSubscription.unsubscribe();
85
- }
86
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxElementComponent, deps: [{ token: i1.NgxElementService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
87
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NgxElementComponent, selector: "lib-ngx-element", inputs: { selector: "selector" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: `<ng-template #container></ng-template>`, isInline: true }); }
88
- }
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxElementComponent, decorators: [{
90
- type: Component,
91
- args: [{ selector: 'lib-ngx-element', template: `<ng-template #container></ng-template>` }]
92
- }], ctorParameters: () => [{ type: i1.NgxElementService }, { type: i0.ElementRef }], propDecorators: { selector: [{
93
- type: Input
94
- }], container: [{
95
- type: ViewChild,
96
- args: ['container', { read: ViewContainerRef }]
97
- }] } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWVsZW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWVsZW1lbnQvc3JjL2xpYi9uZ3gtZWxlbWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEVBQ0wsU0FBUyxFQUNULGdCQUFnQixFQUloQixRQUFRLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEtBQUssRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFPckMsTUFBTSxPQUFPLG1CQUFtQjtJQVE5QixZQUNVLGlCQUFvQyxFQUNwQyxVQUFzQjtRQUR0QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGVBQVUsR0FBVixVQUFVLENBQVk7SUFDN0IsQ0FBQztJQUVJLGlCQUFpQixDQUFDLE9BQThCO1FBQ3RELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtZQUN2RSxNQUFNLE9BQU8sR0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQWdCLENBQUMsUUFBUSxDQUFzQixDQUFDO1lBQ25GLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLDJCQUEyQixHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUs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QyxPQUFPLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDakQsQ0FBQzsrR0E5RlUsbUJBQW1CO21HQUFuQixtQkFBbUIsNEtBR0UsZ0JBQWdCLDZCQU50Qyx3Q0FBd0M7OzRGQUd2QyxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCLFlBQ2pCLHdDQUF3QzsrR0FLekMsUUFBUTtzQkFBaEIsS0FBSztnQkFDOEMsU0FBUztzQkFBNUQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBDb21wb25lbnRGYWN0b3J5LFxyXG4gIENvbXBvbmVudFJlZixcclxuICBPbkluaXQsXHJcbiAgSW5wdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbiAgT25EZXN0cm95LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBFbGVtZW50UmVmLFxyXG4gIEluamVjdG9yLFxyXG4gIFR5cGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5neEVsZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtZWxlbWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbWVyZ2UsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1uZ3gtZWxlbWVudCcsXHJcbiAgdGVtcGxhdGU6IGA8bmctdGVtcGxhdGUgI2NvbnRhaW5lcj48L25nLXRlbXBsYXRlPmAsXHJcbiAgc3R5bGVzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5neEVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBuZ0VsZW1lbnRFdmVudHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBASW5wdXQoKSBzZWxlY3Rvcjogc3RyaW5nO1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBjb250YWluZXI7XHJcbiAgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PjtcclxuICBjb21wb25lbnRUb0xvYWQ6IFR5cGU8YW55PjtcclxuICBpbmplY3RvcjogSW5qZWN0b3I7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBuZ3hFbGVtZW50U2VydmljZTogTmd4RWxlbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcclxuICApIHt9XHJcblxyXG4gIHByaXZhdGUgc2V0UHJveGllZE91dHB1dHMoZmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxhbnk+KTogdm9pZCB7XHJcbiAgICBjb25zdCBldmVudEVtaXR0ZXJzID0gZmFjdG9yeS5vdXRwdXRzLm1hcCgoeyBwcm9wTmFtZSwgdGVtcGxhdGVOYW1lIH0pID0+IHtcclxuICAgICAgY29uc3QgZW1pdHRlciA9ICh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBhbnkpW3Byb3BOYW1lXSBhcyBFdmVudEVtaXR0ZXI8YW55PjtcclxuICAgICAgcmV0dXJuIGVtaXR0ZXIucGlwZShtYXAoKHZhbHVlOiBhbnkpID0+ICh7IG5hbWU6IHRlbXBsYXRlTmFtZSwgdmFsdWUgfSkpKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgb3V0cHV0RXZlbnRzID0gbWVyZ2UoLi4uZXZlbnRFbWl0dGVycyk7XHJcbiAgICB0aGlzLm5nRWxlbWVudEV2ZW50c1N1YnNjcmlwdGlvbiA9IG91dHB1dEV2ZW50cy5zdWJzY3JpYmUoKHN1YnNjcmlwdGlvbikgPT4ge1xyXG4gICAgICBjb25zdCBjdXN0b21FdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpO1xyXG4gICAgICBjdXN0b21FdmVudC5pbml0Q3VzdG9tRXZlbnQoc3Vic2NyaXB0aW9uLm5hbWUsIGZhbHNlLCBmYWxzZSwgc3Vic2NyaXB0aW9uLnZhbHVlKTtcclxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5uZ3hFbGVtZW50U2VydmljZS5nZXRDb21wb25lbnRUb0xvYWQodGhpcy5zZWxlY3Rvcikuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFRvTG9hZCA9IGV2ZW50LmNvbXBvbmVudENsYXNzO1xyXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5nZXRFbGVtZW50QXR0cmlidXRlcygpO1xyXG4gICAgICB0aGlzLmNyZWF0ZUNvbXBvbmVudChhdHRyaWJ1dGVzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlQ29tcG9uZW50KGF0dHJpYnV0ZXMpIHtcclxuICAgIHRoaXMuY29udGFpbmVyLmNsZWFyKCk7XHJcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5uZ3hFbGVtZW50U2VydmljZS5nZXRDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIodGhpcy5jb21wb25lbnRUb0xvYWQpLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHRoaXMuY29tcG9uZW50VG9Mb2FkKTtcclxuICAgIHRoaXMuaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xyXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IHRoaXMuY29tcG9uZW50VG9Mb2FkLCB1c2VWYWx1ZTogdGhpcy5jb21wb25lbnRUb0xvYWQgfV0sXHJcbiAgICAgIHBhcmVudDogdGhpcy5uZ3hFbGVtZW50U2VydmljZS5nZXRJbmplY3Rvcih0aGlzLmNvbXBvbmVudFRvTG9hZCksXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnksIDAsIHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgdGhpcy5zZXRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpO1xyXG4gICAgdGhpcy5saXN0ZW5Ub0F0dHJpYnV0ZUNoYW5nZXMoKTtcclxuICAgIHRoaXMuc2V0UHJveGllZE91dHB1dHMoZmFjdG9yeSk7XHJcbiAgfVxyXG5cclxuICBzZXRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpIHtcclxuICAgIGF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cikgPT4ge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZVthdHRyLm5hbWVdID0gYXR0ci52YWx1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWxlbWVudEF0dHJpYnV0ZXMoKSB7XHJcbiAgICBjb25zdCBhdHRycyA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmF0dHJpYnV0ZXM7XHJcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gW107XHJcbiAgICBmb3IgKGxldCBhdHRyLCBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGF0dHIgPSBhdHRyc1tpXTtcclxuICAgICAgaWYgKGF0dHIubm9kZU5hbWUubWF0Y2goJ15kYXRhLScpKSB7XHJcbiAgICAgICAgYXR0cmlidXRlcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRoaXMuY2FtZWxDYXNlQXR0cmlidXRlKGF0dHIubm9kZU5hbWUpLFxyXG4gICAgICAgICAgdmFsdWU6IGF0dHIubm9kZVZhbHVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXR0cmlidXRlcztcclxuICB9XHJcblxyXG4gIGNhbWVsQ2FzZUF0dHJpYnV0ZShhdHRyaWJ1dGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgYXR0ciA9IGF0dHJpYnV0ZS5yZXBsYWNlKCdkYXRhLScsICcnKTtcclxuICAgIGNvbnN0IGNodW5rcyA9IGF0dHIuc3BsaXQoJy0nKTtcclxuICAgIGlmIChjaHVua3MubGVuZ3RoID4gMSkge1xyXG4gICAgICByZXR1cm4gY2h1bmtzWzBdICsgY2h1bmtzLnNsaWNlKDEpLm1hcCgoY2h1bmspID0+IGNodW5rLnJlcGxhY2UoL15cXHcvLCAoYykgPT4gYy50b1VwcGVyQ2FzZSgpKSkuam9pbignJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXR0cjtcclxuICB9XHJcblxyXG4gIGxpc3RlblRvQXR0cmlidXRlQ2hhbmdlcygpIHtcclxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xyXG4gICAgICBtdXRhdGlvbnMuZm9yRWFjaCgobXV0YXRpb24pID0+IHtcclxuICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2F0dHJpYnV0ZXMnKSB7XHJcbiAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5nZXRFbGVtZW50QXR0cmlidXRlcygpO1xyXG4gICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHtcclxuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XHJcbiAgICB0aGlzLm5nRWxlbWVudEV2ZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,34 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { createCustomElement } from '@angular/elements';
3
- import { NgxElementComponent } from './ngx-element.component';
4
- import { LAZY_CMPS_PATH_TOKEN } from './tokens';
5
- import * as i0 from "@angular/core";
6
- export class NgxElementModule {
7
- constructor(injector) {
8
- this.injector = injector;
9
- const ngxElement = createCustomElement(NgxElementComponent, { injector });
10
- customElements.define('ngx-element', ngxElement);
11
- }
12
- static forRoot(modulePaths) {
13
- return {
14
- ngModule: NgxElementModule,
15
- providers: [
16
- {
17
- provide: LAZY_CMPS_PATH_TOKEN,
18
- useValue: modulePaths
19
- }
20
- ]
21
- };
22
- }
23
- ngDoBootstrap() { }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxElementModule, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
25
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NgxElementModule, declarations: [NgxElementComponent] }); }
26
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxElementModule }); }
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxElementModule, decorators: [{
29
- type: NgModule,
30
- args: [{
31
- declarations: [NgxElementComponent]
32
- }]
33
- }], ctorParameters: () => [{ type: i0.Injector }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWVsZW1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWVsZW1lbnQvc3JjL2xpYi9uZ3gtZWxlbWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUtoRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDcEMsTUFBTSxVQUFVLEdBQUcsbUJBQW1CLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQWtCO1FBQy9CLE9BQU87WUFDTCxRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsb0JBQW9CO29CQUM3QixRQUFRLEVBQUUsV0FBVztpQkFDdEI7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYSxLQUFJLENBQUM7K0dBbkJQLGdCQUFnQjtnSEFBaEIsZ0JBQWdCLGlCQUZWLG1CQUFtQjtnSEFFekIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUg1QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBJbmplY3RvciwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjcmVhdGVDdXN0b21FbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvZWxlbWVudHMnO1xyXG5pbXBvcnQgeyBOZ3hFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtZWxlbWVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMQVpZX0NNUFNfUEFUSF9UT0tFTiB9IGZyb20gJy4vdG9rZW5zJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IFtOZ3hFbGVtZW50Q29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4RWxlbWVudE1vZHVsZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICBjb25zdCBuZ3hFbGVtZW50ID0gY3JlYXRlQ3VzdG9tRWxlbWVudChOZ3hFbGVtZW50Q29tcG9uZW50LCB7IGluamVjdG9yIH0pO1xyXG4gICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCduZ3gtZWxlbWVudCcsIG5neEVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZvclJvb3QobW9kdWxlUGF0aHM6IGFueVtdKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ3hFbGVtZW50TW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogTmd4RWxlbWVudE1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogTEFaWV9DTVBTX1BBVEhfVE9LRU4sXHJcbiAgICAgICAgICB1c2VWYWx1ZTogbW9kdWxlUGF0aHNcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBuZ0RvQm9vdHN0cmFwKCkge31cclxufVxyXG4iXX0=
@@ -1,135 +0,0 @@
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
@@ -1,4 +0,0 @@
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==
@@ -1,5 +0,0 @@
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 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemRpZ2FtYmFyLW5neC1lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvbmd4LWVsZW1lbnQvc3JjL3pkaWdhbWJhci1uZ3gtZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19