UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

41 lines 6.55 kB
import { Injectable, Injector } from '@angular/core'; import { from, Observable, of, switchMap } from 'rxjs'; import { InterceptDeactivateService } from '../services/intercept-deactivate.service'; import * as i0 from "@angular/core"; export const ESCAPE_DEACTIVATE_GUARD = '__ESCAPE_DEACTIVATE_GUARD__'; export const CURR_ESCAPE_DEACTIVATE_GUARD = '__CURR_ESCAPE_DEACTIVATE_GUARD__'; export class InterceptDeactivateGuard { constructor(injector) { this.injector = injector; } canDeactivate(component, currentRoute, currentState, nextState) { let { canDeactivate } = component; if (typeof canDeactivate === 'function') { canDeactivate = canDeactivate(); } const result$ = canDeactivate instanceof Observable || canDeactivate instanceof Promise ? from(canDeactivate) : of(!!canDeactivate); return result$.pipe(switchMap(canDeactivate => { if (canDeactivate || CURR_ESCAPE_DEACTIVATE_GUARD === currentState.root.fragment || CURR_ESCAPE_DEACTIVATE_GUARD === nextState.root.fragment || ESCAPE_DEACTIVATE_GUARD === nextState.root.fragment) { return of(true); } return this.injector.get(InterceptDeactivateService).intercept({ title: currentRoute.data.interceptDeactivateTitle, content: currentRoute.data.interceptDeactivateContent, context: component, errorFallback: false, }); })); } static { this.ɵfac = function InterceptDeactivateGuard_Factory(t) { return new (t || InterceptDeactivateGuard)(i0.ɵɵinject(i0.Injector)); }; } static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: InterceptDeactivateGuard, factory: InterceptDeactivateGuard.ɵfac, providedIn: 'root' }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InterceptDeactivateGuard, [{ type: Injectable, args: [{ providedIn: 'root' }] }], () => [{ type: i0.Injector }], null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0LWRlYWN0aXZhdGUuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvY29yZS9ndWFyZHMvaW50ZXJjZXB0LWRlYWN0aXZhdGUuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNckQsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFFdEYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsNkJBQTZCLENBQUM7QUFDckUsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsa0NBQWtDLENBQUM7QUFHL0UsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUE2QixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQUcsQ0FBQztJQUVuRCxhQUFhLENBQ1gsU0FBaUIsRUFDakIsWUFBb0MsRUFDcEMsWUFBaUMsRUFDakMsU0FBOEI7UUFFOUIsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLFNBQXdDLENBQUM7UUFFakUsSUFBSSxPQUFPLGFBQWEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN4QyxhQUFhLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUNYLGFBQWEsWUFBWSxVQUFVLElBQUksYUFBYSxZQUFZLE9BQU87WUFDckUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDckIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFMUIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUNqQixTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDeEIsSUFDRSxhQUFhO2dCQUNiLDRCQUE0QixLQUFLLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDM0QsNEJBQTRCLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUN4RCx1QkFBdUIsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFDbkQsQ0FBQztnQkFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDN0QsS0FBSyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsd0JBQXdCO2dCQUNqRCxPQUFPLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQywwQkFBMEI7Z0JBQ3JELE9BQU8sRUFBRSxTQUFTO2dCQUNsQixhQUFhLEVBQUUsS0FBSzthQUNyQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzt5RkF2Q1Usd0JBQXdCO3VFQUF4Qix3QkFBd0IsV0FBeEIsd0JBQXdCLG1CQURYLE1BQU07O2lGQUNuQix3QkFBd0I7Y0FEcEMsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBDYW5EZWFjdGl2YXRlLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJbnRlcmNlcHREZWFjdGl2YXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ludGVyY2VwdC1kZWFjdGl2YXRlLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgRVNDQVBFX0RFQUNUSVZBVEVfR1VBUkQgPSAnX19FU0NBUEVfREVBQ1RJVkFURV9HVUFSRF9fJztcbmV4cG9ydCBjb25zdCBDVVJSX0VTQ0FQRV9ERUFDVElWQVRFX0dVQVJEID0gJ19fQ1VSUl9FU0NBUEVfREVBQ1RJVkFURV9HVUFSRF9fJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJbnRlcmNlcHREZWFjdGl2YXRlR3VhcmQgaW1wbGVtZW50cyBDYW5EZWFjdGl2YXRlPHVua25vd24+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgY2FuRGVhY3RpdmF0ZShcbiAgICBjb21wb25lbnQ6IG9iamVjdCxcbiAgICBjdXJyZW50Um91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgY3VycmVudFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxuICAgIG5leHRTdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgKSB7XG4gICAgbGV0IHsgY2FuRGVhY3RpdmF0ZSB9ID0gY29tcG9uZW50IGFzIHsgY2FuRGVhY3RpdmF0ZT86IHVua25vd24gfTtcblxuICAgIGlmICh0eXBlb2YgY2FuRGVhY3RpdmF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY2FuRGVhY3RpdmF0ZSA9IGNhbkRlYWN0aXZhdGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQkID1cbiAgICAgIGNhbkRlYWN0aXZhdGUgaW5zdGFuY2VvZiBPYnNlcnZhYmxlIHx8IGNhbkRlYWN0aXZhdGUgaW5zdGFuY2VvZiBQcm9taXNlXG4gICAgICAgID8gZnJvbShjYW5EZWFjdGl2YXRlKVxuICAgICAgICA6IG9mKCEhY2FuRGVhY3RpdmF0ZSk7XG5cbiAgICByZXR1cm4gcmVzdWx0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGNhbkRlYWN0aXZhdGUgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY2FuRGVhY3RpdmF0ZSB8fFxuICAgICAgICAgIENVUlJfRVNDQVBFX0RFQUNUSVZBVEVfR1VBUkQgPT09IGN1cnJlbnRTdGF0ZS5yb290LmZyYWdtZW50IHx8XG4gICAgICAgICAgQ1VSUl9FU0NBUEVfREVBQ1RJVkFURV9HVUFSRCA9PT0gbmV4dFN0YXRlLnJvb3QuZnJhZ21lbnQgfHxcbiAgICAgICAgICBFU0NBUEVfREVBQ1RJVkFURV9HVUFSRCA9PT0gbmV4dFN0YXRlLnJvb3QuZnJhZ21lbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KEludGVyY2VwdERlYWN0aXZhdGVTZXJ2aWNlKS5pbnRlcmNlcHQoe1xuICAgICAgICAgIHRpdGxlOiBjdXJyZW50Um91dGUuZGF0YS5pbnRlcmNlcHREZWFjdGl2YXRlVGl0bGUsXG4gICAgICAgICAgY29udGVudDogY3VycmVudFJvdXRlLmRhdGEuaW50ZXJjZXB0RGVhY3RpdmF0ZUNvbnRlbnQsXG4gICAgICAgICAgY29udGV4dDogY29tcG9uZW50LFxuICAgICAgICAgIGVycm9yRmFsbGJhY2s6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==