gentics-ui-core
Version:
This is the common core framework for the Gentics CMS and Mesh UI, and other Angular applications.
60 lines • 7.32 kB
JavaScript
import { Injectable, Optional, SkipSelf } from '@angular/core';
import * as i0 from "@angular/core";
/**
* The OverlayHostService is used to get a reference to the ViewConainerRef of the
* OverlayHost component, so that other components may insert components & elements
* into the DOM at that point.
*/
export class OverlayHostService {
/**
* The OverlayHostService expects to be used by the OverlayHostComponent in the root module of the app.
* In the case that the GenticsUICore is imported into a lazy-loaded child module, this service may be
* instantiated a second time. This second instance will not have been registered with the OverlayHostComponent,
* so we need to check out the injector tree and grab the hostView from the parent OverlayHostService.
*/
constructor(parentInstance) {
this.parentInstance = parentInstance;
this.promiseResolveFns = [];
if (parentInstance) {
this.hostView = parentInstance.hostView;
this.promiseResolveFns = parentInstance.promiseResolveFns;
}
}
/**
* Used to pass in the ViewContainerRef from the OverlayHost component.
* Should not be used by any other component.
*/
registerHostView(viewContainerRef) {
this.hostView = viewContainerRef;
if (0 < this.promiseResolveFns.length) {
this.resolveHostView();
}
}
/**
* Returns a promise which resolves to the ViewContainerRef of the OverlayHost
* component. This can then be used to insert components and elements into the
* DOM at that point.
*/
getHostView() {
return new Promise((resolve) => {
this.promiseResolveFns.push(resolve);
if (this.hostView !== undefined) {
this.resolveHostView();
}
});
}
resolveHostView() {
this.promiseResolveFns.forEach(resolve => resolve(this.hostView));
this.promiseResolveFns = [];
}
}
/** @nocollapse */ OverlayHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: OverlayHostService, deps: [{ token: OverlayHostService, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable });
/** @nocollapse */ OverlayHostService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: OverlayHostService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: OverlayHostService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: OverlayHostService, decorators: [{
type: Optional
}, {
type: SkipSelf
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1ob3N0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9vdmVybGF5LWhvc3Qvb3ZlcmxheS1ob3N0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBb0IsUUFBUSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFL0U7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFLM0I7Ozs7O09BS0c7SUFDSCxZQUE0QyxjQUFtQztRQUFuQyxtQkFBYyxHQUFkLGNBQWMsQ0FBcUI7UUFSeEUsc0JBQWlCLEdBQWUsRUFBRSxDQUFDO1FBU3RDLElBQUksY0FBYyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQztZQUN4QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsY0FBYyxDQUFDLGlCQUFpQixDQUFDO1NBQzdEO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILGdCQUFnQixDQUFDLGdCQUFrQztRQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDO1FBQ2pDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXO1FBQ1AsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQWlCLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUMxQjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGVBQWU7UUFDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7O2tJQTlDUSxrQkFBa0Isa0JBV2tDLGtCQUFrQjtzSUFYdEUsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7MERBWXNELGtCQUFrQjswQkFBbEUsUUFBUTs7MEJBQUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgVmlld0NvbnRhaW5lclJlZiwgT3B0aW9uYWwsIFNraXBTZWxmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBUaGUgT3ZlcmxheUhvc3RTZXJ2aWNlIGlzIHVzZWQgdG8gZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3Q29uYWluZXJSZWYgb2YgdGhlXG4gKiBPdmVybGF5SG9zdCBjb21wb25lbnQsIHNvIHRoYXQgb3RoZXIgY29tcG9uZW50cyBtYXkgaW5zZXJ0IGNvbXBvbmVudHMgJiBlbGVtZW50c1xuICogaW50byB0aGUgRE9NIGF0IHRoYXQgcG9pbnQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPdmVybGF5SG9zdFNlcnZpY2Uge1xuXG4gICAgcHVibGljIGhvc3RWaWV3OiBWaWV3Q29udGFpbmVyUmVmO1xuICAgIHB1YmxpYyBwcm9taXNlUmVzb2x2ZUZuczogRnVuY3Rpb25bXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogVGhlIE92ZXJsYXlIb3N0U2VydmljZSBleHBlY3RzIHRvIGJlIHVzZWQgYnkgdGhlIE92ZXJsYXlIb3N0Q29tcG9uZW50IGluIHRoZSByb290IG1vZHVsZSBvZiB0aGUgYXBwLlxuICAgICAqIEluIHRoZSBjYXNlIHRoYXQgdGhlIEdlbnRpY3NVSUNvcmUgaXMgaW1wb3J0ZWQgaW50byBhIGxhenktbG9hZGVkIGNoaWxkIG1vZHVsZSwgdGhpcyBzZXJ2aWNlIG1heSBiZVxuICAgICAqIGluc3RhbnRpYXRlZCBhIHNlY29uZCB0aW1lLiBUaGlzIHNlY29uZCBpbnN0YW5jZSB3aWxsIG5vdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZCB3aXRoIHRoZSBPdmVybGF5SG9zdENvbXBvbmVudCxcbiAgICAgKiBzbyB3ZSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgaW5qZWN0b3IgdHJlZSBhbmQgZ3JhYiB0aGUgaG9zdFZpZXcgZnJvbSB0aGUgcGFyZW50IE92ZXJsYXlIb3N0U2VydmljZS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcml2YXRlIHBhcmVudEluc3RhbmNlPzogT3ZlcmxheUhvc3RTZXJ2aWNlKSB7XG4gICAgICAgIGlmIChwYXJlbnRJbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy5ob3N0VmlldyA9IHBhcmVudEluc3RhbmNlLmhvc3RWaWV3O1xuICAgICAgICAgICAgdGhpcy5wcm9taXNlUmVzb2x2ZUZucyA9IHBhcmVudEluc3RhbmNlLnByb21pc2VSZXNvbHZlRm5zO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byBwYXNzIGluIHRoZSBWaWV3Q29udGFpbmVyUmVmIGZyb20gdGhlIE92ZXJsYXlIb3N0IGNvbXBvbmVudC5cbiAgICAgKiBTaG91bGQgbm90IGJlIHVzZWQgYnkgYW55IG90aGVyIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICByZWdpc3Rlckhvc3RWaWV3KHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3N0VmlldyA9IHZpZXdDb250YWluZXJSZWY7XG4gICAgICAgIGlmICgwIDwgdGhpcy5wcm9taXNlUmVzb2x2ZUZucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZUhvc3RWaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcHJvbWlzZSB3aGljaCByZXNvbHZlcyB0byB0aGUgVmlld0NvbnRhaW5lclJlZiBvZiB0aGUgT3ZlcmxheUhvc3RcbiAgICAgKiBjb21wb25lbnQuIFRoaXMgY2FuIHRoZW4gYmUgdXNlZCB0byBpbnNlcnQgY29tcG9uZW50cyBhbmQgZWxlbWVudHMgaW50byB0aGVcbiAgICAgKiBET00gYXQgdGhhdCBwb2ludC5cbiAgICAgKi9cbiAgICBnZXRIb3N0VmlldygpOiBQcm9taXNlPFZpZXdDb250YWluZXJSZWY+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm9taXNlUmVzb2x2ZUZucy5wdXNoKHJlc29sdmUpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaG9zdFZpZXcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUhvc3RWaWV3KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZUhvc3RWaWV3KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlRm5zLmZvckVhY2gocmVzb2x2ZSA9PiByZXNvbHZlKHRoaXMuaG9zdFZpZXcpKTtcbiAgICAgICAgdGhpcy5wcm9taXNlUmVzb2x2ZUZucyA9IFtdO1xuICAgIH1cbn1cbiJdfQ==