88 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import _extends from "@babel/runtime/helpers/esm/extends";
 | |
| import Vue from 'vue';
 | |
| import VueImagePreview from './ImagePreview';
 | |
| import { isServer } from '../utils';
 | |
| var instance;
 | |
| var defaultConfig = {
 | |
|   loop: true,
 | |
|   value: true,
 | |
|   images: [],
 | |
|   maxZoom: 3,
 | |
|   minZoom: 1 / 3,
 | |
|   onClose: null,
 | |
|   onChange: null,
 | |
|   className: '',
 | |
|   showIndex: true,
 | |
|   closeable: false,
 | |
|   closeIcon: 'clear',
 | |
|   asyncClose: false,
 | |
|   transition: 'van-fade',
 | |
|   getContainer: 'body',
 | |
|   overlayStyle: null,
 | |
|   startPosition: 0,
 | |
|   swipeDuration: 300,
 | |
|   showIndicators: false,
 | |
|   closeOnPopstate: true,
 | |
|   closeIconPosition: 'top-right'
 | |
| };
 | |
| 
 | |
| var initInstance = function initInstance() {
 | |
|   instance = new (Vue.extend(VueImagePreview))({
 | |
|     el: document.createElement('div')
 | |
|   });
 | |
|   document.body.appendChild(instance.$el);
 | |
|   instance.$on('change', function (index) {
 | |
|     if (instance.onChange) {
 | |
|       instance.onChange(index);
 | |
|     }
 | |
|   });
 | |
|   instance.$on('scale', function (data) {
 | |
|     if (instance.onScale) {
 | |
|       instance.onScale(data);
 | |
|     }
 | |
|   });
 | |
| };
 | |
| 
 | |
| var ImagePreview = function ImagePreview(images, startPosition) {
 | |
|   if (startPosition === void 0) {
 | |
|     startPosition = 0;
 | |
|   }
 | |
| 
 | |
|   /* istanbul ignore if */
 | |
|   if (isServer) {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   if (!instance) {
 | |
|     initInstance();
 | |
|   }
 | |
| 
 | |
|   var options = Array.isArray(images) ? {
 | |
|     images: images,
 | |
|     startPosition: startPosition
 | |
|   } : images;
 | |
| 
 | |
|   _extends(instance, defaultConfig, options);
 | |
| 
 | |
|   instance.$once('input', function (show) {
 | |
|     instance.value = show;
 | |
|   });
 | |
|   instance.$once('closed', function () {
 | |
|     instance.images = [];
 | |
|   });
 | |
| 
 | |
|   if (options.onClose) {
 | |
|     instance.$off('close');
 | |
|     instance.$once('close', options.onClose);
 | |
|   }
 | |
| 
 | |
|   return instance;
 | |
| };
 | |
| 
 | |
| ImagePreview.Component = VueImagePreview;
 | |
| 
 | |
| ImagePreview.install = function () {
 | |
|   Vue.use(VueImagePreview);
 | |
| };
 | |
| 
 | |
| export default ImagePreview; | 
