@worktile/planet 12.1.0 → 13.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.
Files changed (95) hide show
  1. package/application/planet-application-loader.d.ts +3 -0
  2. package/application/planet-application-loader.d.ts.map +1 -1
  3. package/application/planet-application-ref.d.ts +8 -8
  4. package/application/planet-application-ref.d.ts.map +1 -1
  5. package/application/planet-application.service.d.ts +4 -1
  6. package/application/planet-application.service.d.ts.map +1 -1
  7. package/application/portal-application.d.ts +6 -6
  8. package/application/portal-application.d.ts.map +1 -1
  9. package/assets-loader.d.ts +3 -0
  10. package/assets-loader.d.ts.map +1 -1
  11. package/component/planet-component-loader.d.ts +3 -0
  12. package/component/planet-component-loader.d.ts.map +1 -1
  13. package/empty/empty.component.d.ts +3 -0
  14. package/empty/empty.component.d.ts.map +1 -1
  15. package/esm2020/application/planet-application-loader.mjs +454 -0
  16. package/esm2020/application/planet-application-ref.mjs +94 -0
  17. package/esm2020/application/planet-application.service.mjs +85 -0
  18. package/esm2020/application/portal-application.mjs +16 -0
  19. package/{esm2015/assets-loader.js → esm2020/assets-loader.mjs} +9 -10
  20. package/esm2020/component/planet-component-loader.mjs +153 -0
  21. package/{esm2015/component/planet-component-ref.js → esm2020/component/planet-component-ref.mjs} +0 -0
  22. package/{esm2015/component/plant-component.config.js → esm2020/component/plant-component.config.mjs} +0 -0
  23. package/esm2020/debug.mjs +33 -0
  24. package/esm2020/empty/empty.component.mjs +15 -0
  25. package/{esm2015/global-event-dispatcher.js → esm2020/global-event-dispatcher.mjs} +9 -10
  26. package/esm2020/global-planet.mjs +53 -0
  27. package/esm2020/helpers.mjs +119 -0
  28. package/esm2020/module.mjs +31 -0
  29. package/{esm2015/planet.class.js → esm2020/planet.class.mjs} +0 -0
  30. package/esm2020/planet.mjs +91 -0
  31. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  32. package/{esm2015/sandbox/constants.js → esm2020/sandbox/constants.mjs} +0 -0
  33. package/{esm2015/sandbox/exec.js → esm2020/sandbox/exec.mjs} +0 -0
  34. package/{esm2015/sandbox/index.js → esm2020/sandbox/index.mjs} +0 -0
  35. package/{esm2015/sandbox/proxy/patches/document.js → esm2020/sandbox/proxy/patches/document.mjs} +0 -0
  36. package/{esm2015/sandbox/proxy/patches/eventListener.js → esm2020/sandbox/proxy/patches/eventListener.mjs} +0 -0
  37. package/{esm2015/sandbox/proxy/patches/index.js → esm2020/sandbox/proxy/patches/index.mjs} +0 -0
  38. package/{esm2015/sandbox/proxy/patches/storage.js → esm2020/sandbox/proxy/patches/storage.mjs} +0 -0
  39. package/{esm2015/sandbox/proxy/patches/timer.js → esm2020/sandbox/proxy/patches/timer.mjs} +0 -0
  40. package/esm2020/sandbox/proxy/proxies/common.mjs +132 -0
  41. package/esm2020/sandbox/proxy/proxies/document.mjs +126 -0
  42. package/esm2020/sandbox/proxy/proxies/window.mjs +158 -0
  43. package/{esm2015/sandbox/proxy/proxy-sandbox.js → esm2020/sandbox/proxy/proxy-sandbox.mjs} +2 -2
  44. package/{esm2015/sandbox/proxy/types.js → esm2020/sandbox/proxy/types.mjs} +0 -0
  45. package/esm2020/sandbox/sandbox.mjs +7 -0
  46. package/{esm2015/sandbox/snapshot/snapshot-sandbox.js → esm2020/sandbox/snapshot/snapshot-sandbox.mjs} +0 -0
  47. package/{esm2015/sandbox/types.js → esm2020/sandbox/types.mjs} +0 -0
  48. package/esm2020/worktile-planet.mjs +5 -0
  49. package/fesm2015/worktile-planet.mjs +2049 -0
  50. package/fesm2015/worktile-planet.mjs.map +1 -0
  51. package/{fesm2015/worktile-planet.js → fesm2020/worktile-planet.mjs} +129 -119
  52. package/fesm2020/worktile-planet.mjs.map +1 -0
  53. package/global-event-dispatcher.d.ts +3 -0
  54. package/global-event-dispatcher.d.ts.map +1 -1
  55. package/global-planet.d.ts +3 -3
  56. package/global-planet.d.ts.map +1 -1
  57. package/helpers.d.ts +1 -1
  58. package/helpers.d.ts.map +1 -1
  59. package/module.d.ts +6 -0
  60. package/module.d.ts.map +1 -1
  61. package/package.json +28 -12
  62. package/planet.d.ts +4 -1
  63. package/planet.d.ts.map +1 -1
  64. package/sandbox/proxy/proxy-sandbox.d.ts.map +1 -1
  65. package/sandbox/sandbox.d.ts.map +1 -1
  66. package/worktile-planet.d.ts +1 -1
  67. package/worktile-planet.d.ts.map +1 -1
  68. package/application/planet-application-loader.ngfactory.d.ts.map +0 -1
  69. package/application/planet-application.service.ngfactory.d.ts.map +0 -1
  70. package/assets-loader.ngfactory.d.ts.map +0 -1
  71. package/bundles/worktile-planet.umd.js +0 -2552
  72. package/bundles/worktile-planet.umd.js.map +0 -1
  73. package/component/planet-component-loader.ngfactory.d.ts.map +0 -1
  74. package/empty/empty.component.ngfactory.d.ts.map +0 -1
  75. package/esm2015/application/planet-application-loader.js +0 -452
  76. package/esm2015/application/planet-application-ref.js +0 -94
  77. package/esm2015/application/planet-application.service.js +0 -87
  78. package/esm2015/application/portal-application.js +0 -16
  79. package/esm2015/component/planet-component-loader.js +0 -155
  80. package/esm2015/debug.js +0 -33
  81. package/esm2015/empty/empty.component.js +0 -10
  82. package/esm2015/global-planet.js +0 -51
  83. package/esm2015/helpers.js +0 -119
  84. package/esm2015/module.js +0 -27
  85. package/esm2015/planet.js +0 -90
  86. package/esm2015/sandbox/proxy/proxies/common.js +0 -132
  87. package/esm2015/sandbox/proxy/proxies/document.js +0 -126
  88. package/esm2015/sandbox/proxy/proxies/window.js +0 -155
  89. package/esm2015/sandbox/sandbox.js +0 -7
  90. package/esm2015/worktile-planet.js +0 -6
  91. package/fesm2015/worktile-planet.js.map +0 -1
  92. package/global-event-dispatcher.ngfactory.d.ts.map +0 -1
  93. package/module.ngfactory.d.ts.map +0 -1
  94. package/planet.ngfactory.d.ts.map +0 -1
  95. package/worktile-planet.metadata.json +0 -1
@@ -1,94 +0,0 @@
1
- import { NgZone } from '@angular/core';
2
- import { Router, NavigationEnd } from '@angular/router';
3
- import { take } from 'rxjs/operators';
4
- import { from } from 'rxjs';
5
- import { getTagNameByTemplate } from '../helpers';
6
- import { getSandboxInstance } from '../sandbox/';
7
- export class PlanetApplicationRef {
8
- constructor(name, options) {
9
- this.name = name;
10
- if (options) {
11
- this.template = options.template;
12
- this.innerSelector = this.template ? getTagNameByTemplate(this.template) : null;
13
- this.appModuleBootstrap = options.bootstrap;
14
- }
15
- // This is a hack, since NgZone doesn't allow you to configure the property that identifies your zone.
16
- // See https://github.com/PlaceMe-SAS/single-spa-angular-cli/issues/33,
17
- NgZone.isInAngularZone = () => {
18
- // @ts-ignore
19
- return window.Zone.current._properties[`ngx-planet-${name}`] === true;
20
- };
21
- }
22
- get selector() {
23
- return this.innerSelector;
24
- }
25
- get bootstrapped() {
26
- return !!this.appModuleRef;
27
- }
28
- get ngZone() {
29
- return this.appModuleRef.injector.get(NgZone);
30
- }
31
- get sandbox() {
32
- return getSandboxInstance();
33
- }
34
- // 子应用路由变化后同步修改 portal 的 Route
35
- syncPortalRouteWhenNavigationEnd() {
36
- const router = this.appModuleRef.injector.get(Router);
37
- if (router) {
38
- router.events.subscribe(event => {
39
- if (event instanceof NavigationEnd) {
40
- this.ngZone.onStable
41
- .asObservable()
42
- .pipe(take(1))
43
- .subscribe(() => {
44
- this.portalApp.router.navigateByUrl(event.url);
45
- });
46
- }
47
- });
48
- }
49
- }
50
- bootstrap(app) {
51
- if (!this.appModuleBootstrap) {
52
- throw new Error(`app(${this.name}) is not defined`);
53
- }
54
- this.portalApp = app;
55
- return from(this.appModuleBootstrap(app).then(appModuleRef => {
56
- this.appModuleRef = appModuleRef;
57
- this.appModuleRef.instance.appName = this.name;
58
- this.syncPortalRouteWhenNavigationEnd();
59
- return this;
60
- }));
61
- }
62
- getRouter() {
63
- return this.appModuleRef.injector.get(Router);
64
- }
65
- getCurrentRouterStateUrl() {
66
- return this.getRouter().routerState.snapshot.url;
67
- }
68
- navigateByUrl(url) {
69
- const router = this.getRouter();
70
- this.ngZone.run(() => {
71
- router.navigateByUrl(url);
72
- });
73
- }
74
- getComponentFactory() {
75
- return this.componentFactory;
76
- }
77
- registerComponentFactory(componentFactory) {
78
- this.componentFactory = componentFactory;
79
- }
80
- destroy() {
81
- if (this.appModuleRef) {
82
- const router = this.appModuleRef.injector.get(Router);
83
- if (router) {
84
- router.dispose();
85
- }
86
- if (this.sandbox) {
87
- this.sandbox.destroy();
88
- }
89
- this.appModuleRef.destroy();
90
- delete this.appModuleRef;
91
- }
92
- }
93
- }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbmV0LWFwcGxpY2F0aW9uLXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvYXBwbGljYXRpb24vcGxhbmV0LWFwcGxpY2F0aW9uLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJeEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBVyxNQUFNLGFBQWEsQ0FBQztBQWMxRCxNQUFNLE9BQU8sb0JBQW9CO0lBeUI3QixZQUFZLElBQVksRUFBRSxPQUF5QjtRQUMvQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLE9BQU8sRUFBRTtZQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2hGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1NBQy9DO1FBQ0Qsc0dBQXNHO1FBQ3RHLHVFQUF1RTtRQUN2RSxNQUFNLENBQUMsZUFBZSxHQUFHLEdBQUcsRUFBRTtZQUMxQixhQUFhO1lBQ2IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQyxLQUFL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QztZQUN0RCxJQUFJLE1BQU0sRUFBRTtnQkFDUixNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDcEI7WUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUMxQjtZQUNELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGVSZWYsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQbGFuZXRQb3J0YWxBcHBsaWNhdGlvbiB9IGZyb20gJy4vcG9ydGFsLWFwcGxpY2F0aW9uJztcbmltcG9ydCB7IFBsYW50Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vY29tcG9uZW50L3BsYW50LWNvbXBvbmVudC5jb25maWcnO1xuaW1wb3J0IHsgUGxhbmV0Q29tcG9uZW50UmVmIH0gZnJvbSAnLi4vY29tcG9uZW50L3BsYW5ldC1jb21wb25lbnQtcmVmJztcbmltcG9ydCB7IGdldFRhZ05hbWVCeVRlbXBsYXRlIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBnZXRTYW5kYm94SW5zdGFuY2UsIFNhbmRib3ggfSBmcm9tICcuLi9zYW5kYm94Lyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vdHN0cmFwT3B0aW9ucyB7XG4gICAgdGVtcGxhdGU6IHN0cmluZztcbiAgICBib290c3RyYXA6IEJvb3RzdHJhcEFwcE1vZHVsZTtcbn1cblxuZXhwb3J0IHR5cGUgQm9vdHN0cmFwQXBwTW9kdWxlID0gKHBvcnRhbEFwcD86IFBsYW5ldFBvcnRhbEFwcGxpY2F0aW9uKSA9PiBQcm9taXNlPE5nTW9kdWxlUmVmPGFueT4+O1xuXG5leHBvcnQgdHlwZSBQbGFudENvbXBvbmVudEZhY3RvcnkgPSA8VERhdGEsIFRDb21wPihcbiAgICBjb21wb25lbnROYW1lOiBzdHJpbmcsXG4gICAgY29uZmlnOiBQbGFudENvbXBvbmVudENvbmZpZzxURGF0YT5cbikgPT4gUGxhbmV0Q29tcG9uZW50UmVmPFRDb21wPjtcblxuZXhwb3J0IGNsYXNzIFBsYW5ldEFwcGxpY2F0aW9uUmVmIHtcbiAgICBwdWJsaWMgYXBwTW9kdWxlUmVmOiBOZ01vZHVsZVJlZjxhbnk+O1xuICAgIHB1YmxpYyB0ZW1wbGF0ZTogc3RyaW5nO1xuICAgIHByaXZhdGUgaW5uZXJTZWxlY3Rvcjogc3RyaW5nO1xuICAgIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgcG9ydGFsQXBwOiBQbGFuZXRQb3J0YWxBcHBsaWNhdGlvbjtcbiAgICBwcml2YXRlIGFwcE1vZHVsZUJvb3RzdHJhcDogKGFwcDogUGxhbmV0UG9ydGFsQXBwbGljYXRpb24pID0+IFByb21pc2U8TmdNb2R1bGVSZWY8YW55Pj47XG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5OiBQbGFudENvbXBvbmVudEZhY3Rvcnk7XG5cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbm5lclNlbGVjdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYm9vdHN0cmFwcGVkKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLmFwcE1vZHVsZVJlZjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG5nWm9uZSgpOiBOZ1pvbmUge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBNb2R1bGVSZWYuaW5qZWN0b3IuZ2V0KE5nWm9uZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzYW5kYm94KCk6IFNhbmRib3gge1xuICAgICAgICByZXR1cm4gZ2V0U2FuZGJveEluc3RhbmNlKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBvcHRpb25zOiBCb290c3RyYXBPcHRpb25zKSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlID0gb3B0aW9ucy50ZW1wbGF0ZTtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJTZWxlY3RvciA9IHRoaXMudGVtcGxhdGUgPyBnZXRUYWdOYW1lQnlUZW1wbGF0ZSh0aGlzLnRlbXBsYXRlKSA6IG51bGw7XG4gICAgICAgICAgICB0aGlzLmFwcE1vZHVsZUJvb3RzdHJhcCA9IG9wdGlvbnMuYm9vdHN0cmFwO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoaXMgaXMgYSBoYWNrLCBzaW5jZSBOZ1pvbmUgZG9lc24ndCBhbGxvdyB5b3UgdG8gY29uZmlndXJlIHRoZSBwcm9wZXJ0eSB0aGF0IGlkZW50aWZpZXMgeW91ciB6b25lLlxuICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL1BsYWNlTWUtU0FTL3NpbmdsZS1zcGEtYW5ndWxhci1jbGkvaXNzdWVzLzMzLFxuICAgICAgICBOZ1pvbmUuaXNJbkFuZ3VsYXJab25lID0gKCkgPT4ge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5ab25lLmN1cnJlbnQuX3Byb3BlcnRpZXNbYG5neC1wbGFuZXQtJHtuYW1lfWBdID09PSB0cnVlO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIOWtkOW6lOeUqOi3r+eUseWPmOWMluWQjuWQjOatpeS/ruaUuSBwb3J0YWwg55qEIFJvdXRlXG4gICAgcHJpdmF0ZSBzeW5jUG9ydGFsUm91dGVXaGVuTmF2aWdhdGlvbkVuZCgpIHtcbiAgICAgICAgY29uc3Qgcm91dGVyID0gdGhpcy5hcHBNb2R1bGVSZWYuaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG4gICAgICAgIGlmIChyb3V0ZXIpIHtcbiAgICAgICAgICAgIHJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcnRhbEFwcC5yb3V0ZXIubmF2aWdhdGVCeVVybChldmVudC51cmwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBib290c3RyYXAoYXBwOiBQbGFuZXRQb3J0YWxBcHBsaWNhdGlvbik6IE9ic2VydmFibGU8dGhpcz4ge1xuICAgICAgICBpZiAoIXRoaXMuYXBwTW9kdWxlQm9vdHN0cmFwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGFwcCgke3RoaXMubmFtZX0pIGlzIG5vdCBkZWZpbmVkYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb3J0YWxBcHAgPSBhcHA7XG4gICAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICAgICAgdGhpcy5hcHBNb2R1bGVCb290c3RyYXAoYXBwKS50aGVuKGFwcE1vZHVsZVJlZiA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBNb2R1bGVSZWYgPSBhcHBNb2R1bGVSZWY7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBNb2R1bGVSZWYuaW5zdGFuY2UuYXBwTmFtZSA9IHRoaXMubmFtZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNQb3J0YWxSb3V0ZVdoZW5OYXZpZ2F0aW9uRW5kKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldFJvdXRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwTW9kdWxlUmVmLmluamVjdG9yLmdldChSb3V0ZXIpO1xuICAgIH1cblxuICAgIGdldEN1cnJlbnRSb3V0ZXJTdGF0ZVVybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um91dGVyKCkucm91dGVyU3RhdGUuc25hcHNob3QudXJsO1xuICAgIH1cblxuICAgIG5hdmlnYXRlQnlVcmwodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgcm91dGVyID0gdGhpcy5nZXRSb3V0ZXIoKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldENvbXBvbmVudEZhY3RvcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudEZhY3Rvcnk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudEZhY3Rvcnk6IFBsYW50Q29tcG9uZW50RmFjdG9yeSkge1xuICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnkgPSBjb21wb25lbnRGYWN0b3J5O1xuICAgIH1cblxuICAgIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFwcE1vZHVsZVJlZikge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVyID0gdGhpcy5hcHBNb2R1bGVSZWYuaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG4gICAgICAgICAgICBpZiAocm91dGVyKSB7XG4gICAgICAgICAgICAgICAgcm91dGVyLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNhbmRib3gpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhbmRib3guZGVzdHJveSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hcHBNb2R1bGVSZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuYXBwTW9kdWxlUmVmO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,87 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { HttpClient } from '@angular/common/http';
3
- import { shareReplay, map } from 'rxjs/operators';
4
- import { coerceArray } from '../helpers';
5
- import { AssetsLoader } from '../assets-loader';
6
- import { getApplicationService } from '../global-planet';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common/http";
9
- import * as i2 from "../assets-loader";
10
- export class PlanetApplicationService {
11
- constructor(http, assetsLoader) {
12
- this.http = http;
13
- this.assetsLoader = assetsLoader;
14
- this.apps = [];
15
- this.appsMap = {};
16
- if (getApplicationService()) {
17
- throw new Error('PlanetApplicationService has been injected in the portal, repeated injection is not allowed');
18
- }
19
- }
20
- register(appOrApps) {
21
- const apps = coerceArray(appOrApps);
22
- apps.forEach(app => {
23
- if (this.appsMap[app.name]) {
24
- throw new Error(`${app.name} has be registered.`);
25
- }
26
- this.apps.push(app);
27
- this.appsMap[app.name] = app;
28
- });
29
- }
30
- registerByUrl(url) {
31
- const result = this.http.get(`${url}`).pipe(map(apps => {
32
- if (apps && Array.isArray(apps)) {
33
- this.register(apps);
34
- }
35
- else {
36
- this.register(apps);
37
- }
38
- }), shareReplay());
39
- result.subscribe();
40
- return result;
41
- }
42
- unregister(name) {
43
- if (this.appsMap[name]) {
44
- delete this.appsMap[name];
45
- this.apps = this.apps.filter(app => {
46
- return app.name !== name;
47
- });
48
- }
49
- }
50
- getAppsByMatchedUrl(url) {
51
- return this.getApps().filter(app => {
52
- if (app.routerPathPrefix instanceof RegExp) {
53
- return app.routerPathPrefix.test(url);
54
- }
55
- else {
56
- return url.startsWith(app.routerPathPrefix);
57
- }
58
- });
59
- }
60
- getAppByName(name) {
61
- return this.appsMap[name];
62
- }
63
- getAppsToPreload(excludeAppNames) {
64
- return this.getApps().filter(app => {
65
- if (excludeAppNames) {
66
- return app.preload && !excludeAppNames.includes(app.name);
67
- }
68
- else {
69
- return app.preload;
70
- }
71
- });
72
- }
73
- getApps() {
74
- return this.apps;
75
- }
76
- }
77
- PlanetApplicationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlanetApplicationService_Factory() { return new PlanetApplicationService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.AssetsLoader)); }, token: PlanetApplicationService, providedIn: "root" });
78
- PlanetApplicationService.decorators = [
79
- { type: Injectable, args: [{
80
- providedIn: 'root'
81
- },] }
82
- ];
83
- PlanetApplicationService.ctorParameters = () => [
84
- { type: HttpClient },
85
- { type: AssetsLoader }
86
- ];
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbmV0LWFwcGxpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXQvc3JjL2FwcGxpY2F0aW9uL3BsYW5ldC1hcHBsaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFLekQsTUFBTSxPQUFPLHdCQUF3QjtJQUtqQyxZQUFvQixJQUFnQixFQUFVLFlBQTBCO1FBQXBELFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUpoRSxTQUFJLEdBQXdCLEVBQUUsQ0FBQztRQUUvQixZQUFPLEdBQXlDLEVBQUUsQ0FBQztRQUd2RCxJQUFJLHFCQUFxQixFQUFFLEVBQUU7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FDWCw2RkFBNkYsQ0FDaEcsQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBUyxTQUFrRTtRQUMvRSxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO2FBQ3JEO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFXO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3ZDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNQLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdkI7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUF5QixDQUFDLENBQUM7YUFDNUM7UUFDTCxDQUFDLENBQUMsRUFDRixXQUFXLEVBQUUsQ0FDaEIsQ0FBQztRQUNGLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMvQixPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsbUJBQW1CLENBQVMsR0FBVztRQUNuQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLFlBQVksTUFBTSxFQUFFO2dCQUN4QyxPQUFPLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekM7aUJBQU07Z0JBQ0gsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQy9DO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxlQUEwQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxlQUFlLEVBQUU7Z0JBQ2pCLE9BQU8sR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzdEO2lCQUFNO2dCQUNILE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQzthQUN0QjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE9BQU87UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQzs7OztZQTdFSixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQVRRLFVBQVU7WUFJVixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhbmV0QXBwbGljYXRpb24gfSBmcm9tICcuLi9wbGFuZXQuY2xhc3MnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IHNoYXJlUmVwbGF5LCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheSB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXNzZXRzTG9hZGVyIH0gZnJvbSAnLi4vYXNzZXRzLWxvYWRlcic7XG5pbXBvcnQgeyBnZXRBcHBsaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9nbG9iYWwtcGxhbmV0JztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQbGFuZXRBcHBsaWNhdGlvblNlcnZpY2Uge1xuICAgIHByaXZhdGUgYXBwczogUGxhbmV0QXBwbGljYXRpb25bXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBhcHBzTWFwOiB7IFtrZXk6IHN0cmluZ106IFBsYW5ldEFwcGxpY2F0aW9uIH0gPSB7fTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBhc3NldHNMb2FkZXI6IEFzc2V0c0xvYWRlcikge1xuICAgICAgICBpZiAoZ2V0QXBwbGljYXRpb25TZXJ2aWNlKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAnUGxhbmV0QXBwbGljYXRpb25TZXJ2aWNlIGhhcyBiZWVuIGluamVjdGVkIGluIHRoZSBwb3J0YWwsIHJlcGVhdGVkIGluamVjdGlvbiBpcyBub3QgYWxsb3dlZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3RlcjxURXh0cmE+KGFwcE9yQXBwczogUGxhbmV0QXBwbGljYXRpb248VEV4dHJhPiB8IFBsYW5ldEFwcGxpY2F0aW9uPFRFeHRyYT5bXSkge1xuICAgICAgICBjb25zdCBhcHBzID0gY29lcmNlQXJyYXkoYXBwT3JBcHBzKTtcbiAgICAgICAgYXBwcy5mb3JFYWNoKGFwcCA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBzTWFwW2FwcC5uYW1lXSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHthcHAubmFtZX0gaGFzIGJlIHJlZ2lzdGVyZWQuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFwcHMucHVzaChhcHApO1xuICAgICAgICAgICAgdGhpcy5hcHBzTWFwW2FwcC5uYW1lXSA9IGFwcDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJCeVVybCh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmh0dHAuZ2V0KGAke3VybH1gKS5waXBlKFxuICAgICAgICAgICAgbWFwKGFwcHMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhcHBzICYmIEFycmF5LmlzQXJyYXkoYXBwcykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlcihhcHBzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyKGFwcHMgYXMgUGxhbmV0QXBwbGljYXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoKVxuICAgICAgICApO1xuICAgICAgICByZXN1bHQuc3Vic2NyaWJlKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgdW5yZWdpc3RlcihuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwc01hcFtuYW1lXSkge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuYXBwc01hcFtuYW1lXTtcbiAgICAgICAgICAgIHRoaXMuYXBwcyA9IHRoaXMuYXBwcy5maWx0ZXIoYXBwID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwLm5hbWUgIT09IG5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEFwcHNCeU1hdGNoZWRVcmw8VEV4dHJhPih1cmw6IHN0cmluZyk6IFBsYW5ldEFwcGxpY2F0aW9uPFRFeHRyYT5bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFwcHMoKS5maWx0ZXIoYXBwID0+IHtcbiAgICAgICAgICAgIGlmIChhcHAucm91dGVyUGF0aFByZWZpeCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcHAucm91dGVyUGF0aFByZWZpeC50ZXN0KHVybCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB1cmwuc3RhcnRzV2l0aChhcHAucm91dGVyUGF0aFByZWZpeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEFwcEJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwc01hcFtuYW1lXTtcbiAgICB9XG5cbiAgICBnZXRBcHBzVG9QcmVsb2FkKGV4Y2x1ZGVBcHBOYW1lcz86IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFwcHMoKS5maWx0ZXIoYXBwID0+IHtcbiAgICAgICAgICAgIGlmIChleGNsdWRlQXBwTmFtZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwLnByZWxvYWQgJiYgIWV4Y2x1ZGVBcHBOYW1lcy5pbmNsdWRlcyhhcHAubmFtZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcHAucHJlbG9hZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0QXBwcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwcztcbiAgICB9XG59XG4iXX0=
@@ -1,16 +0,0 @@
1
- export class PlanetPortalApplication {
2
- navigateByUrl(url, extras) {
3
- return this.ngZone.run(() => {
4
- return this.router.navigateByUrl(url, extras);
5
- });
6
- }
7
- run(fn) {
8
- return this.ngZone.run(() => {
9
- return fn();
10
- });
11
- }
12
- tick() {
13
- this.applicationRef.tick();
14
- }
15
- }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLWFwcGxpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhbmV0L3NyYy9hcHBsaWNhdGlvbi9wb3J0YWwtYXBwbGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLHVCQUF1QjtJQVFoQyxhQUFhLENBQUMsR0FBcUIsRUFBRSxNQUF5QjtRQUMxRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUN4QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxHQUFHLENBQUksRUFBeUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBSSxHQUFHLEVBQUU7WUFDM0IsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFJO1FBQ0EsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXIsIFVybFRyZWUsIE5hdmlnYXRpb25FeHRyYXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTmdab25lLCBJbmplY3RvciwgQXBwbGljYXRpb25SZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdsb2JhbEV2ZW50RGlzcGF0Y2hlciB9IGZyb20gJy4uL2dsb2JhbC1ldmVudC1kaXNwYXRjaGVyJztcblxuZXhwb3J0IGNsYXNzIFBsYW5ldFBvcnRhbEFwcGxpY2F0aW9uPFREYXRhID0gYW55PiB7XG4gICAgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmO1xuICAgIGluamVjdG9yOiBJbmplY3RvcjtcbiAgICByb3V0ZXI6IFJvdXRlcjtcbiAgICBuZ1pvbmU6IE5nWm9uZTtcbiAgICBnbG9iYWxFdmVudERpc3BhdGNoZXI6IEdsb2JhbEV2ZW50RGlzcGF0Y2hlcjtcbiAgICBkYXRhOiBURGF0YTtcblxuICAgIG5hdmlnYXRlQnlVcmwodXJsOiBzdHJpbmcgfCBVcmxUcmVlLCBleHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsLCBleHRyYXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBydW48VD4oZm46ICguLi5hcmdzOiBhbnlbXSkgPT4gVCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5uZ1pvbmUucnVuPFQ+KCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmbigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aWNrKCkge1xuICAgICAgICB0aGlzLmFwcGxpY2F0aW9uUmVmLnRpY2soKTtcbiAgICB9XG59XG4iXX0=
@@ -1,155 +0,0 @@
1
- import { Injectable, ApplicationRef, NgModuleRef, NgZone, Inject } from '@angular/core';
2
- import { DomPortalOutlet, ComponentPortal, PortalInjector } from '@angular/cdk/portal';
3
- import { PlanetComponentRef } from './planet-component-ref';
4
- import { coerceArray } from '../helpers';
5
- import { map, shareReplay, delayWhen } from 'rxjs/operators';
6
- import { of, timer } from 'rxjs';
7
- import { DOCUMENT } from '@angular/common';
8
- import { globalPlanet, getApplicationLoader, getApplicationService } from '../global-planet';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/common";
11
- const componentWrapperClass = 'planet-component-wrapper';
12
- export class PlanetComponentLoader {
13
- constructor(applicationRef, ngModuleRef, ngZone, document) {
14
- this.applicationRef = applicationRef;
15
- this.ngModuleRef = ngModuleRef;
16
- this.ngZone = ngZone;
17
- this.document = document;
18
- this.domPortalOutletCache = new WeakMap();
19
- }
20
- get applicationLoader() {
21
- return getApplicationLoader();
22
- }
23
- get applicationService() {
24
- return getApplicationService();
25
- }
26
- getPlantAppRef(name) {
27
- if (globalPlanet.apps[name] && globalPlanet.apps[name].appModuleRef) {
28
- return of(globalPlanet.apps[name]);
29
- }
30
- else {
31
- const app = this.applicationService.getAppByName(name);
32
- return this.applicationLoader.preload(app, true).pipe(map(() => {
33
- return globalPlanet.apps[name];
34
- }));
35
- }
36
- }
37
- createInjector(appModuleRef, componentRef) {
38
- const injectionTokens = new WeakMap([[PlanetComponentRef, componentRef]]);
39
- const defaultInjector = appModuleRef.injector;
40
- return new PortalInjector(defaultInjector, injectionTokens);
41
- }
42
- getContainerElement(config) {
43
- if (!config.container) {
44
- throw new Error(`config 'container' cannot be null`);
45
- }
46
- else {
47
- if (config.container.nativeElement) {
48
- return config.container.nativeElement;
49
- }
50
- else {
51
- return config.container;
52
- }
53
- }
54
- }
55
- createWrapperElement(config) {
56
- const container = this.getContainerElement(config);
57
- const element = this.document.createElement('div');
58
- const subApp = this.applicationService.getAppByName(this.ngModuleRef.instance.appName);
59
- element.classList.add(componentWrapperClass);
60
- element.setAttribute('planet-inline', '');
61
- if (config.wrapperClass) {
62
- element.classList.add(config.wrapperClass);
63
- }
64
- if (subApp && subApp.stylePrefix) {
65
- element.classList.add(subApp.stylePrefix);
66
- }
67
- container.appendChild(element);
68
- return element;
69
- }
70
- attachComponent(plantComponent, appModuleRef, config) {
71
- const plantComponentRef = new PlanetComponentRef();
72
- const componentFactoryResolver = appModuleRef.componentFactoryResolver;
73
- const appRef = this.applicationRef;
74
- const injector = this.createInjector(appModuleRef, plantComponentRef);
75
- const wrapper = this.createWrapperElement(config);
76
- let portalOutlet = this.domPortalOutletCache.get(wrapper);
77
- if (portalOutlet) {
78
- portalOutlet.detach();
79
- }
80
- else {
81
- portalOutlet = new DomPortalOutlet(wrapper, componentFactoryResolver, appRef, injector);
82
- this.domPortalOutletCache.set(wrapper, portalOutlet);
83
- }
84
- const componentPortal = new ComponentPortal(plantComponent.component, null);
85
- const componentRef = portalOutlet.attachComponentPortal(componentPortal);
86
- if (config.initialState) {
87
- Object.assign(componentRef.instance, config.initialState);
88
- }
89
- plantComponentRef.componentInstance = componentRef.instance;
90
- plantComponentRef.componentRef = componentRef;
91
- plantComponentRef.wrapperElement = wrapper;
92
- plantComponentRef.dispose = () => {
93
- this.domPortalOutletCache.delete(wrapper);
94
- portalOutlet.dispose();
95
- };
96
- return plantComponentRef;
97
- }
98
- registerComponentFactory(componentOrComponents) {
99
- const app = this.ngModuleRef.instance.appName;
100
- this.getPlantAppRef(app).subscribe(appRef => {
101
- appRef.registerComponentFactory((componentName, config) => {
102
- const components = coerceArray(componentOrComponents);
103
- const component = components.find(item => item.name === componentName);
104
- if (component) {
105
- return this.ngZone.run(() => {
106
- const componentRef = this.attachComponent(component, appRef.appModuleRef, config);
107
- return componentRef;
108
- });
109
- }
110
- else {
111
- throw Error(`unregistered component ${componentName} in app ${app}`);
112
- }
113
- });
114
- });
115
- }
116
- register(components) {
117
- setTimeout(() => {
118
- this.registerComponentFactory(components);
119
- });
120
- }
121
- load(app, componentName, config) {
122
- const result = this.getPlantAppRef(app).pipe(delayWhen(appRef => {
123
- if (appRef.getComponentFactory()) {
124
- return of();
125
- }
126
- else {
127
- // Because register use 'setTimeout',so timer 20
128
- return timer(20);
129
- }
130
- }), map(appRef => {
131
- const componentFactory = appRef.getComponentFactory();
132
- if (componentFactory) {
133
- return componentFactory(componentName, config);
134
- }
135
- else {
136
- throw new Error(`${app}'s component(${componentName}) is not registered`);
137
- }
138
- }), shareReplay());
139
- result.subscribe();
140
- return result;
141
- }
142
- }
143
- PlanetComponentLoader.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlanetComponentLoader_Factory() { return new PlanetComponentLoader(i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(i0.NgModuleRef), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.DOCUMENT)); }, token: PlanetComponentLoader, providedIn: "root" });
144
- PlanetComponentLoader.decorators = [
145
- { type: Injectable, args: [{
146
- providedIn: 'root'
147
- },] }
148
- ];
149
- PlanetComponentLoader.ctorParameters = () => [
150
- { type: ApplicationRef },
151
- { type: NgModuleRef },
152
- { type: NgZone },
153
- { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
154
- ];
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbmV0LWNvbXBvbmVudC1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXQvc3JjL2NvbXBvbmVudC9wbGFuZXQtY29tcG9uZW50LWxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFjLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQWlCLGVBQWUsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBMkMsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLEVBQUUsRUFBd0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUU3RixNQUFNLHFCQUFxQixHQUFHLDBCQUEwQixDQUFDO0FBVXpELE1BQU0sT0FBTyxxQkFBcUI7SUFXOUIsWUFDWSxjQUE4QixFQUM5QixXQUE2QixFQUM3QixNQUFjLEVBQ0ksUUFBYTtRQUgvQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDSSxhQUFRLEdBQVIsUUFBUSxDQUFLO1FBZG5DLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUF3QixDQUFDO0lBZWhFLENBQUM7SUFiSixJ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RUFDckIsTUFBbUM7UUFFbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ3hDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNmLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLEVBQUU7Z0JBQzlCLE9BQU8sRUFBRSxFQUFFLENBQUM7YUFDZjtpQkFBTTtnQkFDSCxnREFBZ0Q7Z0JBQ2hELE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3BCO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1QsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUN0RCxJQUFJLGdCQUFnQixFQUFFO2dCQUNsQixPQUFPLGdCQUFnQixDQUFlLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNoRTtpQkFBTTtnQkFDSCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxnQkFBZ0IsYUFBYSxxQkFBcUIsQ0FBQyxDQUFDO2FBQzdFO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxFQUFFLENBQ2hCLENBQUM7UUFDRixNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkIsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQzs7OztZQXpKSixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQXBCb0IsY0FBYztZQUFFLFdBQVc7WUFBRSxNQUFNOzRDQW9DL0MsTUFBTSxTQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBBcHBsaWNhdGlvblJlZiwgTmdNb2R1bGVSZWYsIE5nWm9uZSwgRWxlbWVudFJlZiwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlLCBEb21Qb3J0YWxPdXRsZXQsIENvbXBvbmVudFBvcnRhbCwgUG9ydGFsSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IFBsYW5ldEFwcGxpY2F0aW9uUmVmIH0gZnJvbSAnLi4vYXBwbGljYXRpb24vcGxhbmV0LWFwcGxpY2F0aW9uLXJlZic7XG5pbXBvcnQgeyBQbGFuZXRDb21wb25lbnRSZWYgfSBmcm9tICcuL3BsYW5ldC1jb21wb25lbnQtcmVmJztcbmltcG9ydCB7IFBsYW50Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi9wbGFudC1jb21wb25lbnQuY29uZmlnJztcbmltcG9ydCB7IGNvZXJjZUFycmF5IH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCBmaW5hbGl6ZSwgZGVib3VuY2UsIGZpbHRlciwgdGFrZSwgZGVsYXksIGRlbGF5V2hlbiB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG9mLCBPYnNlcnZhYmxlLCBpbnRlcnZhbCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGdsb2JhbFBsYW5ldCwgZ2V0QXBwbGljYXRpb25Mb2FkZXIsIGdldEFwcGxpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2dsb2JhbC1wbGFuZXQnO1xuXG5jb25zdCBjb21wb25lbnRXcmFwcGVyQ2xhc3MgPSAncGxhbmV0LWNvbXBvbmVudC13cmFwcGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBQbGFuZXRDb21wb25lbnQ8VCA9IGFueT4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb21wb25lbnQ6IENvbXBvbmVudFR5cGU8VD47XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGxhbmV0Q29tcG9uZW50TG9hZGVyIHtcbiAgICBwcml2YXRlIGRvbVBvcnRhbE91dGxldENhY2hlID0gbmV3IFdlYWtNYXA8YW55LCBEb21Qb3J0YWxPdXRsZXQ+KCk7XG5cbiAgICBwcml2YXRlIGdldCBhcHBsaWNhdGlvbkxvYWRlcigpIHtcbiAgICAgICAgcmV0dXJuIGdldEFwcGxpY2F0aW9uTG9hZGVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgYXBwbGljYXRpb25TZXJ2aWNlKCkge1xuICAgICAgICByZXR1cm4gZ2V0QXBwbGljYXRpb25TZXJ2aWNlKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwcml2YXRlIG5nTW9kdWxlUmVmOiBOZ01vZHVsZVJlZjxhbnk+LFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnlcbiAgICApIHt9XG5cbiAgICBwcml2YXRlIGdldFBsYW50QXBwUmVmKG5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8UGxhbmV0QXBwbGljYXRpb25SZWY+IHtcbiAgICAgICAgaWYgKGdsb2JhbFBsYW5ldC5hcHBzW25hbWVdICYmIGdsb2JhbFBsYW5ldC5hcHBzW25hbWVdLmFwcE1vZHVsZVJlZikge1xuICAgICAgICAgICAgcmV0dXJuIG9mKGdsb2JhbFBsYW5ldC5hcHBzW25hbWVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGFwcCA9IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmdldEFwcEJ5TmFtZShuYW1lKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcGxpY2F0aW9uTG9hZGVyLnByZWxvYWQoYXBwLCB0cnVlKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnbG9iYWxQbGFuZXQuYXBwc1tuYW1lXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlSW5qZWN0b3I8VERhdGE+KFxuICAgICAgICBhcHBNb2R1bGVSZWY6IE5nTW9kdWxlUmVmPGFueT4sXG4gICAgICAgIGNvbXBvbmVudFJlZjogUGxhbmV0Q29tcG9uZW50UmVmPFREYXRhPlxuICAgICk6IFBvcnRhbEluamVjdG9yIHtcbiAgICAgICAgY29uc3QgaW5qZWN0aW9uVG9rZW5zID0gbmV3IFdlYWtNYXA8YW55LCBhbnk+KFtbUGxhbmV0Q29tcG9uZW50UmVmLCBjb21wb25lbnRSZWZdXSk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJbmplY3RvciA9IGFwcE1vZHVsZVJlZi5pbmplY3RvcjtcbiAgICAgICAgcmV0dXJuIG5ldyBQb3J0YWxJbmplY3RvcihkZWZhdWx0SW5qZWN0b3IsIGluamVjdGlvblRva2Vucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb250YWluZXJFbGVtZW50KGNvbmZpZzogUGxhbnRDb21wb25lbnRDb25maWcpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGlmICghY29uZmlnLmNvbnRhaW5lcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb25maWcgJ2NvbnRhaW5lcicgY2Fubm90IGJlIG51bGxgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICgoY29uZmlnLmNvbnRhaW5lciBhcyBFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChjb25maWcuY29udGFpbmVyIGFzIEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb25maWcuY29udGFpbmVyIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVXcmFwcGVyRWxlbWVudChjb25maWc6IFBsYW50Q29tcG9uZW50Q29uZmlnKSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0Q29udGFpbmVyRWxlbWVudChjb25maWcpO1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgY29uc3Qgc3ViQXBwID0gdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuZ2V0QXBwQnlOYW1lKHRoaXMubmdNb2R1bGVSZWYuaW5zdGFuY2UuYXBwTmFtZSk7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChjb21wb25lbnRXcmFwcGVyQ2xhc3MpO1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgncGxhbmV0LWlubGluZScsICcnKTtcbiAgICAgICAgaWYgKGNvbmZpZy53cmFwcGVyQ2xhc3MpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChjb25maWcud3JhcHBlckNsYXNzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3ViQXBwICYmIHN1YkFwcC5zdHlsZVByZWZpeCkge1xuICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKHN1YkFwcC5zdHlsZVByZWZpeCk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGF0dGFjaENvbXBvbmVudDxURGF0YT4oXG4gICAgICAgIHBsYW50Q29tcG9uZW50OiBQbGFuZXRDb21wb25lbnQsXG4gICAgICAgIGFwcE1vZHVsZVJlZjogTmdNb2R1bGVSZWY8YW55PixcbiAgICAgICAgY29uZmlnOiBQbGFudENvbXBvbmVudENvbmZpZ1xuICAgICk6IFBsYW5ldENvbXBvbmVudFJlZjxURGF0YT4ge1xuICAgICAgICBjb25zdCBwbGFudENvbXBvbmVudFJlZiA9IG5ldyBQbGFuZXRDb21wb25lbnRSZWYoKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyID0gYXBwTW9kdWxlUmVmLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjtcbiAgICAgICAgY29uc3QgYXBwUmVmID0gdGhpcy5hcHBsaWNhdGlvblJlZjtcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLmNyZWF0ZUluamVjdG9yPFREYXRhPihhcHBNb2R1bGVSZWYsIHBsYW50Q29tcG9uZW50UmVmKTtcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IHRoaXMuY3JlYXRlV3JhcHBlckVsZW1lbnQoY29uZmlnKTtcbiAgICAgICAgbGV0IHBvcnRhbE91dGxldCA9IHRoaXMuZG9tUG9ydGFsT3V0bGV0Q2FjaGUuZ2V0KHdyYXBwZXIpO1xuICAgICAgICBpZiAocG9ydGFsT3V0bGV0KSB7XG4gICAgICAgICAgICBwb3J0YWxPdXRsZXQuZGV0YWNoKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwb3J0YWxPdXRsZXQgPSBuZXcgRG9tUG9ydGFsT3V0bGV0KHdyYXBwZXIsIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgYXBwUmVmLCBpbmplY3Rvcik7XG4gICAgICAgICAgICB0aGlzLmRvbVBvcnRhbE91dGxldENhY2hlLnNldCh3cmFwcGVyLCBwb3J0YWxPdXRsZXQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwocGxhbnRDb21wb25lbnQuY29tcG9uZW50LCBudWxsKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gcG9ydGFsT3V0bGV0LmF0dGFjaENvbXBvbmVudFBvcnRhbDxURGF0YT4oY29tcG9uZW50UG9ydGFsKTtcbiAgICAgICAgaWYgKGNvbmZpZy5pbml0aWFsU3RhdGUpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oY29tcG9uZW50UmVmLmluc3RhbmNlLCBjb25maWcuaW5pdGlhbFN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBwbGFudENvbXBvbmVudFJlZi5jb21wb25lbnRJbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICAgICAgcGxhbnRDb21wb25lbnRSZWYuY29tcG9uZW50UmVmID0gY29tcG9uZW50UmVmO1xuICAgICAgICBwbGFudENvbXBvbmVudFJlZi53cmFwcGVyRWxlbWVudCA9IHdyYXBwZXI7XG4gICAgICAgIHBsYW50Q29tcG9uZW50UmVmLmRpc3Bvc2UgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRvbVBvcnRhbE91dGxldENhY2hlLmRlbGV0ZSh3cmFwcGVyKTtcbiAgICAgICAgICAgIHBvcnRhbE91dGxldC5kaXNwb3NlKCk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBwbGFudENvbXBvbmVudFJlZjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZ2lzdGVyQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnRPckNvbXBvbmVudHM6IFBsYW5ldENvbXBvbmVudCB8IFBsYW5ldENvbXBvbmVudFtdKSB7XG4gICAgICAgIGNvbnN0IGFwcCA9IHRoaXMubmdNb2R1bGVSZWYuaW5zdGFuY2UuYXBwTmFtZTtcbiAgICAgICAgdGhpcy5nZXRQbGFudEFwcFJlZihhcHApLnN1YnNjcmliZShhcHBSZWYgPT4ge1xuICAgICAgICAgICAgYXBwUmVmLnJlZ2lzdGVyQ29tcG9uZW50RmFjdG9yeSgoY29tcG9uZW50TmFtZTogc3RyaW5nLCBjb25maWc6IFBsYW50Q29tcG9uZW50Q29uZmlnPGFueT4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRzID0gY29lcmNlQXJyYXkoY29tcG9uZW50T3JDb21wb25lbnRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSBjb21wb25lbnRzLmZpbmQoaXRlbSA9PiBpdGVtLm5hbWUgPT09IGNvbXBvbmVudE5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmF0dGFjaENvbXBvbmVudDxhbnk+KGNvbXBvbmVudCwgYXBwUmVmLmFwcE1vZHVsZVJlZiwgY29uZmlnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRSZWY7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGB1bnJlZ2lzdGVyZWQgY29tcG9uZW50ICR7Y29tcG9uZW50TmFtZX0gaW4gYXBwICR7YXBwfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWdpc3Rlcihjb21wb25lbnRzOiBQbGFuZXRDb21wb25lbnQgfCBQbGFuZXRDb21wb25lbnRbXSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudHMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsb2FkPFRDb21wID0gdW5rbm93biwgVERhdGEgPSB1bmtub3duPihcbiAgICAgICAgYXBwOiBzdHJpbmcsXG4gICAgICAgIGNvbXBvbmVudE5hbWU6IHN0cmluZyxcbiAgICAgICAgY29uZmlnOiBQbGFudENvbXBvbmVudENvbmZpZzxURGF0YT5cbiAgICApOiBPYnNlcnZhYmxlPFBsYW5ldENvbXBvbmVudFJlZjxUQ29tcD4+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRQbGFudEFwcFJlZihhcHApLnBpcGUoXG4gICAgICAgICAgICBkZWxheVdoZW4oYXBwUmVmID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYXBwUmVmLmdldENvbXBvbmVudEZhY3RvcnkoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHJlZ2lzdGVyIHVzZSAnc2V0VGltZW91dCcsc28gdGltZXIgMjBcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRpbWVyKDIwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcChhcHBSZWYgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSBhcHBSZWYuZ2V0Q29tcG9uZW50RmFjdG9yeSgpO1xuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnRGYWN0b3J5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRGYWN0b3J5PFREYXRhLCBUQ29tcD4oY29tcG9uZW50TmFtZSwgY29uZmlnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7YXBwfSdzIGNvbXBvbmVudCgke2NvbXBvbmVudE5hbWV9KSBpcyBub3QgcmVnaXN0ZXJlZGApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoKVxuICAgICAgICApO1xuICAgICAgICByZXN1bHQuc3Vic2NyaWJlKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuIl19
package/esm2015/debug.js DELETED
@@ -1,33 +0,0 @@
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
- setDebugFactory(undefined);
28
- _debuggerMap = {};
29
- }
30
- export function getDebugFactory() {
31
- return _debugFactory;
32
- }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXQvc3JjL2RlYnVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUErQnZDOztHQUVHO0FBQ0gsSUFBSSxhQUFvQixDQUFDO0FBQ3pCLElBQUksWUFBWSxHQUE2QixFQUFFLENBQUM7QUFFaEQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxTQUFpQjtJQUN6QyxNQUFNLEdBQUcsR0FBRyxVQUFVLFNBQVMsRUFBRSxDQUFDO0lBQ2xDLE9BQU8sVUFBUyxTQUFjLEVBQUUsR0FBRyxJQUFXO1FBQzFDLElBQUksYUFBYSxFQUFFO1lBQ2YsSUFBSSxhQUFhLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ2hCLGFBQWEsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25DLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUM7YUFDckM7WUFDRCxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBWTtJQUN4QyxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7S0FDdEU7SUFDRCxhQUFhLEdBQUcsS0FBSyxDQUFDO0FBQzFCLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCO0lBQzdCLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQixZQUFZLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZTtJQUMzQixPQUFPLGFBQWEsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJy4vaGVscGVycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVidWdnZXIge1xuICAgIChmb3JtYXR0ZXI6IGFueSwgLi4uYXJnczogYW55W10pOiB2b2lkO1xuXG4gICAgLy8gY29sb3I6IHN0cmluZztcbiAgICAvLyBlbmFibGVkOiBib29sZWFuO1xuICAgIC8vIGxvZzogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk7XG4gICAgLy8gbmFtZXNwYWNlOiBzdHJpbmc7XG4gICAgLy8gZGVzdHJveTogKCkgPT4gYm9vbGVhbjtcbiAgICAvLyBleHRlbmQ6IChuYW1lc3BhY2U6IHN0cmluZywgZGVsaW1pdGVyPzogc3RyaW5nKSA9PiBEZWJ1Z2dlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtYXR0ZXJzIHtcbiAgICBbZm9ybWF0dGVyOiBzdHJpbmddOiAodjogYW55KSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVidWcge1xuICAgIChuYW1lc3BhY2U6IHN0cmluZyk6IERlYnVnZ2VyO1xuICAgIGNvZXJjZTogKHZhbDogYW55KSA9PiBhbnk7XG4gICAgZGlzYWJsZTogKCkgPT4gc3RyaW5nO1xuICAgIGVuYWJsZTogKG5hbWVzcGFjZXM6IHN0cmluZykgPT4gdm9pZDtcbiAgICBlbmFibGVkOiAobmFtZXNwYWNlczogc3RyaW5nKSA9PiBib29sZWFuO1xuICAgIGxvZzogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk7XG5cbiAgICBuYW1lczogUmVnRXhwW107XG4gICAgc2tpcHM6IFJlZ0V4cFtdO1xuXG4gICAgZm9ybWF0dGVyczogRm9ybWF0dGVycztcbn1cblxuLyoqXG4gKiBEZWJ1ZyBmYWN0b3J5IGZvciBkZWJ1ZyBtb2R1bGVcbiAqL1xubGV0IF9kZWJ1Z0ZhY3Rvcnk6IERlYnVnO1xubGV0IF9kZWJ1Z2dlck1hcDogUmVjb3JkPHN0cmluZywgRGVidWdnZXI+ID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWJ1ZyhuYW1lc3BhY2U6IHN0cmluZyk6IERlYnVnZ2VyIHtcbiAgICBjb25zdCBrZXkgPSBgcGxhbmV0OiR7bmFtZXNwYWNlfWA7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGZvcm1hdHRlcjogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICBpZiAoX2RlYnVnRmFjdG9yeSkge1xuICAgICAgICAgICAgbGV0IGRlYnVnRGVidWdnZXIgPSBfZGVidWdnZXJNYXBba2V5XTtcbiAgICAgICAgICAgIGlmICghZGVidWdEZWJ1Z2dlcikge1xuICAgICAgICAgICAgICAgIGRlYnVnRGVidWdnZXIgPSBfZGVidWdGYWN0b3J5KGtleSk7XG4gICAgICAgICAgICAgICAgX2RlYnVnZ2VyTWFwW2tleV0gPSBkZWJ1Z0RlYnVnZ2VyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVidWdEZWJ1Z2dlcihmb3JtYXR0ZXIsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldERlYnVnRmFjdG9yeShkZWJ1ZzogRGVidWcpIHtcbiAgICBpZiAoZGVidWcgJiYgIWlzRnVuY3Rpb24oZGVidWcpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZGVidWcgZmFjdG9yeSB0eXBlIGlzIGludmFsaWQsIG11c3QgYmUgZnVuY3Rpb24nKTtcbiAgICB9XG4gICAgX2RlYnVnRmFjdG9yeSA9IGRlYnVnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJEZWJ1Z0ZhY3RvcnkoKSB7XG4gICAgc2V0RGVidWdGYWN0b3J5KHVuZGVmaW5lZCk7XG4gICAgX2RlYnVnZ2VyTWFwID0ge307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWJ1Z0ZhY3RvcnkoKSB7XG4gICAgcmV0dXJuIF9kZWJ1Z0ZhY3Rvcnk7XG59XG4iXX0=
@@ -1,10 +0,0 @@
1
- import { Component } from '@angular/core';
2
- export class EmptyComponent {
3
- }
4
- EmptyComponent.decorators = [
5
- { type: Component, args: [{
6
- selector: 'empty-component',
7
- template: ``
8
- },] }
9
- ];
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhbmV0L3NyYy9lbXB0eS9lbXB0eS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0xQyxNQUFNLE9BQU8sY0FBYzs7O1lBSjFCLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixRQUFRLEVBQUUsRUFBRTthQUNmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZW1wdHktY29tcG9uZW50JyxcbiAgICB0ZW1wbGF0ZTogYGBcbn0pXG5leHBvcnQgY2xhc3MgRW1wdHlDb21wb25lbnQge31cbiJdfQ==
@@ -1,51 +0,0 @@
1
- import { PlanetApplicationRef } from './application/planet-application-ref';
2
- import { isFunction } from './helpers';
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 PlanetApplicationRef(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 setPortalApplicationData(data) {
28
- globalPlanet.portalApplication.data = data;
29
- }
30
- export function getPortalApplicationData() {
31
- return globalPlanet.portalApplication.data;
32
- }
33
- export function setApplicationLoader(loader) {
34
- globalPlanet.applicationLoader = loader;
35
- }
36
- export function getApplicationLoader() {
37
- return globalPlanet.applicationLoader;
38
- }
39
- export function setApplicationService(service) {
40
- globalPlanet.applicationService = service;
41
- }
42
- export function getApplicationService() {
43
- return globalPlanet.applicationService;
44
- }
45
- export function clearGlobalPlanet() {
46
- window.planet.apps = {};
47
- window.planet.portalApplication = null;
48
- window.planet.applicationLoader = null;
49
- window.planet.applicationService = null;
50
- }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXBsYW5ldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvZ2xvYmFsLXBsYW5ldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQXdDLE1BQU0sc0NBQXNDLENBQUM7QUFJbEgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQVd2QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJO0lBQ3hFLElBQUksRUFBRSxFQUFFO0NBQ1gsQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLGlCQUFpQixDQUFDLElBQVksRUFBRSxPQUE4QztJQUMxRixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUkseUJBQXlCLENBQUMsQ0FBQztLQUNyRDtJQUNELElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ3JCLE9BQU8sR0FBRztZQUNOLFFBQVEsRUFBRSxFQUFFO1lBQ1osU0FBUyxFQUFFLE9BQTZCO1NBQzNDLENBQUM7S0FDTDtJQUNELE1BQU0sTUFBTSxHQUFHLElBQUksb0JBQW9CLENBQUMsSUFBSSxFQUFFLE9BQTJCLENBQUMsQ0FBQztJQUMzRSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUNyQyxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE9BQWU7SUFDbkQsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLElBQUksSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ2pFLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNyQztTQUFNO1FBQ0gsT0FBTyxJQUFJLENBQUM7S0FDZjtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUksSUFBTztJQUMvQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUMvQyxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QjtJQUNwQyxPQUFPLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFhLENBQUM7QUFDeEQsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxNQUErQjtJQUNoRSxZQUFZLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CO0lBQ2hDLE9BQU8sWUFBWSxDQUFDLGlCQUFpQixDQUFDO0FBQzFDLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsT0FBaUM7SUFDbkUsWUFBWSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztBQUM5QyxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQjtJQUNqQyxPQUFPLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQztBQUMzQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQjtJQUM3QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDeEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDdkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDdkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYW5ldEFwcGxpY2F0aW9uUmVmLCBCb290c3RyYXBBcHBNb2R1bGUsIEJvb3RzdHJhcE9wdGlvbnMgfSBmcm9tICcuL2FwcGxpY2F0aW9uL3BsYW5ldC1hcHBsaWNhdGlvbi1yZWYnO1xuaW1wb3J0IHsgUGxhbmV0UG9ydGFsQXBwbGljYXRpb24gfSBmcm9tICcuL2FwcGxpY2F0aW9uL3BvcnRhbC1hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBQbGFuZXRBcHBsaWNhdGlvbkxvYWRlciB9IGZyb20gJy4vYXBwbGljYXRpb24vcGxhbmV0LWFwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgeyBQbGFuZXRBcHBsaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL2FwcGxpY2F0aW9uL3BsYW5ldC1hcHBsaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogYW55O1xuXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JhbFBsYW5ldCB7XG4gICAgYXBwczogeyBba2V5OiBzdHJpbmddOiBQbGFuZXRBcHBsaWNhdGlvblJlZiB9O1xuICAgIHBvcnRhbEFwcGxpY2F0aW9uPzogUGxhbmV0UG9ydGFsQXBwbGljYXRpb247XG4gICAgYXBwbGljYXRpb25Mb2FkZXI/OiBQbGFuZXRBcHBsaWNhdGlvbkxvYWRlcjtcbiAgICBhcHBsaWNhdGlvblNlcnZpY2U/OiBQbGFuZXRBcHBsaWNhdGlvblNlcnZpY2U7XG59XG5cbmV4cG9ydCBjb25zdCBnbG9iYWxQbGFuZXQ6IEdsb2JhbFBsYW5ldCA9ICh3aW5kb3cucGxhbmV0ID0gd2luZG93LnBsYW5ldCB8fCB7XG4gICAgYXBwczoge31cbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lQXBwbGljYXRpb24obmFtZTogc3RyaW5nLCBvcHRpb25zOiBCb290c3RyYXBBcHBNb2R1bGUgfCBCb290c3RyYXBPcHRpb25zKSB7XG4gICAgaWYgKGdsb2JhbFBsYW5ldC5hcHBzW25hbWVdKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSBhcHBsaWNhdGlvbiBoYXMgZXhpc3QuYCk7XG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKG9wdGlvbnMpKSB7XG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICB0ZW1wbGF0ZTogJycsXG4gICAgICAgICAgICBib290c3RyYXA6IG9wdGlvbnMgYXMgQm9vdHN0cmFwQXBwTW9kdWxlXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGFwcFJlZiA9IG5ldyBQbGFuZXRBcHBsaWNhdGlvblJlZihuYW1lLCBvcHRpb25zIGFzIEJvb3RzdHJhcE9wdGlvbnMpO1xuICAgIGdsb2JhbFBsYW5ldC5hcHBzW25hbWVdID0gYXBwUmVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGxhbmV0QXBwbGljYXRpb25SZWYoYXBwTmFtZTogc3RyaW5nKTogUGxhbmV0QXBwbGljYXRpb25SZWYge1xuICAgIGlmIChnbG9iYWxQbGFuZXQgJiYgZ2xvYmFsUGxhbmV0LmFwcHMgJiYgZ2xvYmFsUGxhbmV0LmFwcHNbYXBwTmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIGdsb2JhbFBsYW5ldC5hcHBzW2FwcE5hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFBvcnRhbEFwcGxpY2F0aW9uRGF0YTxUPihkYXRhOiBUKSB7XG4gICAgZ2xvYmFsUGxhbmV0LnBvcnRhbEFwcGxpY2F0aW9uLmRhdGEgPSBkYXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9ydGFsQXBwbGljYXRpb25EYXRhPFREYXRhPigpOiBURGF0YSB7XG4gICAgcmV0dXJuIGdsb2JhbFBsYW5ldC5wb3J0YWxBcHBsaWNhdGlvbi5kYXRhIGFzIFREYXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0QXBwbGljYXRpb25Mb2FkZXIobG9hZGVyOiBQbGFuZXRBcHBsaWNhdGlvbkxvYWRlcikge1xuICAgIGdsb2JhbFBsYW5ldC5hcHBsaWNhdGlvbkxvYWRlciA9IGxvYWRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcGxpY2F0aW9uTG9hZGVyKCkge1xuICAgIHJldHVybiBnbG9iYWxQbGFuZXQuYXBwbGljYXRpb25Mb2FkZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBcHBsaWNhdGlvblNlcnZpY2Uoc2VydmljZTogUGxhbmV0QXBwbGljYXRpb25TZXJ2aWNlKSB7XG4gICAgZ2xvYmFsUGxhbmV0LmFwcGxpY2F0aW9uU2VydmljZSA9IHNlcnZpY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBcHBsaWNhdGlvblNlcnZpY2UoKSB7XG4gICAgcmV0dXJuIGdsb2JhbFBsYW5ldC5hcHBsaWNhdGlvblNlcnZpY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckdsb2JhbFBsYW5ldCgpIHtcbiAgICB3aW5kb3cucGxhbmV0LmFwcHMgPSB7fTtcbiAgICB3aW5kb3cucGxhbmV0LnBvcnRhbEFwcGxpY2F0aW9uID0gbnVsbDtcbiAgICB3aW5kb3cucGxhbmV0LmFwcGxpY2F0aW9uTG9hZGVyID0gbnVsbDtcbiAgICB3aW5kb3cucGxhbmV0LmFwcGxpY2F0aW9uU2VydmljZSA9IG51bGw7XG59XG4iXX0=