import React, { type CSSProperties, type ReactNode } from "react"; import { ResponsiveNodeIdentity } from './type'; /** * `ResponsiveEditWrapper` 入参 */ export interface ResponsiveEditWrapperProps { /** 被包裹的组件树(一般是已 resolveProps 过的最终渲染产物) */ children: ReactNode; /** 节点身份,用于编辑面板回填 */ node: ResponsiveNodeIdentity; /** 当前合并后的最终 props(仅展示/编辑用) */ finalProps: Record; /** * 组件级可覆写字段白名单(来自 withResponsive 配置) * - 传入则作为编辑面板的最终白名单(最高优先级); * - 未传时由插件按 byNode/default/DEFAULT 解析。 */ editableFields?: string[]; /** 指定外层标签(默认 div,建议保持以避免破坏布局) */ as?: keyof JSX.IntrinsicElements; /** 透传给外层 wrapper 的 className */ className?: string; /** 透传给外层 wrapper 的 style */ style?: CSSProperties; } /** * 编辑模式下包裹响应式组件,提供长按 → 弹出配置面板 的能力 * * **运行时引用规则**:通过 `app.responsive.publishEditOpen(payload)` 发布事件, * **不直接 import 事件常量与 pubsub**;类型走 `import type`(编译期擦除)。 * * 行为: * - 仅在 `withResponsive` 检测到 `editMode === true` 时才会被使用; * - 监听 pointerdown 启动 600ms 计时;pointermove(位移 > 8px)/ pointerup / pointercancel 取消; * - 触发时 `e.preventDefault()` 阻止默认行为,再调用 `app.responsive.publishEditOpen(payload)` 通知面板; * - 加 1px 虚线轮廓辅助识别。 * * @example * * * */ export declare const ResponsiveEditWrapper: React.FC; export default ResponsiveEditWrapper;