{"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.types.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 { type ComponentType } from '@angular/cdk/overlay';\nimport {\n  type EventEmitter,\n  InjectionToken,\n  type TemplateRef,\n  type Type,\n  type ViewContainerRef,\n  type WritableSignal,\n} from '@angular/core';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\nimport type { ClassValue } from 'clsx';\nimport type { Observable } from 'rxjs';\n\nexport type ZModalContentType<T> = ComponentType<T> | TemplateRef<T> | string;\nexport const Z_MODAL_DATA = new InjectionToken<any>('Z_MODAL_DATA');\nexport const Z_MODAL_ANIMATION_DURATION = 200;\nexport enum ZModalTriggerAction {\n  CANCEL = 'cancel',\n  OK = 'ok',\n}\n\nexport type ZModalOnClickCallBack<T> = (instance: T, modalRef?: unknown) => false | void | object;\nexport type ZModalConfirmType = 'show' | 'info' | 'warning' | 'danger';\n\nconst noopFun = (): void => {};\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> = noopFun;\n  /** Callback or EventEmitter when OK is clicked */\n  public zOnOk?: EventEmitter<T> | ZModalOnClickCallBack<T> = noopFun;\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\nexport interface ZModalConfirmOptions<U = unknown> {\n  zTitle: string;\n  zContent?: string;\n  zIcon?: ZIcon;\n  zOkText?: string;\n  zCancelText?: string | null;\n  /** Callback when OK is clicked. Return false to prevent auto-close */\n  zOnOk?: () => void | false | Promise<void>;\n  zOnCancel?: () => void;\n  zMaskClosable?: boolean;\n  /** Modal width. In service mode this is applied as the minimum width to allow content to expand naturally. */\n  zWidth?: string;\n  zData?: U;\n}\n\nexport interface ZModalConfirmIconColors {\n  ring: string;\n  bg: string;\n  icon: string;\n}\n\nexport interface ZModalConfirmConfig {\n  icon: ZIcon;\n  okDestructive?: boolean;\n  colors: ZModalConfirmIconColors;\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-[50%] 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 { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport {\n  BasePortalOutlet,\n  CdkPortalOutlet,\n  type ComponentPortal,\n  PortalModule,\n  TemplatePortal,\n} from '@angular/cdk/portal';\nimport { 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  input,\n  model,\n  OnDestroy,\n  output,\n  PLATFORM_ID,\n  signal,\n  type TemplateRef,\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 { 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 { ZModalRef } from './z-modal.ref';\nimport { Z_MODAL_ANIMATION_DURATION, ZModalOptions } from './z-modal.types';\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    PortalModule,\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> extends BasePortalOutlet 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  public readonly portalOutlet = viewChild(CdkPortalOutlet);\n  protected readonly dummyTemplateRef = viewChild<TemplateRef<unknown>>('dummyTemplate');\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 _overlay = inject(Overlay);\n  private readonly _viewContainerRef = inject(ViewContainerRef);\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: OverlayRef | 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\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    zMergeClasses('relative flex min-h-[12.5rem] flex-col gap-4 px-4 py-4', this.effectiveBodyClass())\n  );\n\n  protected readonly serviceBodyClasses = computed(() =>\n    zMergeClasses('flex min-h-0 flex-col gap-4 px-4 py-4', this.effectiveBodyClass())\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.portalOutlet()?.hasAttached();\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    super();\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\n  public ngOnDestroy(): void {\n    this._clearCloseTimeout();\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<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n    this._cdr.detectChanges();\n    const outlet = this.portalOutlet();\n    if (outlet?.hasAttached()) {\n      throw new Error('Attempting to attach modal content after content is already attached');\n    }\n    return outlet?.attachComponentPortal(portal) as ComponentRef<T>;\n  }\n\n  public attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n    const outlet = this.portalOutlet();\n    if (outlet?.hasAttached()) {\n      throw new Error('Attempting to attach modal content after content is already attached');\n    }\n    return outlet?.attachTemplatePortal(portal) 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(): OverlayRef | 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    const overlayConfig = new OverlayConfig({\n      hasBackdrop: true,\n      backdropClass,\n      panelClass: 'z-modal-overlay-pane',\n      positionStrategy: this._overlay.position().global(),\n      scrollStrategy: this._overlay.scrollStrategies.block(),\n    });\n\n    return this._overlay.create(overlayConfig);\n  }\n\n  private _openTemplateOverlay(): void {\n    if (this._templateOverlayRef) {\n      return;\n    }\n\n    const dummyRef = this.dummyTemplateRef();\n    if (!dummyRef) {\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    const portal = new TemplatePortal(dummyRef, this._viewContainerRef);\n    this._templateOverlayRef.attach(portal);\n\n    const overlayPane = this._templateOverlayRef.overlayElement;\n    overlayPane.style.position = 'static';\n    overlayPane.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 _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","<!-- Dummy template to trigger CDK backdrop creation -->\n<ng-template #dummyTemplate />\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    @if (!effectiveContentLoading()) {\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          <ng-template cdkPortalOutlet />\n\n          @if (isStringContent()) {\n            <div data-testid=\"z-modal-content\" [innerHTML]=\"$any(config.zContent) | zSafeHtml\"></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    } @else {\n      <div class=\"flex h-[12.5rem] flex-col gap-4 px-4 py-4\">\n        <z-skeleton class=\"h-full\" [zRows]=\"effectiveSkeletonRows()\" />\n      </div>\n    }\n  }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { isPlatformBrowser } from '@angular/common';\nimport { EventEmitter, Inject, PLATFORM_ID, signal } from '@angular/core';\nimport { filter, fromEvent, Subject, takeUntil } from 'rxjs';\nimport { ZModalComponent } from './z-modal.component';\nimport { Z_MODAL_ANIMATION_DURATION, ZModalOptions, ZModalTriggerAction } from './z-modal.types';\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: OverlayRef,\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        .outsidePointerEvents()\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          if (!this.loading()) {\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\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      if (this._overlayRef) {\n        if (this._overlayRef.hasAttached()) {\n          this._overlayRef.detachBackdrop();\n        }\n        this._overlayRef.dispose();\n      }\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 { type ComponentType, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, Injector, PLATFORM_ID, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { ZOverlayZIndexService, ZTranslateService } from '@shival99/z-ui/services';\nimport { ZModalComponent } from './z-modal.component';\nimport { ZModalRef } from './z-modal.ref';\nimport {\n  Z_MODAL_DATA,\n  ZModalConfirmOptions,\n  ZModalConfirmType,\n  ZModalContentType,\n  ZModalOptions,\n} 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 _overlay = inject(Overlay);\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 ComponentType<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 OverlayRef,\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>): OverlayRef | 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 overlayConfig = new OverlayConfig({\n      hasBackdrop: true,\n      backdropClass,\n      positionStrategy: this._overlay.position().global(),\n    });\n\n    const overlayRef = this._overlay.create(overlayConfig);\n\n    this._zIndexService.applyToOverlay(overlayRef);\n    this._zIndexService.deferMoveToTop(overlayRef);\n\n    return overlayRef;\n  }\n\n  private _attachModalContainer<T, U>(overlayRef: OverlayRef, config: ZModalOptions<T, U>) {\n    const injector = Injector.create({\n      parent: this._injector,\n      providers: [\n        { provide: OverlayRef, useValue: overlayRef },\n        { provide: ZModalOptions, useValue: config },\n      ],\n    });\n\n    const containerPortal = new ComponentPortal<ZModalComponent<T, U>>(\n      ZModalComponent,\n      config.zViewContainerRef,\n      injector\n    );\n    const containerRef = overlayRef.attach<ZModalComponent<T, U>>(containerPortal);\n\n    return containerRef.instance;\n  }\n\n  private _attachModalContent<T, U>(\n    componentOrTemplateRef: ZModalContentType<T>,\n    modalContainer: ZModalComponent<T, U>,\n    overlayRef: OverlayRef,\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(\n        new TemplatePortal<T>(componentOrTemplateRef, null as unknown as ViewContainerRef, { modalRef } as T)\n      );\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>(\n        new ComponentPortal(componentOrTemplateRef, config.zViewContainerRef, injector)\n      );\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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"}