piral-ng 0.15.0-beta.4808 → 0.15.0-beta.4813

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.
@@ -4,6 +4,41 @@ exports.RoutingService = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const core_1 = require("@angular/core");
6
6
  const router_1 = require("@angular/router");
7
+ const common_1 = require("@angular/common");
8
+ let skipNavigation = false;
9
+ const noop = function () { };
10
+ const navigateByUrl = router_1.Router.prototype.navigateByUrl;
11
+ // deactivates the usual platform behavior; all these operations are performed via the RoutingService
12
+ // to avoid any conflict, e.g., double-booking URL changes in React and Angular
13
+ common_1.ɵBrowserPlatformLocation.prototype.pushState = noop;
14
+ common_1.ɵBrowserPlatformLocation.prototype.replaceState = noop;
15
+ common_1.ɵBrowserPlatformLocation.prototype.forward = noop;
16
+ common_1.ɵBrowserPlatformLocation.prototype.back = noop;
17
+ common_1.ɵBrowserPlatformLocation.prototype.historyGo = noop;
18
+ // required to detect / react to hidden URL change (see #554 for details)
19
+ router_1.Router.prototype.navigateByUrl = function (url, extras) {
20
+ var _a;
21
+ skipNavigation = (_a = extras === null || extras === void 0 ? void 0 : extras.skipLocationChange) !== null && _a !== void 0 ? _a : false;
22
+ const result = navigateByUrl.call(this, url, extras);
23
+ skipNavigation = false;
24
+ return result;
25
+ };
26
+ function normalize(url) {
27
+ const search = url.indexOf('?');
28
+ const hash = url.indexOf('#');
29
+ if (search !== -1 || hash !== -1) {
30
+ if (search === -1) {
31
+ return url.substring(0, hash);
32
+ }
33
+ else if (hash === -1) {
34
+ return url.substring(0, search);
35
+ }
36
+ else {
37
+ return url.substring(0, Math.min(search, hash));
38
+ }
39
+ }
40
+ return url;
41
+ }
7
42
  let RoutingService = class RoutingService {
8
43
  constructor(context, router, zone) {
9
44
  this.context = context;
@@ -18,30 +53,44 @@ let RoutingService = class RoutingService {
18
53
  }
19
54
  throw error;
20
55
  };
56
+ const skipIds = [];
21
57
  const nav = this.context.navigation;
22
58
  this.dispose = nav.listen(({ location }) => {
23
59
  const path = location.pathname;
24
60
  if (!this.invalidRoutes.includes(path)) {
25
- const url = path + location.search + location.hash;
26
- this.zone.run(() => this.router.navigateByUrl(url));
61
+ const url = `${path}${location.search}${location.hash}`;
62
+ this.zone.run(() => navigateByUrl.call(this.router, url));
27
63
  }
28
64
  });
29
65
  this.subscription = this.router.events.subscribe((e) => {
30
66
  if (e instanceof router_1.NavigationError) {
31
- const path = e.url;
67
+ const routerUrl = e.url;
68
+ const path = normalize(routerUrl);
69
+ const locationUrl = nav.url;
32
70
  if (!this.invalidRoutes.includes(path)) {
33
71
  this.invalidRoutes.push(path);
34
72
  }
35
- nav.push(path);
36
- }
37
- else if (e.type === 15) {
38
- // consistency check to avoid #535 and other Angular-specific issues
39
- const locationUrl = nav.path;
40
- const routerUrl = e.routerEvent.url;
41
73
  if (routerUrl !== locationUrl) {
42
74
  nav.push(routerUrl);
43
75
  }
44
76
  }
77
+ else if (e.type === 0 && skipNavigation) {
78
+ skipIds.push(e.id);
79
+ }
80
+ else if (e.type === 15) {
81
+ const index = skipIds.indexOf(e.routerEvent.id);
82
+ if (index === -1) {
83
+ // consistency check to avoid #535 and other Angular-specific issues
84
+ const locationUrl = nav.url;
85
+ const routerUrl = e.routerEvent.url;
86
+ if (routerUrl !== locationUrl) {
87
+ nav.push(routerUrl);
88
+ }
89
+ }
90
+ else {
91
+ skipIds.splice(index, 1);
92
+ }
93
+ }
45
94
  });
46
95
  }
47
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RoutingService.js","sourceRoot":"","sources":["../src/RoutingService.ts"],"names":[],"mappings":";;;;AAEA,wCAAgF;AAChF,4CAAkE;AAGlE,IAAa,cAAc,GAA3B,MAAa,cAAc;IAKzB,YAC4B,OAAyB,EAC/B,MAAc,EACd,IAAY;QAFN,YAAO,GAAP,OAAO,CAAkB;QAC/B,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;QAL1B,kBAAa,GAAkB,EAAE,CAAC;QAOxC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,KAAY,EAAE,EAAE;gBAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE;oBAClD,4BAA4B;oBAC5B,OAAO,SAAS,CAAC;iBAClB;gBACD,MAAM,KAAK,CAAC;YACd,CAAC,CAAC;YAEF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAEpC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBAE/B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBACtC,MAAM,GAAG,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;oBACnD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;iBACrD;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAA2B,EAAE,EAAE;gBAC/E,IAAI,CAAC,YAAY,wBAAe,EAAE;oBAChC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;oBAEnB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;wBACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC/B;oBAED,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAChB;qBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,EAAE;oBACxB,oEAAoE;oBACpE,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;oBAC7B,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC;oBAEpC,IAAI,SAAS,KAAK,WAAW,EAAE;wBAC7B,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBACrB;iBACF;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,WAAW;;QACT,MAAA,IAAI,CAAC,OAAO,oDAAI,CAAC;QACjB,MAAA,IAAI,CAAC,YAAY,0CAAE,WAAW,EAAE,CAAC;IACnC,CAAC;CACF,CAAA;AAxDY,cAAc;IAD1B,IAAA,iBAAU,GAAE;IAOR,mBAAA,IAAA,aAAM,EAAC,SAAS,CAAC,CAAA;IACjB,mBAAA,IAAA,eAAQ,GAAE,CAAA;IACV,mBAAA,IAAA,eAAQ,GAAE,CAAA;qDADiB,eAAM;QACR,aAAM;GARvB,cAAc,CAwD1B;AAxDY,wCAAc"}
1
+ {"version":3,"file":"RoutingService.js","sourceRoot":"","sources":["../src/RoutingService.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,18 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ɵɵFactoryDeclaration, ɵɵInjectorDeclaration, ɵɵNgModuleDeclaration } from '@angular/core';
3
+ import { NgExtension } from './NgExtension';
4
+ import { ResourceUrlPipe } from './ResourceUrlPipe';
1
5
  export declare class SharedModule {
2
6
  static props: {};
7
+ static ɵfac: ɵɵFactoryDeclaration<SharedModule, never>;
8
+ static ɵmod: ɵɵNgModuleDeclaration<SharedModule, [
9
+ typeof NgExtension,
10
+ typeof ResourceUrlPipe
11
+ ], [
12
+ typeof CommonModule
13
+ ], [
14
+ typeof NgExtension,
15
+ typeof ResourceUrlPipe
16
+ ]>;
17
+ static ɵinj: ɵɵInjectorDeclaration<SharedModule>;
3
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SharedModule.js","sourceRoot":"","sources":["../src/SharedModule.ts"],"names":[],"mappings":";;;;AAAA,4CAA+C;AAC/C,wCAAyC;AACzC,+CAA4C;AAC5C,uDAAoD;AAEpD,MAAM,eAAe,GAAG,CAAC,yBAAW,EAAE,iCAAe,CAAC,CAAC;AACvD,MAAM,UAAU,GAAG,CAAC,yBAAW,EAAE,iCAAe,CAAC,CAAC;AAClD,MAAM,UAAU,GAAG,CAAC,qBAAY,CAAC,CAAC;AAQlC,IAAa,YAAY,GAAzB,MAAa,YAAY;CAExB,CAAA;AADQ,kBAAK,GAAG,EAAE,CAAC;AADP,YAAY;IANxB,IAAA,eAAQ,EAAC;QACR,YAAY,EAAE,eAAe;QAC7B,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,UAAU;QACnB,OAAO,EAAE,UAAU;KACpB,CAAC;GACW,YAAY,CAExB;AAFY,oCAAY"}
1
+ {"version":3,"file":"SharedModule.js","sourceRoot":"","sources":["../src/SharedModule.ts"],"names":[],"mappings":";;;;AAAA,4CAA+C;AAC/C,wCAA6G;AAC7G,+CAA4C;AAC5C,uDAAoD;AAEpD,MAAM,eAAe,GAAG,CAAC,yBAAW,EAAE,iCAAe,CAAC,CAAC;AACvD,MAAM,UAAU,GAAG,CAAC,yBAAW,EAAE,iCAAe,CAAC,CAAC;AAClD,MAAM,UAAU,GAAG,CAAC,qBAAY,CAAC,CAAC;AAQlC,IAAa,YAAY,GAAzB,MAAa,YAAY;CAaxB,CAAA;AAZQ,kBAAK,GAAG,EAAE,CAAC;AADP,YAAY;IANxB,IAAA,eAAQ,EAAC;QACR,YAAY,EAAE,eAAe;QAC7B,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,UAAU;QACnB,OAAO,EAAE,UAAU;KACpB,CAAC;GACW,YAAY,CAaxB;AAbY,oCAAY"}
@@ -1,5 +1,6 @@
1
1
  import type { BaseComponentProps, ComponentContext, Disposable, PiletApi } from 'piral-core';
2
2
  import type { BehaviorSubject } from 'rxjs';
3
- import type { PrepareBootstrapResult } from './types';
4
- export declare function prepareBootstrap(moduleOrComponent: any, piral: PiletApi): PrepareBootstrapResult;
3
+ import type { Type } from '@angular/core';
4
+ import type { NgLazyType, PrepareBootstrapResult } from './types';
5
+ export declare function prepareBootstrap(moduleOrComponent: Type<any> | NgLazyType, piral: PiletApi): Promise<PrepareBootstrapResult>;
5
6
  export declare function bootstrap<TProps extends BaseComponentProps>(result: PrepareBootstrapResult, node: HTMLElement, props: BehaviorSubject<TProps>, context: ComponentContext): Promise<Disposable>;
package/lib/bootstrap.js CHANGED
@@ -2,27 +2,49 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.bootstrap = exports.prepareBootstrap = void 0;
4
4
  const tslib_1 = require("tslib");
5
- const startup_1 = require("./startup");
6
- const utils_1 = require("./utils");
7
5
  const module_1 = require("./module");
6
+ const utils_1 = require("./utils");
7
+ const startup_1 = require("./startup");
8
8
  function prepareBootstrap(moduleOrComponent, piral) {
9
- const [annotation] = (0, utils_1.getAnnotations)(moduleOrComponent);
10
- const standalone = annotation === null || annotation === void 0 ? void 0 : annotation.standalone;
11
- // first way is to directly use a module, which is the legacy way
12
- // second way is to find a previously defined Angular module
13
- if (annotation && annotation.bootstrap) {
14
- // usually contains things like imports, exports, declarations, ...
15
- const [component] = annotation.bootstrap;
16
- annotation.exports = [component];
17
- (0, module_1.defineModule)(moduleOrComponent);
18
- return [...(0, module_1.getModuleInstance)(component, standalone, piral), component];
19
- }
20
- else {
21
- // usually contains things like selector, template or templateUrl, changeDetection, ...
22
- const result = (0, module_1.getModuleInstance)(moduleOrComponent, standalone, piral) ||
23
- (0, module_1.createModuleInstance)(moduleOrComponent, standalone, piral);
24
- return [...result, moduleOrComponent];
25
- }
9
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
10
+ if ('module' in moduleOrComponent && typeof moduleOrComponent.module === 'function') {
11
+ if (!(moduleOrComponent.state.current instanceof Promise)) {
12
+ moduleOrComponent.state.current = moduleOrComponent.module().then((result) => {
13
+ if (typeof result !== 'object' || !('default' in result)) {
14
+ throw new Error('The lazy loaded module does not `default` export a NgModule class.');
15
+ }
16
+ (0, module_1.defineModule)(result.default, moduleOrComponent.opts);
17
+ return (0, module_1.findModule)(result.default);
18
+ });
19
+ }
20
+ const moduleDef = yield moduleOrComponent.state.current;
21
+ const { components } = moduleDef;
22
+ const component = components.find((m) => (0, utils_1.hasSelector)(m, moduleOrComponent.selector));
23
+ if (!component) {
24
+ throw new Error(`No component matching the selector "${moduleOrComponent.selector}" has been found.`);
25
+ }
26
+ return [...(0, module_1.activateModuleInstance)(moduleDef, piral), component];
27
+ }
28
+ else {
29
+ const [annotation] = (0, utils_1.getAnnotations)(moduleOrComponent);
30
+ const standalone = annotation === null || annotation === void 0 ? void 0 : annotation.standalone;
31
+ // first way is to directly use a module, which is the legacy way
32
+ // second way is to find a previously defined Angular module
33
+ if (annotation && annotation.bootstrap) {
34
+ // usually contains things like imports, exports, declarations, ...
35
+ const [component] = annotation.bootstrap;
36
+ annotation.exports = [component];
37
+ (0, module_1.defineModule)(moduleOrComponent);
38
+ return [...(0, module_1.getModuleInstance)(component, standalone, piral), component];
39
+ }
40
+ else {
41
+ // usually contains things like selector, template or templateUrl, changeDetection, ...
42
+ const result = (0, module_1.getModuleInstance)(moduleOrComponent, standalone, piral) ||
43
+ (0, module_1.createModuleInstance)(moduleOrComponent, standalone, piral);
44
+ return [...result, moduleOrComponent];
45
+ }
46
+ }
47
+ });
26
48
  }
27
49
  exports.prepareBootstrap = prepareBootstrap;
28
50
  function bootstrap(result, node, props, context) {
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":";;;;AAGA,uCAAoC;AACpC,mCAAyC;AACzC,qCAAiF;AAEjF,SAAgB,gBAAgB,CAAC,iBAAsB,EAAE,KAAe;IACtE,MAAM,CAAC,UAAU,CAAC,GAAG,IAAA,sBAAc,EAAC,iBAAiB,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,CAAC;IAE1C,iEAAiE;IACjE,4DAA4D;IAC5D,IAAI,UAAU,IAAI,UAAU,CAAC,SAAS,EAAE;QACtC,mEAAmE;QACnE,MAAM,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC;QACzC,UAAU,CAAC,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;QACjC,IAAA,qBAAY,EAAC,iBAAiB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,IAAA,0BAAiB,EAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;KACxE;SAAM;QACL,uFAAuF;QACvF,MAAM,MAAM,GACV,IAAA,0BAAiB,EAAC,iBAAiB,EAAE,UAAU,EAAE,KAAK,CAAC;YACvD,IAAA,6BAAoB,EAAC,iBAAiB,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,MAAM,EAAE,iBAAiB,CAAC,CAAC;KACvC;AACH,CAAC;AAnBD,4CAmBC;AAED,SAAsB,SAAS,CAC7B,MAA8B,EAC9B,IAAiB,EACjB,KAA8B,EAC9B,OAAyB;;QAEzB,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,IAAA,iBAAO,EAAC,cAAc,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAE9D,IAAI,GAAG,EAAE;YACP,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5C,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SACnD;QAED,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC;CAAA;AAfD,8BAeC"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
package/lib/converter.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createConverter = void 0;
4
+ const tslib_1 = require("tslib");
4
5
  const rxjs_1 = require("rxjs");
5
6
  const NgExtension_1 = require("./NgExtension");
6
7
  const queue_1 = require("./queue");
@@ -11,23 +12,27 @@ function createConverter(_ = {}) {
11
12
  const convert = (component) => ({
12
13
  mount(el, props, ctx, locals) {
13
14
  locals.active = true;
14
- if (!registry.has(component)) {
15
- registry.set(component, (0, bootstrap_1.prepareBootstrap)(component, props.piral));
16
- }
17
15
  if (!locals.props) {
18
16
  locals.props = new rxjs_1.BehaviorSubject(props);
19
17
  }
20
18
  if (!locals.queued) {
21
19
  locals.queued = Promise.resolve();
22
20
  }
23
- locals.queued = locals.queued.then(() => (0, queue_1.enqueue)(() => locals.active && (0, bootstrap_1.bootstrap)(registry.get(component), el, locals.props, ctx)));
21
+ locals.queued = locals.queued.then(() => (0, queue_1.enqueue)(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
22
+ if (!registry.has(component)) {
23
+ registry.set(component, yield (0, bootstrap_1.prepareBootstrap)(component, props.piral));
24
+ }
25
+ if (locals.active) {
26
+ (0, bootstrap_1.bootstrap)(registry.get(component), el, locals.props, ctx);
27
+ }
28
+ })));
24
29
  },
25
30
  update(el, props, ctx, locals) {
26
31
  locals.props.next(props);
27
32
  },
28
33
  unmount(el, locals) {
29
34
  locals.active = false;
30
- locals.queued = locals.queued.then((dispose) => (0, queue_1.enqueue)(() => dispose && dispose()));
35
+ locals.queued = locals.queued.then((dispose) => dispose && (0, queue_1.enqueue)(dispose));
31
36
  },
32
37
  });
33
38
  convert.defineModule = module_1.defineModule;
@@ -1 +1 @@
1
- {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":";;;AAEA,+BAAuC;AACvC,+CAA4C;AAC5C,mCAAkC;AAClC,qCAAwC;AACxC,2CAA0D;AAgB1D,SAAgB,eAAe,CAAC,IAAwB,EAAE;IACxD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IACxD,MAAM,OAAO,GAAG,CAAoC,SAAc,EAA4B,EAAE,CAAC,CAAC;QAChG,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAuB;YAC3C,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YAErB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBAC5B,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAA,4BAAgB,EAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;aACnE;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACjB,MAAM,CAAC,KAAK,GAAG,IAAI,sBAAe,CAAC,KAAK,CAAC,CAAC;aAC3C;YAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAClB,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;aACnC;YAED,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CACtC,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,IAAA,qBAAS,EAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAC1F,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAuB;YAC5C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,EAAE,EAAE,MAAuB;YACjC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YACtB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC;KACF,CAAC,CAAC;IACH,OAAO,CAAC,YAAY,GAAG,qBAAY,CAAC;IACpC,OAAO,CAAC,SAAS,GAAG,yBAAW,CAAC;IAChC,OAAO,OAAO,CAAC;AACjB,CAAC;AAjCD,0CAiCC"}
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":";;;;AAGA,+BAAuC;AACvC,+CAA4C;AAC5C,mCAAkC;AAClC,qCAAwC;AACxC,2CAA0D;AAgB1D,SAAgB,eAAe,CAAC,IAAwB,EAAE;IACxD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IACxD,MAAM,OAAO,GAAG,CAAoC,SAAiC,EAA4B,EAAE,CAAC,CAAC;QACnH,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAuB;YAC3C,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YAErB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACjB,MAAM,CAAC,KAAK,GAAG,IAAI,sBAAe,CAAC,KAAK,CAAC,CAAC;aAC3C;YAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAClB,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;aACnC;YAED,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CACtC,IAAA,eAAO,EAAC,GAAS,EAAE;gBACjB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;oBAC5B,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,IAAA,4BAAgB,EAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;iBACzE;gBAED,IAAI,MAAM,CAAC,MAAM,EAAE;oBACjB,IAAA,qBAAS,EAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;iBAC3D;YACH,CAAC,CAAA,CAAC,CACH,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAuB;YAC5C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,EAAE,EAAE,MAAuB;YACjC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YACtB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,IAAA,eAAO,EAAC,OAAO,CAAC,CAAC,CAAC;QAC/E,CAAC;KACF,CAAC,CAAC;IACH,OAAO,CAAC,YAAY,GAAG,qBAAY,CAAC;IACpC,OAAO,CAAC,SAAS,GAAG,yBAAW,CAAC;IAChC,OAAO,OAAO,CAAC;AACjB,CAAC;AArCD,0CAqCC"}
package/lib/module.d.ts CHANGED
@@ -1,5 +1,24 @@
1
1
  import type { PiletApi } from 'piral-core';
2
2
  import type { NgOptions, ModuleInstanceResult } from './types';
3
+ interface ModuleDefinition {
4
+ active: any;
5
+ module: any;
6
+ components: Array<any>;
7
+ opts: NgOptions;
8
+ }
9
+ export declare function activateModuleInstance(moduleDef: ModuleDefinition, piral: PiletApi): ModuleInstanceResult;
3
10
  export declare function getModuleInstance(component: any, standalone: boolean, piral: PiletApi): ModuleInstanceResult;
4
11
  export declare function createModuleInstance(component: any, standalone: boolean, piral: PiletApi): ModuleInstanceResult;
5
- export declare function defineModule(module: any, opts?: NgOptions): void;
12
+ export declare function findModule(module: any): ModuleDefinition;
13
+ export declare function defineModule(module: any, opts?: NgOptions): (selector: string) => {
14
+ component: {
15
+ selector: string;
16
+ module: any;
17
+ opts: (import("@angular/core").CompilerOptions & import("@angular/core").BootstrapOptions) | (import("@angular/core").CompilerOptions & import("@angular/core").BootstrapOptions)[];
18
+ state: {
19
+ current: any;
20
+ };
21
+ };
22
+ type: "ng";
23
+ };
24
+ export {};
package/lib/module.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defineModule = exports.createModuleInstance = exports.getModuleInstance = void 0;
3
+ exports.defineModule = exports.findModule = exports.createModuleInstance = exports.getModuleInstance = exports.activateModuleInstance = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const platform_browser_1 = require("@angular/platform-browser");
6
6
  const common_1 = require("@angular/common");
@@ -71,13 +71,17 @@ function instantiateModule(moduleDef, piral) {
71
71
  ], BootstrapModule);
72
72
  return BootstrapModule;
73
73
  }
74
+ function activateModuleInstance(moduleDef, piral) {
75
+ if (!moduleDef.active) {
76
+ moduleDef.active = instantiateModule(moduleDef, piral);
77
+ }
78
+ return [moduleDef.active, moduleDef.opts];
79
+ }
80
+ exports.activateModuleInstance = activateModuleInstance;
74
81
  function getModuleInstance(component, standalone, piral) {
75
82
  const [moduleDef] = availableModules.filter((m) => m.components.includes(component));
76
83
  if (moduleDef) {
77
- if (!moduleDef.active) {
78
- moduleDef.active = instantiateModule(moduleDef, piral);
79
- }
80
- return [moduleDef.active, moduleDef.opts];
84
+ return activateModuleInstance(moduleDef, piral);
81
85
  }
82
86
  if (process.env.NODE_ENV === 'development') {
83
87
  if (!standalone) {
@@ -106,14 +110,29 @@ function createModuleInstance(component, standalone, piral) {
106
110
  return getModuleInstance(component, standalone, piral);
107
111
  }
108
112
  exports.createModuleInstance = createModuleInstance;
113
+ function findModule(module) {
114
+ return availableModules.find(m => m.module === module);
115
+ }
116
+ exports.findModule = findModule;
109
117
  function defineModule(module, opts = undefined) {
110
118
  const [annotation] = (0, utils_1.getAnnotations)(module);
111
- availableModules.push({
112
- active: undefined,
113
- components: (0, utils_1.findComponents)(annotation.exports),
114
- module,
115
- opts,
116
- });
119
+ if (annotation) {
120
+ availableModules.push({
121
+ active: undefined,
122
+ components: (0, utils_1.findComponents)(annotation.exports),
123
+ module,
124
+ opts,
125
+ });
126
+ }
127
+ else if (typeof module === 'function') {
128
+ const state = {
129
+ current: undefined,
130
+ };
131
+ return (selector) => ({
132
+ component: { selector, module, opts, state },
133
+ type: 'ng',
134
+ });
135
+ }
117
136
  }
118
137
  exports.defineModule = defineModule;
119
138
  //# sourceMappingURL=module.js.map
package/lib/module.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
package/lib/startup.js CHANGED
@@ -11,53 +11,61 @@ function getVersionHandler(versions) {
11
11
  return versions[version];
12
12
  }
13
13
  const runningModules = [];
14
+ function startNew(BootstrapModule, context, ngOptions) {
15
+ const path = context.publicPath || '/';
16
+ const platform = (0, platform_browser_dynamic_1.platformBrowserDynamic)([
17
+ { provide: 'Context', useValue: context },
18
+ { provide: common_1.APP_BASE_HREF, useValue: path },
19
+ ]);
20
+ const id = (0, utils_1.getId)();
21
+ const zoneIdentifier = `piral-ng:${id}`;
22
+ // This is a hack, since NgZone doesn't allow you to configure the property that identifies your zone.
23
+ // See:
24
+ // - https://github.com/PlaceMe-SAS/single-spa-angular-cli/issues/33
25
+ // - https://github.com/angular/angular/blob/a14dc2d7a4821a19f20a9547053a5734798f541e/packages/core/src/zone/ng_zone.ts#L144
26
+ // - https://github.com/angular/angular/blob/a14dc2d7a4821a19f20a9547053a5734798f541e/packages/core/src/zone/ng_zone.ts#L257
27
+ // @ts-ignore
28
+ core_1.NgZone.isInAngularZone = () => window.Zone.current._properties[zoneIdentifier] === true;
29
+ return platform
30
+ .bootstrapModule(BootstrapModule, ngOptions)
31
+ .catch((err) => console.log(err))
32
+ .then((instance) => {
33
+ var _a;
34
+ if (instance) {
35
+ const zone = instance.injector.get(core_1.NgZone);
36
+ // @ts-ignore
37
+ const z = (_a = zone === null || zone === void 0 ? void 0 : zone._inner) !== null && _a !== void 0 ? _a : zone === null || zone === void 0 ? void 0 : zone.inner;
38
+ if (z && '_properties' in z) {
39
+ z._properties[zoneIdentifier] = true;
40
+ }
41
+ runningModules.push([BootstrapModule, instance, platform]);
42
+ }
43
+ return instance;
44
+ });
45
+ }
14
46
  function teardown(BootstrapModule) {
15
47
  const runningModuleIndex = runningModules.findIndex(([ref]) => ref === BootstrapModule);
16
48
  if (runningModuleIndex !== -1) {
17
49
  const [, , platform] = runningModules[runningModuleIndex];
18
50
  runningModules.splice(runningModuleIndex, 1);
19
- platform.destroy();
51
+ if (!platform.destroyed) {
52
+ platform.destroy();
53
+ }
20
54
  }
21
55
  }
22
56
  exports.teardown = teardown;
23
57
  function startup(BootstrapModule, context, ngOptions) {
24
58
  const runningModule = runningModules.find(([ref]) => ref === BootstrapModule);
25
59
  if (runningModule) {
26
- const [, instance] = runningModule;
27
- return Promise.resolve(instance);
28
- }
29
- else {
30
- const path = context.publicPath || '/';
31
- const platform = (0, platform_browser_dynamic_1.platformBrowserDynamic)([
32
- { provide: 'Context', useValue: context },
33
- { provide: common_1.APP_BASE_HREF, useValue: path },
34
- ]);
35
- const id = Math.random().toString(36);
36
- const zoneIdentifier = `piral-ng:${id}`;
37
- // This is a hack, since NgZone doesn't allow you to configure the property that identifies your zone.
38
- // See:
39
- // - https://github.com/PlaceMe-SAS/single-spa-angular-cli/issues/33
40
- // - https://github.com/angular/angular/blob/a14dc2d7a4821a19f20a9547053a5734798f541e/packages/core/src/zone/ng_zone.ts#L144
41
- // - https://github.com/angular/angular/blob/a14dc2d7a4821a19f20a9547053a5734798f541e/packages/core/src/zone/ng_zone.ts#L257
42
- // @ts-ignore
43
- core_1.NgZone.isInAngularZone = () => window.Zone.current._properties[zoneIdentifier] === true;
44
- return platform
45
- .bootstrapModule(BootstrapModule, ngOptions)
46
- .catch((err) => console.log(err))
47
- .then((instance) => {
48
- var _a;
49
- if (instance) {
50
- const zone = instance.injector.get(core_1.NgZone);
51
- // @ts-ignore
52
- const z = (_a = zone === null || zone === void 0 ? void 0 : zone._inner) !== null && _a !== void 0 ? _a : zone === null || zone === void 0 ? void 0 : zone.inner;
53
- if (z && '_properties' in z) {
54
- z._properties[zoneIdentifier] = true;
55
- }
56
- runningModules.push([BootstrapModule, instance, platform]);
57
- }
58
- return instance;
59
- });
60
+ const [, instance, platform] = runningModule;
61
+ if (platform.destroyed) {
62
+ teardown(BootstrapModule);
63
+ }
64
+ else {
65
+ return Promise.resolve(instance);
66
+ }
60
67
  }
68
+ return startNew(BootstrapModule, context, ngOptions);
61
69
  }
62
70
  exports.startup = startup;
63
71
  if (process.env.NODE_ENV === 'development') {
@@ -1 +1 @@
1
- {"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { PlatformRef, NgModuleRef } from '@angular/core';
2
2
  import type { ForeignComponent } from 'piral-core';
3
+ import type { Type } from '@angular/core';
3
4
  declare module 'piral-core/lib/types/custom' {
4
5
  interface PiletCustomApi extends PiletNgApi {
5
6
  }
@@ -19,6 +20,24 @@ export declare type PrepareBootstrapResult = [...ModuleInstanceResult, any];
19
20
  export declare type NgModuleInt = NgModuleRef<any> & {
20
21
  _destroyed: boolean;
21
22
  };
23
+ /**
24
+ * Gives you the ability to use a component from a lazy loaded module.
25
+ */
26
+ export interface NgComponentLoader {
27
+ /**
28
+ * Uses a component from a lazy loaded module.
29
+ * @param selector The selector defined for the component to load.
30
+ */
31
+ (selector: string): NgComponent;
32
+ }
33
+ export interface NgLazyType {
34
+ selector: string;
35
+ module: () => Promise<{
36
+ default: Type<any>;
37
+ }>;
38
+ opts: NgOptions;
39
+ state: any;
40
+ }
22
41
  /**
23
42
  * Represents the interface implemented by a module definer function.
24
43
  */
@@ -28,13 +47,22 @@ export interface NgModuleDefiner {
28
47
  * @param ngModule The module to use for running Angular.
29
48
  * @param opts The options to pass when bootstrapping.
30
49
  */
31
- (module: any, opts?: NgOptions): void;
50
+ <T>(module: Type<T>, opts?: NgOptions): void;
51
+ /**
52
+ * Defines the module to lazy load for bootstrapping the Angular pilet.
53
+ * @param getModule The module lazy loader to use for running Angular.
54
+ * @param opts The options to pass when bootstrapping.
55
+ * @returns The module ID to be used to reference components.
56
+ */
57
+ <T>(getModule: () => Promise<{
58
+ default: Type<T>;
59
+ }>, opts?: NgOptions): NgComponentLoader;
32
60
  }
33
61
  export interface NgComponent {
34
62
  /**
35
63
  * The component root.
36
64
  */
37
- component: any;
65
+ component: Type<any> | NgLazyType;
38
66
  /**
39
67
  * The type of the Angular component.
40
68
  */
@@ -56,7 +84,7 @@ export interface PiletNgApi {
56
84
  * @param component The component root.
57
85
  * @returns The Piral Ng component.
58
86
  */
59
- fromNg(component: any): NgComponent;
87
+ fromNg<T>(component: Type<T>): NgComponent;
60
88
  /**
61
89
  * Angular component for displaying extensions of the given name.
62
90
  */
package/lib/utils.d.ts CHANGED
@@ -10,7 +10,9 @@ export interface NgAnnotation {
10
10
  bootstrap: any;
11
11
  selector: string;
12
12
  }
13
+ export declare function getId(): string;
13
14
  export declare function getNgVersion(): string;
14
15
  export declare function getMinVersion(): string;
15
16
  export declare function getAnnotations(component: any): Array<NgAnnotation>;
17
+ export declare function hasSelector(component: any, selector: string): boolean;
16
18
  export declare function findComponents(exports: Array<any>): Array<any>;
package/lib/utils.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findComponents = exports.getAnnotations = exports.getMinVersion = exports.getNgVersion = void 0;
3
+ exports.findComponents = exports.hasSelector = exports.getAnnotations = exports.getMinVersion = exports.getNgVersion = exports.getId = void 0;
4
4
  const core_1 = require("@angular/core");
5
+ function getId() {
6
+ return Math.random().toString(36);
7
+ }
8
+ exports.getId = getId;
5
9
  function getNgVersion() {
6
10
  return core_1.VERSION.major || core_1.VERSION.full.split('.')[0];
7
11
  }
@@ -25,6 +29,11 @@ function getAnnotations(component) {
25
29
  return annotations || [];
26
30
  }
27
31
  exports.getAnnotations = getAnnotations;
32
+ function hasSelector(component, selector) {
33
+ const [annotation] = getAnnotations(component);
34
+ return annotation && annotation.selector === selector;
35
+ }
36
+ exports.hasSelector = hasSelector;
28
37
  function findComponents(exports) {
29
38
  const components = [];
30
39
  if (Array.isArray(exports)) {
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,wCAAwD;AAcxD,SAAgB,YAAY;IAC1B,OAAO,cAAO,CAAC,KAAK,IAAI,cAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAFD,oCAEC;AAED,SAAgB,aAAa;IAC3B,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,OAAO,GAAG,KAAK,MAAM,CAAC;AACxB,CAAC;AAHD,sCAGC;AAED,SAAgB,cAAc,CAAC,SAAc;IAC3C,IAAI,WAAW,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,eAAe,CAAC;IAE7C,IAAI,CAAC,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,gBAAgB,IAAI,OAAO,EAAE;QACjF,WAAW,GAAI,OAAe,CAAC,cAAc,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;KACzE;IAED,IAAI,CAAC,WAAW,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE;QACzD,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC;KACpB;IAED,IAAI,CAAC,WAAW,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE;QACzD,WAAW,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAChC;IAED,OAAO,WAAW,IAAI,EAAE,CAAC;AAC3B,CAAC;AAhBD,wCAgBC;AAED,SAAgB,cAAc,CAAC,OAAmB;IAChD,MAAM,UAAU,GAAG,EAAE,CAAC;IAEtB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC1B,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE;YACxB,MAAM,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YAExC,IAAI,UAAU,EAAE;gBACd,IAAI,UAAU,CAAC,OAAO,EAAE;oBACtB,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;iBACxD;qBAAM,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,UAAU,EAAE;oBACvD,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBACrB;aACF;SACF;KACF;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAlBD,wCAkBC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,wCAAwD;AAcxD,SAAgB,KAAK;IACnB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpC,CAAC;AAFD,sBAEC;AAED,SAAgB,YAAY;IAC1B,OAAO,cAAO,CAAC,KAAK,IAAI,cAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAFD,oCAEC;AAED,SAAgB,aAAa;IAC3B,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,OAAO,GAAG,KAAK,MAAM,CAAC;AACxB,CAAC;AAHD,sCAGC;AAED,SAAgB,cAAc,CAAC,SAAc;IAC3C,IAAI,WAAW,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,eAAe,CAAC;IAE7C,IAAI,CAAC,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,gBAAgB,IAAI,OAAO,EAAE;QACjF,WAAW,GAAI,OAAe,CAAC,cAAc,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;KACzE;IAED,IAAI,CAAC,WAAW,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE;QACzD,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC;KACpB;IAED,IAAI,CAAC,WAAW,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE;QACzD,WAAW,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAChC;IAED,OAAO,WAAW,IAAI,EAAE,CAAC;AAC3B,CAAC;AAhBD,wCAgBC;AAED,SAAgB,WAAW,CAAC,SAAc,EAAE,QAAgB;IAC1D,MAAM,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC/C,OAAO,UAAU,IAAI,UAAU,CAAC,QAAQ,KAAK,QAAQ,CAAC;AACxD,CAAC;AAHD,kCAGC;AAED,SAAgB,cAAc,CAAC,OAAmB;IAChD,MAAM,UAAU,GAAG,EAAE,CAAC;IAEtB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC1B,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE;YACxB,MAAM,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YAExC,IAAI,UAAU,EAAE;gBACd,IAAI,UAAU,CAAC,OAAO,EAAE;oBACtB,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;iBACxD;qBAAM,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,UAAU,EAAE;oBACvD,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBACrB;aACF;SACF;KACF;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAlBD,wCAkBC"}