UNPKG

@crystalui/angular-lightbox

Version:

Angular library for viewing images in a pop-up window with touch screen support.

57 lines 7.7 kB
import { __decorate } from "tslib"; import { Injectable, Injector, ComponentFactoryResolver, EmbeddedViewRef, ApplicationRef, ComponentRef } from '@angular/core'; import { LightboxComponent } from './lightbox.component'; import { DefaultProperties } from './default-properties'; var CrystalLightbox = /** @class */ (function () { function CrystalLightbox(componentFactoryResolver, appRef, injector) { this.componentFactoryResolver = componentFactoryResolver; this.appRef = appRef; this.injector = injector; } CrystalLightbox.prototype.appendComponentToBody = function (component, lightboxData) { var _this = this; var componentRef = this.componentFactoryResolver .resolveComponentFactory(component) .create(this.injector); componentRef.instance.lightboxData = lightboxData; this.appRef.attachView(componentRef.hostView); var domElem = componentRef.hostView.rootNodes[0]; // Add to body document.body.appendChild(domElem); componentRef.instance.events.subscribe(function (event) { if (event.type === 'close') { _this.appRef.detachView(componentRef.hostView); componentRef.destroy(); } }); }; CrystalLightbox.prototype.open = function (lightboxData) { lightboxData.properties = this.applyPropertieDefaults(DefaultProperties, lightboxData.properties); var component = this.getLightboxComponent(); this.appendComponentToBody(component, lightboxData); }; CrystalLightbox.prototype.getLightboxComponent = function () { return LightboxComponent; }; CrystalLightbox.prototype.applyPropertieDefaults = function (defaultProperties, properties) { if (!properties) { properties = {}; } if (!properties.index) { properties.index = 0; } this._defaultProperties = Object.assign({}, defaultProperties); return Object.assign(this._defaultProperties, properties); }; CrystalLightbox.ctorParameters = function () { return [ { type: ComponentFactoryResolver }, { type: ApplicationRef }, { type: Injector } ]; }; CrystalLightbox = __decorate([ Injectable() ], CrystalLightbox); return CrystalLightbox; }()); export { CrystalLightbox }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRib3guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjcnlzdGFsdWkvYW5ndWxhci1saWdodGJveC8iLCJzb3VyY2VzIjpbImxpYi9saWdodGJveC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVF6RDtJQUlDLHlCQUNTLHdCQUFrRCxFQUNsRCxNQUFzQixFQUN0QixRQUFrQjtRQUZsQiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDM0IsQ0FBQztJQUVELCtDQUFxQixHQUFyQixVQUFzQixTQUFjLEVBQUUsWUFBMEI7UUFBaEUsaUJBbUJDO1FBbEJNLElBQU0sWUFBWSxHQUFHLElBQUksQ0FBQyx3QkFBd0I7YUFDN0MsdUJBQXVCLENBQUMsU0FBUyxDQUFDO2FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbkIsWUFBWSxDQUFDLFFBQVMsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBRWpFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxJQUFNLE9BQU8sR0FBSSxZQUFZLENBQUMsUUFBaUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBRTVGLGNBQWM7UUFDZCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLFlBQVksQ0FBQyxRQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFDLEtBQUs7WUFDM0QsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBQztnQkFDaEMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM5QyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDdkI7UUFDSSxDQUFDLENBQUMsQ0FBQztJQUNWLENBQUM7SUFHRCw4QkFBSSxHQUFKLFVBQUssWUFBMEI7UUFDOUIsWUFBWSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVGLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELDhDQUFvQixHQUFwQjtRQUNDLE9BQU8saUJBQWlCLENBQUM7SUFDMUIsQ0FBQztJQUVELGdEQUFzQixHQUF0QixVQUF1QixpQkFBaUIsRUFBRSxVQUFVO1FBQ25ELElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDaEIsVUFBVSxHQUFHLEVBQUUsQ0FBQztTQUNoQjtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFDO1lBQ3JCLFVBQVUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDL0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMzRCxDQUFDOztnQkEvQ2tDLHdCQUF3QjtnQkFDMUMsY0FBYztnQkFDWixRQUFROztJQVBmLGVBQWU7UUFEM0IsVUFBVSxFQUFFO09BQ0EsZUFBZSxDQXFEM0I7SUFBRCxzQkFBQztDQUFBLEFBckRELElBcURDO1NBckRZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBFbWJlZGRlZFZpZXdSZWYsIEFwcGxpY2F0aW9uUmVmLCBDb21wb25lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpZ2h0Ym94Q29tcG9uZW50IH0gZnJvbSAnLi9saWdodGJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvcGVydGllcywgTGlnaHRib3hEYXRhIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERlZmF1bHRQcm9wZXJ0aWVzIH0gZnJvbSAnLi9kZWZhdWx0LXByb3BlcnRpZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkQ29tcG9uZW50IHtcblx0bGlnaHRib3hEYXRhOiBMaWdodGJveERhdGE7IFxuXHRldmVudHM6IGFueTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENyeXN0YWxMaWdodGJveCB7XG5cdGlzTW9iaWxlOiBib29sZWFuO1xuXHRfZGVmYXVsdFByb3BlcnRpZXM6IFByb3BlcnRpZXM7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcblx0XHRwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG5cdFx0cHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpeyBcblx0fVxuIFxuXHRhcHBlbmRDb21wb25lbnRUb0JvZHkoY29tcG9uZW50OiBhbnksIGxpZ2h0Ym94RGF0YTogTGlnaHRib3hEYXRhKSB7XHRcdFxuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxuICAgICAgICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudClcbiAgICAgICAgICAgIC5jcmVhdGUodGhpcy5pbmplY3Rvcik7XG5cblx0XHQoPEFkQ29tcG9uZW50PmNvbXBvbmVudFJlZi5pbnN0YW5jZSkubGlnaHRib3hEYXRhID0gbGlnaHRib3hEYXRhO1xuXG5cdFx0dGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuXHRcdGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cblx0XHQvLyBBZGQgdG8gYm9keVxuXHRcdGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9tRWxlbSk7XG5cdFx0XG4gICAgICAgICg8QWRDb21wb25lbnQ+Y29tcG9uZW50UmVmLmluc3RhbmNlKS5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBcdGlmIChldmVudC50eXBlID09PSAnY2xvc2UnKXtcblx0XHRcdFx0dGhpcy5hcHBSZWYuZGV0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuXHRcdFx0XHRjb21wb25lbnRSZWYuZGVzdHJveSgpO1xuXHRcdFx0fVxuICAgICAgICB9KTtcblx0fVxuXG5cblx0b3BlbihsaWdodGJveERhdGE6IExpZ2h0Ym94RGF0YSl7XG5cdFx0bGlnaHRib3hEYXRhLnByb3BlcnRpZXMgPSB0aGlzLmFwcGx5UHJvcGVydGllRGVmYXVsdHMoRGVmYXVsdFByb3BlcnRpZXMsIGxpZ2h0Ym94RGF0YS5wcm9wZXJ0aWVzKTtcbiAgICAgICAgbGV0IGNvbXBvbmVudCA9IHRoaXMuZ2V0TGlnaHRib3hDb21wb25lbnQoKTtcblx0XHR0aGlzLmFwcGVuZENvbXBvbmVudFRvQm9keShjb21wb25lbnQsIGxpZ2h0Ym94RGF0YSk7XG5cdH1cblxuXHRnZXRMaWdodGJveENvbXBvbmVudCgpe1xuXHRcdHJldHVybiBMaWdodGJveENvbXBvbmVudDtcblx0fVxuXG5cdGFwcGx5UHJvcGVydGllRGVmYXVsdHMoZGVmYXVsdFByb3BlcnRpZXMsIHByb3BlcnRpZXMpe1xuXHRcdGlmICghcHJvcGVydGllcykge1xuXHRcdFx0cHJvcGVydGllcyA9IHt9O1xuXHRcdH1cblxuXHRcdGlmICghcHJvcGVydGllcy5pbmRleCl7IFxuXHRcdFx0cHJvcGVydGllcy5pbmRleCA9IDA7XG5cdFx0fVxuXHRcdHRoaXMuX2RlZmF1bHRQcm9wZXJ0aWVzID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFByb3BlcnRpZXMpO1xuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKHRoaXMuX2RlZmF1bHRQcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzKTtcblx0fVxufSJdfQ==