@worktile/planet 19.0.0-next.0 → 19.0.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/assets-loader.d.ts +9 -4
  3. package/assets-loader.d.ts.map +1 -1
  4. package/esm2022/application/ng-planet-application-ref.mjs +116 -0
  5. package/esm2022/application/planet-application-loader.mjs +459 -0
  6. package/esm2022/application/planet-application-ref.mjs +2 -0
  7. package/esm2022/application/planet-application.service.mjs +86 -0
  8. package/esm2022/application/portal-application.mjs +25 -0
  9. package/esm2022/assets-loader.mjs +332 -0
  10. package/esm2022/component/planet-component-loader.mjs +213 -0
  11. package/esm2022/component/planet-component-outlet.mjs +72 -0
  12. package/esm2022/component/planet-component-types.mjs +3 -0
  13. package/esm2022/component/plant-component.config.mjs +7 -0
  14. package/esm2022/debug.mjs +33 -0
  15. package/esm2022/empty/empty.component.mjs +17 -0
  16. package/esm2022/global-event-dispatcher.mjs +70 -0
  17. package/esm2022/global-planet.mjs +63 -0
  18. package/esm2022/helpers.mjs +187 -0
  19. package/esm2022/inner-types.mjs +2 -0
  20. package/esm2022/module.mjs +33 -0
  21. package/esm2022/planet.class.mjs +9 -0
  22. package/esm2022/planet.mjs +97 -0
  23. package/esm2022/public-api.mjs +19 -0
  24. package/esm2022/router/route-redirect.mjs +63 -0
  25. package/esm2022/sandbox/constants.mjs +7 -0
  26. package/esm2022/sandbox/exec.mjs +15 -0
  27. package/esm2022/sandbox/index.mjs +20 -0
  28. package/esm2022/sandbox/proxy/patches/document.mjs +12 -0
  29. package/esm2022/sandbox/proxy/patches/eventListener.mjs +41 -0
  30. package/esm2022/sandbox/proxy/patches/index.mjs +11 -0
  31. package/esm2022/sandbox/proxy/patches/storage.mjs +40 -0
  32. package/esm2022/sandbox/proxy/patches/timer.mjs +43 -0
  33. package/esm2022/sandbox/proxy/proxies/common.mjs +132 -0
  34. package/esm2022/sandbox/proxy/proxies/document.mjs +126 -0
  35. package/esm2022/sandbox/proxy/proxies/window.mjs +158 -0
  36. package/esm2022/sandbox/proxy/proxy-sandbox.mjs +49 -0
  37. package/esm2022/sandbox/proxy/types.mjs +2 -0
  38. package/esm2022/sandbox/sandbox.mjs +7 -0
  39. package/esm2022/sandbox/snapshot/snapshot-sandbox.mjs +12 -0
  40. package/esm2022/sandbox/types.mjs +2 -0
  41. package/esm2022/worktile-planet.mjs +5 -0
  42. package/fesm2022/worktile-planet.mjs +81 -51
  43. package/fesm2022/worktile-planet.mjs.map +1 -1
  44. package/helpers.d.ts +1 -1
  45. package/helpers.d.ts.map +1 -1
  46. package/inner-types.d.ts +6 -3
  47. package/inner-types.d.ts.map +1 -1
  48. package/package.json +3 -1
@@ -0,0 +1,213 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { ApplicationRef, Inject, Injectable, Injector, NgModuleRef, NgZone, TemplateRef, createComponent, reflectComponentType } from '@angular/core';
3
+ import { of, timer } from 'rxjs';
4
+ import { delayWhen, map, shareReplay } from 'rxjs/operators';
5
+ import { NgPlanetApplicationRef } from '../application/ng-planet-application-ref';
6
+ import { getApplicationLoader, getApplicationService, getBootstrappedPlanetApplicationRef, getPlanetApplicationRef, globalPlanet } from '../global-planet';
7
+ import { coerceArray } from '../helpers';
8
+ import { PlanetComponentRef } from './planet-component-types';
9
+ import * as i0 from "@angular/core";
10
+ const componentWrapperClass = 'planet-component-wrapper';
11
+ function isComponentType(component) {
12
+ return typeof component === 'function' && component.constructor === Function;
13
+ }
14
+ export class PlanetComponentLoader {
15
+ get applicationLoader() {
16
+ return getApplicationLoader();
17
+ }
18
+ get applicationService() {
19
+ return getApplicationService();
20
+ }
21
+ constructor(applicationRef, ngModuleRef, ngZone, document) {
22
+ this.applicationRef = applicationRef;
23
+ this.ngModuleRef = ngModuleRef;
24
+ this.ngZone = ngZone;
25
+ this.document = document;
26
+ }
27
+ getPlantAppRef(name) {
28
+ const plantAppRef = getBootstrappedPlanetApplicationRef(name);
29
+ if (plantAppRef) {
30
+ return of(plantAppRef);
31
+ }
32
+ else {
33
+ const app = this.applicationService.getAppByName(name);
34
+ return this.applicationLoader.preload(app, true).pipe(map(() => {
35
+ return getPlanetApplicationRef(name);
36
+ }));
37
+ }
38
+ }
39
+ createInjector(parentInjector, componentRef) {
40
+ return Injector.create({
41
+ providers: [
42
+ {
43
+ provide: PlanetComponentRef,
44
+ useValue: componentRef
45
+ }
46
+ ],
47
+ parent: parentInjector
48
+ });
49
+ }
50
+ getContainerElement(config) {
51
+ if (!config.container) {
52
+ throw new Error(`config 'container' cannot be null`);
53
+ }
54
+ else {
55
+ if (config.container.nativeElement) {
56
+ return config.container.nativeElement;
57
+ }
58
+ else {
59
+ return config.container;
60
+ }
61
+ }
62
+ }
63
+ insertComponentRootNodeToContainer(container, componentRootNode, hostClass) {
64
+ const subApp = this.applicationService.getAppByName(this.ngModuleRef.instance.appName);
65
+ componentRootNode.classList.add(componentWrapperClass);
66
+ componentRootNode.setAttribute('planet-inline', '');
67
+ if (hostClass) {
68
+ componentRootNode.classList.add(hostClass);
69
+ }
70
+ if (subApp && subApp.stylePrefix) {
71
+ componentRootNode.classList.add(subApp.stylePrefix);
72
+ }
73
+ // container 是注释则在前方插入,否则在元素内部插入
74
+ if (container.nodeType === 8) {
75
+ container.parentElement.insertBefore(componentRootNode, container);
76
+ }
77
+ else {
78
+ container.appendChild(componentRootNode);
79
+ }
80
+ }
81
+ attachComponent(component, environmentInjector, config) {
82
+ const plantComponentRef = new PlanetComponentRef();
83
+ const appRef = this.applicationRef;
84
+ const injector = this.createInjector(environmentInjector, plantComponentRef);
85
+ const container = this.getContainerElement(config);
86
+ const componentRef = createComponent(component, {
87
+ environmentInjector: environmentInjector,
88
+ elementInjector: injector,
89
+ projectableNodes: config.projectableNodes
90
+ });
91
+ appRef.attachView(componentRef.hostView);
92
+ const componentRootNode = this.getComponentRootNode(componentRef);
93
+ this.insertComponentRootNodeToContainer(container, componentRootNode, config.hostClass || config.wrapperClass);
94
+ if (config.initialState) {
95
+ Object.assign(componentRef.instance, config.initialState);
96
+ }
97
+ plantComponentRef.componentInstance = componentRef.instance;
98
+ plantComponentRef.componentRef = componentRef;
99
+ plantComponentRef.hostElement = componentRootNode;
100
+ plantComponentRef.dispose = () => {
101
+ if (appRef.viewCount > 0) {
102
+ appRef.detachView(componentRef.hostView);
103
+ }
104
+ componentRef?.destroy();
105
+ componentRootNode.remove();
106
+ };
107
+ return plantComponentRef;
108
+ }
109
+ /** Gets the root HTMLElement for an instantiated component. */
110
+ getComponentRootNode(componentRef) {
111
+ return componentRef.hostView.rootNodes[0];
112
+ }
113
+ registerComponentFactory(componentOrComponents) {
114
+ const app = this.ngModuleRef.instance.appName;
115
+ let appRef$;
116
+ if (app) {
117
+ appRef$ = this.getPlantAppRef(app);
118
+ }
119
+ else {
120
+ appRef$ = of(globalPlanet.portalApplication);
121
+ }
122
+ appRef$.subscribe(appRef => {
123
+ appRef.registerComponentFactory((componentName, config) => {
124
+ const components = coerceArray(componentOrComponents);
125
+ const planetComponent = components.find(item => {
126
+ return isComponentType(item)
127
+ ? reflectComponentType(item).selector.includes(componentName)
128
+ : item.name === componentName;
129
+ });
130
+ if (planetComponent) {
131
+ return this.ngZone.run(() => {
132
+ const componentRef = this.attachComponent(isComponentType(planetComponent) ? planetComponent : planetComponent.component, appRef instanceof NgPlanetApplicationRef ? appRef.appModuleRef.injector : this.ngModuleRef.injector, config);
133
+ return componentRef;
134
+ });
135
+ }
136
+ else {
137
+ throw Error(`unregistered component ${componentName} in app ${app}`);
138
+ }
139
+ });
140
+ });
141
+ }
142
+ register(components, immediate) {
143
+ if (immediate) {
144
+ this.registerComponentFactory(components);
145
+ }
146
+ else {
147
+ setTimeout(() => {
148
+ this.registerComponentFactory(components);
149
+ });
150
+ }
151
+ }
152
+ load(app, componentName, config) {
153
+ let appRef$;
154
+ if (app === globalPlanet.portalApplication.name) {
155
+ appRef$ = of(globalPlanet.portalApplication);
156
+ }
157
+ else {
158
+ appRef$ = this.getPlantAppRef(app).pipe(delayWhen((appRef) => {
159
+ if (appRef.getComponentFactory()) {
160
+ return of('');
161
+ }
162
+ else {
163
+ // Because register use 'setTimeout',so timer 20
164
+ return timer(20);
165
+ }
166
+ }));
167
+ }
168
+ const result = appRef$.pipe(map(appRef => {
169
+ const componentFactory = appRef.getComponentFactory();
170
+ if (componentFactory) {
171
+ const projectableEmbeddedViewRefs = [];
172
+ const projectableNodes = (config.projectableNodes || []).map(node => {
173
+ if (node instanceof TemplateRef) {
174
+ const viewRef = node.createEmbeddedView({});
175
+ projectableEmbeddedViewRefs.push(viewRef);
176
+ this.applicationRef.attachView(viewRef);
177
+ return viewRef.rootNodes;
178
+ }
179
+ else {
180
+ return node;
181
+ }
182
+ });
183
+ const compRef = componentFactory(componentName, { ...config, projectableNodes: projectableNodes });
184
+ const dispose = compRef.dispose.bind(compRef);
185
+ compRef.dispose = () => {
186
+ projectableEmbeddedViewRefs.forEach(viewRef => {
187
+ this.applicationRef.detachView(viewRef);
188
+ viewRef.destroy();
189
+ });
190
+ dispose();
191
+ };
192
+ return compRef;
193
+ }
194
+ else {
195
+ throw new Error(`${app}'s component(${componentName}) is not registered`);
196
+ }
197
+ }), shareReplay());
198
+ result.subscribe();
199
+ return result;
200
+ }
201
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PlanetComponentLoader, deps: [{ token: i0.ApplicationRef }, { token: i0.NgModuleRef }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
202
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PlanetComponentLoader, providedIn: 'root' }); }
203
+ }
204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PlanetComponentLoader, decorators: [{
205
+ type: Injectable,
206
+ args: [{
207
+ providedIn: 'root'
208
+ }]
209
+ }], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i0.NgModuleRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
210
+ type: Inject,
211
+ args: [DOCUMENT]
212
+ }] }] });
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbmV0LWNvbXBvbmVudC1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXQvc3JjL2NvbXBvbmVudC9wbGFuZXQtY29tcG9uZW50LWxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNILGNBQWMsRUFLZCxNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsRUFDUixXQUFXLEVBQ1gsTUFBTSxFQUNOLFdBQVcsRUFFWCxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3ZCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRWxGLE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLG1DQUFtQyxFQUNuQyx1QkFBdUIsRUFDdkIsWUFBWSxFQUNmLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFHOUQsTUFBTSxxQkFBcUIsR0FBRywwQkFBMEIsQ0FBQztBQUV6RCxTQUFTLGVBQWUsQ0FBSSxTQUE2QjtJQUNyRCxPQUFPLE9BQU8sU0FBUyxLQUFLLFVBQVUsSUFBSSxTQUFTLENBQUMsV0FBVyxLQUFLLFFBQVEsQ0FBQztBQUNqRixDQUFDO0FBWUQsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixJQUFZLGlCQUFpQjtRQUN6QixPQUFPLG9CQUFvQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVE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Q0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBZSxhQUFhLEVBQUUsRUFBRSxHQUFHLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7Z0JBQ2pILE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM5QyxPQUFPLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRTtvQkFDbkIsMkJBQTJCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDeEMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUN0QixDQUFDLENBQUMsQ0FBQztvQkFDSCxPQUFPLEVBQUUsQ0FBQztnQkFDZCxDQUFDLENBQUM7Z0JBQ0YsT0FBTyxPQUFPLENBQUM7WUFDbkIsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxHQUFHLGdCQUFnQixhQUFhLHFCQUFxQixDQUFDLENBQUM7WUFDOUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUNGLFdBQVcsRUFBRSxDQUNoQixDQUFDO1FBQ0YsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7OEdBaE5RLHFCQUFxQixpR0FhbEIsUUFBUTtrSEFiWCxxQkFBcUIsY0FGbEIsTUFBTTs7MkZBRVQscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBY1EsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBcHBsaWNhdGlvblJlZixcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbWJlZGRlZFZpZXdSZWYsXG4gICAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0YWJsZSxcbiAgICBJbmplY3RvcixcbiAgICBOZ01vZHVsZVJlZixcbiAgICBOZ1pvbmUsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVHlwZSxcbiAgICBjcmVhdGVDb21wb25lbnQsXG4gICAgcmVmbGVjdENvbXBvbmVudFR5cGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGFuZXRQb3J0YWxBcHBsaWNhdGlvbiB9IGZyb20gJ25neC1wbGFuZXQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheVdoZW4sIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOZ1BsYW5ldEFwcGxpY2F0aW9uUmVmIH0gZnJvbSAnLi4vYXBwbGljYXRpb24vbmctcGxhbmV0LWFwcGxpY2F0aW9uLXJlZic7XG5pbXBvcnQgeyBQbGFuZXRBcHBsaWNhdGlvblJlZiB9IGZyb20gJy4uL2FwcGxpY2F0aW9uL3BsYW5ldC1hcHBsaWNhdGlvbi1yZWYnO1xuaW1wb3J0IHtcbiAgICBnZXRBcHBsaWNhdGlvbkxvYWRlcixcbiAgICBnZXRBcHBsaWNhdGlvblNlcnZpY2UsXG4gICAgZ2V0Qm9vdHN0cmFwcGVkUGxhbmV0QXBwbGljYXRpb25SZWYsXG4gICAgZ2V0UGxhbmV0QXBwbGljYXRpb25SZWYsXG4gICAgZ2xvYmFsUGxhbmV0XG59IGZyb20gJy4uL2dsb2JhbC1wbGFuZXQnO1xuaW1wb3J0IHsgY29lcmNlQXJyYXkgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IFBsYW5ldENvbXBvbmVudFJlZiB9IGZyb20gJy4vcGxhbmV0LWNvbXBvbmVudC10eXBlcyc7XG5pbXBvcnQgeyBQbGFudENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4vcGxhbnQtY29tcG9uZW50LmNvbmZpZyc7XG5cbmNvbnN0IGNvbXBvbmVudFdyYXBwZXJDbGFzcyA9ICdwbGFuZXQtY29tcG9uZW50LXdyYXBwZXInO1xuXG5mdW5jdGlvbiBpc0NvbXBvbmVudFR5cGU8VD4oY29tcG9uZW50OiBQbGFuZXRDb21wb25lbnQ8VD4pOiBjb21wb25lbnQgaXMgVHlwZTxUPiB7XG4gICAgcmV0dXJuIHR5cGVvZiBjb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgY29tcG9uZW50LmNvbnN0cnVjdG9yID09PSBGdW5jdGlvbjtcbn1cblxuZXhwb3J0IHR5cGUgUGxhbmV0Q29tcG9uZW50PFQgPSB1bmtub3duPiA9XG4gICAgfCB7XG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgIGNvbXBvbmVudDogVHlwZTxUPjtcbiAgICAgIH1cbiAgICB8IFR5cGU8VD47XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGxhbmV0Q29tcG9uZW50TG9hZGVyIHtcbiAgICBwcml2YXRlIGdldCBhcHBsaWNhdGlvbkxvYWRlcigpIHtcbiAgICAgICAgcmV0dXJuIGdldEFwcGxpY2F0aW9uTG9hZGVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgYXBwbGljYXRpb25TZXJ2aWNlKCkge1xuICAgICAgICByZXR1cm4gZ2V0QXBwbGljYXRpb25TZXJ2aWNlKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwcml2YXRlIG5nTW9kdWxlUmVmOiBOZ01vZHVsZVJlZjxhbnk+LFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnlcbiAgICApIHt9XG5cbiAgICBwcml2YXRlIGdldFBsYW50QXBwUmVmKG5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8UGxhbmV0QXBwbGljYXRpb25SZWY+IHtcbiAgICAgICAgY29uc3QgcGxhbnRBcHBSZWYgPSBnZXRCb290c3RyYXBwZWRQbGFuZXRBcHBsaWNhdGlvblJlZihuYW1lKTtcbiAgICAgICAgaWYgKHBsYW50QXBwUmVmKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YocGxhbnRBcHBSZWYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYXBwID0gdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuZ2V0QXBwQnlOYW1lKG5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbGljYXRpb25Mb2FkZXIucHJlbG9hZChhcHAsIHRydWUpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldFBsYW5ldEFwcGxpY2F0aW9uUmVmKG5hbWUpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVJbmplY3RvcjxURGF0YT4ocGFyZW50SW5qZWN0b3I6IEluamVjdG9yLCBjb21wb25lbnRSZWY6IFBsYW5ldENvbXBvbmVudFJlZjxURGF0YT4pOiBJbmplY3RvciB7XG4gICAgICAgIHJldHVybiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBQbGFuZXRDb21wb25lbnRSZWYsXG4gICAgICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBjb21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRJbmplY3RvclxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbnRhaW5lckVsZW1lbnQoY29uZmlnOiBQbGFudENvbXBvbmVudENvbmZpZyk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgaWYgKCFjb25maWcuY29udGFpbmVyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbmZpZyAnY29udGFpbmVyJyBjYW5ub3QgYmUgbnVsbGApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKChjb25maWcuY29udGFpbmVyIGFzIEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGNvbmZpZy5jb250YWluZXIgYXMgRWxlbWVudFJlZikubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5jb250YWluZXIgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluc2VydENvbXBvbmVudFJvb3ROb2RlVG9Db250YWluZXIoY29udGFpbmVyOiBIVE1MRWxlbWVudCwgY29tcG9uZW50Um9vdE5vZGU6IEhUTUxFbGVtZW50LCBob3N0Q2xhc3M6IHN0cmluZykge1xuICAgICAgICBjb25zdCBzdWJBcHAgPSB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5nZXRBcHBCeU5hbWUodGhpcy5uZ01vZHVsZVJlZi5pbnN0YW5jZS5hcHBOYW1lKTtcbiAgICAgICAgY29tcG9uZW50Um9vdE5vZGUuY2xhc3NMaXN0LmFkZChjb21wb25lbnRXcmFwcGVyQ2xhc3MpO1xuICAgICAgICBjb21wb25lbnRSb290Tm9kZS5zZXRBdHRyaWJ1dGUoJ3BsYW5ldC1pbmxpbmUnLCAnJyk7XG4gICAgICAgIGlmIChob3N0Q2xhc3MpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudFJvb3ROb2RlLmNsYXNzTGlzdC5hZGQoaG9zdENsYXNzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3ViQXBwICYmIHN1YkFwcC5zdHlsZVByZWZpeCkge1xuICAgICAgICAgICAgY29tcG9uZW50Um9vdE5vZGUuY2xhc3NMaXN0LmFkZChzdWJBcHAuc3R5bGVQcmVmaXgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnRhaW5lciDmmK/ms6jph4rliJnlnKjliY3mlrnmj5LlhaXvvIzlkKbliJnlnKjlhYPntKDlhoXpg6jmj5LlhaVcbiAgICAgICAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gOCkge1xuICAgICAgICAgICAgY29udGFpbmVyLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKGNvbXBvbmVudFJvb3ROb2RlLCBjb250YWluZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNvbXBvbmVudFJvb3ROb2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXR0YWNoQ29tcG9uZW50PFREYXRhPihcbiAgICAgICAgY29tcG9uZW50OiBUeXBlPHVua25vd24+LFxuICAgICAgICBlbnZpcm9ubWVudEluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICBjb25maWc6IFBsYW50Q29tcG9uZW50Q29uZmlnXG4gICAgKTogUGxhbmV0Q29tcG9uZW50UmVmPFREYXRhPiB7XG4gICAgICAgIGNvbnN0IHBsYW50Q29tcG9uZW50UmVmID0gbmV3IFBsYW5ldENvbXBvbmVudFJlZigpO1xuICAgICAgICBjb25zdCBhcHBSZWYgPSB0aGlzLmFwcGxpY2F0aW9uUmVmO1xuICAgICAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuY3JlYXRlSW5qZWN0b3I8VERhdGE+KGVudmlyb25tZW50SW5qZWN0b3IsIHBsYW50Q29tcG9uZW50UmVmKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5nZXRDb250YWluZXJFbGVtZW50KGNvbmZpZyk7XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCwge1xuICAgICAgICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogZW52aXJvbm1lbnRJbmplY3RvcixcbiAgICAgICAgICAgIGVsZW1lbnRJbmplY3RvcjogaW5qZWN0b3IsXG4gICAgICAgICAgICBwcm9qZWN0YWJsZU5vZGVzOiBjb25maWcucHJvamVjdGFibGVOb2RlcyBhcyBOb2RlW11bXVxuICAgICAgICB9KTtcbiAgICAgICAgYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50Um9vdE5vZGUgPSB0aGlzLmdldENvbXBvbmVudFJvb3ROb2RlKGNvbXBvbmVudFJlZik7XG4gICAgICAgIHRoaXMuaW5zZXJ0Q29tcG9uZW50Um9vdE5vZGVUb0NvbnRhaW5lcihjb250YWluZXIsIGNvbXBvbmVudFJvb3ROb2RlLCBjb25maWcuaG9zdENsYXNzIHx8IGNvbmZpZy53cmFwcGVyQ2xhc3MpO1xuICAgICAgICBpZiAoY29uZmlnLmluaXRpYWxTdGF0ZSkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihjb21wb25lbnRSZWYuaW5zdGFuY2UsIGNvbmZpZy5pbml0aWFsU3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHBsYW50Q29tcG9uZW50UmVmLmNvbXBvbmVudEluc3RhbmNlID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgICBwbGFudENvbXBvbmVudFJlZi5jb21wb25lbnRSZWYgPSBjb21wb25lbnRSZWY7XG4gICAgICAgIHBsYW50Q29tcG9uZW50UmVmLmhvc3RFbGVtZW50ID0gY29tcG9uZW50Um9vdE5vZGU7XG4gICAgICAgIHBsYW50Q29tcG9uZW50UmVmLmRpc3Bvc2UgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYXBwUmVmLnZpZXdDb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICBhcHBSZWYuZGV0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcG9uZW50UmVmPy5kZXN0cm95KCk7XG4gICAgICAgICAgICBjb21wb25lbnRSb290Tm9kZS5yZW1vdmUoKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHBsYW50Q29tcG9uZW50UmVmO1xuICAgIH1cblxuICAgIC8qKiBHZXRzIHRoZSByb290IEhUTUxFbGVtZW50IGZvciBhbiBpbnN0YW50aWF0ZWQgY29tcG9uZW50LiAqL1xuICAgIHByaXZhdGUgZ2V0Q29tcG9uZW50Um9vdE5vZGUoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55Pik6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZ2lzdGVyQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnRPckNvbXBvbmVudHM6IFBsYW5ldENvbXBvbmVudCB8IFBsYW5ldENvbXBvbmVudFtdKSB7XG4gICAgICAgIGNvbnN0IGFwcCA9IHRoaXMubmdNb2R1bGVSZWYuaW5zdGFuY2UuYXBwTmFtZTtcbiAgICAgICAgbGV0IGFwcFJlZiQ6IE9ic2VydmFibGU8TmdQbGFuZXRBcHBsaWNhdGlvblJlZiB8IFBsYW5ldFBvcnRhbEFwcGxpY2F0aW9uPjtcblxuICAgICAgICBpZiAoYXBwKSB7XG4gICAgICAgICAgICBhcHBSZWYkID0gdGhpcy5nZXRQbGFudEFwcFJlZihhcHApIGFzIE9ic2VydmFibGU8TmdQbGFuZXRBcHBsaWNhdGlvblJlZj47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcHBSZWYkID0gb2YoZ2xvYmFsUGxhbmV0LnBvcnRhbEFwcGxpY2F0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFwcFJlZiQuc3Vic2NyaWJlKGFwcFJlZiA9PiB7XG4gICAgICAgICAgICBhcHBSZWYucmVnaXN0ZXJDb21wb25lbnRGYWN0b3J5KChjb21wb25lbnROYW1lOiBzdHJpbmcsIGNvbmZpZzogUGxhbnRDb21wb25lbnRDb25maWc8YW55PikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSBjb2VyY2VBcnJheShjb21wb25lbnRPckNvbXBvbmVudHMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYW5ldENvbXBvbmVudCA9IGNvbXBvbmVudHMuZmluZChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzQ29tcG9uZW50VHlwZShpdGVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyByZWZsZWN0Q29tcG9uZW50VHlwZShpdGVtKS5zZWxlY3Rvci5pbmNsdWRlcyhjb21wb25lbnROYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBpdGVtLm5hbWUgPT09IGNvbXBvbmVudE5hbWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHBsYW5ldENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuYXR0YWNoQ29tcG9uZW50PGFueT4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb21wb25lbnRUeXBlKHBsYW5ldENvbXBvbmVudCkgPyBwbGFuZXRDb21wb25lbnQgOiBwbGFuZXRDb21wb25lbnQuY29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcFJlZiBpbnN0YW5jZW9mIE5nUGxhbmV0QXBwbGljYXRpb25SZWYgPyBhcHBSZWYuYXBwTW9kdWxlUmVmLmluamVjdG9yIDogdGhpcy5uZ01vZHVsZVJlZi5pbmplY3RvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50UmVmO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgdW5yZWdpc3RlcmVkIGNvbXBvbmVudCAke2NvbXBvbmVudE5hbWV9IGluIGFwcCAke2FwcH1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXIoY29tcG9uZW50czogUGxhbmV0Q29tcG9uZW50IHwgUGxhbmV0Q29tcG9uZW50W10sIGltbWVkaWF0ZT86IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGltbWVkaWF0ZSkge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnRzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbG9hZDxUQ29tcCA9IHVua25vd24sIFREYXRhID0gdW5rbm93bj4oXG4gICAgICAgIGFwcDogc3RyaW5nLFxuICAgICAgICBjb21wb25lbnROYW1lOiBzdHJpbmcsXG4gICAgICAgIGNvbmZpZzogUGxhbnRDb21wb25lbnRDb25maWc8VERhdGE+XG4gICAgKTogT2JzZXJ2YWJsZTxQbGFuZXRDb21wb25lbnRSZWY8VENvbXA+PiB7XG4gICAgICAgIGxldCBhcHBSZWYkOiBPYnNlcnZhYmxlPE5nUGxhbmV0QXBwbGljYXRpb25SZWYgfCBQbGFuZXRQb3J0YWxBcHBsaWNhdGlvbj47XG4gICAgICAgIGlmIChhcHAgPT09IGdsb2JhbFBsYW5ldC5wb3J0YWxBcHBsaWNhdGlvbi5uYW1lKSB7XG4gICAgICAgICAgICBhcHBSZWYkID0gb2YoZ2xvYmFsUGxhbmV0LnBvcnRhbEFwcGxpY2F0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcFJlZiQgPSB0aGlzLmdldFBsYW50QXBwUmVmKGFwcCkucGlwZShcbiAgICAgICAgICAgICAgICBkZWxheVdoZW4oKGFwcFJlZjogTmdQbGFuZXRBcHBsaWNhdGlvblJlZikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXBwUmVmLmdldENvbXBvbmVudEZhY3RvcnkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKCcnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgcmVnaXN0ZXIgdXNlICdzZXRUaW1lb3V0JyxzbyB0aW1lciAyMFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRpbWVyKDIwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGFwcFJlZiQucGlwZShcbiAgICAgICAgICAgIG1hcChhcHBSZWYgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSBhcHBSZWYuZ2V0Q29tcG9uZW50RmFjdG9yeSgpO1xuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnRGYWN0b3J5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2plY3RhYmxlRW1iZWRkZWRWaWV3UmVmczogRW1iZWRkZWRWaWV3UmVmPGFueT5bXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9qZWN0YWJsZU5vZGVzOiBOb2RlW11bXSA9IChjb25maWcucHJvamVjdGFibGVOb2RlcyB8fCBbXSkubWFwKG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdSZWYgPSBub2RlLmNyZWF0ZUVtYmVkZGVkVmlldyh7fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdGFibGVFbWJlZGRlZFZpZXdSZWZzLnB1c2godmlld1JlZik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KHZpZXdSZWYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2aWV3UmVmLnJvb3ROb2RlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wUmVmID0gY29tcG9uZW50RmFjdG9yeTxURGF0YSwgVENvbXA+KGNvbXBvbmVudE5hbWUsIHsgLi4uY29uZmlnLCBwcm9qZWN0YWJsZU5vZGVzOiBwcm9qZWN0YWJsZU5vZGVzIH0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNwb3NlID0gY29tcFJlZi5kaXNwb3NlLmJpbmQoY29tcFJlZik7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBSZWYuZGlzcG9zZSA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RhYmxlRW1iZWRkZWRWaWV3UmVmcy5mb3JFYWNoKHZpZXdSZWYgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbGljYXRpb25SZWYuZGV0YWNoVmlldyh2aWV3UmVmKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcFJlZjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7YXBwfSdzIGNvbXBvbmVudCgke2NvbXBvbmVudE5hbWV9KSBpcyBub3QgcmVnaXN0ZXJlZGApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoKVxuICAgICAgICApO1xuICAgICAgICByZXN1bHQuc3Vic2NyaWJlKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,72 @@
1
+ import { Directive, Input, ElementRef, NgZone, Output, EventEmitter } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import { PlanetComponentLoader } from './planet-component-loader';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./planet-component-loader";
7
+ // eslint-disable-next-line @angular-eslint/directive-class-suffix
8
+ export class PlanetComponentOutlet {
9
+ constructor(elementRef, planetComponentLoader, ngZone) {
10
+ this.elementRef = elementRef;
11
+ this.planetComponentLoader = planetComponentLoader;
12
+ this.ngZone = ngZone;
13
+ this.planetComponentLoaded = new EventEmitter();
14
+ this.destroyed$ = new Subject();
15
+ }
16
+ ngOnChanges(changes) {
17
+ if (this.planetComponentOutlet && !changes['planetComponentOutlet'].isFirstChange()) {
18
+ this.loadComponent();
19
+ }
20
+ }
21
+ ngAfterViewInit() {
22
+ this.loadComponent();
23
+ }
24
+ loadComponent() {
25
+ this.clear();
26
+ if (this.planetComponentOutlet && this.planetComponentOutletApp) {
27
+ this.planetComponentLoader
28
+ .load(this.planetComponentOutletApp, this.planetComponentOutlet, {
29
+ container: this.elementRef.nativeElement,
30
+ initialState: this.planetComponentOutletInitialState,
31
+ projectableNodes: this.planetComponentOutletProjectableNodes
32
+ })
33
+ .pipe(takeUntil(this.destroyed$))
34
+ .subscribe(componentRef => {
35
+ this.componentRef = componentRef;
36
+ this.ngZone.run(() => {
37
+ Promise.resolve().then(() => {
38
+ this.planetComponentLoaded.emit(this.componentRef);
39
+ });
40
+ });
41
+ });
42
+ }
43
+ }
44
+ ngOnDestroy() {
45
+ this.clear();
46
+ this.destroyed$.complete();
47
+ }
48
+ clear() {
49
+ this.componentRef?.dispose();
50
+ this.destroyed$.next();
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PlanetComponentOutlet, deps: [{ token: i0.ElementRef }, { token: i1.PlanetComponentLoader }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
53
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.4", type: PlanetComponentOutlet, isStandalone: true, selector: "[planetComponentOutlet]", inputs: { planetComponentOutlet: "planetComponentOutlet", planetComponentOutletApp: "planetComponentOutletApp", planetComponentOutletProjectableNodes: "planetComponentOutletProjectableNodes", planetComponentOutletInitialState: "planetComponentOutletInitialState" }, outputs: { planetComponentLoaded: "planetComponentLoaded" }, usesOnChanges: true, ngImport: i0 }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PlanetComponentOutlet, decorators: [{
56
+ type: Directive,
57
+ args: [{
58
+ selector: '[planetComponentOutlet]',
59
+ standalone: true
60
+ }]
61
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.PlanetComponentLoader }, { type: i0.NgZone }], propDecorators: { planetComponentOutlet: [{
62
+ type: Input
63
+ }], planetComponentOutletApp: [{
64
+ type: Input
65
+ }], planetComponentOutletProjectableNodes: [{
66
+ type: Input
67
+ }], planetComponentOutletInitialState: [{
68
+ type: Input
69
+ }], planetComponentLoaded: [{
70
+ type: Output
71
+ }] } });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbmV0LWNvbXBvbmVudC1vdXRsZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXQvc3JjL2NvbXBvbmVudC9wbGFuZXQtY29tcG9uZW50LW91dGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUtULEtBQUssRUFFTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQVFsRSxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLHFCQUFxQjtJQWU5QixZQUNZLFVBQXNCLEVBQ3RCLHFCQUE0QyxFQUM1QyxNQUFjO1FBRmQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFUaEIsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFJakUsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFNdEMsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDbEYsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxxQkFBcUI7aUJBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixFQUFFO2dCQUM3RCxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhO2dCQUN4QyxZQUFZLEVBQUUsSUFBSSxDQUFDLGlDQUFpQztnQkFDcEQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLHFDQUFxQzthQUMvRCxDQUFDO2lCQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNoQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7b0JBQ2pCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO3dCQUN4QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDdkQsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs4R0E1RFEscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBTGpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsVUFBVSxFQUFFLElBQUk7aUJBQ25CO3dJQUdZLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBRUcscUNBQXFDO3NCQUE3QyxLQUFLO2dCQUVHLGlDQUFpQztzQkFBekMsS0FBSztnQkFFSSxxQkFBcUI7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBJbnB1dCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgTmdab25lLFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQbGFuZXRDb21wb25lbnRMb2FkZXIgfSBmcm9tICcuL3BsYW5ldC1jb21wb25lbnQtbG9hZGVyJztcbmltcG9ydCB7IFBsYW5ldENvbXBvbmVudFJlZiB9IGZyb20gJy4vcGxhbmV0LWNvbXBvbmVudC10eXBlcyc7XG5pbXBvcnQgeyBQbGFudENvbXBvbmVudFByb2plY3RhYmxlTm9kZSB9IGZyb20gJy4vcGxhbnQtY29tcG9uZW50LmNvbmZpZyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3BsYW5ldENvbXBvbmVudE91dGxldF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBQbGFuZXRDb21wb25lbnRPdXRsZXQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KCkgcGxhbmV0Q29tcG9uZW50T3V0bGV0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBwbGFuZXRDb21wb25lbnRPdXRsZXRBcHA6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHBsYW5ldENvbXBvbmVudE91dGxldFByb2plY3RhYmxlTm9kZXM6IFBsYW50Q29tcG9uZW50UHJvamVjdGFibGVOb2RlW107XG5cbiAgICBASW5wdXQoKSBwbGFuZXRDb21wb25lbnRPdXRsZXRJbml0aWFsU3RhdGU6IGFueTtcblxuICAgIEBPdXRwdXQoKSBwbGFuZXRDb21wb25lbnRMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFBsYW5ldENvbXBvbmVudFJlZj4oKTtcblxuICAgIHByaXZhdGUgY29tcG9uZW50UmVmOiBQbGFuZXRDb21wb25lbnRSZWY7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBwbGFuZXRDb21wb25lbnRMb2FkZXI6IFBsYW5ldENvbXBvbmVudExvYWRlcixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKHRoaXMucGxhbmV0Q29tcG9uZW50T3V0bGV0ICYmICFjaGFuZ2VzWydwbGFuZXRDb21wb25lbnRPdXRsZXQnXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZENvbXBvbmVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRDb21wb25lbnQoKTtcbiAgICB9XG5cbiAgICBsb2FkQ29tcG9uZW50KCkge1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgIGlmICh0aGlzLnBsYW5ldENvbXBvbmVudE91dGxldCAmJiB0aGlzLnBsYW5ldENvbXBvbmVudE91dGxldEFwcCkge1xuICAgICAgICAgICAgdGhpcy5wbGFuZXRDb21wb25lbnRMb2FkZXJcbiAgICAgICAgICAgICAgICAubG9hZCh0aGlzLnBsYW5ldENvbXBvbmVudE91dGxldEFwcCwgdGhpcy5wbGFuZXRDb21wb25lbnRPdXRsZXQsIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFN0YXRlOiB0aGlzLnBsYW5ldENvbXBvbmVudE91dGxldEluaXRpYWxTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdGFibGVOb2RlczogdGhpcy5wbGFuZXRDb21wb25lbnRPdXRsZXRQcm9qZWN0YWJsZU5vZGVzXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGNvbXBvbmVudFJlZiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gY29tcG9uZW50UmVmO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGFuZXRDb21wb25lbnRMb2FkZWQuZW1pdCh0aGlzLmNvbXBvbmVudFJlZik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWY/LmRpc3Bvc2UoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export class PlanetComponentRef {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbmV0LWNvbXBvbmVudC10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvY29tcG9uZW50L3BsYW5ldC1jb21wb25lbnQtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLGtCQUFrQjtDQU05QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxhbnRDb21wb25lbnRDb25maWcgfSBmcm9tICcuL3BsYW50LWNvbXBvbmVudC5jb25maWcnO1xuXG5leHBvcnQgY2xhc3MgUGxhbmV0Q29tcG9uZW50UmVmPFRDb21wID0gYW55PiB7XG4gICAgd3JhcHBlckVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICAgIGhvc3RFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgICBjb21wb25lbnRJbnN0YW5jZTogVENvbXA7XG4gICAgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VENvbXA+O1xuICAgIGRpc3Bvc2U6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIFBsYW50Q29tcG9uZW50RmFjdG9yeSA9IDxURGF0YSwgVENvbXA+KGNvbXBvbmVudE5hbWU6IHN0cmluZywgY29uZmlnOiBQbGFudENvbXBvbmVudENvbmZpZzxURGF0YT4pID0+IFBsYW5ldENvbXBvbmVudFJlZjxUQ29tcD47XG4iXX0=
@@ -0,0 +1,7 @@
1
+ export class PlantComponentConfig {
2
+ constructor() {
3
+ /** Data being injected into the child component. */
4
+ this.initialState = null;
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbnQtY29tcG9uZW50LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvY29tcG9uZW50L3BsYW50LWNvbXBvbmVudC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLG9CQUFvQjtJQUFqQztRQVlJLG9EQUFvRDtRQUNwRCxpQkFBWSxHQUFrQixJQUFJLENBQUM7SUFLdkMsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgUGxhbnRDb21wb25lbnRQcm9qZWN0YWJsZU5vZGUgPSBOb2RlW10gfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5leHBvcnQgY2xhc3MgUGxhbnRDb21wb25lbnRDb25maWc8VERhdGEgPSBhbnk+IHtcbiAgICAvKiogTG9hZCB0YXJnZXQgY29udGFpbmVyICovXG4gICAgY29udGFpbmVyOiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQgfCBhbnk+IHwgQ29tbWVudDtcbiAgICAvKipcbiAgICAgKiBXcmFwcGVyIGNsYXNzIG9mIHBsYW50IGNvbXBvbmVudFxuICAgICAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgaG9zdENsYXNzXG4gICAgICovXG4gICAgd3JhcHBlckNsYXNzPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEhvc3QgY2xhc3Mgb2YgcGxhbnQgY29tcG9uZW50XG4gICAgICovXG4gICAgaG9zdENsYXNzPzogc3RyaW5nO1xuICAgIC8qKiBEYXRhIGJlaW5nIGluamVjdGVkIGludG8gdGhlIGNoaWxkIGNvbXBvbmVudC4gKi9cbiAgICBpbml0aWFsU3RhdGU/OiBURGF0YSB8IG51bGwgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIFByb2plY3RhYmxlIG5vZGVzXG4gICAgICovXG4gICAgcHJvamVjdGFibGVOb2Rlcz86IFBsYW50Q29tcG9uZW50UHJvamVjdGFibGVOb2RlW107XG59XG4iXX0=
@@ -0,0 +1,33 @@
1
+ import { isFunction } from './helpers';
2
+ /**
3
+ * Debug factory for debug module
4
+ */
5
+ let _debugFactory;
6
+ let _debuggerMap = {};
7
+ export function createDebug(namespace) {
8
+ const key = `planet:${namespace}`;
9
+ return function (formatter, ...args) {
10
+ if (_debugFactory) {
11
+ let debugDebugger = _debuggerMap[key];
12
+ if (!debugDebugger) {
13
+ debugDebugger = _debugFactory(key);
14
+ _debuggerMap[key] = debugDebugger;
15
+ }
16
+ debugDebugger(formatter, args);
17
+ }
18
+ };
19
+ }
20
+ export function setDebugFactory(debug) {
21
+ if (debug && !isFunction(debug)) {
22
+ throw new Error('debug factory type is invalid, must be function');
23
+ }
24
+ _debugFactory = debug;
25
+ }
26
+ export function clearDebugFactory() {
27
+ _debugFactory = undefined;
28
+ _debuggerMap = {};
29
+ }
30
+ export function getDebugFactory() {
31
+ return _debugFactory;
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXQvc3JjL2RlYnVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUErQnZDOztHQUVHO0FBQ0gsSUFBSSxhQUFnQyxDQUFDO0FBQ3JDLElBQUksWUFBWSxHQUE2QixFQUFFLENBQUM7QUFFaEQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxTQUFpQjtJQUN6QyxNQUFNLEdBQUcsR0FBRyxVQUFVLFNBQVMsRUFBRSxDQUFDO0lBQ2xDLE9BQU8sVUFBUyxTQUFjLEVBQUUsR0FBRyxJQUFXO1FBQzFDLElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEIsSUFBSSxhQUFhLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDakIsYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQztZQUN0QyxDQUFDO1lBQ0QsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBWTtJQUN4QyxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQ0QsYUFBYSxHQUFHLEtBQUssQ0FBQztBQUMxQixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQjtJQUM3QixhQUFhLEdBQUcsU0FBUyxDQUFDO0lBQzFCLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDdEIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlO0lBQzNCLE9BQU8sYUFBYSxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuZXhwb3J0IGludGVyZmFjZSBEZWJ1Z2dlciB7XG4gICAgKGZvcm1hdHRlcjogYW55LCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQ7XG5cbiAgICAvLyBjb2xvcjogc3RyaW5nO1xuICAgIC8vIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgLy8gbG9nOiAoLi4uYXJnczogYW55W10pID0+IGFueTtcbiAgICAvLyBuYW1lc3BhY2U6IHN0cmluZztcbiAgICAvLyBkZXN0cm95OiAoKSA9PiBib29sZWFuO1xuICAgIC8vIGV4dGVuZDogKG5hbWVzcGFjZTogc3RyaW5nLCBkZWxpbWl0ZXI/OiBzdHJpbmcpID0+IERlYnVnZ2VyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdHRlcnMge1xuICAgIFtmb3JtYXR0ZXI6IHN0cmluZ106ICh2OiBhbnkpID0+IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWJ1ZyB7XG4gICAgKG5hbWVzcGFjZTogc3RyaW5nKTogRGVidWdnZXI7XG4gICAgY29lcmNlOiAodmFsOiBhbnkpID0+IGFueTtcbiAgICBkaXNhYmxlOiAoKSA9PiBzdHJpbmc7XG4gICAgZW5hYmxlOiAobmFtZXNwYWNlczogc3RyaW5nKSA9PiB2b2lkO1xuICAgIGVuYWJsZWQ6IChuYW1lc3BhY2VzOiBzdHJpbmcpID0+IGJvb2xlYW47XG4gICAgbG9nOiAoLi4uYXJnczogYW55W10pID0+IGFueTtcblxuICAgIG5hbWVzOiBSZWdFeHBbXTtcbiAgICBza2lwczogUmVnRXhwW107XG5cbiAgICBmb3JtYXR0ZXJzOiBGb3JtYXR0ZXJzO1xufVxuXG4vKipcbiAqIERlYnVnIGZhY3RvcnkgZm9yIGRlYnVnIG1vZHVsZVxuICovXG5sZXQgX2RlYnVnRmFjdG9yeTogRGVidWcgfCB1bmRlZmluZWQ7XG5sZXQgX2RlYnVnZ2VyTWFwOiBSZWNvcmQ8c3RyaW5nLCBEZWJ1Z2dlcj4gPSB7fTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlYnVnKG5hbWVzcGFjZTogc3RyaW5nKTogRGVidWdnZXIge1xuICAgIGNvbnN0IGtleSA9IGBwbGFuZXQ6JHtuYW1lc3BhY2V9YDtcbiAgICByZXR1cm4gZnVuY3Rpb24oZm9ybWF0dGVyOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIGlmIChfZGVidWdGYWN0b3J5KSB7XG4gICAgICAgICAgICBsZXQgZGVidWdEZWJ1Z2dlciA9IF9kZWJ1Z2dlck1hcFtrZXldO1xuICAgICAgICAgICAgaWYgKCFkZWJ1Z0RlYnVnZ2VyKSB7XG4gICAgICAgICAgICAgICAgZGVidWdEZWJ1Z2dlciA9IF9kZWJ1Z0ZhY3Rvcnkoa2V5KTtcbiAgICAgICAgICAgICAgICBfZGVidWdnZXJNYXBba2V5XSA9IGRlYnVnRGVidWdnZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWJ1Z0RlYnVnZ2VyKGZvcm1hdHRlciwgYXJncyk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVidWdGYWN0b3J5KGRlYnVnOiBEZWJ1Zykge1xuICAgIGlmIChkZWJ1ZyAmJiAhaXNGdW5jdGlvbihkZWJ1ZykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkZWJ1ZyBmYWN0b3J5IHR5cGUgaXMgaW52YWxpZCwgbXVzdCBiZSBmdW5jdGlvbicpO1xuICAgIH1cbiAgICBfZGVidWdGYWN0b3J5ID0gZGVidWc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckRlYnVnRmFjdG9yeSgpIHtcbiAgICBfZGVidWdGYWN0b3J5ID0gdW5kZWZpbmVkO1xuICAgIF9kZWJ1Z2dlck1hcCA9IHt9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVidWdGYWN0b3J5KCkge1xuICAgIHJldHVybiBfZGVidWdGYWN0b3J5O1xufVxuIl19
@@ -0,0 +1,17 @@
1
+ import { Component, ChangeDetectionStrategy } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class EmptyComponent {
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: EmptyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: EmptyComponent, isStandalone: true, selector: "empty-component", ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6
+ }
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: EmptyComponent, decorators: [{
8
+ type: Component,
9
+ args: [{
10
+ // eslint-disable-next-line @angular-eslint/component-selector
11
+ selector: 'empty-component',
12
+ template: ``,
13
+ changeDetection: ChangeDetectionStrategy.OnPush,
14
+ standalone: true
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhbmV0L3NyYy9lbXB0eS9lbXB0eS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFTbkUsTUFBTSxPQUFPLGNBQWM7OEdBQWQsY0FBYztrR0FBZCxjQUFjLDJFQUpiLEVBQUU7OzJGQUlILGNBQWM7a0JBUDFCLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnZW1wdHktY29tcG9uZW50JyxcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBFbXB0eUNvbXBvbmVudCB7fVxuIl19
@@ -0,0 +1,70 @@
1
+ import { Subject, Observable } from 'rxjs';
2
+ import { filter, map } from 'rxjs/operators';
3
+ import { Injectable, NgZone } from '@angular/core';
4
+ import * as i0 from "@angular/core";
5
+ const CUSTOM_EVENT_NAME = 'PLANET_GLOBAL_EVENT_DISPATCHER';
6
+ export class GlobalEventDispatcher {
7
+ addGlobalEventListener() {
8
+ this.hasAddGlobalEventListener = true;
9
+ window.addEventListener(CUSTOM_EVENT_NAME, this.globalEventListener);
10
+ }
11
+ removeGlobalEventListener() {
12
+ this.hasAddGlobalEventListener = false;
13
+ window.removeEventListener(CUSTOM_EVENT_NAME, this.globalEventListener);
14
+ }
15
+ constructor(ngZone) {
16
+ this.ngZone = ngZone;
17
+ this.subject$ = new Subject();
18
+ this.hasAddGlobalEventListener = false;
19
+ this.subscriptionCount = 0;
20
+ this.globalEventListener = (event) => {
21
+ this.subject$.next(event.detail);
22
+ };
23
+ }
24
+ dispatch(name, payload) {
25
+ window.dispatchEvent(new CustomEvent(CUSTOM_EVENT_NAME, {
26
+ detail: {
27
+ name: name,
28
+ payload: payload
29
+ }
30
+ }));
31
+ }
32
+ register(eventName) {
33
+ return new Observable(observer => {
34
+ if (!this.hasAddGlobalEventListener) {
35
+ this.addGlobalEventListener();
36
+ }
37
+ this.subscriptionCount++;
38
+ const subscription = this.subject$
39
+ .pipe(filter(event => {
40
+ return event.name === eventName;
41
+ }), map(event => {
42
+ return event.payload;
43
+ }))
44
+ .subscribe(payload => {
45
+ this.ngZone.run(() => {
46
+ observer.next(payload);
47
+ });
48
+ });
49
+ return () => {
50
+ this.subscriptionCount--;
51
+ subscription.unsubscribe();
52
+ if (!this.subscriptionCount) {
53
+ this.removeGlobalEventListener();
54
+ }
55
+ };
56
+ });
57
+ }
58
+ getSubscriptionCount() {
59
+ return this.subscriptionCount;
60
+ }
61
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: GlobalEventDispatcher, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
62
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: GlobalEventDispatcher, providedIn: 'root' }); }
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: GlobalEventDispatcher, decorators: [{
65
+ type: Injectable,
66
+ args: [{
67
+ providedIn: 'root'
68
+ }]
69
+ }], ctorParameters: () => [{ type: i0.NgZone }] });
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWV2ZW50LWRpc3BhdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXQvc3JjL2dsb2JhbC1ldmVudC1kaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBT25ELE1BQU0saUJBQWlCLEdBQUcsZ0NBQWdDLENBQUM7QUFLM0QsTUFBTSxPQUFPLHFCQUFxQjtJQVd0QixzQkFBc0I7UUFDMUIsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztRQUN0QyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVPLHlCQUF5QjtRQUM3QixJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFwQjFCLGFBQVEsR0FBbUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV6RCw4QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFFbEMsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBRXRCLHdCQUFtQixHQUFHLENBQUMsS0FBa0IsRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUM7SUFZbUMsQ0FBQztJQUV0QyxRQUFRLENBQVcsSUFBWSxFQUFFLE9BQWtCO1FBQy9DLE1BQU0sQ0FBQyxhQUFhLENBQ2hCLElBQUksV0FBVyxDQUFDLGlCQUFpQixFQUFFO1lBQy9CLE1BQU0sRUFBRTtnQkFDSixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUUsT0FBTzthQUNuQjtTQUNKLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELFFBQVEsQ0FBSSxTQUFpQjtRQUN6QixPQUFPLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbEMsQ0FBQztZQUNELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRO2lCQUM3QixJQUFJLENBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNYLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUM7WUFDcEMsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNSLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FDTDtpQkFDQSxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDakIsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0IsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztZQUNQLE9BQU8sR0FBRyxFQUFFO2dCQUNSLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QixZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7Z0JBQ3JDLENBQUM7WUFDTCxDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQzs4R0FsRVEscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGbEIsTUFBTTs7MkZBRVQscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xvYmFsRGlzcGF0Y2hlckV2ZW50IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcGF5bG9hZDogYW55O1xufVxuXG5jb25zdCBDVVNUT01fRVZFTlRfTkFNRSA9ICdQTEFORVRfR0xPQkFMX0VWRU5UX0RJU1BBVENIRVInO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEdsb2JhbEV2ZW50RGlzcGF0Y2hlciB7XG4gICAgcHJpdmF0ZSBzdWJqZWN0JDogU3ViamVjdDxHbG9iYWxEaXNwYXRjaGVyRXZlbnQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHByaXZhdGUgaGFzQWRkR2xvYmFsRXZlbnRMaXN0ZW5lciA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25Db3VudCA9IDA7XG5cbiAgICBwcml2YXRlIGdsb2JhbEV2ZW50TGlzdGVuZXIgPSAoZXZlbnQ6IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuc3ViamVjdCQubmV4dChldmVudC5kZXRhaWwpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGFkZEdsb2JhbEV2ZW50TGlzdGVuZXIoKSB7XG4gICAgICAgIHRoaXMuaGFzQWRkR2xvYmFsRXZlbnRMaXN0ZW5lciA9IHRydWU7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKENVU1RPTV9FVkVOVF9OQU1FLCB0aGlzLmdsb2JhbEV2ZW50TGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlR2xvYmFsRXZlbnRMaXN0ZW5lcigpIHtcbiAgICAgICAgdGhpcy5oYXNBZGRHbG9iYWxFdmVudExpc3RlbmVyID0gZmFsc2U7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKENVU1RPTV9FVkVOVF9OQU1FLCB0aGlzLmdsb2JhbEV2ZW50TGlzdGVuZXIpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHt9XG5cbiAgICBkaXNwYXRjaDxUUGF5bG9hZD4obmFtZTogc3RyaW5nLCBwYXlsb2FkPzogVFBheWxvYWQpIHtcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoQ1VTVE9NX0VWRU5UX05BTUUsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZDogcGF5bG9hZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXI8VD4oZXZlbnROYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5oYXNBZGRHbG9iYWxFdmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRHbG9iYWxFdmVudExpc3RlbmVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbkNvdW50Kys7XG4gICAgICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLnN1YmplY3QkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQubmFtZSA9PT0gZXZlbnROYW1lO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5wYXlsb2FkO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHBheWxvYWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChwYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uQ291bnQtLTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9uQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVHbG9iYWxFdmVudExpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0U3Vic2NyaXB0aW9uQ291bnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1YnNjcmlwdGlvbkNvdW50O1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,63 @@
1
+ import { isFunction } from './helpers';
2
+ import { NgPlanetApplicationRef } from './application/ng-planet-application-ref';
3
+ export const globalPlanet = (window.planet = window.planet || {
4
+ apps: {}
5
+ });
6
+ export function defineApplication(name, options) {
7
+ if (globalPlanet.apps[name]) {
8
+ throw new Error(`${name} application has exist.`);
9
+ }
10
+ if (isFunction(options)) {
11
+ options = {
12
+ template: '',
13
+ bootstrap: options
14
+ };
15
+ }
16
+ const appRef = new NgPlanetApplicationRef(name, options);
17
+ globalPlanet.apps[name] = appRef;
18
+ }
19
+ export function getPlanetApplicationRef(appName) {
20
+ if (globalPlanet && globalPlanet.apps && globalPlanet.apps[appName]) {
21
+ return globalPlanet.apps[appName];
22
+ }
23
+ else {
24
+ return null;
25
+ }
26
+ }
27
+ export function getBootstrappedPlanetApplicationRef(appName) {
28
+ const plantAppRef = getPlanetApplicationRef(appName);
29
+ if (plantAppRef) {
30
+ // 兼容之前的版本,之前是通过 appModuleRef 来判断是否启用的
31
+ if (plantAppRef.bootstrapped || plantAppRef['appModuleRef']) {
32
+ return plantAppRef;
33
+ }
34
+ }
35
+ return null;
36
+ }
37
+ export function setPortalApplicationData(data) {
38
+ if (globalPlanet.portalApplication) {
39
+ globalPlanet.portalApplication.data = data;
40
+ }
41
+ }
42
+ export function getPortalApplicationData() {
43
+ return globalPlanet.portalApplication?.data;
44
+ }
45
+ export function setApplicationLoader(loader) {
46
+ globalPlanet.applicationLoader = loader;
47
+ }
48
+ export function getApplicationLoader() {
49
+ return globalPlanet.applicationLoader;
50
+ }
51
+ export function setApplicationService(service) {
52
+ globalPlanet.applicationService = service;
53
+ }
54
+ export function getApplicationService() {
55
+ return globalPlanet.applicationService;
56
+ }
57
+ export function clearGlobalPlanet() {
58
+ window.planet.apps = {};
59
+ window.planet.portalApplication = null;
60
+ window.planet.applicationLoader = null;
61
+ window.planet.applicationService = null;
62
+ }
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXBsYW5ldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvZ2xvYmFsLXBsYW5ldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZDLE9BQU8sRUFBNEMsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQVczSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJO0lBQ3hFLElBQUksRUFBRSxFQUFFO0NBQ1gsQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLGlCQUFpQixDQUE2RCxJQUFZLEVBQUUsT0FBaUI7SUFDekgsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUkseUJBQXlCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN0QixPQUFPLEdBQUc7WUFDTixRQUFRLEVBQUUsRUFBRTtZQUNaLFNBQVMsRUFBRSxPQUErQjtTQUNqQyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLHNCQUFzQixDQUFDLElBQUksRUFBRSxPQUE2QixDQUFDLENBQUM7SUFDL0UsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxPQUFlO0lBQ25ELElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ2xFLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLG1DQUFtQyxDQUFDLE9BQWU7SUFDL0QsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNkLHNDQUFzQztRQUN0QyxJQUFJLFdBQVcsQ0FBQyxZQUFZLElBQUksV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDMUQsT0FBTyxXQUFXLENBQUM7UUFDdkIsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFJLElBQU87SUFDL0MsSUFBSSxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNqQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUMvQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0I7SUFDcEMsT0FBTyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsSUFBYSxDQUFDO0FBQ3pELENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsTUFBK0I7SUFDaEUsWUFBWSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztBQUM1QyxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQjtJQUNoQyxPQUFPLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztBQUMxQyxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUFDLE9BQWlDO0lBQ25FLFlBQVksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUM7QUFDOUMsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUI7SUFDakMsT0FBTyxZQUFZLENBQUMsa0JBQWtCLENBQUM7QUFDM0MsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUI7SUFDN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDLE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDLE1BQU0sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFuZXRBcHBsaWNhdGlvblJlZiB9IGZyb20gJy4vYXBwbGljYXRpb24vcGxhbmV0LWFwcGxpY2F0aW9uLXJlZic7XG5pbXBvcnQgeyBQbGFuZXRQb3J0YWxBcHBsaWNhdGlvbiB9IGZyb20gJy4vYXBwbGljYXRpb24vcG9ydGFsLWFwcGxpY2F0aW9uJztcbmltcG9ydCB7IFBsYW5ldEFwcGxpY2F0aW9uTG9hZGVyIH0gZnJvbSAnLi9hcHBsaWNhdGlvbi9wbGFuZXQtYXBwbGljYXRpb24tbG9hZGVyJztcbmltcG9ydCB7IFBsYW5ldEFwcGxpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vYXBwbGljYXRpb24vcGxhbmV0LWFwcGxpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBOZ0Jvb3RzdHJhcEFwcE1vZHVsZSwgTmdCb290c3RyYXBPcHRpb25zLCBOZ1BsYW5ldEFwcGxpY2F0aW9uUmVmIH0gZnJvbSAnLi9hcHBsaWNhdGlvbi9uZy1wbGFuZXQtYXBwbGljYXRpb24tcmVmJztcblxuZGVjbGFyZSBjb25zdCB3aW5kb3c6IGFueTtcblxuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxQbGFuZXQge1xuICAgIGFwcHM6IHsgW2tleTogc3RyaW5nXTogUGxhbmV0QXBwbGljYXRpb25SZWYgfTtcbiAgICBwb3J0YWxBcHBsaWNhdGlvbj86IFBsYW5ldFBvcnRhbEFwcGxpY2F0aW9uO1xuICAgIGFwcGxpY2F0aW9uTG9hZGVyOiBQbGFuZXRBcHBsaWNhdGlvbkxvYWRlcjtcbiAgICBhcHBsaWNhdGlvblNlcnZpY2U6IFBsYW5ldEFwcGxpY2F0aW9uU2VydmljZTtcbn1cblxuZXhwb3J0IGNvbnN0IGdsb2JhbFBsYW5ldDogR2xvYmFsUGxhbmV0ID0gKHdpbmRvdy5wbGFuZXQgPSB3aW5kb3cucGxhbmV0IHx8IHtcbiAgICBhcHBzOiB7fVxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVBcHBsaWNhdGlvbjxUT3B0aW9ucyBleHRlbmRzIE5nQm9vdHN0cmFwQXBwTW9kdWxlIHwgTmdCb290c3RyYXBPcHRpb25zPihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IFRPcHRpb25zKSB7XG4gICAgaWYgKGdsb2JhbFBsYW5ldC5hcHBzW25hbWVdKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSBhcHBsaWNhdGlvbiBoYXMgZXhpc3QuYCk7XG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKG9wdGlvbnMpKSB7XG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICB0ZW1wbGF0ZTogJycsXG4gICAgICAgICAgICBib290c3RyYXA6IG9wdGlvbnMgYXMgTmdCb290c3RyYXBBcHBNb2R1bGVcbiAgICAgICAgfSBhcyBUT3B0aW9ucztcbiAgICB9XG4gICAgY29uc3QgYXBwUmVmID0gbmV3IE5nUGxhbmV0QXBwbGljYXRpb25SZWYobmFtZSwgb3B0aW9ucyBhcyBOZ0Jvb3RzdHJhcE9wdGlvbnMpO1xuICAgIGdsb2JhbFBsYW5ldC5hcHBzW25hbWVdID0gYXBwUmVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGxhbmV0QXBwbGljYXRpb25SZWYoYXBwTmFtZTogc3RyaW5nKTogUGxhbmV0QXBwbGljYXRpb25SZWYgfCBudWxsIHtcbiAgICBpZiAoZ2xvYmFsUGxhbmV0ICYmIGdsb2JhbFBsYW5ldC5hcHBzICYmIGdsb2JhbFBsYW5ldC5hcHBzW2FwcE5hbWVdKSB7XG4gICAgICAgIHJldHVybiBnbG9iYWxQbGFuZXQuYXBwc1thcHBOYW1lXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb290c3RyYXBwZWRQbGFuZXRBcHBsaWNhdGlvblJlZihhcHBOYW1lOiBzdHJpbmcpOiBQbGFuZXRBcHBsaWNhdGlvblJlZiB8IG51bGwge1xuICAgIGNvbnN0IHBsYW50QXBwUmVmID0gZ2V0UGxhbmV0QXBwbGljYXRpb25SZWYoYXBwTmFtZSk7XG4gICAgaWYgKHBsYW50QXBwUmVmKSB7XG4gICAgICAgIC8vIOWFvOWuueS5i+WJjeeahOeJiOacrO+8jOS5i+WJjeaYr+mAmui/hyBhcHBNb2R1bGVSZWYg5p2l5Yik5pat5piv5ZCm5ZCv55So55qEXG4gICAgICAgIGlmIChwbGFudEFwcFJlZi5ib290c3RyYXBwZWQgfHwgcGxhbnRBcHBSZWZbJ2FwcE1vZHVsZVJlZiddKSB7XG4gICAgICAgICAgICByZXR1cm4gcGxhbnRBcHBSZWY7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRQb3J0YWxBcHBsaWNhdGlvbkRhdGE8VD4oZGF0YTogVCkge1xuICAgIGlmIChnbG9iYWxQbGFuZXQucG9ydGFsQXBwbGljYXRpb24pIHtcbiAgICAgICAgZ2xvYmFsUGxhbmV0LnBvcnRhbEFwcGxpY2F0aW9uLmRhdGEgPSBkYXRhO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvcnRhbEFwcGxpY2F0aW9uRGF0YTxURGF0YT4oKTogVERhdGEge1xuICAgIHJldHVybiBnbG9iYWxQbGFuZXQucG9ydGFsQXBwbGljYXRpb24/LmRhdGEgYXMgVERhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBcHBsaWNhdGlvbkxvYWRlcihsb2FkZXI6IFBsYW5ldEFwcGxpY2F0aW9uTG9hZGVyKSB7XG4gICAgZ2xvYmFsUGxhbmV0LmFwcGxpY2F0aW9uTG9hZGVyID0gbG9hZGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwbGljYXRpb25Mb2FkZXIoKSB7XG4gICAgcmV0dXJuIGdsb2JhbFBsYW5ldC5hcHBsaWNhdGlvbkxvYWRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEFwcGxpY2F0aW9uU2VydmljZShzZXJ2aWNlOiBQbGFuZXRBcHBsaWNhdGlvblNlcnZpY2UpIHtcbiAgICBnbG9iYWxQbGFuZXQuYXBwbGljYXRpb25TZXJ2aWNlID0gc2VydmljZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcGxpY2F0aW9uU2VydmljZSgpIHtcbiAgICByZXR1cm4gZ2xvYmFsUGxhbmV0LmFwcGxpY2F0aW9uU2VydmljZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyR2xvYmFsUGxhbmV0KCkge1xuICAgIHdpbmRvdy5wbGFuZXQuYXBwcyA9IHt9O1xuICAgIHdpbmRvdy5wbGFuZXQucG9ydGFsQXBwbGljYXRpb24gPSBudWxsO1xuICAgIHdpbmRvdy5wbGFuZXQuYXBwbGljYXRpb25Mb2FkZXIgPSBudWxsO1xuICAgIHdpbmRvdy5wbGFuZXQuYXBwbGljYXRpb25TZXJ2aWNlID0gbnVsbDtcbn1cbiJdfQ==