@shival99/z-ui 2.6.11 → 2.6.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"shival99-z-ui-components-z-modal.mjs","sources":["../../../../libs/core-ui/components/z-modal/directives/z-modal-content.directive.ts","../../../../libs/core-ui/components/z-modal/directives/z-modal-footer.directive.ts","../../../../libs/core-ui/components/z-modal/directives/z-modal-header.directive.ts","../../../../libs/core-ui/components/z-modal/z-modal.define.ts","../../../../libs/core-ui/components/z-modal/z-modal.options.ts","../../../../libs/core-ui/components/z-modal/z-modal.utils.ts","../../../../libs/core-ui/components/z-modal/z-modal.variants.ts","../../../../libs/core-ui/components/z-modal/z-modal.component.ts","../../../../libs/core-ui/components/z-modal/z-modal.component.html","../../../../libs/core-ui/components/z-modal/z-modal.ref.ts","../../../../libs/core-ui/components/z-modal/z-modal.service.ts","../../../../libs/core-ui/components/z-modal/shival99-z-ui-components-z-modal.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[z-modal-content], [zModalContent]',\n standalone: true,\n})\nexport class ZModalContentDirective {\n public readonly templateRef = inject(TemplateRef<unknown>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[z-modal-footer], [zModalFooter]',\n standalone: true,\n})\nexport class ZModalFooterDirective {\n public readonly templateRef = inject(TemplateRef<unknown>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[z-modal-header], [zModalHeader]',\n standalone: true,\n})\nexport class ZModalHeaderDirective {\n public readonly templateRef = inject(TemplateRef<unknown>);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { InjectionToken } from '@angular/core';\n\nexport const Z_MODAL_DATA = new InjectionToken<any>('Z_MODAL_DATA');\nexport const Z_MODAL_ANIMATION_DURATION = 150;\nexport const Z_MODAL_CONTENT_REVEAL_DURATION = 240;\n\nexport enum ZModalTriggerAction {\n CANCEL = 'cancel',\n OK = 'ok',\n}\n","import type { EventEmitter, TemplateRef, Type, ViewContainerRef, WritableSignal } from '@angular/core';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\nimport type { ClassValue } from 'clsx';\nimport type { Observable } from 'rxjs';\nimport type { ZModalOnClickCallBack } from './z-modal.types';\n\n/**\n * Configuration options for z-modal component.\n *\n * @template T - The type of the content component\n * @template U - The type of the data passed to the modal\n */\nexport class ZModalOptions<T, U> {\n /** Icon for the cancel button */\n public zCancelIcon?: ZIcon;\n /** Text for the cancel button. Set to null to hide the button */\n public zCancelText?: string | null;\n /** Whether the modal is closable (shows close button) */\n public zClosable?: boolean;\n /** Confirm type for preset styling (show, info, warning, danger) */\n public zConfirmType?: 'show' | 'info' | 'warning' | 'danger';\n /** Icon for the confirm modal */\n public zConfirmIcon?: ZIcon;\n /** Modal content - can be a component, template, or string */\n public zContent?: string | TemplateRef<T> | Type<T>;\n /** Custom CSS classes for the modal */\n public class?: ClassValue;\n /** Custom CSS classes for the modal body */\n public zBodyClass?: ClassValue;\n /** Data to be passed to the content component via Z_MODAL_DATA token */\n public zData?: U;\n /**\n * Observable for deferred data loading before showing modal content.\n * Modal will show a loading spinner until the Observable completes.\n * The resolved data will be available via Z_MODAL_DATA.\n *\n * @example\n * ```typescript\n * this.modalService.create({\n * zDefer: this.userService.getUser(userId),\n * zContent: UserFormComponent,\n * });\n * ```\n */\n public zDefer?: Observable<U>;\n /** Description text shown below the title */\n public zDescription?: string;\n /** Whether to disable the header and footer shadows */\n public zDisableShadow?: boolean;\n /** Whether to show a border below the header */\n public zHeaderBorder?: boolean;\n /** Whether to show a border above the footer */\n public zFooterBorder?: boolean;\n /** Whether to hide the default footer */\n public zHideFooter?: boolean;\n /** Whether to hide the default header */\n public zHideHeader?: boolean;\n /**\n * WritableSignal to control loading state of the OK button.\n * Use this when submitting forms or calling APIs.\n *\n * @example Using with confirm modal (delete action)\n * ```typescript\n * const modalRef = this.modalService.danger({\n * zTitle: 'Delete Item',\n * zContent: 'Are you sure you want to delete this item?',\n * zOkText: 'Delete',\n * zOnOk: () => {\n * modalRef.setLoading(true);\n * this.api.delete(itemId).subscribe({\n * next: () => {\n * modalRef.setLoading(false);\n * modalRef.close();\n * },\n * error: () => modalRef.setLoading(false),\n * });\n * return false; // Prevent auto-close\n * },\n * });\n * ```\n */\n public readonly zLoading?: WritableSignal<boolean>;\n /** Whether clicking mask closes the modal */\n public zMaskClosable?: boolean;\n /** Whether OK button has destructive (red) style */\n public zOkDestructive?: boolean;\n /** Whether OK button is disabled */\n public zOkDisabled?: boolean;\n /** Overlay style: 'dark' (black overlay) or 'blur' (backdrop blur) */\n public zOverlay?: 'dark' | 'blur';\n /** Icon for the OK button */\n public zOkIcon?: ZIcon;\n /** Text for the OK button. Set to null to hide the button */\n public zOkText?: string | null;\n /** Callback or EventEmitter when cancel is clicked */\n public zOnCancel?: EventEmitter<T> | ZModalOnClickCallBack<T> = (): void => {};\n /** Callback or EventEmitter when OK is clicked */\n public zOnOk?: EventEmitter<T> | ZModalOnClickCallBack<T> = (): void => {};\n /** Modal title - supports string, HTML string, or TemplateRef */\n public zTitle?: string | TemplateRef<T>;\n /** ViewContainerRef for the modal portal */\n public zViewContainerRef?: ViewContainerRef;\n /** Modal width. In service mode this is applied as the minimum width to allow content to expand naturally. */\n public zWidth?: string;\n /** WritableSignal to control content loading state (shows skeleton when true) */\n public readonly zContentLoading?: WritableSignal<boolean>;\n /** Number of skeleton rows to show when content is loading */\n public zSkeletonRows?: number;\n}\n","import { zDetectBrowser } from '@shival99/z-ui/utils';\nimport type { ZModalConfirmConfig, ZModalConfirmType } from './z-modal.types';\n\nexport type ZModalOverlayType = 'dark' | 'blur';\nexport const getOverlayType = (): ZModalOverlayType => {\n const browser = zDetectBrowser();\n return browser.name === 'Chrome' ? 'dark' : 'blur';\n};\n\nexport const Z_MODAL_CONFIRM_CONFIG: Record<ZModalConfirmType, ZModalConfirmConfig> = {\n show: {\n icon: 'lucideMessageCircleQuestion',\n colors: {\n ring: 'bg-gray-500/10',\n bg: 'bg-gray-500/15',\n icon: 'text-gray-600!',\n },\n },\n info: {\n icon: 'lucideInfo',\n colors: {\n ring: 'bg-blue-500/10',\n bg: 'bg-blue-500/15',\n icon: 'text-blue-500!',\n },\n },\n warning: {\n icon: 'lucideTriangleAlert',\n colors: {\n ring: 'bg-amber-500/10',\n bg: 'bg-amber-500/15',\n icon: 'text-amber-500!',\n },\n },\n danger: {\n icon: 'lucideX',\n okDestructive: true,\n colors: {\n ring: 'bg-red-500/10',\n bg: 'bg-red-500/15',\n icon: 'text-red-500!',\n },\n },\n};\n","import { cva } from 'class-variance-authority';\n\nexport const zModalVariants = cva(\n [\n 'fixed left-[50vw] top-[50%] z-50 flex flex-col w-full translate-x-[-50%]',\n 'translate-y-[-50%] border bg-background py-4 shadow-lg rounded-lg',\n 'max-w-[calc(100%-2rem)] overflow-hidden',\n 'max-h-[80dvh]',\n ].join(' ')\n);\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n type ComponentRef,\n computed,\n contentChild,\n DestroyRef,\n effect,\n ElementRef,\n type EmbeddedViewRef,\n inject,\n type Injector,\n input,\n model,\n OnDestroy,\n output,\n PLATFORM_ID,\n signal,\n type TemplateRef,\n type Type,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent, ZButtonVariants } from '@shival99/z-ui/components/z-button';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { ZOverlayService, type ZOverlayRef } from '@shival99/z-ui/components/z-overlay';\nimport { ZSkeletonComponent } from '@shival99/z-ui/components/z-skeleton';\nimport { ZTooltipDirective } from '@shival99/z-ui/components/z-tooltip';\nimport { ZContentTypePipe, ZSafeHtmlPipe } from '@shival99/z-ui/pipes';\nimport { ZOverlayContainerService, ZOverlayZIndexService, ZTranslateService } from '@shival99/z-ui/services';\nimport { zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport { Subscription } from 'rxjs';\nimport { ZModalContentDirective } from './directives/z-modal-content.directive';\nimport { ZModalFooterDirective } from './directives/z-modal-footer.directive';\nimport { ZModalHeaderDirective } from './directives/z-modal-header.directive';\nimport { Z_MODAL_ANIMATION_DURATION, Z_MODAL_CONTENT_REVEAL_DURATION } from './z-modal.define';\nimport { ZModalOptions } from './z-modal.options';\nimport { ZModalRef } from './z-modal.ref';\nimport { getOverlayType, Z_MODAL_CONFIRM_CONFIG } from './z-modal.utils';\nimport { zModalVariants } from './z-modal.variants';\n\n@Component({\n selector: 'z-modal',\n imports: [\n NgTemplateOutlet,\n ZButtonComponent,\n ZIconComponent,\n ZContentTypePipe,\n ZTooltipDirective,\n ZSkeletonComponent,\n NgScrollbar,\n ZSafeHtmlPipe,\n TranslatePipe,\n CdkScrollable,\n ],\n standalone: true,\n templateUrl: './z-modal.component.html',\n styleUrl: './z-modal.component.scss',\n providers: [TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[style.width]': 'effectiveWidth()',\n },\n exportAs: 'zModal',\n})\nexport class ZModalComponent<T, U> implements OnDestroy, AfterViewChecked {\n public zOk = output<void>();\n public zCancel = output<void>();\n public zAfterClose = output<void>();\n public readonly zScrollbar = output<NgScrollbar>();\n\n public readonly class = input<ClassValue>('');\n public readonly zBodyClass = input<ClassValue>('');\n public readonly zVisible = model<boolean>(false);\n public readonly zTitle = input<string | TemplateRef<unknown>>();\n public readonly zDescription = input<string | TemplateRef<unknown>>();\n public readonly zWidth = input<string>('500px');\n public readonly zClosable = input<boolean>(true);\n public readonly zMaskClosable = input<boolean>(true);\n public readonly zDisableShadow = input<boolean>(false);\n public readonly zHeaderBorder = input<boolean>(false);\n public readonly zFooterBorder = input<boolean>(false);\n public readonly zHideHeader = input<boolean>(false);\n public readonly zHideFooter = input<boolean>(false);\n public readonly zOkText = input<string | null>(null);\n public readonly zCancelText = input<string | null>(null);\n public readonly zOkDestructive = input<boolean>(false);\n public readonly zOkDisabled = input<boolean>(false);\n public readonly zLoading = input<boolean>(false);\n public readonly zContentLoading = input<boolean>(false);\n public readonly zSkeletonRows = input<number>(3);\n public readonly zOverlay = input<'dark' | 'blur'>(getOverlayType());\n\n protected readonly customHeader = contentChild(ZModalHeaderDirective);\n protected readonly customContent = contentChild(ZModalContentDirective);\n protected readonly customFooter = contentChild(ZModalFooterDirective);\n\n public modalRef?: ZModalRef<T>;\n protected readonly contentOutlet = viewChild('contentOutlet', { read: ViewContainerRef });\n protected readonly mainContentRef = viewChild<NgScrollbar>('mainContent');\n\n protected readonly config = inject(ZModalOptions<T, U>, { optional: true }) || new ZModalOptions<T, U>();\n private readonly _platformId = inject(PLATFORM_ID);\n private readonly _host = inject(ElementRef<HTMLElement>);\n private readonly _overlayService = inject(ZOverlayService);\n private readonly _cdr = inject(ChangeDetectorRef);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _zTranslate = inject(ZTranslateService);\n private readonly _overlayContainerService = inject(ZOverlayContainerService);\n private readonly _zIndexService = inject(ZOverlayZIndexService);\n\n private _templateOverlayRef: ZOverlayRef | null = null;\n private _originalParent: HTMLElement | null = null;\n private _originalNextSibling: Node | null = null;\n private _backdropSubscription: Subscription | null = null;\n private _closeTimeout: ReturnType<typeof setTimeout> | null = null;\n private _contentRevealTimeout: ReturnType<typeof setTimeout> | null = null;\n private _contentResizeObserver: ResizeObserver | null = null;\n private _lastLoadingHeight: number | null = null;\n private _wasContentLoading = false;\n\n protected readonly isLeaving = signal(false);\n protected readonly hasScrollableContent = signal(false);\n protected readonly isScrolledFromTop = signal(false);\n protected readonly isScrolledToBottom = signal(false);\n protected readonly isServiceMode = computed(() => !!this.modalRef);\n protected readonly isTemplateMode = computed(() => !this.isServiceMode());\n protected readonly isConfirmMode = computed(() => !!this.config.zConfirmType);\n protected readonly shouldRenderContent = computed(() => this.zVisible() || this.isLeaving());\n protected readonly isStringContent = computed(\n () => typeof this.config.zContent === 'string' && !this.isConfirmMode()\n );\n\n private _lastScrollHeight = 0;\n\n public ngAfterViewChecked(): void {\n this._checkScrollState();\n }\n\n private _checkScrollState(): void {\n const scrollbar = this.mainContentRef();\n if (!scrollbar) {\n return;\n }\n\n const viewport = scrollbar.nativeElement.querySelector('.ng-scroll-viewport') as HTMLElement;\n if (!viewport) {\n return;\n }\n\n if (viewport.scrollHeight === this._lastScrollHeight) {\n return;\n }\n this._lastScrollHeight = viewport.scrollHeight;\n\n const hasVerticalScroll = viewport.scrollHeight > viewport.clientHeight;\n this.hasScrollableContent.set(hasVerticalScroll);\n }\n\n public onContentScroll(event: Event): void {\n const target = event.target as HTMLElement;\n if (!target) {\n return;\n }\n\n const { scrollTop } = target;\n const { scrollHeight } = target;\n const { clientHeight } = target;\n\n this.isScrolledFromTop.set(scrollTop > 0);\n this.isScrolledToBottom.set(scrollTop + clientHeight >= scrollHeight - 1);\n }\n\n protected readonly confirmIconColors = computed(() => {\n const type = this.config.zConfirmType ?? 'show';\n return Z_MODAL_CONFIRM_CONFIG[type].colors;\n });\n\n protected readonly effectiveTitle = computed(() => (this.isServiceMode() ? this.config.zTitle : this.zTitle()));\n\n protected readonly effectiveDescription = computed(() =>\n this.isServiceMode() ? this.config.zDescription : this.zDescription()\n );\n\n protected readonly hasEffectiveDescription = computed(() => !!this.effectiveDescription());\n\n protected readonly headerContentClasses = computed(() =>\n zMergeClasses(\n 'flex w-full justify-between overflow-hidden px-4',\n this.hasEffectiveDescription() ? 'items-start' : 'items-center'\n )\n );\n\n protected readonly effectiveBodyClass = computed(() =>\n this.isServiceMode() ? this.config.zBodyClass : this.zBodyClass()\n );\n\n protected readonly templateBodyClasses = computed(() => {\n const hideHeader = this.effectiveHideHeader();\n const hideFooter = this.effectiveHideFooter();\n const bodySpacingClass = hideHeader && hideFooter ? 'py-0' : hideHeader ? 'pt-0' : hideFooter ? 'pb-0' : '';\n\n return zMergeClasses(\n 'relative flex min-h-[12.5rem] flex-col gap-4 px-4 py-4',\n this.effectiveBodyClass(),\n bodySpacingClass\n );\n });\n\n protected readonly serviceBodyClasses = computed(() => {\n const hideHeader = this.effectiveHideHeader();\n const hideFooter = this.effectiveHideFooter();\n const bodySpacingClass = hideHeader && hideFooter ? 'py-0' : hideHeader ? 'pt-0' : hideFooter ? 'pb-0' : '';\n // The absolute skeleton overlay needs room to render and a relative positioning context.\n const loadingMinHeightClass = this.effectiveContentLoading() ? 'min-h-[12.5rem]' : '';\n\n return zMergeClasses(\n 'relative flex min-h-0 flex-col gap-4 px-4 py-4',\n loadingMinHeightClass,\n this.effectiveBodyClass(),\n bodySpacingClass\n );\n });\n\n protected readonly effectiveClosable = computed(() =>\n this.isServiceMode() ? (this.config.zClosable ?? true) : this.zClosable()\n );\n\n protected readonly effectiveDisableShadow = computed(() =>\n this.isServiceMode() ? (this.config.zDisableShadow ?? false) : this.zDisableShadow()\n );\n\n protected readonly shouldShowShadow = computed(() => !this.effectiveDisableShadow());\n\n protected readonly effectiveHeaderBorder = computed(() =>\n this.isServiceMode() ? (this.config.zHeaderBorder ?? false) : this.zHeaderBorder()\n );\n\n protected readonly effectiveFooterBorder = computed(() =>\n this.isServiceMode() ? (this.config.zFooterBorder ?? false) : this.zFooterBorder()\n );\n\n protected readonly effectiveHideFooter = computed(() =>\n this.isServiceMode() ? this.config.zHideFooter : this.zHideFooter()\n );\n\n protected readonly effectiveHideHeader = computed(() =>\n this.isServiceMode() ? this.config.zHideHeader : this.zHideHeader()\n );\n\n protected readonly effectiveOkText = computed(() => (this.isServiceMode() ? this.config.zOkText : this.zOkText()));\n\n protected readonly effectiveCancelText = computed(() =>\n this.isServiceMode() ? this.config.zCancelText : this.zCancelText()\n );\n\n protected readonly effectiveOkDestructive = computed(() =>\n this.isServiceMode() ? this.config.zOkDestructive : this.zOkDestructive()\n );\n\n protected readonly effectiveTypeOk = computed((): ZButtonVariants['zType'] => {\n if (!this.isServiceMode()) {\n return 'default';\n }\n\n const typeMap: Record<string, ZButtonVariants['zType']> = {\n show: 'default',\n info: 'info',\n warning: 'warning',\n danger: 'error',\n };\n\n const confirmType = this.config.zConfirmType;\n return confirmType ? (typeMap[confirmType] ?? 'default') : 'default';\n });\n\n protected readonly effectiveOkDisabled = computed(() =>\n this.isServiceMode() ? this.config.zOkDisabled : this.zOkDisabled()\n );\n\n protected readonly effectiveLoading = computed(() => {\n if (this.isServiceMode()) {\n return this.modalRef?.loading() || (this.config.zLoading?.() ?? false);\n }\n return this.zLoading();\n });\n\n protected readonly effectiveContentLoading = computed(() => {\n if (this.isServiceMode()) {\n return this.config.zContentLoading?.() ?? false;\n }\n return this.zContentLoading();\n });\n\n protected readonly effectiveSkeletonRows = computed(() => {\n if (this.isServiceMode()) {\n return this.config.zSkeletonRows ?? 3;\n }\n return this.zSkeletonRows();\n });\n\n protected readonly effectiveWidth = computed(() => {\n if (this.isServiceMode()) {\n return this.config.zWidth ?? this.zWidth();\n }\n return this.shouldRenderContent() ? this.zWidth() : null;\n });\n\n protected readonly isDeferLoading = computed(() => {\n if (!this.isServiceMode()) {\n return false;\n }\n return !!this.config.zDefer && !this.contentOutlet()?.length;\n });\n\n protected readonly classes = computed(() =>\n zMergeClasses(zModalVariants(), this.isServiceMode() ? this.config.class : this.class())\n );\n\n protected readonly hostClasses = computed(() => {\n const baseClasses = this.classes();\n if (this.isServiceMode()) {\n return `${baseClasses} z-modal-service-mode`.trim();\n }\n if (this.shouldRenderContent()) {\n return `${baseClasses} z-modal-template-mode`.trim();\n }\n return 'z-modal-template-host';\n });\n\n constructor() {\n effect(() => {\n this._zTranslate.currentLang();\n this._cdr.markForCheck();\n });\n\n effect(() => {\n const scrollbar = this.mainContentRef();\n if (scrollbar) {\n this.zScrollbar.emit(scrollbar);\n }\n });\n\n effect(() => {\n const visible = this.zVisible();\n if (visible && this.isTemplateMode() && !this._templateOverlayRef) {\n this._openTemplateOverlay();\n return;\n }\n\n if (!visible && this.isTemplateMode() && this._templateOverlayRef && !this.isLeaving()) {\n this._closeWithAnimation();\n }\n });\n\n if (isPlatformBrowser(this._platformId)) {\n this._contentResizeObserver = new ResizeObserver(() => {\n const isSkeletonSwap = this.isServiceMode() && !this.isConfirmMode();\n if (isSkeletonSwap && this.effectiveContentLoading()) {\n this._lastLoadingHeight = this._host.nativeElement.offsetHeight;\n }\n });\n this._contentResizeObserver.observe(this._host.nativeElement);\n }\n\n effect(() => {\n const isSkeletonSwap = this.isServiceMode() && !this.isConfirmMode();\n const loading = isSkeletonSwap && this.effectiveContentLoading();\n\n if (!loading && this._wasContentLoading) {\n // Wait for the template to remove the skeleton before measuring the new height.\n setTimeout(() => this._revealContentWithAnimation(), 0);\n }\n\n this._wasContentLoading = loading;\n });\n }\n\n public ngOnDestroy(): void {\n this._clearCloseTimeout();\n this._clearContentRevealTimeout();\n this._contentResizeObserver?.disconnect();\n this._disposeTemplateOverlay();\n }\n\n public isDestroyed(): boolean {\n return this._destroyRef.destroyed;\n }\n\n public getNativeElement(): HTMLElement {\n return this._host.nativeElement;\n }\n\n public attachComponentPortal<C>(component: Type<C>, injector?: Injector): ComponentRef<C> {\n this._cdr.detectChanges();\n const outlet = this.contentOutlet();\n if (outlet && outlet.length > 0) {\n throw new Error('Attempting to attach modal content after content is already attached');\n }\n return outlet?.createComponent(component, { injector }) as ComponentRef<C>;\n }\n\n public attachTemplatePortal<C>(templateRef: TemplateRef<C>, context: C): EmbeddedViewRef<C> {\n const outlet = this.contentOutlet();\n if (outlet && outlet.length > 0) {\n throw new Error('Attempting to attach modal content after content is already attached');\n }\n return outlet?.createEmbeddedView(templateRef, context) as EmbeddedViewRef<C>;\n }\n\n public onOkClick(): void {\n if (this.effectiveLoading()) {\n return;\n }\n this.zOk.emit();\n }\n\n public onCloseClick(): void {\n if (this.effectiveLoading()) {\n return;\n }\n this.zCancel.emit();\n if (this.isTemplateMode()) {\n this._closeWithAnimation();\n }\n }\n\n public onBackdropClick(): void {\n if (this.zMaskClosable() && !this.effectiveLoading()) {\n this.zCancel.emit();\n this._closeWithAnimation();\n }\n }\n\n public open(): void {\n this.isLeaving.set(false);\n this.zVisible.set(true);\n }\n\n public close(): void {\n this._closeWithAnimation();\n }\n\n private _createOverlay(): ZOverlayRef | null {\n if (!isPlatformBrowser(this._platformId)) {\n return null;\n }\n\n const overlayType = getOverlayType();\n const backdropClass = overlayType === 'blur' ? 'z-modal-backdrop-blur' : 'z-modal-backdrop-dark';\n\n return this._overlayService.createGlobal({\n hasBackdrop: true,\n backdropClass,\n panelClass: 'z-modal-overlay-pane',\n scrollLock: true,\n });\n }\n\n private _openTemplateOverlay(): void {\n if (this._templateOverlayRef) {\n return;\n }\n\n this._templateOverlayRef = this._createOverlay();\n if (!this._templateOverlayRef) {\n return;\n }\n\n this._zIndexService.applyToOverlay(this._templateOverlayRef);\n this._zIndexService.deferMoveToTop(this._templateOverlayRef);\n\n const hostElement = this._host.nativeElement;\n this._originalParent = hostElement.parentElement;\n this._originalNextSibling = hostElement.nextSibling;\n\n this._templateOverlayRef.overlayElement.appendChild(hostElement);\n\n this._backdropSubscription = this._templateOverlayRef.backdropClick().subscribe(() => {\n this.onBackdropClick();\n });\n }\n\n private _closeWithAnimation(): void {\n if (this.isLeaving()) {\n return;\n }\n\n this._overlayContainerService.notifyClosing();\n this.isLeaving.set(true);\n this.zVisible.set(false);\n\n const hostElement = this._host.nativeElement;\n const { backdropElement } = this._templateOverlayRef ?? {};\n\n if (backdropElement) {\n backdropElement.classList.add('z-backdrop-leaving');\n }\n\n hostElement.classList.add('modal-leave');\n\n this._clearCloseTimeout();\n this._closeTimeout = setTimeout(() => {\n if (this._destroyRef.destroyed) {\n return;\n }\n\n this.isLeaving.set(false);\n this._disposeTemplateOverlay();\n this.zAfterClose.emit();\n }, Z_MODAL_ANIMATION_DURATION);\n }\n\n private _clearCloseTimeout(): void {\n if (!this._closeTimeout) {\n return;\n }\n\n clearTimeout(this._closeTimeout);\n this._closeTimeout = null;\n }\n\n private _revealContentWithAnimation(): void {\n const oldHeight = this._lastLoadingHeight;\n this._lastLoadingHeight = null;\n if (oldHeight == null || !isPlatformBrowser(this._platformId) || this._destroyRef.destroyed) {\n return;\n }\n\n const host = this._host.nativeElement;\n const newHeight = host.offsetHeight;\n\n // Animate in either direction; skip the transition when the height is unchanged.\n if (newHeight === oldHeight) {\n return;\n }\n\n this._clearContentRevealTimeout();\n\n host.style.height = `${oldHeight}px`;\n void host.offsetHeight;\n host.classList.add('z-modal-height-morph');\n\n // Two animation frames let the browser paint the old height before starting the transition.\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n host.style.height = `${newHeight}px`;\n });\n });\n\n this._contentRevealTimeout = setTimeout(() => {\n host.classList.remove('z-modal-height-morph');\n host.style.height = '';\n this._contentRevealTimeout = null;\n }, Z_MODAL_CONTENT_REVEAL_DURATION + 50);\n }\n\n private _clearContentRevealTimeout(): void {\n if (!this._contentRevealTimeout) {\n return;\n }\n\n clearTimeout(this._contentRevealTimeout);\n this._contentRevealTimeout = null;\n }\n\n private _disposeTemplateOverlay(): void {\n const hostElement = this._host.nativeElement;\n\n if (this._originalParent && this._originalNextSibling) {\n this._originalParent.insertBefore(hostElement, this._originalNextSibling);\n }\n\n if (this._originalParent && !this._originalNextSibling) {\n this._originalParent.appendChild(hostElement);\n }\n\n hostElement.classList.remove('modal-leave');\n if (this._templateOverlayRef) {\n this._templateOverlayRef.dispose();\n this._templateOverlayRef = null;\n }\n\n this._originalParent = null;\n this._originalNextSibling = null;\n\n if (this._backdropSubscription) {\n this._backdropSubscription.unsubscribe();\n this._backdropSubscription = null;\n }\n }\n}\n","<!-- Template mode content (rendered in host element, which is moved to overlay) -->\n@if (isTemplateMode() && shouldRenderContent()) {\n @if (customHeader(); as headerDir) {\n <header [class.z-modal-header-shadow]=\"shouldShowShadow()\" [class.z-modal-header-border]=\"effectiveHeaderBorder()\">\n <div class=\"flex items-start justify-between px-4\">\n <ng-container *ngTemplateOutlet=\"headerDir.templateRef\" />\n </div>\n </header>\n } @else if (!effectiveHideHeader()) {\n @if (effectiveTitle()) {\n <header\n [class.z-modal-header-shadow]=\"shouldShowShadow()\"\n [class.z-modal-header-border]=\"effectiveHeaderBorder()\">\n <div [class]=\"headerContentClasses()\">\n <div class=\"min-w-0 flex-1 overflow-hidden pr-2\">\n @if (effectiveTitle(); as title) {\n @switch (title | zContentType) {\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"$any(title)\" />\n }\n @case ('html') {\n <h4\n data-testid=\"z-modal-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"title\"\n [innerHTML]=\"$any(title) | zSafeHtml\"></h4>\n }\n @default {\n <h4\n data-testid=\"z-modal-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"$any(title) | translate\">\n {{ $any(title) | translate }}\n </h4>\n }\n }\n }\n @if (effectiveDescription(); as description) {\n @switch (description | zContentType) {\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"$any(description)\" />\n }\n @case ('html') {\n <p\n data-testid=\"z-modal-description\"\n class=\"text-muted-foreground m-0 mt-1 text-sm\"\n [innerHTML]=\"$any(description) | zSafeHtml\"></p>\n }\n @default {\n <p data-testid=\"z-modal-description\" class=\"text-muted-foreground m-0 mt-1 text-sm\">\n {{ $any(description) | translate }}\n </p>\n }\n }\n }\n </div>\n @if (effectiveClosable()) {\n <button\n type=\"button\"\n data-testid=\"z-modal-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n }\n </div>\n </header>\n } @else if (effectiveClosable()) {\n <header\n [class.z-modal-header-shadow]=\"shouldShowShadow()\"\n [class.z-modal-header-border]=\"effectiveHeaderBorder()\">\n <div class=\"flex justify-end px-4\">\n <button\n type=\"button\"\n data-testid=\"z-modal-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n </div>\n </header>\n }\n }\n\n <ng-scrollbar\n class=\"z-modal-scrollbar flex-1\"\n #mainContent\n track=\"vertical\"\n cdkScrollable\n (scroll)=\"onContentScroll($event)\">\n <main [class]=\"templateBodyClasses()\">\n <div [class.invisible]=\"effectiveContentLoading()\" [class.pointer-events-none]=\"effectiveContentLoading()\">\n @if (customContent(); as contentDir) {\n <ng-container *ngTemplateOutlet=\"contentDir.templateRef\" />\n } @else {\n <ng-content />\n }\n </div>\n\n @if (effectiveContentLoading()) {\n <div class=\"absolute inset-4 flex flex-col\">\n <z-skeleton class=\"h-full\" [zRows]=\"effectiveSkeletonRows()\" />\n </div>\n }\n </main>\n </ng-scrollbar>\n\n @if (customFooter(); as footerDir) {\n <footer [class.z-modal-footer-shadow]=\"shouldShowShadow()\" [class.z-modal-footer-border]=\"effectiveFooterBorder()\">\n <div class=\"flex flex-row justify-end gap-2 px-4\">\n <ng-container *ngTemplateOutlet=\"footerDir.templateRef\" />\n </div>\n </footer>\n } @else if (!effectiveHideFooter()) {\n <footer [class.z-modal-footer-shadow]=\"shouldShowShadow()\" [class.z-modal-footer-border]=\"effectiveFooterBorder()\">\n <div class=\"flex flex-row justify-end gap-2 px-4\">\n @if (effectiveCancelText() !== null) {\n <button type=\"button\" data-testid=\"z-modal-cancel-button\" z-button zType=\"outline\" (click)=\"onCloseClick()\">\n {{ effectiveCancelText() ?? ('i18n_z_ui_modal_cancel' | translate) }}\n </button>\n }\n\n @if (effectiveOkText() !== null) {\n <button\n type=\"button\"\n data-testid=\"z-modal-ok-button\"\n z-button\n [zType]=\"effectiveOkDestructive() ? 'destructive' : 'default'\"\n [disabled]=\"effectiveOkDisabled() || effectiveLoading()\"\n [zLoading]=\"effectiveLoading()\"\n (click)=\"onOkClick()\">\n {{ effectiveOkText() ?? ('i18n_z_ui_common_ok' | translate) }}\n </button>\n }\n </div>\n </footer>\n }\n}\n\n<!-- Service mode content -->\n@if (isServiceMode()) {\n <!-- Confirm Modal Layout (no skeleton) -->\n @if (isConfirmMode()) {\n <div class=\"flex flex-col items-center px-4 pt-2 pb-4 text-center\">\n @if (config.zConfirmIcon) {\n <div class=\"relative mb-4 flex size-20 items-center justify-center\">\n <div class=\"absolute inset-0 rounded-full\" [class]=\"confirmIconColors().ring\"></div>\n <div class=\"relative flex size-14 items-center justify-center rounded-full\" [class]=\"confirmIconColors().bg\">\n <z-icon [zType]=\"config.zConfirmIcon\" zSize=\"30\" [zStrokeWidth]=\"2.6\" [class]=\"confirmIconColors().icon\" />\n </div>\n </div>\n }\n\n <!-- Title centered -->\n @if (effectiveTitle(); as title) {\n @switch (title | zContentType) {\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"$any(title)\" />\n }\n @case ('html') {\n <h4\n data-testid=\"z-modal-title\"\n class=\"m-0 text-lg leading-snug font-semibold\"\n [innerHTML]=\"$any(title) | zSafeHtml\"></h4>\n }\n @default {\n <h4 data-testid=\"z-modal-title\" class=\"m-0 text-lg leading-snug font-semibold\">\n {{ $any(title) | translate }}\n </h4>\n }\n }\n }\n\n <!-- Description centered -->\n @if (config.zContent; as content) {\n <p\n data-testid=\"z-modal-description\"\n class=\"text-muted-foreground m-0 mt-2 text-sm\"\n [innerHTML]=\"$any(content) | translate | zSafeHtml\"></p>\n }\n </div>\n\n <!-- Footer centered -->\n @if (!effectiveHideFooter()) {\n <footer class=\"mt-4 flex flex-row justify-center gap-3 pb-2\">\n @if (effectiveCancelText() !== null) {\n <button\n type=\"button\"\n class=\"min-w-28\"\n data-testid=\"z-modal-cancel-button\"\n z-button\n zType=\"outline\"\n (click)=\"onCloseClick()\">\n {{ effectiveCancelText() ?? 'i18n_z_ui_modal_cancel' | translate }}\n </button>\n }\n\n @if (effectiveOkText() !== null) {\n <button\n type=\"button\"\n class=\"min-w-28\"\n data-testid=\"z-modal-ok-button\"\n z-button\n [zType]=\"effectiveTypeOk()\"\n [disabled]=\"effectiveOkDisabled() || effectiveLoading()\"\n [zLoading]=\"effectiveLoading()\"\n (click)=\"onOkClick()\">\n {{ effectiveOkText() ?? 'i18n_z_ui_common_ok' | translate }}\n </button>\n }\n </footer>\n }\n } @else {\n <!-- Normal Modal Layout -->\n <!-- Keep the attached content outlet mounted while loading; hide it behind the skeleton. -->\n @if (!effectiveHideHeader()) {\n @if (effectiveTitle()) {\n <header\n [class.z-modal-header-shadow]=\"shouldShowShadow()\"\n [class.z-modal-header-border]=\"effectiveHeaderBorder()\">\n <div [class]=\"headerContentClasses()\">\n <div class=\"min-w-0 flex-1 overflow-hidden pr-2\">\n @if (effectiveTitle(); as title) {\n @switch (title | zContentType) {\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"$any(title)\" />\n }\n @case ('html') {\n <h4\n data-testid=\"z-modal-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"title\"\n [innerHTML]=\"$any(title) | zSafeHtml\"></h4>\n }\n @default {\n <h4\n data-testid=\"z-modal-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"$any(title) | translate\">\n {{ $any(title) | translate }}\n </h4>\n }\n }\n }\n </div>\n @if (effectiveClosable()) {\n <button\n type=\"button\"\n data-testid=\"z-modal-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n }\n </div>\n </header>\n } @else if (effectiveClosable()) {\n <header\n [class.z-modal-header-shadow]=\"shouldShowShadow()\"\n [class.z-modal-header-border]=\"effectiveHeaderBorder()\">\n <div class=\"flex justify-end px-4\">\n <button\n type=\"button\"\n data-testid=\"z-modal-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n </div>\n </header>\n }\n }\n\n <ng-scrollbar\n class=\"z-modal-scrollbar flex-1\"\n #mainContent\n track=\"vertical\"\n cdkScrollable\n (scroll)=\"onContentScroll($event)\">\n <main [class]=\"serviceBodyClasses()\">\n <!-- Use `hidden` so the reveal animation can measure the height change. Keep the outlet mounted. -->\n <div [class.hidden]=\"effectiveContentLoading()\">\n <ng-template #contentOutlet />\n\n @if (isStringContent()) {\n <div data-testid=\"z-modal-content\" [innerHTML]=\"$any(config.zContent) | zSafeHtml\"></div>\n }\n </div>\n\n @if (effectiveContentLoading()) {\n <div class=\"absolute inset-4 flex flex-col\">\n <z-skeleton class=\"h-full\" [zRows]=\"effectiveSkeletonRows()\" />\n </div>\n }\n </main>\n </ng-scrollbar>\n\n @if (!effectiveHideFooter()) {\n <footer\n [class.z-modal-footer-shadow]=\"shouldShowShadow()\"\n [class.z-modal-footer-border]=\"effectiveFooterBorder()\">\n <div class=\"flex flex-row justify-end gap-2 px-4\">\n @if (effectiveCancelText() !== null) {\n <button\n type=\"button\"\n class=\"min-w-28\"\n data-testid=\"z-modal-cancel-button\"\n z-button\n zType=\"outline\"\n (click)=\"onCloseClick()\">\n @if (config.zCancelIcon) {\n <z-icon [zType]=\"config.zCancelIcon\" />\n }\n {{ effectiveCancelText() ?? 'i18n_z_ui_modal_cancel' | translate }}\n </button>\n }\n\n @if (effectiveOkText() !== null) {\n <button\n type=\"button\"\n class=\"min-w-28\"\n data-testid=\"z-modal-ok-button\"\n z-button\n [zType]=\"effectiveOkDestructive() ? 'destructive' : 'default'\"\n [disabled]=\"effectiveOkDisabled() || effectiveLoading()\"\n [zLoading]=\"effectiveLoading()\"\n (click)=\"onOkClick()\">\n @if (config.zOkIcon && !effectiveLoading()) {\n <z-icon [zType]=\"config.zOkIcon\" />\n }\n {{ effectiveOkText() ?? 'i18n_z_ui_common_ok' | translate }}\n </button>\n }\n </div>\n </footer>\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isPlatformBrowser } from '@angular/common';\nimport { EventEmitter, Inject, PLATFORM_ID, signal } from '@angular/core';\nimport type { ZOverlayRef } from '@shival99/z-ui/components/z-overlay';\nimport { filter, fromEvent, Subject, takeUntil } from 'rxjs';\nimport { ZModalComponent } from './z-modal.component';\nimport { Z_MODAL_ANIMATION_DURATION, ZModalTriggerAction } from './z-modal.define';\nimport { ZModalOptions } from './z-modal.options';\n\nexport class ZModalRef<T = any, R = any, U = any> {\n private readonly _destroy$ = new Subject<void>();\n private _isClosing = false;\n private _result?: R;\n\n public componentInstance: T | null = null;\n public readonly loading = signal(false);\n public readonly zAfterClose = new EventEmitter<R | undefined>();\n\n public constructor(\n private readonly _overlayRef: ZOverlayRef,\n private readonly _config: ZModalOptions<T, U>,\n private readonly _containerInstance: ZModalComponent<T, U>,\n @Inject(PLATFORM_ID) private readonly _platformId: object\n ) {\n this._containerInstance.zCancel.subscribe(() => this._trigger(ZModalTriggerAction.CANCEL));\n this._containerInstance.zOk.subscribe(() => this._trigger(ZModalTriggerAction.OK));\n\n if ((this._config.zMaskClosable ?? true) && isPlatformBrowser(this._platformId)) {\n this._overlayRef\n .backdropClick()\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n if (!this.loading()) {\n this._trigger(ZModalTriggerAction.CANCEL);\n }\n });\n }\n\n if (isPlatformBrowser(this._platformId)) {\n fromEvent<KeyboardEvent>(document, 'keydown')\n .pipe(\n filter(event => event.key === 'Escape'),\n takeUntil(this._destroy$)\n )\n .subscribe(() => {\n // Chỉ overlay trên cùng phản hồi Escape — modal-trong-modal không đóng dồn cả stack.\n if (!this.loading() && this._overlayRef.isTopmost()) {\n this._trigger(ZModalTriggerAction.CANCEL);\n }\n });\n }\n }\n\n public setLoading(value: boolean): void {\n this.loading.set(value);\n }\n\n public close(result?: R): void {\n if (this._isClosing) {\n return;\n }\n\n this._isClosing = true;\n this._result = result;\n this._overlayRef?.markClosing();\n\n if (isPlatformBrowser(this._platformId)) {\n const hostElement = this._containerInstance.getNativeElement();\n hostElement.classList.add('modal-leave');\n const { backdropElement } = this._overlayRef;\n if (backdropElement) {\n backdropElement.classList.add('z-backdrop-leaving');\n }\n }\n\n setTimeout(() => {\n if (!this._containerInstance.isDestroyed()) {\n this._containerInstance.zAfterClose.emit();\n }\n\n this.zAfterClose.emit(this._result);\n\n this._overlayRef?.dispose();\n\n if (!this._destroy$.closed) {\n this._destroy$.next();\n this._destroy$.complete();\n }\n }, Z_MODAL_ANIMATION_DURATION);\n }\n\n private _trigger(action: ZModalTriggerAction): void {\n if (this.loading()) {\n return;\n }\n\n const trigger = {\n ok: this._config.zOnOk,\n cancel: this._config.zOnCancel,\n }[action];\n\n if (trigger instanceof EventEmitter) {\n trigger.emit(this._getContentComponent());\n return;\n }\n\n if (typeof trigger === 'function') {\n const result = trigger(this._getContentComponent(), this) as R;\n this._closeWithResult(result);\n return;\n }\n\n this.close();\n }\n\n private _getContentComponent(): T {\n return this.componentInstance as T;\n }\n\n private _closeWithResult(result: R): void {\n if (result !== false) {\n this.close(result);\n }\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, Injector, PLATFORM_ID, TemplateRef, type Type } from '@angular/core';\nimport { ZOverlayService, type ZOverlayRef } from '@shival99/z-ui/components/z-overlay';\nimport { ZOverlayZIndexService, ZTranslateService } from '@shival99/z-ui/services';\nimport { ZModalComponent } from './z-modal.component';\nimport { Z_MODAL_DATA } from './z-modal.define';\nimport { ZModalOptions } from './z-modal.options';\nimport { ZModalRef } from './z-modal.ref';\nimport { ZModalConfirmOptions, ZModalConfirmType, ZModalContentType } from './z-modal.types';\nimport { getOverlayType, Z_MODAL_CONFIRM_CONFIG } from './z-modal.utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZModalService {\n private readonly _overlayService = inject(ZOverlayService);\n private readonly _injector = inject(Injector);\n private readonly _platformId = inject(PLATFORM_ID);\n private readonly _zTranslate = inject(ZTranslateService);\n private readonly _zIndexService = inject(ZOverlayZIndexService);\n\n public create<T, U>(config: ZModalOptions<T, U>): ZModalRef<T> {\n return this._open<T, U>(config.zContent as Type<T>, config);\n }\n\n public show<U = unknown>(options: ZModalConfirmOptions<U>): ZModalRef<unknown> {\n return this._confirmModal('show', options);\n }\n\n public info<U = unknown>(options: ZModalConfirmOptions<U>): ZModalRef<unknown> {\n return this._confirmModal('info', options);\n }\n\n public warning<U = unknown>(options: ZModalConfirmOptions<U>): ZModalRef<unknown> {\n return this._confirmModal('warning', options);\n }\n\n public danger<U = unknown>(options: ZModalConfirmOptions<U>): ZModalRef<unknown> {\n return this._confirmModal('danger', options);\n }\n\n private _confirmModal<U>(type: ZModalConfirmType, options: ZModalConfirmOptions<U>): ZModalRef<unknown> {\n const typeConfig = Z_MODAL_CONFIRM_CONFIG[type];\n this._zTranslate.currentLang();\n\n const config: ZModalOptions<unknown, U> = {\n zTitle: options.zTitle,\n zContent: options.zContent,\n zOkText: options.zOkText ?? this._zTranslate.translate('i18n_z_ui_modal_confirm')(),\n zCancelText: options.zCancelText ?? this._zTranslate.translate('i18n_z_ui_modal_cancel')(),\n zOkDestructive: typeConfig.okDestructive,\n zConfirmIcon: options.zIcon ?? typeConfig.icon,\n zMaskClosable: options.zMaskClosable ?? true,\n zWidth: options.zWidth ?? '500px',\n zConfirmType: type,\n zData: options.zData,\n zOnOk: () => options.zOnOk?.(),\n zOnCancel: () => options.zOnCancel?.(),\n };\n\n return this.create(config);\n }\n\n private _open<T, U>(componentOrTemplateRef: ZModalContentType<T>, config: ZModalOptions<T, U>) {\n const overlayRef = this._createOverlay(config);\n\n if (!overlayRef) {\n return new ZModalRef(\n undefined as unknown as ZOverlayRef,\n config,\n undefined as unknown as ZModalComponent<T, U>,\n this._platformId\n );\n }\n\n const modalContainer = this._attachModalContainer<T, U>(overlayRef, config);\n const modalRef = this._attachModalContent<T, U>(componentOrTemplateRef, modalContainer, overlayRef, config);\n\n return modalRef;\n }\n\n private _createOverlay<T, U>(config: ZModalOptions<T, U>): ZOverlayRef | undefined {\n if (!isPlatformBrowser(this._platformId)) {\n return undefined;\n }\n\n const overlayType = config.zOverlay ?? getOverlayType();\n const backdropClass = overlayType === 'blur' ? 'z-modal-backdrop-blur' : 'z-modal-backdrop-dark';\n const overlayRef = this._overlayService.createGlobal({\n hasBackdrop: true,\n backdropClass,\n scrollLock: true,\n });\n\n this._zIndexService.applyToOverlay(overlayRef);\n this._zIndexService.deferMoveToTop(overlayRef);\n\n return overlayRef;\n }\n\n private _attachModalContainer<T, U>(overlayRef: ZOverlayRef, config: ZModalOptions<T, U>) {\n const injector = Injector.create({\n parent: this._injector,\n providers: [{ provide: ZModalOptions, useValue: config }],\n });\n\n const containerRef = overlayRef.attach<ZModalComponent<T, U>>(ZModalComponent, {\n injector,\n viewContainerRef: config.zViewContainerRef,\n });\n\n return containerRef.instance;\n }\n\n private _attachModalContent<T, U>(\n componentOrTemplateRef: ZModalContentType<T>,\n modalContainer: ZModalComponent<T, U>,\n overlayRef: ZOverlayRef,\n config: ZModalOptions<T, U>\n ) {\n const modalRef = new ZModalRef<T>(overlayRef, config, modalContainer, this._platformId);\n modalContainer.modalRef = modalRef;\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n modalContainer.attachTemplatePortal(componentOrTemplateRef, { modalRef } as T);\n return modalRef;\n }\n\n if (typeof componentOrTemplateRef !== 'string') {\n const injector = this._createInjector<T, U>(modalRef, config);\n const contentRef = modalContainer.attachComponentPortal<T>(componentOrTemplateRef, injector);\n\n if (contentRef) {\n modalRef.componentInstance = contentRef.instance;\n }\n }\n\n return modalRef;\n }\n\n private _createInjector<T, U>(modalRef: ZModalRef<T>, config: ZModalOptions<T, U>) {\n return Injector.create({\n parent: this._injector,\n providers: [\n { provide: ZModalRef, useValue: modalRef },\n { provide: Z_MODAL_DATA, useValue: config.zData },\n ],\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shival99-z-ui-components-z-modal.mjs","sources":["../../../../libs/core-ui/components/z-modal/directives/z-modal-content.directive.ts","../../../../libs/core-ui/components/z-modal/directives/z-modal-footer.directive.ts","../../../../libs/core-ui/components/z-modal/directives/z-modal-header.directive.ts","../../../../libs/core-ui/components/z-modal/z-modal.define.ts","../../../../libs/core-ui/components/z-modal/z-modal.options.ts","../../../../libs/core-ui/components/z-modal/z-modal.utils.ts","../../../../libs/core-ui/components/z-modal/z-modal.variants.ts","../../../../libs/core-ui/components/z-modal/z-modal.component.ts","../../../../libs/core-ui/components/z-modal/z-modal.component.html","../../../../libs/core-ui/components/z-modal/z-modal.ref.ts","../../../../libs/core-ui/components/z-modal/z-modal.service.ts","../../../../libs/core-ui/components/z-modal/shival99-z-ui-components-z-modal.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[z-modal-content], [zModalContent]',\n standalone: true,\n})\nexport class ZModalContentDirective {\n public readonly templateRef = inject(TemplateRef<unknown>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[z-modal-footer], [zModalFooter]',\n standalone: true,\n})\nexport class ZModalFooterDirective {\n public readonly templateRef = inject(TemplateRef<unknown>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[z-modal-header], [zModalHeader]',\n standalone: true,\n})\nexport class ZModalHeaderDirective {\n public readonly templateRef = inject(TemplateRef<unknown>);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { InjectionToken } from '@angular/core';\n\nexport const Z_MODAL_DATA = new InjectionToken<any>('Z_MODAL_DATA');\nexport const Z_MODAL_ANIMATION_DURATION = 150;\nexport const Z_MODAL_CONTENT_REVEAL_DURATION = 240;\n\nexport enum ZModalTriggerAction {\n CANCEL = 'cancel',\n OK = 'ok',\n}\n","import type { EventEmitter, TemplateRef, Type, ViewContainerRef, WritableSignal } from '@angular/core';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\nimport type { ClassValue } from 'clsx';\nimport type { Observable } from 'rxjs';\nimport type { ZModalConfirmStyle, ZModalOnClickCallBack } from './z-modal.types';\n\n/**\n * Configuration options for z-modal component.\n *\n * @template T - The type of the content component\n * @template U - The type of the data passed to the modal\n */\nexport class ZModalOptions<T, U> {\n /** Icon for the cancel button */\n public zCancelIcon?: ZIcon;\n /** Text for the cancel button. Set to null to hide the button */\n public zCancelText?: string | null;\n /** Whether the modal is closable (shows close button) */\n public zClosable?: boolean;\n /** Confirm type for preset styling (show, info, warning, danger) */\n public zConfirmType?: 'show' | 'info' | 'warning' | 'danger';\n /** Confirm layout style. The dialog style uses a bordered header/footer layout. */\n public zConfirmStyle?: ZModalConfirmStyle;\n /** Icon for the confirm modal */\n public zConfirmIcon?: ZIcon;\n /** Modal content - can be a component, template, or string */\n public zContent?: string | TemplateRef<T> | Type<T>;\n /** Custom CSS classes for the modal */\n public class?: ClassValue;\n /** Custom CSS classes for the modal body */\n public zBodyClass?: ClassValue;\n /** Data to be passed to the content component via Z_MODAL_DATA token */\n public zData?: U;\n /**\n * Observable for deferred data loading before showing modal content.\n * Modal will show a loading spinner until the Observable completes.\n * The resolved data will be available via Z_MODAL_DATA.\n *\n * @example\n * ```typescript\n * this.modalService.create({\n * zDefer: this.userService.getUser(userId),\n * zContent: UserFormComponent,\n * });\n * ```\n */\n public zDefer?: Observable<U>;\n /** Description text shown below the title */\n public zDescription?: string;\n /** Whether to disable the header and footer shadows */\n public zDisableShadow?: boolean;\n /** Whether to show a border below the header */\n public zHeaderBorder?: boolean;\n /** Whether to show a border above the footer */\n public zFooterBorder?: boolean;\n /** Whether to hide the default footer */\n public zHideFooter?: boolean;\n /** Whether to hide the default header */\n public zHideHeader?: boolean;\n /**\n * WritableSignal to control loading state of the OK button.\n * Use this when submitting forms or calling APIs.\n *\n * @example Using with confirm modal (delete action)\n * ```typescript\n * const modalRef = this.modalService.danger({\n * zTitle: 'Delete Item',\n * zContent: 'Are you sure you want to delete this item?',\n * zOkText: 'Delete',\n * zOnOk: () => {\n * modalRef.setLoading(true);\n * this.api.delete(itemId).subscribe({\n * next: () => {\n * modalRef.setLoading(false);\n * modalRef.close();\n * },\n * error: () => modalRef.setLoading(false),\n * });\n * return false; // Prevent auto-close\n * },\n * });\n * ```\n */\n public readonly zLoading?: WritableSignal<boolean>;\n /** Whether clicking mask closes the modal */\n public zMaskClosable?: boolean;\n /** Whether OK button has destructive (red) style */\n public zOkDestructive?: boolean;\n /** Whether OK button is disabled */\n public zOkDisabled?: boolean;\n /** Overlay style: 'dark' (black overlay) or 'blur' (backdrop blur) */\n public zOverlay?: 'dark' | 'blur';\n /** Icon for the OK button */\n public zOkIcon?: ZIcon;\n /** Text for the OK button. Set to null to hide the button */\n public zOkText?: string | null;\n /** Callback or EventEmitter when cancel is clicked */\n public zOnCancel?: EventEmitter<T> | ZModalOnClickCallBack<T> = (): void => {};\n /** Callback or EventEmitter when OK is clicked */\n public zOnOk?: EventEmitter<T> | ZModalOnClickCallBack<T> = (): void => {};\n /** Modal title - supports string, HTML string, or TemplateRef */\n public zTitle?: string | TemplateRef<T>;\n /** ViewContainerRef for the modal portal */\n public zViewContainerRef?: ViewContainerRef;\n /** Modal width. In service mode this is applied as the minimum width to allow content to expand naturally. */\n public zWidth?: string;\n /** WritableSignal to control content loading state (shows skeleton when true) */\n public readonly zContentLoading?: WritableSignal<boolean>;\n /** Number of skeleton rows to show when content is loading */\n public zSkeletonRows?: number;\n}\n","import { zDetectBrowser } from '@shival99/z-ui/utils';\nimport type { ZModalConfirmConfig, ZModalConfirmType, ZModalOverlayType } from './z-modal.types';\n\nexport const getOverlayType = (): ZModalOverlayType => {\n const browser = zDetectBrowser();\n return browser.name === 'Chrome' ? 'dark' : 'blur';\n};\n\nexport const Z_MODAL_CONFIRM_CONFIG: Record<ZModalConfirmType, ZModalConfirmConfig> = {\n show: {\n icon: 'lucideMessageCircleQuestion',\n dialogIcon: 'lucideCircleHelp',\n colors: {\n ring: 'bg-gray-500/10',\n bg: 'bg-gray-500/15',\n icon: 'text-gray-600!',\n },\n },\n info: {\n icon: 'lucideInfo',\n dialogIcon: 'lucideInfo',\n colors: {\n ring: 'bg-blue-500/10',\n bg: 'bg-blue-500/15',\n icon: 'text-blue-500!',\n },\n },\n warning: {\n icon: 'lucideTriangleAlert',\n dialogIcon: 'lucideTriangleAlert',\n colors: {\n ring: 'bg-amber-500/10',\n bg: 'bg-amber-500/15',\n icon: 'text-amber-500!',\n },\n },\n danger: {\n icon: 'lucideX',\n dialogIcon: 'lucideX',\n okDestructive: true,\n colors: {\n ring: 'bg-red-500/10',\n bg: 'bg-red-500/15',\n icon: 'text-red-500!',\n },\n },\n};\n","import { cva } from 'class-variance-authority';\n\nexport const zModalVariants = cva(\n [\n 'fixed left-[50vw] top-[50%] z-50 flex flex-col w-full translate-x-[-50%]',\n 'translate-y-[-50%] border bg-background py-4 shadow-lg rounded-lg',\n 'max-w-[calc(100%-2rem)] overflow-hidden',\n 'max-h-[80dvh]',\n ].join(' ')\n);\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n type ComponentRef,\n computed,\n contentChild,\n DestroyRef,\n effect,\n ElementRef,\n type EmbeddedViewRef,\n inject,\n type Injector,\n input,\n model,\n OnDestroy,\n output,\n PLATFORM_ID,\n signal,\n type TemplateRef,\n type Type,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent, ZButtonVariants } from '@shival99/z-ui/components/z-button';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { ZOverlayService, type ZOverlayRef } from '@shival99/z-ui/components/z-overlay';\nimport { ZSkeletonComponent } from '@shival99/z-ui/components/z-skeleton';\nimport { ZTooltipDirective } from '@shival99/z-ui/components/z-tooltip';\nimport { ZContentTypePipe, ZSafeHtmlPipe } from '@shival99/z-ui/pipes';\nimport { ZOverlayContainerService, ZOverlayZIndexService, ZTranslateService } from '@shival99/z-ui/services';\nimport { zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport { Subscription } from 'rxjs';\nimport { ZModalContentDirective } from './directives/z-modal-content.directive';\nimport { ZModalFooterDirective } from './directives/z-modal-footer.directive';\nimport { ZModalHeaderDirective } from './directives/z-modal-header.directive';\nimport { Z_MODAL_ANIMATION_DURATION, Z_MODAL_CONTENT_REVEAL_DURATION } from './z-modal.define';\nimport { ZModalOptions } from './z-modal.options';\nimport { ZModalRef } from './z-modal.ref';\nimport { getOverlayType, Z_MODAL_CONFIRM_CONFIG } from './z-modal.utils';\nimport { zModalVariants } from './z-modal.variants';\n\n@Component({\n selector: 'z-modal',\n imports: [\n NgTemplateOutlet,\n ZButtonComponent,\n ZIconComponent,\n ZContentTypePipe,\n ZTooltipDirective,\n ZSkeletonComponent,\n NgScrollbar,\n ZSafeHtmlPipe,\n TranslatePipe,\n CdkScrollable,\n ],\n standalone: true,\n templateUrl: './z-modal.component.html',\n styleUrl: './z-modal.component.scss',\n providers: [TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[style.width]': 'effectiveWidth()',\n },\n exportAs: 'zModal',\n})\nexport class ZModalComponent<T, U> implements OnDestroy, AfterViewChecked {\n public zOk = output<void>();\n public zCancel = output<void>();\n public zAfterClose = output<void>();\n public readonly zScrollbar = output<NgScrollbar>();\n\n public readonly class = input<ClassValue>('');\n public readonly zBodyClass = input<ClassValue>('');\n public readonly zVisible = model<boolean>(false);\n public readonly zTitle = input<string | TemplateRef<unknown>>();\n public readonly zDescription = input<string | TemplateRef<unknown>>();\n public readonly zWidth = input<string>('500px');\n public readonly zClosable = input<boolean>(true);\n public readonly zMaskClosable = input<boolean>(true);\n public readonly zDisableShadow = input<boolean>(true);\n public readonly zHeaderBorder = input<boolean>(true);\n public readonly zFooterBorder = input<boolean>(true);\n public readonly zHideHeader = input<boolean>(false);\n public readonly zHideFooter = input<boolean>(false);\n public readonly zOkText = input<string | null>(null);\n public readonly zCancelText = input<string | null>(null);\n public readonly zOkDestructive = input<boolean>(false);\n public readonly zOkDisabled = input<boolean>(false);\n public readonly zLoading = input<boolean>(false);\n public readonly zContentLoading = input<boolean>(false);\n public readonly zSkeletonRows = input<number>(3);\n public readonly zOverlay = input<'dark' | 'blur'>(getOverlayType());\n\n protected readonly customHeader = contentChild(ZModalHeaderDirective);\n protected readonly customContent = contentChild(ZModalContentDirective);\n protected readonly customFooter = contentChild(ZModalFooterDirective);\n\n public modalRef?: ZModalRef<T>;\n protected readonly contentOutlet = viewChild('contentOutlet', { read: ViewContainerRef });\n protected readonly mainContentRef = viewChild<NgScrollbar>('mainContent');\n\n protected readonly config = inject(ZModalOptions<T, U>, { optional: true }) || new ZModalOptions<T, U>();\n private readonly _platformId = inject(PLATFORM_ID);\n private readonly _host = inject(ElementRef<HTMLElement>);\n private readonly _overlayService = inject(ZOverlayService);\n private readonly _cdr = inject(ChangeDetectorRef);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _zTranslate = inject(ZTranslateService);\n private readonly _overlayContainerService = inject(ZOverlayContainerService);\n private readonly _zIndexService = inject(ZOverlayZIndexService);\n\n private _templateOverlayRef: ZOverlayRef | null = null;\n private _originalParent: HTMLElement | null = null;\n private _originalNextSibling: Node | null = null;\n private _backdropSubscription: Subscription | null = null;\n private _closeTimeout: ReturnType<typeof setTimeout> | null = null;\n private _contentRevealTimeout: ReturnType<typeof setTimeout> | null = null;\n private _contentResizeObserver: ResizeObserver | null = null;\n private _lastLoadingHeight: number | null = null;\n private _wasContentLoading = false;\n\n protected readonly isLeaving = signal(false);\n protected readonly hasScrollableContent = signal(false);\n protected readonly isScrolledFromTop = signal(false);\n protected readonly isScrolledToBottom = signal(false);\n protected readonly isServiceMode = computed(() => !!this.modalRef);\n protected readonly isTemplateMode = computed(() => !this.isServiceMode());\n protected readonly isConfirmMode = computed(() => !!this.config.zConfirmType);\n protected readonly isDialogConfirmMode = computed(\n () => this.isConfirmMode() && this.config.zConfirmStyle === 'dialog'\n );\n\n protected readonly shouldRenderContent = computed(() => this.zVisible() || this.isLeaving());\n protected readonly isStringContent = computed(\n () => typeof this.config.zContent === 'string' && !this.isConfirmMode()\n );\n\n private _lastScrollHeight = 0;\n\n public ngAfterViewChecked(): void {\n this._checkScrollState();\n }\n\n private _checkScrollState(): void {\n const scrollbar = this.mainContentRef();\n if (!scrollbar) {\n return;\n }\n\n const viewport = scrollbar.nativeElement.querySelector('.ng-scroll-viewport') as HTMLElement;\n if (!viewport) {\n return;\n }\n\n if (viewport.scrollHeight === this._lastScrollHeight) {\n return;\n }\n this._lastScrollHeight = viewport.scrollHeight;\n\n const hasVerticalScroll = viewport.scrollHeight > viewport.clientHeight;\n this.hasScrollableContent.set(hasVerticalScroll);\n }\n\n public onContentScroll(event: Event): void {\n const target = event.target as HTMLElement;\n if (!target) {\n return;\n }\n\n const { scrollTop } = target;\n const { scrollHeight } = target;\n const { clientHeight } = target;\n\n this.isScrolledFromTop.set(scrollTop > 0);\n this.isScrolledToBottom.set(scrollTop + clientHeight >= scrollHeight - 1);\n }\n\n protected readonly confirmIconColors = computed(() => {\n const type = this.config.zConfirmType ?? 'show';\n return Z_MODAL_CONFIRM_CONFIG[type].colors;\n });\n\n protected readonly effectiveConfirmDialogIcon = computed(() => {\n const type = this.config.zConfirmType ?? 'show';\n return this.config.zConfirmIcon ?? Z_MODAL_CONFIRM_CONFIG[type].dialogIcon;\n });\n\n protected readonly effectiveTitle = computed(() => (this.isServiceMode() ? this.config.zTitle : this.zTitle()));\n\n protected readonly effectiveDescription = computed(() =>\n this.isServiceMode() ? this.config.zDescription : this.zDescription()\n );\n\n protected readonly hasEffectiveDescription = computed(() => !!this.effectiveDescription());\n\n protected readonly headerContentClasses = computed(() =>\n zMergeClasses(\n 'flex w-full justify-between overflow-hidden px-4',\n this.hasEffectiveDescription() ? 'items-start' : 'items-center'\n )\n );\n\n protected readonly effectiveBodyClass = computed(() =>\n this.isServiceMode() ? this.config.zBodyClass : this.zBodyClass()\n );\n\n protected readonly templateBodyClasses = computed(() => {\n const hideHeader = this.effectiveHideHeader();\n const hideFooter = this.effectiveHideFooter();\n const bodySpacingClass = hideHeader && hideFooter ? 'py-0' : hideHeader ? 'pt-0' : hideFooter ? 'pb-0' : '';\n\n return zMergeClasses(\n 'relative flex min-h-[12.5rem] flex-col gap-4 px-4 py-4',\n this.effectiveBodyClass(),\n bodySpacingClass\n );\n });\n\n protected readonly serviceBodyClasses = computed(() => {\n const hideHeader = this.effectiveHideHeader();\n const hideFooter = this.effectiveHideFooter();\n const bodySpacingClass = hideHeader && hideFooter ? 'py-0' : hideHeader ? 'pt-0' : hideFooter ? 'pb-0' : '';\n // The absolute skeleton overlay needs room to render and a relative positioning context.\n const loadingMinHeightClass = this.effectiveContentLoading() ? 'min-h-[12.5rem]' : '';\n\n return zMergeClasses(\n 'relative flex min-h-0 flex-col gap-4 px-4 py-4',\n loadingMinHeightClass,\n this.effectiveBodyClass(),\n bodySpacingClass\n );\n });\n\n protected readonly effectiveClosable = computed(() =>\n this.isServiceMode() ? (this.config.zClosable ?? true) : this.zClosable()\n );\n\n protected readonly effectiveDisableShadow = computed(() =>\n this.isServiceMode() ? (this.config.zDisableShadow ?? true) : this.zDisableShadow()\n );\n\n protected readonly shouldShowShadow = computed(() => !this.effectiveDisableShadow());\n\n protected readonly effectiveHeaderBorder = computed(() =>\n this.isServiceMode() ? (this.config.zHeaderBorder ?? true) : this.zHeaderBorder()\n );\n\n protected readonly effectiveFooterBorder = computed(() =>\n this.isServiceMode() ? (this.config.zFooterBorder ?? true) : this.zFooterBorder()\n );\n\n protected readonly effectiveHideFooter = computed(() =>\n this.isServiceMode() ? this.config.zHideFooter : this.zHideFooter()\n );\n\n protected readonly effectiveHideHeader = computed(() =>\n this.isServiceMode() ? this.config.zHideHeader : this.zHideHeader()\n );\n\n protected readonly effectiveOkText = computed(() => (this.isServiceMode() ? this.config.zOkText : this.zOkText()));\n\n protected readonly effectiveCancelText = computed(() =>\n this.isServiceMode() ? this.config.zCancelText : this.zCancelText()\n );\n\n protected readonly effectiveOkDestructive = computed(() =>\n this.isServiceMode() ? this.config.zOkDestructive : this.zOkDestructive()\n );\n\n protected readonly effectiveTypeOk = computed((): ZButtonVariants['zType'] => {\n if (!this.isServiceMode()) {\n return 'default';\n }\n\n const typeMap: Record<string, ZButtonVariants['zType']> = {\n show: 'default',\n info: 'info',\n warning: 'warning',\n danger: 'error',\n };\n\n const confirmType = this.config.zConfirmType;\n return confirmType ? (typeMap[confirmType] ?? 'default') : 'default';\n });\n\n protected readonly effectiveOkDisabled = computed(() =>\n this.isServiceMode() ? this.config.zOkDisabled : this.zOkDisabled()\n );\n\n protected readonly effectiveLoading = computed(() => {\n if (this.isServiceMode()) {\n return this.modalRef?.loading() || (this.config.zLoading?.() ?? false);\n }\n return this.zLoading();\n });\n\n protected readonly effectiveContentLoading = computed(() => {\n if (this.isServiceMode()) {\n return this.config.zContentLoading?.() ?? false;\n }\n return this.zContentLoading();\n });\n\n protected readonly effectiveSkeletonRows = computed(() => {\n if (this.isServiceMode()) {\n return this.config.zSkeletonRows ?? 3;\n }\n return this.zSkeletonRows();\n });\n\n protected readonly effectiveWidth = computed(() => {\n if (this.isServiceMode()) {\n return this.config.zWidth ?? this.zWidth();\n }\n return this.shouldRenderContent() ? this.zWidth() : null;\n });\n\n protected readonly isDeferLoading = computed(() => {\n if (!this.isServiceMode()) {\n return false;\n }\n return !!this.config.zDefer && !this.contentOutlet()?.length;\n });\n\n protected readonly classes = computed(() =>\n zMergeClasses(\n zModalVariants(),\n this.isDialogConfirmMode() ? 'z-modal-confirm-dialog' : null,\n this.isServiceMode() ? this.config.class : this.class()\n )\n );\n\n protected readonly hostClasses = computed(() => {\n const baseClasses = this.classes();\n if (this.isServiceMode()) {\n return `${baseClasses} z-modal-service-mode`.trim();\n }\n if (this.shouldRenderContent()) {\n return `${baseClasses} z-modal-template-mode`.trim();\n }\n return 'z-modal-template-host';\n });\n\n constructor() {\n effect(() => {\n this._zTranslate.currentLang();\n this._cdr.markForCheck();\n });\n\n effect(() => {\n const scrollbar = this.mainContentRef();\n if (scrollbar) {\n this.zScrollbar.emit(scrollbar);\n }\n });\n\n effect(() => {\n const visible = this.zVisible();\n if (visible && this.isTemplateMode() && !this._templateOverlayRef) {\n this._openTemplateOverlay();\n return;\n }\n\n if (!visible && this.isTemplateMode() && this._templateOverlayRef && !this.isLeaving()) {\n this._closeWithAnimation();\n }\n });\n\n if (isPlatformBrowser(this._platformId)) {\n this._contentResizeObserver = new ResizeObserver(() => {\n const isSkeletonSwap = this.isServiceMode() && !this.isConfirmMode();\n if (isSkeletonSwap && this.effectiveContentLoading()) {\n this._lastLoadingHeight = this._host.nativeElement.offsetHeight;\n }\n });\n this._contentResizeObserver.observe(this._host.nativeElement);\n }\n\n effect(() => {\n const isSkeletonSwap = this.isServiceMode() && !this.isConfirmMode();\n const loading = isSkeletonSwap && this.effectiveContentLoading();\n\n if (!loading && this._wasContentLoading) {\n // Wait for the template to remove the skeleton before measuring the new height.\n setTimeout(() => this._revealContentWithAnimation(), 0);\n }\n\n this._wasContentLoading = loading;\n });\n }\n\n public ngOnDestroy(): void {\n this._clearCloseTimeout();\n this._clearContentRevealTimeout();\n this._contentResizeObserver?.disconnect();\n this._disposeTemplateOverlay();\n }\n\n public isDestroyed(): boolean {\n return this._destroyRef.destroyed;\n }\n\n public getNativeElement(): HTMLElement {\n return this._host.nativeElement;\n }\n\n public attachComponentPortal<C>(component: Type<C>, injector?: Injector): ComponentRef<C> {\n this._cdr.detectChanges();\n const outlet = this.contentOutlet();\n if (outlet && outlet.length > 0) {\n throw new Error('Attempting to attach modal content after content is already attached');\n }\n return outlet?.createComponent(component, { injector }) as ComponentRef<C>;\n }\n\n public attachTemplatePortal<C>(templateRef: TemplateRef<C>, context: C): EmbeddedViewRef<C> {\n const outlet = this.contentOutlet();\n if (outlet && outlet.length > 0) {\n throw new Error('Attempting to attach modal content after content is already attached');\n }\n return outlet?.createEmbeddedView(templateRef, context) as EmbeddedViewRef<C>;\n }\n\n public onOkClick(): void {\n if (this.effectiveLoading()) {\n return;\n }\n this.zOk.emit();\n }\n\n public onCloseClick(): void {\n if (this.effectiveLoading()) {\n return;\n }\n this.zCancel.emit();\n if (this.isTemplateMode()) {\n this._closeWithAnimation();\n }\n }\n\n public onBackdropClick(): void {\n if (this.zMaskClosable() && !this.effectiveLoading()) {\n this.zCancel.emit();\n this._closeWithAnimation();\n }\n }\n\n public open(): void {\n this.isLeaving.set(false);\n this.zVisible.set(true);\n }\n\n public close(): void {\n this._closeWithAnimation();\n }\n\n private _createOverlay(): ZOverlayRef | null {\n if (!isPlatformBrowser(this._platformId)) {\n return null;\n }\n\n const overlayType = getOverlayType();\n const backdropClass = overlayType === 'blur' ? 'z-modal-backdrop-blur' : 'z-modal-backdrop-dark';\n\n return this._overlayService.createGlobal({\n hasBackdrop: true,\n backdropClass,\n panelClass: 'z-modal-overlay-pane',\n scrollLock: true,\n });\n }\n\n private _openTemplateOverlay(): void {\n if (this._templateOverlayRef) {\n return;\n }\n\n this._templateOverlayRef = this._createOverlay();\n if (!this._templateOverlayRef) {\n return;\n }\n\n this._zIndexService.applyToOverlay(this._templateOverlayRef);\n this._zIndexService.deferMoveToTop(this._templateOverlayRef);\n\n const hostElement = this._host.nativeElement;\n this._originalParent = hostElement.parentElement;\n this._originalNextSibling = hostElement.nextSibling;\n\n this._templateOverlayRef.overlayElement.appendChild(hostElement);\n\n this._backdropSubscription = this._templateOverlayRef.backdropClick().subscribe(() => {\n this.onBackdropClick();\n });\n }\n\n private _closeWithAnimation(): void {\n if (this.isLeaving()) {\n return;\n }\n\n this._overlayContainerService.notifyClosing();\n this.isLeaving.set(true);\n this.zVisible.set(false);\n\n const hostElement = this._host.nativeElement;\n const { backdropElement } = this._templateOverlayRef ?? {};\n\n if (backdropElement) {\n backdropElement.classList.add('z-backdrop-leaving');\n }\n\n hostElement.classList.add('modal-leave');\n\n this._clearCloseTimeout();\n this._closeTimeout = setTimeout(() => {\n if (this._destroyRef.destroyed) {\n return;\n }\n\n this.isLeaving.set(false);\n this._disposeTemplateOverlay();\n this.zAfterClose.emit();\n }, Z_MODAL_ANIMATION_DURATION);\n }\n\n private _clearCloseTimeout(): void {\n if (!this._closeTimeout) {\n return;\n }\n\n clearTimeout(this._closeTimeout);\n this._closeTimeout = null;\n }\n\n private _revealContentWithAnimation(): void {\n const oldHeight = this._lastLoadingHeight;\n this._lastLoadingHeight = null;\n if (oldHeight == null || !isPlatformBrowser(this._platformId) || this._destroyRef.destroyed) {\n return;\n }\n\n const host = this._host.nativeElement;\n const newHeight = host.offsetHeight;\n\n // Animate in either direction; skip the transition when the height is unchanged.\n if (newHeight === oldHeight) {\n return;\n }\n\n this._clearContentRevealTimeout();\n\n host.style.height = `${oldHeight}px`;\n void host.offsetHeight;\n host.classList.add('z-modal-height-morph');\n\n // Two animation frames let the browser paint the old height before starting the transition.\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n host.style.height = `${newHeight}px`;\n });\n });\n\n this._contentRevealTimeout = setTimeout(() => {\n host.classList.remove('z-modal-height-morph');\n host.style.height = '';\n this._contentRevealTimeout = null;\n }, Z_MODAL_CONTENT_REVEAL_DURATION + 50);\n }\n\n private _clearContentRevealTimeout(): void {\n if (!this._contentRevealTimeout) {\n return;\n }\n\n clearTimeout(this._contentRevealTimeout);\n this._contentRevealTimeout = null;\n }\n\n private _disposeTemplateOverlay(): void {\n const hostElement = this._host.nativeElement;\n\n if (this._originalParent && this._originalNextSibling) {\n this._originalParent.insertBefore(hostElement, this._originalNextSibling);\n }\n\n if (this._originalParent && !this._originalNextSibling) {\n this._originalParent.appendChild(hostElement);\n }\n\n hostElement.classList.remove('modal-leave');\n if (this._templateOverlayRef) {\n this._templateOverlayRef.dispose();\n this._templateOverlayRef = null;\n }\n\n this._originalParent = null;\n this._originalNextSibling = null;\n\n if (this._backdropSubscription) {\n this._backdropSubscription.unsubscribe();\n this._backdropSubscription = null;\n }\n }\n}\n","<!-- Template mode content (rendered in host element, which is moved to overlay) -->\n@if (isTemplateMode() && shouldRenderContent()) {\n @if (customHeader(); as headerDir) {\n <header [class.z-modal-header-shadow]=\"shouldShowShadow()\" [class.z-modal-header-border]=\"effectiveHeaderBorder()\">\n <div class=\"flex items-start justify-between px-4\">\n <ng-container *ngTemplateOutlet=\"headerDir.templateRef\" />\n </div>\n </header>\n } @else if (!effectiveHideHeader()) {\n @if (effectiveTitle()) {\n <header\n [class.z-modal-header-shadow]=\"shouldShowShadow()\"\n [class.z-modal-header-border]=\"effectiveHeaderBorder()\">\n <div [class]=\"headerContentClasses()\">\n <div class=\"min-w-0 flex-1 overflow-hidden pr-2\">\n @if (effectiveTitle(); as title) {\n @switch (title | zContentType) {\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"$any(title)\" />\n }\n @case ('html') {\n <h4\n data-testid=\"z-modal-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"title\"\n [innerHTML]=\"$any(title) | zSafeHtml\"></h4>\n }\n @default {\n <h4\n data-testid=\"z-modal-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"$any(title) | translate\">\n {{ $any(title) | translate }}\n </h4>\n }\n }\n }\n @if (effectiveDescription(); as description) {\n @switch (description | zContentType) {\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"$any(description)\" />\n }\n @case ('html') {\n <p\n data-testid=\"z-modal-description\"\n class=\"text-muted-foreground m-0 mt-1 text-sm\"\n [innerHTML]=\"$any(description) | zSafeHtml\"></p>\n }\n @default {\n <p data-testid=\"z-modal-description\" class=\"text-muted-foreground m-0 mt-1 text-sm\">\n {{ $any(description) | translate }}\n </p>\n }\n }\n }\n </div>\n @if (effectiveClosable()) {\n <button\n type=\"button\"\n data-testid=\"z-modal-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n }\n </div>\n </header>\n } @else if (effectiveClosable()) {\n <header\n [class.z-modal-header-shadow]=\"shouldShowShadow()\"\n [class.z-modal-header-border]=\"effectiveHeaderBorder()\">\n <div class=\"flex justify-end px-4\">\n <button\n type=\"button\"\n data-testid=\"z-modal-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n </div>\n </header>\n }\n }\n\n <ng-scrollbar\n class=\"z-modal-scrollbar flex-1\"\n #mainContent\n track=\"vertical\"\n cdkScrollable\n (scroll)=\"onContentScroll($event)\">\n <main [class]=\"templateBodyClasses()\">\n <div [class.invisible]=\"effectiveContentLoading()\" [class.pointer-events-none]=\"effectiveContentLoading()\">\n @if (customContent(); as contentDir) {\n <ng-container *ngTemplateOutlet=\"contentDir.templateRef\" />\n } @else {\n <ng-content />\n }\n </div>\n\n @if (effectiveContentLoading()) {\n <div class=\"absolute inset-4 flex flex-col\">\n <z-skeleton class=\"h-full\" [zRows]=\"effectiveSkeletonRows()\" />\n </div>\n }\n </main>\n </ng-scrollbar>\n\n @if (customFooter(); as footerDir) {\n <footer [class.z-modal-footer-shadow]=\"shouldShowShadow()\" [class.z-modal-footer-border]=\"effectiveFooterBorder()\">\n <div class=\"flex flex-row justify-end gap-2 px-4\">\n <ng-container *ngTemplateOutlet=\"footerDir.templateRef\" />\n </div>\n </footer>\n } @else if (!effectiveHideFooter()) {\n <footer [class.z-modal-footer-shadow]=\"shouldShowShadow()\" [class.z-modal-footer-border]=\"effectiveFooterBorder()\">\n <div class=\"flex flex-row justify-end gap-2 px-4\">\n @if (effectiveCancelText() !== null) {\n <button type=\"button\" data-testid=\"z-modal-cancel-button\" z-button zType=\"outline\" (click)=\"onCloseClick()\">\n {{ effectiveCancelText() ?? ('i18n_z_ui_modal_cancel' | translate) }}\n </button>\n }\n\n @if (effectiveOkText() !== null) {\n <button\n type=\"button\"\n data-testid=\"z-modal-ok-button\"\n z-button\n [zType]=\"effectiveOkDestructive() ? 'destructive' : 'default'\"\n [disabled]=\"effectiveOkDisabled() || effectiveLoading()\"\n [zLoading]=\"effectiveLoading()\"\n (click)=\"onOkClick()\">\n {{ effectiveOkText() ?? ('i18n_z_ui_common_ok' | translate) }}\n </button>\n }\n </div>\n </footer>\n }\n}\n\n<!-- Service mode content -->\n@if (isServiceMode()) {\n <!-- Confirm Modal Layout (no skeleton) -->\n @if (isConfirmMode()) {\n @if (isDialogConfirmMode()) {\n <header\n class=\"relative px-4\"\n [class.z-modal-header-shadow]=\"shouldShowShadow()\"\n [class.z-modal-header-border]=\"effectiveHeaderBorder()\">\n <div class=\"flex items-start justify-between gap-4\">\n <div class=\"flex min-w-0 items-start gap-3\">\n @if (config.zConfirmIcon) {\n <div\n class=\"relative mt-0.5 flex size-10 shrink-0 items-center justify-center rounded-full\"\n [class]=\"confirmIconColors().ring\">\n <div\n class=\"relative flex size-8 items-center justify-center rounded-full\"\n [class]=\"confirmIconColors().bg\">\n <z-icon [zType]=\"config.zConfirmIcon\" zSize=\"18\" [class]=\"confirmIconColors().icon\" />\n </div>\n </div>\n }\n\n <div class=\"min-w-0\">\n @if (effectiveTitle(); as title) {\n @switch (title | zContentType) {\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"$any(title)\" />\n }\n @case ('html') {\n <h4\n data-testid=\"z-modal-title\"\n class=\"m-0 text-base leading-snug font-semibold\"\n [innerHTML]=\"$any(title) | zSafeHtml\"></h4>\n }\n @default {\n <h4 data-testid=\"z-modal-title\" class=\"m-0 text-base leading-snug font-semibold\">\n {{ $any(title) | translate }}\n </h4>\n }\n }\n }\n\n @if (config.zContent; as content) {\n <p\n data-testid=\"z-modal-description\"\n class=\"text-muted-foreground m-0 mt-1 text-sm\"\n [innerHTML]=\"$any(content) | translate | zSafeHtml\"></p>\n }\n </div>\n </div>\n\n @if (effectiveClosable()) {\n <button\n type=\"button\"\n data-testid=\"z-modal-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n class=\"shrink-0\"\n [zWave]=\"false\"\n [attr.aria-label]=\"'i18n_z_ui_modal_close' | translate\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n }\n </div>\n </header>\n\n @if (!effectiveHideFooter()) {\n <footer\n class=\"z-modal-confirm-dialog-footer\"\n [class.z-modal-footer-shadow]=\"shouldShowShadow()\"\n [class.z-modal-footer-border]=\"effectiveFooterBorder() && !effectiveHeaderBorder()\">\n <div class=\"flex flex-row justify-end gap-2 px-4\">\n @if (effectiveCancelText() !== null) {\n <button\n type=\"button\"\n data-testid=\"z-modal-cancel-button\"\n z-button\n zType=\"outline\"\n (click)=\"onCloseClick()\">\n {{ effectiveCancelText() ?? 'i18n_z_ui_modal_cancel' | translate }}\n </button>\n }\n\n @if (effectiveOkText() !== null) {\n <button\n type=\"button\"\n data-testid=\"z-modal-ok-button\"\n z-button\n [zType]=\"effectiveOkDestructive() ? 'destructive' : effectiveTypeOk()\"\n [disabled]=\"effectiveOkDisabled() || effectiveLoading()\"\n [zLoading]=\"effectiveLoading()\"\n (click)=\"onOkClick()\">\n @if (!effectiveLoading()) {\n <z-icon [zType]=\"config.zOkIcon ?? effectiveConfirmDialogIcon()\" zSize=\"16\" />\n }\n {{ effectiveOkText() ?? 'i18n_z_ui_common_ok' | translate }}\n </button>\n }\n </div>\n </footer>\n }\n } @else {\n <div class=\"flex flex-col items-center px-4 pt-2 pb-4 text-center\">\n @if (config.zConfirmIcon) {\n <div class=\"relative mb-4 flex size-20 items-center justify-center\">\n <div class=\"absolute inset-0 rounded-full\" [class]=\"confirmIconColors().ring\"></div>\n <div\n class=\"relative flex size-14 items-center justify-center rounded-full\"\n [class]=\"confirmIconColors().bg\">\n <z-icon\n [zType]=\"config.zConfirmIcon\"\n zSize=\"30\"\n [zStrokeWidth]=\"2.6\"\n [class]=\"confirmIconColors().icon\" />\n </div>\n </div>\n }\n\n <!-- Title centered -->\n @if (effectiveTitle(); as title) {\n @switch (title | zContentType) {\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"$any(title)\" />\n }\n @case ('html') {\n <h4\n data-testid=\"z-modal-title\"\n class=\"m-0 text-lg leading-snug font-semibold\"\n [innerHTML]=\"$any(title) | zSafeHtml\"></h4>\n }\n @default {\n <h4 data-testid=\"z-modal-title\" class=\"m-0 text-lg leading-snug font-semibold\">\n {{ $any(title) | translate }}\n </h4>\n }\n }\n }\n\n <!-- Description centered -->\n @if (config.zContent; as content) {\n <p\n data-testid=\"z-modal-description\"\n class=\"text-muted-foreground m-0 mt-2 text-sm\"\n [innerHTML]=\"$any(content) | translate | zSafeHtml\"></p>\n }\n </div>\n\n <!-- Footer centered -->\n @if (!effectiveHideFooter()) {\n <footer class=\"mt-4 flex flex-row justify-center gap-3 pb-2\">\n @if (effectiveCancelText() !== null) {\n <button\n type=\"button\"\n class=\"min-w-28\"\n data-testid=\"z-modal-cancel-button\"\n z-button\n zType=\"outline\"\n (click)=\"onCloseClick()\">\n {{ effectiveCancelText() ?? 'i18n_z_ui_modal_cancel' | translate }}\n </button>\n }\n\n @if (effectiveOkText() !== null) {\n <button\n type=\"button\"\n class=\"min-w-28\"\n data-testid=\"z-modal-ok-button\"\n z-button\n [zType]=\"effectiveOkDestructive() ? 'destructive' : effectiveTypeOk()\"\n [disabled]=\"effectiveOkDisabled() || effectiveLoading()\"\n [zLoading]=\"effectiveLoading()\"\n (click)=\"onOkClick()\">\n @if (config.zOkIcon && !effectiveLoading()) {\n <z-icon [zType]=\"config.zOkIcon\" />\n }\n {{ effectiveOkText() ?? 'i18n_z_ui_common_ok' | translate }}\n </button>\n }\n </footer>\n }\n }\n } @else {\n <!-- Normal Modal Layout -->\n <!-- Keep the attached content outlet mounted while loading; hide it behind the skeleton. -->\n @if (!effectiveHideHeader()) {\n @if (effectiveTitle()) {\n <header\n [class.z-modal-header-shadow]=\"shouldShowShadow()\"\n [class.z-modal-header-border]=\"effectiveHeaderBorder()\">\n <div [class]=\"headerContentClasses()\">\n <div class=\"min-w-0 flex-1 overflow-hidden pr-2\">\n @if (effectiveTitle(); as title) {\n @switch (title | zContentType) {\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"$any(title)\" />\n }\n @case ('html') {\n <h4\n data-testid=\"z-modal-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"title\"\n [innerHTML]=\"$any(title) | zSafeHtml\"></h4>\n }\n @default {\n <h4\n data-testid=\"z-modal-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"$any(title) | translate\">\n {{ $any(title) | translate }}\n </h4>\n }\n }\n }\n </div>\n @if (effectiveClosable()) {\n <button\n type=\"button\"\n data-testid=\"z-modal-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n }\n </div>\n </header>\n } @else if (effectiveClosable()) {\n <header\n [class.z-modal-header-shadow]=\"shouldShowShadow()\"\n [class.z-modal-header-border]=\"effectiveHeaderBorder()\">\n <div class=\"flex justify-end px-4\">\n <button\n type=\"button\"\n data-testid=\"z-modal-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n </div>\n </header>\n }\n }\n\n <ng-scrollbar\n class=\"z-modal-scrollbar flex-1\"\n #mainContent\n track=\"vertical\"\n cdkScrollable\n (scroll)=\"onContentScroll($event)\">\n <main [class]=\"serviceBodyClasses()\">\n <!-- Use `hidden` so the reveal animation can measure the height change. Keep the outlet mounted. -->\n <div [class.hidden]=\"effectiveContentLoading()\">\n <ng-template #contentOutlet />\n\n @if (isStringContent()) {\n <div data-testid=\"z-modal-content\" [innerHTML]=\"$any(config.zContent) | zSafeHtml\"></div>\n }\n </div>\n\n @if (effectiveContentLoading()) {\n <div class=\"absolute inset-4 flex flex-col\">\n <z-skeleton class=\"h-full\" [zRows]=\"effectiveSkeletonRows()\" />\n </div>\n }\n </main>\n </ng-scrollbar>\n\n @if (!effectiveHideFooter()) {\n <footer\n [class.z-modal-footer-shadow]=\"shouldShowShadow()\"\n [class.z-modal-footer-border]=\"effectiveFooterBorder()\">\n <div class=\"flex flex-row justify-end gap-2 px-4\">\n @if (effectiveCancelText() !== null) {\n <button\n type=\"button\"\n class=\"min-w-28\"\n data-testid=\"z-modal-cancel-button\"\n z-button\n zType=\"outline\"\n (click)=\"onCloseClick()\">\n @if (config.zCancelIcon) {\n <z-icon [zType]=\"config.zCancelIcon\" />\n }\n {{ effectiveCancelText() ?? 'i18n_z_ui_modal_cancel' | translate }}\n </button>\n }\n\n @if (effectiveOkText() !== null) {\n <button\n type=\"button\"\n class=\"min-w-28\"\n data-testid=\"z-modal-ok-button\"\n z-button\n [zType]=\"effectiveOkDestructive() ? 'destructive' : 'default'\"\n [disabled]=\"effectiveOkDisabled() || effectiveLoading()\"\n [zLoading]=\"effectiveLoading()\"\n (click)=\"onOkClick()\">\n @if (config.zOkIcon && !effectiveLoading()) {\n <z-icon [zType]=\"config.zOkIcon\" />\n }\n {{ effectiveOkText() ?? 'i18n_z_ui_common_ok' | translate }}\n </button>\n }\n </div>\n </footer>\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isPlatformBrowser } from '@angular/common';\nimport { EventEmitter, Inject, PLATFORM_ID, signal } from '@angular/core';\nimport type { ZOverlayRef } from '@shival99/z-ui/components/z-overlay';\nimport { filter, fromEvent, Subject, takeUntil } from 'rxjs';\nimport { ZModalComponent } from './z-modal.component';\nimport { Z_MODAL_ANIMATION_DURATION, ZModalTriggerAction } from './z-modal.define';\nimport { ZModalOptions } from './z-modal.options';\n\nexport class ZModalRef<T = any, R = any, U = any> {\n private readonly _destroy$ = new Subject<void>();\n private _isClosing = false;\n private _result?: R;\n\n public componentInstance: T | null = null;\n public readonly loading = signal(false);\n public readonly zAfterClose = new EventEmitter<R | undefined>();\n\n public constructor(\n private readonly _overlayRef: ZOverlayRef,\n private readonly _config: ZModalOptions<T, U>,\n private readonly _containerInstance: ZModalComponent<T, U>,\n @Inject(PLATFORM_ID) private readonly _platformId: object\n ) {\n this._containerInstance.zCancel.subscribe(() => this._trigger(ZModalTriggerAction.CANCEL));\n this._containerInstance.zOk.subscribe(() => this._trigger(ZModalTriggerAction.OK));\n\n if ((this._config.zMaskClosable ?? true) && isPlatformBrowser(this._platformId)) {\n this._overlayRef\n .backdropClick()\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n if (!this.loading()) {\n this._trigger(ZModalTriggerAction.CANCEL);\n }\n });\n }\n\n if (isPlatformBrowser(this._platformId)) {\n fromEvent<KeyboardEvent>(document, 'keydown')\n .pipe(\n filter(event => event.key === 'Escape'),\n takeUntil(this._destroy$)\n )\n .subscribe(() => {\n // Chỉ overlay trên cùng phản hồi Escape — modal-trong-modal không đóng dồn cả stack.\n if (!this.loading() && this._overlayRef.isTopmost()) {\n this._trigger(ZModalTriggerAction.CANCEL);\n }\n });\n }\n }\n\n public setLoading(value: boolean): void {\n this.loading.set(value);\n }\n\n public close(result?: R): void {\n if (this._isClosing) {\n return;\n }\n\n this._isClosing = true;\n this._result = result;\n this._overlayRef?.markClosing();\n\n if (isPlatformBrowser(this._platformId)) {\n const hostElement = this._containerInstance.getNativeElement();\n hostElement.classList.add('modal-leave');\n const { backdropElement } = this._overlayRef;\n if (backdropElement) {\n backdropElement.classList.add('z-backdrop-leaving');\n }\n }\n\n setTimeout(() => {\n if (!this._containerInstance.isDestroyed()) {\n this._containerInstance.zAfterClose.emit();\n }\n\n this.zAfterClose.emit(this._result);\n\n this._overlayRef?.dispose();\n\n if (!this._destroy$.closed) {\n this._destroy$.next();\n this._destroy$.complete();\n }\n }, Z_MODAL_ANIMATION_DURATION);\n }\n\n private _trigger(action: ZModalTriggerAction): void {\n if (this.loading()) {\n return;\n }\n\n const trigger = {\n ok: this._config.zOnOk,\n cancel: this._config.zOnCancel,\n }[action];\n\n if (trigger instanceof EventEmitter) {\n trigger.emit(this._getContentComponent());\n return;\n }\n\n if (typeof trigger === 'function') {\n const result = trigger(this._getContentComponent(), this) as R;\n this._closeWithResult(result);\n return;\n }\n\n this.close();\n }\n\n private _getContentComponent(): T {\n return this.componentInstance as T;\n }\n\n private _closeWithResult(result: R): void {\n if (result !== false) {\n this.close(result);\n }\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, Injector, PLATFORM_ID, TemplateRef, type Type } from '@angular/core';\nimport { ZOverlayService, type ZOverlayRef } from '@shival99/z-ui/components/z-overlay';\nimport { ZOverlayZIndexService, ZTranslateService } from '@shival99/z-ui/services';\nimport { ZModalComponent } from './z-modal.component';\nimport { Z_MODAL_DATA } from './z-modal.define';\nimport { ZModalOptions } from './z-modal.options';\nimport { ZModalRef } from './z-modal.ref';\nimport { ZModalConfirmOptions, ZModalConfirmType, ZModalContentType } from './z-modal.types';\nimport { getOverlayType, Z_MODAL_CONFIRM_CONFIG } from './z-modal.utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZModalService {\n private readonly _overlayService = inject(ZOverlayService);\n private readonly _injector = inject(Injector);\n private readonly _platformId = inject(PLATFORM_ID);\n private readonly _zTranslate = inject(ZTranslateService);\n private readonly _zIndexService = inject(ZOverlayZIndexService);\n\n public create<T, U>(config: ZModalOptions<T, U>): ZModalRef<T> {\n return this._open<T, U>(config.zContent as Type<T>, config);\n }\n\n public show<U = unknown>(options: ZModalConfirmOptions<U>): ZModalRef<unknown> {\n return this._confirmModal('show', options);\n }\n\n public info<U = unknown>(options: ZModalConfirmOptions<U>): ZModalRef<unknown> {\n return this._confirmModal('info', options);\n }\n\n public warning<U = unknown>(options: ZModalConfirmOptions<U>): ZModalRef<unknown> {\n return this._confirmModal('warning', options);\n }\n\n public danger<U = unknown>(options: ZModalConfirmOptions<U>): ZModalRef<unknown> {\n return this._confirmModal('danger', options);\n }\n\n private _confirmModal<U>(type: ZModalConfirmType, options: ZModalConfirmOptions<U>): ZModalRef<unknown> {\n const typeConfig = Z_MODAL_CONFIRM_CONFIG[type];\n this._zTranslate.currentLang();\n\n const config: ZModalOptions<unknown, U> = {\n zTitle: options.zTitle,\n zContent: options.zContent,\n zOkText: options.zOkText ?? this._zTranslate.translate('i18n_z_ui_modal_confirm')(),\n zCancelText: options.zCancelText ?? this._zTranslate.translate('i18n_z_ui_modal_cancel')(),\n zOkDestructive: options.zOkDestructive ?? typeConfig.okDestructive,\n zOkIcon: options.zOkIcon,\n zConfirmIcon: options.zIcon ?? (options.zConfirmStyle === 'dialog' ? typeConfig.dialogIcon : typeConfig.icon),\n zConfirmStyle: options.zConfirmStyle,\n zMaskClosable: options.zMaskClosable ?? true,\n zWidth: options.zWidth ?? '500px',\n zConfirmType: type,\n zData: options.zData,\n zOnOk: () => options.zOnOk?.(),\n zOnCancel: () => options.zOnCancel?.(),\n };\n\n return this.create(config);\n }\n\n private _open<T, U>(componentOrTemplateRef: ZModalContentType<T>, config: ZModalOptions<T, U>) {\n const overlayRef = this._createOverlay(config);\n\n if (!overlayRef) {\n return new ZModalRef(\n undefined as unknown as ZOverlayRef,\n config,\n undefined as unknown as ZModalComponent<T, U>,\n this._platformId\n );\n }\n\n const modalContainer = this._attachModalContainer<T, U>(overlayRef, config);\n const modalRef = this._attachModalContent<T, U>(componentOrTemplateRef, modalContainer, overlayRef, config);\n\n return modalRef;\n }\n\n private _createOverlay<T, U>(config: ZModalOptions<T, U>): ZOverlayRef | undefined {\n if (!isPlatformBrowser(this._platformId)) {\n return undefined;\n }\n\n const overlayType = config.zOverlay ?? getOverlayType();\n const backdropClass = overlayType === 'blur' ? 'z-modal-backdrop-blur' : 'z-modal-backdrop-dark';\n const overlayRef = this._overlayService.createGlobal({\n hasBackdrop: true,\n backdropClass,\n scrollLock: true,\n });\n\n this._zIndexService.applyToOverlay(overlayRef);\n this._zIndexService.deferMoveToTop(overlayRef);\n\n return overlayRef;\n }\n\n private _attachModalContainer<T, U>(overlayRef: ZOverlayRef, config: ZModalOptions<T, U>) {\n const injector = Injector.create({\n parent: this._injector,\n providers: [{ provide: ZModalOptions, useValue: config }],\n });\n\n const containerRef = overlayRef.attach<ZModalComponent<T, U>>(ZModalComponent, {\n injector,\n viewContainerRef: config.zViewContainerRef,\n });\n\n return containerRef.instance;\n }\n\n private _attachModalContent<T, U>(\n componentOrTemplateRef: ZModalContentType<T>,\n modalContainer: ZModalComponent<T, U>,\n overlayRef: ZOverlayRef,\n config: ZModalOptions<T, U>\n ) {\n const modalRef = new ZModalRef<T>(overlayRef, config, modalContainer, this._platformId);\n modalContainer.modalRef = modalRef;\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n modalContainer.attachTemplatePortal(componentOrTemplateRef, { modalRef } as T);\n return modalRef;\n }\n\n if (typeof componentOrTemplateRef !== 'string') {\n const injector = this._createInjector<T, U>(modalRef, config);\n const contentRef = modalContainer.attachComponentPortal<T>(componentOrTemplateRef, injector);\n\n if (contentRef) {\n modalRef.componentInstance = contentRef.instance;\n }\n }\n\n return modalRef;\n }\n\n private _createInjector<T, U>(modalRef: ZModalRef<T>, config: ZModalOptions<T, U>) {\n return Injector.create({\n parent: this._injector,\n providers: [\n { provide: ZModalRef, useValue: modalRef },\n { provide: Z_MODAL_DATA, useValue: config.zData },\n ],\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;MAMa,sBAAsB,CAAA;AACjB,IAAA,WAAW,GAAG,MAAM,EAAC,WAAoB,EAAC;uGAD/C,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCCY,qBAAqB,CAAA;AAChB,IAAA,WAAW,GAAG,MAAM,EAAC,WAAoB,EAAC;uGAD/C,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCCY,qBAAqB,CAAA;AAChB,IAAA,WAAW,GAAG,MAAM,EAAC,WAAoB,EAAC;uGAD/C,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACLD;MAGa,YAAY,GAAG,IAAI,cAAc,CAAM,cAAc;AAC3D,MAAM,0BAA0B,GAAG,GAAG;AACtC,MAAM,+BAA+B,GAAG,GAAG;AAElD,IAAY,mBAGX;AAHD,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,mBAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACX,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,GAAA,EAAA,CAAA,CAAA;;ACD/B;;;;;AAKG;MACU,aAAa,CAAA;;AAEjB,IAAA,WAAW;;AAEX,IAAA,WAAW;;AAEX,IAAA,SAAS;;AAET,IAAA,YAAY;;AAEZ,IAAA,aAAa;;AAEb,IAAA,YAAY;;AAEZ,IAAA,QAAQ;;AAER,IAAA,KAAK;;AAEL,IAAA,UAAU;;AAEV,IAAA,KAAK;AACZ;;;;;;;;;;;;AAYG;AACI,IAAA,MAAM;;AAEN,IAAA,YAAY;;AAEZ,IAAA,cAAc;;AAEd,IAAA,aAAa;;AAEb,IAAA,aAAa;;AAEb,IAAA,WAAW;;AAEX,IAAA,WAAW;AAClB;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AACa,IAAA,QAAQ;;AAEjB,IAAA,aAAa;;AAEb,IAAA,cAAc;;AAEd,IAAA,WAAW;;AAEX,IAAA,QAAQ;;AAER,IAAA,OAAO;;AAEP,IAAA,OAAO;;AAEP,IAAA,SAAS,GAAgD,MAAW,EAAE,CAAC;;AAEvE,IAAA,KAAK,GAAgD,MAAW,EAAE,CAAC;;AAEnE,IAAA,MAAM;;AAEN,IAAA,iBAAiB;;AAEjB,IAAA,MAAM;;AAEG,IAAA,eAAe;;AAExB,IAAA,aAAa;AACrB;;AC3GM,MAAM,cAAc,GAAG,MAAwB;AACpD,IAAA,MAAM,OAAO,GAAG,cAAc,EAAE;AAChC,IAAA,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM;AACpD,CAAC;AAEM,MAAM,sBAAsB,GAAmD;AACpF,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,6BAA6B;AACnC,QAAA,UAAU,EAAE,kBAAkB;AAC9B,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,EAAE,EAAE,gBAAgB;AACpB,YAAA,IAAI,EAAE,gBAAgB;AACvB,SAAA;AACF,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,UAAU,EAAE,YAAY;AACxB,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,EAAE,EAAE,gBAAgB;AACpB,YAAA,IAAI,EAAE,gBAAgB;AACvB,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,UAAU,EAAE,qBAAqB;AACjC,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,iBAAiB;AACvB,YAAA,EAAE,EAAE,iBAAiB;AACrB,YAAA,IAAI,EAAE,iBAAiB;AACxB,SAAA;AACF,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,IAAI,EAAE,eAAe;AACtB,SAAA;AACF,KAAA;CACF;;AC5CM,MAAM,cAAc,GAAG,GAAG,CAC/B;IACE,0EAA0E;IAC1E,mEAAmE;IACnE,yCAAyC;IACzC,eAAe;AAChB,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC;;MCiEA,eAAe,CAAA;IACnB,GAAG,GAAG,MAAM,EAAQ;IACpB,OAAO,GAAG,MAAM,EAAQ;IACxB,WAAW,GAAG,MAAM,EAAQ;IACnB,UAAU,GAAG,MAAM,EAAe;IAElC,KAAK,GAAG,KAAK,CAAa,EAAE;8EAAC;IAC7B,UAAU,GAAG,KAAK,CAAa,EAAE;mFAAC;IAClC,QAAQ,GAAG,KAAK,CAAU,KAAK;iFAAC;AAChC,IAAA,MAAM,GAAG,KAAK;0FAAiC;AAC/C,IAAA,YAAY,GAAG,KAAK;gGAAiC;IACrD,MAAM,GAAG,KAAK,CAAS,OAAO;+EAAC;IAC/B,SAAS,GAAG,KAAK,CAAU,IAAI;kFAAC;IAChC,aAAa,GAAG,KAAK,CAAU,IAAI;sFAAC;IACpC,cAAc,GAAG,KAAK,CAAU,IAAI;uFAAC;IACrC,aAAa,GAAG,KAAK,CAAU,IAAI;sFAAC;IACpC,aAAa,GAAG,KAAK,CAAU,IAAI;sFAAC;IACpC,WAAW,GAAG,KAAK,CAAU,KAAK;oFAAC;IACnC,WAAW,GAAG,KAAK,CAAU,KAAK;oFAAC;IACnC,OAAO,GAAG,KAAK,CAAgB,IAAI;gFAAC;IACpC,WAAW,GAAG,KAAK,CAAgB,IAAI;oFAAC;IACxC,cAAc,GAAG,KAAK,CAAU,KAAK;uFAAC;IACtC,WAAW,GAAG,KAAK,CAAU,KAAK;oFAAC;IACnC,QAAQ,GAAG,KAAK,CAAU,KAAK;iFAAC;IAChC,eAAe,GAAG,KAAK,CAAU,KAAK;wFAAC;IACvC,aAAa,GAAG,KAAK,CAAS,CAAC;sFAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAkB,cAAc,EAAE;iFAAC;IAEhD,YAAY,GAAG,YAAY,CAAC,qBAAqB;qFAAC;IAClD,aAAa,GAAG,YAAY,CAAC,sBAAsB;sFAAC;IACpD,YAAY,GAAG,YAAY,CAAC,qBAAqB;qFAAC;AAE9D,IAAA,QAAQ;IACI,aAAa,GAAG,SAAS,CAAC,eAAe,qFAAI,IAAI,EAAE,gBAAgB,EAAA,CAAG;IACtE,cAAc,GAAG,SAAS,CAAc,aAAa;uFAAC;AAEtD,IAAA,MAAM,GAAG,MAAM,EAAC,aAAmB,GAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,aAAa,EAAQ;AACvF,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAA,KAAK,GAAG,MAAM,EAAC,UAAuB,EAAC;AACvC,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,IAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChC,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACvC,IAAA,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAC3D,IAAA,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC;IAEvD,mBAAmB,GAAuB,IAAI;IAC9C,eAAe,GAAuB,IAAI;IAC1C,oBAAoB,GAAgB,IAAI;IACxC,qBAAqB,GAAwB,IAAI;IACjD,aAAa,GAAyC,IAAI;IAC1D,qBAAqB,GAAyC,IAAI;IAClE,sBAAsB,GAA0B,IAAI;IACpD,kBAAkB,GAAkB,IAAI;IACxC,kBAAkB,GAAG,KAAK;IAEf,SAAS,GAAG,MAAM,CAAC,KAAK;kFAAC;IACzB,oBAAoB,GAAG,MAAM,CAAC,KAAK;6FAAC;IACpC,iBAAiB,GAAG,MAAM,CAAC,KAAK;0FAAC;IACjC,kBAAkB,GAAG,MAAM,CAAC,KAAK;2FAAC;IAClC,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ;sFAAC;IAC/C,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;uFAAC;AACtD,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY;sFAAC;AAC1D,IAAA,mBAAmB,GAAG,QAAQ,CAC/C,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,QAAQ;4FACrE;AAEkB,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;4FAAC;AACzE,IAAA,eAAe,GAAG,QAAQ,CAC3C,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;wFACxE;IAEO,iBAAiB,GAAG,CAAC;IAEtB,kBAAkB,GAAA;QACvB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE;QACvC,IAAI,CAAC,SAAS,EAAE;YACd;QACF;QAEA,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAgB;QAC5F,IAAI,CAAC,QAAQ,EAAE;YACb;QACF;QAEA,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI,CAAC,iBAAiB,EAAE;YACpD;QACF;AACA,QAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,YAAY;QAE9C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;AACvE,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAClD;AAEO,IAAA,eAAe,CAAC,KAAY,EAAA;AACjC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;QAC1C,IAAI,CAAC,MAAM,EAAE;YACX;QACF;AAEA,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM;AAC5B,QAAA,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM;AAC/B,QAAA,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM;QAE/B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,GAAG,YAAY,IAAI,YAAY,GAAG,CAAC,CAAC;IAC3E;AAEmB,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM;AAC/C,QAAA,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM;IAC5C,CAAC;0FAAC;AAEiB,IAAA,0BAA0B,GAAG,QAAQ,CAAC,MAAK;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM;AAC/C,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,UAAU;IAC5E,CAAC;mGAAC;IAEiB,cAAc,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;uFAAC;IAE5F,oBAAoB,GAAG,QAAQ,CAAC,MACjD,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;6FACtE;IAEkB,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE;gGAAC;IAEvE,oBAAoB,GAAG,QAAQ,CAAC,MACjD,aAAa,CACX,kDAAkD,EAClD,IAAI,CAAC,uBAAuB,EAAE,GAAG,aAAa,GAAG,cAAc,CAChE;6FACF;IAEkB,kBAAkB,GAAG,QAAQ,CAAC,MAC/C,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;2FAClE;AAEkB,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AACrD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAC7C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAC7C,QAAA,MAAM,gBAAgB,GAAG,UAAU,IAAI,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,EAAE;QAE3G,OAAO,aAAa,CAClB,wDAAwD,EACxD,IAAI,CAAC,kBAAkB,EAAE,EACzB,gBAAgB,CACjB;IACH,CAAC;4FAAC;AAEiB,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AACpD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAC7C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAC7C,QAAA,MAAM,gBAAgB,GAAG,UAAU,IAAI,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,EAAE;;AAE3G,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,EAAE,GAAG,iBAAiB,GAAG,EAAE;AAErF,QAAA,OAAO,aAAa,CAClB,gDAAgD,EAChD,qBAAqB,EACrB,IAAI,CAAC,kBAAkB,EAAE,EACzB,gBAAgB,CACjB;IACH,CAAC;2FAAC;AAEiB,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAC9C,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;0FAC1E;AAEkB,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MACnD,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;+FACpF;IAEkB,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;yFAAC;AAEjE,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAClD,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;8FAClF;AAEkB,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAClD,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;8FAClF;IAEkB,mBAAmB,GAAG,QAAQ,CAAC,MAChD,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;4FACpE;IAEkB,mBAAmB,GAAG,QAAQ,CAAC,MAChD,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;4FACpE;IAEkB,eAAe,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;wFAAC;IAE/F,mBAAmB,GAAG,QAAQ,CAAC,MAChD,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;4FACpE;IAEkB,sBAAsB,GAAG,QAAQ,CAAC,MACnD,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;+FAC1E;AAEkB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAA+B;AAC3E,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACzB,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,MAAM,OAAO,GAA6C;AACxD,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,OAAO;SAChB;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;AAC5C,QAAA,OAAO,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,SAAS,IAAI,SAAS;IACtE,CAAC;wFAAC;IAEiB,mBAAmB,GAAG,QAAQ,CAAC,MAChD,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;4FACpE;AAEkB,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAClD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,KAAK,CAAC;QACxE;AACA,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;IACxB,CAAC;yFAAC;AAEiB,IAAA,uBAAuB,GAAG,QAAQ,CAAC,MAAK;AACzD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,IAAI,KAAK;QACjD;AACA,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE;IAC/B,CAAC;gGAAC;AAEiB,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;AACvD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC;QACvC;AACA,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE;IAC7B,CAAC;8FAAC;AAEiB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;QAC5C;AACA,QAAA,OAAO,IAAI,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI;IAC1D,CAAC;uFAAC;AAEiB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACzB,YAAA,OAAO,KAAK;QACd;AACA,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM;IAC9D,CAAC;uFAAC;AAEiB,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,aAAa,CACX,cAAc,EAAE,EAChB,IAAI,CAAC,mBAAmB,EAAE,GAAG,wBAAwB,GAAG,IAAI,EAC5D,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CACxD;gFACF;AAEkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE;AAClC,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,OAAO,GAAG,WAAW,CAAA,qBAAA,CAAuB,CAAC,IAAI,EAAE;QACrD;AACA,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC9B,YAAA,OAAO,GAAG,WAAW,CAAA,sBAAA,CAAwB,CAAC,IAAI,EAAE;QACtD;AACA,QAAA,OAAO,uBAAuB;IAChC,CAAC;oFAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AAC9B,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1B,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE;YACvC,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;YACjC;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,YAAA,IAAI,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBACjE,IAAI,CAAC,oBAAoB,EAAE;gBAC3B;YACF;AAEA,YAAA,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;gBACtF,IAAI,CAAC,mBAAmB,EAAE;YAC5B;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,cAAc,CAAC,MAAK;AACpD,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACpE,gBAAA,IAAI,cAAc,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE;oBACpD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY;gBACjE;AACF,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QAC/D;QAEA,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACpE,MAAM,OAAO,GAAG,cAAc,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAEhE,YAAA,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,EAAE;;gBAEvC,UAAU,CAAC,MAAM,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;YACzD;AAEA,YAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO;AACnC,QAAA,CAAC,CAAC;IACJ;IAEO,WAAW,GAAA;QAChB,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,0BAA0B,EAAE;AACjC,QAAA,IAAI,CAAC,sBAAsB,EAAE,UAAU,EAAE;QACzC,IAAI,CAAC,uBAAuB,EAAE;IAChC;IAEO,WAAW,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS;IACnC;IAEO,gBAAgB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa;IACjC;IAEO,qBAAqB,CAAI,SAAkB,EAAE,QAAmB,EAAA;AACrE,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;QACnC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC;QACzF;QACA,OAAO,MAAM,EAAE,eAAe,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAoB;IAC5E;IAEO,oBAAoB,CAAI,WAA2B,EAAE,OAAU,EAAA;AACpE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;QACnC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC;QACzF;QACA,OAAO,MAAM,EAAE,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAuB;IAC/E;IAEO,SAAS,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC3B;QACF;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;IACjB;IAEO,YAAY,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC3B;QACF;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACzB,IAAI,CAAC,mBAAmB,EAAE;QAC5B;IACF;IAEO,eAAe,GAAA;QACpB,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACpD,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACnB,IAAI,CAAC,mBAAmB,EAAE;QAC5B;IACF;IAEO,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IACzB;IAEO,KAAK,GAAA;QACV,IAAI,CAAC,mBAAmB,EAAE;IAC5B;IAEQ,cAAc,GAAA;QACpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACxC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,WAAW,GAAG,cAAc,EAAE;AACpC,QAAA,MAAM,aAAa,GAAG,WAAW,KAAK,MAAM,GAAG,uBAAuB,GAAG,uBAAuB;AAEhG,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;AACvC,YAAA,WAAW,EAAE,IAAI;YACjB,aAAa;AACb,YAAA,UAAU,EAAE,sBAAsB;AAClC,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;IACJ;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B;QACF;AAEA,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7B;QACF;QAEA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAE5D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;AAC5C,QAAA,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,aAAa;AAChD,QAAA,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC,WAAW;QAEnD,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC;AAEhE,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAK;YACnF,IAAI,CAAC,eAAe,EAAE;AACxB,QAAA,CAAC,CAAC;IACJ;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB;QACF;AAEA,QAAA,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE;AAC7C,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AAExB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;QAC5C,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,mBAAmB,IAAI,EAAE;QAE1D,IAAI,eAAe,EAAE;AACnB,YAAA,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACrD;AAEA,QAAA,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;QAExC,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAK;AACnC,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;gBAC9B;YACF;AAEA,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;QACzB,CAAC,EAAE,0BAA0B,CAAC;IAChC;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB;QACF;AAEA,QAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;IAC3B;IAEQ,2BAA2B,GAAA;AACjC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB;AACzC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,QAAA,IAAI,SAAS,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;YAC3F;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;AACrC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY;;AAGnC,QAAA,IAAI,SAAS,KAAK,SAAS,EAAE;YAC3B;QACF;QAEA,IAAI,CAAC,0BAA0B,EAAE;QAEjC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,SAAS,IAAI;QACpC,KAAK,IAAI,CAAC,YAAY;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC;;QAG1C,qBAAqB,CAAC,MAAK;YACzB,qBAAqB,CAAC,MAAK;gBACzB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,SAAS,IAAI;AACtC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,MAAK;AAC3C,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC;AAC7C,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;AACtB,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;AACnC,QAAA,CAAC,EAAE,+BAA+B,GAAG,EAAE,CAAC;IAC1C;IAEQ,0BAA0B,GAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC/B;QACF;AAEA,QAAA,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACxC,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;IACnC;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;QAE5C,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,oBAAoB,EAAE;YACrD,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC;QAC3E;QAEA,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACtD,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC;QAC/C;AAEA,QAAA,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;AAC3C,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;AAClC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QACjC;AAEA,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAEhC,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE;AACxC,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;QACnC;IACF;uGA1hBW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EARf,CAAC,aAAa,CAAC,oEAoCqB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACpB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACvB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAGE,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1GxF,+hjBAidA,EAAA,MAAA,EAAA,CAAA,kpDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED9ZI,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,gBAAgB,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEd,iBAAiB,mfACjB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,WAAW,EAAA,QAAA,EAAA,qDAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGX,aAAa,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EANb,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAIhB,aAAa,6CACb,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAcJ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAzB3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,OAAA,EACV;wBACP,gBAAgB;wBAChB,gBAAgB;wBAChB,cAAc;wBACd,gBAAgB;wBAChB,iBAAiB;wBACjB,kBAAkB;wBAClB,WAAW;wBACX,aAAa;wBACb,aAAa;wBACb,aAAa;qBACd,EAAA,UAAA,EACW,IAAI,aAGL,CAAC,aAAa,CAAC,EAAA,eAAA,EACT,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,eAAe,EAAE,kBAAkB;AACpC,qBAAA,EAAA,QAAA,EACS,QAAQ,EAAA,QAAA,EAAA,+hjBAAA,EAAA,MAAA,EAAA,CAAA,kpDAAA,CAAA,EAAA;AA8B6B,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,qBAAqB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACpB,sBAAsB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACvB,qBAAqB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAGvB,eAAe,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,sEAC7B,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AElG1E,IAAa,SAAS,GAAtB,MAAa,SAAS,CAAA;AAUD,IAAA,WAAA;AACA,IAAA,OAAA;AACA,IAAA,kBAAA;AACqB,IAAA,WAAA;AAZvB,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;IACxC,UAAU,GAAG,KAAK;AAClB,IAAA,OAAO;IAER,iBAAiB,GAAa,IAAI;IACzB,OAAO,GAAG,MAAM,CAAC,KAAK;gFAAC;AACvB,IAAA,WAAW,GAAG,IAAI,YAAY,EAAiB;AAE/D,IAAA,WAAA,CACmB,WAAwB,EACxB,OAA4B,EAC5B,kBAAyC,EACpB,WAAmB,EAAA;QAHxC,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QACG,IAAA,CAAA,WAAW,GAAX,WAAW;AAEjD,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC1F,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;AAElF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,KAAK,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AAC/E,YAAA,IAAI,CAAC;AACF,iBAAA,aAAa;AACb,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;iBAC9B,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACnB,oBAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC;gBAC3C;AACF,YAAA,CAAC,CAAC;QACN;AAEA,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACvC,YAAA,SAAS,CAAgB,QAAQ,EAAE,SAAS;iBACzC,IAAI,CACH,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,EACvC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;iBAE1B,SAAS,CAAC,MAAK;;AAEd,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE;AACnD,oBAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC;gBAC3C;AACF,YAAA,CAAC,CAAC;QACN;IACF;AAEO,IAAA,UAAU,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;AAEO,IAAA,KAAK,CAAC,MAAU,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE;AAE/B,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACvC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE;AAC9D,YAAA,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;AACxC,YAAA,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,WAAW;YAC5C,IAAI,eAAe,EAAE;AACnB,gBAAA,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC;YACrD;QACF;QAEA,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,EAAE;AAC1C,gBAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,EAAE;YAC5C;YAEA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAEnC,YAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;AAE3B,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC1B,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3B;QACF,CAAC,EAAE,0BAA0B,CAAC;IAChC;AAEQ,IAAA,QAAQ,CAAC,MAA2B,EAAA;AAC1C,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB;QACF;AAEA,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACtB,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;SAC/B,CAAC,MAAM,CAAC;AAET,QAAA,IAAI,OAAO,YAAY,YAAY,EAAE;YACnC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACzC;QACF;AAEA,QAAA,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;YACjC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAM;AAC9D,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAC7B;QACF;QAEA,IAAI,CAAC,KAAK,EAAE;IACd;IAEQ,oBAAoB,GAAA;QAC1B,OAAO,IAAI,CAAC,iBAAsB;IACpC;AAEQ,IAAA,gBAAgB,CAAC,MAAS,EAAA;AAChC,QAAA,IAAI,MAAM,KAAK,KAAK,EAAE;AACpB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACpB;IACF;;AAlHW,SAAS,GAAA,UAAA,CAAA;AAajB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,WAAW,CAAC,CAAA;+CAFM,aAAa;QACF,eAAe,EAAA,MAAA,CAAA;AAZ3C,CAAA,EAAA,SAAS,CAmHrB;;MC9GY,aAAa,CAAA;AACP,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAA,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACvC,IAAA,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAExD,IAAA,MAAM,CAAO,MAA2B,EAAA;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAO,MAAM,CAAC,QAAmB,EAAE,MAAM,CAAC;IAC7D;AAEO,IAAA,IAAI,CAAc,OAAgC,EAAA;QACvD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5C;AAEO,IAAA,IAAI,CAAc,OAAgC,EAAA;QACvD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5C;AAEO,IAAA,OAAO,CAAc,OAAgC,EAAA;QAC1D,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC;IAC/C;AAEO,IAAA,MAAM,CAAc,OAAgC,EAAA;QACzD,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC9C;IAEQ,aAAa,CAAI,IAAuB,EAAE,OAAgC,EAAA;AAChF,QAAA,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC;AAC/C,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AAE9B,QAAA,MAAM,MAAM,GAA8B;YACxC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC1B,YAAA,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,yBAAyB,CAAC,EAAE;AACnF,YAAA,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,wBAAwB,CAAC,EAAE;AAC1F,YAAA,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,UAAU,CAAC,aAAa;YAClE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,aAAa,KAAK,QAAQ,GAAG,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;YAC7G,aAAa,EAAE,OAAO,CAAC,aAAa;AACpC,YAAA,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;AAC5C,YAAA,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO;AACjC,YAAA,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,IAAI;YAC9B,SAAS,EAAE,MAAM,OAAO,CAAC,SAAS,IAAI;SACvC;AAED,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B;IAEQ,KAAK,CAAO,sBAA4C,EAAE,MAA2B,EAAA;QAC3F,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAE9C,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,OAAO,IAAI,SAAS,CAClB,SAAmC,EACnC,MAAM,EACN,SAA6C,EAC7C,IAAI,CAAC,WAAW,CACjB;QACH;QAEA,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAO,UAAU,EAAE,MAAM,CAAC;AAC3E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAO,sBAAsB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,CAAC;AAE3G,QAAA,OAAO,QAAQ;IACjB;AAEQ,IAAA,cAAc,CAAO,MAA2B,EAAA;QACtD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACxC,YAAA,OAAO,SAAS;QAClB;QAEA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,IAAI,cAAc,EAAE;AACvD,QAAA,MAAM,aAAa,GAAG,WAAW,KAAK,MAAM,GAAG,uBAAuB,GAAG,uBAAuB;AAChG,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;AACnD,YAAA,WAAW,EAAE,IAAI;YACjB,aAAa;AACb,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC;AAC9C,QAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC;AAE9C,QAAA,OAAO,UAAU;IACnB;IAEQ,qBAAqB,CAAO,UAAuB,EAAE,MAA2B,EAAA;AACtF,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,EAAE,IAAI,CAAC,SAAS;YACtB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC1D,SAAA,CAAC;AAEF,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAwB,eAAe,EAAE;YAC7E,QAAQ;YACR,gBAAgB,EAAE,MAAM,CAAC,iBAAiB;AAC3C,SAAA,CAAC;QAEF,OAAO,YAAY,CAAC,QAAQ;IAC9B;AAEQ,IAAA,mBAAmB,CACzB,sBAA4C,EAC5C,cAAqC,EACrC,UAAuB,EACvB,MAA2B,EAAA;AAE3B,QAAA,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAI,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC;AACvF,QAAA,cAAc,CAAC,QAAQ,GAAG,QAAQ;AAElC,QAAA,IAAI,sBAAsB,YAAY,WAAW,EAAE;YACjD,cAAc,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAO,CAAC;AAC9E,YAAA,OAAO,QAAQ;QACjB;AAEA,QAAA,IAAI,OAAO,sBAAsB,KAAK,QAAQ,EAAE;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAO,QAAQ,EAAE,MAAM,CAAC;YAC7D,MAAM,UAAU,GAAG,cAAc,CAAC,qBAAqB,CAAI,sBAAsB,EAAE,QAAQ,CAAC;YAE5F,IAAI,UAAU,EAAE;AACd,gBAAA,QAAQ,CAAC,iBAAiB,GAAG,UAAU,CAAC,QAAQ;YAClD;QACF;AAEA,QAAA,OAAO,QAAQ;IACjB;IAEQ,eAAe,CAAO,QAAsB,EAAE,MAA2B,EAAA;QAC/E,OAAO,QAAQ,CAAC,MAAM,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,SAAS;AACtB,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE;gBAC1C,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE;AAClD,aAAA;AACF,SAAA,CAAC;IACJ;uGAxIW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACbD;;AAEG;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shival99/z-ui",
3
- "version": "2.6.11",
3
+ "version": "2.6.12",
4
4
  "description": "Z-UI: Modern Angular UI Component Library - A comprehensive, high-performance design system built with Angular 22, featuring 45+ customizable components with dark mode, accessibility, and enterprise-ready features.",
5
5
  "keywords": [
6
6
  "angular",
@@ -287,7 +287,7 @@ declare class ZAutocompleteComponent<T = unknown> implements OnInit, ControlValu
287
287
 
288
288
  declare const zAutocompleteInputVariants: (props?: ({
289
289
  zSize?: "sm" | "default" | "lg" | null | undefined;
290
- zStatus?: "default" | "open" | "error" | "disabled" | "readonly" | null | undefined;
290
+ zStatus?: "default" | "error" | "disabled" | "readonly" | "open" | null | undefined;
291
291
  } & class_variance_authority_types.ClassProp) | undefined) => string;
292
292
  type ZAutocompleteInputVariants = VariantProps<typeof zAutocompleteInputVariants>;
293
293
  declare const zAutocompleteOptionVariants: (props?: ({
@@ -435,16 +435,16 @@ declare class ZCalendarComponent implements OnInit, ControlValueAccessor {
435
435
 
436
436
  declare const zCalendarVariants: (props?: ({
437
437
  zSize?: "sm" | "default" | "lg" | null | undefined;
438
- zStatus?: "default" | "disabled" | "open" | "error" | "readonly" | null | undefined;
438
+ zStatus?: "default" | "disabled" | "readonly" | "open" | "error" | null | undefined;
439
439
  } & class_variance_authority_types.ClassProp) | undefined) => string;
440
440
  declare const zCalendarDayVariants: (props?: ({
441
- state?: "default" | "today" | "selected" | "inRange" | "rangeStart" | "rangeEnd" | "rangeSingle" | "disabled" | "otherMonth" | "hovered" | null | undefined;
441
+ state?: "default" | "disabled" | "today" | "selected" | "inRange" | "rangeStart" | "rangeEnd" | "rangeSingle" | "otherMonth" | "hovered" | null | undefined;
442
442
  } & class_variance_authority_types.ClassProp) | undefined) => string;
443
443
  declare const zCalendarMonthVariants: (props?: ({
444
- state?: "default" | "selected" | "disabled" | "current" | null | undefined;
444
+ state?: "default" | "current" | "disabled" | "selected" | null | undefined;
445
445
  } & class_variance_authority_types.ClassProp) | undefined) => string;
446
446
  declare const zCalendarYearVariants: (props?: ({
447
- state?: "default" | "selected" | "disabled" | "current" | null | undefined;
447
+ state?: "default" | "current" | "disabled" | "selected" | null | undefined;
448
448
  } & class_variance_authority_types.ClassProp) | undefined) => string;
449
449
 
450
450
  export { ZCalendarComponent, zCalendarDayVariants, zCalendarMonthVariants, zCalendarVariants, zCalendarYearVariants };
@@ -189,7 +189,7 @@ declare class ZGalleryComponent implements AfterViewInit {
189
189
  protected readonly headerControlHeight: _angular_core.Signal<"1.75rem" | "2rem" | "2.5rem" | "2.25rem">;
190
190
  protected readonly skeletonMediaHeight: _angular_core.Signal<"9rem" | "14rem" | "11rem">;
191
191
  protected readonly toggleIconSize: _angular_core.Signal<"14" | "16" | "20" | "18">;
192
- protected readonly searchInputSize: _angular_core.Signal<"default" | "sm" | "lg">;
192
+ protected readonly searchInputSize: _angular_core.Signal<"sm" | "default" | "lg">;
193
193
  protected readonly filteredFiles: _angular_core.Signal<ZGalleryFile[]>;
194
194
  protected readonly selectedIds: _angular_core.Signal<Set<string>>;
195
195
  protected readonly isAllSelected: _angular_core.Signal<boolean>;
@@ -415,16 +415,16 @@ declare const isPreviewable: (file: ZGalleryFile) => boolean;
415
415
  declare const isImage: (file: ZGalleryFile) => boolean;
416
416
 
417
417
  declare const zGalleryVariants: (props?: ({
418
- zSize?: "default" | "sm" | "lg" | null | undefined;
418
+ zSize?: "sm" | "default" | "lg" | null | undefined;
419
419
  } & class_variance_authority_types.ClassProp) | undefined) => string;
420
420
  type ZGalleryVariants = VariantProps<typeof zGalleryVariants>;
421
421
  declare const zGalleryItemVariants: (props?: ({
422
422
  zMode?: "grid" | "list" | null | undefined;
423
- zSize?: "default" | "sm" | "lg" | null | undefined;
423
+ zSize?: "sm" | "default" | "lg" | null | undefined;
424
424
  } & class_variance_authority_types.ClassProp) | undefined) => string;
425
425
  type ZGalleryItemVariants = VariantProps<typeof zGalleryItemVariants>;
426
426
  declare const zGalleryFileIconVariants: (props?: ({
427
- zSize?: "default" | "sm" | "lg" | null | undefined;
427
+ zSize?: "sm" | "default" | "lg" | null | undefined;
428
428
  zMode?: "grid" | "list" | null | undefined;
429
429
  } & class_variance_authority_types.ClassProp) | undefined) => string;
430
430
  type ZGalleryFileIconVariants = VariantProps<typeof zGalleryFileIconVariants>;
@@ -1,6 +1,7 @@
1
+ import * as _shival99_z_ui_components_z_icon from '@shival99/z-ui/components/z-icon';
2
+ import { ZIcon } from '@shival99/z-ui/components/z-icon';
1
3
  import * as _angular_core from '@angular/core';
2
4
  import { Type, TemplateRef, WritableSignal, EventEmitter, ViewContainerRef, OnDestroy, AfterViewChecked, Injector, ComponentRef, EmbeddedViewRef, InjectionToken } from '@angular/core';
3
- import { ZIcon } from '@shival99/z-ui/components/z-icon';
4
5
  import { ClassValue } from 'clsx';
5
6
  import { NgScrollbar } from 'ngx-scrollbar';
6
7
  import { Observable } from 'rxjs';
@@ -10,16 +11,23 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
10
11
  type ZModalContentType<T> = Type<T> | TemplateRef<T> | string;
11
12
  type ZModalOnClickCallBack<T> = (instance: T, modalRef?: unknown) => false | void | object;
12
13
  type ZModalConfirmType = 'show' | 'info' | 'warning' | 'danger';
14
+ type ZModalConfirmStyle = 'default' | 'dialog';
13
15
  interface ZModalConfirmOptions<U = unknown> {
14
16
  zTitle: string;
15
17
  zContent?: string;
16
18
  zIcon?: ZIcon;
19
+ /** Optional icon for the confirm action button */
20
+ zOkIcon?: ZIcon;
21
+ /** Overrides the preset action color with destructive styling */
22
+ zOkDestructive?: boolean;
17
23
  zOkText?: string;
18
24
  zCancelText?: string | null;
19
25
  /** Callback when OK is clicked. Return false to prevent auto-close */
20
26
  zOnOk?: () => void | false | Promise<void>;
21
27
  zOnCancel?: () => void;
22
28
  zMaskClosable?: boolean;
29
+ /** Optional confirm layout style. The dialog style uses a bordered header/footer layout. */
30
+ zConfirmStyle?: ZModalConfirmStyle;
23
31
  /** Modal width. In service mode this is applied as the minimum width to allow content to expand naturally. */
24
32
  zWidth?: string;
25
33
  zData?: U;
@@ -63,6 +71,8 @@ declare class ZModalOptions<T, U> {
63
71
  zClosable?: boolean;
64
72
  /** Confirm type for preset styling (show, info, warning, danger) */
65
73
  zConfirmType?: 'show' | 'info' | 'warning' | 'danger';
74
+ /** Confirm layout style. The dialog style uses a bordered header/footer layout. */
75
+ zConfirmStyle?: ZModalConfirmStyle;
66
76
  /** Icon for the confirm modal */
67
77
  zConfirmIcon?: ZIcon;
68
78
  /** Modal content - can be a component, template, or string */
@@ -228,6 +238,7 @@ declare class ZModalComponent<T, U> implements OnDestroy, AfterViewChecked {
228
238
  protected readonly isServiceMode: _angular_core.Signal<boolean>;
229
239
  protected readonly isTemplateMode: _angular_core.Signal<boolean>;
230
240
  protected readonly isConfirmMode: _angular_core.Signal<boolean>;
241
+ protected readonly isDialogConfirmMode: _angular_core.Signal<boolean>;
231
242
  protected readonly shouldRenderContent: _angular_core.Signal<boolean>;
232
243
  protected readonly isStringContent: _angular_core.Signal<boolean>;
233
244
  private _lastScrollHeight;
@@ -235,6 +246,7 @@ declare class ZModalComponent<T, U> implements OnDestroy, AfterViewChecked {
235
246
  private _checkScrollState;
236
247
  onContentScroll(event: Event): void;
237
248
  protected readonly confirmIconColors: _angular_core.Signal<ZModalConfirmIconColors>;
249
+ protected readonly effectiveConfirmDialogIcon: _angular_core.Signal<_shival99_z_ui_components_z_icon.ZIcon>;
238
250
  protected readonly effectiveTitle: _angular_core.Signal<string | TemplateRef<unknown> | undefined>;
239
251
  protected readonly effectiveDescription: _angular_core.Signal<string | TemplateRef<unknown> | undefined>;
240
252
  protected readonly hasEffectiveDescription: _angular_core.Signal<boolean>;
@@ -252,7 +264,7 @@ declare class ZModalComponent<T, U> implements OnDestroy, AfterViewChecked {
252
264
  protected readonly effectiveOkText: _angular_core.Signal<string | null | undefined>;
253
265
  protected readonly effectiveCancelText: _angular_core.Signal<string | null | undefined>;
254
266
  protected readonly effectiveOkDestructive: _angular_core.Signal<boolean | undefined>;
255
- protected readonly effectiveTypeOk: _angular_core.Signal<"info" | "warning" | "error" | "link" | "default" | "primary" | "secondary" | "destructive" | "destructive-heartbeat" | "success" | "outline" | "outline-primary" | "outline-secondary" | "outline-success" | "outline-info" | "outline-warning" | "outline-error" | "outline-destructive" | "outline-shimmer" | "outline-success-secondary" | "outline-info-secondary" | "outline-warning-secondary" | "outline-error-secondary" | "outline-destructive-secondary" | "outline-primary-secondary" | "outline-primary-soft" | "outline-success-soft" | "outline-info-soft" | "outline-warning-soft" | "outline-error-soft" | "outline-destructive-soft" | "outline-primary-soft-border" | "outline-success-soft-border" | "outline-info-soft-border" | "outline-warning-soft-border" | "outline-error-soft-border" | "outline-destructive-soft-border" | "ghost" | "ghost-primary" | "ghost-success" | "ghost-info" | "ghost-warning" | "ghost-error" | "ghost-destructive" | "subtle" | "subtle-primary" | "subtle-success" | "subtle-info" | "subtle-warning" | "subtle-destructive" | "subtle-outline" | "subtle-primary-outline" | "subtle-success-outline" | "subtle-info-outline" | "subtle-warning-outline" | "subtle-destructive-outline" | null | undefined>;
267
+ protected readonly effectiveTypeOk: _angular_core.Signal<"info" | "warning" | "default" | "error" | "primary" | "secondary" | "destructive" | "destructive-heartbeat" | "success" | "outline" | "outline-primary" | "outline-secondary" | "outline-success" | "outline-info" | "outline-warning" | "outline-error" | "outline-destructive" | "outline-shimmer" | "outline-success-secondary" | "outline-info-secondary" | "outline-warning-secondary" | "outline-error-secondary" | "outline-destructive-secondary" | "outline-primary-secondary" | "outline-primary-soft" | "outline-success-soft" | "outline-info-soft" | "outline-warning-soft" | "outline-error-soft" | "outline-destructive-soft" | "outline-primary-soft-border" | "outline-success-soft-border" | "outline-info-soft-border" | "outline-warning-soft-border" | "outline-error-soft-border" | "outline-destructive-soft-border" | "ghost" | "ghost-primary" | "ghost-success" | "ghost-info" | "ghost-warning" | "ghost-error" | "ghost-destructive" | "subtle" | "subtle-primary" | "subtle-success" | "subtle-info" | "subtle-warning" | "subtle-destructive" | "subtle-outline" | "subtle-primary-outline" | "subtle-success-outline" | "subtle-info-outline" | "subtle-warning-outline" | "subtle-destructive-outline" | "link" | null | undefined>;
256
268
  protected readonly effectiveOkDisabled: _angular_core.Signal<boolean | undefined>;
257
269
  protected readonly effectiveLoading: _angular_core.Signal<boolean>;
258
270
  protected readonly effectiveContentLoading: _angular_core.Signal<boolean>;
@@ -309,4 +321,4 @@ declare const Z_MODAL_DATA: InjectionToken<any>;
309
321
  declare const zModalVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
310
322
 
311
323
  export { ZModalComponent, ZModalContentDirective, ZModalFooterDirective, ZModalHeaderDirective, ZModalOptions, ZModalRef, ZModalService, Z_MODAL_DATA, zModalVariants };
312
- export type { ZModalConfirmOptions, ZModalConfirmType, ZModalContentType, ZModalOnClickCallBack };
324
+ export type { ZModalConfirmOptions, ZModalConfirmStyle, ZModalConfirmType, ZModalContentType, ZModalOnClickCallBack };