import type React from 'react'; import type { ModalRef } from './modal'; /** createRefComponent / showRefModal 的挂载选项(DOM 字段仅默认 Web 适配器使用) */ export type CreateRefComponentOptions = { id?: string, selector?: string, container?: HTMLElement | null | (() => HTMLElement), className?: string, onRef?: (ref: any, destroy: () => void) => void, onAppendContainer?: (container: HTMLElement) => void | boolean, onRemoveContainer?: (container: HTMLElement) => void | boolean, onDestroyComponent?: (container: HTMLElement) => void | boolean, destroyDelay?: number, /** 单次调用覆盖全局挂载适配器 */ mountAdapter?: RefComponentMountAdapter, }; /** 挂载适配器入参 */ export type RefComponentMountParams< M extends ModalRef, P extends Record = Record, > = { RefComponent: React.ForwardRefExoticComponent

>, props?: React.PropsWithoutRef

| null, options: Omit, }; /** 挂载结果:[ref, destroy] */ export type RefComponentMountResult = [ref: M, destroy: () => void]; /** * 命令式 ref 组件挂载适配器。 * 默认实现使用 DOM + react-dom;React Native 等环境可注入在组件树内挂载的实现。 */ export type RefComponentMountAdapter = { /** 适配器标识,便于调试 */ readonly id?: string, /** * 挂载 RefComponent 并在 ref 就绪后 resolve。 * @param params - 组件、props 与选项 * @returns ref 实例与 destroy */ mount: < M extends ModalRef, P extends Record = Record, >( params: RefComponentMountParams, ) => Promise>, };