ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
1 lines • 48.3 kB
Source Map (JSON)
{"version":3,"file":"ng-zorro-antd-image.mjs","sources":["../../components/image/image-config.ts","../../components/image/image-preview-options.ts","../../components/image/image-preview-ref.ts","../../components/image/utils.ts","../../components/image/image-preview.component.ts","../../components/image/image.service.ts","../../components/image/image-group.component.ts","../../components/image/image.directive.ts","../../components/image/image.module.ts","../../components/image/public-api.ts","../../components/image/ng-zorro-antd-image.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { NzConfigKey } from 'ng-zorro-antd/core/config';\n\nexport const FADE_CLASS_NAME_MAP = {\n enter: 'ant-fade-enter',\n enterActive: 'ant-fade-enter-active',\n leave: 'ant-fade-leave',\n leaveActive: 'ant-fade-leave-active'\n};\n\nexport const IMAGE_PREVIEW_MASK_CLASS_NAME = 'ant-image-preview-mask';\nexport const NZ_CONFIG_MODULE_NAME: NzConfigKey = 'image';\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Direction } from '@angular/cdk/bidi';\n\nexport class NzImagePreviewOptions {\n nzKeyboard?: boolean = true;\n nzNoAnimation?: boolean = false;\n nzMaskClosable?: boolean = true;\n nzCloseOnNavigation?: boolean = true;\n nzZIndex?: number;\n nzZoom?: number;\n nzRotate?: number;\n nzDirection?: Direction;\n}\n\nexport interface NzImage {\n src: string;\n srcset?: string;\n alt?: string;\n width?: string | number;\n height?: string | number;\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject } from 'rxjs';\nimport { filter, take, takeUntil } from 'rxjs/operators';\n\nimport { NzImagePreviewOptions } from './image-preview-options';\nimport { NzImagePreviewComponent } from './image-preview.component';\n\nexport class NzImagePreviewRef {\n private destroy$ = new Subject<void>();\n\n constructor(\n public previewInstance: NzImagePreviewComponent,\n private config: NzImagePreviewOptions,\n private overlayRef: OverlayRef\n ) {\n overlayRef\n .keydownEvents()\n .pipe(filter(event => (this.config.nzKeyboard as boolean) && event.keyCode === ESCAPE && !hasModifierKey(event)))\n .subscribe(event => {\n event.preventDefault();\n this.close();\n });\n\n overlayRef.detachments().subscribe(() => {\n this.overlayRef.dispose();\n });\n\n previewInstance.containerClick.pipe(take(1), takeUntil(this.destroy$)).subscribe(() => {\n this.close();\n });\n\n previewInstance.closeClick.pipe(take(1), takeUntil(this.destroy$)).subscribe(() => {\n this.close();\n });\n\n previewInstance.animationStateChanged\n .pipe(\n filter(event => event.phaseName === 'done' && event.toState === 'leave'),\n take(1)\n )\n .subscribe(() => {\n this.dispose();\n });\n }\n\n switchTo(index: number): void {\n this.previewInstance.switchTo(index);\n }\n\n next(): void {\n this.previewInstance.next();\n }\n\n prev(): void {\n this.previewInstance.prev();\n }\n\n close(): void {\n this.previewInstance.startLeaveAnimation();\n }\n\n private dispose(): void {\n this.destroy$.next();\n this.overlayRef.dispose();\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * fit content details: https://github.com/NG-ZORRO/ng-zorro-antd/pull/6154#issuecomment-745025554\n *\n * calc position x,y point\n *\n * CASE (width <= clientWidth && height <= clientHeight):\n *\n * ------------- clientWidth -------------\n * | |\n * | ------ width ------ |\n * | | | |\n * | | | |\n * client height | |\n * Height | | |\n * | | | |\n * | ------------------- |\n * | |\n * | |\n * ---------------------------------------\n * fixedPosition = { x: 0, y: 0 }\n *\n *\n *\n * CASE (width > clientWidth || height > clientHeight):\n *\n * ------------- clientWidth -------------\n * | | |\n * | top |\n * | | |\n * |--left--|--------------- width -----------------\n * | | |\n * client | |\n * Height | |\n * | | |\n * | | |\n * | height |\n * | | |\n * ---------| |\n * | |\n * | |\n * | |\n * ----------------------------------------\n *\n *\n * - left || top > 0\n * left -> 0 || top -> 0\n *\n * - (left + width) < clientWidth || (top + height) < clientHeight\n * - left | top + width | height < clientWidth | clientHeight -> Back left | top + width | height === clientWidth | clientHeight\n *\n * DEFAULT:\n * - hold position\n *\n */\nexport function getFitContentPosition(params: {\n width: number;\n height: number;\n left: number;\n top: number;\n clientWidth: number;\n clientHeight: number;\n}): { x?: number; y?: number } {\n let fixPos = {};\n\n if (params.width <= params.clientWidth && params.height <= params.clientHeight) {\n fixPos = {\n x: 0,\n y: 0\n };\n }\n\n if (params.width > params.clientWidth || params.height > params.clientHeight) {\n fixPos = {\n x: fitPoint(params.left, params.width, params.clientWidth),\n y: fitPoint(params.top, params.height, params.clientHeight)\n };\n }\n\n return fixPos;\n}\n\nexport function getOffset(node: HTMLElement): { left: number; top: number } {\n const box = node.getBoundingClientRect();\n const docElem = document.documentElement;\n\n // use docElem.scrollLeft to support IE\n return {\n left: box.left + (window.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || document.body.clientLeft || 0),\n top: box.top + (window.pageYOffset || docElem.scrollTop) - (docElem.clientTop || document.body.clientTop || 0)\n };\n}\n\nexport function getClientSize(): { width: number; height: number } {\n const width = document.documentElement.clientWidth;\n const height = window.innerHeight || document.documentElement.clientHeight;\n return {\n width,\n height\n };\n}\n\nfunction fitPoint(start: number, size: number, clientSize: number): number | null {\n const startAddSize = start + size;\n const offsetStart = (size - clientSize) / 2;\n let distance: number | null = null;\n\n if (size > clientSize) {\n if (start > 0) {\n distance = offsetStart;\n }\n if (start < 0 && startAddSize < clientSize) {\n distance = -offsetStart;\n }\n } else {\n if (start < 0 || startAddSize > clientSize) {\n distance = start < 0 ? offsetStart : -offsetStart;\n }\n }\n\n return distance;\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { AnimationEvent } from '@angular/animations';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n NgZone,\n OnInit,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { fadeMotion } from 'ng-zorro-antd/core/animation';\nimport { NzConfigService } from 'ng-zorro-antd/core/config';\nimport { NzDestroyService } from 'ng-zorro-antd/core/services';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { isNotNil } from 'ng-zorro-antd/core/util';\n\nimport { FADE_CLASS_NAME_MAP, NZ_CONFIG_MODULE_NAME } from './image-config';\nimport { NzImage, NzImagePreviewOptions } from './image-preview-options';\nimport { NzImagePreviewRef } from './image-preview-ref';\nimport { getClientSize, getFitContentPosition, getOffset } from './utils';\n\nexport interface NzImageContainerOperation {\n icon: string;\n type: string;\n\n onClick(): void;\n}\n\nconst initialPosition = {\n x: 0,\n y: 0\n};\n\n@Component({\n selector: 'nz-image-preview',\n exportAs: 'nzImagePreview',\n animations: [fadeMotion],\n template: `\n <div class=\"ant-image-preview\">\n <div tabindex=\"0\" aria-hidden=\"true\" style=\"width: 0; height: 0; overflow: hidden; outline: none;\"></div>\n <div class=\"ant-image-preview-content\">\n <div class=\"ant-image-preview-body\">\n <ul class=\"ant-image-preview-operations\">\n <li\n class=\"ant-image-preview-operations-operation\"\n [class.ant-image-preview-operations-operation-disabled]=\"zoomOutDisabled && option.type === 'zoomOut'\"\n (click)=\"option.onClick()\"\n *ngFor=\"let option of operations\"\n >\n <span class=\"ant-image-preview-operations-icon\" nz-icon [nzType]=\"option.icon\" nzTheme=\"outline\"></span>\n </li>\n </ul>\n <div\n class=\"ant-image-preview-img-wrapper\"\n cdkDrag\n [style.transform]=\"previewImageWrapperTransform\"\n [cdkDragFreeDragPosition]=\"position\"\n (mousedown)=\"onDragStarted()\"\n (cdkDragReleased)=\"onDragReleased()\"\n >\n <ng-container *ngFor=\"let image of images; index as imageIndex\">\n <img\n cdkDragHandle\n class=\"ant-image-preview-img\"\n #imgRef\n *ngIf=\"index === imageIndex\"\n [attr.src]=\"image.src\"\n [attr.srcset]=\"image.srcset\"\n [attr.alt]=\"image.alt\"\n [style.width]=\"image.width\"\n [style.height]=\"image.height\"\n [style.transform]=\"previewImageTransform\"\n />\n </ng-container>\n </div>\n <ng-container *ngIf=\"images.length > 1\">\n <div\n class=\"ant-image-preview-switch-left\"\n [class.ant-image-preview-switch-left-disabled]=\"index <= 0\"\n (click)=\"onSwitchLeft($event)\"\n >\n <span nz-icon nzType=\"left\" nzTheme=\"outline\"></span>\n </div>\n <div\n class=\"ant-image-preview-switch-right\"\n [class.ant-image-preview-switch-right-disabled]=\"index >= images.length - 1\"\n (click)=\"onSwitchRight($event)\"\n >\n <span nz-icon nzType=\"right\" nzTheme=\"outline\"></span>\n </div>\n </ng-container>\n </div>\n </div>\n <div tabindex=\"0\" aria-hidden=\"true\" style=\"width: 0; height: 0; overflow: hidden; outline: none;\"></div>\n </div>\n `,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ant-image-preview-wrap',\n '[class.ant-image-preview-moving]': 'isDragging',\n '[style.zIndex]': 'config.nzZIndex',\n '[@.disabled]': 'config.nzNoAnimation',\n '[@fadeMotion]': 'animationState',\n '(@fadeMotion.start)': 'onAnimationStart($event)',\n '(@fadeMotion.done)': 'onAnimationDone($event)',\n tabindex: '-1',\n role: 'document'\n },\n providers: [NzDestroyService]\n})\nexport class NzImagePreviewComponent implements OnInit {\n images: NzImage[] = [];\n index = 0;\n isDragging = false;\n visible = true;\n animationState: 'void' | 'enter' | 'leave' = 'enter';\n animationStateChanged = new EventEmitter<AnimationEvent>();\n\n previewImageTransform = '';\n previewImageWrapperTransform = '';\n operations: NzImageContainerOperation[] = [\n {\n icon: 'close',\n onClick: () => {\n this.onClose();\n },\n type: 'close'\n },\n {\n icon: 'zoom-in',\n onClick: () => {\n this.onZoomIn();\n },\n type: 'zoomIn'\n },\n {\n icon: 'zoom-out',\n onClick: () => {\n this.onZoomOut();\n },\n type: 'zoomOut'\n },\n {\n icon: 'rotate-right',\n onClick: () => {\n this.onRotateRight();\n },\n type: 'rotateRight'\n },\n {\n icon: 'rotate-left',\n onClick: () => {\n this.onRotateLeft();\n },\n type: 'rotateLeft'\n }\n ];\n\n zoomOutDisabled = false;\n position = { ...initialPosition };\n previewRef!: NzImagePreviewRef;\n containerClick = new EventEmitter<void>();\n closeClick = new EventEmitter<void>();\n\n @ViewChild('imgRef') imageRef!: ElementRef<HTMLImageElement>;\n\n private zoom: number;\n private rotate: number;\n\n get animationDisabled(): boolean {\n return this.config.nzNoAnimation ?? false;\n }\n\n get maskClosable(): boolean {\n const defaultConfig: NzSafeAny = this.nzConfigService.getConfigForComponent(NZ_CONFIG_MODULE_NAME) || {};\n return this.config.nzMaskClosable ?? defaultConfig.nzMaskClosable ?? true;\n }\n\n constructor(\n private ngZone: NgZone,\n private host: ElementRef<HTMLElement>,\n private cdr: ChangeDetectorRef,\n public nzConfigService: NzConfigService,\n public config: NzImagePreviewOptions,\n private overlayRef: OverlayRef,\n private destroy$: NzDestroyService\n ) {\n this.zoom = this.config.nzZoom ?? 1;\n this.rotate = this.config.nzRotate ?? 0;\n this.updateZoomOutDisabled();\n this.updatePreviewImageTransform();\n this.updatePreviewImageWrapperTransform();\n }\n\n ngOnInit(): void {\n this.ngZone.runOutsideAngular(() => {\n fromEvent(this.host.nativeElement, 'click')\n .pipe(takeUntil(this.destroy$))\n .subscribe(event => {\n if (event.target === event.currentTarget && this.maskClosable && this.containerClick.observers.length) {\n this.ngZone.run(() => this.containerClick.emit());\n }\n });\n });\n }\n\n setImages(images: NzImage[]): void {\n this.images = images;\n this.cdr.markForCheck();\n }\n\n switchTo(index: number): void {\n this.index = index;\n this.cdr.markForCheck();\n }\n\n next(): void {\n if (this.index < this.images.length - 1) {\n this.reset();\n this.index++;\n this.updatePreviewImageTransform();\n this.updatePreviewImageWrapperTransform();\n this.updateZoomOutDisabled();\n this.cdr.markForCheck();\n }\n }\n\n prev(): void {\n if (this.index > 0) {\n this.reset();\n this.index--;\n this.updatePreviewImageTransform();\n this.updatePreviewImageWrapperTransform();\n this.updateZoomOutDisabled();\n this.cdr.markForCheck();\n }\n }\n\n markForCheck(): void {\n this.cdr.markForCheck();\n }\n\n onClose(): void {\n this.closeClick.emit();\n }\n\n onZoomIn(): void {\n this.zoom += 1;\n this.updatePreviewImageTransform();\n this.updateZoomOutDisabled();\n this.position = { ...initialPosition };\n }\n\n onZoomOut(): void {\n if (this.zoom > 1) {\n this.zoom -= 1;\n this.updatePreviewImageTransform();\n this.updateZoomOutDisabled();\n this.position = { ...initialPosition };\n }\n }\n\n onRotateRight(): void {\n this.rotate += 90;\n this.updatePreviewImageTransform();\n }\n\n onRotateLeft(): void {\n this.rotate -= 90;\n this.updatePreviewImageTransform();\n }\n\n onSwitchLeft(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.prev();\n }\n\n onSwitchRight(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.next();\n }\n\n onAnimationStart(event: AnimationEvent): void {\n if (event.toState === 'enter') {\n this.setEnterAnimationClass();\n } else if (event.toState === 'leave') {\n this.setLeaveAnimationClass();\n }\n\n this.animationStateChanged.emit(event);\n }\n\n onAnimationDone(event: AnimationEvent): void {\n if (event.toState === 'enter') {\n this.setEnterAnimationClass();\n } else if (event.toState === 'leave') {\n this.setLeaveAnimationClass();\n }\n this.animationStateChanged.emit(event);\n }\n\n startLeaveAnimation(): void {\n this.animationState = 'leave';\n this.cdr.markForCheck();\n }\n\n onDragStarted(): void {\n this.isDragging = true;\n }\n\n onDragReleased(): void {\n this.isDragging = false;\n const width = this.imageRef.nativeElement.offsetWidth * this.zoom;\n const height = this.imageRef.nativeElement.offsetHeight * this.zoom;\n const { left, top } = getOffset(this.imageRef.nativeElement);\n const { width: clientWidth, height: clientHeight } = getClientSize();\n const isRotate = this.rotate % 180 !== 0;\n const fitContentParams = {\n width: isRotate ? height : width,\n height: isRotate ? width : height,\n left,\n top,\n clientWidth,\n clientHeight\n };\n const fitContentPos = getFitContentPosition(fitContentParams);\n if (isNotNil(fitContentPos.x) || isNotNil(fitContentPos.y)) {\n this.position = { ...this.position, ...fitContentPos };\n }\n }\n\n private updatePreviewImageTransform(): void {\n this.previewImageTransform = `scale3d(${this.zoom}, ${this.zoom}, 1) rotate(${this.rotate}deg)`;\n }\n\n private updatePreviewImageWrapperTransform(): void {\n this.previewImageWrapperTransform = `translate3d(${this.position.x}px, ${this.position.y}px, 0)`;\n }\n\n private updateZoomOutDisabled(): void {\n this.zoomOutDisabled = this.zoom <= 1;\n }\n\n private setEnterAnimationClass(): void {\n if (this.animationDisabled) {\n return;\n }\n const backdropElement = this.overlayRef.backdropElement;\n if (backdropElement) {\n backdropElement.classList.add(FADE_CLASS_NAME_MAP.enter);\n backdropElement.classList.add(FADE_CLASS_NAME_MAP.enterActive);\n }\n }\n\n private setLeaveAnimationClass(): void {\n if (this.animationDisabled) {\n return;\n }\n const backdropElement = this.overlayRef.backdropElement;\n if (backdropElement) {\n backdropElement.classList.add(FADE_CLASS_NAME_MAP.leave);\n backdropElement.classList.add(FADE_CLASS_NAME_MAP.leaveActive);\n }\n }\n\n private reset(): void {\n this.zoom = 1;\n this.rotate = 0;\n this.position = { ...initialPosition };\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable, Injector, Optional } from '@angular/core';\n\nimport { ImageConfig, NzConfigService } from 'ng-zorro-antd/core/config';\n\nimport { IMAGE_PREVIEW_MASK_CLASS_NAME, NZ_CONFIG_MODULE_NAME } from './image-config';\nimport { NzImage, NzImagePreviewOptions } from './image-preview-options';\nimport { NzImagePreviewRef } from './image-preview-ref';\nimport { NzImagePreviewComponent } from './image-preview.component';\n\nexport interface NzImageService {\n preview(images: NzImage[], option?: NzImagePreviewOptions): NzImagePreviewRef;\n}\n\n@Injectable()\nexport class NzImageService {\n constructor(\n private overlay: Overlay,\n private injector: Injector,\n private nzConfigService: NzConfigService,\n @Optional() private directionality: Directionality\n ) {}\n\n preview(images: NzImage[], options?: NzImagePreviewOptions): NzImagePreviewRef {\n return this.display(images, options);\n }\n\n private display(images: NzImage[], config?: NzImagePreviewOptions): NzImagePreviewRef {\n const configMerged = { ...new NzImagePreviewOptions(), ...(config ?? {}) };\n const overlayRef = this.createOverlay(configMerged);\n const previewComponent = this.attachPreviewComponent(overlayRef, configMerged);\n previewComponent.setImages(images);\n const previewRef = new NzImagePreviewRef(previewComponent, configMerged, overlayRef);\n\n previewComponent.previewRef = previewRef;\n return previewRef;\n }\n\n private attachPreviewComponent(overlayRef: OverlayRef, config: NzImagePreviewOptions): NzImagePreviewComponent {\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: OverlayRef, useValue: overlayRef },\n { provide: NzImagePreviewOptions, useValue: config }\n ]\n });\n\n const containerPortal = new ComponentPortal(NzImagePreviewComponent, null, injector);\n const containerRef = overlayRef.attach(containerPortal);\n\n return containerRef.instance;\n }\n\n private createOverlay(config: NzImagePreviewOptions): OverlayRef {\n const globalConfig = (this.nzConfigService.getConfigForComponent(NZ_CONFIG_MODULE_NAME) as ImageConfig) || {};\n const overLayConfig = new OverlayConfig({\n hasBackdrop: true,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position().global(),\n disposeOnNavigation: config.nzCloseOnNavigation ?? globalConfig.nzCloseOnNavigation ?? true,\n backdropClass: IMAGE_PREVIEW_MASK_CLASS_NAME,\n direction: config.nzDirection || globalConfig.nzDirection || this.directionality.value\n });\n\n return this.overlay.create(overLayConfig);\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\nimport { NzImageDirective } from './image.directive';\n\n@Component({\n selector: 'nz-image-group',\n exportAs: 'nzImageGroup',\n template: '<ng-content></ng-content>',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class NzImageGroupComponent {\n images: NzImageDirective[] = [];\n\n addImage(image: NzImageDirective): void {\n this.images.push(image);\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n SimpleChanges\n} from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NzConfigKey, NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';\nimport { BooleanInput, NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\n\nimport { NzImageGroupComponent } from './image-group.component';\nimport { NzImageService } from './image.service';\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = 'image';\n\nexport type ImageStatusType = 'error' | 'loading' | 'normal';\n\n@Directive({\n selector: 'img[nz-image]',\n exportAs: 'nzImage',\n host: {\n '(click)': 'onPreview()'\n }\n})\nexport class NzImageDirective implements OnInit, OnChanges, OnDestroy {\n readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n\n static ngAcceptInputType_nzDisablePreview: BooleanInput;\n\n @Input() nzSrc = '';\n @Input() nzSrcset = '';\n @Input() @InputBoolean() @WithConfig() nzDisablePreview: boolean = false;\n @Input() @WithConfig() nzFallback: string | null = null;\n @Input() @WithConfig() nzPlaceholder: string | null = null;\n\n dir?: Direction;\n backLoadImage!: HTMLImageElement;\n status: ImageStatusType = 'normal';\n private backLoadDestroy$: Subject<void> = new Subject();\n private destroy$: Subject<void> = new Subject();\n\n get previewable(): boolean {\n return !this.nzDisablePreview && this.status !== 'error';\n }\n\n constructor(\n @Inject(DOCUMENT) private document: NzSafeAny,\n public nzConfigService: NzConfigService,\n private elementRef: ElementRef,\n private nzImageService: NzImageService,\n protected cdr: ChangeDetectorRef,\n @Optional() private parentGroup: NzImageGroupComponent,\n @Optional() private directionality: Directionality\n ) {}\n\n ngOnInit(): void {\n this.backLoad();\n if (this.parentGroup) {\n this.parentGroup.addImage(this);\n }\n if (this.directionality) {\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n this.dir = this.directionality.value;\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onPreview(): void {\n if (!this.previewable) {\n return;\n }\n\n if (this.parentGroup) {\n // preview inside image group\n const previewAbleImages = this.parentGroup.images.filter(e => e.previewable);\n const previewImages = previewAbleImages.map(e => ({ src: e.nzSrc, srcset: e.nzSrcset }));\n const previewIndex = previewAbleImages.findIndex(el => this === el);\n const previewRef = this.nzImageService.preview(previewImages, { nzDirection: this.dir });\n previewRef.switchTo(previewIndex);\n } else {\n // preview not inside image group\n const previewImages = [{ src: this.nzSrc, srcset: this.nzSrcset }];\n this.nzImageService.preview(previewImages, { nzDirection: this.dir });\n }\n }\n\n getElement(): ElementRef<HTMLImageElement> {\n return this.elementRef;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { nzSrc } = changes;\n if (nzSrc) {\n this.getElement().nativeElement.src = nzSrc.currentValue;\n this.backLoad();\n }\n }\n\n /**\n * use internal Image object handle fallback & placeholder\n *\n * @private\n */\n private backLoad(): void {\n this.backLoadImage = this.document.createElement('img');\n this.backLoadImage.src = this.nzSrc;\n this.backLoadImage.srcset = this.nzSrcset;\n this.status = 'loading';\n\n // unsubscribe last backLoad\n this.backLoadDestroy$.next();\n this.backLoadDestroy$.complete();\n this.backLoadDestroy$ = new Subject();\n if (this.backLoadImage.complete) {\n this.status = 'normal';\n this.getElement().nativeElement.src = this.nzSrc;\n this.getElement().nativeElement.srcset = this.nzSrcset;\n } else {\n if (this.nzPlaceholder) {\n this.getElement().nativeElement.src = this.nzPlaceholder;\n this.getElement().nativeElement.srcset = '';\n } else {\n this.getElement().nativeElement.src = this.nzSrc;\n this.getElement().nativeElement.srcset = this.nzSrcset;\n }\n\n // The `nz-image` directive can be destroyed before the `load` or `error` event is dispatched,\n // so there's no sense to keep capturing `this`.\n fromEvent(this.backLoadImage, 'load')\n .pipe(takeUntil(this.backLoadDestroy$), takeUntil(this.destroy$))\n .subscribe(() => {\n this.status = 'normal';\n this.getElement().nativeElement.src = this.nzSrc;\n this.getElement().nativeElement.srcset = this.nzSrcset;\n });\n\n fromEvent(this.backLoadImage, 'error')\n .pipe(takeUntil(this.backLoadDestroy$), takeUntil(this.destroy$))\n .subscribe(() => {\n this.status = 'error';\n if (this.nzFallback) {\n this.getElement().nativeElement.src = this.nzFallback;\n this.getElement().nativeElement.srcset = '';\n }\n });\n }\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzPipesModule } from 'ng-zorro-antd/pipes';\n\nimport { NzImageGroupComponent } from './image-group.component';\nimport { NzImagePreviewComponent } from './image-preview.component';\nimport { NzImageDirective } from './image.directive';\nimport { NzImageService } from './image.service';\n\n@NgModule({\n imports: [BidiModule, OverlayModule, PortalModule, DragDropModule, CommonModule, NzIconModule, NzPipesModule],\n exports: [NzImageDirective, NzImagePreviewComponent, NzImageGroupComponent],\n providers: [NzImageService],\n entryComponents: [NzImagePreviewComponent],\n declarations: [NzImageDirective, NzImagePreviewComponent, NzImageGroupComponent]\n})\nexport class NzImageModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './image.directive';\nexport * from './image.service';\nexport * from './image-config';\nexport * from './image-group.component';\nexport * from './image-preview.component';\nexport * from './image-preview-options';\nexport * from './image-preview-ref';\nexport * from './image.module';\nexport * from './utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["NZ_CONFIG_MODULE_NAME"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;MAOa,mBAAmB,GAAG;IACjC,KAAK,EAAE,gBAAgB;IACvB,WAAW,EAAE,uBAAuB;IACpC,KAAK,EAAE,gBAAgB;IACvB,WAAW,EAAE,uBAAuB;EACpC;MAEW,6BAA6B,GAAG,yBAAyB;MACzDA,uBAAqB,GAAgB;;ACflD;;;;MAOa,qBAAqB;IAAlC;QACE,eAAU,GAAa,IAAI,CAAC;QAC5B,kBAAa,GAAa,KAAK,CAAC;QAChC,mBAAc,GAAa,IAAI,CAAC;QAChC,wBAAmB,GAAa,IAAI,CAAC;KAKtC;;;AChBD;;;;MAaa,iBAAiB;IAG5B,YACS,eAAwC,EACvC,MAA6B,EAC7B,UAAsB;QAFvB,oBAAe,GAAf,eAAe,CAAyB;QACvC,WAAM,GAAN,MAAM,CAAuB;QAC7B,eAAU,GAAV,UAAU,CAAY;QALxB,aAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;QAOrC,UAAU;aACP,aAAa,EAAE;aACf,IAAI,CAAC,MAAM,CAAC,KAAK,IAAK,IAAI,CAAC,MAAM,CAAC,UAAsB,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;aAChH,SAAS,CAAC,KAAK;YACd,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC;SACd,CAAC,CAAC;QAEL,UAAU,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC;YACjC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SAC3B,CAAC,CAAC;QAEH,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/E,IAAI,CAAC,KAAK,EAAE,CAAC;SACd,CAAC,CAAC;QAEH,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3E,IAAI,CAAC,KAAK,EAAE,CAAC;SACd,CAAC,CAAC;QAEH,eAAe,CAAC,qBAAqB;aAClC,IAAI,CACH,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,EACxE,IAAI,CAAC,CAAC,CAAC,CACR;aACA,SAAS,CAAC;YACT,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB,CAAC,CAAC;KACN;IAED,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACtC;IAED,IAAI;QACF,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;KAC7B;IAED,IAAI;QACF,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;KAC7B;IAED,KAAK;QACH,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC;KAC5C;IAEO,OAAO;QACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;KAC3B;;;ACtEH;;;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAsDgB,qBAAqB,CAAC,MAOrC;IACC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE;QAC9E,MAAM,GAAG;YACP,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACL,CAAC;KACH;IAED,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE;QAC5E,MAAM,GAAG;YACP,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC;YAC1D,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC;SAC5D,CAAC;KACH;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;SAEe,SAAS,CAAC,IAAiB;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC;;IAGzC,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACnH,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;KAC/G,CAAC;AACJ,CAAC;SAEe,aAAa;IAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC;IAC3E,OAAO;QACL,KAAK;QACL,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,IAAY,EAAE,UAAkB;IAC/D,MAAM,YAAY,GAAG,KAAK,GAAG,IAAI,CAAC;IAClC,MAAM,WAAW,GAAG,CAAC,IAAI,GAAG,UAAU,IAAI,CAAC,CAAC;IAC5C,IAAI,QAAQ,GAAkB,IAAI,CAAC;IAEnC,IAAI,IAAI,GAAG,UAAU,EAAE;QACrB,IAAI,KAAK,GAAG,CAAC,EAAE;YACb,QAAQ,GAAG,WAAW,CAAC;SACxB;QACD,IAAI,KAAK,GAAG,CAAC,IAAI,YAAY,GAAG,UAAU,EAAE;YAC1C,QAAQ,GAAG,CAAC,WAAW,CAAC;SACzB;KACF;SAAM;QACL,IAAI,KAAK,GAAG,CAAC,IAAI,YAAY,GAAG,UAAU,EAAE;YAC1C,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,WAAW,CAAC;SACnD;KACF;IAED,OAAO,QAAQ,CAAC;AAClB;;ACtFA,MAAM,eAAe,GAAG;IACtB,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;CACL,CAAC;MAiFW,uBAAuB;IAoElC,YACU,MAAc,EACd,IAA6B,EAC7B,GAAsB,EACvB,eAAgC,EAChC,MAA6B,EAC5B,UAAsB,EACtB,QAA0B;QAN1B,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAyB;QAC7B,QAAG,GAAH,GAAG,CAAmB;QACvB,oBAAe,GAAf,eAAe,CAAiB;QAChC,WAAM,GAAN,MAAM,CAAuB;QAC5B,eAAU,GAAV,UAAU,CAAY;QACtB,aAAQ,GAAR,QAAQ,CAAkB;QA1EpC,WAAM,GAAc,EAAE,CAAC;QACvB,UAAK,GAAG,CAAC,CAAC;QACV,eAAU,GAAG,KAAK,CAAC;QACnB,YAAO,GAAG,IAAI,CAAC;QACf,mBAAc,GAA+B,OAAO,CAAC;QACrD,0BAAqB,GAAG,IAAI,YAAY,EAAkB,CAAC;QAE3D,0BAAqB,GAAG,EAAE,CAAC;QAC3B,iCAA4B,GAAG,EAAE,CAAC;QAClC,eAAU,GAAgC;YACxC;gBACE,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE;oBACP,IAAI,CAAC,OAAO,EAAE,CAAC;iBAChB;gBACD,IAAI,EAAE,OAAO;aACd;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE;oBACP,IAAI,CAAC,QAAQ,EAAE,CAAC;iBACjB;gBACD,IAAI,EAAE,QAAQ;aACf;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE;oBACP,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;gBACD,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE;oBACP,IAAI,CAAC,aAAa,EAAE,CAAC;iBACtB;gBACD,IAAI,EAAE,aAAa;aACpB;YACD;gBACE,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE;oBACP,IAAI,CAAC,YAAY,EAAE,CAAC;iBACrB;gBACD,IAAI,EAAE,YAAY;aACnB;SACF,CAAC;QAEF,oBAAe,GAAG,KAAK,CAAC;QACxB,aAAQ,GAAG,EAAE,GAAG,eAAe,EAAE,CAAC;QAElC,mBAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;QAC1C,eAAU,GAAG,IAAI,YAAY,EAAQ,CAAC;QAyBpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,kCAAkC,EAAE,CAAC;KAC3C;IAvBD,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC;KAC3C;IAED,IAAI,YAAY;QACd,MAAM,aAAa,GAAc,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAACA,uBAAqB,CAAC,IAAI,EAAE,CAAC;QACzG,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,aAAa,CAAC,cAAc,IAAI,IAAI,CAAC;KAC3E;IAkBD,QAAQ;QACN,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAC5B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC;iBACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC9B,SAAS,CAAC,KAAK;gBACd,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE;oBACrG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;iBACnD;aACF,CAAC,CAAC;SACN,CAAC,CAAC;KACJ;IAED,SAAS,CAAC,MAAiB;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;IAED,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,CAAC,kCAAkC,EAAE,CAAC;YAC1C,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB;KACF;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,CAAC,kCAAkC,EAAE,CAAC;YAC1C,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB;KACF;IAED,YAAY;QACV,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;IAED,OAAO;QACL,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACf,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,eAAe,EAAE,CAAC;KACxC;IAED,SAAS;QACP,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;YACf,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,eAAe,EAAE,CAAC;SACxC;KACF;IAED,aAAa;QACX,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACpC;IAED,YAAY;QACV,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACpC;IAED,YAAY,CAAC,KAAiB;QAC5B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;IAED,aAAa,CAAC,KAAiB;QAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;IAED,gBAAgB,CAAC,KAAqB;QACpC,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC/B;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;YACpC,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC/B;QAED,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACxC;IAED,eAAe,CAAC,KAAqB;QACnC,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC/B;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;YACpC,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC/B;QACD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACxC;IAED,mBAAmB;QACjB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;IAED,aAAa;QACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KACxB;IAED,cAAc;QACZ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;QACpE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC7D,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC;QACzC,MAAM,gBAAgB,GAAG;YACvB,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK;YAChC,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM;YACjC,IAAI;YACJ,GAAG;YACH,WAAW;YACX,YAAY;SACb,CAAC;QACF,MAAM,aAAa,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAC9D,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;YAC1D,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAC;SACxD;KACF;IAEO,2BAA2B;QACjC,IAAI,CAAC,qBAAqB,GAAG,WAAW,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,MAAM,MAAM,CAAC;KACjG;IAEO,kCAAkC;QACxC,IAAI,CAAC,4BAA4B,GAAG,eAAe,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;KAClG;IAEO,qBAAqB;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;KACvC;IAEO,sBAAsB;QAC5B,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,OAAO;SACR;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QACxD,IAAI,eAAe,EAAE;YACnB,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACzD,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;SAChE;KACF;IAEO,sBAAsB;QAC5B,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,OAAO;SACR;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QACxD,IAAI,eAAe,EAAE;YACnB,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACzD,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;SAChE;KACF;IAEO,KAAK;QACX,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,eAAe,EAAE,CAAC;KACxC;;oHArQU,uBAAuB;wGAAvB,uBAAuB,8aAFvB,CAAC,gBAAgB,CAAC,4JAzEnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DT,k5BA3DW,CAAC,UAAU,CAAC;2FA4Eb,uBAAuB;kBA/EnC,SAAS;mBAAC;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,QAAQ,EAAE,gBAAgB;oBAC1B,UAAU,EAAE,CAAC,UAAU,CAAC;oBACxB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DT;oBACD,mBAAmB,EAAE,KAAK;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,IAAI,EAAE;wBACJ,KAAK,EAAE,wBAAwB;wBAC/B,kCAAkC,EAAE,YAAY;wBAChD,gBAAgB,EAAE,iBAAiB;wBACnC,cAAc,EAAE,sBAAsB;wBACtC,eAAe,EAAE,gBAAgB;wBACjC,qBAAqB,EAAE,0BAA0B;wBACjD,oBAAoB,EAAE,yBAAyB;wBAC/C,QAAQ,EAAE,IAAI;wBACd,IAAI,EAAE,UAAU;qBACjB;oBACD,SAAS,EAAE,CAAC,gBAAgB,CAAC;iBAC9B;6QAuDsB,QAAQ;sBAA5B,SAAS;uBAAC,QAAQ;;;MC3JR,cAAc;IACzB,YACU,OAAgB,EAChB,QAAkB,EAClB,eAAgC,EACpB,cAA8B;QAH1C,YAAO,GAAP,OAAO,CAAS;QAChB,aAAQ,GAAR,QAAQ,CAAU;QAClB,oBAAe,GAAf,eAAe,CAAiB;QACpB,mBAAc,GAAd,cAAc,CAAgB;KAChD;IAEJ,OAAO,CAAC,MAAiB,EAAE,OAA+B;QACxD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC;IAEO,OAAO,CAAC,MAAiB,EAAE,MAA8B;QAC/D,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,qBAAqB,EAAE,EAAE,IAAI,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC/E,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QAErF,gBAAgB,CAAC,UAAU,GAAG,UAAU,CAAC;QACzC,OAAO,UAAU,CAAC;KACnB;IAEO,sBAAsB,CAAC,UAAsB,EAAE,MAA6B;QAClF,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE;gBAC7C,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE;aACrD;SACF,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,uBAAuB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrF,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAExD,OAAO,YAAY,CAAC,QAAQ,CAAC;KAC9B;IAEO,aAAa,CAAC,MAA6B;QACjD,MAAM,YAAY,GAAI,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAACA,uBAAqB,CAAiB,IAAI,EAAE,CAAC;QAC9G,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;YACtC,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;YACrD,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE;YAClD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,YAAY,CAAC,mBAAmB,IAAI,IAAI;YAC3F,aAAa,EAAE,6BAA6B;YAC5C,SAAS,EAAE,MAAM,CAAC,WAAW,IAAI,YAAY,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK;SACvF,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KAC3C;;2GAlDU,cAAc;+GAAd,cAAc;2FAAd,cAAc;kBAD1B,UAAU;;0BAMN,QAAQ;;;AC3Bb;;;;MAiBa,qBAAqB;IARlC;QASE,WAAM,GAAuB,EAAE,CAAC;KAKjC;IAHC,QAAQ,CAAC,KAAuB;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzB;;kHALU,qBAAqB;sGAArB,qBAAqB,kFALtB,2BAA2B;2FAK1B,qBAAqB;kBARjC,SAAS;mBAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,cAAc;oBACxB,QAAQ,EAAE,2BAA2B;oBACrC,mBAAmB,EAAE,KAAK;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACtC;;;ACaD,MAAM,qBAAqB,GAAgB,OAAO,CAAC;MAWtC,gBAAgB;IAqB3B,YAC4B,QAAmB,EACtC,eAAgC,EAC/B,UAAsB,EACtB,cAA8B,EAC5B,GAAsB,EACZ,WAAkC,EAClC,cAA8B;QANxB,aAAQ,GAAR,QAAQ,CAAW;QACtC,oBAAe,GAAf,eAAe,CAAiB;QAC/B,eAAU,GAAV,UAAU,CAAY;QACtB,mBAAc,GAAd,cAAc,CAAgB;QAC5B,QAAG,GAAH,GAAG,CAAmB;QACZ,gBAAW,GAAX,WAAW,CAAuB;QAClC,mBAAc,GAAd,cAAc,CAAgB;QA3B3C,kBAAa,GAAgB,qBAAqB,CAAC;QAInD,UAAK,GAAG,EAAE,CAAC;QACX,aAAQ,GAAG,EAAE,CAAC;QACgB,qBAAgB,GAAY,KAAK,CAAC;QAClD,eAAU,GAAkB,IAAI,CAAC;QACjC,kBAAa,GAAkB,IAAI,CAAC;QAI3D,WAAM,GAAoB,QAAQ,CAAC;QAC3B,qBAAgB,GAAkB,IAAI,OAAO,EAAE,CAAC;QAChD,aAAQ,GAAkB,IAAI,OAAO,EAAE,CAAC;KAc5C;IAZJ,IAAI,WAAW;QACb,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC;KAC1D;IAYD,QAAQ;QACN,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACjC;QACD,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAoB;gBACxF,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;aAC1B,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;SACtC;KACF;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;IAED,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;;YAEpB,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;YAC7E,MAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACzF,MAAM,YAAY,GAAG,iBAAiB,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACzF,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;SACnC;aAAM;;YAEL,MAAM,aAAa,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;SACvE;KACF;IAED,UAAU;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAED,WAAW,CAAC,OAAsB;QAChC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAC1B,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC;YACzD,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;KACF;;;;;;IAOO,QAAQ;QACd,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;;QAGxB,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC/B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YACvB,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;YACjD,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;SACxD;aAAM;YACL,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;gBACzD,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC;aAC7C;iBAAM;gBACL,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;gBACjD,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;aACxD;;;YAID,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;iBAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAChE,SAAS,CAAC;gBACT,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvB,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;gBACjD,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;aACxD,CAAC,CAAC;YAEL,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC;iBACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAChE,SAAS,CAAC;gBACT,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;gBACtB,IAAI,IAAI,CAAC,UAAU,EAAE;oBACnB,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;oBACtD,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC;iBAC7C;aACF,CAAC,CAAC;SACN;KACF;;6GAjIU,gBAAgB,kBAsBjB,QAAQ;iGAtBP,gBAAgB;AAOY;IAA7B,YAAY,EAAE;IAAE,UAAU,EAAE;0DAAmC;AAClD;IAAb,UAAU,EAAE;oDAAkC;AACjC;IAAb,UAAU,EAAE;uDAAqC;2FAThD,gBAAgB;kBAP5B,SAAS;mBAAC;oBACT,QAAQ,EAAE,eAAe;oBACzB,QAAQ,EAAE,SAAS;oBACnB,IAAI,EAAE;wBACJ,SAAS,EAAE,aAAa;qBACzB;iBACF;;0BAuBI,MAAM;2BAAC,QAAQ;;0BAKf,QAAQ;;0BACR,QAAQ;4CAvBF,KAAK;sBAAb,KAAK;gBACG,QAAQ;sBAAhB,KAAK;gBACiC,gBAAgB;sBAAtD,KAAK;gBACiB,UAAU;sBAAhC,KAAK;gBACiB,aAAa;sBAAnC,KAAK;;;ACjDR;;;;MA2Ba,aAAa;;0GAAb,aAAa;2GAAb,aAAa,iBAFT,gBAAgB,EAAE,uBAAuB,EAAE,qBAAqB,aAJrE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,aAClG,gBAAgB,EAAE,uBAAuB,EAAE,qBAAqB;2GAK/D,aAAa,aAJb,CAAC,cAAc,CAAC,YAFlB,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,CAAC;2FAMlG,aAAa;kBAPzB,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,CAAC;oBAC7G,OAAO,EAAE,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,qBAAqB,CAAC;oBAC3E,SAAS,EAAE,CAAC,cAAc,CAAC;oBAC3B,eAAe,EAAE,CAAC,uBAAuB,CAAC;oBAC1C,YAAY,EAAE,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,qBAAqB,CAAC;iBACjF;;;AC1BD;;;;;ACAA;;;;;;"}