{"version":3,"file":"index.min.mjs","sources":["../src/plugin.ts","../../../node_modules/.pnpm/is-plain-object@5.0.0/node_modules/is-plain-object/dist/is-plain-object.mjs","../../../node_modules/.pnpm/vue-types@5.0.2_vue@3.2.47/node_modules/vue-types/dist/vue-types.modern.js","../../../node_modules/.pnpm/tinycolor2@1.6.0/node_modules/tinycolor2/esm/tinycolor.js","../src/components/color-picker-v3/src/utils/color.ts","../../../node_modules/.pnpm/@aesoper+normal-utils@0.1.5/node_modules/@aesoper/normal-utils/NormalUtils.es.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_freeGlobal.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_root.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Symbol.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getRawTag.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_objectToString.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGetTag.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isObjectLike.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isObject.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/identity.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isFunction.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_coreJsData.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isMasked.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_toSource.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsNative.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getValue.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getNative.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseCreate.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_apply.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_copyArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_shortOut.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/constant.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_defineProperty.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseSetToString.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setToString.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isIndex.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseAssignValue.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/eq.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_assignValue.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_copyObject.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_overRest.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseRest.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isLength.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArrayLike.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isIterateeCall.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_createAssigner.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isPrototype.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseTimes.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsArguments.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArguments.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/stubFalse.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isBuffer.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsTypedArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseUnary.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nodeUtil.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isTypedArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayLikeKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_overArg.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeKeysIn.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseKeysIn.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keysIn.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeCreate.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashClear.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashGet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashSet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Hash.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheClear.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_assocIndexOf.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheGet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheSet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_ListCache.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Map.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheClear.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isKeyable.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getMapData.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheGet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheSet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_MapCache.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getPrototype.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isPlainObject.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackClear.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackGet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackSet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Stack.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cloneBuffer.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Uint8Array.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cloneArrayBuffer.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cloneTypedArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_initCloneObject.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_createBaseFor.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseFor.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_assignMergeValue.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArrayLikeObject.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_safeGet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toPlainObject.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseMergeDeep.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseMerge.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/merge.js","../src/components/color-picker-v3/src/common/Alpha.vue","../src/components/color-picker-v3/src/common/Palette.vue","../src/components/color-picker-v3/src/common/Board.vue","../src/components/color-picker-v3/src/common/Hue.vue","../src/components/color-picker-v3/src/common/Lightness.vue","../src/components/color-picker-v3/src/common/History.vue","../../../node_modules/.pnpm/@vueuse+shared@8.9.4_vue@3.2.47/node_modules/@vueuse/shared/index.mjs","../../../node_modules/.pnpm/@vueuse+core@8.9.4_vue@3.2.47/node_modules/@vueuse/core/index.mjs","../src/components/color-picker-v3/src/common/Display.vue","../src/components/color-picker-v3/src/tk/TkColorPicker.vue","../src/components/color-picker-v3/src/chrome/ChromeColorPicker.vue","../../../node_modules/.pnpm/vue3-angle@0.1.6_vue@3.2.47/node_modules/vue3-angle/vue3-angle.es.js","../src/components/color-picker-v3/src/utils/type.ts","../src/components/color-picker-v3/src/gradient/GradientColorPicker.vue","../src/components/color-picker-v3/src/common/WrapContainer.vue","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/enums.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/format.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/validateModifiers.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/uniqueBy.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/.pnpm/@popperjs+core@2.11.6/node_modules/@popperjs/core/lib/popper.js","../src/components/color-picker-v3/src/props.ts","../src/components/background/src/helper.ts","../src/components/background/src/props.ts","../src/hooks/useBackground.ts","../src/hooks/useColorPicker.ts","../src/hooks/useDesign.ts","../src/components/color-picker-v3/src/ColorPicker.vue","../src/utils/vue/global-node.ts","../src/utils/vue/install.ts","../src/components/color-picker-v3/index.ts","../src/components/background/src/main.vue","../src/utils/helper/background.ts","../src/components/background/index.ts","../src/components/photo-list/src/img.vue","../src/components/photo-list/src/editor.vue","../src/utils/vue_utils.js","../src/components/photo-list/src/upload.vue","../src/components/gallery/src/main.vue","../src/components/gallery/index.ts","../src/constants/event.ts","../src/components/photo-list/src/main.vue","../src/components/photo-list/index.ts","../src/components.ts","../src/make-installer.ts","../src/types/background.ts","../src/index.ts"],"sourcesContent":["/**\r\n * 指令和插件加载\r\n */\r\n\r\nimport type { Plugin } from 'vue';\r\n// plugins\r\n\r\n// todo 把主站的插件都放在这里来\r\n\r\nexport default [] as Plugin[];\r\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n  return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n  var ctor,prot;\n\n  if (isObject(o) === false) return false;\n\n  // If has modified constructor\n  ctor = o.constructor;\n  if (ctor === undefined) return true;\n\n  // If has modified prototype\n  prot = ctor.prototype;\n  if (isObject(prot) === false) return false;\n\n  // If constructor does not have an Object-specific method\n  if (prot.hasOwnProperty('isPrototypeOf') === false) {\n    return false;\n  }\n\n  // Most likely a plain Object\n  return true;\n}\n\nexport { isPlainObject };\n","import{isPlainObject as e}from\"is-plain-object\";function t(){return t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},t.apply(this,arguments)}function n(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(i[n]=e[n]);return i}const r={silent:!1,logLevel:\"warn\"},i=[\"validator\"],o=Object.prototype,a=o.toString,s=o.hasOwnProperty,u=/^\\s*function (\\w+)/;function l(e){var t;const n=null!==(t=null==e?void 0:e.type)&&void 0!==t?t:e;if(n){const e=n.toString().match(u);return e?e[1]:\"\"}return\"\"}const c=e,d=e=>e;let f=d;if(\"production\"!==process.env.NODE_ENV){const e=\"undefined\"!=typeof console;f=e?function(e,t=r.logLevel){!1===r.silent&&console[t](`[VueTypes warn]: ${e}`)}:d}const p=(e,t)=>s.call(e,t),y=Number.isInteger||function(e){return\"number\"==typeof e&&isFinite(e)&&Math.floor(e)===e},v=Array.isArray||function(e){return\"[object Array]\"===a.call(e)},h=e=>\"[object Function]\"===a.call(e),b=(e,t)=>c(e)&&p(e,\"_vueTypes_name\")&&(!t||e._vueTypes_name===t),g=e=>c(e)&&(p(e,\"type\")||[\"_vueTypes_name\",\"validator\",\"default\",\"required\"].some(t=>p(e,t)));function O(e,t){return Object.defineProperty(e.bind(t),\"__original\",{value:e})}function m(e,t,n=!1){let r,i=!0,o=\"\";r=c(e)?e:{type:e};const a=b(r)?r._vueTypes_name+\" - \":\"\";if(g(r)&&null!==r.type){if(void 0===r.type||!0===r.type)return i;if(!r.required&&void 0===t)return i;v(r.type)?(i=r.type.some(e=>!0===m(e,t,!0)),o=r.type.map(e=>l(e)).join(\" or \")):(o=l(r),i=\"Array\"===o?v(t):\"Object\"===o?c(t):\"String\"===o||\"Number\"===o||\"Boolean\"===o||\"Function\"===o?function(e){if(null==e)return\"\";const t=e.constructor.toString().match(u);return t?t[1]:\"\"}(t)===o:t instanceof r.type)}if(!i){const e=`${a}value \"${t}\" should be of type \"${o}\"`;return!1===n?(f(e),!1):e}if(p(r,\"validator\")&&h(r.validator)){const e=f,o=[];if(f=e=>{o.push(e)},i=r.validator(t),f=e,!i){const e=(o.length>1?\"* \":\"\")+o.join(\"\\n* \");return o.length=0,!1===n?(f(e),i):e}}return i}function j(e,t){const n=Object.defineProperties(t,{_vueTypes_name:{value:e,writable:!0},isRequired:{get(){return this.required=!0,this}},def:{value(e){return void 0===e?this.type===Boolean||Array.isArray(this.type)&&this.type.includes(Boolean)?void(this.default=void 0):(p(this,\"default\")&&delete this.default,this):h(e)||!0===m(this,e,!0)?(this.default=v(e)?()=>[...e]:c(e)?()=>Object.assign({},e):e,this):(f(`${this._vueTypes_name} - invalid default value: \"${e}\"`),this)}}}),{validator:r}=n;return h(r)&&(n.validator=O(r,n)),n}function _(e,t){const n=j(e,t);return Object.defineProperty(n,\"validate\",{value(e){return h(this.validator)&&f(`${this._vueTypes_name} - calling .validate() will overwrite the current custom validator function. Validator info:\\n${JSON.stringify(this)}`),this.validator=O(e,this),this}})}function T(e,t,r){const o=function(e){const t={};return Object.getOwnPropertyNames(e).forEach(n=>{t[n]=Object.getOwnPropertyDescriptor(e,n)}),Object.defineProperties({},t)}(t);if(o._vueTypes_name=e,!c(r))return o;const{validator:a}=r,s=n(r,i);if(h(a)){let{validator:e}=o;e&&(e=null!==(l=(u=e).__original)&&void 0!==l?l:u),o.validator=O(e?function(t){return e.call(this,t)&&a.call(this,t)}:a,o)}var u,l;return Object.assign(o,s)}function $(e){return e.replace(/^(?!\\s*$)/gm,\"  \")}const w=()=>_(\"any\",{}),x=()=>_(\"function\",{type:Function}),P=()=>_(\"boolean\",{type:Boolean}),A=()=>_(\"string\",{type:String}),E=()=>_(\"number\",{type:Number}),S=()=>_(\"array\",{type:Array}),N=()=>_(\"object\",{type:Object}),V=()=>j(\"integer\",{type:Number,validator(e){const t=y(e);return!1===t&&f(`integer - \"${e}\" is not an integer`),t}}),q=()=>j(\"symbol\",{validator(e){const t=\"symbol\"==typeof e;return!1===t&&f(`symbol - invalid value \"${e}\"`),t}}),k=()=>Object.defineProperty({type:null,validator(e){const t=null===e;return!1===t&&f(\"nullable - value should be null\"),t}},\"_vueTypes_name\",{value:\"nullable\"});function D(e,t=\"custom validation failed\"){if(\"function\"!=typeof e)throw new TypeError(\"[VueTypes error]: You must provide a function as argument\");return j(e.name||\"<<anonymous function>>\",{type:null,validator(n){const r=e(n);return r||f(`${this._vueTypes_name} - ${t}`),r}})}function L(e){if(!v(e))throw new TypeError(\"[VueTypes error]: You must provide an array as argument.\");const t=`oneOf - value should be one of \"${e.map(e=>\"symbol\"==typeof e?e.toString():e).join('\", \"')}\".`,n={validator(n){const r=-1!==e.indexOf(n);return r||f(t),r}};if(-1===e.indexOf(null)){const t=e.reduce((e,t)=>{if(null!=t){const n=t.constructor;-1===e.indexOf(n)&&e.push(n)}return e},[]);t.length>0&&(n.type=t)}return j(\"oneOf\",n)}function B(e){if(!v(e))throw new TypeError(\"[VueTypes error]: You must provide an array as argument\");let t=!1,n=!1,r=[];for(let i=0;i<e.length;i+=1){const o=e[i];if(g(o)){if(h(o.validator)&&(t=!0),b(o,\"oneOf\")&&o.type){r=r.concat(o.type);continue}if(b(o,\"nullable\")){n=!0;continue}if(!0===o.type||!o.type){f('oneOfType - invalid usage of \"true\" and \"null\" as types.');continue}r=r.concat(o.type)}else r.push(o)}r=r.filter((e,t)=>r.indexOf(e)===t);const i=!1===n&&r.length>0?r:null;return j(\"oneOfType\",t?{type:i,validator(t){const n=[],r=e.some(e=>{const r=m(e,t,!0);return\"string\"==typeof r&&n.push(r),!0===r});return r||f(`oneOfType - provided value does not match any of the ${n.length} passed-in validators:\\n${$(n.join(\"\\n\"))}`),r}}:{type:i})}function F(e){return j(\"arrayOf\",{type:Array,validator(t){let n=\"\";const r=t.every(t=>(n=m(e,t,!0),!0===n));return r||f(`arrayOf - value validation error:\\n${$(n)}`),r}})}function Y(e){return j(\"instanceOf\",{type:e})}function I(e){return j(\"objectOf\",{type:Object,validator(t){let n=\"\";const r=Object.keys(t).every(r=>(n=m(e,t[r],!0),!0===n));return r||f(`objectOf - value validation error:\\n${$(n)}`),r}})}function J(e){const t=Object.keys(e),n=t.filter(t=>{var n;return!(null===(n=e[t])||void 0===n||!n.required)}),r=j(\"shape\",{type:Object,validator(r){if(!c(r))return!1;const i=Object.keys(r);if(n.length>0&&n.some(e=>-1===i.indexOf(e))){const e=n.filter(e=>-1===i.indexOf(e));return f(1===e.length?`shape - required property \"${e[0]}\" is not defined.`:`shape - required properties \"${e.join('\", \"')}\" are not defined.`),!1}return i.every(n=>{if(-1===t.indexOf(n))return!0===this._vueTypes_isLoose||(f(`shape - shape definition does not include a \"${n}\" property. Allowed keys: \"${t.join('\", \"')}\".`),!1);const i=m(e[n],r[n],!0);return\"string\"==typeof i&&f(`shape - \"${n}\" property validation error:\\n ${$(i)}`),!0===i})}});return Object.defineProperty(r,\"_vueTypes_isLoose\",{writable:!0,value:!1}),Object.defineProperty(r,\"loose\",{get(){return this._vueTypes_isLoose=!0,this}}),r}const M=[\"name\",\"validate\",\"getter\"],R=/*#__PURE__*/(()=>{var e;return(e=class{static get any(){return w()}static get func(){return x().def(this.defaults.func)}static get bool(){return void 0===this.defaults.bool?P():P().def(this.defaults.bool)}static get string(){return A().def(this.defaults.string)}static get number(){return E().def(this.defaults.number)}static get array(){return S().def(this.defaults.array)}static get object(){return N().def(this.defaults.object)}static get integer(){return V().def(this.defaults.integer)}static get symbol(){return q()}static get nullable(){return k()}static extend(e){if(f(\"VueTypes.extend is deprecated. Use the ES6+ method instead. See https://dwightjack.github.io/vue-types/advanced/extending-vue-types.html#extending-namespaced-validators-in-es6 for details.\"),v(e))return e.forEach(e=>this.extend(e)),this;const{name:t,validate:r=!1,getter:i=!1}=e,o=n(e,M);if(p(this,t))throw new TypeError(`[VueTypes error]: Type \"${t}\" already defined`);const{type:a}=o;if(b(a))return delete o.type,Object.defineProperty(this,t,i?{get:()=>T(t,a,o)}:{value(...e){const n=T(t,a,o);return n.validator&&(n.validator=n.validator.bind(n,...e)),n}});let s;return s=i?{get(){const e=Object.assign({},o);return r?_(t,e):j(t,e)},enumerable:!0}:{value(...e){const n=Object.assign({},o);let i;return i=r?_(t,n):j(t,n),n.validator&&(i.validator=n.validator.bind(i,...e)),i},enumerable:!0},Object.defineProperty(this,t,s)}}).defaults={},e.sensibleDefaults=void 0,e.config=r,e.custom=D,e.oneOf=L,e.instanceOf=Y,e.oneOfType=B,e.arrayOf=F,e.objectOf=I,e.shape=J,e.utils={validate:(e,t)=>!0===m(t,e,!0),toType:(e,t,n=!1)=>n?_(e,t):j(e,t)},e})();function U(e={func:()=>{},bool:!0,string:\"\",number:0,array:()=>[],object:()=>({}),integer:0}){var n;return(n=class extends R{static get sensibleDefaults(){return t({},this.defaults)}static set sensibleDefaults(n){this.defaults=!1!==n?t({},!0!==n?n:e):{}}}).defaults=t({},e),n}class z extends(U()){}export{w as any,S as array,F as arrayOf,P as bool,r as config,U as createTypes,D as custom,z as default,T as fromType,x as func,Y as instanceOf,V as integer,k as nullable,E as number,N as object,I as objectOf,L as oneOf,B as oneOfType,J as shape,A as string,q as symbol,j as toType,_ as toValidableType,m as validateType};\n//# sourceMappingURL=vue-types.modern.js.map\n","// This file is autogenerated. It's used to publish ESM to npm.\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}\n\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\nvar trimLeft = /^\\s+/;\nvar trimRight = /\\s+$/;\nfunction tinycolor(color, opts) {\n  color = color ? color : \"\";\n  opts = opts || {};\n\n  // If input is already a tinycolor, return itself\n  if (color instanceof tinycolor) {\n    return color;\n  }\n  // If we are called as a function, call using new instead\n  if (!(this instanceof tinycolor)) {\n    return new tinycolor(color, opts);\n  }\n  var rgb = inputToRGB(color);\n  this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;\n  this._gradientType = opts.gradientType;\n\n  // Don't let the range of [0,255] come back in [0,1].\n  // Potentially lose a little bit of precision here, but will fix issues where\n  // .5 gets interpreted as half of the total, instead of half of 1\n  // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n  if (this._r < 1) this._r = Math.round(this._r);\n  if (this._g < 1) this._g = Math.round(this._g);\n  if (this._b < 1) this._b = Math.round(this._b);\n  this._ok = rgb.ok;\n}\ntinycolor.prototype = {\n  isDark: function isDark() {\n    return this.getBrightness() < 128;\n  },\n  isLight: function isLight() {\n    return !this.isDark();\n  },\n  isValid: function isValid() {\n    return this._ok;\n  },\n  getOriginalInput: function getOriginalInput() {\n    return this._originalInput;\n  },\n  getFormat: function getFormat() {\n    return this._format;\n  },\n  getAlpha: function getAlpha() {\n    return this._a;\n  },\n  getBrightness: function getBrightness() {\n    //http://www.w3.org/TR/AERT#color-contrast\n    var rgb = this.toRgb();\n    return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n  },\n  getLuminance: function getLuminance() {\n    //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n    var rgb = this.toRgb();\n    var RsRGB, GsRGB, BsRGB, R, G, B;\n    RsRGB = rgb.r / 255;\n    GsRGB = rgb.g / 255;\n    BsRGB = rgb.b / 255;\n    if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n    if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n    if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n    return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n  },\n  setAlpha: function setAlpha(value) {\n    this._a = boundAlpha(value);\n    this._roundA = Math.round(100 * this._a) / 100;\n    return this;\n  },\n  toHsv: function toHsv() {\n    var hsv = rgbToHsv(this._r, this._g, this._b);\n    return {\n      h: hsv.h * 360,\n      s: hsv.s,\n      v: hsv.v,\n      a: this._a\n    };\n  },\n  toHsvString: function toHsvString() {\n    var hsv = rgbToHsv(this._r, this._g, this._b);\n    var h = Math.round(hsv.h * 360),\n      s = Math.round(hsv.s * 100),\n      v = Math.round(hsv.v * 100);\n    return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n  },\n  toHsl: function toHsl() {\n    var hsl = rgbToHsl(this._r, this._g, this._b);\n    return {\n      h: hsl.h * 360,\n      s: hsl.s,\n      l: hsl.l,\n      a: this._a\n    };\n  },\n  toHslString: function toHslString() {\n    var hsl = rgbToHsl(this._r, this._g, this._b);\n    var h = Math.round(hsl.h * 360),\n      s = Math.round(hsl.s * 100),\n      l = Math.round(hsl.l * 100);\n    return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n  },\n  toHex: function toHex(allow3Char) {\n    return rgbToHex(this._r, this._g, this._b, allow3Char);\n  },\n  toHexString: function toHexString(allow3Char) {\n    return \"#\" + this.toHex(allow3Char);\n  },\n  toHex8: function toHex8(allow4Char) {\n    return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n  },\n  toHex8String: function toHex8String(allow4Char) {\n    return \"#\" + this.toHex8(allow4Char);\n  },\n  toRgb: function toRgb() {\n    return {\n      r: Math.round(this._r),\n      g: Math.round(this._g),\n      b: Math.round(this._b),\n      a: this._a\n    };\n  },\n  toRgbString: function toRgbString() {\n    return this._a == 1 ? \"rgb(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \")\" : \"rgba(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \", \" + this._roundA + \")\";\n  },\n  toPercentageRgb: function toPercentageRgb() {\n    return {\n      r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n      g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n      b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n      a: this._a\n    };\n  },\n  toPercentageRgbString: function toPercentageRgbString() {\n    return this._a == 1 ? \"rgb(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n  },\n  toName: function toName() {\n    if (this._a === 0) {\n      return \"transparent\";\n    }\n    if (this._a < 1) {\n      return false;\n    }\n    return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n  },\n  toFilter: function toFilter(secondColor) {\n    var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n    var secondHex8String = hex8String;\n    var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n    if (secondColor) {\n      var s = tinycolor(secondColor);\n      secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n    }\n    return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n  },\n  toString: function toString(format) {\n    var formatSet = !!format;\n    format = format || this._format;\n    var formattedString = false;\n    var hasAlpha = this._a < 1 && this._a >= 0;\n    var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n    if (needsAlphaFormat) {\n      // Special case for \"transparent\", all other non-alpha formats\n      // will return rgba when there is transparency.\n      if (format === \"name\" && this._a === 0) {\n        return this.toName();\n      }\n      return this.toRgbString();\n    }\n    if (format === \"rgb\") {\n      formattedString = this.toRgbString();\n    }\n    if (format === \"prgb\") {\n      formattedString = this.toPercentageRgbString();\n    }\n    if (format === \"hex\" || format === \"hex6\") {\n      formattedString = this.toHexString();\n    }\n    if (format === \"hex3\") {\n      formattedString = this.toHexString(true);\n    }\n    if (format === \"hex4\") {\n      formattedString = this.toHex8String(true);\n    }\n    if (format === \"hex8\") {\n      formattedString = this.toHex8String();\n    }\n    if (format === \"name\") {\n      formattedString = this.toName();\n    }\n    if (format === \"hsl\") {\n      formattedString = this.toHslString();\n    }\n    if (format === \"hsv\") {\n      formattedString = this.toHsvString();\n    }\n    return formattedString || this.toHexString();\n  },\n  clone: function clone() {\n    return tinycolor(this.toString());\n  },\n  _applyModification: function _applyModification(fn, args) {\n    var color = fn.apply(null, [this].concat([].slice.call(args)));\n    this._r = color._r;\n    this._g = color._g;\n    this._b = color._b;\n    this.setAlpha(color._a);\n    return this;\n  },\n  lighten: function lighten() {\n    return this._applyModification(_lighten, arguments);\n  },\n  brighten: function brighten() {\n    return this._applyModification(_brighten, arguments);\n  },\n  darken: function darken() {\n    return this._applyModification(_darken, arguments);\n  },\n  desaturate: function desaturate() {\n    return this._applyModification(_desaturate, arguments);\n  },\n  saturate: function saturate() {\n    return this._applyModification(_saturate, arguments);\n  },\n  greyscale: function greyscale() {\n    return this._applyModification(_greyscale, arguments);\n  },\n  spin: function spin() {\n    return this._applyModification(_spin, arguments);\n  },\n  _applyCombination: function _applyCombination(fn, args) {\n    return fn.apply(null, [this].concat([].slice.call(args)));\n  },\n  analogous: function analogous() {\n    return this._applyCombination(_analogous, arguments);\n  },\n  complement: function complement() {\n    return this._applyCombination(_complement, arguments);\n  },\n  monochromatic: function monochromatic() {\n    return this._applyCombination(_monochromatic, arguments);\n  },\n  splitcomplement: function splitcomplement() {\n    return this._applyCombination(_splitcomplement, arguments);\n  },\n  // Disabled until https://github.com/bgrins/TinyColor/issues/254\n  // polyad: function (number) {\n  //   return this._applyCombination(polyad, [number]);\n  // },\n  triad: function triad() {\n    return this._applyCombination(polyad, [3]);\n  },\n  tetrad: function tetrad() {\n    return this._applyCombination(polyad, [4]);\n  }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function (color, opts) {\n  if (_typeof(color) == \"object\") {\n    var newColor = {};\n    for (var i in color) {\n      if (color.hasOwnProperty(i)) {\n        if (i === \"a\") {\n          newColor[i] = color[i];\n        } else {\n          newColor[i] = convertToPercentage(color[i]);\n        }\n      }\n    }\n    color = newColor;\n  }\n  return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n//     \"red\"\n//     \"#f00\" or \"f00\"\n//     \"#ff0000\" or \"ff0000\"\n//     \"#ff000000\" or \"ff000000\"\n//     \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n//     \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n//     \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n//     \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n//     \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n//     \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n//     \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n  var rgb = {\n    r: 0,\n    g: 0,\n    b: 0\n  };\n  var a = 1;\n  var s = null;\n  var v = null;\n  var l = null;\n  var ok = false;\n  var format = false;\n  if (typeof color == \"string\") {\n    color = stringInputToObject(color);\n  }\n  if (_typeof(color) == \"object\") {\n    if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n      rgb = rgbToRgb(color.r, color.g, color.b);\n      ok = true;\n      format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n    } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n      s = convertToPercentage(color.s);\n      v = convertToPercentage(color.v);\n      rgb = hsvToRgb(color.h, s, v);\n      ok = true;\n      format = \"hsv\";\n    } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n      s = convertToPercentage(color.s);\n      l = convertToPercentage(color.l);\n      rgb = hslToRgb(color.h, s, l);\n      ok = true;\n      format = \"hsl\";\n    }\n    if (color.hasOwnProperty(\"a\")) {\n      a = color.a;\n    }\n  }\n  a = boundAlpha(a);\n  return {\n    ok: ok,\n    format: color.format || format,\n    r: Math.min(255, Math.max(rgb.r, 0)),\n    g: Math.min(255, Math.max(rgb.g, 0)),\n    b: Math.min(255, Math.max(rgb.b, 0)),\n    a: a\n  };\n}\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b) {\n  return {\n    r: bound01(r, 255) * 255,\n    g: bound01(g, 255) * 255,\n    b: bound01(b, 255) * 255\n  };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n  r = bound01(r, 255);\n  g = bound01(g, 255);\n  b = bound01(b, 255);\n  var max = Math.max(r, g, b),\n    min = Math.min(r, g, b);\n  var h,\n    s,\n    l = (max + min) / 2;\n  if (max == min) {\n    h = s = 0; // achromatic\n  } else {\n    var d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n    switch (max) {\n      case r:\n        h = (g - b) / d + (g < b ? 6 : 0);\n        break;\n      case g:\n        h = (b - r) / d + 2;\n        break;\n      case b:\n        h = (r - g) / d + 4;\n        break;\n    }\n    h /= 6;\n  }\n  return {\n    h: h,\n    s: s,\n    l: l\n  };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n  var r, g, b;\n  h = bound01(h, 360);\n  s = bound01(s, 100);\n  l = bound01(l, 100);\n  function hue2rgb(p, q, t) {\n    if (t < 0) t += 1;\n    if (t > 1) t -= 1;\n    if (t < 1 / 6) return p + (q - p) * 6 * t;\n    if (t < 1 / 2) return q;\n    if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n    return p;\n  }\n  if (s === 0) {\n    r = g = b = l; // achromatic\n  } else {\n    var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n    var p = 2 * l - q;\n    r = hue2rgb(p, q, h + 1 / 3);\n    g = hue2rgb(p, q, h);\n    b = hue2rgb(p, q, h - 1 / 3);\n  }\n  return {\n    r: r * 255,\n    g: g * 255,\n    b: b * 255\n  };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n  r = bound01(r, 255);\n  g = bound01(g, 255);\n  b = bound01(b, 255);\n  var max = Math.max(r, g, b),\n    min = Math.min(r, g, b);\n  var h,\n    s,\n    v = max;\n  var d = max - min;\n  s = max === 0 ? 0 : d / max;\n  if (max == min) {\n    h = 0; // achromatic\n  } else {\n    switch (max) {\n      case r:\n        h = (g - b) / d + (g < b ? 6 : 0);\n        break;\n      case g:\n        h = (b - r) / d + 2;\n        break;\n      case b:\n        h = (r - g) / d + 4;\n        break;\n    }\n    h /= 6;\n  }\n  return {\n    h: h,\n    s: s,\n    v: v\n  };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hsvToRgb(h, s, v) {\n  h = bound01(h, 360) * 6;\n  s = bound01(s, 100);\n  v = bound01(v, 100);\n  var i = Math.floor(h),\n    f = h - i,\n    p = v * (1 - s),\n    q = v * (1 - f * s),\n    t = v * (1 - (1 - f) * s),\n    mod = i % 6,\n    r = [v, q, p, p, t, v][mod],\n    g = [t, v, v, q, p, p][mod],\n    b = [p, p, t, v, v, q][mod];\n  return {\n    r: r * 255,\n    g: g * 255,\n    b: b * 255\n  };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n  var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n\n  // Return a 3 character hex if possible\n  if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n    return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n  }\n  return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n  var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n  // Return a 4 character hex if possible\n  if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n    return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n  }\n  return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n  var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n  return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n  if (!color1 || !color2) return false;\n  return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\ntinycolor.random = function () {\n  return tinycolor.fromRatio({\n    r: Math.random(),\n    g: Math.random(),\n    b: Math.random()\n  });\n};\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction _desaturate(color, amount) {\n  amount = amount === 0 ? 0 : amount || 10;\n  var hsl = tinycolor(color).toHsl();\n  hsl.s -= amount / 100;\n  hsl.s = clamp01(hsl.s);\n  return tinycolor(hsl);\n}\nfunction _saturate(color, amount) {\n  amount = amount === 0 ? 0 : amount || 10;\n  var hsl = tinycolor(color).toHsl();\n  hsl.s += amount / 100;\n  hsl.s = clamp01(hsl.s);\n  return tinycolor(hsl);\n}\nfunction _greyscale(color) {\n  return tinycolor(color).desaturate(100);\n}\nfunction _lighten(color, amount) {\n  amount = amount === 0 ? 0 : amount || 10;\n  var hsl = tinycolor(color).toHsl();\n  hsl.l += amount / 100;\n  hsl.l = clamp01(hsl.l);\n  return tinycolor(hsl);\n}\nfunction _brighten(color, amount) {\n  amount = amount === 0 ? 0 : amount || 10;\n  var rgb = tinycolor(color).toRgb();\n  rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n  rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n  rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n  return tinycolor(rgb);\n}\nfunction _darken(color, amount) {\n  amount = amount === 0 ? 0 : amount || 10;\n  var hsl = tinycolor(color).toHsl();\n  hsl.l -= amount / 100;\n  hsl.l = clamp01(hsl.l);\n  return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction _spin(color, amount) {\n  var hsl = tinycolor(color).toHsl();\n  var hue = (hsl.h + amount) % 360;\n  hsl.h = hue < 0 ? 360 + hue : hue;\n  return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction _complement(color) {\n  var hsl = tinycolor(color).toHsl();\n  hsl.h = (hsl.h + 180) % 360;\n  return tinycolor(hsl);\n}\nfunction polyad(color, number) {\n  if (isNaN(number) || number <= 0) {\n    throw new Error(\"Argument to polyad must be a positive number\");\n  }\n  var hsl = tinycolor(color).toHsl();\n  var result = [tinycolor(color)];\n  var step = 360 / number;\n  for (var i = 1; i < number; i++) {\n    result.push(tinycolor({\n      h: (hsl.h + i * step) % 360,\n      s: hsl.s,\n      l: hsl.l\n    }));\n  }\n  return result;\n}\nfunction _splitcomplement(color) {\n  var hsl = tinycolor(color).toHsl();\n  var h = hsl.h;\n  return [tinycolor(color), tinycolor({\n    h: (h + 72) % 360,\n    s: hsl.s,\n    l: hsl.l\n  }), tinycolor({\n    h: (h + 216) % 360,\n    s: hsl.s,\n    l: hsl.l\n  })];\n}\nfunction _analogous(color, results, slices) {\n  results = results || 6;\n  slices = slices || 30;\n  var hsl = tinycolor(color).toHsl();\n  var part = 360 / slices;\n  var ret = [tinycolor(color)];\n  for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n    hsl.h = (hsl.h + part) % 360;\n    ret.push(tinycolor(hsl));\n  }\n  return ret;\n}\nfunction _monochromatic(color, results) {\n  results = results || 6;\n  var hsv = tinycolor(color).toHsv();\n  var h = hsv.h,\n    s = hsv.s,\n    v = hsv.v;\n  var ret = [];\n  var modification = 1 / results;\n  while (results--) {\n    ret.push(tinycolor({\n      h: h,\n      s: s,\n      v: v\n    }));\n    v = (v + modification) % 1;\n  }\n  return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function (color1, color2, amount) {\n  amount = amount === 0 ? 0 : amount || 50;\n  var rgb1 = tinycolor(color1).toRgb();\n  var rgb2 = tinycolor(color2).toRgb();\n  var p = amount / 100;\n  var rgba = {\n    r: (rgb2.r - rgb1.r) * p + rgb1.r,\n    g: (rgb2.g - rgb1.g) * p + rgb1.g,\n    b: (rgb2.b - rgb1.b) * p + rgb1.b,\n    a: (rgb2.a - rgb1.a) * p + rgb1.a\n  };\n  return tinycolor(rgba);\n};\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function (color1, color2) {\n  var c1 = tinycolor(color1);\n  var c2 = tinycolor(color2);\n  return (Math.max(c1.getLuminance(), c2.getLuminance()) + 0.05) / (Math.min(c1.getLuminance(), c2.getLuminance()) + 0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n//      the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n//      the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n//    tinycolor.isReadable(\"#000\", \"#111\") => false\n//    tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function (color1, color2, wcag2) {\n  var readability = tinycolor.readability(color1, color2);\n  var wcag2Parms, out;\n  out = false;\n  wcag2Parms = validateWCAG2Parms(wcag2);\n  switch (wcag2Parms.level + wcag2Parms.size) {\n    case \"AAsmall\":\n    case \"AAAlarge\":\n      out = readability >= 4.5;\n      break;\n    case \"AAlarge\":\n      out = readability >= 3;\n      break;\n    case \"AAAsmall\":\n      out = readability >= 7;\n      break;\n  }\n  return out;\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString();  // \"#ffffff\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function (baseColor, colorList, args) {\n  var bestColor = null;\n  var bestScore = 0;\n  var readability;\n  var includeFallbackColors, level, size;\n  args = args || {};\n  includeFallbackColors = args.includeFallbackColors;\n  level = args.level;\n  size = args.size;\n  for (var i = 0; i < colorList.length; i++) {\n    readability = tinycolor.readability(baseColor, colorList[i]);\n    if (readability > bestScore) {\n      bestScore = readability;\n      bestColor = tinycolor(colorList[i]);\n    }\n  }\n  if (tinycolor.isReadable(baseColor, bestColor, {\n    level: level,\n    size: size\n  }) || !includeFallbackColors) {\n    return bestColor;\n  } else {\n    args.includeFallbackColors = false;\n    return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n  }\n};\n\n// Big List of Colors\n// ------------------\n// <https://www.w3.org/TR/css-color-4/#named-colors>\nvar names = tinycolor.names = {\n  aliceblue: \"f0f8ff\",\n  antiquewhite: \"faebd7\",\n  aqua: \"0ff\",\n  aquamarine: \"7fffd4\",\n  azure: \"f0ffff\",\n  beige: \"f5f5dc\",\n  bisque: \"ffe4c4\",\n  black: \"000\",\n  blanchedalmond: \"ffebcd\",\n  blue: \"00f\",\n  blueviolet: \"8a2be2\",\n  brown: \"a52a2a\",\n  burlywood: \"deb887\",\n  burntsienna: \"ea7e5d\",\n  cadetblue: \"5f9ea0\",\n  chartreuse: \"7fff00\",\n  chocolate: \"d2691e\",\n  coral: \"ff7f50\",\n  cornflowerblue: \"6495ed\",\n  cornsilk: \"fff8dc\",\n  crimson: \"dc143c\",\n  cyan: \"0ff\",\n  darkblue: \"00008b\",\n  darkcyan: \"008b8b\",\n  darkgoldenrod: \"b8860b\",\n  darkgray: \"a9a9a9\",\n  darkgreen: \"006400\",\n  darkgrey: \"a9a9a9\",\n  darkkhaki: \"bdb76b\",\n  darkmagenta: \"8b008b\",\n  darkolivegreen: \"556b2f\",\n  darkorange: \"ff8c00\",\n  darkorchid: \"9932cc\",\n  darkred: \"8b0000\",\n  darksalmon: \"e9967a\",\n  darkseagreen: \"8fbc8f\",\n  darkslateblue: \"483d8b\",\n  darkslategray: \"2f4f4f\",\n  darkslategrey: \"2f4f4f\",\n  darkturquoise: \"00ced1\",\n  darkviolet: \"9400d3\",\n  deeppink: \"ff1493\",\n  deepskyblue: \"00bfff\",\n  dimgray: \"696969\",\n  dimgrey: \"696969\",\n  dodgerblue: \"1e90ff\",\n  firebrick: \"b22222\",\n  floralwhite: \"fffaf0\",\n  forestgreen: \"228b22\",\n  fuchsia: \"f0f\",\n  gainsboro: \"dcdcdc\",\n  ghostwhite: \"f8f8ff\",\n  gold: \"ffd700\",\n  goldenrod: \"daa520\",\n  gray: \"808080\",\n  green: \"008000\",\n  greenyellow: \"adff2f\",\n  grey: \"808080\",\n  honeydew: \"f0fff0\",\n  hotpink: \"ff69b4\",\n  indianred: \"cd5c5c\",\n  indigo: \"4b0082\",\n  ivory: \"fffff0\",\n  khaki: \"f0e68c\",\n  lavender: \"e6e6fa\",\n  lavenderblush: \"fff0f5\",\n  lawngreen: \"7cfc00\",\n  lemonchiffon: \"fffacd\",\n  lightblue: \"add8e6\",\n  lightcoral: \"f08080\",\n  lightcyan: \"e0ffff\",\n  lightgoldenrodyellow: \"fafad2\",\n  lightgray: \"d3d3d3\",\n  lightgreen: \"90ee90\",\n  lightgrey: \"d3d3d3\",\n  lightpink: \"ffb6c1\",\n  lightsalmon: \"ffa07a\",\n  lightseagreen: \"20b2aa\",\n  lightskyblue: \"87cefa\",\n  lightslategray: \"789\",\n  lightslategrey: \"789\",\n  lightsteelblue: \"b0c4de\",\n  lightyellow: \"ffffe0\",\n  lime: \"0f0\",\n  limegreen: \"32cd32\",\n  linen: \"faf0e6\",\n  magenta: \"f0f\",\n  maroon: \"800000\",\n  mediumaquamarine: \"66cdaa\",\n  mediumblue: \"0000cd\",\n  mediumorchid: \"ba55d3\",\n  mediumpurple: \"9370db\",\n  mediumseagreen: \"3cb371\",\n  mediumslateblue: \"7b68ee\",\n  mediumspringgreen: \"00fa9a\",\n  mediumturquoise: \"48d1cc\",\n  mediumvioletred: \"c71585\",\n  midnightblue: \"191970\",\n  mintcream: \"f5fffa\",\n  mistyrose: \"ffe4e1\",\n  moccasin: \"ffe4b5\",\n  navajowhite: \"ffdead\",\n  navy: \"000080\",\n  oldlace: \"fdf5e6\",\n  olive: \"808000\",\n  olivedrab: \"6b8e23\",\n  orange: \"ffa500\",\n  orangered: \"ff4500\",\n  orchid: \"da70d6\",\n  palegoldenrod: \"eee8aa\",\n  palegreen: \"98fb98\",\n  paleturquoise: \"afeeee\",\n  palevioletred: \"db7093\",\n  papayawhip: \"ffefd5\",\n  peachpuff: \"ffdab9\",\n  peru: \"cd853f\",\n  pink: \"ffc0cb\",\n  plum: \"dda0dd\",\n  powderblue: \"b0e0e6\",\n  purple: \"800080\",\n  rebeccapurple: \"663399\",\n  red: \"f00\",\n  rosybrown: \"bc8f8f\",\n  royalblue: \"4169e1\",\n  saddlebrown: \"8b4513\",\n  salmon: \"fa8072\",\n  sandybrown: \"f4a460\",\n  seagreen: \"2e8b57\",\n  seashell: \"fff5ee\",\n  sienna: \"a0522d\",\n  silver: \"c0c0c0\",\n  skyblue: \"87ceeb\",\n  slateblue: \"6a5acd\",\n  slategray: \"708090\",\n  slategrey: \"708090\",\n  snow: \"fffafa\",\n  springgreen: \"00ff7f\",\n  steelblue: \"4682b4\",\n  tan: \"d2b48c\",\n  teal: \"008080\",\n  thistle: \"d8bfd8\",\n  tomato: \"ff6347\",\n  turquoise: \"40e0d0\",\n  violet: \"ee82ee\",\n  wheat: \"f5deb3\",\n  white: \"fff\",\n  whitesmoke: \"f5f5f5\",\n  yellow: \"ff0\",\n  yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n  var flipped = {};\n  for (var i in o) {\n    if (o.hasOwnProperty(i)) {\n      flipped[o[i]] = i;\n    }\n  }\n  return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n  a = parseFloat(a);\n  if (isNaN(a) || a < 0 || a > 1) {\n    a = 1;\n  }\n  return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n  if (isOnePointZero(n)) n = \"100%\";\n  var processPercent = isPercentage(n);\n  n = Math.min(max, Math.max(0, parseFloat(n)));\n\n  // Automatically convert percentage into number\n  if (processPercent) {\n    n = parseInt(n * max, 10) / 100;\n  }\n\n  // Handle floating point rounding errors\n  if (Math.abs(n - max) < 0.000001) {\n    return 1;\n  }\n\n  // Convert into [0, 1] range if it isn't already\n  return n % max / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n  return Math.min(1, Math.max(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n  return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n  return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n  return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n  return c.length == 1 ? \"0\" + c : \"\" + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n  if (n <= 1) {\n    n = n * 100 + \"%\";\n  }\n  return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n  return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n  return parseIntFromHex(h) / 255;\n}\nvar matchers = function () {\n  // <http://www.w3.org/TR/css3-values/#integers>\n  var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n  // <http://www.w3.org/TR/css3-values/#number-value>\n  var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n  // Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\n  var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n  // Actual matching.\n  // Parentheses and commas are optional, but not required.\n  // Whitespace can take the place of commas or opening paren\n  var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n  var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n  return {\n    CSS_UNIT: new RegExp(CSS_UNIT),\n    rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n    rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n    hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n    hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n    hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n    hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n    hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n    hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n  };\n}();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n  return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing.  Take in a number of formats, and output an object\n// based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n  color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n  var named = false;\n  if (names[color]) {\n    color = names[color];\n    named = true;\n  } else if (color == \"transparent\") {\n    return {\n      r: 0,\n      g: 0,\n      b: 0,\n      a: 0,\n      format: \"name\"\n    };\n  }\n\n  // Try to match string input using regular expressions.\n  // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n  // Just return an object and let the conversion functions handle that.\n  // This way the result will be the same whether the tinycolor is initialized with string or object.\n  var match;\n  if (match = matchers.rgb.exec(color)) {\n    return {\n      r: match[1],\n      g: match[2],\n      b: match[3]\n    };\n  }\n  if (match = matchers.rgba.exec(color)) {\n    return {\n      r: match[1],\n      g: match[2],\n      b: match[3],\n      a: match[4]\n    };\n  }\n  if (match = matchers.hsl.exec(color)) {\n    return {\n      h: match[1],\n      s: match[2],\n      l: match[3]\n    };\n  }\n  if (match = matchers.hsla.exec(color)) {\n    return {\n      h: match[1],\n      s: match[2],\n      l: match[3],\n      a: match[4]\n    };\n  }\n  if (match = matchers.hsv.exec(color)) {\n    return {\n      h: match[1],\n      s: match[2],\n      v: match[3]\n    };\n  }\n  if (match = matchers.hsva.exec(color)) {\n    return {\n      h: match[1],\n      s: match[2],\n      v: match[3],\n      a: match[4]\n    };\n  }\n  if (match = matchers.hex8.exec(color)) {\n    return {\n      r: parseIntFromHex(match[1]),\n      g: parseIntFromHex(match[2]),\n      b: parseIntFromHex(match[3]),\n      a: convertHexToDecimal(match[4]),\n      format: named ? \"name\" : \"hex8\"\n    };\n  }\n  if (match = matchers.hex6.exec(color)) {\n    return {\n      r: parseIntFromHex(match[1]),\n      g: parseIntFromHex(match[2]),\n      b: parseIntFromHex(match[3]),\n      format: named ? \"name\" : \"hex\"\n    };\n  }\n  if (match = matchers.hex4.exec(color)) {\n    return {\n      r: parseIntFromHex(match[1] + \"\" + match[1]),\n      g: parseIntFromHex(match[2] + \"\" + match[2]),\n      b: parseIntFromHex(match[3] + \"\" + match[3]),\n      a: convertHexToDecimal(match[4] + \"\" + match[4]),\n      format: named ? \"name\" : \"hex8\"\n    };\n  }\n  if (match = matchers.hex3.exec(color)) {\n    return {\n      r: parseIntFromHex(match[1] + \"\" + match[1]),\n      g: parseIntFromHex(match[2] + \"\" + match[2]),\n      b: parseIntFromHex(match[3] + \"\" + match[3]),\n      format: named ? \"name\" : \"hex\"\n    };\n  }\n  return false;\n}\nfunction validateWCAG2Parms(parms) {\n  // return valid WCAG2 parms for isReadable.\n  // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n  var level, size;\n  parms = parms || {\n    level: \"AA\",\n    size: \"small\"\n  };\n  level = (parms.level || \"AA\").toUpperCase();\n  size = (parms.size || \"small\").toLowerCase();\n  if (level !== \"AA\" && level !== \"AAA\") {\n    level = \"AA\";\n  }\n  if (size !== \"small\" && size !== \"large\") {\n    size = \"small\";\n  }\n  return {\n    level: level,\n    size: size\n  };\n}\n\nexport { tinycolor as default };\n","import tinycolor from 'tinycolor2';\nimport type { ColorInput } from 'tinycolor2';\n\nexport type ColorFormat =\n  | 'rgb'\n  | 'prgb'\n  | 'hex'\n  | 'hex6'\n  | 'hex3'\n  | 'hex4'\n  | 'hex8'\n  | 'name'\n  | 'hsl'\n  | 'hsv';\n\nconst double = (num: number) => {\n  return Math.round(num * 100) / 100;\n};\n\nexport class Color {\n  private instance: tinycolor.Instance;\n  private alphaValue = 0;\n\n  // RGB\n  private redValue = 0;\n  private greenValue = 0;\n  private blueValue = 0;\n\n  // HSV\n  private hueValue = 0;\n  private saturationValue = 0;\n  private brightnessValue = 0;\n\n  // HSL\n  private hslSaturationValue = 0;\n  private lightnessValue = 0;\n\n  constructor(input?: ColorInput) {\n    this.instance = tinycolor(input);\n\n    this.initRgb();\n    this.initHsb();\n    this.initLightness();\n    this.initAlpha();\n  }\n\n  private initAlpha = () => {\n    const initAlpha = this.instance.getAlpha();\n    this.alphaValue = Math.min(1, initAlpha) * 100;\n  };\n\n  private initLightness = () => {\n    const { s, l } = this.instance.toHsl();\n    this.hslSaturationValue = double(s);\n    this.lightnessValue = double(l);\n  };\n\n  private initRgb = () => {\n    const { r, g, b } = this.instance.toRgb();\n\n    this.redValue = double(r);\n    this.greenValue = double(g);\n    this.blueValue = double(b);\n  };\n\n  private initHsb = () => {\n    const { h, s, v } = this.instance.toHsv();\n\n    this.hueValue = Math.min(360, Math.ceil(h));\n    this.saturationValue = double(s);\n    this.brightnessValue = double(v);\n  };\n\n  toString(format?: ColorFormat) {\n    return this.instance.toString(format);\n  }\n\n  toHexString = () => {\n    return this.instance.toHexString();\n  };\n\n  toRgbString = () => {\n    return this.instance.toRgbString();\n  };\n\n  get hex() {\n    return this.instance.toHex();\n  }\n\n  set hex(hexString: string) {\n    this.instance = tinycolor(hexString);\n    this.initHsb();\n    this.initRgb();\n    this.initAlpha();\n    this.initLightness();\n  }\n\n  // 色调\n  set hue(value: number) {\n    if (this.saturation === 0 && this.brightness === 0) {\n      this.saturationValue = 1;\n      this.brightnessValue = 1;\n    }\n    this.instance = tinycolor({\n      h: double(value),\n      s: this.saturation,\n      v: this.brightness,\n      a: this.alphaValue / 100,\n    });\n\n    this.initRgb();\n    this.initLightness();\n    this.hueValue = double(value);\n  }\n\n  get hue() {\n    return this.hueValue;\n  }\n\n  // 饱和度\n  set saturation(value: number) {\n    this.instance = tinycolor({\n      h: this.hue,\n      s: double(value),\n      v: this.brightness,\n      a: this.alphaValue / 100,\n    });\n\n    this.initRgb();\n    this.initLightness();\n    this.saturationValue = double(value);\n  }\n\n  get saturation() {\n    return this.saturationValue;\n  }\n\n  // 明度\n  set brightness(value: number) {\n    this.instance = tinycolor({\n      h: this.hue,\n      s: this.saturation,\n      v: double(value),\n      a: this.alphaValue / 100,\n    });\n\n    this.initRgb();\n    this.initLightness();\n    this.brightnessValue = double(value);\n  }\n\n  get brightness() {\n    return this.brightnessValue;\n  }\n\n  // 亮度\n  set lightness(value: number) {\n    this.instance = tinycolor({\n      h: this.hue,\n      s: this.hslSaturationValue,\n      l: double(value),\n      a: this.alphaValue / 100,\n    });\n\n    this.initRgb();\n    this.initHsb();\n    this.lightnessValue = double(value);\n  }\n\n  get lightness() {\n    return this.lightnessValue;\n  }\n\n  // red\n  set red(value: number) {\n    const rgb = this.instance.toRgb();\n    this.instance = tinycolor({\n      ...rgb,\n      r: double(value),\n      a: this.alphaValue / 100,\n    });\n\n    this.initHsb();\n    this.initLightness();\n    this.redValue = double(value);\n  }\n\n  get red() {\n    return this.redValue;\n  }\n\n  // green\n  set green(value: number) {\n    const rgb = this.instance.toRgb();\n    this.instance = tinycolor({\n      ...rgb,\n      g: double(value),\n      a: this.alphaValue / 100,\n    });\n\n    this.initHsb();\n    this.initLightness();\n    this.greenValue = double(value);\n  }\n\n  get green() {\n    return this.greenValue;\n  }\n\n  // blue\n  set blue(value: number) {\n    const rgb = this.instance.toRgb();\n    this.instance = tinycolor({\n      ...rgb,\n      b: double(value),\n      a: this.alphaValue / 100,\n    });\n\n    this.initHsb();\n    this.initLightness();\n    this.blueValue = double(value);\n  }\n\n  get blue() {\n    return this.blueValue;\n  }\n\n  // alpha\n  set alpha(value: number) {\n    this.instance.setAlpha(value / 100);\n    this.alphaValue = value;\n  }\n\n  get alpha() {\n    return this.alphaValue;\n  }\n\n  get RGB() {\n    return [this.red, this.green, this.blue, this.alpha / 100];\n  }\n\n  get HSB() {\n    return [this.hue, this.saturation, this.brightness, this.alpha / 100];\n  }\n\n  get HSL() {\n    return [this.hue, this.hslSaturationValue, this.lightness, this.alpha / 100];\n  }\n}\n\nexport function rgbaColor(r: number, g: number, b: number, a: number) {\n  return `rgba(${[r, g, b, a / 100].join(',')})`;\n}\n\nexport const clamp = (value: number, min: number, max: number) => {\n  return min < max\n    ? value < min\n      ? min\n      : value > max\n      ? max\n      : value\n    : value < max\n    ? max\n    : value > min\n    ? min\n    : value;\n};\n\nexport const HistoryColorKey = 'color-history';\n\nexport const MAX_STORAGE_LENGTH = 8;\n","var t=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var n=function(t){return t&&t.Math==Math&&t},r=n(\"object\"==typeof globalThis&&globalThis)||n(\"object\"==typeof window&&window)||n(\"object\"==typeof self&&self)||n(\"object\"==typeof t&&t)||function(){return this}()||Function(\"return this\")(),o=function(t){try{return!!t()}catch(t){return!0}},i=!o((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),u={}.propertyIsEnumerable,a=Object.getOwnPropertyDescriptor,c={f:a&&!u.call({1:2},1)?function(t){var e=a(this,t);return!!e&&e.enumerable}:u},l=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},f={}.toString,s=function(t){return f.call(t).slice(8,-1)},d=\"\".split,v=o((function(){return!Object(\"z\").propertyIsEnumerable(0)}))?function(t){return\"String\"==s(t)?d.call(t,\"\"):Object(t)}:Object,p=function(t){if(null==t)throw TypeError(\"Can't call method on \"+t);return t},g=function(t){return v(p(t))},h=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t},y=function(t,e){if(!h(t))return t;var n,r;if(e&&\"function\"==typeof(n=t.toString)&&!h(r=n.call(t)))return r;if(\"function\"==typeof(n=t.valueOf)&&!h(r=n.call(t)))return r;if(!e&&\"function\"==typeof(n=t.toString)&&!h(r=n.call(t)))return r;throw TypeError(\"Can't convert object to primitive value\")},m={}.hasOwnProperty,S=function(t,e){return m.call(t,e)},x=r.document,b=h(x)&&h(x.createElement),E=function(t){return b?x.createElement(t):{}},w=!i&&!o((function(){return 7!=Object.defineProperty(E(\"div\"),\"a\",{get:function(){return 7}}).a})),O=Object.getOwnPropertyDescriptor,T={f:i?O:function(t,e){if(t=g(t),e=y(e,!0),w)try{return O(t,e)}catch(t){}if(S(t,e))return l(!c.f.call(t,e),t[e])}},A=function(t){if(!h(t))throw TypeError(String(t)+\" is not an object\");return t},k=Object.defineProperty,R={f:i?k:function(t,e,n){if(A(t),e=y(e,!0),A(n),w)try{return k(t,e,n)}catch(t){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported\");return\"value\"in n&&(t[e]=n.value),t}},I=i?function(t,e,n){return R.f(t,e,l(1,n))}:function(t,e,n){return t[e]=n,t},j=function(t,e){try{I(r,t,e)}catch(n){r[t]=e}return e},C=r[\"__core-js_shared__\"]||j(\"__core-js_shared__\",{}),L=Function.toString;\"function\"!=typeof C.inspectSource&&(C.inspectSource=function(t){return L.call(t)});var P,M,_,D=C.inspectSource,U=r.WeakMap,N=\"function\"==typeof U&&/native code/.test(D(U)),F=e((function(t){(t.exports=function(t,e){return C[t]||(C[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:\"3.8.3\",mode:\"global\",copyright:\"© 2021 Denis Pushkarev (zloirock.ru)\"})})),W=0,z=Math.random(),$=function(t){return\"Symbol(\"+String(void 0===t?\"\":t)+\")_\"+(++W+z).toString(36)},B=F(\"keys\"),Y=function(t){return B[t]||(B[t]=$(t))},G={},H=r.WeakMap;if(N){var X=C.state||(C.state=new H),V=X.get,K=X.has,q=X.set;P=function(t,e){return e.facade=t,q.call(X,t,e),e},M=function(t){return V.call(X,t)||{}},_=function(t){return K.call(X,t)}}else{var Q=Y(\"state\");G[Q]=!0,P=function(t,e){return e.facade=t,I(t,Q,e),e},M=function(t){return S(t,Q)?t[Q]:{}},_=function(t){return S(t,Q)}}var J={set:P,get:M,has:_,enforce:function(t){return _(t)?M(t):P(t,{})},getterFor:function(t){return function(e){var n;if(!h(e)||(n=M(e)).type!==t)throw TypeError(\"Incompatible receiver, \"+t+\" required\");return n}}},Z=e((function(t){var e=J.get,n=J.enforce,o=String(String).split(\"String\");(t.exports=function(t,e,i,u){var a,c=!!u&&!!u.unsafe,l=!!u&&!!u.enumerable,f=!!u&&!!u.noTargetGet;\"function\"==typeof i&&(\"string\"!=typeof e||S(i,\"name\")||I(i,\"name\",e),(a=n(i)).source||(a.source=o.join(\"string\"==typeof e?e:\"\"))),t!==r?(c?!f&&t[e]&&(l=!0):delete t[e],l?t[e]=i:I(t,e,i)):l?t[e]=i:j(e,i)})(Function.prototype,\"toString\",(function(){return\"function\"==typeof this&&e(this).source||D(this)}))})),tt=r,et=function(t){return\"function\"==typeof t?t:void 0},nt=function(t,e){return arguments.length<2?et(tt[t])||et(r[t]):tt[t]&&tt[t][e]||r[t]&&r[t][e]},rt=Math.ceil,ot=Math.floor,it=function(t){return isNaN(t=+t)?0:(t>0?ot:rt)(t)},ut=Math.min,at=function(t){return t>0?ut(it(t),9007199254740991):0},ct=Math.max,lt=Math.min,ft=function(t,e){var n=it(t);return n<0?ct(n+e,0):lt(n,e)},st=function(t){return function(e,n,r){var o,i=g(e),u=at(i.length),a=ft(r,u);if(t&&n!=n){for(;u>a;)if((o=i[a++])!=o)return!0}else for(;u>a;a++)if((t||a in i)&&i[a]===n)return t||a||0;return!t&&-1}},dt={includes:st(!0),indexOf:st(!1)},vt=dt.indexOf,pt=function(t,e){var n,r=g(t),o=0,i=[];for(n in r)!S(G,n)&&S(r,n)&&i.push(n);for(;e.length>o;)S(r,n=e[o++])&&(~vt(i,n)||i.push(n));return i},gt=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"],ht=gt.concat(\"length\",\"prototype\"),yt={f:Object.getOwnPropertyNames||function(t){return pt(t,ht)}},mt={f:Object.getOwnPropertySymbols},St=nt(\"Reflect\",\"ownKeys\")||function(t){var e=yt.f(A(t)),n=mt.f;return n?e.concat(n(t)):e},xt=function(t,e){for(var n=St(e),r=R.f,o=T.f,i=0;i<n.length;i++){var u=n[i];S(t,u)||r(t,u,o(e,u))}},bt=/#|\\.prototype\\./,Et=function(t,e){var n=Ot[wt(t)];return n==At||n!=Tt&&(\"function\"==typeof e?o(e):!!e)},wt=Et.normalize=function(t){return String(t).replace(bt,\".\").toLowerCase()},Ot=Et.data={},Tt=Et.NATIVE=\"N\",At=Et.POLYFILL=\"P\",kt=Et,Rt=T.f,It=function(t,e){var n,o,i,u,a,c=t.target,l=t.global,f=t.stat;if(n=l?r:f?r[c]||j(c,{}):(r[c]||{}).prototype)for(o in e){if(u=e[o],i=t.noTargetGet?(a=Rt(n,o))&&a.value:n[o],!kt(l?o:c+(f?\".\":\"#\")+o,t.forced)&&void 0!==i){if(typeof u==typeof i)continue;xt(u,i)}(t.sham||i&&i.sham)&&I(u,\"sham\",!0),Z(n,o,u,t)}},jt=function(t,e){var n=[][t];return!!n&&o((function(){n.call(null,e||function(){throw 1},1)}))},Ct=Object.defineProperty,Lt={},Pt=function(t){throw t},Mt=function(t,e){if(S(Lt,t))return Lt[t];e||(e={});var n=[][t],r=!!S(e,\"ACCESSORS\")&&e.ACCESSORS,u=S(e,0)?e[0]:Pt,a=S(e,1)?e[1]:void 0;return Lt[t]=!!n&&!o((function(){if(r&&!i)return!0;var t={length:-1};r?Ct(t,1,{enumerable:!0,get:Pt}):t[1]=1,n.call(t,u,a)}))},_t=dt.indexOf,Dt=[].indexOf,Ut=!!Dt&&1/[1].indexOf(1,-0)<0,Nt=jt(\"indexOf\"),Ft=Mt(\"indexOf\",{ACCESSORS:!0,1:0});function Wt(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function zt(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function $t(t,e,n){return e&&zt(t.prototype,e),n&&zt(t,n),t}It({target:\"Array\",proto:!0,forced:Ut||!Nt||!Ft},{indexOf:function(t){return Ut?Dt.apply(this,arguments)||0:_t(this,t,arguments.length>1?arguments[1]:void 0)}});var Bt=function(){function t(){Wt(this,t)}return $t(t,null,[{key:\"isInBrowser\",value:function(){return\"undefined\"!=typeof window}},{key:\"isServer\",value:function(){return\"undefined\"==typeof window}},{key:\"getUA\",value:function(){return t.isInBrowser()?window.navigator.userAgent.toLowerCase():\"\"}},{key:\"isMobile\",value:function(){return/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion)}},{key:\"isOpera\",value:function(){return-1!==navigator.userAgent.indexOf(\"Opera\")}},{key:\"isIE\",value:function(){var e=t.getUA();return\"\"!==e&&e.indexOf(\"msie\")>0}},{key:\"isIE9\",value:function(){var e=t.getUA();return\"\"!==e&&e.indexOf(\"msie 9.0\")>0}},{key:\"isEdge\",value:function(){var e=t.getUA();return\"\"!==e&&e.indexOf(\"edge/\")>0}},{key:\"isChrome\",value:function(){var e=t.getUA();return\"\"!==e&&/chrome\\/\\d+/.test(e)&&!t.isEdge()}},{key:\"isPhantomJS\",value:function(){var e=t.getUA();return\"\"!==e&&/phantomjs/.test(e)}},{key:\"isFirefox\",value:function(){var e=t.getUA();return\"\"!==e&&/firefox/.test(e)}}]),t}(),Yt=[].join,Gt=v!=Object,Ht=jt(\"join\",\",\");It({target:\"Array\",proto:!0,forced:Gt||!Ht},{join:function(t){return Yt.call(g(this),void 0===t?\",\":t)}});var Xt,Vt,Kt=function(t){return Object(p(t))},qt=Array.isArray||function(t){return\"Array\"==s(t)},Qt=!!Object.getOwnPropertySymbols&&!o((function(){return!String(Symbol())})),Jt=Qt&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator,Zt=F(\"wks\"),te=r.Symbol,ee=Jt?te:te&&te.withoutSetter||$,ne=function(t){return S(Zt,t)||(Qt&&S(te,t)?Zt[t]=te[t]:Zt[t]=ee(\"Symbol.\"+t)),Zt[t]},re=ne(\"species\"),oe=function(t,e){var n;return qt(t)&&(\"function\"!=typeof(n=t.constructor)||n!==Array&&!qt(n.prototype)?h(n)&&null===(n=n[re])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===e?0:e)},ie=function(t,e,n){var r=y(e);r in t?R.f(t,r,l(0,n)):t[r]=n},ue=nt(\"navigator\",\"userAgent\")||\"\",ae=r.process,ce=ae&&ae.versions,le=ce&&ce.v8;le?Vt=(Xt=le.split(\".\"))[0]+Xt[1]:ue&&(!(Xt=ue.match(/Edge\\/(\\d+)/))||Xt[1]>=74)&&(Xt=ue.match(/Chrome\\/(\\d+)/))&&(Vt=Xt[1]);var fe=Vt&&+Vt,se=ne(\"species\"),de=function(t){return fe>=51||!o((function(){var e=[];return(e.constructor={})[se]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},ve=de(\"splice\"),pe=Mt(\"splice\",{ACCESSORS:!0,0:0,1:2}),ge=Math.max,he=Math.min;It({target:\"Array\",proto:!0,forced:!ve||!pe},{splice:function(t,e){var n,r,o,i,u,a,c=Kt(this),l=at(c.length),f=ft(t,l),s=arguments.length;if(0===s?n=r=0:1===s?(n=0,r=l-f):(n=s-2,r=he(ge(it(e),0),l-f)),l+n-r>9007199254740991)throw TypeError(\"Maximum allowed length exceeded\");for(o=oe(c,r),i=0;i<r;i++)(u=f+i)in c&&ie(o,i,c[u]);if(o.length=r,n<r){for(i=f;i<l-r;i++)a=i+n,(u=i+r)in c?c[a]=c[u]:delete c[a];for(i=l;i>l-r+n;i--)delete c[i-1]}else if(n>r)for(i=l-r;i>f;i--)a=i+n-1,(u=i+r-1)in c?c[a]=c[u]:delete c[a];for(i=0;i<n;i++)c[i+f]=arguments[i+2];return c.length=l-r+n,o}});var ye={};ye[ne(\"toStringTag\")]=\"z\";var me=\"[object z]\"===String(ye),Se=ne(\"toStringTag\"),xe=\"Arguments\"==s(function(){return arguments}()),be=me?s:function(t){var e,n,r;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),Se))?n:xe?s(e):\"Object\"==(r=s(e))&&\"function\"==typeof e.callee?\"Arguments\":r},Ee=me?{}.toString:function(){return\"[object \"+be(this)+\"]\"};me||Z(Object.prototype,\"toString\",Ee,{unsafe:!0});var we=function(){var t=A(this),e=\"\";return t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),t.dotAll&&(e+=\"s\"),t.unicode&&(e+=\"u\"),t.sticky&&(e+=\"y\"),e};function Oe(t,e){return RegExp(t,e)}var Te,Ae,ke={UNSUPPORTED_Y:o((function(){var t=Oe(\"a\",\"y\");return t.lastIndex=2,null!=t.exec(\"abcd\")})),BROKEN_CARET:o((function(){var t=Oe(\"^r\",\"gy\");return t.lastIndex=2,null!=t.exec(\"str\")}))},Re=RegExp.prototype.exec,Ie=String.prototype.replace,je=Re,Ce=(Te=/a/,Ae=/b*/g,Re.call(Te,\"a\"),Re.call(Ae,\"a\"),0!==Te.lastIndex||0!==Ae.lastIndex),Le=ke.UNSUPPORTED_Y||ke.BROKEN_CARET,Pe=void 0!==/()??/.exec(\"\")[1];(Ce||Pe||Le)&&(je=function(t){var e,n,r,o,i=this,u=Le&&i.sticky,a=we.call(i),c=i.source,l=0,f=t;return u&&(-1===(a=a.replace(\"y\",\"\")).indexOf(\"g\")&&(a+=\"g\"),f=String(t).slice(i.lastIndex),i.lastIndex>0&&(!i.multiline||i.multiline&&\"\\n\"!==t[i.lastIndex-1])&&(c=\"(?: \"+c+\")\",f=\" \"+f,l++),n=new RegExp(\"^(?:\"+c+\")\",a)),Pe&&(n=new RegExp(\"^\"+c+\"$(?!\\\\s)\",a)),Ce&&(e=i.lastIndex),r=Re.call(u?n:i,f),u?r?(r.input=r.input.slice(l),r[0]=r[0].slice(l),r.index=i.lastIndex,i.lastIndex+=r[0].length):i.lastIndex=0:Ce&&r&&(i.lastIndex=i.global?r.index+r[0].length:e),Pe&&r&&r.length>1&&Ie.call(r[0],n,(function(){for(o=1;o<arguments.length-2;o++)void 0===arguments[o]&&(r[o]=void 0)})),r});var Me=je;It({target:\"RegExp\",proto:!0,forced:/./.exec!==Me},{exec:Me});var _e=RegExp.prototype,De=_e.toString,Ue=o((function(){return\"/a/b\"!=De.call({source:\"a\",flags:\"b\"})})),Ne=\"toString\"!=De.name;(Ue||Ne)&&Z(RegExp.prototype,\"toString\",(function(){var t=A(this),e=String(t.source),n=t.flags;return\"/\"+e+\"/\"+String(void 0===n&&t instanceof RegExp&&!(\"flags\"in _e)?we.call(t):n)}),{unsafe:!0});var Fe=ne(\"species\"),We=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:\"7\"},t},\"7\"!==\"\".replace(t,\"$<a>\")})),ze=\"$0\"===\"a\".replace(/./,\"$0\"),$e=ne(\"replace\"),Be=!!/./[$e]&&\"\"===/./[$e](\"a\",\"$0\"),Ye=!o((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n=\"ab\".split(t);return 2!==n.length||\"a\"!==n[0]||\"b\"!==n[1]})),Ge=function(t,e,n,r){var i=ne(t),u=!o((function(){var e={};return e[i]=function(){return 7},7!=\"\"[t](e)})),a=u&&!o((function(){var e=!1,n=/a/;return\"split\"===t&&((n={}).constructor={},n.constructor[Fe]=function(){return n},n.flags=\"\",n[i]=/./[i]),n.exec=function(){return e=!0,null},n[i](\"\"),!e}));if(!u||!a||\"replace\"===t&&(!We||!ze||Be)||\"split\"===t&&!Ye){var c=/./[i],l=n(i,\"\"[t],(function(t,e,n,r,o){return e.exec===Me?u&&!o?{done:!0,value:c.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:ze,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:Be}),f=l[0],s=l[1];Z(String.prototype,t,f),Z(RegExp.prototype,i,2==e?function(t,e){return s.call(t,this,e)}:function(t){return s.call(t,this)})}r&&I(RegExp.prototype[i],\"sham\",!0)},He=ne(\"match\"),Xe=function(t){var e;return h(t)&&(void 0!==(e=t[He])?!!e:\"RegExp\"==s(t))},Ve=function(t){if(\"function\"!=typeof t)throw TypeError(String(t)+\" is not a function\");return t},Ke=ne(\"species\"),qe=function(t){return function(e,n){var r,o,i=String(p(e)),u=it(n),a=i.length;return u<0||u>=a?t?\"\":void 0:(r=i.charCodeAt(u))<55296||r>56319||u+1===a||(o=i.charCodeAt(u+1))<56320||o>57343?t?i.charAt(u):r:t?i.slice(u,u+2):o-56320+(r-55296<<10)+65536}},Qe={codeAt:qe(!1),charAt:qe(!0)},Je=Qe.charAt,Ze=function(t,e,n){return e+(n?Je(t,e).length:1)},tn=function(t,e){var n=t.exec;if(\"function\"==typeof n){var r=n.call(t,e);if(\"object\"!=typeof r)throw TypeError(\"RegExp exec method returned something other than an Object or null\");return r}if(\"RegExp\"!==s(t))throw TypeError(\"RegExp#exec called on incompatible receiver\");return Me.call(t,e)},en=[].push,nn=Math.min,rn=!o((function(){return!RegExp(4294967295,\"y\")}));Ge(\"split\",2,(function(t,e,n){var r;return r=\"c\"==\"abbc\".split(/(b)*/)[1]||4!=\"test\".split(/(?:)/,-1).length||2!=\"ab\".split(/(?:ab)*/).length||4!=\".\".split(/(.?)(.?)/).length||\".\".split(/()()/).length>1||\"\".split(/.?/).length?function(t,n){var r=String(p(this)),o=void 0===n?4294967295:n>>>0;if(0===o)return[];if(void 0===t)return[r];if(!Xe(t))return e.call(r,t,o);for(var i,u,a,c=[],l=(t.ignoreCase?\"i\":\"\")+(t.multiline?\"m\":\"\")+(t.unicode?\"u\":\"\")+(t.sticky?\"y\":\"\"),f=0,s=new RegExp(t.source,l+\"g\");(i=Me.call(s,r))&&!((u=s.lastIndex)>f&&(c.push(r.slice(f,i.index)),i.length>1&&i.index<r.length&&en.apply(c,i.slice(1)),a=i[0].length,f=u,c.length>=o));)s.lastIndex===i.index&&s.lastIndex++;return f===r.length?!a&&s.test(\"\")||c.push(\"\"):c.push(r.slice(f)),c.length>o?c.slice(0,o):c}:\"0\".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:e.call(this,t,n)}:e,[function(e,n){var o=p(this),i=null==e?void 0:e[t];return void 0!==i?i.call(e,o,n):r.call(String(o),e,n)},function(t,o){var i=n(r,t,this,o,r!==e);if(i.done)return i.value;var u=A(t),a=String(this),c=function(t,e){var n,r=A(t).constructor;return void 0===r||null==(n=A(r)[Ke])?e:Ve(n)}(u,RegExp),l=u.unicode,f=(u.ignoreCase?\"i\":\"\")+(u.multiline?\"m\":\"\")+(u.unicode?\"u\":\"\")+(rn?\"y\":\"g\"),s=new c(rn?u:\"^(?:\"+u.source+\")\",f),d=void 0===o?4294967295:o>>>0;if(0===d)return[];if(0===a.length)return null===tn(s,a)?[a]:[];for(var v=0,p=0,g=[];p<a.length;){s.lastIndex=rn?p:0;var h,y=tn(s,rn?a:a.slice(p));if(null===y||(h=nn(at(s.lastIndex+(rn?0:p)),a.length))===v)p=Ze(a,p,l);else{if(g.push(a.slice(v,p)),g.length===d)return g;for(var m=1;m<=y.length-1;m++)if(g.push(y[m]),g.length===d)return g;p=v=h}}return g.push(a.slice(v)),g}]}),!rn);var on=\"\\t\\n\\v\\f\\r                　\\u2028\\u2029\\ufeff\",un=\"[\"+on+\"]\",an=RegExp(\"^\"+un+un+\"*\"),cn=RegExp(un+un+\"*$\"),ln=function(t){return function(e){var n=String(p(e));return 1&t&&(n=n.replace(an,\"\")),2&t&&(n=n.replace(cn,\"\")),n}},fn={start:ln(1),end:ln(2),trim:ln(3)},sn=fn.trim;It({target:\"String\",proto:!0,forced:function(t){return o((function(){return!!on[t]()||\"​᠎\"!=\"​᠎\"[t]()||on[t].name!==t}))}(\"trim\")},{trim:function(){return sn(this)}});var dn=de(\"slice\"),vn=Mt(\"slice\",{ACCESSORS:!0,0:0,1:2}),pn=ne(\"species\"),gn=[].slice,hn=Math.max;It({target:\"Array\",proto:!0,forced:!dn||!vn},{slice:function(t,e){var n,r,o,i=g(this),u=at(i.length),a=ft(t,u),c=ft(void 0===e?u:e,u);if(qt(i)&&(\"function\"!=typeof(n=i.constructor)||n!==Array&&!qt(n.prototype)?h(n)&&null===(n=n[pn])&&(n=void 0):n=void 0,n===Array||void 0===n))return gn.call(i,a,c);for(r=new(void 0===n?Array:n)(hn(c-a,0)),o=0;a<c;a++,o++)a in i&&ie(r,o,i[a]);return r.length=o,r}});var yn=Object.keys||function(t){return pt(t,gt)},mn=o((function(){yn(1)}));It({target:\"Object\",stat:!0,forced:mn},{keys:function(t){return yn(Kt(t))}});var Sn,xn=function(t){if(Xe(t))throw TypeError(\"The method doesn't accept regular expressions\");return t},bn=ne(\"match\"),En=T.f,wn=\"\".startsWith,On=Math.min,Tn=function(t){var e=/./;try{\"/./\"[t](e)}catch(n){try{return e[bn]=!1,\"/./\"[t](e)}catch(t){}}return!1}(\"startsWith\"),An=!(Tn||(Sn=En(String.prototype,\"startsWith\"),!Sn||Sn.writable));function kn(t){return(kn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}It({target:\"String\",proto:!0,forced:!An&&!Tn},{startsWith:function(t){var e=String(p(this));xn(t);var n=at(On(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return wn?wn.call(e,r,n):e.slice(n,n+r.length)===r}});var Rn=function(t){return t instanceof Date},In=function(t){return\"function\"==typeof t},jn=function(t){return\"string\"==typeof t},Cn=function(t){return\"symbol\"===kn(t)},Ln=function(t){return\"boolean\"==typeof t},Pn=function(t){return\"number\"==typeof t},Mn=function(t){return null!==t&&\"object\"===kn(t)},_n=Object.prototype.toString,Dn=function(t){return _n.call(t)},Un=Object.prototype.hasOwnProperty,Nn=function(t,e){return Un.call(t,e)},Fn=Array.isArray,Wn=function(t){return\"[object Map]\"===Dn(t)},zn=function(t){return\"[object Set]\"===Dn(t)},$n=function(t){return Dn(t).slice(8,-1)},Bn=function(t){return $n(t).startsWith(\"HTML\")},Yn=function(t){return Mn(t)&&In(t.then)&&In(t.catch)},Gn=function(t){return null===t},Hn=function(t){return void 0===t},Xn=function(t){return!t&&0!==t&&\"\"!==t||Fn(t)&&!t.length||Mn(t)&&!Object.keys(t).length},Vn=function(){function t(){Wt(this,t)}return $t(t,null,[{key:\"isWindow\",value:function(t){return t===window}},{key:\"addEventListener\",value:function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t&&e&&n&&t.addEventListener(e,n,r)}},{key:\"removeEventListener\",value:function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t&&e&&n&&t.removeEventListener(e,n,r)}},{key:\"triggerDragEvent\",value:function(e,n){var r=!1,o=function(t){var e;null===(e=n.drag)||void 0===e||e.call(n,t)},i=function e(i){var u;t.removeEventListener(document,\"mousemove\",o),t.removeEventListener(document,\"mouseup\",e),document.onselectstart=null,document.ondragstart=null,r=!1,null===(u=n.end)||void 0===u||u.call(n,i)};t.addEventListener(e,\"mousedown\",(function(e){var u;r||(document.onselectstart=function(){return!1},document.ondragstart=function(){return!1},t.addEventListener(document,\"mousemove\",o),t.addEventListener(document,\"mouseup\",i),r=!0,null===(u=n.start)||void 0===u||u.call(n,e))}))}},{key:\"getBoundingClientRect\",value:function(t){return t&&Mn(t)&&1===t.nodeType?t.getBoundingClientRect():null}},{key:\"hasClass\",value:function(t,e){return!!(t&&Mn(t)&&jn(e)&&1===t.nodeType)&&t.classList.contains(e.trim())}},{key:\"addClass\",value:function(e,n){if(e&&Mn(e)&&jn(n)&&1===e.nodeType&&(n=n.trim(),!t.hasClass(e,n))){var r=e.className;e.className=r?r+\" \"+n:n}}},{key:\"removeClass\",value:function(t,e){if(t&&Mn(t)&&jn(e)&&1===t.nodeType&&\"string\"==typeof t.className){e=e.trim();for(var n=t.className.trim().split(\" \"),r=n.length-1;r>=0;r--)n[r]=n[r].trim(),n[r]&&n[r]!==e||n.splice(r,1);t.className=n.join(\" \")}}},{key:\"toggleClass\",value:function(t,e,n){t&&Mn(t)&&jn(e)&&1===t.nodeType&&t.classList.toggle(e,n)}},{key:\"replaceClass\",value:function(e,n,r){e&&Mn(e)&&jn(n)&&jn(r)&&1===e.nodeType&&(n=n.trim(),r=r.trim(),t.removeClass(e,n),t.addClass(e,r))}},{key:\"getScrollTop\",value:function(t){var e=\"scrollTop\"in t?t.scrollTop:t.pageYOffset;return Math.max(e,0)}},{key:\"setScrollTop\",value:function(t,e){\"scrollTop\"in t?t.scrollTop=e:t.scrollTo(t.scrollX,e)}},{key:\"getRootScrollTop\",value:function(){return window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0}},{key:\"setRootScrollTop\",value:function(e){t.setScrollTop(window,e),t.setScrollTop(document.body,e)}},{key:\"getElementTop\",value:function(e,n){if(t.isWindow(e))return 0;var r=n?t.getScrollTop(n):t.getRootScrollTop();return e.getBoundingClientRect().top+r}},{key:\"getVisibleHeight\",value:function(e){return t.isWindow(e)?e.innerHeight:e.getBoundingClientRect().height}},{key:\"isHidden\",value:function(t){if(!t)return!1;var e=window.getComputedStyle(t),n=\"none\"===e.display,r=null===t.offsetParent&&\"fixed\"!==e.position;return n||r}},{key:\"triggerEvent\",value:function(t,e){if(\"createEvent\"in document){var n=document.createEvent(\"HTMLEvents\");n.initEvent(e,!1,!0),t.dispatchEvent(n)}}},{key:\"calcAngle\",value:function(t,e){var n=t.getBoundingClientRect(),r=n.left+n.width/2,o=n.top+n.height/2,i=Math.abs(r-e.clientX),u=Math.abs(o-e.clientY),a=u/Math.sqrt(Math.pow(i,2)+Math.pow(u,2)),c=Math.acos(a),l=Math.floor(180/(Math.PI/c));return e.clientX>r&&e.clientY>o&&(l=180-l),e.clientX==r&&e.clientY>o&&(l=180),e.clientX>r&&e.clientY==o&&(l=90),e.clientX<r&&e.clientY>o&&(l=180+l),e.clientX<r&&e.clientY==o&&(l=270),e.clientX<r&&e.clientY<o&&(l=360-l),l}},{key:\"querySelector\",value:function(t,e){return e?e.querySelector(t):document.querySelector(t)}},{key:\"createElement\",value:function(t){for(var e=document.createElement(t),n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];for(var i=0;i<r.length;i++)r[i]&&e.classList.add(r[i]);return e}},{key:\"appendChild\",value:function(t){for(var e=0;e<(arguments.length<=1?0:arguments.length-1);e++)t.appendChild(e+1<1||arguments.length<=e+1?void 0:arguments[e+1])}},{key:\"getWindow\",value:function(t){if(\"[object Window]\"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}},{key:\"isElement\",value:function(t){return t instanceof this.getWindow(t).Element||t instanceof Element}},{key:\"isHTMLElement\",value:function(t){return t instanceof this.getWindow(t).HTMLElement||t instanceof HTMLElement}},{key:\"isShadowRoot\",value:function(t){return\"undefined\"!=typeof ShadowRoot&&(t instanceof this.getWindow(t).ShadowRoot||t instanceof ShadowRoot)}},{key:\"getWindowScroll\",value:function(t){var e=this.getWindow(t);return{scrollLeft:e.pageXOffset||0,scrollTop:e.pageYOffset||0}}}]),t}(),Kn=Math.floor,qn=\"\".replace,Qn=/\\$([$&'`]|\\d\\d?|<[^>]*>)/g,Jn=/\\$([$&'`]|\\d\\d?)/g,Zn=function(t,e,n,r,o,i){var u=n+t.length,a=r.length,c=Jn;return void 0!==o&&(o=Kt(o),c=Qn),qn.call(i,c,(function(i,c){var l;switch(c.charAt(0)){case\"$\":return\"$\";case\"&\":return t;case\"`\":return e.slice(0,n);case\"'\":return e.slice(u);case\"<\":l=o[c.slice(1,-1)];break;default:var f=+c;if(0===f)return i;if(f>a){var s=Kn(f/10);return 0===s?i:s<=a?void 0===r[s-1]?c.charAt(1):r[s-1]+c.charAt(1):i}l=r[f-1]}return void 0===l?\"\":l}))},tr=Math.max,er=Math.min;Ge(\"replace\",2,(function(t,e,n,r){var o=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,i=r.REPLACE_KEEPS_$0,u=o?\"$\":\"$0\";return[function(n,r){var o=p(this),i=null==n?void 0:n[t];return void 0!==i?i.call(n,o,r):e.call(String(o),n,r)},function(t,r){if(!o&&i||\"string\"==typeof r&&-1===r.indexOf(u)){var a=n(e,t,this,r);if(a.done)return a.value}var c=A(t),l=String(this),f=\"function\"==typeof r;f||(r=String(r));var s=c.global;if(s){var d=c.unicode;c.lastIndex=0}for(var v=[];;){var p=tn(c,l);if(null===p)break;if(v.push(p),!s)break;\"\"===String(p[0])&&(c.lastIndex=Ze(l,at(c.lastIndex),d))}for(var g,h=\"\",y=0,m=0;m<v.length;m++){p=v[m];for(var S=String(p[0]),x=tr(er(it(p.index),l.length),0),b=[],E=1;E<p.length;E++)b.push(void 0===(g=p[E])?g:String(g));var w=p.groups;if(f){var O=[S].concat(b,x,l);void 0!==w&&O.push(w);var T=String(r.apply(void 0,O))}else T=Zn(S,l,x,b,w,r);x>=y&&(h+=l.slice(y,x)+T,y=x+S.length)}return h+l.slice(y)}]}));var nr=function(){function t(){Wt(this,t)}return $t(t,null,[{key:\"camelize\",value:function(t){return t.replace(/-(\\w)/g,(function(t,e){return e?e.toUpperCase():\"\"}))}},{key:\"capitalize\",value:function(t){return t.charAt(0).toUpperCase()+t.slice(1)}}]),t}(),rr=function(){function t(){Wt(this,t)}return $t(t,null,[{key:\"_clone\",value:function(){}}]),t}(),or=ne(\"isConcatSpreadable\"),ir=fe>=51||!o((function(){var t=[];return t[or]=!1,t.concat()[0]!==t})),ur=de(\"concat\"),ar=function(t){if(!h(t))return!1;var e=t[or];return void 0!==e?!!e:qt(t)};It({target:\"Array\",proto:!0,forced:!ir||!ur},{concat:function(t){var e,n,r,o,i,u=Kt(this),a=oe(u,0),c=0;for(e=-1,r=arguments.length;e<r;e++)if(ar(i=-1===e?u:arguments[e])){if(c+(o=at(i.length))>9007199254740991)throw TypeError(\"Maximum allowed index exceeded\");for(n=0;n<o;n++,c++)n in i&&ie(a,c,i[n])}else{if(c>=9007199254740991)throw TypeError(\"Maximum allowed index exceeded\");ie(a,c++,i)}return a.length=c,a}});var cr,lr=function(t,e,n){if(Ve(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}},fr=[].push,sr=function(t){var e=1==t,n=2==t,r=3==t,o=4==t,i=6==t,u=7==t,a=5==t||i;return function(c,l,f,s){for(var d,p,g=Kt(c),h=v(g),y=lr(l,f,3),m=at(h.length),S=0,x=s||oe,b=e?x(c,m):n||u?x(c,0):void 0;m>S;S++)if((a||S in h)&&(p=y(d=h[S],S,g),t))if(e)b[S]=p;else if(p)switch(t){case 3:return!0;case 5:return d;case 6:return S;case 2:fr.call(b,d)}else switch(t){case 4:return!1;case 7:fr.call(b,d)}return i?-1:r||o?o:b}},dr={forEach:sr(0),map:sr(1),filter:sr(2),some:sr(3),every:sr(4),find:sr(5),findIndex:sr(6),filterOut:sr(7)},vr=i?Object.defineProperties:function(t,e){A(t);for(var n,r=yn(e),o=r.length,i=0;o>i;)R.f(t,n=r[i++],e[n]);return t},pr=nt(\"document\",\"documentElement\"),gr=Y(\"IE_PROTO\"),hr=function(){},yr=function(t){return\"<script>\"+t+\"<\\/script>\"},mr=function(){try{cr=document.domain&&new ActiveXObject(\"htmlfile\")}catch(t){}var t,e;mr=cr?function(t){t.write(yr(\"\")),t.close();var e=t.parentWindow.Object;return t=null,e}(cr):((e=E(\"iframe\")).style.display=\"none\",pr.appendChild(e),e.src=String(\"javascript:\"),(t=e.contentWindow.document).open(),t.write(yr(\"document.F=Object\")),t.close(),t.F);for(var n=gt.length;n--;)delete mr.prototype[gt[n]];return mr()};G[gr]=!0;var Sr=Object.create||function(t,e){var n;return null!==t?(hr.prototype=A(t),n=new hr,hr.prototype=null,n[gr]=t):n=mr(),void 0===e?n:vr(n,e)},xr=ne(\"unscopables\"),br=Array.prototype;null==br[xr]&&R.f(br,xr,{configurable:!0,value:Sr(null)});var Er=function(t){br[xr][t]=!0},wr=dr.find,Or=!0,Tr=Mt(\"find\");\"find\"in[]&&Array(1).find((function(){Or=!1})),It({target:\"Array\",proto:!0,forced:Or||!Tr},{find:function(t){return wr(this,t,arguments.length>1?arguments[1]:void 0)}}),Er(\"find\");var Ar=dr.findIndex,kr=!0,Rr=Mt(\"findIndex\");\"findIndex\"in[]&&Array(1).findIndex((function(){kr=!1})),It({target:\"Array\",proto:!0,forced:kr||!Rr},{findIndex:function(t){return Ar(this,t,arguments.length>1?arguments[1]:void 0)}}),Er(\"findIndex\");var Ir=function(t,e,n,r,o,i,u,a){for(var c,l=o,f=0,s=!!u&&lr(u,a,3);f<r;){if(f in n){if(c=s?s(n[f],f,e):n[f],i>0&&qt(c))l=Ir(t,e,c,at(c.length),l,i-1)-1;else{if(l>=9007199254740991)throw TypeError(\"Exceed the acceptable array length\");t[l]=c}l++}f++}return l},jr=Ir;It({target:\"Array\",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=Kt(this),n=at(e.length),r=oe(e,0);return r.length=jr(r,e,e,n,0,void 0===t?1:it(t)),r}});var Cr=function(t){var e=t.return;if(void 0!==e)return A(e.call(t)).value},Lr=function(t,e,n,r){try{return r?e(A(n)[0],n[1]):e(n)}catch(e){throw Cr(t),e}},Pr={},Mr=ne(\"iterator\"),_r=Array.prototype,Dr=function(t){return void 0!==t&&(Pr.Array===t||_r[Mr]===t)},Ur=ne(\"iterator\"),Nr=function(t){if(null!=t)return t[Ur]||t[\"@@iterator\"]||Pr[be(t)]},Fr=ne(\"iterator\"),Wr=!1;try{var zr=0,$r={next:function(){return{done:!!zr++}},return:function(){Wr=!0}};$r[Fr]=function(){return this},Array.from($r,(function(){throw 2}))}catch(t){}var Br=function(t,e){if(!e&&!Wr)return!1;var n=!1;try{var r={};r[Fr]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(t){}return n},Yr=!Br((function(t){Array.from(t)}));It({target:\"Array\",stat:!0,forced:Yr},{from:function(t){var e,n,r,o,i,u,a=Kt(t),c=\"function\"==typeof this?this:Array,l=arguments.length,f=l>1?arguments[1]:void 0,s=void 0!==f,d=Nr(a),v=0;if(s&&(f=lr(f,l>2?arguments[2]:void 0,2)),null==d||c==Array&&Dr(d))for(n=new c(e=at(a.length));e>v;v++)u=s?f(a[v],v):a[v],ie(n,v,u);else for(i=(o=d.call(a)).next,n=new c;!(r=i.call(o)).done;v++)u=s?Lr(o,f,[r.value,v],!0):r.value,ie(n,v,u);return n.length=v,n}});var Gr=function(t){return function(e,n,r,o){Ve(n);var i=Kt(e),u=v(i),a=at(i.length),c=t?a-1:0,l=t?-1:1;if(r<2)for(;;){if(c in u){o=u[c],c+=l;break}if(c+=l,t?c<0:a<=c)throw TypeError(\"Reduce of empty array with no initial value\")}for(;t?c>=0:a>c;c+=l)c in u&&(o=n(o,u[c],c,i));return o}},Hr={left:Gr(!1),right:Gr(!0)},Xr=\"process\"==s(r.process),Vr=Hr.left,Kr=jt(\"reduce\"),qr=Mt(\"reduce\",{1:0});It({target:\"Array\",proto:!0,forced:!Kr||!qr||!Xr&&fe>79&&fe<83},{reduce:function(t){return Vr(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}}),Er(\"flat\");var Qr,Jr,Zr,to=!o((function(){return Object.isExtensible(Object.preventExtensions({}))})),eo=e((function(t){var e=R.f,n=$(\"meta\"),r=0,o=Object.isExtensible||function(){return!0},i=function(t){e(t,n,{value:{objectID:\"O\"+ ++r,weakData:{}}})},u=t.exports={REQUIRED:!1,fastKey:function(t,e){if(!h(t))return\"symbol\"==typeof t?t:(\"string\"==typeof t?\"S\":\"P\")+t;if(!S(t,n)){if(!o(t))return\"F\";if(!e)return\"E\";i(t)}return t[n].objectID},getWeakData:function(t,e){if(!S(t,n)){if(!o(t))return!0;if(!e)return!1;i(t)}return t[n].weakData},onFreeze:function(t){return to&&u.REQUIRED&&o(t)&&!S(t,n)&&i(t),t}};G[n]=!0})),no=function(t,e){this.stopped=t,this.result=e},ro=function(t,e,n){var r,o,i,u,a,c,l,f=n&&n.that,s=!(!n||!n.AS_ENTRIES),d=!(!n||!n.IS_ITERATOR),v=!(!n||!n.INTERRUPTED),p=lr(e,f,1+s+v),g=function(t){return r&&Cr(r),new no(!0,t)},h=function(t){return s?(A(t),v?p(t[0],t[1],g):p(t[0],t[1])):v?p(t,g):p(t)};if(d)r=t;else{if(\"function\"!=typeof(o=Nr(t)))throw TypeError(\"Target is not iterable\");if(Dr(o)){for(i=0,u=at(t.length);u>i;i++)if((a=h(t[i]))&&a instanceof no)return a;return new no(!1)}r=o.call(t)}for(c=r.next;!(l=c.call(r)).done;){try{a=h(l.value)}catch(t){throw Cr(r),t}if(\"object\"==typeof a&&a&&a instanceof no)return a}return new no(!1)},oo=function(t,e,n){if(!(t instanceof e))throw TypeError(\"Incorrect \"+(n?n+\" \":\"\")+\"invocation\");return t},io=R.f,uo=ne(\"toStringTag\"),ao=function(t,e,n){t&&!S(t=n?t:t.prototype,uo)&&io(t,uo,{configurable:!0,value:e})},co=Object.setPrototypeOf||(\"__proto__\"in{}?function(){var t,e=!1,n={};try{(t=Object.getOwnPropertyDescriptor(Object.prototype,\"__proto__\").set).call(n,[]),e=n instanceof Array}catch(t){}return function(n,r){return A(n),function(t){if(!h(t)&&null!==t)throw TypeError(\"Can't set \"+String(t)+\" as a prototype\")}(r),e?t.call(n,r):n.__proto__=r,n}}():void 0),lo=function(t,e,n){for(var r in e)Z(t,r,e[r],n);return t},fo=!o((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),so=Y(\"IE_PROTO\"),vo=Object.prototype,po=fo?Object.getPrototypeOf:function(t){return t=Kt(t),S(t,so)?t[so]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?vo:null},go=ne(\"iterator\"),ho=!1;[].keys&&(\"next\"in(Zr=[].keys())?(Jr=po(po(Zr)))!==Object.prototype&&(Qr=Jr):ho=!0),(null==Qr||o((function(){var t={};return Qr[go].call(t)!==t})))&&(Qr={}),S(Qr,go)||I(Qr,go,(function(){return this}));var yo={IteratorPrototype:Qr,BUGGY_SAFARI_ITERATORS:ho},mo=yo.IteratorPrototype,So=function(){return this},xo=yo.IteratorPrototype,bo=yo.BUGGY_SAFARI_ITERATORS,Eo=ne(\"iterator\"),wo=function(){return this},Oo=function(t,e,n,r,o,i,u){!function(t,e,n){var r=e+\" Iterator\";t.prototype=Sr(mo,{next:l(1,n)}),ao(t,r,!1),Pr[r]=So}(n,e,r);var a,c,f,s=function(t){if(t===o&&h)return h;if(!bo&&t in p)return p[t];switch(t){case\"keys\":case\"values\":case\"entries\":return function(){return new n(this,t)}}return function(){return new n(this)}},d=e+\" Iterator\",v=!1,p=t.prototype,g=p[Eo]||p[\"@@iterator\"]||o&&p[o],h=!bo&&g||s(o),y=\"Array\"==e&&p.entries||g;if(y&&(a=po(y.call(new t)),xo!==Object.prototype&&a.next&&(po(a)!==xo&&(co?co(a,xo):\"function\"!=typeof a[Eo]&&I(a,Eo,wo)),ao(a,d,!0))),\"values\"==o&&g&&\"values\"!==g.name&&(v=!0,h=function(){return g.call(this)}),p[Eo]!==h&&I(p,Eo,h),Pr[e]=h,o)if(c={values:s(\"values\"),keys:i?h:s(\"keys\"),entries:s(\"entries\")},u)for(f in c)(bo||v||!(f in p))&&Z(p,f,c[f]);else It({target:e,proto:!0,forced:bo||v},c);return c},To=ne(\"species\"),Ao=R.f,ko=eo.fastKey,Ro=J.set,Io=J.getterFor;!function(t,e,n){var i=-1!==t.indexOf(\"Map\"),u=-1!==t.indexOf(\"Weak\"),a=i?\"set\":\"add\",c=r[t],l=c&&c.prototype,f=c,s={},d=function(t){var e=l[t];Z(l,t,\"add\"==t?function(t){return e.call(this,0===t?0:t),this}:\"delete\"==t?function(t){return!(u&&!h(t))&&e.call(this,0===t?0:t)}:\"get\"==t?function(t){return u&&!h(t)?void 0:e.call(this,0===t?0:t)}:\"has\"==t?function(t){return!(u&&!h(t))&&e.call(this,0===t?0:t)}:function(t,n){return e.call(this,0===t?0:t,n),this})};if(kt(t,\"function\"!=typeof c||!(u||l.forEach&&!o((function(){(new c).entries().next()})))))f=n.getConstructor(e,t,i,a),eo.REQUIRED=!0;else if(kt(t,!0)){var v=new f,p=v[a](u?{}:-0,1)!=v,g=o((function(){v.has(1)})),y=Br((function(t){new c(t)})),m=!u&&o((function(){for(var t=new c,e=5;e--;)t[a](e,e);return!t.has(-0)}));y||((f=e((function(e,n){oo(e,f,t);var r=function(t,e,n){var r,o;return co&&\"function\"==typeof(r=e.constructor)&&r!==n&&h(o=r.prototype)&&o!==n.prototype&&co(t,o),t}(new c,e,f);return null!=n&&ro(n,r[a],{that:r,AS_ENTRIES:i}),r}))).prototype=l,l.constructor=f),(g||m)&&(d(\"delete\"),d(\"has\"),i&&d(\"get\")),(m||p)&&d(a),u&&l.clear&&delete l.clear}s[t]=f,It({global:!0,forced:f!=c},s),ao(f,t),u||n.setStrong(f,t,i)}(\"Set\",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),{getConstructor:function(t,e,n,r){var o=t((function(t,u){oo(t,o,e),Ro(t,{type:e,index:Sr(null),first:void 0,last:void 0,size:0}),i||(t.size=0),null!=u&&ro(u,t[r],{that:t,AS_ENTRIES:n})})),u=Io(e),a=function(t,e,n){var r,o,a=u(t),l=c(t,e);return l?l.value=n:(a.last=l={index:o=ko(e,!0),key:e,value:n,previous:r=a.last,next:void 0,removed:!1},a.first||(a.first=l),r&&(r.next=l),i?a.size++:t.size++,\"F\"!==o&&(a.index[o]=l)),t},c=function(t,e){var n,r=u(t),o=ko(e);if(\"F\"!==o)return r.index[o];for(n=r.first;n;n=n.next)if(n.key==e)return n};return lo(o.prototype,{clear:function(){for(var t=u(this),e=t.index,n=t.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete e[n.index],n=n.next;t.first=t.last=void 0,i?t.size=0:this.size=0},delete:function(t){var e=this,n=u(e),r=c(e,t);if(r){var o=r.next,a=r.previous;delete n.index[r.index],r.removed=!0,a&&(a.next=o),o&&(o.previous=a),n.first==r&&(n.first=o),n.last==r&&(n.last=a),i?n.size--:e.size--}return!!r},forEach:function(t){for(var e,n=u(this),r=lr(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.next:n.first;)for(r(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!c(this,t)}}),lo(o.prototype,n?{get:function(t){var e=c(this,t);return e&&e.value},set:function(t,e){return a(this,0===t?0:t,e)}}:{add:function(t){return a(this,t=0===t?0:t,t)}}),i&&Ao(o.prototype,\"size\",{get:function(){return u(this).size}}),o},setStrong:function(t,e,n){var r=e+\" Iterator\",o=Io(e),u=Io(r);Oo(t,e,(function(t,e){Ro(this,{type:r,target:t,state:o(t),kind:e,last:void 0})}),(function(){for(var t=u(this),e=t.kind,n=t.last;n&&n.removed;)n=n.previous;return t.target&&(t.last=n=n?n.next:t.state.first)?\"keys\"==e?{value:n.key,done:!1}:\"values\"==e?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),n?\"entries\":\"values\",!n,!0),function(t){var e=nt(t),n=R.f;i&&e&&!e[To]&&n(e,To,{configurable:!0,get:function(){return this}})}(e)}});var jo=Qe.charAt,Co=J.set,Lo=J.getterFor(\"String Iterator\");Oo(String,\"String\",(function(t){Co(this,{type:\"String Iterator\",string:String(t),index:0})}),(function(){var t,e=Lo(this),n=e.string,r=e.index;return r>=n.length?{value:void 0,done:!0}:(t=jo(n,r),e.index+=t.length,{value:t,done:!1})}));var Po={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Mo=J.set,_o=J.getterFor(\"Array Iterator\"),Do=Oo(Array,\"Array\",(function(t,e){Mo(this,{type:\"Array Iterator\",target:g(t),index:0,kind:e})}),(function(){var t=_o(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):\"keys\"==n?{value:r,done:!1}:\"values\"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),\"values\");Pr.Arguments=Pr.Array,Er(\"keys\"),Er(\"values\"),Er(\"entries\");var Uo=ne(\"iterator\"),No=ne(\"toStringTag\"),Fo=Do.values;for(var Wo in Po){var zo=r[Wo],$o=zo&&zo.prototype;if($o){if($o[Uo]!==Fo)try{I($o,Uo,Fo)}catch(t){$o[Uo]=Fo}if($o[No]||I($o,No,Wo),Po[Wo])for(var Bo in Do)if($o[Bo]!==Do[Bo])try{I($o,Bo,Do[Bo])}catch(t){$o[Bo]=Do[Bo]}}}var Yo=function(){function t(){Wt(this,t)}return $t(t,null,[{key:\"deduplicate\",value:function(t){return Array.from(new Set(t))}},{key:\"flat\",value:function(e){return e.reduce((function(e,n){var r=Array.isArray(n)?t.flat(n):n;return e.concat(r)}),[])}},{key:\"find\",value:function(t,e){return t.find(e)}},{key:\"findIndex\",value:function(t,e){return t.findIndex(e)}}]),t}(),Go=function(){function t(){Wt(this,t)}return $t(t,null,[{key:\"today\",value:function(){return new Date}}]),t}(),Ho=function(){},Xo=function(t){return t},Vo=function(){function t(){Wt(this,t)}return $t(t,null,[{key:\"range\",value:function(t,e,n){return Math.min(Math.max(t,e),n)}},{key:\"clamp\",value:function(t,e,n){return e<n?t<e?e:t>n?n:t:t<n?n:t>e?e:t}}]),t}();export{Yo as ArrayUtils,Bt as BrowserUtils,Vn as DOMUtils,Go as DateUtils,Vo as NumberUtils,rr as ObjectUtils,nr as StringUtils,Nn as hasOwn,Xo as identity,Fn as isArray,Ln as isBool,Rn as isDate,Hn as isDef,Xn as isEmpty,In as isFunction,Bn as isHTMLElement,Wn as isMap,Gn as isNull,Pn as isNumber,Mn as isObject,Yn as isPromise,zn as isSet,jn as isString,Cn as isSymbol,Ho as noop,_n as objectToString,$n as toRawType,Dn as toTypeString};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal =\n  typeof global == 'object' && global && global.Object === Object && global\n\nexport default freeGlobal\n","import freeGlobal from './_freeGlobal.js'\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')()\n\nexport default root\n","import root from './_root.js'\n\n/** Built-in value references. */\nvar Symbol = root.Symbol\n\nexport default Symbol\n","import Symbol from './_Symbol.js'\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n    tag = value[symToStringTag]\n\n  try {\n    value[symToStringTag] = undefined\n    var unmasked = true\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value)\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag\n    } else {\n      delete value[symToStringTag]\n    }\n  }\n  return result\n}\n\nexport default getRawTag\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value)\n}\n\nexport default objectToString\n","import Symbol from './_Symbol.js'\nimport getRawTag from './_getRawTag.js'\nimport objectToString from './_objectToString.js'\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n  undefinedTag = '[object Undefined]'\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag\n  }\n  return symToStringTag && symToStringTag in Object(value)\n    ? getRawTag(value)\n    : objectToString(value)\n}\n\nexport default baseGetTag\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object'\n}\n\nexport default isObjectLike\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray\n\nexport default isArray\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value\n  return value != null && (type == 'object' || type == 'function')\n}\n\nexport default isObject\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value\n}\n\nexport default identity\n","import baseGetTag from './_baseGetTag.js'\nimport isObject from './isObject.js'\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n  funcTag = '[object Function]',\n  genTag = '[object GeneratorFunction]',\n  proxyTag = '[object Proxy]'\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value)\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag\n}\n\nexport default isFunction\n","import root from './_root.js'\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__']\n\nexport default coreJsData\n","import coreJsData from './_coreJsData.js'\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function () {\n  var uid = /[^.]+$/.exec(\n    (coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO) || ''\n  )\n  return uid ? 'Symbol(src)_1.' + uid : ''\n})()\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && maskSrcKey in func\n}\n\nexport default isMasked\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func)\n    } catch (e) {}\n    try {\n      return func + ''\n    } catch (e) {}\n  }\n  return ''\n}\n\nexport default toSource\n","import isFunction from './isFunction.js'\nimport isMasked from './_isMasked.js'\nimport isObject from './isObject.js'\nimport toSource from './_toSource.js'\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n  objectProto = Object.prototype\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp(\n  '^' +\n    funcToString\n      .call(hasOwnProperty)\n      .replace(reRegExpChar, '\\\\$&')\n      .replace(\n        /hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\n        '$1.*?'\n      ) +\n    '$'\n)\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor\n  return pattern.test(toSource(value))\n}\n\nexport default baseIsNative\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key]\n}\n\nexport default getValue\n","import baseIsNative from './_baseIsNative.js'\nimport getValue from './_getValue.js'\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key)\n  return baseIsNative(value) ? value : undefined\n}\n\nexport default getNative\n","import isObject from './isObject.js'\n\n/** Built-in value references. */\nvar objectCreate = Object.create\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function () {\n  function object() {}\n  return function (proto) {\n    if (!isObject(proto)) {\n      return {}\n    }\n    if (objectCreate) {\n      return objectCreate(proto)\n    }\n    object.prototype = proto\n    var result = new object()\n    object.prototype = undefined\n    return result\n  }\n})()\n\nexport default baseCreate\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0:\n      return func.call(thisArg)\n    case 1:\n      return func.call(thisArg, args[0])\n    case 2:\n      return func.call(thisArg, args[0], args[1])\n    case 3:\n      return func.call(thisArg, args[0], args[1], args[2])\n  }\n  return func.apply(thisArg, args)\n}\n\nexport default apply\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n    length = source.length\n\n  array || (array = Array(length))\n  while (++index < length) {\n    array[index] = source[index]\n  }\n  return array\n}\n\nexport default copyArray\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n  HOT_SPAN = 16\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n    lastCalled = 0\n\n  return function () {\n    var stamp = nativeNow(),\n      remaining = HOT_SPAN - (stamp - lastCalled)\n\n    lastCalled = stamp\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0]\n      }\n    } else {\n      count = 0\n    }\n    return func.apply(undefined, arguments)\n  }\n}\n\nexport default shortOut\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function () {\n    return value\n  }\n}\n\nexport default constant\n","import getNative from './_getNative.js'\n\nvar defineProperty = (function () {\n  try {\n    var func = getNative(Object, 'defineProperty')\n    func({}, '', {})\n    return func\n  } catch (e) {}\n})()\n\nexport default defineProperty\n","import constant from './constant.js'\nimport defineProperty from './_defineProperty.js'\nimport identity from './identity.js'\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty\n  ? identity\n  : function (func, string) {\n      return defineProperty(func, 'toString', {\n        configurable: true,\n        enumerable: false,\n        value: constant(string),\n        writable: true,\n      })\n    }\n\nexport default baseSetToString\n","import baseSetToString from './_baseSetToString.js'\nimport shortOut from './_shortOut.js'\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString)\n\nexport default setToString\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value\n  length = length == null ? MAX_SAFE_INTEGER : length\n\n  return (\n    !!length &&\n    (type == 'number' || (type != 'symbol' && reIsUint.test(value))) &&\n    value > -1 &&\n    value % 1 == 0 &&\n    value < length\n  )\n}\n\nexport default isIndex\n","import defineProperty from './_defineProperty.js'\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      configurable: true,\n      enumerable: true,\n      value: value,\n      writable: true,\n    })\n  } else {\n    object[key] = value\n  }\n}\n\nexport default baseAssignValue\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other)\n}\n\nexport default eq\n","import baseAssignValue from './_baseAssignValue.js'\nimport eq from './eq.js'\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key]\n  if (\n    !(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n    (value === undefined && !(key in object))\n  ) {\n    baseAssignValue(object, key, value)\n  }\n}\n\nexport default assignValue\n","import assignValue from './_assignValue.js'\nimport baseAssignValue from './_baseAssignValue.js'\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object\n  object || (object = {})\n\n  var index = -1,\n    length = props.length\n\n  while (++index < length) {\n    var key = props[index]\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined\n\n    if (newValue === undefined) {\n      newValue = source[key]\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue)\n    } else {\n      assignValue(object, key, newValue)\n    }\n  }\n  return object\n}\n\nexport default copyObject\n","import apply from './_apply.js'\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? func.length - 1 : start, 0)\n  return function () {\n    var args = arguments,\n      index = -1,\n      length = nativeMax(args.length - start, 0),\n      array = Array(length)\n\n    while (++index < length) {\n      array[index] = args[start + index]\n    }\n    index = -1\n    var otherArgs = Array(start + 1)\n    while (++index < start) {\n      otherArgs[index] = args[index]\n    }\n    otherArgs[start] = transform(array)\n    return apply(func, this, otherArgs)\n  }\n}\n\nexport default overRest\n","import identity from './identity.js'\nimport overRest from './_overRest.js'\nimport setToString from './_setToString.js'\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '')\n}\n\nexport default baseRest\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return (\n    typeof value == 'number' &&\n    value > -1 &&\n    value % 1 == 0 &&\n    value <= MAX_SAFE_INTEGER\n  )\n}\n\nexport default isLength\n","import isFunction from './isFunction.js'\nimport isLength from './isLength.js'\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value)\n}\n\nexport default isArrayLike\n","import eq from './eq.js'\nimport isArrayLike from './isArrayLike.js'\nimport isIndex from './_isIndex.js'\nimport isObject from './isObject.js'\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false\n  }\n  var type = typeof index\n  if (\n    type == 'number'\n      ? isArrayLike(object) && isIndex(index, object.length)\n      : type == 'string' && index in object\n  ) {\n    return eq(object[index], value)\n  }\n  return false\n}\n\nexport default isIterateeCall\n","import baseRest from './_baseRest.js'\nimport isIterateeCall from './_isIterateeCall.js'\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function (object, sources) {\n    var index = -1,\n      length = sources.length,\n      customizer = length > 1 ? sources[length - 1] : undefined,\n      guard = length > 2 ? sources[2] : undefined\n\n    customizer =\n      assigner.length > 3 && typeof customizer == 'function'\n        ? (length--, customizer)\n        : undefined\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer\n      length = 1\n    }\n    object = Object(object)\n    while (++index < length) {\n      var source = sources[index]\n      if (source) {\n        assigner(object, source, index, customizer)\n      }\n    }\n    return object\n  })\n}\n\nexport default createAssigner\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n    proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto\n\n  return value === proto\n}\n\nexport default isPrototype\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n    result = Array(n)\n\n  while (++index < n) {\n    result[index] = iteratee(index)\n  }\n  return result\n}\n\nexport default baseTimes\n","import baseGetTag from './_baseGetTag.js'\nimport isObjectLike from './isObjectLike.js'\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]'\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag\n}\n\nexport default baseIsArguments\n","import baseIsArguments from './_baseIsArguments.js'\nimport isObjectLike from './isObjectLike.js'\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(\n  (function () {\n    return arguments\n  })()\n)\n  ? baseIsArguments\n  : function (value) {\n      return (\n        isObjectLike(value) &&\n        hasOwnProperty.call(value, 'callee') &&\n        !propertyIsEnumerable.call(value, 'callee')\n      )\n    }\n\nexport default isArguments\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false\n}\n\nexport default stubFalse\n","import root from './_root.js'\nimport stubFalse from './stubFalse.js'\n\n/** Detect free variable `exports`. */\nvar freeExports =\n  typeof exports == 'object' && exports && !exports.nodeType && exports\n\n/** Detect free variable `module`. */\nvar freeModule =\n  freeExports &&\n  typeof module == 'object' &&\n  module &&\n  !module.nodeType &&\n  module\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse\n\nexport default isBuffer\n","import baseGetTag from './_baseGetTag.js'\nimport isLength from './isLength.js'\nimport isObjectLike from './isObjectLike.js'\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n  arrayTag = '[object Array]',\n  boolTag = '[object Boolean]',\n  dateTag = '[object Date]',\n  errorTag = '[object Error]',\n  funcTag = '[object Function]',\n  mapTag = '[object Map]',\n  numberTag = '[object Number]',\n  objectTag = '[object Object]',\n  regexpTag = '[object RegExp]',\n  setTag = '[object Set]',\n  stringTag = '[object String]',\n  weakMapTag = '[object WeakMap]'\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n  dataViewTag = '[object DataView]',\n  float32Tag = '[object Float32Array]',\n  float64Tag = '[object Float64Array]',\n  int8Tag = '[object Int8Array]',\n  int16Tag = '[object Int16Array]',\n  int32Tag = '[object Int32Array]',\n  uint8Tag = '[object Uint8Array]',\n  uint8ClampedTag = '[object Uint8ClampedArray]',\n  uint16Tag = '[object Uint16Array]',\n  uint32Tag = '[object Uint32Array]'\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {}\ntypedArrayTags[float32Tag] =\n  typedArrayTags[float64Tag] =\n  typedArrayTags[int8Tag] =\n  typedArrayTags[int16Tag] =\n  typedArrayTags[int32Tag] =\n  typedArrayTags[uint8Tag] =\n  typedArrayTags[uint8ClampedTag] =\n  typedArrayTags[uint16Tag] =\n  typedArrayTags[uint32Tag] =\n    true\ntypedArrayTags[argsTag] =\n  typedArrayTags[arrayTag] =\n  typedArrayTags[arrayBufferTag] =\n  typedArrayTags[boolTag] =\n  typedArrayTags[dataViewTag] =\n  typedArrayTags[dateTag] =\n  typedArrayTags[errorTag] =\n  typedArrayTags[funcTag] =\n  typedArrayTags[mapTag] =\n  typedArrayTags[numberTag] =\n  typedArrayTags[objectTag] =\n  typedArrayTags[regexpTag] =\n  typedArrayTags[setTag] =\n  typedArrayTags[stringTag] =\n  typedArrayTags[weakMapTag] =\n    false\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return (\n    isObjectLike(value) &&\n    isLength(value.length) &&\n    !!typedArrayTags[baseGetTag(value)]\n  )\n}\n\nexport default baseIsTypedArray\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function (value) {\n    return func(value)\n  }\n}\n\nexport default baseUnary\n","import freeGlobal from './_freeGlobal.js'\n\n/** Detect free variable `exports`. */\nvar freeExports =\n  typeof exports == 'object' && exports && !exports.nodeType && exports\n\n/** Detect free variable `module`. */\nvar freeModule =\n  freeExports &&\n  typeof module == 'object' &&\n  module &&\n  !module.nodeType &&\n  module\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function () {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types =\n      freeModule && freeModule.require && freeModule.require('util').types\n\n    if (types) {\n      return types\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util')\n  } catch (e) {}\n})()\n\nexport default nodeUtil\n","import baseIsTypedArray from './_baseIsTypedArray.js'\nimport baseUnary from './_baseUnary.js'\nimport nodeUtil from './_nodeUtil.js'\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray\n  ? baseUnary(nodeIsTypedArray)\n  : baseIsTypedArray\n\nexport default isTypedArray\n","import baseTimes from './_baseTimes.js'\nimport isArguments from './isArguments.js'\nimport isArray from './isArray.js'\nimport isBuffer from './isBuffer.js'\nimport isIndex from './_isIndex.js'\nimport isTypedArray from './isTypedArray.js'\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n    isArg = !isArr && isArguments(value),\n    isBuff = !isArr && !isArg && isBuffer(value),\n    isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n    skipIndexes = isArr || isArg || isBuff || isType,\n    result = skipIndexes ? baseTimes(value.length, String) : [],\n    length = result.length\n\n  for (var key in value) {\n    if (\n      (inherited || hasOwnProperty.call(value, key)) &&\n      !(\n        skipIndexes &&\n        // Safari 9 has enumerable `arguments.length` in strict mode.\n        (key == 'length' ||\n          // Node.js 0.10 has enumerable non-index properties on buffers.\n          (isBuff && (key == 'offset' || key == 'parent')) ||\n          // PhantomJS 2 has enumerable non-index properties on typed arrays.\n          (isType &&\n            (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n          // Skip index properties.\n          isIndex(key, length))\n      )\n    ) {\n      result.push(key)\n    }\n  }\n  return result\n}\n\nexport default arrayLikeKeys\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function (arg) {\n    return func(transform(arg))\n  }\n}\n\nexport default overArg\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = []\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key)\n    }\n  }\n  return result\n}\n\nexport default nativeKeysIn\n","import isObject from './isObject.js'\nimport isPrototype from './_isPrototype.js'\nimport nativeKeysIn from './_nativeKeysIn.js'\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object)\n  }\n  var isProto = isPrototype(object),\n    result = []\n\n  for (var key in object) {\n    if (\n      !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))\n    ) {\n      result.push(key)\n    }\n  }\n  return result\n}\n\nexport default baseKeysIn\n","import arrayLikeKeys from './_arrayLikeKeys.js'\nimport baseKeysIn from './_baseKeysIn.js'\nimport isArrayLike from './isArrayLike.js'\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object)\n}\n\nexport default keysIn\n","import getNative from './_getNative.js'\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create')\n\nexport default nativeCreate\n","import nativeCreate from './_nativeCreate.js'\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {}\n  this.size = 0\n}\n\nexport default hashClear\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key]\n  this.size -= result ? 1 : 0\n  return result\n}\n\nexport default hashDelete\n","import nativeCreate from './_nativeCreate.js'\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__'\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__\n  if (nativeCreate) {\n    var result = data[key]\n    return result === HASH_UNDEFINED ? undefined : result\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined\n}\n\nexport default hashGet\n","import nativeCreate from './_nativeCreate.js'\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key)\n}\n\nexport default hashHas\n","import nativeCreate from './_nativeCreate.js'\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__'\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__\n  this.size += this.has(key) ? 0 : 1\n  data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value\n  return this\n}\n\nexport default hashSet\n","import hashClear from './_hashClear.js'\nimport hashDelete from './_hashDelete.js'\nimport hashGet from './_hashGet.js'\nimport hashHas from './_hashHas.js'\nimport hashSet from './_hashSet.js'\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n    length = entries == null ? 0 : entries.length\n\n  this.clear()\n  while (++index < length) {\n    var entry = entries[index]\n    this.set(entry[0], entry[1])\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear\nHash.prototype['delete'] = hashDelete\nHash.prototype.get = hashGet\nHash.prototype.has = hashHas\nHash.prototype.set = hashSet\n\nexport default Hash\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = []\n  this.size = 0\n}\n\nexport default listCacheClear\n","import eq from './eq.js'\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length\n    }\n  }\n  return -1\n}\n\nexport default assocIndexOf\n","import assocIndexOf from './_assocIndexOf.js'\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype\n\n/** Built-in value references. */\nvar splice = arrayProto.splice\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n    index = assocIndexOf(data, key)\n\n  if (index < 0) {\n    return false\n  }\n  var lastIndex = data.length - 1\n  if (index == lastIndex) {\n    data.pop()\n  } else {\n    splice.call(data, index, 1)\n  }\n  --this.size\n  return true\n}\n\nexport default listCacheDelete\n","import assocIndexOf from './_assocIndexOf.js'\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n    index = assocIndexOf(data, key)\n\n  return index < 0 ? undefined : data[index][1]\n}\n\nexport default listCacheGet\n","import assocIndexOf from './_assocIndexOf.js'\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1\n}\n\nexport default listCacheHas\n","import assocIndexOf from './_assocIndexOf.js'\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n    index = assocIndexOf(data, key)\n\n  if (index < 0) {\n    ++this.size\n    data.push([key, value])\n  } else {\n    data[index][1] = value\n  }\n  return this\n}\n\nexport default listCacheSet\n","import listCacheClear from './_listCacheClear.js'\nimport listCacheDelete from './_listCacheDelete.js'\nimport listCacheGet from './_listCacheGet.js'\nimport listCacheHas from './_listCacheHas.js'\nimport listCacheSet from './_listCacheSet.js'\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n    length = entries == null ? 0 : entries.length\n\n  this.clear()\n  while (++index < length) {\n    var entry = entries[index]\n    this.set(entry[0], entry[1])\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear\nListCache.prototype['delete'] = listCacheDelete\nListCache.prototype.get = listCacheGet\nListCache.prototype.has = listCacheHas\nListCache.prototype.set = listCacheSet\n\nexport default ListCache\n","import getNative from './_getNative.js'\nimport root from './_root.js'\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map')\n\nexport default Map\n","import Hash from './_Hash.js'\nimport ListCache from './_ListCache.js'\nimport Map from './_Map.js'\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0\n  this.__data__ = {\n    hash: new Hash(),\n    map: new (Map || ListCache)(),\n    string: new Hash(),\n  }\n}\n\nexport default mapCacheClear\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value\n  return type == 'string' ||\n    type == 'number' ||\n    type == 'symbol' ||\n    type == 'boolean'\n    ? value !== '__proto__'\n    : value === null\n}\n\nexport default isKeyable\n","import isKeyable from './_isKeyable.js'\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map\n}\n\nexport default getMapData\n","import getMapData from './_getMapData.js'\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key)\n  this.size -= result ? 1 : 0\n  return result\n}\n\nexport default mapCacheDelete\n","import getMapData from './_getMapData.js'\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key)\n}\n\nexport default mapCacheGet\n","import getMapData from './_getMapData.js'\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key)\n}\n\nexport default mapCacheHas\n","import getMapData from './_getMapData.js'\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n    size = data.size\n\n  data.set(key, value)\n  this.size += data.size == size ? 0 : 1\n  return this\n}\n\nexport default mapCacheSet\n","import mapCacheClear from './_mapCacheClear.js'\nimport mapCacheDelete from './_mapCacheDelete.js'\nimport mapCacheGet from './_mapCacheGet.js'\nimport mapCacheHas from './_mapCacheHas.js'\nimport mapCacheSet from './_mapCacheSet.js'\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n    length = entries == null ? 0 : entries.length\n\n  this.clear()\n  while (++index < length) {\n    var entry = entries[index]\n    this.set(entry[0], entry[1])\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear\nMapCache.prototype['delete'] = mapCacheDelete\nMapCache.prototype.get = mapCacheGet\nMapCache.prototype.has = mapCacheHas\nMapCache.prototype.set = mapCacheSet\n\nexport default MapCache\n","import overArg from './_overArg.js'\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object)\n\nexport default getPrototype\n","import baseGetTag from './_baseGetTag.js'\nimport getPrototype from './_getPrototype.js'\nimport isObjectLike from './isObjectLike.js'\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]'\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n  objectProto = Object.prototype\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object)\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false\n  }\n  var proto = getPrototype(value)\n  if (proto === null) {\n    return true\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor\n  return (\n    typeof Ctor == 'function' &&\n    Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString\n  )\n}\n\nexport default isPlainObject\n","import ListCache from './_ListCache.js'\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache()\n  this.size = 0\n}\n\nexport default stackClear\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n    result = data['delete'](key)\n\n  this.size = data.size\n  return result\n}\n\nexport default stackDelete\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key)\n}\n\nexport default stackGet\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key)\n}\n\nexport default stackHas\n","import ListCache from './_ListCache.js'\nimport Map from './_Map.js'\nimport MapCache from './_MapCache.js'\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__\n  if (data instanceof ListCache) {\n    var pairs = data.__data__\n    if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n      pairs.push([key, value])\n      this.size = ++data.size\n      return this\n    }\n    data = this.__data__ = new MapCache(pairs)\n  }\n  data.set(key, value)\n  this.size = data.size\n  return this\n}\n\nexport default stackSet\n","import ListCache from './_ListCache.js'\nimport stackClear from './_stackClear.js'\nimport stackDelete from './_stackDelete.js'\nimport stackGet from './_stackGet.js'\nimport stackHas from './_stackHas.js'\nimport stackSet from './_stackSet.js'\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = (this.__data__ = new ListCache(entries))\n  this.size = data.size\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear\nStack.prototype['delete'] = stackDelete\nStack.prototype.get = stackGet\nStack.prototype.has = stackHas\nStack.prototype.set = stackSet\n\nexport default Stack\n","import root from './_root.js'\n\n/** Detect free variable `exports`. */\nvar freeExports =\n  typeof exports == 'object' && exports && !exports.nodeType && exports\n\n/** Detect free variable `module`. */\nvar freeModule =\n  freeExports &&\n  typeof module == 'object' &&\n  module &&\n  !module.nodeType &&\n  module\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n  allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice()\n  }\n  var length = buffer.length,\n    result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length)\n\n  buffer.copy(result)\n  return result\n}\n\nexport default cloneBuffer\n","import root from './_root.js'\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array\n\nexport default Uint8Array\n","import Uint8Array from './_Uint8Array.js'\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength)\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer))\n  return result\n}\n\nexport default cloneArrayBuffer\n","import cloneArrayBuffer from './_cloneArrayBuffer.js'\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer\n  return new typedArray.constructor(\n    buffer,\n    typedArray.byteOffset,\n    typedArray.length\n  )\n}\n\nexport default cloneTypedArray\n","import baseCreate from './_baseCreate.js'\nimport getPrototype from './_getPrototype.js'\nimport isPrototype from './_isPrototype.js'\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return typeof object.constructor == 'function' && !isPrototype(object)\n    ? baseCreate(getPrototype(object))\n    : {}\n}\n\nexport default initCloneObject\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function (object, iteratee, keysFunc) {\n    var index = -1,\n      iterable = Object(object),\n      props = keysFunc(object),\n      length = props.length\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index]\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break\n      }\n    }\n    return object\n  }\n}\n\nexport default createBaseFor\n","import createBaseFor from './_createBaseFor.js'\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor()\n\nexport default baseFor\n","import baseAssignValue from './_baseAssignValue.js'\nimport eq from './eq.js'\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if (\n    (value !== undefined && !eq(object[key], value)) ||\n    (value === undefined && !(key in object))\n  ) {\n    baseAssignValue(object, key, value)\n  }\n}\n\nexport default assignMergeValue\n","import isArrayLike from './isArrayLike.js'\nimport isObjectLike from './isObjectLike.js'\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value)\n}\n\nexport default isArrayLikeObject\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return\n  }\n\n  if (key == '__proto__') {\n    return\n  }\n\n  return object[key]\n}\n\nexport default safeGet\n","import copyObject from './_copyObject.js'\nimport keysIn from './keysIn.js'\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value))\n}\n\nexport default toPlainObject\n","import assignMergeValue from './_assignMergeValue.js'\nimport cloneBuffer from './_cloneBuffer.js'\nimport cloneTypedArray from './_cloneTypedArray.js'\nimport copyArray from './_copyArray.js'\nimport initCloneObject from './_initCloneObject.js'\nimport isArguments from './isArguments.js'\nimport isArray from './isArray.js'\nimport isArrayLikeObject from './isArrayLikeObject.js'\nimport isBuffer from './isBuffer.js'\nimport isFunction from './isFunction.js'\nimport isObject from './isObject.js'\nimport isPlainObject from './isPlainObject.js'\nimport isTypedArray from './isTypedArray.js'\nimport safeGet from './_safeGet.js'\nimport toPlainObject from './toPlainObject.js'\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(\n  object,\n  source,\n  key,\n  srcIndex,\n  mergeFunc,\n  customizer,\n  stack\n) {\n  var objValue = safeGet(object, key),\n    srcValue = safeGet(source, key),\n    stacked = stack.get(srcValue)\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked)\n    return\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, key + '', object, source, stack)\n    : undefined\n\n  var isCommon = newValue === undefined\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n      isBuff = !isArr && isBuffer(srcValue),\n      isTyped = !isArr && !isBuff && isTypedArray(srcValue)\n\n    newValue = srcValue\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue\n      } else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue)\n      } else if (isBuff) {\n        isCommon = false\n        newValue = cloneBuffer(srcValue, true)\n      } else if (isTyped) {\n        isCommon = false\n        newValue = cloneTypedArray(srcValue, true)\n      } else {\n        newValue = []\n      }\n    } else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue)\n      } else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue)\n      }\n    } else {\n      isCommon = false\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue)\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack)\n    stack['delete'](srcValue)\n  }\n  assignMergeValue(object, key, newValue)\n}\n\nexport default baseMergeDeep\n","import Stack from './_Stack.js'\nimport assignMergeValue from './_assignMergeValue.js'\nimport baseFor from './_baseFor.js'\nimport baseMergeDeep from './_baseMergeDeep.js'\nimport isObject from './isObject.js'\nimport keysIn from './keysIn.js'\nimport safeGet from './_safeGet.js'\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return\n  }\n  baseFor(\n    source,\n    function (srcValue, key) {\n      stack || (stack = new Stack())\n      if (isObject(srcValue)) {\n        baseMergeDeep(\n          object,\n          source,\n          key,\n          srcIndex,\n          baseMerge,\n          customizer,\n          stack\n        )\n      } else {\n        var newValue = customizer\n          ? customizer(\n              safeGet(object, key),\n              srcValue,\n              key + '',\n              object,\n              source,\n              stack\n            )\n          : undefined\n\n        if (newValue === undefined) {\n          newValue = srcValue\n        }\n        assignMergeValue(object, key, newValue)\n      }\n    },\n    keysIn\n  )\n}\n\nexport default baseMerge\n","import baseMerge from './_baseMerge.js'\nimport createAssigner from './_createAssigner.js'\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function (object, source, srcIndex) {\n  baseMerge(object, source, srcIndex)\n})\n\nexport default merge\n","<template>\n  <div :class=\"['vc-alpha-slider', 'transparent', { 'small-slider': size === 'small' }]\">\n    <div\n      ref=\"barElement\"\n      class=\"vc-alpha-slider__bar\"\n      :style=\"getBackgroundStyle\"\n      @click=\"onClickSider\"\n    >\n      <div\n        :class=\"['vc-alpha-slider__bar-pointer', { 'small-bar': size === 'small' }]\"\n        ref=\"cursorElement\"\n        :style=\"getCursorStyle\"\n      >\n        <div class=\"vc-alpha-slider__bar-handle\"></div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\n  import { computed, defineComponent, onMounted, reactive, ref, watch } from 'vue';\n  import propTypes from 'vue-types';\n  import { Color, rgbaColor } from '../utils/color';\n  import { DOMUtils } from '@aesoper/normal-utils';\n  import type { DragEventOptions } from '@aesoper/normal-utils';\n\n  import { merge } from 'lodash-es';\n\n  export default defineComponent({\n    name: 'Alpha',\n    props: {\n      color: propTypes.instanceOf(Color),\n      size: propTypes.oneOf(['small', 'default']).def('default'),\n    },\n    emits: ['change'],\n    setup(props, { emit }) {\n      const barElement = ref<any | null>(null);\n      const cursorElement = ref<any | null>(null);\n\n      let color = props.color || new Color();\n\n      const state = reactive({\n        red: color.red,\n        green: color.green,\n        blue: color.blue,\n        alpha: color.alpha,\n      });\n\n      watch(\n        () => props.color,\n        (value) => {\n          if (value) {\n            color = value;\n            merge(state, {\n              red: value.red,\n              green: value.green,\n              blue: value.blue,\n              alpha: value.alpha,\n            });\n          }\n        },\n        { deep: true },\n      );\n\n      const getBackgroundStyle = computed(() => {\n        const startColor = rgbaColor(state.red, state.green, state.blue, 0);\n        const endColor = rgbaColor(state.red, state.green, state.blue, 100);\n        return {\n          background: `linear-gradient(to right, ${startColor} , ${endColor})`,\n        };\n      });\n\n      const getCursorLeft = () => {\n        if (barElement.value && cursorElement.value) {\n          const alpha = state.alpha / 100;\n          const rect = barElement.value.getBoundingClientRect();\n          const offsetWidth = cursorElement.value.offsetWidth;\n\n          return Math.round(alpha * (rect.width - offsetWidth) + offsetWidth / 2);\n        }\n\n        return 0;\n      };\n\n      const getCursorStyle = computed(() => {\n        const left = getCursorLeft();\n        return {\n          left: left + 'px',\n          top: 0,\n        };\n      });\n\n      const onClickSider = (event: Event) => {\n        const target = event.target;\n\n        if (target !== barElement.value) {\n          onMoveBar(event as MouseEvent);\n        }\n      };\n\n      const onMoveBar = (event: MouseEvent) => {\n        event.stopPropagation();\n        if (barElement.value && cursorElement.value) {\n          const rect = barElement.value.getBoundingClientRect();\n\n          const offsetWidth = cursorElement.value.offsetWidth;\n\n          let left = event.clientX - rect.left;\n          left = Math.max(offsetWidth / 2, left);\n          left = Math.min(left, rect.width - offsetWidth / 2);\n\n          const alpha = Math.round(((left - offsetWidth / 2) / (rect.width - offsetWidth)) * 100);\n          color.alpha = alpha;\n          state.alpha = alpha;\n          emit('change', alpha);\n        }\n      };\n\n      onMounted(() => {\n        const dragConfig: DragEventOptions = {\n          drag: (event: Event) => {\n            onMoveBar(event as MouseEvent);\n          },\n          end: (event: Event) => {\n            onMoveBar(event as MouseEvent);\n          },\n        };\n\n        if (barElement.value && cursorElement.value) {\n          DOMUtils.triggerDragEvent(barElement.value, dragConfig);\n        }\n      });\n\n      return { barElement, cursorElement, getCursorStyle, getBackgroundStyle, onClickSider };\n    },\n  });\n</script>\n\n<style lang=\"scss\">\n  .vc-alpha-slider {\n    position: relative;\n    margin-bottom: 15px;\n    width: 100%;\n    height: 14px;\n    box-shadow: 2px 0 8px rgba(0, 0, 0, 0.08);\n    border-radius: 15px;\n\n    &.is-vertical {\n      width: 14px;\n      height: 100%;\n      display: inline-block;\n      transform: rotate(180deg);\n    }\n\n    &.transparent {\n      background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);\n      background-repeat: repeat;\n    }\n\n    &__bar {\n      position: relative;\n      width: 100%;\n      height: 100%;\n      border-radius: 15px;\n\n      &-pointer {\n        position: absolute;\n        width: 14px;\n        height: 14px;\n      }\n\n      &-handle {\n        width: 14px;\n        height: 14px;\n        border-radius: 6px;\n        transform: translate(-7px, -2px);\n        background-color: #f8f8f8;\n        margin-top: 2px;\n        box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n        cursor: pointer;\n\n        &.vertical {\n          transform: translate(0, -7px);\n          margin-top: 0;\n        }\n      }\n    }\n\n    &.small-slider {\n      height: 10px !important;\n\n      .small-bar {\n        height: 10px !important;\n        width: 10px !important;\n\n        div {\n          width: 12px !important;\n          height: 12px !important;\n          border-radius: 5px !important;\n          transform: translate(-6px, -2px);\n          margin-top: 1px !important;\n        }\n      }\n    }\n  }\n</style>\n","<template>\n  <div class=\"vc-compact\">\n    <template v-for=\"(v, i) in palettes\" :key=\"i\">\n      <div class=\"vc-compact__row\">\n        <template v-for=\"(v1, k) in v\" :key=\"k\">\n          <div\n            class=\"vc-compact__color-cube--wrap\"\n            @click=\"onColorChange(v1)\"\n            @mouseenter=\"onColorPre(v1)\"\n            @mouseleave=\"onResetChange()\"\n          >\n            <div\n              :class=\"[\n                'vc-compact__color_cube',\n                {\n                  advance: v1 === 'advance',\n                  transparent: v1 === 'transparent',\n                },\n              ]\"\n              :style=\"computedBgStyle(v1)\"\n            ></div>\n          </div>\n        </template>\n      </div>\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\">\n  import { defineComponent, ref } from 'vue';\n  import tinycolor from 'tinycolor2';\n  import propTypes from 'vue-types';\n  import { Color } from '../utils/color';\n\n  const defaultColors: string[][] = [\n    // 第一行\n    [\n      '#fcc02e',\n      '#f67c01',\n      '#e64a19',\n      '#d81b43',\n      '#8e24aa',\n      '#512da7',\n      '#1f87e8',\n      '#008781',\n      '#05a045',\n    ],\n    // 第二行\n    [\n      '#fed835',\n      '#fb8c00',\n      '#f5511e',\n      '#eb1d4e',\n      '#9c28b1',\n      '#5d35b0',\n      '#2097f3',\n      '#029688',\n      '#4cb050',\n    ],\n    // 第三行\n    [\n      '#ffeb3c',\n      '#ffa727',\n      '#fe5722',\n      '#eb4165',\n      '#aa47bc',\n      '#673bb7',\n      '#42a5f6',\n      '#26a59a',\n      '#83c683',\n    ],\n    // 第四行\n    [\n      '#fff176',\n      '#ffb74e',\n      '#ff8a66',\n      '#f1627e',\n      '#b968c7',\n      '#7986cc',\n      '#64b5f6',\n      '#80cbc4',\n      '#a5d6a7',\n    ],\n    // 第五行\n    [\n      '#fff59c',\n      '#ffcc80',\n      '#ffab91',\n      '#fb879e',\n      '#cf93d9',\n      '#9ea8db',\n      '#90caf8',\n      '#b2dfdc',\n      '#c8e6ca',\n    ],\n    // 最后一行\n    [\n      'transparent',\n      '#ffffff',\n      '#dedede',\n      '#a9a9a9',\n      '#4b4b4b',\n      '#353535',\n      '#212121',\n      '#000000',\n      'advance',\n    ],\n  ];\n\n  export default defineComponent({\n    name: 'Palette',\n    emits: ['change'],\n    props: {\n      color: propTypes.instanceOf(Color),\n    },\n    setup(_props, { emit }) {\n      const computedBgStyle = (color: string) => {\n        if (color === 'transparent') {\n          return color;\n        }\n        if (color === 'advance') {\n          return {};\n        }\n        return { background: tinycolor(color).toRgbString() };\n      };\n\n      const cacheColor = ref(_props.color?.hex);\n\n      const onColorChange = (color: string) => {\n        if (color !== 'advance') {\n          emit('change', color, false);\n          cacheColor.value = color;\n        } else {\n          // chrome 面版\n          emit('change', color);\n        }\n      };\n\n      // 保存预览颜色\n      const onColorPre = (color: string) => {\n        console.log('onColorPure => %o', color);\n        if (color !== 'advance') {\n          emit('change', color, true);\n        }\n      };\n\n      const onResetChange = () => {\n        cacheColor.value && emit('change', cacheColor.value);\n      };\n\n      return {\n        palettes: defaultColors,\n        computedBgStyle,\n        onColorChange,\n        onColorPre,\n        onResetChange,\n      };\n    },\n  });\n</script>\n\n<style lang=\"scss\">\n  .vc-compact {\n    margin-bottom: 15px;\n    width: auto;\n    box-shadow: 3px 0 5px rgba(0, 0, 0, 0.08);\n    display: inline-block;\n\n    &__row {\n      position: relative;\n      width: 100%;\n      margin: 0;\n      height: 25px;\n\n      & > * {\n        display: inline-block;\n        vertical-align: middle;\n      }\n    }\n\n    &__color_cube {\n      width: 100%;\n      height: 100%;\n\n      &.transparent {\n        &::before {\n          content: '';\n          position: absolute;\n          top: 0;\n          left: 0;\n          width: 100%;\n          height: 100%;\n          background: white;\n        }\n\n        &::after {\n          content: '';\n          position: absolute;\n          top: 100%;\n          left: 0;\n          transform: rotate(-45deg);\n          transform-origin: 0 0;\n          width: 35px;\n          height: 1px;\n          background: red;\n        }\n      }\n\n      &.advance {\n        background: url(data:image/png;base64,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);\n      }\n\n      .alpha {\n        background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);\n        background-repeat: repeat;\n      }\n    }\n\n    &__color-cube--wrap {\n      position: relative;\n      width: 25px;\n      height: 25px;\n      cursor: pointer;\n      overflow: hidden;\n\n      &:hover {\n        transform: scale(1.2);\n        z-index: 299;\n        transition: transform 0.2s;\n      }\n    }\n  }\n</style>\n","<template>\n  <div\n    ref=\"boardElement\"\n    :class=\"['vc-saturation', { 'vc-saturation__chrome': round, 'vc-saturation__hidden': hide }]\"\n    :style=\"{ backgroundColor: state.hueColor }\"\n    @click=\"onClickBoard\"\n  >\n    <div class=\"vc-saturation__white\"></div>\n    <div class=\"vc-saturation__black\"></div>\n    <div class=\"vc-saturation__cursor\" ref=\"cursorElement\" :style=\"getCursorStyle\">\n      <div></div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\n  import {\n    computed,\n    defineComponent,\n    getCurrentInstance,\n    onMounted,\n    reactive,\n    ref,\n    watch,\n  } from 'vue';\n  import propTypes from 'vue-types';\n  import { clamp, Color } from '../utils/color';\n  import { whenever } from '@vueuse/core';\n  import { merge } from 'lodash-es';\n  import { DOMUtils } from '@aesoper/normal-utils';\n\n  export default defineComponent({\n    name: 'Board',\n    props: {\n      color: propTypes.instanceOf(Color),\n      round: propTypes.bool.def(false),\n      hide: propTypes.bool.def(true),\n    },\n    emits: ['change'],\n    setup(props, { emit }) {\n      const instance = getCurrentInstance();\n      const hueHsv = {\n        h: props.color?.hue || 0,\n        s: 1,\n        v: 1,\n      };\n\n      const hueColor = new Color(hueHsv).toHexString();\n\n      const state = reactive({\n        hueColor,\n        saturation: props.color?.saturation || 0,\n        brightness: props.color?.brightness || 0,\n      });\n\n      const cursorTop = ref(0);\n      const cursorLeft = ref(0);\n\n      const cursorElement = ref<HTMLElement | null>();\n      const boardElement = ref<HTMLElement | null>();\n\n      const getCursorStyle = computed(() => {\n        return {\n          top: cursorTop.value + 'px',\n          left: cursorLeft.value + 'px',\n        };\n      });\n\n      const updatePosition = () => {\n        if (instance) {\n          const el = instance.vnode.el;\n          cursorLeft.value = state.saturation * el?.clientWidth;\n          cursorTop.value = (1 - state.brightness) * el?.clientHeight;\n        }\n      };\n\n      const onClickBoard = (event: Event) => {\n        const target = event.target;\n\n        if (target !== boardElement.value) {\n          handleDrag(event as MouseEvent);\n        }\n      };\n\n      const handleDrag = (event: MouseEvent) => {\n        if (instance) {\n          const el = instance.vnode.el;\n          const rect = el?.getBoundingClientRect();\n\n          let left = event.clientX - rect.left;\n          let top = event.clientY - rect.top;\n\n          left = clamp(left, 0, rect.width);\n          top = clamp(top, 0, rect.height);\n\n          const saturation = left / rect.width;\n          const bright = clamp(-(top / rect.height) + 1, 0, 1);\n\n          cursorLeft.value = left;\n          cursorTop.value = top;\n\n          state.saturation = saturation;\n          state.brightness = bright;\n\n          emit('change', saturation, bright);\n        }\n      };\n\n      onMounted(() => {\n        if (instance && instance.vnode.el && cursorElement.value) {\n          DOMUtils.triggerDragEvent(cursorElement.value, {\n            drag: (event: Event) => {\n              handleDrag(event as MouseEvent);\n            },\n            end: (event) => {\n              handleDrag(event as MouseEvent);\n            },\n          });\n\n          updatePosition();\n        }\n      });\n\n      watch(\n        () => props.color,\n        (value) => {\n          if (value) {\n            merge(state, {\n              hueColor: new Color({ h: value.hue, s: 1, v: 1 }).toHexString(),\n              saturation: value.saturation,\n              brightness: value.brightness,\n            });\n            updatePosition();\n          }\n        },\n        { deep: true },\n      );\n\n      return { state, cursorElement, getCursorStyle, onClickBoard };\n    },\n  });\n</script>\n\n<style lang=\"scss\">\n  .vc-saturation {\n    position: relative;\n    margin-bottom: 15px;\n    width: 100%;\n    height: 125px;\n\n    &__chrome {\n      border-top-left-radius: 5px;\n      border-top-right-radius: 5px;\n      border-color: transparent;\n    }\n\n    &__hidden {\n      overflow: hidden;\n    }\n\n    &__white,\n    &__black {\n      position: absolute;\n      top: 0;\n      left: 0;\n      right: 0;\n      bottom: 0;\n    }\n\n    &__black {\n      background: linear-gradient(0deg, #000, transparent);\n    }\n\n    &__white {\n      background: linear-gradient(90deg, #fff, hsla(0, 0%, 100%, 0));\n    }\n\n    &__cursor {\n      position: absolute;\n\n      div {\n        transform: translate(-5px, -5px);\n        box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n        width: 10px;\n        height: 10px;\n        border: 1px solid white;\n        border-radius: 50%;\n        cursor: pointer;\n      }\n    }\n  }\n</style>\n","<template>\n  <div :class=\"['vc-hue-slider', { 'small-slider': size === 'small' }]\">\n    <div ref=\"barElement\" class=\"vc-hue-slider__bar\" @click=\"onClickSider\">\n      <div\n        :class=\"['vc-hue-slider__bar-pointer', { 'small-bar': size === 'small' }]\"\n        ref=\"cursorElement\"\n        :style=\"getCursorStyle\"\n      >\n        <div class=\"vc-hue-slider__bar-handle\"></div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\n  import { computed, defineComponent, onMounted, reactive, ref, watch } from 'vue';\n  import propTypes from 'vue-types';\n  import { Color } from '../utils/color';\n  import { tryOnMounted } from '@vueuse/core';\n  import { DOMUtils } from '@aesoper/normal-utils';\n  import type { DragEventOptions } from '@aesoper/normal-utils';\n  import { merge } from 'lodash-es';\n\n  export default defineComponent({\n    name: 'Hue',\n    props: {\n      color: propTypes.instanceOf(Color),\n      size: propTypes.oneOf(['small', 'default']).def('default'),\n    },\n    emits: ['change'],\n    setup(props, { emit }) {\n      const barElement = ref<any | null>(null);\n      const cursorElement = ref<any | null>(null);\n\n      let color = props.color || new Color();\n\n      const state = reactive({\n        hue: color.hue || 0,\n      });\n\n      watch(\n        () => props.color,\n        (value) => {\n          if (value) {\n            color = value;\n            merge(state, { hue: color.hue });\n          }\n        },\n        { deep: true },\n      );\n\n      const getCursorLeft = () => {\n        if (barElement.value && cursorElement.value) {\n          const rect = barElement.value.getBoundingClientRect();\n          const offsetWidth = cursorElement.value.offsetWidth;\n          if (state.hue === 360) {\n            return rect.width - offsetWidth / 2;\n          }\n          return ((state.hue % 360) * (rect.width - offsetWidth)) / 360 + offsetWidth / 2;\n        }\n\n        return 0;\n      };\n\n      const getCursorStyle = computed(() => {\n        const left = getCursorLeft();\n        return {\n          left: left + 'px',\n          top: 0,\n        };\n      });\n\n      const onClickSider = (event: Event) => {\n        const target = event.target;\n\n        if (target !== barElement.value) {\n          onMoveBar(event as MouseEvent);\n        }\n      };\n\n      const onMoveBar = (event: MouseEvent) => {\n        event.stopPropagation();\n        if (barElement.value && cursorElement.value) {\n          const rect = barElement.value.getBoundingClientRect();\n\n          const offsetWidth = cursorElement.value.offsetWidth;\n\n          let left = event.clientX - rect.left;\n          left = Math.min(left, rect.width - offsetWidth / 2);\n          left = Math.max(offsetWidth / 2, left);\n\n          const hue = Math.round(((left - offsetWidth / 2) / (rect.width - offsetWidth)) * 360);\n          color.hue = hue;\n          state.hue = hue;\n          emit('change', hue);\n        }\n      };\n\n      onMounted(() => {\n        const dragConfig: DragEventOptions = {\n          drag: (event: Event) => {\n            onMoveBar(event as MouseEvent);\n          },\n          end: (event: Event) => {\n            onMoveBar(event as MouseEvent);\n          },\n        };\n\n        if (barElement.value && cursorElement.value) {\n          DOMUtils.triggerDragEvent(barElement.value, dragConfig);\n        }\n      });\n\n      return { barElement, cursorElement, getCursorStyle, onClickSider };\n    },\n  });\n</script>\n\n<style lang=\"scss\">\n  .vc-hue-slider {\n    position: relative;\n    margin-bottom: 15px;\n    width: 100%;\n    height: 14px;\n    box-shadow: 2px 0 8px rgba(0, 0, 0, 0.08);\n    border-radius: 15px;\n\n    &.is-vertical {\n      width: 14px;\n      height: 100%;\n      display: inline-block;\n      transform: rotate(180deg);\n    }\n\n    &.transparent {\n      background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);\n      background-repeat: repeat;\n    }\n\n    &__bar {\n      position: relative;\n      width: 100%;\n      height: 100%;\n      border-radius: 15px;\n\n      background: -moz-linear-gradient(\n        left,\n        rgb(255, 0, 0) 0%,\n        rgb(255, 255, 0) 16.66%,\n        rgb(0, 255, 0) 33.33%,\n        rgb(0, 255, 255) 50%,\n        rgb(0, 0, 255) 66.66%,\n        rgb(255, 0, 255) 83.33%,\n        rgb(255, 0, 0) 100%\n      );\n      background: -ms-linear-gradient(\n        left,\n        rgb(255, 0, 0) 0%,\n        rgb(255, 255, 0) 16.66%,\n        rgb(0, 255, 0) 33.33%,\n        rgb(0, 255, 255) 50%,\n        rgb(0, 0, 255) 66.66%,\n        rgb(255, 0, 255) 83.33%,\n        rgb(255, 0, 0) 100%\n      );\n      background: -webkit-linear-gradient(\n        left,\n        rgb(255, 0, 0) 0%,\n        rgb(255, 255, 0) 16.66%,\n        rgb(0, 255, 0) 33.33%,\n        rgb(0, 255, 255) 50%,\n        rgb(0, 0, 255) 66.66%,\n        rgb(255, 0, 255) 83.33%,\n        rgb(255, 0, 0) 100%\n      );\n\n      &-pointer {\n        position: absolute;\n        width: 14px;\n        height: 14px;\n      }\n\n      &-handle {\n        width: 14px;\n        height: 14px;\n        border-radius: 6px;\n        transform: translate(-7px, -2px);\n        background-color: #f8f8f8;\n        margin-top: 2px;\n        box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n        cursor: pointer;\n\n        &.vertical {\n          transform: translate(0, -7px);\n          margin-top: 0;\n        }\n      }\n    }\n\n    &.small-slider {\n      height: 10px !important;\n\n      .small-bar {\n        height: 10px !important;\n        width: 10px !important;\n\n        div {\n          width: 12px !important;\n          height: 12px !important;\n          border-radius: 5px !important;\n          transform: translate(-6px, -2px);\n          margin-top: 1px !important;\n        }\n      }\n    }\n  }\n</style>\n","<template>\n  <div :class=\"['vc-lightness-slider', { 'small-slider': size === 'small' }]\">\n    <div\n      ref=\"barElement\"\n      class=\"vc-lightness-slider__bar\"\n      :style=\"getBackgroundStyle\"\n      @click=\"onClickSider\"\n    >\n      <div\n        :class=\"['vc-lightness-slider__bar-pointer', { 'small-bar': size === 'small' }]\"\n        ref=\"cursorElement\"\n        :style=\"getCursorStyle\"\n      >\n        <div class=\"vc-lightness-slider__bar-handle\"></div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\n  import { computed, defineComponent, onMounted, reactive, ref, watch } from 'vue';\n  import type { CSSProperties } from 'vue';\n  import propTypes from 'vue-types';\n  import { Color } from '../utils/color';\n  import { tryOnMounted } from '@vueuse/core';\n  import { DOMUtils } from '@aesoper/normal-utils';\n  import type { DragEventOptions } from '@aesoper/normal-utils';\n  import { merge } from 'lodash-es';\n  import tinycolor from 'tinycolor2';\n\n  export default defineComponent({\n    name: 'Lightness',\n    props: {\n      color: propTypes.instanceOf(Color),\n      size: propTypes.oneOf(['small', 'default']).def('default'),\n    },\n    emits: ['change'],\n    setup(props, { emit }) {\n      const barElement = ref<any | null>(null);\n      const cursorElement = ref<any | null>(null);\n\n      let color = props.color || new Color();\n      const [h, s, l] = color.HSL;\n\n      const state = reactive({\n        hue: h,\n        saturation: s,\n        lightness: l,\n      });\n\n      watch(\n        () => props.color,\n        (value) => {\n          if (value) {\n            color = value;\n            const [hue, saturation, lightness] = color.HSL;\n            merge(state, {\n              hue,\n              saturation,\n              lightness,\n            });\n          }\n        },\n        { deep: true },\n      );\n\n      const getBackgroundStyle = computed(() => {\n        const color1 = tinycolor({\n          h: state.hue,\n          s: state.saturation,\n          l: 0.8,\n        }).toPercentageRgbString();\n        const color2 = tinycolor({\n          h: state.hue,\n          s: state.saturation,\n          l: 0.6,\n        }).toPercentageRgbString();\n        const color3 = tinycolor({\n          h: state.hue,\n          s: state.saturation,\n          l: 0.4,\n        }).toPercentageRgbString();\n        const color4 = tinycolor({\n          h: state.hue,\n          s: state.saturation,\n          l: 0.2,\n        }).toPercentageRgbString();\n        return {\n          background: [\n            `-webkit-linear-gradient(left, rgb(255, 255, 255), ${color1}, ${color2}, ${color3}, ${color4}, rgb(0, 0, 0))`,\n            `-moz-linear-gradient(left, rgb(255, 255, 255), ${color1}, ${color2}, ${color3}, ${color4}, rgb(0, 0, 0))`,\n            `-ms-linear-gradient(left, rgb(255, 255, 255), ${color1}, ${color2}, ${color3}, ${color4}, rgb(0, 0, 0))`,\n          ],\n        } as any as CSSProperties;\n      });\n\n      const getCursorLeft = () => {\n        if (barElement.value && cursorElement.value) {\n          const lightness = state.lightness;\n          const rect = barElement.value.getBoundingClientRect();\n          const offsetWidth = cursorElement.value.offsetWidth;\n\n          return (1 - lightness) * (rect.width - offsetWidth) + offsetWidth / 2;\n        }\n\n        return 0;\n      };\n\n      const getCursorStyle = computed(() => {\n        const left = getCursorLeft();\n        return {\n          left: left + 'px',\n          top: 0,\n        };\n      });\n\n      const onClickSider = (event: Event) => {\n        const target = event.target;\n\n        if (target !== barElement.value) {\n          onMoveBar(event as MouseEvent);\n        }\n      };\n\n      const onMoveBar = (event: MouseEvent) => {\n        event.stopPropagation();\n        if (barElement.value && cursorElement.value) {\n          const rect = barElement.value.getBoundingClientRect();\n\n          const offsetWidth = cursorElement.value.offsetWidth;\n\n          let left = event.clientX - rect.left;\n          left = Math.max(offsetWidth / 2, left);\n          left = Math.min(left, rect.width - offsetWidth / 2);\n\n          const light = 1 - (left - offsetWidth / 2) / (rect.width - offsetWidth);\n          color.lightness = light;\n          emit('change', light);\n        }\n      };\n\n      onMounted(() => {\n        const dragConfig: DragEventOptions = {\n          drag: (event: Event) => {\n            onMoveBar(event as MouseEvent);\n          },\n          end: (event: Event) => {\n            onMoveBar(event as MouseEvent);\n          },\n        };\n\n        if (barElement.value && cursorElement.value) {\n          DOMUtils.triggerDragEvent(barElement.value, dragConfig);\n        }\n      });\n\n      return { barElement, cursorElement, getCursorStyle, getBackgroundStyle, onClickSider };\n    },\n  });\n</script>\n\n<style lang=\"scss\">\n  .vc-lightness-slider {\n    position: relative;\n    margin-bottom: 15px;\n    width: 100%;\n    height: 14px;\n    box-shadow: 2px 0 8px rgba(0, 0, 0, 0.08);\n    border-radius: 15px;\n\n    &.is-vertical {\n      width: 14px;\n      height: 100%;\n      display: inline-block;\n      transform: rotate(180deg);\n    }\n\n    &.transparent {\n      background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);\n      background-repeat: repeat;\n    }\n\n    &__bar {\n      position: relative;\n      width: 100%;\n      height: 100%;\n      border-radius: 15px;\n\n      &-pointer {\n        position: absolute;\n        width: 14px;\n        height: 14px;\n      }\n\n      &-handle {\n        width: 14px;\n        height: 14px;\n        border-radius: 6px;\n        transform: translate(-7px, -2px);\n        background-color: #f8f8f8;\n        margin-top: 2px;\n        box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n        cursor: pointer;\n\n        &.vertical {\n          transform: translate(0, -7px);\n          margin-top: 0;\n        }\n      }\n    }\n\n    &.small-slider {\n      height: 10px !important;\n\n      .small-bar {\n        height: 10px !important;\n        width: 10px !important;\n\n        div {\n          width: 12px !important;\n          height: 12px !important;\n          border-radius: 5px !important;\n          transform: translate(-6px, -2px);\n          margin-top: 1px !important;\n        }\n      }\n    }\n  }\n</style>\n","<template>\n  <div class=\"vc-colorPicker__record\" v-if=\"colors && colors.length > 0\">\n    <div class=\"color-list\">\n      <template v-for=\"(v, i) in colors\" :key=\"i\">\n        <div\n          :class=\"['color-item', 'transparent', { 'color-item__round': round }]\"\n          @click=\"onColorSelect(v)\"\n        >\n          <div class=\"color-item__display\" :style=\"{ backgroundColor: v }\"></div>\n        </div>\n      </template>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\n  import { defineComponent } from 'vue';\n  import propTypes from 'vue-types';\n\n  export default defineComponent({\n    name: 'History',\n    props: {\n      colors: propTypes.arrayOf(String).def(() => []),\n      round: propTypes.bool.def(false),\n    },\n    emits: ['change'],\n    setup(_props, { emit }) {\n      const onColorSelect = (v: string) => {\n        emit('change', v);\n      };\n      return { onColorSelect };\n    },\n  });\n</script>\n\n<style lang=\"scss\">\n  .vc-colorPicker__record {\n    display: flex;\n    align-items: center;\n    margin-top: 15px;\n\n    .text {\n      width: 48px;\n      margin-right: 10px;\n      text-align: right;\n      font-size: 12px;\n      color: #666;\n    }\n\n    .color-list {\n      width: auto;\n      display: flex;\n      position: relative;\n      margin: 0;\n\n      .color-item {\n        position: relative;\n        width: 24px;\n        height: 24px;\n        cursor: pointer;\n        overflow: hidden;\n        display: inline-block;\n        vertical-align: middle;\n        margin-right: 1px;\n        box-shadow: 3px 0 5px rgba(0, 0, 0, 0.08);\n\n        &__round {\n          border-radius: 50%;\n        }\n\n        &.transparent {\n          background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);\n          background-repeat: repeat;\n        }\n\n        &:hover {\n          transform: scale(1.2);\n          z-index: 299;\n          transition: transform 0.2s;\n        }\n\n        &__display {\n          width: 100%;\n          height: 100%;\n        }\n      }\n    }\n  }\n</style>\n","import { shallowRef, watchEffect, readonly, ref, unref, isVue3, watch, customRef, effectScope, provide, inject, getCurrentScope, onScopeDispose, 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);\n\nfunction createFilterWrapper(filter, fn) {\n  function wrapper(...args) {\n    filter(() => fn.apply(this, args), { fn, thisArg: this, args });\n  }\n  return wrapper;\n}\nconst bypassFilter = (invoke) => {\n  return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n  let timer;\n  let maxTimer;\n  const filter = (invoke) => {\n    const duration = unref(ms);\n    const maxDuration = unref(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 invoke();\n    }\n    if (maxDuration && !maxTimer) {\n      maxTimer = setTimeout(() => {\n        if (timer)\n          clearTimeout(timer);\n        maxTimer = null;\n        invoke();\n      }, maxDuration);\n    }\n    timer = setTimeout(() => {\n      if (maxTimer)\n        clearTimeout(maxTimer);\n      maxTimer = null;\n      invoke();\n    }, duration);\n  };\n  return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true) {\n  let lastExec = 0;\n  let timer;\n  let isLeading = true;\n  const clear = () => {\n    if (timer) {\n      clearTimeout(timer);\n      timer = void 0;\n    }\n  };\n  const filter = (invoke) => {\n    const duration = unref(ms);\n    const elapsed = Date.now() - lastExec;\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      timer = setTimeout(() => {\n        lastExec = Date.now();\n        isLeading = true;\n        clear();\n        invoke();\n      }, duration);\n    }\n    if (!leading && !timer)\n      timer = setTimeout(() => isLeading = true, duration);\n    isLeading = false;\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, 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}\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 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    return {\n      off: () => off(fn)\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    provide(key, composable(...args));\n  };\n  const useInjectedState = () => inject(key);\n  return [useProvidingState, useInjectedState];\n}\n\nfunction tryOnScopeDispose(fn) {\n  if (getCurrentScope()) {\n    onScopeDispose(fn);\n    return true;\n  }\n  return false;\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  __onlyVue3();\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\nfunction logicAnd(...args) {\n  return computed(() => args.every((i) => unref(i)));\n}\n\nfunction logicNot(v) {\n  return computed(() => !unref(v));\n}\n\nfunction logicOr(...args) {\n  return computed(() => args.some((i) => unref(i)));\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) {\n  return function(...args) {\n    return computed(() => fn.apply(this, args.map((i) => unref(i))));\n  };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n  let keys = [];\n  if (Array.isArray(optionsOrKeys)) {\n    keys = optionsOrKeys;\n  } else {\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)) : 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    }, unref(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  if (ms <= 0)\n    return value;\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 = true, leading = true) {\n  return createFilterWrapper(throttleFilter(ms, trailing, leading), 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 resolveUnref(r) {\n  return typeof r === \"function\" ? r() : unref(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  const {\n    flush = \"sync\",\n    deep = false,\n    immediate = true,\n    direction = \"both\"\n  } = options;\n  let stop1, stop2;\n  if (direction === \"both\" || direction === \"ltr\") {\n    stop1 = watch(left, (newValue) => right.value = newValue, { flush, deep, immediate });\n  }\n  if (direction === \"both\" || direction === \"rtl\") {\n    stop2 = watch(right, (newValue) => left.value = newValue, { flush, deep, immediate });\n  }\n  return () => {\n    stop1 == null ? void 0 : stop1();\n    stop2 == null ? void 0 : stop2();\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 until(r) {\n  let 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(() => unref(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(() => unref(r)).finally(() => {\n        stop == null ? void 0 : stop();\n        return unref(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(unref(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(unref(r))) {\n    const instance = {\n      toMatch,\n      toContains,\n      changed,\n      changedTimes,\n      get not() {\n        isNot = !isNot;\n        return this;\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        isNot = !isNot;\n        return this;\n      }\n    };\n    return instance;\n  }\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 = 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|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nconst formatDate = (date, formatStr) => {\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 matches = {\n    YY: String(years).slice(-2),\n    YYYY: years,\n    M: month + 1,\n    MM: `${month + 1}`.padStart(2, \"0\"),\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  };\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\") {\n  return computed(() => formatDate(normalizeDate(unref(date)), unref(formatStr)));\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    if (unref(interval) <= 0)\n      return;\n    isActive.value = true;\n    if (immediateCallback)\n      cb();\n    clean();\n    timer = setInterval(cb, unref(interval));\n  }\n  if (immediate && isClient)\n    resume();\n  if (isRef(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  } = options;\n  const counter = ref(0);\n  const controls = useIntervalFn(() => counter.value += 1, interval, { immediate });\n  if (exposeControls) {\n    return __spreadValues$6({\n      counter\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    }, unref(interval));\n  }\n  if (immediate) {\n    isPending.value = true;\n    if (isClient)\n      start();\n  }\n  tryOnScopeDispose(stop);\n  return {\n    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  } = options;\n  const controls = useTimeoutFn(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 useToggle(initialValue = false, options = {}) {\n  const {\n    truthyValue = true,\n    falsyValue = false\n  } = options;\n  const valueIsRef = isRef(initialValue);\n  const innerValue = ref(initialValue);\n  function toggle(value) {\n    if (arguments.length) {\n      innerValue.value = value;\n      return innerValue.value;\n    } else {\n      innerValue.value = innerValue.value === unref(truthyValue) ? unref(falsyValue) : unref(truthyValue);\n      return innerValue.value;\n    }\n  }\n  if (valueIsRef)\n    return toggle;\n  else\n    return [innerValue, 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 >= unref(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 { __onlyVue3, logicAnd as and, 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, identity, watchIgnorable as ignorableWatch, increaseWithUnit, invoke, isBoolean, isClient, isDef, isDefined, isFunction, isIOS, isNumber, isObject, isString, isWindow, logicAnd, logicNot, logicOr, makeDestructurable, noop, normalizeDate, logicNot as not, now, objectPick, logicOr as or, 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, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToggle, watchArray, watchAtMost, watchDebounced, watchIgnorable, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import { noop, isClient, isString, tryOnScopeDispose, tryOnMounted, promiseTimeout, tryOnBeforeMount, increaseWithUnit, clamp, useTimeoutFn, pausableWatch, createEventHook, isFunction, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, createSingletonPromise, toRefs, containsProp, until, isDef, throttleFilter, useDebounceFn, useThrottleFn, isObject, isNumber, useIntervalFn, syncRef, objectPick, tryOnUnmounted, isIOS, watchWithFilter, identity } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, watchEffect, computed, inject, unref, watch, getCurrentInstance, customRef, onUpdated, reactive, shallowRef, onMounted, markRaw, getCurrentScope, readonly, nextTick, isVue2, set, del, 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    onError = noop\n  } = options;\n  const started = ref(!lazy);\n  const current = 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 = unref(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 event;\n  let listener;\n  let options;\n  if (isString(args[0])) {\n    [event, listener, options] = args;\n    target = defaultWindow;\n  } else {\n    [target, event, listener, options] = args;\n  }\n  if (!target)\n    return noop;\n  let cleanup = noop;\n  const stopWatch = watch(() => unrefElement(target), (el) => {\n    cleanup();\n    if (!el)\n      return;\n    el.addEventListener(event, listener, options);\n    cleanup = () => {\n      el.removeEventListener(event, listener, options);\n      cleanup = noop;\n    };\n  }, { immediate: true, flush: \"post\" });\n  const stop = () => {\n    stopWatch();\n    cleanup();\n  };\n  tryOnScopeDispose(stop);\n  return stop;\n}\n\nfunction onClickOutside(target, handler, options = {}) {\n  const { window = defaultWindow, ignore, capture = true, detectIframe = false } = options;\n  if (!window)\n    return;\n  const shouldListen = ref(true);\n  let fallback;\n  const listener = (event) => {\n    window.clearTimeout(fallback);\n    const el = unrefElement(target);\n    const composedPath = event.composedPath();\n    if (!el || el === event.target || composedPath.includes(el) || !shouldListen.value)\n      return;\n    if (ignore && ignore.length > 0) {\n      if (ignore.some((target2) => {\n        const el2 = unrefElement(target2);\n        return el2 && (event.target === el2 || composedPath.includes(el2));\n      }))\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      shouldListen.value = !!el && !e.composedPath().includes(el);\n    }, { passive: true }),\n    useEventListener(window, \"pointerup\", (e) => {\n      if (e.button === 0) {\n        const path = e.composedPath();\n        e.composedPath = () => path;\n        fallback = window.setTimeout(() => listener(e), 50);\n      }\n    }, { passive: true }),\n    detectIframe && useEventListener(window, \"blur\", (event) => {\n      var _a;\n      const el = unrefElement(target);\n      if (((_a = document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(document.activeElement)))\n        handler(event);\n    })\n  ].filter(Boolean);\n  const stop = () => cleanup.forEach((fn) => fn());\n  return stop;\n}\n\nvar __defProp$j = Object.defineProperty;\nvar __defProps$8 = Object.defineProperties;\nvar __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;\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};\nvar __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(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  else if (keyFilter)\n    return () => true;\n  else\n    return () => false;\n};\nfunction onKeyStroke(key, handler, options = {}) {\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$8(__spreadValues$j({}, options), { eventName: \"keydown\" }));\n}\nfunction onKeyPressed(key, handler, options = {}) {\n  return onKeyStroke(key, handler, __spreadProps$8(__spreadValues$j({}, options), { eventName: \"keypress\" }));\n}\nfunction onKeyUp(key, handler, options = {}) {\n  return onKeyStroke(key, handler, __spreadProps$8(__spreadValues$j({}, 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 = null;\n  function clear() {\n    if (timeout != null) {\n      clearTimeout(timeout);\n      timeout = null;\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  const { window = defaultWindow } = options;\n  const counter = ref(0);\n  if (window) {\n    useEventListener(window, \"blur\", () => counter.value += 1, true);\n    useEventListener(window, \"focus\", () => counter.value += 1, true);\n  }\n  return computed(() => {\n    counter.value;\n    return window == null ? void 0 : window.document.activeElement;\n  });\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    resetOnExecute = true,\n    shallow = true\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    } catch (e) {\n      error.value = e;\n      onError(e);\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 = unref(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))\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 useBattery({ navigator = defaultNavigator } = {}) {\n  const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n  const isSupported = 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) {\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 = navigator && \"bluetooth\" in navigator;\n  const device = ref(void 0);\n  const error = ref(null);\n  watch(device, () => {\n    connectToBluetoothGATTServer();\n  });\n  async function requestDevice() {\n    if (!isSupported)\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 = Boolean(window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n  let mediaQuery;\n  const matches = ref(false);\n  const update = () => {\n    if (!isSupported)\n      return;\n    if (!mediaQuery)\n      mediaQuery = window.matchMedia(query);\n    matches.value = mediaQuery.matches;\n  };\n  tryOnBeforeMount(() => {\n    update();\n    if (!mediaQuery)\n      return;\n    if (\"addEventListener\" in mediaQuery)\n      mediaQuery.addEventListener(\"change\", update);\n    else\n      mediaQuery.addListener(update);\n    tryOnScopeDispose(() => {\n      if (\"removeEventListener\" in mediaQuery)\n        mediaQuery.removeEventListener(\"change\", update);\n      else\n        mediaQuery.removeListener(update);\n    });\n  });\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};\n\nvar __defProp$i = Object.defineProperty;\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};\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 greater = (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: () => greater(k),\n      enumerable: true,\n      configurable: true\n    });\n    return shortcuts;\n  }, {});\n  return __spreadValues$i({\n    greater,\n    smaller(k) {\n      return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, 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)})`);\n    },\n    isSmaller(k) {\n      return match(`(max-width: ${getValue(k, -0.1)})`);\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 = 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) {\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 useClamp(value, min, max) {\n  const _value = ref(value);\n  return computed({\n    get() {\n      return _value.value = clamp(_value.value, unref(min), unref(max));\n    },\n    set(value2) {\n      _value.value = clamp(value2, unref(min), unref(max));\n    }\n  });\n}\n\nfunction useClipboard(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    read = false,\n    source,\n    copiedDuring = 1500\n  } = options;\n  const events = [\"copy\", \"cut\"];\n  const isSupported = Boolean(navigator && \"clipboard\" in navigator);\n  const text = ref(\"\");\n  const copied = ref(false);\n  const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n  function updateText() {\n    navigator.clipboard.readText().then((value) => {\n      text.value = value;\n    });\n  }\n  if (isSupported && read) {\n    for (const event of events)\n      useEventListener(event, updateText);\n  }\n  async function copy(value = unref(source)) {\n    if (isSupported && value != null) {\n      await navigator.clipboard.writeText(value);\n      text.value = value;\n      copied.value = true;\n      timeout.start();\n    }\n  }\n  return {\n    isSupported,\n    text,\n    copied,\n    copy\n  };\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\" : Array.isArray(rawInit) ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\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};\nfunction useStorage(key, initialValue, storage, options = {}) {\n  var _a;\n  const {\n    flush = \"pre\",\n    deep = true,\n    listenToStorageChanges = true,\n    writeDefaults = true,\n    shallow,\n    window = defaultWindow,\n    eventFilter,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = options;\n  const data = (shallow ? shallowRef : ref)(initialValue);\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 = unref(initialValue);\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  update();\n  return data;\n  function write(v) {\n    try {\n      if (v == null)\n        storage.removeItem(key);\n      else\n        storage.setItem(key, serializer.write(v));\n    } catch (e) {\n      onError(e);\n    }\n  }\n  function read(event) {\n    if (event && event.key !== key)\n      return;\n    pauseWatch();\n    try {\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 (typeof rawValue !== \"string\") {\n        return rawValue;\n      } else {\n        return serializer.read(rawValue);\n      }\n    } catch (e) {\n      onError(e);\n    } finally {\n      resumeWatch();\n    }\n  }\n  function update(event) {\n    if (event && event.key !== key)\n      return;\n    data.value = read(event);\n  }\n}\n\nfunction usePreferredDark(options) {\n  return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nvar __defProp$h = Object.defineProperty;\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};\nfunction useColorMode(options = {}) {\n  const {\n    selector = \"html\",\n    attribute = \"class\",\n    window = defaultWindow,\n    storage,\n    storageKey = \"vueuse-color-scheme\",\n    listenToStorageChanges = true,\n    storageRef,\n    emitAuto\n  } = options;\n  const modes = __spreadValues$h({\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(\"auto\") : useStorage(storageKey, \"auto\", 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  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, () => unref(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(unref(prop), val);\n  });\n  return variable;\n}\n\nfunction useCurrentElement() {\n  const vm = getCurrentInstance();\n  const count = ref(0);\n  onUpdated(() => {\n    count.value += 1;\n  });\n  onMounted(() => {\n    count.value += 1;\n  });\n  return computed(() => {\n    count.value;\n    return vm.proxy.$el;\n  });\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$g = Object.defineProperty;\nvar __defProps$7 = Object.defineProperties;\nvar __getOwnPropDescs$7 = 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$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$g({}, 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 fnClone = (v) => JSON.parse(JSON.stringify(v));\nconst fnBypass = (v) => v;\nconst fnSetSource = (source, value) => source.value = value;\nfunction defaultDump(clone) {\n  return clone ? isFunction(clone) ? clone : fnClone : fnBypass;\n}\nfunction defaultParse(clone) {\n  return clone ? isFunction(clone) ? clone : fnClone : 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$f = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = 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$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$f({}, 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$f({}, manualHistory), {\n    isTracking,\n    pause,\n    resume,\n    commit,\n    batch,\n    dispose\n  });\n}\n\nvar __defProp$e = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$g = Object.getOwnPropertySymbols;\nvar __hasOwnProp$g = Object.prototype.hasOwnProperty;\nvar __propIsEnum$g = 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$g.call(b, prop))\n      __defNormalProp$e(a, prop, b[prop]);\n  if (__getOwnPropSymbols$g)\n    for (var prop of __getOwnPropSymbols$g(b)) {\n      if (__propIsEnum$g.call(b, prop))\n        __defNormalProp$e(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$e({}, options), { eventFilter: filter }));\n  return __spreadValues$e({}, 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 = Boolean(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) {\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\nconst DEVICE_PIXEL_RATIO_SCALES = [\n  1,\n  1.325,\n  1.4,\n  1.5,\n  1.8,\n  2,\n  2.4,\n  2.5,\n  2.75,\n  3,\n  3.5,\n  4\n];\nfunction useDevicePixelRatio({\n  window = defaultWindow\n} = {}) {\n  if (!window) {\n    return {\n      pixelRatio: ref(1)\n    };\n  }\n  const pixelRatio = ref(window.devicePixelRatio);\n  const handleDevicePixelRatio = () => {\n    pixelRatio.value = window.devicePixelRatio;\n  };\n  useEventListener(window, \"resize\", handleDevicePixelRatio, { passive: true });\n  DEVICE_PIXEL_RATIO_SCALES.forEach((dppx) => {\n    const mqlMin = useMediaQuery(`screen and (min-resolution: ${dppx}dppx)`);\n    const mqlMax = useMediaQuery(`screen and (max-resolution: ${dppx}dppx)`);\n    watch([mqlMin, mqlMax], handleDevicePixelRatio);\n  });\n  return { pixelRatio };\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n  const {\n    controls = false,\n    navigator = defaultNavigator\n  } = options;\n  const isSupported = Boolean(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)\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  let isSupported = false;\n  const permissionGranted = ref(false);\n  async function update() {\n    if (!isSupported)\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)\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 (navigator) {\n    isSupported = Boolean(navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n    if (isSupported) {\n      if (requestPermissions)\n        ensurePermissions();\n      useEventListener(navigator.mediaDevices, \"devicechange\", update);\n      update();\n    }\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, _b;\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 = Boolean((_b = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _b.getDisplayMedia);\n  const constraint = { audio, video };\n  const stream = shallowRef();\n  async function _start() {\n    if (!isSupported || 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$d = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$f = Object.getOwnPropertySymbols;\nvar __hasOwnProp$f = Object.prototype.hasOwnProperty;\nvar __propIsEnum$f = 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$f.call(b, prop))\n      __defNormalProp$d(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$d(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;\n  const draggingElement = (_a = options.draggingElement) != null ? _a : defaultWindow;\n  const position = ref((_b = options.initialValue) != null ? _b : { 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 (unref(options.preventDefault))\n      e.preventDefault();\n    if (unref(options.stopPropagation))\n      e.stopPropagation();\n  };\n  const start = (e) => {\n    var _a2;\n    if (!filterEvent(e))\n      return;\n    if (unref(options.exact) && e.target !== unref(target))\n      return;\n    const rect = unref(target).getBoundingClientRect();\n    const pos = {\n      x: e.pageX - rect.left,\n      y: e.pageY - 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.pageX - pressedDelta.value.x,\n      y: e.pageY - 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(target, \"pointerdown\", start, true);\n    useEventListener(draggingElement, \"pointermove\", move, true);\n    useEventListener(draggingElement, \"pointerup\", end, true);\n  }\n  return __spreadProps$4(__spreadValues$d({}, 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      if (files.length === 0) {\n        onDrop(null);\n        return;\n      }\n      onDrop(files);\n    });\n  }\n  return {\n    isOverDropZone\n  };\n}\n\nvar __getOwnPropSymbols$e = Object.getOwnPropertySymbols;\nvar __hasOwnProp$e = Object.prototype.hasOwnProperty;\nvar __propIsEnum$e = Object.prototype.propertyIsEnumerable;\nvar __objRest$2 = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp$e.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols$e)\n    for (var prop of __getOwnPropSymbols$e(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum$e.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 = 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 && 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, { 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 rafId = null;\n  function loop() {\n    if (!isActive.value || !window)\n      return;\n    fn();\n    rafId = window.requestAnimationFrame(loop);\n  }\n  function resume() {\n    if (!isActive.value && window) {\n      isActive.value = true;\n      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,\n    pause,\n    resume\n  };\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};\nfunction useElementByPoint(options) {\n  const element = ref(null);\n  const { x, y } = options;\n  const controls = useRafFn(() => {\n    element.value = document.elementFromPoint(unref(x), unref(y));\n  });\n  return __spreadValues$c({\n    element\n  }, controls);\n}\n\nfunction useElementHover(el) {\n  const isHovered = ref(false);\n  useEventListener(el, \"mouseenter\", () => isHovered.value = true);\n  useEventListener(el, \"mouseleave\", () => isHovered.value = false);\n  return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n  const width = ref(initialSize.width);\n  const height = ref(initialSize.height);\n  useResizeObserver(target, ([entry]) => {\n    width.value = entry.contentRect.width;\n    height.value = entry.contentRect.height;\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    if (!unref(element)) {\n      elementIsVisible.value = false;\n    } else {\n      const rect = unref(element).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  tryOnMounted(testBounding);\n  if (window)\n    tryOnMounted(() => useEventListener(unref(scrollTarget) || window, \"scroll\", testBounding, { capture: false, passive: true }));\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 = Boolean(typeof window !== \"undefined\" && \"EyeDropper\" in window);\n  const sRGBHex = ref(initialValue);\n  async function open(openOptions) {\n    if (!isSupported)\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 = isRef(newIcon) ? newIcon : ref(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$b = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\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};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nconst payloadMapping = {\n  json: \"application/json\",\n  text: \"text/plain\",\n  formData: \"multipart/form-data\"\n};\nfunction isFetchOptions(obj) {\n  return containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\");\n}\nfunction headersToObject(headers) {\n  if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n    return Object.fromEntries([...headers.entries()]);\n  return headers;\n}\nfunction createFetch(config = {}) {\n  const _options = config.options || {};\n  const _fetchOptions = config.fetchOptions || {};\n  function useFactoryFetch(url, ...args) {\n    const computedUrl = computed(() => config.baseUrl ? joinPaths(unref(config.baseUrl), unref(url)) : unref(url));\n    let options = _options;\n    let fetchOptions = _fetchOptions;\n    if (args.length > 0) {\n      if (isFetchOptions(args[0])) {\n        options = __spreadValues$b(__spreadValues$b({}, options), args[0]);\n      } else {\n        fetchOptions = __spreadProps$3(__spreadValues$b(__spreadValues$b({}, fetchOptions), args[0]), {\n          headers: __spreadValues$b(__spreadValues$b({}, headersToObject(fetchOptions.headers) || {}), headersToObject(args[0].headers) || {})\n        });\n      }\n    }\n    if (args.length > 1 && isFetchOptions(args[1]))\n      options = __spreadValues$b(__spreadValues$b({}, options), args[1]);\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$b(__spreadValues$b({}, options), args[0]);\n    else\n      fetchOptions = args[0];\n  }\n  if (args.length > 1) {\n    if (isFetchOptions(args[1]))\n      options = __spreadValues$b(__spreadValues$b({}, 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  };\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    controller = void 0;\n    if (supportsAbort) {\n      controller = new AbortController();\n      controller.signal.onabort = () => aborted.value = true;\n      fetchOptions = __spreadProps$3(__spreadValues$b({}, 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      defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(unref(config.payload)) : unref(config.payload);\n    }\n    let isCanceled = false;\n    const context = { url: unref(url), options: __spreadValues$b(__spreadValues$b({}, defaultFetchOptions), fetchOptions), cancel: () => {\n      isCanceled = true;\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$b(__spreadValues$b({}, defaultFetchOptions), context.options), {\n        headers: __spreadValues$b(__spreadValues$b({}, 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  watch(() => [\n    unref(url),\n    unref(options.refetch)\n  ], () => unref(options.refetch) && 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            unref(config.payload),\n            unref(options.refetch)\n          ], () => unref(options.refetch) && execute(), { deep: true });\n        }\n        if (!payloadType && unref(payload) && Object.getPrototypeOf(unref(payload)) === Object.prototype)\n          config.payloadType = \"json\";\n        return __spreadProps$3(__spreadValues$b({}, 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$b({}, 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$b({}, 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$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};\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$a(__spreadValues$a(__spreadValues$a({}, DEFAULT_OPTIONS), options), localOptions);\n    input.multiple = _options.multiple;\n    input.accept = _options.accept;\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$9 = Object.defineProperty;\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};\nfunction useFileSystemAccess(options = {}) {\n  const {\n    window: _window = defaultWindow,\n    dataType = \"Text\"\n  } = unref(options);\n  const window = _window;\n  const isSupported = Boolean(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)\n      return;\n    const [handle] = await window.showOpenFilePicker(__spreadValues$9(__spreadValues$9({}, unref(options)), _options));\n    fileHandle.value = handle;\n    await updateFile();\n    await updateData();\n  }\n  async function create(_options = {}) {\n    if (!isSupported)\n      return;\n    fileHandle.value = await window.showSaveFilePicker(__spreadValues$9(__spreadValues$9({}, unref(options)), _options));\n    data.value = void 0;\n    await updateFile();\n    await updateData();\n  }\n  async function save(_options = {}) {\n    if (!isSupported)\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)\n      return;\n    fileHandle.value = await window.showSaveFilePicker(__spreadValues$9(__spreadValues$9({}, 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 activeElement = useActiveElement(options);\n  const targetElement = computed(() => unrefElement(target));\n  const focused = computed({\n    get() {\n      return isDef(activeElement.value) && isDef(targetElement.value) && activeElement.value === targetElement.value;\n    },\n    set(value) {\n      var _a, _b;\n      if (!value && focused.value)\n        (_a = targetElement.value) == null ? void 0 : _a.blur();\n      if (value && !focused.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 isSupported = false;\n  let map = functionsMap[0];\n  if (!document) {\n    isSupported = false;\n  } else {\n    for (const m of functionsMap) {\n      if (m[1] in document) {\n        map = m;\n        isSupported = true;\n        break;\n      }\n    }\n  }\n  const [REQUEST, EXIT, ELEMENT, , EVENT] = map;\n  async function exit() {\n    if (!isSupported)\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)\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 = 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  } = options;\n  const isSupported = 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  if (isSupported) {\n    watcher = navigator.geolocation.watchPosition(updatePosition, (err) => error.value = err, {\n      enableHighAccuracy,\n      maximumAge,\n      timeout\n    });\n  }\n  tryOnScopeDispose(() => {\n    if (watcher && navigator)\n      navigator.geolocation.clearWatch(watcher);\n  });\n  return {\n    isSupported,\n    coords,\n    locatedAt,\n    error\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$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};\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(unref(options)), void 0, __spreadValues$8({\n    resetOnExecute: true\n  }, asyncStateOptions));\n  watch(() => unref(options), () => state.execute(asyncStateOptions.delay), { deep: true });\n  return state;\n};\n\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  } = options;\n  const x = ref(0);\n  const y = ref(0);\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  if (element) {\n    const onScrollEnd = useDebounceFn((e) => {\n      isScrolling.value = false;\n      directions.left = false;\n      directions.right = false;\n      directions.top = false;\n      directions.bottom = false;\n      onStop(e);\n    }, 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 < x.value;\n      directions.right = scrollLeft > x.value;\n      arrivedState.left = scrollLeft <= 0 + (offset.left || 0);\n      arrivedState.right = scrollLeft + eventTarget.clientWidth >= eventTarget.scrollWidth - (offset.right || 0);\n      x.value = scrollLeft;\n      let scrollTop = eventTarget.scrollTop;\n      if (e.target === document && !scrollTop)\n        scrollTop = document.body.scrollTop;\n      directions.top = scrollTop < y.value;\n      directions.bottom = scrollTop > y.value;\n      arrivedState.top = scrollTop <= 0 + (offset.top || 0);\n      arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset.bottom || 0);\n      y.value = scrollTop;\n      isScrolling.value = true;\n      onScrollEnd(e);\n      onScroll(e);\n    };\n    useEventListener(element, \"scroll\", throttle ? useThrottleFn(onScrollHandler, throttle) : onScrollHandler, eventListenerOptions);\n  }\n  return {\n    x,\n    y,\n    isScrolling,\n    arrivedState,\n    directions\n  };\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = 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$8.call(b, prop))\n      __defNormalProp$7(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$7(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$7({}, options), {\n    offset: __spreadValues$7({\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 = unref(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 = window && \"IntersectionObserver\" in window;\n  let cleanup = noop;\n  const stopWatch = isSupported ? 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 = { toJSON() {\n    return {};\n  }, current };\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    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 (code) {\n      if (value)\n        current.add(e.code);\n      else\n        current.delete(e.code);\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  if (target) {\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  }\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$6 = Object.defineProperty;\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = 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$7.call(b, prop))\n      __defNormalProp$6(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$6(a, prop, b[prop]);\n    }\n  return a;\n};\nfunction usingElRef(source, cb) {\n  if (unref(source))\n    cb(unref(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$6(__spreadValues$6({}, 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 = unref(target);\n    if (!el)\n      return;\n    const src = unref(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 = unref(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 = unref(target);\n    if (!el)\n      return;\n    el.volume = vol;\n  });\n  watch(muted, (mute) => {\n    const el = unref(target);\n    if (!el)\n      return;\n    el.muted = mute;\n  });\n  watch(rate, (rate2) => {\n    const el = unref(target);\n    if (!el)\n      return;\n    el.playbackRate = rate2;\n  });\n  watchEffect(() => {\n    if (!document)\n      return;\n    const textTracks = unref(options.tracks);\n    const el = unref(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 = unref(target);\n    if (!el)\n      return;\n    el.currentTime = time;\n  });\n  const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n    const el = unref(target);\n    if (!el)\n      return;\n    isPlaying ? el.play() : el.pause();\n  });\n  useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = unref(target).currentTime));\n  useEventListener(target, \"durationchange\", () => duration.value = unref(target).duration);\n  useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(unref(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\", () => waiting.value = false);\n  useEventListener(target, \"ratechange\", () => rate.value = unref(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 = unref(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 = unref(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) => Object.prototype.hasOwnProperty.call(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 = typeof performance !== \"undefined\" && \"memory\" in performance;\n  if (isSupported) {\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    }\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) {\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  }\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$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __objRest$1 = (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 useMutationObserver(target, callback, options = {}) {\n  const _a = options, { window = defaultWindow } = _a, mutationOptions = __objRest$1(_a, [\"window\"]);\n  let observer;\n  const isSupported = 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 && 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 = Boolean(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 = Boolean(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 && 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$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 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$5({\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 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.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$4 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = 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$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$4({}, toRefs(state)), {\n    isInside\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 = ref(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 filterEvent = (e) => {\n    if (options.pointerTypes)\n      return options.pointerTypes.includes(e.pointerType);\n    return true;\n  };\n  const stops = [\n    useEventListener(target, \"pointerdown\", (e) => {\n      var _a, _b;\n      if (!filterEvent(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 (!filterEvent(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 (!filterEvent(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 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\nconst useScreenOrientation = (options = {}) => {\n  const {\n    window = defaultWindow\n  } = options;\n  const isSupported = !!(window && \"screen\" in window && \"orientation\" in window.screen);\n  const screenOrientation = isSupported ? window.screen.orientation : {};\n  const orientation = ref(screenOrientation.type);\n  const angle = ref(screenOrientation.angle || 0);\n  if (isSupported) {\n    useEventListener(window, \"orientationchange\", () => {\n      orientation.value = screenOrientation.type;\n      angle.value = screenOrientation.angle;\n    });\n  }\n  const lockOrientation = (type) => {\n    if (!isSupported)\n      return Promise.reject(new Error(\"Not supported\"));\n    return screenOrientation.lock(type);\n  };\n  const unlockOrientation = () => {\n    if (isSupported)\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=\"${src}\"]`);\n    if (!el) {\n      el = document.createElement(\"script\");\n      el.type = type;\n      el.async = async;\n      el.src = unref(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=\"${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 preventDefault(rawEvent) {\n  const e = rawEvent || window.event;\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(() => unref(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 = unref(element);\n    if (!ele || isLocked.value)\n      return;\n    if (isIOS) {\n      stopTouchMoveListener = useEventListener(ele, \"touchmove\", preventDefault, { passive: false });\n    }\n    ele.style.overflow = \"hidden\";\n    isLocked.value = true;\n  };\n  const unlock = () => {\n    const ele = unref(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$3 = Object.defineProperty;\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};\nfunction useShare(shareOptions = {}, options = {}) {\n  const { navigator = defaultNavigator } = options;\n  const _navigator = navigator;\n  const isSupported = _navigator && \"canShare\" in _navigator;\n  const share = async (overrideOptions = {}) => {\n    if (isSupported) {\n      const data = __spreadValues$3(__spreadValues$3({}, unref(shareOptions)), unref(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\nfunction useSpeechRecognition(options = {}) {\n  const {\n    interimResults = true,\n    continuous = true,\n    window = defaultWindow\n  } = options;\n  const lang = ref(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 = Boolean(SpeechRecognition);\n  let recognition;\n  if (isSupported) {\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  var _a, _b;\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 = Boolean(synth);\n  const isPlaying = ref(false);\n  const status = ref(\"init\");\n  const voiceInfo = {\n    lang: ((_a = options.voice) == null ? void 0 : _a.lang) || \"default\",\n    name: ((_b = options.voice) == null ? void 0 : _b.name) || \"\"\n  };\n  const spokenText = ref(text || \"\");\n  const lang = ref(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    options.voice && (utterance2.voice = options.voice);\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    utterance2.onend = () => {\n      isPlaying.value = false;\n      utterance2.lang = unref(lang);\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  if (isSupported) {\n    bindEventsForUtterance(utterance.value);\n    watch(lang, (lang2) => {\n      if (utterance.value && !isPlaying.value)\n        utterance.value.lang = lang2;\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    voiceInfo,\n    utterance,\n    error,\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\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n  var _a;\n  const {\n    flush = \"pre\",\n    deep = true,\n    listenToStorageChanges = true,\n    writeDefaults = true,\n    shallow,\n    window = defaultWindow,\n    eventFilter,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = options;\n  const rawInit = unref(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 {\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    el.type = \"text/css\";\n    el.id = id;\n    if (options.media)\n      el.media = options.media;\n    document.head.appendChild(el);\n    if (isLoaded.value)\n      return;\n    stop = watch(cssRef, (value) => {\n      el.innerText = 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 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  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$2 = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = 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 = (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$2({}, options), { eventFilter: filter }));\n  return __spreadValues$2({}, history);\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};\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};\nconst 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};\nconst DEFAULT_FORMATTER = (date) => date.toISOString().slice(0, 10);\nfunction useTimeAgo(time, options = {}) {\n  const {\n    controls: exposeControls = false,\n    max,\n    updateInterval = 3e4,\n    messages = DEFAULT_MESSAGES,\n    fullDateFormatter = DEFAULT_FORMATTER\n  } = options;\n  const { abs, round } = Math;\n  const _a = useNow({ interval: updateInterval, controls: true }), { now } = _a, controls = __objRest(_a, [\"now\"]);\n  function getTimeago(from, now2) {\n    var _a2;\n    const diff = +now2 - +from;\n    const absDiff = abs(diff);\n    if (absDiff < 6e4)\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 = (_a2 = UNITS.find((i) => i.name === max)) == null ? void 0 : _a2.max;\n      if (unitMax && absDiff > unitMax)\n        return fullDateFormatter(new Date(from));\n    }\n    for (const unit of UNITS) {\n      if (absDiff < unit.max)\n        return format(diff, unit);\n    }\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  function format(diff, unit) {\n    const val = round(abs(diff) / unit.value);\n    const past = diff > 0;\n    const str = applyFormat(unit.name, val, past);\n    return applyFormat(past ? \"past\" : \"future\", str, past);\n  }\n  const timeAgo = computed(() => getTimeago(new Date(unref(time)), unref(now.value)));\n  if (exposeControls) {\n    return __spreadValues$1({\n      timeAgo\n    }, controls);\n  } else {\n    return timeAgo;\n  }\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 = 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};\nfunction useTimestamp(options = {}) {\n  const {\n    controls: exposeControls = false,\n    offset = 0,\n    immediate = true,\n    interval = \"requestAnimationFrame\"\n  } = options;\n  const ts = ref(timestamp() + offset);\n  const update = () => ts.value = timestamp() + offset;\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate }) : useIntervalFn(update, interval, { immediate });\n  if (exposeControls) {\n    return __spreadValues({\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    observe = false,\n    titleTemplate = \"%s\"\n  } = options;\n  const title = ref((_a = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _a : null);\n  watch(title, (t, o) => {\n    if (isString(t) && t !== o && document)\n      document.title = titleTemplate.replace(\"%s\", t);\n  }, { immediate: true });\n  if (observe && document) {\n    useMutationObserver((_b = document.head) == null ? void 0 : _b.querySelector(\"title\"), () => {\n      if (document && document.title !== title.value)\n        title.value = titleTemplate.replace(\"%s\", document.title);\n    }, { childList: true });\n  }\n  return title;\n}\n\nconst TransitionPresets = {\n  linear: identity,\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};\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      outputVector.value = sourceVector.value.slice(0);\n    } else {\n      if (unref(delay) <= 0)\n        start();\n      else\n        timeout.start();\n    }\n  }, { deep: true });\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    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}` : \"\"}${location.hash || \"\"}`;\n    if (mode === \"hash-params\")\n      return `${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    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, _c;\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 = Boolean((_c = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _c.getUserMedia);\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 || 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    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 getValue = () => isDef(props[key]) ? props[key] : defaultValue;\n  if (passive) {\n    const proxy = ref(getValue());\n    watch(() => props[key], (v) => proxy.value = v);\n    watch(proxy, (v) => {\n      if (v !== props[key] || deep)\n        _emit(event, v);\n    }, {\n      deep\n    });\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 = typeof navigator !== \"undefined\" && \"vibrate\" in navigator;\n  const patternRef = ref(pattern);\n  let intervalControls;\n  const vibrate = (pattern2 = patternRef.value) => {\n    if (isSupported)\n      navigator.vibrate(pattern2);\n  };\n  const stop = () => {\n    if (isSupported)\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 containerRef = ref();\n  const size = useElementSize(containerRef);\n  const currentList = ref([]);\n  const source = shallowRef(list);\n  const state = ref({ start: 0, end: 10 });\n  const { itemHeight, overscan = 5 } = options;\n  const getViewCapacity = (containerHeight) => {\n    if (typeof itemHeight === \"number\")\n      return Math.ceil(containerHeight / itemHeight);\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 height = itemHeight(i);\n      sum += height;\n      if (sum >= containerHeight) {\n        capacity = i;\n        break;\n      }\n    }\n    return capacity - start;\n  };\n  const getOffset = (scrollTop) => {\n    if (typeof itemHeight === \"number\")\n      return Math.floor(scrollTop / itemHeight) + 1;\n    let sum = 0;\n    let offset = 0;\n    for (let i = 0; i < source.value.length; i++) {\n      const height = itemHeight(i);\n      sum += height;\n      if (sum >= scrollTop) {\n        offset = i;\n        break;\n      }\n    }\n    return offset + 1;\n  };\n  const calculateRange = () => {\n    const element = containerRef.value;\n    if (element) {\n      const offset = getOffset(element.scrollTop);\n      const viewCapacity = getViewCapacity(element.clientHeight);\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  watch([size.width, size.height, list], () => {\n    calculateRange();\n  });\n  const totalHeight = computed(() => {\n    if (typeof itemHeight === \"number\")\n      return source.value.length * itemHeight;\n    return source.value.reduce((sum, _, index) => sum + itemHeight(index), 0);\n  });\n  const getDistanceTop = (index) => {\n    if (typeof itemHeight === \"number\") {\n      const height2 = index * itemHeight;\n      return height2;\n    }\n    const height = source.value.slice(0, index).reduce((sum, _, i) => sum + itemHeight(i), 0);\n    return height;\n  };\n  const scrollTo = (index) => {\n    if (containerRef.value) {\n      containerRef.value.scrollTop = getDistanceTop(index);\n      calculateRange();\n    }\n  };\n  const offsetTop = computed(() => getDistanceTop(state.value.start));\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  const containerStyle = { overflowY: \"auto\" };\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}\n\nconst useWakeLock = (options = {}) => {\n  const {\n    navigator = defaultNavigator,\n    document = defaultDocument\n  } = options;\n  let wakeLock;\n  const isSupported = navigator && \"wakeLock\" in navigator;\n  const isActive = ref(false);\n  async function onVisibilityChange() {\n    if (!isSupported || !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)\n      return;\n    wakeLock = await navigator.wakeLock.request(type);\n    isActive.value = !wakeLock.released;\n  }\n  async function release() {\n    if (!isSupported || !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 = !!window && \"Notification\" in window;\n  const notification = ref(null);\n  const requestPermission = async () => {\n    if (!isSupported)\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)\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)\n      await requestPermission();\n  });\n  tryOnScopeDispose(close);\n  if (isSupported && 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\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(\"CONNECTING\");\n  const wsRef = ref();\n  let heartbeatPause;\n  let heartbeatResume;\n  let explicitlyClosed = false;\n  let retried = 0;\n  let bufferedData = [];\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 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    const ws = new WebSocket(url, protocols);\n    wsRef.value = ws;\n    status.value = \"CONNECTING\";\n    explicitlyClosed = false;\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      data.value = e.data;\n      onMessage == null ? void 0 : onMessage(ws, e);\n    };\n  };\n  if (options.heartbeat) {\n    const {\n      message = \"ping\",\n      interval = 1e3\n    } = resolveNestedOptions(options.heartbeat);\n    const { pause, resume } = useIntervalFn(() => send(message, false), interval, { immediate: false });\n    heartbeatPause = pause;\n    heartbeatResume = resume;\n  }\n  if (immediate)\n    _init();\n  if (autoClose) {\n    useEventListener(window, \"beforeunload\", () => close());\n    tryOnScopeDispose(close);\n  }\n  const open = () => {\n    close();\n    retried = 0;\n    _init();\n  };\n  return {\n    data,\n    status,\n    close,\n    send,\n    open,\n    ws: wsRef\n  };\n}\n\nfunction useWebWorker(url, workerOptions, options = {}) {\n  const {\n    window = defaultWindow\n  } = 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    worker.value = new Worker(url, workerOptions);\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.pageXOffset);\n  const y = ref(window.pageYOffset);\n  useEventListener(\"scroll\", () => {\n    x.value = window.pageXOffset;\n    y.value = window.pageYOffset;\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  } = options;\n  const width = ref(initialWidth);\n  const height = ref(initialHeight);\n  const update = () => {\n    if (window) {\n      width.value = window.innerWidth;\n      height.value = window.innerHeight;\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, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, computedAsync, computedInject, createFetch, createUnrefFn, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClamp, useClipboard, 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, usePointerSwipe, usePreferredColorScheme, usePreferredDark, usePreferredLanguages, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSwipe, useTemplateRefsList, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","<template>\n  <div class=\"vc-display\">\n    <div class=\"vc-current-color vc-transparent\">\n      <div class=\"color-cube\" :style=\"getBgColorStyle\"></div>\n    </div>\n    <div class=\"vc-color-input\">\n      <input :value=\"state.hex\" @input=\"onInputChange\" />\n    </div>\n    <div class=\"vc-alpha-input\" v-if=\"!disableAlpha\">\n      <input class=\"vc-alpha-input__inner\" :value=\"state.alpha\" @input=\"onAlphaBlur\" />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\n  import { computed, defineComponent, reactive, watch } from 'vue';\n  import propTypes from 'vue-types';\n  import { Color } from '../utils/color';\n  import { whenever, useDebounceFn } from '@vueuse/core';\n  import tinycolor from 'tinycolor2';\n\n  export default defineComponent({\n    name: 'Display',\n    props: {\n      color: propTypes.instanceOf(Color),\n      disableAlpha: propTypes.bool.def(false),\n    },\n    emits: ['update:color', 'change'],\n    setup(props, { emit }) {\n      const state = reactive({\n        color: props.color,\n        hex: props.color?.hex,\n        alpha: props.color?.alpha + '%',\n        previewBgColor: props.color?.toRgbString(),\n      });\n\n      const getBgColorStyle = computed(() => {\n        return {\n          background: state.previewBgColor,\n        };\n      });\n\n      const onAlphaBlur: any = useDebounceFn((event: any) => {\n        if (!event.target.value) {\n          return;\n        }\n\n        const opacity = parseInt(event.target.value.replace('%', ''));\n        if (!isNaN(opacity) && state.color) {\n          state.color.alpha = opacity;\n        }\n\n        emit('update:color', state.color);\n        emit('change', state.color);\n      }, 300);\n\n      const onInputChange = useDebounceFn((event) => {\n        if (!event.target.value) {\n          return;\n        }\n\n        const _hex = event.target.value.replace('#', '');\n        if (tinycolor(_hex).isValid() && state.color) {\n          state.color.hex = _hex;\n        }\n\n        emit('update:color', state.color);\n        emit('change', state.color);\n      }, 300);\n\n      whenever(\n        () => props.color,\n        (value: Color) => {\n          if (value) {\n            state.color = value;\n            state.alpha = state.color.alpha + '%';\n            state.hex = state.color.hex;\n          }\n        },\n        { deep: true },\n      );\n\n      whenever(\n        () => state.color,\n        () => {\n          if (state.color) {\n            state.previewBgColor = state.color.toRgbString();\n          }\n        },\n        { deep: true },\n      );\n\n      return { state, getBgColorStyle, onAlphaBlur, onInputChange };\n    },\n  });\n</script>\n\n<style lang=\"scss\">\n  .vc-display {\n    margin-top: 16px;\n    height: 28px;\n    display: flex;\n    align-items: center;\n\n    .vc-current-color {\n      margin-right: 10px;\n      width: 50px;\n      height: 100%;\n      box-shadow: 3px 0 5px #00000014;\n      position: relative;\n      cursor: pointer;\n      overflow: hidden;\n      display: inline-block;\n      vertical-align: middle;\n\n      &.vc-transparent {\n        background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);\n        background-repeat: repeat;\n      }\n\n      .color-cube {\n        width: 100%;\n        height: 100%;\n      }\n    }\n\n    .vc-color-input {\n      height: 100%;\n      flex: 1;\n      flex-shrink: 0;\n      box-sizing: border-box;\n      position: relative;\n\n      input {\n        padding: 0;\n        border: 0;\n        outline: none;\n        cursor: pointer;\n        color: #33383e;\n        font-size: 14px;\n        text-align: center;\n        box-sizing: border-box;\n        background-color: #f1f2f4;\n        border-radius: 4px;\n        height: 100%;\n        width: 100%;\n      }\n    }\n\n    .vc-alpha-input {\n      margin-left: 8px;\n      width: 56px;\n      height: 100%;\n      border: none;\n      display: -ms-flexbox;\n      display: flex;\n      -ms-flex-pack: center;\n      justify-content: center;\n      -ms-flex-align: center;\n      align-items: center;\n      background-color: #f1f2f4;\n      border-radius: 4px;\n      font-size: 14px;\n\n      > input {\n        width: 100%;\n        padding: 0;\n        text-align: center;\n        color: inherit;\n        font-size: inherit;\n      }\n\n      &__inner {\n        padding: 10px 16px;\n        border-radius: 4px;\n        color: #000;\n        font-size: 14px;\n        line-height: 20px;\n        background: transparent;\n        outline: none;\n        border: none;\n        display: block;\n        box-sizing: border-box;\n        cursor: pointer;\n      }\n    }\n  }\n</style>\n","<template>\n  <div class=\"vc-fk-colorPicker\">\n    <div class=\"vc-fk-colorPicker__inner\">\n      <div class=\"vc-fk-colorPicker__header\">\n        <span style=\"cursor: pointer\" v-if=\"advancePanelShow\" @click=\"onBack\">\n          <div class=\"back\"></div>\n        </span>\n      </div>\n      <Palette v-if=\"!advancePanelShow\" :color=\"color\" @change=\"onCompactChange\" />\n      <Board :color=\"color\" v-if=\"advancePanelShow\" @change=\"onBoardChange\" />\n      <Hue v-if=\"advancePanelShow\" :color=\"color\" @change=\"onHueChange\" />\n      <Lightness v-if=\"!advancePanelShow\" :color=\"color\" @change=\"onLightChange\" />\n      <Alpha :color=\"color\" @change=\"onAlphaChange\" v-if=\"!disableAlpha\" />\n      <Display :color=\"color\" :disable-alpha=\"disableAlpha\" />\n      <History\n        :round=\"roundHistory\"\n        :colors=\"historyColors\"\n        v-if=\"!disableHistory\"\n        @change=\"onCompactChange\"\n      />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\n  import { computed, defineComponent, reactive, ref, toRefs, watch } from 'vue';\n  import Alpha from '../common/Alpha.vue';\n  import Palette from '../common/Palette.vue';\n  import Board from '../common/Board.vue';\n  import Hue from '../common/Hue.vue';\n  import Lightness from '../common/Lightness.vue';\n  import History from '../common/History.vue';\n  import propTypes from 'vue-types';\n  import { Color, HistoryColorKey, MAX_STORAGE_LENGTH } from '../utils/color';\n  import { useLocalStorage, whenever } from '@vueuse/core';\n  import type { RemovableRef } from '@vueuse/core';\n  import tinycolor from 'tinycolor2';\n  import Display from '../common/Display.vue';\n\n  export default defineComponent({\n    name: 'TkColorPicker',\n    components: { Display, Alpha, Palette, Board, Hue, Lightness, History },\n    props: {\n      color: propTypes.instanceOf(Color),\n      disableHistory: propTypes.bool.def(false),\n      roundHistory: propTypes.bool.def(false),\n      disableAlpha: propTypes.bool.def(false),\n    },\n    emits: ['update:color', 'change', 'advanceChange', 'update:pureColor'],\n    setup(props, { emit }) {\n      const colorInstance = props.color || new Color();\n      const state = reactive<{ color: Color; hex: string; rgb: string }>({\n        color: colorInstance,\n        hex: colorInstance.toHexString(),\n        rgb: colorInstance.toRgbString(),\n      });\n\n      const advancePanelShow = ref(false);\n\n      const previewStyle = computed(() => {\n        return { background: state.rgb };\n      });\n\n      const onBack = () => {\n        advancePanelShow.value = false;\n        emit('advanceChange', false);\n      };\n\n      const historyColors: RemovableRef<string[]> = useLocalStorage<string[]>(\n        HistoryColorKey,\n        [],\n        {},\n      );\n\n      // const updateColorHistoryFn = useDebounceFn(() => {\n      //   if (props.disableHistory) {\n      //     return;\n      //   }\n      //   const rgbString = state.color.toRgbString();\n      //\n      //   historyColors.value = historyColors.value.filter((value) => {\n      //     return !tinycolor.equals(value, rgbString);\n      //   });\n      //\n      //   if (historyColors.value.includes(rgbString)) {\n      //     return;\n      //   }\n      //\n      //   while (historyColors.value.length > MAX_STORAGE_LENGTH) {\n      //     historyColors.value.pop();\n      //   }\n      //\n      //   historyColors.value.unshift(rgbString);\n      // }, 500);\n\n      const onCompactChange = (color: string, isNotSave?: boolean) => {\n        console.log('onCompactChange => %o, %o', color, isNotSave);\n        if (color === 'advance') {\n          advancePanelShow.value = true;\n          emit('advanceChange', true);\n        } else {\n          // 预览情况不保存历史记录\n          // if (!isNotSave) {\n          //   updateColorHistoryFn();\n          // }\n          // 修改颜色后，再通过watch监听改变颜色\n          state.color.hex = color;\n          emit('advanceChange', false);\n        }\n      };\n\n      const onAlphaChange = (alpha: number) => {\n        state.color.alpha = alpha;\n      };\n\n      const onHueChange = (hue: number) => {\n        state.color.hue = hue;\n      };\n\n      const onBoardChange = (saturation: number, brightness: number) => {\n        state.color.saturation = saturation;\n        state.color.brightness = brightness;\n      };\n\n      const onLightChange = (light: number) => {\n        state.color.lightness = light;\n      };\n\n      const onInputChange = (event: FocusEvent) => {\n        const target = event.target as HTMLInputElement;\n        const hex = target.value.replace('#', '');\n        if (tinycolor(hex).isValid()) {\n          state.color.hex = hex;\n        }\n      };\n\n      whenever(\n        () => props.color,\n        (value: Color) => {\n          if (value) {\n            state.color = value;\n          }\n        },\n        { deep: true },\n      );\n\n      watch(\n        () => state.color,\n        () => {\n          console.log('state.color ====>');\n          state.hex = state.color.hex;\n          state.rgb = state.color.toRgbString();\n          // updateColorHistoryFn();\n          emit('update:color', state.color);\n          // console.log('color change => %o', state.color);\n          emit('change', state.color);\n          // console.log('update:pureColor => %o', state.color);\n          emit('update:pureColor', state.color);\n          //\n        },\n        { deep: true },\n      );\n\n      return {\n        ...toRefs(state),\n        advancePanelShow,\n        onBack,\n        onCompactChange,\n        onAlphaChange,\n        onHueChange,\n        onBoardChange,\n        onLightChange,\n        onInputChange,\n        previewStyle,\n        historyColors,\n      };\n    },\n  });\n</script>\n\n<style lang=\"scss\">\n  .vc-fk-colorPicker {\n    position: relative;\n    box-sizing: border-box;\n    border-radius: 3px;\n    user-select: none;\n    background-color: white;\n\n    &__inner {\n      position: relative;\n    }\n\n    &__header {\n      margin-bottom: 0px;\n      z-index: 999;\n      text-align: left;\n\n      .back {\n        border: solid black;\n        border-width: 0 1px 1px 0;\n        display: inline-block;\n        padding: 4px;\n        margin-left: 2px;\n        transform: rotate(135deg);\n      }\n    }\n\n    &__display {\n      position: relative;\n      width: 100%;\n      margin: 0;\n      text-align: left;\n\n      .transparent {\n        background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);\n        background-repeat: repeat;\n      }\n\n      .current-color {\n        margin-right: 10px;\n        width: 50px;\n        height: 24px;\n        box-shadow: 3px 0 5px #00000014;\n        position: relative;\n        cursor: pointer;\n        overflow: hidden;\n        display: inline-block;\n        vertical-align: middle;\n\n        .color-cube {\n          width: 100%;\n          height: 100%;\n        }\n      }\n\n      .hexColor-prefix {\n        position: relative;\n        padding: 0 4px;\n        font-size: 14px;\n        display: inline-block;\n        vertical-align: middle;\n      }\n\n      input {\n        width: 25px;\n        text-align: center;\n        outline: 0;\n        border-top: 0;\n        border-right: 0;\n        border-left: none;\n        display: inline-block;\n        vertical-align: middle;\n        padding-bottom: 3px;\n        border-bottom: 1px solid #e3e2e8;\n      }\n\n      .hexColor-input {\n        width: 64px;\n      }\n\n      .action {\n        float: right;\n        vertical-align: middle;\n\n        .clear-btn {\n          border-color: transparent;\n          color: #409eff;\n          background: transparent;\n          padding-left: 0;\n          padding-right: 0;\n          display: inline-block;\n          vertical-align: middle;\n          cursor: pointer;\n        }\n\n        .copy-btn {\n          border-color: transparent;\n          color: rgba(19, 206, 102, 0.8);\n          background: transparent;\n          padding-left: 0;\n          padding-right: 0;\n          display: inline-block;\n          margin-left: 10px;\n          vertical-align: middle;\n          cursor: pointer;\n        }\n      }\n    }\n  }\n</style>\n","<template>\n  <div class=\"vc-chrome-colorPicker\">\n    <Board :round=\"true\" :hide=\"false\" :color=\"color\" @change=\"onBoardChange\" />\n    <div class=\"vc-chrome-colorPicker-body\">\n      <div class=\"chrome-controls\">\n        <div class=\"chrome-color-wrap transparent\">\n          <div class=\"current-color\" :style=\"previewStyle\"></div>\n        </div>\n        <div class=\"chrome-sliders\">\n          <Hue size=\"small\" :color=\"color\" @change=\"onHueChange\" />\n          <Alpha size=\"small\" :color=\"color\" @change=\"onAlphaChange\" v-if=\"!disableAlpha\" />\n        </div>\n      </div>\n      <Display :color=\"color\" :disable-alpha=\"disableAlpha\" />\n      <History\n        :round=\"roundHistory\"\n        :colors=\"historyColors\"\n        v-if=\"!disableHistory\"\n        @change=\"onCompactChange\"\n      />\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\n  import { computed, defineComponent, reactive, toRefs, watch } from 'vue';\n  import Alpha from '../common/Alpha.vue';\n  import Board from '../common/Board.vue';\n  import Hue from '../common/Hue.vue';\n  import History from '../common/History.vue';\n  import propTypes from 'vue-types';\n  import { Color, HistoryColorKey } from '../utils/color';\n  import { useLocalStorage, whenever } from '@vueuse/core';\n  import type { RemovableRef } from '@vueuse/core';\n  import Display from '../common/Display.vue';\n\n  export default defineComponent({\n    name: 'ChromeColorPicker',\n    components: { Display, Alpha, Board, Hue, History },\n    props: {\n      color: propTypes.instanceOf(Color),\n      disableHistory: propTypes.bool.def(false),\n      roundHistory: propTypes.bool.def(false),\n      disableAlpha: propTypes.bool.def(false),\n    },\n    emits: ['update:color', 'change'],\n    setup(props, { emit }) {\n      const colorInstance = props.color || new Color();\n      const state = reactive({\n        color: colorInstance,\n        hex: colorInstance.toHexString(),\n        rgb: colorInstance.toRgbString(),\n      });\n\n      const previewStyle = computed(() => {\n        return { background: state.rgb };\n      });\n\n      const historyColors: RemovableRef<string[]> = useLocalStorage<string[]>(\n        HistoryColorKey,\n        [],\n        {},\n      );\n\n      // const updateColorHistoryFn = useDebounceFn(() => {\n      //   if (props.disableHistory) {\n      //     return;\n      //   }\n      //   const rgbString = state.color.toRgbString();\n      //\n      //   historyColors.value = historyColors.value.filter((value) => {\n      //     return !tinycolor.equals(value, rgbString);\n      //   });\n      //\n      //   if (historyColors.value.includes(rgbString)) {\n      //     return;\n      //   }\n      //\n      //   while (historyColors.value.length > MAX_STORAGE_LENGTH) {\n      //     historyColors.value.pop();\n      //   }\n      //\n      //   historyColors.value.unshift(rgbString);\n      // }, 500);\n\n      const onAlphaChange = (alpha: number) => {\n        state.color.alpha = alpha;\n      };\n\n      const onHueChange = (hue: number) => {\n        state.color.hue = hue;\n      };\n\n      const onBoardChange = (saturation: number, brightness: number) => {\n        state.color.saturation = saturation;\n        state.color.brightness = brightness;\n      };\n\n      const onCompactChange = (color: string) => {\n        if (color !== 'advance') {\n          state.color.hex = color;\n        }\n      };\n\n      whenever(\n        () => props.color,\n        (value: Color) => {\n          if (value) {\n            state.color = value;\n          }\n        },\n        { deep: true },\n      );\n\n      watch(\n        () => state.color,\n        () => {\n          state.hex = state.color.hex;\n          state.rgb = state.color.toRgbString();\n          // updateColorHistoryFn();\n          emit('update:color', state.color);\n          emit('change', state.color);\n        },\n        { deep: true },\n      );\n\n      return {\n        ...toRefs(state),\n        previewStyle,\n        historyColors,\n        onAlphaChange,\n        onHueChange,\n        onBoardChange,\n        onCompactChange,\n      };\n    },\n  });\n</script>\n\n<style lang=\"scss\">\n  .vc-chrome-colorPicker {\n    position: relative;\n    box-sizing: border-box;\n    border-radius: 3px;\n    user-select: none;\n    background-color: white;\n\n    &-body {\n      position: relative;\n      background-color: #fff;\n\n      .chrome-controls {\n        display: flex;\n\n        .chrome-color-wrap {\n          position: relative;\n          width: 36px;\n          height: 36px;\n          border-radius: 50%;\n          overflow: hidden;\n          z-index: 1;\n\n          &.transparent {\n            background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);\n            background-repeat: repeat;\n          }\n\n          .current-color {\n            width: 100%;\n            height: 100%;\n          }\n        }\n\n        .chrome-sliders {\n          flex: 1;\n          margin-left: 10px;\n        }\n      }\n    }\n  }\n</style>\n","import { defineComponent, ref, watch, computed, onMounted, createVNode } from \"vue\";\nconst calcAngle = (element, event) => {\n  const rect = element.getBoundingClientRect();\n  const originX = rect.left + rect.width / 2;\n  const originY = rect.top + rect.height / 2;\n  const x = Math.abs(originX - event.clientX);\n  const y = Math.abs(originY - event.clientY);\n  const z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n  const cos = y / z;\n  const rad = Math.acos(cos);\n  let angle = Math.floor(180 / (Math.PI / rad));\n  if (event.clientX > originX && event.clientY > originY) {\n    angle = 180 - angle;\n  }\n  if (event.clientX == originX && event.clientY > originY) {\n    angle = 180;\n  }\n  if (event.clientX > originX && event.clientY == originY) {\n    angle = 90;\n  }\n  if (event.clientX < originX && event.clientY > originY) {\n    angle = 180 + angle;\n  }\n  if (event.clientX < originX && event.clientY == originY) {\n    angle = 270;\n  }\n  if (event.clientX < originX && event.clientY < originY) {\n    angle = 360 - angle;\n  }\n  return angle;\n};\nlet isDragging = false;\nconst triggerDragEvent = (element, options) => {\n  const moveFn = function(event) {\n    var _a;\n    (_a = options.drag) == null ? void 0 : _a.call(options, event);\n  };\n  const upFn = function(event) {\n    var _a;\n    document.removeEventListener(\"mousemove\", moveFn, false);\n    document.removeEventListener(\"mouseup\", upFn, false);\n    document.onselectstart = null;\n    document.ondragstart = null;\n    isDragging = false;\n    (_a = options.end) == null ? void 0 : _a.call(options, event);\n  };\n  if (element) {\n    element.addEventListener(\"mousedown\", (event) => {\n      var _a;\n      if (isDragging)\n        return;\n      document.onselectstart = () => false;\n      document.ondragstart = () => false;\n      document.addEventListener(\"mousemove\", moveFn, false);\n      document.addEventListener(\"mouseup\", upFn, false);\n      isDragging = true;\n      (_a = options.start) == null ? void 0 : _a.call(options, event);\n    });\n  }\n  return;\n};\nvar index = \"\";\nconst angleProps = {\n  angle: {\n    type: Number,\n    default: 0\n  },\n  size: {\n    type: Number,\n    default: 16,\n    validator: (value) => {\n      return value >= 16;\n    }\n  },\n  borderWidth: {\n    type: Number,\n    default: 1,\n    validator: (value) => {\n      return value >= 1;\n    }\n  },\n  borderColor: {\n    type: String,\n    default: \"#666\"\n  }\n};\nvar Angle = defineComponent({\n  name: \"Angle\",\n  props: angleProps,\n  emits: [\"update:angle\", \"change\"],\n  setup(props, {\n    emit\n  }) {\n    const angleRef = ref(null);\n    const rotate = ref(props.angle);\n    watch(() => props.angle, (angle) => {\n      rotate.value = angle;\n    });\n    const updateAngle = () => {\n      let value = Number(rotate.value);\n      if (!isNaN(value)) {\n        value = value > 360 || value < 0 ? props.angle : value;\n        rotate.value = value === 360 ? 0 : value;\n        emit(\"update:angle\", rotate.value);\n        emit(\"change\", rotate.value);\n      }\n    };\n    const getStyle = computed(() => {\n      return {\n        width: props.size + \"px\",\n        height: props.size + \"px\",\n        borderWidth: props.borderWidth + \"px\",\n        borderColor: props.borderColor,\n        transform: `rotate(${rotate.value}deg)`\n      };\n    });\n    const handleDrag = (event) => {\n      if (angleRef.value) {\n        rotate.value = calcAngle(angleRef.value, event) % 360;\n        updateAngle();\n      }\n    };\n    onMounted(() => {\n      const dragConfig = {\n        drag: (event) => {\n          handleDrag(event);\n        },\n        end: (event) => {\n          handleDrag(event);\n        }\n      };\n      if (angleRef.value) {\n        triggerDragEvent(angleRef.value, dragConfig);\n      }\n    });\n    return () => {\n      return createVNode(\"div\", {\n        \"class\": \"bee-angle\"\n      }, [createVNode(\"div\", {\n        \"class\": \"bee-angle__round\",\n        \"ref\": angleRef,\n        \"style\": getStyle.value\n      }, null)]);\n    };\n  }\n});\nconst AnglePlugin = {\n  install: (app) => {\n    app.component(Angle.name, Angle);\n  }\n};\nexport { Angle, AnglePlugin as default };\n","import type { ComputedRef } from 'vue';\n\nexport type SupportLang = 'ZH-cn' | 'En';\n\nexport interface ColorPickerProvider {\n  lang: ComputedRef<SupportLang>;\n}\n\nexport type Placement =\n  | 'auto'\n  | 'auto-start'\n  | 'auto-end'\n  | 'top'\n  | 'left'\n  | 'right'\n  | 'bottom'\n  | 'top-start'\n  | 'top-end'\n  | 'bottom-start'\n  | 'bottom-end'\n  | 'right-start'\n  | 'right-end'\n  | 'left-start'\n  | 'left-end';\n\nexport const ColorPickerProviderKey = 'Vue3ColorPickerProvider';\n","<template>\n  <div class=\"vc-gradient-picker\">\n    <div class=\"vc-gradient-picker__header\" v-show=\"advancePanelShow\">\n      <span style=\"cursor: pointer\" @click=\"onBack\">\n        <div class=\"back\"></div>\n      </span>\n    </div>\n    <div class=\"vc-gradient-picker__body\">\n      <div class=\"vc-color-range\" ref=\"colorRangeRef\">\n        <div class=\"vc-color-range__container\">\n          <div class=\"vc-background\" :style=\"gradientBg\"></div>\n          <div class=\"vc-gradient__stop__container\">\n            <div\n              class=\"vc-gradient__stop\"\n              :class=\"{\n                'vc-gradient__stop--current': startActive,\n              }\"\n              ref=\"startGradientRef\"\n              :title=\"lang === 'ZH-cn' ? '开始' : 'Start'\"\n              :style=\"{ left: getStartColorLeft + 'px' }\"\n            >\n              <span class=\"vc-gradient__stop--inner\"></span>\n            </div>\n            <div\n              class=\"vc-gradient__stop\"\n              :class=\"{\n                'vc-gradient__stop--current': !startActive,\n              }\"\n              ref=\"stopGradientRef\"\n              :title=\"lang === 'ZH-cn' ? '结束' : 'End'\"\n              :style=\"{ left: getEndColorLeft + 'px' }\"\n            >\n              <span class=\"vc-gradient__stop--inner\"></span>\n            </div>\n          </div>\n        </div>\n      </div>\n      <div class=\"vc-picker-degree-input vc-degree-input\">\n        <div class=\"vc-degree-input__control\">\n          <input :value=\"angle\" @blur=\"onDegreeBlur\" />\n        </div>\n        <div class=\"vc-degree-input__panel\">\n          <div class=\"vc-degree-input__disk\">\n            <Angle v-model:angle=\"angle\" :size=\"40\" @change=\"onDegreeChange\" />\n          </div>\n        </div>\n      </div>\n    </div>\n    <Palette v-if=\"!advancePanelShow\" @change=\"onCompactChange\" />\n    <Board :color=\"currentColor\" v-if=\"advancePanelShow\" @change=\"onBoardChange\" />\n    <Hue v-if=\"advancePanelShow\" :color=\"currentColor\" @change=\"onHueChange\" />\n    <Lightness v-if=\"!advancePanelShow\" :color=\"currentColor\" @change=\"onLightChange\" />\n    <Alpha :color=\"currentColor\" @change=\"onAlphaChange\" v-if=\"!disableAlpha\" />\n    <Display :color=\"currentColor\" :disable-alpha=\"disableAlpha\" @change=\"onDisplayChange\" />\n    <History\n      :round=\"roundHistory\"\n      :colors=\"historyColors\"\n      v-if=\"!disableHistory\"\n      @change=\"onCompactChange\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\">\n  import { computed, defineComponent, inject, onMounted, reactive, ref, toRefs, watch } from 'vue';\n  import propTypes from 'vue-types';\n  import { Angle } from 'vue3-angle';\n  import Alpha from '../common/Alpha.vue';\n  import Palette from '../common/Palette.vue';\n  import Board from '../common/Board.vue';\n  import Hue from '../common/Hue.vue';\n  import Lightness from '../common/Lightness.vue';\n  import History from '../common/History.vue';\n\n  import 'vue3-angle/style.css';\n  import Display from '../common/Display.vue';\n  import { Color, HistoryColorKey, MAX_STORAGE_LENGTH } from '../utils/color';\n  import { useDebounceFn, useLocalStorage, whenever } from '@vueuse/core';\n  import type { RemovableRef } from '@vueuse/core';\n  import { DOMUtils } from '@aesoper/normal-utils';\n  import tinycolor from 'tinycolor2';\n  import { ColorPickerProviderKey } from '../utils/type';\n  import type { ColorPickerProvider } from '../utils/type';\n\n  export default defineComponent({\n    name: 'GradientColorPicker',\n    components: { Angle, Display, Alpha, Palette, Board, Hue, Lightness, History },\n    props: {\n      startColor: propTypes.instanceOf(Color).isRequired,\n      endColor: propTypes.instanceOf(Color).isRequired,\n      startColorStop: propTypes.number.def(0),\n      endColorStop: propTypes.number.def(100),\n      angle: propTypes.number.def(0),\n      disableHistory: propTypes.bool.def(false),\n      roundHistory: propTypes.bool.def(false),\n      disableAlpha: propTypes.bool.def(false),\n    },\n    emits: [\n      'update:startColor',\n      'update:endColor',\n      'update:angle',\n      'update:startColorStop',\n      'update:endColorStop',\n      'startColorChange',\n      'endColorChange',\n      'advanceChange',\n      'angleChange',\n      'startColorStopChange',\n      'endColorStopChange',\n    ],\n    setup(props, { emit }) {\n      const state = reactive({\n        startActive: true,\n        startColor: props.startColor,\n        endColor: props.endColor,\n        startColorStop: props.startColorStop,\n        endColorStop: props.endColorStop,\n        angle: props.angle,\n        // rgba\n        startColorRgba: props.startColor.toRgbString(),\n        endColorRgba: props.endColor.toRgbString(),\n      });\n\n      const parent = inject<ColorPickerProvider>(ColorPickerProviderKey);\n\n      const advancePanelShow = ref(false);\n\n      // Ref\n      const startGradientRef = ref<HTMLElement>();\n      const stopGradientRef = ref<HTMLElement>();\n      const colorRangeRef = ref<HTMLElement>();\n\n      watch(\n        () => [props.startColor, props.endColor, props.angle],\n        (val: any[]) => {\n          state.startColor = val[0];\n          state.endColor = val[1];\n          state.angle = val[2];\n        },\n      );\n\n      const currentColor = computed({\n        get: () => {\n          return (state.startActive ? state.startColor : state.endColor) as Color;\n        },\n        set: (v) => {\n          if (state.startActive) {\n            state.startColor = v;\n            return;\n          }\n          state.endColor = v;\n        },\n      });\n\n      const getStartColorLeft = computed(() => {\n        if (colorRangeRef.value && startGradientRef.value) {\n          const alpha = state.startColorStop / 100;\n          const rect = colorRangeRef.value.getBoundingClientRect();\n          const offsetWidth = startGradientRef.value.offsetWidth;\n\n          return Math.round(alpha * (rect.width - offsetWidth) + offsetWidth / 2);\n        }\n\n        return 0;\n      });\n\n      const getEndColorLeft = computed(() => {\n        if (colorRangeRef.value && stopGradientRef.value) {\n          const alpha = state.endColorStop / 100;\n          const rect = colorRangeRef.value.getBoundingClientRect();\n          const offsetWidth = stopGradientRef.value.offsetWidth;\n\n          return Math.round(alpha * (rect.width - offsetWidth) + offsetWidth / 2);\n        }\n\n        return 0;\n      });\n\n      const gradientBg = computed(() => {\n        return {\n          background: `linear-gradient(${state.angle}deg, ${state.startColorRgba} ${state.startColorStop}%, ${state.endColorRgba} ${state.endColorStop}%)`,\n        };\n      });\n\n      const dragStartRange = (evt: MouseEvent) => {\n        state.startActive = true;\n        if (colorRangeRef.value && startGradientRef.value) {\n          const rect = colorRangeRef.value?.getBoundingClientRect();\n\n          let left = evt.clientX - rect.left;\n          left = Math.max(startGradientRef.value.offsetWidth / 2, left);\n          left = Math.min(left, rect.width - startGradientRef.value.offsetWidth / 2);\n\n          state.startColorStop = Math.round(\n            ((left - startGradientRef.value.offsetWidth / 2) /\n              (rect.width - startGradientRef.value.offsetWidth)) *\n              100,\n          );\n\n          emit('update:startColorStop', state.startColorStop);\n          emit('startColorStopChange', state.startColorStop);\n        }\n      };\n\n      const dragEndRange = (evt: MouseEvent) => {\n        state.startActive = false;\n\n        if (colorRangeRef.value && stopGradientRef.value) {\n          const rect = colorRangeRef.value?.getBoundingClientRect();\n\n          let left = evt.clientX - rect.left;\n          left = Math.max(stopGradientRef.value.offsetWidth / 2, left);\n          left = Math.min(left, rect.width - stopGradientRef.value.offsetWidth / 2);\n\n          state.endColorStop = Math.round(\n            ((left - stopGradientRef.value.offsetWidth / 2) /\n              (rect.width - stopGradientRef.value.offsetWidth)) *\n              100,\n          );\n\n          emit('update:endColorStop', state.endColorStop);\n          emit('endColorStopChange', state.endColorStop);\n        }\n      };\n\n      const onDegreeBlur = (evt: FocusEvent) => {\n        const target = evt.target as HTMLInputElement;\n        const degree = parseInt(target.value.replace('°', ''));\n        if (!isNaN(degree)) {\n          state.angle = degree % 360;\n        }\n        emit('update:angle', state.angle);\n        emit('angleChange', state.angle);\n      };\n\n      const onDegreeChange = (angle: number) => {\n        state.angle = angle;\n        emit('update:angle', state.angle);\n        emit('angleChange', state.angle);\n      };\n\n      const onCompactChange = (color: string, isNotSave?: boolean) => {\n        if (color === 'advance') {\n          advancePanelShow.value = true;\n          emit('advanceChange', true);\n        } else {\n          // 预览情况不保存历史记录\n          if (!isNotSave) {\n            updateColorHistoryFn();\n          }\n          currentColor.value.hex = color;\n          emit('advanceChange', false);\n        }\n        doColorChange();\n      };\n\n      const onAlphaChange = (alpha: number) => {\n        currentColor.value.alpha = alpha;\n        doColorChange();\n      };\n\n      const onHueChange = (hue: number) => {\n        currentColor.value.hue = hue;\n        doColorChange();\n      };\n\n      const onBoardChange = (saturation: number, brightness: number) => {\n        currentColor.value.saturation = saturation;\n        currentColor.value.brightness = brightness;\n        doColorChange();\n      };\n\n      const onLightChange = (light: number) => {\n        currentColor.value.lightness = light;\n        doColorChange();\n      };\n\n      const onDisplayChange = () => {\n        doColorChange();\n      };\n\n      const doColorChange = () => {\n        if (state.startActive) {\n          emit('update:startColor', state.startColor);\n          emit('startColorChange', state.startColor);\n        } else {\n          emit('update:endColor', state.endColor);\n          emit('endColorChange', state.endColor);\n        }\n      };\n\n      const onBack = () => {\n        advancePanelShow.value = false;\n        emit('advanceChange', false);\n      };\n\n      const historyColors: RemovableRef<string[]> = useLocalStorage<string[]>(\n        HistoryColorKey,\n        [],\n        {},\n      );\n\n      const updateColorHistoryFn = useDebounceFn(() => {\n        if (props.disableHistory) {\n          return;\n        }\n        const rgbString = currentColor.value.toRgbString();\n\n        historyColors.value = historyColors.value.filter((value) => {\n          return !tinycolor.equals(value, rgbString);\n        });\n\n        if (historyColors.value.includes(rgbString)) {\n          return;\n        }\n\n        while (historyColors.value.length > MAX_STORAGE_LENGTH) {\n          historyColors.value.pop();\n        }\n\n        historyColors.value.unshift(rgbString);\n      }, 500);\n\n      onMounted(() => {\n        if (stopGradientRef.value && startGradientRef.value) {\n          DOMUtils.triggerDragEvent(stopGradientRef.value, {\n            drag: (event: Event) => {\n              dragEndRange(event as MouseEvent);\n            },\n            end: (event: Event) => {\n              dragEndRange(event as MouseEvent);\n            },\n          });\n          DOMUtils.triggerDragEvent(startGradientRef.value, {\n            drag: (event: Event) => {\n              dragStartRange(event as MouseEvent);\n            },\n            end: (event: Event) => {\n              dragStartRange(event as MouseEvent);\n            },\n          });\n        }\n      });\n\n      watch(\n        () => state.startColor,\n        (value) => {\n          state.startColorRgba = value.toRgbString();\n        },\n        { deep: true },\n      );\n\n      watch(\n        () => state.endColor,\n        (value) => {\n          state.endColorRgba = value.toRgbString();\n        },\n        { deep: true },\n      );\n\n      // watch(\n      //   () => currentColor.value,\n      //   () => {\n      //     // updateColorHistoryFn();\n      //   },\n      //   { deep: true },\n      // );\n\n      return {\n        ...toRefs(state),\n        startGradientRef,\n        stopGradientRef,\n        colorRangeRef,\n        currentColor,\n        getStartColorLeft,\n        getEndColorLeft,\n        gradientBg,\n        advancePanelShow,\n        onDegreeBlur,\n        onCompactChange,\n        onAlphaChange,\n        onHueChange,\n        onBoardChange,\n        onLightChange,\n        historyColors,\n        onBack,\n        onDegreeChange,\n        onDisplayChange,\n        lang: parent?.lang,\n      };\n    },\n  });\n</script>\n\n<style lang=\"scss\">\n  .vc-gradient-picker {\n    position: relative;\n\n    &__header {\n      margin-bottom: 20px;\n      z-index: 999;\n      text-align: left;\n\n      .back {\n        border: solid black;\n        border-width: 0 1px 1px 0;\n        display: inline-block;\n        padding: 4px;\n        margin-left: 2px;\n        transform: rotate(135deg);\n      }\n    }\n\n    &__body {\n      margin-bottom: 12px;\n      display: -ms-flexbox;\n      display: flex;\n      align-items: center;\n\n      .vc-color-range {\n        flex: 1;\n\n        &__container {\n          position: relative;\n          height: 16px;\n          border-radius: 5px;\n\n          .vc-background {\n            height: 100%;\n            border-radius: 4px;\n            box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.06);\n          }\n\n          .vc-gradient__stop__container {\n            position: absolute;\n            //width: calc(100% - 14px);\n            width: 100%;\n            top: 0;\n            height: 100%;\n            left: 0;\n            //left: 7px;\n\n            .vc-gradient__stop {\n              position: absolute;\n              top: -2px;\n              width: 14px;\n              height: 16px;\n              overflow: hidden;\n              border: 2px solid #fff;\n              border-radius: 2px;\n              cursor: pointer;\n              box-shadow: 0 0 2px rgba(0, 0, 0, 0.35);\n              box-sizing: content-box;\n              transform: translate(-9px, 0);\n\n              &--inner {\n                display: inline-block;\n                height: 100%;\n              }\n\n              &--current {\n                position: relative;\n                z-index: 1;\n                box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.2), 0 0 0 1.2px #2254f4;\n              }\n            }\n          }\n        }\n      }\n\n      .vc-degree-input {\n        position: relative;\n        z-index: 2;\n        font-size: 12px;\n        background-color: #f6f7f9;\n        border-radius: 4px;\n\n        &:hover {\n          .vc-degree-input__panel {\n            display: block;\n          }\n        }\n\n        &__control {\n          width: 100%;\n          height: 100%;\n          display: flex;\n          justify-content: center;\n          align-items: center;\n          border-radius: 4px;\n          background-color: inherit;\n\n          input {\n            max-width: 28px;\n            text-align: center;\n            border: none;\n            outline: none;\n            background-color: initial;\n            color: #33383e;\n            font-size: inherit;\n            overflow: visible;\n          }\n        }\n\n        &__panel {\n          display: none;\n          padding-top: 4px;\n          z-index: 10;\n\n          .vc-degree-input__disk {\n            width: 64px;\n            height: 64px;\n            background-color: #fff;\n            box-shadow: 0 0 2px rgba(0, 0, 0, 0.16), 0 1px 8px rgba(0, 0, 0, 0.06),\n              0 4px 12px rgba(0, 0, 0, 0.08);\n            border-radius: 4px;\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            position: relative;\n            transform: translate(0, 0);\n          }\n        }\n      }\n\n      .vc-picker-degree-input {\n        margin-left: 8px;\n        width: 64px;\n        height: 28px;\n      }\n    }\n  }\n</style>\n","<template>\n  <div class=\"vc-colorpicker\">\n    <div class=\"vc-colorpicker--container\">\n      <div class=\"vc-colorpicker--tabs\" v-if=\"showTab\">\n        <div class=\"vc-colorpicker--tabs__inner\">\n          <div\n            :class=\"[\n              'vc-colorpicker--tabs__btn',\n              {\n                'vc-btn-active': state.activeKey === 'pure',\n              },\n            ]\"\n            @click=\"onActiveKeyChange('pure')\"\n          >\n            <button>\n              <div class=\"vc-btn__content\">{{ lang === 'ZH-cn' ? '纯色' : 'Pure' }}</div>\n            </button>\n          </div>\n          <div\n            :class=\"[\n              'vc-colorpicker--tabs__btn',\n              {\n                'vc-btn-active': state.activeKey === 'gradient',\n              },\n            ]\"\n            @click=\"onActiveKeyChange('gradient')\"\n          >\n            <button>\n              <div class=\"vc-btn__content\">{{ lang === 'ZH-cn' ? '渐变色' : 'Gradient' }}</div>\n            </button>\n          </div>\n          <div\n            class=\"vc-colorpicker--tabs__bg\"\n            :style=\"{\n              width: `50%`,\n              left: `calc(${state.activeKey === 'gradient' ? 50 : 0}%)`,\n            }\"\n          ></div>\n        </div>\n      </div>\n      <slot></slot>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\n  import { defineComponent, inject, reactive, watch } from 'vue';\n  import propTypes from 'vue-types';\n  import { whenever } from '@vueuse/core';\n  import { ColorPickerProviderKey } from '../utils/type';\n  import type { ColorPickerProvider } from '../utils/type';\n\n  export default defineComponent({\n    name: 'WrapContainer',\n    props: {\n      showTab: propTypes.bool.def(false),\n      activeKey: propTypes.oneOf(['pure', 'gradient']).def('pure'),\n    },\n    emits: ['update:activeKey', 'change'],\n    setup(props, { emit }) {\n      const state = reactive({\n        activeKey: props.activeKey,\n      });\n\n      const parent = inject<ColorPickerProvider>(ColorPickerProviderKey);\n\n      const onActiveKeyChange = (key: string) => {\n        state.activeKey = key;\n        emit('update:activeKey', key);\n        emit('change', key);\n      };\n\n      watch(\n        () => props.activeKey,\n        (value) => {\n          state.activeKey = value;\n        },\n      );\n\n      return { state, onActiveKeyChange, lang: parent?.lang };\n    },\n  });\n</script>\n\n<style lang=\"scss\">\n  .vc-colorpicker {\n    position: relative;\n    box-sizing: border-box;\n    border-radius: 3px;\n    box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);\n    user-select: none;\n    background-color: white;\n    width: 258px;\n    padding-bottom: 10px;\n    z-index: 10000;\n\n    * {\n      outline: none;\n      line-height: 1;\n    }\n\n    &--container {\n      padding: 16px;\n    }\n\n    &--tabs {\n      padding: 2px;\n      background: #f6f7f9;\n      border-radius: 6px;\n      position: relative;\n      margin-bottom: 12px;\n\n      &__inner {\n        display: -ms-flexbox;\n        display: flex;\n        -ms-flex-pack: justify;\n        justify-content: space-between;\n        padding: 0;\n        background: #f6f7f9;\n        border-bottom: none;\n        position: relative;\n        box-sizing: border-box;\n      }\n\n      &__btn {\n        -ms-flex: 1;\n        flex: 1;\n        z-index: 2;\n        color: #636c78;\n        font-size: 14px;\n        border-radius: 4px;\n        cursor: pointer;\n\n        &.vc-btn-active {\n          color: #33383e;\n          font-weight: 600;\n        }\n\n        button {\n          width: 100%;\n          background-color: initial;\n          padding: 6px 0;\n          font-size: 14px;\n          line-height: 20px;\n          color: #636c78;\n          border: 0;\n          border-radius: 0;\n          outline: 0;\n          cursor: pointer;\n          -webkit-appearance: none;\n          font-weight: inherit;\n\n          .vc-btn__content {\n            position: relative;\n            white-space: nowrap;\n          }\n        }\n      }\n\n      &__bg {\n        position: absolute;\n        top: 0;\n        bottom: 0;\n        background: #fff;\n        box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12);\n        border-radius: 4px;\n        z-index: 1;\n        transition: left 0.2s ease-in-out;\n      }\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) {\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\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.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 (process.env.NODE_ENV !== \"production\") {\n    if (!isHTMLElement(arrowElement)) {\n      console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n    }\n\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) {\n  var x = _ref.x,\n      y = _ref.y;\n  var win = window;\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  }) : {\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\n  if (process.env.NODE_ENV !== \"production\") {\n    var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n    if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n      return transitionProperty.indexOf(property) >= 0;\n    })) {\n      console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n    }\n  }\n\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\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n    }\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 format(str) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n\n  return [].concat(args).reduce(function (p, c) {\n    return p.replace(/%s/, c);\n  }, str);\n}","import format from \"./format.js\";\nimport { modifierPhases } from \"../enums.js\";\nvar INVALID_MODIFIER_ERROR = 'Popper: modifier \"%s\" provided an invalid %s property, expected %s but got %s';\nvar MISSING_DEPENDENCY_ERROR = 'Popper: modifier \"%s\" requires \"%s\", but \"%s\" modifier is not available';\nvar VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options'];\nexport default function validateModifiers(modifiers) {\n  modifiers.forEach(function (modifier) {\n    [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)`\n    .filter(function (value, index, self) {\n      return self.indexOf(value) === index;\n    }).forEach(function (key) {\n      switch (key) {\n        case 'name':\n          if (typeof modifier.name !== 'string') {\n            console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '\"name\"', '\"string\"', \"\\\"\" + String(modifier.name) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'enabled':\n          if (typeof modifier.enabled !== 'boolean') {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"enabled\"', '\"boolean\"', \"\\\"\" + String(modifier.enabled) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'phase':\n          if (modifierPhases.indexOf(modifier.phase) < 0) {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"phase\"', \"either \" + modifierPhases.join(', '), \"\\\"\" + String(modifier.phase) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'fn':\n          if (typeof modifier.fn !== 'function') {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"fn\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'effect':\n          if (modifier.effect != null && typeof modifier.effect !== 'function') {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"effect\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'requires':\n          if (modifier.requires != null && !Array.isArray(modifier.requires)) {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"requires\"', '\"array\"', \"\\\"\" + String(modifier.requires) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'requiresIfExists':\n          if (!Array.isArray(modifier.requiresIfExists)) {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"requiresIfExists\"', '\"array\"', \"\\\"\" + String(modifier.requiresIfExists) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'options':\n        case 'data':\n          break;\n\n        default:\n          console.error(\"PopperJS: an invalid property has been provided to the \\\"\" + modifier.name + \"\\\" modifier, valid properties are \" + VALID_PROPERTIES.map(function (s) {\n            return \"\\\"\" + s + \"\\\"\";\n          }).join(', ') + \"; but \\\"\" + key + \"\\\" was provided.\");\n      }\n\n      modifier.requires && modifier.requires.forEach(function (requirement) {\n        if (modifiers.find(function (mod) {\n          return mod.name === requirement;\n        }) == null) {\n          console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));\n        }\n      });\n    });\n  });\n}","export default function uniqueBy(arr, fn) {\n  var identifiers = new Set();\n  return arr.filter(function (item) {\n    var identifier = fn(item);\n\n    if (!identifiers.has(identifier)) {\n      identifiers.add(identifier);\n      return true;\n    }\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 getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\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        }); // Validate the provided modifiers so that the consumer will get warned\n        // if one of the modifiers is invalid for any reason\n\n        if (process.env.NODE_ENV !== \"production\") {\n          var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n            var name = _ref.name;\n            return name;\n          });\n          validateModifiers(modifiers);\n\n          if (getBasePlacement(state.options.placement) === auto) {\n            var flipModifier = state.orderedModifiers.find(function (_ref2) {\n              var name = _ref2.name;\n              return name === 'flip';\n            });\n\n            if (!flipModifier) {\n              console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n            }\n          }\n\n          var _getComputedStyle = getComputedStyle(popper),\n              marginTop = _getComputedStyle.marginTop,\n              marginRight = _getComputedStyle.marginRight,\n              marginBottom = _getComputedStyle.marginBottom,\n              marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n          // cause bugs with positioning, so we'll warn the consumer\n\n\n          if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n            return parseFloat(margin);\n          })) {\n            console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n          }\n        }\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          if (process.env.NODE_ENV !== \"production\") {\n            console.error(INVALID_ELEMENT_ERROR);\n          }\n\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        var __debug_loops__ = 0;\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (process.env.NODE_ENV !== \"production\") {\n            __debug_loops__ += 1;\n\n            if (__debug_loops__ > 100) {\n              console.error(INFINITE_LOOP_ERROR);\n              break;\n            }\n          }\n\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      if (process.env.NODE_ENV !== \"production\") {\n        console.error(INVALID_ELEMENT_ERROR);\n      }\n\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 (_ref3) {\n        var name = _ref3.name,\n            _ref3$options = _ref3.options,\n            options = _ref3$options === void 0 ? {} : _ref3$options,\n            effect = _ref3.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\";","import propTypes from 'vue-types';\r\nimport { ExtractPropTypes, PropType } from 'vue';\r\nimport { ColorFormat } from './utils/color';\r\nimport { Placement, SupportLang } from './utils/type';\r\n\r\nexport const colorPickerProps = {\r\n  // 是否以控件形式展示\r\n  isWidget: propTypes.bool.def(false),\r\n  // 方块或是chrome 形式展现\r\n  pickerType: propTypes.oneOf(['tk', 'chrome']).def('tk'),\r\n  // 展示形状 circle: 圆形 , square: 方形\r\n  shape: propTypes.oneOf(['circle', 'square']).def('square'),\r\n  // 纯色颜色值\r\n  // pureColor: {\r\n  //   type: [String, Object] as PropType<ColorInputWithoutInstance>,\r\n  //   default: '#000000',\r\n  // },\r\n  // // 渐变色颜色值\r\n  // gradientColor: propTypes.string.def(\r\n  //   'linear-gradient(90deg, rgba(255, 255, 255, 1) 0%, rgba(0, 0, 0, 1) 100%)',\r\n  // ),\r\n  modelValue: {\r\n    type: String as PropType<string>,\r\n    required: true,\r\n    default: '#ffffff',\r\n  },\r\n  // 颜色格式\r\n  // format: 'rgba', // 'hsla' || 'rgba' || 'hex' || 'hsl' || 'rgb'\r\n  format: {\r\n    type: String as PropType<ColorFormat>,\r\n    default: 'rgb',\r\n  },\r\n  // 关闭Alpha\r\n  disableAlpha: propTypes.bool.def(false),\r\n  // 关闭历史记录\r\n  disableHistory: propTypes.bool.def(false),\r\n  // 是否圆形显示历史记录\r\n  roundHistory: propTypes.bool.def(false),\r\n  // 纯色/渐变色/都展示\r\n  useType: propTypes.oneOf(['pure', 'gradient', 'both']).def('pure'),\r\n  // 默认激活纯色或渐变色\r\n  activeKey: propTypes.oneOf(['pure', 'gradient']).def('pure'),\r\n  // 展示语言\r\n  lang: {\r\n    type: String as PropType<SupportLang>,\r\n    default: 'ZH-cn',\r\n  },\r\n  // 显示位置\r\n  placement: {\r\n    type: String as PropType<Placement>,\r\n    default: 'auto',\r\n  },\r\n  zIndex: propTypes.number.def(9999),\r\n  /**\r\n   * 默认颜色，modelValue为空时，默认显示的颜色\r\n   */\r\n  defPureColor: {\r\n    type: String as PropType<string>,\r\n    default: '',\r\n  },\r\n};\r\n\r\nexport type ColorPickerProps = ExtractPropTypes<typeof colorPickerProps>;\r\n","import {\n  BackgroundAttribute,\n  BackgroundPositionXProp,\n  BackgroundPositionYProp,\n  BackgroundRepeatProp,\n  BackgroundSizeProp,\n} from '../../../types/background';\n\n/**\n * 背景模型数据\n */\nconst IMAGE_POSITION = [\n  {\n    key: 'left-top',\n    backgroundRepeat: 'no-repeat',\n    backgroundPositionX: 'left',\n    backgroundPositionY: 'top',\n    backgroundSize: 'auto',\n  },\n  {\n    key: 'center-top',\n    backgroundRepeat: 'no-repeat',\n    backgroundPositionX: 'center',\n    backgroundPositionY: 'top',\n    backgroundSize: 'auto',\n  },\n  {\n    key: 'right-top',\n    backgroundRepeat: 'no-repeat',\n    backgroundPositionX: 'right',\n    backgroundPositionY: 'top',\n    backgroundSize: 'auto',\n  },\n  {\n    key: 'left-center',\n    backgroundRepeat: 'no-repeat',\n    backgroundPositionX: 'left',\n    backgroundPositionY: 'center',\n    backgroundSize: 'auto',\n  },\n  {\n    key: 'center-center',\n    backgroundRepeat: 'no-repeat',\n    backgroundPositionX: 'center',\n    backgroundPositionY: 'center',\n    backgroundSize: 'auto',\n  },\n  {\n    key: 'right-center',\n    backgroundRepeat: 'no-repeat',\n    backgroundPositionX: 'right',\n    backgroundPositionY: 'center',\n    backgroundSize: 'auto',\n  },\n  {\n    key: 'left-bottom',\n    backgroundRepeat: 'no-repeat',\n    backgroundPositionX: 'left',\n    backgroundPositionY: 'bottom',\n    backgroundSize: 'auto',\n  },\n  {\n    key: 'center-bottom',\n    backgroundRepeat: 'no-repeat',\n    backgroundPositionX: 'center',\n    backgroundPositionY: 'bottom',\n    backgroundSize: 'auto',\n  },\n  {\n    key: 'right-bottom',\n    backgroundRepeat: 'no-repeat',\n    backgroundPositionX: 'right',\n    backgroundPositionY: 'bottom',\n    backgroundSize: 'auto',\n  },\n];\n// 图片平铺\nconst IMAGE_PAVING_EFFECT = [\n  {\n    label: '默认',\n    key: 'default',\n    backgroundRepeat: 'repeat',\n    backgroundPositionX: 'center',\n    backgroundPositionY: 'center',\n    backgroundSize: 'auto',\n  },\n  {\n    label: '缩放平铺',\n    key: 'zoom-tile',\n    backgroundRepeat: 'no-repeat',\n    backgroundPositionX: 'center',\n    backgroundPositionY: 'top',\n    backgroundSize: '100%',\n  },\n  {\n    label: '上',\n    key: 'top',\n    backgroundRepeat: 'repeat-x',\n    backgroundPositionX: 'center',\n    backgroundPositionY: 'top',\n    backgroundSize: 'auto',\n  },\n  {\n    label: '中-横向',\n    key: 'in-horizontal',\n    backgroundRepeat: 'repeat-x',\n    backgroundPositionX: 'center',\n    backgroundPositionY: 'center',\n    backgroundSize: 'auto',\n  },\n  {\n    label: '下',\n    key: 'bottom',\n    backgroundRepeat: 'repeat-x',\n    backgroundPositionX: 'center',\n    backgroundPositionY: 'bottom',\n    backgroundSize: 'auto',\n  },\n  {\n    label: '左',\n    key: 'left',\n    backgroundRepeat: 'repeat-y',\n    backgroundPositionX: 'left',\n    backgroundPositionY: 'top',\n    backgroundSize: 'auto',\n  },\n  {\n    label: '中-纵向',\n    key: 'in-vertical',\n    backgroundRepeat: 'repeat-y',\n    backgroundPositionX: 'center',\n    backgroundPositionY: 'top',\n    backgroundSize: 'auto',\n  },\n  {\n    label: '右',\n    key: 'right',\n    backgroundRepeat: 'repeat-y',\n    backgroundPositionX: 'right',\n    backgroundPositionY: 'top',\n    backgroundSize: 'auto',\n  },\n];\n// 图片缩放\nconst IMAGE_SCALING_STRETCH = [\n  {\n    backgroundRepeat: 'no-repeat',\n    backgroundPositionX: 'left',\n    backgroundPositionY: 'center',\n    backgroundSize: '100% 100%',\n  },\n];\n// 图片填充\nconst IMAGE_SCALING_FILL = [\n  {\n    backgroundRepeat: 'no-repeat',\n    backgroundPositionX: 'center',\n    backgroundPositionY: 'center',\n    backgroundSize: 'cover',\n  },\n];\n// 图片等比\nconst IMAGE_SCALING_CONTAIN = [\n  {\n    backgroundRepeat: 'no-repeat',\n    backgroundPositionX: 'center',\n    backgroundPositionY: 'center',\n    backgroundSize: 'contain',\n  },\n];\n\nconst sizeOptions = ['auto', '100%', '100% 100%', 'cover', 'contain'];\n\nconst repeatOption = {\n  default: 3,\n  'zoom-tile': 5,\n  top: 11,\n  'in-horizontal': 1,\n  bottom: 12,\n  left: 21,\n  'in-vertical': 2,\n  right: 22,\n  'left-top': 13,\n  'center-top': 8,\n  'right-top': 14,\n  'left-center': 6,\n  'center-center': 0,\n  'right-center': 7,\n  'left-bottom': 15,\n  'center-bottom': 9,\n  'right-bottom': 16,\n};\n\n/**\n * 组合平铺信息\n * @param backgroundRepeat\n * @param backgroundPositionX\n * @param backgroundPositionY\n * @param backgroundSize\n */\nconst composeRepeatInfo = ({\n  backgroundRepeat,\n  backgroundPositionX,\n  backgroundPositionY,\n  backgroundSize,\n}: Partial<BackgroundAttribute>) =>\n  [backgroundRepeat, backgroundPositionX, backgroundPositionY, backgroundSize].join(',');\n\n/**\n * 解析平铺信息\n * @param repeatInfoComposed\n */\nconst parseRepeatInfo = (repeatInfoComposed: string) =>\n  //backgroundRepeat, backgroundPositionX, backgroundPositionY, backgroundSize\n  repeatInfoComposed.split(',') as [\n    backgroundRepeat: BackgroundRepeatProp,\n    backgroundPositionX: BackgroundPositionXProp,\n    backgroundPositionY: BackgroundPositionYProp,\n    backgroundSize: BackgroundSizeProp,\n  ];\n\n/**\n * 解析图片路径\n * @param backgroundImage\n */\nfunction parseBackgroundImageUrl(backgroundImage: string) {\n  let ret = '';\n  if (backgroundImage) {\n    const found = backgroundImage.match(/url\\(\\s*['|\"\"]?\\s*(\\S+)\\s*['|\"\"]?\\s*\\)/);\n    if (found && found[1]) {\n      ret = found[1];\n    }\n  }\n  return ret;\n}\n// 解析渐变色\nfunction parseBackgroundImageGradient(backgroundImage: string) {\n  let ret = '';\n  if (backgroundImage) {\n    const found = backgroundImage.match(/linear-gradient\\(\\s*.+\\s*\\)/);\n    if (found && found[0]) {\n      ret = found[0];\n    }\n  }\n  return ret;\n}\nfunction concatBackgroundColor(color: string) {\n  return /linear-gradient\\(/.test(color) ? '' : color;\n}\nfunction concatBackgroundImage(imageUrl: string, color: string) {\n  return [imageUrl ? 'url(' + imageUrl + ')' : '', /linear-gradient\\(/.test(color) ? color : '']\n    .filter(function (x) {\n      return x;\n    })\n    .join(',');\n}\n\nexport default {\n  IMAGE_POSITION,\n  IMAGE_PAVING_EFFECT,\n  IMAGE_SCALING_STRETCH,\n  IMAGE_SCALING_FILL,\n  IMAGE_SCALING_CONTAIN,\n  sizeOptions,\n  repeatOption,\n  composeRepeatInfo,\n  parseRepeatInfo,\n  parseBackgroundImageUrl,\n  parseBackgroundImageGradient,\n  concatBackgroundColor,\n  concatBackgroundImage,\n};\n","import { ExtractPropTypes, PropType } from 'vue';\nimport { BackgroundAttribute, ColorPickerOptions } from '../../../types';\n\nexport const defaultPackgroundData = {\n  backgroundColor: '',\n  backgroundImage: '',\n  backgroundRepeat: 'no-repeat',\n  backgroundPositionX: 'center',\n  backgroundPositionY: 'center',\n  backgroundSize: 'auto',\n  backgroundAttachment: 'fixed',\n  opacity: 1,\n};\n\nexport const defaultColorPickerOptions = {\n  shape: 'square',\n  pureColor: '#ffffff',\n  gradientColor: '',\n  format: 'rgb',\n  disableHistory: true,\n  useType: 'pure',\n  placement: 'auto',\n};\n\nexport const backgroundProps = {\n  backgroundData: {\n    type: Object as PropType<BackgroundAttribute>,\n    required: true,\n  },\n  fileUpload: Function,\n  linkJump: Function,\n  // 是否使用附件\n  useAttachment: Boolean,\n  labelCol: {\n    type: Number as PropType<number>,\n    default: 5,\n  },\n  wrapperCol: {\n    type: Number as PropType<number>,\n    default: 19,\n  },\n  // 拾色器配置\n  colorPickerOptions: {\n    type: Object as PropType<Partial<ColorPickerOptions>>,\n    default: () => {\n      return defaultColorPickerOptions;\n    },\n  },\n};\n\nexport type BackgroundProps = Partial<ExtractPropTypes<typeof backgroundProps>>;\n","import { BackgroundAttribute, BackgroundRepeatProp, BackgroundSizeProp } from '../types/background';\r\nimport {\r\n  computed,\r\n  getCurrentInstance,\r\n  onBeforeUpdate,\r\n  reactive,\r\n  ref,\r\n  toRef,\r\n  unref,\r\n  watch,\r\n} from 'vue';\r\n\r\nimport backGroundHelper from '../components/background/src/helper';\r\nimport { BackgroundProps, defaultPackgroundData } from '../components/background/src/props';\r\n\r\nconst {\r\n  composeRepeatInfo,\r\n  concatBackgroundColor,\r\n  concatBackgroundImage,\r\n  IMAGE_PAVING_EFFECT,\r\n  IMAGE_POSITION,\r\n  IMAGE_SCALING_CONTAIN,\r\n  IMAGE_SCALING_FILL,\r\n  IMAGE_SCALING_STRETCH,\r\n  parseBackgroundImageGradient,\r\n  parseBackgroundImageUrl,\r\n  parseRepeatInfo,\r\n  sizeOptions,\r\n} = backGroundHelper;\r\n\r\nexport function useBackground(props: BackgroundProps) {\r\n  const input = ref<HTMLInputElement>();\r\n  const { emit } = getCurrentInstance()!;\r\n\r\n  const state = reactive<{\r\n    cache: BackgroundAttribute | null;\r\n    typePrivate: number;\r\n    background: BackgroundAttribute;\r\n    loading: boolean;\r\n  }>({\r\n    cache: null,\r\n    typePrivate: -1,\r\n    background: Object.assign(defaultPackgroundData, props.backgroundData) as BackgroundAttribute,\r\n    loading: false,\r\n  });\r\n\r\n  onBeforeUpdate(() => {\r\n    console.log('onBeforeUpdate 111...');\r\n    if (props.backgroundData) {\r\n      console.log('onBeforeUpdate 222...');\r\n      state.background = props.backgroundData;\r\n    }\r\n  });\r\n\r\n  const imageUrl = computed(() => {\r\n    console.log('computed imageUrl==> %o', state.background.backgroundImage);\r\n    return parseBackgroundImageUrl(state.background.backgroundImage) || '';\r\n  });\r\n\r\n  const colorForPicker = computed({\r\n    get: () => {\r\n      debugger;\r\n      const color =\r\n        parseBackgroundImageGradient(state.background.backgroundImage) ||\r\n        props?.backgroundData?.backgroundColor ||\r\n        '';\r\n      console.log('colorForPicker ==> %o', color);\r\n      return color;\r\n    },\r\n    set: (newVal) => {\r\n      console.log('newVal %o', newVal);\r\n    },\r\n  });\r\n\r\n  const repeatInfoComposed = computed({\r\n    get: () => {\r\n      const defaultOption = IMAGE_PAVING_EFFECT[0];\r\n      const {\r\n        backgroundRepeat = defaultOption.backgroundRepeat,\r\n        backgroundPositionX = defaultOption.backgroundPositionX,\r\n        backgroundPositionY = defaultOption.backgroundPositionY,\r\n        backgroundSize = defaultOption.backgroundSize,\r\n      } = state.background;\r\n      return [backgroundRepeat, backgroundPositionX, backgroundPositionY, backgroundSize].join(',');\r\n    },\r\n    set: (newVal) => {\r\n      handleRepeatChange(newVal);\r\n    },\r\n  });\r\n\r\n  // 平铺效果数据集\r\n  const pavingEffectList = computed(() => {\r\n    const pavingList = IMAGE_PAVING_EFFECT.filter(\r\n      ({ backgroundSize }) => backgroundSize && sizeOptions.indexOf(backgroundSize) > -1,\r\n    ).map((item) => ({\r\n      value: composeRepeatInfo(item as Partial<BackgroundAttribute>),\r\n      label: item.label,\r\n      type: item.key,\r\n    }));\r\n\r\n    console.log('pavingList ===> %o', pavingList);\r\n\r\n    return pavingList;\r\n  });\r\n\r\n  // 平铺效果数据\r\n  const pavingEffectInfos = computed(() => {\r\n    return IMAGE_PAVING_EFFECT.filter(\r\n      ({ backgroundSize }) => backgroundSize && sizeOptions.indexOf(backgroundSize) > -1,\r\n    ).map((item) => composeRepeatInfo(item as Partial<BackgroundAttribute>));\r\n  });\r\n\r\n  // 是否是平铺\r\n  const isOnPavingEffect = computed(() => {\r\n    console.log(\r\n      'pavingEffectInfos=%o, repeatInfoComposed=%o',\r\n      pavingEffectInfos.value,\r\n      repeatInfoComposed.value,\r\n    );\r\n    return unref(pavingEffectInfos)?.indexOf(unref(repeatInfoComposed)) > -1;\r\n  });\r\n\r\n  // 是否显示图片位置\r\n  const isOnImagePosition = computed(() => {\r\n    console.log(\r\n      'imagePositionInfos=%o, repeatInfoComposed=%o',\r\n      imagePositionInfos.value,\r\n      repeatInfoComposed.value,\r\n    );\r\n    return unref(imagePositionInfos)?.indexOf(unref(repeatInfoComposed)) > -1;\r\n  });\r\n\r\n  // 图片位置数据\r\n  const imagePositionInfos = computed(() => {\r\n    return IMAGE_POSITION.filter(\r\n      ({ backgroundSize }) => backgroundSize && sizeOptions.indexOf(backgroundSize) > -1,\r\n    ).map((item) => composeRepeatInfo(item as Partial<BackgroundAttribute>));\r\n  });\r\n\r\n  // 图片拉伸数据\r\n  const stretchInfos = computed(() => {\r\n    return IMAGE_SCALING_STRETCH.filter(\r\n      ({ backgroundSize }) => backgroundSize && sizeOptions.indexOf(backgroundSize) > -1,\r\n    ).map((item) => composeRepeatInfo(item as Partial<BackgroundAttribute>));\r\n  });\r\n\r\n  // 是否展示拉升\r\n  const isOnStretch = computed(() => {\r\n    return unref(stretchInfos).indexOf(unref(repeatInfoComposed)) > -1;\r\n  });\r\n\r\n  // 图片填充数据\r\n  const fillInfos = computed(() => {\r\n    return IMAGE_SCALING_FILL.filter(\r\n      ({ backgroundSize }) => backgroundSize && sizeOptions.indexOf(backgroundSize) > -1,\r\n    ).map((item) => composeRepeatInfo(item as Partial<BackgroundAttribute>));\r\n  });\r\n\r\n  // 等比例 信息\r\n  const containInfos = computed(() => {\r\n    return IMAGE_SCALING_CONTAIN.filter(\r\n      ({ backgroundSize }) => backgroundSize && sizeOptions.indexOf(backgroundSize) > -1,\r\n    ).map((item) => composeRepeatInfo(item as Partial<BackgroundAttribute>));\r\n  });\r\n\r\n  // 是否是填充\r\n  const isOnFill = computed(() => {\r\n    return unref(fillInfos).indexOf(repeatInfoComposed.value) > -1;\r\n  });\r\n\r\n  // 是否是等比例\r\n  const isOnContain = computed(() => {\r\n    return unref(containInfos).indexOf(repeatInfoComposed.value) > -1;\r\n  });\r\n\r\n  const backgroundAttachment = computed(() => {\r\n    const { backgroundAttachment = 'scroll' } = state.background;\r\n    return backgroundAttachment;\r\n  });\r\n\r\n  const opacityForSlider = computed({\r\n    get: () => {\r\n      const { opacity = 1 } = state.background;\r\n      return parseFloat((opacity * 100).toFixed(0));\r\n    },\r\n    set: (newVal) => {\r\n      handleOpacityChange(newVal);\r\n    },\r\n  });\r\n\r\n  const imageScaling = computed({\r\n    get: () => {\r\n      return isOnPavingEffect.value\r\n        ? 0\r\n        : isOnImagePosition.value\r\n        ? 1\r\n        : isOnStretch.value\r\n        ? 2\r\n        : isOnFill.value\r\n        ? 3\r\n        : isOnContain.value\r\n        ? 4\r\n        : -1;\r\n    },\r\n    set: (newVal) => {\r\n      console.log('start scaling ....');\r\n      handleImageScalingChange(newVal);\r\n      console.log('end scaling ....');\r\n    },\r\n  });\r\n\r\n  const shouldRenderAttachment = computed(() => {\r\n    return imageUrl.value && props.useAttachment && isSupportAttachment(state.background);\r\n  });\r\n\r\n  function isSupportAttachment({\r\n    backgroundRepeat,\r\n    backgroundSize,\r\n  }: {\r\n    backgroundRepeat: BackgroundRepeatProp;\r\n    backgroundSize: BackgroundSizeProp;\r\n  }) {\r\n    return (\r\n      backgroundRepeat &&\r\n      backgroundRepeat !== 'repeat' &&\r\n      backgroundSize &&\r\n      backgroundSize === 'auto'\r\n    );\r\n  }\r\n\r\n  const shouldRenderOpacity = computed(() => {\r\n    const { opacity = 1 } = state.background;\r\n    return imageUrl.value && opacity >= 0;\r\n  });\r\n\r\n  const backgroundType = computed({\r\n    get() {\r\n      return imageUrl.value ? 1 : state.typePrivate > -1 ? state.typePrivate : 0;\r\n    },\r\n    set(newVal) {\r\n      state.typePrivate = newVal;\r\n      if (newVal === 0) {\r\n        state.cache = { ...state.background };\r\n        const currentValue = {\r\n          backgroundColor: concatBackgroundColor(colorForPicker.value),\r\n          backgroundImage: concatBackgroundImage('', colorForPicker.value),\r\n        };\r\n        //emit('update:modelValue', currentValue);\r\n        emit('typeChange', currentValue);\r\n      } else if (state.cache) {\r\n        const currentValue = {\r\n          ...state.cache,\r\n          backgroundColor: concatBackgroundColor(colorForPicker.value),\r\n          backgroundImage: concatBackgroundImage(\r\n            parseBackgroundImageUrl(state.cache.backgroundImage),\r\n            colorForPicker.value,\r\n          ),\r\n        };\r\n        //emit('update:modelValue', currentValue);\r\n        emit('typeChange', currentValue);\r\n      }\r\n    },\r\n  });\r\n\r\n  function handleDel() {\r\n    const currentValue = {\r\n      backgroundColor: concatBackgroundColor(colorForPicker.value),\r\n      backgroundImage: concatBackgroundImage('', colorForPicker.value),\r\n    };\r\n    // emit('update:modelValue', currentValue);\r\n    emit('imageChange', currentValue);\r\n    if (state.typePrivate === -1) {\r\n      state.typePrivate = 1;\r\n    }\r\n  }\r\n\r\n  function getCurrentValueByColor(color: string) {\r\n    return {\r\n      ...state.background,\r\n      backgroundColor: concatBackgroundColor(color),\r\n      backgroundImage: concatBackgroundImage(imageUrl.value, color),\r\n    };\r\n  }\r\n\r\n  function handleColorInput(color: string) {\r\n    const currentValue = getCurrentValueByColor(color);\r\n    // emit('update:modelValue', currentValue);\r\n    emit('colorChanging', currentValue);\r\n  }\r\n\r\n  function handleColorChangeStop(color: string) {\r\n    const currentValue = getCurrentValueByColor(color);\r\n    // emit('update:modelValue', currentValue);\r\n    emit('colorChange', currentValue);\r\n  }\r\n\r\n  function handleThemeColorClick(themeColor: string) {\r\n    console.log('handleThemeColorClick ===========>%o', themeColor);\r\n    emit('colorChanging', themeColor);\r\n  }\r\n\r\n  function handleJump() {\r\n    if (props.linkJump) {\r\n      props.linkJump();\r\n    } else {\r\n      window.open(imageUrl.value);\r\n    }\r\n  }\r\n\r\n  function handleFileUpload() {\r\n    if (props.fileUpload) {\r\n      props.fileUpload();\r\n    } else {\r\n      const inputEl = input.value;\r\n      if (inputEl) {\r\n        inputEl.value = '';\r\n        inputEl.click();\r\n      }\r\n    }\r\n  }\r\n\r\n  function handleFileChange() {\r\n    // const { files } = ev.target;\r\n    // if (!files) return;\r\n\r\n    // const imageUrl = URL.createObjectURL(files[0]);\r\n\r\n    const imageUrl =\r\n      `url('https://1.s140i.faiscm.com/2/AIwBCAAQAhgAIJn17NUFKKCYhZkFMIAPOIAK.jpg')` || '';\r\n\r\n    const [backgroundRepeat, backgroundPositionX, backgroundPositionY, backgroundSize] =\r\n      parseRepeatInfo(repeatInfoComposed.value);\r\n\r\n    const currentValue = {\r\n      ...state.background,\r\n      backgroundRepeat,\r\n      backgroundPositionX,\r\n      backgroundPositionY,\r\n      backgroundSize,\r\n      backgroundImage: concatBackgroundImage(imageUrl, colorForPicker.value),\r\n    };\r\n    // emit('update:modelValue', currentValue);\r\n    emit('imageChange', currentValue);\r\n  }\r\n\r\n  function handleImageScalingChange(newVal: number) {\r\n    let currentRepeatInfoComposed = '';\r\n    switch (newVal) {\r\n      case 0:\r\n        currentRepeatInfoComposed = unref(pavingEffectInfos)[0];\r\n        break;\r\n      case 1:\r\n        currentRepeatInfoComposed = unref(imagePositionInfos)[4];\r\n        break;\r\n      case 2:\r\n        currentRepeatInfoComposed = unref(stretchInfos)[0];\r\n        break;\r\n      case 3:\r\n        currentRepeatInfoComposed = unref(fillInfos)[0];\r\n        break;\r\n      case 4:\r\n        currentRepeatInfoComposed = unref(containInfos)[0];\r\n        break;\r\n      case 5:\r\n        currentRepeatInfoComposed = composeRepeatInfo({\r\n          backgroundRepeat: '',\r\n          backgroundPositionX: '',\r\n          backgroundPositionY: '',\r\n          backgroundSize: '',\r\n        });\r\n        break;\r\n    }\r\n\r\n    console.log('get currentRepeatInfoComposed info ....');\r\n\r\n    if (currentRepeatInfoComposed) {\r\n      const [backgroundRepeat, backgroundPositionX, backgroundPositionY, backgroundSize] =\r\n        parseRepeatInfo(currentRepeatInfoComposed);\r\n\r\n      console.log('parseRepeatInfo info ....');\r\n\r\n      const currentValue = {\r\n        ...state.background,\r\n        backgroundAttachment: isSupportAttachment({\r\n          backgroundRepeat,\r\n          backgroundSize,\r\n        })\r\n          ? state.background.backgroundAttachment || 'scroll'\r\n          : '',\r\n        backgroundRepeat,\r\n        backgroundPositionX,\r\n        backgroundPositionY,\r\n        backgroundSize,\r\n      };\r\n\r\n      console.log('merge info ....');\r\n      // emit('update:modelValue', currentValue);\r\n      emit('scaleChange', currentValue);\r\n    }\r\n  }\r\n\r\n  function handleRepeatChange(newVal: string) {\r\n    const [backgroundRepeat, backgroundPositionX, backgroundPositionY, backgroundSize] =\r\n      parseRepeatInfo(newVal);\r\n\r\n    const currentValue = {\r\n      ...state.background,\r\n      backgroundAttachment: isSupportAttachment({\r\n        backgroundRepeat,\r\n        backgroundSize,\r\n      })\r\n        ? state.background.backgroundAttachment || 'scroll'\r\n        : '',\r\n      backgroundRepeat,\r\n      backgroundPositionX,\r\n      backgroundPositionY,\r\n      backgroundSize,\r\n    };\r\n    // emit('update:modelValue', currentValue);\r\n    emit('repeatChange', currentValue);\r\n  }\r\n\r\n  function handleBackgroundAttachmentChange(val: any) {\r\n    const currentValue = {\r\n      ...state.background,\r\n      backgroundAttachment: val,\r\n    };\r\n    emit('input', currentValue);\r\n    emit('attachmentChange', currentValue);\r\n  }\r\n\r\n  function handleOpacityChange(newVal: any) {\r\n    const opacity = parseFloat((newVal / 100).toFixed(2));\r\n    state.background.opacity = opacity;\r\n    emit('opacityChanging', state.background);\r\n  }\r\n\r\n  function handleOpacityChangeStop(newVal: any) {\r\n    const opacity = parseFloat((newVal / 100).toFixed(2));\r\n    state.background.opacity = opacity;\r\n    emit('opacityChange', state.background);\r\n  }\r\n\r\n  function transformInfos(options: Partial<BackgroundAttribute>[]) {\r\n    return options\r\n      .filter(({ backgroundSize }) => backgroundSize && sizeOptions.indexOf(backgroundSize) > -1)\r\n      .map(composeRepeatInfo);\r\n  }\r\n\r\n  function handleBeforeUpload() {\r\n    // const { size, name } = file;\r\n    // 生成图片缩略图\r\n    // if (checkImgType(file)) {\r\n    //   // beforeUpload，如果异步会调用自带上传方法\r\n    //   // file.thumbUrl = await getBase64(file);\r\n    //   // getBase64WithFile(file).then(({ result: thumbUrl }) => {\r\n    //   //   state.background.backgroundImage = thumbUrl;\r\n    //   // });\r\n    //\r\n    //   // const url = useObjectUrl(file);\r\n    //   state.background.backgroundImage =\r\n    //     `url('https://1.s140i.faiscm.com/2/AIwBCAAQAhgAIJn17NUFKKCYhZkFMIAPOIAK.jpg')` || '';\r\n    // }\r\n    // state.background.backgroundImage =\r\n    //   `url('https://1.s140i.faiscm.com/2/AIwBCAAQAhgAIJn17NUFKKCYhZkFMIAPOIAK.jpg')` || '';\r\n    handleFileUpload();\r\n    return false;\r\n  }\r\n\r\n  watch(\r\n    () => imageUrl,\r\n    () => {\r\n      /* 在下拉面板中，改变url导致面板宽度改变时, 通知下拉面板更新 */\r\n      emit('dropdownPanelUpdate');\r\n    },\r\n  );\r\n\r\n  return {\r\n    loading: toRef(state, 'loading'),\r\n    imageUrl,\r\n    imageScaling,\r\n    shouldRenderAttachment,\r\n    shouldRenderOpacity,\r\n    backgroundType,\r\n    handleDel,\r\n    handleColorInput,\r\n    handleColorChangeStop,\r\n    handleThemeColorClick,\r\n    handleJump,\r\n    handleFileUpload,\r\n    handleFileChange,\r\n    handleImageScalingChange,\r\n    handleRepeatChange,\r\n    handleBackgroundAttachmentChange,\r\n    handleOpacityChange,\r\n    handleOpacityChangeStop,\r\n    transformInfos,\r\n    isOnPavingEffect,\r\n    repeatInfoComposed,\r\n    pavingEffectList,\r\n    isOnImagePosition,\r\n    imagePositionInfos,\r\n    colorForPicker,\r\n    backgroundAttachment,\r\n    opacityForSlider,\r\n    handleBeforeUpload,\r\n  };\r\n}\r\n","import { ColorPickerProps } from '../components/color-picker-v3/src/props';\r\n\r\nexport function useInitColorPicker(props: ColorPickerProps) {\r\n  let pureColor = '#ffffff';\r\n  let gradientColor = 'linear-gradient(90deg, rgba(255, 255, 255, 1) 0%, rgba(0, 0, 0, 1) 100%)';\r\n\r\n  let last = '';\r\n\r\n  // modelValue为空时，默认显示传过来的默认颜色\r\n  if (!props.modelValue) {\r\n    pureColor = props.defPureColor;\r\n  } else {\r\n    if (props.modelValue?.indexOf('linear-gradient') > -1) {\r\n      gradientColor = props.modelValue;\r\n      last = gradientColor;\r\n    } else {\r\n      pureColor = props.modelValue;\r\n      last = pureColor;\r\n    }\r\n  }\r\n\r\n  return {\r\n    pureColor,\r\n    gradientColor,\r\n    last,\r\n  };\r\n}\r\n","export function useDesign(scope: string) {\r\n  const prefix = 'tkc';\r\n  return {\r\n    // prefixCls: computed(() => `${values.prefixCls}-${scope}`),\r\n    prefixCls: `${prefix}-${scope}`,\r\n    prefixVar: prefix,\r\n  };\r\n}\r\n","<template>\r\n  <WrapContainer\r\n    v-model:active-key=\"state.activeKey\"\r\n    v-if=\"isWidget\"\r\n    :show-tab=\"useType === 'both'\"\r\n    @change=\"onActiveKeyChange\"\r\n    :style=\"{ zIndex: zIndex }\"\r\n  >\r\n    <component :is=\"getComponentName\" :key=\"getComponentName\" v-bind=\"getBindArgs\" />\r\n  </WrapContainer>\r\n\r\n  <template v-if=\"!isWidget\">\r\n    <div\r\n      class=\"vc-color-wrap transparent\"\r\n      :class=\"{ round: shape === 'circle' }\"\r\n      ref=\"colorCubeRef\"\r\n      v-bind=\"$attrs\"\r\n    >\r\n      <div class=\"current-color\" :style=\"getBgColorStyle\" @click=\"onShowPicker\"></div>\r\n    </div>\r\n\r\n    <teleport to=\"body\">\r\n      <div ref=\"pickerRef\" v-if=\"showPicker\" :style=\"{ zIndex: zIndex }\">\r\n        <WrapContainer\r\n          :show-tab=\"useType === 'both' && !state.isAdvanceMode\"\r\n          v-if=\"showPicker\"\r\n          v-model:active-key=\"state.activeKey\"\r\n          @change=\"onActiveKeyChange\"\r\n        >\r\n          <component :is=\"getComponentName\" :key=\"getComponentName\" v-bind=\"getBindArgs\" />\r\n        </WrapContainer>\r\n      </div>\r\n    </teleport>\r\n  </template>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import {\r\n    computed,\r\n    defineComponent,\r\n    nextTick,\r\n    onMounted,\r\n    onUnmounted,\r\n    onUpdated,\r\n    provide,\r\n    reactive,\r\n    ref,\r\n    watch,\r\n    watchEffect,\r\n  } from 'vue';\r\n  import TkColorPicker from './tk/TkColorPicker.vue';\r\n  import ChromeColorPicker from './chrome/ChromeColorPicker.vue';\r\n  import GradientColorPicker from './gradient/GradientColorPicker.vue';\r\n  import WrapContainer from './common/WrapContainer.vue';\r\n  import tinycolor from 'tinycolor2';\r\n  import { Color, HistoryColorKey, MAX_STORAGE_LENGTH } from './utils/color';\r\n  import { onClickOutside, RemovableRef, useDebounceFn, useLocalStorage } from '@vueuse/core';\r\n  import { createPopper } from '@popperjs/core';\r\n  import { ColorPickerProviderKey } from './utils/type';\r\n  import { parse, stringify } from 'gradient-parser';\r\n  import type { GradientNode } from 'gradient-parser';\r\n  import type { ColorPickerProvider, SupportLang } from './utils/type';\r\n  import { colorPickerProps } from './props';\r\n  import { useInitColorPicker } from '../../../hooks';\r\n\r\n  export default defineComponent({\r\n    name: 'ColorPicker',\r\n    components: {\r\n      TkColorPicker,\r\n      ChromeColorPicker,\r\n      GradientColorPicker,\r\n      WrapContainer,\r\n    },\r\n    inheritAttrs: false,\r\n    props: colorPickerProps,\r\n    emits: [\r\n      'update:modelValue',\r\n      'on-undo',\r\n      'colorChange',\r\n      'afterColorChanged',\r\n      'update:activeKey',\r\n      'activeKeyChange',\r\n    ],\r\n    setup(props, { emit }) {\r\n      const { pureColor, gradientColor, last } = useInitColorPicker(props);\r\n      const lastColor = ref(last);\r\n\r\n      const state = reactive({\r\n        pureColor: pureColor,\r\n        activeKey: props.useType === 'gradient' ? 'gradient' : props.activeKey, //  \"pure\" | \"gradient\"\r\n        isAdvanceMode: false,\r\n      });\r\n\r\n      provide<ColorPickerProvider>(ColorPickerProviderKey, {\r\n        lang: computed(() => props.lang || 'ZH-cn'),\r\n      });\r\n\r\n      const instance = new Color(state.pureColor);\r\n      const colorInstance = ref(instance);\r\n\r\n      const startColor = new Color('#fff');\r\n      const endColor = new Color('#fff');\r\n      const gradientState = reactive({\r\n        startColor,\r\n        endColor,\r\n        startColorStop: 0,\r\n        endColorStop: 100,\r\n        angle: 0,\r\n        gradientColor: gradientColor,\r\n      });\r\n\r\n      // Ref\r\n      const showPicker = ref(false);\r\n      const colorCubeRef = ref<any>(null);\r\n      const pickerRef = ref<any>(null);\r\n\r\n      watchEffect(() => {\r\n        const { pureColor, gradientColor, last } = useInitColorPicker(props);\r\n        state.pureColor = pureColor;\r\n        gradientState.gradientColor = gradientColor;\r\n        lastColor.value = last;\r\n      });\r\n\r\n      watch(\r\n        () => showPicker.value,\r\n        () => {\r\n          console.log('showPicker.value ===> %o', showPicker.value);\r\n        },\r\n      );\r\n\r\n      const getBgColorStyle = computed(() => {\r\n        const bgColor =\r\n          state.activeKey !== 'gradient'\r\n            ? tinycolor(state.pureColor).toRgbString()\r\n            : gradientState.gradientColor;\r\n        return {\r\n          background: bgColor,\r\n        };\r\n      });\r\n\r\n      const getComponentName = computed(() => {\r\n        if (state.activeKey === 'gradient') {\r\n          return GradientColorPicker.name;\r\n        }\r\n        return props.pickerType === 'tk' ? TkColorPicker.name : ChromeColorPicker.name;\r\n      });\r\n\r\n      const getBindArgs = computed(() => {\r\n        if (state.activeKey === 'gradient') {\r\n          return {\r\n            startColor: gradientState.startColor,\r\n            endColor: gradientState.endColor,\r\n            onStartColorChange: (v: Color) => {\r\n              gradientState.startColor = v;\r\n              onGradientChange();\r\n            },\r\n            onEndColorChange: (v: Color) => {\r\n              gradientState.endColor = v;\r\n              onGradientChange();\r\n            },\r\n            angle: gradientState.angle,\r\n            startColorStop: gradientState.startColorStop,\r\n            endColorStop: gradientState.endColorStop,\r\n            onStartColorStopChange: (v: number) => {\r\n              gradientState.startColorStop = v;\r\n              onGradientChange();\r\n            },\r\n            onEndColorStopChange: (v: number) => {\r\n              gradientState.endColorStop = v;\r\n              onGradientChange();\r\n            },\r\n            onAngleChange: (v: number) => {\r\n              gradientState.angle = v;\r\n              onGradientChange();\r\n            },\r\n            onAdvanceChange: (v: boolean) => {\r\n              state.isAdvanceMode = v;\r\n            },\r\n          };\r\n        }\r\n        return {\r\n          disableAlpha: props.disableAlpha,\r\n          disableHistory: props.disableHistory,\r\n          roundHistory: props.roundHistory,\r\n          color: colorInstance.value,\r\n          onChange: onColorChange,\r\n          onAdvanceChange,\r\n        };\r\n      });\r\n\r\n      const onAdvanceChange = (isAdvance: boolean) => {\r\n        state.isAdvanceMode = isAdvance;\r\n      };\r\n\r\n      const onShowPicker = () => {\r\n        showPicker.value = true;\r\n        nextTick(() => {\r\n          createPopperInstance();\r\n        });\r\n      };\r\n\r\n      const onHidePicker = () => {\r\n        showPicker.value = false;\r\n        if (lastColor.value !== state.pureColor) {\r\n          const colorVal =\r\n            state.activeKey === 'gradient' ? gradientState.gradientColor : state.pureColor;\r\n          emit('on-undo', colorVal, lastColor.value);\r\n          emit('update:modelValue', colorVal);\r\n          emit('afterColorChanged', colorVal);\r\n          lastColor.value = colorVal;\r\n          updateColorHistoryFn();\r\n        }\r\n\r\n        // 销毁Popper\r\n        destroyPopperInstance();\r\n      };\r\n\r\n      const historyColors: RemovableRef<string[]> = useLocalStorage<string[]>(\r\n        HistoryColorKey,\r\n        [],\r\n        {},\r\n      );\r\n\r\n      const updateColorHistoryFn = useDebounceFn(() => {\r\n        console.log('updateColorHistoryFn===>');\r\n        debugger;\r\n        if (props.disableHistory) {\r\n          return;\r\n        }\r\n\r\n        const rgbString: any = state.pureColor;\r\n\r\n        historyColors.value = historyColors.value.filter((value: any) => {\r\n          return !tinycolor.equals(value, rgbString);\r\n        });\r\n\r\n        if (historyColors.value.includes(rgbString)) {\r\n          return;\r\n        }\r\n\r\n        while (historyColors.value.length > MAX_STORAGE_LENGTH) {\r\n          historyColors.value.pop();\r\n        }\r\n\r\n        historyColors.value.unshift(rgbString);\r\n      }, 500);\r\n\r\n      const parseGradientColor = () => {\r\n        try {\r\n          if (!gradientState.gradientColor) return;\r\n          const [colorNode] = parse(gradientState.gradientColor);\r\n          if (\r\n            colorNode &&\r\n            colorNode.type === 'linear-gradient' &&\r\n            colorNode.orientation?.type === 'angular' &&\r\n            colorNode.colorStops.length >= 2\r\n          ) {\r\n            const startColorVal = colorNode.colorStops[0];\r\n            const endColorVal = colorNode.colorStops[1];\r\n\r\n            gradientState.startColorStop = Number(startColorVal.length?.value) || 0;\r\n            gradientState.endColorStop = Number(endColorVal.length?.value) || 0;\r\n            gradientState.angle = Number(colorNode.orientation?.value) || 0;\r\n\r\n            const [r, g, b, a] = startColorVal.value;\r\n            const [r1, g1, b1, a1] = endColorVal.value;\r\n\r\n            gradientState.startColor = new Color({\r\n              r: Number(r),\r\n              g: Number(g),\r\n              b: Number(b),\r\n              a: Number(a),\r\n            });\r\n            gradientState.endColor = new Color({\r\n              r: Number(r1),\r\n              g: Number(g1),\r\n              b: Number(b1),\r\n              a: Number(a1),\r\n            });\r\n          }\r\n        } catch (e) {\r\n          console.log(`[Parse Color]: ${e}`);\r\n        }\r\n      };\r\n\r\n      const onGradientChange = useDebounceFn(() => {\r\n        const nodes = color2GradientNode();\r\n        try {\r\n          gradientState.gradientColor = stringify(nodes);\r\n          emit('update:modelValue', gradientState.gradientColor);\r\n          emit('colorChange', gradientState.gradientColor);\r\n        } catch (e) {\r\n          console.log(e);\r\n        }\r\n      }, 100);\r\n\r\n      const color2GradientNode = () => {\r\n        const nodes: GradientNode[] = [];\r\n        const startColorArr = gradientState.startColor.RGB.map((v) => v.toString());\r\n        const endColorArr = gradientState.endColor.RGB.map((v) => v.toString());\r\n\r\n        nodes.push({\r\n          type: 'linear-gradient',\r\n          orientation: { type: 'angular', value: gradientState.angle + '' },\r\n          colorStops: [\r\n            {\r\n              type: 'rgba',\r\n              value: [startColorArr[0], startColorArr[1], startColorArr[2], startColorArr[3]],\r\n              length: { value: gradientState.startColorStop + '', type: '%' },\r\n            },\r\n            {\r\n              type: 'rgba',\r\n              value: [endColorArr[0], endColorArr[1], endColorArr[2], endColorArr[3]],\r\n              length: { value: gradientState.endColorStop + '', type: '%' },\r\n            },\r\n          ],\r\n        });\r\n\r\n        return nodes;\r\n      };\r\n\r\n      let popperInstance: any = null;\r\n\r\n      const createPopperInstance = () => {\r\n        if (popperInstance) return;\r\n        if (colorCubeRef.value && pickerRef.value) {\r\n          const offsetParent = colorCubeRef.value.offsetParent;\r\n          const offsetTop = colorCubeRef.value.offsetTop || offsetParent?.offsetTop;\r\n          const offsetBottomHeight =\r\n            window.innerHeight - (offsetTop - window.pageYOffset) - colorCubeRef.value.offsetHeight;\r\n          createPopper(colorCubeRef.value, pickerRef.value, {\r\n            placement: props.placement,\r\n            modifiers: [\r\n              {\r\n                name: 'flip',\r\n                options: {\r\n                  enabled: true,\r\n                  boundary: offsetBottomHeight > 500 ? 'clippingParents' : colorCubeRef.value,\r\n                  fallbackPlacements: ['bottom', 'left'],\r\n                },\r\n              },\r\n            ],\r\n          });\r\n        }\r\n      };\r\n\r\n      const destroyPopperInstance = () => {\r\n        if (popperInstance) {\r\n          popperInstance.destroy();\r\n          popperInstance = null;\r\n        }\r\n      };\r\n\r\n      onUnmounted(() => {\r\n        destroyPopperInstance();\r\n      });\r\n\r\n      // const onInit = () => {\r\n      //   if (colorCubeRef.value && pickerRef.value) {\r\n      //     const offsetParent = colorCubeRef.value.offsetParent;\r\n      //     const offsetTop = colorCubeRef.value.offsetTop || offsetParent?.offsetTop;\r\n      //     const offsetBottomHeight =\r\n      //       window.innerHeight - (offsetTop - window.pageYOffset) - colorCubeRef.value.offsetHeight;\r\n      //     nextTick(() => {\r\n      //       createPopper(colorCubeRef.value, pickerRef.value, {\r\n      //         placement: props.placement,\r\n      //         modifiers: [\r\n      //           {\r\n      //             name: 'flip',\r\n      //             options: {\r\n      //               boundary: offsetBottomHeight > 500 ? 'clippingParents' : colorCubeRef.value,\r\n      //               fallbackPlacements: ['bottom', 'left'],\r\n      //             },\r\n      //           },\r\n      //         ],\r\n      //       });\r\n      //     });\r\n      //   }\r\n      // };\r\n\r\n      const onColorChange = (v: Color) => {\r\n        colorInstance.value = v;\r\n        state.pureColor = v.toString(props.format);\r\n        emitColorChange();\r\n      };\r\n\r\n      const emitColorChange = useDebounceFn(() => {\r\n        emit('update:modelValue', state.pureColor);\r\n        emit('colorChange', state.pureColor);\r\n      }, 100);\r\n\r\n      onClickOutside(pickerRef, () => {\r\n        console.log('onClickOutside ===>');\r\n        onHidePicker();\r\n      });\r\n\r\n      const onActiveKeyChange = (key: string) => {\r\n        state.activeKey = key;\r\n        emit('update:activeKey', key);\r\n        emit('activeKeyChange', key);\r\n      };\r\n\r\n      // tryOnMounted(() => {\r\n      //\r\n      // });\r\n\r\n      // watch(\r\n      //   () => pickerRef.value,\r\n      //   (val) => {\r\n      //     if (val) {\r\n      //       onInit();\r\n      //     }\r\n      //   },\r\n      // );\r\n\r\n      onMounted(() => {\r\n        parseGradientColor();\r\n        // emitColorChange();\r\n        // onGradientChange();\r\n      });\r\n\r\n      // onUpdated(() => {\r\n      //   const { pureColor, gradientColor, last } = useInitColorPicker(props);\r\n      //   state.pureColor = pureColor;\r\n      //   gradientState.gradientColor = gradientColor;\r\n      //   lastColor.value = last;\r\n      // });\r\n\r\n      watch(\r\n        () => gradientColor,\r\n        (value) => {\r\n          if (value !== gradientState.gradientColor) {\r\n            gradientState.gradientColor = value;\r\n          }\r\n        },\r\n      );\r\n\r\n      watch(\r\n        () => gradientState.gradientColor,\r\n        () => {\r\n          parseGradientColor();\r\n        },\r\n      );\r\n\r\n      watch(\r\n        () => props.activeKey,\r\n        (value) => {\r\n          state.activeKey = value;\r\n        },\r\n      );\r\n\r\n      watch(\r\n        () => props.useType,\r\n        (value) => {\r\n          if (state.activeKey !== 'gradient' && value === 'gradient') {\r\n            state.activeKey = 'gradient';\r\n          } else {\r\n            state.activeKey = 'pure';\r\n          }\r\n        },\r\n      );\r\n\r\n      watch(\r\n        () => pureColor,\r\n        (value) => {\r\n          const equal = tinycolor.equals(value, state.pureColor);\r\n\r\n          if (!equal) {\r\n            state.pureColor = value;\r\n            colorInstance.value = new Color(value);\r\n            emitColorChange();\r\n          }\r\n        },\r\n        { deep: true },\r\n      );\r\n\r\n      return {\r\n        colorCubeRef,\r\n        pickerRef,\r\n        showPicker,\r\n        colorInstance,\r\n        getBgColorStyle,\r\n        onColorChange,\r\n        onShowPicker,\r\n        onActiveKeyChange,\r\n        getComponentName,\r\n        getBindArgs,\r\n        state,\r\n      };\r\n    },\r\n  });\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  .vc-color-wrap {\r\n    width: 50px;\r\n    height: 24px;\r\n    box-shadow: 3px 0 5px #00000014;\r\n    position: relative;\r\n    cursor: pointer;\r\n    overflow: hidden;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n\r\n    &.transparent {\r\n      background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);\r\n      background-repeat: repeat;\r\n    }\r\n\r\n    &.round {\r\n      width: 22px;\r\n      height: 22px;\r\n      border-radius: 50%;\r\n      border: 1px solid #d8d8d8;\r\n    }\r\n\r\n    .current-color {\r\n      width: 100%;\r\n      height: 100%;\r\n    }\r\n  }\r\n</style>\r\n","import { isClient } from '@vueuse/core';\r\n\r\nconst globalNodes: HTMLElement[] = [];\r\nlet target: HTMLElement = !isClient ? (undefined as any) : document.body;\r\n\r\nexport function createGlobalNode(id?: string) {\r\n  const el = document.createElement('div');\r\n  if (id !== undefined) {\r\n    el.setAttribute('id', id);\r\n  }\r\n\r\n  target.appendChild(el);\r\n  globalNodes.push(el);\r\n\r\n  return el;\r\n}\r\n\r\nexport function removeGlobalNode(el: HTMLElement) {\r\n  globalNodes.splice(globalNodes.indexOf(el), 1);\r\n  el.remove();\r\n}\r\n\r\nexport function changeGlobalNodesTarget(el: HTMLElement) {\r\n  if (el === target) return;\r\n\r\n  target = el;\r\n  globalNodes.forEach((el) => {\r\n    if (el.contains(target) === false) {\r\n      target.appendChild(el);\r\n    }\r\n  });\r\n}\r\n","import { NOOP } from '@vue/shared';\r\n\r\nimport type { App, Directive } from 'vue';\r\nimport type { SFCInstallWithContext, SFCWithInstall } from './typescript';\r\n\r\nexport const withInstall = <T, E extends Record<string, any>>(main: T, extra?: E) => {\r\n  (main as SFCWithInstall<T>).install = (app): void => {\r\n    for (const comp of [main, ...Object.values(extra ?? {})]) {\r\n      app.component(comp.name, comp);\r\n    }\r\n  };\r\n\r\n  if (extra) {\r\n    for (const [key, comp] of Object.entries(extra)) {\r\n      (main as any)[key] = comp;\r\n    }\r\n  }\r\n  return main as SFCWithInstall<T> & E;\r\n};\r\n\r\nexport const withInstallFunction = <T>(fn: T, name: string) => {\r\n  (fn as SFCWithInstall<T>).install = (app: App) => {\r\n    (fn as SFCInstallWithContext<T>)._context = app._context;\r\n    app.config.globalProperties[name] = fn;\r\n  };\r\n\r\n  return fn as SFCInstallWithContext<T>;\r\n};\r\n\r\nexport const withInstallDirective = <T extends Directive>(directive: T, name: string) => {\r\n  (directive as SFCWithInstall<T>).install = (app: App): void => {\r\n    app.directive(name, directive);\r\n  };\r\n\r\n  return directive as SFCWithInstall<T>;\r\n};\r\n\r\nexport const withNoopInstall = <T>(component: T) => {\r\n  (component as SFCWithInstall<T>).install = NOOP;\r\n  return component as SFCWithInstall<T>;\r\n};\r\n","import ColorPicker from './src/ColorPicker.vue';\r\nimport { withInstall } from '../../utils';\r\nexport const ColorPickerV3 = withInstall(ColorPicker);\r\nexport default ColorPickerV3;\r\n","<template>\n  <div :class=\"`${prefixCls}`\">\n    <a-form\n      :label-col=\"{ span: props.labelCol }\"\n      :wrapper-col=\"{ span: props.wrapperCol }\"\n      label-align=\"left\"\n    >\n      <a-form-item label=\"类型\">\n        <a-select v-model:value=\"backgroundType\">\n          <a-select-option :value=\"0\">颜色填充</a-select-option>\n          <a-select-option :value=\"1\">图片</a-select-option>\n        </a-select>\n      </a-form-item>\n      <template v-if=\"backgroundType == 1\">\n        <a-form-item label=\"图片\">\n          <div :class=\"`${prefixCls}__avatar`\">\n            <div v-if=\"imageUrl\" :class=\"`${prefixCls}__avatar-preview`\">\n              <a-badge class=\"showImgs\">\n                <div class=\"actions\">\n                  <a-button type=\"link\" class=\"action-btn\" @click=\"setVisible(true)\">\n                    <eye-outlined class=\"action-icon\" />\n                  </a-button>\n                  <a-button type=\"link\" class=\"action-btn\" @click=\"handleFileUpload\">\n                    <redo-outlined class=\"action-icon\" />\n                  </a-button>\n                </div>\n                <img style=\"width: 100%\" :src=\"imageUrl\" />\n                <template #count>\n                  <div class=\"action-del\" @click=\"handleDel\">\n                    <close-outlined class=\"del-icon\" />\n                  </div>\n                </template>\n              </a-badge>\n\n              <a-image\n                :width=\"200\"\n                :style=\"{ display: 'none' }\"\n                :preview=\"{ visible, onVisibleChange: setVisible }\"\n                :src=\"imageUrl\"\n              />\n            </div>\n            <div v-else :class=\"`${prefixCls}__avatar-uploader`\" @click=\"handleFileUpload\">\n              <loading-outlined v-if=\"loading\" />\n              <div class=\"upload-box\" v-else>\n                <plus-outlined class=\"upload-icon\" />\n              </div>\n            </div>\n          </div>\n        </a-form-item>\n        <template v-if=\"imageUrl\">\n          <a-form-item label=\"图片缩放\">\n            <a-select v-model:value=\"imageScaling\">\n              <a-select-option :value=\"3\">填充</a-select-option>\n              <a-select-option :value=\"4\">等比例</a-select-option>\n              <a-select-option :value=\"0\">平铺</a-select-option>\n              <a-select-option :value=\"2\">拉伸</a-select-option>\n              <a-select-option :value=\"1\">原图</a-select-option>\n            </a-select>\n          </a-form-item>\n          <a-form-item label=\"平铺效果\" v-if=\"isOnPavingEffect\">\n            <a-select v-model:value=\"repeatInfoComposed\" :options=\"pavingEffectList\" />\n          </a-form-item>\n          <a-form-item label=\"图片位置\" v-if=\"isOnImagePosition\">\n            <ul :class=\"`${prefixCls}__square`\">\n              <li\n                v-for=\"item in imagePositionInfos\"\n                :key=\"item\"\n                :class=\"{\n                  [`${prefixCls}__square_item`]: true,\n                  [`${prefixCls}__square_item--active`]: item == repeatInfoComposed,\n                }\"\n                @click=\"handleRepeatChange(item)\"\n              ></li>\n            </ul>\n          </a-form-item>\n        </template>\n      </template>\n      <a-form-item label=\"背景色\">\n        <color-picker-v3\n          v-model=\"colorForPicker\"\n          :pickerType=\"colorPickerOptions.pickerType\"\n          :format=\"colorPickerOptions.format\"\n          :shape=\"colorPickerOptions.shape\"\n          :disableHistory=\"colorPickerOptions.disableHistory\"\n          :useType=\"colorPickerOptions.useType\"\n          :placement=\"colorPickerOptions.placement\"\n          @color-change=\"handleThemeColorClick\"\n          @after-color-changed=\"handleColorChangeStop\"\n        />\n      </a-form-item>\n      <template v-if=\"backgroundType == 1\">\n        <a-form-item label=\"锁定\" v-if=\"shouldRenderAttachment\">\n          <a-select v-model:value=\"backgroundAttachment\" @change=\"handleBackgroundAttachmentChange\">\n            <a-select-option value=\"scroll\">默认</a-select-option>\n            <a-select-option value=\"fixed\">锁定图片</a-select-option>\n          </a-select>\n        </a-form-item>\n        <a-form-item label=\"透明度\" v-if=\"shouldRenderOpacity\">\n          <a-row>\n            <a-col :span=\"15\">\n              <a-slider\n                :min=\"0\"\n                :max=\"100\"\n                :step=\"1\"\n                @change=\"handleOpacityChange\"\n                @after-change=\"handleOpacityChangeStop\"\n                v-model:value=\"opacityForSlider\"\n              />\n            </a-col>\n            <a-col :span=\"9\">\n              <a-input-number\n                :min=\"0\"\n                :max=\"100\"\n                :step=\"1\"\n                @change=\"handleOpacityChange\"\n                v-model:value=\"opacityForSlider\"\n                :formatter=\"(value) => `${value}%`\"\n                :parser=\"(value) => value.replace('%', '')\"\n                style=\"margin-left: 16px; width: 80px\"\n              />\n            </a-col>\n          </a-row>\n        </a-form-item>\n      </template>\n    </a-form>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\n  import { ColorPickerV3 } from '../../color-picker-v3';\n  import { backgroundProps } from './props';\n  import { useBackground, useDesign } from '../../../hooks';\n  import {\n    PlusOutlined,\n    LoadingOutlined,\n    EyeOutlined,\n    RedoOutlined,\n    CloseOutlined,\n  } from '@ant-design/icons-vue';\n  import { ref } from 'vue';\n\n  const { prefixCls } = useDesign('background');\n\n  const props = defineProps(backgroundProps);\n\n  const colorPickerOptions = ref(props.colorPickerOptions);\n\n  const emit = defineEmits([\n    'input',\n    'typeChange',\n    'imageChange',\n    'colorChanging',\n    'colorChange',\n    'scaleChange',\n    'attachmentChange',\n    'opacityChanging',\n    'opacityChange',\n    'repeatChange',\n    'dropdownPanelUpdate',\n  ]);\n\n  const visible = ref(false);\n\n  const handleCancel = () => {\n    visible.value = false;\n  };\n\n  const setVisible = (value: boolean) => {\n    visible.value = value;\n  };\n\n  const {\n    loading,\n    backgroundType,\n    imageUrl,\n    imageScaling,\n    isOnPavingEffect,\n    repeatInfoComposed,\n    pavingEffectList,\n    isOnImagePosition,\n    imagePositionInfos,\n    handleRepeatChange,\n    colorForPicker,\n    shouldRenderAttachment,\n    backgroundAttachment,\n    shouldRenderOpacity,\n    opacityForSlider,\n    handleColorChangeStop,\n    handleThemeColorClick,\n    handleOpacityChange,\n    handleOpacityChangeStop,\n    handleBackgroundAttachmentChange,\n    handleFileUpload,\n    handleDel,\n  } = useBackground(props);\n</script>\n\n<style lang=\"less\">\n  @import '../style/index';\n</style>\n","import {\r\n  BackgroundAttribute,\r\n  BackgroundPositionXProp,\r\n  BackgroundPositionYProp,\r\n  BackgroundRepeatProp,\r\n  BackgroundSizeProp,\r\n} from '../../types';\r\n\r\n/**\r\n * 背景模型数据\r\n */\r\nconst IMAGE_POSITION = [\r\n  {\r\n    key: 'left-top',\r\n    backgroundRepeat: 'no-repeat',\r\n    backgroundPositionX: 'left',\r\n    backgroundPositionY: 'top',\r\n    backgroundSize: 'auto',\r\n  },\r\n  {\r\n    key: 'center-top',\r\n    backgroundRepeat: 'no-repeat',\r\n    backgroundPositionX: 'center',\r\n    backgroundPositionY: 'top',\r\n    backgroundSize: 'auto',\r\n  },\r\n  {\r\n    key: 'right-top',\r\n    backgroundRepeat: 'no-repeat',\r\n    backgroundPositionX: 'right',\r\n    backgroundPositionY: 'top',\r\n    backgroundSize: 'auto',\r\n  },\r\n  {\r\n    key: 'left-center',\r\n    backgroundRepeat: 'no-repeat',\r\n    backgroundPositionX: 'left',\r\n    backgroundPositionY: 'center',\r\n    backgroundSize: 'auto',\r\n  },\r\n  {\r\n    key: 'center-center',\r\n    backgroundRepeat: 'no-repeat',\r\n    backgroundPositionX: 'center',\r\n    backgroundPositionY: 'center',\r\n    backgroundSize: 'auto',\r\n  },\r\n  {\r\n    key: 'right-center',\r\n    backgroundRepeat: 'no-repeat',\r\n    backgroundPositionX: 'right',\r\n    backgroundPositionY: 'center',\r\n    backgroundSize: 'auto',\r\n  },\r\n  {\r\n    key: 'left-bottom',\r\n    backgroundRepeat: 'no-repeat',\r\n    backgroundPositionX: 'left',\r\n    backgroundPositionY: 'bottom',\r\n    backgroundSize: 'auto',\r\n  },\r\n  {\r\n    key: 'center-bottom',\r\n    backgroundRepeat: 'no-repeat',\r\n    backgroundPositionX: 'center',\r\n    backgroundPositionY: 'bottom',\r\n    backgroundSize: 'auto',\r\n  },\r\n  {\r\n    key: 'right-bottom',\r\n    backgroundRepeat: 'no-repeat',\r\n    backgroundPositionX: 'right',\r\n    backgroundPositionY: 'bottom',\r\n    backgroundSize: 'auto',\r\n  },\r\n];\r\n// 图片平铺\r\nconst IMAGE_PAVING_EFFECT = [\r\n  {\r\n    label: '默认',\r\n    key: 'default',\r\n    backgroundRepeat: 'repeat',\r\n    backgroundPositionX: 'center',\r\n    backgroundPositionY: 'center',\r\n    backgroundSize: 'auto',\r\n  },\r\n  {\r\n    label: '缩放平铺',\r\n    key: 'zoom-tile',\r\n    backgroundRepeat: 'no-repeat',\r\n    backgroundPositionX: 'center',\r\n    backgroundPositionY: 'top',\r\n    backgroundSize: '100%',\r\n  },\r\n  {\r\n    label: '上',\r\n    key: 'top',\r\n    backgroundRepeat: 'repeat-x',\r\n    backgroundPositionX: 'center',\r\n    backgroundPositionY: 'top',\r\n    backgroundSize: 'auto',\r\n  },\r\n  {\r\n    label: '中-横向',\r\n    key: 'in-horizontal',\r\n    backgroundRepeat: 'repeat-x',\r\n    backgroundPositionX: 'center',\r\n    backgroundPositionY: 'center',\r\n    backgroundSize: 'auto',\r\n  },\r\n  {\r\n    label: '下',\r\n    key: 'bottom',\r\n    backgroundRepeat: 'repeat-x',\r\n    backgroundPositionX: 'center',\r\n    backgroundPositionY: 'bottom',\r\n    backgroundSize: 'auto',\r\n  },\r\n  {\r\n    label: '左',\r\n    key: 'left',\r\n    backgroundRepeat: 'repeat-y',\r\n    backgroundPositionX: 'left',\r\n    backgroundPositionY: 'top',\r\n    backgroundSize: 'auto',\r\n  },\r\n  {\r\n    label: '中-纵向',\r\n    key: 'in-vertical',\r\n    backgroundRepeat: 'repeat-y',\r\n    backgroundPositionX: 'center',\r\n    backgroundPositionY: 'top',\r\n    backgroundSize: 'auto',\r\n  },\r\n  {\r\n    label: '右',\r\n    key: 'right',\r\n    backgroundRepeat: 'repeat-y',\r\n    backgroundPositionX: 'right',\r\n    backgroundPositionY: 'top',\r\n    backgroundSize: 'auto',\r\n  },\r\n];\r\n// 图片缩放\r\nconst IMAGE_SCALING_STRETCH = [\r\n  {\r\n    backgroundRepeat: 'no-repeat',\r\n    backgroundPositionX: 'left',\r\n    backgroundPositionY: 'center',\r\n    backgroundSize: '100% 100%',\r\n  },\r\n];\r\n// 图片填充\r\nconst IMAGE_SCALING_FILL = [\r\n  {\r\n    backgroundRepeat: 'no-repeat',\r\n    backgroundPositionX: 'center',\r\n    backgroundPositionY: 'center',\r\n    backgroundSize: 'cover',\r\n  },\r\n];\r\n// 图片等比\r\nconst IMAGE_SCALING_CONTAIN = [\r\n  {\r\n    backgroundRepeat: 'no-repeat',\r\n    backgroundPositionX: 'center',\r\n    backgroundPositionY: 'center',\r\n    backgroundSize: 'contain',\r\n  },\r\n];\r\n\r\nconst sizeOptions = ['auto', '100%', '100% 100%', 'cover', 'contain'];\r\n\r\nconst repeatOption = {\r\n  default: 3,\r\n  'zoom-tile': 5,\r\n  top: 11,\r\n  'in-horizontal': 1,\r\n  bottom: 12,\r\n  left: 21,\r\n  'in-vertical': 2,\r\n  right: 22,\r\n  'left-top': 13,\r\n  'center-top': 8,\r\n  'right-top': 14,\r\n  'left-center': 6,\r\n  'center-center': 0,\r\n  'right-center': 7,\r\n  'left-bottom': 15,\r\n  'center-bottom': 9,\r\n  'right-bottom': 16,\r\n};\r\n\r\n/**\r\n * 组合平铺信息\r\n * @param backgroundRepeat\r\n * @param backgroundPositionX\r\n * @param backgroundPositionY\r\n * @param backgroundSize\r\n */\r\nconst composeRepeatInfo = ({\r\n  backgroundRepeat,\r\n  backgroundPositionX,\r\n  backgroundPositionY,\r\n  backgroundSize,\r\n}: Partial<BackgroundAttribute>) =>\r\n  [backgroundRepeat, backgroundPositionX, backgroundPositionY, backgroundSize].join(',');\r\n\r\n/**\r\n * 解析平铺信息\r\n * @param repeatInfoComposed\r\n */\r\nconst parseRepeatInfo = (repeatInfoComposed: string) =>\r\n  //backgroundRepeat, backgroundPositionX, backgroundPositionY, backgroundSize\r\n  repeatInfoComposed.split(',') as [\r\n    backgroundRepeat: BackgroundRepeatProp,\r\n    backgroundPositionX: BackgroundPositionXProp,\r\n    backgroundPositionY: BackgroundPositionYProp,\r\n    backgroundSize: BackgroundSizeProp,\r\n  ];\r\n\r\n/**\r\n * 解析图片路径\r\n * @param backgroundImage\r\n */\r\nfunction parseBackgroundImageUrl(backgroundImage: string) {\r\n  let ret = '';\r\n  if (backgroundImage) {\r\n    const found = backgroundImage.match(/url\\(\\s*['|\"\"]?\\s*(\\S+)\\s*['|\"\"]?\\s*\\)/);\r\n    if (found && found[1]) {\r\n      ret = found[1];\r\n    }\r\n  }\r\n  return ret;\r\n}\r\n// 解析渐变色\r\nfunction parseBackgroundImageGradient(backgroundImage: string) {\r\n  let ret = '';\r\n  if (backgroundImage) {\r\n    const found = backgroundImage.match(/linear-gradient\\(\\s*.+\\s*\\)/);\r\n    if (found && found[0]) {\r\n      ret = found[0];\r\n    }\r\n  }\r\n  return ret;\r\n}\r\nfunction concatBackgroundColor(color: string) {\r\n  return /linear-gradient\\(/.test(color) ? '' : color;\r\n}\r\nfunction concatBackgroundImage(imageUrl: string, color: string) {\r\n  return [imageUrl ? 'url(' + imageUrl + ')' : '', /linear-gradient\\(/.test(color) ? color : '']\r\n    .filter(function (x) {\r\n      return x;\r\n    })\r\n    .join(',');\r\n}\r\n\r\nexport default {\r\n  IMAGE_POSITION,\r\n  IMAGE_PAVING_EFFECT,\r\n  IMAGE_SCALING_STRETCH,\r\n  IMAGE_SCALING_FILL,\r\n  IMAGE_SCALING_CONTAIN,\r\n  sizeOptions,\r\n  repeatOption,\r\n  composeRepeatInfo,\r\n  parseRepeatInfo,\r\n  parseBackgroundImageUrl,\r\n  parseBackgroundImageGradient,\r\n  concatBackgroundColor,\r\n  concatBackgroundImage,\r\n};\r\n","import BackgroundCore from './src/main.vue';\r\nimport { withInstall } from '../../utils';\r\nexport * from '../../utils/helper/background';\r\nexport { default as backGroundHelper } from '../../utils/helper/background';\r\nexport const Background = withInstall(BackgroundCore);\r\nexport default Background;\r\n","<template>\r\n  <div class=\"tkc_img\">\r\n    <img class=\"tkc_img_item\" :src=\"src || defaultSrc\" />\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'ImgComponent',\r\n    props: {\r\n      src: String,\r\n      defaultSrc: {\r\n        type: String,\r\n        default:\r\n          'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=', // base64空白占位图\r\n      },\r\n    },\r\n  };\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  .tkc_img {\r\n    box-sizing: border-box;\r\n    height: 100%;\r\n    border: 1px solid #e7e7eb;\r\n    text-align: center;\r\n    font-size: 0;\r\n    line-height: 0;\r\n  }\r\n\r\n  .tkc_img:after {\r\n    content: '';\r\n    display: inline-block;\r\n    height: 100%;\r\n    vertical-align: middle;\r\n  }\r\n\r\n  .tkc_img_item {\r\n    display: inline-block;\r\n    width: auto;\r\n    height: auto;\r\n    max-width: 100%;\r\n    max-height: 100%;\r\n    vertical-align: middle;\r\n  }\r\n</style>\r\n","<template>\r\n  <div class=\"tkc_editor\" :class=\"{ tkc_editor__disabled: disabled, tkc_editor__warning: warning }\">\r\n    <slot></slot>\r\n    <div\r\n      class=\"tkc_editor_layer\"\r\n      :class=\"active ? 'tkc_editor_layer--active' : null\"\r\n      @click=\"clickLayerHandler\"\r\n    >\r\n      <i\r\n        v-for=\"(btnName, index) in data\"\r\n        :key=\"index\"\r\n        class=\"tkc_editor_item\"\r\n        :class=\"'tkc_editor_' + btnName\"\r\n        @click.stop=\"clickItemHandler(btnName)\"\r\n      >\r\n        <svg :class=\"`cusicon-${btnName}`\" aria-hidden=\"true\">\r\n          <use :xlink:href=\"`#cusicon-${btnName}`\" />\r\n        </svg>\r\n      </i>\r\n      <i\r\n        v-for=\"(btnName, index) in activeData\"\r\n        :key=\"index\"\r\n        class=\"tkc_editor_item\"\r\n        :class=\"['tkc_editor_' + btnName, 'tkc_editor_item--active']\"\r\n        @click.stop=\"clickItemHandler(btnName)\"\r\n      >\r\n      </i>\r\n      <slot name=\"data\" class-name=\"tkc_editor_item\"></slot>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'EditorComponent',\r\n    props: {\r\n      data: {\r\n        type: Array,\r\n        default() {\r\n          return ['close', 'editor', 'checked'];\r\n        },\r\n      },\r\n      activeData: {\r\n        type: Array,\r\n        default() {\r\n          return [];\r\n        },\r\n      },\r\n      disabled: Boolean,\r\n      warning: Boolean,\r\n    },\r\n    computed: {\r\n      list() {\r\n        return this.data.concat(this.activeData);\r\n      },\r\n      active() {\r\n        return this.activeData.length > 0;\r\n      },\r\n    },\r\n    methods: {\r\n      clickItemHandler(btnName) {\r\n        if (!this.disabled) {\r\n          this.$emit(btnName);\r\n        }\r\n      },\r\n      clickLayerHandler(e) {\r\n        if (!this.disabled) {\r\n          this.$emit('click', e);\r\n        }\r\n      },\r\n    },\r\n  };\r\n</script>\r\n\r\n<style lang=\"less\">\r\n  @import '../../../themes';\r\n  .tkc_editor {\r\n    position: relative;\r\n    height: 100%;\r\n  }\r\n\r\n  .tkc_editor_layer {\r\n    display: none;\r\n    position: absolute;\r\n    width: 100%;\r\n    height: 100%;\r\n    border: 1px solid @primary-color;\r\n    left: 0;\r\n    top: 0;\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  .tkc_editor_layer--active {\r\n    display: block;\r\n  }\r\n\r\n  .tkc_editor__warning .tkc_editor_layer {\r\n    border: 1px solid #ff5414;\r\n  }\r\n\r\n  .tkc_editor__disabled .tkc_editor_layer {\r\n    display: none;\r\n  }\r\n\r\n  .tkc_editor:hover .tkc_editor_layer {\r\n    display: block;\r\n  }\r\n\r\n  .tkc_editor__disabled:hover .tkc_editor_layer {\r\n    display: none;\r\n  }\r\n\r\n  .tkc_editor_layer--active .tkc_editor_item {\r\n    display: none;\r\n  }\r\n\r\n  .tkc_editor:hover .tkc_editor_item {\r\n    display: flex;\r\n  }\r\n\r\n  .tkc_editor_item--active {\r\n    display: none;\r\n  }\r\n\r\n  .tkc_editor_close {\r\n    width: 16px;\r\n    height: 16px;\r\n    position: absolute;\r\n    top: -5px;\r\n    right: -7px;\r\n    cursor: pointer;\r\n    background-color: #ff0000;\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n    border-radius: 50%;\r\n    color: #fff;\r\n\r\n    .cusicon-close {\r\n      width: 12px;\r\n      height: 12px;\r\n      fill: currentColor;\r\n      overflow: hidden;\r\n    }\r\n  }\r\n\r\n  .tkc_editor_editor {\r\n    width: 23px;\r\n    height: 23px;\r\n    position: absolute;\r\n    right: 0;\r\n    bottom: 0;\r\n    cursor: pointer;\r\n    background-color: @primary-color;\r\n    color: #fff;\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n\r\n    .cusicon-editor {\r\n      width: 18px;\r\n      height: 18px;\r\n      fill: currentColor;\r\n      overflow: hidden;\r\n    }\r\n  }\r\n\r\n  .tkc_editor_checked {\r\n    width: 23px;\r\n    height: 15px;\r\n    position: absolute;\r\n    display: none;\r\n    right: 0;\r\n    bottom: 0;\r\n    cursor: pointer;\r\n    background-color: @primary-color;\r\n    color: #fff;\r\n    justify-content: center;\r\n    align-items: center;\r\n\r\n    .cusicon-checked {\r\n      width: 16px;\r\n      height: 14px;\r\n      fill: currentColor;\r\n      overflow: hidden;\r\n      margin-left: 2px;\r\n    }\r\n  }\r\n\r\n  .tkc_photo_list_editor {\r\n    &:hover {\r\n      .tkc_editor_layer {\r\n        .tkc_editor_checked {\r\n          display: none;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  .photo-selected {\r\n    .tkc_photo_list_editor {\r\n      .tkc_editor_layer {\r\n        opacity: 1;\r\n        display: block;\r\n        .tkc_editor_close {\r\n          display: none;\r\n        }\r\n        .tkc_editor_checked {\r\n          display: flex;\r\n        }\r\n        .tkc_editor_editor {\r\n          display: none;\r\n        }\r\n      }\r\n\r\n      &:hover {\r\n        .tkc_editor_layer {\r\n          .tkc_editor_editor {\r\n            display: flex;\r\n          }\r\n          .tkc_editor_checked {\r\n            display: none;\r\n          }\r\n          .tkc_editor_close {\r\n            display: flex;\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","const cached = {};\r\nconst utils = {\r\n  getTag(target) {\r\n    return Object.prototype.toString.call(target);\r\n  },\r\n  baseMerge(target, filterFn, ...sources) {\r\n    if (!target) target = {};\r\n\r\n    sources\r\n      .filter((v) => v && typeof v === 'object')\r\n      .forEach((source) => {\r\n        Object.keys(source).forEach((key) => {\r\n          const targetTag = utils.getTag(target[key]);\r\n          const sourceTag = utils.getTag(source[key]);\r\n\r\n          if (sourceTag === '[object Array]' || sourceTag === '[object Object]') {\r\n            if (targetTag !== sourceTag) target[key] = sourceTag === '[object Array]' ? [] : {};\r\n            utils.baseMerge(target[key], filterFn, source[key]);\r\n          } else if (filterFn(target, source, key)) {\r\n            target[key] = source[key];\r\n          }\r\n        });\r\n      });\r\n\r\n    return target;\r\n  },\r\n  merge(target, ...sources) {\r\n    return utils.baseMerge(target, filterFn, ...sources);\r\n  },\r\n  dispatch: function (context, componentName, eventName, params) {\r\n    let parent = context.$parent || context.$root;\r\n    let name = parent.$options.name;\r\n\r\n    while (parent && (!name || name !== componentName)) {\r\n      parent = parent.$parent;\r\n\r\n      if (parent) {\r\n        name = parent.$options.name;\r\n      }\r\n    }\r\n    if (parent) {\r\n      parent.$bus?.$emit([eventName], params);\r\n    }\r\n  },\r\n  broadcast: function (context, componentName, eventName, params) {\r\n    broadcast.call(context, componentName, eventName, params);\r\n  },\r\n  findParentComponent(_context, componentName) {\r\n    const parent = _context.parent;\r\n    if (parent) {\r\n      if (parent.type.name && parent.type.name === componentName) {\r\n        return parent;\r\n      } else {\r\n        return this.findParentComponent(parent, componentName);\r\n      }\r\n    }\r\n  },\r\n  findComponentUpward: function (_context, componentName, componentNames) {\r\n    const parent = this.findParentComponent(_context, componentName);\r\n    if (parent) {\r\n      const { proxy } = parent;\r\n      return proxy;\r\n    }\r\n  },\r\n  findComponentsUpward: function (_context, componentName, componentNames) {\r\n    const components = [];\r\n\r\n    if (typeof componentName === 'string') {\r\n      componentNames = [componentName];\r\n    } else {\r\n      componentNames = componentName;\r\n    }\r\n\r\n    let parent = this.findParentComponent(_context, componentName);\r\n    const name = parent.type.name;\r\n    while (parent) {\r\n      if (componentNames.indexOf(name) > -1) {\r\n        components.push(parent.proxy);\r\n      }\r\n      parent = parent.parent;\r\n    }\r\n    return components;\r\n  },\r\n  findComponentsDownward: function (context, componentName, comps) {\r\n    const components = comps || [];\r\n    // const childrens = context.$children;\r\n    //\r\n    // if (childrens.length) {\r\n    //   childrens.forEach(function (child) {\r\n    //     const name = child.$options.name;\r\n    //     const childs = child.$children;\r\n    //\r\n    //     if (name === componentName) components.push(child);\r\n    //     if (childs.length) {\r\n    //       const findChilds = utils.findComponentsDownward(child, componentName, components);\r\n    //       if (findChilds) components.concat(findChilds);\r\n    //     }\r\n    //   });\r\n    // }\r\n\r\n    // context.subTree.dynamicChildren.forEach((e) => {\r\n    //   if (e.type) {\r\n    //     console.log(e);\r\n    //   }\r\n    // });\r\n\r\n    return components;\r\n  },\r\n  oneOf: function (value, validList) {\r\n    for (let i = 0; i < validList.length; i++) {\r\n      if (value === validList[i]) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  },\r\n  camelCase: function (str) {\r\n    const SPECIAL_CHARS_REGEXP = /-(\\w)/g;\r\n\r\n    return str.replace(SPECIAL_CHARS_REGEXP, function ($0, $1) {\r\n      return $1.toUpperCase();\r\n    });\r\n  },\r\n  getStyle: function (element, styleName) {\r\n    if (!element || !styleName) return null;\r\n    styleName = utils.camelCase(styleName);\r\n    if (styleName === 'float') {\r\n      styleName = 'cssFloat';\r\n    }\r\n    try {\r\n      const computed = document.defaultView.getComputedStyle(element, '');\r\n      return element.style[styleName] || computed ? computed[styleName] : null;\r\n    } catch (e) {\r\n      return element.style[styleName];\r\n    }\r\n  },\r\n  setStyle: function (elementList, styleName, style) {\r\n    if (!elementList.length || !styleName) return null;\r\n    styleName = utils.camelCase(styleName);\r\n\r\n    if (styleName === 'float') {\r\n      styleName = 'cssFloat';\r\n    }\r\n\r\n    for (let i = 0; i < elementList.length; i++) {\r\n      elementList[i].style[styleName] = style;\r\n    }\r\n  },\r\n  isValueNumber: function (value) {\r\n    return /^[1-9][0-9]*$/.test(value + '');\r\n  },\r\n  // 求值并记忆默认的滚动条的宽度\r\n  scrollbarWidth: function (baseDom) {\r\n    const _baseDom = baseDom || document.body;\r\n    const outer = document.createElement('div');\r\n    outer.className = 'jz-scrollbar-wrap';\r\n    outer.style.visibility = 'hidden';\r\n    outer.style.width = '100px';\r\n    outer.style.position = 'absolute';\r\n    outer.style.top = '-9999px';\r\n    _baseDom.appendChild(outer);\r\n\r\n    const widthNoScroll = outer.offsetWidth;\r\n    outer.style.overflow = 'scroll';\r\n\r\n    const inner = document.createElement('div');\r\n    inner.style.width = '100%';\r\n    outer.appendChild(inner);\r\n\r\n    const widthWithScroll = inner.offsetWidth;\r\n    outer.parentNode.removeChild(outer);\r\n    const scrollBarWidth = widthNoScroll - widthWithScroll;\r\n\r\n    return scrollBarWidth;\r\n  },\r\n  off: function (element, event, handler) {\r\n    if (element && event) {\r\n      element.removeEventListener(event, handler, false);\r\n    }\r\n  },\r\n  on: function (element, event, handler) {\r\n    if (element && event && handler) {\r\n      element.addEventListener(event, handler, false);\r\n    }\r\n  },\r\n  throttle: function (fn, wait) {\r\n    let startTime = 0;\r\n    wait = wait || 200;\r\n    return function () {\r\n      const endTime = +new Date();\r\n      if (endTime - startTime > wait) {\r\n        fn.apply(this, arguments);\r\n        startTime = endTime;\r\n      }\r\n    };\r\n  },\r\n  debounce: function (fn, delay) {\r\n    let timer = null;\r\n    delay = delay || 40;\r\n    return function () {\r\n      // const context = this;\r\n      const args = arguments;\r\n      clearTimeout(timer);\r\n      timer = setTimeout(function () {\r\n        fn.apply(this, args);\r\n      }, delay);\r\n    };\r\n  },\r\n  initDefaultProps: function (props, defaultData) {\r\n    let key, type, prop;\r\n    for (key in defaultData) {\r\n      if (typeof props[key] === 'object') {\r\n        // props[key] = props[key];\r\n      } else if (typeof props[key] === 'function') {\r\n        props[key] = { type: props[key] };\r\n      } else if (!props[key]) {\r\n        props[key] = {};\r\n      }\r\n      props[key].default = defaultData[key];\r\n    }\r\n    return props;\r\n  },\r\n  typeOf: function (obj) {\r\n    const toString = Object.prototype.toString;\r\n    const map = {\r\n      '[object Boolean]': 'boolean',\r\n      '[object Number]': 'number',\r\n      '[object String]': 'string',\r\n      '[object Function]': 'function',\r\n      '[object Array]': 'array',\r\n      '[object Date]': 'date',\r\n      '[object RegExp]': 'regExp',\r\n      '[object Undefined]': 'undefined',\r\n      '[object Null]': 'null',\r\n      '[object Object]': 'object',\r\n    };\r\n    return map[toString.call(obj)];\r\n  },\r\n  deepCopy: function (data) {\r\n    // return data;\r\n    const t = utils.typeOf(data);\r\n    let o;\r\n\r\n    if (t === 'array') {\r\n      o = [];\r\n    } else if (t === 'object') {\r\n      o = {};\r\n    } else {\r\n      return data;\r\n    }\r\n\r\n    if (t === 'array') {\r\n      for (var i = 0; i < data.length; i++) {\r\n        o.push(utils.deepCopy(data[i]));\r\n      }\r\n    } else if (t === 'object') {\r\n      for (var i in data) {\r\n        o[i] = utils.deepCopy(data[i]);\r\n      }\r\n    }\r\n    return o;\r\n  },\r\n  stringToIntArray: function (arr) {\r\n    return arr.map(function (item) {\r\n      return +item;\r\n    });\r\n  },\r\n  trim: function (string) {\r\n    return (string || '').replace(/^[\\s\\uFEFF]+|[\\s\\uFEFF]+$/g, '');\r\n  },\r\n  addClass: function (el, cls) {\r\n    if (!el) return;\r\n\r\n    const curClass = el.className;\r\n    const classes = (cls || '').split(' ');\r\n\r\n    for (let i = 0, j = classes.length; i < j; i++) {\r\n      const clsName = classes[i];\r\n      if (!clsName) continue;\r\n\r\n      if (el.classList) {\r\n        el.classList.add(clsName);\r\n      } else {\r\n        // if (!hasClass(el, clsName)) {\r\n        //   curClass += ' ' + clsName;\r\n        // }\r\n      }\r\n    }\r\n    if (!el.classList) {\r\n      el.className = curClass;\r\n    }\r\n  },\r\n  removeClass: function (el, cls) {\r\n    if (!el || !cls) return;\r\n\r\n    const classes = cls.split(' ');\r\n    const curClass = ' ' + el.className + ' ';\r\n\r\n    for (let i = 0, j = classes.length; i < j; i++) {\r\n      const clsName = classes[i];\r\n      if (!clsName) continue;\r\n\r\n      if (el.classList) {\r\n        el.classList.remove(clsName);\r\n      } else {\r\n        // if (hasClass(el, clsName)) {\r\n        //   curClass = curClass.replace(' ' + clsName + ' ', ' ');\r\n        // }\r\n      }\r\n    }\r\n\r\n    if (!el.classList) {\r\n      el.className = utils.trim(curClass);\r\n    }\r\n  },\r\n  isNull: function (obj) {\r\n    return typeof obj === 'undefined' || obj == null;\r\n  },\r\n  Img: {\r\n    MODE_SCALE_FILL: 1, // 根据区域能够填满的最大值等比例缩放。图片100x50，区域50x50，结果50x25。\r\n    MODE_SCALE_WIDTH: 2, // 根据区域宽度等比例缩放，结果高度将不受区域高度限制，即可能撑大高度。图片100x50，区域50x10，结果50x25。\r\n    MODE_SCALE_HEIGHT: 3, // 根据区域高度等比例缩放，结果宽度将不受区域宽度限制，即可能撑大宽度。图片100x50，区域50x50，结果100x50。\r\n    MODE_SCALE_DEFLATE_WIDTH: 4, // 根据区域宽度等比例缩小，不放大，结果高度将不受区域高度限制。图片100x50，区域50x10，结果50x25；图片100x50，区域200x100，结果100x50。\r\n    MODE_SCALE_DEFLATE_HEIGHT: 5, // 根据区域高度等比例缩小，不放大，结果宽度将不受区域高度限制。图片100x50，区域50x50，结果100x50；图片100x50，区域200x100，结果100x50。\r\n    MODE_SCALE_DEFLATE_FILL: 6, // 根据区域能够填满的最大值等比例缩小，不放大。图片100x50，区域50x50，结果50x25。\r\n    MODE_SCALE_DEFLATE_MAX: 7, // 根据区域等比例缩小，不放大，结果的宽度和高度不能同时超过区域限制。图片200x100，区域100x100，结果200x100；图片100x200，区域100x100，结果100x200。\r\n  },\r\n  calcSize: function (width, height, maxWidth, maxHeight, mode) {\r\n    const size = { width, height };\r\n    if (mode === utils.Img.MODE_SCALE_FILL) {\r\n      var rateWidth = width / maxWidth;\r\n      var rateHeight = height / maxHeight;\r\n\r\n      if (rateWidth > rateHeight) {\r\n        size.width = maxWidth;\r\n        size.height = height / rateWidth;\r\n      } else {\r\n        size.width = width / rateHeight;\r\n        size.height = maxHeight;\r\n      }\r\n    } else if (mode === utils.Img.MODE_SCALE_WIDTH) {\r\n      var rateWidth = width / maxWidth;\r\n      size.width = maxWidth;\r\n      size.height = height / rateWidth;\r\n    } else if (mode === utils.Img.MODE_SCALE_HEIGHT) {\r\n      var rateHeight = height / maxHeight;\r\n      size.width = width / rateHeight;\r\n      size.height = maxHeight;\r\n    } else if (mode === utils.Img.MODE_SCALE_DEFLATE_WIDTH) {\r\n      var rateWidth = width / maxWidth;\r\n      if (rateWidth > 1) {\r\n        size.width = maxWidth;\r\n        size.height = height / rateWidth;\r\n      }\r\n    } else if (mode === utils.Img.MODE_SCALE_DEFLATE_HEIGHT) {\r\n      var rateHeight = height / maxHeight;\r\n      if (rateHeight > 1) {\r\n        size.width = width / rateHeight;\r\n        size.height = maxHeight;\r\n      }\r\n    } else if (mode === utils.Img.MODE_SCALE_DEFLATE_FILL) {\r\n      var rateWidth = width / maxWidth;\r\n      var rateHeight = height / maxHeight;\r\n\r\n      if (rateWidth > rateHeight) {\r\n        if (rateWidth > 1) {\r\n          size.width = maxWidth;\r\n          size.height = height / rateWidth;\r\n        }\r\n      } else {\r\n        if (rateHeight > 1) {\r\n          size.width = width / rateHeight;\r\n          size.height = maxHeight;\r\n        }\r\n      }\r\n    } else if (mode === utils.Img.MODE_SCALE_DEFLATE_MAX) {\r\n      if (width > maxWidth && height > maxHeight) {\r\n        var rateWidth = width / maxWidth;\r\n        var rateHeight = height / maxHeight;\r\n\r\n        if (rateWidth < rateHeight) {\r\n          size.width = maxWidth;\r\n          size.height = height / rateWidth;\r\n        } else {\r\n          size.width = width / rateHeight;\r\n          size.height = maxHeight;\r\n        }\r\n      }\r\n    }\r\n    size.width = Math.floor(size.width);\r\n    size.height = Math.floor(size.height);\r\n    if (size.width === 0) {\r\n      size.width = 1;\r\n    }\r\n    if (size.height === 0) {\r\n      size.height = 1;\r\n    }\r\n    return size;\r\n  },\r\n  /* 使用此函数时，不要在img标签中先设置大小，会使得调整img大小时失败；先隐藏图片，避免出现图片从原始图片变为目标图片的过程\r\n   *\tcopy建站Fai下的方法\r\n   * \t<img src=\"xx.jpg\" style=\"display:none;\" onload=\"Fai.Img.optimize(this, {width:100, height:50, mode:Fai.Img.MODE_SCALE_FILL});\"/>\r\n   */\r\n  optimize: function (img, option) {\r\n    // ie下对于display:none的img不会加载\r\n    // 这里要用临时图片，是因为当动态改变图片src时，由于图片的大小已经被设置，因此再次获取会失败\r\n    const imgTmp = new Image();\r\n    // 这里还不能先置空，否则将会引起对''文件的一次访问\r\n    //\timgTmp.src = '';\r\n    imgTmp.src = img.src;\r\n    let imgWidth = imgTmp.width;\r\n    let imgHeight = imgTmp.height;\r\n    if (utils.isNull(imgWidth) || imgWidth === 0 || utils.isNull(imgHeight) || imgHeight === 0) {\r\n      // chrome似乎对临时图片的加载会有延迟，立即取大小会失败\r\n      imgWidth = img.width;\r\n      imgHeight = img.height;\r\n    }\r\n\r\n    const size = utils.calcSize(imgWidth, imgHeight, option.width, option.height, option.mode);\r\n    img.width = size.width;\r\n    img.height = size.height;\r\n    if (option.display === 1) {\r\n      img.style.display = 'inline';\r\n    } else if (option.display === 2) {\r\n      img.style.display = 'none';\r\n    } else if (option.display === 3) {\r\n      img.style.display = 'inline-block';\r\n    } else {\r\n      img.style.display = 'block';\r\n    }\r\n    return { width: img.width, height: img.height };\r\n  },\r\n  slideUp: function (element, animationTime, callback) {\r\n    let upMorphTimer;\r\n\r\n    const options = {\r\n      height: 0,\r\n      padding: {\r\n        top: 0,\r\n        bot: 0,\r\n      },\r\n      margin: {\r\n        top: 0,\r\n        bot: 0,\r\n      },\r\n    };\r\n\r\n    morph(upMorphTimer, element, options, animationTime, function (Properties) {\r\n      const AttrElementStyle = element.style;\r\n\r\n      AttrElementStyle.width = '';\r\n      AttrElementStyle.height = '';\r\n      AttrElementStyle.padding = '';\r\n      AttrElementStyle.margin = '';\r\n      element.style.display = 'none';\r\n\r\n      if (callback) callback();\r\n    });\r\n  },\r\n  slideDown: function (element, animationTime, callback) {\r\n    if (!element) return;\r\n\r\n    let downMorphTimer;\r\n    const AttrElementStyle = element.style;\r\n    const ComputedElementStyle = window.getComputedStyle(element, null);\r\n\r\n    AttrElementStyle.display = 'block';\r\n\r\n    const options = {\r\n      width: parseInt(ComputedElementStyle.getPropertyValue('width')),\r\n      height: parseInt(ComputedElementStyle.getPropertyValue('height')),\r\n      padding: {\r\n        top: parseInt(ComputedElementStyle.getPropertyValue('padding-top')),\r\n        bot: parseInt(ComputedElementStyle.getPropertyValue('padding-bottom')),\r\n      },\r\n      margin: {\r\n        top: parseInt(ComputedElementStyle.getPropertyValue('margin-top')),\r\n        bot: parseInt(ComputedElementStyle.getPropertyValue('margin-bottom')),\r\n      },\r\n    };\r\n\r\n    AttrElementStyle.height = '0';\r\n    AttrElementStyle.paddingTop = '0';\r\n    AttrElementStyle.paddingBottom = '0';\r\n    AttrElementStyle.marginTop = '0';\r\n    AttrElementStyle.marginBottom = '0';\r\n\r\n    morph(downMorphTimer, element, options, animationTime, function () {\r\n      AttrElementStyle.width = '';\r\n      AttrElementStyle.height = '';\r\n      AttrElementStyle.padding = '';\r\n      AttrElementStyle.margin = '';\r\n\r\n      element.style.display = 'block';\r\n\r\n      if (callback) callback();\r\n    });\r\n  },\r\n  isUndef: function (v) {\r\n    return v === undefined || v === null;\r\n  },\r\n  isDef: function (v) {\r\n    return v !== undefined && v !== null;\r\n  },\r\n  once: function (func) {\r\n    let ran, result;\r\n\r\n    return function () {\r\n      if (ran) {\r\n        return result;\r\n      }\r\n      ran = true;\r\n      result = func.apply(this, arguments);\r\n\r\n      func = null;\r\n      return result;\r\n    };\r\n  },\r\n  Background: {\r\n    IMAGE_POSITION: [\r\n      {\r\n        key: 'left-top',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'left',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'center-top',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'right-top',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'right',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'left-center',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'left',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'center-center',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'right-center',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'right',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'left-bottom',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'left',\r\n        backgroundPositionY: 'bottom',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'center-bottom',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'bottom',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        key: 'right-bottom',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'right',\r\n        backgroundPositionY: 'bottom',\r\n        backgroundSize: 'auto',\r\n      },\r\n    ],\r\n    PAVING_EFFECT: [\r\n      {\r\n        label: '默认',\r\n        key: 'default',\r\n        backgroundRepeat: 'repeat',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        label: '缩放平铺',\r\n        key: 'zoom-tile',\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: '100%',\r\n      },\r\n      {\r\n        label: '上',\r\n        key: 'top',\r\n        backgroundRepeat: 'repeat-x',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        label: '中-横向',\r\n        key: 'in-horizontal',\r\n        backgroundRepeat: 'repeat-x',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        label: '下',\r\n        key: 'bottom',\r\n        backgroundRepeat: 'repeat-x',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'bottom',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        label: '左',\r\n        key: 'left',\r\n        backgroundRepeat: 'repeat-y',\r\n        backgroundPositionX: 'left',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        label: '中-纵向',\r\n        key: 'in-vertical',\r\n        backgroundRepeat: 'repeat-y',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: 'auto',\r\n      },\r\n      {\r\n        label: '右',\r\n        key: 'right',\r\n        backgroundRepeat: 'repeat-y',\r\n        backgroundPositionX: 'right',\r\n        backgroundPositionY: 'top',\r\n        backgroundSize: 'auto',\r\n      },\r\n    ],\r\n    SCALING_STRETCH: [\r\n      {\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'left',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: '100% 100%',\r\n      },\r\n    ],\r\n    SCALING_FILL: [\r\n      {\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: 'cover',\r\n      },\r\n    ],\r\n    SCALING_CONTAIN: [\r\n      {\r\n        backgroundRepeat: 'no-repeat',\r\n        backgroundPositionX: 'center',\r\n        backgroundPositionY: 'center',\r\n        backgroundSize: 'contain',\r\n      },\r\n    ],\r\n  },\r\n  parseBackgroundImageUrl: function (backgroundImage) {\r\n    let ret = '';\r\n    if (backgroundImage) {\r\n      const found = backgroundImage.match(/url\\(\\s*['|\"\"]?\\s*(\\S+)\\s*['|\"\"]?\\s*\\)/);\r\n      if (found && found[1]) {\r\n        ret = found[1];\r\n      }\r\n    }\r\n    return ret;\r\n  },\r\n  parseBackgroundImageGradient: function (backgroundImage) {\r\n    let ret = '';\r\n    if (backgroundImage) {\r\n      const found = backgroundImage.match(/linear-gradient\\(\\s*.+\\s*\\)/);\r\n      if (found && found[0]) {\r\n        ret = found[0];\r\n      }\r\n    }\r\n    return ret;\r\n  },\r\n  concatBackgroundColor: function (color) {\r\n    return /linear-gradient\\(/.test(color) ? '' : color;\r\n  },\r\n  concatBackgroundImage: function (imageUrl, color) {\r\n    return [imageUrl ? 'url(' + imageUrl + ')' : '', /linear-gradient\\(/.test(color) ? color : '']\r\n      .filter(function (x) {\r\n        return x;\r\n      })\r\n      .join(',');\r\n  },\r\n  contentLoaded: function (win, fn) {\r\n    let done = false;\r\n    let top = true;\r\n    const doc = win.document;\r\n    const root = doc.documentElement;\r\n    const modern = doc.addEventListener;\r\n    const add = modern ? 'addEventListener' : 'attachEvent';\r\n    const rem = modern ? 'removeEventListener' : 'detachEvent';\r\n    const pre = modern ? '' : 'on';\r\n    var init = function (e) {\r\n      if (e.type === 'readystatechange' && doc.readyState !== 'complete') return;\r\n      (e.type === 'load' ? win : doc)[rem](pre + e.type, init, false);\r\n      if (!done && (done = true)) fn.call(win, e.type || e);\r\n    };\r\n    var poll = function () {\r\n      try {\r\n        root.doScroll('left');\r\n      } catch (e) {\r\n        setTimeout(poll, 50);\r\n        return;\r\n      }\r\n      init('poll');\r\n    };\r\n\r\n    if (doc.readyState === 'complete') fn.call(win, 'lazy');\r\n    else {\r\n      if (!modern && root.doScroll) {\r\n        try {\r\n          top = !win.frameElement;\r\n        } catch (e) {}\r\n        if (top) poll();\r\n      }\r\n      doc[add](pre + 'DOMContentLoaded', init, false);\r\n      doc[add](pre + 'readystatechange', init, false);\r\n      win[add](pre + 'load', init, false);\r\n    }\r\n  },\r\n};\r\n\r\nfunction broadcast(componentName, eventName, params) {\r\n  this.$children?.forEach(function (child) {\r\n    const name = child.$options.name;\r\n\r\n    if (name === componentName) {\r\n      child.$emit.apply(child, [eventName].concat(params));\r\n    } else {\r\n      // todo 如果 params 是空数组，接收到的会是 undefined\r\n      broadcast.apply(child, [componentName, eventName].concat([params]));\r\n    }\r\n  });\r\n}\r\n\r\nfunction morph(morphTimer, element, options, animationTime, callback) {\r\n  const ComputedElementStyle = window.getComputedStyle(element, null);\r\n  const AttrElementStyle = element.style;\r\n  const Properties = {\r\n    width: parseInt(ComputedElementStyle.getPropertyValue('width')),\r\n    height: parseInt(ComputedElementStyle.getPropertyValue('height')),\r\n    padding: {\r\n      top: parseInt(ComputedElementStyle.getPropertyValue('padding-top')),\r\n      right: parseInt(ComputedElementStyle.getPropertyValue('padding-right')),\r\n      bot: parseInt(ComputedElementStyle.getPropertyValue('padding-bottom')),\r\n      left: parseInt(ComputedElementStyle.getPropertyValue('padding-left')),\r\n    },\r\n    margin: {\r\n      top: parseInt(ComputedElementStyle.getPropertyValue('margin-top')),\r\n      right: parseInt(ComputedElementStyle.getPropertyValue('margin-right')),\r\n      bot: parseInt(ComputedElementStyle.getPropertyValue('margin-bottom')),\r\n      left: parseInt(ComputedElementStyle.getPropertyValue('margin-left')),\r\n    },\r\n  };\r\n  const DiffValues = {\r\n    width: options.width != null ? options.width - Properties.width : 0,\r\n    height: options.height != null ? options.height - Properties.height : 0,\r\n    padding: {\r\n      top:\r\n        options.padding && options.padding.top != null\r\n          ? options.padding.top - Properties.padding.top\r\n          : 0,\r\n      right:\r\n        options.padding && options.padding.right != null\r\n          ? options.padding.right - Properties.padding.right\r\n          : 0,\r\n      bot:\r\n        options.padding && options.padding.bot != null\r\n          ? options.padding.bot - Properties.padding.bot\r\n          : 0,\r\n      left:\r\n        options.padding && options.padding.left != null\r\n          ? options.padding.left - Properties.padding.left\r\n          : 0,\r\n    },\r\n    margin: {\r\n      top:\r\n        options.margin && options.margin.top != null\r\n          ? options.margin.top - Properties.margin.top\r\n          : 0,\r\n      right:\r\n        options.margin && options.margin.right != null\r\n          ? options.margin.right - Properties.margin.right\r\n          : 0,\r\n      bot:\r\n        options.margin && options.margin.bot != null\r\n          ? options.margin.bot - Properties.margin.bot\r\n          : 0,\r\n      left:\r\n        options.margin && options.margin.left != null\r\n          ? options.margin.left - Properties.margin.left\r\n          : 0,\r\n    },\r\n  };\r\n  const beginTime = new Date().getTime();\r\n  let sinceBeginTime;\r\n  let progressFactor;\r\n\r\n  animationTime = animationTime != null ? animationTime : 250;\r\n  AttrElementStyle.overflow = 'hidden';\r\n\r\n  clearInterval(morphTimer);\r\n\r\n  morphTimer = setInterval(function () {\r\n    sinceBeginTime = new Date().getTime() - beginTime;\r\n\r\n    if (sinceBeginTime < animationTime) {\r\n      progressFactor = sinceBeginTime / animationTime;\r\n      AttrElementStyle.width = Properties.width + DiffValues.width * progressFactor + 'px';\r\n      AttrElementStyle.height = Properties.height + DiffValues.height * progressFactor + 'px';\r\n\r\n      AttrElementStyle.padding =\r\n        Properties.padding.top +\r\n        DiffValues.padding.top * progressFactor +\r\n        'px ' +\r\n        (Properties.padding.right + DiffValues.padding.right * progressFactor) +\r\n        'px ' +\r\n        (Properties.padding.bot + DiffValues.padding.bot * progressFactor) +\r\n        'px ' +\r\n        (Properties.padding.left + DiffValues.padding.left * progressFactor) +\r\n        'px';\r\n\r\n      AttrElementStyle.margin =\r\n        Properties.margin.top +\r\n        DiffValues.margin.top * progressFactor +\r\n        'px ' +\r\n        (Properties.margin.right + DiffValues.margin.right * progressFactor) +\r\n        'px ' +\r\n        (Properties.margin.bot + DiffValues.margin.bot * progressFactor) +\r\n        'px ' +\r\n        (Properties.margin.left + DiffValues.margin.left * progressFactor) +\r\n        'px';\r\n    } else {\r\n      AttrElementStyle.width = options.width + 'px';\r\n      AttrElementStyle.height = options.height + 'px';\r\n\r\n      AttrElementStyle.padding =\r\n        Properties.padding.top +\r\n        DiffValues.padding.top +\r\n        'px ' +\r\n        (Properties.padding.right + DiffValues.padding.right) +\r\n        'px ' +\r\n        (Properties.padding.bot + DiffValues.padding.bot) +\r\n        'px ' +\r\n        (Properties.padding.left + DiffValues.padding.left) +\r\n        'px';\r\n\r\n      AttrElementStyle.margin =\r\n        Properties.margin.top +\r\n        DiffValues.margin.top +\r\n        'px ' +\r\n        (Properties.margin.right + DiffValues.margin.right) +\r\n        'px ' +\r\n        (Properties.margin.bot + DiffValues.margin.bot) +\r\n        'px ' +\r\n        (Properties.margin.left + DiffValues.margin.left) +\r\n        'px';\r\n\r\n      clearInterval(morphTimer);\r\n\r\n      if (callback != null) callback(Properties);\r\n    }\r\n  }, 15);\r\n}\r\n\r\nconst filterFn = () => true;\r\n// eslint-disable-next-line prefer-const\r\n\r\nwindow.vue_utils = utils;\r\n\r\nexport default utils;\r\n","<template>\r\n  <div\r\n    class=\"tkc_upload\"\r\n    :class=\"['tkc_upload_' + size, { tkc_upload_disabled: disabled }]\"\r\n    @click=\"clickUploadHandler\"\r\n  >\r\n    <div class=\"tkc_upload_icon\">\r\n      <svg class=\"cusicon-plus\" aria-hidden=\"true\">\r\n        <use xlink:href=\"#cusicon-plus\" />\r\n      </svg>\r\n    </div>\r\n    <div v-if=\"size == 'large'\" class=\"tkc_upload_label\">{{ label }}</div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import vueUtils from '../../../utils/vue_utils';\r\n  export default {\r\n    name: 'UploadComponent',\r\n    props: {\r\n      disabled: Boolean,\r\n      label: {\r\n        type: String,\r\n        default: '点击添加图片',\r\n      },\r\n      size: {\r\n        type: String,\r\n        default: 'normal',\r\n        validator(value) {\r\n          return vueUtils.oneOf(value, ['mini', 'normal', 'large']);\r\n        },\r\n      },\r\n    },\r\n    methods: {\r\n      clickUploadHandler() {\r\n        if (this.disabled) return;\r\n        this.$emit('upload');\r\n      },\r\n    },\r\n  };\r\n</script>\r\n\r\n<style lang=\"less\">\r\n  @import '../../../themes';\r\n\r\n  .tkc_upload {\r\n    box-sizing: border-box;\r\n    width: 78px;\r\n    height: 78px;\r\n    border: 1px dashed #ccc;\r\n    line-height: 76px;\r\n    color: #666;\r\n    cursor: pointer;\r\n    text-align: center;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .tkc_upload:hover {\r\n    border-color: @primary-color;\r\n    color: @primary-color;\r\n    .tkc_upload_icon {\r\n      color: @primary-color;\r\n    }\r\n  }\r\n\r\n  .tkc_upload_disabled {\r\n    cursor: not-allowed;\r\n    &:after {\r\n      background-color: #f7f7f7;\r\n    }\r\n  }\r\n\r\n  .tkc_upload_disabled:hover {\r\n    border-color: #ccc;\r\n  }\r\n\r\n  .tkc_upload_icon {\r\n    display: inline-block;\r\n    width: 32px;\r\n    height: 35px;\r\n    vertical-align: middle;\r\n    position: relative;\r\n\r\n    .cusicon-plus {\r\n      top: 0;\r\n      left: 0;\r\n      position: absolute;\r\n      width: 100%;\r\n      height: 100%;\r\n      fill: currentColor;\r\n      overflow: hidden;\r\n    }\r\n  }\r\n\r\n  .tkc_upload_disabled:hover .tkc_upload_icon {\r\n    .cusicon-plus {\r\n      color: #666;\r\n    }\r\n  }\r\n\r\n  .tkc_upload_large {\r\n    width: auto;\r\n    float: none !important;\r\n  }\r\n\r\n  .tkc_upload_large .tkc_upload_icon {\r\n    width: 25px;\r\n    height: 25px;\r\n  }\r\n\r\n  .tkc_upload_large:hover .tkc_upload_icon {\r\n    color: @primary-color;\r\n  }\r\n\r\n  .tkc_upload_label {\r\n    display: none;\r\n  }\r\n\r\n  .tkc_upload_large .tkc_upload_label {\r\n    display: inline-block;\r\n    height: 32px;\r\n    margin-left: 10px;\r\n    line-height: 32px;\r\n    font-size: 13px;\r\n    vertical-align: middle;\r\n  }\r\n\r\n  .tkc_upload_mini {\r\n    width: 100%;\r\n    height: 100%;\r\n    line-height: 0;\r\n  }\r\n\r\n  .tkc_upload_mini .tkc_upload_icon {\r\n    width: 100%;\r\n    height: 100%;\r\n    .cusicon-plus {\r\n      color: #666;\r\n    }\r\n  }\r\n\r\n  .tkc_upload_mini:hover .tkc_upload_icon {\r\n    .cusicon-plus {\r\n      color: @primary-color;\r\n    }\r\n  }\r\n</style>\r\n","<template>\r\n  <div class=\"tkc-gallery\" :data-index=\"proxyIndex\" :data-max-index=\"maxIndex\">\r\n    <div class=\"gallery-wrap\" :style=\"wrapStyles\">\r\n      <div class=\"gallery-view\" :style=\"viewStyles\">\r\n        <slot></slot>\r\n      </div>\r\n    </div>\r\n    <div\r\n      v-if=\"maxIndex > 0\"\r\n      class=\"gallery-button\"\r\n      :class=\"prevButtonClasses\"\r\n      :style=\"prevStyles\"\r\n      @click=\"slideToPrev\"\r\n    >\r\n      <i class=\"gallery-button-icon is-prev\">\r\n        <svg class=\"cusicon-icon\" aria-hidden=\"true\">\r\n          <use xlink:href=\"#cusicon-left\" />\r\n        </svg>\r\n      </i>\r\n    </div>\r\n    <div\r\n      v-if=\"maxIndex > 0\"\r\n      class=\"gallery-button\"\r\n      :class=\"nextButtonClasses\"\r\n      :style=\"nextStyles\"\r\n      @click=\"slideToNext\"\r\n    >\r\n      <i class=\"gallery-button-icon is-next\">\r\n        <svg class=\"cusicon-icon\" aria-hidden=\"true\">\r\n          <use xlink:href=\"#cusicon-right\" />\r\n        </svg>\r\n      </i>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import vueUtils from '../../../utils/vue_utils';\r\n  const DEFAULT_INDEX = 0;\r\n  const DEFAULT_WIDTH = 600;\r\n  const DEFAULT_BUTTON_POS = 32;\r\n  const ICON_SIZE = 'default';\r\n\r\n  export default {\r\n    name: 'GalleryComponent',\r\n    props: vueUtils.initDefaultProps(\r\n      {\r\n        wrapWidth: Number,\r\n        viewWidth: Number,\r\n        prevLeft: Number,\r\n        nextRight: Number,\r\n        iconSize: String,\r\n        defaultIndex: Number,\r\n      },\r\n      {\r\n        wrapWidth: DEFAULT_WIDTH,\r\n        viewWidth: DEFAULT_WIDTH,\r\n        prevLeft: DEFAULT_BUTTON_POS,\r\n        nextRight: DEFAULT_BUTTON_POS,\r\n        iconSize: ICON_SIZE,\r\n        defaultIndex: DEFAULT_INDEX,\r\n      },\r\n    ),\r\n    data() {\r\n      return {\r\n        index: this.defaultIndex,\r\n      };\r\n    },\r\n    computed: {\r\n      prevStyles() {\r\n        return { left: '-' + this.prevLeft + 'px' };\r\n      },\r\n      nextStyles() {\r\n        return { right: '-' + this.nextRight + 'px' };\r\n      },\r\n      wrapStyles() {\r\n        return { width: this.wrapWidth + 'px' };\r\n      },\r\n      viewStyles() {\r\n        const marginLeft = this.proxyIndex * this.wrapWidth;\r\n        const maxMarginLeft = this.viewWidth - this.wrapWidth;\r\n\r\n        const _marginLeft = marginLeft > maxMarginLeft ? maxMarginLeft : marginLeft;\r\n\r\n        return {\r\n          width: this.viewWidth + 'px',\r\n          'margin-left': '-' + _marginLeft + 'px',\r\n        };\r\n      },\r\n      maxIndex() {\r\n        return Math.ceil(this.viewWidth / this.wrapWidth) - 1;\r\n      },\r\n      minIndex() {\r\n        return 0;\r\n      },\r\n      // 计算属性代理index, 实现有范围的自动取值\r\n      proxyIndex: {\r\n        get() {\r\n          return this.index;\r\n        },\r\n        set(index) {\r\n          const maxIndex = this.maxIndex;\r\n          const minIndex = this.minIndex;\r\n\r\n          this.index = index > maxIndex ? maxIndex : index < minIndex ? minIndex : index;\r\n        },\r\n      },\r\n      prevButtonClasses() {\r\n        const classes = {};\r\n        classes['gallery-button-' + this.iconSize] = true;\r\n        classes['is-disabled'] = this.proxyIndex == this.minIndex;\r\n        return classes;\r\n      },\r\n      nextButtonClasses() {\r\n        const classes = {};\r\n        classes['gallery-button-' + this.iconSize] = true;\r\n        classes['is-disabled'] = this.proxyIndex == this.maxIndex;\r\n        return classes;\r\n      },\r\n    },\r\n    created() {\r\n      this.$bus?.$on('slide-to-first', this.slideToFirst);\r\n      this.$bus?.$on('slide-to-prev', this.slideToPrev);\r\n      this.$bus?.$on('slide-to-next', this.slideToNext);\r\n      this.$bus?.$on('slide-to-last', this.slideToLast);\r\n    },\r\n    methods: {\r\n      slideToPrev() {\r\n        this.proxyIndex--;\r\n      },\r\n      slideToNext() {\r\n        this.proxyIndex++;\r\n      },\r\n      slideToLast() {\r\n        this.proxyIndex = this.maxIndex;\r\n      },\r\n      slideToFirst() {\r\n        this.proxyIndex = this.minIndex;\r\n      },\r\n    },\r\n  };\r\n</script>\r\n\r\n<style lang=\"less\">\r\n  @import '../../../themes';\r\n  .tkc-gallery {\r\n    position: relative;\r\n  }\r\n\r\n  .tkc-gallery .gallery-wrap {\r\n    overflow: hidden;\r\n  }\r\n\r\n  .tkc-gallery .gallery-view {\r\n    transition: margin 0.5s ease;\r\n  }\r\n\r\n  .tkc-gallery .gallery-button {\r\n    position: absolute;\r\n    cursor: pointer;\r\n    &.is-disabled {\r\n      cursor: no-drop;\r\n      &,\r\n      &:hover {\r\n        .gallery-button-icon {\r\n          color: #e6e6e6;\r\n        }\r\n      }\r\n    }\r\n    &:hover {\r\n      .gallery-button-icon {\r\n        color: @primary-color;\r\n      }\r\n    }\r\n  }\r\n\r\n  .tkc-gallery {\r\n    .gallery-button-default {\r\n      width: 42px;\r\n      height: 42px;\r\n      top: 50%;\r\n      margin-top: -20px;\r\n    }\r\n    .gallery-button-small {\r\n      width: 16px;\r\n      height: 20px;\r\n      top: 50%;\r\n      margin-top: -10px;\r\n    }\r\n  }\r\n\r\n  .gallery-button-icon {\r\n    display: inline-block;\r\n    width: 100%;\r\n    height: 100%;\r\n    color: #666;\r\n    .cusicon-icon {\r\n      position: absolute;\r\n      top: 0;\r\n      left: 0;\r\n      width: 100%;\r\n      height: 100%;\r\n      fill: currentColor;\r\n      overflow: hidden;\r\n    }\r\n  }\r\n</style>\r\n","import gallery from './src/main.vue';\r\nimport { withInstall } from '../../utils';\r\nexport const Gallery = withInstall(gallery);\r\nexport default Gallery;\r\n","export const UPDATE_MODEL_EVENT = 'update:modelValue';\nexport const CHANGE_EVENT = 'change';\nexport const INPUT_EVENT = 'input';\n","<template>\r\n  <div class=\"tkc-photo-list\" :class=\"{ 'is-no-photo': noPhoto }\" :style=\"photoListStyles\">\r\n    <div class=\"photo-list-wrap\">\r\n      <upload-component\r\n        class=\"tkc_photo_list_upload\"\r\n        :style=\"uploadStyles\"\r\n        :size=\"noPhoto ? 'large' : 'normal'\"\r\n        :disabled=\"maxPhoto\"\r\n        @upload=\"addHandler\"\r\n      />\r\n      <gallery-component\r\n        v-if=\"!noPhoto\"\r\n        class=\"photo-list-view\"\r\n        :wrap-width=\"galleryWrapWidth\"\r\n        :view-width=\"galleryViewWidth\"\r\n        :prev-left=\"prevLeft\"\r\n        :next-right=\"nextRight\"\r\n      >\r\n        <draggable\r\n          class=\"photo-list-drag\"\r\n          :class=\"{ 'is-dragging': dragging }\"\r\n          v-model=\"photoList\"\r\n          :options=\"dragOpts\"\r\n          @input=\"dragHandler\"\r\n          @start=\"startDrag\"\r\n          @end=\"endDrag\"\r\n          item-key=\"index\"\r\n        >\r\n          <template #item=\"{ element, index }\">\r\n            <div\r\n              :key=\"index\"\r\n              class=\"photo-list-item\"\r\n              :class=\"{ ['photo-selected']: checkedItem && checkedItem === element }\"\r\n              :style=\"itemStyles\"\r\n              @click=\"editHandler(element, index)\"\r\n              @mousemove=\"mousemoveHandler(index)\"\r\n              @mouseleave=\"mouseleaveHandler\"\r\n            >\r\n              <editor-component\r\n                class=\"tkc_photo_list_editor\"\r\n                :class=\"{ tkc_photo_list_editor_hover: index == hoverIndex }\"\r\n                @close=\"delHandler(element)\"\r\n                @editor=\"editHandler(element, index)\"\r\n              >\r\n                <img-component v-if=\"index < viewLength || canLoad\" :src=\"element[pathAlias]\" />\r\n              </editor-component>\r\n            </div>\r\n          </template>\r\n        </draggable>\r\n      </gallery-component>\r\n    </div>\r\n    <div v-if=\"modelValue.length > viewLength\" class=\"photo-list-label\">\r\n      图片已上传{{ modelValue.length }}张\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import { nextTick } from 'vue';\r\n  // 改这里的值要注意css那边是否有关联\r\n  import ImgComponent from './img.vue';\r\n  import EditorComponent from './editor.vue';\r\n  import UploadComponent from './upload.vue';\r\n  import GalleryComponent from '../../gallery';\r\n  import draggable from 'vuedraggable';\r\n  import vueUtils from '../../../utils/vue_utils';\r\n  import { UPDATE_MODEL_EVENT } from '../../../constants/event';\r\n\r\n  const UPLOAD_LENGTH = 1;\r\n  const UPLOAD_WIDTH = 78;\r\n  const IETM_WIDTH = 92;\r\n  export default {\r\n    name: 'PhotoListComponent',\r\n    components: {\r\n      ImgComponent,\r\n      EditorComponent,\r\n      UploadComponent,\r\n      GalleryComponent,\r\n      draggable,\r\n    },\r\n    emits: ['add-photo', UPDATE_MODEL_EVENT, 'del-photo', 'drag-photo', 'edit-photo'],\r\n    props: {\r\n      modelValue: {\r\n        type: Array,\r\n        requied: true,\r\n      },\r\n      viewLength: {\r\n        type: Number,\r\n        default: 4,\r\n      },\r\n      pathAlias: {\r\n        type: String,\r\n        default: 'filePath',\r\n      },\r\n      slideToDirection: {\r\n        type: String,\r\n        default: 'last',\r\n      },\r\n      max: {\r\n        type: Number,\r\n        default: Infinity,\r\n      },\r\n      itemMargin: {\r\n        type: Number,\r\n        default: 15,\r\n      },\r\n      uploadMargin: {\r\n        type: Number,\r\n        default: 15,\r\n      },\r\n      noPhotoWidth: Number,\r\n      prevLeft: {\r\n        type: Number,\r\n        default: 140,\r\n      },\r\n      nextRight: {\r\n        type: Number,\r\n        default: 47,\r\n      },\r\n    },\r\n    data() {\r\n      return {\r\n        dragging: false,\r\n        hoverIndex: -1,\r\n        canLoad: false,\r\n        checkedItem: null,\r\n      };\r\n    },\r\n    computed: {\r\n      photoList: {\r\n        get() {\r\n          return this.modelValue;\r\n        },\r\n        set(value) {\r\n          this.$emit(UPDATE_MODEL_EVENT, value);\r\n        },\r\n      },\r\n      noPhoto() {\r\n        return this.modelValue.length === 0;\r\n      },\r\n      maxPhoto() {\r\n        return this.modelValue.length >= this.max;\r\n      },\r\n      uploadStyles() {\r\n        return this.noPhoto\r\n          ? {\r\n              margin: '5px 0 0',\r\n              width: this.noPhotoWidth ? `${this.noPhotoWidth}px` : '',\r\n            }\r\n          : {\r\n              margin: `5px ${this.uploadMargin / 2}px 0`,\r\n              width: `${UPLOAD_WIDTH}px`,\r\n            };\r\n      },\r\n      itemStyles() {\r\n        return {\r\n          width: `${IETM_WIDTH}px`,\r\n          margin: `5px ${this.itemMargin / 2}px 0`,\r\n        };\r\n      },\r\n      photoListStyles() {\r\n        return { width: `${this.galleryWrapWidth + UPLOAD_LENGTH * this.uploadOuterWidth}px` };\r\n      },\r\n      // 自动计算传给gallery组件的参数\r\n      galleryWrapWidth() {\r\n        return this.viewLength * this.itemOuterWidth;\r\n      },\r\n      galleryViewWidth() {\r\n        return this.modelValue.length * this.itemOuterWidth;\r\n      },\r\n      // draggable组件的配置\r\n      dragOpts() {\r\n        return {\r\n          draggable: '.photo-list-item',\r\n          forceFallback: true,\r\n          filter: '.tkc_editor_item',\r\n          scrollFn: this.scrollFn,\r\n          preventOnFilter: false,\r\n        };\r\n      },\r\n      itemOuterWidth() {\r\n        return IETM_WIDTH + this.itemMargin;\r\n      },\r\n      uploadOuterWidth() {\r\n        return UPLOAD_WIDTH + this.uploadMargin;\r\n      },\r\n    },\r\n    created() {\r\n      // 添加完图片要滑到最后\r\n      // this.$bus?.$on('added-photo', this.addedPhoto);\r\n    },\r\n    mounted() {\r\n      // 图片生成延迟加载\r\n      if (document.readyState === 'complete') {\r\n        this.loadImgs();\r\n      } else {\r\n        vueUtils.on(window, 'load', this.loadImgs);\r\n      }\r\n\r\n      /**\r\n       * 首次加载默认选中第一项\r\n       */\r\n      if (this.modelValue && this.modelValue.length > 0) {\r\n        this.editHandler(this.modelValue[0], 0);\r\n      }\r\n    },\r\n    beforeUnmount() {\r\n      vueUtils.off(window, 'load', this.loadImgs);\r\n    },\r\n    methods: {\r\n      loadImgs() {\r\n        this.canLoad = true;\r\n      },\r\n      addHandler() {\r\n        if (this.maxPhoto) return;\r\n        this.$emit('add-photo', this.addedPhoto);\r\n      },\r\n      delHandler(item) {\r\n        const currentValue = this.modelValue.slice();\r\n        const index = currentValue.indexOf(item);\r\n\r\n        index > -1 && currentValue.splice(index, 1);\r\n\r\n        this.$emit(UPDATE_MODEL_EVENT, currentValue);\r\n        this.$emit('del-photo', item);\r\n      },\r\n      dragHandler(currentValue) {\r\n        this.$emit(UPDATE_MODEL_EVENT, currentValue);\r\n        this.$emit('drag-photo', currentValue);\r\n      },\r\n      editHandler(item, index) {\r\n        this.checkedItem = item;\r\n        this.$emit('edit-photo', item, index);\r\n      },\r\n      // 触发gallery组件的事件，触发滑动效果\r\n      slideToPrev() {\r\n        vueUtils.broadcast(this, 'Gallery', 'slide-to-prev');\r\n      },\r\n      slideToNext() {\r\n        vueUtils.broadcast(this, 'Gallery', 'slide-to-next');\r\n      },\r\n      slideToFirst() {\r\n        vueUtils.broadcast(this, 'Gallery', 'slide-to-first');\r\n      },\r\n      slideToLast() {\r\n        vueUtils.broadcast(this, 'Gallery', 'slide-to-last');\r\n      },\r\n      addedPhoto() {\r\n        // 从无图片状态添加图片，不会触发滑动到最后一张图片的效果\r\n        // 此时子组件的数据还没更新好，要用nextTick\r\n        !this.noPhoto &&\r\n          nextTick(this.slideToDirection === 'last' ? this.slideToLast : this.slideToFirst);\r\n      },\r\n      // 排序的时候检测位置，触发滑动\r\n      scrollFn: vueUtils.throttle(function (offsetX) {\r\n        offsetX < 0 && this.slideToPrev();\r\n        offsetX > 0 && this.slideToNext();\r\n      }, 800),\r\n      // 控制状态，是否排序中\r\n      startDrag() {\r\n        this.dragging = true;\r\n      },\r\n      endDrag() {\r\n        this.dragging = false;\r\n      },\r\n      // 通过操作类来控制hover样式，因为css伪类hover无法处理一些情况\r\n      mousemoveHandler(index) {\r\n        if (this.dragging) return;\r\n        if (this.hoverIndex === index) return;\r\n        this.hoverIndex = index;\r\n      },\r\n      mouseleaveHandler() {\r\n        if (this.dragging) return;\r\n        this.hoverIndex = -1;\r\n      },\r\n    },\r\n  };\r\n</script>\r\n\r\n<style lang=\"less\">\r\n  @import '../../../themes';\r\n\r\n  .tkc-photo-list {\r\n    position: relative;\r\n  }\r\n\r\n  .tkc-photo-list .photo-list-label {\r\n    position: absolute;\r\n    right: 7.5px;\r\n    top: -20px;\r\n    color: #999;\r\n    font-size: 13px;\r\n    line-height: normal;\r\n  }\r\n\r\n  .tkc-photo-list .photo-list-wrap:after {\r\n    content: '';\r\n    display: table;\r\n    clear: both;\r\n    height: 0;\r\n    visibility: hidden;\r\n  }\r\n\r\n  .tkc-photo-list .photo-list-item,\r\n  .tkc-photo-list .photo-list-view {\r\n    display: inline-block;\r\n    float: left;\r\n  }\r\n\r\n  .tkc-photo-list .photo-list-item {\r\n    height: 78px;\r\n  }\r\n\r\n  .tkc-photo-list .photo-list-drag {\r\n    overflow: hidden;\r\n  }\r\n\r\n  .tkc-photo-list .photo-list-item {\r\n    cursor: move;\r\n    position: relative;\r\n    box-sizing: border-box;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    user-select: none;\r\n  }\r\n\r\n  .tkc_photo_list_upload {\r\n    float: left;\r\n  }\r\n\r\n  .tkc_photo_list_editor {\r\n    .tkc_editor_layer {\r\n      opacity: 0;\r\n    }\r\n  }\r\n\r\n  .tkc_photo_list_editor_hover {\r\n    .tkc_editor_layer {\r\n      opacity: 1;\r\n    }\r\n  }\r\n\r\n  .tkc-photo-list .sortable-ghost {\r\n    background-color: #eef2fc;\r\n    border: 1px dashed @primary-color;\r\n  }\r\n\r\n  .tkc-photo-list .sortable-ghost > div {\r\n    display: none;\r\n  }\r\n\r\n  .tkc-photo-list .sortable-fallback .photo-list-item-hover {\r\n    display: none;\r\n  }\r\n</style>\r\n","import photoList from './src/main.vue';\r\nimport { withInstall } from '../../utils';\r\nexport const PhotoList = withInstall(photoList);\r\nexport default PhotoList;\r\n","import type { Plugin } from 'vue';\r\nimport { ColorPickerV3 as TKColorPickerV3 } from './components/color-picker-v3';\r\nimport { Background as TKBackground } from './components/background';\r\nimport { PhotoList as TKPhotoList } from './components/photo-list';\r\nimport { Gallery as TKGallery } from './components/gallery';\r\n\r\nexport default [TKColorPickerV3, TKBackground, TKPhotoList, TKGallery] as Plugin[];\r\n","import type { App, Plugin } from '@vue/runtime-core';\r\nexport const makeInstaller = (components: Plugin[] = []) => {\r\n  const install = (app: App, options?: {}) => {\r\n    // if (app[INSTALLED_KEY]) return;\r\n    //\r\n    // app[INSTALLED_KEY] = true;\r\n    components.forEach((c) => app.use(c));\r\n    // if (options) provideGlobalConfig(options, app, true);\r\n  };\r\n\r\n  return {\r\n    install,\r\n  };\r\n};\r\n","/**\r\n * 背景模形\r\n *\r\n *  backgroundColor {String} {color}\r\n *  backgroundImage {String} url(xxx)|linear-gradient(xxx)|url(xxx),linear-gradient(xxx)\r\n *\r\n */\r\nexport interface BackgroundAttribute {\r\n  label: string;\r\n  key: string;\r\n  backgroundColor: string;\r\n  backgroundImage: string;\r\n  backgroundRepeat: 'repeat' | 'no-repeat' | 'repeat-x' | 'repeat-y' | '';\r\n  backgroundPositionX: 'left' | 'center' | 'right' | '';\r\n  backgroundPositionY: 'top' | 'center' | 'bottom' | '';\r\n  backgroundSize: 'auto' | '100%' | '100% 100%' | 'cover' | 'contain' | '';\r\n  backgroundAttachment: 'scroll' | 'fixed';\r\n  opacity: number;\r\n}\r\n\r\nexport type BackgroundSizeProp = BackgroundAttribute['backgroundSize'];\r\n\r\nexport type BackgroundRepeatProp = BackgroundAttribute['backgroundRepeat'];\r\n\r\nexport type BackgroundPositionXProp = BackgroundAttribute['backgroundPositionX'];\r\n\r\nexport type BackgroundPositionYProp = BackgroundAttribute['backgroundPositionY'];\r\n\r\nexport type BackgroundAttachmentProp = BackgroundAttribute['backgroundAttachment'];\r\n\r\n/**\r\n * 背景图片位置\r\n * TILE = 0 平铺；\r\n * SOURCE = 1原图；\r\n * FILL = 2 填充；\r\n * DRAW = 3 拉伸；\r\n * PROPORTION = 4等比例；\r\n * mini app 默认3拉伸\r\n */\r\nexport enum BackgroundRepeatEnum {\r\n  /**\r\n   * 平铺\r\n   */\r\n  TILE = 0,\r\n  /**\r\n   * 原图\r\n   */\r\n  SOURCE = 1,\r\n  /**\r\n   * 填充\r\n   */\r\n  FILL = 2,\r\n  /**\r\n   * 拉伸\r\n   */\r\n  DRAW = 3,\r\n  /**\r\n   * 等比例\r\n   */\r\n  PROPORTION = 4,\r\n}\r\n\r\nexport enum BackgroundPosEnum {\r\n  leftTop = 13,\r\n  centerTop = 8,\r\n  rightTop = 14,\r\n  leftCenter = 6,\r\n  centerCenter = 0,\r\n  rightCenter = 7,\r\n  leftBottom = 15,\r\n  centerBottom = 9,\r\n  rightBottom = 16,\r\n}\r\n\r\nexport enum RepeatEnum {\r\n  repeat = 'repeat',\r\n  noRepeat = 'no-repeat',\r\n  repeatX = 'repeat-x',\r\n  repeatY = 'repeat-y',\r\n}\r\n\r\nexport enum PositionEnum {\r\n  left = 'left',\r\n  center = 'center',\r\n  right = 'right',\r\n  top = 'top',\r\n  bottom = 'bottom',\r\n}\r\n\r\nexport enum PositionX {\r\n  left = 'left',\r\n  center = 'center',\r\n  right = 'right',\r\n}\r\n\r\nexport enum PositionY {\r\n  center = 'center',\r\n  top = 'top',\r\n  bottom = 'bottom',\r\n}\r\n\r\nexport enum AttachmentEnum {\r\n  scroll = 'scroll',\r\n  fixed = 'fixed',\r\n}\r\n\r\nexport enum BackgroundSizeEnum {\r\n  auto = 'auto',\r\n  // 缩放\r\n  scaling = '100% 100%',\r\n  // 填充\r\n  fill = 'cover',\r\n  // 等比\r\n  contain = 'contain',\r\n  // 缩放平铺\r\n  zoom = '100%',\r\n}\r\n","import type { App } from 'vue';\r\n\r\n// 拖动排序\r\n// import './utils-old/nestable';\r\n\r\nimport Plugins from './plugin';\r\nimport Components from './components';\r\nimport { makeInstaller } from './make-installer';\r\n\r\nimport './assets/iconfont/iconfont.js';\r\n\r\n// 输出组件所有配置\r\nexport * from './components/color-picker-v3';\r\nexport * from './components/background';\r\nexport * from './components/photo-list';\r\nexport * from './components/gallery';\r\n\r\n// 输出插件\r\nexport * from './plugin';\r\n\r\nexport * from './types/index';\r\n\r\nexport * from './hooks';\r\n\r\n// export { $createDialog } from './components-old/dialog';\r\n// export { default as $message } from './components-old/message';\r\n\r\nexport { Plugins, Components, makeInstaller };\r\n\r\n/**\r\n * 全局加载所有组件及插件\r\n * @param app\r\n */\r\nexport function install(app: App) {\r\n  makeInstaller([...Components, ...Plugins]).install(app);\r\n}\r\n\r\nexport default {};\r\n"],"names":["Plugins","isObject","o","isPlainObject","ctor","prot","t","n","i","r","a","s","u","l","e","c","d","f","p","y","v","h","b","g","O","m","j","_","T","$","w","x","P","A","E","S","N","V","q","k","D","L","B","F","Y","I","J","M","R","U","z","_typeof","obj","trimLeft","trimRight","tinycolor","color","opts","rgb","inputToRGB","RsRGB","GsRGB","BsRGB","G","value","boundAlpha","hsv","rgbToHsv","hsl","rgbToHsl","allow3Char","rgbToHex","allow4Char","rgbaToHex","bound01","hexNames","secondColor","hex8String","rgbaToArgbHex","secondHex8String","gradientType","format","formatSet","formattedString","hasAlpha","needsAlphaFormat","fn","args","_lighten","_brighten","_darken","_desaturate","_saturate","_greyscale","_spin","_analogous","_complement","_monochromatic","_splitcomplement","polyad","newColor","convertToPercentage","ok","stringInputToObject","isValidCSSUnit","rgbToRgb","hsvToRgb","hslToRgb","max","min","hue2rgb","mod","hex","pad2","convertDecimalToHex","color1","color2","amount","clamp01","hue","number","result","step","results","slices","part","ret","modification","rgb1","rgb2","rgba","c1","c2","wcag2","readability","wcag2Parms","out","validateWCAG2Parms","baseColor","colorList","bestColor","bestScore","includeFallbackColors","level","size","names","flip","flipped","isOnePointZero","processPercent","isPercentage","val","parseIntFromHex","convertHexToDecimal","matchers","CSS_INTEGER","CSS_NUMBER","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","named","match","parms","double","num","Color","input","initAlpha","hexString","rgbaColor","clamp","HistoryColorKey","MAX_STORAGE_LENGTH","C","W","H","X","K","Q","Z","tt","et","nt","rt","ot","it","ut","at","ct","lt","ft","st","dt","vt","pt","gt","ht","yt","mt","St","xt","bt","Et","Ot","wt","At","Tt","kt","Rt","It","jt","Ct","Lt","Pt","Mt","_t","Dt","Ut","Nt","Ft","Wt","zt","$t","Yt","Gt","Ht","Xt","Vt","Kt","qt","Qt","Jt","Zt","te","ee","re","oe","ie","ue","ae","ce","le","fe","se","de","ve","pe","ge","he","ye","me","Se","xe","be","Ee","we","Oe","Te","Ae","ke","Re","Ie","je","Ce","Le","Pe","Me","_e","De","Ue","Ne","Fe","We","ze","$e","Be","Ye","Ge","He","Xe","Ve","Ke","qe","Qe","Je","Ze","tn","en","nn","rn","on","un","an","cn","ln","sn","dn","vn","pn","gn","hn","yn","mn","Sn","xn","bn","En","wn","On","Tn","An","kn","jn","Mn","Vn","Kn","qn","Qn","Jn","Zn","tr","er","or","ir","ur","ar","cr","lr","fr","sr","dr","vr","pr","gr","hr","yr","mr","Sr","xr","br","Er","wr","Or","Tr","Ar","kr","Rr","Ir","jr","Cr","Lr","Pr","Mr","_r","Dr","Ur","Nr","Fr","Wr","zr","$r","Br","Yr","Gr","Hr","Xr","Vr","Kr","qr","Qr","Jr","Zr","to","eo","no","ro","oo","io","uo","ao","co","lo","fo","so","vo","po","go","ho","yo","mo","So","xo","bo","Eo","wo","Oo","To","Ao","ko","Ro","Io","jo","Co","Lo","Po","Mo","_o","Do","Uo","No","Fo","Wo","zo","$o","Bo","freeGlobal","freeGlobal$1","freeSelf","root","root$1","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","objectToString","nullTag","undefinedTag","baseGetTag","isObjectLike","isArray","isArray$1","type","identity","asyncTag","funcTag","genTag","proxyTag","isFunction","coreJsData","coreJsData$1","maskSrcKey","uid","isMasked","func","funcProto","funcToString","toSource","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","getValue","object","key","getNative","objectCreate","baseCreate","proto","baseCreate$1","apply","thisArg","copyArray","source","array","index","length","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","count","lastCalled","stamp","remaining","constant","defineProperty","defineProperty$1","baseSetToString","string","baseSetToString$1","setToString","setToString$1","MAX_SAFE_INTEGER","reIsUint","isIndex","baseAssignValue","eq","other","assignValue","objValue","copyObject","props","customizer","isNew","newValue","nativeMax","overRest","start","transform","otherArgs","baseRest","isLength","isArrayLike","isIterateeCall","createAssigner","assigner","sources","guard","isPrototype","Ctor","baseTimes","iteratee","argsTag","baseIsArguments","propertyIsEnumerable","isArguments","isArguments$1","stubFalse","freeExports","freeModule","moduleExports","Buffer","nativeIsBuffer","isBuffer","isBuffer$1","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","baseUnary","freeProcess","nodeUtil","types","nodeUtil$1","nodeIsTypedArray","isTypedArray","isTypedArray$1","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","overArg","arg","nativeKeysIn","baseKeysIn","isProto","keysIn","nativeCreate","nativeCreate$1","hashClear","hashDelete","HASH_UNDEFINED","hashGet","data","hashHas","hashSet","Hash","entries","entry","listCacheClear","assocIndexOf","arrayProto","splice","listCacheDelete","lastIndex","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","isKeyable","getMapData","map","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","getPrototype","getPrototype$1","objectCtorString","stackClear","stackDelete","stackGet","stackHas","LARGE_ARRAY_SIZE","stackSet","pairs","Stack","allocUnsafe","cloneBuffer","buffer","isDeep","Uint8Array","Uint8Array$1","cloneArrayBuffer","arrayBuffer","cloneTypedArray","typedArray","initCloneObject","createBaseFor","fromRight","keysFunc","iterable","baseFor","baseFor$1","assignMergeValue","isArrayLikeObject","safeGet","toPlainObject","baseMergeDeep","srcIndex","mergeFunc","stack","srcValue","stacked","isCommon","isTyped","baseMerge","merge","merge$1","_sfc_main$h","defineComponent","propTypes","emit","barElement","ref","cursorElement","state","reactive","watch","getBackgroundStyle","computed","startColor","endColor","getCursorLeft","alpha","rect","offsetWidth","getCursorStyle","onClickSider","event","onMoveBar","left","onMounted","dragConfig","DOMUtils","_hoisted_1","_createElementVNode","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_normalizeClass","_normalizeStyle","defaultColors","_sfc_main$g","_props","computedBgStyle","cacheColor","_openBlock","_createElementBlock","_Fragment","_renderList","v1","$event","_sfc_main$f","instance","getCurrentInstance","hueHsv","hueColor","cursorTop","cursorLeft","boardElement","updatePosition","el","onClickBoard","handleDrag","top","saturation","bright","_hoisted_3","_hoisted_2","_sfc_main$e","_sfc_main$d","lightness","color3","color4","light","_sfc_main$c","_a","isClient","isString","noop","createFilterWrapper","filter","wrapper","bypassFilter","invoke","debounceFilter","ms","options","timer","maxTimer","duration","unref","maxDuration","pausableFilter","extendFilter","isActive","pause","resume","tryOnScopeDispose","getCurrentScope","onScopeDispose","useDebounceFn","__getOwnPropSymbols$6","__hasOwnProp$6","__propIsEnum$6","__objRest$5","exclude","target","prop","watchWithFilter","cb","eventFilter","watchOptions","__defProp$2","__defProps$2","__getOwnPropDescs$2","__getOwnPropSymbols$2","__hasOwnProp$2","__propIsEnum$2","__defNormalProp$2","__spreadValues$2","__spreadProps$2","__objRest$1","watchPausable","whenever","ov","onInvalidate","unrefElement","elRef","plain","defaultWindow","useEventListener","listener","cleanup","stopWatch","stop","onClickOutside","handler","window","ignore","capture","detectIframe","shouldListen","fallback","composedPath","target2","el2","path","_global","globalKey","handlers","getSSRHandler","guessSerializerType","rawInit","StorageSerializers","useStorage","initialValue","storage","flush","deep","listenToStorageChanges","writeDefaults","shallow","onError","shallowRef","_a2","serializer","pauseWatch","resumeWatch","pausableWatch","write","update","read","rawValue","useLocalStorage","SwipeDirection","SwipeDirection2","_sfc_main$b","getBgColorStyle","onAlphaBlur","opacity","onInputChange","_hex","_hoisted_5","_hoisted_4","_sfc_main$a","Display","Alpha","Palette","Board","Hue","Lightness","History","colorInstance","advancePanelShow","previewStyle","onBack","historyColors","onCompactChange","isNotSave","onAlphaChange","onHueChange","onBoardChange","brightness","onLightChange","toRefs","_component_History","_resolveComponent","_createCommentVNode","_createBlock","_component_Palette","_component_Board","_component_Hue","_component_Lightness","_component_Alpha","_createVNode","_component_Display","_sfc_main$9","calcAngle","element","originX","originY","cos","rad","angle","isDragging","triggerDragEvent","moveFn","upFn","angleProps","Angle","angleRef","rotate","updateAngle","getStyle","createVNode","ColorPickerProviderKey","_sfc_main$8","parent","inject","startGradientRef","stopGradientRef","colorRangeRef","currentColor","getStartColorLeft","getEndColorLeft","gradientBg","dragStartRange","evt","dragEndRange","onDegreeBlur","degree","onDegreeChange","updateColorHistoryFn","doColorChange","onDisplayChange","rgbString","_hoisted_6","_hoisted_8","_hoisted_10","_hoisted_13","_hoisted_16","_hoisted_17","_withDirectives","_vShow","_hoisted_7","_hoisted_11","_hoisted_9","_hoisted_15","_hoisted_18","_hoisted_19","_component_Angle","_sfc_main$7","onActiveKeyChange","bottom","right","auto","basePlacements","end","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","afterRead","beforeMain","main","afterMain","beforeWrite","afterWrite","modifierPhases","getNodeName","getWindow","node","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","applyStyles","_ref","name","style","attributes","effect","_ref2","initialStyles","styleProperties","property","attribute","applyStyles$1","getBasePlacement","round","getUAString","uaData","item","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","width","height","getLayoutRect","contains","child","rootNode","next","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","css","getOffsetParent","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","keys","hashMap","toPaddingObject","padding","arrow","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","axis","isVertical","len","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","offset","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","position","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","transitionProperty","computeStyles$1","passive","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getViewportRect","strategy","html","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","list","isBody","updatedList","rectToClientRect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","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","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","_i","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","distance","_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","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_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","pending","resolve","str","_key","INVALID_MODIFIER_ERROR","MISSING_DEPENDENCY_ERROR","VALID_PROPERTIES","validateModifiers","self","requirement","uniqueBy","arr","identifiers","identifier","mergeByName","merged","current","existing","INVALID_ELEMENT_ERROR","INFINITE_LOOP_ERROR","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","flipModifier","marginTop","marginRight","marginBottom","marginLeft","margin","runModifierEffects","_state$elements","__debug_loops__","_state$orderedModifie","_state$orderedModifie2","_ref3$options","cleanupFn","noopFn","createPopper","colorPickerProps","IMAGE_POSITION","IMAGE_PAVING_EFFECT","IMAGE_SCALING_STRETCH","IMAGE_SCALING_FILL","IMAGE_SCALING_CONTAIN","sizeOptions","repeatOption","composeRepeatInfo","backgroundRepeat","backgroundPositionX","backgroundPositionY","backgroundSize","parseRepeatInfo","repeatInfoComposed","parseBackgroundImageUrl","backgroundImage","found","parseBackgroundImageGradient","concatBackgroundColor","concatBackgroundImage","imageUrl","backGroundHelper","defaultPackgroundData","defaultColorPickerOptions","backgroundProps","useBackground","onBeforeUpdate","colorForPicker","newVal","defaultOption","handleRepeatChange","pavingEffectList","pavingList","pavingEffectInfos","isOnPavingEffect","isOnImagePosition","imagePositionInfos","stretchInfos","isOnStretch","fillInfos","containInfos","isOnFill","isOnContain","backgroundAttachment","opacityForSlider","handleOpacityChange","imageScaling","handleImageScalingChange","shouldRenderAttachment","isSupportAttachment","shouldRenderOpacity","backgroundType","currentValue","handleDel","getCurrentValueByColor","handleColorInput","handleColorChangeStop","handleThemeColorClick","themeColor","handleJump","handleFileUpload","inputEl","handleFileChange","currentRepeatInfoComposed","handleBackgroundAttachmentChange","handleOpacityChangeStop","transformInfos","handleBeforeUpload","toRef","useInitColorPicker","pureColor","gradientColor","last","useDesign","scope","prefix","_sfc_main$6","TkColorPicker","ChromeColorPicker","GradientColorPicker","WrapContainer","lastColor","provide","gradientState","showPicker","colorCubeRef","pickerRef","watchEffect","getComponentName","getBindArgs","onGradientChange","onColorChange","onAdvanceChange","isAdvance","onShowPicker","nextTick","createPopperInstance","onHidePicker","colorVal","parseGradientColor","colorNode","parse","startColorVal","endColorVal","r1","g1","b1","a1","nodes","color2GradientNode","stringify","startColorArr","endColorArr","offsetTop","offsetBottomHeight","onUnmounted","emitColorChange","_component_WrapContainer","_mergeProps","_Teleport","withInstall","extra","app","comp","ColorPickerV3","ColorPicker","prefixCls","colorPickerOptions","visible","setVisible","loading","background","Background","BackgroundCore","_sfc_main","btnName","_renderSlot","_withModifiers","utils","filterFn","targetTag","sourceTag","context","componentName","eventName","params","broadcast","_context","componentNames","proxy","components","comps","validList","SPECIAL_CHARS_REGEXP","$0","$1","styleName","elementList","baseDom","_baseDom","outer","widthNoScroll","inner","widthWithScroll","wait","startTime","endTime","delay","defaultData","cls","curClass","classes","clsName","maxWidth","maxHeight","mode","rateWidth","rateHeight","img","option","imgTmp","imgWidth","imgHeight","animationTime","callback","upMorphTimer","morph","Properties","AttrElementStyle","downMorphTimer","ComputedElementStyle","ran","done","doc","modern","add","rem","pre","init","poll","morphTimer","DiffValues","beginTime","sinceBeginTime","progressFactor","vueUtils","_toDisplayString","DEFAULT_INDEX","DEFAULT_WIDTH","DEFAULT_BUTTON_POS","ICON_SIZE","maxMarginLeft","_marginLeft","maxIndex","minIndex","Gallery","gallery","UPDATE_MODEL_EVENT","UPLOAD_LENGTH","UPLOAD_WIDTH","IETM_WIDTH","ImgComponent","EditorComponent","UploadComponent","GalleryComponent","draggable","_component_upload_component","_component_gallery_component","_component_draggable","_withCtx","_component_editor_component","_component_img_component","PhotoList","photoList","Components","TKColorPickerV3","TKBackground","TKPhotoList","TKGallery","makeInstaller","BackgroundRepeatEnum","BackgroundPosEnum","RepeatEnum","PositionEnum","PositionX","PositionY","AttachmentEnum","BackgroundSizeEnum","install"],"mappings":"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lB,EACA,CACE,IAAK,gBACL,iBAAkB,YAClB,oBAAqB,SACrB,oBAAqB,SACrB,eAAgB,MAClB,EACA,CACE,IAAK,eACL,iBAAkB,YAClB,oBAAqB,QACrB,oBAAqB,SACrB,eAAgB,MAClB,EACA,CACE,IAAK,cACL,iBAAkB,YAClB,oBAAqB,OACrB,oBAAqB,SACrB,eAAgB,MAClB,EACA,CACE,IAAK,gBACL,iBAAkB,YAClB,oBAAqB,SACrB,oBAAqB,SACrB,eAAgB,MAClB,EACA,CACE,IAAK,eACL,iBAAkB,YAClB,oBAAqB,QACrB,oBAAqB,SACrB,eAAgB,MAClB,CACF,EAEMC,GAAsB,CAC1B,CACE,MAAO,eACP,IAAK,UACL,iBAAkB,SAClB,oBAAqB,SACrB,oBAAqB,SACrB,eAAgB,MAClB,EACA,CACE,MAAO,2BACP,IAAK,YACL,iBAAkB,YAClB,oBAAqB,SACrB,oBAAqB,MACrB,eAAgB,MAClB,EACA,CACE,MAAO,SACP,IAAK,MACL,iBAAkB,WAClB,oBAAqB,SACrB,oBAAqB,MACrB,eAAgB,MAClB,EACA,CACE,MAAO,sBACP,IAAK,gBACL,iBAAkB,WAClB,oBAAqB,SACrB,oBAAqB,SACrB,eAAgB,MAClB,EACA,CACE,MAAO,SACP,IAAK,SACL,iBAAkB,WAClB,oBAAqB,SACrB,oBAAqB,SACrB,eAAgB,MAClB,EACA,CACE,MAAO,SACP,IAAK,OACL,iBAAkB,WAClB,oBAAqB,OACrB,oBAAqB,MACrB,eAAgB,MAClB,EACA,CACE,MAAO,sBACP,IAAK,cACL,iBAAkB,WAClB,oBAAqB,SACrB,oBAAqB,MACrB,eAAgB,MAClB,EACA,CACE,MAAO,SACP,IAAK,QACL,iBAAkB,WAClB,oBAAqB,QACrB,oBAAqB,MACrB,eAAgB,MAClB,CACF,EAEMC,GAAwB,CAC5B,CACE,iBAAkB,YAClB,oBAAqB,OACrB,oBAAqB,SACrB,eAAgB,WAClB,CACF,EAEMC,GAAqB,CACzB,CACE,iBAAkB,YAClB,oBAAqB,SACrB,oBAAqB,SACrB,eAAgB,OAClB,CACF,EAEMC,G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,IAGEA,EAAA,GACG31C,EAAAuU,EAAK,MAAM,KAAM,SAAS,EAE5BA,EAAA,MACAvU,CAAA,CAEX,EACA,WAAY,CACV,eAAgB,CACd,CACE,IAAK,WACL,iBAAkB,YAClB,oBAAqB,OACrB,oBAAqB,MACrB,eAAgB,MAClB,EACA,CACE,IAAK,aACL,iBAAkB,YAClB,oBAAqB,SACrB,oBAAqB,MACrB,eAAgB,MAClB,EACA,CACE,IAAK,YACL,iBAAkB,YAClB,oBAAqB,QACrB,oBAAqB,MACrB,eAAgB,MAClB,EACA,CACE,IAAK,cACL,iBAAkB,YAClB,oBAAqB,OACrB,oBAAqB,SACrB,eAAgB,MAClB,EACA,CACE,IAAK,gBACL,iBAAkB,YAClB,oBAAqB,SACrB,oBAAqB,SACrB,eAAgB,MAClB,EACA,CACE,IAAK,eACL,iBAAkB,YAClB,oBAAqB,QACrB,oBAAqB,SACrB,eAAgB,MAClB,EACA,CACE,IAAK,cACL,iBAAkB,YAClB,oBAAqB,OACrB,oBAAqB,SACrB,eAAgB,MAClB,EACA,CACE,IAAK,gBACL,iBAAkB,YAClB,oBAAqB,SACrB,oBAAqB,SACrB,eAAgB,MAClB,EACA,CACE,IAAK,eACL,iBAAkB,YAClB,oBAAqB,QACrB,oBAAqB,SACrB,eAAgB,MAClB,CACF,EACA,cAAe,CACb,CACE,MAAO,eACP,IAAK,UACL,iBAAkB,SAClB,oBAAqB,SACrB,oBAAqB,SACrB,eAAgB,MAClB,EACA,CACE,MAAO,2BACP,IAAK,YACL,iBAAkB,YAClB,oBAAqB,SACrB,oBAAqB,MACrB,eAAgB,MAClB,EACA,CACE,MAAO,SACP,IAAK,MACL,iBAAkB,WAClB,oBAAqB,SACrB,oBAAqB,MACrB,eAAgB,MAClB,EACA,CACE,MAAO,sBACP,IAAK,gBACL,iBAAkB,WAClB,oBAAqB,SACrB,oBAAqB,SACrB,eAAgB,MAClB,EACA,CACE,MAAO,SACP,IAAK,SACL,iBAAkB,WAClB,oBAAqB,SACrB,oBAAqB,SACrB,eAAgB,MAClB,EACA,CACE,MAAO,SACP,IAAK,OACL,iBAAkB,WA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"}