@crystalui/angular-lightbox
Version:
Angular library for viewing images in a pop-up window with touch screen support.
55 lines • 7.38 kB
JavaScript
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=