import { createFlip } from '../core/flip.js'; /** * @param {object} opts Todo lo de `createMorph`, más: * @param {string|Node} [opts.content] HTML o nodo a poner adentro del panel * @param {string} [opts.modalClass] * @param {string} [opts.overlayClass] * @param {string} [opts.flyingTextClass] Si está, se crea el texto viajero * @param {boolean} [opts.closeOnOverlayClick=true] * @param {boolean} [opts.closeButton=false] Botón × propio, para cuando el * consumidor no quiere armar el suyo. Flota sobre el contenido, no ocupa * espacio en el layout. * @param {string} [opts.closeButtonClass] * @param {boolean} [opts.closeOnEscape=true] Cerrar al presionar la tecla Escape * @param {boolean} [opts.trapFocus=true] Atrapado de foco dentro del modal * @param {"slide-up"|"slide-down"|"scale"|"fade"|"none"} [opts.contentAnimation="slide-up"] Animación CSS nativa de entrada y salida para el contenido * @param {boolean} [opts.contentStagger=false] Efecto de cascada escalonada automática en elementos hijos * @param {string} [opts.ariaLabel] * @param {string} [opts.ariaLabelledby] */ export function createModal(opts?: { content?: string | Node | undefined; modalClass?: string | undefined; overlayClass?: string | undefined; flyingTextClass?: string | undefined; closeOnOverlayClick?: boolean | undefined; closeButton?: boolean | undefined; closeButtonClass?: string | undefined; closeOnEscape?: boolean | undefined; trapFocus?: boolean | undefined; contentAnimation?: "slide-up" | "slide-down" | "scale" | "fade" | "none" | undefined; contentStagger?: boolean | undefined; ariaLabel?: string | undefined; ariaLabelledby?: string | undefined; }): { open: (origin: HTMLElement | string | Rect, label?: string | Node, overrides?: Partial<{ placement: "top" | "bottom" | "center" | "drawer-left"; align: "left" | "center" | "right"; gap: number; margin: number; width: null; radius: null; duration: number; closeDuration: number; ease: string; closeEase: string; contentBlur: boolean; contentAnimation: "slide-up" | "slide-down" | "scale" | "fade" | "none"; contentStagger: boolean; mobileBreakpoint: number; fullscreenOnMobile: boolean; labelOffsetX: number; flyingMode: "text" | "box" | null; originRadius: number; hideOrigin: boolean | null; swipeToClose: boolean; swipeThreshold: number; closeOnEscape: boolean; trapFocus: boolean; restoreFocus: boolean; lockScroll: boolean; ariaLabel: null; ariaLabelledby: null; mount: null | (() => void | Promise); unmount: null | (() => void); onGeom: null | ((g: import('../core/morph.js').Geom) => void); onState: null | ((state: "closed" | "opening" | "open" | "closing") => void); }>) => Promise; close: (fling?: { x: number; y: number; }) => Promise; changeView: (mutate: any) => Promise; resync: (duration: any) => void; destroy(): void; readonly state: "closed" | "opening" | "open" | "closing"; } & { box: HTMLDivElement; content: HTMLDivElement; overlay: HTMLDivElement | null; flyingText: HTMLDivElement | null; }; /** * Adaptador Vanilla para FlipModal * @param {object} opts Opciones para createFlip, más `trigger` y `content` */ export function createFlipModal(opts?: object): { open: () => Promise; close: () => Promise; destroy(): void; readonly state: string; } & { box: HTMLDivElement; wrapper: HTMLDivElement; overlay: any; }; export { createFlip }; export { setDefaults } from '../core/index.js'; export { enterDropdownAnimation, leaveDropdownAnimation } from '../core/dropdown.js';