UNPKG

5.24 kBJavaScriptView Raw
1var __create = Object.create;
2var __defProp = Object.defineProperty;
3var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4var __getOwnPropNames = Object.getOwnPropertyNames;
5var __getProtoOf = Object.getPrototypeOf;
6var __hasOwnProp = Object.prototype.hasOwnProperty;
7var __export = (target, all) => {
8 for (var name in all)
9 __defProp(target, name, { get: all[name], enumerable: true });
10};
11var __copyProps = (to, from, except, desc) => {
12 if (from && typeof from === "object" || typeof from === "function") {
13 for (let key of __getOwnPropNames(from))
14 if (!__hasOwnProp.call(to, key) && key !== except)
15 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16 }
17 return to;
18};
19var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20 // If the importer is in node compatibility mode or this is not an ESM
21 // file that has been converted to a CommonJS file using a Babel-
22 // compatible transform (i.e. "__esModule" has not been set), then set
23 // "default" to the CommonJS "module.exports" for node compatibility.
24 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25 mod
26));
27var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28var stdin_exports = {};
29__export(stdin_exports, {
30 allowMultipleToast: () => allowMultipleToast,
31 closeToast: () => closeToast,
32 resetToastDefaultOptions: () => resetToastDefaultOptions,
33 setToastDefaultOptions: () => setToastDefaultOptions,
34 showFailToast: () => showFailToast,
35 showLoadingToast: () => showLoadingToast,
36 showSuccessToast: () => showSuccessToast,
37 showToast: () => showToast
38});
39module.exports = __toCommonJS(stdin_exports);
40var import_vue = require("vue");
41var import_utils = require("../utils");
42var import_mount_component = require("../utils/mount-component");
43var import_Toast = __toESM(require("./Toast"));
44const defaultOptions = {
45 icon: "",
46 type: "text",
47 message: "",
48 className: "",
49 overlay: false,
50 onClose: void 0,
51 onOpened: void 0,
52 duration: 2e3,
53 teleport: "body",
54 iconSize: void 0,
55 iconPrefix: void 0,
56 position: "middle",
57 transition: "van-fade",
58 forbidClick: false,
59 loadingType: void 0,
60 overlayClass: "",
61 overlayStyle: void 0,
62 closeOnClick: false,
63 closeOnClickOverlay: false
64};
65let queue = [];
66let allowMultiple = false;
67let currentOptions = (0, import_utils.extend)({}, defaultOptions);
68const defaultOptionsMap = /* @__PURE__ */ new Map();
69function parseOptions(message) {
70 if ((0, import_utils.isObject)(message)) {
71 return message;
72 }
73 return {
74 message
75 };
76}
77function createInstance() {
78 const {
79 instance,
80 unmount
81 } = (0, import_mount_component.mountComponent)({
82 setup() {
83 const message = (0, import_vue.ref)("");
84 const {
85 open,
86 state,
87 close,
88 toggle
89 } = (0, import_mount_component.usePopupState)();
90 const onClosed = () => {
91 if (allowMultiple) {
92 queue = queue.filter((item) => item !== instance);
93 unmount();
94 }
95 };
96 const render = () => {
97 const attrs = {
98 onClosed,
99 "onUpdate:show": toggle
100 };
101 return (0, import_vue.createVNode)(import_Toast.default, (0, import_vue.mergeProps)(state, attrs), null);
102 };
103 (0, import_vue.watch)(message, (val) => {
104 state.message = val;
105 });
106 (0, import_vue.getCurrentInstance)().render = render;
107 return {
108 open,
109 close,
110 message
111 };
112 }
113 });
114 return instance;
115}
116function getInstance() {
117 if (!queue.length || allowMultiple) {
118 const instance = createInstance();
119 queue.push(instance);
120 }
121 return queue[queue.length - 1];
122}
123function showToast(options = {}) {
124 if (!import_utils.inBrowser) {
125 return {};
126 }
127 const toast = getInstance();
128 const parsedOptions = parseOptions(options);
129 toast.open((0, import_utils.extend)({}, currentOptions, defaultOptionsMap.get(parsedOptions.type || currentOptions.type), parsedOptions));
130 return toast;
131}
132const createMethod = (type) => (options) => showToast((0, import_utils.extend)({
133 type
134}, parseOptions(options)));
135const showLoadingToast = createMethod("loading");
136const showSuccessToast = createMethod("success");
137const showFailToast = createMethod("fail");
138const closeToast = (all) => {
139 var _a;
140 if (queue.length) {
141 if (all) {
142 queue.forEach((toast) => {
143 toast.close();
144 });
145 queue = [];
146 } else if (!allowMultiple) {
147 queue[0].close();
148 } else {
149 (_a = queue.shift()) == null ? void 0 : _a.close();
150 }
151 }
152};
153function setToastDefaultOptions(type, options) {
154 if (typeof type === "string") {
155 defaultOptionsMap.set(type, options);
156 } else {
157 (0, import_utils.extend)(currentOptions, type);
158 }
159}
160const resetToastDefaultOptions = (type) => {
161 if (typeof type === "string") {
162 defaultOptionsMap.delete(type);
163 } else {
164 currentOptions = (0, import_utils.extend)({}, defaultOptions);
165 defaultOptionsMap.clear();
166 }
167};
168const allowMultipleToast = (value = true) => {
169 allowMultiple = value;
170};