@herdwatch/ngx-ionic-image-viewer
Version:
The angular workspace to develop the ngx-ionic-image-viewer component
85 lines • 10.1 kB
JavaScript
import { Directive, HostListener, Input } from '@angular/core';
import { ViewerModalComponent } from './viewer-modal/viewer-modal.component';
import * as i0 from "@angular/core";
import * as i1 from "@ionic/angular/standalone";
export class NgxIonicImageViewerDirective {
constructor(el, renderer, modalController) {
this.el = el;
this.renderer = renderer;
this.modalController = modalController;
}
onClick() {
this.viewImage(this.src, this.srcFallback, this.srcHighRes, this.title, this.titleSize, this.text, this.scheme, this.slideOptions, this.swipeToClose);
}
onError() {
if (this.src !== this.el.nativeElement.src) {
this.src = this.el.nativeElement.src;
}
if (this.srcFallback) {
this.renderer.setAttribute(this.el.nativeElement, 'src', this.srcFallback);
}
}
ngOnInit() {
if (!this.el.nativeElement.hasAttribute('src')) {
this.renderer.setAttribute(this.el.nativeElement, 'src', this.src);
}
}
async viewImage(src, srcFallback = '', srcHighRes = '', title = '', titleSize = '', text = '', scheme = 'auto', slideOptions = {}, swipeToClose = true) {
const modal = await this.modalController.create({
component: ViewerModalComponent,
componentProps: {
src,
srcFallback,
srcHighRes,
title,
titleSize,
text,
scheme,
slideOptions,
swipeToClose
},
cssClass: this.cssClass && this.cssClass instanceof Array
? ['ion-img-viewer', ...this.cssClass]
: ['ion-img-viewer', this.cssClass],
keyboardClose: true,
showBackdrop: true
});
return await modal.present();
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: NgxIonicImageViewerDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.10", type: NgxIonicImageViewerDirective, isStandalone: true, selector: "[ionImgViewer]", inputs: { cssClass: "cssClass", scheme: "scheme", slideOptions: "slideOptions", src: "src", srcFallback: "srcFallback", srcHighRes: "srcHighRes", swipeToClose: "swipeToClose", text: "text", title: "title", titleSize: "titleSize" }, host: { listeners: { "click": "onClick()", "error": "onError($event)" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: NgxIonicImageViewerDirective, decorators: [{
type: Directive,
args: [{
selector: '[ionImgViewer]',
standalone: true,
}]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.ModalController }], propDecorators: { cssClass: [{
type: Input
}], scheme: [{
type: Input
}], slideOptions: [{
type: Input
}], src: [{
type: Input
}], srcFallback: [{
type: Input
}], srcHighRes: [{
type: Input
}], swipeToClose: [{
type: Input
}], text: [{
type: Input
}], title: [{
type: Input
}], titleSize: [{
type: Input
}], onClick: [{
type: HostListener,
args: ['click']
}], onError: [{
type: HostListener,
args: ['error', ['$event']]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlvbmljLWltYWdlLXZpZXdlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25neC1pb25pYy1pbWFnZS12aWV3ZXIvc3JjL2xpYi9uZ3gtaW9uaWMtaW1hZ2Utdmlld2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7QUFNN0UsTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxZQUFvQixFQUFjLEVBQVUsUUFBbUIsRUFBUyxlQUFnQztRQUFwRixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFTLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUFJLENBQUM7SUFhdEYsT0FBTztRQUM1QixJQUFJLENBQUMsU0FBUyxDQUNaLElBQUksQ0FBQyxHQUFHLEVBQ1IsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxZQUFZLENBQ2xCLENBQUM7SUFDSixDQUFDO0lBRWtDLE9BQU87UUFDeEMsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdFLENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FDYixHQUFXLEVBQ1gsV0FBVyxHQUFHLEVBQUUsRUFDaEIsVUFBVSxHQUFHLEVBQUUsRUFDZixLQUFLLEdBQUcsRUFBRSxFQUNWLFNBQVMsR0FBRyxFQUFFLEVBQ2QsSUFBSSxHQUFHLEVBQUUsRUFDVCxNQUFNLEdBQUcsTUFBTSxFQUNmLGVBQXVCLEVBQUUsRUFDekIsWUFBWSxHQUFHLElBQUk7UUFFbkIsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztZQUM5QyxTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLGNBQWMsRUFBRTtnQkFDZCxHQUFHO2dCQUNILFdBQVc7Z0JBQ1gsVUFBVTtnQkFDVixLQUFLO2dCQUNMLFNBQVM7Z0JBQ1QsSUFBSTtnQkFDSixNQUFNO2dCQUNOLFlBQVk7Z0JBQ1osWUFBWTthQUNiO1lBQ0QsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsWUFBWSxLQUFLO2dCQUN2RCxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxRQUFrQixDQUFDO1lBQy9DLGFBQWEsRUFBRSxJQUFJO1lBQ25CLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDL0IsQ0FBQzsrR0EzRVUsNEJBQTRCO21HQUE1Qiw0QkFBNEI7OzRGQUE1Qiw0QkFBNEI7a0JBSnhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO3FJQUlVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFaUIsT0FBTztzQkFBN0IsWUFBWTt1QkFBQyxPQUFPO2dCQWNjLE9BQU87c0JBQXpDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBSZW5kZXJlcjIsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBWaWV3ZXJNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vdmlld2VyLW1vZGFsL3ZpZXdlci1tb2RhbC5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbaW9uSW1nVmlld2VyXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE5neElvbmljSW1hZ2VWaWV3ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHB1YmxpYyBtb2RhbENvbnRyb2xsZXI6IE1vZGFsQ29udHJvbGxlcikgeyB9XG5cbiAgQElucHV0KCkgY3NzQ2xhc3M/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgQElucHV0KCkgc2NoZW1lPzogc3RyaW5nO1xuICBASW5wdXQoKSBzbGlkZU9wdGlvbnM/OiBvYmplY3Q7XG4gIEBJbnB1dCgpIHNyYyE6IHN0cmluZztcbiAgQElucHV0KCkgc3JjRmFsbGJhY2s/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNyY0hpZ2hSZXM/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN3aXBlVG9DbG9zZT86IGJvb2xlYW47XG4gIEBJbnB1dCgpIHRleHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICBASW5wdXQoKSB0aXRsZVNpemU/OiBzdHJpbmc7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKSBvbkNsaWNrKCkge1xuICAgIHRoaXMudmlld0ltYWdlKFxuICAgICAgdGhpcy5zcmMsXG4gICAgICB0aGlzLnNyY0ZhbGxiYWNrLFxuICAgICAgdGhpcy5zcmNIaWdoUmVzLFxuICAgICAgdGhpcy50aXRsZSxcbiAgICAgIHRoaXMudGl0bGVTaXplLFxuICAgICAgdGhpcy50ZXh0LFxuICAgICAgdGhpcy5zY2hlbWUsXG4gICAgICB0aGlzLnNsaWRlT3B0aW9ucyxcbiAgICAgIHRoaXMuc3dpcGVUb0Nsb3NlXG4gICAgKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2Vycm9yJywgWyckZXZlbnQnXSkgb25FcnJvcigpIHtcbiAgICBpZiAodGhpcy5zcmMgIT09IHRoaXMuZWwubmF0aXZlRWxlbWVudC5zcmMpIHtcbiAgICAgIHRoaXMuc3JjID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNyYztcbiAgICB9XG4gICAgaWYgKHRoaXMuc3JjRmFsbGJhY2spIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3NyYycsIHRoaXMuc3JjRmFsbGJhY2spO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5lbC5uYXRpdmVFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnc3JjJykpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3NyYycsIHRoaXMuc3JjKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB2aWV3SW1hZ2UoXG4gICAgc3JjOiBzdHJpbmcsXG4gICAgc3JjRmFsbGJhY2sgPSAnJyxcbiAgICBzcmNIaWdoUmVzID0gJycsXG4gICAgdGl0bGUgPSAnJyxcbiAgICB0aXRsZVNpemUgPSAnJyxcbiAgICB0ZXh0ID0gJycsXG4gICAgc2NoZW1lID0gJ2F1dG8nLFxuICAgIHNsaWRlT3B0aW9uczogb2JqZWN0ID0ge30sXG4gICAgc3dpcGVUb0Nsb3NlID0gdHJ1ZVxuICApIHtcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMubW9kYWxDb250cm9sbGVyLmNyZWF0ZSh7XG4gICAgICBjb21wb25lbnQ6IFZpZXdlck1vZGFsQ29tcG9uZW50LFxuICAgICAgY29tcG9uZW50UHJvcHM6IHtcbiAgICAgICAgc3JjLFxuICAgICAgICBzcmNGYWxsYmFjayxcbiAgICAgICAgc3JjSGlnaFJlcyxcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHRpdGxlU2l6ZSxcbiAgICAgICAgdGV4dCxcbiAgICAgICAgc2NoZW1lLFxuICAgICAgICBzbGlkZU9wdGlvbnMsXG4gICAgICAgIHN3aXBlVG9DbG9zZVxuICAgICAgfSxcbiAgICAgIGNzc0NsYXNzOiB0aGlzLmNzc0NsYXNzICYmIHRoaXMuY3NzQ2xhc3MgaW5zdGFuY2VvZiBBcnJheVxuICAgICAgICA/IFsnaW9uLWltZy12aWV3ZXInLCAuLi50aGlzLmNzc0NsYXNzXVxuICAgICAgICA6IFsnaW9uLWltZy12aWV3ZXInLCB0aGlzLmNzc0NsYXNzIGFzIHN0cmluZ10sXG4gICAgICBrZXlib2FyZENsb3NlOiB0cnVlLFxuICAgICAgc2hvd0JhY2tkcm9wOiB0cnVlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgbW9kYWwucHJlc2VudCgpO1xuICB9XG59XG4iXX0=