index.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. exports.__esModule = true;
  4. exports.default = void 0;
  5. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  6. var _vue = _interopRequireDefault(require("vue"));
  7. var _ImagePreview = _interopRequireDefault(require("./ImagePreview"));
  8. var _utils = require("../utils");
  9. var instance;
  10. var defaultConfig = {
  11. loop: true,
  12. value: true,
  13. images: [],
  14. maxZoom: 3,
  15. minZoom: 1 / 3,
  16. onClose: null,
  17. onChange: null,
  18. className: '',
  19. showIndex: true,
  20. closeable: false,
  21. closeIcon: 'clear',
  22. asyncClose: false,
  23. transition: 'van-fade',
  24. getContainer: 'body',
  25. startPosition: 0,
  26. swipeDuration: 300,
  27. showIndicators: false,
  28. closeOnPopstate: true,
  29. closeIconPosition: 'top-right'
  30. };
  31. var initInstance = function initInstance() {
  32. instance = new (_vue.default.extend(_ImagePreview.default))({
  33. el: document.createElement('div')
  34. });
  35. document.body.appendChild(instance.$el);
  36. instance.$on('change', function (index) {
  37. if (instance.onChange) {
  38. instance.onChange(index);
  39. }
  40. });
  41. instance.$on('scale', function (data) {
  42. if (instance.onScale) {
  43. instance.onScale(data);
  44. }
  45. });
  46. };
  47. var ImagePreview = function ImagePreview(images, startPosition) {
  48. if (startPosition === void 0) {
  49. startPosition = 0;
  50. }
  51. /* istanbul ignore if */
  52. if (_utils.isServer) {
  53. return;
  54. }
  55. if (!instance) {
  56. initInstance();
  57. }
  58. var options = Array.isArray(images) ? {
  59. images: images,
  60. startPosition: startPosition
  61. } : images;
  62. (0, _extends2.default)(instance, defaultConfig, options);
  63. instance.$once('input', function (show) {
  64. instance.value = show;
  65. });
  66. instance.$once('closed', function () {
  67. instance.images = [];
  68. });
  69. if (options.onClose) {
  70. instance.$off('close');
  71. instance.$once('close', options.onClose);
  72. }
  73. return instance;
  74. };
  75. ImagePreview.Component = _ImagePreview.default;
  76. ImagePreview.install = function () {
  77. _vue.default.use(_ImagePreview.default);
  78. };
  79. var _default = ImagePreview;
  80. exports.default = _default;