vant
Version:
Mobile UI Components built on Vue
96 lines (79 loc) • 2.1 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _vue = _interopRequireDefault(require("vue"));
var _ImagePreview = _interopRequireDefault(require("./ImagePreview"));
var _utils = require("../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,
getContainer: 'body',
startPosition: 0,
swipeDuration: 300,
showIndicators: false,
closeOnPopstate: true,
closeIconPosition: 'top-right'
};
var initInstance = function initInstance() {
instance = new (_vue.default.extend(_ImagePreview.default))({
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 (_utils.isServer) {
return;
}
if (!instance) {
initInstance();
}
var options = Array.isArray(images) ? {
images: images,
startPosition: startPosition
} : images;
(0, _extends2.default)(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 = _ImagePreview.default;
ImagePreview.install = function () {
_vue.default.use(_ImagePreview.default);
};
var _default = ImagePreview;
exports.default = _default;