版博士V2.0程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1 год назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629
  1. import { resolveUnref, until, isString, isFunction, tryOnScopeDispose, isNumber, isClient, resolveRef } from '@vueuse/shared';
  2. import Schema from 'async-validator';
  3. import { ref, computed, watchEffect, shallowRef, watch, unref } from 'vue-demi';
  4. import axios, { AxiosError } from 'axios';
  5. import { camelCase, capitalCase, constantCase, dotCase, headerCase, noCase, paramCase, pascalCase, pathCase, sentenceCase, snakeCase } from 'change-case';
  6. import Cookie from 'universal-cookie';
  7. import { createDrauu } from 'drauu';
  8. import { createEventHook, unrefElement, tryOnScopeDispose as tryOnScopeDispose$1 } from '@vueuse/core';
  9. import { createFocusTrap } from 'focus-trap';
  10. import Fuse from 'fuse.js';
  11. import { get, set, del, update } from 'idb-keyval';
  12. import jwt_decode from 'jwt-decode';
  13. import nprogress from 'nprogress';
  14. import QRCode from 'qrcode';
  15. var __defProp$5 = Object.defineProperty;
  16. var __defProps$2 = Object.defineProperties;
  17. var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
  18. var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
  19. var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
  20. var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
  21. var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  22. var __spreadValues$5 = (a, b) => {
  23. for (var prop in b || (b = {}))
  24. if (__hasOwnProp$5.call(b, prop))
  25. __defNormalProp$5(a, prop, b[prop]);
  26. if (__getOwnPropSymbols$5)
  27. for (var prop of __getOwnPropSymbols$5(b)) {
  28. if (__propIsEnum$5.call(b, prop))
  29. __defNormalProp$5(a, prop, b[prop]);
  30. }
  31. return a;
  32. };
  33. var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
  34. const AsyncValidatorSchema = Schema || Schema.default;
  35. function useAsyncValidator(value, rules, options = {}) {
  36. const errorInfo = ref();
  37. const isFinished = ref(false);
  38. const pass = ref(false);
  39. const errors = computed(() => {
  40. var _a;
  41. return ((_a = errorInfo.value) == null ? void 0 : _a.errors) || [];
  42. });
  43. const errorFields = computed(() => {
  44. var _a;
  45. return ((_a = errorInfo.value) == null ? void 0 : _a.fields) || {};
  46. });
  47. const { validateOption = {} } = options;
  48. watchEffect(async () => {
  49. isFinished.value = false;
  50. pass.value = false;
  51. const validator = new AsyncValidatorSchema(resolveUnref(rules));
  52. try {
  53. await validator.validate(resolveUnref(value), validateOption);
  54. pass.value = true;
  55. errorInfo.value = null;
  56. } catch (err) {
  57. errorInfo.value = err;
  58. } finally {
  59. isFinished.value = true;
  60. }
  61. });
  62. const shell = {
  63. pass,
  64. isFinished,
  65. errorInfo,
  66. errors,
  67. errorFields
  68. };
  69. function waitUntilFinished() {
  70. return new Promise((resolve, reject) => {
  71. until(isFinished).toBe(true).then(() => resolve(shell)).catch((error) => reject(error));
  72. });
  73. }
  74. return __spreadProps$2(__spreadValues$5({}, shell), {
  75. then(onFulfilled, onRejected) {
  76. return waitUntilFinished().then(onFulfilled, onRejected);
  77. }
  78. });
  79. }
  80. var __defProp$4 = Object.defineProperty;
  81. var __defProps$1 = Object.defineProperties;
  82. var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
  83. var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
  84. var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
  85. var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
  86. var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  87. var __spreadValues$4 = (a, b) => {
  88. for (var prop in b || (b = {}))
  89. if (__hasOwnProp$4.call(b, prop))
  90. __defNormalProp$4(a, prop, b[prop]);
  91. if (__getOwnPropSymbols$4)
  92. for (var prop of __getOwnPropSymbols$4(b)) {
  93. if (__propIsEnum$4.call(b, prop))
  94. __defNormalProp$4(a, prop, b[prop]);
  95. }
  96. return a;
  97. };
  98. var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
  99. function useAxios(...args) {
  100. const url = typeof args[0] === "string" ? args[0] : void 0;
  101. const argsPlaceholder = isString(url) ? 1 : 0;
  102. let defaultConfig = {};
  103. let instance = axios;
  104. let options = { immediate: !!argsPlaceholder, shallow: true };
  105. const isAxiosInstance = (val) => !!(val == null ? void 0 : val.request);
  106. if (args.length > 0 + argsPlaceholder) {
  107. if (isAxiosInstance(args[0 + argsPlaceholder]))
  108. instance = args[0 + argsPlaceholder];
  109. else
  110. defaultConfig = args[0 + argsPlaceholder];
  111. }
  112. if (args.length > 1 + argsPlaceholder) {
  113. if (isAxiosInstance(args[1 + argsPlaceholder]))
  114. instance = args[1 + argsPlaceholder];
  115. }
  116. if (args.length === 2 + argsPlaceholder && !isAxiosInstance(args[1 + argsPlaceholder]) || args.length === 3 + argsPlaceholder)
  117. options = args[args.length - 1];
  118. const response = shallowRef();
  119. const data = options.shallow ? shallowRef() : ref();
  120. const isFinished = ref(false);
  121. const isLoading = ref(false);
  122. const isAborted = ref(false);
  123. const error = shallowRef();
  124. const cancelTokenSource = axios.CancelToken.source;
  125. let cancelToken = cancelTokenSource();
  126. const abort = (message) => {
  127. if (isFinished.value || !isLoading.value)
  128. return;
  129. cancelToken.cancel(message);
  130. cancelToken = cancelTokenSource();
  131. isAborted.value = true;
  132. isLoading.value = false;
  133. isFinished.value = false;
  134. };
  135. const loading = (loading2) => {
  136. isLoading.value = loading2;
  137. isFinished.value = !loading2;
  138. };
  139. const waitUntilFinished = () => new Promise((resolve, reject) => {
  140. until(isFinished).toBe(true).then(() => resolve(result)).catch(reject);
  141. });
  142. const then = (onFulfilled, onRejected) => waitUntilFinished().then(onFulfilled, onRejected);
  143. const execute = (executeUrl = url, config = {}) => {
  144. error.value = void 0;
  145. const _url = typeof executeUrl === "string" ? executeUrl : url != null ? url : config.url;
  146. if (_url === void 0) {
  147. error.value = new AxiosError(AxiosError.ERR_INVALID_URL);
  148. isFinished.value = true;
  149. return { then };
  150. }
  151. abort();
  152. loading(true);
  153. instance(_url, __spreadProps$1(__spreadValues$4(__spreadValues$4({}, defaultConfig), typeof executeUrl === "object" ? executeUrl : config), { cancelToken: cancelToken.token })).then((r) => {
  154. var _a;
  155. response.value = r;
  156. const result2 = r.data;
  157. data.value = result2;
  158. (_a = options.onSuccess) == null ? void 0 : _a.call(options, result2);
  159. }).catch((e) => {
  160. var _a;
  161. error.value = e;
  162. (_a = options.onError) == null ? void 0 : _a.call(options, e);
  163. }).finally(() => loading(false));
  164. return { then };
  165. };
  166. if (options.immediate && url)
  167. execute();
  168. const result = {
  169. response,
  170. data,
  171. error,
  172. finished: isFinished,
  173. loading: isLoading,
  174. isFinished,
  175. isLoading,
  176. cancel: abort,
  177. isAborted,
  178. canceled: isAborted,
  179. aborted: isAborted,
  180. isCanceled: isAborted,
  181. abort,
  182. execute
  183. };
  184. return __spreadProps$1(__spreadValues$4({}, result), {
  185. then
  186. });
  187. }
  188. var changeCase = /*#__PURE__*/Object.freeze({
  189. __proto__: null,
  190. camelCase: camelCase,
  191. capitalCase: capitalCase,
  192. constantCase: constantCase,
  193. dotCase: dotCase,
  194. headerCase: headerCase,
  195. noCase: noCase,
  196. paramCase: paramCase,
  197. pascalCase: pascalCase,
  198. pathCase: pathCase,
  199. sentenceCase: sentenceCase,
  200. snakeCase: snakeCase
  201. });
  202. function useChangeCase(input, type, options) {
  203. if (isFunction(input))
  204. return computed(() => changeCase[type](resolveUnref(input), options));
  205. const text = ref(input);
  206. return computed({
  207. get() {
  208. return changeCase[type](text.value, options);
  209. },
  210. set(value) {
  211. text.value = value;
  212. }
  213. });
  214. }
  215. var __defProp$3 = Object.defineProperty;
  216. var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
  217. var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
  218. var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
  219. var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  220. var __spreadValues$3 = (a, b) => {
  221. for (var prop in b || (b = {}))
  222. if (__hasOwnProp$3.call(b, prop))
  223. __defNormalProp$3(a, prop, b[prop]);
  224. if (__getOwnPropSymbols$3)
  225. for (var prop of __getOwnPropSymbols$3(b)) {
  226. if (__propIsEnum$3.call(b, prop))
  227. __defNormalProp$3(a, prop, b[prop]);
  228. }
  229. return a;
  230. };
  231. function createCookies(req) {
  232. const universalCookie = new Cookie(req ? req.headers.cookie : null);
  233. return (dependencies, { doNotParse = false, autoUpdateDependencies = false } = {}) => useCookies(dependencies, { doNotParse, autoUpdateDependencies }, universalCookie);
  234. }
  235. function useCookies(dependencies, { doNotParse = false, autoUpdateDependencies = false } = {}, cookies = new Cookie()) {
  236. const watchingDependencies = autoUpdateDependencies ? [...dependencies || []] : dependencies;
  237. let previousCookies = cookies.getAll({ doNotParse: true });
  238. const touches = ref(0);
  239. const onChange = () => {
  240. const newCookies = cookies.getAll({ doNotParse: true });
  241. if (shouldUpdate(watchingDependencies || null, newCookies, previousCookies))
  242. touches.value++;
  243. previousCookies = newCookies;
  244. };
  245. cookies.addChangeListener(onChange);
  246. tryOnScopeDispose(() => {
  247. cookies.removeChangeListener(onChange);
  248. });
  249. return {
  250. get: (...args) => {
  251. if (autoUpdateDependencies && watchingDependencies && !watchingDependencies.includes(args[0]))
  252. watchingDependencies.push(args[0]);
  253. touches.value;
  254. return cookies.get(args[0], __spreadValues$3({ doNotParse }, args[1]));
  255. },
  256. getAll: (...args) => {
  257. touches.value;
  258. return cookies.getAll(__spreadValues$3({ doNotParse }, args[0]));
  259. },
  260. set: (...args) => cookies.set(...args),
  261. remove: (...args) => cookies.remove(...args),
  262. addChangeListener: (...args) => cookies.addChangeListener(...args),
  263. removeChangeListener: (...args) => cookies.removeChangeListener(...args)
  264. };
  265. }
  266. function shouldUpdate(dependencies, newCookies, oldCookies) {
  267. if (!dependencies)
  268. return true;
  269. for (const dependency of dependencies) {
  270. if (newCookies[dependency] !== oldCookies[dependency])
  271. return true;
  272. }
  273. return false;
  274. }
  275. var __defProp$2 = Object.defineProperty;
  276. var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
  277. var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
  278. var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
  279. var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  280. var __spreadValues$2 = (a, b) => {
  281. for (var prop in b || (b = {}))
  282. if (__hasOwnProp$2.call(b, prop))
  283. __defNormalProp$2(a, prop, b[prop]);
  284. if (__getOwnPropSymbols$2)
  285. for (var prop of __getOwnPropSymbols$2(b)) {
  286. if (__propIsEnum$2.call(b, prop))
  287. __defNormalProp$2(a, prop, b[prop]);
  288. }
  289. return a;
  290. };
  291. function useDrauu(target, options) {
  292. const drauuInstance = ref();
  293. let disposables = [];
  294. const onChangedHook = createEventHook();
  295. const onCanceledHook = createEventHook();
  296. const onCommittedHook = createEventHook();
  297. const onStartHook = createEventHook();
  298. const onEndHook = createEventHook();
  299. const canUndo = ref(false);
  300. const canRedo = ref(false);
  301. const altPressed = ref(false);
  302. const shiftPressed = ref(false);
  303. const brush = ref({
  304. color: "black",
  305. size: 3,
  306. arrowEnd: false,
  307. cornerRadius: 0,
  308. dasharray: void 0,
  309. fill: "transparent",
  310. mode: "draw"
  311. });
  312. watch(brush, () => {
  313. const instance = drauuInstance.value;
  314. if (instance) {
  315. instance.brush = brush.value;
  316. instance.mode = brush.value.mode;
  317. }
  318. }, { deep: true });
  319. const undo = () => {
  320. var _a;
  321. return (_a = drauuInstance.value) == null ? void 0 : _a.undo();
  322. };
  323. const redo = () => {
  324. var _a;
  325. return (_a = drauuInstance.value) == null ? void 0 : _a.redo();
  326. };
  327. const clear = () => {
  328. var _a;
  329. return (_a = drauuInstance.value) == null ? void 0 : _a.clear();
  330. };
  331. const cancel = () => {
  332. var _a;
  333. return (_a = drauuInstance.value) == null ? void 0 : _a.cancel();
  334. };
  335. const load = (svg) => {
  336. var _a;
  337. return (_a = drauuInstance.value) == null ? void 0 : _a.load(svg);
  338. };
  339. const dump = () => {
  340. var _a;
  341. return (_a = drauuInstance.value) == null ? void 0 : _a.dump();
  342. };
  343. const cleanup = () => {
  344. var _a;
  345. disposables.forEach((dispose) => dispose());
  346. (_a = drauuInstance.value) == null ? void 0 : _a.unmount();
  347. };
  348. const syncStatus = () => {
  349. if (drauuInstance.value) {
  350. canUndo.value = drauuInstance.value.canUndo();
  351. canRedo.value = drauuInstance.value.canRedo();
  352. altPressed.value = drauuInstance.value.altPressed;
  353. shiftPressed.value = drauuInstance.value.shiftPressed;
  354. }
  355. };
  356. watch(() => unrefElement(target), (el) => {
  357. if (!el || typeof SVGSVGElement === "undefined" || !(el instanceof SVGSVGElement))
  358. return;
  359. if (drauuInstance.value)
  360. cleanup();
  361. drauuInstance.value = createDrauu(__spreadValues$2({ el }, options));
  362. syncStatus();
  363. disposables = [
  364. drauuInstance.value.on("canceled", () => onCanceledHook.trigger()),
  365. drauuInstance.value.on("committed", () => onCommittedHook.trigger()),
  366. drauuInstance.value.on("start", () => onStartHook.trigger()),
  367. drauuInstance.value.on("end", () => onEndHook.trigger()),
  368. drauuInstance.value.on("changed", () => {
  369. syncStatus();
  370. onChangedHook.trigger();
  371. })
  372. ];
  373. }, { flush: "post" });
  374. tryOnScopeDispose(() => cleanup());
  375. return {
  376. drauuInstance,
  377. load,
  378. dump,
  379. clear,
  380. cancel,
  381. undo,
  382. redo,
  383. canUndo,
  384. canRedo,
  385. brush,
  386. onChanged: onChangedHook.on,
  387. onCommitted: onCommittedHook.on,
  388. onStart: onStartHook.on,
  389. onEnd: onEndHook.on,
  390. onCanceled: onCanceledHook.on
  391. };
  392. }
  393. var __defProp$1 = Object.defineProperty;
  394. var __defProps = Object.defineProperties;
  395. var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
  396. var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
  397. var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
  398. var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
  399. var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  400. var __spreadValues$1 = (a, b) => {
  401. for (var prop in b || (b = {}))
  402. if (__hasOwnProp$1.call(b, prop))
  403. __defNormalProp$1(a, prop, b[prop]);
  404. if (__getOwnPropSymbols$1)
  405. for (var prop of __getOwnPropSymbols$1(b)) {
  406. if (__propIsEnum$1.call(b, prop))
  407. __defNormalProp$1(a, prop, b[prop]);
  408. }
  409. return a;
  410. };
  411. var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
  412. var __objRest = (source, exclude) => {
  413. var target = {};
  414. for (var prop in source)
  415. if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)
  416. target[prop] = source[prop];
  417. if (source != null && __getOwnPropSymbols$1)
  418. for (var prop of __getOwnPropSymbols$1(source)) {
  419. if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))
  420. target[prop] = source[prop];
  421. }
  422. return target;
  423. };
  424. function useFocusTrap(target, options = {}) {
  425. let trap;
  426. const _a = options, { immediate } = _a, focusTrapOptions = __objRest(_a, ["immediate"]);
  427. const hasFocus = ref(false);
  428. const isPaused = ref(false);
  429. const activate = (opts) => trap && trap.activate(opts);
  430. const deactivate = (opts) => trap && trap.deactivate(opts);
  431. const pause = () => {
  432. if (trap) {
  433. trap.pause();
  434. isPaused.value = true;
  435. }
  436. };
  437. const unpause = () => {
  438. if (trap) {
  439. trap.unpause();
  440. isPaused.value = false;
  441. }
  442. };
  443. watch(() => unrefElement(target), (el) => {
  444. if (!el)
  445. return;
  446. trap = createFocusTrap(el, __spreadProps(__spreadValues$1({}, focusTrapOptions), {
  447. onActivate() {
  448. hasFocus.value = true;
  449. if (options.onActivate)
  450. options.onActivate();
  451. },
  452. onDeactivate() {
  453. hasFocus.value = false;
  454. if (options.onDeactivate)
  455. options.onDeactivate();
  456. }
  457. }));
  458. if (immediate)
  459. activate();
  460. }, { flush: "post" });
  461. tryOnScopeDispose$1(() => deactivate());
  462. return {
  463. hasFocus,
  464. isPaused,
  465. activate,
  466. deactivate,
  467. pause,
  468. unpause
  469. };
  470. }
  471. function useFuse(search, data, options) {
  472. const createFuse = () => {
  473. var _a, _b;
  474. return new Fuse((_a = resolveUnref(data)) != null ? _a : [], (_b = resolveUnref(options)) == null ? void 0 : _b.fuseOptions);
  475. };
  476. const fuse = ref(createFuse());
  477. watch(() => {
  478. var _a;
  479. return (_a = resolveUnref(options)) == null ? void 0 : _a.fuseOptions;
  480. }, () => {
  481. fuse.value = createFuse();
  482. }, { deep: true });
  483. watch(() => resolveUnref(data), (newData) => {
  484. fuse.value.setCollection(newData);
  485. }, { deep: true });
  486. const results = computed(() => {
  487. const resolved = resolveUnref(options);
  488. if ((resolved == null ? void 0 : resolved.matchAllWhenSearchEmpty) && !unref(search))
  489. return resolveUnref(data).map((item, index) => ({ item, refIndex: index }));
  490. const limit = resolved == null ? void 0 : resolved.resultLimit;
  491. return fuse.value.search(resolveUnref(search), limit ? { limit } : void 0);
  492. });
  493. return {
  494. fuse,
  495. results
  496. };
  497. }
  498. var __defProp = Object.defineProperty;
  499. var __getOwnPropSymbols = Object.getOwnPropertySymbols;
  500. var __hasOwnProp = Object.prototype.hasOwnProperty;
  501. var __propIsEnum = Object.prototype.propertyIsEnumerable;
  502. var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  503. var __spreadValues = (a, b) => {
  504. for (var prop in b || (b = {}))
  505. if (__hasOwnProp.call(b, prop))
  506. __defNormalProp(a, prop, b[prop]);
  507. if (__getOwnPropSymbols)
  508. for (var prop of __getOwnPropSymbols(b)) {
  509. if (__propIsEnum.call(b, prop))
  510. __defNormalProp(a, prop, b[prop]);
  511. }
  512. return a;
  513. };
  514. function useIDBKeyval(key, initialValue, options = {}) {
  515. const {
  516. flush = "pre",
  517. deep = true,
  518. shallow,
  519. onError = (e) => {
  520. console.error(e);
  521. }
  522. } = options;
  523. const data = (shallow ? shallowRef : ref)(initialValue);
  524. const rawInit = resolveUnref(initialValue);
  525. async function read() {
  526. try {
  527. const rawValue = await get(key);
  528. if (rawValue === void 0) {
  529. if (rawInit !== void 0 && rawInit !== null)
  530. await set(key, rawInit);
  531. } else {
  532. data.value = rawValue;
  533. }
  534. } catch (e) {
  535. onError(e);
  536. }
  537. }
  538. read();
  539. async function write() {
  540. try {
  541. if (data.value == null) {
  542. await del(key);
  543. } else {
  544. if (Array.isArray(data.value))
  545. await update(key, () => JSON.parse(JSON.stringify(data.value)));
  546. else if (typeof data.value === "object")
  547. await update(key, () => __spreadValues({}, data.value));
  548. else
  549. await update(key, () => data.value);
  550. }
  551. } catch (e) {
  552. onError(e);
  553. }
  554. }
  555. watch(data, () => write(), { flush, deep });
  556. return data;
  557. }
  558. function useJwt(encodedJwt, options = {}) {
  559. const {
  560. onError,
  561. fallbackValue = null
  562. } = options;
  563. const decodeWithFallback = (encodedJwt2, options2) => {
  564. try {
  565. return jwt_decode(encodedJwt2, options2);
  566. } catch (err) {
  567. onError == null ? void 0 : onError(err);
  568. return fallbackValue;
  569. }
  570. };
  571. const header = computed(() => decodeWithFallback(resolveUnref(encodedJwt), { header: true }));
  572. const payload = computed(() => decodeWithFallback(resolveUnref(encodedJwt)));
  573. return {
  574. header,
  575. payload
  576. };
  577. }
  578. function useNProgress(currentProgress = null, options) {
  579. const progress = ref(currentProgress);
  580. const isLoading = computed({
  581. set: (load) => load ? nprogress.start() : nprogress.done(),
  582. get: () => isNumber(progress.value) && progress.value < 1
  583. });
  584. if (options)
  585. nprogress.configure(options);
  586. const setProgress = nprogress.set;
  587. nprogress.set = (n) => {
  588. progress.value = n;
  589. return setProgress.call(nprogress, n);
  590. };
  591. watchEffect(() => {
  592. if (isNumber(progress.value) && isClient)
  593. setProgress.call(nprogress, progress.value);
  594. });
  595. tryOnScopeDispose(nprogress.remove);
  596. return {
  597. isLoading,
  598. progress,
  599. start: nprogress.start,
  600. done: nprogress.done,
  601. remove: () => {
  602. progress.value = null;
  603. nprogress.remove();
  604. }
  605. };
  606. }
  607. function useQRCode(text, options) {
  608. const src = resolveRef(text);
  609. const result = ref("");
  610. watch(src, async (value) => {
  611. if (src.value && isClient)
  612. result.value = await QRCode.toDataURL(value, options);
  613. }, { immediate: true });
  614. return result;
  615. }
  616. export { createCookies, useAsyncValidator, useAxios, useChangeCase, useCookies, useDrauu, useFocusTrap, useFuse, useIDBKeyval, useJwt, useNProgress, useQRCode };