vue-previewable-image
Version:
A previewable image Vue component based on viewerjs.
83 lines (67 loc) • 1.89 kB
TypeScript
import type { Component } from 'vue'
import Viewer from 'viewerjs'
type ViewerType = Viewer
type ViewerOptions = Viewer.Options
type ViewerOptionsTitle = Pick<ViewerOptions, 'title'>
interface PreviewableSrcObject extends Record<string | number, any> {
src: string
alt?: string
}
interface PreviewableImageElement
extends HTMLImageElement,
PreviewableSrcObject {}
type PreviewableSrcListItem = string | PreviewableSrcObject
interface ViewerViewEvent extends CustomEvent {
detail: {
index: number
}
}
type CustomViewerTitle = (
imgElement: PreviewableImageElement,
detail: { index: number; total: number }
) => string
interface PreviewableImageProps {
width?: string
height?: string
src: string
alt?: string
referrerPolicy?: string
fit?: string
lazy?: boolean
zIndex?: boolean | string
previewSrcList?: PreviewableSrcListItem[]
currentPreviewIndex?: number
viewerOptions?: ViewerOptions
viewerTitle?: CustomViewerTitle
}
interface ImageViewerProps {
modelValue?: boolean
zIndex?: boolean | string
previewSrcList?: PreviewableSrcListItem[]
currentPreviewIndex?: number
viewerOptions?: ViewerOptions
viewerTitle?: CustomViewerTitle
}
type ViewerSwitchEvent = (index: number, viewer: ViewerType) => void
declare const PreviewableImage: Component<{}, {}, {}, PreviewableImageProps>
declare const ImageViewer: Component<{}, {}, {}, ImageViewerProps>
interface PreviewableImageOptions {
componentName?: string
defaultViewerOptions?: ViewerOptions
}
export {
PreviewableImage,
ImageViewer,
Viewer,
// types
PreviewableImageOptions,
ViewerType,
ViewerOptions,
ViewerViewEvent,
PreviewableSrcObject,
PreviewableImageElement,
PreviewableSrcListItem,
ViewerOptionsTitle,
CustomViewerTitle,
ViewerSwitchEvent,
}