@fivethree/core
Version:
Fivethree Core Components
100 lines • 7.8 kB
JavaScript
/**
* @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