UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

83 lines 11.6 kB
import { DialogService, ThemeService } from '@alauda/ui'; import { inject, Injectable } from '@angular/core'; import { Router } from '@angular/router'; import { ESCAPE_DEACTIVATE_GUARD, InterceptDeactivateService, } from '../core/public-api'; import { TranslateService } from '../translate/public-api'; import { BaseWindowChannel } from './base-window-channel'; import { MessageType } from './utils'; import * as i0 from "@angular/core"; export class HostWindowChannelService extends BaseWindowChannel { constructor() { super(...arguments); this.router = inject(Router); this.theme = inject(ThemeService); this.translate = inject(TranslateService); this.interceptor = inject(InterceptDeactivateService); this.dialog = inject(DialogService); } connect(window) { const removeListener = this.init(window); const subs = []; this.listen(MessageType.PluginInitialized, () => { const sub1 = this.theme.currentTheme$.subscribe(theme => { this.send(MessageType.ThemeChange, theme); }); const sub2 = this.translate.locale$.subscribe(lang => { this.send(MessageType.LangChange, lang); }); subs.push(sub1, sub2); }); this.destroy = () => { removeListener(); subs.forEach(sub => sub.unsubscribe()); }; this.listen(MessageType.Navigate, ({ target, url, queryParams, skipDeactivateGuard }) => { if (target) { window.open(queryParams ? `${url}?${Object.entries(queryParams) .map(([key, value]) => `${key}=${encodeURIComponent(value)}`) .join('&')}` : url, target); } else { this.router.navigate([url], { queryParams: queryParams ?? {}, ...(skipDeactivateGuard ? { fragment: ESCAPE_DEACTIVATE_GUARD } : {}), }); } }); this.listen(MessageType.NavigateBack, options => { this.interceptor.back(options?.skipDeactivateGuard); }); this.listen(MessageType.NavigateForward, options => { this.interceptor.forward(options?.skipDeactivateGuard); }); this.listen(MessageType.SimpleConfirmDialog, ({ id, ...options }) => { this.dialog .confirm(options) .then(() => { this.send(MessageType.SimpleConfirmDialogCallback, { id, confirm: true, }); }) .catch(() => { this.send(MessageType.SimpleConfirmDialogCallback, { id, confirm: false, }); }); }); } ngOnDestroy() { this.destroy?.(); } static { this.ɵfac = /*@__PURE__*/ (() => { let ɵHostWindowChannelService_BaseFactory; return function HostWindowChannelService_Factory(t) { return (ɵHostWindowChannelService_BaseFactory || (ɵHostWindowChannelService_BaseFactory = i0.ɵɵgetInheritedFactory(HostWindowChannelService)))(t || HostWindowChannelService); }; })(); } static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: HostWindowChannelService, factory: HostWindowChannelService.ɵfac }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HostWindowChannelService, [{ type: Injectable }], null, null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC13aW5kb3ctY2hhbm5lbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3dpbmRvdy1jaGFubmVsL2hvc3Qtd2luZG93LWNoYW5uZWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHekMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QiwwQkFBMEIsR0FDM0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUd0QyxNQUFNLE9BQU8sd0JBQ1gsU0FBUSxpQkFBaUI7SUFGM0I7O1FBS21CLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3QixjQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNqRCxXQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBNEVqRDtJQXpFQyxPQUFPLENBQUMsTUFBYztRQUNwQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxHQUFtQixFQUFFLENBQUM7UUFFaEMsSUFBSSxDQUFD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QUFDO2lCQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsMkJBQTJCLEVBQUU7b0JBQ2pELEVBQUU7b0JBQ0YsT0FBTyxFQUFFLEtBQUs7aUJBQ2YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDbkIsQ0FBQztvUUFuRlUsd0JBQXdCLFNBQXhCLHdCQUF3Qjt1RUFBeEIsd0JBQXdCLFdBQXhCLHdCQUF3Qjs7aUZBQXhCLHdCQUF3QjtjQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBFU0NBUEVfREVBQ1RJVkFURV9HVUFSRCxcbiAgSW50ZXJjZXB0RGVhY3RpdmF0ZVNlcnZpY2UsXG59IGZyb20gJy4uL2NvcmUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vdHJhbnNsYXRlL3B1YmxpYy1hcGknO1xuXG5pbXBvcnQgeyBCYXNlV2luZG93Q2hhbm5lbCB9IGZyb20gJy4vYmFzZS13aW5kb3ctY2hhbm5lbCc7XG5pbXBvcnQgeyBNZXNzYWdlVHlwZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSG9zdFdpbmRvd0NoYW5uZWxTZXJ2aWNlXG4gIGV4dGVuZHMgQmFzZVdpbmRvd0NoYW5uZWxcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0aGVtZSA9IGluamVjdChUaGVtZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlcmNlcHRvciA9IGluamVjdChJbnRlcmNlcHREZWFjdGl2YXRlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xuICBwcml2YXRlIGRlc3Ryb3k6ICgpID0+IHZvaWQ7XG5cbiAgY29ubmVjdCh3aW5kb3c6IFdpbmRvdykge1xuICAgIGNvbnN0IHJlbW92ZUxpc3RlbmVyID0gdGhpcy5pbml0KHdpbmRvdyk7XG4gICAgY29uc3Qgc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIHRoaXMubGlzdGVuKE1lc3NhZ2VUeXBlLlBsdWdpbkluaXRpYWxpemVkLCAoKSA9PiB7XG4gICAgICBjb25zdCBzdWIxID0gdGhpcy50aGVtZS5jdXJyZW50VGhlbWUkLnN1YnNjcmliZSh0aGVtZSA9PiB7XG4gICAgICAgIHRoaXMuc2VuZChNZXNzYWdlVHlwZS5UaGVtZUNoYW5nZSwgdGhlbWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHN1YjIgPSB0aGlzLnRyYW5zbGF0ZS5sb2NhbGUkLnN1YnNjcmliZShsYW5nID0+IHtcbiAgICAgICAgdGhpcy5zZW5kKE1lc3NhZ2VUeXBlLkxhbmdDaGFuZ2UsIGxhbmcpO1xuICAgICAgfSk7XG5cbiAgICAgIHN1YnMucHVzaChzdWIxLCBzdWIyKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGVzdHJveSA9ICgpID0+IHtcbiAgICAgIHJlbW92ZUxpc3RlbmVyKCk7XG4gICAgICBzdWJzLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICB9O1xuXG4gICAgdGhpcy5saXN0ZW4oXG4gICAgICBNZXNzYWdlVHlwZS5OYXZpZ2F0ZSxcbiAgICAgICh7IHRhcmdldCwgdXJsLCBxdWVyeVBhcmFtcywgc2tpcERlYWN0aXZhdGVHdWFyZCB9KSA9PiB7XG4gICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICB3aW5kb3cub3BlbihcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zXG4gICAgICAgICAgICAgID8gYCR7dXJsfT8ke09iamVjdC5lbnRyaWVzKHF1ZXJ5UGFyYW1zKVxuICAgICAgICAgICAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKX1gKVxuICAgICAgICAgICAgICAgICAgLmpvaW4oJyYnKX1gXG4gICAgICAgICAgICAgIDogdXJsLFxuICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3VybF0sIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtcyA/PyB7fSxcbiAgICAgICAgICAgIC4uLihza2lwRGVhY3RpdmF0ZUd1YXJkXG4gICAgICAgICAgICAgID8geyBmcmFnbWVudDogRVNDQVBFX0RFQUNUSVZBVEVfR1VBUkQgfVxuICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5saXN0ZW4oTWVzc2FnZVR5cGUuTmF2aWdhdGVCYWNrLCBvcHRpb25zID0+IHtcbiAgICAgIHRoaXMuaW50ZXJjZXB0b3IuYmFjayhvcHRpb25zPy5za2lwRGVhY3RpdmF0ZUd1YXJkKTtcbiAgICB9KTtcblxuICAgIHRoaXMubGlzdGVuKE1lc3NhZ2VUeXBlLk5hdmlnYXRlRm9yd2FyZCwgb3B0aW9ucyA9PiB7XG4gICAgICB0aGlzLmludGVyY2VwdG9yLmZvcndhcmQob3B0aW9ucz8uc2tpcERlYWN0aXZhdGVHdWFyZCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmxpc3RlbihNZXNzYWdlVHlwZS5TaW1wbGVDb25maXJtRGlhbG9nLCAoeyBpZCwgLi4ub3B0aW9ucyB9KSA9PiB7XG4gICAgICB0aGlzLmRpYWxvZ1xuICAgICAgICAuY29uZmlybShvcHRpb25zKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZW5kKE1lc3NhZ2VUeXBlLlNpbXBsZUNvbmZpcm1EaWFsb2dDYWxsYmFjaywge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBjb25maXJtOiB0cnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VuZChNZXNzYWdlVHlwZS5TaW1wbGVDb25maXJtRGlhbG9nQ2FsbGJhY2ssIHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgY29uZmlybTogZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95Py4oKTtcbiAgfVxufVxuIl19