{"version":3,"file":"ngneat-dialog.mjs","sources":["../../../../libs/dialog/src/lib/dialog-ref.ts","../../../../libs/dialog/src/lib/dialog.utils.ts","../../../../libs/dialog/src/lib/draggable.directive.ts","../../../../libs/dialog/src/lib/providers.ts","../../../../libs/dialog/src/lib/dialog.component.ts","../../../../libs/dialog/src/lib/dialog.service.ts","../../../../libs/dialog/src/lib/dialog-close.directive.ts","../../../../libs/dialog/src/lib/close-all-dialogs.directive.ts","../../../../libs/dialog/src/ngneat-dialog.ts"],"sourcesContent":["import { ComponentRef, TemplateRef } from '@angular/core';\nimport { from, merge, Observable, of, Subject } from 'rxjs';\nimport { defaultIfEmpty, filter, first } from 'rxjs/operators';\n\nimport { DialogConfig, GlobalDialogConfig, JustProps, GuardTrigger } from './types';\nimport { DragOffset } from './draggable.directive';\n\ntype GuardFN<R> = (result?: R) => Observable<boolean> | Promise<boolean> | boolean;\n\nexport abstract class DialogRef<\n  Data = any,\n  Result = any,\n  Ref extends ComponentRef<any> | TemplateRef<any> = ComponentRef<any> | TemplateRef<any>,\n> {\n  ref: Ref;\n  data: Data;\n  id: string;\n  backdropClick$: Observable<MouseEvent>;\n  afterClosed$: Observable<Result | undefined>;\n\n  abstract close(result?: Result): void;\n  abstract beforeClose(guard: GuardFN<Result>): void;\n  abstract resetDrag(offset?: DragOffset): void;\n  abstract updateConfig(config: Partial<DialogConfig>): void;\n}\n\ntype InternalDialogRefProps = Partial<\n  Omit<JustProps<InternalDialogRef>, 'id' | 'data'> & Pick<InternalDialogRef, 'onClose' | 'onReset'>\n>;\n\nexport class InternalDialogRef extends DialogRef {\n  config: DialogConfig & GlobalDialogConfig;\n  backdropClick$: Subject<MouseEvent>;\n  beforeCloseGuards: GuardFN<unknown>[] = [];\n  onClose: (result?: unknown) => void;\n  onReset: (offset?: DragOffset) => void;\n  private activeGuardTrigger?: GuardTrigger;\n\n  constructor(props: InternalDialogRefProps = {}) {\n    super();\n    this.mutate(props);\n  }\n\n  close(result?: unknown, action: GuardTrigger = 'closeButton'): void {\n    this.activeGuardTrigger = action;\n\n    this.canClose(result)\n      .pipe(filter<boolean>(Boolean))\n      .subscribe({ next: () => this.onClose(result) });\n  }\n\n  beforeClose(guard: GuardFN<unknown>) {\n    this.beforeCloseGuards.push(guard);\n  }\n\n  resetDrag(offset?: DragOffset) {\n    this.onReset(offset);\n  }\n\n  canClose(result: unknown): Observable<boolean> {\n    const shouldRunGuards = this.shouldRunGuards();\n\n    if (!shouldRunGuards) {\n      // skip checks, close the dialog right away\n      return of(true);\n    }\n\n    const guards$ = this.beforeCloseGuards\n      .map((guard) => guard(result))\n      .filter((value) => value !== undefined && value !== true)\n      .map((value) => {\n        return typeof value === 'boolean' ? of(value) : from(value).pipe(filter((canClose) => !canClose));\n      });\n\n    return merge(...guards$).pipe(defaultIfEmpty(true), first());\n  }\n\n  private shouldRunGuards(): boolean {\n    const { guardTrigger } = this.config;\n    // we want to make sure that user already using a guard but NOT using the guardTrigger type, that their checks still run\n    if (!guardTrigger || guardTrigger === 'all') {\n      return true;\n    }\n\n    //else, if the user has provided a guardTrigger, only run it if it matches the guardTrigger\n    return guardTrigger === this.activeGuardTrigger;\n  }\n\n  mutate(props: InternalDialogRefProps) {\n    Object.assign(this, props);\n    this.data = this.config.data;\n    this.id = this.config.id;\n  }\n\n  updateConfig(config: Partial<DialogConfig & GlobalDialogConfig>) {\n    this.mutate({\n      config: {\n        ...this.config,\n        ...config,\n      },\n    });\n  }\n\n  asDialogRef(): DialogRef {\n    return this;\n  }\n}\n","function isNil(value: unknown): value is undefined | null {\n  return value === undefined || value === null;\n}\n\nfunction isString(value: unknown): value is string {\n  return typeof value === 'string';\n}\n\nexport function coerceCssPixelValue(value: any): string {\n  if (isNil(value)) {\n    return '';\n  }\n\n  return isString(value) ? value : `${value}px`;\n}\n","import { AfterViewInit, Directive, ElementRef, inject, Input, NgZone, OnChanges, OnDestroy } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { filter, map, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { DragConstraint } from './types';\n\nexport type DragOffset = {\n  x?: number;\n  y?: number;\n};\n\n@Directive({\n  selector: '[dialogDraggable]',\n  standalone: true,\n})\nexport class DialogDraggableDirective implements AfterViewInit, OnChanges, OnDestroy {\n  @Input()\n  dialogDragHandle: string | Element;\n  @Input()\n  dialogDragTarget: string | Element;\n  @Input()\n  dialogDragEnabled = false;\n  @Input()\n  set dialogDragOffset(offset: DragOffset) {\n    this.reset(offset);\n  }\n  @Input()\n  dragConstraint: DragConstraint;\n\n  private host = inject(ElementRef);\n  private zone = inject(NgZone);\n\n  /** Element to be dragged */\n  private target: HTMLElement;\n  /** Drag handle */\n  private handle: HTMLElement;\n  private delta = { x: 0, y: 0 };\n  private offset = { x: 0, y: 0 };\n  private enabled = true;\n  private destroy$ = new Subject<void>();\n\n  public ngAfterViewInit(): void {\n    if (!this.enabled) {\n      return;\n    }\n\n    this.init();\n  }\n\n  public ngOnChanges() {\n    if (!this.enabled && this.dialogDragEnabled && this.dialogDragTarget) {\n      this.enabled = true;\n      /** determine if the component has been init by the handle variable */\n      if (this.handle) {\n        this.handle.style.setProperty('cursor', 'move');\n      } else if (this.enabled) {\n        this.init();\n      }\n    }\n\n    if (!this.dialogDragEnabled) {\n      this.enabled = false;\n      if (this.handle) {\n        this.handle.style.setProperty('cursor', '');\n      }\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.destroy$.next();\n  }\n\n  public reset(offset?: DragOffset): void {\n    const defaultValues = { x: 0, y: 0 };\n    this.offset = { ...defaultValues, ...offset };\n    this.delta = { ...defaultValues };\n    this.translate();\n  }\n\n  private setupEvents() {\n    this.zone.runOutsideAngular(() => {\n      const mousedown$ = fromEvent<MouseEvent>(this.handle, 'mousedown');\n      const mousemove$ = fromEvent<MouseEvent>(document, 'mousemove');\n      const mouseup$ = fromEvent<MouseEvent>(document, 'mouseup');\n\n      const mousedrag$ = mousedown$.pipe(\n        filter(() => this.enabled),\n        map((event) => ({\n          startX: event.clientX,\n          startY: event.clientY,\n        })),\n        switchMap(({ startX, startY }) =>\n          mousemove$.pipe(\n            map((event) => {\n              event.preventDefault();\n              this.delta = {\n                x: event.clientX - startX,\n                y: event.clientY - startY,\n              };\n              if (this.dragConstraint === 'constrain') {\n                this.checkConstraint();\n              }\n            }),\n            takeUntil(mouseup$),\n          ),\n        ),\n        takeUntil(this.destroy$),\n      );\n\n      mousedrag$.subscribe(() => {\n        if (this.delta.x === 0 && this.delta.y === 0) {\n          return;\n        }\n\n        this.translate();\n      });\n\n      mouseup$\n        .pipe(\n          filter(() => this.enabled),\n          /** Only emit change if the element has moved */\n          filter(() => this.delta.x !== 0 || this.delta.y !== 0),\n          takeUntil(this.destroy$),\n        )\n        .subscribe(() => {\n          if (this.dragConstraint === 'bounce') {\n            this.checkConstraint();\n            this.translate();\n          }\n          this.offset.x += this.delta.x;\n          this.offset.y += this.delta.y;\n          this.delta = { x: 0, y: 0 };\n        });\n    });\n  }\n\n  private translate() {\n    if (this.target) {\n      this.zone.runOutsideAngular(() => {\n        requestAnimationFrame(() => {\n          const transform = `translate(${this.translateX}px, ${this.translateY}px)`;\n          this.target.style.setProperty('transform', transform);\n        });\n      });\n    }\n  }\n\n  private get translateX(): number {\n    return this.offset.x + this.delta.x;\n  }\n\n  private get translateY(): number {\n    return this.offset.y + this.delta.y;\n  }\n\n  /**\n   * Init the directive\n   */\n  private init() {\n    if (!this.dialogDragTarget) {\n      throw new Error('You need to specify the drag target');\n    }\n\n    this.handle =\n      this.dialogDragHandle instanceof Element\n        ? this.dialogDragHandle\n        : typeof this.dialogDragHandle === 'string' && this.dialogDragHandle\n        ? document.querySelector(this.dialogDragHandle as string)\n        : this.host.nativeElement;\n\n    /** add the move cursor */\n    if (this.handle && this.enabled) {\n      this.handle.style.setProperty('cursor', 'move');\n    }\n\n    this.target =\n      this.dialogDragTarget instanceof HTMLElement\n        ? this.dialogDragTarget\n        : document.querySelector(this.dialogDragTarget as string);\n\n    this.setupEvents();\n\n    this.translate();\n  }\n\n  private checkConstraint(): void {\n    const { width, height } = this.target.getBoundingClientRect();\n    const { innerWidth, innerHeight } = window;\n\n    const verticalDistance = this.translateY > 0 ? this.translateY + height / 2 : this.translateY - height / 2;\n    const maxVerticalDistance = innerHeight / 2;\n    const horizontalDistance = this.translateX > 0 ? this.translateX + width / 2 : this.translateX - width / 2;\n    const maxHorizontalDistance = innerWidth / 2;\n\n    // Check if modal crosses the top, bottom, left and right window border respectively\n    if (-maxVerticalDistance > verticalDistance) {\n      this.delta.y = -maxVerticalDistance + height / 2 - this.offset.y;\n    }\n    if (maxVerticalDistance < verticalDistance) {\n      this.delta.y = maxVerticalDistance - height / 2 - this.offset.y;\n    }\n    if (-maxHorizontalDistance > horizontalDistance) {\n      this.delta.x = -maxHorizontalDistance + width / 2 - this.offset.x;\n    }\n    if (maxHorizontalDistance < horizontalDistance) {\n      this.delta.x = maxHorizontalDistance - width / 2 - this.offset.x;\n    }\n  }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, InjectionToken, makeEnvironmentProviders } from '@angular/core';\n\nimport { DialogConfig, GlobalDialogConfig } from './types';\n\nexport const DIALOG_DOCUMENT_REF = new InjectionToken(\n  'A reference to the document. Useful for iframes that want appends to parent window',\n  {\n    providedIn: 'root',\n    factory() {\n      return inject(DOCUMENT);\n    },\n  },\n);\n\nexport function defaultGlobalConfig(): Partial<GlobalDialogConfig & DialogConfig> {\n  return {\n    id: undefined,\n    container: inject(DIALOG_DOCUMENT_REF).body,\n    backdrop: true,\n    closeButton: true,\n    enableClose: {\n      backdrop: true,\n      escape: true,\n    },\n    draggable: false,\n    dragConstraint: 'none',\n    resizable: false,\n    size: 'md',\n    windowClass: undefined,\n    width: undefined,\n    minWidth: undefined,\n    maxWidth: undefined,\n    height: undefined,\n    minHeight: undefined,\n    maxHeight: undefined,\n    data: undefined,\n    vcr: undefined,\n    sizes: {\n      sm: {\n        height: 'auto',\n        width: '400px',\n      },\n      md: {\n        height: 'auto',\n        width: '560px',\n      },\n      lg: {\n        height: 'auto',\n        width: '800px',\n      },\n      fullScreen: {\n        height: '100%',\n        width: '100%',\n      },\n    },\n    onClose: undefined,\n    onOpen: undefined,\n  };\n}\n\nexport const GLOBAL_DIALOG_CONFIG = new InjectionToken<Partial<GlobalDialogConfig>>('Global dialog config token', {\n  providedIn: 'root',\n  factory() {\n    return defaultGlobalConfig();\n  },\n});\n\nexport const NODES_TO_INSERT = new InjectionToken<Element[]>('Nodes inserted into the dialog');\n\nexport function provideDialogConfig(config: Partial<GlobalDialogConfig>) {\n  return makeEnvironmentProviders([\n    {\n      provide: GLOBAL_DIALOG_CONFIG,\n      useFactory() {\n        const defaultConfig = defaultGlobalConfig();\n        return {\n          ...defaultConfig,\n          ...config,\n          sizes: {\n            ...defaultConfig.sizes,\n            ...config.sizes,\n          },\n        };\n      },\n    },\n  ]);\n}\n\nexport function provideDialogDocRef(doc: Document) {\n  return makeEnvironmentProviders([\n    {\n      provide: DIALOG_DOCUMENT_REF,\n      useValue: doc,\n    },\n  ]);\n}\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport {\n  Component,\n  ElementRef,\n  inject,\n  isDevMode,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\n\nimport { InternalDialogRef } from './dialog-ref';\nimport { DialogService } from './dialog.service';\nimport { coerceCssPixelValue } from './dialog.utils';\nimport { DialogDraggableDirective, DragOffset } from './draggable.directive';\nimport { NODES_TO_INSERT } from './providers';\nimport { GuardTrigger } from './types';\n\n@Component({\n  selector: 'ngneat-dialog',\n  standalone: true,\n  imports: [DialogDraggableDirective, CommonModule],\n  template: `\n    <div\n      #backdrop\n      class=\"ngneat-dialog-backdrop\"\n      [hidden]=\"!config.backdrop\"\n      [class.ngneat-dialog-backdrop-visible]=\"config.backdrop\"\n    >\n      <div\n        #dialog\n        class=\"ngneat-dialog-content\"\n        [class.ngneat-dialog-resizable]=\"config.resizable\"\n        [ngStyle]=\"styles\"\n        role=\"dialog\"\n      >\n        @if (config.draggable) {\n          <div\n            class=\"ngneat-drag-marker\"\n            dialogDraggable\n            [dialogDragEnabled]=\"true\"\n            [dialogDragTarget]=\"dialog\"\n            [dragConstraint]=\"config.dragConstraint\"\n          ></div>\n        }\n        @if (config.closeButton) {\n          <div class=\"ngneat-close-dialog\" (click)=\"closeDialog()\">\n            <svg viewBox=\"0 0 329.26933 329\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path\n                fill=\"currentColor\"\n                d=\"m194.800781 164.769531 128.210938-128.214843c8.34375-8.339844 8.34375-21.824219 0-30.164063-8.339844-8.339844-21.824219-8.339844-30.164063 0l-128.214844 128.214844-128.210937-128.214844c-8.34375-8.339844-21.824219-8.339844-30.164063 0-8.34375 8.339844-8.34375 21.824219 0 30.164063l128.210938 128.214843-128.210938 128.214844c-8.34375 8.339844-8.34375 21.824219 0 30.164063 4.15625 4.160156 9.621094 6.25 15.082032 6.25 5.460937 0 10.921875-2.089844 15.082031-6.25l128.210937-128.214844 128.214844 128.214844c4.160156 4.160156 9.621094 6.25 15.082032 6.25 5.460937 0 10.921874-2.089844 15.082031-6.25 8.34375-8.339844 8.34375-21.824219 0-30.164063zm0 0\"\n              />\n            </svg>\n          </div>\n        }\n      </div>\n    </div>\n  `,\n  styleUrls: [`./dialog.component.scss`],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DialogComponent implements OnInit, OnDestroy {\n  dialogRef = inject(InternalDialogRef);\n  config = this.dialogRef.config;\n\n  private size = this.config.sizes?.[this.config.size || 'md'];\n  styles = {\n    width: coerceCssPixelValue(this.config.width || this.size?.width),\n    minWidth: coerceCssPixelValue(this.config.minWidth || this.size?.minWidth),\n    maxWidth: coerceCssPixelValue(this.config.maxWidth || this.size?.maxWidth),\n    height: coerceCssPixelValue(this.config.height || this.size?.height),\n    minHeight: coerceCssPixelValue(this.config.minHeight || this.size?.minHeight),\n    maxHeight: coerceCssPixelValue(this.config.maxHeight || this.size?.maxHeight),\n  };\n\n  @ViewChild('backdrop', { static: true })\n  private backdrop: ElementRef<HTMLDivElement>;\n\n  @ViewChild('dialog', { static: true })\n  private dialogElement: ElementRef<HTMLElement>;\n\n  @ViewChild(DialogDraggableDirective, { static: false })\n  private draggable: DialogDraggableDirective;\n\n  private destroy$ = new Subject<void>();\n\n  private nodes = inject(NODES_TO_INSERT);\n\n  private document = inject(DOCUMENT);\n  private host: HTMLElement = inject(ElementRef).nativeElement;\n\n  private dialogService = inject(DialogService);\n\n  constructor() {\n    // Append nodes to dialog component, template or component could need\n    // something from the dialog component\n    // for example, if `[dialogClose]` is used into a directive,\n    // DialogRef will be injected from DialogService instead of DI\n    this.nodes.forEach((node) => this.host.appendChild(node));\n\n    if (this.config.windowClass) {\n      const classNames = this.config.windowClass.split(/\\s/).filter((x) => x);\n      classNames.forEach((name) => this.host.classList.add(name));\n    }\n\n    if (!this.config.id) {\n      const id = `dialog-${crypto.randomUUID()}`;\n      this.config.id = id;\n      this.dialogRef.updateConfig({ id });\n      if (isDevMode()) {\n        console.warn(\n          `[@ngneat/dialog]: Dialog id is not provided, generated id is ${id}, providing an id is recommended to prevent unexpected multiple behavior`,\n        );\n      }\n    }\n\n    if (this.config.overflow) {\n      document.body.style.setProperty('--dialog-overflow', 'visible');\n    }\n\n    this.host.id = this.config.id;\n  }\n\n  ngOnInit() {\n    const backdrop = this.config.backdrop ? this.backdrop.nativeElement : this.document.body;\n    const dialogElement = this.dialogElement.nativeElement;\n\n    const backdropClick$ = fromEvent<MouseEvent>(backdrop, 'click', { capture: true }).pipe(\n      filter(({ target }) => !dialogElement.contains(target as Element)),\n    );\n\n    backdropClick$.pipe(takeUntil(this.destroy$)).subscribe(this.dialogRef.backdropClick$);\n\n    // backwards compatibility with non-split option\n    const closeConfig =\n      typeof this.config.enableClose === 'boolean' || this.config.enableClose === 'onlyLastStrategy'\n        ? {\n            escape: this.config.enableClose,\n            backdrop: this.config.enableClose,\n          }\n        : this.config.enableClose;\n    merge(\n      fromEvent<KeyboardEvent>(this.document.body, 'keyup').pipe(\n        filter(({ key }) => key === 'Escape'),\n        // we track what triggers the actual closing, esc or backdrop click so we can act accordingly with the closingGuards\n        map(() => ({ action: 'escape' as const, strategy: closeConfig.escape })),\n      ),\n      backdropClick$.pipe(\n        filter(() => this.document.getSelection()?.toString() === ''),\n        map(() => ({ action: 'backdrop' as const, strategy: closeConfig.backdrop })),\n      ),\n    )\n      .pipe(\n        takeUntil(this.destroy$),\n        filter(({ strategy }) => {\n          if (!strategy) return false;\n          if (strategy === 'onlyLastStrategy') {\n            return this.dialogService.isLastOpened(this.config.id);\n          }\n          return true;\n        }),\n      )\n      .subscribe(({ action }) => this.closeDialog(action));\n\n    // `dialogElement` is resolved at this point\n    // And here is where dialog finally will be placed\n    this.nodes.forEach((node) => dialogElement.appendChild(node));\n\n    if (this.config.zIndexGetter) {\n      const zIndex = this.config.zIndexGetter().toString();\n      backdrop.style.setProperty('--dialog-backdrop-z-index', zIndex);\n    }\n  }\n\n  reset(offset?: DragOffset): void {\n    if (this.config.draggable) {\n      this.draggable.reset(offset);\n    }\n  }\n\n  closeDialog(action: GuardTrigger = 'closeButton') {\n    this.dialogRef.close(undefined, action);\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n\n    this.dialogRef = null;\n    this.nodes = null;\n  }\n}\n","import {\n  ApplicationRef,\n  createComponent,\n  ElementRef,\n  EnvironmentInjector,\n  inject,\n  Injectable,\n  Injector,\n  reflectComponentType,\n  TemplateRef,\n  Type,\n  ViewRef,\n} from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nimport { DialogRef, InternalDialogRef } from './dialog-ref';\nimport { DialogComponent } from './dialog.component';\nimport { DragOffset } from './draggable.directive';\nimport { DIALOG_DOCUMENT_REF, GLOBAL_DIALOG_CONFIG, NODES_TO_INSERT } from './providers';\nimport { AttachOptions, DialogConfig, ExtractData, ExtractResult, GlobalDialogConfig } from './types';\n\nconst OVERFLOW_HIDDEN_CLASS = 'ngneat-dialog-hidden';\n\n@Injectable({ providedIn: 'root' })\nexport class DialogService {\n  private appRef = inject(ApplicationRef);\n  private injector = inject(EnvironmentInjector);\n  private document = inject(DIALOG_DOCUMENT_REF);\n  private globalConfig = inject(GLOBAL_DIALOG_CONFIG);\n\n  // Replace with Map in next major version\n  dialogs: DialogRef[] = [];\n  // A Stream representing opening & closing dialogs\n  private hasOpenDialogSub = new BehaviorSubject<boolean>(false);\n  hasOpenDialogs$ = this.hasOpenDialogSub.asObservable();\n\n  hasOpenDialogs() {\n    return this.dialogs.length > 0;\n  }\n\n  isOpen(id: string) {\n    return this.dialogs.some((ref) => ref.id === id);\n  }\n\n  isLastOpened(idOrRef: string | DialogRef): boolean {\n    const id = idOrRef instanceof DialogRef ? idOrRef.id : idOrRef;\n\n    return this.dialogs.at(-1)?.id === id;\n  }\n\n  closeAll() {\n    this.dialogs.forEach((dialog) => dialog.close());\n  }\n\n  open(template: TemplateRef<any>, config?: Partial<DialogConfig>): DialogRef;\n  open<C extends Type<any>>(\n    component: C,\n    config?: Partial<DialogConfig<ExtractData<InstanceType<C>>>>,\n  ): DialogRef<ExtractData<InstanceType<C>>, ExtractResult<InstanceType<C>>>;\n  open(componentOrTemplate: any, config: Partial<DialogConfig> = {}): DialogRef {\n    const mergedConfig = this.mergeConfig(config);\n\n    if (isComponent(componentOrTemplate)) {\n      mergedConfig.id ??= reflectComponentType(componentOrTemplate)?.selector;\n    }\n\n    if (this.isOpen(mergedConfig.id)) {\n      return;\n    }\n\n    const dialogRef = new InternalDialogRef({\n      config: mergedConfig,\n      backdropClick$: new Subject<MouseEvent>(),\n    });\n\n    const attachOptions = isTemplate(componentOrTemplate)\n      ? this.openTemplate(componentOrTemplate, dialogRef)\n      : isComponent(componentOrTemplate)\n      ? this.openComponent(componentOrTemplate, dialogRef)\n      : throwMustBeAComponentOrATemplateRef(componentOrTemplate);\n\n    if (this.isOpen(dialogRef.id)) {\n      attachOptions.view.destroy();\n      return;\n    }\n\n    mergedConfig.onOpen?.();\n\n    this.dialogs.push(dialogRef);\n    this.hasOpenDialogSub.next(true);\n\n    if (this.dialogs.length === 1) {\n      this.document.body.classList.add(OVERFLOW_HIDDEN_CLASS);\n    }\n\n    return this.attach(dialogRef, attachOptions);\n  }\n\n  private openTemplate(template: TemplateRef<any>, dialogRef: InternalDialogRef) {\n    const config = dialogRef.config;\n    const context = {\n      $implicit: dialogRef,\n      config,\n    };\n\n    const view = config.vcr?.createEmbeddedView(template, context) || template.createEmbeddedView(context);\n\n    return {\n      ref: template,\n      view,\n      attachToApp: !config.vcr,\n    };\n  }\n\n  private openComponent(Component: Type<any>, dialogRef: InternalDialogRef) {\n    const componentRef = createComponent(Component, {\n      elementInjector: Injector.create({\n        providers: [\n          {\n            provide: DialogRef,\n            useValue: dialogRef,\n          },\n        ],\n        parent: dialogRef.config.vcr?.injector || this.injector,\n      }),\n      environmentInjector: this.injector,\n    });\n\n    return {\n      ref: componentRef,\n      view: componentRef.hostView,\n      attachToApp: true,\n    };\n  }\n\n  private attach(dialogRef: InternalDialogRef, { ref, view, attachToApp }: AttachOptions): DialogRef<any, any, any> {\n    const dialog = this.createDialog(dialogRef, view);\n\n    const container = this.document.fullscreenElement || getNativeElement(dialogRef.config.container);\n\n    const hooks = {\n      after: new Subject<unknown>(),\n    };\n\n    const onClose = (result: unknown) => {\n      this.globalConfig.onClose?.();\n      this.dialogs = this.dialogs.filter(({ id }) => dialogRef.id !== id);\n      this.hasOpenDialogSub.next(this.hasOpenDialogs());\n\n      container.removeChild(dialog.location.nativeElement);\n      this.appRef.detachView(dialog.hostView);\n      this.appRef.detachView(view);\n\n      dialog.destroy();\n      view.destroy();\n\n      dialogRef.backdropClick$.complete();\n\n      dialogRef.mutate({\n        ref: null,\n        onClose: null,\n        afterClosed$: null,\n        backdropClick$: null,\n        beforeCloseGuards: null,\n        onReset: null,\n      });\n\n      hooks.after.next(result);\n      hooks.after.complete();\n      if (!this.hasOpenDialogs()) {\n        this.document.body.classList.remove(OVERFLOW_HIDDEN_CLASS);\n      }\n    };\n\n    const onReset = (offset?: DragOffset) => {\n      dialog.instance.reset(offset);\n    };\n\n    dialogRef.mutate({\n      ref,\n      onClose,\n      afterClosed$: hooks.after.asObservable(),\n      onReset,\n    });\n\n    container.appendChild(dialog.location.nativeElement);\n    this.appRef.attachView(dialog.hostView);\n\n    if (attachToApp) {\n      this.appRef.attachView(view);\n    }\n\n    return dialogRef.asDialogRef();\n  }\n\n  private createDialog(dialogRef: InternalDialogRef, view: ViewRef) {\n    return createComponent(DialogComponent, {\n      elementInjector: Injector.create({\n        providers: [\n          {\n            provide: InternalDialogRef,\n            useValue: dialogRef,\n          },\n          {\n            provide: NODES_TO_INSERT,\n            useValue: (view as any).rootNodes,\n          },\n        ],\n        parent: this.injector,\n      }),\n      environmentInjector: this.injector,\n    });\n  }\n\n  private mergeConfig(inlineConfig: Partial<DialogConfig>): DialogConfig & GlobalDialogConfig {\n    return {\n      ...this.globalConfig,\n      ...inlineConfig,\n      sizes: this.globalConfig?.sizes,\n    } as DialogConfig & GlobalDialogConfig;\n  }\n}\n\nfunction throwMustBeAComponentOrATemplateRef(value: unknown): never {\n  throw new TypeError(`Dialog must receive a Component or a TemplateRef, but this has been passed instead: ${value}`);\n}\n\nfunction getNativeElement(element: Element | ElementRef): Element {\n  return element instanceof ElementRef ? element.nativeElement : element;\n}\n\nfunction isTemplate(tplOrComp: any): tplOrComp is TemplateRef<any> {\n  return tplOrComp instanceof TemplateRef;\n}\n\nfunction isComponent(tplOrComp: any): tplOrComp is Type<any> {\n  return !isTemplate(tplOrComp) && typeof tplOrComp === 'function';\n}\n","import { Directive, ElementRef, HostListener, inject, Input, OnInit } from '@angular/core';\n\nimport { DialogRef } from './dialog-ref';\nimport { DialogService } from './dialog.service';\n\n@Directive({\n  selector: '[dialogClose]',\n  standalone: true,\n})\nexport class DialogCloseDirective implements OnInit {\n  private host: ElementRef<HTMLElement> = inject(ElementRef);\n  private dialogService = inject(DialogService);\n  ref: DialogRef = inject(DialogRef, { optional: true });\n\n  @Input()\n  dialogClose: any;\n\n  ngOnInit() {\n    this.ref = this.ref || this.getRefFromParent();\n  }\n\n  @HostListener('click')\n  onClose() {\n    this.ref.close(this.dialogClose);\n  }\n\n  private getRefFromParent() {\n    let parent = this.host.nativeElement.parentElement;\n\n    while (parent && parent.localName !== 'ngneat-dialog') {\n      parent = parent.parentElement;\n    }\n\n    return parent ? this.dialogService.dialogs.find(({ id }) => id === parent.id) : null;\n  }\n}\n","import { Directive, HostListener, inject } from '@angular/core';\n\nimport { DialogService } from './dialog.service';\n\n@Directive({\n  selector: '[closeAllDialogs]',\n  standalone: true,\n})\nexport class CloseAllDialogsDirective {\n  private dialogService = inject(DialogService);\n\n  @HostListener('click')\n  onClose() {\n    this.dialogService.closeAll();\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}