@zdigambar/ngx-element 9.0.0 → 11.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,8 @@
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 |
13
15
 
14
16
  # NgxElement
15
17
 
@@ -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: "20.3.16", 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: "20.3.16", 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: "20.3.16", 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: "20.3.16", 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: "20.3.16", 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: "20.3.16", 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: "20.3.16", ngImport: i0, type: NgxElementModule, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
253
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: NgxElementModule, declarations: [NgxElementComponent] }); }
254
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", 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: "20.3.16", 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/index.d.ts CHANGED
@@ -1,5 +1,75 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@zdigambar/ngx-element" />
5
- export * from './public-api';
1
+ import * as i0 from '@angular/core';
2
+ import { Type, Injector, ComponentFactoryResolver, Compiler, OnInit, OnDestroy, ComponentRef, ElementRef, ModuleWithProviders } from '@angular/core';
3
+ import { LoadChildrenCallback } from '@angular/router';
4
+ import { Observable } from 'rxjs';
5
+
6
+ interface LazyComponentDef {
7
+ selector: string;
8
+ loadChildren: LoadChildrenCallback;
9
+ }
10
+
11
+ interface LazyCmpLoadedEvent {
12
+ selector: string;
13
+ componentClass: Type<any>;
14
+ }
15
+
16
+ declare class NgxElementService {
17
+ private compiler;
18
+ private injector;
19
+ private componentsToLoad;
20
+ private loadedComponents;
21
+ private elementsLoading;
22
+ injectors: Map<Type<any>, Injector>;
23
+ componentFactoryResolvers: Map<Type<any>, ComponentFactoryResolver>;
24
+ constructor(modulePaths: {
25
+ selector: string;
26
+ }[], compiler: Compiler, injector: Injector);
27
+ receiveContext(component: Type<any>, injector: Injector): void;
28
+ getInjector(component: Type<any>): Injector;
29
+ getComponentFactoryResolver(component: Type<any>): ComponentFactoryResolver;
30
+ getComponentsToLoad(): Map<string, LazyComponentDef>;
31
+ getComponentToLoad(selector: string): Observable<LazyCmpLoadedEvent>;
32
+ /**
33
+ * Allows to lazy load a component given its selector.
34
+ * If the component selector has been registered, it's according module
35
+ * will be fetched lazily
36
+ * @param componentTag selector of the component to load
37
+ */
38
+ loadComponent(componentSelector: string): Promise<LazyCmpLoadedEvent>;
39
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxElementService, never>;
40
+ static ɵprov: i0.ɵɵInjectableDeclaration<NgxElementService>;
41
+ }
42
+
43
+ declare class NgxElementComponent implements OnInit, OnDestroy {
44
+ private ngxElementService;
45
+ private elementRef;
46
+ private ngElementEventsSubscription;
47
+ selector: string;
48
+ container: any;
49
+ componentRef: ComponentRef<any>;
50
+ componentToLoad: Type<any>;
51
+ injector: Injector;
52
+ constructor(ngxElementService: NgxElementService, elementRef: ElementRef);
53
+ private setProxiedOutputs;
54
+ ngOnInit(): void;
55
+ createComponent(attributes: any): void;
56
+ setAttributes(attributes: any): void;
57
+ getElementAttributes(): any[];
58
+ camelCaseAttribute(attribute: string): string;
59
+ listenToAttributeChanges(): void;
60
+ ngOnDestroy(): void;
61
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxElementComponent, never>;
62
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxElementComponent, "lib-ngx-element", never, { "selector": { "alias": "selector"; "required": false; }; }, {}, never, never, false, never>;
63
+ }
64
+
65
+ declare class NgxElementModule {
66
+ private injector;
67
+ constructor(injector: Injector);
68
+ static forRoot(modulePaths: any[]): ModuleWithProviders<NgxElementModule>;
69
+ ngDoBootstrap(): void;
70
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxElementModule, never>;
71
+ static ɵmod: i0.ɵɵNgModuleDeclaration<NgxElementModule, [typeof NgxElementComponent], never, never>;
72
+ static ɵinj: i0.ɵɵInjectorDeclaration<NgxElementModule>;
73
+ }
74
+
75
+ export { NgxElementModule };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zdigambar/ngx-element",
3
- "version": "9.0.0",
3
+ "version": "11.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": "^20.3.16",
30
+ "@angular/core": "^20.3.16",
31
+ "@angular/elements": "^20.3.16"
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