@alauda-fe/common
Version:
Alauda frontend team common codes.
43 lines • 5.88 kB
JavaScript
import { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';
import { ApplicationRef, ComponentFactoryResolver, Injectable, Injector, } from '@angular/core';
import { HelpDocumentComponent, TOKEN_HELP_DOC_DATA } from './component';
import * as i0 from "@angular/core";
export class HelpDocumentService {
constructor(rootInjector, cfr, appRef) {
this.rootInjector = rootInjector;
this.cfr = cfr;
this.appRef = appRef;
this.portalHost = new DomPortalOutlet(document.body, this.cfr, this.appRef, this.rootInjector);
}
open(context) {
if (this.portalHost.hasAttached) {
this.portalHost.detach();
this.portal = null;
}
const injector = Injector.create({
providers: [
{
provide: TOKEN_HELP_DOC_DATA,
useValue: context,
},
],
parent: this.rootInjector,
});
this.portal = new ComponentPortal(HelpDocumentComponent, null, injector);
const ref = this.portalHost.attach(this.portal);
this.subscription = ref.instance.close.subscribe(() => {
this.portalHost.detach();
this.portal = null;
this.subscription.unsubscribe();
});
}
static { this.ɵfac = function HelpDocumentService_Factory(t) { return new (t || HelpDocumentService)(i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i0.ApplicationRef)); }; }
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: HelpDocumentService, factory: HelpDocumentService.ɵfac, providedIn: 'root' }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HelpDocumentService, [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], () => [{ type: i0.Injector }, { type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }], null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9oZWxwLWRvY3VtZW50L3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQ0wsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixVQUFVLEVBQ1YsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFLekUsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUNtQixZQUFzQixFQUN0QixHQUE2QixFQUM3QixNQUFzQjtRQUZ0QixpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUEwQjtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUd6QyxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQzlCLFFBQVEsQ0FBQyxJQUFJLEVBQ2IsSUFBSSxDQUFDLEdBQUcsRUFDUixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxZQUFZLENBQ2xCLENBQUM7SUFQQyxDQUFDO0lBWUosSUFBSSxDQUFDLE9BQTJDO1FBQzlDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQy9CLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsbUJBQW1CO29CQUM1QixRQUFRLEVBQUUsT0FBTztpQkFDbEI7YUFDRjtZQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWTtTQUMxQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLHFCQUFxQixFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN6RSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7b0ZBdkNVLG1CQUFtQjt1RUFBbkIsbUJBQW1CLFdBQW5CLG1CQUFtQixtQkFGbEIsTUFBTTs7aUZBRVAsbUJBQW1CO2NBSC9CLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgRG9tUG9ydGFsT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBJbmplY3RhYmxlLFxuICBJbmplY3Rvcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSGVscERvY3VtZW50Q29tcG9uZW50LCBUT0tFTl9IRUxQX0RPQ19EQVRBIH0gZnJvbSAnLi9jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSGVscERvY3VtZW50U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9vdEluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNmcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgKSB7fVxuXG4gIHBvcnRhbEhvc3QgPSBuZXcgRG9tUG9ydGFsT3V0bGV0KFxuICAgIGRvY3VtZW50LmJvZHksXG4gICAgdGhpcy5jZnIsXG4gICAgdGhpcy5hcHBSZWYsXG4gICAgdGhpcy5yb290SW5qZWN0b3IsXG4gICk7XG5cbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHBvcnRhbDogQ29tcG9uZW50UG9ydGFsPEhlbHBEb2N1bWVudENvbXBvbmVudD47XG5cbiAgb3Blbihjb250ZXh0PzogeyB0aXRsZTogc3RyaW5nOyByYXdVcmw6IHN0cmluZyB9KSB7XG4gICAgaWYgKHRoaXMucG9ydGFsSG9zdC5oYXNBdHRhY2hlZCkge1xuICAgICAgdGhpcy5wb3J0YWxIb3N0LmRldGFjaCgpO1xuICAgICAgdGhpcy5wb3J0YWwgPSBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogVE9LRU5fSEVMUF9ET0NfREFUQSxcbiAgICAgICAgICB1c2VWYWx1ZTogY29udGV4dCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBwYXJlbnQ6IHRoaXMucm9vdEluamVjdG9yLFxuICAgIH0pO1xuICAgIHRoaXMucG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChIZWxwRG9jdW1lbnRDb21wb25lbnQsIG51bGwsIGluamVjdG9yKTtcbiAgICBjb25zdCByZWYgPSB0aGlzLnBvcnRhbEhvc3QuYXR0YWNoKHRoaXMucG9ydGFsKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHJlZi5pbnN0YW5jZS5jbG9zZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5wb3J0YWxIb3N0LmRldGFjaCgpO1xuICAgICAgdGhpcy5wb3J0YWwgPSBudWxsO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19