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