import { StyleProp, ViewStyle, ImageStyle } from 'react-native'; import { ReactNode } from 'react'; export interface ImageItem { /** 图片URL */ url: string; /** 缩略图URL */ thumbnail?: string; /** 图片宽度 */ width?: number; /** 图片高度 */ height?: number; /** 图片描述 */ description?: string; /** 扩展数据 */ extra?: Record; } export interface DbImagePreviewProps { /** 图片列表 */ images: (string | ImageItem)[]; /** 是否可见 */ visible: boolean; /** 初始索引 */ initialIndex?: number; /** 关闭回调 */ onClose: () => void; /** 索引变化回调 */ onChange?: (index: number) => void; /** 图片点击回调 */ onImagePress?: (index: number) => void; /** 图片长按回调 */ onImageLongPress?: (index: number) => void; /** 是否显示页码指示器 */ showIndicator?: boolean; /** 指示器类型 */ indicatorType?: 'dot' | 'number' | 'fraction'; /** 是否显示关闭按钮 */ showCloseButton?: boolean; /** 是否显示保存按钮 */ showSaveButton?: boolean; /** 保存回调 */ onSave?: (index: number, image: ImageItem) => void; /** 是否启用缩放 */ enableZoom?: boolean; /** 最小缩放 */ minZoom?: number; /** 最大缩放 */ maxZoom?: number; /** 是否循环滑动 */ loop?: boolean; /** 背景颜色 */ backgroundColor?: string; /** 背景透明度 */ backgroundOpacity?: number; /** 动画时长 */ animationDuration?: number; /** 容器样式 */ style?: StyleProp; /** 图片样式 */ imageStyle?: StyleProp; /** 指示器样式 */ indicatorStyle?: StyleProp; /** 自定义头部 */ renderHeader?: (index: number) => ReactNode; /** 自定义底部 */ renderFooter?: (index: number) => ReactNode; /** 自定义指示器 */ renderIndicator?: (current: number, total: number) => ReactNode; /** 加载中组件 */ loadingComponent?: ReactNode; /** 加载失败组件 */ errorComponent?: ReactNode; } export interface DbImageGalleryProps { /** 图片列表 */ images: (string | ImageItem)[]; /** 列数 */ columns?: number; /** 图片间距 */ gap?: number; /** 图片圆角 */ imageRadius?: number; /** 图片高度 */ imageHeight?: number; /** 容器样式 */ style?: StyleProp; /** 图片样式 */ imageStyle?: StyleProp; /** 是否点击预览 */ previewOnPress?: boolean; /** 图片点击回调 */ onImagePress?: (index: number) => void; /** 最大显示数量 */ maxDisplay?: number; /** 超出数量显示文案 */ overflowText?: (count: number) => string; }