import type { ExtractPropTypes, PropType } from 'vue' import { imageProps } from '../up-image/types.ts' // 定义 LivePhoto 特有的 props const livePhotoSpecificProps = { /** * @description 视频源地址 */ videoSrc: { type: String, required: true }, /** * @description 静态图片源地址 */ src: { type: String, required: true }, /** * @description 是否显示 Live Photo 指示器 */ showIndicator: { type: Boolean, default: true }, /** * @description 是否自动播放视频 */ autoplay: { type: Boolean, default: false }, /** * @description 是否启用振动反馈 */ enableVibration: { type: Boolean, default: true }, /** * @description 是否静音播放 */ muted: { type: Boolean, default: true }, /** * @description 是否显示静音控制按钮 */ showMuteButton: { type: Boolean, default: true }, /** * @description 是否仅展示模式(只显示图片和指示器,不支持交互和视频播放) */ displayOnly: { type: Boolean, default: false }, /** * @description 指示器水平位置(距离左边的距离) */ indicatorLeft: { type: [String, Number] as PropType, default: '20rpx' }, /** * @description 指示器垂直位置(距离顶部的距离) */ indicatorTop: { type: [String, Number] as PropType, default: '20rpx' }, /** * @description 长按触发延迟时间(单位 ms),区分短按(点击)与长按 */ longPressDelay: { type: Number, default: 150 } } as const // 合并 image props 和 LivePhoto 特有的 props export const livePhotoProps = { ...imageProps, ...livePhotoSpecificProps, enablePreview: { type: Boolean, default: false } } as const export type LivePhotoProps = ExtractPropTypes export interface LivePhotoEmits { (e: 'error' | 'load' | 'click' | 'video-progress', event: Event): void (e: 'video-loaded' | 'video-ended' | 'press-end' | 'press-start' | 'video-pause' | 'video-play'): void (e: 'update:muted', value: boolean): void }