"use strict";
var common_vendor = require("../../../../common/vendor.js");
var uni_modules_wotDesignUni_components_common_util = require("../common/util.js");
const toastDefaultOptionKey = "__TOAST_OPTION__";
const defaultOptions = {
duration: 2e3,
show: false
};
const None = Symbol("None");
function useToast(selector = "") {
const toastOptionKey = getToastOptionKey(selector);
const toastOption = common_vendor.inject(toastOptionKey, common_vendor.ref(None));
if (toastOption.value === None) {
toastOption.value = defaultOptions;
common_vendor.provide(toastOptionKey, toastOption);
}
let timer = null;
const createMethod = (toastOptions) => {
return (options) => {
return show(uni_modules_wotDesignUni_components_common_util.deepMerge(toastOptions, typeof options === "string" ? { msg: options } : options));
};
};
const show = (option) => {
const options = uni_modules_wotDesignUni_components_common_util.deepMerge(defaultOptions, typeof option === "string" ? { msg: option } : option);
toastOption.value = uni_modules_wotDesignUni_components_common_util.deepMerge(options, {
show: true
});
timer && clearTimeout(timer);
if (toastOption.value.duration && toastOption.value.duration > 0) {
timer = setTimeout(() => {
timer && clearTimeout(timer);
close();
}, options.duration);
}
};
const loading = createMethod({
iconName: "loading",
duration: 0,
cover: true
});
const success = createMethod({
iconName: "success",
duration: 1500
});
const error = createMethod({ iconName: "error" });
const warning = createMethod({ iconName: "warning" });
const info = createMethod({ iconName: "info" });
const close = () => {
toastOption.value = { show: false };
};
return {
show,
loading,
success,
error,
warning,
info,
close
};
}
const getToastOptionKey = (selector) => {
return selector ? `${toastDefaultOptionKey}${selector}` : toastDefaultOptionKey;
};
const toastIcon = {
success() {
return '';
},
warning() {
return '';
},
info() {
return '';
},
error() {
return '';
}
};
exports.defaultOptions = defaultOptions;
exports.getToastOptionKey = getToastOptionKey;
exports.toastIcon = toastIcon;
exports.useToast = useToast;