UNPKG

@herdwatch/ngx-ionic-image-viewer

Version:

The angular workspace to develop the ngx-ionic-image-viewer component

1 lines 28.4 kB
{"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":";;;;;;;;;MAGa,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAA1B,0BAA0B,EAAA,CAAA,CAAA,EAAA;;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;;;MCuBE,oBAAoB,CAAA;;AAwC/B,IAAA,WAAA,CAAoB,eAAgC,EAAA;QAAhC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAvC3C,IAAG,CAAA,GAAA,GAAY,EAAE,CAAC;QAClB,IAAM,CAAA,MAAA,GAAY,MAAM,CAAC;QACzB,IAAY,CAAA,YAAA,GAAY,EAAE,CAAC;QAE3B,IAAW,CAAA,WAAA,GAAY,EAAE,CAAC;QAC1B,IAAU,CAAA,UAAA,GAAY,EAAE,CAAC;QACzB,IAAY,CAAA,YAAA,GAAa,IAAI,CAAC;QAC9B,IAAI,CAAA,IAAA,GAAY,EAAE,CAAC;QACnB,IAAK,CAAA,KAAA,GAAY,EAAE,CAAC;QACpB,IAAS,CAAA,SAAA,GAAY,EAAE,CAAC;AAEjC,QAAA,IAAA,CAAA,mBAAmB,GAAG;AACpB,YAAA,IAAI,EAAE;AACJ,gBAAA,OAAO,EAAE,IAAI;AACd,aAAA;SACF,CAAC;QAEF,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;AAEb,QAAA,IAAA,CAAA,UAAU,GAAG;AACX,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,WAAW,EAAE,GAAG;AAChB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,SAAS,EAAE,CAAC;SACb,CAAC;AAOA,QAAA,QAAQ,CAAC,EAAC,KAAK,EAAC,CAAC,CAAA;KAClB;AAED,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACrE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAEzC;;;;AAIG;KACJ;IAED,QAAQ,GAAA;QACN,MAAM,EAAE,GAAuB,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QACzE,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1C,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACzC,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;KAC/C;AAED,IAAA,SAAS,CAAC,MAA0B,EAAA;AAClC,QAAA,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE;YAC/B,OAAO;SACR;QAED,MAAM,EAAE,GAAuB,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAEzE,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;YAC3B,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;YAC3D,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,4BAA4B,EAAE,eAAe,CAAC,CAAC;YACrE,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;YAClD,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;SACxD;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YAC1B,IAAI,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACjC,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;gBAC3D,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;aAChE;iBAAM;gBACL,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;gBAC3D,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC;aACjE;YACD,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;YACrD,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC;SAC9D;KACF;AAED;;AAEG;IACH,gBAAgB,CAAC,QAAQ,GAAG,IAAI,EAAA;QAC9B,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAC/C,QAAA,EAAE,EAAE,gBAAgB,CAAC,WAAW,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3E,QAAA,EAAE,EAAE,gBAAgB,CAAC,WAAW,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;AAC1E,QAAA,EAAE,EAAE,gBAAgB,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;AAC7D,QAAA,EAAE,EAAE,gBAAgB,CAAC,YAAY,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5E,QAAA,EAAE,EAAE,gBAAgB,CAAC,WAAW,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;AAC1E,QAAA,EAAE,EAAE,gBAAgB,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QAE9D,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;AAC3C,YAAA,KAAK,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,MAAK;gBAC/B,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACjE,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAChE,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC9D,QAAQ,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAClE,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAChE,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACjE,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;AAGD,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GACpB,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,EAAE,cAAc;AAClD,cAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;cACvB,KAAK,CAAC;QAEZ,IAAI,CAAC,UAAU,GAAG;YAChB,GAAG,IAAI,CAAC,UAAU;AAClB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;SAChC,CAAC;KACH;;AAGD,IAAA,SAAS,CAAC,KAAU,EAAA;AAClB,QAAA,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GACpB,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,EAAE,cAAc;AACjD,cAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;cACvB,KAAK,CAAC;;QAEZ,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;QAEjD,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACjD,QAAA,IAAI,SAAS,CAAC;AACd,QAAA,IAAI,QAAQ,CAAC;AAEb,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;;AAE7C,YAAA,SAAS,GAAG,SAAS,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC;YAC7C,QAAQ,GAAG,SAAS,CAAC;SACtB;aAAM;;AAEL,YAAA,SAAS,GAAG,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC;YAC1C,QAAQ,GAAG,SAAS,CAAC;SACtB;QACD,IAAI,CAAC,UAAU,GAAG;YAChB,GAAG,IAAI,CAAC,UAAU;AAClB,YAAA,KAAK,EAAE,MAAM;YACb,SAAS;YACT,QAAQ;YACR,SAAS;YACT,SAAS;SACV,CAAC;AACF,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE;YACpB,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;KACF;IAED,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,MAAM,EAAE;YACpC,OAAO;SACR;AACD,QAAA,MAAM,EACJ,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,GACV,GAAG,IAAI,CAAC,UAAU,CAAC;QACpB,IAAI,SAAS,GAAG,IAAI,CAAC;AAErB,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;AACrD,QAAA,IAAI,WAAW,IAAI,WAAW,EAAE;;AAE9B,YAAA,IACE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS;gBAChC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,EAChC;;AAEA,gBAAA,SAAS,GAAG,SAAS,CAAC;aACvB;AAAM,iBAAA,IACL,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS;gBAChC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,EAChC;;AAEA,gBAAA,SAAS,GAAG,SAAS,CAAC;aACvB;SACF;QAED,IAAI,CAAC,UAAU,GAAG;YAChB,GAAG,IAAI,CAAC,UAAU;AAClB,YAAA,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,SAAS,IAAI,EAAE;SAC3B,CAAC;AAEF,QAAA,IAAI,SAAS,KAAK,MAAM,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;SAC1B;KACF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;KAChC;+GA3NU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,GAAA,EAAA,KAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBjC,o6BA0BA,EDbI,MAAA,EAAA,CAAA,slBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,oGACT,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,SAAS,EACT,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,oFACP,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,OAAO,EACP,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAQ,iFACR,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGE,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAnBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAGhB,IAAI,EAAA,OAAA,EACP,CAAC,sBAAsB,CAAC,EACxB,OAAA,EAAA;wBACP,SAAS;wBACT,UAAU;wBACV,SAAS;wBACT,OAAO;wBACP,UAAU;wBACV,OAAO;wBACP,QAAQ;wBACR,UAAU;wBACV,SAAS;wBACT,OAAO;AACR,qBAAA,EAAA,QAAA,EAAA,o6BAAA,EAAA,MAAA,EAAA,CAAA,slBAAA,CAAA,EAAA,CAAA;oFAGQ,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBA0Be,SAAS,EAAA,CAAA;sBAA7B,SAAS;uBAAC,QAAQ,CAAA;;;AExDrB,QAAQ,EAAE,CAAC;MAcE,4BAA4B,CAAA;AAavC,IAAA,WAAA,CAAmB,eAAgC,EAAA;QAAhC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;KAAI;AAEvD,IAAA,MAAM,SAAS,CACb,GAAuB,EACvB,WAAW,GAAG,EAAE,EAChB,UAAU,GAAG,EAAE,EACf,KAAK,GAAG,EAAE,EACV,SAAS,GAAG,EAAE,EACd,IAAI,GAAG,EAAE,EACT,MAAM,GAAG,MAAM,EACf,YAAuB,GAAA,EAAE,EACzB,YAAY,GAAG,IAAI,EAAA;QAEnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC9C,YAAA,SAAS,EAAE,oBAAoB;AAC/B,YAAA,cAAc,EAAE;gBACd,GAAG;gBACH,WAAW;gBACX,UAAU;gBACV,KAAK;gBACL,SAAS;gBACT,IAAI;gBACJ,MAAM;gBACN,YAAY;gBACZ,YAAY;AACb,aAAA;YACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK;kBACvD,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AACtC,kBAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAkB,CAAC;AAC7C,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,YAAY,EAAE,IAAI;AACnB,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;KAC9B;IAED,QAAQ,GAAA;;KAEP;+GAnDU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,8TCnBzC,kMAMA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDaa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAbxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EASX,aAAA,EAAA,iBAAiB,CAAC,QAAQ,cAC7B,IAAI,EAAA,QAAA,EAAA,kMAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;oFAGP,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEtBK,4BAA4B,CAAA;AACvC,IAAA,WAAA,CAAoB,EAAc,EAAU,QAAmB,EAAS,eAAgC,EAAA;QAApF,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAAU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAS,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;KAAK;IAatF,OAAO,GAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,CACZ,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,YAAY,CAClB,CAAC;KACH;IAEkC,OAAO,GAAA;AACxC,QAAA,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE;YAC1C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC;SACtC;AACD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SAC5E;KACF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;SACpE;KACF;AAED,IAAA,MAAM,SAAS,CACb,GAAW,EACX,WAAW,GAAG,EAAE,EAChB,UAAU,GAAG,EAAE,EACf,KAAK,GAAG,EAAE,EACV,SAAS,GAAG,EAAE,EACd,IAAI,GAAG,EAAE,EACT,MAAM,GAAG,MAAM,EACf,YAAuB,GAAA,EAAE,EACzB,YAAY,GAAG,IAAI,EAAA;QAEnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC9C,YAAA,SAAS,EAAE,oBAAoB;AAC/B,YAAA,cAAc,EAAE;gBACd,GAAG;gBACH,WAAW;gBACX,UAAU;gBACV,KAAK;gBACL,SAAS;gBACT,IAAI;gBACJ,MAAM;gBACN,YAAY;gBACZ,YAAY;AACb,aAAA;YACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK;kBACrD,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AACtC,kBAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAkB,CAAC;AAC/C,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,YAAY,EAAE,IAAI;AACnB,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;KAC9B;+GA3EU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,GAAA,EAAA,KAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;qIAIU,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEiB,OAAO,EAAA,CAAA;sBAA7B,YAAY;uBAAC,OAAO,CAAA;gBAcc,OAAO,EAAA,CAAA;sBAAzC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;SCjCnB,0BAA0B,GAAA;IACxC,OAAO;QACL,0BAA0B;KAC3B,CAAC;AACJ,CAAC;SAEe,qCAAqC,GAAA;AACnD,IAAA,OAAO,wBAAwB,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAChE;;ACXA;;AAEG;;ACFH;;AAEG;;;;"}