@alauda-fe/common
Version:
Alauda frontend team common codes.
41 lines • 6.55 kB
JavaScript
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==