@alauda-fe/common
Version:
Alauda frontend team common codes.
41 lines • 6.65 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, // Angular component as context
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0LWRlYWN0aXZhdGUuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvY29yZS9ndWFyZHMvaW50ZXJjZXB0LWRlYWN0aXZhdGUuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNckQsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFFdEYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsNkJBQTZCLENBQUM7QUFDckUsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsa0NBQWtDLENBQUM7QUFHL0UsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUE2QixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQUcsQ0FBQztJQUVuRCxhQUFhLENBQ1gsU0FBaUIsRUFDakIsWUFBb0MsRUFDcEMsWUFBaUMsRUFDakMsU0FBOEI7UUFFOUIsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLFNBQXdDLENBQUM7UUFFakUsSUFBSSxPQUFPLGFBQWEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN4QyxhQUFhLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUNYLGFBQWEsWUFBWSxVQUFVLElBQUksYUFBYSxZQUFZLE9BQU87WUFDckUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDckIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFMUIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUNqQixTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDeEIsSUFDRSxhQUFhO2dCQUNiLDRCQUE0QixLQUFLLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDM0QsNEJBQTRCLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUN4RCx1QkFBdUIsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFDbkQsQ0FBQztnQkFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDN0QsS0FBSyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsd0JBQXdCO2dCQUNqRCxPQUFPLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQywwQkFBMEI7Z0JBQ3JELE9BQU8sRUFBRSxTQUFnQixFQUFFLCtCQUErQjtnQkFDMUQsYUFBYSxFQUFFLEtBQUs7YUFDckIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7eUZBdkNVLHdCQUF3Qjt1RUFBeEIsd0JBQXdCLFdBQXhCLHdCQUF3QixtQkFEWCxNQUFNOztpRkFDbkIsd0JBQXdCO2NBRHBDLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgQ2FuRGVhY3RpdmF0ZSxcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSW50ZXJjZXB0RGVhY3RpdmF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbnRlcmNlcHQtZGVhY3RpdmF0ZS5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IEVTQ0FQRV9ERUFDVElWQVRFX0dVQVJEID0gJ19fRVNDQVBFX0RFQUNUSVZBVEVfR1VBUkRfXyc7XG5leHBvcnQgY29uc3QgQ1VSUl9FU0NBUEVfREVBQ1RJVkFURV9HVUFSRCA9ICdfX0NVUlJfRVNDQVBFX0RFQUNUSVZBVEVfR1VBUkRfXyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgSW50ZXJjZXB0RGVhY3RpdmF0ZUd1YXJkIGltcGxlbWVudHMgQ2FuRGVhY3RpdmF0ZTx1bmtub3duPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIGNhbkRlYWN0aXZhdGUoXG4gICAgY29tcG9uZW50OiBvYmplY3QsXG4gICAgY3VycmVudFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIGN1cnJlbnRTdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgICBuZXh0U3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXG4gICkge1xuICAgIGxldCB7IGNhbkRlYWN0aXZhdGUgfSA9IGNvbXBvbmVudCBhcyB7IGNhbkRlYWN0aXZhdGU/OiB1bmtub3duIH07XG5cbiAgICBpZiAodHlwZW9mIGNhbkRlYWN0aXZhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbkRlYWN0aXZhdGUgPSBjYW5EZWFjdGl2YXRlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0JCA9XG4gICAgICBjYW5EZWFjdGl2YXRlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSB8fCBjYW5EZWFjdGl2YXRlIGluc3RhbmNlb2YgUHJvbWlzZVxuICAgICAgICA/IGZyb20oY2FuRGVhY3RpdmF0ZSlcbiAgICAgICAgOiBvZighIWNhbkRlYWN0aXZhdGUpO1xuXG4gICAgcmV0dXJuIHJlc3VsdCQucGlwZShcbiAgICAgIHN3aXRjaE1hcChjYW5EZWFjdGl2YXRlID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGNhbkRlYWN0aXZhdGUgfHxcbiAgICAgICAgICBDVVJSX0VTQ0FQRV9ERUFDVElWQVRFX0dVQVJEID09PSBjdXJyZW50U3RhdGUucm9vdC5mcmFnbWVudCB8fFxuICAgICAgICAgIENVUlJfRVNDQVBFX0RFQUNUSVZBVEVfR1VBUkQgPT09IG5leHRTdGF0ZS5yb290LmZyYWdtZW50IHx8XG4gICAgICAgICAgRVNDQVBFX0RFQUNUSVZBVEVfR1VBUkQgPT09IG5leHRTdGF0ZS5yb290LmZyYWdtZW50XG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChJbnRlcmNlcHREZWFjdGl2YXRlU2VydmljZSkuaW50ZXJjZXB0KHtcbiAgICAgICAgICB0aXRsZTogY3VycmVudFJvdXRlLmRhdGEuaW50ZXJjZXB0RGVhY3RpdmF0ZVRpdGxlLFxuICAgICAgICAgIGNvbnRlbnQ6IGN1cnJlbnRSb3V0ZS5kYXRhLmludGVyY2VwdERlYWN0aXZhdGVDb250ZW50LFxuICAgICAgICAgIGNvbnRleHQ6IGNvbXBvbmVudCBhcyBhbnksIC8vIEFuZ3VsYXIgY29tcG9uZW50IGFzIGNvbnRleHRcbiAgICAgICAgICBlcnJvckZhbGxiYWNrOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=