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

745 строки
25 KiB

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