"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 _Toast = _interopRequireDefault(require("./Toast")); var _utils = require("../utils"); var _node = require("../utils/dom/node"); var defaultOptions = { icon: '', type: 'text', // @deprecated mask: false, value: true, message: '', className: '', overlay: false, onClose: null, onOpened: null, duration: 2000, iconPrefix: undefined, position: 'middle', transition: 'van-fade', forbidClick: false, loadingType: undefined, getContainer: 'body', overlayStyle: null, closeOnClick: false, closeOnClickOverlay: false }; // default options of specific type var defaultOptionsMap = {}; var queue = []; var multiple = false; var currentOptions = (0, _extends2.default)({}, defaultOptions); function parseOptions(message) { if ((0, _utils.isObject)(message)) { return message; } return { message: message }; } function isInDocument(element) { return document.body.contains(element); } function createInstance() { /* istanbul ignore if */ if (_utils.isServer) { return {}; } queue = queue.filter(function (item) { return !item.$el.parentNode || isInDocument(item.$el); }); if (!queue.length || multiple) { var toast = new (_vue.default.extend(_Toast.default))({ el: document.createElement('div') }); toast.$on('input', function (value) { toast.value = value; }); queue.push(toast); } return queue[queue.length - 1]; } // transform toast options to popup props function transformOptions(options) { return (0, _extends2.default)({}, options, { overlay: options.mask || options.overlay, mask: undefined, duration: undefined }); } function Toast(options) { if (options === void 0) { options = {}; } var toast = createInstance(); // should add z-index if previous toast has not disappeared if (toast.value) { toast.updateZIndex(); } options = parseOptions(options); options = (0, _extends2.default)({}, currentOptions, defaultOptionsMap[options.type || currentOptions.type], options); if (process.env.NODE_ENV === 'development' && options.mask) { console.warn('[Vant] Toast: "mask" option is deprecated, use "overlay" option instead.'); } options.clear = function () { toast.value = false; if (options.onClose) { options.onClose(); options.onClose = null; } if (multiple && !_utils.isServer) { toast.$on('closed', function () { clearTimeout(toast.timer); queue = queue.filter(function (item) { return item !== toast; }); (0, _node.removeNode)(toast.$el); toast.$destroy(); }); } }; (0, _extends2.default)(toast, transformOptions(options)); clearTimeout(toast.timer); if (options.duration > 0) { toast.timer = setTimeout(function () { toast.clear(); }, options.duration); } return toast; } var createMethod = function createMethod(type) { return function (options) { return Toast((0, _extends2.default)({ type: type }, parseOptions(options))); }; }; ['loading', 'success', 'fail'].forEach(function (method) { Toast[method] = createMethod(method); }); Toast.clear = function (all) { if (queue.length) { if (all) { queue.forEach(function (toast) { toast.clear(); }); queue = []; } else if (!multiple) { queue[0].clear(); } else { queue.shift().clear(); } } }; Toast.setDefaultOptions = function (type, options) { if (typeof type === 'string') { defaultOptionsMap[type] = options; } else { (0, _extends2.default)(currentOptions, type); } }; Toast.resetDefaultOptions = function (type) { if (typeof type === 'string') { defaultOptionsMap[type] = null; } else { currentOptions = (0, _extends2.default)({}, defaultOptions); defaultOptionsMap = {}; } }; Toast.allowMultiple = function (value) { if (value === void 0) { value = true; } multiple = value; }; Toast.install = function () { _vue.default.use(_Toast.default); }; _vue.default.prototype.$toast = Toast; var _default = Toast; exports.default = _default;