import { ComponentRef, ElementRef, TemplateRef, ViewContainerRef, ViewRef } from '@angular/core'; import { DialogRef } from './dialog-ref'; type Sizes = 'sm' | 'md' | 'lg' | 'fullScreen' | string; export type DragConstraint = 'none' | 'bounce' | 'constrain'; export type CloseStrategy = boolean | 'onlyLastStrategy'; export type GuardTrigger = 'escape' | 'backdrop' | 'closeButton' | 'all'; export interface GlobalDialogConfig { sizes: Partial>; backdrop: boolean; container: ElementRef | Element; closeButton: boolean; draggable: boolean; dragConstraint: DragConstraint; enableClose: CloseStrategy | { escape: CloseStrategy; backdrop: CloseStrategy; }; resizable: boolean; overflow: boolean; width: string | number; minWidth: string | number; maxWidth: string | number; height: string | number; minHeight: string | number; maxHeight: string | number; size: Sizes; windowClass: string; zIndexGetter?(): number; onOpen: () => void | undefined; onClose: () => void | undefined; guardTrigger?: GuardTrigger; } export interface DialogConfig extends Omit { id: string; data: Data; vcr: ViewContainerRef; } export type JustProps = Pick any ? never : K; }[keyof T]>; export type ExtractRefProp = Exclude<{ [P in keyof T]: T[P] extends DialogRef ? P : never; }[keyof T], undefined | null>; export type ExtractData = ExtractRefProp extends never ? any : T[ExtractRefProp] extends DialogRef ? Data : never; export type ExtractResult = ExtractRefProp extends never ? any : T[ExtractRefProp] extends DialogRef ? Result : never; export interface AttachOptions { ref: ComponentRef | TemplateRef; view: ViewRef; attachToApp: boolean; } export {};