{"version":3,"file":"yibin-ui.umd.cjs","sources":["../src/packages/SvgIcon/SvgIcon.vue","../plugin-vue2:normalizer","../src/assets/img/admin-tx.png","../src/packages/KoalaHeader/Person.vue","../node_modules/.pnpm/@better-scroll+core@2.5.1/node_modules/@better-scroll/core/dist/core.esm.js","../node_modules/.pnpm/@better-scroll+mouse-wheel@2.5.1/node_modules/@better-scroll/mouse-wheel/dist/mouse-wheel.esm.js","../node_modules/.pnpm/element-ui@2.15.14_vue@2.7.15/node_modules/element-ui/lib/utils/merge.js","../node_modules/.pnpm/element-ui@2.15.14_vue@2.7.15/node_modules/element-ui/lib/utils/dom.js","../node_modules/.pnpm/element-ui@2.15.14_vue@2.7.15/node_modules/element-ui/lib/utils/popup/popup-manager.js","../node_modules/.pnpm/element-ui@2.15.14_vue@2.7.15/node_modules/element-ui/lib/utils/scrollbar-width.js","../node_modules/.pnpm/element-ui@2.15.14_vue@2.7.15/node_modules/element-ui/lib/utils/popup/index.js","../node_modules/.pnpm/element-ui@2.15.14_vue@2.7.15/node_modules/element-ui/lib/utils/types.js","../node_modules/.pnpm/element-ui@2.15.14_vue@2.7.15/node_modules/element-ui/lib/utils/util.js","../node_modules/.pnpm/element-ui@2.15.14_vue@2.7.15/node_modules/element-ui/lib/utils/vdom.js","../node_modules/.pnpm/element-ui@2.15.14_vue@2.7.15/node_modules/element-ui/lib/message.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/bind.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/utils.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/buildURL.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/InterceptorManager.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/AxiosError.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/defaults/transitional.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/toFormData.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/settle.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/cookies.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/combineURLs.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/buildFullPath.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/cancel/CanceledError.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/adapters/xhr.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/null.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/defaults/index.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/transformData.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/cancel/isCancel.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/dispatchRequest.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/mergeConfig.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/env/data.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/validator.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/Axios.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/cancel/CancelToken.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/spread.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/axios.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/index.js","../src/constants/dict.ts","../src/constants/index.ts","../node_modules/.pnpm/vue-demi@0.14.6_vue@2.7.15/node_modules/vue-demi/lib/index.mjs","../node_modules/.pnpm/@vueuse+shared@9.13.0_vue@2.7.15/node_modules/@vueuse/shared/index.mjs","../node_modules/.pnpm/@vueuse+core@9.13.0_vue@2.7.15/node_modules/@vueuse/core/index.mjs","../node_modules/.pnpm/spark-md5@3.0.2/node_modules/spark-md5/spark-md5.js","../src/utils/utils.ts","../node_modules/.pnpm/mitt@2.1.0/node_modules/mitt/dist/mitt.es.js","../node_modules/.pnpm/vue3-eventbus@2.0.0/node_modules/vue3-eventbus/src/index.js","../src/utils/login-helper.ts","../src/plugins/axios/index.js","../src/api/common.js","../node_modules/.pnpm/@vue+devtools-api@6.5.1/node_modules/@vue/devtools-api/lib/esm/env.js","../node_modules/.pnpm/@vue+devtools-api@6.5.1/node_modules/@vue/devtools-api/lib/esm/const.js","../node_modules/.pnpm/@vue+devtools-api@6.5.1/node_modules/@vue/devtools-api/lib/esm/time.js","../node_modules/.pnpm/@vue+devtools-api@6.5.1/node_modules/@vue/devtools-api/lib/esm/proxy.js","../node_modules/.pnpm/@vue+devtools-api@6.5.1/node_modules/@vue/devtools-api/lib/esm/index.js","../node_modules/.pnpm/pinia@2.1.7_typescript@4.9.5_vue@2.7.15/node_modules/pinia/dist/pinia.mjs","../src/store/store.js","../src/packages/KoalaHeader/KoalaHeader.vue","../src/assets/icon/fold1.png","../src/assets/icon/fold2.png","../src/packages/KoalaSide/KoalaSide.vue","../src/assets/img/403.png","../src/packages/Error/Error403.vue","../src/assets/img/404.png","../src/packages/Error/Error404.vue","../src/assets/img/nodata.png","../src/packages/NoData/NoData.vue","../src/packages/Teleport/Teleport.vue","../node_modules/.pnpm/nanoid@4.0.2/node_modules/nanoid/index.browser.js","../src/packages/MoreBtnGroup/MoreBtnGroup.vue","../src/api/files.js","../node_modules/.pnpm/js-base64@3.7.5/node_modules/js-base64/base64.mjs","../node_modules/.pnpm/requires-port@1.0.0/node_modules/requires-port/index.js","../node_modules/.pnpm/querystringify@2.2.0/node_modules/querystringify/index.js","../node_modules/.pnpm/url-parse@1.5.10/node_modules/url-parse/index.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/error.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/logger.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/uuid.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/upload.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/noopUrlStorage.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/browser/urlStorage.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/browser/httpStack.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/browser/isReactNative.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/browser/uriToBlob.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/browser/sources/isCordova.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/browser/sources/readAsByteArray.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/browser/sources/FileSource.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/browser/sources/StreamSource.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/browser/fileReader.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/browser/fileSignature.js","../node_modules/.pnpm/tus-js-client@3.1.1/node_modules/tus-js-client/lib.esm/browser/index.js","../node_modules/.pnpm/tiny-async-pool@2.1.0/node_modules/tiny-async-pool/lib/es9.js","../src/packages/KoalaUpload/KoalaUpload.vue","../src/packages/Login/LoginForm.vue","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/enums.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/math.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/within.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/createPopper.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper.js","../src/utils/dom.js","../src/directives/overflowTooltip.js","../src/packages/index.js"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nconst props = defineProps({\n  iconName: {\n    type: String,\n    required: true,\n  },\n  className: {\n    type: String,\n    default: '',\n  },\n  color: {\n    type: String,\n    default: '#409eff',\n  },\n  size: {\n    type: Number,\n    default: 12,\n  },\n})\n// 图标在 iconfont 中的名字\nconst name = computed(() => {\n  return `#${props.iconName}`\n})\n// 给图标添加上类名\nconst svgClass = computed(() => {\n  if (props.className) {\n    return `svg-icon ${props.className}`\n  }\n  return 'svg-icon'\n})\nconst colorMap = {\n  primary: '#3369FF',\n  warning: '#FF891B',\n  success: '#39C676',\n  green: '#39C676',\n  danger: '#F54040',\n  red: '#F54040',\n  black: '#000',\n  white: '#fff',\n  dark: 'rgba(0, 0, 0, 0.85)',\n  grey: 'rgba(0, 0, 0, 0.65)',\n}\n</script>\n<template>\n  <svg :class=\"svgClass\" aria-hidden=\"true\" :style=\"{ fontSize: size }\" v-on=\"$listeners\">\n    <use :xlink:href=\"name\" :fill=\"colorMap[color] || color\" />\n  </svg>\n</template>\n<style scoped>\n.svg-icon {\n  width: 1em;\n  height: 1em;\n  position: relative;\n  fill: currentColor;\n  vertical-align: -2px;\n  display: inline-block;\n  line-height: inherit;\n}\n</style>\n","\nexport default function normalizeComponent (\n    scriptExports,\n    render,\n    staticRenderFns,\n    functionalTemplate,\n    injectStyles,\n    scopeId,\n    moduleIdentifier, /* server only */\n    shadowMode /* vue-cli only */\n) {\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n      ? scriptExports.options\n      : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n          context || // cached call\n          (this.$vnode && this.$vnode.ssrContext) || // stateful\n          (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inference\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n        ? function () {\n          injectStyles.call(\n              this,\n              (options.functional ? this.parent : this).$root.$options.shadowRoot\n          )\n        }\n        : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functional component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n          ? [].concat(existing, hook)\n          : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAAAXNSR0IArs4c6QAACe9JREFUWEfVWX1UU+cdfu7NvQnhWxixYixKWVdRLBrtYBZ6q1tzaIW6ubC16rbq6lxd6tG2OxbdltMpes5WXZWhs93aHmf9QHqYqBR3dLcwi7Ni8YvVFSlakBkKCkHycW9yd96b3BAgIUG3P/aek3Py8b6/97nP7/sXCv8ni7oHnMpZCrCA43ia5wGOGyqR53mP7xsJAHnd1boboOQMZTKZqNbWVtput1MuVxql19upFqeTmgTgCwAZGo0Mqr29XVKr1ZJWq5UaG9M9QIUCeEygxwJUBshxHG21WmmdTkfbbDZaSE6mklwuShDiKVG8STEMI4liPMUwfRKQDJbtk4F2d3dLOp3Ofe3aNal52jQ3KsYGOBKg8h6TyURfvnxZ5QUYR0dFUarS0pf006ZN+2ZMTFyOWs1kURR1P0VRCWS/JEndAG4KgnhxYMB++sKF5tqSkpfbbbYYT1KSy221pnh0ui4Pz/PuSEwiHFA/i1qtVmW1MioCcO/e8vwJE1LMA271/GOfgjnRApzvBDp6ge4BrwkmRwNp44CHU4G5aUBRJhDLih90dHSULV78Yp3DIbnj4mzEfkWfHSu2HNSGwwGlDQaDKi4uTmW1gtm7d1vG9OnTt7X1Mtzmk8C+JkAcVfzgnRoGeDYbMM8FHkxy1TY2Nr5SUlLyOQFqs9ncjY2NCrNBbTcUUD+TABgCsr6+8pno+KStvzqO2B2nIgc4nB4CeMXXgU1GOOz9t9YWFhb+2ePxiC6XSywsLHRbLJagjx4UqMVioaurq/1MnjlzZH2nI2bdt98FrnTdVXQZcehrKUD1c0CK+s4Wo9FYqoD1MTsCbDCgxLNVhEnyOnLk2PpPb2nXLXwXuNkfHGT+FOAHBiA/HdDLrgRcsQLlDcCbZ0I/2PhYoOqHwEPjBsFqNBohmM0OB0o+0xkFBYzebmcPvf/+UhvGleeVhwa5YT7wi/kkcAWEdZ8bUxTw4VXg7bNeew62CNi/rQSSqJ4VixYt2tcGiG18igBUEFb99jocKJ2ZmclotVpm+65d6bMenv3xnB2ICqXuwqnAwSXe6wkov1TJ9znALV45CpR9FBwsMYOPX0T/paaz+StXrrxit9vF5uZmIRRQv8oFQWBPnjxZ8epxtZE4TqhVuRQoeCgym71tByaVAu4QUWJNHrDpCZHnOK6og2WFyd6w5Y+xgYz62ayqquJ6Gf3R3N8DDjE0kGsl3ng52iIXKMTO2Aq09gTfzdDAhbUA239tQVHRCl4U24Xm5mZyu/xofqAmk0nV1dXFKmyaq9VGYlujLduvB0GEC8gE7Nxy4GJnaIlLZwE7n3bVzptnMsXHC66amlhRsVV/BWQwGIiXs1u3lqXNmJPTfH/p6GyS66y/BEhcjHTN3g589mXo3YTVGxsgNjU1ZL1sNl8HIDQ2NhJWJQWorHZGr2c/PFDx/OGr8dt+fCj89edWA1OShjr8MOf3OxrJYONfC22jym3vFAMLHugz5+XlvS2Kol/9ilwVx3EsiZs1NTV/XH00qjic2olgIpTkcC+aAGMMgrbpBjBvd/iH96n/vZlG409c7Vph5sxYsaKiwu0TaVJxnNc+6+rq/vGNcnrquY7wQssWAt/PHolTORmIl8TTRXvCy5wxATjzM8/F/Pz8uSzLCikpKYIClAI4VW6uk6XpFKa+vurz1I1UslIFjSa6ff1IGyVOM9yxlO/0mwDnKFGE3EWiyI0NUm9e3sJJHk+X2NCgEQBeZtQP1ONJZE+fPtarfjX8k5MdJ1YA0+8b3Buo/eESOvuA7N9FJte1Gch58skE0WoV4+LiXCSeykCJx6vVamasQB+ZBLxlAlJiQrNI2BxwAT86CNSToi6CpQClb98WfLlfVMo5ldPpZD2JiWzD0aPXUzdSCZGontz52wXeOlNZwVT/wRVgWUUECAdV352b+1Q6Td8WGhr0LhJLh3g9cSa+ru5UThmddWGUwBx4ZW4acGiJN/DLwpScH5Dnl1cAtf+KDOisicBHq6Tm/Ly8HOJMPM+TnO/1elJ/8jyv9oan2j+sqlY/u+dcZILJrs0FwJJZw/b7gPKtwNL9kct6bjbwxlOOgwUFBcvb29uFlpYWAtTPKJ2RkcFGp6czJ987sKz2euJ2YlORrszxQM3yoaFUOfv8IeB4hGySM299Fyh6oG/NY4+Z3vTle7mK8qdQwMDk5qqZ0tdfT8vOzr2YuhFMpP1Q1n3eaj1wKaawojJyoCQdf1EC/LOpYarZbL6uePwwoCZaCfqkxPvpX9TGSNVPKvx3vhdgpwGI19UAB89Hphui9h2FpCiZZwq0T5/p+4V48z2jZw8f/hMnxE48QsqycKyO0wK7FwHZqUpZPwiYsEpa6CX7gI6+0cESNk+vAmKdHQuKipbJZV5xcbGoNHuBSYQCTPRkroudSLyf5w+vP85w2+qDX6CigMJM4KV8bxwNFpaUk31OoOwUsP884CKlcJBF2ujNT7hq8/Pzi7VarYsf1o6MaEVIHw+ksjt3vvZg1szs+jnbERvYiiRqvXGTvAibgfFTeR+sgiK/2ZxA1WWAmNSNAIblVsQMxydnGx4xm81XfeUdeSR/PxCkuTPRGQX9cnNXUVn5zG0paffjuwCnG1g9F3g6E1DRQaqlwLHBaLkUXlZrrgBv/B0gNWj9C0ACbr3w6KPf2TMw0Ca2tbXJIWm05k62W5JSyXSEJIDa2tqSz3pj1gluQEsKwbtZPrvwm4fvTb8TiGKBrybYtxiN3yr1ORApW0bMo0J1EDRgUJFwRdM0U1v71xI2Sruutdtb9Y/WdihghtusQrhCdhTjLbpFp33L/PmPb6ZpWiDTkrEMIGTOSLayVFerctVesNXV1UsSEsdtvdGHqK5+wDOm6eagGkhbrYsFUuPR39Pds3bhwqL9gyOdRrfFIvvlCOnhejIaBoMMVqPRqEpLS6cYDIbfuCm18d824Ms7PomhQPvoIz/TFPCVGGBCPBnBiPwnly6t+fmaNS33OiQLsEQLDVjoyRzHxPf0qMj48cCByjwydqQZtfHWgNebBwRvUazEXeIkahUQrQYSooBELUSP6DrR2dm5Y/HixXUOh8Pd29vr1uv1bp7jPLBYgjI5PJKEcxF5OKFMmnt61Cpn3B16d2mpfsaMbGN0dFQOw7BZFIXxFEUlE2GSJPW63dJ1j0e86HA4Gs40NZ2wlJTIg9y+JJc72mr1+CbPQ7w7FJBwqg88R1ksForneXk0PjAwQCcnJ9OCkEwlJZHRuBBUFsuyUk+PWoqJsXk6NRop2WZzp6eneyr+B6PxYA8pR1KDwTDkzwZlo9PplEFrNBr5TwYyt9fpdB6eT5F8AwWZ9HBqHMLSWDYH2euvvsi/JF1dXUNY5XleAaPY35jA/TeB3uNzRn78P9t0Y2phsxsBAAAAAElFTkSuQmCC\"","<template>\n  <div>\n    <div class=\"user-icon-container flex-col flex-alignC\">\n      <img src=\"@/assets/img/admin-tx.png\" onerror=\"\" />\n      <el-dropdown class=\"pointer\" @command=\"logout\" trigger=\"click\">\n        <span class=\"el-dropdown-link color-title\">\n          <span class=\"\" style=\"margin-right: 8px;\">{{ username }}</span>\n          <i class=\"el-icon-arrow-down el-icon-caret-bottom\"></i>\n        </span>\n        <el-dropdown-menu slot=\"dropdown\">\n          <!-- <el-dropdown-item command=\"person\">个人中心</el-dropdown-item> -->\n          <el-dropdown-item command=\"logout\">退出登录</el-dropdown-item>\n        </el-dropdown-menu>\n      </el-dropdown>\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'person',\n  props: {\n    username: String\n  },\n  data() {\n    return {\n    }\n  },\n  created() {},\n  mounted() {},\n  methods: {\n    logout() {\n      this.$emit('logout', '退出登录')\n    },\n  }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.user-icon-container {\n  white-space: nowrap;\n  img {\n    width: 32px;\n    height: 32px;\n  }\n  span {\n    margin: 0 5px;\n    margin-right: 24px;\n    font-size: 14px;\n    font-family: PingFang SC-Medium, PingFang SC;\n    font-weight: 400;\n  }\n}\n</style>\n","/*!\n * better-scroll / core\n * (c) 2016-2023 ustbhuangyi\n * Released under the MIT License.\n */\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\n\nvar propertiesConfig = [\r\n    {\r\n        sourceKey: 'scroller.scrollBehaviorX.currentPos',\r\n        key: 'x'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollBehaviorY.currentPos',\r\n        key: 'y'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollBehaviorX.hasScroll',\r\n        key: 'hasHorizontalScroll'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollBehaviorY.hasScroll',\r\n        key: 'hasVerticalScroll'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollBehaviorX.contentSize',\r\n        key: 'scrollerWidth'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollBehaviorY.contentSize',\r\n        key: 'scrollerHeight'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollBehaviorX.maxScrollPos',\r\n        key: 'maxScrollX'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollBehaviorY.maxScrollPos',\r\n        key: 'maxScrollY'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollBehaviorX.minScrollPos',\r\n        key: 'minScrollX'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollBehaviorY.minScrollPos',\r\n        key: 'minScrollY'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollBehaviorX.movingDirection',\r\n        key: 'movingDirectionX'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollBehaviorY.movingDirection',\r\n        key: 'movingDirectionY'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollBehaviorX.direction',\r\n        key: 'directionX'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollBehaviorY.direction',\r\n        key: 'directionY'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.actions.enabled',\r\n        key: 'enabled'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.animater.pending',\r\n        key: 'pending'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.animater.stop',\r\n        key: 'stop'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollTo',\r\n        key: 'scrollTo'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollBy',\r\n        key: 'scrollBy'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.scrollToElement',\r\n        key: 'scrollToElement'\r\n    },\r\n    {\r\n        sourceKey: 'scroller.resetPosition',\r\n        key: 'resetPosition'\r\n    }\r\n];\n\nfunction warn(msg) {\r\n    console.error(\"[BScroll warn]: \" + msg);\r\n}\n\n// ssr support\r\nvar inBrowser = typeof window !== 'undefined';\r\nvar ua = inBrowser && navigator.userAgent.toLowerCase();\r\nvar isWeChatDevTools = !!(ua && /wechatdevtools/.test(ua));\r\nvar isAndroid = ua && ua.indexOf('android') > 0;\r\n/* istanbul ignore next */\r\nvar isIOSBadVersion = (function () {\r\n    if (typeof ua === 'string') {\r\n        var regex = /os (\\d\\d?_\\d(_\\d)?)/;\r\n        var matches = regex.exec(ua);\r\n        if (!matches)\r\n            return false;\r\n        var parts = matches[1].split('_').map(function (item) {\r\n            return parseInt(item, 10);\r\n        });\r\n        // ios version >= 13.4 issue 982\r\n        return !!(parts[0] === 13 && parts[1] >= 4);\r\n    }\r\n    return false;\r\n})();\r\n/* istanbul ignore next */\r\nvar supportsPassive = false;\r\n/* istanbul ignore next */\r\nif (inBrowser) {\r\n    var EventName = 'test-passive';\r\n    try {\r\n        var opts = {};\r\n        Object.defineProperty(opts, 'passive', {\r\n            get: function () {\r\n                supportsPassive = true;\r\n            },\r\n        }); // https://github.com/facebook/flow/issues/285\r\n        window.addEventListener(EventName, function () { }, opts);\r\n    }\r\n    catch (e) { }\r\n}\n\nfunction getNow() {\r\n    return window.performance &&\r\n        window.performance.now &&\r\n        window.performance.timing\r\n        ? window.performance.now() + window.performance.timing.navigationStart\r\n        : +new Date();\r\n}\r\nvar extend = function (target, source) {\r\n    for (var key in source) {\r\n        target[key] = source[key];\r\n    }\r\n    return target;\r\n};\r\nfunction isUndef(v) {\r\n    return v === undefined || v === null;\r\n}\r\nfunction between(x, min, max) {\r\n    if (x < min) {\r\n        return min;\r\n    }\r\n    if (x > max) {\r\n        return max;\r\n    }\r\n    return x;\r\n}\n\nvar elementStyle = (inBrowser &&\r\n    document.createElement('div').style);\r\nvar vendor = (function () {\r\n    /* istanbul ignore if  */\r\n    if (!inBrowser) {\r\n        return false;\r\n    }\r\n    var transformNames = [\r\n        {\r\n            key: 'standard',\r\n            value: 'transform',\r\n        },\r\n        {\r\n            key: 'webkit',\r\n            value: 'webkitTransform',\r\n        },\r\n        {\r\n            key: 'Moz',\r\n            value: 'MozTransform',\r\n        },\r\n        {\r\n            key: 'O',\r\n            value: 'OTransform',\r\n        },\r\n        {\r\n            key: 'ms',\r\n            value: 'msTransform',\r\n        },\r\n    ];\r\n    for (var _i = 0, transformNames_1 = transformNames; _i < transformNames_1.length; _i++) {\r\n        var obj = transformNames_1[_i];\r\n        if (elementStyle[obj.value] !== undefined) {\r\n            return obj.key;\r\n        }\r\n    }\r\n    /* istanbul ignore next  */\r\n    return false;\r\n})();\r\n/* istanbul ignore next  */\r\nfunction prefixStyle(style) {\r\n    if (vendor === false) {\r\n        return style;\r\n    }\r\n    if (vendor === 'standard') {\r\n        if (style === 'transitionEnd') {\r\n            return 'transitionend';\r\n        }\r\n        return style;\r\n    }\r\n    return vendor + style.charAt(0).toUpperCase() + style.substr(1);\r\n}\r\nfunction getElement(el) {\r\n    return (typeof el === 'string' ? document.querySelector(el) : el);\r\n}\r\nfunction addEvent(el, type, fn, capture) {\r\n    var useCapture = supportsPassive\r\n        ? {\r\n            passive: false,\r\n            capture: !!capture,\r\n        }\r\n        : !!capture;\r\n    el.addEventListener(type, fn, useCapture);\r\n}\r\nfunction removeEvent(el, type, fn, capture) {\r\n    el.removeEventListener(type, fn, {\r\n        capture: !!capture,\r\n    });\r\n}\r\nfunction maybePrevent(e) {\r\n    if (e.cancelable) {\r\n        e.preventDefault();\r\n    }\r\n}\r\nfunction offset(el) {\r\n    var left = 0;\r\n    var top = 0;\r\n    while (el) {\r\n        left -= el.offsetLeft;\r\n        top -= el.offsetTop;\r\n        el = el.offsetParent;\r\n    }\r\n    return {\r\n        left: left,\r\n        top: top,\r\n    };\r\n}\r\nvendor && vendor !== 'standard' ? '-' + vendor.toLowerCase() + '-' : '';\r\nvar transform = prefixStyle('transform');\r\nvar transition = prefixStyle('transition');\r\nvar hasPerspective = inBrowser && prefixStyle('perspective') in elementStyle;\r\n// fix issue #361\r\nvar hasTouch = inBrowser && ('ontouchstart' in window || isWeChatDevTools);\r\nvar hasTransition = inBrowser && transition in elementStyle;\r\nvar style = {\r\n    transform: transform,\r\n    transition: transition,\r\n    transitionTimingFunction: prefixStyle('transitionTimingFunction'),\r\n    transitionDuration: prefixStyle('transitionDuration'),\r\n    transitionDelay: prefixStyle('transitionDelay'),\r\n    transformOrigin: prefixStyle('transformOrigin'),\r\n    transitionEnd: prefixStyle('transitionEnd'),\r\n    transitionProperty: prefixStyle('transitionProperty'),\r\n};\r\nvar eventTypeMap = {\r\n    touchstart: 1,\r\n    touchmove: 1,\r\n    touchend: 1,\r\n    touchcancel: 1,\r\n    mousedown: 2,\r\n    mousemove: 2,\r\n    mouseup: 2,\r\n};\r\nfunction getRect(el) {\r\n    /* istanbul ignore if  */\r\n    if (el instanceof window.SVGElement) {\r\n        var rect = el.getBoundingClientRect();\r\n        return {\r\n            top: rect.top,\r\n            left: rect.left,\r\n            width: rect.width,\r\n            height: rect.height,\r\n        };\r\n    }\r\n    else {\r\n        return {\r\n            top: el.offsetTop,\r\n            left: el.offsetLeft,\r\n            width: el.offsetWidth,\r\n            height: el.offsetHeight,\r\n        };\r\n    }\r\n}\r\nfunction preventDefaultExceptionFn(el, exceptions) {\r\n    for (var i in exceptions) {\r\n        if (exceptions[i].test(el[i])) {\r\n            return true;\r\n        }\r\n    }\r\n    return false;\r\n}\r\nvar tagExceptionFn = preventDefaultExceptionFn;\r\nfunction tap(e, eventName) {\r\n    var ev = document.createEvent('Event');\r\n    ev.initEvent(eventName, true, true);\r\n    ev.pageX = e.pageX;\r\n    ev.pageY = e.pageY;\r\n    e.target.dispatchEvent(ev);\r\n}\r\nfunction click(e, event) {\r\n    if (event === void 0) { event = 'click'; }\r\n    var eventSource;\r\n    if (e.type === 'mouseup') {\r\n        eventSource = e;\r\n    }\r\n    else if (e.type === 'touchend' || e.type === 'touchcancel') {\r\n        eventSource = e.changedTouches[0];\r\n    }\r\n    var posSrc = {};\r\n    if (eventSource) {\r\n        posSrc.screenX = eventSource.screenX || 0;\r\n        posSrc.screenY = eventSource.screenY || 0;\r\n        posSrc.clientX = eventSource.clientX || 0;\r\n        posSrc.clientY = eventSource.clientY || 0;\r\n    }\r\n    var ev;\r\n    var bubbles = true;\r\n    var cancelable = true;\r\n    var ctrlKey = e.ctrlKey, shiftKey = e.shiftKey, altKey = e.altKey, metaKey = e.metaKey;\r\n    var pressedKeysMap = {\r\n        ctrlKey: ctrlKey,\r\n        shiftKey: shiftKey,\r\n        altKey: altKey,\r\n        metaKey: metaKey,\r\n    };\r\n    if (typeof MouseEvent !== 'undefined') {\r\n        try {\r\n            ev = new MouseEvent(event, extend(__assign({ bubbles: bubbles,\r\n                cancelable: cancelable }, pressedKeysMap), posSrc));\r\n        }\r\n        catch (e) {\r\n            /* istanbul ignore next */\r\n            createEvent();\r\n        }\r\n    }\r\n    else {\r\n        createEvent();\r\n    }\r\n    function createEvent() {\r\n        ev = document.createEvent('Event');\r\n        ev.initEvent(event, bubbles, cancelable);\r\n        extend(ev, posSrc);\r\n    }\r\n    // forwardedTouchEvent set to true in case of the conflict with fastclick\r\n    ev.forwardedTouchEvent = true;\r\n    ev._constructed = true;\r\n    e.target.dispatchEvent(ev);\r\n}\r\nfunction dblclick(e) {\r\n    click(e, 'dblclick');\r\n}\n\nvar ease = {\r\n    // easeOutQuint\r\n    swipe: {\r\n        style: 'cubic-bezier(0.23, 1, 0.32, 1)',\r\n        fn: function (t) {\r\n            return 1 + --t * t * t * t * t;\r\n        }\r\n    },\r\n    // easeOutQuard\r\n    swipeBounce: {\r\n        style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n        fn: function (t) {\r\n            return t * (2 - t);\r\n        }\r\n    },\r\n    // easeOutQuart\r\n    bounce: {\r\n        style: 'cubic-bezier(0.165, 0.84, 0.44, 1)',\r\n        fn: function (t) {\r\n            return 1 - --t * t * t * t;\r\n        }\r\n    }\r\n};\n\nvar DEFAULT_INTERVAL = 1000 / 60;\r\nvar windowCompat = inBrowser && window;\r\n/* istanbul ignore next */\r\nfunction noop$1() { }\r\nvar requestAnimationFrame = (function () {\r\n    /* istanbul ignore if  */\r\n    if (!inBrowser) {\r\n        return noop$1;\r\n    }\r\n    return (windowCompat.requestAnimationFrame ||\r\n        windowCompat.webkitRequestAnimationFrame ||\r\n        windowCompat.mozRequestAnimationFrame ||\r\n        windowCompat.oRequestAnimationFrame ||\r\n        // if all else fails, use setTimeout\r\n        function (callback) {\r\n            return window.setTimeout(callback, callback.interval || DEFAULT_INTERVAL); // make interval as precise as possible.\r\n        });\r\n})();\r\nvar cancelAnimationFrame = (function () {\r\n    /* istanbul ignore if  */\r\n    if (!inBrowser) {\r\n        return noop$1;\r\n    }\r\n    return (windowCompat.cancelAnimationFrame ||\r\n        windowCompat.webkitCancelAnimationFrame ||\r\n        windowCompat.mozCancelAnimationFrame ||\r\n        windowCompat.oCancelAnimationFrame ||\r\n        function (id) {\r\n            window.clearTimeout(id);\r\n        });\r\n})();\n\n/* istanbul ignore next */\r\nvar noop = function (val) { };\r\nvar sharedPropertyDefinition = {\r\n    enumerable: true,\r\n    configurable: true,\r\n    get: noop,\r\n    set: noop,\r\n};\r\nvar getProperty = function (obj, key) {\r\n    var keys = key.split('.');\r\n    for (var i = 0; i < keys.length - 1; i++) {\r\n        obj = obj[keys[i]];\r\n        if (typeof obj !== 'object' || !obj)\r\n            return;\r\n    }\r\n    var lastKey = keys.pop();\r\n    if (typeof obj[lastKey] === 'function') {\r\n        return function () {\r\n            return obj[lastKey].apply(obj, arguments);\r\n        };\r\n    }\r\n    else {\r\n        return obj[lastKey];\r\n    }\r\n};\r\nvar setProperty = function (obj, key, value) {\r\n    var keys = key.split('.');\r\n    var temp;\r\n    for (var i = 0; i < keys.length - 1; i++) {\r\n        temp = keys[i];\r\n        if (!obj[temp])\r\n            obj[temp] = {};\r\n        obj = obj[temp];\r\n    }\r\n    obj[keys.pop()] = value;\r\n};\r\nfunction propertiesProxy(target, sourceKey, key) {\r\n    sharedPropertyDefinition.get = function proxyGetter() {\r\n        return getProperty(this, sourceKey);\r\n    };\r\n    sharedPropertyDefinition.set = function proxySetter(val) {\r\n        setProperty(this, sourceKey, val);\r\n    };\r\n    Object.defineProperty(target, key, sharedPropertyDefinition);\r\n}\n\nvar EventEmitter = /** @class */ (function () {\r\n    function EventEmitter(names) {\r\n        this.events = {};\r\n        this.eventTypes = {};\r\n        this.registerType(names);\r\n    }\r\n    EventEmitter.prototype.on = function (type, fn, context) {\r\n        if (context === void 0) { context = this; }\r\n        this.hasType(type);\r\n        if (!this.events[type]) {\r\n            this.events[type] = [];\r\n        }\r\n        this.events[type].push([fn, context]);\r\n        return this;\r\n    };\r\n    EventEmitter.prototype.once = function (type, fn, context) {\r\n        var _this = this;\r\n        if (context === void 0) { context = this; }\r\n        this.hasType(type);\r\n        var magic = function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            _this.off(type, magic);\r\n            var ret = fn.apply(context, args);\r\n            if (ret === true) {\r\n                return ret;\r\n            }\r\n        };\r\n        magic.fn = fn;\r\n        this.on(type, magic);\r\n        return this;\r\n    };\r\n    EventEmitter.prototype.off = function (type, fn) {\r\n        if (!type && !fn) {\r\n            this.events = {};\r\n            return this;\r\n        }\r\n        if (type) {\r\n            this.hasType(type);\r\n            if (!fn) {\r\n                this.events[type] = [];\r\n                return this;\r\n            }\r\n            var events = this.events[type];\r\n            if (!events) {\r\n                return this;\r\n            }\r\n            var count = events.length;\r\n            while (count--) {\r\n                if (events[count][0] === fn ||\r\n                    (events[count][0] && events[count][0].fn === fn)) {\r\n                    events.splice(count, 1);\r\n                }\r\n            }\r\n            return this;\r\n        }\r\n    };\r\n    EventEmitter.prototype.trigger = function (type) {\r\n        var args = [];\r\n        for (var _i = 1; _i < arguments.length; _i++) {\r\n            args[_i - 1] = arguments[_i];\r\n        }\r\n        this.hasType(type);\r\n        var events = this.events[type];\r\n        if (!events) {\r\n            return;\r\n        }\r\n        var len = events.length;\r\n        var eventsCopy = __spreadArrays(events);\r\n        var ret;\r\n        for (var i = 0; i < len; i++) {\r\n            var event_1 = eventsCopy[i];\r\n            var fn = event_1[0], context = event_1[1];\r\n            if (fn) {\r\n                ret = fn.apply(context, args);\r\n                if (ret === true) {\r\n                    return ret;\r\n                }\r\n            }\r\n        }\r\n    };\r\n    EventEmitter.prototype.registerType = function (names) {\r\n        var _this = this;\r\n        names.forEach(function (type) {\r\n            _this.eventTypes[type] = type;\r\n        });\r\n    };\r\n    EventEmitter.prototype.destroy = function () {\r\n        this.events = {};\r\n        this.eventTypes = {};\r\n    };\r\n    EventEmitter.prototype.hasType = function (type) {\r\n        var types = this.eventTypes;\r\n        var isType = types[type] === type;\r\n        if (!isType) {\r\n            warn(\"EventEmitter has used unknown event type: \\\"\" + type + \"\\\", should be oneof [\" +\r\n                (\"\" + Object.keys(types).map(function (_) { return JSON.stringify(_); })) +\r\n                \"]\");\r\n        }\r\n    };\r\n    return EventEmitter;\r\n}());\r\nvar EventRegister = /** @class */ (function () {\r\n    function EventRegister(wrapper, events) {\r\n        this.wrapper = wrapper;\r\n        this.events = events;\r\n        this.addDOMEvents();\r\n    }\r\n    EventRegister.prototype.destroy = function () {\r\n        this.removeDOMEvents();\r\n        this.events = [];\r\n    };\r\n    EventRegister.prototype.addDOMEvents = function () {\r\n        this.handleDOMEvents(addEvent);\r\n    };\r\n    EventRegister.prototype.removeDOMEvents = function () {\r\n        this.handleDOMEvents(removeEvent);\r\n    };\r\n    EventRegister.prototype.handleDOMEvents = function (eventOperation) {\r\n        var _this = this;\r\n        var wrapper = this.wrapper;\r\n        this.events.forEach(function (event) {\r\n            eventOperation(wrapper, event.name, _this, !!event.capture);\r\n        });\r\n    };\r\n    EventRegister.prototype.handleEvent = function (e) {\r\n        var eventType = e.type;\r\n        this.events.some(function (event) {\r\n            if (event.name === eventType) {\r\n                event.handler(e);\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n    };\r\n    return EventRegister;\r\n}());\n\nvar CustomOptions = /** @class */ (function () {\r\n    function CustomOptions() {\r\n    }\r\n    return CustomOptions;\r\n}());\r\nvar OptionsConstructor = /** @class */ (function (_super) {\r\n    __extends(OptionsConstructor, _super);\r\n    function OptionsConstructor() {\r\n        var _this = _super.call(this) || this;\r\n        _this.startX = 0;\r\n        _this.startY = 0;\r\n        _this.scrollX = false;\r\n        _this.scrollY = true;\r\n        _this.freeScroll = false;\r\n        _this.directionLockThreshold = 0;\r\n        _this.eventPassthrough = \"\" /* None */;\r\n        _this.click = false;\r\n        _this.dblclick = false;\r\n        _this.tap = '';\r\n        _this.bounce = {\r\n            top: true,\r\n            bottom: true,\r\n            left: true,\r\n            right: true,\r\n        };\r\n        _this.bounceTime = 800;\r\n        _this.momentum = true;\r\n        _this.momentumLimitTime = 300;\r\n        _this.momentumLimitDistance = 15;\r\n        _this.swipeTime = 2500;\r\n        _this.swipeBounceTime = 500;\r\n        _this.deceleration = 0.0015;\r\n        _this.flickLimitTime = 200;\r\n        _this.flickLimitDistance = 100;\r\n        _this.resizePolling = 60;\r\n        _this.probeType = 0 /* Default */;\r\n        _this.stopPropagation = false;\r\n        _this.preventDefault = true;\r\n        _this.preventDefaultException = {\r\n            tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT|AUDIO)$/,\r\n        };\r\n        _this.tagException = {\r\n            tagName: /^TEXTAREA$/,\r\n        };\r\n        _this.HWCompositing = true;\r\n        _this.useTransition = true;\r\n        _this.bindToWrapper = false;\r\n        _this.bindToTarget = false;\r\n        _this.disableMouse = hasTouch;\r\n        _this.disableTouch = !hasTouch;\r\n        _this.autoBlur = true;\r\n        _this.autoEndDistance = 5;\r\n        _this.outOfBoundaryDampingFactor = 1 / 3;\r\n        _this.specifiedIndexAsContent = 0;\r\n        _this.quadrant = 1 /* First */;\r\n        return _this;\r\n    }\r\n    OptionsConstructor.prototype.merge = function (options) {\r\n        if (!options)\r\n            return this;\r\n        for (var key in options) {\r\n            if (key === 'bounce') {\r\n                this.bounce = this.resolveBounce(options[key]);\r\n                continue;\r\n            }\r\n            this[key] = options[key];\r\n        }\r\n        return this;\r\n    };\r\n    OptionsConstructor.prototype.process = function () {\r\n        this.translateZ =\r\n            this.HWCompositing && hasPerspective ? ' translateZ(1px)' : '';\r\n        this.useTransition = this.useTransition && hasTransition;\r\n        this.preventDefault = !this.eventPassthrough && this.preventDefault;\r\n        // If you want eventPassthrough I have to lock one of the axes\r\n        this.scrollX =\r\n            this.eventPassthrough === \"horizontal\" /* Horizontal */\r\n                ? false\r\n                : this.scrollX;\r\n        this.scrollY =\r\n            this.eventPassthrough === \"vertical\" /* Vertical */ ? false : this.scrollY;\r\n        // With eventPassthrough we also need lockDirection mechanism\r\n        this.freeScroll = this.freeScroll && !this.eventPassthrough;\r\n        // force true when freeScroll is true\r\n        this.scrollX = this.freeScroll ? true : this.scrollX;\r\n        this.scrollY = this.freeScroll ? true : this.scrollY;\r\n        this.directionLockThreshold = this.eventPassthrough\r\n            ? 0\r\n            : this.directionLockThreshold;\r\n        return this;\r\n    };\r\n    OptionsConstructor.prototype.resolveBounce = function (bounceOptions) {\r\n        var DEFAULT_BOUNCE = {\r\n            top: true,\r\n            right: true,\r\n            bottom: true,\r\n            left: true,\r\n        };\r\n        var NEGATED_BOUNCE = {\r\n            top: false,\r\n            right: false,\r\n            bottom: false,\r\n            left: false,\r\n        };\r\n        var ret;\r\n        if (typeof bounceOptions === 'object') {\r\n            ret = extend(DEFAULT_BOUNCE, bounceOptions);\r\n        }\r\n        else {\r\n            ret = bounceOptions ? DEFAULT_BOUNCE : NEGATED_BOUNCE;\r\n        }\r\n        return ret;\r\n    };\r\n    return OptionsConstructor;\r\n}(CustomOptions));\n\nvar ActionsHandler = /** @class */ (function () {\r\n    function ActionsHandler(wrapper, options) {\r\n        this.wrapper = wrapper;\r\n        this.options = options;\r\n        this.hooks = new EventEmitter([\r\n            'beforeStart',\r\n            'start',\r\n            'move',\r\n            'end',\r\n            'click',\r\n        ]);\r\n        this.handleDOMEvents();\r\n    }\r\n    ActionsHandler.prototype.handleDOMEvents = function () {\r\n        var _a = this.options, bindToWrapper = _a.bindToWrapper, disableMouse = _a.disableMouse, disableTouch = _a.disableTouch, click = _a.click;\r\n        var wrapper = this.wrapper;\r\n        var target = bindToWrapper ? wrapper : window;\r\n        var wrapperEvents = [];\r\n        var targetEvents = [];\r\n        var shouldRegisterTouch = !disableTouch;\r\n        var shouldRegisterMouse = !disableMouse;\r\n        if (click) {\r\n            wrapperEvents.push({\r\n                name: 'click',\r\n                handler: this.click.bind(this),\r\n                capture: true,\r\n            });\r\n        }\r\n        if (shouldRegisterTouch) {\r\n            wrapperEvents.push({\r\n                name: 'touchstart',\r\n                handler: this.start.bind(this),\r\n            });\r\n            targetEvents.push({\r\n                name: 'touchmove',\r\n                handler: this.move.bind(this),\r\n            }, {\r\n                name: 'touchend',\r\n                handler: this.end.bind(this),\r\n            }, {\r\n                name: 'touchcancel',\r\n                handler: this.end.bind(this),\r\n            });\r\n        }\r\n        if (shouldRegisterMouse) {\r\n            wrapperEvents.push({\r\n                name: 'mousedown',\r\n                handler: this.start.bind(this),\r\n            });\r\n            targetEvents.push({\r\n                name: 'mousemove',\r\n                handler: this.move.bind(this),\r\n            }, {\r\n                name: 'mouseup',\r\n                handler: this.end.bind(this),\r\n            });\r\n        }\r\n        this.wrapperEventRegister = new EventRegister(wrapper, wrapperEvents);\r\n        this.targetEventRegister = new EventRegister(target, targetEvents);\r\n    };\r\n    ActionsHandler.prototype.beforeHandler = function (e, type) {\r\n        var _a = this.options, preventDefault = _a.preventDefault, stopPropagation = _a.stopPropagation, preventDefaultException = _a.preventDefaultException;\r\n        var preventDefaultConditions = {\r\n            start: function () {\r\n                return (preventDefault &&\r\n                    !preventDefaultExceptionFn(e.target, preventDefaultException));\r\n            },\r\n            end: function () {\r\n                return (preventDefault &&\r\n                    !preventDefaultExceptionFn(e.target, preventDefaultException));\r\n            },\r\n            move: function () {\r\n                return preventDefault;\r\n            },\r\n        };\r\n        if (preventDefaultConditions[type]()) {\r\n            e.preventDefault();\r\n        }\r\n        if (stopPropagation) {\r\n            e.stopPropagation();\r\n        }\r\n    };\r\n    ActionsHandler.prototype.setInitiated = function (type) {\r\n        if (type === void 0) { type = 0; }\r\n        this.initiated = type;\r\n    };\r\n    ActionsHandler.prototype.start = function (e) {\r\n        var _eventType = eventTypeMap[e.type];\r\n        if (this.initiated && this.initiated !== _eventType) {\r\n            return;\r\n        }\r\n        this.setInitiated(_eventType);\r\n        // if textarea or other html tags in options.tagException is manipulated\r\n        // do not make bs scroll\r\n        if (tagExceptionFn(e.target, this.options.tagException)) {\r\n            this.setInitiated();\r\n            return;\r\n        }\r\n        // only allow mouse left button\r\n        if (_eventType === 2 /* Mouse */ && e.button !== 0 /* Left */)\r\n            return;\r\n        if (this.hooks.trigger(this.hooks.eventTypes.beforeStart, e)) {\r\n            return;\r\n        }\r\n        this.beforeHandler(e, 'start');\r\n        var point = (e.touches ? e.touches[0] : e);\r\n        this.pointX = point.pageX;\r\n        this.pointY = point.pageY;\r\n        this.hooks.trigger(this.hooks.eventTypes.start, e);\r\n    };\r\n    ActionsHandler.prototype.move = function (e) {\r\n        if (eventTypeMap[e.type] !== this.initiated) {\r\n            return;\r\n        }\r\n        this.beforeHandler(e, 'move');\r\n        var point = (e.touches ? e.touches[0] : e);\r\n        var deltaX = point.pageX - this.pointX;\r\n        var deltaY = point.pageY - this.pointY;\r\n        this.pointX = point.pageX;\r\n        this.pointY = point.pageY;\r\n        if (this.hooks.trigger(this.hooks.eventTypes.move, {\r\n            deltaX: deltaX,\r\n            deltaY: deltaY,\r\n            e: e,\r\n        })) {\r\n            return;\r\n        }\r\n        // auto end when out of viewport\r\n        var scrollLeft = document.documentElement.scrollLeft ||\r\n            window.pageXOffset ||\r\n            document.body.scrollLeft;\r\n        var scrollTop = document.documentElement.scrollTop ||\r\n            window.pageYOffset ||\r\n            document.body.scrollTop;\r\n        var pX = this.pointX - scrollLeft;\r\n        var pY = this.pointY - scrollTop;\r\n        var autoEndDistance = this.options.autoEndDistance;\r\n        if (pX > document.documentElement.clientWidth - autoEndDistance ||\r\n            pY > document.documentElement.clientHeight - autoEndDistance ||\r\n            pX < autoEndDistance ||\r\n            pY < autoEndDistance) {\r\n            this.end(e);\r\n        }\r\n    };\r\n    ActionsHandler.prototype.end = function (e) {\r\n        if (eventTypeMap[e.type] !== this.initiated) {\r\n            return;\r\n        }\r\n        this.setInitiated();\r\n        this.beforeHandler(e, 'end');\r\n        this.hooks.trigger(this.hooks.eventTypes.end, e);\r\n    };\r\n    ActionsHandler.prototype.click = function (e) {\r\n        this.hooks.trigger(this.hooks.eventTypes.click, e);\r\n    };\r\n    ActionsHandler.prototype.setContent = function (content) {\r\n        if (content !== this.wrapper) {\r\n            this.wrapper = content;\r\n            this.rebindDOMEvents();\r\n        }\r\n    };\r\n    ActionsHandler.prototype.rebindDOMEvents = function () {\r\n        this.wrapperEventRegister.destroy();\r\n        this.targetEventRegister.destroy();\r\n        this.handleDOMEvents();\r\n    };\r\n    ActionsHandler.prototype.destroy = function () {\r\n        this.wrapperEventRegister.destroy();\r\n        this.targetEventRegister.destroy();\r\n        this.hooks.destroy();\r\n    };\r\n    return ActionsHandler;\r\n}());\n\nvar translaterMetaData = {\r\n    x: ['translateX', 'px'],\r\n    y: ['translateY', 'px'],\r\n};\r\nvar Translater = /** @class */ (function () {\r\n    function Translater(content) {\r\n        this.setContent(content);\r\n        this.hooks = new EventEmitter(['beforeTranslate', 'translate']);\r\n    }\r\n    Translater.prototype.getComputedPosition = function () {\r\n        var cssStyle = window.getComputedStyle(this.content, null);\r\n        var matrix = cssStyle[style.transform].split(')')[0].split(', ');\r\n        var x = +(matrix[12] || matrix[4]) || 0;\r\n        var y = +(matrix[13] || matrix[5]) || 0;\r\n        return {\r\n            x: x,\r\n            y: y,\r\n        };\r\n    };\r\n    Translater.prototype.translate = function (point) {\r\n        var transformStyle = [];\r\n        Object.keys(point).forEach(function (key) {\r\n            if (!translaterMetaData[key]) {\r\n                return;\r\n            }\r\n            var transformFnName = translaterMetaData[key][0];\r\n            if (transformFnName) {\r\n                var transformFnArgUnit = translaterMetaData[key][1];\r\n                var transformFnArg = point[key];\r\n                transformStyle.push(transformFnName + \"(\" + transformFnArg + transformFnArgUnit + \")\");\r\n            }\r\n        });\r\n        this.hooks.trigger(this.hooks.eventTypes.beforeTranslate, transformStyle, point);\r\n        this.style[style.transform] = transformStyle.join(' ');\r\n        this.hooks.trigger(this.hooks.eventTypes.translate, point);\r\n    };\r\n    Translater.prototype.setContent = function (content) {\r\n        if (this.content !== content) {\r\n            this.content = content;\r\n            this.style = content.style;\r\n        }\r\n    };\r\n    Translater.prototype.destroy = function () {\r\n        this.hooks.destroy();\r\n    };\r\n    return Translater;\r\n}());\n\nvar Base = /** @class */ (function () {\r\n    function Base(content, translater, options) {\r\n        this.translater = translater;\r\n        this.options = options;\r\n        this.timer = 0;\r\n        this.hooks = new EventEmitter([\r\n            'move',\r\n            'end',\r\n            'beforeForceStop',\r\n            'forceStop',\r\n            'callStop',\r\n            'time',\r\n            'timeFunction',\r\n        ]);\r\n        this.setContent(content);\r\n    }\r\n    Base.prototype.translate = function (endPoint) {\r\n        this.translater.translate(endPoint);\r\n    };\r\n    Base.prototype.setPending = function (pending) {\r\n        this.pending = pending;\r\n    };\r\n    Base.prototype.setForceStopped = function (forceStopped) {\r\n        this.forceStopped = forceStopped;\r\n    };\r\n    Base.prototype.setCallStop = function (called) {\r\n        this.callStopWhenPending = called;\r\n    };\r\n    Base.prototype.setContent = function (content) {\r\n        if (this.content !== content) {\r\n            this.content = content;\r\n            this.style = content.style;\r\n            this.stop();\r\n        }\r\n    };\r\n    Base.prototype.clearTimer = function () {\r\n        if (this.timer) {\r\n            cancelAnimationFrame(this.timer);\r\n            this.timer = 0;\r\n        }\r\n    };\r\n    Base.prototype.destroy = function () {\r\n        this.hooks.destroy();\r\n        cancelAnimationFrame(this.timer);\r\n    };\r\n    return Base;\r\n}());\n\n// iOS 13.6 - 14.x, window.getComputedStyle sometimes will get wrong transform value\r\n// when bs use transition mode\r\n// eg: translateY -100px -> -200px, when the last frame which is about to scroll to -200px\r\n// window.getComputedStyle(this.content) will calculate transformY to be -100px(startPoint)\r\n// it is weird\r\n// so we should validate position caculated by 'window.getComputedStyle'\r\nvar isValidPostion = function (startPoint, endPoint, currentPos, prePos) {\r\n    var computeDirection = function (endValue, startValue) {\r\n        var delta = endValue - startValue;\r\n        var direction = delta > 0\r\n            ? -1 /* Negative */\r\n            : delta < 0\r\n                ? 1 /* Positive */\r\n                : 0 /* Default */;\r\n        return direction;\r\n    };\r\n    var directionX = computeDirection(endPoint.x, startPoint.x);\r\n    var directionY = computeDirection(endPoint.y, startPoint.y);\r\n    var deltaX = currentPos.x - prePos.x;\r\n    var deltaY = currentPos.y - prePos.y;\r\n    return directionX * deltaX <= 0 && directionY * deltaY <= 0;\r\n};\n\nvar Transition = /** @class */ (function (_super) {\r\n    __extends(Transition, _super);\r\n    function Transition() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    Transition.prototype.startProbe = function (startPoint, endPoint) {\r\n        var _this = this;\r\n        var prePos = startPoint;\r\n        var probe = function () {\r\n            var pos = _this.translater.getComputedPosition();\r\n            if (isValidPostion(startPoint, endPoint, pos, prePos)) {\r\n                _this.hooks.trigger(_this.hooks.eventTypes.move, pos);\r\n            }\r\n            // call bs.stop() should not dispatch end hook again.\r\n            // forceStop hook will do this.\r\n            /* istanbul ignore if  */\r\n            if (!_this.pending) {\r\n                if (_this.callStopWhenPending) {\r\n                    _this.callStopWhenPending = false;\r\n                }\r\n                else {\r\n                    // transition ends should dispatch end hook.\r\n                    _this.hooks.trigger(_this.hooks.eventTypes.end, pos);\r\n                }\r\n            }\r\n            prePos = pos;\r\n            if (_this.pending) {\r\n                _this.timer = requestAnimationFrame(probe);\r\n            }\r\n        };\r\n        // when manually call bs.stop(), then bs.scrollTo()\r\n        // we should reset callStopWhenPending to dispatch end hook\r\n        if (this.callStopWhenPending) {\r\n            this.setCallStop(false);\r\n        }\r\n        cancelAnimationFrame(this.timer);\r\n        probe();\r\n    };\r\n    Transition.prototype.transitionTime = function (time) {\r\n        if (time === void 0) { time = 0; }\r\n        this.style[style.transitionDuration] = time + 'ms';\r\n        this.hooks.trigger(this.hooks.eventTypes.time, time);\r\n    };\r\n    Transition.prototype.transitionTimingFunction = function (easing) {\r\n        this.style[style.transitionTimingFunction] = easing;\r\n        this.hooks.trigger(this.hooks.eventTypes.timeFunction, easing);\r\n    };\r\n    Transition.prototype.transitionProperty = function () {\r\n        this.style[style.transitionProperty] = style.transform;\r\n    };\r\n    Transition.prototype.move = function (startPoint, endPoint, time, easingFn) {\r\n        this.setPending(time > 0);\r\n        this.transitionTimingFunction(easingFn);\r\n        this.transitionProperty();\r\n        this.transitionTime(time);\r\n        this.translate(endPoint);\r\n        var isRealtimeProbeType = this.options.probeType === 3 /* Realtime */;\r\n        if (time && isRealtimeProbeType) {\r\n            this.startProbe(startPoint, endPoint);\r\n        }\r\n        // if we change content's transformY in a tick\r\n        // such as: 0 -> 50px -> 0\r\n        // transitionend will not be triggered\r\n        // so we forceupdate by reflow\r\n        if (!time) {\r\n            this._reflow = this.content.offsetHeight;\r\n            if (isRealtimeProbeType) {\r\n                this.hooks.trigger(this.hooks.eventTypes.move, endPoint);\r\n            }\r\n            this.hooks.trigger(this.hooks.eventTypes.end, endPoint);\r\n        }\r\n    };\r\n    Transition.prototype.doStop = function () {\r\n        var pending = this.pending;\r\n        this.setForceStopped(false);\r\n        this.setCallStop(false);\r\n        // still in transition\r\n        if (pending) {\r\n            this.setPending(false);\r\n            cancelAnimationFrame(this.timer);\r\n            var _a = this.translater.getComputedPosition(), x = _a.x, y = _a.y;\r\n            this.transitionTime();\r\n            this.translate({ x: x, y: y });\r\n            this.setForceStopped(true);\r\n            this.setCallStop(true);\r\n            this.hooks.trigger(this.hooks.eventTypes.forceStop, { x: x, y: y });\r\n        }\r\n        return pending;\r\n    };\r\n    Transition.prototype.stop = function () {\r\n        var stopFromTransition = this.doStop();\r\n        if (stopFromTransition) {\r\n            this.hooks.trigger(this.hooks.eventTypes.callStop);\r\n        }\r\n    };\r\n    return Transition;\r\n}(Base));\n\nvar Animation = /** @class */ (function (_super) {\r\n    __extends(Animation, _super);\r\n    function Animation() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    Animation.prototype.move = function (startPoint, endPoint, time, easingFn) {\r\n        // time is 0\r\n        if (!time) {\r\n            this.translate(endPoint);\r\n            if (this.options.probeType === 3 /* Realtime */) {\r\n                this.hooks.trigger(this.hooks.eventTypes.move, endPoint);\r\n            }\r\n            this.hooks.trigger(this.hooks.eventTypes.end, endPoint);\r\n            return;\r\n        }\r\n        this.animate(startPoint, endPoint, time, easingFn);\r\n    };\r\n    Animation.prototype.animate = function (startPoint, endPoint, duration, easingFn) {\r\n        var _this = this;\r\n        var startTime = getNow();\r\n        var destTime = startTime + duration;\r\n        var isRealtimeProbeType = this.options.probeType === 3 /* Realtime */;\r\n        var step = function () {\r\n            var now = getNow();\r\n            // js animation end\r\n            if (now >= destTime) {\r\n                _this.translate(endPoint);\r\n                if (isRealtimeProbeType) {\r\n                    _this.hooks.trigger(_this.hooks.eventTypes.move, endPoint);\r\n                }\r\n                _this.hooks.trigger(_this.hooks.eventTypes.end, endPoint);\r\n                return;\r\n            }\r\n            now = (now - startTime) / duration;\r\n            var easing = easingFn(now);\r\n            var newPoint = {};\r\n            Object.keys(endPoint).forEach(function (key) {\r\n                var startValue = startPoint[key];\r\n                var endValue = endPoint[key];\r\n                newPoint[key] = (endValue - startValue) * easing + startValue;\r\n            });\r\n            _this.translate(newPoint);\r\n            if (isRealtimeProbeType) {\r\n                _this.hooks.trigger(_this.hooks.eventTypes.move, newPoint);\r\n            }\r\n            if (_this.pending) {\r\n                _this.timer = requestAnimationFrame(step);\r\n            }\r\n            // call bs.stop() should not dispatch end hook again.\r\n            // forceStop hook will do this.\r\n            /* istanbul ignore if  */\r\n            if (!_this.pending) {\r\n                if (_this.callStopWhenPending) {\r\n                    _this.callStopWhenPending = false;\r\n                }\r\n                else {\r\n                    // raf ends should dispatch end hook.\r\n                    _this.hooks.trigger(_this.hooks.eventTypes.end, endPoint);\r\n                }\r\n            }\r\n        };\r\n        this.setPending(true);\r\n        // when manually call bs.stop(), then bs.scrollTo()\r\n        // we should reset callStopWhenPending to dispatch end hook\r\n        if (this.callStopWhenPending) {\r\n            this.setCallStop(false);\r\n        }\r\n        cancelAnimationFrame(this.timer);\r\n        step();\r\n    };\r\n    Animation.prototype.doStop = function () {\r\n        var pending = this.pending;\r\n        this.setForceStopped(false);\r\n        this.setCallStop(false);\r\n        // still in requestFrameAnimation\r\n        if (pending) {\r\n            this.setPending(false);\r\n            cancelAnimationFrame(this.timer);\r\n            var pos = this.translater.getComputedPosition();\r\n            this.setForceStopped(true);\r\n            this.setCallStop(true);\r\n            this.hooks.trigger(this.hooks.eventTypes.forceStop, pos);\r\n        }\r\n        return pending;\r\n    };\r\n    Animation.prototype.stop = function () {\r\n        var stopFromAnimation = this.doStop();\r\n        if (stopFromAnimation) {\r\n            this.hooks.trigger(this.hooks.eventTypes.callStop);\r\n        }\r\n    };\r\n    return Animation;\r\n}(Base));\n\nfunction createAnimater(element, translater, options) {\r\n    var useTransition = options.useTransition;\r\n    var animaterOptions = {};\r\n    Object.defineProperty(animaterOptions, 'probeType', {\r\n        enumerable: true,\r\n        configurable: false,\r\n        get: function () {\r\n            return options.probeType;\r\n        },\r\n    });\r\n    if (useTransition) {\r\n        return new Transition(element, translater, animaterOptions);\r\n    }\r\n    else {\r\n        return new Animation(element, translater, animaterOptions);\r\n    }\r\n}\n\nvar Behavior = /** @class */ (function () {\r\n    function Behavior(wrapper, content, options) {\r\n        this.wrapper = wrapper;\r\n        this.options = options;\r\n        this.hooks = new EventEmitter([\r\n            'beforeComputeBoundary',\r\n            'computeBoundary',\r\n            'momentum',\r\n            'end',\r\n            'ignoreHasScroll'\r\n        ]);\r\n        this.refresh(content);\r\n    }\r\n    Behavior.prototype.start = function () {\r\n        this.dist = 0;\r\n        this.setMovingDirection(0 /* Default */);\r\n        this.setDirection(0 /* Default */);\r\n    };\r\n    Behavior.prototype.move = function (delta) {\r\n        delta = this.hasScroll ? delta : 0;\r\n        this.setMovingDirection(delta);\r\n        return this.performDampingAlgorithm(delta, this.options.outOfBoundaryDampingFactor);\r\n    };\r\n    Behavior.prototype.setMovingDirection = function (delta) {\r\n        this.movingDirection =\r\n            delta > 0\r\n                ? -1 /* Negative */\r\n                : delta < 0\r\n                    ? 1 /* Positive */\r\n                    : 0 /* Default */;\r\n    };\r\n    Behavior.prototype.setDirection = function (delta) {\r\n        this.direction =\r\n            delta > 0\r\n                ? -1 /* Negative */\r\n                : delta < 0\r\n                    ? 1 /* Positive */\r\n                    : 0 /* Default */;\r\n    };\r\n    Behavior.prototype.performDampingAlgorithm = function (delta, dampingFactor) {\r\n        var newPos = this.currentPos + delta;\r\n        // Slow down or stop if outside of the boundaries\r\n        if (newPos > this.minScrollPos || newPos < this.maxScrollPos) {\r\n            if ((newPos > this.minScrollPos && this.options.bounces[0]) ||\r\n                (newPos < this.maxScrollPos && this.options.bounces[1])) {\r\n                newPos = this.currentPos + delta * dampingFactor;\r\n            }\r\n            else {\r\n                newPos =\r\n                    newPos > this.minScrollPos ? this.minScrollPos : this.maxScrollPos;\r\n            }\r\n        }\r\n        return newPos;\r\n    };\r\n    Behavior.prototype.end = function (duration) {\r\n        var momentumInfo = {\r\n            duration: 0\r\n        };\r\n        var absDist = Math.abs(this.currentPos - this.startPos);\r\n        // start momentum animation if needed\r\n        if (this.options.momentum &&\r\n            duration < this.options.momentumLimitTime &&\r\n            absDist > this.options.momentumLimitDistance) {\r\n            var wrapperSize = (this.direction === -1 /* Negative */ && this.options.bounces[0]) ||\r\n                (this.direction === 1 /* Positive */ && this.options.bounces[1])\r\n                ? this.wrapperSize\r\n                : 0;\r\n            momentumInfo = this.hasScroll\r\n                ? this.momentum(this.currentPos, this.startPos, duration, this.maxScrollPos, this.minScrollPos, wrapperSize, this.options)\r\n                : { destination: this.currentPos, duration: 0 };\r\n        }\r\n        else {\r\n            this.hooks.trigger(this.hooks.eventTypes.end, momentumInfo);\r\n        }\r\n        return momentumInfo;\r\n    };\r\n    Behavior.prototype.momentum = function (current, start, time, lowerMargin, upperMargin, wrapperSize, options) {\r\n        if (options === void 0) { options = this.options; }\r\n        var distance = current - start;\r\n        var speed = Math.abs(distance) / time;\r\n        var deceleration = options.deceleration, swipeBounceTime = options.swipeBounceTime, swipeTime = options.swipeTime;\r\n        var duration = Math.min(swipeTime, (speed * 2) / deceleration);\r\n        var momentumData = {\r\n            destination: current + ((speed * speed) / deceleration) * (distance < 0 ? -1 : 1),\r\n            duration: duration,\r\n            rate: 15\r\n        };\r\n        this.hooks.trigger(this.hooks.eventTypes.momentum, momentumData, distance);\r\n        if (momentumData.destination < lowerMargin) {\r\n            momentumData.destination = wrapperSize\r\n                ? Math.max(lowerMargin - wrapperSize / 4, lowerMargin - (wrapperSize / momentumData.rate) * speed)\r\n                : lowerMargin;\r\n            momentumData.duration = swipeBounceTime;\r\n        }\r\n        else if (momentumData.destination > upperMargin) {\r\n            momentumData.destination = wrapperSize\r\n                ? Math.min(upperMargin + wrapperSize / 4, upperMargin + (wrapperSize / momentumData.rate) * speed)\r\n                : upperMargin;\r\n            momentumData.duration = swipeBounceTime;\r\n        }\r\n        momentumData.destination = Math.round(momentumData.destination);\r\n        return momentumData;\r\n    };\r\n    Behavior.prototype.updateDirection = function () {\r\n        var absDist = this.currentPos - this.absStartPos;\r\n        this.setDirection(absDist);\r\n    };\r\n    Behavior.prototype.refresh = function (content) {\r\n        var _a = this.options.rect, size = _a.size, position = _a.position;\r\n        var isWrapperStatic = window.getComputedStyle(this.wrapper, null).position === 'static';\r\n        // Force reflow\r\n        var wrapperRect = getRect(this.wrapper);\r\n        // use client is more fair than offset\r\n        this.wrapperSize = this.wrapper[size === 'width' ? 'clientWidth' : 'clientHeight'];\r\n        this.setContent(content);\r\n        var contentRect = getRect(this.content);\r\n        this.contentSize = contentRect[size];\r\n        this.relativeOffset = contentRect[position];\r\n        /* istanbul ignore if  */\r\n        if (isWrapperStatic) {\r\n            this.relativeOffset -= wrapperRect[position];\r\n        }\r\n        this.computeBoundary();\r\n        this.setDirection(0 /* Default */);\r\n    };\r\n    Behavior.prototype.setContent = function (content) {\r\n        if (content !== this.content) {\r\n            this.content = content;\r\n            this.resetState();\r\n        }\r\n    };\r\n    Behavior.prototype.resetState = function () {\r\n        this.currentPos = 0;\r\n        this.startPos = 0;\r\n        this.dist = 0;\r\n        this.setDirection(0 /* Default */);\r\n        this.setMovingDirection(0 /* Default */);\r\n        this.resetStartPos();\r\n    };\r\n    Behavior.prototype.computeBoundary = function () {\r\n        this.hooks.trigger(this.hooks.eventTypes.beforeComputeBoundary);\r\n        var boundary = {\r\n            minScrollPos: 0,\r\n            maxScrollPos: this.wrapperSize - this.contentSize\r\n        };\r\n        if (boundary.maxScrollPos < 0) {\r\n            boundary.maxScrollPos -= this.relativeOffset;\r\n            if (this.options.specifiedIndexAsContent === 0) {\r\n                boundary.minScrollPos = -this.relativeOffset;\r\n            }\r\n        }\r\n        this.hooks.trigger(this.hooks.eventTypes.computeBoundary, boundary);\r\n        this.minScrollPos = boundary.minScrollPos;\r\n        this.maxScrollPos = boundary.maxScrollPos;\r\n        this.hasScroll =\r\n            this.options.scrollable && this.maxScrollPos < this.minScrollPos;\r\n        if (!this.hasScroll && this.minScrollPos < this.maxScrollPos) {\r\n            this.maxScrollPos = this.minScrollPos;\r\n            this.contentSize = this.wrapperSize;\r\n        }\r\n    };\r\n    Behavior.prototype.updatePosition = function (pos) {\r\n        this.currentPos = pos;\r\n    };\r\n    Behavior.prototype.getCurrentPos = function () {\r\n        return this.currentPos;\r\n    };\r\n    Behavior.prototype.checkInBoundary = function () {\r\n        var position = this.adjustPosition(this.currentPos);\r\n        var inBoundary = position === this.getCurrentPos();\r\n        return {\r\n            position: position,\r\n            inBoundary: inBoundary\r\n        };\r\n    };\r\n    // adjust position when out of boundary\r\n    Behavior.prototype.adjustPosition = function (pos) {\r\n        if (!this.hasScroll &&\r\n            !this.hooks.trigger(this.hooks.eventTypes.ignoreHasScroll)) {\r\n            pos = this.minScrollPos;\r\n        }\r\n        else if (pos > this.minScrollPos) {\r\n            pos = this.minScrollPos;\r\n        }\r\n        else if (pos < this.maxScrollPos) {\r\n            pos = this.maxScrollPos;\r\n        }\r\n        return pos;\r\n    };\r\n    Behavior.prototype.updateStartPos = function () {\r\n        this.startPos = this.currentPos;\r\n    };\r\n    Behavior.prototype.updateAbsStartPos = function () {\r\n        this.absStartPos = this.currentPos;\r\n    };\r\n    Behavior.prototype.resetStartPos = function () {\r\n        this.updateStartPos();\r\n        this.updateAbsStartPos();\r\n    };\r\n    Behavior.prototype.getAbsDist = function (delta) {\r\n        this.dist += delta;\r\n        return Math.abs(this.dist);\r\n    };\r\n    Behavior.prototype.destroy = function () {\r\n        this.hooks.destroy();\r\n    };\r\n    return Behavior;\r\n}());\n\nvar _a, _b, _c, _d;\r\nvar PassthroughHandlers = (_a = {},\r\n    _a[\"yes\" /* Yes */] = function (e) {\r\n        return true;\r\n    },\r\n    _a[\"no\" /* No */] = function (e) {\r\n        maybePrevent(e);\r\n        return false;\r\n    },\r\n    _a);\r\nvar DirectionMap = (_b = {},\r\n    _b[\"horizontal\" /* Horizontal */] = (_c = {},\r\n        _c[\"yes\" /* Yes */] = \"horizontal\" /* Horizontal */,\r\n        _c[\"no\" /* No */] = \"vertical\" /* Vertical */,\r\n        _c),\r\n    _b[\"vertical\" /* Vertical */] = (_d = {},\r\n        _d[\"yes\" /* Yes */] = \"vertical\" /* Vertical */,\r\n        _d[\"no\" /* No */] = \"horizontal\" /* Horizontal */,\r\n        _d),\r\n    _b);\r\nvar DirectionLockAction = /** @class */ (function () {\r\n    function DirectionLockAction(directionLockThreshold, freeScroll, eventPassthrough) {\r\n        this.directionLockThreshold = directionLockThreshold;\r\n        this.freeScroll = freeScroll;\r\n        this.eventPassthrough = eventPassthrough;\r\n        this.reset();\r\n    }\r\n    DirectionLockAction.prototype.reset = function () {\r\n        this.directionLocked = \"\" /* Default */;\r\n    };\r\n    DirectionLockAction.prototype.checkMovingDirection = function (absDistX, absDistY, e) {\r\n        this.computeDirectionLock(absDistX, absDistY);\r\n        return this.handleEventPassthrough(e);\r\n    };\r\n    DirectionLockAction.prototype.adjustDelta = function (deltaX, deltaY) {\r\n        if (this.directionLocked === \"horizontal\" /* Horizontal */) {\r\n            deltaY = 0;\r\n        }\r\n        else if (this.directionLocked === \"vertical\" /* Vertical */) {\r\n            deltaX = 0;\r\n        }\r\n        return {\r\n            deltaX: deltaX,\r\n            deltaY: deltaY,\r\n        };\r\n    };\r\n    DirectionLockAction.prototype.computeDirectionLock = function (absDistX, absDistY) {\r\n        // If you are scrolling in one direction, lock it\r\n        if (this.directionLocked === \"\" /* Default */ && !this.freeScroll) {\r\n            if (absDistX > absDistY + this.directionLockThreshold) {\r\n                this.directionLocked = \"horizontal\" /* Horizontal */; // lock horizontally\r\n            }\r\n            else if (absDistY >= absDistX + this.directionLockThreshold) {\r\n                this.directionLocked = \"vertical\" /* Vertical */; // lock vertically\r\n            }\r\n            else {\r\n                this.directionLocked = \"none\" /* None */; // no lock\r\n            }\r\n        }\r\n    };\r\n    DirectionLockAction.prototype.handleEventPassthrough = function (e) {\r\n        var handleMap = DirectionMap[this.directionLocked];\r\n        if (handleMap) {\r\n            if (this.eventPassthrough === handleMap[\"yes\" /* Yes */]) {\r\n                return PassthroughHandlers[\"yes\" /* Yes */](e);\r\n            }\r\n            else if (this.eventPassthrough === handleMap[\"no\" /* No */]) {\r\n                return PassthroughHandlers[\"no\" /* No */](e);\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n    return DirectionLockAction;\r\n}());\n\nvar applyQuadrantTransformation = function (deltaX, deltaY, quadrant) {\r\n    if (quadrant === 2 /* Second */) {\r\n        return [deltaY, -deltaX];\r\n    }\r\n    else if (quadrant === 3 /* Third */) {\r\n        return [-deltaX, -deltaY];\r\n    }\r\n    else if (quadrant === 4 /* Forth */) {\r\n        return [-deltaY, deltaX];\r\n    }\r\n    else {\r\n        return [deltaX, deltaY];\r\n    }\r\n};\r\nvar ScrollerActions = /** @class */ (function () {\r\n    function ScrollerActions(scrollBehaviorX, scrollBehaviorY, actionsHandler, animater, options) {\r\n        this.hooks = new EventEmitter([\r\n            'start',\r\n            'beforeMove',\r\n            'scrollStart',\r\n            'scroll',\r\n            'beforeEnd',\r\n            'end',\r\n            'scrollEnd',\r\n            'contentNotMoved',\r\n            'detectMovingDirection',\r\n            'coordinateTransformation',\r\n        ]);\r\n        this.scrollBehaviorX = scrollBehaviorX;\r\n        this.scrollBehaviorY = scrollBehaviorY;\r\n        this.actionsHandler = actionsHandler;\r\n        this.animater = animater;\r\n        this.options = options;\r\n        this.directionLockAction = new DirectionLockAction(options.directionLockThreshold, options.freeScroll, options.eventPassthrough);\r\n        this.enabled = true;\r\n        this.bindActionsHandler();\r\n    }\r\n    ScrollerActions.prototype.bindActionsHandler = function () {\r\n        var _this = this;\r\n        // [mouse|touch]start event\r\n        this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.start, function (e) {\r\n            if (!_this.enabled)\r\n                return true;\r\n            return _this.handleStart(e);\r\n        });\r\n        // [mouse|touch]move event\r\n        this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.move, function (_a) {\r\n            var deltaX = _a.deltaX, deltaY = _a.deltaY, e = _a.e;\r\n            if (!_this.enabled)\r\n                return true;\r\n            var _b = applyQuadrantTransformation(deltaX, deltaY, _this.options.quadrant), transformateDeltaX = _b[0], transformateDeltaY = _b[1];\r\n            var transformateDeltaData = {\r\n                deltaX: transformateDeltaX,\r\n                deltaY: transformateDeltaY,\r\n            };\r\n            _this.hooks.trigger(_this.hooks.eventTypes.coordinateTransformation, transformateDeltaData);\r\n            return _this.handleMove(transformateDeltaData.deltaX, transformateDeltaData.deltaY, e);\r\n        });\r\n        // [mouse|touch]end event\r\n        this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.end, function (e) {\r\n            if (!_this.enabled)\r\n                return true;\r\n            return _this.handleEnd(e);\r\n        });\r\n        // click\r\n        this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.click, function (e) {\r\n            // handle native click event\r\n            if (_this.enabled && !e._constructed) {\r\n                _this.handleClick(e);\r\n            }\r\n        });\r\n    };\r\n    ScrollerActions.prototype.handleStart = function (e) {\r\n        var timestamp = getNow();\r\n        this.fingerMoved = false;\r\n        this.contentMoved = false;\r\n        this.startTime = timestamp;\r\n        this.directionLockAction.reset();\r\n        this.scrollBehaviorX.start();\r\n        this.scrollBehaviorY.start();\r\n        // force stopping last transition or animation\r\n        this.animater.doStop();\r\n        this.scrollBehaviorX.resetStartPos();\r\n        this.scrollBehaviorY.resetStartPos();\r\n        this.hooks.trigger(this.hooks.eventTypes.start, e);\r\n    };\r\n    ScrollerActions.prototype.handleMove = function (deltaX, deltaY, e) {\r\n        if (this.hooks.trigger(this.hooks.eventTypes.beforeMove, e)) {\r\n            return;\r\n        }\r\n        var absDistX = this.scrollBehaviorX.getAbsDist(deltaX);\r\n        var absDistY = this.scrollBehaviorY.getAbsDist(deltaY);\r\n        var timestamp = getNow();\r\n        // We need to move at least momentumLimitDistance pixels\r\n        // for the scrolling to initiate\r\n        if (this.checkMomentum(absDistX, absDistY, timestamp)) {\r\n            return true;\r\n        }\r\n        if (this.directionLockAction.checkMovingDirection(absDistX, absDistY, e)) {\r\n            this.actionsHandler.setInitiated();\r\n            return true;\r\n        }\r\n        var delta = this.directionLockAction.adjustDelta(deltaX, deltaY);\r\n        var prevX = this.scrollBehaviorX.getCurrentPos();\r\n        var newX = this.scrollBehaviorX.move(delta.deltaX);\r\n        var prevY = this.scrollBehaviorY.getCurrentPos();\r\n        var newY = this.scrollBehaviorY.move(delta.deltaY);\r\n        if (this.hooks.trigger(this.hooks.eventTypes.detectMovingDirection)) {\r\n            return;\r\n        }\r\n        if (!this.fingerMoved) {\r\n            this.fingerMoved = true;\r\n        }\r\n        var positionChanged = newX !== prevX || newY !== prevY;\r\n        if (!this.contentMoved && !positionChanged) {\r\n            this.hooks.trigger(this.hooks.eventTypes.contentNotMoved);\r\n        }\r\n        if (!this.contentMoved && positionChanged) {\r\n            this.contentMoved = true;\r\n            this.hooks.trigger(this.hooks.eventTypes.scrollStart);\r\n        }\r\n        if (this.contentMoved && positionChanged) {\r\n            this.animater.translate({\r\n                x: newX,\r\n                y: newY,\r\n            });\r\n            this.dispatchScroll(timestamp);\r\n        }\r\n    };\r\n    ScrollerActions.prototype.dispatchScroll = function (timestamp) {\r\n        // dispatch scroll in interval time\r\n        if (timestamp - this.startTime > this.options.momentumLimitTime) {\r\n            // refresh time and starting position to initiate a momentum\r\n            this.startTime = timestamp;\r\n            this.scrollBehaviorX.updateStartPos();\r\n            this.scrollBehaviorY.updateStartPos();\r\n            if (this.options.probeType === 1 /* Throttle */) {\r\n                this.hooks.trigger(this.hooks.eventTypes.scroll, this.getCurrentPos());\r\n            }\r\n        }\r\n        // dispatch scroll all the time\r\n        if (this.options.probeType > 1 /* Throttle */) {\r\n            this.hooks.trigger(this.hooks.eventTypes.scroll, this.getCurrentPos());\r\n        }\r\n    };\r\n    ScrollerActions.prototype.checkMomentum = function (absDistX, absDistY, timestamp) {\r\n        return (timestamp - this.endTime > this.options.momentumLimitTime &&\r\n            absDistY < this.options.momentumLimitDistance &&\r\n            absDistX < this.options.momentumLimitDistance);\r\n    };\r\n    ScrollerActions.prototype.handleEnd = function (e) {\r\n        if (this.hooks.trigger(this.hooks.eventTypes.beforeEnd, e)) {\r\n            return;\r\n        }\r\n        var currentPos = this.getCurrentPos();\r\n        this.scrollBehaviorX.updateDirection();\r\n        this.scrollBehaviorY.updateDirection();\r\n        if (this.hooks.trigger(this.hooks.eventTypes.end, e, currentPos)) {\r\n            return true;\r\n        }\r\n        currentPos = this.ensureIntegerPos(currentPos);\r\n        this.animater.translate(currentPos);\r\n        this.endTime = getNow();\r\n        var duration = this.endTime - this.startTime;\r\n        this.hooks.trigger(this.hooks.eventTypes.scrollEnd, currentPos, duration);\r\n    };\r\n    ScrollerActions.prototype.ensureIntegerPos = function (currentPos) {\r\n        this.ensuringInteger = true;\r\n        var x = currentPos.x, y = currentPos.y;\r\n        var _a = this.scrollBehaviorX, minScrollPosX = _a.minScrollPos, maxScrollPosX = _a.maxScrollPos;\r\n        var _b = this.scrollBehaviorY, minScrollPosY = _b.minScrollPos, maxScrollPosY = _b.maxScrollPos;\r\n        x = x > 0 ? Math.ceil(x) : Math.floor(x);\r\n        y = y > 0 ? Math.ceil(y) : Math.floor(y);\r\n        x = between(x, maxScrollPosX, minScrollPosX);\r\n        y = between(y, maxScrollPosY, minScrollPosY);\r\n        return { x: x, y: y };\r\n    };\r\n    ScrollerActions.prototype.handleClick = function (e) {\r\n        if (!preventDefaultExceptionFn(e.target, this.options.preventDefaultException)) {\r\n            maybePrevent(e);\r\n            e.stopPropagation();\r\n        }\r\n    };\r\n    ScrollerActions.prototype.getCurrentPos = function () {\r\n        return {\r\n            x: this.scrollBehaviorX.getCurrentPos(),\r\n            y: this.scrollBehaviorY.getCurrentPos(),\r\n        };\r\n    };\r\n    ScrollerActions.prototype.refresh = function () {\r\n        this.endTime = 0;\r\n    };\r\n    ScrollerActions.prototype.destroy = function () {\r\n        this.hooks.destroy();\r\n    };\r\n    return ScrollerActions;\r\n}());\n\nfunction createActionsHandlerOptions(bsOptions) {\r\n    var options = [\r\n        'click',\r\n        'bindToWrapper',\r\n        'disableMouse',\r\n        'disableTouch',\r\n        'preventDefault',\r\n        'stopPropagation',\r\n        'tagException',\r\n        'preventDefaultException',\r\n        'autoEndDistance',\r\n    ].reduce(function (prev, cur) {\r\n        prev[cur] = bsOptions[cur];\r\n        return prev;\r\n    }, {});\r\n    return options;\r\n}\r\nfunction createBehaviorOptions(bsOptions, extraProp, bounces, rect) {\r\n    var options = [\r\n        'momentum',\r\n        'momentumLimitTime',\r\n        'momentumLimitDistance',\r\n        'deceleration',\r\n        'swipeBounceTime',\r\n        'swipeTime',\r\n        'outOfBoundaryDampingFactor',\r\n        'specifiedIndexAsContent',\r\n    ].reduce(function (prev, cur) {\r\n        prev[cur] = bsOptions[cur];\r\n        return prev;\r\n    }, {});\r\n    // add extra property\r\n    options.scrollable = !!bsOptions[extraProp];\r\n    options.bounces = bounces;\r\n    options.rect = rect;\r\n    return options;\r\n}\n\nfunction bubbling(source, target, events) {\r\n    events.forEach(function (event) {\r\n        var sourceEvent;\r\n        var targetEvent;\r\n        if (typeof event === 'string') {\r\n            sourceEvent = targetEvent = event;\r\n        }\r\n        else {\r\n            sourceEvent = event.source;\r\n            targetEvent = event.target;\r\n        }\r\n        source.on(sourceEvent, function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            return target.trigger.apply(target, __spreadArrays([targetEvent], args));\r\n        });\r\n    });\r\n}\n\nfunction isSamePoint(startPoint, endPoint) {\r\n    // keys of startPoint and endPoint should be equal\r\n    var keys = Object.keys(startPoint);\r\n    for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\r\n        var key = keys_1[_i];\r\n        if (startPoint[key] !== endPoint[key])\r\n            return false;\r\n    }\r\n    return true;\r\n}\n\nvar MIN_SCROLL_DISTANCE = 1;\r\nvar Scroller = /** @class */ (function () {\r\n    function Scroller(wrapper, content, options) {\r\n        this.wrapper = wrapper;\r\n        this.content = content;\r\n        this.resizeTimeout = 0;\r\n        this.hooks = new EventEmitter([\r\n            'beforeStart',\r\n            'beforeMove',\r\n            'beforeScrollStart',\r\n            'scrollStart',\r\n            'scroll',\r\n            'beforeEnd',\r\n            'scrollEnd',\r\n            'resize',\r\n            'touchEnd',\r\n            'end',\r\n            'flick',\r\n            'scrollCancel',\r\n            'momentum',\r\n            'scrollTo',\r\n            'minDistanceScroll',\r\n            'scrollToElement',\r\n            'beforeRefresh',\r\n        ]);\r\n        this.options = options;\r\n        var _a = this.options.bounce, left = _a.left, right = _a.right, top = _a.top, bottom = _a.bottom;\r\n        // direction X\r\n        this.scrollBehaviorX = new Behavior(wrapper, content, createBehaviorOptions(options, 'scrollX', [left, right], {\r\n            size: 'width',\r\n            position: 'left',\r\n        }));\r\n        // direction Y\r\n        this.scrollBehaviorY = new Behavior(wrapper, content, createBehaviorOptions(options, 'scrollY', [top, bottom], {\r\n            size: 'height',\r\n            position: 'top',\r\n        }));\r\n        this.translater = new Translater(this.content);\r\n        this.animater = createAnimater(this.content, this.translater, this.options);\r\n        this.actionsHandler = new ActionsHandler(this.options.bindToTarget ? this.content : wrapper, createActionsHandlerOptions(this.options));\r\n        this.actions = new ScrollerActions(this.scrollBehaviorX, this.scrollBehaviorY, this.actionsHandler, this.animater, this.options);\r\n        var resizeHandler = this.resize.bind(this);\r\n        this.resizeRegister = new EventRegister(window, [\r\n            {\r\n                name: 'orientationchange',\r\n                handler: resizeHandler,\r\n            },\r\n            {\r\n                name: 'resize',\r\n                handler: resizeHandler,\r\n            },\r\n        ]);\r\n        this.registerTransitionEnd();\r\n        this.init();\r\n    }\r\n    Scroller.prototype.init = function () {\r\n        var _this = this;\r\n        this.bindTranslater();\r\n        this.bindAnimater();\r\n        this.bindActions();\r\n        // enable pointer events when scrolling ends\r\n        this.hooks.on(this.hooks.eventTypes.scrollEnd, function () {\r\n            _this.togglePointerEvents(true);\r\n        });\r\n    };\r\n    Scroller.prototype.registerTransitionEnd = function () {\r\n        this.transitionEndRegister = new EventRegister(this.content, [\r\n            {\r\n                name: style.transitionEnd,\r\n                handler: this.transitionEnd.bind(this),\r\n            },\r\n        ]);\r\n    };\r\n    Scroller.prototype.bindTranslater = function () {\r\n        var _this = this;\r\n        var hooks = this.translater.hooks;\r\n        hooks.on(hooks.eventTypes.beforeTranslate, function (transformStyle) {\r\n            if (_this.options.translateZ) {\r\n                transformStyle.push(_this.options.translateZ);\r\n            }\r\n        });\r\n        // disable pointer events when scrolling\r\n        hooks.on(hooks.eventTypes.translate, function (pos) {\r\n            var prevPos = _this.getCurrentPos();\r\n            _this.updatePositions(pos);\r\n            // scrollEnd will dispatch when scroll is force stopping in touchstart handler\r\n            // so in touchend handler, don't toggle pointer-events\r\n            if (_this.actions.ensuringInteger === true) {\r\n                _this.actions.ensuringInteger = false;\r\n                return;\r\n            }\r\n            // a valid translate\r\n            if (pos.x !== prevPos.x || pos.y !== prevPos.y) {\r\n                _this.togglePointerEvents(false);\r\n            }\r\n        });\r\n    };\r\n    Scroller.prototype.bindAnimater = function () {\r\n        var _this = this;\r\n        // reset position\r\n        this.animater.hooks.on(this.animater.hooks.eventTypes.end, function (pos) {\r\n            if (!_this.resetPosition(_this.options.bounceTime)) {\r\n                _this.animater.setPending(false);\r\n                _this.hooks.trigger(_this.hooks.eventTypes.scrollEnd, pos);\r\n            }\r\n        });\r\n        bubbling(this.animater.hooks, this.hooks, [\r\n            {\r\n                source: this.animater.hooks.eventTypes.move,\r\n                target: this.hooks.eventTypes.scroll,\r\n            },\r\n            {\r\n                source: this.animater.hooks.eventTypes.forceStop,\r\n                target: this.hooks.eventTypes.scrollEnd,\r\n            },\r\n        ]);\r\n    };\r\n    Scroller.prototype.bindActions = function () {\r\n        var _this = this;\r\n        var actions = this.actions;\r\n        bubbling(actions.hooks, this.hooks, [\r\n            {\r\n                source: actions.hooks.eventTypes.start,\r\n                target: this.hooks.eventTypes.beforeStart,\r\n            },\r\n            {\r\n                source: actions.hooks.eventTypes.start,\r\n                target: this.hooks.eventTypes.beforeScrollStart,\r\n            },\r\n            {\r\n                source: actions.hooks.eventTypes.beforeMove,\r\n                target: this.hooks.eventTypes.beforeMove,\r\n            },\r\n            {\r\n                source: actions.hooks.eventTypes.scrollStart,\r\n                target: this.hooks.eventTypes.scrollStart,\r\n            },\r\n            {\r\n                source: actions.hooks.eventTypes.scroll,\r\n                target: this.hooks.eventTypes.scroll,\r\n            },\r\n            {\r\n                source: actions.hooks.eventTypes.beforeEnd,\r\n                target: this.hooks.eventTypes.beforeEnd,\r\n            },\r\n        ]);\r\n        actions.hooks.on(actions.hooks.eventTypes.end, function (e, pos) {\r\n            _this.hooks.trigger(_this.hooks.eventTypes.touchEnd, pos);\r\n            if (_this.hooks.trigger(_this.hooks.eventTypes.end, pos)) {\r\n                return true;\r\n            }\r\n            // check if it is a click operation\r\n            if (!actions.fingerMoved) {\r\n                _this.hooks.trigger(_this.hooks.eventTypes.scrollCancel);\r\n                if (_this.checkClick(e)) {\r\n                    return true;\r\n                }\r\n            }\r\n            // reset if we are outside of the boundaries\r\n            if (_this.resetPosition(_this.options.bounceTime, ease.bounce)) {\r\n                _this.animater.setForceStopped(false);\r\n                return true;\r\n            }\r\n        });\r\n        actions.hooks.on(actions.hooks.eventTypes.scrollEnd, function (pos, duration) {\r\n            var deltaX = Math.abs(pos.x - _this.scrollBehaviorX.startPos);\r\n            var deltaY = Math.abs(pos.y - _this.scrollBehaviorY.startPos);\r\n            if (_this.checkFlick(duration, deltaX, deltaY)) {\r\n                _this.animater.setForceStopped(false);\r\n                _this.hooks.trigger(_this.hooks.eventTypes.flick);\r\n                return;\r\n            }\r\n            if (_this.momentum(pos, duration)) {\r\n                _this.animater.setForceStopped(false);\r\n                return;\r\n            }\r\n            if (actions.contentMoved) {\r\n                _this.hooks.trigger(_this.hooks.eventTypes.scrollEnd, pos);\r\n            }\r\n            if (_this.animater.forceStopped) {\r\n                _this.animater.setForceStopped(false);\r\n            }\r\n        });\r\n    };\r\n    Scroller.prototype.checkFlick = function (duration, deltaX, deltaY) {\r\n        var flickMinMovingDistance = 1; // distinguish flick from click\r\n        if (this.hooks.events.flick.length > 1 &&\r\n            duration < this.options.flickLimitTime &&\r\n            deltaX < this.options.flickLimitDistance &&\r\n            deltaY < this.options.flickLimitDistance &&\r\n            (deltaY > flickMinMovingDistance || deltaX > flickMinMovingDistance)) {\r\n            return true;\r\n        }\r\n    };\r\n    Scroller.prototype.momentum = function (pos, duration) {\r\n        var meta = {\r\n            time: 0,\r\n            easing: ease.swiper,\r\n            newX: pos.x,\r\n            newY: pos.y,\r\n        };\r\n        // start momentum animation if needed\r\n        var momentumX = this.scrollBehaviorX.end(duration);\r\n        var momentumY = this.scrollBehaviorY.end(duration);\r\n        meta.newX = isUndef(momentumX.destination)\r\n            ? meta.newX\r\n            : momentumX.destination;\r\n        meta.newY = isUndef(momentumY.destination)\r\n            ? meta.newY\r\n            : momentumY.destination;\r\n        meta.time = Math.max(momentumX.duration, momentumY.duration);\r\n        this.hooks.trigger(this.hooks.eventTypes.momentum, meta, this);\r\n        // when x or y changed, do momentum animation now!\r\n        if (meta.newX !== pos.x || meta.newY !== pos.y) {\r\n            // change easing function when scroller goes out of the boundaries\r\n            if (meta.newX > this.scrollBehaviorX.minScrollPos ||\r\n                meta.newX < this.scrollBehaviorX.maxScrollPos ||\r\n                meta.newY > this.scrollBehaviorY.minScrollPos ||\r\n                meta.newY < this.scrollBehaviorY.maxScrollPos) {\r\n                meta.easing = ease.swipeBounce;\r\n            }\r\n            this.scrollTo(meta.newX, meta.newY, meta.time, meta.easing);\r\n            return true;\r\n        }\r\n    };\r\n    Scroller.prototype.checkClick = function (e) {\r\n        var cancelable = {\r\n            preventClick: this.animater.forceStopped,\r\n        };\r\n        // we scrolled less than momentumLimitDistance pixels\r\n        if (this.hooks.trigger(this.hooks.eventTypes.checkClick)) {\r\n            this.animater.setForceStopped(false);\r\n            return true;\r\n        }\r\n        if (!cancelable.preventClick) {\r\n            var _dblclick = this.options.dblclick;\r\n            var dblclickTrigged = false;\r\n            if (_dblclick && this.lastClickTime) {\r\n                var _a = _dblclick.delay, delay = _a === void 0 ? 300 : _a;\r\n                if (getNow() - this.lastClickTime < delay) {\r\n                    dblclickTrigged = true;\r\n                    dblclick(e);\r\n                }\r\n            }\r\n            if (this.options.tap) {\r\n                tap(e, this.options.tap);\r\n            }\r\n            if (this.options.click &&\r\n                !preventDefaultExceptionFn(e.target, this.options.preventDefaultException)) {\r\n                click(e);\r\n            }\r\n            this.lastClickTime = dblclickTrigged ? null : getNow();\r\n            return true;\r\n        }\r\n        return false;\r\n    };\r\n    Scroller.prototype.resize = function () {\r\n        var _this = this;\r\n        if (!this.actions.enabled) {\r\n            return;\r\n        }\r\n        // fix a scroll problem under Android condition\r\n        /* istanbul ignore if  */\r\n        if (isAndroid) {\r\n            this.wrapper.scrollTop = 0;\r\n        }\r\n        clearTimeout(this.resizeTimeout);\r\n        this.resizeTimeout = window.setTimeout(function () {\r\n            _this.hooks.trigger(_this.hooks.eventTypes.resize);\r\n        }, this.options.resizePolling);\r\n    };\r\n    /* istanbul ignore next */\r\n    Scroller.prototype.transitionEnd = function (e) {\r\n        if (e.target !== this.content || !this.animater.pending) {\r\n            return;\r\n        }\r\n        var animater = this.animater;\r\n        animater.transitionTime();\r\n        if (!this.resetPosition(this.options.bounceTime, ease.bounce)) {\r\n            this.animater.setPending(false);\r\n            if (this.options.probeType !== 3 /* Realtime */) {\r\n                this.hooks.trigger(this.hooks.eventTypes.scrollEnd, this.getCurrentPos());\r\n            }\r\n        }\r\n    };\r\n    Scroller.prototype.togglePointerEvents = function (enabled) {\r\n        if (enabled === void 0) { enabled = true; }\r\n        var el = this.content.children.length\r\n            ? this.content.children\r\n            : [this.content];\r\n        var pointerEvents = enabled ? 'auto' : 'none';\r\n        for (var i = 0; i < el.length; i++) {\r\n            var node = el[i];\r\n            // ignore BetterScroll instance's wrapper DOM\r\n            /* istanbul ignore if  */\r\n            if (node.isBScrollContainer) {\r\n                continue;\r\n            }\r\n            node.style.pointerEvents = pointerEvents;\r\n        }\r\n    };\r\n    Scroller.prototype.refresh = function (content) {\r\n        var contentChanged = this.setContent(content);\r\n        this.hooks.trigger(this.hooks.eventTypes.beforeRefresh);\r\n        this.scrollBehaviorX.refresh(content);\r\n        this.scrollBehaviorY.refresh(content);\r\n        if (contentChanged) {\r\n            this.translater.setContent(content);\r\n            this.animater.setContent(content);\r\n            this.transitionEndRegister.destroy();\r\n            this.registerTransitionEnd();\r\n            if (this.options.bindToTarget) {\r\n                this.actionsHandler.setContent(content);\r\n            }\r\n        }\r\n        this.actions.refresh();\r\n        this.wrapperOffset = offset(this.wrapper);\r\n    };\r\n    Scroller.prototype.setContent = function (content) {\r\n        var contentChanged = content !== this.content;\r\n        if (contentChanged) {\r\n            this.content = content;\r\n        }\r\n        return contentChanged;\r\n    };\r\n    Scroller.prototype.scrollBy = function (deltaX, deltaY, time, easing) {\r\n        if (time === void 0) { time = 0; }\r\n        var _a = this.getCurrentPos(), x = _a.x, y = _a.y;\r\n        easing = !easing ? ease.bounce : easing;\r\n        deltaX += x;\r\n        deltaY += y;\r\n        this.scrollTo(deltaX, deltaY, time, easing);\r\n    };\r\n    Scroller.prototype.scrollTo = function (x, y, time, easing, extraTransform) {\r\n        if (time === void 0) { time = 0; }\r\n        if (easing === void 0) { easing = ease.bounce; }\r\n        if (extraTransform === void 0) { extraTransform = {\r\n            start: {},\r\n            end: {},\r\n        }; }\r\n        var easingFn = this.options.useTransition ? easing.style : easing.fn;\r\n        var currentPos = this.getCurrentPos();\r\n        var startPoint = __assign({ x: currentPos.x, y: currentPos.y }, extraTransform.start);\r\n        var endPoint = __assign({ x: x,\r\n            y: y }, extraTransform.end);\r\n        this.hooks.trigger(this.hooks.eventTypes.scrollTo, endPoint);\r\n        // it is an useless move\r\n        if (isSamePoint(startPoint, endPoint))\r\n            return;\r\n        var deltaX = Math.abs(endPoint.x - startPoint.x);\r\n        var deltaY = Math.abs(endPoint.y - startPoint.y);\r\n        // considering of browser compatibility for decimal transform value\r\n        // force translating immediately\r\n        if (deltaX < MIN_SCROLL_DISTANCE && deltaY < MIN_SCROLL_DISTANCE) {\r\n            time = 0;\r\n            this.hooks.trigger(this.hooks.eventTypes.minDistanceScroll);\r\n        }\r\n        this.animater.move(startPoint, endPoint, time, easingFn);\r\n    };\r\n    Scroller.prototype.scrollToElement = function (el, time, offsetX, offsetY, easing) {\r\n        var targetEle = getElement(el);\r\n        var pos = offset(targetEle);\r\n        var getOffset = function (offset, size, wrapperSize) {\r\n            if (typeof offset === 'number') {\r\n                return offset;\r\n            }\r\n            // if offsetX/Y are true we center the element to the screen\r\n            return offset ? Math.round(size / 2 - wrapperSize / 2) : 0;\r\n        };\r\n        offsetX = getOffset(offsetX, targetEle.offsetWidth, this.wrapper.offsetWidth);\r\n        offsetY = getOffset(offsetY, targetEle.offsetHeight, this.wrapper.offsetHeight);\r\n        var getPos = function (pos, wrapperPos, offset, scrollBehavior) {\r\n            pos -= wrapperPos;\r\n            pos = scrollBehavior.adjustPosition(pos - offset);\r\n            return pos;\r\n        };\r\n        pos.left = getPos(pos.left, this.wrapperOffset.left, offsetX, this.scrollBehaviorX);\r\n        pos.top = getPos(pos.top, this.wrapperOffset.top, offsetY, this.scrollBehaviorY);\r\n        if (this.hooks.trigger(this.hooks.eventTypes.scrollToElement, targetEle, pos)) {\r\n            return;\r\n        }\r\n        this.scrollTo(pos.left, pos.top, time, easing);\r\n    };\r\n    Scroller.prototype.resetPosition = function (time, easing) {\r\n        if (time === void 0) { time = 0; }\r\n        if (easing === void 0) { easing = ease.bounce; }\r\n        var _a = this.scrollBehaviorX.checkInBoundary(), x = _a.position, xInBoundary = _a.inBoundary;\r\n        var _b = this.scrollBehaviorY.checkInBoundary(), y = _b.position, yInBoundary = _b.inBoundary;\r\n        if (xInBoundary && yInBoundary) {\r\n            return false;\r\n        }\r\n        /* istanbul ignore if  */\r\n        if (isIOSBadVersion) {\r\n            // fix ios 13.4 bouncing\r\n            // see it in issues 982\r\n            this.reflow();\r\n        }\r\n        // out of boundary\r\n        this.scrollTo(x, y, time, easing);\r\n        return true;\r\n    };\r\n    /* istanbul ignore next */\r\n    Scroller.prototype.reflow = function () {\r\n        this._reflow = this.content.offsetHeight;\r\n    };\r\n    Scroller.prototype.updatePositions = function (pos) {\r\n        this.scrollBehaviorX.updatePosition(pos.x);\r\n        this.scrollBehaviorY.updatePosition(pos.y);\r\n    };\r\n    Scroller.prototype.getCurrentPos = function () {\r\n        return this.actions.getCurrentPos();\r\n    };\r\n    Scroller.prototype.enable = function () {\r\n        this.actions.enabled = true;\r\n    };\r\n    Scroller.prototype.disable = function () {\r\n        cancelAnimationFrame(this.animater.timer);\r\n        this.actions.enabled = false;\r\n    };\r\n    Scroller.prototype.destroy = function () {\r\n        var _this = this;\r\n        var keys = [\r\n            'resizeRegister',\r\n            'transitionEndRegister',\r\n            'actionsHandler',\r\n            'actions',\r\n            'hooks',\r\n            'animater',\r\n            'translater',\r\n            'scrollBehaviorX',\r\n            'scrollBehaviorY',\r\n        ];\r\n        keys.forEach(function (key) { return _this[key].destroy(); });\r\n    };\r\n    return Scroller;\r\n}());\n\nvar BScrollConstructor = /** @class */ (function (_super) {\r\n    __extends(BScrollConstructor, _super);\r\n    function BScrollConstructor(el, options) {\r\n        var _this = _super.call(this, [\r\n            'refresh',\r\n            'contentChanged',\r\n            'enable',\r\n            'disable',\r\n            'beforeScrollStart',\r\n            'scrollStart',\r\n            'scroll',\r\n            'scrollEnd',\r\n            'scrollCancel',\r\n            'touchEnd',\r\n            'flick',\r\n            'destroy'\r\n        ]) || this;\r\n        var wrapper = getElement(el);\r\n        if (!wrapper) {\r\n            warn('Can not resolve the wrapper DOM.');\r\n            return _this;\r\n        }\r\n        _this.plugins = {};\r\n        _this.options = new OptionsConstructor().merge(options).process();\r\n        if (!_this.setContent(wrapper).valid) {\r\n            return _this;\r\n        }\r\n        _this.hooks = new EventEmitter([\r\n            'refresh',\r\n            'enable',\r\n            'disable',\r\n            'destroy',\r\n            'beforeInitialScrollTo',\r\n            'contentChanged'\r\n        ]);\r\n        _this.init(wrapper);\r\n        return _this;\r\n    }\r\n    BScrollConstructor.use = function (ctor) {\r\n        var name = ctor.pluginName;\r\n        var installed = BScrollConstructor.plugins.some(function (plugin) { return ctor === plugin.ctor; });\r\n        if (installed)\r\n            return BScrollConstructor;\r\n        if (isUndef(name)) {\r\n            warn(\"Plugin Class must specify plugin's name in static property by 'pluginName' field.\");\r\n            return BScrollConstructor;\r\n        }\r\n        BScrollConstructor.pluginsMap[name] = true;\r\n        BScrollConstructor.plugins.push({\r\n            name: name,\r\n            applyOrder: ctor.applyOrder,\r\n            ctor: ctor\r\n        });\r\n        return BScrollConstructor;\r\n    };\r\n    BScrollConstructor.prototype.setContent = function (wrapper) {\r\n        var contentChanged = false;\r\n        var valid = true;\r\n        var content = wrapper.children[this.options.specifiedIndexAsContent];\r\n        if (!content) {\r\n            warn('The wrapper need at least one child element to be content element to scroll.');\r\n            valid = false;\r\n        }\r\n        else {\r\n            contentChanged = this.content !== content;\r\n            if (contentChanged) {\r\n                this.content = content;\r\n            }\r\n        }\r\n        return {\r\n            valid: valid,\r\n            contentChanged: contentChanged\r\n        };\r\n    };\r\n    BScrollConstructor.prototype.init = function (wrapper) {\r\n        var _this = this;\r\n        this.wrapper = wrapper;\r\n        // mark wrapper to recognize bs instance by DOM attribute\r\n        wrapper.isBScrollContainer = true;\r\n        this.scroller = new Scroller(wrapper, this.content, this.options);\r\n        this.scroller.hooks.on(this.scroller.hooks.eventTypes.resize, function () {\r\n            _this.refresh();\r\n        });\r\n        this.eventBubbling();\r\n        this.handleAutoBlur();\r\n        this.enable();\r\n        this.proxy(propertiesConfig);\r\n        this.applyPlugins();\r\n        // maybe boundary has changed, should refresh\r\n        this.refreshWithoutReset(this.content);\r\n        var _a = this.options, startX = _a.startX, startY = _a.startY;\r\n        var position = {\r\n            x: startX,\r\n            y: startY\r\n        };\r\n        // maybe plugins want to control scroll position\r\n        if (this.hooks.trigger(this.hooks.eventTypes.beforeInitialScrollTo, position)) {\r\n            return;\r\n        }\r\n        this.scroller.scrollTo(position.x, position.y);\r\n    };\r\n    BScrollConstructor.prototype.applyPlugins = function () {\r\n        var _this = this;\r\n        var options = this.options;\r\n        BScrollConstructor.plugins\r\n            .sort(function (a, b) {\r\n            var _a;\r\n            var applyOrderMap = (_a = {},\r\n                _a[\"pre\" /* Pre */] = -1,\r\n                _a[\"post\" /* Post */] = 1,\r\n                _a);\r\n            var aOrder = a.applyOrder ? applyOrderMap[a.applyOrder] : 0;\r\n            var bOrder = b.applyOrder ? applyOrderMap[b.applyOrder] : 0;\r\n            return aOrder - bOrder;\r\n        })\r\n            .forEach(function (item) {\r\n            var ctor = item.ctor;\r\n            if (options[item.name] && typeof ctor === 'function') {\r\n                _this.plugins[item.name] = new ctor(_this);\r\n            }\r\n        });\r\n    };\r\n    BScrollConstructor.prototype.handleAutoBlur = function () {\r\n        /* istanbul ignore if  */\r\n        if (this.options.autoBlur) {\r\n            this.on(this.eventTypes.beforeScrollStart, function () {\r\n                var activeElement = document.activeElement;\r\n                if (activeElement &&\r\n                    (activeElement.tagName === 'INPUT' ||\r\n                        activeElement.tagName === 'TEXTAREA')) {\r\n                    activeElement.blur();\r\n                }\r\n            });\r\n        }\r\n    };\r\n    BScrollConstructor.prototype.eventBubbling = function () {\r\n        bubbling(this.scroller.hooks, this, [\r\n            this.eventTypes.beforeScrollStart,\r\n            this.eventTypes.scrollStart,\r\n            this.eventTypes.scroll,\r\n            this.eventTypes.scrollEnd,\r\n            this.eventTypes.scrollCancel,\r\n            this.eventTypes.touchEnd,\r\n            this.eventTypes.flick\r\n        ]);\r\n    };\r\n    BScrollConstructor.prototype.refreshWithoutReset = function (content) {\r\n        this.scroller.refresh(content);\r\n        this.hooks.trigger(this.hooks.eventTypes.refresh, content);\r\n        this.trigger(this.eventTypes.refresh, content);\r\n    };\r\n    BScrollConstructor.prototype.proxy = function (propertiesConfig) {\r\n        var _this = this;\r\n        propertiesConfig.forEach(function (_a) {\r\n            var key = _a.key, sourceKey = _a.sourceKey;\r\n            propertiesProxy(_this, sourceKey, key);\r\n        });\r\n    };\r\n    BScrollConstructor.prototype.refresh = function () {\r\n        var _a = this.setContent(this.wrapper), contentChanged = _a.contentChanged, valid = _a.valid;\r\n        if (valid) {\r\n            var content = this.content;\r\n            this.refreshWithoutReset(content);\r\n            if (contentChanged) {\r\n                this.hooks.trigger(this.hooks.eventTypes.contentChanged, content);\r\n                this.trigger(this.eventTypes.contentChanged, content);\r\n            }\r\n            this.scroller.resetPosition();\r\n        }\r\n    };\r\n    BScrollConstructor.prototype.enable = function () {\r\n        this.scroller.enable();\r\n        this.hooks.trigger(this.hooks.eventTypes.enable);\r\n        this.trigger(this.eventTypes.enable);\r\n    };\r\n    BScrollConstructor.prototype.disable = function () {\r\n        this.scroller.disable();\r\n        this.hooks.trigger(this.hooks.eventTypes.disable);\r\n        this.trigger(this.eventTypes.disable);\r\n    };\r\n    BScrollConstructor.prototype.destroy = function () {\r\n        this.hooks.trigger(this.hooks.eventTypes.destroy);\r\n        this.trigger(this.eventTypes.destroy);\r\n        this.scroller.destroy();\r\n    };\r\n    BScrollConstructor.prototype.eventRegister = function (names) {\r\n        this.registerType(names);\r\n    };\r\n    BScrollConstructor.plugins = [];\r\n    BScrollConstructor.pluginsMap = {};\r\n    return BScrollConstructor;\r\n}(EventEmitter));\r\nfunction createBScroll(el, options) {\r\n    var bs = new BScrollConstructor(el, options);\r\n    return bs;\r\n}\r\ncreateBScroll.use = BScrollConstructor.use;\r\ncreateBScroll.plugins = BScrollConstructor.plugins;\r\ncreateBScroll.pluginsMap = BScrollConstructor.pluginsMap;\r\nvar BScroll = createBScroll;\n\nexport { Behavior, CustomOptions, createBScroll, BScroll as default };\n","/*!\n * better-scroll / mouse-wheel\n * (c) 2016-2023 ustbhuangyi\n * Released under the MIT License.\n */\nfunction warn(msg) {\r\n    console.error(\"[BScroll warn]: \" + msg);\r\n}\n\n// ssr support\r\nvar inBrowser = typeof window !== 'undefined';\r\nvar ua = inBrowser && navigator.userAgent.toLowerCase();\r\n!!(ua && /wechatdevtools/.test(ua));\r\nua && ua.indexOf('android') > 0;\r\n/* istanbul ignore next */\r\n((function () {\r\n    if (typeof ua === 'string') {\r\n        var regex = /os (\\d\\d?_\\d(_\\d)?)/;\r\n        var matches = regex.exec(ua);\r\n        if (!matches)\r\n            return false;\r\n        var parts = matches[1].split('_').map(function (item) {\r\n            return parseInt(item, 10);\r\n        });\r\n        // ios version >= 13.4 issue 982\r\n        return !!(parts[0] === 13 && parts[1] >= 4);\r\n    }\r\n    return false;\r\n}))();\r\n/* istanbul ignore next */\r\nvar supportsPassive = false;\r\n/* istanbul ignore next */\r\nif (inBrowser) {\r\n    var EventName = 'test-passive';\r\n    try {\r\n        var opts = {};\r\n        Object.defineProperty(opts, 'passive', {\r\n            get: function () {\r\n                supportsPassive = true;\r\n            },\r\n        }); // https://github.com/facebook/flow/issues/285\r\n        window.addEventListener(EventName, function () { }, opts);\r\n    }\r\n    catch (e) { }\r\n}\n\nvar extend = function (target, source) {\r\n    for (var key in source) {\r\n        target[key] = source[key];\r\n    }\r\n    return target;\r\n};\n\nvar elementStyle = (inBrowser &&\r\n    document.createElement('div').style);\r\nvar vendor = (function () {\r\n    /* istanbul ignore if  */\r\n    if (!inBrowser) {\r\n        return false;\r\n    }\r\n    var transformNames = [\r\n        {\r\n            key: 'standard',\r\n            value: 'transform',\r\n        },\r\n        {\r\n            key: 'webkit',\r\n            value: 'webkitTransform',\r\n        },\r\n        {\r\n            key: 'Moz',\r\n            value: 'MozTransform',\r\n        },\r\n        {\r\n            key: 'O',\r\n            value: 'OTransform',\r\n        },\r\n        {\r\n            key: 'ms',\r\n            value: 'msTransform',\r\n        },\r\n    ];\r\n    for (var _i = 0, transformNames_1 = transformNames; _i < transformNames_1.length; _i++) {\r\n        var obj = transformNames_1[_i];\r\n        if (elementStyle[obj.value] !== undefined) {\r\n            return obj.key;\r\n        }\r\n    }\r\n    /* istanbul ignore next  */\r\n    return false;\r\n})();\r\n/* istanbul ignore next  */\r\nfunction prefixStyle(style) {\r\n    if (vendor === false) {\r\n        return style;\r\n    }\r\n    if (vendor === 'standard') {\r\n        if (style === 'transitionEnd') {\r\n            return 'transitionend';\r\n        }\r\n        return style;\r\n    }\r\n    return vendor + style.charAt(0).toUpperCase() + style.substr(1);\r\n}\r\nfunction addEvent(el, type, fn, capture) {\r\n    var useCapture = supportsPassive\r\n        ? {\r\n            passive: false,\r\n            capture: !!capture,\r\n        }\r\n        : !!capture;\r\n    el.addEventListener(type, fn, useCapture);\r\n}\r\nfunction removeEvent(el, type, fn, capture) {\r\n    el.removeEventListener(type, fn, {\r\n        capture: !!capture,\r\n    });\r\n}\r\nfunction maybePrevent(e) {\r\n    if (e.cancelable) {\r\n        e.preventDefault();\r\n    }\r\n}\r\nvendor && vendor !== 'standard' ? '-' + vendor.toLowerCase() + '-' : '';\r\nvar transform = prefixStyle('transform');\r\nvar transition = prefixStyle('transition');\r\ninBrowser && prefixStyle('perspective') in elementStyle;\r\n({\r\n    transform: transform,\r\n    transition: transition,\r\n    transitionTimingFunction: prefixStyle('transitionTimingFunction'),\r\n    transitionDuration: prefixStyle('transitionDuration'),\r\n    transitionDelay: prefixStyle('transitionDelay'),\r\n    transformOrigin: prefixStyle('transformOrigin'),\r\n    transitionEnd: prefixStyle('transitionEnd'),\r\n    transitionProperty: prefixStyle('transitionProperty'),\r\n});\r\nfunction preventDefaultExceptionFn(el, exceptions) {\r\n    for (var i in exceptions) {\r\n        if (exceptions[i].test(el[i])) {\r\n            return true;\r\n        }\r\n    }\r\n    return false;\r\n}\n\nvar EventRegister = /** @class */ (function () {\r\n    function EventRegister(wrapper, events) {\r\n        this.wrapper = wrapper;\r\n        this.events = events;\r\n        this.addDOMEvents();\r\n    }\r\n    EventRegister.prototype.destroy = function () {\r\n        this.removeDOMEvents();\r\n        this.events = [];\r\n    };\r\n    EventRegister.prototype.addDOMEvents = function () {\r\n        this.handleDOMEvents(addEvent);\r\n    };\r\n    EventRegister.prototype.removeDOMEvents = function () {\r\n        this.handleDOMEvents(removeEvent);\r\n    };\r\n    EventRegister.prototype.handleDOMEvents = function (eventOperation) {\r\n        var _this = this;\r\n        var wrapper = this.wrapper;\r\n        this.events.forEach(function (event) {\r\n            eventOperation(wrapper, event.name, _this, !!event.capture);\r\n        });\r\n    };\r\n    EventRegister.prototype.handleEvent = function (e) {\r\n        var eventType = e.type;\r\n        this.events.some(function (event) {\r\n            if (event.name === eventType) {\r\n                event.handler(e);\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n    };\r\n    return EventRegister;\r\n}());\n\nvar MouseWheel = /** @class */ (function () {\r\n    function MouseWheel(scroll) {\r\n        this.scroll = scroll;\r\n        this.wheelEndTimer = 0;\r\n        this.wheelMoveTimer = 0;\r\n        this.wheelStart = false;\r\n        this.init();\r\n    }\r\n    MouseWheel.prototype.init = function () {\r\n        this.handleBScroll();\r\n        this.handleOptions();\r\n        this.handleHooks();\r\n        this.registerEvent();\r\n    };\r\n    MouseWheel.prototype.handleBScroll = function () {\r\n        this.scroll.registerType([\r\n            'alterOptions',\r\n            'mousewheelStart',\r\n            'mousewheelMove',\r\n            'mousewheelEnd',\r\n        ]);\r\n    };\r\n    MouseWheel.prototype.handleOptions = function () {\r\n        var userOptions = (this.scroll.options.mouseWheel === true\r\n            ? {}\r\n            : this.scroll.options.mouseWheel);\r\n        var defaultOptions = {\r\n            speed: 20,\r\n            invert: false,\r\n            easeTime: 300,\r\n            discreteTime: 400,\r\n            throttleTime: 0,\r\n            dampingFactor: 0.1,\r\n        };\r\n        this.mouseWheelOpt = extend(defaultOptions, userOptions);\r\n    };\r\n    MouseWheel.prototype.handleHooks = function () {\r\n        this.hooksFn = [];\r\n        this.registerHooks(this.scroll.hooks, 'destroy', this.destroy);\r\n    };\r\n    MouseWheel.prototype.registerEvent = function () {\r\n        this.eventRegister = new EventRegister(this.scroll.scroller.wrapper, [\r\n            {\r\n                name: 'wheel',\r\n                handler: this.wheelHandler.bind(this),\r\n            },\r\n            {\r\n                name: 'mousewheel',\r\n                handler: this.wheelHandler.bind(this),\r\n            },\r\n            {\r\n                name: 'DOMMouseScroll',\r\n                handler: this.wheelHandler.bind(this),\r\n            },\r\n        ]);\r\n    };\r\n    MouseWheel.prototype.registerHooks = function (hooks, name, handler) {\r\n        hooks.on(name, handler, this);\r\n        this.hooksFn.push([hooks, name, handler]);\r\n    };\r\n    MouseWheel.prototype.wheelHandler = function (e) {\r\n        if (!this.scroll.enabled) {\r\n            return;\r\n        }\r\n        this.beforeHandler(e);\r\n        // start\r\n        if (!this.wheelStart) {\r\n            this.wheelStartHandler(e);\r\n            this.wheelStart = true;\r\n        }\r\n        // move\r\n        var delta = this.getWheelDelta(e);\r\n        this.wheelMoveHandler(delta);\r\n        // end\r\n        this.wheelEndDetector(delta);\r\n    };\r\n    MouseWheel.prototype.wheelStartHandler = function (e) {\r\n        this.cleanCache();\r\n        var _a = this.scroll.scroller, scrollBehaviorX = _a.scrollBehaviorX, scrollBehaviorY = _a.scrollBehaviorY;\r\n        scrollBehaviorX.setMovingDirection(0 /* Default */);\r\n        scrollBehaviorY.setMovingDirection(0 /* Default */);\r\n        scrollBehaviorX.setDirection(0 /* Default */);\r\n        scrollBehaviorY.setDirection(0 /* Default */);\r\n        this.scroll.trigger(this.scroll.eventTypes.alterOptions, this.mouseWheelOpt);\r\n        this.scroll.trigger(this.scroll.eventTypes.mousewheelStart);\r\n    };\r\n    MouseWheel.prototype.cleanCache = function () {\r\n        this.deltaCache = [];\r\n    };\r\n    MouseWheel.prototype.wheelMoveHandler = function (delta) {\r\n        var _this = this;\r\n        var _a = this.mouseWheelOpt, throttleTime = _a.throttleTime, dampingFactor = _a.dampingFactor;\r\n        if (throttleTime && this.wheelMoveTimer) {\r\n            this.deltaCache.push(delta);\r\n        }\r\n        else {\r\n            var cachedDelta = this.deltaCache.reduce(function (prev, current) {\r\n                return {\r\n                    x: prev.x + current.x,\r\n                    y: prev.y + current.y,\r\n                };\r\n            }, { x: 0, y: 0 });\r\n            this.cleanCache();\r\n            var _b = this.scroll.scroller, scrollBehaviorX = _b.scrollBehaviorX, scrollBehaviorY = _b.scrollBehaviorY;\r\n            scrollBehaviorX.setMovingDirection(-delta.directionX);\r\n            scrollBehaviorY.setMovingDirection(-delta.directionY);\r\n            scrollBehaviorX.setDirection(delta.x);\r\n            scrollBehaviorY.setDirection(delta.y);\r\n            // when out of boundary, perform a damping scroll\r\n            var newX = scrollBehaviorX.performDampingAlgorithm(Math.round(delta.x) + cachedDelta.x, dampingFactor);\r\n            var newY = scrollBehaviorY.performDampingAlgorithm(Math.round(delta.y) + cachedDelta.x, dampingFactor);\r\n            if (!this.scroll.trigger(this.scroll.eventTypes.mousewheelMove, {\r\n                x: newX,\r\n                y: newY,\r\n            })) {\r\n                var easeTime = this.getEaseTime();\r\n                if (newX !== this.scroll.x || newY !== this.scroll.y) {\r\n                    this.scroll.scrollTo(newX, newY, easeTime);\r\n                }\r\n            }\r\n            if (throttleTime) {\r\n                this.wheelMoveTimer = window.setTimeout(function () {\r\n                    _this.wheelMoveTimer = 0;\r\n                }, throttleTime);\r\n            }\r\n        }\r\n    };\r\n    MouseWheel.prototype.wheelEndDetector = function (delta) {\r\n        var _this = this;\r\n        window.clearTimeout(this.wheelEndTimer);\r\n        this.wheelEndTimer = window.setTimeout(function () {\r\n            _this.wheelStart = false;\r\n            window.clearTimeout(_this.wheelMoveTimer);\r\n            _this.wheelMoveTimer = 0;\r\n            _this.scroll.trigger(_this.scroll.eventTypes.mousewheelEnd, delta);\r\n        }, this.mouseWheelOpt.discreteTime);\r\n    };\r\n    MouseWheel.prototype.getWheelDelta = function (e) {\r\n        var _a = this.mouseWheelOpt, speed = _a.speed, invert = _a.invert;\r\n        var wheelDeltaX = 0;\r\n        var wheelDeltaY = 0;\r\n        var direction = invert ? -1 /* Negative */ : 1 /* Positive */;\r\n        switch (true) {\r\n            case 'deltaX' in e:\r\n                if (e.deltaMode === 1) {\r\n                    wheelDeltaX = -e.deltaX * speed;\r\n                    wheelDeltaY = -e.deltaY * speed;\r\n                }\r\n                else {\r\n                    wheelDeltaX = -e.deltaX;\r\n                    wheelDeltaY = -e.deltaY;\r\n                }\r\n                break;\r\n            case 'wheelDeltaX' in e:\r\n                wheelDeltaX = (e.wheelDeltaX / 120) * speed;\r\n                wheelDeltaY = (e.wheelDeltaY / 120) * speed;\r\n                break;\r\n            case 'wheelDelta' in e:\r\n                wheelDeltaX = wheelDeltaY = (e.wheelDelta / 120) * speed;\r\n                break;\r\n            case 'detail' in e:\r\n                wheelDeltaX = wheelDeltaY = (-e.detail / 3) * speed;\r\n                break;\r\n        }\r\n        wheelDeltaX *= direction;\r\n        wheelDeltaY *= direction;\r\n        if (!this.scroll.hasVerticalScroll) {\r\n            if (Math.abs(wheelDeltaY) > Math.abs(wheelDeltaX)) {\r\n                wheelDeltaX = wheelDeltaY;\r\n            }\r\n            wheelDeltaY = 0;\r\n        }\r\n        if (!this.scroll.hasHorizontalScroll) {\r\n            wheelDeltaX = 0;\r\n        }\r\n        var directionX = wheelDeltaX > 0\r\n            ? -1 /* Negative */\r\n            : wheelDeltaX < 0\r\n                ? 1 /* Positive */\r\n                : 0 /* Default */;\r\n        var directionY = wheelDeltaY > 0\r\n            ? -1 /* Negative */\r\n            : wheelDeltaY < 0\r\n                ? 1 /* Positive */\r\n                : 0 /* Default */;\r\n        return {\r\n            x: wheelDeltaX,\r\n            y: wheelDeltaY,\r\n            directionX: directionX,\r\n            directionY: directionY,\r\n        };\r\n    };\r\n    MouseWheel.prototype.beforeHandler = function (e) {\r\n        var _a = this.scroll.options, preventDefault = _a.preventDefault, stopPropagation = _a.stopPropagation, preventDefaultException = _a.preventDefaultException;\r\n        if (preventDefault &&\r\n            !preventDefaultExceptionFn(e.target, preventDefaultException)) {\r\n            maybePrevent(e);\r\n        }\r\n        if (stopPropagation) {\r\n            e.stopPropagation();\r\n        }\r\n    };\r\n    MouseWheel.prototype.getEaseTime = function () {\r\n        var SAFE_EASETIME = 100;\r\n        var easeTime = this.mouseWheelOpt.easeTime;\r\n        // scrollEnd event will be triggered in every calling of scrollTo when easeTime is too small\r\n        // easeTime needs to be greater than 100\r\n        if (easeTime < SAFE_EASETIME) {\r\n            warn(\"easeTime should be greater than 100.\" +\r\n                \"If mouseWheel easeTime is too small,\" +\r\n                \"scrollEnd will be triggered many times.\");\r\n        }\r\n        return Math.max(easeTime, SAFE_EASETIME);\r\n    };\r\n    MouseWheel.prototype.destroy = function () {\r\n        this.eventRegister.destroy();\r\n        window.clearTimeout(this.wheelEndTimer);\r\n        window.clearTimeout(this.wheelMoveTimer);\r\n        this.hooksFn.forEach(function (item) {\r\n            var hooks = item[0];\r\n            var hooksName = item[1];\r\n            var handlerFn = item[2];\r\n            hooks.off(hooksName, handlerFn);\r\n        });\r\n    };\r\n    MouseWheel.pluginName = 'mouseWheel';\r\n    MouseWheel.applyOrder = \"pre\" /* Pre */;\r\n    return MouseWheel;\r\n}());\n\nexport { MouseWheel as default };\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (target) {\n  for (var i = 1, j = arguments.length; i < j; i++) {\n    var source = arguments[i] || {};\n    for (var prop in source) {\n      if (source.hasOwnProperty(prop)) {\n        var value = source[prop];\n        if (value !== undefined) {\n          target[prop] = value;\n        }\n      }\n    }\n  }\n\n  return target;\n};\n\n;","'use strict';\n\nexports.__esModule = true;\nexports.isInContainer = exports.getScrollContainer = exports.isScroll = exports.getStyle = exports.once = exports.off = exports.on = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /* istanbul ignore next */\n\nexports.hasClass = hasClass;\nexports.addClass = addClass;\nexports.removeClass = removeClass;\nexports.setStyle = setStyle;\n\nvar _vue = require('vue');\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar isServer = _vue2.default.prototype.$isServer;\nvar SPECIAL_CHARS_REGEXP = /([\\:\\-\\_]+(.))/g;\nvar MOZ_HACK_REGEXP = /^moz([A-Z])/;\nvar ieVersion = isServer ? 0 : Number(document.documentMode);\n\n/* istanbul ignore next */\nvar trim = function trim(string) {\n  return (string || '').replace(/^[\\s\\uFEFF]+|[\\s\\uFEFF]+$/g, '');\n};\n/* istanbul ignore next */\nvar camelCase = function camelCase(name) {\n  return name.replace(SPECIAL_CHARS_REGEXP, function (_, separator, letter, offset) {\n    return offset ? letter.toUpperCase() : letter;\n  }).replace(MOZ_HACK_REGEXP, 'Moz$1');\n};\n\n/* istanbul ignore next */\nvar on = exports.on = function () {\n  if (!isServer && document.addEventListener) {\n    return function (element, event, handler) {\n      if (element && event && handler) {\n        element.addEventListener(event, handler, false);\n      }\n    };\n  } else {\n    return function (element, event, handler) {\n      if (element && event && handler) {\n        element.attachEvent('on' + event, handler);\n      }\n    };\n  }\n}();\n\n/* istanbul ignore next */\nvar off = exports.off = function () {\n  if (!isServer && document.removeEventListener) {\n    return function (element, event, handler) {\n      if (element && event) {\n        element.removeEventListener(event, handler, false);\n      }\n    };\n  } else {\n    return function (element, event, handler) {\n      if (element && event) {\n        element.detachEvent('on' + event, handler);\n      }\n    };\n  }\n}();\n\n/* istanbul ignore next */\nvar once = exports.once = function once(el, event, fn) {\n  var listener = function listener() {\n    if (fn) {\n      fn.apply(this, arguments);\n    }\n    off(el, event, listener);\n  };\n  on(el, event, listener);\n};\n\n/* istanbul ignore next */\nfunction hasClass(el, cls) {\n  if (!el || !cls) return false;\n  if (cls.indexOf(' ') !== -1) throw new Error('className should not contain space.');\n  if (el.classList) {\n    return el.classList.contains(cls);\n  } else {\n    return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1;\n  }\n};\n\n/* istanbul ignore next */\nfunction addClass(el, cls) {\n  if (!el) return;\n  var curClass = el.className;\n  var classes = (cls || '').split(' ');\n\n  for (var i = 0, j = classes.length; i < j; i++) {\n    var clsName = classes[i];\n    if (!clsName) continue;\n\n    if (el.classList) {\n      el.classList.add(clsName);\n    } else if (!hasClass(el, clsName)) {\n      curClass += ' ' + clsName;\n    }\n  }\n  if (!el.classList) {\n    el.setAttribute('class', curClass);\n  }\n};\n\n/* istanbul ignore next */\nfunction removeClass(el, cls) {\n  if (!el || !cls) return;\n  var classes = cls.split(' ');\n  var curClass = ' ' + el.className + ' ';\n\n  for (var i = 0, j = classes.length; i < j; i++) {\n    var clsName = classes[i];\n    if (!clsName) continue;\n\n    if (el.classList) {\n      el.classList.remove(clsName);\n    } else if (hasClass(el, clsName)) {\n      curClass = curClass.replace(' ' + clsName + ' ', ' ');\n    }\n  }\n  if (!el.classList) {\n    el.setAttribute('class', trim(curClass));\n  }\n};\n\n/* istanbul ignore next */\nvar getStyle = exports.getStyle = ieVersion < 9 ? function (element, styleName) {\n  if (isServer) return;\n  if (!element || !styleName) return null;\n  styleName = camelCase(styleName);\n  if (styleName === 'float') {\n    styleName = 'styleFloat';\n  }\n  try {\n    switch (styleName) {\n      case 'opacity':\n        try {\n          return element.filters.item('alpha').opacity / 100;\n        } catch (e) {\n          return 1.0;\n        }\n      default:\n        return element.style[styleName] || element.currentStyle ? element.currentStyle[styleName] : null;\n    }\n  } catch (e) {\n    return element.style[styleName];\n  }\n} : function (element, styleName) {\n  if (isServer) return;\n  if (!element || !styleName) return null;\n  styleName = camelCase(styleName);\n  if (styleName === 'float') {\n    styleName = 'cssFloat';\n  }\n  try {\n    var computed = document.defaultView.getComputedStyle(element, '');\n    return element.style[styleName] || computed ? computed[styleName] : null;\n  } catch (e) {\n    return element.style[styleName];\n  }\n};\n\n/* istanbul ignore next */\nfunction setStyle(element, styleName, value) {\n  if (!element || !styleName) return;\n\n  if ((typeof styleName === 'undefined' ? 'undefined' : _typeof(styleName)) === 'object') {\n    for (var prop in styleName) {\n      if (styleName.hasOwnProperty(prop)) {\n        setStyle(element, prop, styleName[prop]);\n      }\n    }\n  } else {\n    styleName = camelCase(styleName);\n    if (styleName === 'opacity' && ieVersion < 9) {\n      element.style.filter = isNaN(value) ? '' : 'alpha(opacity=' + value * 100 + ')';\n    } else {\n      element.style[styleName] = value;\n    }\n  }\n};\n\nvar isScroll = exports.isScroll = function isScroll(el, vertical) {\n  if (isServer) return;\n\n  var determinedDirection = vertical !== null && vertical !== undefined;\n  var overflow = determinedDirection ? vertical ? getStyle(el, 'overflow-y') : getStyle(el, 'overflow-x') : getStyle(el, 'overflow');\n\n  return overflow.match(/(scroll|auto|overlay)/);\n};\n\nvar getScrollContainer = exports.getScrollContainer = function getScrollContainer(el, vertical) {\n  if (isServer) return;\n\n  var parent = el;\n  while (parent) {\n    if ([window, document, document.documentElement].includes(parent)) {\n      return window;\n    }\n    if (isScroll(parent, vertical)) {\n      return parent;\n    }\n    parent = parent.parentNode;\n  }\n\n  return parent;\n};\n\nvar isInContainer = exports.isInContainer = function isInContainer(el, container) {\n  if (isServer || !el || !container) return false;\n\n  var elRect = el.getBoundingClientRect();\n  var containerRect = void 0;\n\n  if ([window, document, document.documentElement, null, undefined].includes(container)) {\n    containerRect = {\n      top: 0,\n      right: window.innerWidth,\n      bottom: window.innerHeight,\n      left: 0\n    };\n  } else {\n    containerRect = container.getBoundingClientRect();\n  }\n\n  return elRect.top < containerRect.bottom && elRect.bottom > containerRect.top && elRect.right > containerRect.left && elRect.left < containerRect.right;\n};","'use strict';\n\nexports.__esModule = true;\n\nvar _vue = require('vue');\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nvar _dom = require('element-ui/lib/utils/dom');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hasModal = false;\nvar hasInitZIndex = false;\nvar zIndex = void 0;\n\nvar getModal = function getModal() {\n  if (_vue2.default.prototype.$isServer) return;\n  var modalDom = PopupManager.modalDom;\n  if (modalDom) {\n    hasModal = true;\n  } else {\n    hasModal = false;\n    modalDom = document.createElement('div');\n    PopupManager.modalDom = modalDom;\n\n    modalDom.addEventListener('touchmove', function (event) {\n      event.preventDefault();\n      event.stopPropagation();\n    });\n\n    modalDom.addEventListener('click', function () {\n      PopupManager.doOnModalClick && PopupManager.doOnModalClick();\n    });\n  }\n\n  return modalDom;\n};\n\nvar instances = {};\n\nvar PopupManager = {\n  modalFade: true,\n\n  getInstance: function getInstance(id) {\n    return instances[id];\n  },\n\n  register: function register(id, instance) {\n    if (id && instance) {\n      instances[id] = instance;\n    }\n  },\n\n  deregister: function deregister(id) {\n    if (id) {\n      instances[id] = null;\n      delete instances[id];\n    }\n  },\n\n  nextZIndex: function nextZIndex() {\n    return PopupManager.zIndex++;\n  },\n\n  modalStack: [],\n\n  doOnModalClick: function doOnModalClick() {\n    var topItem = PopupManager.modalStack[PopupManager.modalStack.length - 1];\n    if (!topItem) return;\n\n    var instance = PopupManager.getInstance(topItem.id);\n    if (instance && instance.closeOnClickModal) {\n      instance.close();\n    }\n  },\n\n  openModal: function openModal(id, zIndex, dom, modalClass, modalFade) {\n    if (_vue2.default.prototype.$isServer) return;\n    if (!id || zIndex === undefined) return;\n    this.modalFade = modalFade;\n\n    var modalStack = this.modalStack;\n\n    for (var i = 0, j = modalStack.length; i < j; i++) {\n      var item = modalStack[i];\n      if (item.id === id) {\n        return;\n      }\n    }\n\n    var modalDom = getModal();\n\n    (0, _dom.addClass)(modalDom, 'v-modal');\n    if (this.modalFade && !hasModal) {\n      (0, _dom.addClass)(modalDom, 'v-modal-enter');\n    }\n    if (modalClass) {\n      var classArr = modalClass.trim().split(/\\s+/);\n      classArr.forEach(function (item) {\n        return (0, _dom.addClass)(modalDom, item);\n      });\n    }\n    setTimeout(function () {\n      (0, _dom.removeClass)(modalDom, 'v-modal-enter');\n    }, 200);\n\n    if (dom && dom.parentNode && dom.parentNode.nodeType !== 11) {\n      dom.parentNode.appendChild(modalDom);\n    } else {\n      document.body.appendChild(modalDom);\n    }\n\n    if (zIndex) {\n      modalDom.style.zIndex = zIndex;\n    }\n    modalDom.tabIndex = 0;\n    modalDom.style.display = '';\n\n    this.modalStack.push({ id: id, zIndex: zIndex, modalClass: modalClass });\n  },\n\n  closeModal: function closeModal(id) {\n    var modalStack = this.modalStack;\n    var modalDom = getModal();\n\n    if (modalStack.length > 0) {\n      var topItem = modalStack[modalStack.length - 1];\n      if (topItem.id === id) {\n        if (topItem.modalClass) {\n          var classArr = topItem.modalClass.trim().split(/\\s+/);\n          classArr.forEach(function (item) {\n            return (0, _dom.removeClass)(modalDom, item);\n          });\n        }\n\n        modalStack.pop();\n        if (modalStack.length > 0) {\n          modalDom.style.zIndex = modalStack[modalStack.length - 1].zIndex;\n        }\n      } else {\n        for (var i = modalStack.length - 1; i >= 0; i--) {\n          if (modalStack[i].id === id) {\n            modalStack.splice(i, 1);\n            break;\n          }\n        }\n      }\n    }\n\n    if (modalStack.length === 0) {\n      if (this.modalFade) {\n        (0, _dom.addClass)(modalDom, 'v-modal-leave');\n      }\n      setTimeout(function () {\n        if (modalStack.length === 0) {\n          if (modalDom.parentNode) modalDom.parentNode.removeChild(modalDom);\n          modalDom.style.display = 'none';\n          PopupManager.modalDom = undefined;\n        }\n        (0, _dom.removeClass)(modalDom, 'v-modal-leave');\n      }, 200);\n    }\n  }\n};\n\nObject.defineProperty(PopupManager, 'zIndex', {\n  configurable: true,\n  get: function get() {\n    if (!hasInitZIndex) {\n      zIndex = zIndex || (_vue2.default.prototype.$ELEMENT || {}).zIndex || 2000;\n      hasInitZIndex = true;\n    }\n    return zIndex;\n  },\n  set: function set(value) {\n    zIndex = value;\n  }\n});\n\nvar getTopPopup = function getTopPopup() {\n  if (_vue2.default.prototype.$isServer) return;\n  if (PopupManager.modalStack.length > 0) {\n    var topPopup = PopupManager.modalStack[PopupManager.modalStack.length - 1];\n    if (!topPopup) return;\n    var instance = PopupManager.getInstance(topPopup.id);\n\n    return instance;\n  }\n};\n\nif (!_vue2.default.prototype.$isServer) {\n  // handle `esc` key when the popup is shown\n  window.addEventListener('keydown', function (event) {\n    if (event.keyCode === 27) {\n      var topPopup = getTopPopup();\n\n      if (topPopup && topPopup.closeOnPressEscape) {\n        topPopup.handleClose ? topPopup.handleClose() : topPopup.handleAction ? topPopup.handleAction('cancel') : topPopup.close();\n      }\n    }\n  });\n}\n\nexports.default = PopupManager;","'use strict';\n\nexports.__esModule = true;\n\nexports.default = function () {\n  if (_vue2.default.prototype.$isServer) return 0;\n  if (scrollBarWidth !== undefined) return scrollBarWidth;\n\n  var outer = document.createElement('div');\n  outer.className = 'el-scrollbar__wrap';\n  outer.style.visibility = 'hidden';\n  outer.style.width = '100px';\n  outer.style.position = 'absolute';\n  outer.style.top = '-9999px';\n  document.body.appendChild(outer);\n\n  var widthNoScroll = outer.offsetWidth;\n  outer.style.overflow = 'scroll';\n\n  var inner = document.createElement('div');\n  inner.style.width = '100%';\n  outer.appendChild(inner);\n\n  var widthWithScroll = inner.offsetWidth;\n  outer.parentNode.removeChild(outer);\n  scrollBarWidth = widthNoScroll - widthWithScroll;\n\n  return scrollBarWidth;\n};\n\nvar _vue = require('vue');\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scrollBarWidth = void 0;\n\n;","'use strict';\n\nexports.__esModule = true;\nexports.PopupManager = undefined;\n\nvar _vue = require('vue');\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nvar _merge = require('element-ui/lib/utils/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _popupManager = require('element-ui/lib/utils/popup/popup-manager');\n\nvar _popupManager2 = _interopRequireDefault(_popupManager);\n\nvar _scrollbarWidth = require('../scrollbar-width');\n\nvar _scrollbarWidth2 = _interopRequireDefault(_scrollbarWidth);\n\nvar _dom = require('../dom');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar idSeed = 1;\n\nvar scrollBarWidth = void 0;\n\nexports.default = {\n  props: {\n    visible: {\n      type: Boolean,\n      default: false\n    },\n    openDelay: {},\n    closeDelay: {},\n    zIndex: {},\n    modal: {\n      type: Boolean,\n      default: false\n    },\n    modalFade: {\n      type: Boolean,\n      default: true\n    },\n    modalClass: {},\n    modalAppendToBody: {\n      type: Boolean,\n      default: false\n    },\n    lockScroll: {\n      type: Boolean,\n      default: true\n    },\n    closeOnPressEscape: {\n      type: Boolean,\n      default: false\n    },\n    closeOnClickModal: {\n      type: Boolean,\n      default: false\n    }\n  },\n\n  beforeMount: function beforeMount() {\n    this._popupId = 'popup-' + idSeed++;\n    _popupManager2.default.register(this._popupId, this);\n  },\n  beforeDestroy: function beforeDestroy() {\n    _popupManager2.default.deregister(this._popupId);\n    _popupManager2.default.closeModal(this._popupId);\n\n    this.restoreBodyStyle();\n  },\n  data: function data() {\n    return {\n      opened: false,\n      bodyPaddingRight: null,\n      computedBodyPaddingRight: 0,\n      withoutHiddenClass: true,\n      rendered: false\n    };\n  },\n\n\n  watch: {\n    visible: function visible(val) {\n      var _this = this;\n\n      if (val) {\n        if (this._opening) return;\n        if (!this.rendered) {\n          this.rendered = true;\n          _vue2.default.nextTick(function () {\n            _this.open();\n          });\n        } else {\n          this.open();\n        }\n      } else {\n        this.close();\n      }\n    }\n  },\n\n  methods: {\n    open: function open(options) {\n      var _this2 = this;\n\n      if (!this.rendered) {\n        this.rendered = true;\n      }\n\n      var props = (0, _merge2.default)({}, this.$props || this, options);\n\n      if (this._closeTimer) {\n        clearTimeout(this._closeTimer);\n        this._closeTimer = null;\n      }\n      clearTimeout(this._openTimer);\n\n      var openDelay = Number(props.openDelay);\n      if (openDelay > 0) {\n        this._openTimer = setTimeout(function () {\n          _this2._openTimer = null;\n          _this2.doOpen(props);\n        }, openDelay);\n      } else {\n        this.doOpen(props);\n      }\n    },\n    doOpen: function doOpen(props) {\n      if (this.$isServer) return;\n      if (this.willOpen && !this.willOpen()) return;\n      if (this.opened) return;\n\n      this._opening = true;\n\n      var dom = this.$el;\n\n      var modal = props.modal;\n\n      var zIndex = props.zIndex;\n      if (zIndex) {\n        _popupManager2.default.zIndex = zIndex;\n      }\n\n      if (modal) {\n        if (this._closing) {\n          _popupManager2.default.closeModal(this._popupId);\n          this._closing = false;\n        }\n        _popupManager2.default.openModal(this._popupId, _popupManager2.default.nextZIndex(), this.modalAppendToBody ? undefined : dom, props.modalClass, props.modalFade);\n        if (props.lockScroll) {\n          this.withoutHiddenClass = !(0, _dom.hasClass)(document.body, 'el-popup-parent--hidden');\n          if (this.withoutHiddenClass) {\n            this.bodyPaddingRight = document.body.style.paddingRight;\n            this.computedBodyPaddingRight = parseInt((0, _dom.getStyle)(document.body, 'paddingRight'), 10);\n          }\n          scrollBarWidth = (0, _scrollbarWidth2.default)();\n          var bodyHasOverflow = document.documentElement.clientHeight < document.body.scrollHeight;\n          var bodyOverflowY = (0, _dom.getStyle)(document.body, 'overflowY');\n          if (scrollBarWidth > 0 && (bodyHasOverflow || bodyOverflowY === 'scroll') && this.withoutHiddenClass) {\n            document.body.style.paddingRight = this.computedBodyPaddingRight + scrollBarWidth + 'px';\n          }\n          (0, _dom.addClass)(document.body, 'el-popup-parent--hidden');\n        }\n      }\n\n      if (getComputedStyle(dom).position === 'static') {\n        dom.style.position = 'absolute';\n      }\n\n      dom.style.zIndex = _popupManager2.default.nextZIndex();\n      this.opened = true;\n\n      this.onOpen && this.onOpen();\n\n      this.doAfterOpen();\n    },\n    doAfterOpen: function doAfterOpen() {\n      this._opening = false;\n    },\n    close: function close() {\n      var _this3 = this;\n\n      if (this.willClose && !this.willClose()) return;\n\n      if (this._openTimer !== null) {\n        clearTimeout(this._openTimer);\n        this._openTimer = null;\n      }\n      clearTimeout(this._closeTimer);\n\n      var closeDelay = Number(this.closeDelay);\n\n      if (closeDelay > 0) {\n        this._closeTimer = setTimeout(function () {\n          _this3._closeTimer = null;\n          _this3.doClose();\n        }, closeDelay);\n      } else {\n        this.doClose();\n      }\n    },\n    doClose: function doClose() {\n      this._closing = true;\n\n      this.onClose && this.onClose();\n\n      if (this.lockScroll) {\n        setTimeout(this.restoreBodyStyle, 200);\n      }\n\n      this.opened = false;\n\n      this.doAfterClose();\n    },\n    doAfterClose: function doAfterClose() {\n      _popupManager2.default.closeModal(this._popupId);\n      this._closing = false;\n    },\n    restoreBodyStyle: function restoreBodyStyle() {\n      if (this.modal && this.withoutHiddenClass) {\n        document.body.style.paddingRight = this.bodyPaddingRight;\n        (0, _dom.removeClass)(document.body, 'el-popup-parent--hidden');\n      }\n      this.withoutHiddenClass = true;\n    }\n  }\n};\nexports.PopupManager = _popupManager2.default;","'use strict';\n\nexports.__esModule = true;\nexports.isDefined = exports.isUndefined = exports.isFunction = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.isString = isString;\nexports.isObject = isObject;\nexports.isHtmlElement = isHtmlElement;\n\nvar _vue = require('vue');\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isString(obj) {\n  return Object.prototype.toString.call(obj) === '[object String]';\n}\n\nfunction isObject(obj) {\n  return Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nfunction isHtmlElement(node) {\n  return node && node.nodeType === Node.ELEMENT_NODE;\n}\n\n/**\n *  - Inspired:\n *    https://github.com/jashkenas/underscore/blob/master/modules/isFunction.js\n */\nvar isFunction = function isFunction(functionToCheck) {\n  var getType = {};\n  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n};\n\nif (typeof /./ !== 'function' && (typeof Int8Array === 'undefined' ? 'undefined' : _typeof(Int8Array)) !== 'object' && (_vue2.default.prototype.$isServer || typeof document.childNodes !== 'function')) {\n  exports.isFunction = isFunction = function isFunction(obj) {\n    return typeof obj === 'function' || false;\n  };\n}\n\nexports.isFunction = isFunction;\nvar isUndefined = exports.isUndefined = function isUndefined(val) {\n  return val === void 0;\n};\n\nvar isDefined = exports.isDefined = function isDefined(val) {\n  return val !== undefined && val !== null;\n};","'use strict';\n\nexports.__esModule = true;\nexports.isMac = exports.isEmpty = exports.isEqual = exports.arrayEquals = exports.looseEqual = exports.capitalize = exports.kebabCase = exports.autoprefixer = exports.isFirefox = exports.isEdge = exports.isIE = exports.coerceTruthyValueToArray = exports.arrayFind = exports.arrayFindIndex = exports.escapeRegexpString = exports.valueEquals = exports.generateId = exports.getValueByPath = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.noop = noop;\nexports.hasOwn = hasOwn;\nexports.toObject = toObject;\nexports.getPropByPath = getPropByPath;\nexports.rafThrottle = rafThrottle;\nexports.objToArray = objToArray;\n\nvar _vue = require('vue');\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nvar _types = require('element-ui/lib/utils/types');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction noop() {};\n\nfunction hasOwn(obj, key) {\n  return hasOwnProperty.call(obj, key);\n};\n\nfunction extend(to, _from) {\n  for (var key in _from) {\n    to[key] = _from[key];\n  }\n  return to;\n};\n\nfunction toObject(arr) {\n  var res = {};\n  for (var i = 0; i < arr.length; i++) {\n    if (arr[i]) {\n      extend(res, arr[i]);\n    }\n  }\n  return res;\n};\n\nvar getValueByPath = exports.getValueByPath = function getValueByPath(object, prop) {\n  prop = prop || '';\n  var paths = prop.split('.');\n  var current = object;\n  var result = null;\n  for (var i = 0, j = paths.length; i < j; i++) {\n    var path = paths[i];\n    if (!current) break;\n\n    if (i === j - 1) {\n      result = current[path];\n      break;\n    }\n    current = current[path];\n  }\n  return result;\n};\n\nfunction getPropByPath(obj, path, strict) {\n  var tempObj = obj;\n  path = path.replace(/\\[(\\w+)\\]/g, '.$1');\n  path = path.replace(/^\\./, '');\n\n  var keyArr = path.split('.');\n  var i = 0;\n  for (var len = keyArr.length; i < len - 1; ++i) {\n    if (!tempObj && !strict) break;\n    var key = keyArr[i];\n    if (key in tempObj) {\n      tempObj = tempObj[key];\n    } else {\n      if (strict) {\n        throw new Error('please transfer a valid prop path to form item!');\n      }\n      break;\n    }\n  }\n  return {\n    o: tempObj,\n    k: keyArr[i],\n    v: tempObj ? tempObj[keyArr[i]] : null\n  };\n};\n\nvar generateId = exports.generateId = function generateId() {\n  return Math.floor(Math.random() * 10000);\n};\n\nvar valueEquals = exports.valueEquals = function valueEquals(a, b) {\n  // see: https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript\n  if (a === b) return true;\n  if (!(a instanceof Array)) return false;\n  if (!(b instanceof Array)) return false;\n  if (a.length !== b.length) return false;\n  for (var i = 0; i !== a.length; ++i) {\n    if (a[i] !== b[i]) return false;\n  }\n  return true;\n};\n\nvar escapeRegexpString = exports.escapeRegexpString = function escapeRegexpString() {\n  var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  return String(value).replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n};\n\n// TODO: use native Array.find, Array.findIndex when IE support is dropped\nvar arrayFindIndex = exports.arrayFindIndex = function arrayFindIndex(arr, pred) {\n  for (var i = 0; i !== arr.length; ++i) {\n    if (pred(arr[i])) {\n      return i;\n    }\n  }\n  return -1;\n};\n\nvar arrayFind = exports.arrayFind = function arrayFind(arr, pred) {\n  var idx = arrayFindIndex(arr, pred);\n  return idx !== -1 ? arr[idx] : undefined;\n};\n\n// coerce truthy value to array\nvar coerceTruthyValueToArray = exports.coerceTruthyValueToArray = function coerceTruthyValueToArray(val) {\n  if (Array.isArray(val)) {\n    return val;\n  } else if (val) {\n    return [val];\n  } else {\n    return [];\n  }\n};\n\nvar isIE = exports.isIE = function isIE() {\n  return !_vue2.default.prototype.$isServer && !isNaN(Number(document.documentMode));\n};\n\nvar isEdge = exports.isEdge = function isEdge() {\n  return !_vue2.default.prototype.$isServer && navigator.userAgent.indexOf('Edge') > -1;\n};\n\nvar isFirefox = exports.isFirefox = function isFirefox() {\n  return !_vue2.default.prototype.$isServer && !!window.navigator.userAgent.match(/firefox/i);\n};\n\nvar autoprefixer = exports.autoprefixer = function autoprefixer(style) {\n  if ((typeof style === 'undefined' ? 'undefined' : _typeof(style)) !== 'object') return style;\n  var rules = ['transform', 'transition', 'animation'];\n  var prefixes = ['ms-', 'webkit-'];\n  rules.forEach(function (rule) {\n    var value = style[rule];\n    if (rule && value) {\n      prefixes.forEach(function (prefix) {\n        style[prefix + rule] = value;\n      });\n    }\n  });\n  return style;\n};\n\nvar kebabCase = exports.kebabCase = function kebabCase(str) {\n  var hyphenateRE = /([^-])([A-Z])/g;\n  return str.replace(hyphenateRE, '$1-$2').replace(hyphenateRE, '$1-$2').toLowerCase();\n};\n\nvar capitalize = exports.capitalize = function capitalize(str) {\n  if (!(0, _types.isString)(str)) return str;\n  return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\nvar looseEqual = exports.looseEqual = function looseEqual(a, b) {\n  var isObjectA = (0, _types.isObject)(a);\n  var isObjectB = (0, _types.isObject)(b);\n  if (isObjectA && isObjectB) {\n    return JSON.stringify(a) === JSON.stringify(b);\n  } else if (!isObjectA && !isObjectB) {\n    return String(a) === String(b);\n  } else {\n    return false;\n  }\n};\n\nvar arrayEquals = exports.arrayEquals = function arrayEquals(arrayA, arrayB) {\n  arrayA = arrayA || [];\n  arrayB = arrayB || [];\n\n  if (arrayA.length !== arrayB.length) {\n    return false;\n  }\n\n  for (var i = 0; i < arrayA.length; i++) {\n    if (!looseEqual(arrayA[i], arrayB[i])) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\nvar isEqual = exports.isEqual = function isEqual(value1, value2) {\n  if (Array.isArray(value1) && Array.isArray(value2)) {\n    return arrayEquals(value1, value2);\n  }\n  return looseEqual(value1, value2);\n};\n\nvar isEmpty = exports.isEmpty = function isEmpty(val) {\n  // null or undefined\n  if (val == null) return true;\n\n  if (typeof val === 'boolean') return false;\n\n  if (typeof val === 'number') return !val;\n\n  if (val instanceof Error) return val.message === '';\n\n  switch (Object.prototype.toString.call(val)) {\n    // String or Array\n    case '[object String]':\n    case '[object Array]':\n      return !val.length;\n\n    // Map or Set or File\n    case '[object File]':\n    case '[object Map]':\n    case '[object Set]':\n      {\n        return !val.size;\n      }\n    // Plain Object\n    case '[object Object]':\n      {\n        return !Object.keys(val).length;\n      }\n  }\n\n  return false;\n};\n\nfunction rafThrottle(fn) {\n  var locked = false;\n  return function () {\n    var _this = this;\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    if (locked) return;\n    locked = true;\n    window.requestAnimationFrame(function (_) {\n      fn.apply(_this, args);\n      locked = false;\n    });\n  };\n}\n\nfunction objToArray(obj) {\n  if (Array.isArray(obj)) {\n    return obj;\n  }\n  return isEmpty(obj) ? [] : [obj];\n}\n\nvar isMac = exports.isMac = function isMac() {\n  return !_vue2.default.prototype.$isServer && /macintosh|mac os x/i.test(navigator.userAgent);\n};","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.isVNode = isVNode;\n\nvar _util = require('element-ui/lib/utils/util');\n\nfunction isVNode(node) {\n  return node !== null && (typeof node === 'undefined' ? 'undefined' : _typeof(node)) === 'object' && (0, _util.hasOwn)(node, 'componentOptions');\n};","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 81);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode /* vue-cli only */\n) {\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functioal component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n\n\n/***/ }),\n\n/***/ 13:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/popup\");\n\n/***/ }),\n\n/***/ 17:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/types\");\n\n/***/ }),\n\n/***/ 23:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/vdom\");\n\n/***/ }),\n\n/***/ 7:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"vue\");\n\n/***/ }),\n\n/***/ 81:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: external \"vue\"\nvar external_vue_ = __webpack_require__(7);\nvar external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/message/src/main.vue?vue&type=template&id=455b9f60&\nvar render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"transition\",\n    {\n      attrs: { name: \"el-message-fade\" },\n      on: { \"after-leave\": _vm.handleAfterLeave }\n    },\n    [\n      _c(\n        \"div\",\n        {\n          directives: [\n            {\n              name: \"show\",\n              rawName: \"v-show\",\n              value: _vm.visible,\n              expression: \"visible\"\n            }\n          ],\n          class: [\n            \"el-message\",\n            _vm.type && !_vm.iconClass ? \"el-message--\" + _vm.type : \"\",\n            _vm.center ? \"is-center\" : \"\",\n            _vm.showClose ? \"is-closable\" : \"\",\n            _vm.customClass\n          ],\n          style: _vm.positionStyle,\n          attrs: { role: \"alert\" },\n          on: { mouseenter: _vm.clearTimer, mouseleave: _vm.startTimer }\n        },\n        [\n          _vm.iconClass\n            ? _c(\"i\", { class: _vm.iconClass })\n            : _c(\"i\", { class: _vm.typeClass }),\n          _vm._t(\"default\", [\n            !_vm.dangerouslyUseHTMLString\n              ? _c(\"p\", { staticClass: \"el-message__content\" }, [\n                  _vm._v(_vm._s(_vm.message))\n                ])\n              : _c(\"p\", {\n                  staticClass: \"el-message__content\",\n                  domProps: { innerHTML: _vm._s(_vm.message) }\n                })\n          ]),\n          _vm.showClose\n            ? _c(\"i\", {\n                staticClass: \"el-message__closeBtn el-icon-close\",\n                on: { click: _vm.close }\n              })\n            : _vm._e()\n        ],\n        2\n      )\n    ]\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/message/src/main.vue?vue&type=template&id=455b9f60&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/message/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar typeMap = {\n  success: 'success',\n  info: 'info',\n  warning: 'warning',\n  error: 'error'\n};\n\n/* harmony default export */ var mainvue_type_script_lang_js_ = ({\n  data: function data() {\n    return {\n      visible: false,\n      message: '',\n      duration: 3000,\n      type: 'info',\n      iconClass: '',\n      customClass: '',\n      onClose: null,\n      showClose: false,\n      closed: false,\n      verticalOffset: 20,\n      timer: null,\n      dangerouslyUseHTMLString: false,\n      center: false\n    };\n  },\n\n\n  computed: {\n    typeClass: function typeClass() {\n      return this.type && !this.iconClass ? 'el-message__icon el-icon-' + typeMap[this.type] : '';\n    },\n    positionStyle: function positionStyle() {\n      return {\n        'top': this.verticalOffset + 'px'\n      };\n    }\n  },\n\n  watch: {\n    closed: function closed(newVal) {\n      if (newVal) {\n        this.visible = false;\n      }\n    }\n  },\n\n  methods: {\n    handleAfterLeave: function handleAfterLeave() {\n      this.$destroy(true);\n      this.$el.parentNode.removeChild(this.$el);\n    },\n    close: function close() {\n      this.closed = true;\n      if (typeof this.onClose === 'function') {\n        this.onClose(this);\n      }\n    },\n    clearTimer: function clearTimer() {\n      clearTimeout(this.timer);\n    },\n    startTimer: function startTimer() {\n      var _this = this;\n\n      if (this.duration > 0) {\n        this.timer = setTimeout(function () {\n          if (!_this.closed) {\n            _this.close();\n          }\n        }, this.duration);\n      }\n    },\n    keydown: function keydown(e) {\n      if (e.keyCode === 27) {\n        // esc关闭消息\n        if (!this.closed) {\n          this.close();\n        }\n      }\n    }\n  },\n  mounted: function mounted() {\n    this.startTimer();\n    document.addEventListener('keydown', this.keydown);\n  },\n  beforeDestroy: function beforeDestroy() {\n    document.removeEventListener('keydown', this.keydown);\n  }\n});\n// CONCATENATED MODULE: ./packages/message/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_mainvue_type_script_lang_js_ = (mainvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/message/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n  src_mainvue_type_script_lang_js_,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/message/src/main.vue\"\n/* harmony default export */ var main = (component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/utils/popup\"\nvar popup_ = __webpack_require__(13);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/vdom\"\nvar vdom_ = __webpack_require__(23);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/types\"\nvar types_ = __webpack_require__(17);\n\n// CONCATENATED MODULE: ./packages/message/src/main.js\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\nvar MessageConstructor = external_vue_default.a.extend(main);\n\nvar instance = void 0;\nvar instances = [];\nvar seed = 1;\n\nvar main_Message = function Message(options) {\n  if (external_vue_default.a.prototype.$isServer) return;\n  options = options || {};\n  if (typeof options === 'string') {\n    options = {\n      message: options\n    };\n  }\n  var userOnClose = options.onClose;\n  var id = 'message_' + seed++;\n\n  options.onClose = function () {\n    Message.close(id, userOnClose);\n  };\n  instance = new MessageConstructor({\n    data: options\n  });\n  instance.id = id;\n  if (Object(vdom_[\"isVNode\"])(instance.message)) {\n    instance.$slots.default = [instance.message];\n    instance.message = null;\n  }\n  instance.$mount();\n  document.body.appendChild(instance.$el);\n  var verticalOffset = options.offset || 20;\n  instances.forEach(function (item) {\n    verticalOffset += item.$el.offsetHeight + 16;\n  });\n  instance.verticalOffset = verticalOffset;\n  instance.visible = true;\n  instance.$el.style.zIndex = popup_[\"PopupManager\"].nextZIndex();\n  instances.push(instance);\n  return instance;\n};\n\n['success', 'warning', 'info', 'error'].forEach(function (type) {\n  main_Message[type] = function (options) {\n    if (Object(types_[\"isObject\"])(options) && !Object(vdom_[\"isVNode\"])(options)) {\n      return main_Message(_extends({}, options, {\n        type: type\n      }));\n    }\n    return main_Message({\n      type: type,\n      message: options\n    });\n  };\n});\n\nmain_Message.close = function (id, userOnClose) {\n  var len = instances.length;\n  var index = -1;\n  var removedHeight = void 0;\n  for (var i = 0; i < len; i++) {\n    if (id === instances[i].id) {\n      removedHeight = instances[i].$el.offsetHeight;\n      index = i;\n      if (typeof userOnClose === 'function') {\n        userOnClose(instances[i]);\n      }\n      instances.splice(i, 1);\n      break;\n    }\n  }\n  if (len <= 1 || index === -1 || index > instances.length - 1) return;\n  for (var _i = index; _i < len - 1; _i++) {\n    var dom = instances[_i].$el;\n    dom.style['top'] = parseInt(dom.style['top'], 10) - removedHeight - 16 + 'px';\n  }\n};\n\nmain_Message.closeAll = function () {\n  for (var i = instances.length - 1; i >= 0; i--) {\n    instances[i].close();\n  }\n};\n\n/* harmony default export */ var src_main = (main_Message);\n// CONCATENATED MODULE: ./packages/message/index.js\n\n/* harmony default export */ var message = __webpack_exports__[\"default\"] = (src_main);\n\n/***/ })\n\n/******/ });","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n  return function wrap() {\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n    return fn.apply(thisArg, args);\n  };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n  // eslint-disable-next-line func-names\n  return function(thing) {\n    var str = toString.call(thing);\n    return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n  };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n  type = type.toLowerCase();\n  return function isKindOf(thing) {\n    return kindOf(thing) === type;\n  };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n  return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n  return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n    && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  var result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n  return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n  return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n  if (kindOf(val) !== 'object') {\n    return false;\n  }\n\n  var prototype = Object.getPrototypeOf(val);\n  return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n  return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n  return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n  var pattern = '[object FormData]';\n  return thing && (\n    (typeof FormData === 'function' && thing instanceof FormData) ||\n    toString.call(thing) === pattern ||\n    (isFunction(thing.toString) && thing.toString() === pattern)\n  );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n  return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n  if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n                                           navigator.product === 'NativeScript' ||\n                                           navigator.product === 'NS')) {\n    return false;\n  }\n  return (\n    typeof window !== 'undefined' &&\n    typeof document !== 'undefined'\n  );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (var i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        fn.call(null, obj[key], key, obj);\n      }\n    }\n  }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  var result = {};\n  function assignValue(val, key) {\n    if (isPlainObject(result[key]) && isPlainObject(val)) {\n      result[key] = merge(result[key], val);\n    } else if (isPlainObject(val)) {\n      result[key] = merge({}, val);\n    } else if (isArray(val)) {\n      result[key] = val.slice();\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n  forEach(b, function assignValue(val, key) {\n    if (thisArg && typeof val === 'function') {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  });\n  return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n  if (content.charCodeAt(0) === 0xFEFF) {\n    content = content.slice(1);\n  }\n  return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n  constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n  constructor.prototype.constructor = constructor;\n  props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n  var props;\n  var i;\n  var prop;\n  var merged = {};\n\n  destObj = destObj || {};\n\n  do {\n    props = Object.getOwnPropertyNames(sourceObj);\n    i = props.length;\n    while (i-- > 0) {\n      prop = props[i];\n      if (!merged[prop]) {\n        destObj[prop] = sourceObj[prop];\n        merged[prop] = true;\n      }\n    }\n    sourceObj = Object.getPrototypeOf(sourceObj);\n  } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n  return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n  str = String(str);\n  if (position === undefined || position > str.length) {\n    position = str.length;\n  }\n  position -= searchString.length;\n  var lastIndex = str.indexOf(searchString, position);\n  return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n  if (!thing) return null;\n  var i = thing.length;\n  if (isUndefined(i)) return null;\n  var arr = new Array(i);\n  while (i-- > 0) {\n    arr[i] = thing[i];\n  }\n  return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n  // eslint-disable-next-line func-names\n  return function(thing) {\n    return TypedArray && thing instanceof TypedArray;\n  };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n  isArray: isArray,\n  isArrayBuffer: isArrayBuffer,\n  isBuffer: isBuffer,\n  isFormData: isFormData,\n  isArrayBufferView: isArrayBufferView,\n  isString: isString,\n  isNumber: isNumber,\n  isObject: isObject,\n  isPlainObject: isPlainObject,\n  isUndefined: isUndefined,\n  isDate: isDate,\n  isFile: isFile,\n  isBlob: isBlob,\n  isFunction: isFunction,\n  isStream: isStream,\n  isURLSearchParams: isURLSearchParams,\n  isStandardBrowserEnv: isStandardBrowserEnv,\n  forEach: forEach,\n  merge: merge,\n  extend: extend,\n  trim: trim,\n  stripBOM: stripBOM,\n  inherits: inherits,\n  toFlatObject: toFlatObject,\n  kindOf: kindOf,\n  kindOfTest: kindOfTest,\n  endsWith: endsWith,\n  toArray: toArray,\n  isTypedArray: isTypedArray,\n  isFileList: isFileList\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n\n  var serializedParams;\n  if (paramsSerializer) {\n    serializedParams = paramsSerializer(params);\n  } else if (utils.isURLSearchParams(params)) {\n    serializedParams = params.toString();\n  } else {\n    var parts = [];\n\n    utils.forEach(params, function serialize(val, key) {\n      if (val === null || typeof val === 'undefined') {\n        return;\n      }\n\n      if (utils.isArray(val)) {\n        key = key + '[]';\n      } else {\n        val = [val];\n      }\n\n      utils.forEach(val, function parseValue(v) {\n        if (utils.isDate(v)) {\n          v = v.toISOString();\n        } else if (utils.isObject(v)) {\n          v = JSON.stringify(v);\n        }\n        parts.push(encode(key) + '=' + encode(v));\n      });\n    });\n\n    serializedParams = parts.join('&');\n  }\n\n  if (serializedParams) {\n    var hashmarkIndex = url.indexOf('#');\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n  this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n  this.handlers.push({\n    fulfilled: fulfilled,\n    rejected: rejected,\n    synchronous: options ? options.synchronous : false,\n    runWhen: options ? options.runWhen : null\n  });\n  return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n  if (this.handlers[id]) {\n    this.handlers[id] = null;\n  }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n  utils.forEach(this.handlers, function forEachHandler(h) {\n    if (h !== null) {\n      fn(h);\n    }\n  });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n  utils.forEach(headers, function processHeader(value, name) {\n    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n      headers[normalizedName] = value;\n      delete headers[name];\n    }\n  });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n  Error.call(this);\n  this.message = message;\n  this.name = 'AxiosError';\n  code && (this.code = code);\n  config && (this.config = config);\n  request && (this.request = request);\n  response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n  toJSON: function toJSON() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: this.config,\n      code: this.code,\n      status: this.response && this.response.status ? this.response.status : null\n    };\n  }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n  'ERR_BAD_OPTION_VALUE',\n  'ERR_BAD_OPTION',\n  'ECONNABORTED',\n  'ETIMEDOUT',\n  'ERR_NETWORK',\n  'ERR_FR_TOO_MANY_REDIRECTS',\n  'ERR_DEPRECATED',\n  'ERR_BAD_RESPONSE',\n  'ERR_BAD_REQUEST',\n  'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n  descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n  var axiosError = Object.create(prototype);\n\n  utils.toFlatObject(error, axiosError, function filter(obj) {\n    return obj !== Error.prototype;\n  });\n\n  AxiosError.call(axiosError, error.message, code, config, request, response);\n\n  axiosError.name = error.name;\n\n  customProps && Object.assign(axiosError, customProps);\n\n  return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nmodule.exports = {\n  silentJSONParsing: true,\n  forcedJSONParsing: true,\n  clarifyTimeoutError: false\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n  // eslint-disable-next-line no-param-reassign\n  formData = formData || new FormData();\n\n  var stack = [];\n\n  function convertValue(value) {\n    if (value === null) return '';\n\n    if (utils.isDate(value)) {\n      return value.toISOString();\n    }\n\n    if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n      return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n    }\n\n    return value;\n  }\n\n  function build(data, parentKey) {\n    if (utils.isPlainObject(data) || utils.isArray(data)) {\n      if (stack.indexOf(data) !== -1) {\n        throw Error('Circular reference detected in ' + parentKey);\n      }\n\n      stack.push(data);\n\n      utils.forEach(data, function each(value, key) {\n        if (utils.isUndefined(value)) return;\n        var fullKey = parentKey ? parentKey + '.' + key : key;\n        var arr;\n\n        if (value && !parentKey && typeof value === 'object') {\n          if (utils.endsWith(key, '{}')) {\n            // eslint-disable-next-line no-param-reassign\n            value = JSON.stringify(value);\n          } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n            // eslint-disable-next-line func-names\n            arr.forEach(function(el) {\n              !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n            });\n            return;\n          }\n        }\n\n        build(value, fullKey);\n      });\n\n      stack.pop();\n    } else {\n      formData.append(parentKey, convertValue(data));\n    }\n  }\n\n  build(obj);\n\n  return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(new AxiosError(\n      'Request failed with status code ' + response.status,\n      [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n      response.config,\n      response.request,\n      response\n    ));\n  }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs support document.cookie\n    (function standardBrowserEnv() {\n      return {\n        write: function write(name, value, expires, path, domain, secure) {\n          var cookie = [];\n          cookie.push(name + '=' + encodeURIComponent(value));\n\n          if (utils.isNumber(expires)) {\n            cookie.push('expires=' + new Date(expires).toGMTString());\n          }\n\n          if (utils.isString(path)) {\n            cookie.push('path=' + path);\n          }\n\n          if (utils.isString(domain)) {\n            cookie.push('domain=' + domain);\n          }\n\n          if (secure === true) {\n            cookie.push('secure');\n          }\n\n          document.cookie = cookie.join('; ');\n        },\n\n        read: function read(name) {\n          var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n          return (match ? decodeURIComponent(match[3]) : null);\n        },\n\n        remove: function remove(name) {\n          this.write(name, '', Date.now() - 86400000);\n        }\n      };\n    })() :\n\n  // Non standard browser env (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return {\n        write: function write() {},\n        read: function read() { return null; },\n        remove: function remove() {}\n      };\n    })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n  if (baseURL && !isAbsoluteURL(requestedURL)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n  var parsed = {};\n  var key;\n  var val;\n  var i;\n\n  if (!headers) { return parsed; }\n\n  utils.forEach(headers.split('\\n'), function parser(line) {\n    i = line.indexOf(':');\n    key = utils.trim(line.substr(0, i)).toLowerCase();\n    val = utils.trim(line.substr(i + 1));\n\n    if (key) {\n      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n        return;\n      }\n      if (key === 'set-cookie') {\n        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    }\n  });\n\n  return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs have full support of the APIs needed to test\n  // whether the request URL is of the same origin as current location.\n    (function standardBrowserEnv() {\n      var msie = /(msie|trident)/i.test(navigator.userAgent);\n      var urlParsingNode = document.createElement('a');\n      var originURL;\n\n      /**\n    * Parse a URL to discover it's components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n      function resolveURL(url) {\n        var href = url;\n\n        if (msie) {\n        // IE needs attribute set twice to normalize properties\n          urlParsingNode.setAttribute('href', href);\n          href = urlParsingNode.href;\n        }\n\n        urlParsingNode.setAttribute('href', href);\n\n        // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n        return {\n          href: urlParsingNode.href,\n          protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n          host: urlParsingNode.host,\n          search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n          hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n          hostname: urlParsingNode.hostname,\n          port: urlParsingNode.port,\n          pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n            urlParsingNode.pathname :\n            '/' + urlParsingNode.pathname\n        };\n      }\n\n      originURL = resolveURL(window.location.href);\n\n      /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n      return function isURLSameOrigin(requestURL) {\n        var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n        return (parsed.protocol === originURL.protocol &&\n            parsed.host === originURL.host);\n      };\n    })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return function isURLSameOrigin() {\n        return true;\n      };\n    })()\n);\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n  this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n  __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n  var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n  return match && match[1] || '';\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    var requestData = config.data;\n    var requestHeaders = config.headers;\n    var responseType = config.responseType;\n    var onCanceled;\n    function done() {\n      if (config.cancelToken) {\n        config.cancelToken.unsubscribe(onCanceled);\n      }\n\n      if (config.signal) {\n        config.signal.removeEventListener('abort', onCanceled);\n      }\n    }\n\n    if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n      delete requestHeaders['Content-Type']; // Let the browser set it\n    }\n\n    var request = new XMLHttpRequest();\n\n    // HTTP basic authentication\n    if (config.auth) {\n      var username = config.auth.username || '';\n      var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n    }\n\n    var fullPath = buildFullPath(config.baseURL, config.url);\n\n    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    function onloadend() {\n      if (!request) {\n        return;\n      }\n      // Prepare the response\n      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n      var responseData = !responseType || responseType === 'text' ||  responseType === 'json' ?\n        request.responseText : request.response;\n      var response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config: config,\n        request: request\n      };\n\n      settle(function _resolve(value) {\n        resolve(value);\n        done();\n      }, function _reject(err) {\n        reject(err);\n        done();\n      }, response);\n\n      // Clean up request\n      request = null;\n    }\n\n    if ('onloadend' in request) {\n      // Use onloadend if available\n      request.onloadend = onloadend;\n    } else {\n      // Listen for ready state to emulate onloadend\n      request.onreadystatechange = function handleLoad() {\n        if (!request || request.readyState !== 4) {\n          return;\n        }\n\n        // The request errored out and we didn't get a response, this will be\n        // handled by onerror instead\n        // With one exception: request that using file: protocol, most browsers\n        // will return status as 0 even though it's a successful request\n        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n          return;\n        }\n        // readystate handler is calling before onerror or ontimeout handlers,\n        // so we should call onloadend on the next 'tick'\n        setTimeout(onloadend);\n      };\n    }\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n      var transitional = config.transitional || transitionalDefaults;\n      if (config.timeoutErrorMessage) {\n        timeoutErrorMessage = config.timeoutErrorMessage;\n      }\n      reject(new AxiosError(\n        timeoutErrorMessage,\n        transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n        config,\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if (utils.isStandardBrowserEnv()) {\n      // Add xsrf header\n      var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n        cookies.read(config.xsrfCookieName) :\n        undefined;\n\n      if (xsrfValue) {\n        requestHeaders[config.xsrfHeaderName] = xsrfValue;\n      }\n    }\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n          // Remove Content-Type if data is undefined\n          delete requestHeaders[key];\n        } else {\n          // Otherwise add header to the request\n          request.setRequestHeader(key, val);\n        }\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (!utils.isUndefined(config.withCredentials)) {\n      request.withCredentials = !!config.withCredentials;\n    }\n\n    // Add responseType to request if needed\n    if (responseType && responseType !== 'json') {\n      request.responseType = config.responseType;\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', config.onDownloadProgress);\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', config.onUploadProgress);\n    }\n\n    if (config.cancelToken || config.signal) {\n      // Handle cancellation\n      // eslint-disable-next-line func-names\n      onCanceled = function(cancel) {\n        if (!request) {\n          return;\n        }\n        reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n        request.abort();\n        request = null;\n      };\n\n      config.cancelToken && config.cancelToken.subscribe(onCanceled);\n      if (config.signal) {\n        config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n      }\n    }\n\n    if (!requestData) {\n      requestData = null;\n    }\n\n    var protocol = parseProtocol(fullPath);\n\n    if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n      reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n      return;\n    }\n\n\n    // Send the request\n    request.send(requestData);\n  });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n  'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n    headers['Content-Type'] = value;\n  }\n}\n\nfunction getDefaultAdapter() {\n  var adapter;\n  if (typeof XMLHttpRequest !== 'undefined') {\n    // For browsers use XHR adapter\n    adapter = require('../adapters/xhr');\n  } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n    // For node use HTTP adapter\n    adapter = require('../adapters/http');\n  }\n  return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n  transitional: transitionalDefaults,\n\n  adapter: getDefaultAdapter(),\n\n  transformRequest: [function transformRequest(data, headers) {\n    normalizeHeaderName(headers, 'Accept');\n    normalizeHeaderName(headers, 'Content-Type');\n\n    if (utils.isFormData(data) ||\n      utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n      return data.toString();\n    }\n\n    var isObjectPayload = utils.isObject(data);\n    var contentType = headers && headers['Content-Type'];\n\n    var isFileList;\n\n    if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n      var _FormData = this.env && this.env.FormData;\n      return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n    } else if (isObjectPayload || contentType === 'application/json') {\n      setContentTypeIfUnset(headers, 'application/json');\n      return stringifySafely(data);\n    }\n\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    var transitional = this.transitional || defaults.transitional;\n    var silentJSONParsing = transitional && transitional.silentJSONParsing;\n    var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n    var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n    if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n      try {\n        return JSON.parse(data);\n      } catch (e) {\n        if (strictJSONParsing) {\n          if (e.name === 'SyntaxError') {\n            throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n          }\n          throw e;\n        }\n      }\n    }\n\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  env: {\n    FormData: require('./env/FormData')\n  },\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  },\n\n  headers: {\n    common: {\n      'Accept': 'application/json, text/plain, */*'\n    }\n  }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n  defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n  var context = this || defaults;\n  /*eslint no-param-reassign:0*/\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(context, data, headers);\n  });\n\n  return data;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n\n  if (config.signal && config.signal.aborted) {\n    throw new CanceledError();\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  // Ensure headers exist\n  config.headers = config.headers || {};\n\n  // Transform request data\n  config.data = transformData.call(\n    config,\n    config.data,\n    config.headers,\n    config.transformRequest\n  );\n\n  // Flatten headers\n  config.headers = utils.merge(\n    config.headers.common || {},\n    config.headers[config.method] || {},\n    config.headers\n  );\n\n  utils.forEach(\n    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n    function cleanHeaderConfig(method) {\n      delete config.headers[method];\n    }\n  );\n\n  var adapter = config.adapter || defaults.adapter;\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData.call(\n      config,\n      response.data,\n      response.headers,\n      config.transformResponse\n    );\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData.call(\n          config,\n          reason.response.data,\n          reason.response.headers,\n          config.transformResponse\n        );\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  var config = {};\n\n  function getMergedValue(target, source) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge(target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDeepProperties(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      return getMergedValue(config1[prop], config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      return getMergedValue(undefined, config1[prop]);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function valueFromConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      return getMergedValue(undefined, config2[prop]);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function defaultToConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      return getMergedValue(undefined, config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      return getMergedValue(undefined, config1[prop]);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDirectKeys(prop) {\n    if (prop in config2) {\n      return getMergedValue(config1[prop], config2[prop]);\n    } else if (prop in config1) {\n      return getMergedValue(undefined, config1[prop]);\n    }\n  }\n\n  var mergeMap = {\n    'url': valueFromConfig2,\n    'method': valueFromConfig2,\n    'data': valueFromConfig2,\n    'baseURL': defaultToConfig2,\n    'transformRequest': defaultToConfig2,\n    'transformResponse': defaultToConfig2,\n    'paramsSerializer': defaultToConfig2,\n    'timeout': defaultToConfig2,\n    'timeoutMessage': defaultToConfig2,\n    'withCredentials': defaultToConfig2,\n    'adapter': defaultToConfig2,\n    'responseType': defaultToConfig2,\n    'xsrfCookieName': defaultToConfig2,\n    'xsrfHeaderName': defaultToConfig2,\n    'onUploadProgress': defaultToConfig2,\n    'onDownloadProgress': defaultToConfig2,\n    'decompress': defaultToConfig2,\n    'maxContentLength': defaultToConfig2,\n    'maxBodyLength': defaultToConfig2,\n    'beforeRedirect': defaultToConfig2,\n    'transport': defaultToConfig2,\n    'httpAgent': defaultToConfig2,\n    'httpsAgent': defaultToConfig2,\n    'cancelToken': defaultToConfig2,\n    'socketPath': defaultToConfig2,\n    'responseEncoding': defaultToConfig2,\n    'validateStatus': mergeDirectKeys\n  };\n\n  utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n    var merge = mergeMap[prop] || mergeDeepProperties;\n    var configValue = merge(prop);\n    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n  });\n\n  return config;\n};\n","module.exports = {\n  \"version\": \"0.27.2\"\n};","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  function formatMessage(opt, desc) {\n    return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n  }\n\n  // eslint-disable-next-line func-names\n  return function(value, opt, opts) {\n    if (validator === false) {\n      throw new AxiosError(\n        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n        AxiosError.ERR_DEPRECATED\n      );\n    }\n\n    if (version && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object') {\n    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n  }\n  var keys = Object.keys(options);\n  var i = keys.length;\n  while (i-- > 0) {\n    var opt = keys[i];\n    var validator = schema[opt];\n    if (validator) {\n      var value = options[opt];\n      var result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n    }\n  }\n}\n\nmodule.exports = {\n  assertOptions: assertOptions,\n  validators: validators\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n  this.defaults = instanceConfig;\n  this.interceptors = {\n    request: new InterceptorManager(),\n    response: new InterceptorManager()\n  };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n  /*eslint no-param-reassign:0*/\n  // Allow for axios('example/url'[, config]) a la fetch API\n  if (typeof configOrUrl === 'string') {\n    config = config || {};\n    config.url = configOrUrl;\n  } else {\n    config = configOrUrl || {};\n  }\n\n  config = mergeConfig(this.defaults, config);\n\n  // Set config.method\n  if (config.method) {\n    config.method = config.method.toLowerCase();\n  } else if (this.defaults.method) {\n    config.method = this.defaults.method.toLowerCase();\n  } else {\n    config.method = 'get';\n  }\n\n  var transitional = config.transitional;\n\n  if (transitional !== undefined) {\n    validator.assertOptions(transitional, {\n      silentJSONParsing: validators.transitional(validators.boolean),\n      forcedJSONParsing: validators.transitional(validators.boolean),\n      clarifyTimeoutError: validators.transitional(validators.boolean)\n    }, false);\n  }\n\n  // filter out skipped interceptors\n  var requestInterceptorChain = [];\n  var synchronousRequestInterceptors = true;\n  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n    if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n      return;\n    }\n\n    synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n    requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  var responseInterceptorChain = [];\n  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n    responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  var promise;\n\n  if (!synchronousRequestInterceptors) {\n    var chain = [dispatchRequest, undefined];\n\n    Array.prototype.unshift.apply(chain, requestInterceptorChain);\n    chain = chain.concat(responseInterceptorChain);\n\n    promise = Promise.resolve(config);\n    while (chain.length) {\n      promise = promise.then(chain.shift(), chain.shift());\n    }\n\n    return promise;\n  }\n\n\n  var newConfig = config;\n  while (requestInterceptorChain.length) {\n    var onFulfilled = requestInterceptorChain.shift();\n    var onRejected = requestInterceptorChain.shift();\n    try {\n      newConfig = onFulfilled(newConfig);\n    } catch (error) {\n      onRejected(error);\n      break;\n    }\n  }\n\n  try {\n    promise = dispatchRequest(newConfig);\n  } catch (error) {\n    return Promise.reject(error);\n  }\n\n  while (responseInterceptorChain.length) {\n    promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n  }\n\n  return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n  config = mergeConfig(this.defaults, config);\n  var fullPath = buildFullPath(config.baseURL, config.url);\n  return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(mergeConfig(config || {}, {\n      method: method,\n      url: url,\n      data: (config || {}).data\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n\n  function generateHTTPMethod(isForm) {\n    return function httpMethod(url, data, config) {\n      return this.request(mergeConfig(config || {}, {\n        method: method,\n        headers: isForm ? {\n          'Content-Type': 'multipart/form-data'\n        } : {},\n        url: url,\n        data: data\n      }));\n    };\n  }\n\n  Axios.prototype[method] = generateHTTPMethod();\n\n  Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n  if (typeof executor !== 'function') {\n    throw new TypeError('executor must be a function.');\n  }\n\n  var resolvePromise;\n\n  this.promise = new Promise(function promiseExecutor(resolve) {\n    resolvePromise = resolve;\n  });\n\n  var token = this;\n\n  // eslint-disable-next-line func-names\n  this.promise.then(function(cancel) {\n    if (!token._listeners) return;\n\n    var i;\n    var l = token._listeners.length;\n\n    for (i = 0; i < l; i++) {\n      token._listeners[i](cancel);\n    }\n    token._listeners = null;\n  });\n\n  // eslint-disable-next-line func-names\n  this.promise.then = function(onfulfilled) {\n    var _resolve;\n    // eslint-disable-next-line func-names\n    var promise = new Promise(function(resolve) {\n      token.subscribe(resolve);\n      _resolve = resolve;\n    }).then(onfulfilled);\n\n    promise.cancel = function reject() {\n      token.unsubscribe(_resolve);\n    };\n\n    return promise;\n  };\n\n  executor(function cancel(message) {\n    if (token.reason) {\n      // Cancellation has already been requested\n      return;\n    }\n\n    token.reason = new CanceledError(message);\n    resolvePromise(token.reason);\n  });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n  if (this.reason) {\n    throw this.reason;\n  }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n  if (this.reason) {\n    listener(this.reason);\n    return;\n  }\n\n  if (this._listeners) {\n    this._listeners.push(listener);\n  } else {\n    this._listeners = [listener];\n  }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n  if (!this._listeners) {\n    return;\n  }\n  var index = this._listeners.indexOf(listener);\n  if (index !== -1) {\n    this._listeners.splice(index, 1);\n  }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n  var cancel;\n  var token = new CancelToken(function executor(c) {\n    cancel = c;\n  });\n  return {\n    token: token,\n    cancel: cancel\n  };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n  return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  var context = new Axios(defaultConfig);\n  var instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context);\n\n  // Copy context to instance\n  utils.extend(instance, context);\n\n  // Factory for creating new instances\n  instance.create = function create(instanceConfig) {\n    return createInstance(mergeConfig(defaultConfig, instanceConfig));\n  };\n\n  return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","module.exports = require('./lib/axios');","/** 将map转换为list */\nexport const mapToList = function (map: any): Array<any> {\n  const list = []\n  for (const [key, value] of Object.entries(map)) {\n    if (key === 'toString') continue\n    const name = map.toString(value)\n    list.push({ value, name, label: name })\n  }\n  return list\n}\n\n/** 用户 token */\nexport const TOKEN_KEY = 'token'\n/** 是否自动登录 */\nexport const IS_AUTO_LOGIN = 'IS_AUTO_LOGIN'\n\n/** 分析数据字典 */\nexport const SOURCE = {\n  TYPE1: '0', // 智能推荐\n  TYPE2: '1', // 医生端首页\n  TYPE3: '2', // 病案端首页\n  TYPE4: '3', // 医保清单\n  toString(type: string | number): string {\n    switch (type + '') {\n      case SOURCE.TYPE1 + '':\n        return '类型1'\n      case SOURCE.TYPE2 + '':\n        return '类型2'\n      case SOURCE.TYPE3 + '':\n        return '类型3'\n      case SOURCE.TYPE4 + '':\n        return '类型4'\n      default:\n        return '-'\n    }\n  },\n}\nexport const SOURCE_LIST = mapToList(SOURCE)\n\n","export * from './dict'\n\nexport const ROUTER_ID = 'router-container'\n\n// 滚动的默认设置\nexport const ScrollOptions = {\n  container: '#router-container', //滚动的容器\n  duration: 300, //滚动时间\n  easing: 'ease', //缓动类型\n  offset: -8, // 滚动时应应用的偏移量。此选项接受回调函数\n  force: true, // 是否应执行滚动\n  cancelable: true, // 用户是否可以取消滚动\n  onStart: false, // 滚动开始时的钩子函数\n  onDone: false, // 滚动结束时候的钩子函数\n  onCancel: false, // 用户取消滚动的钩子函数\n  x: false, // 是否要在x轴上也滚动\n  y: true, // 是否要在y轴上滚动\n}\n\nexport const API_TIMEOUT = 0 // 不限时间\n\nexport const PLATFORMS_KEY = 'platforms' // 平台\n\nexport const USERNAME_KEY = 'username' // 用户名\n\nexport const ROUTES_KEY = 'routes' // 路由\n\nexport const ROUTES_MAP_KEY = 'routesMap' // 路由map\n\nexport const IS_MENU_FOLD = 'isMenuFold' // 菜单是否折叠\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n  var vm\n  var provide = {}\n  var app = {\n    config: Vue.config,\n    use: Vue.use.bind(Vue),\n    mixin: Vue.mixin.bind(Vue),\n    component: Vue.component.bind(Vue),\n    provide: function (key, value) {\n      provide[key] = value\n      return this\n    },\n    directive: function (name, dir) {\n      if (dir) {\n        Vue.directive(name, dir)\n        return app\n      } else {\n        return Vue.directive(name)\n      }\n    },\n    mount: function (el, hydrating) {\n      if (!vm) {\n        vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n        vm.$mount(el, hydrating)\n        return vm\n      } else {\n        return vm\n      }\n    },\n    unmount: function () {\n      if (vm) {\n        vm.$destroy()\n        vm = undefined\n      }\n    },\n  }\n  return app\n}\n\nexport {\n  Vue,\n  Vue2,\n  isVue2,\n  isVue3,\n  install,\n  warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n  return {\n    setup() {\n      throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n    }\n  }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n  return !!getCurrentInstance()\n}\n","import { shallowRef, watchEffect, readonly, unref, ref, isVue3, version, watch, customRef, getCurrentScope, onScopeDispose, effectScope, provide, inject, isRef, computed, reactive, toRefs as toRefs$1, toRef, isVue2, set as set$1, getCurrentInstance, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi';\n\nvar __defProp$9 = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$b.call(b, prop))\n      __defNormalProp$9(a, prop, b[prop]);\n  if (__getOwnPropSymbols$b)\n    for (var prop of __getOwnPropSymbols$b(b)) {\n      if (__propIsEnum$b.call(b, prop))\n        __defNormalProp$9(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\nfunction computedEager(fn, options) {\n  var _a;\n  const result = shallowRef();\n  watchEffect(() => {\n    result.value = fn();\n  }, __spreadProps$6(__spreadValues$9({}, options), {\n    flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n  }));\n  return readonly(result);\n}\n\nvar _a;\nconst isClient = typeof window !== \"undefined\";\nconst isDef = (val) => typeof val !== \"undefined\";\nconst assert = (condition, ...infos) => {\n  if (!condition)\n    console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isBoolean = (val) => typeof val === \"boolean\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isNumber = (val) => typeof val === \"number\";\nconst isString = (val) => typeof val === \"string\";\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst isWindow = (val) => typeof window !== \"undefined\" && toString.call(val) === \"[object Window]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n  min = Math.ceil(min);\n  max = Math.floor(max);\n  return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst isIOS = isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\n\nfunction resolveUnref(r) {\n  return typeof r === \"function\" ? r() : unref(r);\n}\n\nfunction createFilterWrapper(filter, fn) {\n  function wrapper(...args) {\n    return new Promise((resolve, reject) => {\n      Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n    });\n  }\n  return wrapper;\n}\nconst bypassFilter = (invoke) => {\n  return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n  let timer;\n  let maxTimer;\n  let lastRejector = noop;\n  const _clearTimeout = (timer2) => {\n    clearTimeout(timer2);\n    lastRejector();\n    lastRejector = noop;\n  };\n  const filter = (invoke) => {\n    const duration = resolveUnref(ms);\n    const maxDuration = resolveUnref(options.maxWait);\n    if (timer)\n      _clearTimeout(timer);\n    if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n      if (maxTimer) {\n        _clearTimeout(maxTimer);\n        maxTimer = null;\n      }\n      return Promise.resolve(invoke());\n    }\n    return new Promise((resolve, reject) => {\n      lastRejector = options.rejectOnCancel ? reject : resolve;\n      if (maxDuration && !maxTimer) {\n        maxTimer = setTimeout(() => {\n          if (timer)\n            _clearTimeout(timer);\n          maxTimer = null;\n          resolve(invoke());\n        }, maxDuration);\n      }\n      timer = setTimeout(() => {\n        if (maxTimer)\n          _clearTimeout(maxTimer);\n        maxTimer = null;\n        resolve(invoke());\n      }, duration);\n    });\n  };\n  return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) {\n  let lastExec = 0;\n  let timer;\n  let isLeading = true;\n  let lastRejector = noop;\n  let lastValue;\n  const clear = () => {\n    if (timer) {\n      clearTimeout(timer);\n      timer = void 0;\n      lastRejector();\n      lastRejector = noop;\n    }\n  };\n  const filter = (_invoke) => {\n    const duration = resolveUnref(ms);\n    const elapsed = Date.now() - lastExec;\n    const invoke = () => {\n      return lastValue = _invoke();\n    };\n    clear();\n    if (duration <= 0) {\n      lastExec = Date.now();\n      return invoke();\n    }\n    if (elapsed > duration && (leading || !isLeading)) {\n      lastExec = Date.now();\n      invoke();\n    } else if (trailing) {\n      lastValue = new Promise((resolve, reject) => {\n        lastRejector = rejectOnCancel ? reject : resolve;\n        timer = setTimeout(() => {\n          lastExec = Date.now();\n          isLeading = true;\n          resolve(invoke());\n          clear();\n        }, Math.max(0, duration - elapsed));\n      });\n    }\n    if (!leading && !timer)\n      timer = setTimeout(() => isLeading = true, duration);\n    isLeading = false;\n    return lastValue;\n  };\n  return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n  const isActive = ref(true);\n  function pause() {\n    isActive.value = false;\n  }\n  function resume() {\n    isActive.value = true;\n  }\n  const eventFilter = (...args) => {\n    if (isActive.value)\n      extendFilter(...args);\n  };\n  return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nfunction __onlyVue3(name = \"this function\") {\n  if (isVue3)\n    return;\n  throw new Error(`[VueUse] ${name} is only works on Vue 3.`);\n}\nfunction __onlyVue27Plus(name = \"this function\") {\n  if (isVue3 || version.startsWith(\"2.7.\"))\n    return;\n  throw new Error(`[VueUse] ${name} is only works on Vue 2.7 or above.`);\n}\nconst directiveHooks = {\n  mounted: isVue3 ? \"mounted\" : \"inserted\",\n  updated: isVue3 ? \"updated\" : \"componentUpdated\",\n  unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n  return new Promise((resolve, reject) => {\n    if (throwOnTimeout)\n      setTimeout(() => reject(reason), ms);\n    else\n      setTimeout(resolve, ms);\n  });\n}\nfunction identity(arg) {\n  return arg;\n}\nfunction createSingletonPromise(fn) {\n  let _promise;\n  function wrapper() {\n    if (!_promise)\n      _promise = fn();\n    return _promise;\n  }\n  wrapper.reset = async () => {\n    const _prev = _promise;\n    _promise = void 0;\n    if (_prev)\n      await _prev;\n  };\n  return wrapper;\n}\nfunction invoke(fn) {\n  return fn();\n}\nfunction containsProp(obj, ...props) {\n  return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n  var _a;\n  if (typeof target === \"number\")\n    return target + delta;\n  const value = ((_a = target.match(/^-?[0-9]+\\.?[0-9]*/)) == null ? void 0 : _a[0]) || \"\";\n  const unit = target.slice(value.length);\n  const result = parseFloat(value) + delta;\n  if (Number.isNaN(result))\n    return target;\n  return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n  return keys.reduce((n, k) => {\n    if (k in obj) {\n      if (!omitUndefined || obj[k] !== void 0)\n        n[k] = obj[k];\n    }\n    return n;\n  }, {});\n}\n\nfunction computedWithControl(source, fn) {\n  let v = void 0;\n  let track;\n  let trigger;\n  const dirty = ref(true);\n  const update = () => {\n    dirty.value = true;\n    trigger();\n  };\n  watch(source, update, { flush: \"sync\" });\n  const get = isFunction(fn) ? fn : fn.get;\n  const set = isFunction(fn) ? void 0 : fn.set;\n  const result = customRef((_track, _trigger) => {\n    track = _track;\n    trigger = _trigger;\n    return {\n      get() {\n        if (dirty.value) {\n          v = get();\n          dirty.value = false;\n        }\n        track();\n        return v;\n      },\n      set(v2) {\n        set == null ? void 0 : set(v2);\n      }\n    };\n  });\n  if (Object.isExtensible(result))\n    result.trigger = update;\n  return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n  if (getCurrentScope()) {\n    onScopeDispose(fn);\n    return true;\n  }\n  return false;\n}\n\nfunction createEventHook() {\n  const fns = [];\n  const off = (fn) => {\n    const index = fns.indexOf(fn);\n    if (index !== -1)\n      fns.splice(index, 1);\n  };\n  const on = (fn) => {\n    fns.push(fn);\n    const offFn = () => off(fn);\n    tryOnScopeDispose(offFn);\n    return {\n      off: offFn\n    };\n  };\n  const trigger = (param) => {\n    fns.forEach((fn) => fn(param));\n  };\n  return {\n    on,\n    off,\n    trigger\n  };\n}\n\nfunction createGlobalState(stateFactory) {\n  let initialized = false;\n  let state;\n  const scope = effectScope(true);\n  return () => {\n    if (!initialized) {\n      state = scope.run(stateFactory);\n      initialized = true;\n    }\n    return state;\n  };\n}\n\nfunction createInjectionState(composable) {\n  const key = Symbol(\"InjectionState\");\n  const useProvidingState = (...args) => {\n    const state = composable(...args);\n    provide(key, state);\n    return state;\n  };\n  const useInjectedState = () => inject(key);\n  return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n  let subscribers = 0;\n  let state;\n  let scope;\n  const dispose = () => {\n    subscribers -= 1;\n    if (scope && subscribers <= 0) {\n      scope.stop();\n      state = void 0;\n      scope = void 0;\n    }\n  };\n  return (...args) => {\n    subscribers += 1;\n    if (!state) {\n      scope = effectScope(true);\n      state = scope.run(() => composable(...args));\n    }\n    tryOnScopeDispose(dispose);\n    return state;\n  };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n  __onlyVue27Plus();\n  for (const [key, value] of Object.entries(extend)) {\n    if (key === \"value\")\n      continue;\n    if (isRef(value) && unwrap) {\n      Object.defineProperty(ref, key, {\n        get() {\n          return value.value;\n        },\n        set(v) {\n          value.value = v;\n        },\n        enumerable\n      });\n    } else {\n      Object.defineProperty(ref, key, { value, enumerable });\n    }\n  }\n  return ref;\n}\n\nfunction get(obj, key) {\n  if (key == null)\n    return unref(obj);\n  return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n  return unref(v) != null;\n}\n\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$a.call(b, prop))\n      __defNormalProp$8(a, prop, b[prop]);\n  if (__getOwnPropSymbols$a)\n    for (var prop of __getOwnPropSymbols$a(b)) {\n      if (__propIsEnum$a.call(b, prop))\n        __defNormalProp$8(a, prop, b[prop]);\n    }\n  return a;\n};\nfunction makeDestructurable(obj, arr) {\n  if (typeof Symbol !== \"undefined\") {\n    const clone = __spreadValues$8({}, obj);\n    Object.defineProperty(clone, Symbol.iterator, {\n      enumerable: false,\n      value() {\n        let index = 0;\n        return {\n          next: () => ({\n            value: arr[index++],\n            done: index > arr.length\n          })\n        };\n      }\n    });\n    return clone;\n  } else {\n    return Object.assign([...arr], obj);\n  }\n}\n\nfunction reactify(fn, options) {\n  const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : resolveUnref;\n  return function(...args) {\n    return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n  };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n  let keys = [];\n  let options;\n  if (Array.isArray(optionsOrKeys)) {\n    keys = optionsOrKeys;\n  } else {\n    options = optionsOrKeys;\n    const { includeOwnProperties = true } = optionsOrKeys;\n    keys.push(...Object.keys(obj));\n    if (includeOwnProperties)\n      keys.push(...Object.getOwnPropertyNames(obj));\n  }\n  return Object.fromEntries(keys.map((key) => {\n    const value = obj[key];\n    return [\n      key,\n      typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n    ];\n  }));\n}\n\nfunction toReactive(objectRef) {\n  if (!isRef(objectRef))\n    return reactive(objectRef);\n  const proxy = new Proxy({}, {\n    get(_, p, receiver) {\n      return unref(Reflect.get(objectRef.value, p, receiver));\n    },\n    set(_, p, value) {\n      if (isRef(objectRef.value[p]) && !isRef(value))\n        objectRef.value[p].value = value;\n      else\n        objectRef.value[p] = value;\n      return true;\n    },\n    deleteProperty(_, p) {\n      return Reflect.deleteProperty(objectRef.value, p);\n    },\n    has(_, p) {\n      return Reflect.has(objectRef.value, p);\n    },\n    ownKeys() {\n      return Object.keys(objectRef.value);\n    },\n    getOwnPropertyDescriptor() {\n      return {\n        enumerable: true,\n        configurable: true\n      };\n    }\n  });\n  return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n  return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n  const flatKeys = keys.flat();\n  return reactiveComputed(() => Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nfunction reactivePick(obj, ...keys) {\n  const flatKeys = keys.flat();\n  return reactive(Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n  return customRef((track, trigger) => {\n    let value = defaultValue;\n    let timer;\n    const resetAfter = () => setTimeout(() => {\n      value = defaultValue;\n      trigger();\n    }, resolveUnref(afterMs));\n    tryOnScopeDispose(() => {\n      clearTimeout(timer);\n    });\n    return {\n      get() {\n        track();\n        return value;\n      },\n      set(newValue) {\n        value = newValue;\n        trigger();\n        clearTimeout(timer);\n        timer = resetAfter();\n      }\n    };\n  });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n  return createFilterWrapper(debounceFilter(ms, options), fn);\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n  const debounced = ref(value.value);\n  const updater = useDebounceFn(() => {\n    debounced.value = value.value;\n  }, ms, options);\n  watch(value, () => updater());\n  return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n  return computed({\n    get() {\n      var _a;\n      return (_a = source.value) != null ? _a : defaultValue;\n    },\n    set(value) {\n      source.value = value;\n    }\n  });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n  return createFilterWrapper(throttleFilter(ms, trailing, leading, rejectOnCancel), fn);\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n  if (delay <= 0)\n    return value;\n  const throttled = ref(value.value);\n  const updater = useThrottleFn(() => {\n    throttled.value = value.value;\n  }, delay, trailing, leading);\n  watch(value, () => updater());\n  return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n  let source = initial;\n  let track;\n  let trigger;\n  const ref = customRef((_track, _trigger) => {\n    track = _track;\n    trigger = _trigger;\n    return {\n      get() {\n        return get();\n      },\n      set(v) {\n        set(v);\n      }\n    };\n  });\n  function get(tracking = true) {\n    if (tracking)\n      track();\n    return source;\n  }\n  function set(value, triggering = true) {\n    var _a, _b;\n    if (value === source)\n      return;\n    const old = source;\n    if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n      return;\n    source = value;\n    (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n    if (triggering)\n      trigger();\n  }\n  const untrackedGet = () => get(false);\n  const silentSet = (v) => set(v, false);\n  const peek = () => get(false);\n  const lay = (v) => set(v, false);\n  return extendRef(ref, {\n    get,\n    set,\n    untrackedGet,\n    silentSet,\n    peek,\n    lay\n  }, { enumerable: true });\n}\nconst controlledRef = refWithControl;\n\nfunction resolveRef(r) {\n  return typeof r === \"function\" ? computed(r) : ref(r);\n}\n\nfunction set(...args) {\n  if (args.length === 2) {\n    const [ref, value] = args;\n    ref.value = value;\n  }\n  if (args.length === 3) {\n    if (isVue2) {\n      set$1(...args);\n    } else {\n      const [target, key, value] = args;\n      target[key] = value;\n    }\n  }\n}\n\nfunction syncRef(left, right, options = {}) {\n  var _a, _b;\n  const {\n    flush = \"sync\",\n    deep = false,\n    immediate = true,\n    direction = \"both\",\n    transform = {}\n  } = options;\n  let watchLeft;\n  let watchRight;\n  const transformLTR = (_a = transform.ltr) != null ? _a : (v) => v;\n  const transformRTL = (_b = transform.rtl) != null ? _b : (v) => v;\n  if (direction === \"both\" || direction === \"ltr\") {\n    watchLeft = watch(left, (newValue) => right.value = transformLTR(newValue), { flush, deep, immediate });\n  }\n  if (direction === \"both\" || direction === \"rtl\") {\n    watchRight = watch(right, (newValue) => left.value = transformRTL(newValue), { flush, deep, immediate });\n  }\n  return () => {\n    watchLeft == null ? void 0 : watchLeft();\n    watchRight == null ? void 0 : watchRight();\n  };\n}\n\nfunction syncRefs(source, targets, options = {}) {\n  const {\n    flush = \"sync\",\n    deep = false,\n    immediate = true\n  } = options;\n  if (!Array.isArray(targets))\n    targets = [targets];\n  return watch(source, (newValue) => targets.forEach((target) => target.value = newValue), { flush, deep, immediate });\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$9.call(b, prop))\n      __defNormalProp$7(a, prop, b[prop]);\n  if (__getOwnPropSymbols$9)\n    for (var prop of __getOwnPropSymbols$9(b)) {\n      if (__propIsEnum$9.call(b, prop))\n        __defNormalProp$7(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nfunction toRefs(objectRef) {\n  if (!isRef(objectRef))\n    return toRefs$1(objectRef);\n  const result = Array.isArray(objectRef.value) ? new Array(objectRef.value.length) : {};\n  for (const key in objectRef.value) {\n    result[key] = customRef(() => ({\n      get() {\n        return objectRef.value[key];\n      },\n      set(v) {\n        if (Array.isArray(objectRef.value)) {\n          const copy = [...objectRef.value];\n          copy[key] = v;\n          objectRef.value = copy;\n        } else {\n          const newObject = __spreadProps$5(__spreadValues$7({}, objectRef.value), { [key]: v });\n          Object.setPrototypeOf(newObject, objectRef.value);\n          objectRef.value = newObject;\n        }\n      }\n    }));\n  }\n  return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true) {\n  if (getCurrentInstance())\n    onBeforeMount(fn);\n  else if (sync)\n    fn();\n  else\n    nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn) {\n  if (getCurrentInstance())\n    onBeforeUnmount(fn);\n}\n\nfunction tryOnMounted(fn, sync = true) {\n  if (getCurrentInstance())\n    onMounted(fn);\n  else if (sync)\n    fn();\n  else\n    nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn) {\n  if (getCurrentInstance())\n    onUnmounted(fn);\n}\n\nfunction createUntil(r, isNot = false) {\n  function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n    let stop = null;\n    const watcher = new Promise((resolve) => {\n      stop = watch(r, (v) => {\n        if (condition(v) !== isNot) {\n          stop == null ? void 0 : stop();\n          resolve(v);\n        }\n      }, {\n        flush,\n        deep,\n        immediate: true\n      });\n    });\n    const promises = [watcher];\n    if (timeout != null) {\n      promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => resolveUnref(r)).finally(() => stop == null ? void 0 : stop()));\n    }\n    return Promise.race(promises);\n  }\n  function toBe(value, options) {\n    if (!isRef(value))\n      return toMatch((v) => v === value, options);\n    const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n    let stop = null;\n    const watcher = new Promise((resolve) => {\n      stop = watch([r, value], ([v1, v2]) => {\n        if (isNot !== (v1 === v2)) {\n          stop == null ? void 0 : stop();\n          resolve(v1);\n        }\n      }, {\n        flush,\n        deep,\n        immediate: true\n      });\n    });\n    const promises = [watcher];\n    if (timeout != null) {\n      promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => resolveUnref(r)).finally(() => {\n        stop == null ? void 0 : stop();\n        return resolveUnref(r);\n      }));\n    }\n    return Promise.race(promises);\n  }\n  function toBeTruthy(options) {\n    return toMatch((v) => Boolean(v), options);\n  }\n  function toBeNull(options) {\n    return toBe(null, options);\n  }\n  function toBeUndefined(options) {\n    return toBe(void 0, options);\n  }\n  function toBeNaN(options) {\n    return toMatch(Number.isNaN, options);\n  }\n  function toContains(value, options) {\n    return toMatch((v) => {\n      const array = Array.from(v);\n      return array.includes(value) || array.includes(resolveUnref(value));\n    }, options);\n  }\n  function changed(options) {\n    return changedTimes(1, options);\n  }\n  function changedTimes(n = 1, options) {\n    let count = -1;\n    return toMatch(() => {\n      count += 1;\n      return count >= n;\n    }, options);\n  }\n  if (Array.isArray(resolveUnref(r))) {\n    const instance = {\n      toMatch,\n      toContains,\n      changed,\n      changedTimes,\n      get not() {\n        return createUntil(r, !isNot);\n      }\n    };\n    return instance;\n  } else {\n    const instance = {\n      toMatch,\n      toBe,\n      toBeTruthy,\n      toBeNull,\n      toBeNaN,\n      toBeUndefined,\n      changed,\n      changedTimes,\n      get not() {\n        return createUntil(r, !isNot);\n      }\n    };\n    return instance;\n  }\n}\nfunction until(r) {\n  return createUntil(r);\n}\n\nfunction useArrayEvery(list, fn) {\n  return computed(() => resolveUnref(list).every((element, index, array) => fn(resolveUnref(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n  return computed(() => resolveUnref(list).map((i) => resolveUnref(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n  return computed(() => resolveUnref(resolveUnref(list).find((element, index, array) => fn(resolveUnref(element), index, array))));\n}\n\nfunction useArrayFindIndex(list, fn) {\n  return computed(() => resolveUnref(list).findIndex((element, index, array) => fn(resolveUnref(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n  let index = arr.length;\n  while (index-- > 0) {\n    if (cb(arr[index], index, arr))\n      return arr[index];\n  }\n  return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n  return computed(() => resolveUnref(!Array.prototype.findLast ? findLast(resolveUnref(list), (element, index, array) => fn(resolveUnref(element), index, array)) : resolveUnref(list).findLast((element, index, array) => fn(resolveUnref(element), index, array))));\n}\n\nfunction useArrayJoin(list, separator) {\n  return computed(() => resolveUnref(list).map((i) => resolveUnref(i)).join(resolveUnref(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n  return computed(() => resolveUnref(list).map((i) => resolveUnref(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n  const reduceCallback = (sum, value, index) => reducer(resolveUnref(sum), resolveUnref(value), index);\n  return computed(() => {\n    const resolved = resolveUnref(list);\n    return args.length ? resolved.reduce(reduceCallback, resolveUnref(args[0])) : resolved.reduce(reduceCallback);\n  });\n}\n\nfunction useArraySome(list, fn) {\n  return computed(() => resolveUnref(list).some((element, index, array) => fn(resolveUnref(element), index, array)));\n}\n\nfunction useArrayUnique(list) {\n  return computed(() => [...new Set(resolveUnref(list).map((element) => resolveUnref(element)))]);\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n  const count = ref(initialValue);\n  const {\n    max = Infinity,\n    min = -Infinity\n  } = options;\n  const inc = (delta = 1) => count.value = Math.min(max, count.value + delta);\n  const dec = (delta = 1) => count.value = Math.max(min, count.value - delta);\n  const get = () => count.value;\n  const set = (val) => count.value = Math.max(min, Math.min(max, val));\n  const reset = (val = initialValue) => {\n    initialValue = val;\n    return set(val);\n  };\n  return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nconst REGEX_FORMAT = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nconst defaultMeridiem = (hours, minutes, isLowercase, hasPeriod) => {\n  let m = hours < 12 ? \"AM\" : \"PM\";\n  if (hasPeriod)\n    m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n  return isLowercase ? m.toLowerCase() : m;\n};\nconst formatDate = (date, formatStr, options = {}) => {\n  var _a;\n  const years = date.getFullYear();\n  const month = date.getMonth();\n  const days = date.getDate();\n  const hours = date.getHours();\n  const minutes = date.getMinutes();\n  const seconds = date.getSeconds();\n  const milliseconds = date.getMilliseconds();\n  const day = date.getDay();\n  const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n  const matches = {\n    YY: () => String(years).slice(-2),\n    YYYY: () => years,\n    M: () => month + 1,\n    MM: () => `${month + 1}`.padStart(2, \"0\"),\n    MMM: () => date.toLocaleDateString(options.locales, { month: \"short\" }),\n    MMMM: () => date.toLocaleDateString(options.locales, { month: \"long\" }),\n    D: () => String(days),\n    DD: () => `${days}`.padStart(2, \"0\"),\n    H: () => String(hours),\n    HH: () => `${hours}`.padStart(2, \"0\"),\n    h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n    hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n    m: () => String(minutes),\n    mm: () => `${minutes}`.padStart(2, \"0\"),\n    s: () => String(seconds),\n    ss: () => `${seconds}`.padStart(2, \"0\"),\n    SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n    d: () => day,\n    dd: () => date.toLocaleDateString(options.locales, { weekday: \"narrow\" }),\n    ddd: () => date.toLocaleDateString(options.locales, { weekday: \"short\" }),\n    dddd: () => date.toLocaleDateString(options.locales, { weekday: \"long\" }),\n    A: () => meridiem(hours, minutes),\n    AA: () => meridiem(hours, minutes, false, true),\n    a: () => meridiem(hours, minutes, true),\n    aa: () => meridiem(hours, minutes, true, true)\n  };\n  return formatStr.replace(REGEX_FORMAT, (match, $1) => $1 || matches[match]());\n};\nconst normalizeDate = (date) => {\n  if (date === null)\n    return new Date(NaN);\n  if (date === void 0)\n    return new Date();\n  if (date instanceof Date)\n    return new Date(date);\n  if (typeof date === \"string\" && !/Z$/i.test(date)) {\n    const d = date.match(REGEX_PARSE);\n    if (d) {\n      const m = d[2] - 1 || 0;\n      const ms = (d[7] || \"0\").substring(0, 3);\n      return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n    }\n  }\n  return new Date(date);\n};\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n  return computed(() => formatDate(normalizeDate(resolveUnref(date)), resolveUnref(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n  const {\n    immediate = true,\n    immediateCallback = false\n  } = options;\n  let timer = null;\n  const isActive = ref(false);\n  function clean() {\n    if (timer) {\n      clearInterval(timer);\n      timer = null;\n    }\n  }\n  function pause() {\n    isActive.value = false;\n    clean();\n  }\n  function resume() {\n    const intervalValue = resolveUnref(interval);\n    if (intervalValue <= 0)\n      return;\n    isActive.value = true;\n    if (immediateCallback)\n      cb();\n    clean();\n    timer = setInterval(cb, intervalValue);\n  }\n  if (immediate && isClient)\n    resume();\n  if (isRef(interval) || isFunction(interval)) {\n    const stopWatch = watch(interval, () => {\n      if (isActive.value && isClient)\n        resume();\n    });\n    tryOnScopeDispose(stopWatch);\n  }\n  tryOnScopeDispose(pause);\n  return {\n    isActive,\n    pause,\n    resume\n  };\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$8.call(b, prop))\n      __defNormalProp$6(a, prop, b[prop]);\n  if (__getOwnPropSymbols$8)\n    for (var prop of __getOwnPropSymbols$8(b)) {\n      if (__propIsEnum$8.call(b, prop))\n        __defNormalProp$6(a, prop, b[prop]);\n    }\n  return a;\n};\nfunction useInterval(interval = 1e3, options = {}) {\n  const {\n    controls: exposeControls = false,\n    immediate = true,\n    callback\n  } = options;\n  const counter = ref(0);\n  const update = () => counter.value += 1;\n  const reset = () => {\n    counter.value = 0;\n  };\n  const controls = useIntervalFn(callback ? () => {\n    update();\n    callback(counter.value);\n  } : update, interval, { immediate });\n  if (exposeControls) {\n    return __spreadValues$6({\n      counter,\n      reset\n    }, controls);\n  } else {\n    return counter;\n  }\n}\n\nfunction useLastChanged(source, options = {}) {\n  var _a;\n  const ms = ref((_a = options.initialValue) != null ? _a : null);\n  watch(source, () => ms.value = timestamp(), options);\n  return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n  const {\n    immediate = true\n  } = options;\n  const isPending = ref(false);\n  let timer = null;\n  function clear() {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n  }\n  function stop() {\n    isPending.value = false;\n    clear();\n  }\n  function start(...args) {\n    clear();\n    isPending.value = true;\n    timer = setTimeout(() => {\n      isPending.value = false;\n      timer = null;\n      cb(...args);\n    }, resolveUnref(interval));\n  }\n  if (immediate) {\n    isPending.value = true;\n    if (isClient)\n      start();\n  }\n  tryOnScopeDispose(stop);\n  return {\n    isPending: readonly(isPending),\n    start,\n    stop\n  };\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$7.call(b, prop))\n      __defNormalProp$5(a, prop, b[prop]);\n  if (__getOwnPropSymbols$7)\n    for (var prop of __getOwnPropSymbols$7(b)) {\n      if (__propIsEnum$7.call(b, prop))\n        __defNormalProp$5(a, prop, b[prop]);\n    }\n  return a;\n};\nfunction useTimeout(interval = 1e3, options = {}) {\n  const {\n    controls: exposeControls = false,\n    callback\n  } = options;\n  const controls = useTimeoutFn(callback != null ? callback : noop, interval, options);\n  const ready = computed(() => !controls.isPending.value);\n  if (exposeControls) {\n    return __spreadValues$5({\n      ready\n    }, controls);\n  } else {\n    return ready;\n  }\n}\n\nfunction useToNumber(value, options = {}) {\n  const {\n    method = \"parseFloat\",\n    radix,\n    nanToZero\n  } = options;\n  return computed(() => {\n    let resolved = resolveUnref(value);\n    if (typeof resolved === \"string\")\n      resolved = Number[method](resolved, radix);\n    if (nanToZero && isNaN(resolved))\n      resolved = 0;\n    return resolved;\n  });\n}\n\nfunction useToString(value) {\n  return computed(() => `${resolveUnref(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n  const {\n    truthyValue = true,\n    falsyValue = false\n  } = options;\n  const valueIsRef = isRef(initialValue);\n  const _value = ref(initialValue);\n  function toggle(value) {\n    if (arguments.length) {\n      _value.value = value;\n      return _value.value;\n    } else {\n      const truthy = resolveUnref(truthyValue);\n      _value.value = _value.value === truthy ? resolveUnref(falsyValue) : truthy;\n      return _value.value;\n    }\n  }\n  if (valueIsRef)\n    return toggle;\n  else\n    return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n  let oldList = (options == null ? void 0 : options.immediate) ? [] : [\n    ...source instanceof Function ? source() : Array.isArray(source) ? source : unref(source)\n  ];\n  return watch(source, (newList, _, onCleanup) => {\n    const oldListRemains = new Array(oldList.length);\n    const added = [];\n    for (const obj of newList) {\n      let found = false;\n      for (let i = 0; i < oldList.length; i++) {\n        if (!oldListRemains[i] && obj === oldList[i]) {\n          oldListRemains[i] = true;\n          found = true;\n          break;\n        }\n      }\n      if (!found)\n        added.push(obj);\n    }\n    const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n    cb(newList, oldList, added, removed, onCleanup);\n    oldList = [...newList];\n  }, options);\n}\n\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __objRest$5 = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp$6.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols$6)\n    for (var prop of __getOwnPropSymbols$6(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum$6.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\nfunction watchWithFilter(source, cb, options = {}) {\n  const _a = options, {\n    eventFilter = bypassFilter\n  } = _a, watchOptions = __objRest$5(_a, [\n    \"eventFilter\"\n  ]);\n  return watch(source, createFilterWrapper(eventFilter, cb), watchOptions);\n}\n\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __objRest$4 = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp$5.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols$5)\n    for (var prop of __getOwnPropSymbols$5(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum$5.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\nfunction watchAtMost(source, cb, options) {\n  const _a = options, {\n    count\n  } = _a, watchOptions = __objRest$4(_a, [\n    \"count\"\n  ]);\n  const current = ref(0);\n  const stop = watchWithFilter(source, (...args) => {\n    current.value += 1;\n    if (current.value >= resolveUnref(count))\n      nextTick(() => stop());\n    cb(...args);\n  }, watchOptions);\n  return { count: current, stop };\n}\n\nvar __defProp$4 = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$4.call(b, prop))\n      __defNormalProp$4(a, prop, b[prop]);\n  if (__getOwnPropSymbols$4)\n    for (var prop of __getOwnPropSymbols$4(b)) {\n      if (__propIsEnum$4.call(b, prop))\n        __defNormalProp$4(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nvar __objRest$3 = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols$4)\n    for (var prop of __getOwnPropSymbols$4(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\nfunction watchDebounced(source, cb, options = {}) {\n  const _a = options, {\n    debounce = 0,\n    maxWait = void 0\n  } = _a, watchOptions = __objRest$3(_a, [\n    \"debounce\",\n    \"maxWait\"\n  ]);\n  return watchWithFilter(source, cb, __spreadProps$4(__spreadValues$4({}, watchOptions), {\n    eventFilter: debounceFilter(debounce, { maxWait })\n  }));\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$3.call(b, prop))\n      __defNormalProp$3(a, prop, b[prop]);\n  if (__getOwnPropSymbols$3)\n    for (var prop of __getOwnPropSymbols$3(b)) {\n      if (__propIsEnum$3.call(b, prop))\n        __defNormalProp$3(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nvar __objRest$2 = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp$3.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols$3)\n    for (var prop of __getOwnPropSymbols$3(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum$3.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\nfunction watchIgnorable(source, cb, options = {}) {\n  const _a = options, {\n    eventFilter = bypassFilter\n  } = _a, watchOptions = __objRest$2(_a, [\n    \"eventFilter\"\n  ]);\n  const filteredCb = createFilterWrapper(eventFilter, cb);\n  let ignoreUpdates;\n  let ignorePrevAsyncUpdates;\n  let stop;\n  if (watchOptions.flush === \"sync\") {\n    const ignore = ref(false);\n    ignorePrevAsyncUpdates = () => {\n    };\n    ignoreUpdates = (updater) => {\n      ignore.value = true;\n      updater();\n      ignore.value = false;\n    };\n    stop = watch(source, (...args) => {\n      if (!ignore.value)\n        filteredCb(...args);\n    }, watchOptions);\n  } else {\n    const disposables = [];\n    const ignoreCounter = ref(0);\n    const syncCounter = ref(0);\n    ignorePrevAsyncUpdates = () => {\n      ignoreCounter.value = syncCounter.value;\n    };\n    disposables.push(watch(source, () => {\n      syncCounter.value++;\n    }, __spreadProps$3(__spreadValues$3({}, watchOptions), { flush: \"sync\" })));\n    ignoreUpdates = (updater) => {\n      const syncCounterPrev = syncCounter.value;\n      updater();\n      ignoreCounter.value += syncCounter.value - syncCounterPrev;\n    };\n    disposables.push(watch(source, (...args) => {\n      const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n      ignoreCounter.value = 0;\n      syncCounter.value = 0;\n      if (ignore)\n        return;\n      filteredCb(...args);\n    }, watchOptions));\n    stop = () => {\n      disposables.forEach((fn) => fn());\n    };\n  }\n  return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchOnce(source, cb, options) {\n  const stop = watch(source, (...args) => {\n    nextTick(() => stop());\n    return cb(...args);\n  }, options);\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$2.call(b, prop))\n      __defNormalProp$2(a, prop, b[prop]);\n  if (__getOwnPropSymbols$2)\n    for (var prop of __getOwnPropSymbols$2(b)) {\n      if (__propIsEnum$2.call(b, prop))\n        __defNormalProp$2(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nvar __objRest$1 = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols$2)\n    for (var prop of __getOwnPropSymbols$2(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\nfunction watchPausable(source, cb, options = {}) {\n  const _a = options, {\n    eventFilter: filter\n  } = _a, watchOptions = __objRest$1(_a, [\n    \"eventFilter\"\n  ]);\n  const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n  const stop = watchWithFilter(source, cb, __spreadProps$2(__spreadValues$2({}, watchOptions), {\n    eventFilter\n  }));\n  return { stop, pause, resume, isActive };\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$1.call(b, prop))\n      __defNormalProp$1(a, prop, b[prop]);\n  if (__getOwnPropSymbols$1)\n    for (var prop of __getOwnPropSymbols$1(b)) {\n      if (__propIsEnum$1.call(b, prop))\n        __defNormalProp$1(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nvar __objRest = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols$1)\n    for (var prop of __getOwnPropSymbols$1(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\nfunction watchThrottled(source, cb, options = {}) {\n  const _a = options, {\n    throttle = 0,\n    trailing = true,\n    leading = true\n  } = _a, watchOptions = __objRest(_a, [\n    \"throttle\",\n    \"trailing\",\n    \"leading\"\n  ]);\n  return watchWithFilter(source, cb, __spreadProps$1(__spreadValues$1({}, watchOptions), {\n    eventFilter: throttleFilter(throttle, trailing, leading)\n  }));\n}\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction watchTriggerable(source, cb, options = {}) {\n  let cleanupFn;\n  function onEffect() {\n    if (!cleanupFn)\n      return;\n    const fn = cleanupFn;\n    cleanupFn = void 0;\n    fn();\n  }\n  function onCleanup(callback) {\n    cleanupFn = callback;\n  }\n  const _cb = (value, oldValue) => {\n    onEffect();\n    return cb(value, oldValue, onCleanup);\n  };\n  const res = watchIgnorable(source, _cb, options);\n  const { ignoreUpdates } = res;\n  const trigger = () => {\n    let res2;\n    ignoreUpdates(() => {\n      res2 = _cb(getWatchSources(source), getOldValue(source));\n    });\n    return res2;\n  };\n  return __spreadProps(__spreadValues({}, res), {\n    trigger\n  });\n}\nfunction getWatchSources(sources) {\n  if (isReactive(sources))\n    return sources;\n  if (Array.isArray(sources))\n    return sources.map((item) => getOneWatchSource(item));\n  return getOneWatchSource(sources);\n}\nfunction getOneWatchSource(source) {\n  return typeof source === \"function\" ? source() : unref(source);\n}\nfunction getOldValue(source) {\n  return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n  return watch(source, (v, ov, onInvalidate) => {\n    if (v)\n      cb(v, ov, onInvalidate);\n  }, options);\n}\n\nexport { __onlyVue27Plus, __onlyVue3, assert, refAutoReset as autoResetRef, bypassFilter, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, hasOwn, identity, watchIgnorable as ignorableWatch, increaseWithUnit, invoke, isBoolean, isClient, isDef, isDefined, isFunction, isIOS, isNumber, isObject, isString, isWindow, makeDestructurable, noop, normalizeDate, now, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRefs, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchIgnorable, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import { noop, resolveUnref, isClient, isString, tryOnScopeDispose, isIOS, tryOnMounted, computedWithControl, promiseTimeout, isFunction, resolveRef, increaseWithUnit, useTimeoutFn, pausableWatch, createEventHook, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, createSingletonPromise, toRefs, containsProp, until, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, isObject, isNumber, useIntervalFn, clamp, syncRef, objectPick, tryOnUnmounted, watchWithFilter, identity, isDef } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, shallowRef, watchEffect, computed, inject, unref, watch, getCurrentInstance, customRef, onUpdated, reactive, nextTick, onMounted, markRaw, readonly, getCurrentScope, isVue2, set, del, isReadonly, onBeforeUpdate } from 'vue-demi';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n  let options;\n  if (isRef(optionsOrRef)) {\n    options = {\n      evaluating: optionsOrRef\n    };\n  } else {\n    options = optionsOrRef || {};\n  }\n  const {\n    lazy = false,\n    evaluating = void 0,\n    shallow = false,\n    onError = noop\n  } = options;\n  const started = ref(!lazy);\n  const current = shallow ? shallowRef(initialState) : ref(initialState);\n  let counter = 0;\n  watchEffect(async (onInvalidate) => {\n    if (!started.value)\n      return;\n    counter++;\n    const counterAtBeginning = counter;\n    let hasFinished = false;\n    if (evaluating) {\n      Promise.resolve().then(() => {\n        evaluating.value = true;\n      });\n    }\n    try {\n      const result = await evaluationCallback((cancelCallback) => {\n        onInvalidate(() => {\n          if (evaluating)\n            evaluating.value = false;\n          if (!hasFinished)\n            cancelCallback();\n        });\n      });\n      if (counterAtBeginning === counter)\n        current.value = result;\n    } catch (e) {\n      onError(e);\n    } finally {\n      if (evaluating && counterAtBeginning === counter)\n        evaluating.value = false;\n      hasFinished = true;\n    }\n  });\n  if (lazy) {\n    return computed(() => {\n      started.value = true;\n      return current.value;\n    });\n  } else {\n    return current;\n  }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n  let source = inject(key);\n  if (defaultSource)\n    source = inject(key, defaultSource);\n  if (treatDefaultAsFactory)\n    source = inject(key, defaultSource, treatDefaultAsFactory);\n  if (typeof options === \"function\") {\n    return computed((ctx) => options(source, ctx));\n  } else {\n    return computed({\n      get: (ctx) => options.get(source, ctx),\n      set: options.set\n    });\n  }\n}\n\nconst createUnrefFn = (fn) => {\n  return function(...args) {\n    return fn.apply(this, args.map((i) => unref(i)));\n  };\n};\n\nfunction unrefElement(elRef) {\n  var _a;\n  const plain = resolveUnref(elRef);\n  return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction useEventListener(...args) {\n  let target;\n  let events;\n  let listeners;\n  let options;\n  if (isString(args[0]) || Array.isArray(args[0])) {\n    [events, listeners, options] = args;\n    target = defaultWindow;\n  } else {\n    [target, events, listeners, options] = args;\n  }\n  if (!target)\n    return noop;\n  if (!Array.isArray(events))\n    events = [events];\n  if (!Array.isArray(listeners))\n    listeners = [listeners];\n  const cleanups = [];\n  const cleanup = () => {\n    cleanups.forEach((fn) => fn());\n    cleanups.length = 0;\n  };\n  const register = (el, event, listener, options2) => {\n    el.addEventListener(event, listener, options2);\n    return () => el.removeEventListener(event, listener, options2);\n  };\n  const stopWatch = watch(() => [unrefElement(target), resolveUnref(options)], ([el, options2]) => {\n    cleanup();\n    if (!el)\n      return;\n    cleanups.push(...events.flatMap((event) => {\n      return listeners.map((listener) => register(el, event, listener, options2));\n    }));\n  }, { immediate: true, flush: \"post\" });\n  const stop = () => {\n    stopWatch();\n    cleanup();\n  };\n  tryOnScopeDispose(stop);\n  return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n  const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n  if (!window)\n    return;\n  if (isIOS && !_iOSWorkaround) {\n    _iOSWorkaround = true;\n    Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n  }\n  let shouldListen = true;\n  const shouldIgnore = (event) => {\n    return ignore.some((target2) => {\n      if (typeof target2 === \"string\") {\n        return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n      } else {\n        const el = unrefElement(target2);\n        return el && (event.target === el || event.composedPath().includes(el));\n      }\n    });\n  };\n  const listener = (event) => {\n    const el = unrefElement(target);\n    if (!el || el === event.target || event.composedPath().includes(el))\n      return;\n    if (event.detail === 0)\n      shouldListen = !shouldIgnore(event);\n    if (!shouldListen) {\n      shouldListen = true;\n      return;\n    }\n    handler(event);\n  };\n  const cleanup = [\n    useEventListener(window, \"click\", listener, { passive: true, capture }),\n    useEventListener(window, \"pointerdown\", (e) => {\n      const el = unrefElement(target);\n      if (el)\n        shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e);\n    }, { passive: true }),\n    detectIframe && useEventListener(window, \"blur\", (event) => {\n      var _a;\n      const el = unrefElement(target);\n      if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement)))\n        handler(event);\n    })\n  ].filter(Boolean);\n  const stop = () => cleanup.forEach((fn) => fn());\n  return stop;\n}\n\nvar __defProp$n = Object.defineProperty;\nvar __defProps$9 = Object.defineProperties;\nvar __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$p = Object.getOwnPropertySymbols;\nvar __hasOwnProp$p = Object.prototype.hasOwnProperty;\nvar __propIsEnum$p = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$n = (obj, key, value) => key in obj ? __defProp$n(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$n = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$p.call(b, prop))\n      __defNormalProp$n(a, prop, b[prop]);\n  if (__getOwnPropSymbols$p)\n    for (var prop of __getOwnPropSymbols$p(b)) {\n      if (__propIsEnum$p.call(b, prop))\n        __defNormalProp$n(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));\nconst createKeyPredicate = (keyFilter) => {\n  if (typeof keyFilter === \"function\")\n    return keyFilter;\n  else if (typeof keyFilter === \"string\")\n    return (event) => event.key === keyFilter;\n  else if (Array.isArray(keyFilter))\n    return (event) => keyFilter.includes(event.key);\n  return () => true;\n};\nfunction onKeyStroke(...args) {\n  let key;\n  let handler;\n  let options = {};\n  if (args.length === 3) {\n    key = args[0];\n    handler = args[1];\n    options = args[2];\n  } else if (args.length === 2) {\n    if (typeof args[1] === \"object\") {\n      key = true;\n      handler = args[0];\n      options = args[1];\n    } else {\n      key = args[0];\n      handler = args[1];\n    }\n  } else {\n    key = true;\n    handler = args[0];\n  }\n  const { target = defaultWindow, eventName = \"keydown\", passive = false } = options;\n  const predicate = createKeyPredicate(key);\n  const listener = (e) => {\n    if (predicate(e))\n      handler(e);\n  };\n  return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n  return onKeyStroke(key, handler, __spreadProps$9(__spreadValues$n({}, options), { eventName: \"keydown\" }));\n}\nfunction onKeyPressed(key, handler, options = {}) {\n  return onKeyStroke(key, handler, __spreadProps$9(__spreadValues$n({}, options), { eventName: \"keypress\" }));\n}\nfunction onKeyUp(key, handler, options = {}) {\n  return onKeyStroke(key, handler, __spreadProps$9(__spreadValues$n({}, options), { eventName: \"keyup\" }));\n}\n\nconst DEFAULT_DELAY = 500;\nfunction onLongPress(target, handler, options) {\n  var _a, _b;\n  const elementRef = computed(() => unrefElement(target));\n  let timeout;\n  function clear() {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = void 0;\n    }\n  }\n  function onDown(ev) {\n    var _a2, _b2, _c, _d;\n    if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n      return;\n    clear();\n    if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n      ev.preventDefault();\n    if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n      ev.stopPropagation();\n    timeout = setTimeout(() => handler(ev), (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY);\n  }\n  const listenerOptions = {\n    capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n    once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n  };\n  useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions);\n  useEventListener(elementRef, \"pointerup\", clear, listenerOptions);\n  useEventListener(elementRef, \"pointerleave\", clear, listenerOptions);\n}\n\nconst isFocusedElementEditable = () => {\n  const { activeElement, body } = document;\n  if (!activeElement)\n    return false;\n  if (activeElement === body)\n    return false;\n  switch (activeElement.tagName) {\n    case \"INPUT\":\n    case \"TEXTAREA\":\n      return true;\n  }\n  return activeElement.hasAttribute(\"contenteditable\");\n};\nconst isTypedCharValid = ({\n  keyCode,\n  metaKey,\n  ctrlKey,\n  altKey\n}) => {\n  if (metaKey || ctrlKey || altKey)\n    return false;\n  if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105)\n    return true;\n  if (keyCode >= 65 && keyCode <= 90)\n    return true;\n  return false;\n};\nfunction onStartTyping(callback, options = {}) {\n  const { document: document2 = defaultDocument } = options;\n  const keydown = (event) => {\n    !isFocusedElementEditable() && isTypedCharValid(event) && callback(event);\n  };\n  if (document2)\n    useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n  const instance = getCurrentInstance();\n  let _trigger = () => {\n  };\n  const element = customRef((track, trigger) => {\n    _trigger = trigger;\n    return {\n      get() {\n        var _a, _b;\n        track();\n        return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n      },\n      set() {\n      }\n    };\n  });\n  tryOnMounted(_trigger);\n  onUpdated(_trigger);\n  return element;\n}\n\nfunction useActiveElement(options = {}) {\n  var _a;\n  const { window = defaultWindow } = options;\n  const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n  const activeElement = computedWithControl(() => null, () => document == null ? void 0 : document.activeElement);\n  if (window) {\n    useEventListener(window, \"blur\", (event) => {\n      if (event.relatedTarget !== null)\n        return;\n      activeElement.trigger();\n    }, true);\n    useEventListener(window, \"focus\", activeElement.trigger, true);\n  }\n  return activeElement;\n}\n\nfunction useAsyncQueue(tasks, options = {}) {\n  const {\n    interrupt = true,\n    onError = noop,\n    onFinished = noop\n  } = options;\n  const promiseState = {\n    pending: \"pending\",\n    rejected: \"rejected\",\n    fulfilled: \"fulfilled\"\n  };\n  const initialResult = Array.from(new Array(tasks.length), () => ({ state: promiseState.pending, data: null }));\n  const result = reactive(initialResult);\n  const activeIndex = ref(-1);\n  if (!tasks || tasks.length === 0) {\n    onFinished();\n    return {\n      activeIndex,\n      result\n    };\n  }\n  function updateResult(state, res) {\n    activeIndex.value++;\n    result[activeIndex.value].data = res;\n    result[activeIndex.value].state = state;\n  }\n  tasks.reduce((prev, curr) => {\n    return prev.then((prevRes) => {\n      var _a;\n      if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n        onFinished();\n        return;\n      }\n      return curr(prevRes).then((currentRes) => {\n        updateResult(promiseState.fulfilled, currentRes);\n        activeIndex.value === tasks.length - 1 && onFinished();\n        return currentRes;\n      });\n    }).catch((e) => {\n      updateResult(promiseState.rejected, e);\n      onError();\n      return e;\n    });\n  }, Promise.resolve());\n  return {\n    activeIndex,\n    result\n  };\n}\n\nfunction useAsyncState(promise, initialState, options) {\n  const {\n    immediate = true,\n    delay = 0,\n    onError = noop,\n    onSuccess = noop,\n    resetOnExecute = true,\n    shallow = true,\n    throwError\n  } = options != null ? options : {};\n  const state = shallow ? shallowRef(initialState) : ref(initialState);\n  const isReady = ref(false);\n  const isLoading = ref(false);\n  const error = ref(void 0);\n  async function execute(delay2 = 0, ...args) {\n    if (resetOnExecute)\n      state.value = initialState;\n    error.value = void 0;\n    isReady.value = false;\n    isLoading.value = true;\n    if (delay2 > 0)\n      await promiseTimeout(delay2);\n    const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n    try {\n      const data = await _promise;\n      state.value = data;\n      isReady.value = true;\n      onSuccess(data);\n    } catch (e) {\n      error.value = e;\n      onError(e);\n      if (throwError)\n        throw error;\n    } finally {\n      isLoading.value = false;\n    }\n    return state.value;\n  }\n  if (immediate)\n    execute(delay);\n  return {\n    state,\n    isReady,\n    isLoading,\n    error,\n    execute\n  };\n}\n\nconst defaults = {\n  array: (v) => JSON.stringify(v),\n  object: (v) => JSON.stringify(v),\n  set: (v) => JSON.stringify(Array.from(v)),\n  map: (v) => JSON.stringify(Object.fromEntries(v)),\n  null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n  if (!target)\n    return defaults.null;\n  if (target instanceof Map)\n    return defaults.map;\n  else if (target instanceof Set)\n    return defaults.set;\n  else if (Array.isArray(target))\n    return defaults.array;\n  else\n    return defaults.object;\n}\n\nfunction useBase64(target, options) {\n  const base64 = ref(\"\");\n  const promise = ref();\n  function execute() {\n    if (!isClient)\n      return;\n    promise.value = new Promise((resolve, reject) => {\n      try {\n        const _target = resolveUnref(target);\n        if (_target == null) {\n          resolve(\"\");\n        } else if (typeof _target === \"string\") {\n          resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n        } else if (_target instanceof Blob) {\n          resolve(blobToBase64(_target));\n        } else if (_target instanceof ArrayBuffer) {\n          resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n        } else if (_target instanceof HTMLCanvasElement) {\n          resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n        } else if (_target instanceof HTMLImageElement) {\n          const img = _target.cloneNode(false);\n          img.crossOrigin = \"Anonymous\";\n          imgLoaded(img).then(() => {\n            const canvas = document.createElement(\"canvas\");\n            const ctx = canvas.getContext(\"2d\");\n            canvas.width = img.width;\n            canvas.height = img.height;\n            ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n            resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n          }).catch(reject);\n        } else if (typeof _target === \"object\") {\n          const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n          const serialized = _serializeFn(_target);\n          return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n        } else {\n          reject(new Error(\"target is unsupported types\"));\n        }\n      } catch (error) {\n        reject(error);\n      }\n    });\n    promise.value.then((res) => base64.value = res);\n    return promise.value;\n  }\n  if (isRef(target) || isFunction(target))\n    watch(target, execute, { immediate: true });\n  else\n    execute();\n  return {\n    base64,\n    promise,\n    execute\n  };\n}\nfunction imgLoaded(img) {\n  return new Promise((resolve, reject) => {\n    if (!img.complete) {\n      img.onload = () => {\n        resolve();\n      };\n      img.onerror = reject;\n    } else {\n      resolve();\n    }\n  });\n}\nfunction blobToBase64(blob) {\n  return new Promise((resolve, reject) => {\n    const fr = new FileReader();\n    fr.onload = (e) => {\n      resolve(e.target.result);\n    };\n    fr.onerror = reject;\n    fr.readAsDataURL(blob);\n  });\n}\n\nfunction useSupported(callback, sync = false) {\n  const isSupported = ref();\n  const update = () => isSupported.value = Boolean(callback());\n  update();\n  tryOnMounted(update, sync);\n  return isSupported;\n}\n\nfunction useBattery({ navigator = defaultNavigator } = {}) {\n  const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n  const isSupported = useSupported(() => navigator && \"getBattery\" in navigator);\n  const charging = ref(false);\n  const chargingTime = ref(0);\n  const dischargingTime = ref(0);\n  const level = ref(1);\n  let battery;\n  function updateBatteryInfo() {\n    charging.value = this.charging;\n    chargingTime.value = this.chargingTime || 0;\n    dischargingTime.value = this.dischargingTime || 0;\n    level.value = this.level;\n  }\n  if (isSupported.value) {\n    navigator.getBattery().then((_battery) => {\n      battery = _battery;\n      updateBatteryInfo.call(battery);\n      for (const event of events)\n        useEventListener(battery, event, updateBatteryInfo, { passive: true });\n    });\n  }\n  return {\n    isSupported,\n    charging,\n    chargingTime,\n    dischargingTime,\n    level\n  };\n}\n\nfunction useBluetooth(options) {\n  let {\n    acceptAllDevices = false\n  } = options || {};\n  const {\n    filters = void 0,\n    optionalServices = void 0,\n    navigator = defaultNavigator\n  } = options || {};\n  const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n  const device = shallowRef(void 0);\n  const error = shallowRef(null);\n  watch(device, () => {\n    connectToBluetoothGATTServer();\n  });\n  async function requestDevice() {\n    if (!isSupported.value)\n      return;\n    error.value = null;\n    if (filters && filters.length > 0)\n      acceptAllDevices = false;\n    try {\n      device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n        acceptAllDevices,\n        filters,\n        optionalServices\n      }));\n    } catch (err) {\n      error.value = err;\n    }\n  }\n  const server = ref();\n  const isConnected = computed(() => {\n    var _a;\n    return ((_a = server.value) == null ? void 0 : _a.connected) || false;\n  });\n  async function connectToBluetoothGATTServer() {\n    error.value = null;\n    if (device.value && device.value.gatt) {\n      device.value.addEventListener(\"gattserverdisconnected\", () => {\n      });\n      try {\n        server.value = await device.value.gatt.connect();\n      } catch (err) {\n        error.value = err;\n      }\n    }\n  }\n  tryOnMounted(() => {\n    var _a;\n    if (device.value)\n      (_a = device.value.gatt) == null ? void 0 : _a.connect();\n  });\n  tryOnScopeDispose(() => {\n    var _a;\n    if (device.value)\n      (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n  });\n  return {\n    isSupported,\n    isConnected,\n    device,\n    requestDevice,\n    server,\n    error\n  };\n}\n\nfunction useMediaQuery(query, options = {}) {\n  const { window = defaultWindow } = options;\n  const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n  let mediaQuery;\n  const matches = ref(false);\n  const cleanup = () => {\n    if (!mediaQuery)\n      return;\n    if (\"removeEventListener\" in mediaQuery)\n      mediaQuery.removeEventListener(\"change\", update);\n    else\n      mediaQuery.removeListener(update);\n  };\n  const update = () => {\n    if (!isSupported.value)\n      return;\n    cleanup();\n    mediaQuery = window.matchMedia(resolveRef(query).value);\n    matches.value = mediaQuery.matches;\n    if (\"addEventListener\" in mediaQuery)\n      mediaQuery.addEventListener(\"change\", update);\n    else\n      mediaQuery.addListener(update);\n  };\n  watchEffect(update);\n  tryOnScopeDispose(() => cleanup());\n  return matches;\n}\n\nconst breakpointsTailwind = {\n  \"sm\": 640,\n  \"md\": 768,\n  \"lg\": 1024,\n  \"xl\": 1280,\n  \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200,\n  xxl: 1400\n};\nconst breakpointsVuetify = {\n  xs: 600,\n  sm: 960,\n  md: 1264,\n  lg: 1904\n};\nconst breakpointsAntDesign = {\n  xs: 480,\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200,\n  xxl: 1600\n};\nconst breakpointsQuasar = {\n  xs: 600,\n  sm: 1024,\n  md: 1440,\n  lg: 1920\n};\nconst breakpointsSematic = {\n  mobileS: 320,\n  mobileM: 375,\n  mobileL: 425,\n  tablet: 768,\n  laptop: 1024,\n  laptopL: 1440,\n  desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n  \"3xs\": 360,\n  \"2xs\": 480,\n  \"xs\": 600,\n  \"sm\": 768,\n  \"md\": 1024,\n  \"lg\": 1280,\n  \"xl\": 1440,\n  \"2xl\": 1600,\n  \"3xl\": 1920,\n  \"4xl\": 2560\n};\n\nvar __defProp$m = Object.defineProperty;\nvar __getOwnPropSymbols$o = Object.getOwnPropertySymbols;\nvar __hasOwnProp$o = Object.prototype.hasOwnProperty;\nvar __propIsEnum$o = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$m = (obj, key, value) => key in obj ? __defProp$m(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$m = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$o.call(b, prop))\n      __defNormalProp$m(a, prop, b[prop]);\n  if (__getOwnPropSymbols$o)\n    for (var prop of __getOwnPropSymbols$o(b)) {\n      if (__propIsEnum$o.call(b, prop))\n        __defNormalProp$m(a, prop, b[prop]);\n    }\n  return a;\n};\nfunction useBreakpoints(breakpoints, options = {}) {\n  function getValue(k, delta) {\n    let v = breakpoints[k];\n    if (delta != null)\n      v = increaseWithUnit(v, delta);\n    if (typeof v === \"number\")\n      v = `${v}px`;\n    return v;\n  }\n  const { window = defaultWindow } = options;\n  function match(query) {\n    if (!window)\n      return false;\n    return window.matchMedia(query).matches;\n  }\n  const greaterOrEqual = (k) => {\n    return useMediaQuery(`(min-width: ${getValue(k)})`, options);\n  };\n  const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n    Object.defineProperty(shortcuts, k, {\n      get: () => greaterOrEqual(k),\n      enumerable: true,\n      configurable: true\n    });\n    return shortcuts;\n  }, {});\n  return __spreadValues$m({\n    greater(k) {\n      return useMediaQuery(`(min-width: ${getValue(k, 0.1)})`, options);\n    },\n    greaterOrEqual,\n    smaller(k) {\n      return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, options);\n    },\n    smallerOrEqual(k) {\n      return useMediaQuery(`(max-width: ${getValue(k)})`, options);\n    },\n    between(a, b) {\n      return useMediaQuery(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n    },\n    isGreater(k) {\n      return match(`(min-width: ${getValue(k, 0.1)})`);\n    },\n    isGreaterOrEqual(k) {\n      return match(`(min-width: ${getValue(k)})`);\n    },\n    isSmaller(k) {\n      return match(`(max-width: ${getValue(k, -0.1)})`);\n    },\n    isSmallerOrEqual(k) {\n      return match(`(max-width: ${getValue(k)})`);\n    },\n    isInBetween(a, b) {\n      return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n    }\n  }, shortcutMethods);\n}\n\nconst useBroadcastChannel = (options) => {\n  const {\n    name,\n    window = defaultWindow\n  } = options;\n  const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n  const isClosed = ref(false);\n  const channel = ref();\n  const data = ref();\n  const error = ref(null);\n  const post = (data2) => {\n    if (channel.value)\n      channel.value.postMessage(data2);\n  };\n  const close = () => {\n    if (channel.value)\n      channel.value.close();\n    isClosed.value = true;\n  };\n  if (isSupported.value) {\n    tryOnMounted(() => {\n      error.value = null;\n      channel.value = new BroadcastChannel(name);\n      channel.value.addEventListener(\"message\", (e) => {\n        data.value = e.data;\n      }, { passive: true });\n      channel.value.addEventListener(\"messageerror\", (e) => {\n        error.value = e;\n      }, { passive: true });\n      channel.value.addEventListener(\"close\", () => {\n        isClosed.value = true;\n      });\n    });\n  }\n  tryOnScopeDispose(() => {\n    close();\n  });\n  return {\n    isSupported,\n    channel,\n    data,\n    post,\n    close,\n    error,\n    isClosed\n  };\n};\n\nfunction useBrowserLocation({ window = defaultWindow } = {}) {\n  const buildState = (trigger) => {\n    const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n    const { hash, host, hostname, href, origin, pathname, port, protocol, search } = (window == null ? void 0 : window.location) || {};\n    return {\n      trigger,\n      state: state2,\n      length,\n      hash,\n      host,\n      hostname,\n      href,\n      origin,\n      pathname,\n      port,\n      protocol,\n      search\n    };\n  };\n  const state = ref(buildState(\"load\"));\n  if (window) {\n    useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), { passive: true });\n    useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), { passive: true });\n  }\n  return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, watchOptions) {\n  const cachedValue = ref(refValue.value);\n  watch(() => refValue.value, (value) => {\n    if (!comparator(value, cachedValue.value))\n      cachedValue.value = value;\n  }, watchOptions);\n  return cachedValue;\n}\n\nfunction useClipboard(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    read = false,\n    source,\n    copiedDuring = 1500,\n    legacy = false\n  } = options;\n  const events = [\"copy\", \"cut\"];\n  const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n  const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n  const text = ref(\"\");\n  const copied = ref(false);\n  const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n  function updateText() {\n    if (isClipboardApiSupported.value) {\n      navigator.clipboard.readText().then((value) => {\n        text.value = value;\n      });\n    } else {\n      text.value = legacyRead();\n    }\n  }\n  if (isSupported.value && read) {\n    for (const event of events)\n      useEventListener(event, updateText);\n  }\n  async function copy(value = resolveUnref(source)) {\n    if (isSupported.value && value != null) {\n      if (isClipboardApiSupported.value)\n        await navigator.clipboard.writeText(value);\n      else\n        legacyCopy(value);\n      text.value = value;\n      copied.value = true;\n      timeout.start();\n    }\n  }\n  function legacyCopy(value) {\n    const ta = document.createElement(\"textarea\");\n    ta.value = value != null ? value : \"\";\n    ta.style.position = \"absolute\";\n    ta.style.opacity = \"0\";\n    document.body.appendChild(ta);\n    ta.select();\n    document.execCommand(\"copy\");\n    ta.remove();\n  }\n  function legacyRead() {\n    var _a, _b, _c;\n    return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n  }\n  return {\n    isSupported,\n    text,\n    copied,\n    copy\n  };\n}\n\nvar __defProp$l = Object.defineProperty;\nvar __defProps$8 = Object.defineProperties;\nvar __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$n = Object.getOwnPropertySymbols;\nvar __hasOwnProp$n = Object.prototype.hasOwnProperty;\nvar __propIsEnum$n = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$l = (obj, key, value) => key in obj ? __defProp$l(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$l = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$n.call(b, prop))\n      __defNormalProp$l(a, prop, b[prop]);\n  if (__getOwnPropSymbols$n)\n    for (var prop of __getOwnPropSymbols$n(b)) {\n      if (__propIsEnum$n.call(b, prop))\n        __defNormalProp$l(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));\nfunction cloneFnJSON(source) {\n  return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n  const cloned = ref({});\n  const {\n    manual,\n    clone = cloneFnJSON,\n    deep = true,\n    immediate = true\n  } = options;\n  function sync() {\n    cloned.value = clone(unref(source));\n  }\n  if (!manual && isRef(source)) {\n    watch(source, sync, __spreadProps$8(__spreadValues$l({}, options), {\n      deep,\n      immediate\n    }));\n  } else {\n    sync();\n  }\n  return { cloned, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\n_global[globalKey] = _global[globalKey] || {};\nconst handlers = _global[globalKey];\nfunction getSSRHandler(key, fallback) {\n  return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n  handlers[key] = fn;\n}\n\nfunction guessSerializerType(rawInit) {\n  return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nvar __defProp$k = Object.defineProperty;\nvar __getOwnPropSymbols$m = Object.getOwnPropertySymbols;\nvar __hasOwnProp$m = Object.prototype.hasOwnProperty;\nvar __propIsEnum$m = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$k = (obj, key, value) => key in obj ? __defProp$k(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$k = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$m.call(b, prop))\n      __defNormalProp$k(a, prop, b[prop]);\n  if (__getOwnPropSymbols$m)\n    for (var prop of __getOwnPropSymbols$m(b)) {\n      if (__propIsEnum$m.call(b, prop))\n        __defNormalProp$k(a, prop, b[prop]);\n    }\n  return a;\n};\nconst StorageSerializers = {\n  boolean: {\n    read: (v) => v === \"true\",\n    write: (v) => String(v)\n  },\n  object: {\n    read: (v) => JSON.parse(v),\n    write: (v) => JSON.stringify(v)\n  },\n  number: {\n    read: (v) => Number.parseFloat(v),\n    write: (v) => String(v)\n  },\n  any: {\n    read: (v) => v,\n    write: (v) => String(v)\n  },\n  string: {\n    read: (v) => v,\n    write: (v) => String(v)\n  },\n  map: {\n    read: (v) => new Map(JSON.parse(v)),\n    write: (v) => JSON.stringify(Array.from(v.entries()))\n  },\n  set: {\n    read: (v) => new Set(JSON.parse(v)),\n    write: (v) => JSON.stringify(Array.from(v))\n  },\n  date: {\n    read: (v) => new Date(v),\n    write: (v) => v.toISOString()\n  }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n  var _a;\n  const {\n    flush = \"pre\",\n    deep = true,\n    listenToStorageChanges = true,\n    writeDefaults = true,\n    mergeDefaults = false,\n    shallow,\n    window = defaultWindow,\n    eventFilter,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = options;\n  const data = (shallow ? shallowRef : ref)(defaults);\n  if (!storage) {\n    try {\n      storage = getSSRHandler(\"getDefaultStorage\", () => {\n        var _a2;\n        return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n      })();\n    } catch (e) {\n      onError(e);\n    }\n  }\n  if (!storage)\n    return data;\n  const rawInit = resolveUnref(defaults);\n  const type = guessSerializerType(rawInit);\n  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n  const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(data, () => write(data.value), { flush, deep, eventFilter });\n  if (window && listenToStorageChanges) {\n    useEventListener(window, \"storage\", update);\n    useEventListener(window, customStorageEventName, updateFromCustomEvent);\n  }\n  update();\n  return data;\n  function write(v) {\n    try {\n      if (v == null) {\n        storage.removeItem(key);\n      } else {\n        const serialized = serializer.write(v);\n        const oldValue = storage.getItem(key);\n        if (oldValue !== serialized) {\n          storage.setItem(key, serialized);\n          if (window) {\n            window.dispatchEvent(new CustomEvent(customStorageEventName, {\n              detail: {\n                key,\n                oldValue,\n                newValue: serialized,\n                storageArea: storage\n              }\n            }));\n          }\n        }\n      }\n    } catch (e) {\n      onError(e);\n    }\n  }\n  function read(event) {\n    const rawValue = event ? event.newValue : storage.getItem(key);\n    if (rawValue == null) {\n      if (writeDefaults && rawInit !== null)\n        storage.setItem(key, serializer.write(rawInit));\n      return rawInit;\n    } else if (!event && mergeDefaults) {\n      const value = serializer.read(rawValue);\n      if (isFunction(mergeDefaults))\n        return mergeDefaults(value, rawInit);\n      else if (type === \"object\" && !Array.isArray(value))\n        return __spreadValues$k(__spreadValues$k({}, rawInit), value);\n      return value;\n    } else if (typeof rawValue !== \"string\") {\n      return rawValue;\n    } else {\n      return serializer.read(rawValue);\n    }\n  }\n  function updateFromCustomEvent(event) {\n    update(event.detail);\n  }\n  function update(event) {\n    if (event && event.storageArea !== storage)\n      return;\n    if (event && event.key == null) {\n      data.value = rawInit;\n      return;\n    }\n    if (event && event.key !== key)\n      return;\n    pauseWatch();\n    try {\n      data.value = read(event);\n    } catch (e) {\n      onError(e);\n    } finally {\n      if (event)\n        nextTick(resumeWatch);\n      else\n        resumeWatch();\n    }\n  }\n}\n\nfunction usePreferredDark(options) {\n  return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nvar __defProp$j = Object.defineProperty;\nvar __getOwnPropSymbols$l = Object.getOwnPropertySymbols;\nvar __hasOwnProp$l = Object.prototype.hasOwnProperty;\nvar __propIsEnum$l = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$j = (obj, key, value) => key in obj ? __defProp$j(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$j = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$l.call(b, prop))\n      __defNormalProp$j(a, prop, b[prop]);\n  if (__getOwnPropSymbols$l)\n    for (var prop of __getOwnPropSymbols$l(b)) {\n      if (__propIsEnum$l.call(b, prop))\n        __defNormalProp$j(a, prop, b[prop]);\n    }\n  return a;\n};\nfunction useColorMode(options = {}) {\n  const {\n    selector = \"html\",\n    attribute = \"class\",\n    initialValue = \"auto\",\n    window = defaultWindow,\n    storage,\n    storageKey = \"vueuse-color-scheme\",\n    listenToStorageChanges = true,\n    storageRef,\n    emitAuto\n  } = options;\n  const modes = __spreadValues$j({\n    auto: \"\",\n    light: \"light\",\n    dark: \"dark\"\n  }, options.modes || {});\n  const preferredDark = usePreferredDark({ window });\n  const preferredMode = computed(() => preferredDark.value ? \"dark\" : \"light\");\n  const store = storageRef || (storageKey == null ? ref(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n  const state = computed({\n    get() {\n      return store.value === \"auto\" && !emitAuto ? preferredMode.value : store.value;\n    },\n    set(v) {\n      store.value = v;\n    }\n  });\n  const updateHTMLAttrs = getSSRHandler(\"updateHTMLAttrs\", (selector2, attribute2, value) => {\n    const el = window == null ? void 0 : window.document.querySelector(selector2);\n    if (!el)\n      return;\n    if (attribute2 === \"class\") {\n      const current = value.split(/\\s/g);\n      Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n        if (current.includes(v))\n          el.classList.add(v);\n        else\n          el.classList.remove(v);\n      });\n    } else {\n      el.setAttribute(attribute2, value);\n    }\n  });\n  function defaultOnChanged(mode) {\n    var _a;\n    const resolvedMode = mode === \"auto\" ? preferredMode.value : mode;\n    updateHTMLAttrs(selector, attribute, (_a = modes[resolvedMode]) != null ? _a : resolvedMode);\n  }\n  function onChanged(mode) {\n    if (options.onChanged)\n      options.onChanged(mode, defaultOnChanged);\n    else\n      defaultOnChanged(mode);\n  }\n  watch(state, onChanged, { flush: \"post\", immediate: true });\n  if (emitAuto)\n    watch(preferredMode, () => onChanged(state.value), { flush: \"post\" });\n  tryOnMounted(() => onChanged(state.value));\n  return state;\n}\n\nfunction useConfirmDialog(revealed = ref(false)) {\n  const confirmHook = createEventHook();\n  const cancelHook = createEventHook();\n  const revealHook = createEventHook();\n  let _resolve = noop;\n  const reveal = (data) => {\n    revealHook.trigger(data);\n    revealed.value = true;\n    return new Promise((resolve) => {\n      _resolve = resolve;\n    });\n  };\n  const confirm = (data) => {\n    revealed.value = false;\n    confirmHook.trigger(data);\n    _resolve({ data, isCanceled: false });\n  };\n  const cancel = (data) => {\n    revealed.value = false;\n    cancelHook.trigger(data);\n    _resolve({ data, isCanceled: true });\n  };\n  return {\n    isRevealed: computed(() => revealed.value),\n    reveal,\n    confirm,\n    cancel,\n    onReveal: revealHook.on,\n    onConfirm: confirmHook.on,\n    onCancel: cancelHook.on\n  };\n}\n\nfunction useCssVar(prop, target, { window = defaultWindow, initialValue = \"\" } = {}) {\n  const variable = ref(initialValue);\n  const elRef = computed(() => {\n    var _a;\n    return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n  });\n  watch([elRef, () => resolveUnref(prop)], ([el, prop2]) => {\n    var _a;\n    if (el && window) {\n      const value = (_a = window.getComputedStyle(el).getPropertyValue(prop2)) == null ? void 0 : _a.trim();\n      variable.value = value || initialValue;\n    }\n  }, { immediate: true });\n  watch(variable, (val) => {\n    var _a;\n    if ((_a = elRef.value) == null ? void 0 : _a.style)\n      elRef.value.style.setProperty(resolveUnref(prop), val);\n  });\n  return variable;\n}\n\nfunction useCurrentElement() {\n  const vm = getCurrentInstance();\n  const currentElement = computedWithControl(() => null, () => vm.proxy.$el);\n  onUpdated(currentElement.trigger);\n  onMounted(currentElement.trigger);\n  return currentElement;\n}\n\nfunction useCycleList(list, options) {\n  var _a;\n  const state = shallowRef((_a = options == null ? void 0 : options.initialValue) != null ? _a : list[0]);\n  const index = computed({\n    get() {\n      var _a2;\n      let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, list) : list.indexOf(state.value);\n      if (index2 < 0)\n        index2 = (_a2 = options == null ? void 0 : options.fallbackIndex) != null ? _a2 : 0;\n      return index2;\n    },\n    set(v) {\n      set(v);\n    }\n  });\n  function set(i) {\n    const length = list.length;\n    const index2 = (i % length + length) % length;\n    const value = list[index2];\n    state.value = value;\n    return value;\n  }\n  function shift(delta = 1) {\n    return set(index.value + delta);\n  }\n  function next(n = 1) {\n    return shift(n);\n  }\n  function prev(n = 1) {\n    return shift(-n);\n  }\n  return {\n    state,\n    index,\n    next,\n    prev\n  };\n}\n\nvar __defProp$i = Object.defineProperty;\nvar __defProps$7 = Object.defineProperties;\nvar __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$k = Object.getOwnPropertySymbols;\nvar __hasOwnProp$k = Object.prototype.hasOwnProperty;\nvar __propIsEnum$k = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$i = (obj, key, value) => key in obj ? __defProp$i(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$i = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$k.call(b, prop))\n      __defNormalProp$i(a, prop, b[prop]);\n  if (__getOwnPropSymbols$k)\n    for (var prop of __getOwnPropSymbols$k(b)) {\n      if (__propIsEnum$k.call(b, prop))\n        __defNormalProp$i(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));\nfunction useDark(options = {}) {\n  const {\n    valueDark = \"dark\",\n    valueLight = \"\",\n    window = defaultWindow\n  } = options;\n  const mode = useColorMode(__spreadProps$7(__spreadValues$i({}, options), {\n    onChanged: (mode2, defaultHandler) => {\n      var _a;\n      if (options.onChanged)\n        (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\");\n      else\n        defaultHandler(mode2);\n    },\n    modes: {\n      dark: valueDark,\n      light: valueLight\n    }\n  }));\n  const preferredDark = usePreferredDark({ window });\n  const isDark = computed({\n    get() {\n      return mode.value === \"dark\";\n    },\n    set(v) {\n      if (v === preferredDark.value)\n        mode.value = \"auto\";\n      else\n        mode.value = v ? \"dark\" : \"light\";\n    }\n  });\n  return isDark;\n}\n\nconst fnBypass = (v) => v;\nconst fnSetSource = (source, value) => source.value = value;\nfunction defaultDump(clone) {\n  return clone ? isFunction(clone) ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n  return clone ? isFunction(clone) ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n  const {\n    clone = false,\n    dump = defaultDump(clone),\n    parse = defaultParse(clone),\n    setSource = fnSetSource\n  } = options;\n  function _createHistoryRecord() {\n    return markRaw({\n      snapshot: dump(source.value),\n      timestamp: timestamp()\n    });\n  }\n  const last = ref(_createHistoryRecord());\n  const undoStack = ref([]);\n  const redoStack = ref([]);\n  const _setSource = (record) => {\n    setSource(source, parse(record.snapshot));\n    last.value = record;\n  };\n  const commit = () => {\n    undoStack.value.unshift(last.value);\n    last.value = _createHistoryRecord();\n    if (options.capacity && undoStack.value.length > options.capacity)\n      undoStack.value.splice(options.capacity, Infinity);\n    if (redoStack.value.length)\n      redoStack.value.splice(0, redoStack.value.length);\n  };\n  const clear = () => {\n    undoStack.value.splice(0, undoStack.value.length);\n    redoStack.value.splice(0, redoStack.value.length);\n  };\n  const undo = () => {\n    const state = undoStack.value.shift();\n    if (state) {\n      redoStack.value.unshift(last.value);\n      _setSource(state);\n    }\n  };\n  const redo = () => {\n    const state = redoStack.value.shift();\n    if (state) {\n      undoStack.value.unshift(last.value);\n      _setSource(state);\n    }\n  };\n  const reset = () => {\n    _setSource(last.value);\n  };\n  const history = computed(() => [last.value, ...undoStack.value]);\n  const canUndo = computed(() => undoStack.value.length > 0);\n  const canRedo = computed(() => redoStack.value.length > 0);\n  return {\n    source,\n    undoStack,\n    redoStack,\n    last,\n    history,\n    canUndo,\n    canRedo,\n    clear,\n    commit,\n    reset,\n    undo,\n    redo\n  };\n}\n\nvar __defProp$h = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$j = Object.getOwnPropertySymbols;\nvar __hasOwnProp$j = Object.prototype.hasOwnProperty;\nvar __propIsEnum$j = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$h = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$j.call(b, prop))\n      __defNormalProp$h(a, prop, b[prop]);\n  if (__getOwnPropSymbols$j)\n    for (var prop of __getOwnPropSymbols$j(b)) {\n      if (__propIsEnum$j.call(b, prop))\n        __defNormalProp$h(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\nfunction useRefHistory(source, options = {}) {\n  const {\n    deep = false,\n    flush = \"pre\",\n    eventFilter\n  } = options;\n  const {\n    eventFilter: composedFilter,\n    pause,\n    resume: resumeTracking,\n    isActive: isTracking\n  } = pausableFilter(eventFilter);\n  const {\n    ignoreUpdates,\n    ignorePrevAsyncUpdates,\n    stop\n  } = watchIgnorable(source, commit, { deep, flush, eventFilter: composedFilter });\n  function setSource(source2, value) {\n    ignorePrevAsyncUpdates();\n    ignoreUpdates(() => {\n      source2.value = value;\n    });\n  }\n  const manualHistory = useManualRefHistory(source, __spreadProps$6(__spreadValues$h({}, options), { clone: options.clone || deep, setSource }));\n  const { clear, commit: manualCommit } = manualHistory;\n  function commit() {\n    ignorePrevAsyncUpdates();\n    manualCommit();\n  }\n  function resume(commitNow) {\n    resumeTracking();\n    if (commitNow)\n      commit();\n  }\n  function batch(fn) {\n    let canceled = false;\n    const cancel = () => canceled = true;\n    ignoreUpdates(() => {\n      fn(cancel);\n    });\n    if (!canceled)\n      commit();\n  }\n  function dispose() {\n    stop();\n    clear();\n  }\n  return __spreadProps$6(__spreadValues$h({}, manualHistory), {\n    isTracking,\n    pause,\n    resume,\n    commit,\n    batch,\n    dispose\n  });\n}\n\nvar __defProp$g = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$i = Object.getOwnPropertySymbols;\nvar __hasOwnProp$i = Object.prototype.hasOwnProperty;\nvar __propIsEnum$i = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$g = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$i.call(b, prop))\n      __defNormalProp$g(a, prop, b[prop]);\n  if (__getOwnPropSymbols$i)\n    for (var prop of __getOwnPropSymbols$i(b)) {\n      if (__propIsEnum$i.call(b, prop))\n        __defNormalProp$g(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nfunction useDebouncedRefHistory(source, options = {}) {\n  const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n  const history = useRefHistory(source, __spreadProps$5(__spreadValues$g({}, options), { eventFilter: filter }));\n  return __spreadValues$g({}, history);\n}\n\nfunction useDeviceMotion(options = {}) {\n  const {\n    window = defaultWindow,\n    eventFilter = bypassFilter\n  } = options;\n  const acceleration = ref({ x: null, y: null, z: null });\n  const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n  const interval = ref(0);\n  const accelerationIncludingGravity = ref({\n    x: null,\n    y: null,\n    z: null\n  });\n  if (window) {\n    const onDeviceMotion = createFilterWrapper(eventFilter, (event) => {\n      acceleration.value = event.acceleration;\n      accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n      rotationRate.value = event.rotationRate;\n      interval.value = event.interval;\n    });\n    useEventListener(window, \"devicemotion\", onDeviceMotion);\n  }\n  return {\n    acceleration,\n    accelerationIncludingGravity,\n    rotationRate,\n    interval\n  };\n}\n\nfunction useDeviceOrientation(options = {}) {\n  const { window = defaultWindow } = options;\n  const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n  const isAbsolute = ref(false);\n  const alpha = ref(null);\n  const beta = ref(null);\n  const gamma = ref(null);\n  if (window && isSupported.value) {\n    useEventListener(window, \"deviceorientation\", (event) => {\n      isAbsolute.value = event.absolute;\n      alpha.value = event.alpha;\n      beta.value = event.beta;\n      gamma.value = event.gamma;\n    });\n  }\n  return {\n    isSupported,\n    isAbsolute,\n    alpha,\n    beta,\n    gamma\n  };\n}\n\nfunction useDevicePixelRatio({\n  window = defaultWindow\n} = {}) {\n  const pixelRatio = ref(1);\n  if (window) {\n    let observe = function() {\n      pixelRatio.value = window.devicePixelRatio;\n      cleanup();\n      media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);\n      media.addEventListener(\"change\", observe, { once: true });\n    }, cleanup = function() {\n      media == null ? void 0 : media.removeEventListener(\"change\", observe);\n    };\n    let media;\n    observe();\n    tryOnScopeDispose(cleanup);\n  }\n  return { pixelRatio };\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n  const {\n    controls = false,\n    navigator = defaultNavigator\n  } = options;\n  const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n  let permissionStatus;\n  const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n  const state = ref();\n  const onChange = () => {\n    if (permissionStatus)\n      state.value = permissionStatus.state;\n  };\n  const query = createSingletonPromise(async () => {\n    if (!isSupported.value)\n      return;\n    if (!permissionStatus) {\n      try {\n        permissionStatus = await navigator.permissions.query(desc);\n        useEventListener(permissionStatus, \"change\", onChange);\n        onChange();\n      } catch (e) {\n        state.value = \"prompt\";\n      }\n    }\n    return permissionStatus;\n  });\n  query();\n  if (controls) {\n    return {\n      state,\n      isSupported,\n      query\n    };\n  } else {\n    return state;\n  }\n}\n\nfunction useDevicesList(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    requestPermissions = false,\n    constraints = { audio: true, video: true },\n    onUpdated\n  } = options;\n  const devices = ref([]);\n  const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n  const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n  const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n  const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n  const permissionGranted = ref(false);\n  async function update() {\n    if (!isSupported.value)\n      return;\n    devices.value = await navigator.mediaDevices.enumerateDevices();\n    onUpdated == null ? void 0 : onUpdated(devices.value);\n  }\n  async function ensurePermissions() {\n    if (!isSupported.value)\n      return false;\n    if (permissionGranted.value)\n      return true;\n    const { state, query } = usePermission(\"camera\", { controls: true });\n    await query();\n    if (state.value !== \"granted\") {\n      const stream = await navigator.mediaDevices.getUserMedia(constraints);\n      stream.getTracks().forEach((t) => t.stop());\n      update();\n      permissionGranted.value = true;\n    } else {\n      permissionGranted.value = true;\n    }\n    return permissionGranted.value;\n  }\n  if (isSupported.value) {\n    if (requestPermissions)\n      ensurePermissions();\n    useEventListener(navigator.mediaDevices, \"devicechange\", update);\n    update();\n  }\n  return {\n    devices,\n    ensurePermissions,\n    permissionGranted,\n    videoInputs,\n    audioInputs,\n    audioOutputs,\n    isSupported\n  };\n}\n\nfunction useDisplayMedia(options = {}) {\n  var _a;\n  const enabled = ref((_a = options.enabled) != null ? _a : false);\n  const video = options.video;\n  const audio = options.audio;\n  const { navigator = defaultNavigator } = options;\n  const isSupported = useSupported(() => {\n    var _a2;\n    return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n  });\n  const constraint = { audio, video };\n  const stream = shallowRef();\n  async function _start() {\n    if (!isSupported.value || stream.value)\n      return;\n    stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n    return stream.value;\n  }\n  async function _stop() {\n    var _a2;\n    (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n    stream.value = void 0;\n  }\n  function stop() {\n    _stop();\n    enabled.value = false;\n  }\n  async function start() {\n    await _start();\n    if (stream.value)\n      enabled.value = true;\n    return stream.value;\n  }\n  watch(enabled, (v) => {\n    if (v)\n      _start();\n    else\n      _stop();\n  }, { immediate: true });\n  return {\n    isSupported,\n    stream,\n    start,\n    stop,\n    enabled\n  };\n}\n\nfunction useDocumentVisibility({ document = defaultDocument } = {}) {\n  if (!document)\n    return ref(\"visible\");\n  const visibility = ref(document.visibilityState);\n  useEventListener(document, \"visibilitychange\", () => {\n    visibility.value = document.visibilityState;\n  });\n  return visibility;\n}\n\nvar __defProp$f = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$h = Object.getOwnPropertySymbols;\nvar __hasOwnProp$h = Object.prototype.hasOwnProperty;\nvar __propIsEnum$h = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$f = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$h.call(b, prop))\n      __defNormalProp$f(a, prop, b[prop]);\n  if (__getOwnPropSymbols$h)\n    for (var prop of __getOwnPropSymbols$h(b)) {\n      if (__propIsEnum$h.call(b, prop))\n        __defNormalProp$f(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nfunction useDraggable(target, options = {}) {\n  var _a, _b, _c;\n  const draggingElement = (_a = options.draggingElement) != null ? _a : defaultWindow;\n  const draggingHandle = (_b = options.handle) != null ? _b : target;\n  const position = ref((_c = resolveUnref(options.initialValue)) != null ? _c : { x: 0, y: 0 });\n  const pressedDelta = ref();\n  const filterEvent = (e) => {\n    if (options.pointerTypes)\n      return options.pointerTypes.includes(e.pointerType);\n    return true;\n  };\n  const handleEvent = (e) => {\n    if (resolveUnref(options.preventDefault))\n      e.preventDefault();\n    if (resolveUnref(options.stopPropagation))\n      e.stopPropagation();\n  };\n  const start = (e) => {\n    var _a2;\n    if (!filterEvent(e))\n      return;\n    if (resolveUnref(options.exact) && e.target !== resolveUnref(target))\n      return;\n    const rect = resolveUnref(target).getBoundingClientRect();\n    const pos = {\n      x: e.clientX - rect.left,\n      y: e.clientY - rect.top\n    };\n    if (((_a2 = options.onStart) == null ? void 0 : _a2.call(options, pos, e)) === false)\n      return;\n    pressedDelta.value = pos;\n    handleEvent(e);\n  };\n  const move = (e) => {\n    var _a2;\n    if (!filterEvent(e))\n      return;\n    if (!pressedDelta.value)\n      return;\n    position.value = {\n      x: e.clientX - pressedDelta.value.x,\n      y: e.clientY - pressedDelta.value.y\n    };\n    (_a2 = options.onMove) == null ? void 0 : _a2.call(options, position.value, e);\n    handleEvent(e);\n  };\n  const end = (e) => {\n    var _a2;\n    if (!filterEvent(e))\n      return;\n    if (!pressedDelta.value)\n      return;\n    pressedDelta.value = void 0;\n    (_a2 = options.onEnd) == null ? void 0 : _a2.call(options, position.value, e);\n    handleEvent(e);\n  };\n  if (isClient) {\n    useEventListener(draggingHandle, \"pointerdown\", start, true);\n    useEventListener(draggingElement, \"pointermove\", move, true);\n    useEventListener(draggingElement, \"pointerup\", end, true);\n  }\n  return __spreadProps$4(__spreadValues$f({}, toRefs(position)), {\n    position,\n    isDragging: computed(() => !!pressedDelta.value),\n    style: computed(() => `left:${position.value.x}px;top:${position.value.y}px;`)\n  });\n}\n\nfunction useDropZone(target, onDrop) {\n  const isOverDropZone = ref(false);\n  let counter = 0;\n  if (isClient) {\n    useEventListener(target, \"dragenter\", (event) => {\n      event.preventDefault();\n      counter += 1;\n      isOverDropZone.value = true;\n    });\n    useEventListener(target, \"dragover\", (event) => {\n      event.preventDefault();\n    });\n    useEventListener(target, \"dragleave\", (event) => {\n      event.preventDefault();\n      counter -= 1;\n      if (counter === 0)\n        isOverDropZone.value = false;\n    });\n    useEventListener(target, \"drop\", (event) => {\n      var _a, _b;\n      event.preventDefault();\n      counter = 0;\n      isOverDropZone.value = false;\n      const files = Array.from((_b = (_a = event.dataTransfer) == null ? void 0 : _a.files) != null ? _b : []);\n      onDrop == null ? void 0 : onDrop(files.length === 0 ? null : files);\n    });\n  }\n  return {\n    isOverDropZone\n  };\n}\n\nvar __getOwnPropSymbols$g = Object.getOwnPropertySymbols;\nvar __hasOwnProp$g = Object.prototype.hasOwnProperty;\nvar __propIsEnum$g = Object.prototype.propertyIsEnumerable;\nvar __objRest$2 = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp$g.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols$g)\n    for (var prop of __getOwnPropSymbols$g(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum$g.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\nfunction useResizeObserver(target, callback, options = {}) {\n  const _a = options, { window = defaultWindow } = _a, observerOptions = __objRest$2(_a, [\"window\"]);\n  let observer;\n  const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = void 0;\n    }\n  };\n  const stopWatch = watch(() => unrefElement(target), (el) => {\n    cleanup();\n    if (isSupported.value && window && el) {\n      observer = new ResizeObserver(callback);\n      observer.observe(el, observerOptions);\n    }\n  }, { immediate: true, flush: \"post\" });\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    stop\n  };\n}\n\nfunction useElementBounding(target, options = {}) {\n  const {\n    reset = true,\n    windowResize = true,\n    windowScroll = true,\n    immediate = true\n  } = options;\n  const height = ref(0);\n  const bottom = ref(0);\n  const left = ref(0);\n  const right = ref(0);\n  const top = ref(0);\n  const width = ref(0);\n  const x = ref(0);\n  const y = ref(0);\n  function update() {\n    const el = unrefElement(target);\n    if (!el) {\n      if (reset) {\n        height.value = 0;\n        bottom.value = 0;\n        left.value = 0;\n        right.value = 0;\n        top.value = 0;\n        width.value = 0;\n        x.value = 0;\n        y.value = 0;\n      }\n      return;\n    }\n    const rect = el.getBoundingClientRect();\n    height.value = rect.height;\n    bottom.value = rect.bottom;\n    left.value = rect.left;\n    right.value = rect.right;\n    top.value = rect.top;\n    width.value = rect.width;\n    x.value = rect.x;\n    y.value = rect.y;\n  }\n  useResizeObserver(target, update);\n  watch(() => unrefElement(target), (ele) => !ele && update());\n  if (windowScroll)\n    useEventListener(\"scroll\", update, { capture: true, passive: true });\n  if (windowResize)\n    useEventListener(\"resize\", update, { passive: true });\n  tryOnMounted(() => {\n    if (immediate)\n      update();\n  });\n  return {\n    height,\n    bottom,\n    left,\n    right,\n    top,\n    width,\n    x,\n    y,\n    update\n  };\n}\n\nfunction useRafFn(fn, options = {}) {\n  const {\n    immediate = true,\n    window = defaultWindow\n  } = options;\n  const isActive = ref(false);\n  let previousFrameTimestamp = 0;\n  let rafId = null;\n  function loop(timestamp) {\n    if (!isActive.value || !window)\n      return;\n    const delta = timestamp - previousFrameTimestamp;\n    fn({ delta, timestamp });\n    previousFrameTimestamp = timestamp;\n    rafId = window.requestAnimationFrame(loop);\n  }\n  function resume() {\n    if (!isActive.value && window) {\n      isActive.value = true;\n      rafId = window.requestAnimationFrame(loop);\n    }\n  }\n  function pause() {\n    isActive.value = false;\n    if (rafId != null && window) {\n      window.cancelAnimationFrame(rafId);\n      rafId = null;\n    }\n  }\n  if (immediate)\n    resume();\n  tryOnScopeDispose(pause);\n  return {\n    isActive: readonly(isActive),\n    pause,\n    resume\n  };\n}\n\nvar __defProp$e = Object.defineProperty;\nvar __getOwnPropSymbols$f = Object.getOwnPropertySymbols;\nvar __hasOwnProp$f = Object.prototype.hasOwnProperty;\nvar __propIsEnum$f = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$e = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$f.call(b, prop))\n      __defNormalProp$e(a, prop, b[prop]);\n  if (__getOwnPropSymbols$f)\n    for (var prop of __getOwnPropSymbols$f(b)) {\n      if (__propIsEnum$f.call(b, prop))\n        __defNormalProp$e(a, prop, b[prop]);\n    }\n  return a;\n};\nfunction useElementByPoint(options) {\n  const element = ref(null);\n  const { x, y, document = defaultDocument } = options;\n  const controls = useRafFn(() => {\n    element.value = (document == null ? void 0 : document.elementFromPoint(resolveUnref(x), resolveUnref(y))) || null;\n  });\n  return __spreadValues$e({\n    element\n  }, controls);\n}\n\nfunction useElementHover(el, options = {}) {\n  const delayEnter = options ? options.delayEnter : 0;\n  const delayLeave = options ? options.delayLeave : 0;\n  const isHovered = ref(false);\n  let timer;\n  const toggle = (entering) => {\n    const delay = entering ? delayEnter : delayLeave;\n    if (timer) {\n      clearTimeout(timer);\n      timer = void 0;\n    }\n    if (delay)\n      timer = setTimeout(() => isHovered.value = entering, delay);\n    else\n      isHovered.value = entering;\n  };\n  if (!window)\n    return isHovered;\n  useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n  useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n  return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n  const { window = defaultWindow, box = \"content-box\" } = options;\n  const isSVG = computed(() => {\n    var _a, _b;\n    return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n  });\n  const width = ref(initialSize.width);\n  const height = ref(initialSize.height);\n  useResizeObserver(target, ([entry]) => {\n    const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n    if (window && isSVG.value) {\n      const $elem = unrefElement(target);\n      if ($elem) {\n        const styles = window.getComputedStyle($elem);\n        width.value = parseFloat(styles.width);\n        height.value = parseFloat(styles.height);\n      }\n    } else {\n      if (boxSize) {\n        const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n        width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n        height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n      } else {\n        width.value = entry.contentRect.width;\n        height.value = entry.contentRect.height;\n      }\n    }\n  }, options);\n  watch(() => unrefElement(target), (ele) => {\n    width.value = ele ? initialSize.width : 0;\n    height.value = ele ? initialSize.height : 0;\n  });\n  return {\n    width,\n    height\n  };\n}\n\nfunction useElementVisibility(element, { window = defaultWindow, scrollTarget } = {}) {\n  const elementIsVisible = ref(false);\n  const testBounding = () => {\n    if (!window)\n      return;\n    const document = window.document;\n    const el = unrefElement(element);\n    if (!el) {\n      elementIsVisible.value = false;\n    } else {\n      const rect = el.getBoundingClientRect();\n      elementIsVisible.value = rect.top <= (window.innerHeight || document.documentElement.clientHeight) && rect.left <= (window.innerWidth || document.documentElement.clientWidth) && rect.bottom >= 0 && rect.right >= 0;\n    }\n  };\n  watch(() => unrefElement(element), () => testBounding(), { immediate: true, flush: \"post\" });\n  if (window) {\n    useEventListener(scrollTarget || window, \"scroll\", testBounding, {\n      capture: false,\n      passive: true\n    });\n  }\n  return elementIsVisible;\n}\n\nconst events = new Map();\n\nfunction useEventBus(key) {\n  const scope = getCurrentScope();\n  function on(listener) {\n    var _a;\n    const listeners = events.get(key) || [];\n    listeners.push(listener);\n    events.set(key, listeners);\n    const _off = () => off(listener);\n    (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n    return _off;\n  }\n  function once(listener) {\n    function _listener(...args) {\n      off(_listener);\n      listener(...args);\n    }\n    return on(_listener);\n  }\n  function off(listener) {\n    const listeners = events.get(key);\n    if (!listeners)\n      return;\n    const index = listeners.indexOf(listener);\n    if (index > -1)\n      listeners.splice(index, 1);\n    if (!listeners.length)\n      events.delete(key);\n  }\n  function reset() {\n    events.delete(key);\n  }\n  function emit(event, payload) {\n    var _a;\n    (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n  }\n  return { on, once, off, emit, reset };\n}\n\nfunction useEventSource(url, events = [], options = {}) {\n  const event = ref(null);\n  const data = ref(null);\n  const status = ref(\"CONNECTING\");\n  const eventSource = ref(null);\n  const error = ref(null);\n  const {\n    withCredentials = false\n  } = options;\n  const close = () => {\n    if (eventSource.value) {\n      eventSource.value.close();\n      eventSource.value = null;\n      status.value = \"CLOSED\";\n    }\n  };\n  const es = new EventSource(url, { withCredentials });\n  eventSource.value = es;\n  es.onopen = () => {\n    status.value = \"OPEN\";\n    error.value = null;\n  };\n  es.onerror = (e) => {\n    status.value = \"CLOSED\";\n    error.value = e;\n  };\n  es.onmessage = (e) => {\n    event.value = null;\n    data.value = e.data;\n  };\n  for (const event_name of events) {\n    useEventListener(es, event_name, (e) => {\n      event.value = event_name;\n      data.value = e.data || null;\n    });\n  }\n  tryOnScopeDispose(() => {\n    close();\n  });\n  return {\n    eventSource,\n    event,\n    data,\n    status,\n    error,\n    close\n  };\n}\n\nfunction useEyeDropper(options = {}) {\n  const { initialValue = \"\" } = options;\n  const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n  const sRGBHex = ref(initialValue);\n  async function open(openOptions) {\n    if (!isSupported.value)\n      return;\n    const eyeDropper = new window.EyeDropper();\n    const result = await eyeDropper.open(openOptions);\n    sRGBHex.value = result.sRGBHex;\n    return result;\n  }\n  return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n  const {\n    baseUrl = \"\",\n    rel = \"icon\",\n    document = defaultDocument\n  } = options;\n  const favicon = resolveRef(newIcon);\n  const applyIcon = (icon) => {\n    document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`).forEach((el) => el.href = `${baseUrl}${icon}`);\n  };\n  watch(favicon, (i, o) => {\n    if (isString(i) && i !== o)\n      applyIcon(i);\n  }, { immediate: true });\n  return favicon;\n}\n\nvar __defProp$d = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$e = Object.getOwnPropertySymbols;\nvar __hasOwnProp$e = Object.prototype.hasOwnProperty;\nvar __propIsEnum$e = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$d = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$e.call(b, prop))\n      __defNormalProp$d(a, prop, b[prop]);\n  if (__getOwnPropSymbols$e)\n    for (var prop of __getOwnPropSymbols$e(b)) {\n      if (__propIsEnum$e.call(b, prop))\n        __defNormalProp$d(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nconst payloadMapping = {\n  json: \"application/json\",\n  text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n  return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\");\n}\nfunction isAbsoluteURL(url) {\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\nfunction headersToObject(headers) {\n  if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n    return Object.fromEntries([...headers.entries()]);\n  return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n  if (combination === \"overwrite\") {\n    return async (ctx) => {\n      const callback = callbacks[callbacks.length - 1];\n      if (callback !== void 0)\n        await callback(ctx);\n      return ctx;\n    };\n  } else {\n    return async (ctx) => {\n      await callbacks.reduce((prevCallback, callback) => prevCallback.then(async () => {\n        if (callback)\n          ctx = __spreadValues$d(__spreadValues$d({}, ctx), await callback(ctx));\n      }), Promise.resolve());\n      return ctx;\n    };\n  }\n}\nfunction createFetch(config = {}) {\n  const _combination = config.combination || \"chain\";\n  const _options = config.options || {};\n  const _fetchOptions = config.fetchOptions || {};\n  function useFactoryFetch(url, ...args) {\n    const computedUrl = computed(() => {\n      const baseUrl = resolveUnref(config.baseUrl);\n      const targetUrl = resolveUnref(url);\n      return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n    });\n    let options = _options;\n    let fetchOptions = _fetchOptions;\n    if (args.length > 0) {\n      if (isFetchOptions(args[0])) {\n        options = __spreadProps$3(__spreadValues$d(__spreadValues$d({}, options), args[0]), {\n          beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n          afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n          onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n        });\n      } else {\n        fetchOptions = __spreadProps$3(__spreadValues$d(__spreadValues$d({}, fetchOptions), args[0]), {\n          headers: __spreadValues$d(__spreadValues$d({}, headersToObject(fetchOptions.headers) || {}), headersToObject(args[0].headers) || {})\n        });\n      }\n    }\n    if (args.length > 1 && isFetchOptions(args[1])) {\n      options = __spreadProps$3(__spreadValues$d(__spreadValues$d({}, options), args[1]), {\n        beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n        afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n        onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n      });\n    }\n    return useFetch(computedUrl, fetchOptions, options);\n  }\n  return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n  var _a;\n  const supportsAbort = typeof AbortController === \"function\";\n  let fetchOptions = {};\n  let options = { immediate: true, refetch: false, timeout: 0 };\n  const config = {\n    method: \"GET\",\n    type: \"text\",\n    payload: void 0\n  };\n  if (args.length > 0) {\n    if (isFetchOptions(args[0]))\n      options = __spreadValues$d(__spreadValues$d({}, options), args[0]);\n    else\n      fetchOptions = args[0];\n  }\n  if (args.length > 1) {\n    if (isFetchOptions(args[1]))\n      options = __spreadValues$d(__spreadValues$d({}, options), args[1]);\n  }\n  const {\n    fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n    initialData,\n    timeout\n  } = options;\n  const responseEvent = createEventHook();\n  const errorEvent = createEventHook();\n  const finallyEvent = createEventHook();\n  const isFinished = ref(false);\n  const isFetching = ref(false);\n  const aborted = ref(false);\n  const statusCode = ref(null);\n  const response = shallowRef(null);\n  const error = shallowRef(null);\n  const data = shallowRef(initialData);\n  const canAbort = computed(() => supportsAbort && isFetching.value);\n  let controller;\n  let timer;\n  const abort = () => {\n    if (supportsAbort && controller) {\n      controller.abort();\n      controller = void 0;\n    }\n  };\n  const loading = (isLoading) => {\n    isFetching.value = isLoading;\n    isFinished.value = !isLoading;\n  };\n  if (timeout)\n    timer = useTimeoutFn(abort, timeout, { immediate: false });\n  const execute = async (throwOnFailed = false) => {\n    var _a2;\n    loading(true);\n    error.value = null;\n    statusCode.value = null;\n    aborted.value = false;\n    if (supportsAbort) {\n      abort();\n      controller = new AbortController();\n      controller.signal.onabort = () => aborted.value = true;\n      fetchOptions = __spreadProps$3(__spreadValues$d({}, fetchOptions), {\n        signal: controller.signal\n      });\n    }\n    const defaultFetchOptions = {\n      method: config.method,\n      headers: {}\n    };\n    if (config.payload) {\n      const headers = headersToObject(defaultFetchOptions.headers);\n      if (config.payloadType)\n        headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n      const payload = resolveUnref(config.payload);\n      defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n    }\n    let isCanceled = false;\n    const context = {\n      url: resolveUnref(url),\n      options: __spreadValues$d(__spreadValues$d({}, defaultFetchOptions), fetchOptions),\n      cancel: () => {\n        isCanceled = true;\n      }\n    };\n    if (options.beforeFetch)\n      Object.assign(context, await options.beforeFetch(context));\n    if (isCanceled || !fetch) {\n      loading(false);\n      return Promise.resolve(null);\n    }\n    let responseData = null;\n    if (timer)\n      timer.start();\n    return new Promise((resolve, reject) => {\n      var _a3;\n      fetch(context.url, __spreadProps$3(__spreadValues$d(__spreadValues$d({}, defaultFetchOptions), context.options), {\n        headers: __spreadValues$d(__spreadValues$d({}, headersToObject(defaultFetchOptions.headers)), headersToObject((_a3 = context.options) == null ? void 0 : _a3.headers))\n      })).then(async (fetchResponse) => {\n        response.value = fetchResponse;\n        statusCode.value = fetchResponse.status;\n        responseData = await fetchResponse[config.type]();\n        if (options.afterFetch && statusCode.value >= 200 && statusCode.value < 300)\n          ({ data: responseData } = await options.afterFetch({ data: responseData, response: fetchResponse }));\n        data.value = responseData;\n        if (!fetchResponse.ok)\n          throw new Error(fetchResponse.statusText);\n        responseEvent.trigger(fetchResponse);\n        return resolve(fetchResponse);\n      }).catch(async (fetchError) => {\n        let errorData = fetchError.message || fetchError.name;\n        if (options.onFetchError)\n          ({ data: responseData, error: errorData } = await options.onFetchError({ data: responseData, error: fetchError, response: response.value }));\n        data.value = responseData;\n        error.value = errorData;\n        errorEvent.trigger(fetchError);\n        if (throwOnFailed)\n          return reject(fetchError);\n        return resolve(null);\n      }).finally(() => {\n        loading(false);\n        if (timer)\n          timer.stop();\n        finallyEvent.trigger(null);\n      });\n    });\n  };\n  const refetch = resolveRef(options.refetch);\n  watch([\n    refetch,\n    resolveRef(url)\n  ], ([refetch2]) => refetch2 && execute(), { deep: true });\n  const shell = {\n    isFinished,\n    statusCode,\n    response,\n    error,\n    data,\n    isFetching,\n    canAbort,\n    aborted,\n    abort,\n    execute,\n    onFetchResponse: responseEvent.on,\n    onFetchError: errorEvent.on,\n    onFetchFinally: finallyEvent.on,\n    get: setMethod(\"GET\"),\n    put: setMethod(\"PUT\"),\n    post: setMethod(\"POST\"),\n    delete: setMethod(\"DELETE\"),\n    patch: setMethod(\"PATCH\"),\n    head: setMethod(\"HEAD\"),\n    options: setMethod(\"OPTIONS\"),\n    json: setType(\"json\"),\n    text: setType(\"text\"),\n    blob: setType(\"blob\"),\n    arrayBuffer: setType(\"arrayBuffer\"),\n    formData: setType(\"formData\")\n  };\n  function setMethod(method) {\n    return (payload, payloadType) => {\n      if (!isFetching.value) {\n        config.method = method;\n        config.payload = payload;\n        config.payloadType = payloadType;\n        if (isRef(config.payload)) {\n          watch([\n            refetch,\n            resolveRef(config.payload)\n          ], ([refetch2]) => refetch2 && execute(), { deep: true });\n        }\n        const rawPayload = resolveUnref(config.payload);\n        if (!payloadType && rawPayload && Object.getPrototypeOf(rawPayload) === Object.prototype && !(rawPayload instanceof FormData))\n          config.payloadType = \"json\";\n        return __spreadProps$3(__spreadValues$d({}, shell), {\n          then(onFulfilled, onRejected) {\n            return waitUntilFinished().then(onFulfilled, onRejected);\n          }\n        });\n      }\n      return void 0;\n    };\n  }\n  function waitUntilFinished() {\n    return new Promise((resolve, reject) => {\n      until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2));\n    });\n  }\n  function setType(type) {\n    return () => {\n      if (!isFetching.value) {\n        config.type = type;\n        return __spreadProps$3(__spreadValues$d({}, shell), {\n          then(onFulfilled, onRejected) {\n            return waitUntilFinished().then(onFulfilled, onRejected);\n          }\n        });\n      }\n      return void 0;\n    };\n  }\n  if (options.immediate)\n    setTimeout(execute, 0);\n  return __spreadProps$3(__spreadValues$d({}, shell), {\n    then(onFulfilled, onRejected) {\n      return waitUntilFinished().then(onFulfilled, onRejected);\n    }\n  });\n}\nfunction joinPaths(start, end) {\n  if (!start.endsWith(\"/\") && !end.startsWith(\"/\"))\n    return `${start}/${end}`;\n  return `${start}${end}`;\n}\n\nvar __defProp$c = Object.defineProperty;\nvar __getOwnPropSymbols$d = Object.getOwnPropertySymbols;\nvar __hasOwnProp$d = Object.prototype.hasOwnProperty;\nvar __propIsEnum$d = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$c = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$d.call(b, prop))\n      __defNormalProp$c(a, prop, b[prop]);\n  if (__getOwnPropSymbols$d)\n    for (var prop of __getOwnPropSymbols$d(b)) {\n      if (__propIsEnum$d.call(b, prop))\n        __defNormalProp$c(a, prop, b[prop]);\n    }\n  return a;\n};\nconst DEFAULT_OPTIONS = {\n  multiple: true,\n  accept: \"*\"\n};\nfunction useFileDialog(options = {}) {\n  const {\n    document = defaultDocument\n  } = options;\n  const files = ref(null);\n  let input;\n  if (document) {\n    input = document.createElement(\"input\");\n    input.type = \"file\";\n    input.onchange = (event) => {\n      const result = event.target;\n      files.value = result.files;\n    };\n  }\n  const open = (localOptions) => {\n    if (!input)\n      return;\n    const _options = __spreadValues$c(__spreadValues$c(__spreadValues$c({}, DEFAULT_OPTIONS), options), localOptions);\n    input.multiple = _options.multiple;\n    input.accept = _options.accept;\n    if (hasOwn(_options, \"capture\"))\n      input.capture = _options.capture;\n    input.click();\n  };\n  const reset = () => {\n    files.value = null;\n    if (input)\n      input.value = \"\";\n  };\n  return {\n    files: readonly(files),\n    open,\n    reset\n  };\n}\n\nvar __defProp$b = Object.defineProperty;\nvar __getOwnPropSymbols$c = Object.getOwnPropertySymbols;\nvar __hasOwnProp$c = Object.prototype.hasOwnProperty;\nvar __propIsEnum$c = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$b = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$c.call(b, prop))\n      __defNormalProp$b(a, prop, b[prop]);\n  if (__getOwnPropSymbols$c)\n    for (var prop of __getOwnPropSymbols$c(b)) {\n      if (__propIsEnum$c.call(b, prop))\n        __defNormalProp$b(a, prop, b[prop]);\n    }\n  return a;\n};\nfunction useFileSystemAccess(options = {}) {\n  const {\n    window: _window = defaultWindow,\n    dataType = \"Text\"\n  } = unref(options);\n  const window = _window;\n  const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n  const fileHandle = ref();\n  const data = ref();\n  const file = ref();\n  const fileName = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n  });\n  const fileMIME = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n  });\n  const fileSize = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n  });\n  const fileLastModified = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n  });\n  async function open(_options = {}) {\n    if (!isSupported.value)\n      return;\n    const [handle] = await window.showOpenFilePicker(__spreadValues$b(__spreadValues$b({}, unref(options)), _options));\n    fileHandle.value = handle;\n    await updateFile();\n    await updateData();\n  }\n  async function create(_options = {}) {\n    if (!isSupported.value)\n      return;\n    fileHandle.value = await window.showSaveFilePicker(__spreadValues$b(__spreadValues$b({}, unref(options)), _options));\n    data.value = void 0;\n    await updateFile();\n    await updateData();\n  }\n  async function save(_options = {}) {\n    if (!isSupported.value)\n      return;\n    if (!fileHandle.value)\n      return saveAs(_options);\n    if (data.value) {\n      const writableStream = await fileHandle.value.createWritable();\n      await writableStream.write(data.value);\n      await writableStream.close();\n    }\n    await updateFile();\n  }\n  async function saveAs(_options = {}) {\n    if (!isSupported.value)\n      return;\n    fileHandle.value = await window.showSaveFilePicker(__spreadValues$b(__spreadValues$b({}, unref(options)), _options));\n    if (data.value) {\n      const writableStream = await fileHandle.value.createWritable();\n      await writableStream.write(data.value);\n      await writableStream.close();\n    }\n    await updateFile();\n  }\n  async function updateFile() {\n    var _a;\n    file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n  }\n  async function updateData() {\n    var _a, _b;\n    if (unref(dataType) === \"Text\")\n      data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n    if (unref(dataType) === \"ArrayBuffer\")\n      data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n    if (unref(dataType) === \"Blob\")\n      data.value = file.value;\n  }\n  watch(() => unref(dataType), updateData);\n  return {\n    isSupported,\n    data,\n    file,\n    fileName,\n    fileMIME,\n    fileSize,\n    fileLastModified,\n    open,\n    create,\n    save,\n    saveAs,\n    updateData\n  };\n}\n\nfunction useFocus(target, options = {}) {\n  const { initialValue = false } = options;\n  const innerFocused = ref(false);\n  const targetElement = computed(() => unrefElement(target));\n  useEventListener(targetElement, \"focus\", () => innerFocused.value = true);\n  useEventListener(targetElement, \"blur\", () => innerFocused.value = false);\n  const focused = computed({\n    get: () => innerFocused.value,\n    set(value) {\n      var _a, _b;\n      if (!value && innerFocused.value)\n        (_a = targetElement.value) == null ? void 0 : _a.blur();\n      else if (value && !innerFocused.value)\n        (_b = targetElement.value) == null ? void 0 : _b.focus();\n    }\n  });\n  watch(targetElement, () => {\n    focused.value = initialValue;\n  }, { immediate: true, flush: \"post\" });\n  return { focused };\n}\n\nfunction useFocusWithin(target, options = {}) {\n  const activeElement = useActiveElement(options);\n  const targetElement = computed(() => unrefElement(target));\n  const focused = computed(() => targetElement.value && activeElement.value ? targetElement.value.contains(activeElement.value) : false);\n  return { focused };\n}\n\nfunction useFps(options) {\n  var _a;\n  const fps = ref(0);\n  if (typeof performance === \"undefined\")\n    return fps;\n  const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n  let last = performance.now();\n  let ticks = 0;\n  useRafFn(() => {\n    ticks += 1;\n    if (ticks >= every) {\n      const now = performance.now();\n      const diff = now - last;\n      fps.value = Math.round(1e3 / (diff / ticks));\n      last = now;\n      ticks = 0;\n    }\n  });\n  return fps;\n}\n\nconst functionsMap = [\n  [\n    \"requestFullscreen\",\n    \"exitFullscreen\",\n    \"fullscreenElement\",\n    \"fullscreenEnabled\",\n    \"fullscreenchange\",\n    \"fullscreenerror\"\n  ],\n  [\n    \"webkitRequestFullscreen\",\n    \"webkitExitFullscreen\",\n    \"webkitFullscreenElement\",\n    \"webkitFullscreenEnabled\",\n    \"webkitfullscreenchange\",\n    \"webkitfullscreenerror\"\n  ],\n  [\n    \"webkitRequestFullScreen\",\n    \"webkitCancelFullScreen\",\n    \"webkitCurrentFullScreenElement\",\n    \"webkitCancelFullScreen\",\n    \"webkitfullscreenchange\",\n    \"webkitfullscreenerror\"\n  ],\n  [\n    \"mozRequestFullScreen\",\n    \"mozCancelFullScreen\",\n    \"mozFullScreenElement\",\n    \"mozFullScreenEnabled\",\n    \"mozfullscreenchange\",\n    \"mozfullscreenerror\"\n  ],\n  [\n    \"msRequestFullscreen\",\n    \"msExitFullscreen\",\n    \"msFullscreenElement\",\n    \"msFullscreenEnabled\",\n    \"MSFullscreenChange\",\n    \"MSFullscreenError\"\n  ]\n];\nfunction useFullscreen(target, options = {}) {\n  const { document = defaultDocument, autoExit = false } = options;\n  const targetRef = target || (document == null ? void 0 : document.querySelector(\"html\"));\n  const isFullscreen = ref(false);\n  let map = functionsMap[0];\n  const isSupported = useSupported(() => {\n    if (!document) {\n      return false;\n    } else {\n      for (const m of functionsMap) {\n        if (m[1] in document) {\n          map = m;\n          return true;\n        }\n      }\n    }\n    return false;\n  });\n  const [REQUEST, EXIT, ELEMENT, , EVENT] = map;\n  async function exit() {\n    if (!isSupported.value)\n      return;\n    if (document == null ? void 0 : document[ELEMENT])\n      await document[EXIT]();\n    isFullscreen.value = false;\n  }\n  async function enter() {\n    if (!isSupported.value)\n      return;\n    await exit();\n    const target2 = unrefElement(targetRef);\n    if (target2) {\n      await target2[REQUEST]();\n      isFullscreen.value = true;\n    }\n  }\n  async function toggle() {\n    if (isFullscreen.value)\n      await exit();\n    else\n      await enter();\n  }\n  if (document) {\n    useEventListener(document, EVENT, () => {\n      isFullscreen.value = !!(document == null ? void 0 : document[ELEMENT]);\n    }, false);\n  }\n  if (autoExit)\n    tryOnScopeDispose(exit);\n  return {\n    isSupported,\n    isFullscreen,\n    enter,\n    exit,\n    toggle\n  };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n  return computed(() => {\n    if (gamepad.value) {\n      return {\n        buttons: {\n          a: gamepad.value.buttons[0],\n          b: gamepad.value.buttons[1],\n          x: gamepad.value.buttons[2],\n          y: gamepad.value.buttons[3]\n        },\n        bumper: {\n          left: gamepad.value.buttons[4],\n          right: gamepad.value.buttons[5]\n        },\n        triggers: {\n          left: gamepad.value.buttons[6],\n          right: gamepad.value.buttons[7]\n        },\n        stick: {\n          left: {\n            horizontal: gamepad.value.axes[0],\n            vertical: gamepad.value.axes[1],\n            button: gamepad.value.buttons[10]\n          },\n          right: {\n            horizontal: gamepad.value.axes[2],\n            vertical: gamepad.value.axes[3],\n            button: gamepad.value.buttons[11]\n          }\n        },\n        dpad: {\n          up: gamepad.value.buttons[12],\n          down: gamepad.value.buttons[13],\n          left: gamepad.value.buttons[14],\n          right: gamepad.value.buttons[15]\n        },\n        back: gamepad.value.buttons[8],\n        start: gamepad.value.buttons[9]\n      };\n    }\n    return null;\n  });\n}\nfunction useGamepad(options = {}) {\n  const {\n    navigator = defaultNavigator\n  } = options;\n  const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n  const gamepads = ref([]);\n  const onConnectedHook = createEventHook();\n  const onDisconnectedHook = createEventHook();\n  const stateFromGamepad = (gamepad) => {\n    const hapticActuators = [];\n    const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n    if (vibrationActuator)\n      hapticActuators.push(vibrationActuator);\n    if (gamepad.hapticActuators)\n      hapticActuators.push(...gamepad.hapticActuators);\n    return {\n      id: gamepad.id,\n      hapticActuators,\n      index: gamepad.index,\n      mapping: gamepad.mapping,\n      connected: gamepad.connected,\n      timestamp: gamepad.timestamp,\n      axes: gamepad.axes.map((axes) => axes),\n      buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n    };\n  };\n  const updateGamepadState = () => {\n    const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n    for (let i = 0; i < _gamepads.length; ++i) {\n      const gamepad = _gamepads[i];\n      if (gamepad) {\n        const index = gamepads.value.findIndex(({ index: index2 }) => index2 === gamepad.index);\n        if (index > -1)\n          gamepads.value[index] = stateFromGamepad(gamepad);\n      }\n    }\n  };\n  const { isActive, pause, resume } = useRafFn(updateGamepadState);\n  const onGamepadConnected = (gamepad) => {\n    if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n      gamepads.value.push(stateFromGamepad(gamepad));\n      onConnectedHook.trigger(gamepad.index);\n    }\n    resume();\n  };\n  const onGamepadDisconnected = (gamepad) => {\n    gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n    onDisconnectedHook.trigger(gamepad.index);\n  };\n  useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n  useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad));\n  tryOnMounted(() => {\n    const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n    if (_gamepads) {\n      for (let i = 0; i < _gamepads.length; ++i) {\n        const gamepad = _gamepads[i];\n        if (gamepad)\n          onGamepadConnected(gamepad);\n      }\n    }\n  });\n  pause();\n  return {\n    isSupported,\n    onConnected: onConnectedHook.on,\n    onDisconnected: onDisconnectedHook.on,\n    gamepads,\n    pause,\n    resume,\n    isActive\n  };\n}\n\nfunction useGeolocation(options = {}) {\n  const {\n    enableHighAccuracy = true,\n    maximumAge = 3e4,\n    timeout = 27e3,\n    navigator = defaultNavigator,\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n  const locatedAt = ref(null);\n  const error = ref(null);\n  const coords = ref({\n    accuracy: 0,\n    latitude: Infinity,\n    longitude: Infinity,\n    altitude: null,\n    altitudeAccuracy: null,\n    heading: null,\n    speed: null\n  });\n  function updatePosition(position) {\n    locatedAt.value = position.timestamp;\n    coords.value = position.coords;\n    error.value = null;\n  }\n  let watcher;\n  function resume() {\n    if (isSupported.value) {\n      watcher = navigator.geolocation.watchPosition(updatePosition, (err) => error.value = err, {\n        enableHighAccuracy,\n        maximumAge,\n        timeout\n      });\n    }\n  }\n  if (immediate)\n    resume();\n  function pause() {\n    if (watcher && navigator)\n      navigator.geolocation.clearWatch(watcher);\n  }\n  tryOnScopeDispose(() => {\n    pause();\n  });\n  return {\n    isSupported,\n    coords,\n    locatedAt,\n    error,\n    resume,\n    pause\n  };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n  const {\n    initialState = false,\n    listenForVisibilityChange = true,\n    events = defaultEvents$1,\n    window = defaultWindow,\n    eventFilter = throttleFilter(50)\n  } = options;\n  const idle = ref(initialState);\n  const lastActive = ref(timestamp());\n  let timer;\n  const onEvent = createFilterWrapper(eventFilter, () => {\n    idle.value = false;\n    lastActive.value = timestamp();\n    clearTimeout(timer);\n    timer = setTimeout(() => idle.value = true, timeout);\n  });\n  if (window) {\n    const document = window.document;\n    for (const event of events)\n      useEventListener(window, event, onEvent, { passive: true });\n    if (listenForVisibilityChange) {\n      useEventListener(document, \"visibilitychange\", () => {\n        if (!document.hidden)\n          onEvent();\n      });\n    }\n  }\n  timer = setTimeout(() => idle.value = true, timeout);\n  return { idle, lastActive };\n}\n\nvar __defProp$a = Object.defineProperty;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$a = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$b.call(b, prop))\n      __defNormalProp$a(a, prop, b[prop]);\n  if (__getOwnPropSymbols$b)\n    for (var prop of __getOwnPropSymbols$b(b)) {\n      if (__propIsEnum$b.call(b, prop))\n        __defNormalProp$a(a, prop, b[prop]);\n    }\n  return a;\n};\nasync function loadImage(options) {\n  return new Promise((resolve, reject) => {\n    const img = new Image();\n    const { src, srcset, sizes } = options;\n    img.src = src;\n    if (srcset)\n      img.srcset = srcset;\n    if (sizes)\n      img.sizes = sizes;\n    img.onload = () => resolve(img);\n    img.onerror = reject;\n  });\n}\nconst useImage = (options, asyncStateOptions = {}) => {\n  const state = useAsyncState(() => loadImage(resolveUnref(options)), void 0, __spreadValues$a({\n    resetOnExecute: true\n  }, asyncStateOptions));\n  watch(() => resolveUnref(options), () => state.execute(asyncStateOptions.delay), { deep: true });\n  return state;\n};\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n  const {\n    throttle = 0,\n    idle = 200,\n    onStop = noop,\n    onScroll = noop,\n    offset = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    },\n    eventListenerOptions = {\n      capture: false,\n      passive: true\n    },\n    behavior = \"auto\"\n  } = options;\n  const internalX = ref(0);\n  const internalY = ref(0);\n  const x = computed({\n    get() {\n      return internalX.value;\n    },\n    set(x2) {\n      scrollTo(x2, void 0);\n    }\n  });\n  const y = computed({\n    get() {\n      return internalY.value;\n    },\n    set(y2) {\n      scrollTo(void 0, y2);\n    }\n  });\n  function scrollTo(_x, _y) {\n    var _a, _b, _c;\n    const _element = resolveUnref(element);\n    if (!_element)\n      return;\n    (_c = _element instanceof Document ? document.body : _element) == null ? void 0 : _c.scrollTo({\n      top: (_a = resolveUnref(_y)) != null ? _a : y.value,\n      left: (_b = resolveUnref(_x)) != null ? _b : x.value,\n      behavior: resolveUnref(behavior)\n    });\n  }\n  const isScrolling = ref(false);\n  const arrivedState = reactive({\n    left: true,\n    right: false,\n    top: true,\n    bottom: false\n  });\n  const directions = reactive({\n    left: false,\n    right: false,\n    top: false,\n    bottom: false\n  });\n  const onScrollEnd = (e) => {\n    if (!isScrolling.value)\n      return;\n    isScrolling.value = false;\n    directions.left = false;\n    directions.right = false;\n    directions.top = false;\n    directions.bottom = false;\n    onStop(e);\n  };\n  const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n  const onScrollHandler = (e) => {\n    const eventTarget = e.target === document ? e.target.documentElement : e.target;\n    const scrollLeft = eventTarget.scrollLeft;\n    directions.left = scrollLeft < internalX.value;\n    directions.right = scrollLeft > internalY.value;\n    arrivedState.left = scrollLeft <= 0 + (offset.left || 0);\n    arrivedState.right = scrollLeft + eventTarget.clientWidth >= eventTarget.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n    internalX.value = scrollLeft;\n    let scrollTop = eventTarget.scrollTop;\n    if (e.target === document && !scrollTop)\n      scrollTop = document.body.scrollTop;\n    directions.top = scrollTop < internalY.value;\n    directions.bottom = scrollTop > internalY.value;\n    arrivedState.top = scrollTop <= 0 + (offset.top || 0);\n    arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n    internalY.value = scrollTop;\n    isScrolling.value = true;\n    onScrollEndDebounced(e);\n    onScroll(e);\n  };\n  useEventListener(element, \"scroll\", throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler, eventListenerOptions);\n  useEventListener(element, \"scrollend\", onScrollEnd, eventListenerOptions);\n  return {\n    x,\n    y,\n    isScrolling,\n    arrivedState,\n    directions\n  };\n}\n\nvar __defProp$9 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$a.call(b, prop))\n      __defNormalProp$9(a, prop, b[prop]);\n  if (__getOwnPropSymbols$a)\n    for (var prop of __getOwnPropSymbols$a(b)) {\n      if (__propIsEnum$a.call(b, prop))\n        __defNormalProp$9(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n  var _a, _b;\n  const direction = (_a = options.direction) != null ? _a : \"bottom\";\n  const state = reactive(useScroll(element, __spreadProps$2(__spreadValues$9({}, options), {\n    offset: __spreadValues$9({\n      [direction]: (_b = options.distance) != null ? _b : 0\n    }, options.offset)\n  })));\n  watch(() => state.arrivedState[direction], async (v) => {\n    var _a2, _b2;\n    if (v) {\n      const elem = resolveUnref(element);\n      const previous = {\n        height: (_a2 = elem == null ? void 0 : elem.scrollHeight) != null ? _a2 : 0,\n        width: (_b2 = elem == null ? void 0 : elem.scrollWidth) != null ? _b2 : 0\n      };\n      await onLoadMore(state);\n      if (options.preserveScrollPosition && elem) {\n        nextTick(() => {\n          elem.scrollTo({\n            top: elem.scrollHeight - previous.height,\n            left: elem.scrollWidth - previous.width\n          });\n        });\n      }\n    }\n  });\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n  const {\n    root,\n    rootMargin = \"0px\",\n    threshold = 0.1,\n    window = defaultWindow\n  } = options;\n  const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n  let cleanup = noop;\n  const stopWatch = isSupported.value ? watch(() => ({\n    el: unrefElement(target),\n    root: unrefElement(root)\n  }), ({ el, root: root2 }) => {\n    cleanup();\n    if (!el)\n      return;\n    const observer = new IntersectionObserver(callback, {\n      root: root2,\n      rootMargin,\n      threshold\n    });\n    observer.observe(el);\n    cleanup = () => {\n      observer.disconnect();\n      cleanup = noop;\n    };\n  }, { immediate: true, flush: \"post\" }) : noop;\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    stop\n  };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n  const {\n    events = defaultEvents,\n    document = defaultDocument,\n    initial = null\n  } = options;\n  const state = ref(initial);\n  if (document) {\n    events.forEach((listenerEvent) => {\n      useEventListener(document, listenerEvent, (evt) => {\n        if (typeof evt.getModifierState === \"function\")\n          state.value = evt.getModifierState(modifier);\n      });\n    });\n  }\n  return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n  const { window = defaultWindow } = options;\n  return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n  ctrl: \"control\",\n  command: \"meta\",\n  cmd: \"meta\",\n  option: \"alt\",\n  up: \"arrowup\",\n  down: \"arrowdown\",\n  left: \"arrowleft\",\n  right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n  const {\n    reactive: useReactive = false,\n    target = defaultWindow,\n    aliasMap = DefaultMagicKeysAliasMap,\n    passive = true,\n    onEventFired = noop\n  } = options;\n  const current = reactive(new Set());\n  const obj = {\n    toJSON() {\n      return {};\n    },\n    current\n  };\n  const refs = useReactive ? reactive(obj) : obj;\n  const metaDeps = new Set();\n  const usedKeys = new Set();\n  function setRefs(key, value) {\n    if (key in refs) {\n      if (useReactive)\n        refs[key] = value;\n      else\n        refs[key].value = value;\n    }\n  }\n  function reset() {\n    current.clear();\n    for (const key of usedKeys)\n      setRefs(key, false);\n  }\n  function updateRefs(e, value) {\n    var _a, _b;\n    const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n    const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n    const values = [code, key].filter(Boolean);\n    if (key) {\n      if (value)\n        current.add(key);\n      else\n        current.delete(key);\n    }\n    for (const key2 of values) {\n      usedKeys.add(key2);\n      setRefs(key2, value);\n    }\n    if (key === \"meta\" && !value) {\n      metaDeps.forEach((key2) => {\n        current.delete(key2);\n        setRefs(key2, false);\n      });\n      metaDeps.clear();\n    } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n      [...current, ...values].forEach((key2) => metaDeps.add(key2));\n    }\n  }\n  useEventListener(target, \"keydown\", (e) => {\n    updateRefs(e, true);\n    return onEventFired(e);\n  }, { passive });\n  useEventListener(target, \"keyup\", (e) => {\n    updateRefs(e, false);\n    return onEventFired(e);\n  }, { passive });\n  useEventListener(\"blur\", reset, { passive: true });\n  useEventListener(\"focus\", reset, { passive: true });\n  const proxy = new Proxy(refs, {\n    get(target2, prop, rec) {\n      if (typeof prop !== \"string\")\n        return Reflect.get(target2, prop, rec);\n      prop = prop.toLowerCase();\n      if (prop in aliasMap)\n        prop = aliasMap[prop];\n      if (!(prop in refs)) {\n        if (/[+_-]/.test(prop)) {\n          const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n          refs[prop] = computed(() => keys.every((key) => unref(proxy[key])));\n        } else {\n          refs[prop] = ref(false);\n        }\n      }\n      const r = Reflect.get(target2, prop, rec);\n      return useReactive ? unref(r) : r;\n    }\n  });\n  return proxy;\n}\n\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$9.call(b, prop))\n      __defNormalProp$8(a, prop, b[prop]);\n  if (__getOwnPropSymbols$9)\n    for (var prop of __getOwnPropSymbols$9(b)) {\n      if (__propIsEnum$9.call(b, prop))\n        __defNormalProp$8(a, prop, b[prop]);\n    }\n  return a;\n};\nfunction usingElRef(source, cb) {\n  if (resolveUnref(source))\n    cb(resolveUnref(source));\n}\nfunction timeRangeToArray(timeRanges) {\n  let ranges = [];\n  for (let i = 0; i < timeRanges.length; ++i)\n    ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n  return ranges;\n}\nfunction tracksToArray(tracks) {\n  return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n  src: \"\",\n  tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n  options = __spreadValues$8(__spreadValues$8({}, defaultOptions), options);\n  const {\n    document = defaultDocument\n  } = options;\n  const currentTime = ref(0);\n  const duration = ref(0);\n  const seeking = ref(false);\n  const volume = ref(1);\n  const waiting = ref(false);\n  const ended = ref(false);\n  const playing = ref(false);\n  const rate = ref(1);\n  const stalled = ref(false);\n  const buffered = ref([]);\n  const tracks = ref([]);\n  const selectedTrack = ref(-1);\n  const isPictureInPicture = ref(false);\n  const muted = ref(false);\n  const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n  const sourceErrorEvent = createEventHook();\n  const disableTrack = (track) => {\n    usingElRef(target, (el) => {\n      if (track) {\n        const id = isNumber(track) ? track : track.id;\n        el.textTracks[id].mode = \"disabled\";\n      } else {\n        for (let i = 0; i < el.textTracks.length; ++i)\n          el.textTracks[i].mode = \"disabled\";\n      }\n      selectedTrack.value = -1;\n    });\n  };\n  const enableTrack = (track, disableTracks = true) => {\n    usingElRef(target, (el) => {\n      const id = isNumber(track) ? track : track.id;\n      if (disableTracks)\n        disableTrack();\n      el.textTracks[id].mode = \"showing\";\n      selectedTrack.value = id;\n    });\n  };\n  const togglePictureInPicture = () => {\n    return new Promise((resolve, reject) => {\n      usingElRef(target, async (el) => {\n        if (supportsPictureInPicture) {\n          if (!isPictureInPicture.value) {\n            el.requestPictureInPicture().then(resolve).catch(reject);\n          } else {\n            document.exitPictureInPicture().then(resolve).catch(reject);\n          }\n        }\n      });\n    });\n  };\n  watchEffect(() => {\n    if (!document)\n      return;\n    const el = resolveUnref(target);\n    if (!el)\n      return;\n    const src = resolveUnref(options.src);\n    let sources = [];\n    if (!src)\n      return;\n    if (isString(src))\n      sources = [{ src }];\n    else if (Array.isArray(src))\n      sources = src;\n    else if (isObject(src))\n      sources = [src];\n    el.querySelectorAll(\"source\").forEach((e) => {\n      e.removeEventListener(\"error\", sourceErrorEvent.trigger);\n      e.remove();\n    });\n    sources.forEach(({ src: src2, type }) => {\n      const source = document.createElement(\"source\");\n      source.setAttribute(\"src\", src2);\n      source.setAttribute(\"type\", type || \"\");\n      source.addEventListener(\"error\", sourceErrorEvent.trigger);\n      el.appendChild(source);\n    });\n    el.load();\n  });\n  tryOnScopeDispose(() => {\n    const el = resolveUnref(target);\n    if (!el)\n      return;\n    el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n  });\n  watch(volume, (vol) => {\n    const el = resolveUnref(target);\n    if (!el)\n      return;\n    el.volume = vol;\n  });\n  watch(muted, (mute) => {\n    const el = resolveUnref(target);\n    if (!el)\n      return;\n    el.muted = mute;\n  });\n  watch(rate, (rate2) => {\n    const el = resolveUnref(target);\n    if (!el)\n      return;\n    el.playbackRate = rate2;\n  });\n  watchEffect(() => {\n    if (!document)\n      return;\n    const textTracks = resolveUnref(options.tracks);\n    const el = resolveUnref(target);\n    if (!textTracks || !textTracks.length || !el)\n      return;\n    el.querySelectorAll(\"track\").forEach((e) => e.remove());\n    textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n      const track = document.createElement(\"track\");\n      track.default = isDefault || false;\n      track.kind = kind;\n      track.label = label;\n      track.src = src;\n      track.srclang = srcLang;\n      if (track.default)\n        selectedTrack.value = i;\n      el.appendChild(track);\n    });\n  });\n  const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n    const el = resolveUnref(target);\n    if (!el)\n      return;\n    el.currentTime = time;\n  });\n  const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n    const el = resolveUnref(target);\n    if (!el)\n      return;\n    isPlaying ? el.play() : el.pause();\n  });\n  useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = resolveUnref(target).currentTime));\n  useEventListener(target, \"durationchange\", () => duration.value = resolveUnref(target).duration);\n  useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(resolveUnref(target).buffered));\n  useEventListener(target, \"seeking\", () => seeking.value = true);\n  useEventListener(target, \"seeked\", () => seeking.value = false);\n  useEventListener(target, \"waiting\", () => waiting.value = true);\n  useEventListener(target, \"playing\", () => {\n    waiting.value = false;\n    ended.value = false;\n  });\n  useEventListener(target, \"ratechange\", () => rate.value = resolveUnref(target).playbackRate);\n  useEventListener(target, \"stalled\", () => stalled.value = true);\n  useEventListener(target, \"ended\", () => ended.value = true);\n  useEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false));\n  useEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true));\n  useEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true);\n  useEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false);\n  useEventListener(target, \"volumechange\", () => {\n    const el = resolveUnref(target);\n    if (!el)\n      return;\n    volume.value = el.volume;\n    muted.value = el.muted;\n  });\n  const listeners = [];\n  const stop = watch([target], () => {\n    const el = resolveUnref(target);\n    if (!el)\n      return;\n    stop();\n    listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks));\n    listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks));\n    listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks));\n  });\n  tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n  return {\n    currentTime,\n    duration,\n    waiting,\n    seeking,\n    ended,\n    stalled,\n    buffered,\n    playing,\n    rate,\n    volume,\n    muted,\n    tracks,\n    selectedTrack,\n    enableTrack,\n    disableTrack,\n    supportsPictureInPicture,\n    togglePictureInPicture,\n    isPictureInPicture,\n    onSourceError: sourceErrorEvent.on\n  };\n}\n\nconst getMapVue2Compat = () => {\n  const data = reactive({});\n  return {\n    get: (key) => data[key],\n    set: (key, value) => set(data, key, value),\n    has: (key) => hasOwn(data, key),\n    delete: (key) => del(data, key),\n    clear: () => {\n      Object.keys(data).forEach((key) => {\n        del(data, key);\n      });\n    }\n  };\n};\nfunction useMemoize(resolver, options) {\n  const initCache = () => {\n    if (options == null ? void 0 : options.cache)\n      return reactive(options.cache);\n    if (isVue2)\n      return getMapVue2Compat();\n    return reactive(new Map());\n  };\n  const cache = initCache();\n  const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n  const _loadData = (key, ...args) => {\n    cache.set(key, resolver(...args));\n    return cache.get(key);\n  };\n  const loadData = (...args) => _loadData(generateKey(...args), ...args);\n  const deleteData = (...args) => {\n    cache.delete(generateKey(...args));\n  };\n  const clearData = () => {\n    cache.clear();\n  };\n  const memoized = (...args) => {\n    const key = generateKey(...args);\n    if (cache.has(key))\n      return cache.get(key);\n    return _loadData(key, ...args);\n  };\n  memoized.load = loadData;\n  memoized.delete = deleteData;\n  memoized.clear = clearData;\n  memoized.generateKey = generateKey;\n  memoized.cache = cache;\n  return memoized;\n}\n\nfunction useMemory(options = {}) {\n  const memory = ref();\n  const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n  if (isSupported.value) {\n    const { interval = 1e3 } = options;\n    useIntervalFn(() => {\n      memory.value = performance.memory;\n    }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n  }\n  return { isSupported, memory };\n}\n\nfunction useMounted() {\n  const isMounted = ref(false);\n  onMounted(() => {\n    isMounted.value = true;\n  });\n  return isMounted;\n}\n\nfunction useMouse(options = {}) {\n  const {\n    type = \"page\",\n    touch = true,\n    resetOnTouchEnds = false,\n    initialValue = { x: 0, y: 0 },\n    window = defaultWindow,\n    eventFilter\n  } = options;\n  const x = ref(initialValue.x);\n  const y = ref(initialValue.y);\n  const sourceType = ref(null);\n  const mouseHandler = (event) => {\n    if (type === \"page\") {\n      x.value = event.pageX;\n      y.value = event.pageY;\n    } else if (type === \"client\") {\n      x.value = event.clientX;\n      y.value = event.clientY;\n    } else if (type === \"movement\") {\n      x.value = event.movementX;\n      y.value = event.movementY;\n    }\n    sourceType.value = \"mouse\";\n  };\n  const reset = () => {\n    x.value = initialValue.x;\n    y.value = initialValue.y;\n  };\n  const touchHandler = (event) => {\n    if (event.touches.length > 0) {\n      const touch2 = event.touches[0];\n      if (type === \"page\") {\n        x.value = touch2.pageX;\n        y.value = touch2.pageY;\n      } else if (type === \"client\") {\n        x.value = touch2.clientX;\n        y.value = touch2.clientY;\n      }\n      sourceType.value = \"touch\";\n    }\n  };\n  const mouseHandlerWrapper = (event) => {\n    return eventFilter === void 0 ? mouseHandler(event) : eventFilter(() => mouseHandler(event), {});\n  };\n  const touchHandlerWrapper = (event) => {\n    return eventFilter === void 0 ? touchHandler(event) : eventFilter(() => touchHandler(event), {});\n  };\n  if (window) {\n    useEventListener(window, \"mousemove\", mouseHandlerWrapper, { passive: true });\n    useEventListener(window, \"dragover\", mouseHandlerWrapper, { passive: true });\n    if (touch && type !== \"movement\") {\n      useEventListener(window, \"touchstart\", touchHandlerWrapper, { passive: true });\n      useEventListener(window, \"touchmove\", touchHandlerWrapper, { passive: true });\n      if (resetOnTouchEnds)\n        useEventListener(window, \"touchend\", reset, { passive: true });\n    }\n  }\n  return {\n    x,\n    y,\n    sourceType\n  };\n}\n\nfunction useMouseInElement(target, options = {}) {\n  const {\n    handleOutside = true,\n    window = defaultWindow\n  } = options;\n  const { x, y, sourceType } = useMouse(options);\n  const targetRef = ref(target != null ? target : window == null ? void 0 : window.document.body);\n  const elementX = ref(0);\n  const elementY = ref(0);\n  const elementPositionX = ref(0);\n  const elementPositionY = ref(0);\n  const elementHeight = ref(0);\n  const elementWidth = ref(0);\n  const isOutside = ref(true);\n  let stop = () => {\n  };\n  if (window) {\n    stop = watch([targetRef, x, y], () => {\n      const el = unrefElement(targetRef);\n      if (!el)\n        return;\n      const {\n        left,\n        top,\n        width,\n        height\n      } = el.getBoundingClientRect();\n      elementPositionX.value = left + window.pageXOffset;\n      elementPositionY.value = top + window.pageYOffset;\n      elementHeight.value = height;\n      elementWidth.value = width;\n      const elX = x.value - elementPositionX.value;\n      const elY = y.value - elementPositionY.value;\n      isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n      if (handleOutside || !isOutside.value) {\n        elementX.value = elX;\n        elementY.value = elY;\n      }\n    }, { immediate: true });\n    useEventListener(document, \"mouseleave\", () => {\n      isOutside.value = true;\n    });\n  }\n  return {\n    x,\n    y,\n    sourceType,\n    elementX,\n    elementY,\n    elementPositionX,\n    elementPositionY,\n    elementHeight,\n    elementWidth,\n    isOutside,\n    stop\n  };\n}\n\nfunction useMousePressed(options = {}) {\n  const {\n    touch = true,\n    drag = true,\n    initialValue = false,\n    window = defaultWindow\n  } = options;\n  const pressed = ref(initialValue);\n  const sourceType = ref(null);\n  if (!window) {\n    return {\n      pressed,\n      sourceType\n    };\n  }\n  const onPressed = (srcType) => () => {\n    pressed.value = true;\n    sourceType.value = srcType;\n  };\n  const onReleased = () => {\n    pressed.value = false;\n    sourceType.value = null;\n  };\n  const target = computed(() => unrefElement(options.target) || window);\n  useEventListener(target, \"mousedown\", onPressed(\"mouse\"), { passive: true });\n  useEventListener(window, \"mouseleave\", onReleased, { passive: true });\n  useEventListener(window, \"mouseup\", onReleased, { passive: true });\n  if (drag) {\n    useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true });\n    useEventListener(window, \"drop\", onReleased, { passive: true });\n    useEventListener(window, \"dragend\", onReleased, { passive: true });\n  }\n  if (touch) {\n    useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true });\n    useEventListener(window, \"touchend\", onReleased, { passive: true });\n    useEventListener(window, \"touchcancel\", onReleased, { passive: true });\n  }\n  return {\n    pressed,\n    sourceType\n  };\n}\n\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __objRest$1 = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols$8)\n    for (var prop of __getOwnPropSymbols$8(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum$8.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\nfunction useMutationObserver(target, callback, options = {}) {\n  const _a = options, { window = defaultWindow } = _a, mutationOptions = __objRest$1(_a, [\"window\"]);\n  let observer;\n  const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = void 0;\n    }\n  };\n  const stopWatch = watch(() => unrefElement(target), (el) => {\n    cleanup();\n    if (isSupported.value && window && el) {\n      observer = new MutationObserver(callback);\n      observer.observe(el, mutationOptions);\n    }\n  }, { immediate: true });\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    stop\n  };\n}\n\nconst useNavigatorLanguage = (options = {}) => {\n  const { window = defaultWindow } = options;\n  const navigator = window == null ? void 0 : window.navigator;\n  const isSupported = useSupported(() => navigator && \"language\" in navigator);\n  const language = ref(navigator == null ? void 0 : navigator.language);\n  useEventListener(window, \"languagechange\", () => {\n    if (navigator)\n      language.value = navigator.language;\n  });\n  return {\n    isSupported,\n    language\n  };\n};\n\nfunction useNetwork(options = {}) {\n  const { window = defaultWindow } = options;\n  const navigator = window == null ? void 0 : window.navigator;\n  const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n  const isOnline = ref(true);\n  const saveData = ref(false);\n  const offlineAt = ref(void 0);\n  const onlineAt = ref(void 0);\n  const downlink = ref(void 0);\n  const downlinkMax = ref(void 0);\n  const rtt = ref(void 0);\n  const effectiveType = ref(void 0);\n  const type = ref(\"unknown\");\n  const connection = isSupported.value && navigator.connection;\n  function updateNetworkInformation() {\n    if (!navigator)\n      return;\n    isOnline.value = navigator.onLine;\n    offlineAt.value = isOnline.value ? void 0 : Date.now();\n    onlineAt.value = isOnline.value ? Date.now() : void 0;\n    if (connection) {\n      downlink.value = connection.downlink;\n      downlinkMax.value = connection.downlinkMax;\n      effectiveType.value = connection.effectiveType;\n      rtt.value = connection.rtt;\n      saveData.value = connection.saveData;\n      type.value = connection.type;\n    }\n  }\n  if (window) {\n    useEventListener(window, \"offline\", () => {\n      isOnline.value = false;\n      offlineAt.value = Date.now();\n    });\n    useEventListener(window, \"online\", () => {\n      isOnline.value = true;\n      onlineAt.value = Date.now();\n    });\n  }\n  if (connection)\n    useEventListener(connection, \"change\", updateNetworkInformation, false);\n  updateNetworkInformation();\n  return {\n    isSupported,\n    isOnline,\n    saveData,\n    offlineAt,\n    onlineAt,\n    downlink,\n    downlinkMax,\n    effectiveType,\n    rtt,\n    type\n  };\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$7.call(b, prop))\n      __defNormalProp$7(a, prop, b[prop]);\n  if (__getOwnPropSymbols$7)\n    for (var prop of __getOwnPropSymbols$7(b)) {\n      if (__propIsEnum$7.call(b, prop))\n        __defNormalProp$7(a, prop, b[prop]);\n    }\n  return a;\n};\nfunction useNow(options = {}) {\n  const {\n    controls: exposeControls = false,\n    interval = \"requestAnimationFrame\"\n  } = options;\n  const now = ref(new Date());\n  const update = () => now.value = new Date();\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n  if (exposeControls) {\n    return __spreadValues$7({\n      now\n    }, controls);\n  } else {\n    return now;\n  }\n}\n\nfunction useObjectUrl(object) {\n  const url = ref();\n  const release = () => {\n    if (url.value)\n      URL.revokeObjectURL(url.value);\n    url.value = void 0;\n  };\n  watch(() => unref(object), (newObject) => {\n    release();\n    if (newObject)\n      url.value = URL.createObjectURL(newObject);\n  }, { immediate: true });\n  tryOnScopeDispose(release);\n  return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n  if (isFunction(value) || isReadonly(value))\n    return computed(() => clamp(resolveUnref(value), resolveUnref(min), resolveUnref(max)));\n  const _value = ref(value);\n  return computed({\n    get() {\n      return _value.value = clamp(_value.value, resolveUnref(min), resolveUnref(max));\n    },\n    set(value2) {\n      _value.value = clamp(value2, resolveUnref(min), resolveUnref(max));\n    }\n  });\n}\n\nfunction useOffsetPagination(options) {\n  const {\n    total = Infinity,\n    pageSize = 10,\n    page = 1,\n    onPageChange = noop,\n    onPageSizeChange = noop,\n    onPageCountChange = noop\n  } = options;\n  const currentPageSize = useClamp(pageSize, 1, Infinity);\n  const pageCount = computed(() => Math.max(1, Math.ceil(unref(total) / unref(currentPageSize))));\n  const currentPage = useClamp(page, 1, pageCount);\n  const isFirstPage = computed(() => currentPage.value === 1);\n  const isLastPage = computed(() => currentPage.value === pageCount.value);\n  if (isRef(page))\n    syncRef(page, currentPage);\n  if (isRef(pageSize))\n    syncRef(pageSize, currentPageSize);\n  function prev() {\n    currentPage.value--;\n  }\n  function next() {\n    currentPage.value++;\n  }\n  const returnValue = {\n    currentPage,\n    currentPageSize,\n    pageCount,\n    isFirstPage,\n    isLastPage,\n    prev,\n    next\n  };\n  watch(currentPage, () => {\n    onPageChange(reactive(returnValue));\n  });\n  watch(currentPageSize, () => {\n    onPageSizeChange(reactive(returnValue));\n  });\n  watch(pageCount, () => {\n    onPageCountChange(reactive(returnValue));\n  });\n  return returnValue;\n}\n\nfunction useOnline(options = {}) {\n  const { isOnline } = useNetwork(options);\n  return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n  const { window = defaultWindow } = options;\n  const isLeft = ref(false);\n  const handler = (event) => {\n    if (!window)\n      return;\n    event = event || window.event;\n    const from = event.relatedTarget || event.toElement;\n    isLeft.value = !from;\n  };\n  if (window) {\n    useEventListener(window, \"mouseout\", handler, { passive: true });\n    useEventListener(window.document, \"mouseleave\", handler, { passive: true });\n    useEventListener(window.document, \"mouseenter\", handler, { passive: true });\n  }\n  return isLeft;\n}\n\nfunction useParallax(target, options = {}) {\n  const {\n    deviceOrientationTiltAdjust = (i) => i,\n    deviceOrientationRollAdjust = (i) => i,\n    mouseTiltAdjust = (i) => i,\n    mouseRollAdjust = (i) => i,\n    window = defaultWindow\n  } = options;\n  const orientation = reactive(useDeviceOrientation({ window }));\n  const {\n    elementX: x,\n    elementY: y,\n    elementWidth: width,\n    elementHeight: height\n  } = useMouseInElement(target, { handleOutside: false, window });\n  const source = computed(() => {\n    if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0))\n      return \"deviceOrientation\";\n    return \"mouse\";\n  });\n  const roll = computed(() => {\n    if (source.value === \"deviceOrientation\") {\n      const value = -orientation.beta / 90;\n      return deviceOrientationRollAdjust(value);\n    } else {\n      const value = -(y.value - height.value / 2) / height.value;\n      return mouseRollAdjust(value);\n    }\n  });\n  const tilt = computed(() => {\n    if (source.value === \"deviceOrientation\") {\n      const value = orientation.gamma / 90;\n      return deviceOrientationTiltAdjust(value);\n    } else {\n      const value = (x.value - width.value / 2) / width.value;\n      return mouseTiltAdjust(value);\n    }\n  });\n  return { roll, tilt, source };\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$6.call(b, prop))\n      __defNormalProp$6(a, prop, b[prop]);\n  if (__getOwnPropSymbols$6)\n    for (var prop of __getOwnPropSymbols$6(b)) {\n      if (__propIsEnum$6.call(b, prop))\n        __defNormalProp$6(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nconst defaultState = {\n  x: 0,\n  y: 0,\n  pointerId: 0,\n  pressure: 0,\n  tiltX: 0,\n  tiltY: 0,\n  width: 0,\n  height: 0,\n  twist: 0,\n  pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n  const {\n    target = defaultWindow\n  } = options;\n  const isInside = ref(false);\n  const state = ref(options.initialValue || {});\n  Object.assign(state.value, defaultState, state.value);\n  const handler = (event) => {\n    isInside.value = true;\n    if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n      return;\n    state.value = objectPick(event, keys, false);\n  };\n  if (target) {\n    useEventListener(target, \"pointerdown\", handler, { passive: true });\n    useEventListener(target, \"pointermove\", handler, { passive: true });\n    useEventListener(target, \"pointerleave\", () => isInside.value = false, { passive: true });\n  }\n  return __spreadProps$1(__spreadValues$6({}, toRefs(state)), {\n    isInside\n  });\n}\n\nfunction usePointerLock(target, options = {}) {\n  const { document = defaultDocument, pointerLockOptions } = options;\n  const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n  const element = ref();\n  const triggerElement = ref();\n  let targetElement;\n  if (isSupported.value) {\n    useEventListener(document, \"pointerlockchange\", () => {\n      var _a;\n      const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n      if (targetElement && currentElement === targetElement) {\n        element.value = document.pointerLockElement;\n        if (!element.value)\n          targetElement = triggerElement.value = null;\n      }\n    });\n    useEventListener(document, \"pointerlockerror\", () => {\n      var _a;\n      const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n      if (targetElement && currentElement === targetElement) {\n        const action = document.pointerLockElement ? \"release\" : \"acquire\";\n        throw new Error(`Failed to ${action} pointer lock.`);\n      }\n    });\n  }\n  async function lock(e, options2) {\n    var _a;\n    if (!isSupported.value)\n      throw new Error(\"Pointer Lock API is not supported by your browser.\");\n    triggerElement.value = e instanceof Event ? e.currentTarget : null;\n    targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n    if (!targetElement)\n      throw new Error(\"Target element undefined.\");\n    targetElement.requestPointerLock(options2 != null ? options2 : pointerLockOptions);\n    return await until(element).toBe(targetElement);\n  }\n  async function unlock() {\n    if (!element.value)\n      return false;\n    document.exitPointerLock();\n    await until(element).toBeNull();\n    return true;\n  }\n  return {\n    isSupported,\n    element,\n    triggerElement,\n    lock,\n    unlock\n  };\n}\n\nvar SwipeDirection;\n(function(SwipeDirection2) {\n  SwipeDirection2[\"UP\"] = \"UP\";\n  SwipeDirection2[\"RIGHT\"] = \"RIGHT\";\n  SwipeDirection2[\"DOWN\"] = \"DOWN\";\n  SwipeDirection2[\"LEFT\"] = \"LEFT\";\n  SwipeDirection2[\"NONE\"] = \"NONE\";\n})(SwipeDirection || (SwipeDirection = {}));\nfunction useSwipe(target, options = {}) {\n  const {\n    threshold = 50,\n    onSwipe,\n    onSwipeEnd,\n    onSwipeStart,\n    passive = true,\n    window = defaultWindow\n  } = options;\n  const coordsStart = reactive({ x: 0, y: 0 });\n  const coordsEnd = reactive({ x: 0, y: 0 });\n  const diffX = computed(() => coordsStart.x - coordsEnd.x);\n  const diffY = computed(() => coordsStart.y - coordsEnd.y);\n  const { max, abs } = Math;\n  const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n  const isSwiping = ref(false);\n  const direction = computed(() => {\n    if (!isThresholdExceeded.value)\n      return SwipeDirection.NONE;\n    if (abs(diffX.value) > abs(diffY.value)) {\n      return diffX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT;\n    } else {\n      return diffY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN;\n    }\n  });\n  const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n  const updateCoordsStart = (x, y) => {\n    coordsStart.x = x;\n    coordsStart.y = y;\n  };\n  const updateCoordsEnd = (x, y) => {\n    coordsEnd.x = x;\n    coordsEnd.y = y;\n  };\n  let listenerOptions;\n  const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document);\n  if (!passive)\n    listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };\n  else\n    listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };\n  const onTouchEnd = (e) => {\n    if (isSwiping.value)\n      onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n    isSwiping.value = false;\n  };\n  const stops = [\n    useEventListener(target, \"touchstart\", (e) => {\n      if (listenerOptions.capture && !listenerOptions.passive)\n        e.preventDefault();\n      const [x, y] = getTouchEventCoords(e);\n      updateCoordsStart(x, y);\n      updateCoordsEnd(x, y);\n      onSwipeStart == null ? void 0 : onSwipeStart(e);\n    }, listenerOptions),\n    useEventListener(target, \"touchmove\", (e) => {\n      const [x, y] = getTouchEventCoords(e);\n      updateCoordsEnd(x, y);\n      if (!isSwiping.value && isThresholdExceeded.value)\n        isSwiping.value = true;\n      if (isSwiping.value)\n        onSwipe == null ? void 0 : onSwipe(e);\n    }, listenerOptions),\n    useEventListener(target, \"touchend\", onTouchEnd, listenerOptions),\n    useEventListener(target, \"touchcancel\", onTouchEnd, listenerOptions)\n  ];\n  const stop = () => stops.forEach((s) => s());\n  return {\n    isPassiveEventSupported,\n    isSwiping,\n    direction,\n    coordsStart,\n    coordsEnd,\n    lengthX: diffX,\n    lengthY: diffY,\n    stop\n  };\n}\nfunction checkPassiveEventSupport(document) {\n  if (!document)\n    return false;\n  let supportsPassive = false;\n  const optionsBlock = {\n    get passive() {\n      supportsPassive = true;\n      return false;\n    }\n  };\n  document.addEventListener(\"x\", noop, optionsBlock);\n  document.removeEventListener(\"x\", noop);\n  return supportsPassive;\n}\n\nfunction usePointerSwipe(target, options = {}) {\n  const targetRef = resolveRef(target);\n  const {\n    threshold = 50,\n    onSwipe,\n    onSwipeEnd,\n    onSwipeStart\n  } = options;\n  const posStart = reactive({ x: 0, y: 0 });\n  const updatePosStart = (x, y) => {\n    posStart.x = x;\n    posStart.y = y;\n  };\n  const posEnd = reactive({ x: 0, y: 0 });\n  const updatePosEnd = (x, y) => {\n    posEnd.x = x;\n    posEnd.y = y;\n  };\n  const distanceX = computed(() => posStart.x - posEnd.x);\n  const distanceY = computed(() => posStart.y - posEnd.y);\n  const { max, abs } = Math;\n  const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n  const isSwiping = ref(false);\n  const isPointerDown = ref(false);\n  const direction = computed(() => {\n    if (!isThresholdExceeded.value)\n      return SwipeDirection.NONE;\n    if (abs(distanceX.value) > abs(distanceY.value)) {\n      return distanceX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT;\n    } else {\n      return distanceY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN;\n    }\n  });\n  const eventIsAllowed = (e) => {\n    var _a, _b, _c;\n    const isReleasingButton = e.buttons === 0;\n    const isPrimaryButton = e.buttons === 1;\n    return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n  };\n  const stops = [\n    useEventListener(target, \"pointerdown\", (e) => {\n      var _a, _b;\n      if (!eventIsAllowed(e))\n        return;\n      isPointerDown.value = true;\n      (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n      const eventTarget = e.target;\n      eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n      const { clientX: x, clientY: y } = e;\n      updatePosStart(x, y);\n      updatePosEnd(x, y);\n      onSwipeStart == null ? void 0 : onSwipeStart(e);\n    }),\n    useEventListener(target, \"pointermove\", (e) => {\n      if (!eventIsAllowed(e))\n        return;\n      if (!isPointerDown.value)\n        return;\n      const { clientX: x, clientY: y } = e;\n      updatePosEnd(x, y);\n      if (!isSwiping.value && isThresholdExceeded.value)\n        isSwiping.value = true;\n      if (isSwiping.value)\n        onSwipe == null ? void 0 : onSwipe(e);\n    }),\n    useEventListener(target, \"pointerup\", (e) => {\n      var _a, _b;\n      if (!eventIsAllowed(e))\n        return;\n      if (isSwiping.value)\n        onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n      isPointerDown.value = false;\n      isSwiping.value = false;\n      (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"initial\");\n    })\n  ];\n  const stop = () => stops.forEach((s) => s());\n  return {\n    isSwiping: readonly(isSwiping),\n    direction: readonly(direction),\n    posStart: readonly(posStart),\n    posEnd: readonly(posEnd),\n    distanceX,\n    distanceY,\n    stop\n  };\n}\n\nfunction usePreferredColorScheme(options) {\n  const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n  const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n  return computed(() => {\n    if (isDark.value)\n      return \"dark\";\n    if (isLight.value)\n      return \"light\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePreferredContrast(options) {\n  const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n  const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n  const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n  return computed(() => {\n    if (isMore.value)\n      return \"more\";\n    if (isLess.value)\n      return \"less\";\n    if (isCustom.value)\n      return \"custom\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePreferredLanguages(options = {}) {\n  const { window = defaultWindow } = options;\n  if (!window)\n    return ref([\"en\"]);\n  const navigator = window.navigator;\n  const value = ref(navigator.languages);\n  useEventListener(window, \"languagechange\", () => {\n    value.value = navigator.languages;\n  });\n  return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n  const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n  return computed(() => {\n    if (isReduced.value)\n      return \"reduce\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePrevious(value, initialValue) {\n  const previous = shallowRef(initialValue);\n  watch(resolveRef(value), (_, oldValue) => {\n    previous.value = oldValue;\n  }, { flush: \"sync\" });\n  return readonly(previous);\n}\n\nconst useScreenOrientation = (options = {}) => {\n  const {\n    window = defaultWindow\n  } = options;\n  const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n  const screenOrientation = isSupported.value ? window.screen.orientation : {};\n  const orientation = ref(screenOrientation.type);\n  const angle = ref(screenOrientation.angle || 0);\n  if (isSupported.value) {\n    useEventListener(window, \"orientationchange\", () => {\n      orientation.value = screenOrientation.type;\n      angle.value = screenOrientation.angle;\n    });\n  }\n  const lockOrientation = (type) => {\n    if (!isSupported.value)\n      return Promise.reject(new Error(\"Not supported\"));\n    return screenOrientation.lock(type);\n  };\n  const unlockOrientation = () => {\n    if (isSupported.value)\n      screenOrientation.unlock();\n  };\n  return {\n    isSupported,\n    orientation,\n    angle,\n    lockOrientation,\n    unlockOrientation\n  };\n};\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n  const top = ref(\"\");\n  const right = ref(\"\");\n  const bottom = ref(\"\");\n  const left = ref(\"\");\n  if (isClient) {\n    const topCssVar = useCssVar(topVarName);\n    const rightCssVar = useCssVar(rightVarName);\n    const bottomCssVar = useCssVar(bottomVarName);\n    const leftCssVar = useCssVar(leftVarName);\n    topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n    rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n    bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n    leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n    update();\n    useEventListener(\"resize\", useDebounceFn(update));\n  }\n  function update() {\n    top.value = getValue(topVarName);\n    right.value = getValue(rightVarName);\n    bottom.value = getValue(bottomVarName);\n    left.value = getValue(leftVarName);\n  }\n  return {\n    top,\n    right,\n    bottom,\n    left,\n    update\n  };\n}\nfunction getValue(position) {\n  return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n  const {\n    immediate = true,\n    manual = false,\n    type = \"text/javascript\",\n    async = true,\n    crossOrigin,\n    referrerPolicy,\n    noModule,\n    defer,\n    document = defaultDocument,\n    attrs = {}\n  } = options;\n  const scriptTag = ref(null);\n  let _promise = null;\n  const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n    const resolveWithElement = (el2) => {\n      scriptTag.value = el2;\n      resolve(el2);\n      return el2;\n    };\n    if (!document) {\n      resolve(false);\n      return;\n    }\n    let shouldAppend = false;\n    let el = document.querySelector(`script[src=\"${resolveUnref(src)}\"]`);\n    if (!el) {\n      el = document.createElement(\"script\");\n      el.type = type;\n      el.async = async;\n      el.src = resolveUnref(src);\n      if (defer)\n        el.defer = defer;\n      if (crossOrigin)\n        el.crossOrigin = crossOrigin;\n      if (noModule)\n        el.noModule = noModule;\n      if (referrerPolicy)\n        el.referrerPolicy = referrerPolicy;\n      Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n      shouldAppend = true;\n    } else if (el.hasAttribute(\"data-loaded\")) {\n      resolveWithElement(el);\n    }\n    el.addEventListener(\"error\", (event) => reject(event));\n    el.addEventListener(\"abort\", (event) => reject(event));\n    el.addEventListener(\"load\", () => {\n      el.setAttribute(\"data-loaded\", \"true\");\n      onLoaded(el);\n      resolveWithElement(el);\n    });\n    if (shouldAppend)\n      el = document.head.appendChild(el);\n    if (!waitForScriptLoad)\n      resolveWithElement(el);\n  });\n  const load = (waitForScriptLoad = true) => {\n    if (!_promise)\n      _promise = loadScript(waitForScriptLoad);\n    return _promise;\n  };\n  const unload = () => {\n    if (!document)\n      return;\n    _promise = null;\n    if (scriptTag.value)\n      scriptTag.value = null;\n    const el = document.querySelector(`script[src=\"${resolveUnref(src)}\"]`);\n    if (el)\n      document.head.removeChild(el);\n  };\n  if (immediate && !manual)\n    tryOnMounted(load);\n  if (!manual)\n    tryOnUnmounted(unload);\n  return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n  const style = window.getComputedStyle(ele);\n  if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientHeight < ele.scrollHeight || style.overflowY === \"auto\" && ele.clientWidth < ele.scrollWidth) {\n    return true;\n  } else {\n    const parent = ele.parentNode;\n    if (!parent || parent.tagName === \"BODY\")\n      return false;\n    return checkOverflowScroll(parent);\n  }\n}\nfunction preventDefault(rawEvent) {\n  const e = rawEvent || window.event;\n  const _target = e.target;\n  if (checkOverflowScroll(_target))\n    return false;\n  if (e.touches.length > 1)\n    return true;\n  if (e.preventDefault)\n    e.preventDefault();\n  return false;\n}\nfunction useScrollLock(element, initialState = false) {\n  const isLocked = ref(initialState);\n  let stopTouchMoveListener = null;\n  let initialOverflow;\n  watch(resolveRef(element), (el) => {\n    if (el) {\n      const ele = el;\n      initialOverflow = ele.style.overflow;\n      if (isLocked.value)\n        ele.style.overflow = \"hidden\";\n    }\n  }, {\n    immediate: true\n  });\n  const lock = () => {\n    const ele = resolveUnref(element);\n    if (!ele || isLocked.value)\n      return;\n    if (isIOS) {\n      stopTouchMoveListener = useEventListener(ele, \"touchmove\", (e) => {\n        preventDefault(e);\n      }, { passive: false });\n    }\n    ele.style.overflow = \"hidden\";\n    isLocked.value = true;\n  };\n  const unlock = () => {\n    const ele = resolveUnref(element);\n    if (!ele || !isLocked.value)\n      return;\n    isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n    ele.style.overflow = initialOverflow;\n    isLocked.value = false;\n  };\n  tryOnScopeDispose(unlock);\n  return computed({\n    get() {\n      return isLocked.value;\n    },\n    set(v) {\n      if (v)\n        lock();\n      else\n        unlock();\n    }\n  });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n  const { window = defaultWindow } = options;\n  return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$5.call(b, prop))\n      __defNormalProp$5(a, prop, b[prop]);\n  if (__getOwnPropSymbols$5)\n    for (var prop of __getOwnPropSymbols$5(b)) {\n      if (__propIsEnum$5.call(b, prop))\n        __defNormalProp$5(a, prop, b[prop]);\n    }\n  return a;\n};\nfunction useShare(shareOptions = {}, options = {}) {\n  const { navigator = defaultNavigator } = options;\n  const _navigator = navigator;\n  const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n  const share = async (overrideOptions = {}) => {\n    if (isSupported.value) {\n      const data = __spreadValues$5(__spreadValues$5({}, resolveUnref(shareOptions)), resolveUnref(overrideOptions));\n      let granted = true;\n      if (data.files && _navigator.canShare)\n        granted = _navigator.canShare({ files: data.files });\n      if (granted)\n        return _navigator.share(data);\n    }\n  };\n  return {\n    isSupported,\n    share\n  };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n  var _a, _b, _c, _d;\n  const [source] = args;\n  let compareFn = defaultCompare;\n  let options = {};\n  if (args.length === 2) {\n    if (typeof args[1] === \"object\") {\n      options = args[1];\n      compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n    } else {\n      compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n    }\n  } else if (args.length > 2) {\n    compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n    options = (_d = args[2]) != null ? _d : {};\n  }\n  const {\n    dirty = false,\n    sortFn = defaultSortFn\n  } = options;\n  if (!dirty)\n    return computed(() => sortFn([...unref(source)], compareFn));\n  watchEffect(() => {\n    const result = sortFn(unref(source), compareFn);\n    if (isRef(source))\n      source.value = result;\n    else\n      source.splice(0, source.length, ...result);\n  });\n  return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n  const {\n    interimResults = true,\n    continuous = true,\n    window = defaultWindow\n  } = options;\n  const lang = resolveRef(options.lang || \"en-US\");\n  const isListening = ref(false);\n  const isFinal = ref(false);\n  const result = ref(\"\");\n  const error = shallowRef(void 0);\n  const toggle = (value = !isListening.value) => {\n    isListening.value = value;\n  };\n  const start = () => {\n    isListening.value = true;\n  };\n  const stop = () => {\n    isListening.value = false;\n  };\n  const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n  const isSupported = useSupported(() => SpeechRecognition);\n  let recognition;\n  if (isSupported.value) {\n    recognition = new SpeechRecognition();\n    recognition.continuous = continuous;\n    recognition.interimResults = interimResults;\n    recognition.lang = unref(lang);\n    recognition.onstart = () => {\n      isFinal.value = false;\n    };\n    watch(lang, (lang2) => {\n      if (recognition && !isListening.value)\n        recognition.lang = lang2;\n    });\n    recognition.onresult = (event) => {\n      const transcript = Array.from(event.results).map((result2) => {\n        isFinal.value = result2.isFinal;\n        return result2[0];\n      }).map((result2) => result2.transcript).join(\"\");\n      result.value = transcript;\n      error.value = void 0;\n    };\n    recognition.onerror = (event) => {\n      error.value = event;\n    };\n    recognition.onend = () => {\n      isListening.value = false;\n      recognition.lang = unref(lang);\n    };\n    watch(isListening, () => {\n      if (isListening.value)\n        recognition.start();\n      else\n        recognition.stop();\n    });\n  }\n  tryOnScopeDispose(() => {\n    isListening.value = false;\n  });\n  return {\n    isSupported,\n    isListening,\n    isFinal,\n    recognition,\n    result,\n    error,\n    toggle,\n    start,\n    stop\n  };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n  const {\n    pitch = 1,\n    rate = 1,\n    volume = 1,\n    window = defaultWindow\n  } = options;\n  const synth = window && window.speechSynthesis;\n  const isSupported = useSupported(() => synth);\n  const isPlaying = ref(false);\n  const status = ref(\"init\");\n  const spokenText = resolveRef(text || \"\");\n  const lang = resolveRef(options.lang || \"en-US\");\n  const error = shallowRef(void 0);\n  const toggle = (value = !isPlaying.value) => {\n    isPlaying.value = value;\n  };\n  const bindEventsForUtterance = (utterance2) => {\n    utterance2.lang = unref(lang);\n    utterance2.voice = unref(options.voice) || null;\n    utterance2.pitch = pitch;\n    utterance2.rate = rate;\n    utterance2.volume = volume;\n    utterance2.onstart = () => {\n      isPlaying.value = true;\n      status.value = \"play\";\n    };\n    utterance2.onpause = () => {\n      isPlaying.value = false;\n      status.value = \"pause\";\n    };\n    utterance2.onresume = () => {\n      isPlaying.value = true;\n      status.value = \"play\";\n    };\n    utterance2.onend = () => {\n      isPlaying.value = false;\n      status.value = \"end\";\n    };\n    utterance2.onerror = (event) => {\n      error.value = event;\n    };\n  };\n  const utterance = computed(() => {\n    isPlaying.value = false;\n    status.value = \"init\";\n    const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n    bindEventsForUtterance(newUtterance);\n    return newUtterance;\n  });\n  const speak = () => {\n    synth.cancel();\n    utterance && synth.speak(utterance.value);\n  };\n  const stop = () => {\n    synth.cancel();\n    isPlaying.value = false;\n  };\n  if (isSupported.value) {\n    bindEventsForUtterance(utterance.value);\n    watch(lang, (lang2) => {\n      if (utterance.value && !isPlaying.value)\n        utterance.value.lang = lang2;\n    });\n    if (options.voice) {\n      watch(options.voice, () => {\n        synth.cancel();\n      });\n    }\n    watch(isPlaying, () => {\n      if (isPlaying.value)\n        synth.resume();\n      else\n        synth.pause();\n    });\n  }\n  tryOnScopeDispose(() => {\n    isPlaying.value = false;\n  });\n  return {\n    isSupported,\n    isPlaying,\n    status,\n    utterance,\n    error,\n    stop,\n    toggle,\n    speak\n  };\n}\n\nfunction useStepper(steps, initialStep) {\n  const stepsRef = ref(steps);\n  const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n  const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n  const current = computed(() => at(index.value));\n  const isFirst = computed(() => index.value === 0);\n  const isLast = computed(() => index.value === stepNames.value.length - 1);\n  const next = computed(() => stepNames.value[index.value + 1]);\n  const previous = computed(() => stepNames.value[index.value - 1]);\n  function at(index2) {\n    if (Array.isArray(stepsRef.value))\n      return stepsRef.value[index2];\n    return stepsRef.value[stepNames.value[index2]];\n  }\n  function get(step) {\n    if (!stepNames.value.includes(step))\n      return;\n    return at(stepNames.value.indexOf(step));\n  }\n  function goTo(step) {\n    if (stepNames.value.includes(step))\n      index.value = stepNames.value.indexOf(step);\n  }\n  function goToNext() {\n    if (isLast.value)\n      return;\n    index.value++;\n  }\n  function goToPrevious() {\n    if (isFirst.value)\n      return;\n    index.value--;\n  }\n  function goBackTo(step) {\n    if (isAfter(step))\n      goTo(step);\n  }\n  function isNext(step) {\n    return stepNames.value.indexOf(step) === index.value + 1;\n  }\n  function isPrevious(step) {\n    return stepNames.value.indexOf(step) === index.value - 1;\n  }\n  function isCurrent(step) {\n    return stepNames.value.indexOf(step) === index.value;\n  }\n  function isBefore(step) {\n    return index.value < stepNames.value.indexOf(step);\n  }\n  function isAfter(step) {\n    return index.value > stepNames.value.indexOf(step);\n  }\n  return {\n    steps: stepsRef,\n    stepNames,\n    index,\n    current,\n    next,\n    previous,\n    isFirst,\n    isLast,\n    at,\n    get,\n    goTo,\n    goToNext,\n    goToPrevious,\n    goBackTo,\n    isNext,\n    isPrevious,\n    isCurrent,\n    isBefore,\n    isAfter\n  };\n}\n\nvar __defProp$4 = Object.defineProperty;\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$4.call(b, prop))\n      __defNormalProp$4(a, prop, b[prop]);\n  if (__getOwnPropSymbols$4)\n    for (var prop of __getOwnPropSymbols$4(b)) {\n      if (__propIsEnum$4.call(b, prop))\n        __defNormalProp$4(a, prop, b[prop]);\n    }\n  return a;\n};\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n  var _a;\n  const {\n    flush = \"pre\",\n    deep = true,\n    listenToStorageChanges = true,\n    writeDefaults = true,\n    mergeDefaults = false,\n    shallow,\n    window = defaultWindow,\n    eventFilter,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = options;\n  const rawInit = resolveUnref(initialValue);\n  const type = guessSerializerType(rawInit);\n  const data = (shallow ? shallowRef : ref)(initialValue);\n  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n  if (!storage) {\n    try {\n      storage = getSSRHandler(\"getDefaultStorage\", () => {\n        var _a2;\n        return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n      })();\n    } catch (e) {\n      onError(e);\n    }\n  }\n  async function read(event) {\n    if (!storage || event && event.key !== key)\n      return;\n    try {\n      const rawValue = event ? event.newValue : await storage.getItem(key);\n      if (rawValue == null) {\n        data.value = rawInit;\n        if (writeDefaults && rawInit !== null)\n          await storage.setItem(key, await serializer.write(rawInit));\n      } else if (mergeDefaults) {\n        const value = await serializer.read(rawValue);\n        if (isFunction(mergeDefaults))\n          data.value = mergeDefaults(value, rawInit);\n        else if (type === \"object\" && !Array.isArray(value))\n          data.value = __spreadValues$4(__spreadValues$4({}, rawInit), value);\n        else\n          data.value = value;\n      } else {\n        data.value = await serializer.read(rawValue);\n      }\n    } catch (e) {\n      onError(e);\n    }\n  }\n  read();\n  if (window && listenToStorageChanges)\n    useEventListener(window, \"storage\", (e) => setTimeout(() => read(e), 0));\n  if (storage) {\n    watchWithFilter(data, async () => {\n      try {\n        if (data.value == null)\n          await storage.removeItem(key);\n        else\n          await storage.setItem(key, await serializer.write(data.value));\n      } catch (e) {\n        onError(e);\n      }\n    }, {\n      flush,\n      deep,\n      eventFilter\n    });\n  }\n  return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n  const isLoaded = ref(false);\n  const {\n    document = defaultDocument,\n    immediate = true,\n    manual = false,\n    id = `vueuse_styletag_${++_id}`\n  } = options;\n  const cssRef = ref(css);\n  let stop = () => {\n  };\n  const load = () => {\n    if (!document)\n      return;\n    const el = document.getElementById(id) || document.createElement(\"style\");\n    if (!el.isConnected) {\n      el.type = \"text/css\";\n      el.id = id;\n      if (options.media)\n        el.media = options.media;\n      document.head.appendChild(el);\n    }\n    if (isLoaded.value)\n      return;\n    stop = watch(cssRef, (value) => {\n      el.textContent = value;\n    }, { immediate: true });\n    isLoaded.value = true;\n  };\n  const unload = () => {\n    if (!document || !isLoaded.value)\n      return;\n    stop();\n    document.head.removeChild(document.getElementById(id));\n    isLoaded.value = false;\n  };\n  if (immediate && !manual)\n    tryOnMounted(load);\n  if (!manual)\n    tryOnScopeDispose(unload);\n  return {\n    id,\n    css: cssRef,\n    unload,\n    load,\n    isLoaded: readonly(isLoaded)\n  };\n}\n\nfunction useTemplateRefsList() {\n  const refs = ref([]);\n  refs.value.set = (el) => {\n    if (el)\n      refs.value.push(el);\n  };\n  onBeforeUpdate(() => {\n    refs.value.length = 0;\n  });\n  return refs;\n}\n\nfunction useTextDirection(options = {}) {\n  const {\n    document = defaultDocument,\n    selector = \"html\",\n    observe = false,\n    initialValue = \"ltr\"\n  } = options;\n  function getValue() {\n    var _a, _b;\n    return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n  }\n  const dir = ref(getValue());\n  tryOnMounted(() => dir.value = getValue());\n  if (observe && document) {\n    useMutationObserver(document.querySelector(selector), () => dir.value = getValue(), { attributes: true });\n  }\n  return computed({\n    get() {\n      return dir.value;\n    },\n    set(v) {\n      var _a, _b;\n      dir.value = v;\n      if (!document)\n        return;\n      if (dir.value)\n        (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n      else\n        (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n    }\n  });\n}\n\nfunction getRangesFromSelection(selection) {\n  var _a;\n  const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n  const ranges = new Array(rangeCount);\n  for (let i = 0; i < rangeCount; i++) {\n    const range = selection.getRangeAt(i);\n    ranges[i] = range;\n  }\n  return ranges;\n}\nfunction useTextSelection(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const selection = ref(null);\n  const text = computed(() => {\n    var _a, _b;\n    return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n  });\n  const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n  const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n  function onSelectionChange() {\n    selection.value = null;\n    if (window)\n      selection.value = window.getSelection();\n  }\n  if (window)\n    useEventListener(window.document, \"selectionchange\", onSelectionChange);\n  return {\n    text,\n    rects,\n    ranges,\n    selection\n  };\n}\n\nfunction useTextareaAutosize(options) {\n  const textarea = ref(options == null ? void 0 : options.element);\n  const input = ref(options == null ? void 0 : options.input);\n  function triggerResize() {\n    var _a, _b;\n    if (!textarea.value)\n      return;\n    textarea.value.style.height = \"1px\";\n    textarea.value.style.height = `${(_a = textarea.value) == null ? void 0 : _a.scrollHeight}px`;\n    (_b = options == null ? void 0 : options.onResize) == null ? void 0 : _b.call(options);\n  }\n  watch([input, textarea], triggerResize, { immediate: true });\n  useResizeObserver(textarea, () => triggerResize());\n  if (options == null ? void 0 : options.watch)\n    watch(options.watch, triggerResize, { immediate: true, deep: true });\n  return {\n    textarea,\n    input,\n    triggerResize\n  };\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$3.call(b, prop))\n      __defNormalProp$3(a, prop, b[prop]);\n  if (__getOwnPropSymbols$3)\n    for (var prop of __getOwnPropSymbols$3(b)) {\n      if (__propIsEnum$3.call(b, prop))\n        __defNormalProp$3(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction useThrottledRefHistory(source, options = {}) {\n  const { throttle = 200, trailing = true } = options;\n  const filter = throttleFilter(throttle, trailing);\n  const history = useRefHistory(source, __spreadProps(__spreadValues$3({}, options), { eventFilter: filter }));\n  return __spreadValues$3({}, history);\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$2.call(b, prop))\n      __defNormalProp$2(a, prop, b[prop]);\n  if (__getOwnPropSymbols$2)\n    for (var prop of __getOwnPropSymbols$2(b)) {\n      if (__propIsEnum$2.call(b, prop))\n        __defNormalProp$2(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __objRest = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols$2)\n    for (var prop of __getOwnPropSymbols$2(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\nconst DEFAULT_UNITS = [\n  { max: 6e4, value: 1e3, name: \"second\" },\n  { max: 276e4, value: 6e4, name: \"minute\" },\n  { max: 72e6, value: 36e5, name: \"hour\" },\n  { max: 5184e5, value: 864e5, name: \"day\" },\n  { max: 24192e5, value: 6048e5, name: \"week\" },\n  { max: 28512e6, value: 2592e6, name: \"month\" },\n  { max: Infinity, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n  justNow: \"just now\",\n  past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n  future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n  month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n  year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n  day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n  week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n  hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n  minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n  second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n  invalid: \"\"\n};\nconst DEFAULT_FORMATTER = (date) => date.toISOString().slice(0, 10);\nfunction useTimeAgo(time, options = {}) {\n  const {\n    controls: exposeControls = false,\n    updateInterval = 3e4\n  } = options;\n  const _a = useNow({ interval: updateInterval, controls: true }), { now } = _a, controls = __objRest(_a, [\"now\"]);\n  const timeAgo = computed(() => formatTimeAgo(new Date(resolveUnref(time)), options, unref(now.value)));\n  if (exposeControls) {\n    return __spreadValues$2({\n      timeAgo\n    }, controls);\n  } else {\n    return timeAgo;\n  }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n  var _a;\n  const {\n    max,\n    messages = DEFAULT_MESSAGES,\n    fullDateFormatter = DEFAULT_FORMATTER,\n    units = DEFAULT_UNITS,\n    showSecond = false,\n    rounding = \"round\"\n  } = options;\n  const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n  const diff = +now - +from;\n  const absDiff = Math.abs(diff);\n  function getValue(diff2, unit) {\n    return roundFn(Math.abs(diff2) / unit.value);\n  }\n  function format(diff2, unit) {\n    const val = getValue(diff2, unit);\n    const past = diff2 > 0;\n    const str = applyFormat(unit.name, val, past);\n    return applyFormat(past ? \"past\" : \"future\", str, past);\n  }\n  function applyFormat(name, val, isPast) {\n    const formatter = messages[name];\n    if (typeof formatter === \"function\")\n      return formatter(val, isPast);\n    return formatter.replace(\"{0}\", val.toString());\n  }\n  if (absDiff < 6e4 && !showSecond)\n    return messages.justNow;\n  if (typeof max === \"number\" && absDiff > max)\n    return fullDateFormatter(new Date(from));\n  if (typeof max === \"string\") {\n    const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n    if (unitMax && absDiff > unitMax)\n      return fullDateFormatter(new Date(from));\n  }\n  for (const [idx, unit] of units.entries()) {\n    const val = getValue(diff, unit);\n    if (val <= 0 && units[idx - 1])\n      return format(diff, units[idx - 1]);\n    if (absDiff < unit.max)\n      return format(diff, unit);\n  }\n  return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n  const { start } = useTimeoutFn(loop, interval);\n  const isActive = ref(false);\n  async function loop() {\n    if (!isActive.value)\n      return;\n    await fn();\n    start();\n  }\n  function resume() {\n    if (!isActive.value) {\n      isActive.value = true;\n      loop();\n    }\n  }\n  function pause() {\n    isActive.value = false;\n  }\n  if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)\n    resume();\n  tryOnScopeDispose(pause);\n  return {\n    isActive,\n    pause,\n    resume\n  };\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$1.call(b, prop))\n      __defNormalProp$1(a, prop, b[prop]);\n  if (__getOwnPropSymbols$1)\n    for (var prop of __getOwnPropSymbols$1(b)) {\n      if (__propIsEnum$1.call(b, prop))\n        __defNormalProp$1(a, prop, b[prop]);\n    }\n  return a;\n};\nfunction useTimestamp(options = {}) {\n  const {\n    controls: exposeControls = false,\n    offset = 0,\n    immediate = true,\n    interval = \"requestAnimationFrame\",\n    callback\n  } = options;\n  const ts = ref(timestamp() + offset);\n  const update = () => ts.value = timestamp() + offset;\n  const cb = callback ? () => {\n    update();\n    callback(ts.value);\n  } : update;\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n  if (exposeControls) {\n    return __spreadValues$1({\n      timestamp: ts\n    }, controls);\n  } else {\n    return ts;\n  }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n  var _a, _b;\n  const {\n    document = defaultDocument\n  } = options;\n  const title = resolveRef((_a = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _a : null);\n  const isReadonly = newTitle && isFunction(newTitle);\n  function format(t) {\n    if (!(\"titleTemplate\" in options))\n      return t;\n    const template = options.titleTemplate || \"%s\";\n    return isFunction(template) ? template(t) : unref(template).replace(/%s/g, t);\n  }\n  watch(title, (t, o) => {\n    if (t !== o && document)\n      document.title = format(isString(t) ? t : \"\");\n  }, { immediate: true });\n  if (options.observe && !options.titleTemplate && document && !isReadonly) {\n    useMutationObserver((_b = document.head) == null ? void 0 : _b.querySelector(\"title\"), () => {\n      if (document && document.title !== title.value)\n        title.value = format(document.title);\n    }, { childList: true });\n  }\n  return title;\n}\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nconst _TransitionPresets = {\n  easeInSine: [0.12, 0, 0.39, 0],\n  easeOutSine: [0.61, 1, 0.88, 1],\n  easeInOutSine: [0.37, 0, 0.63, 1],\n  easeInQuad: [0.11, 0, 0.5, 0],\n  easeOutQuad: [0.5, 1, 0.89, 1],\n  easeInOutQuad: [0.45, 0, 0.55, 1],\n  easeInCubic: [0.32, 0, 0.67, 0],\n  easeOutCubic: [0.33, 1, 0.68, 1],\n  easeInOutCubic: [0.65, 0, 0.35, 1],\n  easeInQuart: [0.5, 0, 0.75, 0],\n  easeOutQuart: [0.25, 1, 0.5, 1],\n  easeInOutQuart: [0.76, 0, 0.24, 1],\n  easeInQuint: [0.64, 0, 0.78, 0],\n  easeOutQuint: [0.22, 1, 0.36, 1],\n  easeInOutQuint: [0.83, 0, 0.17, 1],\n  easeInExpo: [0.7, 0, 0.84, 0],\n  easeOutExpo: [0.16, 1, 0.3, 1],\n  easeInOutExpo: [0.87, 0, 0.13, 1],\n  easeInCirc: [0.55, 0, 1, 0.45],\n  easeOutCirc: [0, 0.55, 0.45, 1],\n  easeInOutCirc: [0.85, 0, 0.15, 1],\n  easeInBack: [0.36, 0, 0.66, -0.56],\n  easeOutBack: [0.34, 1.56, 0.64, 1],\n  easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = __spreadValues({\n  linear: identity\n}, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n  const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n  const b = (a1, a2) => 3 * a2 - 6 * a1;\n  const c = (a1) => 3 * a1;\n  const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n  const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n  const getTforX = (x) => {\n    let aGuessT = x;\n    for (let i = 0; i < 4; ++i) {\n      const currentSlope = getSlope(aGuessT, p0, p2);\n      if (currentSlope === 0)\n        return aGuessT;\n      const currentX = calcBezier(aGuessT, p0, p2) - x;\n      aGuessT -= currentX / currentSlope;\n    }\n    return aGuessT;\n  };\n  return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction useTransition(source, options = {}) {\n  const {\n    delay = 0,\n    disabled = false,\n    duration = 1e3,\n    onFinished = noop,\n    onStarted = noop,\n    transition = identity\n  } = options;\n  const currentTransition = computed(() => {\n    const t = unref(transition);\n    return isFunction(t) ? t : createEasingFunction(t);\n  });\n  const sourceValue = computed(() => {\n    const s = unref(source);\n    return isNumber(s) ? s : s.map(unref);\n  });\n  const sourceVector = computed(() => isNumber(sourceValue.value) ? [sourceValue.value] : sourceValue.value);\n  const outputVector = ref(sourceVector.value.slice(0));\n  let currentDuration;\n  let diffVector;\n  let endAt;\n  let startAt;\n  let startVector;\n  const { resume, pause } = useRafFn(() => {\n    const now = Date.now();\n    const progress = clamp(1 - (endAt - now) / currentDuration, 0, 1);\n    outputVector.value = startVector.map((val, i) => {\n      var _a;\n      return val + ((_a = diffVector[i]) != null ? _a : 0) * currentTransition.value(progress);\n    });\n    if (progress >= 1) {\n      pause();\n      onFinished();\n    }\n  }, { immediate: false });\n  const start = () => {\n    pause();\n    currentDuration = unref(duration);\n    diffVector = outputVector.value.map((n, i) => {\n      var _a, _b;\n      return ((_a = sourceVector.value[i]) != null ? _a : 0) - ((_b = outputVector.value[i]) != null ? _b : 0);\n    });\n    startVector = outputVector.value.slice(0);\n    startAt = Date.now();\n    endAt = startAt + currentDuration;\n    resume();\n    onStarted();\n  };\n  const timeout = useTimeoutFn(start, delay, { immediate: false });\n  watch(sourceVector, () => {\n    if (unref(disabled))\n      return;\n    if (unref(delay) <= 0)\n      start();\n    else\n      timeout.start();\n  }, { deep: true });\n  watch(() => unref(disabled), (v) => {\n    if (v) {\n      outputVector.value = sourceVector.value.slice(0);\n      pause();\n    }\n  });\n  return computed(() => {\n    const targetVector = unref(disabled) ? sourceVector : outputVector;\n    return isNumber(sourceValue.value) ? targetVector.value[0] : targetVector.value;\n  });\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n  const {\n    initialValue = {},\n    removeNullishValues = true,\n    removeFalsyValues = false,\n    write: enableWrite = true,\n    window = defaultWindow\n  } = options;\n  if (!window)\n    return reactive(initialValue);\n  const state = reactive({});\n  function getRawParams() {\n    if (mode === \"history\") {\n      return window.location.search || \"\";\n    } else if (mode === \"hash\") {\n      const hash = window.location.hash || \"\";\n      const index = hash.indexOf(\"?\");\n      return index > 0 ? hash.slice(index) : \"\";\n    } else {\n      return (window.location.hash || \"\").replace(/^#/, \"\");\n    }\n  }\n  function constructQuery(params) {\n    const stringified = params.toString();\n    if (mode === \"history\")\n      return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n    if (mode === \"hash-params\")\n      return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n    const hash = window.location.hash || \"#\";\n    const index = hash.indexOf(\"?\");\n    if (index > 0)\n      return `${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n    return `${hash}${stringified ? `?${stringified}` : \"\"}`;\n  }\n  function read() {\n    return new URLSearchParams(getRawParams());\n  }\n  function updateState(params) {\n    const unusedKeys = new Set(Object.keys(state));\n    for (const key of params.keys()) {\n      const paramsForKey = params.getAll(key);\n      state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n      unusedKeys.delete(key);\n    }\n    Array.from(unusedKeys).forEach((key) => delete state[key]);\n  }\n  const { pause, resume } = pausableWatch(state, () => {\n    const params = new URLSearchParams(\"\");\n    Object.keys(state).forEach((key) => {\n      const mapEntry = state[key];\n      if (Array.isArray(mapEntry))\n        mapEntry.forEach((value) => params.append(key, value));\n      else if (removeNullishValues && mapEntry == null)\n        params.delete(key);\n      else if (removeFalsyValues && !mapEntry)\n        params.delete(key);\n      else\n        params.set(key, mapEntry);\n    });\n    write(params);\n  }, { deep: true });\n  function write(params, shouldUpdate) {\n    pause();\n    if (shouldUpdate)\n      updateState(params);\n    window.history.replaceState(window.history.state, window.document.title, window.location.pathname + constructQuery(params));\n    resume();\n  }\n  function onChanged() {\n    if (!enableWrite)\n      return;\n    write(read(), true);\n  }\n  useEventListener(window, \"popstate\", onChanged, false);\n  if (mode !== \"history\")\n    useEventListener(window, \"hashchange\", onChanged, false);\n  const initial = read();\n  if (initial.keys().next().value)\n    updateState(initial);\n  else\n    Object.assign(state, initialValue);\n  return state;\n}\n\nfunction useUserMedia(options = {}) {\n  var _a, _b;\n  const enabled = ref((_a = options.enabled) != null ? _a : false);\n  const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);\n  const videoDeviceId = ref(options.videoDeviceId);\n  const audioDeviceId = ref(options.audioDeviceId);\n  const { navigator = defaultNavigator } = options;\n  const isSupported = useSupported(() => {\n    var _a2;\n    return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n  });\n  const stream = shallowRef();\n  function getDeviceOptions(device) {\n    if (device.value === \"none\" || device.value === false)\n      return false;\n    if (device.value == null)\n      return true;\n    return {\n      deviceId: device.value\n    };\n  }\n  async function _start() {\n    if (!isSupported.value || stream.value)\n      return;\n    stream.value = await navigator.mediaDevices.getUserMedia({\n      video: getDeviceOptions(videoDeviceId),\n      audio: getDeviceOptions(audioDeviceId)\n    });\n    return stream.value;\n  }\n  async function _stop() {\n    var _a2;\n    (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n    stream.value = void 0;\n  }\n  function stop() {\n    _stop();\n    enabled.value = false;\n  }\n  async function start() {\n    await _start();\n    if (stream.value)\n      enabled.value = true;\n    return stream.value;\n  }\n  async function restart() {\n    _stop();\n    return await start();\n  }\n  watch(enabled, (v) => {\n    if (v)\n      _start();\n    else\n      _stop();\n  }, { immediate: true });\n  watch([videoDeviceId, audioDeviceId], () => {\n    if (autoSwitch.value && stream.value)\n      restart();\n  }, { immediate: true });\n  return {\n    isSupported,\n    stream,\n    start,\n    stop,\n    restart,\n    videoDeviceId,\n    audioDeviceId,\n    enabled,\n    autoSwitch\n  };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n  var _a, _b, _c, _d, _e;\n  const {\n    clone = false,\n    passive = false,\n    eventName,\n    deep = false,\n    defaultValue\n  } = options;\n  const vm = getCurrentInstance();\n  const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n  let event = eventName;\n  if (!key) {\n    if (isVue2) {\n      const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model;\n      key = (modelOptions == null ? void 0 : modelOptions.value) || \"value\";\n      if (!eventName)\n        event = (modelOptions == null ? void 0 : modelOptions.event) || \"input\";\n    } else {\n      key = \"modelValue\";\n    }\n  }\n  event = eventName || event || `update:${key.toString()}`;\n  const cloneFn = (val) => !clone ? val : isFunction(clone) ? clone(val) : cloneFnJSON(val);\n  const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n  if (passive) {\n    const initialValue = getValue();\n    const proxy = ref(initialValue);\n    watch(() => props[key], (v) => proxy.value = cloneFn(v));\n    watch(proxy, (v) => {\n      if (v !== props[key] || deep)\n        _emit(event, v);\n    }, { deep });\n    return proxy;\n  } else {\n    return computed({\n      get() {\n        return getValue();\n      },\n      set(value) {\n        _emit(event, value);\n      }\n    });\n  }\n}\n\nfunction useVModels(props, emit, options = {}) {\n  const ret = {};\n  for (const key in props)\n    ret[key] = useVModel(props, key, emit, options);\n  return ret;\n}\n\nfunction useVibrate(options) {\n  const {\n    pattern = [],\n    interval = 0,\n    navigator = defaultNavigator\n  } = options || {};\n  const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n  const patternRef = resolveRef(pattern);\n  let intervalControls;\n  const vibrate = (pattern2 = patternRef.value) => {\n    if (isSupported.value)\n      navigator.vibrate(pattern2);\n  };\n  const stop = () => {\n    if (isSupported.value)\n      navigator.vibrate(0);\n    intervalControls == null ? void 0 : intervalControls.pause();\n  };\n  if (interval > 0) {\n    intervalControls = useIntervalFn(vibrate, interval, {\n      immediate: false,\n      immediateCallback: false\n    });\n  }\n  return {\n    isSupported,\n    pattern,\n    intervalControls,\n    vibrate,\n    stop\n  };\n}\n\nfunction useVirtualList(list, options) {\n  const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n  return {\n    list: currentList,\n    scrollTo,\n    containerProps: {\n      ref: containerRef,\n      onScroll: () => {\n        calculateRange();\n      },\n      style: containerStyle\n    },\n    wrapperProps\n  };\n}\nfunction useVirtualListResources(list) {\n  const containerRef = ref(null);\n  const size = useElementSize(containerRef);\n  const currentList = ref([]);\n  const source = shallowRef(list);\n  const state = ref({ start: 0, end: 10 });\n  return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n  return (containerSize) => {\n    if (typeof itemSize === \"number\")\n      return Math.ceil(containerSize / itemSize);\n    const { start = 0 } = state.value;\n    let sum = 0;\n    let capacity = 0;\n    for (let i = start; i < source.value.length; i++) {\n      const size = itemSize(i);\n      sum += size;\n      capacity = i;\n      if (sum > containerSize)\n        break;\n    }\n    return capacity - start;\n  };\n}\nfunction createGetOffset(source, itemSize) {\n  return (scrollDirection) => {\n    if (typeof itemSize === \"number\")\n      return Math.floor(scrollDirection / itemSize) + 1;\n    let sum = 0;\n    let offset = 0;\n    for (let i = 0; i < source.value.length; i++) {\n      const size = itemSize(i);\n      sum += size;\n      if (sum >= scrollDirection) {\n        offset = i;\n        break;\n      }\n    }\n    return offset + 1;\n  };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n  return () => {\n    const element = containerRef.value;\n    if (element) {\n      const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n      const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n      const from = offset - overscan;\n      const to = offset + viewCapacity + overscan;\n      state.value = {\n        start: from < 0 ? 0 : from,\n        end: to > source.value.length ? source.value.length : to\n      };\n      currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n        data: ele,\n        index: index + state.value.start\n      }));\n    }\n  };\n}\nfunction createGetDistance(itemSize, source) {\n  return (index) => {\n    if (typeof itemSize === \"number\") {\n      const size2 = index * itemSize;\n      return size2;\n    }\n    const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n    return size;\n  };\n}\nfunction useWatchForSizes(size, list, calculateRange) {\n  watch([size.width, size.height, list], () => {\n    calculateRange();\n  });\n}\nfunction createComputedTotalSize(itemSize, source) {\n  return computed(() => {\n    if (typeof itemSize === \"number\")\n      return source.value.length * itemSize;\n    return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n  });\n}\nconst scrollToDictionaryForElementScrollKey = {\n  horizontal: \"scrollLeft\",\n  vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n  return (index) => {\n    if (containerRef.value) {\n      containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n      calculateRange();\n    }\n  };\n}\nfunction useHorizontalVirtualList(options, list) {\n  const resources = useVirtualListResources(list);\n  const { state, source, currentList, size, containerRef } = resources;\n  const containerStyle = { overflowX: \"auto\" };\n  const { itemWidth, overscan = 5 } = options;\n  const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n  const getOffset = createGetOffset(source, itemWidth);\n  const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n  const getDistanceLeft = createGetDistance(itemWidth, source);\n  const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n  const totalWidth = createComputedTotalSize(itemWidth, source);\n  useWatchForSizes(size, list, calculateRange);\n  const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n  const wrapperProps = computed(() => {\n    return {\n      style: {\n        height: \"100%\",\n        width: `${totalWidth.value - offsetLeft.value}px`,\n        marginLeft: `${offsetLeft.value}px`,\n        display: \"flex\"\n      }\n    };\n  });\n  return {\n    scrollTo,\n    calculateRange,\n    wrapperProps,\n    containerStyle,\n    currentList,\n    containerRef\n  };\n}\nfunction useVerticalVirtualList(options, list) {\n  const resources = useVirtualListResources(list);\n  const { state, source, currentList, size, containerRef } = resources;\n  const containerStyle = { overflowY: \"auto\" };\n  const { itemHeight, overscan = 5 } = options;\n  const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n  const getOffset = createGetOffset(source, itemHeight);\n  const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n  const getDistanceTop = createGetDistance(itemHeight, source);\n  const offsetTop = computed(() => getDistanceTop(state.value.start));\n  const totalHeight = createComputedTotalSize(itemHeight, source);\n  useWatchForSizes(size, list, calculateRange);\n  const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n  const wrapperProps = computed(() => {\n    return {\n      style: {\n        width: \"100%\",\n        height: `${totalHeight.value - offsetTop.value}px`,\n        marginTop: `${offsetTop.value}px`\n      }\n    };\n  });\n  return {\n    calculateRange,\n    scrollTo,\n    containerStyle,\n    wrapperProps,\n    currentList,\n    containerRef\n  };\n}\n\nconst useWakeLock = (options = {}) => {\n  const {\n    navigator = defaultNavigator,\n    document = defaultDocument\n  } = options;\n  let wakeLock;\n  const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n  const isActive = ref(false);\n  async function onVisibilityChange() {\n    if (!isSupported.value || !wakeLock)\n      return;\n    if (document && document.visibilityState === \"visible\")\n      wakeLock = await navigator.wakeLock.request(\"screen\");\n    isActive.value = !wakeLock.released;\n  }\n  if (document)\n    useEventListener(document, \"visibilitychange\", onVisibilityChange, { passive: true });\n  async function request(type) {\n    if (!isSupported.value)\n      return;\n    wakeLock = await navigator.wakeLock.request(type);\n    isActive.value = !wakeLock.released;\n  }\n  async function release() {\n    if (!isSupported.value || !wakeLock)\n      return;\n    await wakeLock.release();\n    isActive.value = !wakeLock.released;\n    wakeLock = null;\n  }\n  return {\n    isSupported,\n    isActive,\n    request,\n    release\n  };\n};\n\nconst useWebNotification = (defaultOptions = {}) => {\n  const {\n    window = defaultWindow\n  } = defaultOptions;\n  const isSupported = useSupported(() => !!window && \"Notification\" in window);\n  const notification = ref(null);\n  const requestPermission = async () => {\n    if (!isSupported.value)\n      return;\n    if (\"permission\" in Notification && Notification.permission !== \"denied\")\n      await Notification.requestPermission();\n  };\n  const onClick = createEventHook();\n  const onShow = createEventHook();\n  const onError = createEventHook();\n  const onClose = createEventHook();\n  const show = async (overrides) => {\n    if (!isSupported.value)\n      return;\n    await requestPermission();\n    const options = Object.assign({}, defaultOptions, overrides);\n    notification.value = new Notification(options.title || \"\", options);\n    notification.value.onclick = (event) => onClick.trigger(event);\n    notification.value.onshow = (event) => onShow.trigger(event);\n    notification.value.onerror = (event) => onError.trigger(event);\n    notification.value.onclose = (event) => onClose.trigger(event);\n    return notification.value;\n  };\n  const close = () => {\n    if (notification.value)\n      notification.value.close();\n    notification.value = null;\n  };\n  tryOnMounted(async () => {\n    if (isSupported.value)\n      await requestPermission();\n  });\n  tryOnScopeDispose(close);\n  if (isSupported.value && window) {\n    const document = window.document;\n    useEventListener(document, \"visibilitychange\", (e) => {\n      e.preventDefault();\n      if (document.visibilityState === \"visible\") {\n        close();\n      }\n    });\n  }\n  return {\n    isSupported,\n    notification,\n    show,\n    close,\n    onClick,\n    onShow,\n    onError,\n    onClose\n  };\n};\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n  if (options === true)\n    return {};\n  return options;\n}\nfunction useWebSocket(url, options = {}) {\n  const {\n    onConnected,\n    onDisconnected,\n    onError,\n    onMessage,\n    immediate = true,\n    autoClose = true,\n    protocols = []\n  } = options;\n  const data = ref(null);\n  const status = ref(\"CLOSED\");\n  const wsRef = ref();\n  const urlRef = resolveRef(url);\n  let heartbeatPause;\n  let heartbeatResume;\n  let explicitlyClosed = false;\n  let retried = 0;\n  let bufferedData = [];\n  let pongTimeoutWait;\n  const close = (code = 1e3, reason) => {\n    if (!wsRef.value)\n      return;\n    explicitlyClosed = true;\n    heartbeatPause == null ? void 0 : heartbeatPause();\n    wsRef.value.close(code, reason);\n  };\n  const _sendBuffer = () => {\n    if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n      for (const buffer of bufferedData)\n        wsRef.value.send(buffer);\n      bufferedData = [];\n    }\n  };\n  const resetHeartbeat = () => {\n    clearTimeout(pongTimeoutWait);\n    pongTimeoutWait = void 0;\n  };\n  const send = (data2, useBuffer = true) => {\n    if (!wsRef.value || status.value !== \"OPEN\") {\n      if (useBuffer)\n        bufferedData.push(data2);\n      return false;\n    }\n    _sendBuffer();\n    wsRef.value.send(data2);\n    return true;\n  };\n  const _init = () => {\n    if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n      return;\n    const ws = new WebSocket(urlRef.value, protocols);\n    wsRef.value = ws;\n    status.value = \"CONNECTING\";\n    ws.onopen = () => {\n      status.value = \"OPEN\";\n      onConnected == null ? void 0 : onConnected(ws);\n      heartbeatResume == null ? void 0 : heartbeatResume();\n      _sendBuffer();\n    };\n    ws.onclose = (ev) => {\n      status.value = \"CLOSED\";\n      wsRef.value = void 0;\n      onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n      if (!explicitlyClosed && options.autoReconnect) {\n        const {\n          retries = -1,\n          delay = 1e3,\n          onFailed\n        } = resolveNestedOptions(options.autoReconnect);\n        retried += 1;\n        if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n          setTimeout(_init, delay);\n        else if (typeof retries === \"function\" && retries())\n          setTimeout(_init, delay);\n        else\n          onFailed == null ? void 0 : onFailed();\n      }\n    };\n    ws.onerror = (e) => {\n      onError == null ? void 0 : onError(ws, e);\n    };\n    ws.onmessage = (e) => {\n      if (options.heartbeat) {\n        resetHeartbeat();\n        const {\n          message = DEFAULT_PING_MESSAGE\n        } = resolveNestedOptions(options.heartbeat);\n        if (e.data === message)\n          return;\n      }\n      data.value = e.data;\n      onMessage == null ? void 0 : onMessage(ws, e);\n    };\n  };\n  if (options.heartbeat) {\n    const {\n      message = DEFAULT_PING_MESSAGE,\n      interval = 1e3,\n      pongTimeout = 1e3\n    } = resolveNestedOptions(options.heartbeat);\n    const { pause, resume } = useIntervalFn(() => {\n      send(message, false);\n      if (pongTimeoutWait != null)\n        return;\n      pongTimeoutWait = setTimeout(() => {\n        close();\n      }, pongTimeout);\n    }, interval, { immediate: false });\n    heartbeatPause = pause;\n    heartbeatResume = resume;\n  }\n  if (autoClose) {\n    useEventListener(window, \"beforeunload\", () => close());\n    tryOnScopeDispose(close);\n  }\n  const open = () => {\n    close();\n    explicitlyClosed = false;\n    retried = 0;\n    _init();\n  };\n  if (immediate)\n    watch(urlRef, open, { immediate: true });\n  return {\n    data,\n    status,\n    close,\n    send,\n    open,\n    ws: wsRef\n  };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n  const {\n    window = defaultWindow\n  } = options != null ? options : {};\n  const data = ref(null);\n  const worker = shallowRef();\n  const post = function post2(val) {\n    if (!worker.value)\n      return;\n    worker.value.postMessage(val);\n  };\n  const terminate = function terminate2() {\n    if (!worker.value)\n      return;\n    worker.value.terminate();\n  };\n  if (window) {\n    if (isString(arg0))\n      worker.value = new Worker(arg0, workerOptions);\n    else if (isFunction(arg0))\n      worker.value = arg0();\n    else\n      worker.value = arg0;\n    worker.value.onmessage = (e) => {\n      data.value = e.data;\n    };\n    tryOnScopeDispose(() => {\n      if (worker.value)\n        worker.value.terminate();\n    });\n  }\n  return {\n    data,\n    post,\n    terminate,\n    worker\n  };\n}\n\nconst jobRunner = (userFunc) => (e) => {\n  const userFuncArgs = e.data[0];\n  return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n    postMessage([\"SUCCESS\", result]);\n  }).catch((error) => {\n    postMessage([\"ERROR\", error]);\n  });\n};\n\nconst depsParser = (deps) => {\n  if (deps.length === 0)\n    return \"\";\n  const depsString = deps.map((dep) => `'${dep}'`).toString();\n  return `importScripts(${depsString})`;\n};\n\nconst createWorkerBlobUrl = (fn, deps) => {\n  const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`;\n  const blob = new Blob([blobCode], { type: \"text/javascript\" });\n  const url = URL.createObjectURL(blob);\n  return url;\n};\n\nconst useWebWorkerFn = (fn, options = {}) => {\n  const {\n    dependencies = [],\n    timeout,\n    window = defaultWindow\n  } = options;\n  const worker = ref();\n  const workerStatus = ref(\"PENDING\");\n  const promise = ref({});\n  const timeoutId = ref();\n  const workerTerminate = (status = \"PENDING\") => {\n    if (worker.value && worker.value._url && window) {\n      worker.value.terminate();\n      URL.revokeObjectURL(worker.value._url);\n      promise.value = {};\n      worker.value = void 0;\n      window.clearTimeout(timeoutId.value);\n      workerStatus.value = status;\n    }\n  };\n  workerTerminate();\n  tryOnScopeDispose(workerTerminate);\n  const generateWorker = () => {\n    const blobUrl = createWorkerBlobUrl(fn, dependencies);\n    const newWorker = new Worker(blobUrl);\n    newWorker._url = blobUrl;\n    newWorker.onmessage = (e) => {\n      const { resolve = () => {\n      }, reject = () => {\n      } } = promise.value;\n      const [status, result] = e.data;\n      switch (status) {\n        case \"SUCCESS\":\n          resolve(result);\n          workerTerminate(status);\n          break;\n        default:\n          reject(result);\n          workerTerminate(\"ERROR\");\n          break;\n      }\n    };\n    newWorker.onerror = (e) => {\n      const { reject = () => {\n      } } = promise.value;\n      reject(e);\n      workerTerminate(\"ERROR\");\n    };\n    if (timeout) {\n      timeoutId.value = setTimeout(() => workerTerminate(\"TIMEOUT_EXPIRED\"), timeout);\n    }\n    return newWorker;\n  };\n  const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n    promise.value = {\n      resolve,\n      reject\n    };\n    worker.value && worker.value.postMessage([[...fnArgs]]);\n    workerStatus.value = \"RUNNING\";\n  });\n  const workerFn = (...fnArgs) => {\n    if (workerStatus.value === \"RUNNING\") {\n      console.error(\"[useWebWorkerFn] You can only run one instance of the worker at a time.\");\n      return Promise.reject();\n    }\n    worker.value = generateWorker();\n    return callWorker(...fnArgs);\n  };\n  return {\n    workerFn,\n    workerStatus,\n    workerTerminate\n  };\n};\n\nfunction useWindowFocus({ window = defaultWindow } = {}) {\n  if (!window)\n    return ref(false);\n  const focused = ref(window.document.hasFocus());\n  useEventListener(window, \"blur\", () => {\n    focused.value = false;\n  });\n  useEventListener(window, \"focus\", () => {\n    focused.value = true;\n  });\n  return focused;\n}\n\nfunction useWindowScroll({ window = defaultWindow } = {}) {\n  if (!window) {\n    return {\n      x: ref(0),\n      y: ref(0)\n    };\n  }\n  const x = ref(window.scrollX);\n  const y = ref(window.scrollY);\n  useEventListener(window, \"scroll\", () => {\n    x.value = window.scrollX;\n    y.value = window.scrollY;\n  }, {\n    capture: false,\n    passive: true\n  });\n  return { x, y };\n}\n\nfunction useWindowSize(options = {}) {\n  const {\n    window = defaultWindow,\n    initialWidth = Infinity,\n    initialHeight = Infinity,\n    listenOrientation = true,\n    includeScrollbar = true\n  } = options;\n  const width = ref(initialWidth);\n  const height = ref(initialHeight);\n  const update = () => {\n    if (window) {\n      if (includeScrollbar) {\n        width.value = window.innerWidth;\n        height.value = window.innerHeight;\n      } else {\n        width.value = window.document.documentElement.clientWidth;\n        height.value = window.document.documentElement.clientHeight;\n      }\n    }\n  };\n  update();\n  tryOnMounted(update);\n  useEventListener(\"resize\", update, { passive: true });\n  if (listenOrientation)\n    useEventListener(\"orientationchange\", update, { passive: true });\n  return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, SwipeDirection, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsMasterCss, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, cloneFnJSON, computedAsync, computedInject, createFetch, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useCloned, useColorMode, useConfirmDialog, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePrevious, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","(function (factory) {\n    if (typeof exports === 'object') {\n        // Node/CommonJS\n        module.exports = factory();\n    } else if (typeof define === 'function' && define.amd) {\n        // AMD\n        define(factory);\n    } else {\n        // Browser globals (with support for web workers)\n        var glob;\n\n        try {\n            glob = window;\n        } catch (e) {\n            glob = self;\n        }\n\n        glob.SparkMD5 = factory();\n    }\n}(function (undefined) {\n\n    'use strict';\n\n    /*\n     * Fastest md5 implementation around (JKM md5).\n     * Credits: Joseph Myers\n     *\n     * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n     * @see http://jsperf.com/md5-shootout/7\n     */\n\n    /* this function is much faster,\n      so if possible we use it. Some IEs\n      are the only ones I know of that\n      need the idiotic second function,\n      generated by an if clause.  */\n    var add32 = function (a, b) {\n        return (a + b) & 0xFFFFFFFF;\n    },\n        hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n\n\n    function cmn(q, a, b, x, s, t) {\n        a = add32(add32(a, q), add32(x, t));\n        return add32((a << s) | (a >>> (32 - s)), b);\n    }\n\n    function md5cycle(x, k) {\n        var a = x[0],\n            b = x[1],\n            c = x[2],\n            d = x[3];\n\n        a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n        a  = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n        d  = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n        c  = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n        b  = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n        a  = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n        d  = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n        c  = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n        b  = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n        a  = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n        d  = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[10] - 42063 | 0;\n        c  = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n        b  = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n        a  = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n        d  = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n        c  = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n        b  = (b << 22 | b >>> 10) + c | 0;\n\n        a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n        a  = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n        d  = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n        c  = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n        b  = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n        a  = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n        d  = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n        c  = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n        b  = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n        a  = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n        d  = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n        c  = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n        b  = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n        a  = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n        d  = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n        c  = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n        b  = (b << 20 | b >>> 12) + c | 0;\n\n        a += (b ^ c ^ d) + k[5] - 378558 | 0;\n        a  = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n        d  = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n        c  = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n        b  = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n        a  = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n        d  = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n        c  = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n        b  = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n        a  = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n        d  = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n        c  = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n        b  = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n        a  = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n        d  = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n        c  = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n        b  = (b << 23 | b >>> 9) + c | 0;\n\n        a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n        a  = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n        d  = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n        c  = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n        b  = (b << 21 |b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n        a  = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n        d  = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n        c  = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n        b  = (b << 21 |b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n        a  = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n        d  = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n        c  = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n        b  = (b << 21 |b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n        a  = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n        d  = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n        c  = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n        b  = (b << 21 | b >>> 11) + c | 0;\n\n        x[0] = a + x[0] | 0;\n        x[1] = b + x[1] | 0;\n        x[2] = c + x[2] | 0;\n        x[3] = d + x[3] | 0;\n    }\n\n    function md5blk(s) {\n        var md5blks = [],\n            i; /* Andy King said do it this way. */\n\n        for (i = 0; i < 64; i += 4) {\n            md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n        }\n        return md5blks;\n    }\n\n    function md5blk_array(a) {\n        var md5blks = [],\n            i; /* Andy King said do it this way. */\n\n        for (i = 0; i < 64; i += 4) {\n            md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n        }\n        return md5blks;\n    }\n\n    function md51(s) {\n        var n = s.length,\n            state = [1732584193, -271733879, -1732584194, 271733878],\n            i,\n            length,\n            tail,\n            tmp,\n            lo,\n            hi;\n\n        for (i = 64; i <= n; i += 64) {\n            md5cycle(state, md5blk(s.substring(i - 64, i)));\n        }\n        s = s.substring(i - 64);\n        length = s.length;\n        tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n        for (i = 0; i < length; i += 1) {\n            tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n        }\n        tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n        if (i > 55) {\n            md5cycle(state, tail);\n            for (i = 0; i < 16; i += 1) {\n                tail[i] = 0;\n            }\n        }\n\n        // Beware that the final length might not fit in 32 bits so we take care of that\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n\n        tail[14] = lo;\n        tail[15] = hi;\n\n        md5cycle(state, tail);\n        return state;\n    }\n\n    function md51_array(a) {\n        var n = a.length,\n            state = [1732584193, -271733879, -1732584194, 271733878],\n            i,\n            length,\n            tail,\n            tmp,\n            lo,\n            hi;\n\n        for (i = 64; i <= n; i += 64) {\n            md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n        }\n\n        // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n        // containing the last element of the parent array if the sub array specified starts\n        // beyond the length of the parent array - weird.\n        // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n        a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n\n        length = a.length;\n        tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n        for (i = 0; i < length; i += 1) {\n            tail[i >> 2] |= a[i] << ((i % 4) << 3);\n        }\n\n        tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n        if (i > 55) {\n            md5cycle(state, tail);\n            for (i = 0; i < 16; i += 1) {\n                tail[i] = 0;\n            }\n        }\n\n        // Beware that the final length might not fit in 32 bits so we take care of that\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n\n        tail[14] = lo;\n        tail[15] = hi;\n\n        md5cycle(state, tail);\n\n        return state;\n    }\n\n    function rhex(n) {\n        var s = '',\n            j;\n        for (j = 0; j < 4; j += 1) {\n            s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n        }\n        return s;\n    }\n\n    function hex(x) {\n        var i;\n        for (i = 0; i < x.length; i += 1) {\n            x[i] = rhex(x[i]);\n        }\n        return x.join('');\n    }\n\n    // In some cases the fast add32 function cannot be used..\n    if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {\n        add32 = function (x, y) {\n            var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n                msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n            return (msw << 16) | (lsw & 0xFFFF);\n        };\n    }\n\n    // ---------------------------------------------------\n\n    /**\n     * ArrayBuffer slice polyfill.\n     *\n     * @see https://github.com/ttaubert/node-arraybuffer-slice\n     */\n\n    if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {\n        (function () {\n            function clamp(val, length) {\n                val = (val | 0) || 0;\n\n                if (val < 0) {\n                    return Math.max(val + length, 0);\n                }\n\n                return Math.min(val, length);\n            }\n\n            ArrayBuffer.prototype.slice = function (from, to) {\n                var length = this.byteLength,\n                    begin = clamp(from, length),\n                    end = length,\n                    num,\n                    target,\n                    targetArray,\n                    sourceArray;\n\n                if (to !== undefined) {\n                    end = clamp(to, length);\n                }\n\n                if (begin > end) {\n                    return new ArrayBuffer(0);\n                }\n\n                num = end - begin;\n                target = new ArrayBuffer(num);\n                targetArray = new Uint8Array(target);\n\n                sourceArray = new Uint8Array(this, begin, num);\n                targetArray.set(sourceArray);\n\n                return target;\n            };\n        })();\n    }\n\n    // ---------------------------------------------------\n\n    /**\n     * Helpers.\n     */\n\n    function toUtf8(str) {\n        if (/[\\u0080-\\uFFFF]/.test(str)) {\n            str = unescape(encodeURIComponent(str));\n        }\n\n        return str;\n    }\n\n    function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n        var length = str.length,\n           buff = new ArrayBuffer(length),\n           arr = new Uint8Array(buff),\n           i;\n\n        for (i = 0; i < length; i += 1) {\n            arr[i] = str.charCodeAt(i);\n        }\n\n        return returnUInt8Array ? arr : buff;\n    }\n\n    function arrayBuffer2Utf8Str(buff) {\n        return String.fromCharCode.apply(null, new Uint8Array(buff));\n    }\n\n    function concatenateArrayBuffers(first, second, returnUInt8Array) {\n        var result = new Uint8Array(first.byteLength + second.byteLength);\n\n        result.set(new Uint8Array(first));\n        result.set(new Uint8Array(second), first.byteLength);\n\n        return returnUInt8Array ? result : result.buffer;\n    }\n\n    function hexToBinaryString(hex) {\n        var bytes = [],\n            length = hex.length,\n            x;\n\n        for (x = 0; x < length - 1; x += 2) {\n            bytes.push(parseInt(hex.substr(x, 2), 16));\n        }\n\n        return String.fromCharCode.apply(String, bytes);\n    }\n\n    // ---------------------------------------------------\n\n    /**\n     * SparkMD5 OOP implementation.\n     *\n     * Use this class to perform an incremental md5, otherwise use the\n     * static methods instead.\n     */\n\n    function SparkMD5() {\n        // call reset to init the instance\n        this.reset();\n    }\n\n    /**\n     * Appends a string.\n     * A conversion will be applied if an utf8 string is detected.\n     *\n     * @param {String} str The string to be appended\n     *\n     * @return {SparkMD5} The instance itself\n     */\n    SparkMD5.prototype.append = function (str) {\n        // Converts the string to utf8 bytes if necessary\n        // Then append as binary\n        this.appendBinary(toUtf8(str));\n\n        return this;\n    };\n\n    /**\n     * Appends a binary string.\n     *\n     * @param {String} contents The binary string to be appended\n     *\n     * @return {SparkMD5} The instance itself\n     */\n    SparkMD5.prototype.appendBinary = function (contents) {\n        this._buff += contents;\n        this._length += contents.length;\n\n        var length = this._buff.length,\n            i;\n\n        for (i = 64; i <= length; i += 64) {\n            md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n        }\n\n        this._buff = this._buff.substring(i - 64);\n\n        return this;\n    };\n\n    /**\n     * Finishes the incremental computation, reseting the internal state and\n     * returning the result.\n     *\n     * @param {Boolean} raw True to get the raw string, false to get the hex string\n     *\n     * @return {String} The result\n     */\n    SparkMD5.prototype.end = function (raw) {\n        var buff = this._buff,\n            length = buff.length,\n            i,\n            tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n            ret;\n\n        for (i = 0; i < length; i += 1) {\n            tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n        }\n\n        this._finish(tail, length);\n        ret = hex(this._hash);\n\n        if (raw) {\n            ret = hexToBinaryString(ret);\n        }\n\n        this.reset();\n\n        return ret;\n    };\n\n    /**\n     * Resets the internal state of the computation.\n     *\n     * @return {SparkMD5} The instance itself\n     */\n    SparkMD5.prototype.reset = function () {\n        this._buff = '';\n        this._length = 0;\n        this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n        return this;\n    };\n\n    /**\n     * Gets the internal state of the computation.\n     *\n     * @return {Object} The state\n     */\n    SparkMD5.prototype.getState = function () {\n        return {\n            buff: this._buff,\n            length: this._length,\n            hash: this._hash.slice()\n        };\n    };\n\n    /**\n     * Gets the internal state of the computation.\n     *\n     * @param {Object} state The state\n     *\n     * @return {SparkMD5} The instance itself\n     */\n    SparkMD5.prototype.setState = function (state) {\n        this._buff = state.buff;\n        this._length = state.length;\n        this._hash = state.hash;\n\n        return this;\n    };\n\n    /**\n     * Releases memory used by the incremental buffer and other additional\n     * resources. If you plan to use the instance again, use reset instead.\n     */\n    SparkMD5.prototype.destroy = function () {\n        delete this._hash;\n        delete this._buff;\n        delete this._length;\n    };\n\n    /**\n     * Finish the final calculation based on the tail.\n     *\n     * @param {Array}  tail   The tail (will be modified)\n     * @param {Number} length The length of the remaining buffer\n     */\n    SparkMD5.prototype._finish = function (tail, length) {\n        var i = length,\n            tmp,\n            lo,\n            hi;\n\n        tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n        if (i > 55) {\n            md5cycle(this._hash, tail);\n            for (i = 0; i < 16; i += 1) {\n                tail[i] = 0;\n            }\n        }\n\n        // Do the final computation based on the tail and length\n        // Beware that the final length may not fit in 32 bits so we take care of that\n        tmp = this._length * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(this._hash, tail);\n    };\n\n    /**\n     * Performs the md5 hash on a string.\n     * A conversion will be applied if utf8 string is detected.\n     *\n     * @param {String}  str The string\n     * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n     *\n     * @return {String} The result\n     */\n    SparkMD5.hash = function (str, raw) {\n        // Converts the string to utf8 bytes if necessary\n        // Then compute it using the binary function\n        return SparkMD5.hashBinary(toUtf8(str), raw);\n    };\n\n    /**\n     * Performs the md5 hash on a binary string.\n     *\n     * @param {String}  content The binary string\n     * @param {Boolean} [raw]     True to get the raw string, false to get the hex string\n     *\n     * @return {String} The result\n     */\n    SparkMD5.hashBinary = function (content, raw) {\n        var hash = md51(content),\n            ret = hex(hash);\n\n        return raw ? hexToBinaryString(ret) : ret;\n    };\n\n    // ---------------------------------------------------\n\n    /**\n     * SparkMD5 OOP implementation for array buffers.\n     *\n     * Use this class to perform an incremental md5 ONLY for array buffers.\n     */\n    SparkMD5.ArrayBuffer = function () {\n        // call reset to init the instance\n        this.reset();\n    };\n\n    /**\n     * Appends an array buffer.\n     *\n     * @param {ArrayBuffer} arr The array to be appended\n     *\n     * @return {SparkMD5.ArrayBuffer} The instance itself\n     */\n    SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n        var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n            length = buff.length,\n            i;\n\n        this._length += arr.byteLength;\n\n        for (i = 64; i <= length; i += 64) {\n            md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n        }\n\n        this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n\n        return this;\n    };\n\n    /**\n     * Finishes the incremental computation, reseting the internal state and\n     * returning the result.\n     *\n     * @param {Boolean} raw True to get the raw string, false to get the hex string\n     *\n     * @return {String} The result\n     */\n    SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n        var buff = this._buff,\n            length = buff.length,\n            tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n            i,\n            ret;\n\n        for (i = 0; i < length; i += 1) {\n            tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n        }\n\n        this._finish(tail, length);\n        ret = hex(this._hash);\n\n        if (raw) {\n            ret = hexToBinaryString(ret);\n        }\n\n        this.reset();\n\n        return ret;\n    };\n\n    /**\n     * Resets the internal state of the computation.\n     *\n     * @return {SparkMD5.ArrayBuffer} The instance itself\n     */\n    SparkMD5.ArrayBuffer.prototype.reset = function () {\n        this._buff = new Uint8Array(0);\n        this._length = 0;\n        this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n        return this;\n    };\n\n    /**\n     * Gets the internal state of the computation.\n     *\n     * @return {Object} The state\n     */\n    SparkMD5.ArrayBuffer.prototype.getState = function () {\n        var state = SparkMD5.prototype.getState.call(this);\n\n        // Convert buffer to a string\n        state.buff = arrayBuffer2Utf8Str(state.buff);\n\n        return state;\n    };\n\n    /**\n     * Gets the internal state of the computation.\n     *\n     * @param {Object} state The state\n     *\n     * @return {SparkMD5.ArrayBuffer} The instance itself\n     */\n    SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n        // Convert string to buffer\n        state.buff = utf8Str2ArrayBuffer(state.buff, true);\n\n        return SparkMD5.prototype.setState.call(this, state);\n    };\n\n    SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n\n    SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n    /**\n     * Performs the md5 hash on an array buffer.\n     *\n     * @param {ArrayBuffer} arr The array buffer\n     * @param {Boolean}     [raw] True to get the raw string, false to get the hex one\n     *\n     * @return {String} The result\n     */\n    SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n        var hash = md51_array(new Uint8Array(arr)),\n            ret = hex(hash);\n\n        return raw ? hexToBinaryString(ret) : ret;\n    };\n\n    return SparkMD5;\n}));\n","import { isObject } from '@vueuse/core'\nimport { get } from '@/plugins/axios'\nimport md5 from 'spark-md5'\n\nexport const isEmpty = (val: unknown) => {\n  return !(!!val\n    ? typeof val === 'object'\n      ? Array.isArray(val)\n        ? !!val.length\n        : !!Object.keys(val).length\n      : true\n    : false)\n}\n\n/** 转换为千分位\n * showDecimal: 是否显示小数位\n */\nexport const transformNumber = (\n  num: number | string | null | undefined,\n  showDecimal = true,\n  placeholder: string\n): string => {\n  const numStr = num + ''\n  if (placeholder && (num === null || num === undefined || num === '')) {\n    return placeholder\n  }\n  // 默认值为-\n  if (num === null || num === undefined || num === '') {\n    return '-'\n  }\n  if (['0', '0.00', '0.', '0.0'].includes(numStr)) {\n    return showDecimal ? '0.00' : '0'\n  }\n  num = Number.parseFloat(num + '')\n  const reg = /(\\d)(?=(\\d{3})+\\.)/g\n  // 避免出现-0.00的情况\n  const finalNum = Number.parseFloat(num.toFixed(2)) + 0\n  if (showDecimal) {\n    return finalNum.toFixed(2).replace(reg, '$1,')\n  } else {\n    // 取整\n    return finalNum.toFixed(0)\n  }\n}\n\n/** 根据字符串读取对象属性值，比如：obj['a.b.c'] */\nexport const getProp = function (obj: Object, value: string) {\n  if (value.indexOf('.') === -1) return obj[value] || null\n  const keys = value.split('.')\n  let tmp = obj\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i]\n    if (isObject(tmp[key])) {\n      tmp = tmp[key]\n    } else {\n      return tmp[key]\n    }\n  }\n  return null\n}\n\n/** 将map转换为list */\nexport const mapToList = function (map: any): Array<any> {\n  const list = []\n  for (const [key, value] of Object.entries(map)) {\n    if (key === 'toString') continue\n    const name = map.toString(value)\n    list.push({value, name, label: name})\n  }\n  return list\n}\n\n/** 获取问号?参数 */\nexport const getQueryString = function (url: string, params: string): string {\n  const res = new RegExp('(?:&|/?)' + params + '=([^&$]+)').exec(url)\n  return res ? res[1] : ''\n}\n\n/** 获取url参数 */\nexport const getURLParam = function (key: string, href = window.location.href): string {\n  return getQueryString(href, key)\n}\n\n/** 判断是否重叠 */\nexport const checkIsOverlap = function (elA: HTMLElement, elB: HTMLElement): boolean {\n  if (!elA || !elB) return false\n  const rectA = elA.getBoundingClientRect()\n  const rectB = elB.getBoundingClientRect()\n  // 不重叠的所有情况取反\n  return !(rectB.right < rectA.left || rectB.left > rectA.right || rectB.bottom < rectA.top || rectB.top > rectA.bottom)\n}\n\n/** 密码加密 */\nexport const encodePwd = (x: string): string => {\n  if (!x) return ''\n\n  const v = Array(x.length)\n    .fill(0)\n    .flatMap((z, i) => {\n      const c = x.charCodeAt(i)\n      if (c < 0x80) {\n        return [c]\n      }\n      if (c < 0x800) {\n        return [0xc0 | (c >> 6), 0x80 | (c & 0x3f)]\n      }\n      return [0xe0 | (c >> 12), 0x80 | ((c >> 6) & 0x3f), 0x80 | (c & 0x3f)]\n    })\n    .map((v) => String.fromCharCode(v ^ 0xcf))\n    .join('')\n\n  return window.btoa(v)\n}\n\n/** 获取promise状态 */\nexport const getPromiseState = (p: Promise<any>): Promise<any> => {\n  const t = {}\n  return Promise.race([p, t]).then(v => (v === t) ? 'pending' : 'fulfilled', () => 'rejected')\n}\n\n/** 判断是不是IE */\nexport const isLetterIE8 = (): boolean => {\n  try {\n    const userAgent = navigator.userAgent\n    const CurIEVer = new RegExp(\"MSIE (\\\\d+\\\\.\\\\d+);\")\n    CurIEVer.test(userAgent)\n    const IEVer = parseFloat(RegExp[\"$1\"])\n    const IE55 = IEVer == 5.5\n    const IE6 = IEVer == 6.0\n    const IE7 = IEVer == 7.0\n    const IE8 = IEVer == 8.0\n    if (IE55 || IE6 || IE7 || IE8) {\n      //如果是IE8及以下 就处理浏览器返回true 进行某些特殊处理\n      return true\n    }\n  } catch (error) {\n    return false\n  }\n  return false\n}\n\n/** 插入脚本 */\nexport const insertScript = (option: any) => {\n  return new Promise((resolve, reject) => {\n    option.doc = option.doc || document\n    // 如果已经存在，那么不作任何处理\n    if (option.id && option?.doc?.getElementById(option.id)) return\n    const script = option.doc.createElement(\"script\")\n    script.id = option.id\n    script.src = option.src\n    script.type = \"text/javascript\"\n    script.setAttribute(\"charset\", \"utf-8\")\n    // option.doc.head.appendChild(script)\n    // 使用这种方法，\n    get(script.src)\n      .then((res: any) => {\n        try {\n          if (res.includes('')) {\n            // eval(res)\n          } else {\n            reject(false)\n          }\n        } catch (error) {\n          reject(error)\n        }\n        resolve(res)\n      })\n      .catch(reject)\n\n    const browserType = navigator.userAgent.indexOf(\"MSIE\") >= 1\n    if (browserType && isLetterIE8()) {\n      script.onreadystatechange = function () {\n        const r = script.readyState\n        if (r === \"loaded\" || r === \"complete\") {\n          script.onreadystatechange = null\n          resolve(true)\n        }\n      }\n    } else {\n      script.onload = function () {\n        resolve(true)\n      }\n      script.onerror = function () {\n        reject(false)\n      }\n    }\n  })\n}\n\n/** 获取百分比数字 */\nexport const getPercent = (num: number | string): string => {\n  if (typeof num === 'number') {\n    return num.toFixed(2) + '%'\n  } else if (typeof num === 'string') {\n    if (num.includes('%')) {\n      return num\n    } else {\n      return (parseFloat(num) * 100).toFixed(2) + '%'\n    };\n  } else {\n    return '-'\n  }\n}\n\n/** 计算MD5 */\nexport function getMD5Async(file) {\n  return new Promise((resolve, reject) => {\n    file = file.raw\n    let fileReader = new FileReader(),\n      blobSlice = File.prototype?.slice || File.prototype?.mozSlice || File.prototype?.webkitSlice,\n      chunkSize = 2097152,\n      // read in chunks of 2MB\n      chunks = Math.ceil(file.size / chunkSize),\n      currentChunk = 0,\n      spark = new md5()\n    fileReader.onload = function(e) {\n      spark.appendBinary(e.target.result) // append binary string\n      currentChunk++\n\n      if (currentChunk < chunks) {\n        loadNext()\n      } else {\n        resolve(spark.end())\n      }\n    }\n    function loadNext() {\n      let start = currentChunk * chunkSize,\n        end = start + chunkSize >= file.size ? file.size : start + chunkSize\n      fileReader.readAsBinaryString(blobSlice.call(file, start, end))\n    }\n\n    loadNext()\n  })\n}\n\n/** 取cookies */\nexport function getCookie(name){\n  let arr = document.cookie.match(new RegExp('(^| )' + name + '=([^;]*)(;|$)'))\n  if (arr != null) return unescape(arr[2])\n  return null\n}\n\n/** 删除cookies */\nexport function delCookie(name){\n  var exp = new Date()\n  exp.setTime(exp.getTime() - 1)\n  var cval = getCookie(name)\n  if (cval !== null) {\n    document.cookie = name + '=' + cval + ';expires=' + exp['toGMTString']()\n  }\n}\n\n/** 递归判断路由是否有在权限内 */\nexport function isPathInMenuItem(route, path, type) {\n  if (route.route === path) {\n    return true\n  }\n\n  if (route.children) {\n    if (type === 'dynamic') {\n      return route.children.some(child => isPathInMenuItem(child, path, type))\n    } else if (type === 'static') {\n      return route.children.some(child => isPathInMenuItem({\n        ...child,\n        route: `${route.route}/${child.path}`\n      }, path, type))\n    }\n  }\n  return false\n}\n\n/** 递归判断静态路由和动态路由互相重合的路由 */\nexport function getAllCoveredRoutes(staticRoutes, dynamicRoutes) {\n  for (const item of staticRoutes) {\n    const rightOne = dynamicRoutes.find(each => isPathInMenuItem({\n      ...item,\n      route: `/${item.path}`\n    }, each.route, 'static'))\n    if (rightOne) {\n      return rightOne.route\n    }\n    if (item.children) {\n      return getAllCoveredRoutes(item.children, dynamicRoutes)\n    }\n  }\n}\n\n/** 判断是不是本地ip */\nexport function isLocalIP(ip = window.location.href): boolean {\n  const arr = ['192.168', '127.0', 'localhost', '10.10', '172.16']\n  return !!arr.some(item => ip.indexOf(item) > -1)\n}\n","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i&&i.push(e)||n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&i.splice(i.indexOf(e)>>>0,1)},emit:function(t,e){(n.get(t)||[]).slice().map(function(n){n(e)}),(n.get(\"*\")||[]).slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.es.js.map\n","import mitt from 'mitt'\nconst eventBus = mitt()\n\nconst defaultOptions = {\n    global: true,\n    inject: true,\n    globalPropertyName: '$eventBus',\n    injectName: '$eventBus'\n}\n\neventBus.install = install\nexport default eventBus\nexport const bus = eventBus\n\nfunction install(app, options) {\n    let opt = {\n        ...defaultOptions,\n        ...options\n    }\n    if(opt.global) {\n        app.config.globalProperties[opt.globalPropertyName] = eventBus;\n    }\n    if(opt.inject) {\n        app.provide(opt.injectName, eventBus)\n    }\n    return eventBus\n}","import { loginAsync, logoutAsync } from '@/api/common'\nimport { TOKEN_KEY } from '@/constants'\nimport { getURLParam, delCookie, isLocalIP } from '@/utils/utils'\nimport bus from 'vue3-eventbus'\n\n/** 获取token */\nexport function getToken() {\n  // 优先取url的token\n  let urlToken = getURLParam('token')\n  // 拿到token后，删除url的token\n  if (urlToken) {\n    clearURLParams()\n    setToken(urlToken)\n    return urlToken\n  }\n  return localStorage.getItem(TOKEN_KEY) || urlToken\n}\n/** 根据是否自动登录设置token */\nexport function setToken(value) {\n  localStorage.setItem(TOKEN_KEY, value)\n  bus.emit('tokenChange', value)\n}\n/** 移除登录token */\nexport function removeToken() {\n  localStorage.removeItem(TOKEN_KEY)\n}\n\n/** 清除url的token参数 */\nfunction clearURLParams() {\n  const stateObject = {}\n  const title = document.title\n  const newUrl = window.location.pathname\n  history.replaceState(stateObject, title, newUrl)\n}\n\n/** 获取本地登录页面path */\nexport function getLoginPath() {\n  const { origin, pathname } = window.location\n  const path = '/' + pathname.split('/')[1]\n  return (path + '/login').replace('//', '/')\n}\n\n/** 获取登录页面url */\nexport function getOuterLoginUrl() {\n  const { origin, port, hostname, pathname } = window.location\n  const path = '/' + pathname.split('/')[1]\n  const localUrl = encodeURIComponent(origin + path)\n  if (isLocalIP(hostname) && !hostname.includes('192.168')) {\n    return `http://10.10.8.5:${port}/access/api/v1/idassLogin?sourceUrl=${localUrl}`\n  } else {\n    return origin.replace(port, '32001') + `/access/api/v1/idassLogin?sourceUrl=${localUrl}`\n  }\n}\n\n/** 跳转到登录页面 */\nexport function navToLogin(redirect?: string) {\n  sessionStorage.clear()\n  localStorage.clear()\n  // token的值就是JSESSIONID\n  delCookie('JSESSIONID')\n\n  if (redirect) {\n    window.location.href = redirect\n  } else {\n    // 排除localhost\n    if (window.location.hostname === 'localhost') {\n      bus.emit('gotoLogin', '/login')\n    } else {\n      // 跳转到中软的登录页面\n      window.location.href = getOuterLoginUrl()\n    }\n    // // 直接跳转到登录页\n    // const url = getLoginPath()\n    // setTimeout(() => {\n    //   bus.emit('gotoLogin', '/login')\n    // })\n  }\n}\n\n/** 退出登录 */\nexport async function logout() {\n  try {\n    const res = await logoutAsync()\n    navToLogin(res.data || '')\n  } catch (err) {\n    navToLogin()\n  }\n}\n\n/** 登录 */\nexport async function login(user = { account: '', password: '' }) {\n  const token = getToken()\n  if (token) {\n    setToken(token)\n    return token\n  } else {\n    const { data } = await loginAsync(user)\n    // 触发token变化，Side组件会监听\n    setToken(data.token)\n    return data.token\n  }\n}\n","import axios from 'axios'\nimport { Message } from 'element-ui'\nimport { getToken, navToLogin } from '@/utils/login-helper'\n// import router from '@/router'\nimport { API_TIMEOUT } from '@/constants'\nimport { getPromiseState } from '@/utils/utils'\n\naxios.defaults.timeout = 0\n\n// axios 实例配置\nconst http = axios.create({\n  baseURL: '/',\n  timeout: API_TIMEOUT,\n  validateStatus(status) {\n    switch (status) {\n      case 400:\n        Message.error('请求出错')\n        break\n      case 401:\n        Message.warning({ message: '授权失败，请重新登录' })\n        return\n      case 412:\n        Message.warning({ message: '授权失败，请重新登录' })\n        return\n      case 403:\n        Message.warning({ message: '拒绝访问' })\n        break\n      case 404:\n        Message.warning({ message: '请求错误,未找到该资源' })\n        break\n      case 500:\n        Message.warning({ message: '服务端错误' })\n        break\n    }\n    return status >= 200 && status < 300\n  }\n})\n\n// 标识数据的uuid\nlet uuid = null\n\n// http request 拦截器\nhttp.interceptors.request.use(\n  (config) => {\n    config.headers = {\n      'Content-Type': 'application/json;charset=utf-8',\n    }\n    const token = getToken()\n    if (token) {\n      config.headers['x-auth-token'] = token\n    }\n\n    return config\n  },\n  (err) => {\n    return Promise.reject(err)\n  }\n)\n\n// 显示错误消息\nlet timer = null\nfunction showErrorMessage(response) {\n  const msg = response.data.msg || response.data.message || '接口请求失败，请稍后重试'\n  const { config } = response\n  // 登录或者不跳转到500页面\n  if (config.url.includes('/login')) {\n    return Message.error(msg)\n  }\n  timer && clearTimeout(timer)\n  timer = setTimeout(() => {\n    Message.error(msg)\n  }, 200)\n}\n\n// http response 拦截器\nhttp.interceptors.response.use(\n  (response) => {\n    Message.closeAll()\n    const loginFailedCodes = [403, 401, 412]\n    const errorFailedCodes = [-1, -2, -3, -4, -6, 400, 500]\n    const code = response.data.status\n    if (loginFailedCodes.includes(code)) {\n      // 取消所有请求\n      cancelRequest(null, true)\n      showErrorMessage(response)\n      setTimeout(navToLogin, 800)\n      return Promise.reject(response.data)\n    }\n    if (errorFailedCodes.includes(code)) {\n      showErrorMessage(response)\n      return Promise.reject(response.data)\n    }\n\n    // blob类型\n    if (response.request.responseType === 'blob') {\n      const disposition = response.headers['content-disposition']\n      let fileName = ''\n      let fileNameUnicode = ''\n      if (disposition && disposition.indexOf('attachment') !== -1) {\n        fileName = decodeURIComponent(disposition.split(/filename\\**=/)[1])\n        fileNameUnicode = disposition.split('filename*=')[1]\n        // 当存在 filename* 时，取filename* 并进行解码（为了解决中文乱码问题\n        if (fileNameUnicode) {\n          fileName = decodeURIComponent(fileNameUnicode.split(\"''\")[1])\n        }\n      }\n      return {\n        data: response.data,\n        fileName: fileName\n      }\n    } else {\n      uuid = response.data?.result?.uuid || uuid\n      return response.data\n    }\n  },\n  (error) => {\n    Message.closeAll()\n    // 请求超时\n    if (error.code === 'ECONNABORTED' && error.message.includes('timeout')) {\n      return showErrorMessage({\n        ...error,\n        data: { msg: '接口超时, 请联系管理员！' },\n      })\n    }\n    // 用户取消请求\n    if (error.code === 'ERR_CANCELED') {\n      return Promise.reject(error.message || error.code)\n    }\n    const status = error.response?.data?.status || error.response.status\n    debugger\n    switch (status) {\n      case 404:\n        Message.error(error.response.data.msg || error.response.data.message || '接口未找到，请确认后重试')\n        return Promise.reject(error.response.data)\n      case 401:\n        // 取消所有请求\n        cancelRequest(null, true)\n        setTimeout(() => {\n          cancelRequest(null, true)\n          Message.closeAll()\n          showErrorMessage(error.response)\n        })\n        setTimeout(navToLogin, 800)\n        return Promise.reject(error.response.data)\n      case 500:\n        showErrorMessage(error.response)\n        return Promise.reject(error.response.data)\n      case 502:\n        showErrorMessage(error.response)\n        return Promise.reject(error.response.data)\n      default:\n        debugger\n        // Message.error(error.response.data.msg);\n        return Promise.reject(error.response.data)\n    }\n  }\n)\n\n// pathMap对象存放每次new CancelToken生成的方法\nconst pathMap = {}\nconst requestList = []\n// 定义取消方法\nfunction cancelRequest(path, allCancel = false) {\n  // 请求列表里存在此path，即发起重复请求，把之前的请求取消掉\n  if (path && requestList.includes(path) && typeof pathMap[path] === 'function') {\n    pathMap[path]('取消请求')\n  } else if (!path && allCancel) {\n    // allCancel为true则请求列表里的请求全部取消\n    requestList.forEach((el) => {\n      pathMap[el]('批量取消请求')\n    })\n  }\n}\n// 支持取消请求\nfunction requestCancelFn(method, path, params = {}, config = {}) {\n  // 取消上一次请求\n  if (requestList.length) {\n    cancelRequest(path)\n  }\n  requestList.push(path)\n  if (method === 'post') {\n    return http.post(path, params, {\n      cancelToken: new axios.CancelToken((c) => {\n        pathMap[path] = c\n      }),\n      ...config,\n    })\n  } else if (method === 'get') {\n    return http.get(path, {\n      ...params,\n      cancelToken: new axios.CancelToken((c) => {\n        pathMap[path] = c\n      }),\n      ...config,\n    })\n  }\n}\n\n// 支持取消请求\nexport const getCancel = (path, params, config) => requestCancelFn('get', path, params, config)\nexport const postCancel = (path, params, config) => requestCancelFn('post', path, params, config)\n\nexport const get = getCancel\nexport const post = postCancel\n\n// 请求map,支持单例还支持缓存\nconst requestMap = {}\n// 单例请求\nasync function singleRequestFn(method, path, params = {}, config = {}) {\n  // 发送一个新的接口请求\n  const getRequest = () => {\n    if (method === 'post') {\n      return http.post(path, params, { ...config })\n    } else if (method === 'get') {\n      return http.get(path, { ...params, ...config })\n    }\n  }\n\n  // 生成一个新的请求，并缓存下来\n  const getNewRequest = () => {\n    request = getRequest()\n    requestMap[key] = request\n    return request\n  }\n\n  // 先找是否有相同接口在请求，并且参数一致\n  const key = path + JSON.stringify(params)\n  const timerKey = 'timer_' + key\n  let request = requestMap[key]\n  if (request && config && !config.realtime) {\n    // 过一定时间就手动清除这两个引用，不能续杯\n    if (!requestMap[timerKey]) {\n      requestMap[timerKey] = setTimeout(() => {\n        delete requestMap[key]\n        delete requestMap[timerKey]\n      }, window.requestCacheTime || 10 * 1000)\n    }\n    const state = await getPromiseState(request)\n    // 如果还处于pending或者fulfilled状态那么复用这个request，并设置过期时间\n    if (['pending', 'fulfilled'].includes(state)) {\n      return request\n    }\n    return getNewRequest()\n  } else {\n    return getNewRequest()\n  }\n}\n// 单例请求\nexport const getSingle = (path, params, config) => singleRequestFn('get', path, params, config)\nexport const postSingle = (path, params, config) => singleRequestFn('post', path, params, config)\n\nexport default http\n","import { get, post, postSingle } from '@/plugins/axios'\n\n// 登录\nexport const loginAsync = (params) => post('/access/api/v1/login', params)\n// 获取用户中心数据\nexport const getAccountCenterAsync = (params) => get('/access/api/v1/user/center', { params })\n// 平台key\nexport const getPlatformAppkeyAsync = (params) => get(`/access/api/v1/platforms/data/${params.appKey}`, { params })\n// 菜单按钮权限\nexport const getMenuAuthAsync = (params) => get(`/access/api/v1/menus/auth/${params.appKey}`, params)\n// 退出\nexport const logoutAsync = (params) => get('/access/api/v1/idassLogout', params)\n\n// 导出表格数据\n// export const exportDataAsync = (params) => post(base + '/api/exportData', params, { responseType: 'blob' })\n\n","export function getDevtoolsGlobalHook() {\n    return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nexport function getTarget() {\n    // @ts-ignore\n    return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n        ? window\n        : typeof global !== 'undefined'\n            ? global\n            : {};\n}\nexport const isProxyAvailable = typeof Proxy === 'function';\n","export const HOOK_SETUP = 'devtools-plugin:setup';\nexport const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n","let supported;\nlet perf;\nexport function isPerformanceSupported() {\n    var _a;\n    if (supported !== undefined) {\n        return supported;\n    }\n    if (typeof window !== 'undefined' && window.performance) {\n        supported = true;\n        perf = window.performance;\n    }\n    else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n        supported = true;\n        perf = global.perf_hooks.performance;\n    }\n    else {\n        supported = false;\n    }\n    return supported;\n}\nexport function now() {\n    return isPerformanceSupported() ? perf.now() : Date.now();\n}\n","import { HOOK_PLUGIN_SETTINGS_SET } from './const.js';\nimport { now } from './time.js';\nexport class ApiProxy {\n    constructor(plugin, hook) {\n        this.target = null;\n        this.targetQueue = [];\n        this.onQueue = [];\n        this.plugin = plugin;\n        this.hook = hook;\n        const defaultSettings = {};\n        if (plugin.settings) {\n            for (const id in plugin.settings) {\n                const item = plugin.settings[id];\n                defaultSettings[id] = item.defaultValue;\n            }\n        }\n        const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n        let currentSettings = Object.assign({}, defaultSettings);\n        try {\n            const raw = localStorage.getItem(localSettingsSaveId);\n            const data = JSON.parse(raw);\n            Object.assign(currentSettings, data);\n        }\n        catch (e) {\n            // noop\n        }\n        this.fallbacks = {\n            getSettings() {\n                return currentSettings;\n            },\n            setSettings(value) {\n                try {\n                    localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n                }\n                catch (e) {\n                    // noop\n                }\n                currentSettings = value;\n            },\n            now() {\n                return now();\n            },\n        };\n        if (hook) {\n            hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n                if (pluginId === this.plugin.id) {\n                    this.fallbacks.setSettings(value);\n                }\n            });\n        }\n        this.proxiedOn = new Proxy({}, {\n            get: (_target, prop) => {\n                if (this.target) {\n                    return this.target.on[prop];\n                }\n                else {\n                    return (...args) => {\n                        this.onQueue.push({\n                            method: prop,\n                            args,\n                        });\n                    };\n                }\n            },\n        });\n        this.proxiedTarget = new Proxy({}, {\n            get: (_target, prop) => {\n                if (this.target) {\n                    return this.target[prop];\n                }\n                else if (prop === 'on') {\n                    return this.proxiedOn;\n                }\n                else if (Object.keys(this.fallbacks).includes(prop)) {\n                    return (...args) => {\n                        this.targetQueue.push({\n                            method: prop,\n                            args,\n                            resolve: () => { },\n                        });\n                        return this.fallbacks[prop](...args);\n                    };\n                }\n                else {\n                    return (...args) => {\n                        return new Promise(resolve => {\n                            this.targetQueue.push({\n                                method: prop,\n                                args,\n                                resolve,\n                            });\n                        });\n                    };\n                }\n            },\n        });\n    }\n    async setRealTarget(target) {\n        this.target = target;\n        for (const item of this.onQueue) {\n            this.target.on[item.method](...item.args);\n        }\n        for (const item of this.targetQueue) {\n            item.resolve(await this.target[item.method](...item.args));\n        }\n    }\n}\n","import { getTarget, getDevtoolsGlobalHook, isProxyAvailable } from './env.js';\nimport { HOOK_SETUP } from './const.js';\nimport { ApiProxy } from './proxy.js';\nexport * from './api/index.js';\nexport * from './plugin.js';\nexport * from './time.js';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n    const descriptor = pluginDescriptor;\n    const target = getTarget();\n    const hook = getDevtoolsGlobalHook();\n    const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n    if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n        hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n    }\n    else {\n        const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n        const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n        list.push({\n            pluginDescriptor: descriptor,\n            setupFn,\n            proxy,\n        });\n        if (proxy)\n            setupFn(proxy.proxiedTarget);\n    }\n}\n","/*!\n * pinia v2.1.7\n * (c) 2023 Eduardo San Martin Morote\n * @license MIT\n */\nimport { hasInjectionContext, inject, toRaw, watch, unref, markRaw, effectScope, ref, isVue2, isRef, isReactive, set, getCurrentScope, onScopeDispose, getCurrentInstance, reactive, toRef, del, nextTick, computed, toRefs } from 'vue-demi';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\n/**\n * setActivePinia must be called to handle SSR at the top of functions like\n * `fetch`, `setup`, `serverPrefetch` and others\n */\nlet activePinia;\n/**\n * Sets or unsets the active pinia. Used in SSR and internally when calling\n * actions and getters\n *\n * @param pinia - Pinia instance\n */\n// @ts-expect-error: cannot constrain the type of the return\nconst setActivePinia = (pinia) => (activePinia = pinia);\n/**\n * Get the currently active pinia if there is any.\n */\nconst getActivePinia = () => (hasInjectionContext() && inject(piniaSymbol)) || activePinia;\nconst piniaSymbol = ((process.env.NODE_ENV !== 'production') ? Symbol('pinia') : /* istanbul ignore next */ Symbol());\n\nfunction isPlainObject(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\no) {\n    return (o &&\n        typeof o === 'object' &&\n        Object.prototype.toString.call(o) === '[object Object]' &&\n        typeof o.toJSON !== 'function');\n}\n// type DeepReadonly<T> = { readonly [P in keyof T]: DeepReadonly<T[P]> }\n// TODO: can we change these to numbers?\n/**\n * Possible types for SubscriptionCallback\n */\nvar MutationType;\n(function (MutationType) {\n    /**\n     * Direct mutation of the state:\n     *\n     * - `store.name = 'new name'`\n     * - `store.$state.name = 'new name'`\n     * - `store.list.push('new item')`\n     */\n    MutationType[\"direct\"] = \"direct\";\n    /**\n     * Mutated the state with `$patch` and an object\n     *\n     * - `store.$patch({ name: 'newName' })`\n     */\n    MutationType[\"patchObject\"] = \"patch object\";\n    /**\n     * Mutated the state with `$patch` and a function\n     *\n     * - `store.$patch(state => state.name = 'newName')`\n     */\n    MutationType[\"patchFunction\"] = \"patch function\";\n    // maybe reset? for $state = {} and $reset\n})(MutationType || (MutationType = {}));\n\nconst IS_CLIENT = typeof window !== 'undefined';\n/**\n * Should we add the devtools plugins.\n * - only if dev mode or forced through the prod devtools flag\n * - not in test\n * - only if window exists (could change in the future)\n */\nconst USE_DEVTOOLS = ((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test') && IS_CLIENT;\n\n/*\n * FileSaver.js A saveAs() FileSaver implementation.\n *\n * Originally by Eli Grey, adapted as an ESM module by Eduardo San Martin\n * Morote.\n *\n * License : MIT\n */\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nconst _global = /*#__PURE__*/ (() => typeof window === 'object' && window.window === window\n    ? window\n    : typeof self === 'object' && self.self === self\n        ? self\n        : typeof global === 'object' && global.global === global\n            ? global\n            : typeof globalThis === 'object'\n                ? globalThis\n                : { HTMLElement: null })();\nfunction bom(blob, { autoBom = false } = {}) {\n    // prepend BOM for UTF-8 XML and text/* types (including HTML)\n    // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n    if (autoBom &&\n        /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n        return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\n    }\n    return blob;\n}\nfunction download(url, name, opts) {\n    const xhr = new XMLHttpRequest();\n    xhr.open('GET', url);\n    xhr.responseType = 'blob';\n    xhr.onload = function () {\n        saveAs(xhr.response, name, opts);\n    };\n    xhr.onerror = function () {\n        console.error('could not download file');\n    };\n    xhr.send();\n}\nfunction corsEnabled(url) {\n    const xhr = new XMLHttpRequest();\n    // use sync to avoid popup blocker\n    xhr.open('HEAD', url, false);\n    try {\n        xhr.send();\n    }\n    catch (e) { }\n    return xhr.status >= 200 && xhr.status <= 299;\n}\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n    try {\n        node.dispatchEvent(new MouseEvent('click'));\n    }\n    catch (e) {\n        const evt = document.createEvent('MouseEvents');\n        evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);\n        node.dispatchEvent(evt);\n    }\n}\nconst _navigator = \n typeof navigator === 'object' ? navigator : { userAgent: '' };\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nconst isMacOSWebView = /*#__PURE__*/ (() => /Macintosh/.test(_navigator.userAgent) &&\n    /AppleWebKit/.test(_navigator.userAgent) &&\n    !/Safari/.test(_navigator.userAgent))();\nconst saveAs = !IS_CLIENT\n    ? () => { } // noop\n    : // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView or mini program\n        typeof HTMLAnchorElement !== 'undefined' &&\n            'download' in HTMLAnchorElement.prototype &&\n            !isMacOSWebView\n            ? downloadSaveAs\n            : // Use msSaveOrOpenBlob as a second approach\n                'msSaveOrOpenBlob' in _navigator\n                    ? msSaveAs\n                    : // Fallback to using FileReader and a popup\n                        fileSaverSaveAs;\nfunction downloadSaveAs(blob, name = 'download', opts) {\n    const a = document.createElement('a');\n    a.download = name;\n    a.rel = 'noopener'; // tabnabbing\n    // TODO: detect chrome extensions & packaged apps\n    // a.target = '_blank'\n    if (typeof blob === 'string') {\n        // Support regular links\n        a.href = blob;\n        if (a.origin !== location.origin) {\n            if (corsEnabled(a.href)) {\n                download(blob, name, opts);\n            }\n            else {\n                a.target = '_blank';\n                click(a);\n            }\n        }\n        else {\n            click(a);\n        }\n    }\n    else {\n        // Support blobs\n        a.href = URL.createObjectURL(blob);\n        setTimeout(function () {\n            URL.revokeObjectURL(a.href);\n        }, 4e4); // 40s\n        setTimeout(function () {\n            click(a);\n        }, 0);\n    }\n}\nfunction msSaveAs(blob, name = 'download', opts) {\n    if (typeof blob === 'string') {\n        if (corsEnabled(blob)) {\n            download(blob, name, opts);\n        }\n        else {\n            const a = document.createElement('a');\n            a.href = blob;\n            a.target = '_blank';\n            setTimeout(function () {\n                click(a);\n            });\n        }\n    }\n    else {\n        // @ts-ignore: works on windows\n        navigator.msSaveOrOpenBlob(bom(blob, opts), name);\n    }\n}\nfunction fileSaverSaveAs(blob, name, opts, popup) {\n    // Open a popup immediately do go around popup blocker\n    // Mostly only available on user interaction and the fileReader is async so...\n    popup = popup || open('', '_blank');\n    if (popup) {\n        popup.document.title = popup.document.body.innerText = 'downloading...';\n    }\n    if (typeof blob === 'string')\n        return download(blob, name, opts);\n    const force = blob.type === 'application/octet-stream';\n    const isSafari = /constructor/i.test(String(_global.HTMLElement)) || 'safari' in _global;\n    const isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\n    if ((isChromeIOS || (force && isSafari) || isMacOSWebView) &&\n        typeof FileReader !== 'undefined') {\n        // Safari doesn't allow downloading of blob URLs\n        const reader = new FileReader();\n        reader.onloadend = function () {\n            let url = reader.result;\n            if (typeof url !== 'string') {\n                popup = null;\n                throw new Error('Wrong reader.result type');\n            }\n            url = isChromeIOS\n                ? url\n                : url.replace(/^data:[^;]*;/, 'data:attachment/file;');\n            if (popup) {\n                popup.location.href = url;\n            }\n            else {\n                location.assign(url);\n            }\n            popup = null; // reverse-tabnabbing #460\n        };\n        reader.readAsDataURL(blob);\n    }\n    else {\n        const url = URL.createObjectURL(blob);\n        if (popup)\n            popup.location.assign(url);\n        else\n            location.href = url;\n        popup = null; // reverse-tabnabbing #460\n        setTimeout(function () {\n            URL.revokeObjectURL(url);\n        }, 4e4); // 40s\n    }\n}\n\n/**\n * Shows a toast or console.log\n *\n * @param message - message to log\n * @param type - different color of the tooltip\n */\nfunction toastMessage(message, type) {\n    const piniaMessage = '🍍 ' + message;\n    if (typeof __VUE_DEVTOOLS_TOAST__ === 'function') {\n        // No longer available :(\n        __VUE_DEVTOOLS_TOAST__(piniaMessage, type);\n    }\n    else if (type === 'error') {\n        console.error(piniaMessage);\n    }\n    else if (type === 'warn') {\n        console.warn(piniaMessage);\n    }\n    else {\n        console.log(piniaMessage);\n    }\n}\nfunction isPinia(o) {\n    return '_a' in o && 'install' in o;\n}\n\n/**\n * This file contain devtools actions, they are not Pinia actions.\n */\n// ---\nfunction checkClipboardAccess() {\n    if (!('clipboard' in navigator)) {\n        toastMessage(`Your browser doesn't support the Clipboard API`, 'error');\n        return true;\n    }\n}\nfunction checkNotFocusedError(error) {\n    if (error instanceof Error &&\n        error.message.toLowerCase().includes('document is not focused')) {\n        toastMessage('You need to activate the \"Emulate a focused page\" setting in the \"Rendering\" panel of devtools.', 'warn');\n        return true;\n    }\n    return false;\n}\nasync function actionGlobalCopyState(pinia) {\n    if (checkClipboardAccess())\n        return;\n    try {\n        await navigator.clipboard.writeText(JSON.stringify(pinia.state.value));\n        toastMessage('Global state copied to clipboard.');\n    }\n    catch (error) {\n        if (checkNotFocusedError(error))\n            return;\n        toastMessage(`Failed to serialize the state. Check the console for more details.`, 'error');\n        console.error(error);\n    }\n}\nasync function actionGlobalPasteState(pinia) {\n    if (checkClipboardAccess())\n        return;\n    try {\n        loadStoresState(pinia, JSON.parse(await navigator.clipboard.readText()));\n        toastMessage('Global state pasted from clipboard.');\n    }\n    catch (error) {\n        if (checkNotFocusedError(error))\n            return;\n        toastMessage(`Failed to deserialize the state from clipboard. Check the console for more details.`, 'error');\n        console.error(error);\n    }\n}\nasync function actionGlobalSaveState(pinia) {\n    try {\n        saveAs(new Blob([JSON.stringify(pinia.state.value)], {\n            type: 'text/plain;charset=utf-8',\n        }), 'pinia-state.json');\n    }\n    catch (error) {\n        toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\n        console.error(error);\n    }\n}\nlet fileInput;\nfunction getFileOpener() {\n    if (!fileInput) {\n        fileInput = document.createElement('input');\n        fileInput.type = 'file';\n        fileInput.accept = '.json';\n    }\n    function openFile() {\n        return new Promise((resolve, reject) => {\n            fileInput.onchange = async () => {\n                const files = fileInput.files;\n                if (!files)\n                    return resolve(null);\n                const file = files.item(0);\n                if (!file)\n                    return resolve(null);\n                return resolve({ text: await file.text(), file });\n            };\n            // @ts-ignore: TODO: changed from 4.3 to 4.4\n            fileInput.oncancel = () => resolve(null);\n            fileInput.onerror = reject;\n            fileInput.click();\n        });\n    }\n    return openFile;\n}\nasync function actionGlobalOpenStateFile(pinia) {\n    try {\n        const open = getFileOpener();\n        const result = await open();\n        if (!result)\n            return;\n        const { text, file } = result;\n        loadStoresState(pinia, JSON.parse(text));\n        toastMessage(`Global state imported from \"${file.name}\".`);\n    }\n    catch (error) {\n        toastMessage(`Failed to import the state from JSON. Check the console for more details.`, 'error');\n        console.error(error);\n    }\n}\nfunction loadStoresState(pinia, state) {\n    for (const key in state) {\n        const storeState = pinia.state.value[key];\n        // store is already instantiated, patch it\n        if (storeState) {\n            Object.assign(storeState, state[key]);\n        }\n        else {\n            // store is not instantiated, set the initial state\n            pinia.state.value[key] = state[key];\n        }\n    }\n}\n\nfunction formatDisplay(display) {\n    return {\n        _custom: {\n            display,\n        },\n    };\n}\nconst PINIA_ROOT_LABEL = '🍍 Pinia (root)';\nconst PINIA_ROOT_ID = '_root';\nfunction formatStoreForInspectorTree(store) {\n    return isPinia(store)\n        ? {\n            id: PINIA_ROOT_ID,\n            label: PINIA_ROOT_LABEL,\n        }\n        : {\n            id: store.$id,\n            label: store.$id,\n        };\n}\nfunction formatStoreForInspectorState(store) {\n    if (isPinia(store)) {\n        const storeNames = Array.from(store._s.keys());\n        const storeMap = store._s;\n        const state = {\n            state: storeNames.map((storeId) => ({\n                editable: true,\n                key: storeId,\n                value: store.state.value[storeId],\n            })),\n            getters: storeNames\n                .filter((id) => storeMap.get(id)._getters)\n                .map((id) => {\n                const store = storeMap.get(id);\n                return {\n                    editable: false,\n                    key: id,\n                    value: store._getters.reduce((getters, key) => {\n                        getters[key] = store[key];\n                        return getters;\n                    }, {}),\n                };\n            }),\n        };\n        return state;\n    }\n    const state = {\n        state: Object.keys(store.$state).map((key) => ({\n            editable: true,\n            key,\n            value: store.$state[key],\n        })),\n    };\n    // avoid adding empty getters\n    if (store._getters && store._getters.length) {\n        state.getters = store._getters.map((getterName) => ({\n            editable: false,\n            key: getterName,\n            value: store[getterName],\n        }));\n    }\n    if (store._customProperties.size) {\n        state.customProperties = Array.from(store._customProperties).map((key) => ({\n            editable: true,\n            key,\n            value: store[key],\n        }));\n    }\n    return state;\n}\nfunction formatEventData(events) {\n    if (!events)\n        return {};\n    if (Array.isArray(events)) {\n        // TODO: handle add and delete for arrays and objects\n        return events.reduce((data, event) => {\n            data.keys.push(event.key);\n            data.operations.push(event.type);\n            data.oldValue[event.key] = event.oldValue;\n            data.newValue[event.key] = event.newValue;\n            return data;\n        }, {\n            oldValue: {},\n            keys: [],\n            operations: [],\n            newValue: {},\n        });\n    }\n    else {\n        return {\n            operation: formatDisplay(events.type),\n            key: formatDisplay(events.key),\n            oldValue: events.oldValue,\n            newValue: events.newValue,\n        };\n    }\n}\nfunction formatMutationType(type) {\n    switch (type) {\n        case MutationType.direct:\n            return 'mutation';\n        case MutationType.patchFunction:\n            return '$patch';\n        case MutationType.patchObject:\n            return '$patch';\n        default:\n            return 'unknown';\n    }\n}\n\n// timeline can be paused when directly changing the state\nlet isTimelineActive = true;\nconst componentStateTypes = [];\nconst MUTATIONS_LAYER_ID = 'pinia:mutations';\nconst INSPECTOR_ID = 'pinia';\nconst { assign: assign$1 } = Object;\n/**\n * Gets the displayed name of a store in devtools\n *\n * @param id - id of the store\n * @returns a formatted string\n */\nconst getStoreType = (id) => '🍍 ' + id;\n/**\n * Add the pinia plugin without any store. Allows displaying a Pinia plugin tab\n * as soon as it is added to the application.\n *\n * @param app - Vue application\n * @param pinia - pinia instance\n */\nfunction registerPiniaDevtools(app, pinia) {\n    setupDevtoolsPlugin({\n        id: 'dev.esm.pinia',\n        label: 'Pinia 🍍',\n        logo: 'https://pinia.vuejs.org/logo.svg',\n        packageName: 'pinia',\n        homepage: 'https://pinia.vuejs.org',\n        componentStateTypes,\n        app,\n    }, (api) => {\n        if (typeof api.now !== 'function') {\n            toastMessage('You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\n        }\n        api.addTimelineLayer({\n            id: MUTATIONS_LAYER_ID,\n            label: `Pinia 🍍`,\n            color: 0xe5df88,\n        });\n        api.addInspector({\n            id: INSPECTOR_ID,\n            label: 'Pinia 🍍',\n            icon: 'storage',\n            treeFilterPlaceholder: 'Search stores',\n            actions: [\n                {\n                    icon: 'content_copy',\n                    action: () => {\n                        actionGlobalCopyState(pinia);\n                    },\n                    tooltip: 'Serialize and copy the state',\n                },\n                {\n                    icon: 'content_paste',\n                    action: async () => {\n                        await actionGlobalPasteState(pinia);\n                        api.sendInspectorTree(INSPECTOR_ID);\n                        api.sendInspectorState(INSPECTOR_ID);\n                    },\n                    tooltip: 'Replace the state with the content of your clipboard',\n                },\n                {\n                    icon: 'save',\n                    action: () => {\n                        actionGlobalSaveState(pinia);\n                    },\n                    tooltip: 'Save the state as a JSON file',\n                },\n                {\n                    icon: 'folder_open',\n                    action: async () => {\n                        await actionGlobalOpenStateFile(pinia);\n                        api.sendInspectorTree(INSPECTOR_ID);\n                        api.sendInspectorState(INSPECTOR_ID);\n                    },\n                    tooltip: 'Import the state from a JSON file',\n                },\n            ],\n            nodeActions: [\n                {\n                    icon: 'restore',\n                    tooltip: 'Reset the state (with \"$reset\")',\n                    action: (nodeId) => {\n                        const store = pinia._s.get(nodeId);\n                        if (!store) {\n                            toastMessage(`Cannot reset \"${nodeId}\" store because it wasn't found.`, 'warn');\n                        }\n                        else if (typeof store.$reset !== 'function') {\n                            toastMessage(`Cannot reset \"${nodeId}\" store because it doesn't have a \"$reset\" method implemented.`, 'warn');\n                        }\n                        else {\n                            store.$reset();\n                            toastMessage(`Store \"${nodeId}\" reset.`);\n                        }\n                    },\n                },\n            ],\n        });\n        api.on.inspectComponent((payload, ctx) => {\n            const proxy = (payload.componentInstance &&\n                payload.componentInstance.proxy);\n            if (proxy && proxy._pStores) {\n                const piniaStores = payload.componentInstance.proxy._pStores;\n                Object.values(piniaStores).forEach((store) => {\n                    payload.instanceData.state.push({\n                        type: getStoreType(store.$id),\n                        key: 'state',\n                        editable: true,\n                        value: store._isOptionsAPI\n                            ? {\n                                _custom: {\n                                    value: toRaw(store.$state),\n                                    actions: [\n                                        {\n                                            icon: 'restore',\n                                            tooltip: 'Reset the state of this store',\n                                            action: () => store.$reset(),\n                                        },\n                                    ],\n                                },\n                            }\n                            : // NOTE: workaround to unwrap transferred refs\n                                Object.keys(store.$state).reduce((state, key) => {\n                                    state[key] = store.$state[key];\n                                    return state;\n                                }, {}),\n                    });\n                    if (store._getters && store._getters.length) {\n                        payload.instanceData.state.push({\n                            type: getStoreType(store.$id),\n                            key: 'getters',\n                            editable: false,\n                            value: store._getters.reduce((getters, key) => {\n                                try {\n                                    getters[key] = store[key];\n                                }\n                                catch (error) {\n                                    // @ts-expect-error: we just want to show it in devtools\n                                    getters[key] = error;\n                                }\n                                return getters;\n                            }, {}),\n                        });\n                    }\n                });\n            }\n        });\n        api.on.getInspectorTree((payload) => {\n            if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n                let stores = [pinia];\n                stores = stores.concat(Array.from(pinia._s.values()));\n                payload.rootNodes = (payload.filter\n                    ? stores.filter((store) => '$id' in store\n                        ? store.$id\n                            .toLowerCase()\n                            .includes(payload.filter.toLowerCase())\n                        : PINIA_ROOT_LABEL.toLowerCase().includes(payload.filter.toLowerCase()))\n                    : stores).map(formatStoreForInspectorTree);\n            }\n        });\n        api.on.getInspectorState((payload) => {\n            if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n                const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n                    ? pinia\n                    : pinia._s.get(payload.nodeId);\n                if (!inspectedStore) {\n                    // this could be the selected store restored for a different project\n                    // so it's better not to say anything here\n                    return;\n                }\n                if (inspectedStore) {\n                    payload.state = formatStoreForInspectorState(inspectedStore);\n                }\n            }\n        });\n        api.on.editInspectorState((payload, ctx) => {\n            if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n                const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n                    ? pinia\n                    : pinia._s.get(payload.nodeId);\n                if (!inspectedStore) {\n                    return toastMessage(`store \"${payload.nodeId}\" not found`, 'error');\n                }\n                const { path } = payload;\n                if (!isPinia(inspectedStore)) {\n                    // access only the state\n                    if (path.length !== 1 ||\n                        !inspectedStore._customProperties.has(path[0]) ||\n                        path[0] in inspectedStore.$state) {\n                        path.unshift('$state');\n                    }\n                }\n                else {\n                    // Root access, we can omit the `.value` because the devtools API does it for us\n                    path.unshift('state');\n                }\n                isTimelineActive = false;\n                payload.set(inspectedStore, path, payload.state.value);\n                isTimelineActive = true;\n            }\n        });\n        api.on.editComponentState((payload) => {\n            if (payload.type.startsWith('🍍')) {\n                const storeId = payload.type.replace(/^🍍\\s*/, '');\n                const store = pinia._s.get(storeId);\n                if (!store) {\n                    return toastMessage(`store \"${storeId}\" not found`, 'error');\n                }\n                const { path } = payload;\n                if (path[0] !== 'state') {\n                    return toastMessage(`Invalid path for store \"${storeId}\":\\n${path}\\nOnly state can be modified.`);\n                }\n                // rewrite the first entry to be able to directly set the state as\n                // well as any other path\n                path[0] = '$state';\n                isTimelineActive = false;\n                payload.set(store, path, payload.state.value);\n                isTimelineActive = true;\n            }\n        });\n    });\n}\nfunction addStoreToDevtools(app, store) {\n    if (!componentStateTypes.includes(getStoreType(store.$id))) {\n        componentStateTypes.push(getStoreType(store.$id));\n    }\n    setupDevtoolsPlugin({\n        id: 'dev.esm.pinia',\n        label: 'Pinia 🍍',\n        logo: 'https://pinia.vuejs.org/logo.svg',\n        packageName: 'pinia',\n        homepage: 'https://pinia.vuejs.org',\n        componentStateTypes,\n        app,\n        settings: {\n            logStoreChanges: {\n                label: 'Notify about new/deleted stores',\n                type: 'boolean',\n                defaultValue: true,\n            },\n            // useEmojis: {\n            //   label: 'Use emojis in messages ⚡️',\n            //   type: 'boolean',\n            //   defaultValue: true,\n            // },\n        },\n    }, (api) => {\n        // gracefully handle errors\n        const now = typeof api.now === 'function' ? api.now.bind(api) : Date.now;\n        store.$onAction(({ after, onError, name, args }) => {\n            const groupId = runningActionId++;\n            api.addTimelineEvent({\n                layerId: MUTATIONS_LAYER_ID,\n                event: {\n                    time: now(),\n                    title: '🛫 ' + name,\n                    subtitle: 'start',\n                    data: {\n                        store: formatDisplay(store.$id),\n                        action: formatDisplay(name),\n                        args,\n                    },\n                    groupId,\n                },\n            });\n            after((result) => {\n                activeAction = undefined;\n                api.addTimelineEvent({\n                    layerId: MUTATIONS_LAYER_ID,\n                    event: {\n                        time: now(),\n                        title: '🛬 ' + name,\n                        subtitle: 'end',\n                        data: {\n                            store: formatDisplay(store.$id),\n                            action: formatDisplay(name),\n                            args,\n                            result,\n                        },\n                        groupId,\n                    },\n                });\n            });\n            onError((error) => {\n                activeAction = undefined;\n                api.addTimelineEvent({\n                    layerId: MUTATIONS_LAYER_ID,\n                    event: {\n                        time: now(),\n                        logType: 'error',\n                        title: '💥 ' + name,\n                        subtitle: 'end',\n                        data: {\n                            store: formatDisplay(store.$id),\n                            action: formatDisplay(name),\n                            args,\n                            error,\n                        },\n                        groupId,\n                    },\n                });\n            });\n        }, true);\n        store._customProperties.forEach((name) => {\n            watch(() => unref(store[name]), (newValue, oldValue) => {\n                api.notifyComponentUpdate();\n                api.sendInspectorState(INSPECTOR_ID);\n                if (isTimelineActive) {\n                    api.addTimelineEvent({\n                        layerId: MUTATIONS_LAYER_ID,\n                        event: {\n                            time: now(),\n                            title: 'Change',\n                            subtitle: name,\n                            data: {\n                                newValue,\n                                oldValue,\n                            },\n                            groupId: activeAction,\n                        },\n                    });\n                }\n            }, { deep: true });\n        });\n        store.$subscribe(({ events, type }, state) => {\n            api.notifyComponentUpdate();\n            api.sendInspectorState(INSPECTOR_ID);\n            if (!isTimelineActive)\n                return;\n            // rootStore.state[store.id] = state\n            const eventData = {\n                time: now(),\n                title: formatMutationType(type),\n                data: assign$1({ store: formatDisplay(store.$id) }, formatEventData(events)),\n                groupId: activeAction,\n            };\n            if (type === MutationType.patchFunction) {\n                eventData.subtitle = '⤵️';\n            }\n            else if (type === MutationType.patchObject) {\n                eventData.subtitle = '🧩';\n            }\n            else if (events && !Array.isArray(events)) {\n                eventData.subtitle = events.type;\n            }\n            if (events) {\n                eventData.data['rawEvent(s)'] = {\n                    _custom: {\n                        display: 'DebuggerEvent',\n                        type: 'object',\n                        tooltip: 'raw DebuggerEvent[]',\n                        value: events,\n                    },\n                };\n            }\n            api.addTimelineEvent({\n                layerId: MUTATIONS_LAYER_ID,\n                event: eventData,\n            });\n        }, { detached: true, flush: 'sync' });\n        const hotUpdate = store._hotUpdate;\n        store._hotUpdate = markRaw((newStore) => {\n            hotUpdate(newStore);\n            api.addTimelineEvent({\n                layerId: MUTATIONS_LAYER_ID,\n                event: {\n                    time: now(),\n                    title: '🔥 ' + store.$id,\n                    subtitle: 'HMR update',\n                    data: {\n                        store: formatDisplay(store.$id),\n                        info: formatDisplay(`HMR update`),\n                    },\n                },\n            });\n            // update the devtools too\n            api.notifyComponentUpdate();\n            api.sendInspectorTree(INSPECTOR_ID);\n            api.sendInspectorState(INSPECTOR_ID);\n        });\n        const { $dispose } = store;\n        store.$dispose = () => {\n            $dispose();\n            api.notifyComponentUpdate();\n            api.sendInspectorTree(INSPECTOR_ID);\n            api.sendInspectorState(INSPECTOR_ID);\n            api.getSettings().logStoreChanges &&\n                toastMessage(`Disposed \"${store.$id}\" store 🗑`);\n        };\n        // trigger an update so it can display new registered stores\n        api.notifyComponentUpdate();\n        api.sendInspectorTree(INSPECTOR_ID);\n        api.sendInspectorState(INSPECTOR_ID);\n        api.getSettings().logStoreChanges &&\n            toastMessage(`\"${store.$id}\" store installed 🆕`);\n    });\n}\nlet runningActionId = 0;\nlet activeAction;\n/**\n * Patches a store to enable action grouping in devtools by wrapping the store with a Proxy that is passed as the\n * context of all actions, allowing us to set `runningAction` on each access and effectively associating any state\n * mutation to the action.\n *\n * @param store - store to patch\n * @param actionNames - list of actionst to patch\n */\nfunction patchActionForGrouping(store, actionNames, wrapWithProxy) {\n    // original actions of the store as they are given by pinia. We are going to override them\n    const actions = actionNames.reduce((storeActions, actionName) => {\n        // use toRaw to avoid tracking #541\n        storeActions[actionName] = toRaw(store)[actionName];\n        return storeActions;\n    }, {});\n    for (const actionName in actions) {\n        store[actionName] = function () {\n            // the running action id is incremented in a before action hook\n            const _actionId = runningActionId;\n            const trackedStore = wrapWithProxy\n                ? new Proxy(store, {\n                    get(...args) {\n                        activeAction = _actionId;\n                        return Reflect.get(...args);\n                    },\n                    set(...args) {\n                        activeAction = _actionId;\n                        return Reflect.set(...args);\n                    },\n                })\n                : store;\n            // For Setup Stores we need https://github.com/tc39/proposal-async-context\n            activeAction = _actionId;\n            const retValue = actions[actionName].apply(trackedStore, arguments);\n            // this is safer as async actions in Setup Stores would associate mutations done outside of the action\n            activeAction = undefined;\n            return retValue;\n        };\n    }\n}\n/**\n * pinia.use(devtoolsPlugin)\n */\nfunction devtoolsPlugin({ app, store, options }) {\n    // HMR module\n    if (store.$id.startsWith('__hot:')) {\n        return;\n    }\n    // detect option api vs setup api\n    store._isOptionsAPI = !!options.state;\n    patchActionForGrouping(store, Object.keys(options.actions), store._isOptionsAPI);\n    // Upgrade the HMR to also update the new actions\n    const originalHotUpdate = store._hotUpdate;\n    toRaw(store)._hotUpdate = function (newStore) {\n        originalHotUpdate.apply(this, arguments);\n        patchActionForGrouping(store, Object.keys(newStore._hmrPayload.actions), !!store._isOptionsAPI);\n    };\n    addStoreToDevtools(app, \n    // FIXME: is there a way to allow the assignment from Store<Id, S, G, A> to StoreGeneric?\n    store);\n}\n\n/**\n * Creates a Pinia instance to be used by the application\n */\nfunction createPinia() {\n    const scope = effectScope(true);\n    // NOTE: here we could check the window object for a state and directly set it\n    // if there is anything like it with Vue 3 SSR\n    const state = scope.run(() => ref({}));\n    let _p = [];\n    // plugins added before calling app.use(pinia)\n    let toBeInstalled = [];\n    const pinia = markRaw({\n        install(app) {\n            // this allows calling useStore() outside of a component setup after\n            // installing pinia's plugin\n            setActivePinia(pinia);\n            if (!isVue2) {\n                pinia._a = app;\n                app.provide(piniaSymbol, pinia);\n                app.config.globalProperties.$pinia = pinia;\n                /* istanbul ignore else */\n                if (USE_DEVTOOLS) {\n                    registerPiniaDevtools(app, pinia);\n                }\n                toBeInstalled.forEach((plugin) => _p.push(plugin));\n                toBeInstalled = [];\n            }\n        },\n        use(plugin) {\n            if (!this._a && !isVue2) {\n                toBeInstalled.push(plugin);\n            }\n            else {\n                _p.push(plugin);\n            }\n            return this;\n        },\n        _p,\n        // it's actually undefined here\n        // @ts-expect-error\n        _a: null,\n        _e: scope,\n        _s: new Map(),\n        state,\n    });\n    // pinia devtools rely on dev only features so they cannot be forced unless\n    // the dev build of Vue is used. Avoid old browsers like IE11.\n    if (USE_DEVTOOLS && typeof Proxy !== 'undefined') {\n        pinia.use(devtoolsPlugin);\n    }\n    return pinia;\n}\n\n/**\n * Checks if a function is a `StoreDefinition`.\n *\n * @param fn - object to test\n * @returns true if `fn` is a StoreDefinition\n */\nconst isUseStore = (fn) => {\n    return typeof fn === 'function' && typeof fn.$id === 'string';\n};\n/**\n * Mutates in place `newState` with `oldState` to _hot update_ it. It will\n * remove any key not existing in `newState` and recursively merge plain\n * objects.\n *\n * @param newState - new state object to be patched\n * @param oldState - old state that should be used to patch newState\n * @returns - newState\n */\nfunction patchObject(newState, oldState) {\n    // no need to go through symbols because they cannot be serialized anyway\n    for (const key in oldState) {\n        const subPatch = oldState[key];\n        // skip the whole sub tree\n        if (!(key in newState)) {\n            continue;\n        }\n        const targetValue = newState[key];\n        if (isPlainObject(targetValue) &&\n            isPlainObject(subPatch) &&\n            !isRef(subPatch) &&\n            !isReactive(subPatch)) {\n            newState[key] = patchObject(targetValue, subPatch);\n        }\n        else {\n            // objects are either a bit more complex (e.g. refs) or primitives, so we\n            // just set the whole thing\n            if (isVue2) {\n                set(newState, key, subPatch);\n            }\n            else {\n                newState[key] = subPatch;\n            }\n        }\n    }\n    return newState;\n}\n/**\n * Creates an _accept_ function to pass to `import.meta.hot` in Vite applications.\n *\n * @example\n * ```js\n * const useUser = defineStore(...)\n * if (import.meta.hot) {\n *   import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot))\n * }\n * ```\n *\n * @param initialUseStore - return of the defineStore to hot update\n * @param hot - `import.meta.hot`\n */\nfunction acceptHMRUpdate(initialUseStore, hot) {\n    // strip as much as possible from iife.prod\n    if (!(process.env.NODE_ENV !== 'production')) {\n        return () => { };\n    }\n    return (newModule) => {\n        const pinia = hot.data.pinia || initialUseStore._pinia;\n        if (!pinia) {\n            // this store is still not used\n            return;\n        }\n        // preserve the pinia instance across loads\n        hot.data.pinia = pinia;\n        // console.log('got data', newStore)\n        for (const exportName in newModule) {\n            const useStore = newModule[exportName];\n            // console.log('checking for', exportName)\n            if (isUseStore(useStore) && pinia._s.has(useStore.$id)) {\n                // console.log('Accepting update for', useStore.$id)\n                const id = useStore.$id;\n                if (id !== initialUseStore.$id) {\n                    console.warn(`The id of the store changed from \"${initialUseStore.$id}\" to \"${id}\". Reloading.`);\n                    // return import.meta.hot.invalidate()\n                    return hot.invalidate();\n                }\n                const existingStore = pinia._s.get(id);\n                if (!existingStore) {\n                    console.log(`[Pinia]: skipping hmr because store doesn't exist yet`);\n                    return;\n                }\n                useStore(pinia, existingStore);\n            }\n        }\n    };\n}\n\nconst noop = () => { };\nfunction addSubscription(subscriptions, callback, detached, onCleanup = noop) {\n    subscriptions.push(callback);\n    const removeSubscription = () => {\n        const idx = subscriptions.indexOf(callback);\n        if (idx > -1) {\n            subscriptions.splice(idx, 1);\n            onCleanup();\n        }\n    };\n    if (!detached && getCurrentScope()) {\n        onScopeDispose(removeSubscription);\n    }\n    return removeSubscription;\n}\nfunction triggerSubscriptions(subscriptions, ...args) {\n    subscriptions.slice().forEach((callback) => {\n        callback(...args);\n    });\n}\n\nconst fallbackRunWithContext = (fn) => fn();\nfunction mergeReactiveObjects(target, patchToApply) {\n    // Handle Map instances\n    if (target instanceof Map && patchToApply instanceof Map) {\n        patchToApply.forEach((value, key) => target.set(key, value));\n    }\n    // Handle Set instances\n    if (target instanceof Set && patchToApply instanceof Set) {\n        patchToApply.forEach(target.add, target);\n    }\n    // no need to go through symbols because they cannot be serialized anyway\n    for (const key in patchToApply) {\n        if (!patchToApply.hasOwnProperty(key))\n            continue;\n        const subPatch = patchToApply[key];\n        const targetValue = target[key];\n        if (isPlainObject(targetValue) &&\n            isPlainObject(subPatch) &&\n            target.hasOwnProperty(key) &&\n            !isRef(subPatch) &&\n            !isReactive(subPatch)) {\n            // NOTE: here I wanted to warn about inconsistent types but it's not possible because in setup stores one might\n            // start the value of a property as a certain type e.g. a Map, and then for some reason, during SSR, change that\n            // to `undefined`. When trying to hydrate, we want to override the Map with `undefined`.\n            target[key] = mergeReactiveObjects(targetValue, subPatch);\n        }\n        else {\n            // @ts-expect-error: subPatch is a valid value\n            target[key] = subPatch;\n        }\n    }\n    return target;\n}\nconst skipHydrateSymbol = (process.env.NODE_ENV !== 'production')\n    ? Symbol('pinia:skipHydration')\n    : /* istanbul ignore next */ Symbol();\nconst skipHydrateMap = /*#__PURE__*/ new WeakMap();\n/**\n * Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a\n * stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store.\n *\n * @param obj - target object\n * @returns obj\n */\nfunction skipHydrate(obj) {\n    return isVue2\n        ? // in @vue/composition-api, the refs are sealed so defineProperty doesn't work...\n            /* istanbul ignore next */ skipHydrateMap.set(obj, 1) && obj\n        : Object.defineProperty(obj, skipHydrateSymbol, {});\n}\n/**\n * Returns whether a value should be hydrated\n *\n * @param obj - target variable\n * @returns true if `obj` should be hydrated\n */\nfunction shouldHydrate(obj) {\n    return isVue2\n        ? /* istanbul ignore next */ !skipHydrateMap.has(obj)\n        : !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol);\n}\nconst { assign } = Object;\nfunction isComputed(o) {\n    return !!(isRef(o) && o.effect);\n}\nfunction createOptionsStore(id, options, pinia, hot) {\n    const { state, actions, getters } = options;\n    const initialState = pinia.state.value[id];\n    let store;\n    function setup() {\n        if (!initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n            /* istanbul ignore if */\n            if (isVue2) {\n                set(pinia.state.value, id, state ? state() : {});\n            }\n            else {\n                pinia.state.value[id] = state ? state() : {};\n            }\n        }\n        // avoid creating a state in pinia.state.value\n        const localState = (process.env.NODE_ENV !== 'production') && hot\n            ? // use ref() to unwrap refs inside state TODO: check if this is still necessary\n                toRefs(ref(state ? state() : {}).value)\n            : toRefs(pinia.state.value[id]);\n        return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {\n            if ((process.env.NODE_ENV !== 'production') && name in localState) {\n                console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with \"${name}\" in store \"${id}\".`);\n            }\n            computedGetters[name] = markRaw(computed(() => {\n                setActivePinia(pinia);\n                // it was created just before\n                const store = pinia._s.get(id);\n                // allow cross using stores\n                /* istanbul ignore next */\n                if (isVue2 && !store._r)\n                    return;\n                // @ts-expect-error\n                // return getters![name].call(context, context)\n                // TODO: avoid reading the getter while assigning with a global variable\n                return getters[name].call(store, store);\n            }));\n            return computedGetters;\n        }, {}));\n    }\n    store = createSetupStore(id, setup, options, pinia, hot, true);\n    return store;\n}\nfunction createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {\n    let scope;\n    const optionsForPlugin = assign({ actions: {} }, options);\n    /* istanbul ignore if */\n    if ((process.env.NODE_ENV !== 'production') && !pinia._e.active) {\n        throw new Error('Pinia destroyed');\n    }\n    // watcher options for $subscribe\n    const $subscribeOptions = {\n        deep: true,\n        // flush: 'post',\n    };\n    /* istanbul ignore else */\n    if ((process.env.NODE_ENV !== 'production') && !isVue2) {\n        $subscribeOptions.onTrigger = (event) => {\n            /* istanbul ignore else */\n            if (isListening) {\n                debuggerEvents = event;\n                // avoid triggering this while the store is being built and the state is being set in pinia\n            }\n            else if (isListening == false && !store._hotUpdating) {\n                // let patch send all the events together later\n                /* istanbul ignore else */\n                if (Array.isArray(debuggerEvents)) {\n                    debuggerEvents.push(event);\n                }\n                else {\n                    console.error('🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug.');\n                }\n            }\n        };\n    }\n    // internal state\n    let isListening; // set to true at the end\n    let isSyncListening; // set to true at the end\n    let subscriptions = [];\n    let actionSubscriptions = [];\n    let debuggerEvents;\n    const initialState = pinia.state.value[$id];\n    // avoid setting the state for option stores if it is set\n    // by the setup\n    if (!isOptionsStore && !initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n        /* istanbul ignore if */\n        if (isVue2) {\n            set(pinia.state.value, $id, {});\n        }\n        else {\n            pinia.state.value[$id] = {};\n        }\n    }\n    const hotState = ref({});\n    // avoid triggering too many listeners\n    // https://github.com/vuejs/pinia/issues/1129\n    let activeListener;\n    function $patch(partialStateOrMutator) {\n        let subscriptionMutation;\n        isListening = isSyncListening = false;\n        // reset the debugger events since patches are sync\n        /* istanbul ignore else */\n        if ((process.env.NODE_ENV !== 'production')) {\n            debuggerEvents = [];\n        }\n        if (typeof partialStateOrMutator === 'function') {\n            partialStateOrMutator(pinia.state.value[$id]);\n            subscriptionMutation = {\n                type: MutationType.patchFunction,\n                storeId: $id,\n                events: debuggerEvents,\n            };\n        }\n        else {\n            mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);\n            subscriptionMutation = {\n                type: MutationType.patchObject,\n                payload: partialStateOrMutator,\n                storeId: $id,\n                events: debuggerEvents,\n            };\n        }\n        const myListenerId = (activeListener = Symbol());\n        nextTick().then(() => {\n            if (activeListener === myListenerId) {\n                isListening = true;\n            }\n        });\n        isSyncListening = true;\n        // because we paused the watcher, we need to manually call the subscriptions\n        triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);\n    }\n    const $reset = isOptionsStore\n        ? function $reset() {\n            const { state } = options;\n            const newState = state ? state() : {};\n            // we use a patch to group all changes into one single subscription\n            this.$patch(($state) => {\n                assign($state, newState);\n            });\n        }\n        : /* istanbul ignore next */\n            (process.env.NODE_ENV !== 'production')\n                ? () => {\n                    throw new Error(`🍍: Store \"${$id}\" is built using the setup syntax and does not implement $reset().`);\n                }\n                : noop;\n    function $dispose() {\n        scope.stop();\n        subscriptions = [];\n        actionSubscriptions = [];\n        pinia._s.delete($id);\n    }\n    /**\n     * Wraps an action to handle subscriptions.\n     *\n     * @param name - name of the action\n     * @param action - action to wrap\n     * @returns a wrapped action to handle subscriptions\n     */\n    function wrapAction(name, action) {\n        return function () {\n            setActivePinia(pinia);\n            const args = Array.from(arguments);\n            const afterCallbackList = [];\n            const onErrorCallbackList = [];\n            function after(callback) {\n                afterCallbackList.push(callback);\n            }\n            function onError(callback) {\n                onErrorCallbackList.push(callback);\n            }\n            // @ts-expect-error\n            triggerSubscriptions(actionSubscriptions, {\n                args,\n                name,\n                store,\n                after,\n                onError,\n            });\n            let ret;\n            try {\n                ret = action.apply(this && this.$id === $id ? this : store, args);\n                // handle sync errors\n            }\n            catch (error) {\n                triggerSubscriptions(onErrorCallbackList, error);\n                throw error;\n            }\n            if (ret instanceof Promise) {\n                return ret\n                    .then((value) => {\n                    triggerSubscriptions(afterCallbackList, value);\n                    return value;\n                })\n                    .catch((error) => {\n                    triggerSubscriptions(onErrorCallbackList, error);\n                    return Promise.reject(error);\n                });\n            }\n            // trigger after callbacks\n            triggerSubscriptions(afterCallbackList, ret);\n            return ret;\n        };\n    }\n    const _hmrPayload = /*#__PURE__*/ markRaw({\n        actions: {},\n        getters: {},\n        state: [],\n        hotState,\n    });\n    const partialStore = {\n        _p: pinia,\n        // _s: scope,\n        $id,\n        $onAction: addSubscription.bind(null, actionSubscriptions),\n        $patch,\n        $reset,\n        $subscribe(callback, options = {}) {\n            const removeSubscription = addSubscription(subscriptions, callback, options.detached, () => stopWatcher());\n            const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state) => {\n                if (options.flush === 'sync' ? isSyncListening : isListening) {\n                    callback({\n                        storeId: $id,\n                        type: MutationType.direct,\n                        events: debuggerEvents,\n                    }, state);\n                }\n            }, assign({}, $subscribeOptions, options)));\n            return removeSubscription;\n        },\n        $dispose,\n    };\n    /* istanbul ignore if */\n    if (isVue2) {\n        // start as non ready\n        partialStore._r = false;\n    }\n    const store = reactive((process.env.NODE_ENV !== 'production') || USE_DEVTOOLS\n        ? assign({\n            _hmrPayload,\n            _customProperties: markRaw(new Set()), // devtools custom properties\n        }, partialStore\n        // must be added later\n        // setupStore\n        )\n        : partialStore);\n    // store the partial store now so the setup of stores can instantiate each other before they are finished without\n    // creating infinite loops.\n    pinia._s.set($id, store);\n    const runWithContext = (pinia._a && pinia._a.runWithContext) || fallbackRunWithContext;\n    // TODO: idea create skipSerialize that marks properties as non serializable and they are skipped\n    const setupStore = runWithContext(() => pinia._e.run(() => (scope = effectScope()).run(setup)));\n    // overwrite existing actions to support $onAction\n    for (const key in setupStore) {\n        const prop = setupStore[key];\n        if ((isRef(prop) && !isComputed(prop)) || isReactive(prop)) {\n            // mark it as a piece of state to be serialized\n            if ((process.env.NODE_ENV !== 'production') && hot) {\n                set(hotState.value, key, toRef(setupStore, key));\n                // createOptionStore directly sets the state in pinia.state.value so we\n                // can just skip that\n            }\n            else if (!isOptionsStore) {\n                // in setup stores we must hydrate the state and sync pinia state tree with the refs the user just created\n                if (initialState && shouldHydrate(prop)) {\n                    if (isRef(prop)) {\n                        prop.value = initialState[key];\n                    }\n                    else {\n                        // probably a reactive object, lets recursively assign\n                        // @ts-expect-error: prop is unknown\n                        mergeReactiveObjects(prop, initialState[key]);\n                    }\n                }\n                // transfer the ref to the pinia state to keep everything in sync\n                /* istanbul ignore if */\n                if (isVue2) {\n                    set(pinia.state.value[$id], key, prop);\n                }\n                else {\n                    pinia.state.value[$id][key] = prop;\n                }\n            }\n            /* istanbul ignore else */\n            if ((process.env.NODE_ENV !== 'production')) {\n                _hmrPayload.state.push(key);\n            }\n            // action\n        }\n        else if (typeof prop === 'function') {\n            // @ts-expect-error: we are overriding the function we avoid wrapping if\n            const actionValue = (process.env.NODE_ENV !== 'production') && hot ? prop : wrapAction(key, prop);\n            // this a hot module replacement store because the hotUpdate method needs\n            // to do it with the right context\n            /* istanbul ignore if */\n            if (isVue2) {\n                set(setupStore, key, actionValue);\n            }\n            else {\n                // @ts-expect-error\n                setupStore[key] = actionValue;\n            }\n            /* istanbul ignore else */\n            if ((process.env.NODE_ENV !== 'production')) {\n                _hmrPayload.actions[key] = prop;\n            }\n            // list actions so they can be used in plugins\n            // @ts-expect-error\n            optionsForPlugin.actions[key] = prop;\n        }\n        else if ((process.env.NODE_ENV !== 'production')) {\n            // add getters for devtools\n            if (isComputed(prop)) {\n                _hmrPayload.getters[key] = isOptionsStore\n                    ? // @ts-expect-error\n                        options.getters[key]\n                    : prop;\n                if (IS_CLIENT) {\n                    const getters = setupStore._getters ||\n                        // @ts-expect-error: same\n                        (setupStore._getters = markRaw([]));\n                    getters.push(key);\n                }\n            }\n        }\n    }\n    // add the state, getters, and action properties\n    /* istanbul ignore if */\n    if (isVue2) {\n        Object.keys(setupStore).forEach((key) => {\n            set(store, key, setupStore[key]);\n        });\n    }\n    else {\n        assign(store, setupStore);\n        // allows retrieving reactive objects with `storeToRefs()`. Must be called after assigning to the reactive object.\n        // Make `storeToRefs()` work with `reactive()` #799\n        assign(toRaw(store), setupStore);\n    }\n    // use this instead of a computed with setter to be able to create it anywhere\n    // without linking the computed lifespan to wherever the store is first\n    // created.\n    Object.defineProperty(store, '$state', {\n        get: () => ((process.env.NODE_ENV !== 'production') && hot ? hotState.value : pinia.state.value[$id]),\n        set: (state) => {\n            /* istanbul ignore if */\n            if ((process.env.NODE_ENV !== 'production') && hot) {\n                throw new Error('cannot set hotState');\n            }\n            $patch(($state) => {\n                assign($state, state);\n            });\n        },\n    });\n    // add the hotUpdate before plugins to allow them to override it\n    /* istanbul ignore else */\n    if ((process.env.NODE_ENV !== 'production')) {\n        store._hotUpdate = markRaw((newStore) => {\n            store._hotUpdating = true;\n            newStore._hmrPayload.state.forEach((stateKey) => {\n                if (stateKey in store.$state) {\n                    const newStateTarget = newStore.$state[stateKey];\n                    const oldStateSource = store.$state[stateKey];\n                    if (typeof newStateTarget === 'object' &&\n                        isPlainObject(newStateTarget) &&\n                        isPlainObject(oldStateSource)) {\n                        patchObject(newStateTarget, oldStateSource);\n                    }\n                    else {\n                        // transfer the ref\n                        newStore.$state[stateKey] = oldStateSource;\n                    }\n                }\n                // patch direct access properties to allow store.stateProperty to work as\n                // store.$state.stateProperty\n                set(store, stateKey, toRef(newStore.$state, stateKey));\n            });\n            // remove deleted state properties\n            Object.keys(store.$state).forEach((stateKey) => {\n                if (!(stateKey in newStore.$state)) {\n                    del(store, stateKey);\n                }\n            });\n            // avoid devtools logging this as a mutation\n            isListening = false;\n            isSyncListening = false;\n            pinia.state.value[$id] = toRef(newStore._hmrPayload, 'hotState');\n            isSyncListening = true;\n            nextTick().then(() => {\n                isListening = true;\n            });\n            for (const actionName in newStore._hmrPayload.actions) {\n                const action = newStore[actionName];\n                set(store, actionName, wrapAction(actionName, action));\n            }\n            // TODO: does this work in both setup and option store?\n            for (const getterName in newStore._hmrPayload.getters) {\n                const getter = newStore._hmrPayload.getters[getterName];\n                const getterValue = isOptionsStore\n                    ? // special handling of options api\n                        computed(() => {\n                            setActivePinia(pinia);\n                            return getter.call(store, store);\n                        })\n                    : getter;\n                set(store, getterName, getterValue);\n            }\n            // remove deleted getters\n            Object.keys(store._hmrPayload.getters).forEach((key) => {\n                if (!(key in newStore._hmrPayload.getters)) {\n                    del(store, key);\n                }\n            });\n            // remove old actions\n            Object.keys(store._hmrPayload.actions).forEach((key) => {\n                if (!(key in newStore._hmrPayload.actions)) {\n                    del(store, key);\n                }\n            });\n            // update the values used in devtools and to allow deleting new properties later on\n            store._hmrPayload = newStore._hmrPayload;\n            store._getters = newStore._getters;\n            store._hotUpdating = false;\n        });\n    }\n    if (USE_DEVTOOLS) {\n        const nonEnumerable = {\n            writable: true,\n            configurable: true,\n            // avoid warning on devtools trying to display this property\n            enumerable: false,\n        };\n        ['_p', '_hmrPayload', '_getters', '_customProperties'].forEach((p) => {\n            Object.defineProperty(store, p, assign({ value: store[p] }, nonEnumerable));\n        });\n    }\n    /* istanbul ignore if */\n    if (isVue2) {\n        // mark the store as ready before plugins\n        store._r = true;\n    }\n    // apply all plugins\n    pinia._p.forEach((extender) => {\n        /* istanbul ignore else */\n        if (USE_DEVTOOLS) {\n            const extensions = scope.run(() => extender({\n                store,\n                app: pinia._a,\n                pinia,\n                options: optionsForPlugin,\n            }));\n            Object.keys(extensions || {}).forEach((key) => store._customProperties.add(key));\n            assign(store, extensions);\n        }\n        else {\n            assign(store, scope.run(() => extender({\n                store,\n                app: pinia._a,\n                pinia,\n                options: optionsForPlugin,\n            })));\n        }\n    });\n    if ((process.env.NODE_ENV !== 'production') &&\n        store.$state &&\n        typeof store.$state === 'object' &&\n        typeof store.$state.constructor === 'function' &&\n        !store.$state.constructor.toString().includes('[native code]')) {\n        console.warn(`[🍍]: The \"state\" must be a plain object. It cannot be\\n` +\n            `\\tstate: () => new MyClass()\\n` +\n            `Found in store \"${store.$id}\".`);\n    }\n    // only apply hydrate to option stores with an initial state in pinia\n    if (initialState &&\n        isOptionsStore &&\n        options.hydrate) {\n        options.hydrate(store.$state, initialState);\n    }\n    isListening = true;\n    isSyncListening = true;\n    return store;\n}\nfunction defineStore(\n// TODO: add proper types from above\nidOrOptions, setup, setupOptions) {\n    let id;\n    let options;\n    const isSetupStore = typeof setup === 'function';\n    if (typeof idOrOptions === 'string') {\n        id = idOrOptions;\n        // the option store setup will contain the actual options in this case\n        options = isSetupStore ? setupOptions : setup;\n    }\n    else {\n        options = idOrOptions;\n        id = idOrOptions.id;\n        if ((process.env.NODE_ENV !== 'production') && typeof id !== 'string') {\n            throw new Error(`[🍍]: \"defineStore()\" must be passed a store id as its first argument.`);\n        }\n    }\n    function useStore(pinia, hot) {\n        const hasContext = hasInjectionContext();\n        pinia =\n            // in test mode, ignore the argument provided as we can always retrieve a\n            // pinia instance with getActivePinia()\n            ((process.env.NODE_ENV === 'test') && activePinia && activePinia._testing ? null : pinia) ||\n                (hasContext ? inject(piniaSymbol, null) : null);\n        if (pinia)\n            setActivePinia(pinia);\n        if ((process.env.NODE_ENV !== 'production') && !activePinia) {\n            throw new Error(`[🍍]: \"getActivePinia()\" was called but there was no active Pinia. Are you trying to use a store before calling \"app.use(pinia)\"?\\n` +\n                `See https://pinia.vuejs.org/core-concepts/outside-component-usage.html for help.\\n` +\n                `This will fail in production.`);\n        }\n        pinia = activePinia;\n        if (!pinia._s.has(id)) {\n            // creating the store registers it in `pinia._s`\n            if (isSetupStore) {\n                createSetupStore(id, setup, options, pinia);\n            }\n            else {\n                createOptionsStore(id, options, pinia);\n            }\n            /* istanbul ignore else */\n            if ((process.env.NODE_ENV !== 'production')) {\n                // @ts-expect-error: not the right inferred type\n                useStore._pinia = pinia;\n            }\n        }\n        const store = pinia._s.get(id);\n        if ((process.env.NODE_ENV !== 'production') && hot) {\n            const hotId = '__hot:' + id;\n            const newStore = isSetupStore\n                ? createSetupStore(hotId, setup, options, pinia, true)\n                : createOptionsStore(hotId, assign({}, options), pinia, true);\n            hot._hotUpdate(newStore);\n            // cleanup the state properties and the store from the cache\n            delete pinia.state.value[hotId];\n            pinia._s.delete(hotId);\n        }\n        if ((process.env.NODE_ENV !== 'production') && IS_CLIENT) {\n            const currentInstance = getCurrentInstance();\n            // save stores in instances to access them devtools\n            if (currentInstance &&\n                currentInstance.proxy &&\n                // avoid adding stores that are just built for hot module replacement\n                !hot) {\n                const vm = currentInstance.proxy;\n                const cache = '_pStores' in vm ? vm._pStores : (vm._pStores = {});\n                cache[id] = store;\n            }\n        }\n        // StoreGeneric cannot be casted towards Store\n        return store;\n    }\n    useStore.$id = id;\n    return useStore;\n}\n\nlet mapStoreSuffix = 'Store';\n/**\n * Changes the suffix added by `mapStores()`. Can be set to an empty string.\n * Defaults to `\"Store\"`. Make sure to extend the MapStoresCustomization\n * interface if you are using TypeScript.\n *\n * @param suffix - new suffix\n */\nfunction setMapStoreSuffix(suffix // could be 'Store' but that would be annoying for JS\n) {\n    mapStoreSuffix = suffix;\n}\n/**\n * Allows using stores without the composition API (`setup()`) by generating an\n * object to be spread in the `computed` field of a component. It accepts a list\n * of store definitions.\n *\n * @example\n * ```js\n * export default {\n *   computed: {\n *     // other computed properties\n *     ...mapStores(useUserStore, useCartStore)\n *   },\n *\n *   created() {\n *     this.userStore // store with id \"user\"\n *     this.cartStore // store with id \"cart\"\n *   }\n * }\n * ```\n *\n * @param stores - list of stores to map to an object\n */\nfunction mapStores(...stores) {\n    if ((process.env.NODE_ENV !== 'production') && Array.isArray(stores[0])) {\n        console.warn(`[🍍]: Directly pass all stores to \"mapStores()\" without putting them in an array:\\n` +\n            `Replace\\n` +\n            `\\tmapStores([useAuthStore, useCartStore])\\n` +\n            `with\\n` +\n            `\\tmapStores(useAuthStore, useCartStore)\\n` +\n            `This will fail in production if not fixed.`);\n        stores = stores[0];\n    }\n    return stores.reduce((reduced, useStore) => {\n        // @ts-expect-error: $id is added by defineStore\n        reduced[useStore.$id + mapStoreSuffix] = function () {\n            return useStore(this.$pinia);\n        };\n        return reduced;\n    }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapState(useStore, keysOrMapper) {\n    return Array.isArray(keysOrMapper)\n        ? keysOrMapper.reduce((reduced, key) => {\n            reduced[key] = function () {\n                return useStore(this.$pinia)[key];\n            };\n            return reduced;\n        }, {})\n        : Object.keys(keysOrMapper).reduce((reduced, key) => {\n            // @ts-expect-error\n            reduced[key] = function () {\n                const store = useStore(this.$pinia);\n                const storeKey = keysOrMapper[key];\n                // for some reason TS is unable to infer the type of storeKey to be a\n                // function\n                return typeof storeKey === 'function'\n                    ? storeKey.call(this, store)\n                    : store[storeKey];\n            };\n            return reduced;\n        }, {});\n}\n/**\n * Alias for `mapState()`. You should use `mapState()` instead.\n * @deprecated use `mapState()` instead.\n */\nconst mapGetters = mapState;\n/**\n * Allows directly using actions from your store without using the composition\n * API (`setup()`) by generating an object to be spread in the `methods` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapActions(useStore, keysOrMapper) {\n    return Array.isArray(keysOrMapper)\n        ? keysOrMapper.reduce((reduced, key) => {\n            // @ts-expect-error\n            reduced[key] = function (...args) {\n                return useStore(this.$pinia)[key](...args);\n            };\n            return reduced;\n        }, {})\n        : Object.keys(keysOrMapper).reduce((reduced, key) => {\n            // @ts-expect-error\n            reduced[key] = function (...args) {\n                return useStore(this.$pinia)[keysOrMapper[key]](...args);\n            };\n            return reduced;\n        }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapWritableState(useStore, keysOrMapper) {\n    return Array.isArray(keysOrMapper)\n        ? keysOrMapper.reduce((reduced, key) => {\n            // @ts-ignore\n            reduced[key] = {\n                get() {\n                    return useStore(this.$pinia)[key];\n                },\n                set(value) {\n                    // it's easier to type it here as any\n                    return (useStore(this.$pinia)[key] = value);\n                },\n            };\n            return reduced;\n        }, {})\n        : Object.keys(keysOrMapper).reduce((reduced, key) => {\n            // @ts-ignore\n            reduced[key] = {\n                get() {\n                    return useStore(this.$pinia)[keysOrMapper[key]];\n                },\n                set(value) {\n                    // it's easier to type it here as any\n                    return (useStore(this.$pinia)[keysOrMapper[key]] = value);\n                },\n            };\n            return reduced;\n        }, {});\n}\n\n/**\n * Creates an object of references with all the state, getters, and plugin-added\n * state properties of the store. Similar to `toRefs()` but specifically\n * designed for Pinia stores so methods and non reactive properties are\n * completely ignored.\n *\n * @param store - store to extract the refs from\n */\nfunction storeToRefs(store) {\n    // See https://github.com/vuejs/pinia/issues/852\n    // It's easier to just use toRefs() even if it includes more stuff\n    if (isVue2) {\n        // @ts-expect-error: toRefs include methods and others\n        return toRefs(store);\n    }\n    else {\n        store = toRaw(store);\n        const refs = {};\n        for (const key in store) {\n            const value = store[key];\n            if (isRef(value) || isReactive(value)) {\n                // @ts-expect-error: the key is state or getter\n                refs[key] =\n                    // ---\n                    toRef(store, key);\n            }\n        }\n        return refs;\n    }\n}\n\n/**\n * Vue 2 Plugin that must be installed for pinia to work. Note **you don't need\n * this plugin if you are using Nuxt.js**. Use the `buildModule` instead:\n * https://pinia.vuejs.org/ssr/nuxt.html.\n *\n * @example\n * ```js\n * import Vue from 'vue'\n * import { PiniaVuePlugin, createPinia } from 'pinia'\n *\n * Vue.use(PiniaVuePlugin)\n * const pinia = createPinia()\n *\n * new Vue({\n *   el: '#app',\n *   // ...\n *   pinia,\n * })\n * ```\n *\n * @param _Vue - `Vue` imported from 'vue'.\n */\nconst PiniaVuePlugin = function (_Vue) {\n    // Equivalent of\n    // app.config.globalProperties.$pinia = pinia\n    _Vue.mixin({\n        beforeCreate() {\n            const options = this.$options;\n            if (options.pinia) {\n                const pinia = options.pinia;\n                // HACK: taken from provide(): https://github.com/vuejs/composition-api/blob/main/src/apis/inject.ts#L31\n                /* istanbul ignore else */\n                if (!this._provided) {\n                    const provideCache = {};\n                    Object.defineProperty(this, '_provided', {\n                        get: () => provideCache,\n                        set: (v) => Object.assign(provideCache, v),\n                    });\n                }\n                this._provided[piniaSymbol] = pinia;\n                // propagate the pinia instance in an SSR friendly way\n                // avoid adding it to nuxt twice\n                /* istanbul ignore else */\n                if (!this.$pinia) {\n                    this.$pinia = pinia;\n                }\n                pinia._a = this;\n                if (IS_CLIENT) {\n                    // this allows calling useStore() outside of a component setup after\n                    // installing pinia's plugin\n                    setActivePinia(pinia);\n                }\n                if (USE_DEVTOOLS) {\n                    registerPiniaDevtools(pinia._a, pinia);\n                }\n            }\n            else if (!this.$pinia && options.parent && options.parent.$pinia) {\n                this.$pinia = options.parent.$pinia;\n            }\n        },\n        destroyed() {\n            delete this._pStores;\n        },\n    });\n};\n\nexport { MutationType, PiniaVuePlugin, acceptHMRUpdate, createPinia, defineStore, getActivePinia, mapActions, mapGetters, mapState, mapStores, mapWritableState, setActivePinia, setMapStoreSuffix, skipHydrate, storeToRefs };\n","import Vue from 'vue'\nimport { createPinia, PiniaVuePlugin } from 'pinia'\n\nconst pinia = createPinia()\nVue.use(PiniaVuePlugin)\nVue.use(pinia)\n\nexport default pinia\n","<script>\nimport Person from './Person.vue'\n// import Login from './Login.vue'\nimport BScroll from '@better-scroll/core'\nimport MouseWheel from '@better-scroll/mouse-wheel'\nBScroll.use(MouseWheel)\nimport { getAccountCenterAsync } from '@/api/common'\nimport { getToken, logout, removeToken, navToLogin } from '@/utils/login-helper.ts'\nimport '@/store/store'\nimport bus from 'vue3-eventbus'\nimport { PLATFORMS_KEY, USERNAME_KEY } from '@/constants'\nimport { useWindowSize } from '@vueuse/core'\n\nconst marginRight = 64\nlet bs\n\nexport default {\n  props: {\n    headerTitle: {\n      type: String,\n      default: 'AI平台'\n    },\n    clickAppkey: {\n      type: String, //选中的平台appkey\n      default: ''\n    },\n    platformType: { // license-web,license-client需要单独处理\n      type: String,\n      default: ''\n    },\n  },\n  components: {\n    Person,\n  },\n  data() {\n    return {\n      visibleLogin: false,\n      token: getToken(),\n      platforms: JSON.parse(sessionStorage.getItem(PLATFORMS_KEY)) || [],\n      username: localStorage.getItem(USERNAME_KEY) || '未知用户',\n      refPlatform: null,\n      refPlatformList: null,\n      wrapWidth: null,\n      listWidth: null,\n    }\n  },\n  created() {\n    // 初次获取token\n    const token = getToken()\n    // 如果有token\n    if (token) {\n      this.handleLoginSuccess()\n    } else {\n      this.visibleLogin = true\n      // debugger\n      navToLogin()\n    }\n\n    // 监听relogin，axios/index.js里面触发\n    bus.on('relogin', this.handleRelogin)\n    window.addEventListener('resize', this.handleWindowResize, false)\n\n    bus.on('gotoLogin', (path) => {\n      this.$router.push({ path })\n    })\n  },\n  watch: {\n    // 监听平台列表platforms的变化，重新计算宽度\n    platforms: {\n      async handler(val) {\n        await nextTick()\n        this.handleWindowResize()\n        // 初始化BScroll\n        if (!bs && this.$refs.refPlatform) {\n          bs = new BScroll(this.$refs.refPlatform, {\n            scrollX: true,\n            scrollY: false,\n            mouseWheel: {\n              speed: 20,\n              invert: false,\n              easeTime: 200\n            }\n          })\n        }\n        // 等待列表渲染完成，不然可能无法滚动到对应元素\n        await nextTick()\n        this.setActiveIndex(bs)\n      },\n      immediate: true\n    },\n  },\n  mounted() {\n    bus.emit('getAppKey', this.clickAppkey)\n  },\n  methods: {\n    handleLogoClick() {\n      // TODO\n      window.location.href = '/'\n    },\n    // 平台列表\n    clickPlatform(item, isMiddle = false) {\n      const tokenParam = getToken() ? `?token=${getToken()}` : ''\n      // 支持鼠标中键\n      if (isMiddle) {\n        window.open(item.url + tokenParam)\n      } else {\n        window.location = item.url + tokenParam\n      }\n    },\n    // 获取平台列表\n    getPlatformList() {\n      return getAccountCenterAsync().then(res => {\n        if (res.status === 200) {\n          const user = res.data\n          this.username = user.account\n          // 排序\n          this.platforms = (user.platforms || []).sort((a, b) => a.order - b.order > 0 ? 1 : -1)\n          // 如果当前用户没有此平台的权限\n          const findPlatform = this.platforms.find(v => v.appKey === this.clickAppkey)\n          if (!findPlatform) {\n            // 生产环境跳转：您当前没有该平台的权限！\n            if (import.meta.env.PROD) {\n              debugger\n              clickPlatform(this.platforms[0])\n            }\n            bus.emit('getAppName', this.platforms[0]?.name)\n          } else {\n            bus.emit('getAppName', findPlatform?.name)\n          }\n          // 缓存\n          sessionStorage.setItem(PLATFORMS_KEY, JSON.stringify(this.platforms))\n          localStorage.setItem(USERNAME_KEY, this.username)\n          this.$emit('getUser', user)\n        }\n      })\n    },\n    // 登录成功回调\n    handleLoginSuccess() {\n      const token = getToken()\n      let timer = null\n      if (token) {\n        // 如果100ms内接口没有报错，不用等待接口返回，则直接判定登录成功\n        timer = setTimeout(() => {\n          this.$emit('loginSuccess')\n          timer && window.clearTimeout(timer)\n          timer = null\n        }, 150)\n        this.getPlatformList().then(() => {\n          // 如果接口在100ms内返回，则直接执行回调\n          if (timer) {\n            this.$emit('loginSuccess')\n            timer && window.clearTimeout(timer)\n            timer = null\n          }\n        }).catch(error => {\n          // 如果接口报错则清除timer，防止执行loginSuccess回调\n          timer && clearTimeout(timer)\n          this.visibleLogin = true\n        })\n        this.visibleLogin = false\n      } else {\n        this.visibleLogin = true\n      }\n    },\n    // 处理重新登录\n    handleRelogin() {\n      removeToken()\n      this.visibleLogin = true\n      // debugger\n    },\n    handleWindowResize() {\n      const { width } = useWindowSize()\n      this.wrapWidth = width.value - 300 + 'px'\n      // 计算所有子节点的宽度\n      if (this.$refs.refPlatformList) {\n        const itemList = [...this.$refs.refPlatformList.querySelectorAll('.platform-item')]\n        const arr = []\n        itemList.forEach(v => {\n          const width = v.getBoundingClientRect().width\n          arr.push(width)\n        })\n        try {\n          const innerWidth = arr.reduce((a, b) => a + b) + (itemList.length - 1) * marginRight\n          this.listWidth = innerWidth + 'px'\n        } catch (error) {\n          console.log(error)\n        }\n      }\n      // 重置\n      bs && this.setActiveIndex(bs)\n    },\n    setActiveIndex(bs) {\n      if (!bs || !this.$refs.refPlatformList) return\n      const activeIndex = this.platforms.findIndex(v => v.appKey === this.clickAppkey)\n      const itemList = this.$refs.refPlatformList.querySelectorAll('.platform-item')\n      try {\n        bs.refresh().scrollToElement(itemList[activeIndex])\n      } catch (error) {\n        itemList[0] && bs.scrollToElement(itemList[0])\n      }\n    },\n    handleLogout() {\n      logout()\n      bus.emit('logout')\n    },\n  },\n}\n\n</script>\n\n<template>\n  <header id=\"header\" class=\"flex-space select-none\">\n    <div class=\"header-logo\" @click=\"handleLogoClick\">\n      <h2 class=\"mx-20px header-title pointer nowrap hover-primary\">{{ headerTitle }}</h2>\n    </div>\n    <div ref=\"refPlatform\" class=\"platform-list-wrap\" :style=\"{ width: wrapWidth }\">\n      <div ref=\"refPlatformList\" class=\"platform-list nowrap\" :style=\"{ width: listWidth }\">\n        <div\n          class=\"platform-item\"\n          @click.left=\"clickPlatform(item)\"\n          @click.middle=\"clickPlatform(item, true)\"\n          v-for=\"item in platforms\"\n          :key=\"item.appKey\"\n          :class=\"{ 'active': clickAppkey === item.appKey }\"\n        >\n          <h3>{{ item.name }}</h3>\n          <div class=\"line\" v-if=\"clickAppkey === item.appKey\"></div>\n        </div>\n      </div>\n    </div>\n    <div class=\"flex-alignC\">\n      <Person @logout=\"handleLogout\" :username=\"username\" />\n    </div>\n    <!-- <Login v-if=\"visibleLogin\" @loginSuccess=\"handleLoginSuccess\"></Login> -->\n  </header>\n</template>\n\n<style>\n@import url('@/styles/index.scss');\n</style>\n<style lang=\"scss\" scoped>\n#header {\n  width: 100%;\n  min-width: 1100px;\n  height: 50px;\n  line-height: 50px;\n  // background: url(../../../assets/img/headerBG.png);\n  background-color: #fff;\n  background-size: 100% 100%;\n  border-bottom: 1px solid #dbdeea;\n  .header-logo {\n    .header-title {\n      font-size: 18px;\n      font-weight: 600;\n    }\n  }\n  .platform-list-wrap {\n    overflow: hidden;\n    margin: 0 32px;\n    display: flex;\n    flex: 1;\n    justify-content: center;\n  }\n  .platform-list {\n    display: flex;\n    .platform-item {\n      height: 50px;\n      margin-right: 64px;\n      box-sizing: border-box;\n      border-bottom: 3px solid transparent;\n      transition: 0.2s;\n      cursor: pointer;\n      &:last-child {\n        margin-right: 0;\n      }\n      &:hover,\n      &.active {\n        border-bottom: 3px solid var(--color-primary);\n        color: var(--color-primary);\n      }\n      .line {\n        width: 50px;\n        height: 3px;\n        background: rgba(255, 255, 255, 0.6);\n        border-radius: 1.5px;\n        margin: -11px auto 0px;\n        transition: width 0.8s;\n      }\n    }\n    h3 {\n      font-family: 'PingFang SC';\n      font-style: normal;\n      font-weight: 400;\n      font-size: 14px;\n    }\n  }\n}\n</style>\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADqSURBVHgBvZJBDsFAFIbf6ziAIzgCC4mlI3AEWyFGRaxEEUtB0oVd3aBuwLJLR+gxhM4bM41FkWqnEv9q3sy877335wH8KJYM+MSpNOpNCILzFXLKSgYiYidZsmZpn3vD+aFvL71UgAQYkkTetxccinTgrqdHBdkB4qw7XlWNAU8IB4QLI/I5d8rGAC0WiY6eRzDmFQJst04oETrq2Mryw/ryFrcvJZaNAXofEMDThrqbqWME0Ml6HxBkGBuaodL7BQnL1wbeiNqQQy+Agb3YEGHlTqK2V0YaAXqjZZPUBKp4O2/yhzQE/q0HeRdU209l9r8AAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAD2SURBVHgBvZJNrgFBEMerp717OMJ7N3CENzdgZ+FjfCQWiDbWTEsQu3EDbsARHMER2Am6RlViYYShRfw33Z3q+lXXvwvg2yp4KnN9dmLBSndWrPbCh8m13r+Qcklr5i4gSV5DpQVAGAEMR/32ygrAyeYklwKiDSV717HUKwA0zhyo9AHRvY09BZSrfoAo0kc0f1OtNlaAUt3vYCQ8Ku7eS2YlemDQ2V2220d3EgHjQUvTsmD382SkNYAljcmxgT8nGb4F0FptqRWXIL/luh9YA1gT3VwjiC4bytNoDWCxHzyFIoLYK2LfOAo62SRIyhi1p67gkzoDmTZaOja/7+AAAAAASUVORK5CYII=\"","<template>\n  <div class=\"frame-container bg-card\" v-loading=\"!routesLoaded\">\n    <!-- 左边导航 -->\n    <div v-show=\"!hideNav\" id=\"side\" class=\"bg-card slide-shadow select-none\">\n      <div\n        class=\"slide-title d-flex flex-space align-center\"\n        :class=\"{ 'is-collapse': isCollapse }\"\n      >\n        <div v-show=\"!isCollapse\" class=\"nowrap\" style=\"position: relative; width: 100%; height: 56px;\">\n          <span style=\"position: absolute; z-index: 2;\">{{ appName }}</span>\n        </div>\n        <div v-show=\"isCollapse\">&nbsp;</div>\n        <!-- 折叠、展开功能 -->\n        <div>\n          <!-- 选中的icon -->\n          <img\n            v-show=\"isCollapse\"\n            class=\"icon-16 pointer hover-primary\"\n            style=\"display: block;\"\n            @click=\"handleToggleCollapse\"\n            :src=\"require('@/assets/icon/fold1.png')\"\n            title=\"展开\"\n            alt=\"icon\"\n          />\n          <!-- 未选中的icon -->\n          <img\n            v-show=\"!isCollapse\"\n            class=\"icon-16 pointer hover-primary\"\n            style=\"display: block;\"\n            @click=\"handleToggleCollapse\"\n            :src=\"require('@/assets/icon/fold2.png')\"\n            title=\"折叠\"\n            alt=\"icon\"\n          />\n        </div>\n      </div>\n      <hr v-show=\"!isCollapse\" class=\"hr ml-20px\" style=\"width: calc(100% - 40px);\" />\n      <hr v-show=\"isCollapse\" class=\"hr\" style=\"width: 40px; margin-left: 5px;\" />\n\n      <div class=\"menu-list\">\n        <el-menu\n          class=\"el-menu-vertical-demo\"\n          unique-opened\n          :default-active=\"activeIndex\"\n          @select=\"handleSelect\"\n          :collapse=\"isCollapse\"\n        >\n          <div v-for=\"(item, index) in routes\" :key=\"`菜单${index}`\">\n            <!-- <el-menu-item :index=\"citem.route\" v-if=\"citem.type == '1'\" class=\"menu-item\">\n              <template slot=\"title\">\n                <span>{{ citem.name }}</span>\n              </template>\n            </el-menu-item> -->\n            <template v-if=\"hasChildren(item)\">\n              <el-submenu :index=\"item.route\" v-if=\"item.type == '1'\">\n                <template slot=\"title\">\n                  <div\n                    class=\"d-inline-block\"\n                    :class=\"[{'ml-0px mr-18px': isParentSelected(item)}, { 'mr-18px': !isCollapse }]\"\n                  >\n                    <i class=\"iconfont\" :class=\"[{'color-primary': isParentSelected(item) && isCollapse }, item.iconClass]\"></i>\n                  </div>\n                  <span slot=\"title\" v-show=\"!isCollapse\">{{ item.name }}</span>\n                </template>\n                <el-menu-item-group v-for=\"sub in item.children\" :key=\"sub.name\">\n                  <el-menu-item :index=\"sub.route\" v-if=\"sub.type == '1'\">\n                    <template slot=\"title\">\n                      <span :title=\"sub.name\" style=\"margin-left: 12px;\">{{ sub.name }}</span>\n                    </template>\n                  </el-menu-item>\n                </el-menu-item-group>\n              </el-submenu>\n            </template>\n            <template v-else>\n              <el-menu-item :index=\"item.route\">\n                <div class=\"d-inline-block\" :class=\"[{'ml-0px mr-18px': isSelected(item)}, { 'mr-18px': !isCollapse }]\">\n                  <i class=\"iconfont\" :class=\"item.iconClass\"></i>\n                </div>\n                <span slot=\"title\">{{ item.name }}</span>\n              </el-menu-item>\n            </template>\n          </div>\n        </el-menu>\n      </div>\n    </div>\n    <!-- 右边内容区域 -->\n    <div class=\"right-container\">\n      <slot name=\"content\">\n        <div v-show=\"!hideNav\" class=\"sub-header bottom-shadow nowrap\">\n          <div class=\"d-flex space-between w-100 border-box\">\n            <div v-if=\"routesLoaded\" id=\"sub-header-left\" class=\"w-25 d-flex\">\n              <slot name=\"sub-header-left\"></slot>\n            </div>\n            <div id=\"sub-header-center\" class=\"w-50 d-flex text-center\">\n              <slot name=\"sub-header-center\"></slot>\n            </div>\n            <div id=\"sub-header-right\" class=\"w-25 d-flex\">\n              <slot name=\"sub-header-right\"></slot>\n            </div>\n          </div>\n        </div>\n        <div class=\"content-box border-box p-20px\">\n          <div\n            v-if=\"isLogin && routesLoaded\"\n            id=\"main-content\"\n            class=\"right-content p-20px bg-white card-shadow\"\n          >\n            <slot>默认slot</slot>\n          </div>\n        </div>\n      </slot>\n    </div>\n  </div>\n</template>\n\n<script>\nimport '@/store/store'\nimport { getMenuAuthAsync } from '@/api/common'\nimport { getToken } from '@/utils/login-helper.ts'\nimport routeIcons from './routeIcons.json'\nimport { ROUTES_KEY, ROUTES_MAP_KEY } from '@/constants'\nimport bus from 'vue3-eventbus'\nimport { isPathInMenuItem, getAllCoveredRoutes } from '@/utils/utils'\nimport { useWindowSize } from '@vueuse/core'\n\nlet routesMap = null\n\nexport default {\n  name: 'koala-side',\n  components: {},\n  props: {\n    // routes: {\n    //   type: Array\n    // },\n    activeIndex: {\n      type: String,\n      default: ''\n    },\n    currentRoute: Object,\n    hideNav: Boolean, // 隐藏左边导航\n    hideSubHeader: Boolean, // 隐藏上边头部\n  },\n  data() {\n    return {\n      isCollapse: false,\n      selectedIndex: '',\n      parentSelectedIndex: '',\n      minWidth: '100%',\n      isLogin: false,\n      routesLoaded: false,\n      routes: [],\n      user: {\n        platforms: []\n      },\n      appName: '',\n    }\n  },\n  computed:{},\n  watch: {\n    activeIndex: {\n      handler() {\n        this.selectedIndex = this.activeIndex\n      },\n      immediate: true\n    },\n  },\n  created() {\n    // 需要监听token值的变化\n    bus.on('getAppKey', this.getAppKey)\n    bus.on('tokenChange', this.handleTokenChange)\n    bus.on('logout', this.handleLogout)\n    bus.on('getAppName', this.getAppName)\n\n    window.addEventListener('resize', this.handleResize, false)\n    this.handleResize()\n  },\n  mounted() {},\n  methods: {\n    getAppKey(appKey) {\n      const token = getToken()\n      this.isLogin = !!token\n      if (this.isLogin) {\n        this.getMenuAuth(appKey)\n      }\n    },\n    getAppName(appName) {\n      this.appName = appName\n    },\n    // 窗口缩放\n    handleResize() {\n      const { width } = useWindowSize()\n      this.isCollapse = width.value < 1300\n    },\n    // 退出登录\n    handleLogout() {\n      this.isLogin = false\n      this.routesLoaded = false\n      // this.routes = []\n      // routesMap = null\n    },\n    // token变化，代表登录成功，开始获取菜单数据\n    handleTokenChange(token) {\n      if (token) {\n        this.isLogin = true\n        this.getMenuAuth()\n      }\n    },\n    // 获取菜单数据\n    getMenuAuth(appKey) {\n      if (!appKey) return\n      let localRoutesMap = {}\n      try {\n        localRoutesMap = JSON.parse(localStorage.getItem(ROUTES_MAP_KEY) || '{}')\n        this.routes = localRoutesMap[appKey] || []\n        this.setRoutesMap(this.routes)\n      } catch (error) { }\n      getMenuAuthAsync({ appKey }).then(async res => {\n        if (res.status == 200) {\n          this.routes = res.data\n          // 设置iconClass\n          this.routes.forEach(v => {\n            v.iconClass = routeIcons.find(icon => icon.route.includes(v.route))?.icon || 'icon-apps'\n          })\n          this.setRoutesMap(this.routes)\n          this.parentSelectedIndex = routesMap.get(this.activeIndex)?.route\n\n          const routesStr = JSON.stringify(this.routes)\n          this.$emit('getRoutes', JSON.parse(routesStr))\n          // 如果当前菜单没有权限则默认定位到路由的第一个菜单\n          if (this.routes && this.routes.length) {\n            // 判断当前路由是否在后端返回的菜单中\n            const flag = this.routes.some(item => isPathInMenuItem(item, this.$route.path, 'dynamic'))\n            // 如果没在，并且当前路由有meta.code，说明当前是没有权限的页面\n            if (!flag && this.$route.meta.hasOwnProperty('code')) {\n              // 一般一定会有静态路由\n              if (this.$router.options.routes[0] && this.$router.options.routes[0].children) {\n                const staticRoutes = this.$router.options.routes[0].children\n                const rightRoute = getAllCoveredRoutes(staticRoutes, this.routes)\n                // // 循环静态路由，找到第一个后端返回和静态路由集合中都有的路由\n                // for (const staticItem of staticRoutes) {\n                //   const rightOne = this.routes.find(item => isPathInMenuItem({\n                //     ...staticItem,\n                //     route: `/${staticItem.path}`\n                //   }, item.route))\n                //   if (rightOne) {\n                //     rightRoute = rightOne\n                //     break\n                //   }\n                // }\n                //跳转\n                if (rightRoute) {\n                  this.$router.replace(rightRoute)\n                } else {\n                  this.$router.replace('/404')\n                }\n              }\n            }\n          } else {\n            this.$router.replace('/404')\n          }\n          // 缓存当前routes\n          localStorage.setItem(ROUTES_KEY, routesStr)\n          // // 根据appKey缓存当前routes\n          // localRoutesMap = Object.assign(localRoutesMap, { [appKey]: this.routes })\n          // localStorage.setItem(ROUTES_MAP_KEY, JSON.stringify(localRoutesMap))\n          this.routesLoaded = true\n        }\n      })\n    },\n    setRoutesMap(routes) {\n      routesMap = new Map()\n      routes.forEach((parent) => {\n        parent.children?.forEach(child => {\n          if (child.route) {\n            routesMap.set(child.route, parent)\n          }\n        })\n      })\n    },\n    // 判断是否有子导航菜单\n    hasChildren(item) {\n      if (item.children && item.children.length > 0) {\n        let first = item.children[0]\n        if (first.route) {\n          return true\n        } else {\n          return false\n        }\n      }\n      return false\n    },\n    // 当前节点是否选中\n    isSelected(item) {\n      return item.route === this.selectedIndex\n    },\n    // 父节点是否选中\n    isParentSelected(parent) {\n      if (routesMap.get(this.selectedIndex)) {\n        return routesMap.get(this.selectedIndex).route === parent.route\n      }\n    },\n    // 选中回调\n    handleSelect(index, indexPath) {\n      this.parentSelectedIndex = indexPath['0']\n      this.selectedIndex = index\n      this.$emit('handleSelect', index)\n    },\n    // 折叠、展开\n    handleToggleCollapse() {\n      this.isCollapse = !this.isCollapse\n    },\n  },\n  destroyed() {\n    window.removeEventListener('resize', this.handleResize)\n  }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$sub-header-height: 56px;\n// 右边（除开导航菜单）最小宽度\n$content-min-width: 1180px;\n\n.frame-container {\n  display: flex;\n  justify-content: space-between;\n  box-sizing: border-box;\n  width: 100%;\n  height: calc(100vh - 51px);\n  overflow-y: auto;\n  .right-container {\n    width: 100%;\n    overflow: hidden;\n    .sub-header {\n      display: flex;\n      justify-content: space-between;\n      box-sizing: border-box;\n      // margin-left: 4px;\n      padding: 0 20px;\n      width: calc(100% - 4px);\n      height: $sub-header-height + 1px;\n      line-height: $sub-header-height + 1px;\n      border-bottom: 1px solid var(--color-border);\n      background-image: url('@/assets/img/sub-header.png');\n      background-size: 100% 100%;\n      .sub-header-left {\n        font-weight: 600;\n      }\n    }\n    .content-box {\n      height: calc(100% - 60px);\n      overflow-y: auto;\n    }\n  }\n}\n\n#side {\n  height: calc(100vh - 51px);\n  overflow-x: hidden;\n  overflow-y: auto;\n  box-sizing: border-box;\n  flex-shrink: 0;\n  &.slide-shadow {\n    box-shadow: 1px 0 4px 0 rgba(33, 76, 217, 0.1);\n    border-right: 1px solid var(--color-border);\n  }\n  .slide-title {\n    padding: 0 20px;\n    height: $sub-header-height;\n    line-height: $sub-header-height;\n    &.is-collapse {\n      padding: 0 16px;\n    }\n  }\n}\n\n#main-content {\n  padding: 24px;\n  border-radius: 4px;\n  box-sizing: border-box;\n  min-height: 100%;\n  min-width: $content-min-width;\n}\n\n::v-deep #sub-header-left {\n  .el-breadcrumb {\n    line-height: $sub-header-height;\n  }\n}\n</style>\n","export default \"data:image/png;base64,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\"","<template>\n  <section class=\"text-center\">\n    <div class=\"error-card\">\n      <div class=\"img-wrap select-none\" style=\"width: 240px; height: 180px;\">\n        <img :src=\"require('@/assets/img/403.png')\" alt=\"403\" />\n      </div>\n      <slot>\n        <p class=\"my-20px\">很抱歉，您没有访问权限，请联系管理员开通相关权限。</p>\n        <el-button type=\"primary\" @click=\"handleBack\">回首页</el-button>\n      </slot>\n    </div>\n  </section>\n</template>\n\n<script>\nexport default {\n  name: 'Error403',\n  data() {\n    return {}\n  },\n  mounted() {},\n  methods: {\n    handleBack() {\n      location.href = '/'\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n  position: relative;\n  width: 100%;\n  height: 100%;\n  .error-card {\n    width: 900px;\n    height: 412px;\n    position: absolute;\n    z-index: 2;\n    left: calc((100vw - 900px) / 2);\n    top: calc((100vh - 512px) / 2);\n    box-sizing: border-box;\n    flex-shrink: 0;\n    border-radius: 4px;\n    background: #fff;\n    box-shadow: 0px 2px 8px 0px rgba(33, 76, 217, 0.2);\n    .img-wrap {\n      margin: 0 auto;\n      padding-top: 70px;\n    }\n    p {\n      font-size: 14px;\n      font-weight: 600;\n      line-height: 20px;\n      color: var(--color-grey9);\n    }\n  }\n}\n</style>\n","export default \"data:image/png;base64,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\"","<template>\n  <section class=\"text-center\">\n    <div class=\"error-card\">\n      <div class=\"img-wrap select-none\" style=\"width: 240px; height: 180px;\">\n        <img :src=\"require('@/assets/img/404.png')\" alt=\"404\" />\n      </div>\n      <slot>\n        <p class=\"my-20px\">您访问的页面已经不存在</p>\n        <el-button type=\"primary\" @click=\"handleBack\">回首页</el-button>\n        <el-button type=\"\" @click=\"goBack\">上一页</el-button>\n      </slot>\n    </div>\n  </section>\n</template>\n\n<script>\nexport default {\n  name: 'Error404',\n  props: {},\n  data() {\n    return {}\n  },\n  mounted() {},\n  methods: {\n    handleBack() {\n      location.href = '/'\n    },\n    goBack() {\n      this.$router.go(-1)\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n  position: relative;\n  width: 100%;\n  height: 100%;\n  .error-card {\n    width: 900px;\n    height: 412px;\n    position: absolute;\n    z-index: 2;\n    left: calc((100vw - 900px) / 2);\n    top: calc((100vh - 512px) / 2);\n    box-sizing: border-box;\n    flex-shrink: 0;\n    border-radius: 4px;\n    background: #fff;\n    box-shadow: 0px 2px 8px 0px rgba(33, 76, 217, 0.2);\n    .img-wrap {\n      margin: 0 auto;\n      padding-top: 70px;\n    }\n    p {\n      font-size: 14px;\n      font-weight: 600;\n      line-height: 20px;\n      color: var(--color-grey9);\n    }\n  }\n}\n</style>\n","export default \"data:image/png;base64,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\"","<template>\r\n  <section>\r\n    <div class=\"img-wrap select-none text-center\" style=\"width: 184px; height: auto;\">\r\n      <img :src=\"require('@/assets/img/nodata.png')\" alt=\"nodata\" />\r\n      <p class=\"mt-20px\">{{ text }}</p>\r\n    </div>\r\n  </section>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: 'NoData',\r\n  props: {\r\n    text: {\r\n      type: String,\r\n      default: '暂无数据'\r\n    }\r\n  },\r\n  data() {\r\n    return {}\r\n  },\r\n  mounted() {},\r\n  methods: {}\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\nsection {\r\n  display: flex;\r\n  width: 100%;\r\n  height: 100%;\r\n  overflow: hidden;\r\n  justify-content: center;\r\n  align-items: center;\r\n  text-align: center;\r\n  .img-wrap {\r\n    margin: 0 auto;\r\n  }\r\n  p {\r\n    color: var(--color-grey8);\r\n  }\r\n}\r\n</style>\r\n","<script setup>\nconst isMounted = ref(false)\n\nconst { to, clearChildren } = defineProps({\n  to: {\n    type: String,\n    required: true,\n    default: 'body',\n  },\n  clearChildren: {\n    type: Boolean,\n    default: true,\n  }\n})\n\nconst vm = getCurrentInstance().proxy\n\n// 挂载时\nonMounted(() => {\n  isMounted.value = true\n  if (clearChildren) {\n    document.querySelector(to)?.childNodes.forEach(node => {\n      node.style.display = 'none'\n    })\n  }\n  document.querySelector(to)?.appendChild(vm.$el)\n})\n\n// 组件激活时\nonActivated(() => {\n  if (isMounted.value) return\n  document.querySelector(to)?.appendChild(vm.$el)\n})\n\n// 路由切换移除\nonDeactivated(() => {\n  isMounted.value = false\n  vm?.$el?.parentNode.removeChild(vm.$el)\n})\n\n// 销毁时移除\nonUnmounted (() => {\n  isMounted.value = false\n  vm?.$el?.parentNode?.removeChild(vm.$el)\n  document.querySelector(to)?.childNodes.forEach(node => {\n    node.style.display = 'block'\n  })\n})\n\n</script>\n\n<template>\n  <div class='teleport'>\n    <slot></slot>\n  </div>\n</template>\n","export { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n  let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n  let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n  return (size = defaultSize) => {\n    let id = ''\n    while (true) {\n      let bytes = getRandom(step)\n      let j = step\n      while (j--) {\n        id += alphabet[bytes[j] & mask] || ''\n        if (id.length === size) return id\n      }\n    }\n  }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n  customRandom(alphabet, size, random)\nexport let nanoid = (size = 21) =>\n  crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {\n    byte &= 63\n    if (byte < 36) {\n      id += byte.toString(36)\n    } else if (byte < 62) {\n      id += (byte - 26).toString(36).toUpperCase()\n    } else if (byte > 62) {\n      id += '-'\n    } else {\n      id += '_'\n    }\n    return id\n  }, '')\n","<script setup>\nimport { nanoid } from 'nanoid'\n\nconst { maxNum } = defineProps({\n  maxNum: {\n    type: Number,\n    default: 3,\n  },\n})\n\nconst wrap = ref(null)\nconst dropdown = ref(null)\nconst dropdownMenu = ref(null)\nlet isMenuObserve = false // dropdown菜单是否被监听\nconst dropdownItems = ref(null)\nconst vm = getCurrentInstance().proxy\nconst mutationLock = ref(false) // 防止死循环\n\n// 挂载时\nonMounted(async () => {\n  handleChildrenVisible()\n  mutationObserve(wrap.value)\n})\n\n// 监听dom元素改变\nfunction mutationObserve(el) {\n  const config = {\n    attributes: false,\n    childList: true,\n    subtree: true,\n  }\n  const observer = new MutationObserver(handleMutaionCallback)\n  observer.observe(el, config)\n  return observer\n}\n\n// 监听回调\nfunction handleMutaionCallback(mutationsList, observer) {\n  // debugger\n  if (mutationLock.value) return\n  for (let m of mutationsList) {\n    if (m.type === 'childList') {\n      if (m.removedNodes.length > 0 || m.addedNodes.length > 0) {\n        Promise.resolve().then(handleChildrenVisible)\n        break\n      }\n    }\n  }\n}\n\nconst visibleDropdown = ref(false)\nconst menuList = ref([])\nlet menuObserver = null\n// 最多显示3个按钮\nasync function handleChildrenVisible() {\n  if (!wrap.value) return\n  mutationLock.value = true\n  const eleChildren = vm.$slots.default\n  // 可见子节点的数量\n  const visibleChidren = eleChildren.filter(item => item.tag && item?.elm?.style?.display !== 'none')\n  // console.log(visibleChidren)\n  // 矫正dom顺序\n  eleChildren.forEach((item) => {\n    wrap.value.appendChild(item.elm)\n  })\n  // console.log(eleChildren)\n  // debugger\n  if (visibleChidren.length > maxNum) {\n    visibleDropdown.value = true\n    const btnLen = eleChildren.length\n    menuList.value = Array.from({ length: btnLen - maxNum + 1  }).fill(0).map(v => ({ id: nanoid() }))\n    await nextTick()\n    // 监听dropdownMenu的dom变化\n    if (!isMenuObserve) {\n      menuObserver = mutationObserve(dropdownMenu.value.$el)\n      isMenuObserve = true\n    }\n    dropdownItems.value?.forEach((item, idx) => {\n      const { elm, tag } = eleChildren[maxNum - 1 + idx]\n      item.appendChild(elm)\n      const display = elm?.style?.display\n      item.style.display = (tag && display !== 'none') ? 'block' : 'none'\n    })\n  } else {\n    eleChildren.forEach((item) => {\n      wrap.value.appendChild(item.elm)\n    })\n    visibleDropdown.value = false\n    isMenuObserve = false\n    menuObserver?.disconnect()\n    menuObserver = null\n  }\n  await nextTick()\n  mutationLock.value = false\n}\n\n// 隐藏菜单\nfunction hideMenu() {\n  dropdown.value.hide()\n}\n\n</script>\n\n<template>\n  <div>\n    <div style=\"display: inline-block;\" ref=\"wrap\"><slot></slot></div>\n    <keep-alive>\n      <el-dropdown ref=\"dropdown\" v-if=\"visibleDropdown\" trigger=\"hover\" :show-timeout=\"200\" :hide-on-click=\"false\">\n        <slot name=\"button\">\n          <el-button type=\"text\" class=\"ml-12px\">更多</el-button>\n        </slot>\n        <el-dropdown-menu\n          slot=\"dropdown\"\n          ref=\"dropdownMenu\"\n          class=\"minw-40px dropdown-menu-wrap\"\n          @click.capture.passive.native=\"hideMenu\"\n        >\n          <li class=\"li-dropdown-item\" ref=\"dropdownItems\" v-for=\"item in menuList\" :key=\"item.id\"></li>\n        </el-dropdown-menu>\n      </el-dropdown>\n    </keep-alive>\n  </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.dropdown-menu-wrap ::v-deep {\n  .el-dropdown-menu__item {\n    padding: 0;\n    .el-button {\n      width: 100%;\n      text-align: left;\n      padding: 0 12px;\n    }\n  }\n  .li-dropdown-item {\n    display: flex;\n    height: 28px;\n    line-height: 28px;\n    &:hover {\n      background-color: var(--color-blue1);\n    }\n    .el-button {\n      width: 100%;\n      text-align: left;\n      padding: 0 12px;\n    }\n  }\n}\n</style>\n","import http from '@/plugins/axios'\n\nexport default {\n  filesFast: data => http.post('/storage/api/v1/files/fast', data),\n  filesUpload: data => http.post('/storage/api/v1/files', data),\n  filesTusUpload: data => http.post('/storage/api/v1/tus/upload/', data),\n  getStorageTusComplete: data => http.post('/storage/api/v1/tus/completed', data),\n}\n","/**\n *  base64.ts\n *\n *  Licensed under the BSD 3-Clause License.\n *    http://opensource.org/licenses/BSD-3-Clause\n *\n *  References:\n *    http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.5';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasatob = typeof atob === 'function';\nconst _hasbtoa = typeof btoa === 'function';\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = ((a) => {\n    let tab = {};\n    a.forEach((c, i) => tab[c] = i);\n    return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n    ? Uint8Array.from.bind(Uint8Array)\n    : (it) => new Uint8Array(Array.prototype.slice.call(it, 0));\nconst _mkUriSafe = (src) => src\n    .replace(/=/g, '').replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n    // console.log('polyfilled');\n    let u32, c0, c1, c2, asc = '';\n    const pad = bin.length % 3;\n    for (let i = 0; i < bin.length;) {\n        if ((c0 = bin.charCodeAt(i++)) > 255 ||\n            (c1 = bin.charCodeAt(i++)) > 255 ||\n            (c2 = bin.charCodeAt(i++)) > 255)\n            throw new TypeError('invalid character found');\n        u32 = (c0 << 16) | (c1 << 8) | c2;\n        asc += b64chs[u32 >> 18 & 63]\n            + b64chs[u32 >> 12 & 63]\n            + b64chs[u32 >> 6 & 63]\n            + b64chs[u32 & 63];\n    }\n    return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = _hasbtoa ? (bin) => btoa(bin)\n    : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n        : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer\n    ? (u8a) => Buffer.from(u8a).toString('base64')\n    : (u8a) => {\n        // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n        const maxargs = 0x1000;\n        let strs = [];\n        for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n            strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n        }\n        return _btoa(strs.join(''));\n    };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n    if (c.length < 2) {\n        var cc = c.charCodeAt(0);\n        return cc < 0x80 ? c\n            : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n                + _fromCC(0x80 | (cc & 0x3f)))\n                : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n                    + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n                    + _fromCC(0x80 | (cc & 0x3f)));\n    }\n    else {\n        var cc = 0x10000\n            + (c.charCodeAt(0) - 0xD800) * 0x400\n            + (c.charCodeAt(1) - 0xDC00);\n        return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n            + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n            + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n            + _fromCC(0x80 | (cc & 0x3f)));\n    }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer\n    ? (s) => Buffer.from(s, 'utf8').toString('base64')\n    : _TE\n        ? (s) => _fromUint8Array(_TE.encode(s))\n        : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n    ? _mkUriSafe(_encode(src))\n    : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n    switch (cccc.length) {\n        case 4:\n            var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n                | ((0x3f & cccc.charCodeAt(1)) << 12)\n                | ((0x3f & cccc.charCodeAt(2)) << 6)\n                | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n            return (_fromCC((offset >>> 10) + 0xD800)\n                + _fromCC((offset & 0x3FF) + 0xDC00));\n        case 3:\n            return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n                | ((0x3f & cccc.charCodeAt(1)) << 6)\n                | (0x3f & cccc.charCodeAt(2)));\n        default:\n            return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n                | (0x3f & cccc.charCodeAt(1)));\n    }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n    // console.log('polyfilled');\n    asc = asc.replace(/\\s+/g, '');\n    if (!b64re.test(asc))\n        throw new TypeError('malformed base64.');\n    asc += '=='.slice(2 - (asc.length & 3));\n    let u24, bin = '', r1, r2;\n    for (let i = 0; i < asc.length;) {\n        u24 = b64tab[asc.charAt(i++)] << 18\n            | b64tab[asc.charAt(i++)] << 12\n            | (r1 = b64tab[asc.charAt(i++)]) << 6\n            | (r2 = b64tab[asc.charAt(i++)]);\n        bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n            : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n                : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n    }\n    return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = _hasatob ? (asc) => atob(_tidyB64(asc))\n    : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n        : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer\n    ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n    : (a) => _U8Afrom(_atob(a).split('').map(c => c.charCodeAt(0)));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer\n    ? (a) => Buffer.from(a, 'base64').toString('utf8')\n    : _TD\n        ? (a) => _TD.decode(_toUint8Array(a))\n        : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string.  Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n  */\nconst isValid = (src) => {\n    if (typeof src !== 'string')\n        return false;\n    const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n    return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n//\nconst _noEnum = (v) => {\n    return {\n        value: v, enumerable: false, writable: true, configurable: true\n    };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n    const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n    _add('fromBase64', function () { return decode(this); });\n    _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n    _add('toBase64URI', function () { return encode(this, true); });\n    _add('toBase64URL', function () { return encode(this, true); });\n    _add('toUint8Array', function () { return toUint8Array(this); });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n    const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n    _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n    _add('toBase64URI', function () { return fromUint8Array(this, true); });\n    _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n    extendString();\n    extendUint8Array();\n};\nconst gBase64 = {\n    version: version,\n    VERSION: VERSION,\n    atob: _atob,\n    atobPolyfill: atobPolyfill,\n    btoa: _btoa,\n    btoaPolyfill: btoaPolyfill,\n    fromBase64: decode,\n    toBase64: encode,\n    encode: encode,\n    encodeURI: encodeURI,\n    encodeURL: encodeURI,\n    utob: utob,\n    btou: btou,\n    decode: decode,\n    isValid: isValid,\n    fromUint8Array: fromUint8Array,\n    toUint8Array: toUint8Array,\n    extendString: extendString,\n    extendUint8Array: extendUint8Array,\n    extendBuiltins: extendBuiltins,\n};\n// makecjs:CUT //\nexport { version };\nexport { VERSION };\nexport { _atob as atob };\nexport { atobPolyfill };\nexport { _btoa as btoa };\nexport { btoaPolyfill };\nexport { decode as fromBase64 };\nexport { encode as toBase64 };\nexport { utob };\nexport { encode };\nexport { encodeURI };\nexport { encodeURI as encodeURL };\nexport { btou };\nexport { decode };\nexport { isValid };\nexport { fromUint8Array };\nexport { toUint8Array };\nexport { extendString };\nexport { extendUint8Array };\nexport { extendBuiltins };\n// and finally,\nexport { gBase64 as Base64 };\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n  protocol = protocol.split(':')[0];\n  port = +port;\n\n  if (!port) return false;\n\n  switch (protocol) {\n    case 'http':\n    case 'ws':\n    return port !== 80;\n\n    case 'https':\n    case 'wss':\n    return port !== 443;\n\n    case 'ftp':\n    return port !== 21;\n\n    case 'gopher':\n    return port !== 70;\n\n    case 'file':\n    return false;\n  }\n\n  return port !== 0;\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input.replace(/\\+/g, ' '));\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n  try {\n    return encodeURIComponent(input);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n  var parser = /([^=?#&]+)=?([^&]*)/g\n    , result = {}\n    , part;\n\n  while (part = parser.exec(query)) {\n    var key = decode(part[1])\n      , value = decode(part[2]);\n\n    //\n    // Prevent overriding of existing properties. This ensures that build-in\n    // methods like `toString` or __proto__ are not overriden by malicious\n    // querystrings.\n    //\n    // In the case if failed decoding, we want to omit the key/value pairs\n    // from the result.\n    //\n    if (key === null || value === null || key in result) continue;\n    result[key] = value;\n  }\n\n  return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n  prefix = prefix || '';\n\n  var pairs = []\n    , value\n    , key;\n\n  //\n  // Optionally prefix with a '?' if needed\n  //\n  if ('string' !== typeof prefix) prefix = '?';\n\n  for (key in obj) {\n    if (has.call(obj, key)) {\n      value = obj[key];\n\n      //\n      // Edge cases where we actually want to encode the value to an empty\n      // string instead of the stringified value.\n      //\n      if (!value && (value === null || value === undef || isNaN(value))) {\n        value = '';\n      }\n\n      key = encode(key);\n      value = encode(value);\n\n      //\n      // If we failed to encode the strings, we should bail out as we don't\n      // want to add invalid strings to the query.\n      //\n      if (key === null || value === null) continue;\n      pairs.push(key +'='+ value);\n    }\n  }\n\n  return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\nvar required = require('requires-port')\n  , qs = require('querystringify')\n  , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n  , CRHTLF = /[\\n\\r\\t]/g\n  , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n  , port = /:\\d+$/\n  , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n  , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n *     characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n  return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n *    indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n *    the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n  ['#', 'hash'],                        // Extract from the back.\n  ['?', 'query'],                       // Extract from the back.\n  function sanitize(address, url) {     // Sanitize what is left of the address\n    return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n  },\n  ['/', 'pathname'],                    // Extract from the back.\n  ['@', 'auth', 1],                     // Extract from the front.\n  [NaN, 'host', undefined, 1, 1],       // Set left over value.\n  [/:(\\d*)$/, 'port', undefined, 1],    // RegExp the back.\n  [NaN, 'hostname', undefined, 1, 1]    // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n  var globalVar;\n\n  if (typeof window !== 'undefined') globalVar = window;\n  else if (typeof global !== 'undefined') globalVar = global;\n  else if (typeof self !== 'undefined') globalVar = self;\n  else globalVar = {};\n\n  var location = globalVar.location || {};\n  loc = loc || location;\n\n  var finaldestination = {}\n    , type = typeof loc\n    , key;\n\n  if ('blob:' === loc.protocol) {\n    finaldestination = new Url(unescape(loc.pathname), {});\n  } else if ('string' === type) {\n    finaldestination = new Url(loc, {});\n    for (key in ignore) delete finaldestination[key];\n  } else if ('object' === type) {\n    for (key in loc) {\n      if (key in ignore) continue;\n      finaldestination[key] = loc[key];\n    }\n\n    if (finaldestination.slashes === undefined) {\n      finaldestination.slashes = slashes.test(loc.href);\n    }\n  }\n\n  return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n  return (\n    scheme === 'file:' ||\n    scheme === 'ftp:' ||\n    scheme === 'http:' ||\n    scheme === 'https:' ||\n    scheme === 'ws:' ||\n    scheme === 'wss:'\n  );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n  location = location || {};\n\n  var match = protocolre.exec(address);\n  var protocol = match[1] ? match[1].toLowerCase() : '';\n  var forwardSlashes = !!match[2];\n  var otherSlashes = !!match[3];\n  var slashesCount = 0;\n  var rest;\n\n  if (forwardSlashes) {\n    if (otherSlashes) {\n      rest = match[2] + match[3] + match[4];\n      slashesCount = match[2].length + match[3].length;\n    } else {\n      rest = match[2] + match[4];\n      slashesCount = match[2].length;\n    }\n  } else {\n    if (otherSlashes) {\n      rest = match[3] + match[4];\n      slashesCount = match[3].length;\n    } else {\n      rest = match[4]\n    }\n  }\n\n  if (protocol === 'file:') {\n    if (slashesCount >= 2) {\n      rest = rest.slice(2);\n    }\n  } else if (isSpecial(protocol)) {\n    rest = match[4];\n  } else if (protocol) {\n    if (forwardSlashes) {\n      rest = rest.slice(2);\n    }\n  } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n    rest = match[4];\n  }\n\n  return {\n    protocol: protocol,\n    slashes: forwardSlashes || isSpecial(protocol),\n    slashesCount: slashesCount,\n    rest: rest\n  };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n  if (relative === '') return base;\n\n  var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n    , i = path.length\n    , last = path[i - 1]\n    , unshift = false\n    , up = 0;\n\n  while (i--) {\n    if (path[i] === '.') {\n      path.splice(i, 1);\n    } else if (path[i] === '..') {\n      path.splice(i, 1);\n      up++;\n    } else if (up) {\n      if (i === 0) unshift = true;\n      path.splice(i, 1);\n      up--;\n    }\n  }\n\n  if (unshift) path.unshift('');\n  if (last === '.' || last === '..') path.push('');\n\n  return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n\n  if (!(this instanceof Url)) {\n    return new Url(address, location, parser);\n  }\n\n  var relative, extracted, parse, instruction, index, key\n    , instructions = rules.slice()\n    , type = typeof location\n    , url = this\n    , i = 0;\n\n  //\n  // The following if statements allows this module two have compatibility with\n  // 2 different API:\n  //\n  // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n  //    where the boolean indicates that the query string should also be parsed.\n  //\n  // 2. The `URL` interface of the browser which accepts a URL, object as\n  //    arguments. The supplied object will be used as default values / fall-back\n  //    for relative paths.\n  //\n  if ('object' !== type && 'string' !== type) {\n    parser = location;\n    location = null;\n  }\n\n  if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n  location = lolcation(location);\n\n  //\n  // Extract protocol information before running the instructions.\n  //\n  extracted = extractProtocol(address || '', location);\n  relative = !extracted.protocol && !extracted.slashes;\n  url.slashes = extracted.slashes || relative && location.slashes;\n  url.protocol = extracted.protocol || location.protocol || '';\n  address = extracted.rest;\n\n  //\n  // When the authority component is absent the URL starts with a path\n  // component.\n  //\n  if (\n    extracted.protocol === 'file:' && (\n      extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n    (!extracted.slashes &&\n      (extracted.protocol ||\n        extracted.slashesCount < 2 ||\n        !isSpecial(url.protocol)))\n  ) {\n    instructions[3] = [/(.*)/, 'pathname'];\n  }\n\n  for (; i < instructions.length; i++) {\n    instruction = instructions[i];\n\n    if (typeof instruction === 'function') {\n      address = instruction(address, url);\n      continue;\n    }\n\n    parse = instruction[0];\n    key = instruction[1];\n\n    if (parse !== parse) {\n      url[key] = address;\n    } else if ('string' === typeof parse) {\n      index = parse === '@'\n        ? address.lastIndexOf(parse)\n        : address.indexOf(parse);\n\n      if (~index) {\n        if ('number' === typeof instruction[2]) {\n          url[key] = address.slice(0, index);\n          address = address.slice(index + instruction[2]);\n        } else {\n          url[key] = address.slice(index);\n          address = address.slice(0, index);\n        }\n      }\n    } else if ((index = parse.exec(address))) {\n      url[key] = index[1];\n      address = address.slice(0, index.index);\n    }\n\n    url[key] = url[key] || (\n      relative && instruction[3] ? location[key] || '' : ''\n    );\n\n    //\n    // Hostname, host and protocol should be lowercased so they can be used to\n    // create a proper `origin`.\n    //\n    if (instruction[4]) url[key] = url[key].toLowerCase();\n  }\n\n  //\n  // Also parse the supplied query string in to an object. If we're supplied\n  // with a custom parser as function use that instead of the default build-in\n  // parser.\n  //\n  if (parser) url.query = parser(url.query);\n\n  //\n  // If the URL is relative, resolve the pathname against the base URL.\n  //\n  if (\n      relative\n    && location.slashes\n    && url.pathname.charAt(0) !== '/'\n    && (url.pathname !== '' || location.pathname !== '')\n  ) {\n    url.pathname = resolve(url.pathname, location.pathname);\n  }\n\n  //\n  // Default to a / for pathname if none exists. This normalizes the URL\n  // to always have a /\n  //\n  if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n    url.pathname = '/' + url.pathname;\n  }\n\n  //\n  // We should not add port numbers if they are already the default port number\n  // for a given protocol. As the host also contains the port number we're going\n  // override it with the hostname which contains no port number.\n  //\n  if (!required(url.port, url.protocol)) {\n    url.host = url.hostname;\n    url.port = '';\n  }\n\n  //\n  // Parse down the `auth` for the username and password.\n  //\n  url.username = url.password = '';\n\n  if (url.auth) {\n    index = url.auth.indexOf(':');\n\n    if (~index) {\n      url.username = url.auth.slice(0, index);\n      url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n      url.password = url.auth.slice(index + 1);\n      url.password = encodeURIComponent(decodeURIComponent(url.password))\n    } else {\n      url.username = encodeURIComponent(decodeURIComponent(url.auth));\n    }\n\n    url.auth = url.password ? url.username +':'+ url.password : url.username;\n  }\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  //\n  // The href is just the compiled result.\n  //\n  url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part          Property we need to adjust.\n * @param {Mixed} value          The newly assigned value.\n * @param {Boolean|Function} fn  When setting the query, it will be the function\n *                               used to parse the query.\n *                               When setting the protocol, double slash will be\n *                               removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n  var url = this;\n\n  switch (part) {\n    case 'query':\n      if ('string' === typeof value && value.length) {\n        value = (fn || qs.parse)(value);\n      }\n\n      url[part] = value;\n      break;\n\n    case 'port':\n      url[part] = value;\n\n      if (!required(value, url.protocol)) {\n        url.host = url.hostname;\n        url[part] = '';\n      } else if (value) {\n        url.host = url.hostname +':'+ value;\n      }\n\n      break;\n\n    case 'hostname':\n      url[part] = value;\n\n      if (url.port) value += ':'+ url.port;\n      url.host = value;\n      break;\n\n    case 'host':\n      url[part] = value;\n\n      if (port.test(value)) {\n        value = value.split(':');\n        url.port = value.pop();\n        url.hostname = value.join(':');\n      } else {\n        url.hostname = value;\n        url.port = '';\n      }\n\n      break;\n\n    case 'protocol':\n      url.protocol = value.toLowerCase();\n      url.slashes = !fn;\n      break;\n\n    case 'pathname':\n    case 'hash':\n      if (value) {\n        var char = part === 'pathname' ? '/' : '#';\n        url[part] = value.charAt(0) !== char ? char + value : value;\n      } else {\n        url[part] = value;\n      }\n      break;\n\n    case 'username':\n    case 'password':\n      url[part] = encodeURIComponent(value);\n      break;\n\n    case 'auth':\n      var index = value.indexOf(':');\n\n      if (~index) {\n        url.username = value.slice(0, index);\n        url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n        url.password = value.slice(index + 1);\n        url.password = encodeURIComponent(decodeURIComponent(url.password));\n      } else {\n        url.username = encodeURIComponent(decodeURIComponent(value));\n      }\n  }\n\n  for (var i = 0; i < rules.length; i++) {\n    var ins = rules[i];\n\n    if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n  }\n\n  url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  url.href = url.toString();\n\n  return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n  if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n  var query\n    , url = this\n    , host = url.host\n    , protocol = url.protocol;\n\n  if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n  var result =\n    protocol +\n    ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n  if (url.username) {\n    result += url.username;\n    if (url.password) result += ':'+ url.password;\n    result += '@';\n  } else if (url.password) {\n    result += ':'+ url.password;\n    result += '@';\n  } else if (\n    url.protocol !== 'file:' &&\n    isSpecial(url.protocol) &&\n    !host &&\n    url.pathname !== '/'\n  ) {\n    //\n    // Add back the empty userinfo, otherwise the original invalid URL\n    // might be transformed into a valid one with `url.pathname` as host.\n    //\n    result += '@';\n  }\n\n  //\n  // Trailing colon is removed from `url.host` when it is parsed. If it still\n  // ends with a colon, then add back the trailing colon that was removed. This\n  // prevents an invalid URL from being transformed into a valid one.\n  //\n  if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n    host += ':';\n  }\n\n  result += host + url.pathname;\n\n  query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n  if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n  if (url.hash) result += url.hash;\n\n  return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","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); }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nvar DetailedError = /*#__PURE__*/function (_Error) {\n  _inherits(DetailedError, _Error);\n  var _super = _createSuper(DetailedError);\n  function DetailedError(message) {\n    var _this;\n    var causingErr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n    var req = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n    var res = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n    _classCallCheck(this, DetailedError);\n    _this = _super.call(this, message);\n    _this.originalRequest = req;\n    _this.originalResponse = res;\n    _this.causingError = causingErr;\n    if (causingErr != null) {\n      message += \", caused by \".concat(causingErr.toString());\n    }\n    if (req != null) {\n      var requestId = req.getHeader('X-Request-ID') || 'n/a';\n      var method = req.getMethod();\n      var url = req.getURL();\n      var status = res ? res.getStatus() : 'n/a';\n      var body = res ? res.getBody() || '' : 'n/a';\n      message += \", originated from request (method: \".concat(method, \", url: \").concat(url, \", response code: \").concat(status, \", response text: \").concat(body, \", request id: \").concat(requestId, \")\");\n    }\n    _this.message = message;\n    return _this;\n  }\n  return _createClass(DetailedError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nexport default DetailedError;","/* eslint no-console: \"off\" */\n\nvar isEnabled = false;\nexport function enableDebugLog() {\n  isEnabled = true;\n}\nexport function log(msg) {\n  if (!isEnabled) return;\n  console.log(msg);\n}","/**\n * Generate a UUID v4 based on random numbers. We intentioanlly use the less\n * secure Math.random function here since the more secure crypto.getRandomNumbers\n * is not available on all platforms.\n * This is not a problem for us since we use the UUID only for generating a\n * request ID, so we can correlate server logs to client errors.\n *\n * This function is taken from following site:\n * https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n *\n * @return {string} The generate UUID\n */\nexport default function uuid() {\n  /* eslint-disable no-bitwise */\n  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n    var r = Math.random() * 16 | 0;\n    var v = c === 'x' ? r : r & 0x3 | 0x8;\n    return v.toString(16);\n  });\n}","function _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = \"function\" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || \"@@iterator\", asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\", toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, \"\"); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: \"normal\", arg: fn.call(obj, arg) }; } catch (err) { return { type: \"throw\", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { [\"next\", \"throw\", \"return\"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (\"throw\" !== record.type) { var result = record.arg, value = result.value; return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke(\"next\", value, resolve, reject); }, function (err) { invoke(\"throw\", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke(\"throw\", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, \"_invoke\", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = \"suspendedStart\"; return function (method, arg) { if (\"executing\" === state) throw new Error(\"Generator is already running\"); if (\"completed\" === state) { if (\"throw\" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) { if (\"suspendedStart\" === state) throw state = \"completed\", context.arg; context.dispatchException(context.arg); } else \"return\" === context.method && context.abrupt(\"return\", context.arg); state = \"executing\"; var record = tryCatch(innerFn, self, context); if (\"normal\" === record.type) { if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = \"normal\", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: \"root\" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if (\"function\" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) { var ctor = \"function\" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, \"toString\", function () { return \"[object Generator]\"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if (\"throw\" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if (\"root\" === entry.tryLoc) return handle(\"end\"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, \"catchLoc\"), hasFinally = hasOwn.call(entry, \"finallyLoc\"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error(\"try statement without catch or finally\"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if (\"throw\" === record.type) throw record.arg; return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, \"catch\": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (\"throw\" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _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); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { Base64 } from 'js-base64';\nimport URL from 'url-parse';\nimport DetailedError from './error.js';\nimport { log } from './logger.js';\nimport uuid from './uuid.js';\nvar defaultOptions = {\n  endpoint: null,\n  uploadUrl: null,\n  metadata: {},\n  fingerprint: null,\n  uploadSize: null,\n  onProgress: null,\n  onChunkComplete: null,\n  onSuccess: null,\n  onError: null,\n  onUploadUrlAvailable: null,\n  overridePatchMethod: false,\n  headers: {},\n  addRequestId: false,\n  onBeforeRequest: null,\n  onAfterResponse: null,\n  onShouldRetry: null,\n  chunkSize: Infinity,\n  retryDelays: [0, 1000, 3000, 5000],\n  parallelUploads: 1,\n  parallelUploadBoundaries: null,\n  storeFingerprintForResuming: true,\n  removeFingerprintOnSuccess: false,\n  uploadLengthDeferred: false,\n  uploadDataDuringCreation: false,\n  urlStorage: null,\n  fileReader: null,\n  httpStack: null\n};\nvar BaseUpload = /*#__PURE__*/function () {\n  function BaseUpload(file, options) {\n    _classCallCheck(this, BaseUpload);\n    // Warn about removed options from previous versions\n    if ('resume' in options) {\n      console.log('tus: The `resume` option has been removed in tus-js-client v2. Please use the URL storage API instead.'); // eslint-disable-line no-console\n    }\n\n    // The default options will already be added from the wrapper classes.\n    this.options = options;\n\n    // Cast chunkSize to integer\n    this.options.chunkSize = Number(this.options.chunkSize);\n\n    // The storage module used to store URLs\n    this._urlStorage = this.options.urlStorage;\n\n    // The underlying File/Blob object\n    this.file = file;\n\n    // The URL against which the file will be uploaded\n    this.url = null;\n\n    // The underlying request object for the current PATCH request\n    this._req = null;\n\n    // The fingerpinrt for the current file (set after start())\n    this._fingerprint = null;\n\n    // The key that the URL storage returned when saving an URL with a fingerprint,\n    this._urlStorageKey = null;\n\n    // The offset used in the current PATCH request\n    this._offset = null;\n\n    // True if the current PATCH request has been aborted\n    this._aborted = false;\n\n    // The file's size in bytes\n    this._size = null;\n\n    // The Source object which will wrap around the given file and provides us\n    // with a unified interface for getting its size and slice chunks from its\n    // content allowing us to easily handle Files, Blobs, Buffers and Streams.\n    this._source = null;\n\n    // The current count of attempts which have been made. Zero indicates none.\n    this._retryAttempt = 0;\n\n    // The timeout's ID which is used to delay the next retry\n    this._retryTimeout = null;\n\n    // The offset of the remote upload before the latest attempt was started.\n    this._offsetBeforeRetry = 0;\n\n    // An array of BaseUpload instances which are used for uploading the different\n    // parts, if the parallelUploads option is used.\n    this._parallelUploads = null;\n\n    // An array of upload URLs which are used for uploading the different\n    // parts, if the parallelUploads option is used.\n    this._parallelUploadUrls = null;\n  }\n\n  /**\n   * Use the Termination extension to delete an upload from the server by sending a DELETE\n   * request to the specified upload URL. This is only possible if the server supports the\n   * Termination extension. If the `options.retryDelays` property is set, the method will\n   * also retry if an error ocurrs.\n   *\n   * @param {String} url The upload's URL which will be terminated.\n   * @param {object} options Optional options for influencing HTTP requests.\n   * @return {Promise} The Promise will be resolved/rejected when the requests finish.\n   */\n  _createClass(BaseUpload, [{\n    key: \"findPreviousUploads\",\n    value: function findPreviousUploads() {\n      var _this = this;\n      return this.options.fingerprint(this.file, this.options).then(function (fingerprint) {\n        return _this._urlStorage.findUploadsByFingerprint(fingerprint);\n      });\n    }\n  }, {\n    key: \"resumeFromPreviousUpload\",\n    value: function resumeFromPreviousUpload(previousUpload) {\n      this.url = previousUpload.uploadUrl || null;\n      this._parallelUploadUrls = previousUpload.parallelUploadUrls || null;\n      this._urlStorageKey = previousUpload.urlStorageKey;\n    }\n  }, {\n    key: \"start\",\n    value: function start() {\n      var _this2 = this;\n      var file = this.file;\n      if (!file) {\n        this._emitError(new Error('tus: no file or stream to upload provided'));\n        return;\n      }\n      if (!this.options.endpoint && !this.options.uploadUrl && !this.url) {\n        this._emitError(new Error('tus: neither an endpoint or an upload URL is provided'));\n        return;\n      }\n      var retryDelays = this.options.retryDelays;\n      if (retryDelays != null && Object.prototype.toString.call(retryDelays) !== '[object Array]') {\n        this._emitError(new Error('tus: the `retryDelays` option must either be an array or null'));\n        return;\n      }\n      if (this.options.parallelUploads > 1) {\n        // Test which options are incompatible with parallel uploads.\n        for (var _i = 0, _arr = ['uploadUrl', 'uploadSize', 'uploadLengthDeferred']; _i < _arr.length; _i++) {\n          var optionName = _arr[_i];\n          if (this.options[optionName]) {\n            this._emitError(new Error(\"tus: cannot use the \".concat(optionName, \" option when parallelUploads is enabled\")));\n            return;\n          }\n        }\n      }\n      if (this.options.parallelUploadBoundaries) {\n        if (this.options.parallelUploads <= 1) {\n          this._emitError(new Error('tus: cannot use the `parallelUploadBoundaries` option when `parallelUploads` is disabled'));\n          return;\n        }\n        if (this.options.parallelUploads !== this.options.parallelUploadBoundaries.length) {\n          this._emitError(new Error('tus: the `parallelUploadBoundaries` must have the same length as the value of `parallelUploads`'));\n          return;\n        }\n      }\n      this.options.fingerprint(file, this.options).then(function (fingerprint) {\n        if (fingerprint == null) {\n          log('No fingerprint was calculated meaning that the upload cannot be stored in the URL storage.');\n        } else {\n          log(\"Calculated fingerprint: \".concat(fingerprint));\n        }\n        _this2._fingerprint = fingerprint;\n        if (_this2._source) {\n          return _this2._source;\n        }\n        return _this2.options.fileReader.openFile(file, _this2.options.chunkSize);\n      }).then(function (source) {\n        _this2._source = source;\n\n        // First, we look at the uploadLengthDeferred option.\n        // Next, we check if the caller has supplied a manual upload size.\n        // Finally, we try to use the calculated size from the source object.\n        if (_this2.options.uploadLengthDeferred) {\n          _this2._size = null;\n        } else if (_this2.options.uploadSize != null) {\n          _this2._size = Number(_this2.options.uploadSize);\n          if (Number.isNaN(_this2._size)) {\n            _this2._emitError(new Error('tus: cannot convert `uploadSize` option into a number'));\n            return;\n          }\n        } else {\n          _this2._size = _this2._source.size;\n          if (_this2._size == null) {\n            _this2._emitError(new Error(\"tus: cannot automatically derive upload's size from input. Specify it manually using the `uploadSize` option or use the `uploadLengthDeferred` option\"));\n            return;\n          }\n        }\n\n        // If the upload was configured to use multiple requests or if we resume from\n        // an upload which used multiple requests, we start a parallel upload.\n        if (_this2.options.parallelUploads > 1 || _this2._parallelUploadUrls != null) {\n          _this2._startParallelUpload();\n        } else {\n          _this2._startSingleUpload();\n        }\n      })[\"catch\"](function (err) {\n        _this2._emitError(err);\n      });\n    }\n\n    /**\n     * Initiate the uploading procedure for a parallelized upload, where one file is split into\n     * multiple request which are run in parallel.\n     *\n     * @api private\n     */\n  }, {\n    key: \"_startParallelUpload\",\n    value: function _startParallelUpload() {\n      var _this$options$paralle,\n        _this3 = this;\n      var totalSize = this._size;\n      var totalProgress = 0;\n      this._parallelUploads = [];\n      var partCount = this._parallelUploadUrls != null ? this._parallelUploadUrls.length : this.options.parallelUploads;\n\n      // The input file will be split into multiple slices which are uploaded in separate\n      // requests. Here we get the start and end position for the slices.\n      var parts = (_this$options$paralle = this.options.parallelUploadBoundaries) !== null && _this$options$paralle !== void 0 ? _this$options$paralle : splitSizeIntoParts(this._source.size, partCount);\n\n      // Attach URLs from previous uploads, if available.\n      if (this._parallelUploadUrls) {\n        parts.forEach(function (part, index) {\n          part.uploadUrl = _this3._parallelUploadUrls[index] || null;\n        });\n      }\n\n      // Create an empty list for storing the upload URLs\n      this._parallelUploadUrls = new Array(parts.length);\n\n      // Generate a promise for each slice that will be resolve if the respective\n      // upload is completed.\n      var uploads = parts.map(function (part, index) {\n        var lastPartProgress = 0;\n        return _this3._source.slice(part.start, part.end).then(function (_ref) {\n          var value = _ref.value;\n          return new Promise(function (resolve, reject) {\n            // Merge with the user supplied options but overwrite some values.\n            var options = _objectSpread(_objectSpread({}, _this3.options), {}, {\n              // If available, the partial upload should be resumed from a previous URL.\n              uploadUrl: part.uploadUrl || null,\n              // We take manually care of resuming for partial uploads, so they should\n              // not be stored in the URL storage.\n              storeFingerprintForResuming: false,\n              removeFingerprintOnSuccess: false,\n              // Reset the parallelUploads option to not cause recursion.\n              parallelUploads: 1,\n              // Reset this option as we are not doing a parallel upload.\n              parallelUploadBoundaries: null,\n              metadata: {},\n              // Add the header to indicate the this is a partial upload.\n              headers: _objectSpread(_objectSpread({}, _this3.options.headers), {}, {\n                'Upload-Concat': 'partial'\n              }),\n              // Reject or resolve the promise if the upload errors or completes.\n              onSuccess: resolve,\n              onError: reject,\n              // Based in the progress for this partial upload, calculate the progress\n              // for the entire final upload.\n              onProgress: function onProgress(newPartProgress) {\n                totalProgress = totalProgress - lastPartProgress + newPartProgress;\n                lastPartProgress = newPartProgress;\n                _this3._emitProgress(totalProgress, totalSize);\n              },\n              // Wait until every partial upload has an upload URL, so we can add\n              // them to the URL storage.\n              onUploadUrlAvailable: function onUploadUrlAvailable() {\n                _this3._parallelUploadUrls[index] = upload.url;\n                // Test if all uploads have received an URL\n                if (_this3._parallelUploadUrls.filter(function (u) {\n                  return Boolean(u);\n                }).length === parts.length) {\n                  _this3._saveUploadInUrlStorage();\n                }\n              }\n            });\n            var upload = new BaseUpload(value, options);\n            upload.start();\n\n            // Store the upload in an array, so we can later abort them if necessary.\n            _this3._parallelUploads.push(upload);\n          });\n        });\n      });\n      var req;\n      // Wait until all partial uploads are finished and we can send the POST request for\n      // creating the final upload.\n      Promise.all(uploads).then(function () {\n        req = _this3._openRequest('POST', _this3.options.endpoint);\n        req.setHeader('Upload-Concat', \"final;\".concat(_this3._parallelUploadUrls.join(' ')));\n\n        // Add metadata if values have been added\n        var metadata = encodeMetadata(_this3.options.metadata);\n        if (metadata !== '') {\n          req.setHeader('Upload-Metadata', metadata);\n        }\n        return _this3._sendRequest(req, null);\n      }).then(function (res) {\n        if (!inStatusCategory(res.getStatus(), 200)) {\n          _this3._emitHttpError(req, res, 'tus: unexpected response while creating upload');\n          return;\n        }\n        var location = res.getHeader('Location');\n        if (location == null) {\n          _this3._emitHttpError(req, res, 'tus: invalid or missing Location header');\n          return;\n        }\n        _this3.url = resolveUrl(_this3.options.endpoint, location);\n        log(\"Created upload at \".concat(_this3.url));\n        _this3._emitSuccess();\n      })[\"catch\"](function (err) {\n        _this3._emitError(err);\n      });\n    }\n\n    /**\n     * Initiate the uploading procedure for a non-parallel upload. Here the entire file is\n     * uploaded in a sequential matter.\n     *\n     * @api private\n     */\n  }, {\n    key: \"_startSingleUpload\",\n    value: function _startSingleUpload() {\n      // Reset the aborted flag when the upload is started or else the\n      // _performUpload will stop before sending a request if the upload has been\n      // aborted previously.\n      this._aborted = false;\n\n      // The upload had been started previously and we should reuse this URL.\n      if (this.url != null) {\n        log(\"Resuming upload from previous URL: \".concat(this.url));\n        this._resumeUpload();\n        return;\n      }\n\n      // A URL has manually been specified, so we try to resume\n      if (this.options.uploadUrl != null) {\n        log(\"Resuming upload from provided URL: \".concat(this.options.uploadUrl));\n        this.url = this.options.uploadUrl;\n        this._resumeUpload();\n        return;\n      }\n\n      // An upload has not started for the file yet, so we start a new one\n      log('Creating a new upload');\n      this._createUpload();\n    }\n\n    /**\n     * Abort any running request and stop the current upload. After abort is called, no event\n     * handler will be invoked anymore. You can use the `start` method to resume the upload\n     * again.\n     * If `shouldTerminate` is true, the `terminate` function will be called to remove the\n     * current upload from the server.\n     *\n     * @param {boolean} shouldTerminate True if the upload should be deleted from the server.\n     * @return {Promise} The Promise will be resolved/rejected when the requests finish.\n     */\n  }, {\n    key: \"abort\",\n    value: function abort(shouldTerminate) {\n      var _this4 = this;\n      // Stop any parallel partial uploads, that have been started in _startParallelUploads.\n      if (this._parallelUploads != null) {\n        this._parallelUploads.forEach(function (upload) {\n          upload.abort(shouldTerminate);\n        });\n      }\n\n      // Stop any current running request.\n      if (this._req !== null) {\n        this._req.abort();\n        // Note: We do not close the file source here, so the user can resume in the future.\n      }\n\n      this._aborted = true;\n\n      // Stop any timeout used for initiating a retry.\n      if (this._retryTimeout != null) {\n        clearTimeout(this._retryTimeout);\n        this._retryTimeout = null;\n      }\n      if (!shouldTerminate || this.url == null) {\n        return Promise.resolve();\n      }\n      return BaseUpload.terminate(this.url, this.options)\n      // Remove entry from the URL storage since the upload URL is no longer valid.\n      .then(function () {\n        return _this4._removeFromUrlStorage();\n      });\n    }\n  }, {\n    key: \"_emitHttpError\",\n    value: function _emitHttpError(req, res, message, causingErr) {\n      this._emitError(new DetailedError(message, causingErr, req, res));\n    }\n  }, {\n    key: \"_emitError\",\n    value: function _emitError(err) {\n      var _this5 = this;\n      // Do not emit errors, e.g. from aborted HTTP requests, if the upload has been stopped.\n      if (this._aborted) return;\n\n      // Check if we should retry, when enabled, before sending the error to the user.\n      if (this.options.retryDelays != null) {\n        // We will reset the attempt counter if\n        // - we were already able to connect to the server (offset != null) and\n        // - we were able to upload a small chunk of data to the server\n        var shouldResetDelays = this._offset != null && this._offset > this._offsetBeforeRetry;\n        if (shouldResetDelays) {\n          this._retryAttempt = 0;\n        }\n        if (shouldRetry(err, this._retryAttempt, this.options)) {\n          var delay = this.options.retryDelays[this._retryAttempt++];\n          this._offsetBeforeRetry = this._offset;\n          this._retryTimeout = setTimeout(function () {\n            _this5.start();\n          }, delay);\n          return;\n        }\n      }\n      if (typeof this.options.onError === 'function') {\n        this.options.onError(err);\n      } else {\n        throw err;\n      }\n    }\n\n    /**\n     * Publishes notification if the upload has been successfully completed.\n     *\n     * @api private\n     */\n  }, {\n    key: \"_emitSuccess\",\n    value: function _emitSuccess() {\n      if (this.options.removeFingerprintOnSuccess) {\n        // Remove stored fingerprint and corresponding endpoint. This causes\n        // new uploads of the same file to be treated as a different file.\n        this._removeFromUrlStorage();\n      }\n      if (typeof this.options.onSuccess === 'function') {\n        this.options.onSuccess();\n      }\n    }\n\n    /**\n     * Publishes notification when data has been sent to the server. This\n     * data may not have been accepted by the server yet.\n     *\n     * @param {number} bytesSent  Number of bytes sent to the server.\n     * @param {number} bytesTotal Total number of bytes to be sent to the server.\n     * @api private\n     */\n  }, {\n    key: \"_emitProgress\",\n    value: function _emitProgress(bytesSent, bytesTotal) {\n      if (typeof this.options.onProgress === 'function') {\n        this.options.onProgress(bytesSent, bytesTotal);\n      }\n    }\n\n    /**\n     * Publishes notification when a chunk of data has been sent to the server\n     * and accepted by the server.\n     * @param {number} chunkSize  Size of the chunk that was accepted by the server.\n     * @param {number} bytesAccepted Total number of bytes that have been\n     *                                accepted by the server.\n     * @param {number} bytesTotal Total number of bytes to be sent to the server.\n     * @api private\n     */\n  }, {\n    key: \"_emitChunkComplete\",\n    value: function _emitChunkComplete(chunkSize, bytesAccepted, bytesTotal) {\n      if (typeof this.options.onChunkComplete === 'function') {\n        this.options.onChunkComplete(chunkSize, bytesAccepted, bytesTotal);\n      }\n    }\n\n    /**\n     * Create a new upload using the creation extension by sending a POST\n     * request to the endpoint. After successful creation the file will be\n     * uploaded\n     *\n     * @api private\n     */\n  }, {\n    key: \"_createUpload\",\n    value: function _createUpload() {\n      var _this6 = this;\n      if (!this.options.endpoint) {\n        this._emitError(new Error('tus: unable to create upload because no endpoint is provided'));\n        return;\n      }\n      var req = this._openRequest('POST', this.options.endpoint);\n      if (this.options.uploadLengthDeferred) {\n        req.setHeader('Upload-Defer-Length', 1);\n      } else {\n        req.setHeader('Upload-Length', this._size);\n      }\n\n      // Add metadata if values have been added\n      var metadata = encodeMetadata(this.options.metadata);\n      if (metadata !== '') {\n        req.setHeader('Upload-Metadata', metadata);\n      }\n      var promise;\n      if (this.options.uploadDataDuringCreation && !this.options.uploadLengthDeferred) {\n        this._offset = 0;\n        promise = this._addChunkToRequest(req);\n      } else {\n        promise = this._sendRequest(req, null);\n      }\n      promise.then(function (res) {\n        if (!inStatusCategory(res.getStatus(), 200)) {\n          _this6._emitHttpError(req, res, 'tus: unexpected response while creating upload');\n          return;\n        }\n        var location = res.getHeader('Location');\n        if (location == null) {\n          _this6._emitHttpError(req, res, 'tus: invalid or missing Location header');\n          return;\n        }\n        _this6.url = resolveUrl(_this6.options.endpoint, location);\n        log(\"Created upload at \".concat(_this6.url));\n        if (typeof _this6.options.onUploadUrlAvailable === 'function') {\n          _this6.options.onUploadUrlAvailable();\n        }\n        if (_this6._size === 0) {\n          // Nothing to upload and file was successfully created\n          _this6._emitSuccess();\n          _this6._source.close();\n          return;\n        }\n        _this6._saveUploadInUrlStorage().then(function () {\n          if (_this6.options.uploadDataDuringCreation) {\n            _this6._handleUploadResponse(req, res);\n          } else {\n            _this6._offset = 0;\n            _this6._performUpload();\n          }\n        });\n      })[\"catch\"](function (err) {\n        _this6._emitHttpError(req, null, 'tus: failed to create upload', err);\n      });\n    }\n\n    /*\n     * Try to resume an existing upload. First a HEAD request will be sent\n     * to retrieve the offset. If the request fails a new upload will be\n     * created. In the case of a successful response the file will be uploaded.\n     *\n     * @api private\n     */\n  }, {\n    key: \"_resumeUpload\",\n    value: function _resumeUpload() {\n      var _this7 = this;\n      var req = this._openRequest('HEAD', this.url);\n      var promise = this._sendRequest(req, null);\n      promise.then(function (res) {\n        var status = res.getStatus();\n        if (!inStatusCategory(status, 200)) {\n          // If the upload is locked (indicated by the 423 Locked status code), we\n          // emit an error instead of directly starting a new upload. This way the\n          // retry logic can catch the error and will retry the upload. An upload\n          // is usually locked for a short period of time and will be available\n          // afterwards.\n          if (status === 423) {\n            _this7._emitHttpError(req, res, 'tus: upload is currently locked; retry later');\n            return;\n          }\n          if (inStatusCategory(status, 400)) {\n            // Remove stored fingerprint and corresponding endpoint,\n            // on client errors since the file can not be found\n            _this7._removeFromUrlStorage();\n          }\n          if (!_this7.options.endpoint) {\n            // Don't attempt to create a new upload if no endpoint is provided.\n            _this7._emitHttpError(req, res, 'tus: unable to resume upload (new upload cannot be created without an endpoint)');\n            return;\n          }\n\n          // Try to create a new upload\n          _this7.url = null;\n          _this7._createUpload();\n          return;\n        }\n        var offset = parseInt(res.getHeader('Upload-Offset'), 10);\n        if (Number.isNaN(offset)) {\n          _this7._emitHttpError(req, res, 'tus: invalid or missing offset value');\n          return;\n        }\n        var length = parseInt(res.getHeader('Upload-Length'), 10);\n        if (Number.isNaN(length) && !_this7.options.uploadLengthDeferred) {\n          _this7._emitHttpError(req, res, 'tus: invalid or missing length value');\n          return;\n        }\n        if (typeof _this7.options.onUploadUrlAvailable === 'function') {\n          _this7.options.onUploadUrlAvailable();\n        }\n        _this7._saveUploadInUrlStorage().then(function () {\n          // Upload has already been completed and we do not need to send additional\n          // data to the server\n          if (offset === length) {\n            _this7._emitProgress(length, length);\n            _this7._emitSuccess();\n            return;\n          }\n          _this7._offset = offset;\n          _this7._performUpload();\n        });\n      })[\"catch\"](function (err) {\n        _this7._emitHttpError(req, null, 'tus: failed to resume upload', err);\n      });\n    }\n\n    /**\n     * Start uploading the file using PATCH requests. The file will be divided\n     * into chunks as specified in the chunkSize option. During the upload\n     * the onProgress event handler may be invoked multiple times.\n     *\n     * @api private\n     */\n  }, {\n    key: \"_performUpload\",\n    value: function _performUpload() {\n      var _this8 = this;\n      // If the upload has been aborted, we will not send the next PATCH request.\n      // This is important if the abort method was called during a callback, such\n      // as onChunkComplete or onProgress.\n      if (this._aborted) {\n        return;\n      }\n      var req;\n\n      // Some browser and servers may not support the PATCH method. For those\n      // cases, you can tell tus-js-client to use a POST request with the\n      // X-HTTP-Method-Override header for simulating a PATCH request.\n      if (this.options.overridePatchMethod) {\n        req = this._openRequest('POST', this.url);\n        req.setHeader('X-HTTP-Method-Override', 'PATCH');\n      } else {\n        req = this._openRequest('PATCH', this.url);\n      }\n      req.setHeader('Upload-Offset', this._offset);\n      var promise = this._addChunkToRequest(req);\n      promise.then(function (res) {\n        if (!inStatusCategory(res.getStatus(), 200)) {\n          _this8._emitHttpError(req, res, 'tus: unexpected response while uploading chunk');\n          return;\n        }\n        _this8._handleUploadResponse(req, res);\n      })[\"catch\"](function (err) {\n        // Don't emit an error if the upload was aborted manually\n        if (_this8._aborted) {\n          return;\n        }\n        _this8._emitHttpError(req, null, \"tus: failed to upload chunk at offset \".concat(_this8._offset), err);\n      });\n    }\n\n    /**\n     * _addChunktoRequest reads a chunk from the source and sends it using the\n     * supplied request object. It will not handle the response.\n     *\n     * @api private\n     */\n  }, {\n    key: \"_addChunkToRequest\",\n    value: function _addChunkToRequest(req) {\n      var _this9 = this;\n      var start = this._offset;\n      var end = this._offset + this.options.chunkSize;\n      req.setProgressHandler(function (bytesSent) {\n        _this9._emitProgress(start + bytesSent, _this9._size);\n      });\n      req.setHeader('Content-Type', 'application/offset+octet-stream');\n\n      // The specified chunkSize may be Infinity or the calcluated end position\n      // may exceed the file's size. In both cases, we limit the end position to\n      // the input's total size for simpler calculations and correctness.\n      if ((end === Infinity || end > this._size) && !this.options.uploadLengthDeferred) {\n        end = this._size;\n      }\n      return this._source.slice(start, end).then(function (_ref2) {\n        var value = _ref2.value,\n          done = _ref2.done;\n        var valueSize = value && value.size ? value.size : 0;\n\n        // If the upload length is deferred, the upload size was not specified during\n        // upload creation. So, if the file reader is done reading, we know the total\n        // upload size and can tell the tus server.\n        if (_this9.options.uploadLengthDeferred && done) {\n          _this9._size = _this9._offset + valueSize;\n          req.setHeader('Upload-Length', _this9._size);\n        }\n\n        // The specified uploadSize might not match the actual amount of data that a source\n        // provides. In these cases, we cannot successfully complete the upload, so we\n        // rather error out and let the user know. If not, tus-js-client will be stuck\n        // in a loop of repeating empty PATCH requests.\n        // See https://community.transloadit.com/t/how-to-abort-hanging-companion-uploads/16488/13\n        var newSize = _this9._offset + valueSize;\n        if (!_this9.options.uploadLengthDeferred && done && newSize !== _this9._size) {\n          return Promise.reject(new Error(\"upload was configured with a size of \".concat(_this9._size, \" bytes, but the source is done after \").concat(newSize, \" bytes\")));\n        }\n        if (value === null) {\n          return _this9._sendRequest(req);\n        }\n        _this9._emitProgress(_this9._offset, _this9._size);\n        return _this9._sendRequest(req, value);\n      });\n    }\n\n    /**\n     * _handleUploadResponse is used by requests that haven been sent using _addChunkToRequest\n     * and already have received a response.\n     *\n     * @api private\n     */\n  }, {\n    key: \"_handleUploadResponse\",\n    value: function _handleUploadResponse(req, res) {\n      var offset = parseInt(res.getHeader('Upload-Offset'), 10);\n      if (Number.isNaN(offset)) {\n        this._emitHttpError(req, res, 'tus: invalid or missing offset value');\n        return;\n      }\n      this._emitProgress(offset, this._size);\n      this._emitChunkComplete(offset - this._offset, offset, this._size);\n      this._offset = offset;\n      if (offset === this._size) {\n        // Yay, finally done :)\n        this._emitSuccess();\n        this._source.close();\n        return;\n      }\n      this._performUpload();\n    }\n\n    /**\n     * Create a new HTTP request object with the given method and URL.\n     *\n     * @api private\n     */\n  }, {\n    key: \"_openRequest\",\n    value: function _openRequest(method, url) {\n      var req = openRequest(method, url, this.options);\n      this._req = req;\n      return req;\n    }\n\n    /**\n     * Remove the entry in the URL storage, if it has been saved before.\n     *\n     * @api private\n     */\n  }, {\n    key: \"_removeFromUrlStorage\",\n    value: function _removeFromUrlStorage() {\n      var _this10 = this;\n      if (!this._urlStorageKey) return;\n      this._urlStorage.removeUpload(this._urlStorageKey)[\"catch\"](function (err) {\n        _this10._emitError(err);\n      });\n      this._urlStorageKey = null;\n    }\n\n    /**\n     * Add the upload URL to the URL storage, if possible.\n     *\n     * @api private\n     */\n  }, {\n    key: \"_saveUploadInUrlStorage\",\n    value: function _saveUploadInUrlStorage() {\n      var _this11 = this;\n      // We do not store the upload URL\n      // - if it was disabled in the option, or\n      // - if no fingerprint was calculated for the input (i.e. a stream), or\n      // - if the URL is already stored (i.e. key is set alread).\n      if (!this.options.storeFingerprintForResuming || !this._fingerprint || this._urlStorageKey !== null) {\n        return Promise.resolve();\n      }\n      var storedUpload = {\n        size: this._size,\n        metadata: this.options.metadata,\n        creationTime: new Date().toString()\n      };\n      if (this._parallelUploads) {\n        // Save multiple URLs if the parallelUploads option is used ...\n        storedUpload.parallelUploadUrls = this._parallelUploadUrls;\n      } else {\n        // ... otherwise we just save the one available URL.\n        storedUpload.uploadUrl = this.url;\n      }\n      return this._urlStorage.addUpload(this._fingerprint, storedUpload).then(function (urlStorageKey) {\n        _this11._urlStorageKey = urlStorageKey;\n      });\n    }\n\n    /**\n     * Send a request with the provided body.\n     *\n     * @api private\n     */\n  }, {\n    key: \"_sendRequest\",\n    value: function _sendRequest(req) {\n      var body = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n      return sendRequest(req, body, this.options);\n    }\n  }], [{\n    key: \"terminate\",\n    value: function terminate(url) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var req = openRequest('DELETE', url, options);\n      return sendRequest(req, null, options).then(function (res) {\n        // A 204 response indicates a successfull request\n        if (res.getStatus() === 204) {\n          return;\n        }\n        throw new DetailedError('tus: unexpected response while terminating upload', null, req, res);\n      })[\"catch\"](function (err) {\n        if (!(err instanceof DetailedError)) {\n          err = new DetailedError('tus: failed to terminate upload', err, req, null);\n        }\n        if (!shouldRetry(err, 0, options)) {\n          throw err;\n        }\n\n        // Instead of keeping track of the retry attempts, we remove the first element from the delays\n        // array. If the array is empty, all retry attempts are used up and we will bubble up the error.\n        // We recursively call the terminate function will removing elements from the retryDelays array.\n        var delay = options.retryDelays[0];\n        var remainingDelays = options.retryDelays.slice(1);\n        var newOptions = _objectSpread(_objectSpread({}, options), {}, {\n          retryDelays: remainingDelays\n        });\n        return new Promise(function (resolve) {\n          return setTimeout(resolve, delay);\n        }).then(function () {\n          return BaseUpload.terminate(url, newOptions);\n        });\n      });\n    }\n  }]);\n  return BaseUpload;\n}();\nfunction encodeMetadata(metadata) {\n  return Object.entries(metadata).map(function (_ref3) {\n    var _ref4 = _slicedToArray(_ref3, 2),\n      key = _ref4[0],\n      value = _ref4[1];\n    return \"\".concat(key, \" \").concat(Base64.encode(String(value)));\n  }).join(',');\n}\n\n/**\n * Checks whether a given status is in the range of the expected category.\n * For example, only a status between 200 and 299 will satisfy the category 200.\n *\n * @api private\n */\nfunction inStatusCategory(status, category) {\n  return status >= category && status < category + 100;\n}\n\n/**\n * Create a new HTTP request with the specified method and URL.\n * The necessary headers that are included in every request\n * will be added, including the request ID.\n *\n * @api private\n */\nfunction openRequest(method, url, options) {\n  var req = options.httpStack.createRequest(method, url);\n  req.setHeader('Tus-Resumable', '1.0.0');\n  var headers = options.headers || {};\n  Object.entries(headers).forEach(function (_ref5) {\n    var _ref6 = _slicedToArray(_ref5, 2),\n      name = _ref6[0],\n      value = _ref6[1];\n    req.setHeader(name, value);\n  });\n  if (options.addRequestId) {\n    var requestId = uuid();\n    req.setHeader('X-Request-ID', requestId);\n  }\n  return req;\n}\n\n/**\n * Send a request with the provided body while invoking the onBeforeRequest\n * and onAfterResponse callbacks.\n *\n * @api private\n */\nfunction sendRequest(_x2, _x3, _x4) {\n  return _sendRequest2.apply(this, arguments);\n}\n/**\n * Checks whether the browser running this code has internet access.\n * This function will always return true in the node.js environment\n *\n * @api private\n */\nfunction _sendRequest2() {\n  _sendRequest2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(req, body, options) {\n    var res;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          if (!(typeof options.onBeforeRequest === 'function')) {\n            _context.next = 3;\n            break;\n          }\n          _context.next = 3;\n          return options.onBeforeRequest(req);\n        case 3:\n          _context.next = 5;\n          return req.send(body);\n        case 5:\n          res = _context.sent;\n          if (!(typeof options.onAfterResponse === 'function')) {\n            _context.next = 9;\n            break;\n          }\n          _context.next = 9;\n          return options.onAfterResponse(req, res);\n        case 9:\n          return _context.abrupt(\"return\", res);\n        case 10:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n  return _sendRequest2.apply(this, arguments);\n}\nfunction isOnline() {\n  var online = true;\n  if (typeof window !== 'undefined' &&\n  // eslint-disable-next-line no-undef\n  'navigator' in window &&\n  // eslint-disable-next-line no-undef\n  window.navigator.onLine === false) {\n    // eslint-disable-line no-undef\n    online = false;\n  }\n  return online;\n}\n\n/**\n * Checks whether or not it is ok to retry a request.\n * @param {Error} err the error returned from the last request\n * @param {number} retryAttempt the number of times the request has already been retried\n * @param {object} options tus Upload options\n *\n * @api private\n */\nfunction shouldRetry(err, retryAttempt, options) {\n  // We only attempt a retry if\n  // - retryDelays option is set\n  // - we didn't exceed the maxium number of retries, yet, and\n  // - this error was caused by a request or it's response and\n  // - the error is server error (i.e. not a status 4xx except a 409 or 423) or\n  // a onShouldRetry is specified and returns true\n  // - the browser does not indicate that we are offline\n  if (options.retryDelays == null || retryAttempt >= options.retryDelays.length || err.originalRequest == null) {\n    return false;\n  }\n  if (options && typeof options.onShouldRetry === 'function') {\n    return options.onShouldRetry(err, retryAttempt, options);\n  }\n  var status = err.originalResponse ? err.originalResponse.getStatus() : 0;\n  return (!inStatusCategory(status, 400) || status === 409 || status === 423) && isOnline();\n}\n\n/**\n * Resolve a relative link given the origin as source. For example,\n * if a HTTP request to http://example.com/files/ returns a Location\n * header with the value /upload/abc, the resolved URL will be:\n * http://example.com/upload/abc\n */\nfunction resolveUrl(origin, link) {\n  return new URL(link, origin).toString();\n}\n\n/**\n * Calculate the start and end positions for the parts if an upload\n * is split into multiple parallel requests.\n *\n * @param {number} totalSize The byte size of the upload, which will be split.\n * @param {number} partCount The number in how many parts the upload will be split.\n * @return {object[]}\n * @api private\n */\nfunction splitSizeIntoParts(totalSize, partCount) {\n  var partSize = Math.floor(totalSize / partCount);\n  var parts = [];\n  for (var i = 0; i < partCount; i++) {\n    parts.push({\n      start: partSize * i,\n      end: partSize * (i + 1)\n    });\n  }\n  parts[partCount - 1].end = totalSize;\n  return parts;\n}\nBaseUpload.defaultOptions = defaultOptions;\nexport default BaseUpload;","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); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint no-unused-vars: \"off\" */\nvar NoopUrlStorage = /*#__PURE__*/function () {\n  function NoopUrlStorage() {\n    _classCallCheck(this, NoopUrlStorage);\n  }\n  _createClass(NoopUrlStorage, [{\n    key: \"listAllUploads\",\n    value: function listAllUploads() {\n      return Promise.resolve([]);\n    }\n  }, {\n    key: \"findUploadsByFingerprint\",\n    value: function findUploadsByFingerprint(fingerprint) {\n      return Promise.resolve([]);\n    }\n  }, {\n    key: \"removeUpload\",\n    value: function removeUpload(urlStorageKey) {\n      return Promise.resolve();\n    }\n  }, {\n    key: \"addUpload\",\n    value: function addUpload(fingerprint, upload) {\n      return Promise.resolve(null);\n    }\n  }]);\n  return NoopUrlStorage;\n}();\nexport { NoopUrlStorage as default };","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); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar hasStorage = false;\ntry {\n  hasStorage = 'localStorage' in window;\n\n  // Attempt to store and read entries from the local storage to detect Private\n  // Mode on Safari on iOS (see #49)\n  // If the key was not used before, we remove it from local storage again to\n  // not cause confusion where the entry came from.\n  var key = 'tusSupport';\n  var originalValue = localStorage.getItem(key);\n  localStorage.setItem(key, originalValue);\n  if (originalValue === null) localStorage.removeItem(key);\n} catch (e) {\n  // If we try to access localStorage inside a sandboxed iframe, a SecurityError\n  // is thrown. When in private mode on iOS Safari, a QuotaExceededError is\n  // thrown (see #49)\n  if (e.code === e.SECURITY_ERR || e.code === e.QUOTA_EXCEEDED_ERR) {\n    hasStorage = false;\n  } else {\n    throw e;\n  }\n}\nexport var canStoreURLs = hasStorage;\nexport var WebStorageUrlStorage = /*#__PURE__*/function () {\n  function WebStorageUrlStorage() {\n    _classCallCheck(this, WebStorageUrlStorage);\n  }\n  _createClass(WebStorageUrlStorage, [{\n    key: \"findAllUploads\",\n    value: function findAllUploads() {\n      var results = this._findEntries('tus::');\n      return Promise.resolve(results);\n    }\n  }, {\n    key: \"findUploadsByFingerprint\",\n    value: function findUploadsByFingerprint(fingerprint) {\n      var results = this._findEntries(\"tus::\".concat(fingerprint, \"::\"));\n      return Promise.resolve(results);\n    }\n  }, {\n    key: \"removeUpload\",\n    value: function removeUpload(urlStorageKey) {\n      localStorage.removeItem(urlStorageKey);\n      return Promise.resolve();\n    }\n  }, {\n    key: \"addUpload\",\n    value: function addUpload(fingerprint, upload) {\n      var id = Math.round(Math.random() * 1e12);\n      var key = \"tus::\".concat(fingerprint, \"::\").concat(id);\n      localStorage.setItem(key, JSON.stringify(upload));\n      return Promise.resolve(key);\n    }\n  }, {\n    key: \"_findEntries\",\n    value: function _findEntries(prefix) {\n      var results = [];\n      for (var i = 0; i < localStorage.length; i++) {\n        var _key = localStorage.key(i);\n        if (_key.indexOf(prefix) !== 0) continue;\n        try {\n          var upload = JSON.parse(localStorage.getItem(_key));\n          upload.urlStorageKey = _key;\n          results.push(upload);\n        } catch (e) {\n          // The JSON parse error is intentionally ignored here, so a malformed\n          // entry in the storage cannot prevent an upload.\n        }\n      }\n      return results;\n    }\n  }]);\n  return WebStorageUrlStorage;\n}();","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); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint-disable max-classes-per-file */\nvar XHRHttpStack = /*#__PURE__*/function () {\n  function XHRHttpStack() {\n    _classCallCheck(this, XHRHttpStack);\n  }\n  _createClass(XHRHttpStack, [{\n    key: \"createRequest\",\n    value: function createRequest(method, url) {\n      return new Request(method, url);\n    }\n  }, {\n    key: \"getName\",\n    value: function getName() {\n      return 'XHRHttpStack';\n    }\n  }]);\n  return XHRHttpStack;\n}();\nexport { XHRHttpStack as default };\nvar Request = /*#__PURE__*/function () {\n  function Request(method, url) {\n    _classCallCheck(this, Request);\n    this._xhr = new XMLHttpRequest();\n    this._xhr.open(method, url, true);\n    this._method = method;\n    this._url = url;\n    this._headers = {};\n  }\n  _createClass(Request, [{\n    key: \"getMethod\",\n    value: function getMethod() {\n      return this._method;\n    }\n  }, {\n    key: \"getURL\",\n    value: function getURL() {\n      return this._url;\n    }\n  }, {\n    key: \"setHeader\",\n    value: function setHeader(header, value) {\n      this._xhr.setRequestHeader(header, value);\n      this._headers[header] = value;\n    }\n  }, {\n    key: \"getHeader\",\n    value: function getHeader(header) {\n      return this._headers[header];\n    }\n  }, {\n    key: \"setProgressHandler\",\n    value: function setProgressHandler(progressHandler) {\n      // Test support for progress events before attaching an event listener\n      if (!('upload' in this._xhr)) {\n        return;\n      }\n      this._xhr.upload.onprogress = function (e) {\n        if (!e.lengthComputable) {\n          return;\n        }\n        progressHandler(e.loaded);\n      };\n    }\n  }, {\n    key: \"send\",\n    value: function send() {\n      var _this = this;\n      var body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n      return new Promise(function (resolve, reject) {\n        _this._xhr.onload = function () {\n          resolve(new Response(_this._xhr));\n        };\n        _this._xhr.onerror = function (err) {\n          reject(err);\n        };\n        _this._xhr.send(body);\n      });\n    }\n  }, {\n    key: \"abort\",\n    value: function abort() {\n      this._xhr.abort();\n      return Promise.resolve();\n    }\n  }, {\n    key: \"getUnderlyingObject\",\n    value: function getUnderlyingObject() {\n      return this._xhr;\n    }\n  }]);\n  return Request;\n}();\nvar Response = /*#__PURE__*/function () {\n  function Response(xhr) {\n    _classCallCheck(this, Response);\n    this._xhr = xhr;\n  }\n  _createClass(Response, [{\n    key: \"getStatus\",\n    value: function getStatus() {\n      return this._xhr.status;\n    }\n  }, {\n    key: \"getHeader\",\n    value: function getHeader(header) {\n      return this._xhr.getResponseHeader(header);\n    }\n  }, {\n    key: \"getBody\",\n    value: function getBody() {\n      return this._xhr.responseText;\n    }\n  }, {\n    key: \"getUnderlyingObject\",\n    value: function getUnderlyingObject() {\n      return this._xhr;\n    }\n  }]);\n  return Response;\n}();","var isReactNative = function isReactNative() {\n  return typeof navigator !== 'undefined' && typeof navigator.product === 'string' && navigator.product.toLowerCase() === 'reactnative';\n};\nexport default isReactNative;","/**\n * uriToBlob resolves a URI to a Blob object. This is used for\n * React Native to retrieve a file (identified by a file://\n * URI) as a blob.\n */\nexport default function uriToBlob(uri) {\n  return new Promise(function (resolve, reject) {\n    var xhr = new XMLHttpRequest();\n    xhr.responseType = 'blob';\n    xhr.onload = function () {\n      var blob = xhr.response;\n      resolve(blob);\n    };\n    xhr.onerror = function (err) {\n      reject(err);\n    };\n    xhr.open('GET', uri);\n    xhr.send();\n  });\n}","var isCordova = function isCordova() {\n  return typeof window !== 'undefined' && (typeof window.PhoneGap !== 'undefined' || typeof window.Cordova !== 'undefined' || typeof window.cordova !== 'undefined');\n};\nexport default isCordova;","/**\n * readAsByteArray converts a File object to a Uint8Array.\n * This function is only used on the Apache Cordova platform.\n * See https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/index.html#read-a-file\n */\nexport default function readAsByteArray(chunk) {\n  return new Promise(function (resolve, reject) {\n    var reader = new FileReader();\n    reader.onload = function () {\n      var value = new Uint8Array(reader.result);\n      resolve({\n        value: value\n      });\n    };\n    reader.onerror = function (err) {\n      reject(err);\n    };\n    reader.readAsArrayBuffer(chunk);\n  });\n}","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); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport isCordova from './isCordova.js';\nimport readAsByteArray from './readAsByteArray.js';\nvar FileSource = /*#__PURE__*/function () {\n  // Make this.size a method\n  function FileSource(file) {\n    _classCallCheck(this, FileSource);\n    this._file = file;\n    this.size = file.size;\n  }\n  _createClass(FileSource, [{\n    key: \"slice\",\n    value: function slice(start, end) {\n      // In Apache Cordova applications, a File must be resolved using\n      // FileReader instances, see\n      // https://cordova.apache.org/docs/en/8.x/reference/cordova-plugin-file/index.html#read-a-file\n      if (isCordova()) {\n        return readAsByteArray(this._file.slice(start, end));\n      }\n      var value = this._file.slice(start, end);\n      var done = end >= this.size;\n      return Promise.resolve({\n        value: value,\n        done: done\n      });\n    }\n  }, {\n    key: \"close\",\n    value: function close() {\n      // Nothing to do here since we don't need to release any resources.\n    }\n  }]);\n  return FileSource;\n}();\nexport { FileSource as default };","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); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction len(blobOrArray) {\n  if (blobOrArray === undefined) return 0;\n  if (blobOrArray.size !== undefined) return blobOrArray.size;\n  return blobOrArray.length;\n}\n\n/*\n  Typed arrays and blobs don't have a concat method.\n  This function helps StreamSource accumulate data to reach chunkSize.\n*/\nfunction concat(a, b) {\n  if (a.concat) {\n    // Is `a` an Array?\n    return a.concat(b);\n  }\n  if (a instanceof Blob) {\n    return new Blob([a, b], {\n      type: a.type\n    });\n  }\n  if (a.set) {\n    // Is `a` a typed array?\n    var c = new a.constructor(a.length + b.length);\n    c.set(a);\n    c.set(b, a.length);\n    return c;\n  }\n  throw new Error('Unknown data type');\n}\nvar StreamSource = /*#__PURE__*/function () {\n  function StreamSource(reader) {\n    _classCallCheck(this, StreamSource);\n    this._buffer = undefined;\n    this._bufferOffset = 0;\n    this._reader = reader;\n    this._done = false;\n  }\n  _createClass(StreamSource, [{\n    key: \"slice\",\n    value: function slice(start, end) {\n      if (start < this._bufferOffset) {\n        return Promise.reject(new Error(\"Requested data is before the reader's current offset\"));\n      }\n      return this._readUntilEnoughDataOrDone(start, end);\n    }\n  }, {\n    key: \"_readUntilEnoughDataOrDone\",\n    value: function _readUntilEnoughDataOrDone(start, end) {\n      var _this = this;\n      var hasEnoughData = end <= this._bufferOffset + len(this._buffer);\n      if (this._done || hasEnoughData) {\n        var value = this._getDataFromBuffer(start, end);\n        var done = value == null ? this._done : false;\n        return Promise.resolve({\n          value: value,\n          done: done\n        });\n      }\n      return this._reader.read().then(function (_ref) {\n        var value = _ref.value,\n          done = _ref.done;\n        if (done) {\n          _this._done = true;\n        } else if (_this._buffer === undefined) {\n          _this._buffer = value;\n        } else {\n          _this._buffer = concat(_this._buffer, value);\n        }\n        return _this._readUntilEnoughDataOrDone(start, end);\n      });\n    }\n  }, {\n    key: \"_getDataFromBuffer\",\n    value: function _getDataFromBuffer(start, end) {\n      // Remove data from buffer before `start`.\n      // Data might be reread from the buffer if an upload fails, so we can only\n      // safely delete data when it comes *before* what is currently being read.\n      if (start > this._bufferOffset) {\n        this._buffer = this._buffer.slice(start - this._bufferOffset);\n        this._bufferOffset = start;\n      }\n      // If the buffer is empty after removing old data, all data has been read.\n      var hasAllDataBeenRead = len(this._buffer) === 0;\n      if (this._done && hasAllDataBeenRead) {\n        return null;\n      }\n      // We already removed data before `start`, so we just return the first\n      // chunk from the buffer.\n      return this._buffer.slice(0, end - start);\n    }\n  }, {\n    key: \"close\",\n    value: function close() {\n      if (this._reader.cancel) {\n        this._reader.cancel();\n      }\n    }\n  }]);\n  return StreamSource;\n}();\nexport { StreamSource as default };","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); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = \"function\" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || \"@@iterator\", asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\", toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, \"\"); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: \"normal\", arg: fn.call(obj, arg) }; } catch (err) { return { type: \"throw\", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { [\"next\", \"throw\", \"return\"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (\"throw\" !== record.type) { var result = record.arg, value = result.value; return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke(\"next\", value, resolve, reject); }, function (err) { invoke(\"throw\", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke(\"throw\", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, \"_invoke\", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = \"suspendedStart\"; return function (method, arg) { if (\"executing\" === state) throw new Error(\"Generator is already running\"); if (\"completed\" === state) { if (\"throw\" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) { if (\"suspendedStart\" === state) throw state = \"completed\", context.arg; context.dispatchException(context.arg); } else \"return\" === context.method && context.abrupt(\"return\", context.arg); state = \"executing\"; var record = tryCatch(innerFn, self, context); if (\"normal\" === record.type) { if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = \"normal\", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: \"root\" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if (\"function\" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) { var ctor = \"function\" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, \"toString\", function () { return \"[object Generator]\"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if (\"throw\" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if (\"root\" === entry.tryLoc) return handle(\"end\"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, \"catchLoc\"), hasFinally = hasOwn.call(entry, \"finallyLoc\"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error(\"try statement without catch or finally\"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if (\"throw\" === record.type) throw record.arg; return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, \"catch\": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (\"throw\" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport isReactNative from './isReactNative.js';\nimport uriToBlob from './uriToBlob.js';\nimport FileSource from './sources/FileSource.js';\nimport StreamSource from './sources/StreamSource.js';\nvar FileReader = /*#__PURE__*/function () {\n  function FileReader() {\n    _classCallCheck(this, FileReader);\n  }\n  _createClass(FileReader, [{\n    key: \"openFile\",\n    value: function () {\n      var _openFile = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(input, chunkSize) {\n        var blob;\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              if (!(isReactNative() && input && typeof input.uri !== 'undefined')) {\n                _context.next = 11;\n                break;\n              }\n              _context.prev = 1;\n              _context.next = 4;\n              return uriToBlob(input.uri);\n            case 4:\n              blob = _context.sent;\n              return _context.abrupt(\"return\", new FileSource(blob));\n            case 8:\n              _context.prev = 8;\n              _context.t0 = _context[\"catch\"](1);\n              throw new Error(\"tus: cannot fetch `file.uri` as Blob, make sure the uri is correct and accessible. \".concat(_context.t0));\n            case 11:\n              if (!(typeof input.slice === 'function' && typeof input.size !== 'undefined')) {\n                _context.next = 13;\n                break;\n              }\n              return _context.abrupt(\"return\", Promise.resolve(new FileSource(input)));\n            case 13:\n              if (!(typeof input.read === 'function')) {\n                _context.next = 18;\n                break;\n              }\n              chunkSize = Number(chunkSize);\n              if (Number.isFinite(chunkSize)) {\n                _context.next = 17;\n                break;\n              }\n              return _context.abrupt(\"return\", Promise.reject(new Error('cannot create source for stream without a finite value for the `chunkSize` option')));\n            case 17:\n              return _context.abrupt(\"return\", Promise.resolve(new StreamSource(input, chunkSize)));\n            case 18:\n              return _context.abrupt(\"return\", Promise.reject(new Error('source object may only be an instance of File, Blob, or Reader in this environment')));\n            case 19:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, null, [[1, 8]]);\n      }));\n      function openFile(_x, _x2) {\n        return _openFile.apply(this, arguments);\n      }\n      return openFile;\n    }()\n  }]);\n  return FileReader;\n}();\nexport { FileReader as default };","import isReactNative from './isReactNative.js';\n\n// TODO: Differenciate between input types\n\n/**\n * Generate a fingerprint for a file which will be used the store the endpoint\n *\n * @param {File} file\n * @param {Object} options\n * @param {Function} callback\n */\nexport default function fingerprint(file, options) {\n  if (isReactNative()) {\n    return Promise.resolve(reactNativeFingerprint(file, options));\n  }\n  return Promise.resolve(['tus-br', file.name, file.type, file.size, file.lastModified, options.endpoint].join('-'));\n}\nfunction reactNativeFingerprint(file, options) {\n  var exifHash = file.exif ? hashCode(JSON.stringify(file.exif)) : 'noexif';\n  return ['tus-rn', file.name || 'noname', file.size || 'nosize', exifHash, options.endpoint].join('/');\n}\nfunction hashCode(str) {\n  /* eslint-disable no-bitwise */\n  // from https://stackoverflow.com/a/8831937/151666\n  var hash = 0;\n  if (str.length === 0) {\n    return hash;\n  }\n  for (var i = 0; i < str.length; i++) {\n    var _char = str.charCodeAt(i);\n    hash = (hash << 5) - hash + _char;\n    hash &= hash; // Convert to 32bit integer\n  }\n\n  return hash;\n}","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); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport BaseUpload from '../upload.js';\nimport NoopUrlStorage from '../noopUrlStorage.js';\nimport { enableDebugLog } from '../logger.js';\nimport DetailedError from '../error.js';\nimport { canStoreURLs, WebStorageUrlStorage } from './urlStorage.js';\nimport DefaultHttpStack from './httpStack.js';\nimport FileReader from './fileReader.js';\nimport fingerprint from './fileSignature.js';\nvar defaultOptions = _objectSpread(_objectSpread({}, BaseUpload.defaultOptions), {}, {\n  httpStack: new DefaultHttpStack(),\n  fileReader: new FileReader(),\n  urlStorage: canStoreURLs ? new WebStorageUrlStorage() : new NoopUrlStorage(),\n  fingerprint: fingerprint\n});\nvar Upload = /*#__PURE__*/function (_BaseUpload) {\n  _inherits(Upload, _BaseUpload);\n  var _super = _createSuper(Upload);\n  function Upload() {\n    var file = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    _classCallCheck(this, Upload);\n    options = _objectSpread(_objectSpread({}, defaultOptions), options);\n    return _super.call(this, file, options);\n  }\n  _createClass(Upload, null, [{\n    key: \"terminate\",\n    value: function terminate(url) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      options = _objectSpread(_objectSpread({}, defaultOptions), options);\n      return BaseUpload.terminate(url, options);\n    }\n  }]);\n  return Upload;\n}(BaseUpload);\nvar _window = window,\n  XMLHttpRequest = _window.XMLHttpRequest,\n  Blob = _window.Blob;\nvar isSupported = XMLHttpRequest && Blob && typeof Blob.prototype.slice === 'function';\nexport { Upload, canStoreURLs, defaultOptions, isSupported, enableDebugLog, DefaultHttpStack, DetailedError };","async function* asyncPool(concurrency, iterable, iteratorFn) {\n  const executing = new Set();\n  async function consume() {\n    const [promise, value] = await Promise.race(executing);\n    executing.delete(promise);\n    return value;\n  }\n  for (const item of iterable) {\n    // Wrap iteratorFn() in an async fn to ensure we get a promise.\n    // Then expose such promise, so it's possible to later reference and\n    // remove it from the executing pool.\n    const promise = (async () => await iteratorFn(item, iterable))().then(\n      value => [promise, value]\n    );\n    executing.add(promise);\n    if (executing.size >= concurrency) {\n      yield await consume();\n    }\n  }\n  while (executing.size) {\n    yield await consume();\n  }\n}\n\nmodule.exports = asyncPool;\n","<script setup>\nimport API from '@/api/files'\nimport { getMD5Async } from '@/utils/utils'\nimport { getToken } from '@/utils/login-helper'\nimport { Upload } from 'tus-js-client'\nimport asyncPool from 'tiny-async-pool'\nimport { Message } from 'element-ui'\n\nconst props = defineProps({\n  fileList: Array,\n  onChange: Function,\n  onRemove: Function,\n  scene: {\n    type: String,\n    required: true\n  },\n  // 自动上传\n  autoUpload: {\n    type: Boolean,\n    default: true\n  },\n  triggerUpload: {\n    type: Number,\n    default: 0\n  },\n  // 上传并发数\n  concurrency: {\n    type: Number,\n    default: 4\n  },\n})\nconst vm = getCurrentInstance().proxy\nconst $attrs = vm.$attrs\nconst emit = defineEmits(['getFileId', 'getFileList', 'getErrorList', 'getPercent'])\n\nlet localFileList = ref([])\n// 监听fileList，避免数据不一致\nwatch(\n  () => props.fileList,\n  (val) => localFileList.value = val,\n  { immediate: true }\n)\n// 上传的进度\nconst progress = ref(0)\n\nlet timer = null\n// 文件改变\nfunction handleFileChange(filetype, fileList) {\n  // 校验每一个文件是否满足上传条件\n  const bool = props.onChange(filetype, fileList)\n  if (!bool) {\n    const idx = fileList.findIndex(v => v.uid === filetype.uid)\n    fileList.splice(idx, 1)\n  }\n  timer && window.clearTimeout(timer)\n  timer = setTimeout(() => {\n    localFileList.value = fileList\n    props.autoUpload && startUpload(fileList)\n  }, 10)\n}\n\nwatch(() => props.triggerUpload, startUpload)\n\n// 每个filetype的回调\nfunction iteratorFn(filetype, fileList) {\n  return new Promise((resolve, reject) => {\n    getMD5Async(filetype).then(md5 => {\n      const fileData = {\n        scene: props.scene,\n        name: filetype.name,\n        size: filetype.size,\n        md5,\n      }\n      API.filesFast(fileData)\n        .then(res => {\n          //状态200 使用文件秒传接口 状态702使用文件上传接口或续点上传\n          if (res.status === 200) {\n            // 只有一个文件的情况\n            if (fileList.length === 1) {\n              let timer = setInterval(() => {\n                if (progress.value > 98) {\n                  progress.value = 99\n                } else {\n                  progress.value++\n                }\n              }, 80)\n              progress.value = 100\n              clearInterval(timer)\n            }\n            filetype.id = res.data.id\n            resolve(filetype)\n          } else if (res.status === 702) {\n            // 文件小于100MB 正常上传流程 大于100MB 续点上传\n            if (filetype.size < 1024 * 1024 * 100) {\n              sendStorage(filetype, fileList).then(resolve).catch(reject)\n            } else {\n              sendStorage100(filetype, md5).then(resolve).catch(reject)\n            }\n          } else {\n            resolve({ isError: true, filetype })\n          }\n        })\n        .catch(error => {\n          resolve({ isError: true, filetype })\n        })\n    })\n  })\n}\n\n// 开始异步任务-【4个并发上传】\n// 支持自定义上传文件\nasync function startUpload(customFileList = null) {\n  // 支持自定义文件\n  const getFileList = () =>  customFileList || localFileList.value\n  // 需要上传的文件列表\n  const fileList = getFileList().filter(v => !v.id && v.status === 'ready')\n  if (fileList.length === 0) {\n    return getFileList()\n  }\n  progress.value = 0\n  const errorList = [] // 上传失败的任务\n  const resList = [] // 上传成功的任务\n  try {\n    for await (const value of asyncPool(props.concurrency, fileList, iteratorFn)) {\n      if (value.isError) {\n        errorList.push(value.filetype)\n      } else {\n        // 每上传一个文件加一\n        if (fileList.length > 1) {\n          progress.value++\n        }\n        resList.push(value)\n      }\n    }\n  } catch (error) {\n    console.log(error)\n    debugger\n  }\n  // 上传成功回调，分一个文件还是多个文件\n  if (getFileList().length === 1) {\n    emit('getFileId', getFileList()[0].id)\n    emit('getSuccessList', getFileList())\n    return getFileList()\n  } else if (getFileList().length > 1) {\n    emit('getFileId', getFileList().map(v => v.id).filter(v => v?.id))\n    emit('getSuccessList', getFileList())\n    return getFileList()\n  }\n  // 上传失败回调 errorList\n  if (errorList.length > 0) {\n    emit('getErrorList', errorList)\n    return errorList\n  }\n}\nvm.startUpload = startUpload\n\n// 文件用表单方式上传\nfunction sendStorage(filetype, fileList) {\n  return new Promise((resolve, reject) => {\n    let timer = null\n    if (fileList.length === 1) {\n      timer = setInterval(() => {\n        if (progress.value > 98) {\n          progress.value = 99\n        } else {\n          progress.value++\n        }\n      }, 100)\n    }\n    const formData = new FormData()\n    formData.append('name', filetype.name)\n    formData.append('file', filetype.raw)\n    formData.append('scene', props.scene)\n    API.filesUpload(formData)\n      .then(res => {\n        if (res.status === 200) {\n          timer && clearInterval(timer)\n          filetype.id = res.data.id\n          resolve(filetype)\n          progress.value = 100\n        } else {\n          resolve({ isError: true, filetype })\n        }\n      })\n      .catch(error => {\n        resolve({ isError: true, filetype })\n      })\n  })\n}\n\nlet uploadList = []\n// 大文件分片上传\nfunction sendStorage100(filetype, md5) {\n  let upload = null\n  return new Promise((resolve, reject) => {\n    // Create a new tus upload\n    upload = new Upload(filetype.raw, {\n      endpoint: location.origin + '/storage/api/v1/tus/upload/',\n      headers: {\n        'x-auth-token': getToken()\n      },\n      retryDelays: [0, 3000, 5000, 10000, 20000],\n      metadata: {\n        filename: filetype.name,\n        filetype: filetype.type\n      },\n      onError: function(error) {\n        console.log('Failed because: ' + error)\n        resolve({ isError: true, filetype })\n      },\n      onProgress: function(bytesUploaded, bytesTotal) {\n        progress.value = parseInt((bytesUploaded / bytesTotal) * 100)\n        if (progress.value > 99) {\n          progress.value = 99\n        }\n        // console.log('上传中', bytesUploaded, bytesTotal, upload.url)\n      },\n      onSuccess: function() {\n        // console.log('上传成功', 'Download %s from %s', upload.file.name, upload.url)\n        const data = {\n          md5: md5,\n          name: filetype.name,\n          scene: props.scene,\n          uploadUrl: upload.url\n        }\n        API.getStorageTusComplete(data)\n          .then(res => {\n            if (res.status === 200) {\n              filetype.id = res.data.id\n              resolve(filetype)\n              progress.value = 100\n            } else {\n              resolve({ isError: true, filetype })\n            }\n          })\n          .catch(error => {\n            resolve({ isError: true, filetype })\n          })\n      },\n      chunkSize: 1024 * 1024 * 50\n    })\n    // Check if there are any previous uploads to continue.\n    upload.findPreviousUploads().then(function(previousUploads) {\n      // Found previous uploads so we select the first one.\n      if (previousUploads.length) {\n        upload.resumeFromPreviousUpload(previousUploads[0])\n      }\n      // Start the upload\n      upload.start()\n    })\n    uploadList.push(upload)\n  })\n}\n\n// 回调上传进度\nwatch(progress, (val) => emit('getPercent', val))\n\n// 文件移除\nfunction handleFileRemove(filetype, fileList) {\n  uploadList.forEach(upload => {\n    upload?.abort(true)\n  })\n  uploadList.length = 0\n  props.onRemove && props.onRemove(filetype, fileList)\n}\n\n// 文件数量超出最大值给出提示\nfunction handleExceed() {\n  Message.warning(`您当前选择的文件过多，最多不超过${$attrs.limit}个文件`)\n}\n\n</script>\n\n<template>\n  <el-upload\n    :action=\"''\"\n    :on-change=\"handleFileChange\"\n    :on-remove=\"handleFileRemove\"\n    :on-exceed=\"handleExceed\"\n    :auto-upload=\"props.autoUpload\"\n    :file-list=\"localFileList\"\n    v-bind=\"$attrs\"\n    v-on=\"$listeners\"\n  >\n    <slot></slot>\n  </el-upload>\n</template>\n\n<style scoped></style>\n","<script>\nimport { login, removeToken, getOuterLoginUrl } from '@/utils/login-helper.ts'\nimport { Message } from 'element-ui'\n\nexport default {\n  data() {\n    return {\n      loginForm: {\n        account: '',\n        password: ''\n      },\n      loading: false\n    }\n  },\n  methods: {\n    doLogin() {\n      if (this.loginForm.account === '' || this.loginForm.password === '' || this.loading) {\n        return\n      }\n      this.loading = true\n      removeToken()\n      login(this.loginForm)\n        .then(() => {\n          Message.success('登录成功')\n          setTimeout(() => {\n            this.$emit('loginSuccess')\n          }, 500)\n          this.loading = false\n        })\n        .catch(error => {\n          this.loading = false\n        })\n    },\n    handleInput(e) {\n      this.$forceUpdate()\n    },\n    // 中软登录\n    goLogin() {\n      window.location.href = getOuterLoginUrl()\n    }\n  }\n}\n\n</script>\n\n<template>\n  <section>\n    <div class=\"form-wrap\">\n      <h2 class=\"text-center mb-32px\">登录</h2>\n      <el-form :model=\"loginForm\" @submit.native.prevent label-width=\"60px\">\n        <el-form-item label=\"用户名\">\n          <el-input\n            v-model=\"loginForm.account\"\n            placeholder=\"请输入用户名\"\n            @keydown.enter.native=\"doLogin\"\n            @input=\"handleInput()\"\n            autofocus\n            clearable\n          ></el-input>\n        </el-form-item>\n        <el-form-item label=\"密码\">\n          <el-input\n          type=\"password\"\n          class=\"mb-32px\"\n          v-model=\"loginForm.password\"\n          placeholder=\"请输入密码\"\n          @keydown.enter.native=\"doLogin\"\n          clearable\n        ></el-input>\n        </el-form-item>\n      </el-form>\n      <div style=\"padding-left: 60px;\">\n        <el-button type=\"primary\" size=\"small\" class=\"d-block w-100 mb-12px\" :loading=\"loading\" @click=\"doLogin\">登录</el-button>\n      </div>\n      <div class=\"d-flex flex-end\">\n        <el-button type=\"text\" @click=\"goLogin\">中软登录</el-button>\n      </div>\n    </div>\n  </section>\n</template>\n\n<style lang=\"scss\" scoped>\nsection {\n  display: flex;\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n  justify-content: center;\n  align-items: center;\n  text-align: center;\n  .form-wrap {\n    margin-top: -60px;\n    width: 400px;\n    height: 228px;\n    padding: 40px;\n    border-radius: 8px;\n    background-color: #fff;\n    filter: drop-shadow(0px 2px 8px rgba(33, 76, 217, 0.20));\n  }\n}\n</style>\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n  var x = _ref.x,\n      y = _ref.y;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }, getWindow(popper)) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        });\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref) {\n        var name = _ref.name,\n            _ref$options = _ref.options,\n            options = _ref$options === void 0 ? {} : _ref$options,\n            effect = _ref.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","// 向上查找最近的父元素 selector: '.parent'\nexport const closest = function (el, selector) {\n  var matchesSelector = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector\n  while (el) {\n    if (matchesSelector.call(el, selector)) {\n      break\n    }\n    el = el.parentElement\n  }\n  return el\n}\n\n","import { createPopper } from '@popperjs/core'\nimport { closest } from '@/utils/dom'\n// import { useZIndex } from 'element-plus/es/hooks/use-z-index/index'\nfunction useZIndex() {\n  return {\n    nextZIndex: function() {\n      return 2100\n    }\n  }\n}\n// 渲染箭头\nfunction renderArrow () {\n  const arrow = document.createElement('div')\n  arrow.className = 'popper__arrow'\n  return arrow\n}\n// 渲染内容\nfunction renderContent (value) {\n  const { nextZIndex } = useZIndex()\n  const content = document.createElement('div')\n  content.className = 'el-tooltip__popper el-table-tooltip is-dark'\n  content.innerHTML = value\n  content.style.zIndex = String(nextZIndex())\n  document.body.appendChild(content)\n  return content\n}\n\n// 初始化tooltip\nfunction initToolTip(el, binding) {\n  let removePopperTime = null\n  el.addEventListener('mouseover', () => {\n    if (el.scrollWidth <= el.offsetWidth) {\n      return\n    }\n    // 判断当前元素有没有未删除的Popper，有则阻止删除并且return\n    if (removePopperTime) {\n      clearTimeout(removePopperTime)\n      removePopperTime = null\n      return\n    }\n    // Popper显示的内容\n    const value = binding.value || el.textContent\n    if (!value) {\n      return\n    }\n    // 创建Popper元素\n    const content = renderContent(value)\n    // 创建Popper小三角\n    const arrow = renderArrow()\n    content.appendChild(arrow)\n\n    // 调用插件，渲染Popper\n    createPopper(el, content, {\n      strategy: 'absolute',\n      placement: 'top',\n      modifiers: [\n        {\n          name: 'offset',\n          options: {\n            offset: [0, 8]\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: arrow,\n            padding: 10\n          }\n        }\n      ]\n    })\n    // 删除\n    const removePopper = () => {\n      removePopperTime = setTimeout(() => {\n        try {\n          content && document.body.removeChild(content)\n          el.removeEventListener('mouseout', removePopper)\n        } catch {}\n        clearTimeout(removePopperTime)\n        removePopperTime = null\n      }, 300)\n    }\n    // 移入弹框后取消删除\n    content.addEventListener('mouseover', () => {\n      clearTimeout(removePopperTime)\n      removePopperTime = null\n    })\n    // 元素移出\n    el.addEventListener('mouseout', removePopper)\n    // 弹框移出\n    content.addEventListener('mouseout', removePopper)\n  })\n}\n\n// overflowTooltip指令开始执行\nasync function insertToolTip(el, binding) {\n  let vm, trList, trList2, tdIndex\n  if (el.__vue__) {\n    vm = el.__vue__\n    await vm.$nextTick()\n    const tableDiv = el.parentNode.parentNode\n    trList = [...tableDiv.querySelectorAll('.el-table__body-wrapper table tbody tr.el-table__row')]\n    trList2 = [...tableDiv.querySelectorAll('.el-table__fixed-body-wrapper table tbody tr.el-table__row')]\n    tdIndex = [...el.parentNode.children].findIndex(v => el === v)\n  } else {\n    const td = closest(el, 'td.el-table__cell')\n    const tr = td.parentNode\n    tdIndex = [...tr.children].findIndex(v => v === td)\n    trList = [...tr.parentNode.children]\n    const tableDiv = closest(el, '.el-table')\n    trList2 = [...tableDiv.querySelectorAll('.el-table__fixed-body-wrapper table tbody tr.el-table__row')]\n    // console.log(td, tdIndex, tableDiv, trList)\n    // debugger\n  }\n  // 处理每一行的tdIndex td\n  function handleRowTooltip(row) {\n    const td = row.querySelectorAll('td')[tdIndex]\n    if (!td) return\n    const el = td.querySelector('div')\n    el.style.overflow = 'hidden'\n    el.style.textOverflow = 'ellipsis'\n    el.style.whiteSpace = 'nowrap'\n    initToolTip(el, binding)\n  }\n  trList?.forEach(handleRowTooltip)\n  trList2?.forEach(handleRowTooltip)\n}\n\nexport default (Vue) => {\n  Vue.directive('overflowTooltip', {\n    // bind: function (el, binding) {},\n    update: insertToolTip,\n    inserted: insertToolTip,\n  })\n\n}\n","import SvgIcon from './SvgIcon/SvgIcon.vue'\nimport KoalaHeader from './KoalaHeader/KoalaHeader.vue'\nimport KoalaSide from './KoalaSide/KoalaSide.vue'\nimport Error403 from './Error/Error403.vue'\nimport Error404 from './Error/Error404.vue'\nimport NoData from './NoData/NoData.vue'\nimport Teleport from './Teleport/Teleport.vue'\nimport MoreBtnGroup from './MoreBtnGroup/MoreBtnGroup.vue'\nimport KoalaUpload from './KoalaUpload/KoalaUpload.vue'\nimport LoginForm from './Login/LoginForm.vue'\nimport overflowTooltip from '../directives/overflowTooltip'\n\nlet components = {\n  'SvgIcon': SvgIcon,\n  'KoalaHeader': KoalaHeader,\n  'KoalaSide': KoalaSide,\n  'Error403': Error403,\n  'Error404': Error404,\n  'NoData': NoData,\n  'Teleport': Teleport,\n  'MoreBtnGroup': MoreBtnGroup,\n  'KoalaUpload': KoalaUpload,\n  'LoginForm': LoginForm,\n}\n\nconst install = Vue => {\n  Object.entries(components).forEach(([key, value]) => {\n    Vue.component(key, value)\n  })\n  Vue.use(overflowTooltip)\n}\n\nexport default {\n  install,\n  SvgIcon,\n  KoalaHeader,\n  KoalaSide,\n  Error403,\n  Error404,\n  NoData,\n  Teleport,\n  MoreBtnGroup,\n  KoalaUpload,\n  LoginForm,\n}\n"],"names":["name","computed","props","svgClass","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","options","hook","context","originalRender","h","existing","__$_require_e8f8a470__","_sfc_main","extendStatics","d","b","p","__extends","__","__assign","t","s","i","n","__spreadArrays","il","r","k","a","j","jl","propertiesConfig","warn","msg","inBrowser","ua","isWeChatDevTools","isAndroid","isIOSBadVersion","regex","matches","parts","item","supportsPassive","EventName","opts","getNow","extend","target","source","key","isUndef","v","between","x","min","max","elementStyle","vendor","transformNames","_i","transformNames_1","obj","prefixStyle","style","getElement","el","addEvent","type","fn","capture","useCapture","removeEvent","maybePrevent","e","offset","left","top","transform","transition","hasPerspective","hasTouch","hasTransition","eventTypeMap","getRect","rect","preventDefaultExceptionFn","exceptions","tagExceptionFn","tap","eventName","ev","click","event","eventSource","posSrc","bubbles","cancelable","ctrlKey","shiftKey","altKey","metaKey","pressedKeysMap","createEvent","dblclick","ease","DEFAULT_INTERVAL","windowCompat","noop$1","requestAnimationFrame","callback","cancelAnimationFrame","id","noop","val","sharedPropertyDefinition","getProperty","keys","lastKey","setProperty","value","temp","propertiesProxy","sourceKey","EventEmitter","names","_this","magic","args","ret","events","count","len","eventsCopy","event_1","types","isType","_","EventRegister","wrapper","eventOperation","eventType","CustomOptions","OptionsConstructor","_super","bounceOptions","DEFAULT_BOUNCE","NEGATED_BOUNCE","ActionsHandler","_a","bindToWrapper","disableMouse","disableTouch","wrapperEvents","targetEvents","shouldRegisterTouch","shouldRegisterMouse","preventDefault","stopPropagation","preventDefaultException","preventDefaultConditions","_eventType","point","deltaX","deltaY","scrollLeft","scrollTop","pX","pY","autoEndDistance","content","translaterMetaData","Translater","cssStyle","matrix","y","transformStyle","transformFnName","transformFnArgUnit","transformFnArg","Base","translater","endPoint","pending","forceStopped","called","isValidPostion","startPoint","currentPos","prePos","computeDirection","endValue","startValue","delta","direction","directionX","directionY","Transition","probe","pos","time","easing","easingFn","isRealtimeProbeType","stopFromTransition","Animation","duration","startTime","destTime","step","now","newPoint","stopFromAnimation","createAnimater","element","useTransition","animaterOptions","Behavior","dampingFactor","newPos","momentumInfo","absDist","wrapperSize","current","start","lowerMargin","upperMargin","distance","speed","deceleration","swipeBounceTime","swipeTime","momentumData","size","position","isWrapperStatic","wrapperRect","contentRect","boundary","inBoundary","_b","_c","_d","PassthroughHandlers","DirectionMap","DirectionLockAction","directionLockThreshold","freeScroll","eventPassthrough","absDistX","absDistY","handleMap","applyQuadrantTransformation","quadrant","ScrollerActions","scrollBehaviorX","scrollBehaviorY","actionsHandler","animater","transformateDeltaX","transformateDeltaY","transformateDeltaData","timestamp","prevX","newX","prevY","newY","positionChanged","minScrollPosX","maxScrollPosX","minScrollPosY","maxScrollPosY","createActionsHandlerOptions","bsOptions","prev","cur","createBehaviorOptions","extraProp","bounces","bubbling","sourceEvent","targetEvent","isSamePoint","keys_1","MIN_SCROLL_DISTANCE","Scroller","right","bottom","resizeHandler","hooks","prevPos","actions","flickMinMovingDistance","meta","momentumX","momentumY","_dblclick","dblclickTrigged","delay","enabled","pointerEvents","node","contentChanged","extraTransform","offsetX","offsetY","targetEle","getOffset","getPos","wrapperPos","scrollBehavior","xInBoundary","yInBoundary","BScrollConstructor","ctor","installed","plugin","valid","startX","startY","applyOrderMap","aOrder","bOrder","activeElement","createBScroll","bs","BScroll","MouseWheel","scroll","userOptions","defaultOptions","handler","throttleTime","cachedDelta","easeTime","invert","wheelDeltaX","wheelDeltaY","SAFE_EASETIME","hooksName","handlerFn","merge","prop","dom","_typeof","hasClass","addClass","removeClass","setStyle","_vue","require$$0","_vue2","_interopRequireDefault","isServer","SPECIAL_CHARS_REGEXP","MOZ_HACK_REGEXP","ieVersion","trim","string","camelCase","separator","letter","on","off","listener","cls","curClass","classes","clsName","getStyle","styleName","isScroll","vertical","determinedDirection","overflow","parent","container","elRect","containerRect","popupManager","_dom","require$$1","hasModal","hasInitZIndex","zIndex","getModal","modalDom","PopupManager","instances","instance","topItem","modalClass","modalFade","modalStack","classArr","getTopPopup","topPopup","scrollbarWidth","scrollBarWidth","outer","widthNoScroll","inner","widthWithScroll","popup","_merge","_merge2","_popupManager","require$$2","_popupManager2","_scrollbarWidth","require$$3","_scrollbarWidth2","require$$4","idSeed","_this2","openDelay","modal","bodyHasOverflow","bodyOverflowY","_this3","closeDelay","isString","isObject","isHtmlElement","isFunction","functionToCheck","getType","util","hasOwn","toObject","getPropByPath","rafThrottle","objToArray","_types","hasOwnProperty","to","_from","arr","res","object","paths","result","path","strict","tempObj","keyArr","arrayFindIndex","pred","idx","rules","prefixes","rule","prefix","str","hyphenateRE","looseEqual","isObjectA","isObjectB","arrayEquals","arrayA","arrayB","value1","value2","isEmpty","locked","_len","_key","vdom","isVNode","_util","module","modules","installedModules","__webpack_require__","moduleId","exports","getter","mode","ns","property","__webpack_exports__","external_vue_","external_vue_default","_vm","_h","typeMap","mainvue_type_script_lang_js_","newVal","src_mainvue_type_script_lang_js_","componentNormalizer","component","main","popup_","vdom_","types_","_extends","MessageConstructor","seed","main_Message","Message","userOnClose","verticalOffset","index","removedHeight","src_main","bind","thisArg","toString","kindOf","cache","thing","kindOfTest","isArray","isUndefined","isBuffer","isArrayBuffer","isArrayBufferView","isNumber","isPlainObject","prototype","isDate","isFile","isBlob","isFileList","isStream","isFormData","pattern","isURLSearchParams","isStandardBrowserEnv","forEach","l","assignValue","stripBOM","inherits","constructor","superConstructor","descriptors","toFlatObject","sourceObj","destObj","filter","merged","endsWith","searchString","lastIndex","toArray","isTypedArray","TypedArray","utils","encode","buildURL","url","params","paramsSerializer","serializedParams","hashmarkIndex","InterceptorManager","fulfilled","rejected","InterceptorManager$1","InterceptorManager_1","normalizeHeaderName","headers","normalizedName","AxiosError","message","code","config","request","response","error","customProps","axiosError","AxiosError_1","transitional","toFormData","formData","stack","convertValue","build","data","parentKey","fullKey","toFormData_1","settle","resolve","reject","validateStatus","cookies","expires","domain","secure","cookie","match","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","ignoreDuplicateOf","parseHeaders","parsed","line","isURLSameOrigin","msie","urlParsingNode","originURL","resolveURL","href","requestURL","CanceledError","CanceledError_1","parseProtocol","require$$5","require$$6","transitionalDefaults","require$$7","require$$8","require$$9","require$$10","xhr","requestData","requestHeaders","responseType","onCanceled","done","username","password","fullPath","onloadend","responseHeaders","responseData","err","timeoutErrorMessage","xsrfValue","cancel","protocol","_null","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","getDefaultAdapter","adapter","stringifySafely","rawValue","parser","encoder","defaults","isObjectPayload","contentType","_FormData","silentJSONParsing","forcedJSONParsing","strictJSONParsing","status","method","defaults_1","transformData","fns","isCancel","throwIfCancellationRequested","dispatchRequest","reason","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","VERSION","validators","deprecatedWarnings","validators$1","validator","version","formatMessage","opt","desc","assertOptions","schema","allowUnknown","Axios","instanceConfig","Axios$1","configOrUrl","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","chain","newConfig","onFulfilled","onRejected","generateHTTPMethod","isForm","Axios_1","CancelToken","executor","resolvePromise","token","onfulfilled","_resolve","c","CancelToken_1","spread","isAxiosError","payload","createInstance","defaultConfig","axios","promises","require$$11","require$$12","axiosModule","mapToList","map","list","TOKEN_KEY","SOURCE","API_TIMEOUT","PLATFORMS_KEY","USERNAME_KEY","ROUTES_KEY","ROUTES_MAP_KEY","isVue2","Vue","isClient","resolveUnref","unref","identity","arg","tryOnScopeDispose","getCurrentScope","onScopeDispose","tryOnMounted","sync","getCurrentInstance","onMounted","nextTick","unrefElement","elRef","plain","defaultWindow","useEventListener","listeners","cleanups","cleanup","register","options2","stopWatch","watch","stop","_global","globalKey","_global$1","SwipeDirection","SwipeDirection2","__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","useWindowSize","window","initialWidth","initialHeight","listenOrientation","includeScrollbar","width","ref","height","update","factory","undefined","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","state","length","tail","tmp","lo","hi","md51_array","rhex","hex","clamp","from","begin","end","num","targetArray","sourceArray","toUtf8","utf8Str2ArrayBuffer","returnUInt8Array","buff","arrayBuffer2Utf8Str","concatenateArrayBuffers","first","second","hexToBinaryString","bytes","SparkMD5","contents","raw","hash","getQueryString","getURLParam","getMD5Async","file","fileReader","blobSlice","chunkSize","chunks","currentChunk","spark","md5","loadNext","getCookie","delCookie","exp","cval","isPathInMenuItem","route","child","getAllCoveredRoutes","staticRoutes","dynamicRoutes","rightOne","each","isLocalIP","ip","mitt","eventBus","install","app","getToken","urlToken","clearURLParams","setToken","bus","removeToken","stateObject","title","newUrl","getOuterLoginUrl","origin","port","hostname","pathname","localUrl","navToLogin","redirect","logout","logoutAsync","login","user","loginAsync","http","uuid","timer","showErrorMessage","loginFailedCodes","errorFailedCodes","cancelRequest","disposition","fileName","fileNameUnicode","pathMap","requestList","allCancel","requestCancelFn","getCancel","postCancel","get","post","getAccountCenterAsync","getMenuAuthAsync","getDevtoolsGlobalHook","getTarget","isProxyAvailable","HOOK_SETUP","HOOK_PLUGIN_SETTINGS_SET","supported","perf","isPerformanceSupported","ApiProxy","defaultSettings","localSettingsSaveId","currentSettings","pluginId","_target","setupDevtoolsPlugin","pluginDescriptor","setupFn","descriptor","enableProxy","proxy","piniaSymbol","MutationType","IS_CLIENT","USE_DEVTOOLS","bom","blob","autoBom","download","saveAs","corsEnabled","evt","_navigator","isMacOSWebView","downloadSaveAs","msSaveAs","fileSaverSaveAs","force","isSafari","isChromeIOS","reader","toastMessage","piniaMessage","isPinia","o","checkClipboardAccess","checkNotFocusedError","actionGlobalCopyState","pinia","actionGlobalPasteState","loadStoresState","actionGlobalSaveState","fileInput","getFileOpener","openFile","files","actionGlobalOpenStateFile","text","storeState","formatDisplay","display","PINIA_ROOT_LABEL","PINIA_ROOT_ID","formatStoreForInspectorTree","store","formatStoreForInspectorState","storeNames","storeMap","storeId","getters","getterName","formatEventData","formatMutationType","isTimelineActive","componentStateTypes","MUTATIONS_LAYER_ID","INSPECTOR_ID","assign$1","getStoreType","registerPiniaDevtools","api","nodeId","ctx","piniaStores","toRaw","stores","inspectedStore","addStoreToDevtools","after","onError","groupId","runningActionId","activeAction","newValue","oldValue","eventData","hotUpdate","markRaw","newStore","$dispose","patchActionForGrouping","actionNames","wrapWithProxy","storeActions","actionName","_actionId","trackedStore","retValue","devtoolsPlugin","originalHotUpdate","createPinia","scope","effectScope","_p","PiniaVuePlugin","_Vue","provideCache","marginRight","Person","isMiddle","tokenParam","findPlatform","itemList","innerWidth","activeIndex","__$_require_5587dd66__","__$_require_573cb605__","routesMap","appKey","appName","localRoutesMap","routeIcons","icon","routesStr","rightRoute","routes","indexPath","__$_require_1c6d86ad__","__$_require_1e225f4c__","__$_require_562523ee__","isMounted","vm","clearChildren","onActivated","onDeactivated","onUnmounted","nanoid","byte","wrap","dropdown","dropdownMenu","isMenuObserve","dropdownItems","mutationLock","handleChildrenVisible","mutationObserve","observer","handleMutaionCallback","mutationsList","m","visibleDropdown","menuList","menuObserver","eleChildren","visibleChidren","maxNum","btnLen","elm","tag","hideMenu","API","_hasatob","_hasbtoa","_hasBuffer","_TD","_TE","b64ch","b64chs","b64tab","tab","b64re","_fromCC","_U8Afrom","it","_mkUriSafe","src","m0","_tidyB64","btoaPolyfill","bin","u32","c0","c1","c2","asc","pad","_btoa","_fromUint8Array","u8a","strs","fromUint8Array","urlsafe","cb_utob","cc","re_utob","utob","u","_encode","encodeURI","re_btou","cb_btou","cccc","cp","btou","atobPolyfill","u24","r1","r2","_atob","_toUint8Array","toUint8Array","_unURI","_decode","decode","isValid","_noEnum","extendString","_add","body","extendUint8Array","gBase64","requiresPort","has","undef","input","querystring","query","part","querystringify","pairs","querystringify$1","required","qs","controlOrWhitespace","CRHTLF","slashes","protocolre","windowsDriveLetter","trimLeft","address","isSpecial","ignore","lolcation","loc","globalVar","global","location","finaldestination","Url","scheme","extractProtocol","forwardSlashes","otherSlashes","slashesCount","rest","relative","base","last","unshift","up","extracted","parse","instruction","instructions","set","char","ins","stringify","host","urlParse","_defineProperties","_toPropertyKey","_createClass","Constructor","protoProps","staticProps","_toPrimitive","hint","prim","_classCallCheck","_inherits","subClass","superClass","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","self","call","_assertThisInitialized","_wrapNativeSuper","Class","_cache","_isNativeFunction","Wrapper","_construct","Parent","DetailedError","_Error","causingErr","req","requestId","log","_regeneratorRuntime","Op","defineProperty","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","record","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","methodName","info","pushTryEntry","locs","entry","resetTryEntry","iterable","iteratorMethod","next","genFun","iter","skipTempReset","rootRecord","exception","handle","caught","hasCatch","hasFinally","finallyEntry","afterLoc","finallyLoc","tryLoc","thrown","resultName","nextLoc","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","arr2","_s","_e","_x","_r","_arr","_n","ownKeys","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","BaseUpload","fingerprint","previousUpload","retryDelays","optionName","_this$options$paralle","totalSize","totalProgress","partCount","splitSizeIntoParts","uploads","lastPartProgress","_ref","newPartProgress","upload","metadata","encodeMetadata","inStatusCategory","resolveUrl","shouldTerminate","_this4","_this5","shouldResetDelays","shouldRetry","bytesSent","bytesTotal","bytesAccepted","_this6","_this7","_this8","_this9","_ref2","valueSize","newSize","openRequest","_this10","_this11","storedUpload","urlStorageKey","sendRequest","remainingDelays","newOptions","_ref3","_ref4","Base64","category","_ref5","_ref6","_x2","_x3","_x4","_sendRequest2","_callee","_context","isOnline","online","retryAttempt","link","URL","partSize","NoopUrlStorage","hasStorage","originalValue","canStoreURLs","WebStorageUrlStorage","results","XHRHttpStack","Request","header","progressHandler","Response","isReactNative","uriToBlob","uri","isCordova","readAsByteArray","chunk","FileSource","blobOrArray","concat","StreamSource","hasEnoughData","hasAllDataBeenRead","FileReader","_openFile","reactNativeFingerprint","exifHash","hashCode","_char","DefaultHttpStack","Upload","_BaseUpload","asyncPool","concurrency","iteratorFn","executing","consume","es9","localFileList","handleFileChange","filetype","fileList","startUpload","fileData","progress","sendStorage","sendStorage100","customFileList","getFileList","errorList","resList","emit","uploadList","bytesUploaded","previousUploads","handleFileRemove","_sfc_render","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","read","afterRead","beforeMain","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","getWindow","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","applyStyles","attributes","effect","initialStyles","styleProperties","attribute","applyStyles$1","getBasePlacement","round","getUAString","uaData","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","getLayoutRect","contains","rootNode","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","css","getOffsetParent","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","toPaddingObject","padding","arrow","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","axis","isVertical","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","commonStyles","_Object$assign","computeStyles","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","passive","_options$scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","getWindowScrollBarX","getViewportRect","strategy","html","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","isScrollParent","_getComputedStyle","overflowX","overflowY","getScrollParent","listScrollParents","isBody","updatedList","rectToClientRect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","_options$offset","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","documentElement","order","modifiers","visited","modifier","sort","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","debounce","mergeByName","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","closest","selector","matchesSelector","useZIndex","renderArrow","renderContent","nextZIndex","initToolTip","binding","removePopperTime","removePopper","insertToolTip","trList","trList2","tdIndex","tableDiv","td","tr","handleRowTooltip","row","overflowTooltip","components","SvgIcon","KoalaHeader","KoalaSide","Error403","Error404","NoData","Teleport","MoreBtnGroup","KoalaUpload","LoginForm"],"mappings":"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","x_google_ignoreList":[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,49,50,51,52,54,55,59,60,61,62,63,64,77,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156]}