UNPKG

@crystalui/angular-lightbox

Version:

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

55 lines 7.38 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'; let CrystalLightbox = class CrystalLightbox { constructor(componentFactoryResolver, appRef, injector) { this.componentFactoryResolver = componentFactoryResolver; this.appRef = appRef; this.injector = injector; } appendComponentToBody(component, lightboxData) { const componentRef = this.componentFactoryResolver .resolveComponentFactory(component) .create(this.injector); componentRef.instance.lightboxData = lightboxData; this.appRef.attachView(componentRef.hostView); const domElem = componentRef.hostView.rootNodes[0]; // Add to body document.body.appendChild(domElem); componentRef.instance.events.subscribe((event) => { if (event.type === 'close') { this.appRef.detachView(componentRef.hostView); componentRef.destroy(); } }); } open(lightboxData) { lightboxData.properties = this.applyPropertieDefaults(DefaultProperties, lightboxData.properties); let component = this.getLightboxComponent(); this.appendComponentToBody(component, lightboxData); } getLightboxComponent() { return LightboxComponent; } applyPropertieDefaults(defaultProperties, properties) { if (!properties) { properties = {}; } if (!properties.index) { properties.index = 0; } this._defaultProperties = Object.assign({}, defaultProperties); return Object.assign(this._defaultProperties, properties); } }; CrystalLightbox.ctorParameters = () => [ { type: ComponentFactoryResolver }, { type: ApplicationRef }, { type: Injector } ]; CrystalLightbox = __decorate([ Injectable() ], CrystalLightbox); export { CrystalLightbox }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRib3guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjcnlzdGFsdWkvYW5ndWxhci1saWdodGJveC8iLCJzb3VyY2VzIjpbImxpYi9saWdodGJveC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVF6RCxJQUFhLGVBQWUsR0FBNUIsTUFBYSxlQUFlO0lBSTNCLFlBQ1Msd0JBQWtELEVBQ2xELE1BQXNCLEVBQ3RCLFFBQWtCO1FBRmxCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUMzQixDQUFDO0lBRUQscUJBQXFCLENBQUMsU0FBYyxFQUFFLFlBQTBCO1FBQ3pELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyx3QkFBd0I7YUFDN0MsdUJBQXVCLENBQUMsU0FBUyxDQUFDO2FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbkIsWUFBWSxDQUFDLFFBQVMsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBRWpFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBSSxZQUFZLENBQUMsUUFBaUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBRTVGLGNBQWM7UUFDZCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLFlBQVksQ0FBQyxRQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQy9ELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUM7Z0JBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDOUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3ZCO1FBQ0ksQ0FBQyxDQUFDLENBQUM7SUFDVixDQUFDO0lBR0QsSUFBSSxDQUFDLFlBQTBCO1FBQzlCLFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1RixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxvQkFBb0I7UUFDbkIsT0FBTyxpQkFBaUIsQ0FBQztJQUMxQixDQUFDO0lBRUQsc0JBQXNCLENBQUMsaUJBQWlCLEVBQUUsVUFBVTtRQUNuRCxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2hCLFVBQVUsR0FBRyxFQUFFLENBQUM7U0FDaEI7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBQztZQUNyQixVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztTQUNyQjtRQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDM0QsQ0FBQztDQUNELENBQUE7O1lBaERtQyx3QkFBd0I7WUFDMUMsY0FBYztZQUNaLFFBQVE7O0FBUGYsZUFBZTtJQUQzQixVQUFVLEVBQUU7R0FDQSxlQUFlLENBcUQzQjtTQXJEWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgRW1iZWRkZWRWaWV3UmVmLCBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWdodGJveENvbXBvbmVudCB9IGZyb20gJy4vbGlnaHRib3guY29tcG9uZW50JztcbmltcG9ydCB7IFByb3BlcnRpZXMsIExpZ2h0Ym94RGF0YSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEZWZhdWx0UHJvcGVydGllcyB9IGZyb20gJy4vZGVmYXVsdC1wcm9wZXJ0aWVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBZENvbXBvbmVudCB7XG5cdGxpZ2h0Ym94RGF0YTogTGlnaHRib3hEYXRhOyBcblx0ZXZlbnRzOiBhbnk7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDcnlzdGFsTGlnaHRib3gge1xuXHRpc01vYmlsZTogYm9vbGVhbjtcblx0X2RlZmF1bHRQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG5cdFx0cHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuXHRcdHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKXsgXG5cdH1cbiBcblx0YXBwZW5kQ29tcG9uZW50VG9Cb2R5KGNvbXBvbmVudDogYW55LCBsaWdodGJveERhdGE6IExpZ2h0Ym94RGF0YSkge1x0XHRcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbiAgICAgICAgICAgIC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnQpXG4gICAgICAgICAgICAuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xuXG5cdFx0KDxBZENvbXBvbmVudD5jb21wb25lbnRSZWYuaW5zdGFuY2UpLmxpZ2h0Ym94RGF0YSA9IGxpZ2h0Ym94RGF0YTtcblxuXHRcdHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcblx0XHRjb25zdCBkb21FbGVtID0gKGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55Pikucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuXG5cdFx0Ly8gQWRkIHRvIGJvZHlcblx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuXHRcdFxuICAgICAgICAoPEFkQ29tcG9uZW50PmNvbXBvbmVudFJlZi5pbnN0YW5jZSkuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgXHRpZiAoZXZlbnQudHlwZSA9PT0gJ2Nsb3NlJyl7XG5cdFx0XHRcdHRoaXMuYXBwUmVmLmRldGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcblx0XHRcdFx0Y29tcG9uZW50UmVmLmRlc3Ryb3koKTtcblx0XHRcdH1cbiAgICAgICAgfSk7XG5cdH1cblxuXG5cdG9wZW4obGlnaHRib3hEYXRhOiBMaWdodGJveERhdGEpe1xuXHRcdGxpZ2h0Ym94RGF0YS5wcm9wZXJ0aWVzID0gdGhpcy5hcHBseVByb3BlcnRpZURlZmF1bHRzKERlZmF1bHRQcm9wZXJ0aWVzLCBsaWdodGJveERhdGEucHJvcGVydGllcyk7XG4gICAgICAgIGxldCBjb21wb25lbnQgPSB0aGlzLmdldExpZ2h0Ym94Q29tcG9uZW50KCk7XG5cdFx0dGhpcy5hcHBlbmRDb21wb25lbnRUb0JvZHkoY29tcG9uZW50LCBsaWdodGJveERhdGEpO1xuXHR9XG5cblx0Z2V0TGlnaHRib3hDb21wb25lbnQoKXtcblx0XHRyZXR1cm4gTGlnaHRib3hDb21wb25lbnQ7XG5cdH1cblxuXHRhcHBseVByb3BlcnRpZURlZmF1bHRzKGRlZmF1bHRQcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzKXtcblx0XHRpZiAoIXByb3BlcnRpZXMpIHtcblx0XHRcdHByb3BlcnRpZXMgPSB7fTtcblx0XHR9XG5cblx0XHRpZiAoIXByb3BlcnRpZXMuaW5kZXgpeyBcblx0XHRcdHByb3BlcnRpZXMuaW5kZXggPSAwO1xuXHRcdH1cblx0XHR0aGlzLl9kZWZhdWx0UHJvcGVydGllcyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRQcm9wZXJ0aWVzKTtcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLl9kZWZhdWx0UHJvcGVydGllcywgcHJvcGVydGllcyk7XG5cdH1cbn0iXX0=