UNPKG

@fivethree/core

Version:
100 lines 7.8 kB
/** * @fileoverview added by tsickle * Generated from: lib/overlay/overlay.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable, TemplateRef, ComponentFactoryResolver, ApplicationRef, Injector, RendererFactory2 } from '@angular/core'; import * as i0 from "@angular/core"; export class FivOverlayService { /** * @param {?} componentFactoryResolver * @param {?} rendererFactory * @param {?} appRef * @param {?} injector */ constructor(componentFactoryResolver, rendererFactory, appRef, injector) { this.componentFactoryResolver = componentFactoryResolver; this.appRef = appRef; this.injector = injector; this.renderer = rendererFactory.createRenderer(null, null); } /** * @template T * @param {?} view * @param {?} component * @param {?=} content * @return {?} */ createOverlay(view, component, content) { /** @type {?} */ const resolvedContent = this.resolveNgContent(view, content); /** @type {?} */ const componentRef = this.componentFactoryResolver .resolveComponentFactory(component) .create(this.injector, resolvedContent); this.appRef.attachView(componentRef.hostView); /** @type {?} */ const domElem = (/** @type {?} */ (((/** @type {?} */ (componentRef.hostView))) .rootNodes[0])); document.body.appendChild(domElem); return componentRef; } /** * @private * @template T * @param {?} viewContainerRef * @param {?} content * @return {?} */ resolveNgContent(viewContainerRef, content) { if (!content) { return; } if (content instanceof TemplateRef) { /** @type {?} */ const viewRef = viewContainerRef.createEmbeddedView(content); return [viewRef.rootNodes]; } /** @type {?} */ const factory = this.componentFactoryResolver.resolveComponentFactory(content); /** @type {?} */ const componentRef = factory.create(this.injector); return [[componentRef.location.nativeElement]]; } } FivOverlayService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ FivOverlayService.ctorParameters = () => [ { type: ComponentFactoryResolver }, { type: RendererFactory2 }, { type: ApplicationRef }, { type: Injector } ]; /** @nocollapse */ FivOverlayService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function FivOverlayService_Factory() { return new FivOverlayService(i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i0.RendererFactory2), i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(i0.INJECTOR)); }, token: FivOverlayService, providedIn: "root" }); if (false) { /** * @type {?} * @private */ FivOverlayService.prototype.renderer; /** * @type {?} * @private */ FivOverlayService.prototype.componentFactoryResolver; /** * @type {?} * @private */ FivOverlayService.prototype.appRef; /** * @type {?} * @private */ FivOverlayService.prototype.injector; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpdmV0aHJlZS9jb3JlLyIsInNvdXJjZXMiOlsibGliL292ZXJsYXkvb3ZlcmxheS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixXQUFXLEVBRVgsd0JBQXdCLEVBQ3hCLGNBQWMsRUFDZCxRQUFRLEVBSVIsZ0JBQWdCLEVBRWpCLE1BQU0sZUFBZSxDQUFDOztBQU12QixNQUFNLE9BQU8saUJBQWlCOzs7Ozs7O0lBRzVCLFlBQ1Usd0JBQWtELEVBQzFELGVBQWlDLEVBQ3pCLE1BQXNCLEVBQ3RCLFFBQWtCO1FBSGxCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFFbEQsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUUxQixJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7Ozs7Ozs7O0lBRUQsYUFBYSxDQUNYLElBQXNCLEVBQ3RCLFNBQWtCLEVBQ2xCLE9BQXNCOztjQUVoQixlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7O2NBQ3RELFlBQVksR0FBRyxJQUFJLENBQUMsd0JBQXdCO2FBQy9DLHVCQUF1QixDQUFDLFNBQVMsQ0FBQzthQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDOztjQUV4QyxPQUFPLEdBQUcsbUJBQUEsQ0FBQyxtQkFBQSxZQUFZLENBQUMsUUFBUSxFQUF3QixDQUFDO2FBQzVELFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBZTtRQUU5QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuQyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDOzs7Ozs7OztJQUVPLGdCQUFnQixDQUN0QixnQkFBa0MsRUFDbEMsT0FBcUI7UUFFckIsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU87U0FDUjtRQUNELElBQUksT0FBTyxZQUFZLFdBQVcsRUFBRTs7a0JBQzVCLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7WUFDNUQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM1Qjs7Y0FFSyxPQUFPLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUNuRSxPQUFPLENBQ1I7O2NBQ0ssWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNsRCxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQzs7O1lBbkRGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OztZQWJDLHdCQUF3QjtZQU14QixnQkFBZ0I7WUFMaEIsY0FBYztZQUNkLFFBQVE7Ozs7Ozs7O0lBYVIscUNBQTRCOzs7OztJQUcxQixxREFBMEQ7Ozs7O0lBRTFELG1DQUE4Qjs7Ozs7SUFDOUIscUNBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQXBwbGljYXRpb25SZWYsXG4gIEluamVjdG9yLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgUmVuZGVyZXIyLFxuICBSZW5kZXJlckZhY3RvcnkyLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuZXhwb3J0IHR5cGUgTmdDb250ZW50PFQ+ID0gVGVtcGxhdGVSZWY8VD4gfCBUeXBlPFQ+O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGaXZPdmVybGF5U2VydmljZSB7XG4gIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MixcbiAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcbiAgfVxuXG4gIGNyZWF0ZU92ZXJsYXk8VD4oXG4gICAgdmlldzogVmlld0NvbnRhaW5lclJlZixcbiAgICBjb21wb25lbnQ6IFR5cGU8VD4sXG4gICAgY29udGVudD86IE5nQ29udGVudDxUPlxuICApOiBDb21wb25lbnRSZWY8VD4ge1xuICAgIGNvbnN0IHJlc29sdmVkQ29udGVudCA9IHRoaXMucmVzb2x2ZU5nQ29udGVudCh2aWV3LCBjb250ZW50KTtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxuICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudClcbiAgICAgIC5jcmVhdGUodGhpcy5pbmplY3RvciwgcmVzb2x2ZWRDb250ZW50KTtcbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG5cbiAgICBjb25zdCBkb21FbGVtID0gKGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55PilcbiAgICAgIC5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuXG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU5nQ29udGVudDxUPihcbiAgICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIGNvbnRlbnQ6IE5nQ29udGVudDxUPlxuICApIHtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgY29uc3Qgdmlld1JlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KGNvbnRlbnQpO1xuICAgICAgcmV0dXJuIFt2aWV3UmVmLnJvb3ROb2Rlc107XG4gICAgfVxuXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFxuICAgICAgY29udGVudFxuICAgICk7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gZmFjdG9yeS5jcmVhdGUodGhpcy5pbmplY3Rvcik7XG4gICAgcmV0dXJuIFtbY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnRdXTtcbiAgfVxufVxuIl19