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

643 строки
21 KiB

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