{"version":3,"file":"herdwatch-ngx-ionic-image-viewer.mjs","sources":["../../../libs/ngx-ionic-image-viewer/src/lib/ngx-ionic-image-viewer.service.ts","../../../libs/ngx-ionic-image-viewer/src/lib/viewer-modal/viewer-modal.component.ts","../../../libs/ngx-ionic-image-viewer/src/lib/viewer-modal/viewer-modal.component.html","../../../libs/ngx-ionic-image-viewer/src/lib/ngx-ionic-image-viewer.component.ts","../../../libs/ngx-ionic-image-viewer/src/lib/ngx-ionic-image-viewer.component.html","../../../libs/ngx-ionic-image-viewer/src/lib/ngx-ionic-image-viewer.directive.ts","../../../libs/ngx-ionic-image-viewer/src/lib/ngx-ionic-image-viewer.providers.ts","../../../libs/ngx-ionic-image-viewer/src/public-api.ts","../../../libs/ngx-ionic-image-viewer/herdwatch-ngx-ionic-image-viewer.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class NgxIonicImageViewerService {\n\n}\n","import { Component, OnInit, Input, ViewChild, ElementRef, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { ModalController } from '@ionic/angular/standalone';\nimport { IonHeader, IonToolbar, IonButton, IonButtons, IonIcon, IonTitle, IonContent, IonFooter, IonText } from '@ionic/angular/standalone';\nimport { NgClass } from '@angular/common';\nimport { addIcons } from 'ionicons';\nimport { close } from 'ionicons/icons';\n@Component({\n  selector: 'ion-viewer-modal',\n  templateUrl: './viewer-modal.component.html',\n  styleUrls: ['./viewer-modal.component.scss'],\n  standalone: true,\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  imports: [\n    IonHeader,\n    IonToolbar,\n    IonButton,\n    NgClass,\n    IonButtons,\n    IonIcon,\n    IonTitle,\n    IonContent,\n    IonFooter,\n    IonText,\n  ],\n})\nexport class ViewerModalComponent implements OnInit {\n  @Input() alt?: string = '';\n  @Input() scheme?: string = 'auto';\n  @Input() slideOptions?: object = {};\n  @Input() src!: string;\n  @Input() srcFallback?: string = '';\n  @Input() srcHighRes?: string = '';\n  @Input() swipeToClose?: boolean = true;\n  @Input() text?: string = '';\n  @Input() title?: string = '';\n  @Input() titleSize?: string = '';\n\n  defaultSlideOptions = {\n    zoom: {\n      enabled: true,\n    },\n  };\n\n  options = {};\n\n  swipeState = {\n    phase: 'init',\n    direction: 'none',\n    swipeType: 'none',\n    startX: 0,\n    startY: 0,\n    distance: 0,\n    distanceX: 0,\n    distanceY: 0,\n    threshold: 150, // required min distance traveled to be considered swipe\n    restraint: 100, // maximum distance allowed at the same time in perpendicular direction\n    allowedTime: 500, // maximum time allowed to travel that distance\n    elapsedTime: 0,\n    startTime: 0,\n  };\n\n  @ViewChild('swiper') swiperRef: ElementRef | undefined;\n\n  // @ViewChild('sliderRef', { static: true }) slides!: IonSlides;\n\n  constructor(private modalController: ModalController) {\n    addIcons({close})\n  }\n\n  async ngOnInit() {\n    this.options = { ...this.defaultSlideOptions, ...this.slideOptions };\n    this.src = this.srcHighRes || this.src;\n    this.setStyle();\n    this.setScheme(this.scheme);\n    this.initSwipeToClose(this.swipeToClose);\n\n    /**\n     * Current Workaround\n     * See reported bug: https://github.com/ionic-team/ionic/issues/19638#issuecomment-584828315\n     * Hint: Comment in '<ion-slide>' in component\n     */\n  }\n\n  setStyle() {\n    const el: HTMLElement | null = document.querySelector('.ion-img-viewer');\n    el?.style.setProperty('--height', '100%');\n    el?.style.setProperty('--width', '100%');\n    el?.style.setProperty('--border-radius', '0');\n  }\n\n  setScheme(scheme: string | undefined) {\n    if (scheme && scheme === 'auto') {\n      return;\n    }\n\n    const el: HTMLElement | null = document.querySelector('.ion-img-viewer');\n\n    if (this.scheme === 'light') {\n      el?.style.setProperty('--ion-background-color', '#ffffff');\n      el?.style.setProperty('--ion-background-color-rgb', '255, 255, 255');\n      el?.style.setProperty('--ion-text-color', '#000');\n      el?.style.setProperty('--ion-text-color-rgb', '0,0,0');\n    }\n\n    if (this.scheme === 'dark') {\n      if (el?.classList.contains('ios')) {\n        el?.style.setProperty('--ion-background-color', '#000000');\n        el?.style.setProperty('--ion-background-color-rgb', '0, 0, 0');\n      } else {\n        el?.style.setProperty('--ion-background-color', '#121212');\n        el?.style.setProperty('--ion-background-color-rgb', '18,18,18');\n      }\n      el?.style.setProperty('--ion-text-color', '#ffffff');\n      el?.style.setProperty('--ion-text-color-rgb', '255,255,255');\n    }\n  }\n\n  /**\n   * @see http://www.javascriptkit.com/javatutors/touchevents3.shtml\n   */\n  initSwipeToClose(isActive = true) {\n    if (!isActive) {\n      return;\n    }\n\n    const el = document.querySelector('ion-modal');\n    el?.addEventListener('mousedown', (event) => this.swipeStart(event), true);\n    el?.addEventListener('mousemove', (event) => this.swipeMove(event), true);\n    el?.addEventListener('mouseup', () => this.swipeEnd(), true);\n    el?.addEventListener('touchstart', (event) => this.swipeStart(event), true);\n    el?.addEventListener('touchmove', (event) => this.swipeMove(event), true);\n    el?.addEventListener('touchend', () => this.swipeEnd(), true);\n\n    this.modalController.getTop().then((modal) => {\n      modal?.onWillDismiss().then(() => {\n        document.removeEventListener('mousedown', this.swipeStart, true);\n        document.removeEventListener('mousemove', this.swipeMove, true);\n        document.removeEventListener('mouseup', this.swipeMove, true);\n        document.removeEventListener('touchstart', this.swipeStart, true);\n        document.removeEventListener('touchmove', this.swipeMove, true);\n        document.removeEventListener('touchend', this.swipeMove, true);\n      });\n    });\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  swipeStart(event: any) {\n    const { pageX, pageY } =\n      event.type === 'touchstart' && event?.changedTouches\n        ? event.changedTouches[0]\n        : event;\n\n    this.swipeState = {\n      ...this.swipeState,\n      phase: 'start',\n      direction: 'none',\n      distance: 0,\n      startX: pageX,\n      startY: pageY,\n      startTime: new Date().getTime(),\n    };\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  swipeMove(event: any) {\n    const { pageX, pageY } =\n      event.type === 'touchmove' && event?.changedTouches\n        ? event.changedTouches[0]\n        : event;\n    // get horizontal dist traveled by finger while in contact with surface\n    const distanceX = pageX - this.swipeState.startX;\n    // get vertical dist traveled by finger while in contact with surface\n    const distanceY = pageY - this.swipeState.startY;\n    let direction;\n    let distance;\n\n    if (Math.abs(distanceX) > Math.abs(distanceY)) {\n      // if distance traveled horizontally is greater than vertically, consider this a horizontal swipe\n      direction = distanceX < 0 ? 'left' : 'right';\n      distance = distanceX;\n    } else {\n      // else consider this a vertical swipe\n      direction = distanceY < 0 ? 'up' : 'down';\n      distance = distanceY;\n    }\n    this.swipeState = {\n      ...this.swipeState,\n      phase: 'move',\n      direction,\n      distance,\n      distanceX,\n      distanceY,\n    };\n    if (event.cancelable) {\n      event.preventDefault();\n    }\n  }\n\n  swipeEnd() {\n    if (this.swipeState.phase === 'none') {\n      return;\n    }\n    const {\n      allowedTime,\n      direction,\n      restraint,\n      startTime,\n      threshold,\n      distanceX,\n      distanceY,\n    } = this.swipeState;\n    let swipeType = null;\n\n    const elapsedTime = new Date().getTime() - startTime; // get time elapsed\n    if (elapsedTime <= allowedTime) {\n      // first condition for a swipe met\n      if (\n        Math.abs(distanceX) >= threshold &&\n        Math.abs(distanceY) <= restraint\n      ) {\n        // 2nd condition for horizontal swipe met\n        swipeType = direction; // set swipeType to either \"left\" or \"right\"\n      } else if (\n        Math.abs(distanceY) >= threshold &&\n        Math.abs(distanceX) <= restraint\n      ) {\n        // 2nd condition for vertical swipe met\n        swipeType = direction; // set swipeType to either \"top\" or \"down\"\n      }\n    }\n\n    this.swipeState = {\n      ...this.swipeState,\n      phase: 'end',\n      swipeType: swipeType ?? '',\n    };\n\n    if (swipeType === 'down') {\n      return this.closeModal();\n    }\n  }\n\n  closeModal() {\n    this.modalController.dismiss();\n  }\n}\n","<ion-header [ngClass]=\"{ 'no-title': title && title.length <= 0 }\">\n  <ion-toolbar>\n    <ion-buttons slot=\"primary\">\n      <ion-button data-cy=\"closeModal\" (click)=\"closeModal()\">\n        <ion-icon slot=\"icon-only\" name=\"close\"></ion-icon>\n      </ion-button>\n    </ion-buttons>\n    <ion-title [size]=\"titleSize\">{{ title }}</ion-title>\n  </ion-toolbar>\n</ion-header>\n\n<ion-content [forceOverscroll]=\"false\">\n  <swiper-container [options]=\"options\" centeredSlides=\"true\" passiveListeners=\"false\" zoom=\"true\" #swiper>\n    <swiper-slide>\n      <div class=\"swiper-zoom-container\">\n        <img [alt]=\"this.alt\" [src]=\"this.src\"/>\n      </div>\n    </swiper-slide>\n  </swiper-container>\n</ion-content>\n\n<ion-footer [ngClass]=\"{ 'no-text': text && text.length <= 0 }\">\n  <ion-toolbar class=\"ion-text-center\">\n    <ion-text>{{ text }}</ion-text>\n  </ion-toolbar>\n</ion-footer>\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ModalController } from '@ionic/angular/standalone';\nimport { ViewerModalComponent } from './viewer-modal/viewer-modal.component';\nimport { register } from 'swiper/element/bundle';\n\nregister();\n@Component({\n  selector: 'ion-img-viewer',\n  templateUrl: './ngx-ionic-image-viewer.component.html',\n  styles: [\n    `\n      :host {\n        display: block;\n      }\n    `\n  ],\n  encapsulation: ViewEncapsulation.Emulated,\n  standalone: true,\n})\nexport class NgxIonicImageViewerComponent implements OnInit {\n  @Input() alt?: string;\n  @Input() cssClass?: string | string[];\n  @Input() scheme?: string;\n  @Input() slideOptions?: object;\n  @Input() src!: string | undefined;\n  @Input() srcFallback?: string;\n  @Input() srcHighRes?: string;\n  @Input() swipeToClose?: boolean;\n  @Input() text?: string;\n  @Input() title?: string;\n  @Input() titleSize?: string;\n\n  constructor(public modalController: ModalController) {}\n\n  async viewImage(\n    src: string | undefined,\n    srcFallback = '',\n    srcHighRes = '',\n    title = '',\n    titleSize = '',\n    text = '',\n    scheme = 'auto',\n    slideOptions: object = {},\n    swipeToClose = true\n  ) {\n    const modal = await this.modalController.create({\n      component: ViewerModalComponent,\n      componentProps: {\n        src,\n        srcFallback,\n        srcHighRes,\n        title,\n        titleSize,\n        text,\n        scheme,\n        slideOptions,\n        swipeToClose\n      },\n      cssClass: this.cssClass && this.cssClass instanceof Array\n      ? ['ion-img-viewer', ...this.cssClass]\n      : ['ion-img-viewer', this.cssClass as string],\n      keyboardClose: true,\n      showBackdrop: true\n    });\n\n    return await modal.present();\n  }\n\n  ngOnInit() {\n    /* do nothing */\n  }\n}\n","<img\n  [alt]=\"alt\"\n  [src]=\"src\"\n  (click)=\"viewImage(src, srcFallback, srcHighRes, title, titleSize, text, scheme, slideOptions, swipeToClose)\"\n  (error)=\"src = srcFallback\"\n/>\n","import { Directive, ElementRef, HostListener, Input, Renderer2, OnInit } from '@angular/core';\nimport { ModalController } from '@ionic/angular/standalone';\nimport { ViewerModalComponent } from './viewer-modal/viewer-modal.component';\n\n@Directive({\n  selector: '[ionImgViewer]',\n  standalone: true,\n})\nexport class NgxIonicImageViewerDirective implements OnInit {\n  constructor(private el: ElementRef, private renderer: Renderer2, public modalController: ModalController) { }\n\n  @Input() cssClass?: string | string[];\n  @Input() scheme?: string;\n  @Input() slideOptions?: object;\n  @Input() src!: string;\n  @Input() srcFallback?: string;\n  @Input() srcHighRes?: string;\n  @Input() swipeToClose?: boolean;\n  @Input() text?: string;\n  @Input() title?: string;\n  @Input() titleSize?: string;\n\n  @HostListener('click') onClick() {\n    this.viewImage(\n      this.src,\n      this.srcFallback,\n      this.srcHighRes,\n      this.title,\n      this.titleSize,\n      this.text,\n      this.scheme,\n      this.slideOptions,\n      this.swipeToClose\n    );\n  }\n\n  @HostListener('error', ['$event']) onError() {\n    if (this.src !== this.el.nativeElement.src) {\n      this.src = this.el.nativeElement.src;\n    }\n    if (this.srcFallback) {\n      this.renderer.setAttribute(this.el.nativeElement, 'src', this.srcFallback);\n    }\n  }\n\n  ngOnInit() {\n    if (!this.el.nativeElement.hasAttribute('src')) {\n      this.renderer.setAttribute(this.el.nativeElement, 'src', this.src);\n    }\n  }\n\n  async viewImage(\n    src: string,\n    srcFallback = '',\n    srcHighRes = '',\n    title = '',\n    titleSize = '',\n    text = '',\n    scheme = 'auto',\n    slideOptions: object = {},\n    swipeToClose = true\n  ) {\n    const modal = await this.modalController.create({\n      component: ViewerModalComponent,\n      componentProps: {\n        src,\n        srcFallback,\n        srcHighRes,\n        title,\n        titleSize,\n        text,\n        scheme,\n        slideOptions,\n        swipeToClose\n      },\n      cssClass: this.cssClass && this.cssClass instanceof Array\n        ? ['ion-img-viewer', ...this.cssClass]\n        : ['ion-img-viewer', this.cssClass as string],\n      keyboardClose: true,\n      showBackdrop: true\n    });\n\n    return await modal.present();\n  }\n}\n","import { makeEnvironmentProviders, Provider } from '@angular/core';\nimport { NgxIonicImageViewerService } from './ngx-ionic-image-viewer.service';\n\nexport function provideNgxIonicImageViewer(): Provider[] {\n  return [\n    NgxIonicImageViewerService\n  ];\n}\n\nexport function provideEnvironmentNgxIonicImageViewer() {\n  return makeEnvironmentProviders(provideNgxIonicImageViewer());\n}\n","/*\n * Public API Surface of ngx-ionic-image-viewer\n */\n\nexport * from './lib/ngx-ionic-image-viewer.service';\nexport * from './lib/ngx-ionic-image-viewer.component';\nexport * from './lib/ngx-ionic-image-viewer.directive';\nexport * from './lib/ngx-ionic-image-viewer.providers';\nexport * from './lib/viewer-modal/viewer-modal.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}