mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
54 lines
998 B
JavaScript
54 lines
998 B
JavaScript
import Vue from 'vue';
|
|
import VueImagePreview from './ImagePreview';
|
|
import { isServer } from '../utils';
|
|
|
|
let instance;
|
|
|
|
const defaultConfig = {
|
|
images: [],
|
|
loop: true,
|
|
value: true,
|
|
showIndex: true,
|
|
asyncClose: false,
|
|
startPosition: 0,
|
|
showIndicators: false
|
|
};
|
|
|
|
const initInstance = () => {
|
|
instance = new (Vue.extend(VueImagePreview))({
|
|
el: document.createElement('div')
|
|
});
|
|
document.body.appendChild(instance.$el);
|
|
};
|
|
|
|
const ImagePreview = (images, startPosition = 0) => {
|
|
/* istanbul ignore if */
|
|
if (isServer) {
|
|
return;
|
|
}
|
|
|
|
if (!instance) {
|
|
initInstance();
|
|
}
|
|
|
|
const options = Array.isArray(images) ? { images, startPosition } : images;
|
|
|
|
Object.assign(instance, defaultConfig, options);
|
|
|
|
instance.$once('input', show => {
|
|
instance.value = show;
|
|
});
|
|
|
|
if (options.onClose) {
|
|
instance.$once('close', options.onClose);
|
|
}
|
|
|
|
return instance;
|
|
};
|
|
|
|
ImagePreview.install = () => {
|
|
Vue.use(VueImagePreview);
|
|
};
|
|
|
|
export default ImagePreview;
|