index.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import Vue from 'vue';
  3. import VueImagePreview from './ImagePreview';
  4. import { isServer } from '../utils';
  5. var instance;
  6. var defaultConfig = {
  7. images: [],
  8. loop: true,
  9. value: true,
  10. minZoom: 1 / 3,
  11. maxZoom: 3,
  12. className: '',
  13. lazyLoad: false,
  14. showIndex: true,
  15. asyncClose: false,
  16. startPosition: 0,
  17. showIndicators: false
  18. };
  19. var initInstance = function initInstance() {
  20. instance = new (Vue.extend(VueImagePreview))({
  21. el: document.createElement('div')
  22. });
  23. document.body.appendChild(instance.$el);
  24. };
  25. var ImagePreview = function ImagePreview(images, startPosition) {
  26. if (startPosition === void 0) {
  27. startPosition = 0;
  28. }
  29. /* istanbul ignore if */
  30. if (isServer) {
  31. return;
  32. }
  33. if (!instance) {
  34. initInstance();
  35. }
  36. var options = Array.isArray(images) ? {
  37. images: images,
  38. startPosition: startPosition
  39. } : images;
  40. _extends(instance, defaultConfig, options);
  41. instance.$once('input', function (show) {
  42. instance.value = show;
  43. });
  44. if (options.onClose) {
  45. instance.$once('close', options.onClose);
  46. }
  47. return instance;
  48. };
  49. ImagePreview.install = function () {
  50. Vue.use(VueImagePreview);
  51. };
  52. export default ImagePreview;