UNPKG

@jamarsto/kiunzi-micro-frontend-tools

Version:
54 lines 8.51 kB
import { Injectable } from '@angular/core'; import { NavigationEnd } from '@angular/router'; import { filter } from 'rxjs'; import * as i0 from "@angular/core"; import * as i1 from "../active-module-path/active-module-path.service"; export class SyncRouteShell { constructor(activeModulePath) { this.activeModulePath = activeModulePath; } sync(router, customRoutes) { const moduleByPath = this.getModuleByPath(customRoutes); const pathByModule = this.getPathByModule(customRoutes); router .events .pipe(filter((event) => event instanceof NavigationEnd)) .subscribe(() => this.dispatchEvent(moduleByPath)); window.addEventListener('popstate', () => this.navigate(router)); window.addEventListener('mfeNavigationEvent', (event) => this.updateRoute(router, event, pathByModule)); this.navigate(router); } details(moduleByPath) { return { detail: moduleByPath.get(this.activeModulePath.get()) }; } dispatchEvent(moduleByPath) { window.dispatchEvent(new CustomEvent('shellNavigationEvent', this.details(moduleByPath))); } getModuleByPath(customRoutes) { const moduleByPath = new Map(); customRoutes.moduleRoutes.forEach((item) => moduleByPath.set(item.prefix, item.name)); return moduleByPath; } getPathByModule(customRoutes) { const pathByModule = new Map(); customRoutes.moduleRoutes.forEach((item) => pathByModule.set(item.name, item.prefix)); return pathByModule; } navigate(router) { router.navigateByUrl(window.location.pathname); } updateRoute(router, event, pathByModule) { if (this.activeModulePath.get() === pathByModule.get(event.detail)) { this.navigate(router); } } } SyncRouteShell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.10", ngImport: i0, type: SyncRouteShell, deps: [{ token: i1.ActiveModulePath }], target: i0.ɵɵFactoryTarget.Injectable }); SyncRouteShell.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.10", ngImport: i0, type: SyncRouteShell, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.10", ngImport: i0, type: SyncRouteShell, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return [{ type: i1.ActiveModulePath }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1yb3V0ZS1zaGVsbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l1bnppLW1pY3JvLWZyb250ZW5kLXRvb2xzL3NyYy9saWIvc2VydmljZS9zeW5jLXJvdXRlLXNoZWxsL3N5bmMtcm91dGUtc2hlbGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFPOUIsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFBb0IsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRTFELElBQUksQ0FBQyxNQUFjLEVBQUUsWUFBK0I7UUFDbEQsTUFBTSxZQUFZLEdBQXVCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUUsTUFBTSxZQUFZLEdBQXVCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUUsTUFBTTthQUNELE1BQU07YUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUEwQixFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxDQUFDO2FBQy9FLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFvQixFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDdkgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRU8sT0FBTyxDQUFDLFlBQWdDO1FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ25FLENBQUM7SUFFTyxhQUFhLENBQUMsWUFBZ0M7UUFDcEQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRU8sZUFBZSxDQUFDLFlBQStCO1FBQ3JELE1BQU0sWUFBWSxHQUF1QixJQUFJLEdBQUcsRUFBaUIsQ0FBQztRQUNsRSxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxlQUFlLENBQUMsWUFBK0I7UUFDckQsTUFBTSxZQUFZLEdBQXVCLElBQUksR0FBRyxFQUFpQixDQUFDO1FBQ2xFLFlBQVksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdEYsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxNQUFjO1FBQzdCLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sV0FBVyxDQUFDLE1BQWMsRUFBRSxLQUFrQixFQUFFLFlBQWdDO1FBQ3RGLElBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxLQUFLLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdkI7SUFDSCxDQUFDOzs0R0EzQ1UsY0FBYztnSEFBZCxjQUFjLGNBRmIsTUFBTTs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEN1c3RvbVNoZWxsUm91dGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMvY3VzdG9tLXNoZWxsLXJvdXRlcy9jdXN0b20tc2hlbGwtcm91dGVzLnR5cGUnO1xuaW1wb3J0IHsgQWN0aXZlTW9kdWxlUGF0aCB9IGZyb20gJy4uL2FjdGl2ZS1tb2R1bGUtcGF0aC9hY3RpdmUtbW9kdWxlLXBhdGguc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFN5bmNSb3V0ZVNoZWxsIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhY3RpdmVNb2R1bGVQYXRoOiBBY3RpdmVNb2R1bGVQYXRoKSB7fVxuXG4gIHN5bmMocm91dGVyOiBSb3V0ZXIsIGN1c3RvbVJvdXRlczogQ3VzdG9tU2hlbGxSb3V0ZXMpOiB2b2lkIHtcbiAgICBjb25zdCBtb2R1bGVCeVBhdGg6IE1hcDxzdHJpbmcsc3RyaW5nPiA9IHRoaXMuZ2V0TW9kdWxlQnlQYXRoKGN1c3RvbVJvdXRlcyk7XG4gICAgY29uc3QgcGF0aEJ5TW9kdWxlOiBNYXA8c3RyaW5nLHN0cmluZz4gPSB0aGlzLmdldFBhdGhCeU1vZHVsZShjdXN0b21Sb3V0ZXMpO1xuICAgIHJvdXRlclxuICAgICAgICAuZXZlbnRzXG4gICAgICAgIC5waXBlKGZpbHRlcigoZXZlbnQpOiBldmVudCBpcyBOYXZpZ2F0aW9uRW5kID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kaXNwYXRjaEV2ZW50KG1vZHVsZUJ5UGF0aCkpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsICgpID0+IHRoaXMubmF2aWdhdGUocm91dGVyKSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21mZU5hdmlnYXRpb25FdmVudCcsIChldmVudCkgPT4gdGhpcy51cGRhdGVSb3V0ZShyb3V0ZXIsIGV2ZW50IGFzIEN1c3RvbUV2ZW50LCBwYXRoQnlNb2R1bGUpKTtcbiAgICB0aGlzLm5hdmlnYXRlKHJvdXRlcik7XG4gIH1cblxuICBwcml2YXRlIGRldGFpbHMobW9kdWxlQnlQYXRoOiBNYXA8c3RyaW5nLHN0cmluZz4pOiBDdXN0b21FdmVudEluaXQge1xuICAgIHJldHVybiB7IGRldGFpbDogbW9kdWxlQnlQYXRoLmdldCh0aGlzLmFjdGl2ZU1vZHVsZVBhdGguZ2V0KCkpIH07XG4gIH1cblxuICBwcml2YXRlIGRpc3BhdGNoRXZlbnQobW9kdWxlQnlQYXRoOiBNYXA8c3RyaW5nLHN0cmluZz4pOiB2b2lkIHtcbiAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3NoZWxsTmF2aWdhdGlvbkV2ZW50JywgdGhpcy5kZXRhaWxzKG1vZHVsZUJ5UGF0aCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9kdWxlQnlQYXRoKGN1c3RvbVJvdXRlczogQ3VzdG9tU2hlbGxSb3V0ZXMpOiBNYXA8c3RyaW5nLHN0cmluZz4ge1xuICAgIGNvbnN0IG1vZHVsZUJ5UGF0aDogTWFwPHN0cmluZyxzdHJpbmc+ID0gbmV3IE1hcDxzdHJpbmcsc3RyaW5nPigpO1xuICAgIGN1c3RvbVJvdXRlcy5tb2R1bGVSb3V0ZXMuZm9yRWFjaCgoaXRlbSkgPT4gbW9kdWxlQnlQYXRoLnNldChpdGVtLnByZWZpeCwgaXRlbS5uYW1lKSk7XG4gICAgcmV0dXJuIG1vZHVsZUJ5UGF0aDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGF0aEJ5TW9kdWxlKGN1c3RvbVJvdXRlczogQ3VzdG9tU2hlbGxSb3V0ZXMpOiBNYXA8c3RyaW5nLHN0cmluZz4ge1xuICAgIGNvbnN0IHBhdGhCeU1vZHVsZTogTWFwPHN0cmluZyxzdHJpbmc+ID0gbmV3IE1hcDxzdHJpbmcsc3RyaW5nPigpO1xuICAgIGN1c3RvbVJvdXRlcy5tb2R1bGVSb3V0ZXMuZm9yRWFjaCgoaXRlbSkgPT4gcGF0aEJ5TW9kdWxlLnNldChpdGVtLm5hbWUsIGl0ZW0ucHJlZml4KSk7XG4gICAgcmV0dXJuIHBhdGhCeU1vZHVsZTtcbiAgfVxuXG4gIHByaXZhdGUgbmF2aWdhdGUocm91dGVyOiBSb3V0ZXIpOiB2b2lkIHtcbiAgICByb3V0ZXIubmF2aWdhdGVCeVVybCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSb3V0ZShyb3V0ZXI6IFJvdXRlciwgZXZlbnQ6IEN1c3RvbUV2ZW50LCBwYXRoQnlNb2R1bGU6IE1hcDxzdHJpbmcsc3RyaW5nPik6IHZvaWQge1xuICAgIGlmKHRoaXMuYWN0aXZlTW9kdWxlUGF0aC5nZXQoKSA9PT0gcGF0aEJ5TW9kdWxlLmdldChldmVudC5kZXRhaWwpKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlKHJvdXRlcik7XG4gICAgfVxuICB9XG59XG5cbiJdfQ==