UNPKG

v3hooks

Version:
1,689 lines (1,560 loc) 138 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } var _assign = function __assign() { _assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return _assign.apply(this, arguments); }; function __rest(s, e) { var t = {}; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; } if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; } function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _ = { label: 0, sent: function sent() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { ar.push(r.value); } } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; } function __spreadArray(to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || from); } /** * 防抖 * @param fn * @param delay * @returns */ var debounce = function (fn, delay) { var timer = null; return function () { var _this = this; var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (timer) clearTimeout(timer); timer = setTimeout(function () { // @ts-ignore fn.call.apply(fn, __spreadArray([_this], __read(args))); }, delay); }; }; /** * 节流 * @param fn * @param delay * @returns */ var throttle = function (fn, delay) { var oldNow = Date.now(); return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var currNow = Date.now(); if (currNow - oldNow < delay) return; oldNow = currNow; // @ts-ignore fn.call.apply(fn, __spreadArray([this], __read(args))); }; }; /** * 防抖+节流 * @param fn * @param DBdelay * @param TRdelay * @returns */ var throttleAndDeBounce = function (fn, DBdelay, TRdelay) { var oldNow = Date.now(); var timer = null; return function () { var _this = this; var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var currNow = Date.now(); if (currNow - oldNow < TRdelay) { if (timer) clearTimeout(timer); timer = setTimeout(function () { oldNow = currNow; // @ts-ignore fn.call.apply(fn, __spreadArray([_this], __read(args))); }, DBdelay); return; } oldNow = currNow; // @ts-ignore fn.call.apply(fn, __spreadArray([this], __read(args))); }; }; /** * 按照类型格式数据的常量Map */ var TypeSerializers = { boolean: { read: function (v) { return v != null ? v === 'true' : null; }, write: function (v) { return String(v); }, }, object: { read: function (v) { return v ? JSON.parse(v) : null; }, write: function (v) { return JSON.stringify(v); }, }, number: { read: function (v) { return v != null ? Number.parseFloat(v) : null; }, write: function (v) { return String(v); }, }, any: { read: function (v) { return (v != null && v !== 'null') ? v : null; }, write: function (v) { return String(v); }, }, string: { read: function (v) { return v != null ? v : null; }, write: function (v) { return String(v); }, }, }; /** * 获取数据类型 * @param defaultValue * @returns */ var getValueType = function (defaultValue) { return defaultValue == null ? 'any' : typeof defaultValue === 'boolean' ? 'boolean' : typeof defaultValue === 'string' ? 'string' : typeof defaultValue === 'object' ? 'object' : Array.isArray(defaultValue) ? 'object' : !Number.isNaN(defaultValue) ? 'number' : 'any'; }; /** * loading的延迟计算 * @param startTime * @param loadingDelay * @param args * @returns */ var loadingDelayTimer = null; var loadingDelayAsync = function (loadingDelay) { clearLoadingDelayTimer(); return new Promise(function (resolve) { loadingDelayTimer = setTimeout(function () { return resolve(loadingDelayTimer); }, Math.max(loadingDelay, 0)); }); }; /** * 取消loading延迟计算Timer */ var clearLoadingDelayTimer = function () { if (loadingDelayTimer) { clearTimeout(loadingDelayTimer); } }; var defaultParams = { method: 'POST', mode: 'cors', cache: 'no-cache', credentials: 'same-origin', headers: { 'Content-Type': 'application/json' }, redirect: 'follow', referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url }; /** * 使用fetch发起请求 * @param Params * @returns FetchData */ function fetchData(p) { var params = _assign(_assign({}, defaultParams), p); return fetch(params.url, params); } var argsSymbolKey = 'argsKey'; var serveiceProxy = function (service, args, reqParamsCache) { return __awaiter(void 0, void 0, void 0, function () { var response, error_1; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 5, , 6]); if (args.length > 0) { reqParamsCache.put(argsSymbolKey, args); } if (!(Object.prototype.toString.call(service) === "[object Function]")) return [3 /*break*/, 2]; return [4 /*yield*/, service.apply(void 0, __spreadArray([], __read(args)))]; case 1: return [2 /*return*/, _a.sent()]; case 2: if (!(Object.prototype.toString.call(service) === "[object Object]")) return [3 /*break*/, 4]; return [4 /*yield*/, fetchData(service)]; case 3: response = _a.sent(); return [2 /*return*/, response.json()]; case 4: return [3 /*break*/, 6]; case 5: error_1 = _a.sent(); return [2 /*return*/, Promise.reject(error_1)]; case 6: return [2 /*return*/]; } }); }); }; /** * 执行轮询 */ var Polling = /** @class */ (function () { function Polling() { this.isActive = false; this.pollingInterval = 0; this.pollingWhenHidden = true; } Polling.prototype.run = function (run, pollingInterval, pollingWhenHidden) { this.isActive = true; this.pollingInterval = pollingInterval; this.pollingWhenHidden = pollingWhenHidden; this.task(run); }; Polling.prototype.cancel = function () { this.isActive = false; }; Polling.prototype.task = function (run) { var _this = this; setTimeout(function () { if (!_this.isActive) return; if (_this.pollingWhenHidden) { run(); } else { if (!document.hidden) { run(); } } _this.task(run); }, this.pollingInterval); }; return Polling; }()); var Polling$1 = new Polling(); /** * 监听屏幕是否聚焦 * @param run * @param focusTimespan */ var visibility = function (run, focusTimespan) { var handler = function () { if (!document.hidden) { run(); } }; if (focusTimespan !== undefined && typeof (focusTimespan) === 'number') { handler = throttle(handler, focusTimespan); } document.addEventListener('visibilitychange', handler); }; var handleResCache = function (data, resCache, cacheKey, cacheTime) { if (cacheKey) { if (resCache.has(cacheKey)) { resCache.put(cacheKey, data); return; } resCache.put(cacheKey, data, cacheTime); } }; var MemoryCache = /** @class */ (function () { function MemoryCache(options) { this.memoryCache = new Map(); this.timer = {}; this.maxCache = (options === null || options === void 0 ? void 0 : options.maxCache) || 1000; } /** * 增加缓存 * @param key * @param value * @param time * @param timeoutCallback */ MemoryCache.prototype.put = function (key, value, time, timeoutCallback) { var _this = this; if (!key || !value) { throw new Error('key & value is required'); } if (this.size() >= this.maxCache) { this.del(__spreadArray([], __read(this.memoryCache))[0][0]); } this.memoryCache.set(key, value); if (time && typeof time === 'number' && time > 0) { this.timer[key] = setTimeout(function () { _this.del(key); delete _this.timer[key]; timeoutCallback && timeoutCallback(); }, time); } }; /** * 获取缓存 * @param key * @returns */ MemoryCache.prototype.get = function (key) { if (!this.has(key)) return null; return this.memoryCache.get(key); }; /** * 判断是否有缓存 * @param key * @returns */ MemoryCache.prototype.has = function (key) { return this.memoryCache.has(key); }; /** * 删除缓存 * @param key * @returns */ MemoryCache.prototype.del = function (key) { if (!this.has(key)) return; if (this.timer[key]) { clearTimeout(this.timer[key]); delete this.timer[key]; } this.memoryCache.delete(key); }; /** * 清除缓存 * @returns */ MemoryCache.prototype.clear = function () { if (this.size() <= 0) return; this.memoryCache.clear(); for (var i in this.timer) { clearTimeout(this.timer[i]); delete this.timer[i]; } }; /** * 获取缓存条数 * @returns */ MemoryCache.prototype.size = function () { return this.memoryCache.size; }; return MemoryCache; }()); // service请求参数缓存 var reqCache = new MemoryCache(); // 请求参数缓存 var resCache = new MemoryCache(); // 默认参数 var defaultOptions$7 = { manual: false, initialData: undefined, onSuccess: function () { }, onError: function () { }, formatResult: function (data) { return data; }, defaultParams: [], pollingInterval: 0, pollingWhenHidden: true, ready: undefined, debounceInterval: undefined, throttleInterval: undefined, refreshOnWindowFocus: false, focusTimespan: undefined, loadingDelay: 0, refreshDeps: [], cacheTime: 300000, staleTime: 0, }; var useRequest = function (service, options) { var _a = _assign(_assign({}, defaultOptions$7), options), manual = _a.manual, initialData = _a.initialData, onSuccess = _a.onSuccess, onError = _a.onError, formatResult = _a.formatResult, defaultParams = _a.defaultParams, pollingInterval = _a.pollingInterval, pollingWhenHidden = _a.pollingWhenHidden, ready = _a.ready, debounceInterval = _a.debounceInterval, throttleInterval = _a.throttleInterval, refreshOnWindowFocus = _a.refreshOnWindowFocus, focusTimespan = _a.focusTimespan, loadingDelay = _a.loadingDelay, refreshDeps = _a.refreshDeps, cacheKey = _a.cacheKey, cacheTime = _a.cacheTime, staleTime = _a.staleTime; var data = vue.shallowRef(initialData); var error = vue.ref(undefined); var loading = vue.ref(false); var latestTime = vue.ref(0); // 取消轮询 var cancel = function () { return Polling$1.cancel(); }; // 执行轮询 var pollingRun = function () { if (pollingInterval < 4 || Polling$1.isActive) { return; } Polling$1.run(run, pollingInterval, pollingWhenHidden); }; // 执行网络请求 var run = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } // 请求开始时间 var reqTime = +new Date(); // 判断开启缓存 && 有缓存,先返回缓存 // 缓存修改并不会阻止顺序执行,service请求会继续发出 // 也就是所谓SWR能力 if (cacheKey && resCache.has(cacheKey)) { data.value = resCache.get(cacheKey); if (latestTime.value + staleTime > reqTime) { return; } } else if (loadingDelay > 0) { loadingDelayAsync(loadingDelay).then(function () { return loading.value = true; }); } else { loading.value = true; } // 更新最新一次请求开始时间 latestTime.value = reqTime; serveiceProxy(service, args, reqCache).then(function (responseData) { clearLoadingDelayTimer(); responseData = formatResult(responseData); data.value = responseData; loading.value = false; onSuccess(responseData, args); // 处理缓存 handleResCache(responseData, resCache, cacheKey, cacheTime); }).catch(function (e) { loading.value = false; error.value = e; onError(error.value, args); }); // 非激活状态执行轮询 pollingRun(); }; var refresh = function () { var args = reqCache.get(argsSymbolKey) || []; run.apply(void 0, __spreadArray([], __read(args))); }; // 是否自动执行 if (!manual && ready === undefined) { // 是否携带默认参数 defaultParams.length > 0 ? run.apply(void 0, __spreadArray([], __read(defaultParams))) : run(); // 是否执行轮询 pollingRun(); } //监听依赖请求是否执行 vue.watch(function () { return ready; }, function (curr) { if ((curr === null || curr === void 0 ? void 0 : curr.value) === true) { refresh(); } }, { deep: true }); //多个监听依赖请求是否执行 vue.watch(refreshDeps, function () { return refresh(); }, { deep: true }); // 防抖+节流 if (debounceInterval !== undefined && throttleInterval !== undefined && typeof (debounceInterval) === 'number' && typeof (throttleInterval) === 'number') { run = throttleAndDeBounce(run, debounceInterval, throttleInterval); } else { // 防抖 if (debounceInterval !== undefined && typeof (debounceInterval) === 'number') { run = debounce(run, debounceInterval); } // 节流 if (throttleInterval !== undefined && typeof (throttleInterval) === 'number') { run = throttle(run, throttleInterval); } } // 屏幕聚焦重新请求 if (refreshOnWindowFocus === true) { visibility(refresh, focusTimespan); } // 突变改变data值 var mutate = function (state) { data.value = state; }; // 返回值 var res = { data: data, error: error, run: run, refresh: refresh, loading: loading, cancel: cancel, mutate: mutate }; return res; }; var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; var dayjs_min = {exports: {}}; (function (module, exports) { !function (t, e) { module.exports = e() ; }(commonjsGlobal, function () { var t = 1e3, e = 6e4, n = 36e5, r = "millisecond", i = "second", s = "minute", u = "hour", a = "day", o = "week", f = "month", h = "quarter", c = "year", d = "date", $ = "Invalid Date", l = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_") }, m = function m(t, e, n) { var r = String(t); return !r || r.length >= e ? t : "" + Array(e + 1 - r.length).join(n) + t; }, g = { s: m, z: function z(t) { var e = -t.utcOffset(), n = Math.abs(e), r = Math.floor(n / 60), i = n % 60; return (e <= 0 ? "+" : "-") + m(r, 2, "0") + ":" + m(i, 2, "0"); }, m: function t(e, n) { if (e.date() < n.date()) return -t(n, e); var r = 12 * (n.year() - e.year()) + (n.month() - e.month()), i = e.clone().add(r, f), s = n - i < 0, u = e.clone().add(r + (s ? -1 : 1), f); return +(-(r + (n - i) / (s ? i - u : u - i)) || 0); }, a: function a(t) { return t < 0 ? Math.ceil(t) || 0 : Math.floor(t); }, p: function p(t) { return { M: f, y: c, w: o, d: a, D: d, h: u, m: s, s: i, ms: r, Q: h }[t] || String(t || "").toLowerCase().replace(/s$/, ""); }, u: function u(t) { return void 0 === t; } }, D = "en", v = {}; v[D] = M; var p = function p(t) { return t instanceof _; }, S = function S(t, e, n) { var r; if (!t) return D; if ("string" == typeof t) v[t] && (r = t), e && (v[t] = e, r = t);else { var i = t.name; v[i] = t, r = i; } return !n && r && (D = r), r || !n && D; }, w = function w(t, e) { if (p(t)) return t.clone(); var n = "object" == _typeof(e) ? e : {}; return n.date = t, n.args = arguments, new _(n); }, O = g; O.l = S, O.i = p, O.w = function (t, e) { return w(t, { locale: e.$L, utc: e.$u, x: e.$x, $offset: e.$offset }); }; var _ = function () { function M(t) { this.$L = S(t.locale, null, !0), this.parse(t); } var m = M.prototype; return m.parse = function (t) { this.$d = function (t) { var e = t.date, n = t.utc; if (null === e) return new Date(NaN); if (O.u(e)) return new Date(); if (e instanceof Date) return new Date(e); if ("string" == typeof e && !/Z$/i.test(e)) { var r = e.match(l); if (r) { var i = r[2] - 1 || 0, s = (r[7] || "0").substring(0, 3); return n ? new Date(Date.UTC(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s)) : new Date(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s); } } return new Date(e); }(t), this.$x = t.x || {}, this.init(); }, m.init = function () { var t = this.$d; this.$y = t.getFullYear(), this.$M = t.getMonth(), this.$D = t.getDate(), this.$W = t.getDay(), this.$H = t.getHours(), this.$m = t.getMinutes(), this.$s = t.getSeconds(), this.$ms = t.getMilliseconds(); }, m.$utils = function () { return O; }, m.isValid = function () { return !(this.$d.toString() === $); }, m.isSame = function (t, e) { var n = w(t); return this.startOf(e) <= n && n <= this.endOf(e); }, m.isAfter = function (t, e) { return w(t) < this.startOf(e); }, m.isBefore = function (t, e) { return this.endOf(e) < w(t); }, m.$g = function (t, e, n) { return O.u(t) ? this[e] : this.set(n, t); }, m.unix = function () { return Math.floor(this.valueOf() / 1e3); }, m.valueOf = function () { return this.$d.getTime(); }, m.startOf = function (t, e) { var n = this, r = !!O.u(e) || e, h = O.p(t), $ = function $(t, e) { var i = O.w(n.$u ? Date.UTC(n.$y, e, t) : new Date(n.$y, e, t), n); return r ? i : i.endOf(a); }, l = function l(t, e) { return O.w(n.toDate()[t].apply(n.toDate("s"), (r ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e)), n); }, y = this.$W, M = this.$M, m = this.$D, g = "set" + (this.$u ? "UTC" : ""); switch (h) { case c: return r ? $(1, 0) : $(31, 11); case f: return r ? $(1, M) : $(0, M + 1); case o: var D = this.$locale().weekStart || 0, v = (y < D ? y + 7 : y) - D; return $(r ? m - v : m + (6 - v), M); case a: case d: return l(g + "Hours", 0); case u: return l(g + "Minutes", 1); case s: return l(g + "Seconds", 2); case i: return l(g + "Milliseconds", 3); default: return this.clone(); } }, m.endOf = function (t) { return this.startOf(t, !1); }, m.$set = function (t, e) { var n, o = O.p(t), h = "set" + (this.$u ? "UTC" : ""), $ = (n = {}, n[a] = h + "Date", n[d] = h + "Date", n[f] = h + "Month", n[c] = h + "FullYear", n[u] = h + "Hours", n[s] = h + "Minutes", n[i] = h + "Seconds", n[r] = h + "Milliseconds", n)[o], l = o === a ? this.$D + (e - this.$W) : e; if (o === f || o === c) { var y = this.clone().set(d, 1); y.$d[$](l), y.init(), this.$d = y.set(d, Math.min(this.$D, y.daysInMonth())).$d; } else $ && this.$d[$](l); return this.init(), this; }, m.set = function (t, e) { return this.clone().$set(t, e); }, m.get = function (t) { return this[O.p(t)](); }, m.add = function (r, h) { var d, $ = this; r = Number(r); var l = O.p(h), y = function y(t) { var e = w($); return O.w(e.date(e.date() + Math.round(t * r)), $); }; if (l === f) return this.set(f, this.$M + r); if (l === c) return this.set(c, this.$y + r); if (l === a) return y(1); if (l === o) return y(7); var M = (d = {}, d[s] = e, d[u] = n, d[i] = t, d)[l] || 1, m = this.$d.getTime() + r * M; return O.w(m, this); }, m.subtract = function (t, e) { return this.add(-1 * t, e); }, m.format = function (t) { var e = this, n = this.$locale(); if (!this.isValid()) return n.invalidDate || $; var r = t || "YYYY-MM-DDTHH:mm:ssZ", i = O.z(this), s = this.$H, u = this.$m, a = this.$M, o = n.weekdays, f = n.months, h = function h(t, n, i, s) { return t && (t[n] || t(e, r)) || i[n].substr(0, s); }, c = function c(t) { return O.s(s % 12 || 12, t, "0"); }, d = n.meridiem || function (t, e, n) { var r = t < 12 ? "AM" : "PM"; return n ? r.toLowerCase() : r; }, l = { YY: String(this.$y).slice(-2), YYYY: this.$y, M: a + 1, MM: O.s(a + 1, 2, "0"), MMM: h(n.monthsShort, a, f, 3), MMMM: h(f, a), D: this.$D, DD: O.s(this.$D, 2, "0"), d: String(this.$W), dd: h(n.weekdaysMin, this.$W, o, 2), ddd: h(n.weekdaysShort, this.$W, o, 3), dddd: o[this.$W], H: String(s), HH: O.s(s, 2, "0"), h: c(1), hh: c(2), a: d(s, u, !0), A: d(s, u, !1), m: String(u), mm: O.s(u, 2, "0"), s: String(this.$s), ss: O.s(this.$s, 2, "0"), SSS: O.s(this.$ms, 3, "0"), Z: i }; return r.replace(y, function (t, e) { return e || l[t] || i.replace(":", ""); }); }, m.utcOffset = function () { return 15 * -Math.round(this.$d.getTimezoneOffset() / 15); }, m.diff = function (r, d, $) { var l, y = O.p(d), M = w(r), m = (M.utcOffset() - this.utcOffset()) * e, g = this - M, D = O.m(this, M); return D = (l = {}, l[c] = D / 12, l[f] = D, l[h] = D / 3, l[o] = (g - m) / 6048e5, l[a] = (g - m) / 864e5, l[u] = g / n, l[s] = g / e, l[i] = g / t, l)[y] || g, $ ? D : O.a(D); }, m.daysInMonth = function () { return this.endOf(f).$D; }, m.$locale = function () { return v[this.$L]; }, m.locale = function (t, e) { if (!t) return this.$L; var n = this.clone(), r = S(t, e, !0); return r && (n.$L = r), n; }, m.clone = function () { return O.w(this.$d, this); }, m.toDate = function () { return new Date(this.valueOf()); }, m.toJSON = function () { return this.isValid() ? this.toISOString() : null; }, m.toISOString = function () { return this.$d.toISOString(); }, m.toString = function () { return this.$d.toUTCString(); }, M; }(), b = _.prototype; return w.prototype = b, [["$ms", r], ["$s", i], ["$m", s], ["$H", u], ["$W", a], ["$M", f], ["$y", c], ["$D", d]].forEach(function (t) { b[t[1]] = function (e) { return this.$g(e, t[0], t[1]); }; }), w.extend = function (t, e) { return t.$i || (t(e, _, w), t.$i = !0), w; }, w.locale = S, w.isDayjs = p, w.unix = function (t) { return w(1e3 * t); }, w.en = v[D], w.Ls = v, w.p = {}, w; }); })(dayjs_min); var dayjs = dayjs_min.exports; var defaultOptions$6 = { format: 'YYYY-MM-DD HH:mm:ss', method: 'format' }; function useDate(initialValue, options) { var state = vue.ref(); var value = initialValue || +new Date(); var _a = _assign(_assign({}, defaultOptions$6), options), format = _a.format, method = _a.method, methodParam = _a.methodParam; var refresh = function (refreshValue) { console.log(refreshValue); value = refreshValue || +new Date(); switch (method) { case 'format': state.value = dayjs(value).format(format); break; case undefined: break; default: var data_1 = dayjs(value); if (methodParam) { data_1 = data_1[method](methodParam); if (options && options.format) { data_1 = data_1.format(format); } } state.value = data_1; } }; refresh(); var data = vue.readonly(state); return { data: data, refresh: refresh }; } var defaultDelay$3 = 1000; /** * 处理防抖函数 * @param fn * @param delay * @returns */ var useDebounceFn = function (fn, delay) { var run = debounce(fn, typeof (delay) === 'number' ? delay : defaultDelay$3); return { run: run }; }; // import { debounce } from '../utils' // 默认值 var defaultDelay$2 = 1000; /** * 处理防抖值 * @param value * @param delay * @returns */ var useDebounce = function (value, delay) { delay = delay || defaultDelay$2; var res = vue.ref(value.value); // 利用useDebounceFn来简化处理值 var run = useDebounceFn(function () { return res.value = value.value; }, delay).run; vue.watch(value, function () { return run(); }, { deep: true }); return res; }; var defaultDelay$1 = 1000; /** * 处理节流函数 * @param fn * @param delay * @returns */ var useThrottleFn = function (fn, delay) { var run = throttle(fn, typeof (delay) === 'number' ? delay : defaultDelay$1); return { run: run }; }; // import { debounce } from '../utils' // 默认值 var defaultDelay = 1000; /** * 处理防抖值 * @param value * @param delay * @returns */ var useThrottle = function (value, delay) { delay = delay || defaultDelay; var res = vue.ref(value.value); // 利用useDebounceFn来简化处理值 var run = useThrottleFn(function () { return res.value = value.value; }, delay).run; vue.watch(value, function () { return run(); }, { deep: true }); return res; }; /** * 用于在N个状态值间切换。 * @param args * @returns */ function useToggle() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var argsStateArr = args.map(function (variable) { return vue.isRef(variable) ? variable : vue.ref(variable); }); var initialValue = argsStateArr[0].value; var state = vue.ref(initialValue); var activeState = argsStateArr[0]; // 1: 监听当前被激活的state异步 // 2: 如果当前的异步发生改变则修改state vue.watch([activeState], function () { state.value = activeState.value; }, { deep: true }); var currIndex = 0; var len = args.length; var toggle = function (param) { // 判定是否在参数里 if (param !== undefined && args.includes(param)) { state.value = vue.isRef(param) ? param.value : param; activeState = vue.isRef(param) ? param : vue.ref(param); return; } // 顺序变化 currIndex = currIndex + 1 > len - 1 ? 0 : currIndex + 1; state.value = argsStateArr[currIndex].value; activeState = argsStateArr[currIndex]; }; var createHandle = function () { return argsStateArr.map(function (active, index) { return function () { state.value = active.value; activeState = active; currIndex = index; }; }); }; var actions = __spreadArray([toggle], __read(createHandle())); return [state, actions]; } // 默认值 var defaultValue = false; /** * * @param defaultValue * @returns */ function useBoolean(value) { value = value || defaultValue; var _a = __read(useToggle(value, !value), 2), state = _a[0], _b = __read(_a[1], 1), toggle = _b[0]; var setTrue = function () { return toggle(true); }; var setFalse = function () { return toggle(false); }; var actions = { toggle: toggle, setTrue: setTrue, setFalse: setFalse }; return [state, actions]; } var useVirtualList = function (state, options) { var start = 0; var end = 10; var list = vue.ref(state.slice(start, end)); var itemHeight = options.itemHeight, _a = options.overscan, overscan = _a === void 0 ? 5 : _a; var containerRef = vue.ref(); var totalHeight = (function () { if (typeof itemHeight === 'number') { return state.length * itemHeight; } return state.reduce(function (sum, _, index) { return sum + itemHeight(index); }, 0); })(); // 计算当前视图展示数量 var getViewCapacity = function (containerHeight) { if (typeof itemHeight === 'number') { return Math.ceil(containerHeight / itemHeight); } var sum = 0; var capacity = 0; for (var i = start; i < state.length; i++) { var height = itemHeight(i); sum += height; if (sum >= containerHeight) { capacity = i; break; } } return capacity - start; }; // 获取当前索引 var getOffset = function (scrollTop) { if (typeof itemHeight === 'number') { return Math.floor(scrollTop / itemHeight) + 1; } var sum = 0; var offset = 0; for (var i = 0; i < state.length; i++) { var height = itemHeight(i); sum += height; if (sum >= scrollTop) { offset = i; break; } } return offset + 1; }; // 获取当前索引向上高度 var getDistanceTop = function (index) { if (typeof itemHeight === 'number') { var height_1 = index * itemHeight; return height_1; } var height = state.slice(0, index).reduce(function (sum, _, i) { return sum + itemHeight(i); }, 0); return height; }; var offsetTop = getDistanceTop(start); // 计算展示指定位置 var calculateRange = function () { var element = containerRef.value; if (element) { var offset = getOffset(element.scrollTop); var viewCapacity = getViewCapacity(element.clientHeight); var from = offset - overscan; var to = offset + viewCapacity + overscan; start = from < 0 ? 0 : from; end = to > state.length ? state.length : to; list.value = state.slice(start, end); // 实时计算 offsetTop = getDistanceTop(start); wrapperStyle.marginTop = offsetTop + 'px'; wrapperStyle.height = totalHeight - offsetTop + 'px'; } }; // 滚动容器的外层监听 var containerProps = vue.reactive({ ref: function (ele) { containerRef.value = ele; }, onScroll: function (e) { e.preventDefault(); calculateRange(); }, style: { overflowY: 'auto' }, }); // children 外层包裹器 style var wrapperStyle = vue.reactive({ width: '100%', height: totalHeight - offsetTop + 'px', marginTop: offsetTop + 'px' }); // 快速滚动到指定 index var scrollTo = function (index) { if (containerRef.value) { containerRef.value.scrollTop = getDistanceTop(index); calculateRange(); } }; return { list: list, wrapperStyle: wrapperStyle, containerProps: containerProps, scrollTo: scrollTo }; }; var useDynamicList = function (initialValue) { var uuid = (0); var uuidKeys = vue.ref([]); var setUUID = function (index) { index = index === undefined ? uuidKeys.value.length : index; uuidKeys.value.splice(index, 0, uuid++); }; (function () { initialValue.value.forEach(function () { return setUUID(); }); })(); var resetList = function (resetList) { uuidKeys.value = []; if (vue.isRef(resetList)) { resetList.value.forEach(function () { return setUUID(); }); initialValue = resetList; return; } resetList.forEach(function () { return setUUID(); }); initialValue.value = resetList; }; var insert = function (index, obj) { initialValue.value.splice(index, 0, obj); setUUID(index); }; var merge = function (index, obj) { var _a; obj.forEach(function (active, i) { return setUUID(index + i); }); (_a = initialValue.value).splice.apply(_a, __spreadArray([index, 0], __read(obj))); }; var replace = function (index, obj) { initialValue.value.splice(index, 1, obj); }; var remove = function (index) { uuidKeys.value.splice(index, 1); initialValue.value.splice(index, 1); }; var move = function (oldIndex, newIndex) { var _a, _b; if (oldIndex === newIndex) return; _a = __read([initialValue.value[newIndex], initialValue.value[oldIndex]], 2), initialValue.value[oldIndex] = _a[0], initialValue.value[newIndex] = _a[1]; _b = __read([uuidKeys.value[newIndex], uuidKeys.value[oldIndex]], 2), uuidKeys.value[oldIndex] = _b[0], uuidKeys.value[newIndex] = _b[1]; }; var getKey = function (index) { return uuidKeys.value[index]; }; var getIndex = function (key) { return uuidKeys.value.indexOf(key); }; var push = function (obj) { initialValue.value.push(obj); setUUID(); }; var pop = function () { initialValue.value.pop(); uuidKeys.value.pop(); }; var unshift = function (obj) { initialValue.value.unshift(obj); setUUID(0); }; var shift = function () { initialValue.value.shift(); uuidKeys.value.shift(); }; return { list: initialValue, resetList: resetList, insert: insert, merge: merge, replace: replace, remove: remove, move: move, getKey: getKey, getIndex: getIndex, push: push, pop: pop, unshift: unshift, shift: shift }; }; var storage$1 = localStorage; var defaultOptions$5 = { watch: true }; var useLocalStorage = function (key, initialValue, options) { var watch = _assign(_assign({}, defaultOptions$5), options).watch; var data = vue.ref(); try { if (initialValue !== undefined) { data.value = vue.isRef(initialValue) ? initialValue.value : initialValue; } else { data.value = JSON.parse(storage$1.getItem(key) || '{}'); } } catch (error) { console.log(error, 'useLocalStorage初始化失败'); } var type = getValueType(data.value); // 判断类型取格式化方法 var serializer = TypeSerializers[type]; var setStorage = function () { return storage$1.setItem(key, serializer.write(data.value)); }; // 状态监听 if (watch) { vue.watch(data, function (newValue) { if (newValue === undefined || newValue === null) { storage$1.removeItem(key); return; } setStorage(); }, { deep: true }); } setStorage(); return data; }; var storage = sessionStorage; var defaultOptions$4 = { watch: true }; var useSessionStorage = function (key, initialValue, options) { var watch = _assign(_assign({}, defaultOptions$4), options).watch; var data = vue.ref(); try { if (initialValue !== undefined) { data.value = vue.isRef(initialValue) ? initialValue.value : initialValue; } else { data.value = JSON.parse(storage.getItem(key) || '{}'); } } catch (error) { console.log(error, 'useLocalStorage初始化失败'); } var type = getValueType(data.value); // 判断类型取格式化方法 var serializer = TypeSerializers[type]; var setStorage = function () { return storage.setItem(key, serializer.write(data.value)); }; // 状态监听 if (watch) { vue.watch(data, function (newValue) { if (newValue === undefined || newValue === null) { storage.removeItem(key); return; } setStorage(); }, { deep: true }); } setStorage(); return data; }; var getConnection = function () { var nav = navigator; if (typeof nav !== 'object') return null; return nav.connection || nav.mozConnection || nav.webkitConnection; }; var handlerSetConnection = function () { var connection = getConnection(); return { rtt: connection.rtt, type: connection.type, saveData: connection.saveData, downlink: connection.downlink, downlinkMax: connection.downlinkMax, effectiveType: connection.effectiveType, }; }; var useNetwork = function () { var state = vue.reactive(_assign({ online: navigator.onLine, since: +new Date() }, handlerSetConnection())); var onOnline = function () { state.online = true; state.since = +new Date(); }; var onOffline = function () { state.online = false; state.since = +new Date(); }; var onConnectionChange = function () { var connectionData = handlerSetConnection(); Object.keys(connectionData).forEach(function (key) { var propertyKey = key; state[propertyKey] = connectionData[propertyKey]; }); }; vue.onMounted(function () { var _a; window.addEventListener('online', onOnline); window.addEventListener('offline', onOffline); (_a = getConnection()) === null || _a === void 0 ? void 0 : _a.addEventListener('change', onConnectionChange); }); vue.onUnmounted(function () { var _a; window.removeEventListener('online', onOnline); window.removeEventListener('offline', onOffline); (_a = getConnection()) === null || _a === void 0 ? void 0 : _a.removeEventListener('change', onConnectionChange); }); return state; }; var js_cookie = {exports: {}}; /*! * JavaScript Cookie v2.2.1 * https://github.com/js-cookie/js-cookie * * Copyright 2006, 2015 Klaus Hartl & Fagner Brack * Released under the MIT license */ (function (module, exports) { (function (factory) { var registeredInModuleLoader; { module.exports = factory(); registeredInModuleLoader = true; } if (!registeredInModuleLoader) { var OldCookies = window.Cookies; var api = window.Cookies = factory(); api.noConflict = function () { window.Cookies = OldCookies; return api; }; } })(function () { function extend() { var i = 0; var result = {}; for (; i < arguments.length; i++) { var attributes = arguments[i]; for (var key in attributes) { result[key] = attributes[key]; } } return result; } function decode(s) { return s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent); } function init(converter) { function api() {} function set(key, value, attributes) { if (typeof document === 'undefined') { return; } attributes = extend({ path: '/' }, api.defaults, attributes); if (typeof attributes.expires === 'number') { attributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5); } // We're using "expires" because "max-age" is not supported by IE attributes.expires = attributes.expires ? attributes.expires.toUTCString() : ''; try { var result = JSON.stringify(value); if (/^[\{\[]/.test(result)) { value = result; } } catch (e) {} value = converter.write ? converter.write(value, key) : encodeURIComponent(String(value)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); key = encodeURIComponent(String(key)).replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent).replace(/[\(\)]/g, escape); var stringifiedAttributes = ''; for (var attributeName in attributes) { if (!attributes[attributeName]) { continue; } stringifiedAttributes += '; ' + attributeName; if (attributes[attributeName] === true) { continue; } // Considers RFC 6265 section 5.2: // ... // 3. If the remaining unparsed-attributes contains a %x3B (";") // character: // Consume the characters of the unparsed-attributes up to, // not including, the first %x3B (";") character. // ... stringifiedAttributes += '=' + attributes[attributeName].split(';')[0]; } return document.cookie = key + '=' + value + stringifiedAttributes; } function get(key, json) { if (typeof document === 'undefined') { return; } var jar = {}; // To prevent the for loop in the first place assign an empty array // in case there are no cookies at all. var cookies = document.cookie ? document.cookie.split('; ') : []; var i = 0; for (; i < cookies.length; i++) { var parts = cookies[i].split('='); var cookie = parts.slice(1).join('='); if (!json && cookie.charAt(0) === '"') { cookie = cookie.slice(1, -1); } try { var name = decode(parts[0]); cookie = (converter.read || converter)(cookie, name) || decode(cookie); if (json) { try { cookie = JSON.parse(cookie); } catch (e) {} } jar[name] = cookie; if (key === name) { break; } } catch (e) {} } return key ? jar[key] : jar; } api.set = set; api.get = function (key) { return get(key, false /* read as raw */ ); }; api.getJSON = function (key) { return get(key, true /* read as json */ ); }; api.remove = function (key, attributes) { set(key, '', extend(attributes, { expires: -1 })); }; api.defaults = {}; api.withConverter = init; return api; } return init(function () {}); }); })(js_cookie); var Cookies = js_cookie.exports; var defaultOptions$3 = { watch: false, defaultValue: undefined }; var useCookie = function (key, options) { var _a = _assign(_assign({}, defaultOptions$3), options), watch = _a.watch, defaultValue = _a.defaultValue; var state = vue.ref(Cookies.get(key) || defaultValue); var setCookie = function (value) { Co