import { ReactNode } from 'react'; import { OverlayTargetStore } from '../context/OverlayTargetContext'; import { BMapDriver } from '../drivers/types'; import { ControlHandle, LayerHandle, OverlayHandle } from '../types'; export interface OverlayComponentConfig
{
/** 工厂方法:用 driver 创建 overlay */
factory: (driver: BMapDriver, props: P) => OverlayHandle | null;
/** position 属性名(变化时调 setOverlayPosition) */
positionProp?: keyof P & string;
/** path 属性名(变化时调 setOverlayPath) */
pathProp?: keyof P & string;
/** options 属性名列表(变化时调 setOverlayOptions) */
optionProps?: Array (config: OverlayComponentConfig ): import('react').NamedExoticComponent ;
export interface ControlComponentConfig {
factory: (driver: BMapDriver, props: P) => ControlHandle | null;
/**
* 可通过 Control 基类或具体控件 setter 响应式更新的 props。
* 注意:这类 prop 在 null/undefined 与有值之间切换时控件会整体重建
* (见下方 optionDefaultKey),控件内部的交互状态会丢失 —— 需要稳定状态时
* 不要让 option prop 在「不传」和「传」之间来回切换,给一个固定值即可。
*/
optionProps?: Array (config: ControlComponentConfig ): import('react').MemoExoticComponent<(props: P) => any>;
export interface LayerComponentConfig {
factory: (driver: BMapDriver, props: P) => LayerHandle | null;
/** 添加方法名,默认 'addLayer' */
addMethod?: keyof BMapDriver;
/** 移除方法名,默认 'removeLayer' */
removeMethod?: keyof BMapDriver;
/** React StrictMode 下复用同一个 SDK layer 实例,避免 add/remove 不成对 */
reuseHandle?: boolean;
/** 延后一拍添加 layer,让 StrictMode 的模拟卸载可以取消首次 add */
deferMount?: boolean;
/** 事件列表(SDK 事件名 → React 回调 prop 名) */
events?: ReadonlyArray<{
sdk: string;
prop: keyof P & string;
}>;
displayName?: string;
}
export declare function createLayerComponent (config: LayerComponentConfig ): import('react').MemoExoticComponent<(props: P) => any>;