UNPKG

@crystalui/angular-lightbox

Version:

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

148 lines 13.2 kB
import { __decorate } from "tslib"; import { Directive, ElementRef, Input, Output, HostListener, HostBinding, OnInit, EventEmitter } from '@angular/core'; import { EventService } from './event.service'; import { CrystalLightbox } from './lightbox.service'; let LightboxDirective = class LightboxDirective { constructor(lightbox, eventService, elementRef) { this.lightbox = lightbox; this.eventService = eventService; this.elementRef = elementRef; this.properties = {}; this.events = new EventEmitter(); this.hostLightboxGroup = true; this.globalEventsSubscription = this.eventService.emitter.subscribe((event) => { this.handleGlobalEvents(event); }); } get hostSimpleMode() { return this.simpleMode; } get isGroupImage() { return this.elementRef.nativeElement.closest(".lightbox-group"); } onClick(event) { if (this.disable) { return; } if (this.isGroupImage) { this.eventService.emitChangeEvent({ type: 'thumbnail:click', elementRef: this.elementRef, properties: this.properties }); } else { this.image = this.getImage(); this.lightbox.open({ images: [this.image], properties: this.properties, index: 0 }); } } ngOnChanges(changes) { this.properties = Object.assign({}, this.properties, this.getProperties(changes)); } handleGlobalEvents(event) { this.events.emit(event); } getImage() { let image = {}; const nativeElement = this.elementRef.nativeElement; if (this.fullImage) { image.fullImage = this.fullImage; } image.thumbnailImage = { path: nativeElement.src, height: nativeElement.naturalHeight, width: nativeElement.naturalWidth }; image.nativeElement = nativeElement; return image; } ; getProperties(changes) { let properties = {}; for (var prop in changes) { if (prop !== 'fullImage') { properties[prop] = changes[prop].currentValue; } } return properties; } }; LightboxDirective.ctorParameters = () => [ { type: CrystalLightbox }, { type: EventService }, { type: ElementRef } ]; __decorate([ Input() ], LightboxDirective.prototype, "fullImage", void 0); __decorate([ Input() ], LightboxDirective.prototype, "properties", void 0); __decorate([ Input() ], LightboxDirective.prototype, "loop", void 0); __decorate([ Input() ], LightboxDirective.prototype, "backgroundOpacity", void 0); __decorate([ Input() ], LightboxDirective.prototype, "counter", void 0); __decorate([ Input() ], LightboxDirective.prototype, "imageMaxHeight", void 0); __decorate([ Input() ], LightboxDirective.prototype, "imageMaxWidth", void 0); __decorate([ Input() ], LightboxDirective.prototype, "animationDuration", void 0); __decorate([ Input() ], LightboxDirective.prototype, "animationMode", void 0); __decorate([ Input() ], LightboxDirective.prototype, "animationTimingFunction", void 0); __decorate([ Input() ], LightboxDirective.prototype, "closeButtonText", void 0); __decorate([ Input() ], LightboxDirective.prototype, "counterSeparator", void 0); __decorate([ Input() ], LightboxDirective.prototype, "disable", void 0); __decorate([ Input() ], LightboxDirective.prototype, "simpleMode", void 0); __decorate([ Input() ], LightboxDirective.prototype, "backgroundColor", void 0); __decorate([ Input() ], LightboxDirective.prototype, "hideThumbnail", void 0); __decorate([ Input() ], LightboxDirective.prototype, "gestureEnable", void 0); __decorate([ Output() ], LightboxDirective.prototype, "events", void 0); __decorate([ HostBinding('class.lightbox-single') ], LightboxDirective.prototype, "hostLightboxGroup", void 0); __decorate([ HostBinding('class.lightbox-simple-mode') ], LightboxDirective.prototype, "hostSimpleMode", null); __decorate([ HostListener('click', ['$event']) ], LightboxDirective.prototype, "onClick", null); LightboxDirective = __decorate([ Directive({ selector: '[lightbox]' }) ], LightboxDirective); export { LightboxDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRib3guZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNyeXN0YWx1aS9hbmd1bGFyLWxpZ2h0Ym94LyIsInNvdXJjZXMiOlsibGliL2xpZ2h0Ym94LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBSyxvQkFBb0IsQ0FBQztBQU9wRCxJQUFhLGlCQUFpQixHQUE5QixNQUFhLGlCQUFpQjtJQWtDMUIsWUFDWSxRQUF5QixFQUN6QixZQUEwQixFQUMxQixVQUFzQjtRQUZ0QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBaEN6QixlQUFVLEdBQWUsRUFBRSxDQUFDO1FBaUIzQixXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFeEIsc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBY3BFLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQy9ELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDTixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUNKLENBQUM7SUFDTixDQUFDO0lBakJELElBQUksY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBY0QsT0FBTyxDQUFDLEtBQUs7UUFDVCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUM7WUFDYixPQUFPO1NBQ1Y7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUM7WUFDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7Z0JBQzlCLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2FBQzlCLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUU3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDZixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUNwQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzNCLEtBQUssRUFBRSxDQUFDO2FBQ1gsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQU87UUFDZixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFLO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxLQUFLLEdBQWtCLEVBQUUsQ0FBQztRQUM5QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUVwRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUM7WUFDZixLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDcEM7UUFFRCxLQUFLLENBQUMsY0FBYyxHQUFHO1lBQ25CLElBQUksRUFBRSxhQUFhLENBQUMsR0FBRztZQUN2QixNQUFNLEVBQUUsYUFBYSxDQUFDLGFBQWE7WUFDbkMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxZQUFZO1NBQ3BDLENBQUE7UUFFRCxLQUFLLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNwQyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQUEsQ0FBQztJQUVGLGFBQWEsQ0FBQyxPQUFPO1FBQ2pCLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVwQixLQUFLLElBQUksSUFBSSxJQUFJLE9BQU8sRUFBRTtZQUN0QixJQUFJLElBQUksS0FBSyxXQUFXLEVBQUM7Z0JBQ3JCLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDO2FBQ2pEO1NBQ0o7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0NBQ0osQ0FBQTs7WUFyRXlCLGVBQWU7WUFDWCxZQUFZO1lBQ2QsVUFBVTs7QUFqQ3pCO0lBQVIsS0FBSyxFQUFFO29EQUFrQjtBQUNqQjtJQUFSLEtBQUssRUFBRTtxREFBNkI7QUFDNUI7SUFBUixLQUFLLEVBQUU7K0NBQWU7QUFDZDtJQUFSLEtBQUssRUFBRTs0REFBMkI7QUFDMUI7SUFBUixLQUFLLEVBQUU7a0RBQWtCO0FBQ2pCO0lBQVIsS0FBSyxFQUFFO3lEQUF3QjtBQUN2QjtJQUFSLEtBQUssRUFBRTt3REFBdUI7QUFDdEI7SUFBUixLQUFLLEVBQUU7NERBQTJCO0FBQzFCO0lBQVIsS0FBSyxFQUFFO3dEQUF5RjtBQUN4RjtJQUFSLEtBQUssRUFBRTtrRUFBaUM7QUFDaEM7SUFBUixLQUFLLEVBQUU7MERBQXlCO0FBQ3hCO0lBQVIsS0FBSyxFQUFFOzJEQUEwQjtBQUN6QjtJQUFSLEtBQUssRUFBRTtrREFBa0I7QUFDakI7SUFBUixLQUFLLEVBQUU7cURBQXFCO0FBQ3BCO0lBQVIsS0FBSyxFQUFFOzBEQUFvQztBQUNuQztJQUFSLEtBQUssRUFBRTt3REFBd0I7QUFDdkI7SUFBUixLQUFLLEVBQUU7d0RBQXdCO0FBRXRCO0lBQVQsTUFBTSxFQUFFO2lEQUFxRDtBQUV4QjtJQUFyQyxXQUFXLENBQUMsdUJBQXVCLENBQUM7NERBQW1DO0FBRXhFO0lBREMsV0FBVyxDQUFDLDRCQUE0QixDQUFDO3VEQUd6QztBQWtCRDtJQURDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztnREFxQmpDO0FBbEVRLGlCQUFpQjtJQUo3QixTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsWUFBWTtLQUN6QixDQUFDO0dBRVcsaUJBQWlCLENBd0c3QjtTQXhHWSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPdXRwdXQsIEhvc3RMaXN0ZW5lciwgSG9zdEJpbmRpbmcsIE9uSW5pdCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFdmVudFNlcnZpY2UgfSBmcm9tICcuL2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3J5c3RhbExpZ2h0Ym94IH0gZnJvbScuL2xpZ2h0Ym94LnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvcGVydGllcywgSW1hZ2VFeHRlbmRlZCwgSW1hZ2UgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tsaWdodGJveF0nXG59KVxuXG5leHBvcnQgY2xhc3MgTGlnaHRib3hEaXJlY3RpdmUge1xuXG4gICAgZ2xvYmFsRXZlbnRzU3Vic2NyaXB0aW9uO1xuICAgIGltYWdlOiBJbWFnZUV4dGVuZGVkO1xuICAgIEBJbnB1dCgpIGZ1bGxJbWFnZTogSW1hZ2U7XG4gICAgQElucHV0KCkgcHJvcGVydGllczogUHJvcGVydGllcyA9IHt9O1xuICAgIEBJbnB1dCgpIGxvb3A6IGJvb2xlYW47XG4gICAgQElucHV0KCkgYmFja2dyb3VuZE9wYWNpdHk6IG51bWJlcjtcbiAgICBASW5wdXQoKSBjb3VudGVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGltYWdlTWF4SGVpZ2h0OiBzdHJpbmc7XG4gICAgQElucHV0KCkgaW1hZ2VNYXhXaWR0aDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGFuaW1hdGlvbkR1cmF0aW9uOiBudW1iZXI7XG4gICAgQElucHV0KCkgYW5pbWF0aW9uTW9kZTogJ2RlZmF1bHQnIHwgJ3pvb20nIHwgJ3pvb20tYmx1cicgfCAnem9vbS1wcmVsb2FkZXInIHwgJ29wYWNpdHknIHwgJ25vbmUnOyBcbiAgICBASW5wdXQoKSBhbmltYXRpb25UaW1pbmdGdW5jdGlvbjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNsb3NlQnV0dG9uVGV4dDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvdW50ZXJTZXBhcmF0b3I6IHN0cmluZztcbiAgICBASW5wdXQoKSBkaXNhYmxlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNpbXBsZU1vZGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgYmFja2dyb3VuZENvbG9yOiAnYmxhY2snIHwgJ3doaXRlJztcbiAgICBASW5wdXQoKSBoaWRlVGh1bWJuYWlsOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGdlc3R1cmVFbmFibGU6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgZXZlbnRzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5saWdodGJveC1zaW5nbGUnKSBob3N0TGlnaHRib3hHcm91cDogYm9vbGVhbiA9IHRydWU7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5saWdodGJveC1zaW1wbGUtbW9kZScpIFxuICAgIGdldCBob3N0U2ltcGxlTW9kZSgpe1xuICAgICAgICByZXR1cm4gdGhpcy5zaW1wbGVNb2RlO1xuICAgIH1cblxuICAgIGdldCBpc0dyb3VwSW1hZ2UoKTpib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoXCIubGlnaHRib3gtZ3JvdXBcIik7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoIFxuICAgICAgICBwcml2YXRlIGxpZ2h0Ym94OiBDcnlzdGFsTGlnaHRib3gsIFxuICAgICAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5nbG9iYWxFdmVudHNTdWJzY3JpcHRpb24gPSB0aGlzLmV2ZW50U2VydmljZS5lbWl0dGVyLnN1YnNjcmliZShcbiAgICAgICAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlR2xvYmFsRXZlbnRzKGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25DbGljayhldmVudCl7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGUpe1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNHcm91cEltYWdlKXtcbiAgICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmVtaXRDaGFuZ2VFdmVudCh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3RodW1ibmFpbDpjbGljaycsXG4gICAgICAgICAgICAgICAgZWxlbWVudFJlZjogdGhpcy5lbGVtZW50UmVmLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHRoaXMucHJvcGVydGllc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlID0gdGhpcy5nZXRJbWFnZSgpO1xuXG4gICAgICAgICAgICB0aGlzLmxpZ2h0Ym94Lm9wZW4oe1xuICAgICAgICAgICAgICAgIGltYWdlczogW3RoaXMuaW1hZ2VdLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHRoaXMucHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICBpbmRleDogMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzKSB7XG4gICAgICAgIHRoaXMucHJvcGVydGllcyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMucHJvcGVydGllcywgdGhpcy5nZXRQcm9wZXJ0aWVzKGNoYW5nZXMpKTtcbiAgICB9XG5cbiAgICBoYW5kbGVHbG9iYWxFdmVudHMoZXZlbnQpe1xuICAgICAgICB0aGlzLmV2ZW50cy5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBnZXRJbWFnZSgpe1xuICAgICAgICBsZXQgaW1hZ2U6IEltYWdlRXh0ZW5kZWQgPSB7fTtcbiAgICAgICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmICh0aGlzLmZ1bGxJbWFnZSl7XG4gICAgICAgICAgICBpbWFnZS5mdWxsSW1hZ2UgPSB0aGlzLmZ1bGxJbWFnZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGltYWdlLnRodW1ibmFpbEltYWdlID0ge1xuICAgICAgICAgICAgcGF0aDogbmF0aXZlRWxlbWVudC5zcmMsXG4gICAgICAgICAgICBoZWlnaHQ6IG5hdGl2ZUVsZW1lbnQubmF0dXJhbEhlaWdodCxcbiAgICAgICAgICAgIHdpZHRoOiBuYXRpdmVFbGVtZW50Lm5hdHVyYWxXaWR0aFxuICAgICAgICB9XG5cbiAgICAgICAgaW1hZ2UubmF0aXZlRWxlbWVudCA9IG5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHJldHVybiBpbWFnZTtcbiAgICB9O1xuXG4gICAgZ2V0UHJvcGVydGllcyhjaGFuZ2VzKXtcbiAgICAgICAgbGV0IHByb3BlcnRpZXMgPSB7fTtcblxuICAgICAgICBmb3IgKHZhciBwcm9wIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIGlmIChwcm9wICE9PSAnZnVsbEltYWdlJyl7XG4gICAgICAgICAgICAgICAgcHJvcGVydGllc1twcm9wXSA9IGNoYW5nZXNbcHJvcF0uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICAgIH1cbn1cbiJdfQ==