From 033cb649f8665137d5defb2bd976fcba3f856d20 Mon Sep 17 00:00:00 2001 From: pengxiaolong <15716207+pengxiaolong711@user.noreply.gitee.com> Date: Mon, 12 May 2025 21:23:37 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/Advertisement/Advertisement.vue | 28 + components/contentList/contentList.vue | 222 + components/tabBar/tabBar.vue | 259 + components/topNavigation/topNavigation.vue | 92 + pages.json | 16 +- pages/Home/Home.vue | 79 + static/HomeBackground.png | Bin 0 -> 81663 bytes static/Searching.png | Bin 0 -> 1398 bytes static/female.png | Bin 0 -> 477 bytes static/femaleimg.png | Bin 0 -> 627 bytes static/maleimg.png | Bin 0 -> 623 bytes .../dist/dev/.sourcemap/mp-weixin/app.js.map | 1 + .../.sourcemap/mp-weixin/common/assets.js.map | 1 + .../.sourcemap/mp-weixin/common/vendor.js.map | 1 + .../Advertisement/Advertisement.js.map | 1 + .../components/contentList/contentList.js.map | 1 + .../mp-weixin/components/tabBar/tabBar.js.map | 1 + .../topNavigation/topNavigation.js.map | 1 + .../mp-weixin/pages/Home/Home.js.map | 1 + .../mp-weixin/pages/index/index.js.map | 1 + unpackage/dist/dev/mp-weixin/app.js | 27 + unpackage/dist/dev/mp-weixin/app.json | 11 + unpackage/dist/dev/mp-weixin/app.wxss | 3 + unpackage/dist/dev/mp-weixin/common/assets.js | 10 + unpackage/dist/dev/mp-weixin/common/vendor.js | 7911 +++++++++++++++++ .../components/Advertisement/Advertisement.js | 20 + .../Advertisement/Advertisement.json | 4 + .../Advertisement/Advertisement.wxml | 1 + .../Advertisement/Advertisement.wxss | 7 + .../components/contentList/contentList.js | 145 + .../components/contentList/contentList.json | 4 + .../components/contentList/contentList.wxml | 1 + .../components/contentList/contentList.wxss | 79 + .../components/topNavigation/topNavigation.js | 45 + .../topNavigation/topNavigation.json | 4 + .../topNavigation/topNavigation.wxml | 1 + .../topNavigation/topNavigation.wxss | 42 + .../dist/dev/mp-weixin/pages/Home/Home.js | 37 + .../dist/dev/mp-weixin/pages/Home/Home.json | 8 + .../dist/dev/mp-weixin/pages/Home/Home.wxml | 1 + .../dist/dev/mp-weixin/pages/Home/Home.wxss | 37 + .../dist/dev/mp-weixin/pages/index/index.js | 22 + .../dist/dev/mp-weixin/pages/index/index.json | 4 + .../dist/dev/mp-weixin/pages/index/index.wxml | 1 + .../dist/dev/mp-weixin/pages/index/index.wxss | 23 + .../dist/dev/mp-weixin/project.config.json | 36 + .../dev/mp-weixin/static/HomeBackground.png | Bin 0 -> 81663 bytes .../dist/dev/mp-weixin/static/Searching.png | Bin 0 -> 1398 bytes .../dist/dev/mp-weixin/static/female.png | Bin 0 -> 477 bytes .../dist/dev/mp-weixin/static/femaleimg.png | Bin 0 -> 627 bytes unpackage/dist/dev/mp-weixin/static/logo.png | Bin 0 -> 4023 bytes .../dist/dev/mp-weixin/static/maleimg.png | Bin 0 -> 623 bytes 52 files changed, 9183 insertions(+), 6 deletions(-) create mode 100644 components/Advertisement/Advertisement.vue create mode 100644 components/contentList/contentList.vue create mode 100644 components/tabBar/tabBar.vue create mode 100644 components/topNavigation/topNavigation.vue create mode 100644 pages/Home/Home.vue create mode 100644 static/HomeBackground.png create mode 100644 static/Searching.png create mode 100644 static/female.png create mode 100644 static/femaleimg.png create mode 100644 static/maleimg.png create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/components/Advertisement/Advertisement.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/components/contentList/contentList.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/components/tabBar/tabBar.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/components/topNavigation/topNavigation.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/Home/Home.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map create mode 100644 unpackage/dist/dev/mp-weixin/app.js create mode 100644 unpackage/dist/dev/mp-weixin/app.json create mode 100644 unpackage/dist/dev/mp-weixin/app.wxss create mode 100644 unpackage/dist/dev/mp-weixin/common/assets.js create mode 100644 unpackage/dist/dev/mp-weixin/common/vendor.js create mode 100644 unpackage/dist/dev/mp-weixin/components/Advertisement/Advertisement.js create mode 100644 unpackage/dist/dev/mp-weixin/components/Advertisement/Advertisement.json create mode 100644 unpackage/dist/dev/mp-weixin/components/Advertisement/Advertisement.wxml create mode 100644 unpackage/dist/dev/mp-weixin/components/Advertisement/Advertisement.wxss create mode 100644 unpackage/dist/dev/mp-weixin/components/contentList/contentList.js create mode 100644 unpackage/dist/dev/mp-weixin/components/contentList/contentList.json create mode 100644 unpackage/dist/dev/mp-weixin/components/contentList/contentList.wxml create mode 100644 unpackage/dist/dev/mp-weixin/components/contentList/contentList.wxss create mode 100644 unpackage/dist/dev/mp-weixin/components/topNavigation/topNavigation.js create mode 100644 unpackage/dist/dev/mp-weixin/components/topNavigation/topNavigation.json create mode 100644 unpackage/dist/dev/mp-weixin/components/topNavigation/topNavigation.wxml create mode 100644 unpackage/dist/dev/mp-weixin/components/topNavigation/topNavigation.wxss create mode 100644 unpackage/dist/dev/mp-weixin/pages/Home/Home.js create mode 100644 unpackage/dist/dev/mp-weixin/pages/Home/Home.json create mode 100644 unpackage/dist/dev/mp-weixin/pages/Home/Home.wxml create mode 100644 unpackage/dist/dev/mp-weixin/pages/Home/Home.wxss create mode 100644 unpackage/dist/dev/mp-weixin/pages/index/index.js create mode 100644 unpackage/dist/dev/mp-weixin/pages/index/index.json create mode 100644 unpackage/dist/dev/mp-weixin/pages/index/index.wxml create mode 100644 unpackage/dist/dev/mp-weixin/pages/index/index.wxss create mode 100644 unpackage/dist/dev/mp-weixin/project.config.json create mode 100644 unpackage/dist/dev/mp-weixin/static/HomeBackground.png create mode 100644 unpackage/dist/dev/mp-weixin/static/Searching.png create mode 100644 unpackage/dist/dev/mp-weixin/static/female.png create mode 100644 unpackage/dist/dev/mp-weixin/static/femaleimg.png create mode 100644 unpackage/dist/dev/mp-weixin/static/logo.png create mode 100644 unpackage/dist/dev/mp-weixin/static/maleimg.png diff --git a/components/Advertisement/Advertisement.vue b/components/Advertisement/Advertisement.vue new file mode 100644 index 0000000..e22a9ee --- /dev/null +++ b/components/Advertisement/Advertisement.vue @@ -0,0 +1,28 @@ + + + + + \ No newline at end of file diff --git a/components/contentList/contentList.vue b/components/contentList/contentList.vue new file mode 100644 index 0000000..7aea203 --- /dev/null +++ b/components/contentList/contentList.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/components/tabBar/tabBar.vue b/components/tabBar/tabBar.vue new file mode 100644 index 0000000..dcbf559 --- /dev/null +++ b/components/tabBar/tabBar.vue @@ -0,0 +1,259 @@ + + + + + \ No newline at end of file diff --git a/components/topNavigation/topNavigation.vue b/components/topNavigation/topNavigation.vue new file mode 100644 index 0000000..3988a2b --- /dev/null +++ b/components/topNavigation/topNavigation.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/pages.json b/pages.json index 869105d..b3ab856 100644 --- a/pages.json +++ b/pages.json @@ -1,5 +1,11 @@ { - "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + "pages": [ + { + "path": "pages/Home/Home", + "style": { + "navigationBarTitleText": "首页" + } + }, { "path": "pages/index/index", "style": { @@ -8,10 +14,8 @@ } ], "globalStyle": { - "navigationBarTextStyle": "black", - "navigationBarTitleText": "uni-app", - "navigationBarBackgroundColor": "#F8F8F8", - "backgroundColor": "#F8F8F8" - }, + "navigationStyle": "custom", + "statusBarBackground": "#ffffff" + }, "uniIdRouter": {} } diff --git a/pages/Home/Home.vue b/pages/Home/Home.vue new file mode 100644 index 0000000..c1f46d4 --- /dev/null +++ b/pages/Home/Home.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/static/HomeBackground.png b/static/HomeBackground.png new file mode 100644 index 0000000000000000000000000000000000000000..ca7f14073b15fb498aa81652456d113b8366e21d GIT binary patch literal 81663 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 Ef;rrkJOBUy literal 0 HcmV?d00001 diff --git a/static/female.png b/static/female.png new file mode 100644 index 0000000000000000000000000000000000000000..735c4d2f2b5e8938078aae3a9bece193afe4fb78 GIT binary patch literal 477 zcmV<30V4j1P)Px$mq|oHR5(wC)61(*VHC#k&vH$!Wu{D=l$6X|CSrgI6QvAfpcEq$4n;yPnaRM+ zh%(?%N(nOqr%n-4E@9*^I0oXd?4^CQ&(5#kTf5%gz1Md?>sikm2CU3nfGt>spLm0b zi1^(tiGF=%&cO*B!?ND{&lrt}vFY;}fXtkS2iS=pc!-ynk8Rl87M_oYv$gL7uHq=( zVoyYT=qkv}-MEFt%{O~X$v;45RxtGj?vT*1YNI6cVRI?v4K z*i=s!a1;BnJtCeC0bIsO9O?pYV_%IfBAyKaoWmI$?gB0}^FCE3M#QxtfbyUW-O&YX z#5l_N^%3!XfQf7Is>#VWtcZ5@FB` z`{$3i-V4$ZEN$F>R4p{qn)=&9W|pji%xPx%ElET{R9HvlSxsvbQ4~F=h7@5U2`ET)RnV=Qf?HR*Q*cw-KVZQo6LFPd+)!mZ@;&BF|idio$ z_d(17ID3+_5&qwXpl0oHnX0^V6ptgtdTxG3FjfI@ZiFHR9lAmIwpFUWI1KogSW(wf zUi!)kh&zLhlo)$K-P&89r&{fFbLtT*N~OGX^CgJei6I`B2=U7Lo|~pp2ZDRVwj8@g zooBQ!Fe0d*S*Qg2P52#%{gb25;|4ORIKrRZ&*4yPQx&tRaoNypGm0ADMrW6obE>=( zify}vM*tV2qV=UL(xejZHdd4Z1-YbvF)QJ&wHu;(=~QNo2l)$C-u7qIvJxAVU9d zrGm3osT@`tdumW^$F6BzRqS8af_mn#8dP9sRCV#UU_ZwKS%pl z_3^!)C&jGyO`~4VX)g0#j9yQ7RJyx(B&P(J1Texb9-0I;MF#8Q{Q^~}?5t?z#-IQI N002ovPDHLkV1nLc9LN9w literal 0 HcmV?d00001 diff --git a/static/maleimg.png b/static/maleimg.png new file mode 100644 index 0000000000000000000000000000000000000000..3fffcf8823fdd430e92304f0f022f31e72d2d712 GIT binary patch literal 623 zcmV-#0+9WQP)Px%DM>^@R9HvtSvyY@Q562ZnI%h!i6kzM0+9*yB(~CMY?N5&41WLVsM5%EF(gvdI;&tT=lFI|7XGBk8>o+6$_Fut+T)p>9@ zP4Fpz>*ooJ@c*tr3j5iPmv09K_D-|oRIrb2*V4#W1iB*x(UfWdb|^Ac8Zk;IF&+bZ zXLU7`%k|~~PBx_}R>V>)m$#mO92@g%&8h>dfZpioU!usPSlNC7V}xA(zP\r\n\texport default {\r\n\t\tonLaunch: function() {\r\n\t\t\tconsole.log('App Launch')\r\n\t\t},\r\n\t\tonShow: function() {\r\n\t\t\tconsole.log('App Show')\r\n\t\t},\r\n\t\tonHide: function() {\r\n\t\t\tconsole.log('App Hide')\r\n\t\t}\r\n\t}\r\n\r\n\r\n\n","import App from './App'\n\n// #ifndef VUE3\nimport Vue from 'vue'\nimport './uni.promisify.adaptor'\nVue.config.productionTip = false\nApp.mpType = 'app'\nconst app = new Vue({\n ...App\n})\napp.$mount()\n// #endif\n\n// #ifdef VUE3\nimport { createSSRApp } from 'vue'\nexport function createApp() {\n const app = createSSRApp(App)\n return {\n app\n }\n}\n// #endif"],"names":["uni","createSSRApp","App"],"mappings":";;;;;;;AACC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,gBAAY,YAAY;AAAA,EACxB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,UAAU;AAAA,EACtB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACvB;AACD;ACIM,SAAS,YAAY;AAC1B,QAAM,MAAMC,cAAY,aAACC,SAAG;AAC5B,SAAO;AAAA,IACL;AAAA,EACD;AACH;;;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map new file mode 100644 index 0000000..32b7162 --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map @@ -0,0 +1 @@ +{"version":3,"file":"assets.js","sources":["static/HomeBackground.png","static/logo.png","static/Searching.png","static/female.png"],"sourcesContent":["export default \"__VITE_ASSET__71648407__\"","export default \"__VITE_ASSET__46719607__\"","export default \"__VITE_ASSET__0a32c808__\"","export default \"__VITE_ASSET__f873eff9__\""],"names":[],"mappings":";AAAA,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;;;;;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map new file mode 100644 index 0000000..3652ec4 --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"vendor.js","sources":["../../HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-i18n/dist/uni-i18n.es.js","../../HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-shared/dist/uni-shared.es.js","../../HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-mp-vue/dist/vue.runtime.esm.js","../../HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-mp-weixin/dist/uni.api.esm.js","../../HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-console/dist/mp.esm.js","../../HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-mp-weixin/dist/uni.mp.esm.js"],"sourcesContent":["/**\n* @vue/shared v3.4.21\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nfunction makeMap(str, expectsLowerCase) {\n const set = new Set(str.split(\",\"));\n return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction((str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n});\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](arg);\n }\n};\nconst def = (obj, key, value) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"HOISTED\": -1,\n \"-1\": \"HOISTED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `HOISTED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = \"\";\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n if (isString(value) || typeof value === \"number\") {\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>||--!>| looseEqual(item, val));\n}\n\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (val && val.__v_isRef) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v;\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","const isObject = (val) => val !== null && typeof val === 'object';\nconst defaultDelimiters = ['{', '}'];\nclass BaseFormatter {\n constructor() {\n this._caches = Object.create(null);\n }\n interpolate(message, values, delimiters = defaultDelimiters) {\n if (!values) {\n return [message];\n }\n let tokens = this._caches[message];\n if (!tokens) {\n tokens = parse(message, delimiters);\n this._caches[message] = tokens;\n }\n return compile(tokens, values);\n }\n}\nconst RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\nconst RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\nfunction parse(format, [startDelimiter, endDelimiter]) {\n const tokens = [];\n let position = 0;\n let text = '';\n while (position < format.length) {\n let char = format[position++];\n if (char === startDelimiter) {\n if (text) {\n tokens.push({ type: 'text', value: text });\n }\n text = '';\n let sub = '';\n char = format[position++];\n while (char !== undefined && char !== endDelimiter) {\n sub += char;\n char = format[position++];\n }\n const isClosed = char === endDelimiter;\n const type = RE_TOKEN_LIST_VALUE.test(sub)\n ? 'list'\n : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\n ? 'named'\n : 'unknown';\n tokens.push({ value: sub, type });\n }\n // else if (char === '%') {\n // // when found rails i18n syntax, skip text capture\n // if (format[position] !== '{') {\n // text += char\n // }\n // }\n else {\n text += char;\n }\n }\n text && tokens.push({ type: 'text', value: text });\n return tokens;\n}\nfunction compile(tokens, values) {\n const compiled = [];\n let index = 0;\n const mode = Array.isArray(values)\n ? 'list'\n : isObject(values)\n ? 'named'\n : 'unknown';\n if (mode === 'unknown') {\n return compiled;\n }\n while (index < tokens.length) {\n const token = tokens[index];\n switch (token.type) {\n case 'text':\n compiled.push(token.value);\n break;\n case 'list':\n compiled.push(values[parseInt(token.value, 10)]);\n break;\n case 'named':\n if (mode === 'named') {\n compiled.push(values[token.value]);\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Type of token '${token.type}' and format of value '${mode}' don't match!`);\n }\n }\n break;\n case 'unknown':\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Detect 'unknown' type of token!`);\n }\n break;\n }\n index++;\n }\n return compiled;\n}\n\nconst LOCALE_ZH_HANS = 'zh-Hans';\nconst LOCALE_ZH_HANT = 'zh-Hant';\nconst LOCALE_EN = 'en';\nconst LOCALE_FR = 'fr';\nconst LOCALE_ES = 'es';\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst defaultFormatter = new BaseFormatter();\nfunction include(str, parts) {\n return !!parts.find((part) => str.indexOf(part) !== -1);\n}\nfunction startsWith(str, parts) {\n return parts.find((part) => str.indexOf(part) === 0);\n}\nfunction normalizeLocale(locale, messages) {\n if (!locale) {\n return;\n }\n locale = locale.trim().replace(/_/g, '-');\n if (messages && messages[locale]) {\n return locale;\n }\n locale = locale.toLowerCase();\n if (locale === 'chinese') {\n // 支付宝\n return LOCALE_ZH_HANS;\n }\n if (locale.indexOf('zh') === 0) {\n if (locale.indexOf('-hans') > -1) {\n return LOCALE_ZH_HANS;\n }\n if (locale.indexOf('-hant') > -1) {\n return LOCALE_ZH_HANT;\n }\n if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {\n return LOCALE_ZH_HANT;\n }\n return LOCALE_ZH_HANS;\n }\n let locales = [LOCALE_EN, LOCALE_FR, LOCALE_ES];\n if (messages && Object.keys(messages).length > 0) {\n locales = Object.keys(messages);\n }\n const lang = startsWith(locale, locales);\n if (lang) {\n return lang;\n }\n}\nclass I18n {\n constructor({ locale, fallbackLocale, messages, watcher, formater, }) {\n this.locale = LOCALE_EN;\n this.fallbackLocale = LOCALE_EN;\n this.message = {};\n this.messages = {};\n this.watchers = [];\n if (fallbackLocale) {\n this.fallbackLocale = fallbackLocale;\n }\n this.formater = formater || defaultFormatter;\n this.messages = messages || {};\n this.setLocale(locale || LOCALE_EN);\n if (watcher) {\n this.watchLocale(watcher);\n }\n }\n setLocale(locale) {\n const oldLocale = this.locale;\n this.locale = normalizeLocale(locale, this.messages) || this.fallbackLocale;\n if (!this.messages[this.locale]) {\n // 可能初始化时不存在\n this.messages[this.locale] = {};\n }\n this.message = this.messages[this.locale];\n // 仅发生变化时,通知\n if (oldLocale !== this.locale) {\n this.watchers.forEach((watcher) => {\n watcher(this.locale, oldLocale);\n });\n }\n }\n getLocale() {\n return this.locale;\n }\n watchLocale(fn) {\n const index = this.watchers.push(fn) - 1;\n return () => {\n this.watchers.splice(index, 1);\n };\n }\n add(locale, message, override = true) {\n const curMessages = this.messages[locale];\n if (curMessages) {\n if (override) {\n Object.assign(curMessages, message);\n }\n else {\n Object.keys(message).forEach((key) => {\n if (!hasOwn(curMessages, key)) {\n curMessages[key] = message[key];\n }\n });\n }\n }\n else {\n this.messages[locale] = message;\n }\n }\n f(message, values, delimiters) {\n return this.formater.interpolate(message, values, delimiters).join('');\n }\n t(key, locale, values) {\n let message = this.message;\n if (typeof locale === 'string') {\n locale = normalizeLocale(locale, this.messages);\n locale && (message = this.messages[locale]);\n }\n else {\n values = locale;\n }\n if (!hasOwn(message, key)) {\n console.warn(`Cannot translate the value of keypath ${key}. Use the value of keypath as default.`);\n return key;\n }\n return this.formater.interpolate(message[key], values).join('');\n }\n}\n\nfunction watchAppLocale(appVm, i18n) {\n // 需要保证 watch 的触发在组件渲染之前\n if (appVm.$watchLocale) {\n // vue2\n appVm.$watchLocale((newLocale) => {\n i18n.setLocale(newLocale);\n });\n }\n else {\n appVm.$watch(() => appVm.$locale, (newLocale) => {\n i18n.setLocale(newLocale);\n });\n }\n}\nfunction getDefaultLocale() {\n if (typeof uni !== 'undefined' && uni.getLocale) {\n return uni.getLocale();\n }\n // 小程序平台,uni 和 uni-i18n 互相引用,导致访问不到 uni,故在 global 上挂了 getLocale\n if (typeof global !== 'undefined' && global.getLocale) {\n return global.getLocale();\n }\n return LOCALE_EN;\n}\nfunction initVueI18n(locale, messages = {}, fallbackLocale, watcher) {\n // 兼容旧版本入参\n if (typeof locale !== 'string') {\n // ;[locale, messages] = [\n // messages as unknown as string,\n // locale as unknown as LocaleMessages,\n // ]\n // 暂不使用数组解构,uts编译器暂未支持。\n const options = [\n messages,\n locale,\n ];\n locale = options[0];\n messages = options[1];\n }\n if (typeof locale !== 'string') {\n // 因为小程序平台,uni-i18n 和 uni 互相引用,导致此时访问 uni 时,为 undefined\n locale = getDefaultLocale();\n }\n if (typeof fallbackLocale !== 'string') {\n fallbackLocale =\n (typeof __uniConfig !== 'undefined' && __uniConfig.fallbackLocale) ||\n LOCALE_EN;\n }\n const i18n = new I18n({\n locale,\n fallbackLocale,\n messages,\n watcher,\n });\n let t = (key, values) => {\n if (typeof getApp !== 'function') {\n // app view\n /* eslint-disable no-func-assign */\n t = function (key, values) {\n return i18n.t(key, values);\n };\n }\n else {\n let isWatchedAppLocale = false;\n t = function (key, values) {\n const appVm = getApp().$vm;\n // 可能$vm还不存在,比如在支付宝小程序中,组件定义较早,在props的default里使用了t()函数(如uni-goods-nav),此时app还未初始化\n // options: {\n // \ttype: Array,\n // \tdefault () {\n // \t\treturn [{\n // \t\t\ticon: 'shop',\n // \t\t\ttext: t(\"uni-goods-nav.options.shop\"),\n // \t\t}, {\n // \t\t\ticon: 'cart',\n // \t\t\ttext: t(\"uni-goods-nav.options.cart\")\n // \t\t}]\n // \t}\n // },\n if (appVm) {\n // 触发响应式\n appVm.$locale;\n if (!isWatchedAppLocale) {\n isWatchedAppLocale = true;\n watchAppLocale(appVm, i18n);\n }\n }\n return i18n.t(key, values);\n };\n }\n return t(key, values);\n };\n return {\n i18n,\n f(message, values, delimiters) {\n return i18n.f(message, values, delimiters);\n },\n t(key, values) {\n return t(key, values);\n },\n add(locale, message, override = true) {\n return i18n.add(locale, message, override);\n },\n watch(fn) {\n return i18n.watchLocale(fn);\n },\n getLocale() {\n return i18n.getLocale();\n },\n setLocale(newLocale) {\n return i18n.setLocale(newLocale);\n },\n };\n}\n\nconst isString = (val) => typeof val === 'string';\nlet formater;\nfunction hasI18nJson(jsonObj, delimiters) {\n if (!formater) {\n formater = new BaseFormatter();\n }\n return walkJsonObj(jsonObj, (jsonObj, key) => {\n const value = jsonObj[key];\n if (isString(value)) {\n if (isI18nStr(value, delimiters)) {\n return true;\n }\n }\n else {\n return hasI18nJson(value, delimiters);\n }\n });\n}\nfunction parseI18nJson(jsonObj, values, delimiters) {\n if (!formater) {\n formater = new BaseFormatter();\n }\n walkJsonObj(jsonObj, (jsonObj, key) => {\n const value = jsonObj[key];\n if (isString(value)) {\n if (isI18nStr(value, delimiters)) {\n jsonObj[key] = compileStr(value, values, delimiters);\n }\n }\n else {\n parseI18nJson(value, values, delimiters);\n }\n });\n return jsonObj;\n}\nfunction compileI18nJsonStr(jsonStr, { locale, locales, delimiters, }) {\n if (!isI18nStr(jsonStr, delimiters)) {\n return jsonStr;\n }\n if (!formater) {\n formater = new BaseFormatter();\n }\n const localeValues = [];\n Object.keys(locales).forEach((name) => {\n if (name !== locale) {\n localeValues.push({\n locale: name,\n values: locales[name],\n });\n }\n });\n localeValues.unshift({ locale, values: locales[locale] });\n try {\n return JSON.stringify(compileJsonObj(JSON.parse(jsonStr), localeValues, delimiters), null, 2);\n }\n catch (e) { }\n return jsonStr;\n}\nfunction isI18nStr(value, delimiters) {\n return value.indexOf(delimiters[0]) > -1;\n}\nfunction compileStr(value, values, delimiters) {\n return formater.interpolate(value, values, delimiters).join('');\n}\nfunction compileValue(jsonObj, key, localeValues, delimiters) {\n const value = jsonObj[key];\n if (isString(value)) {\n // 存在国际化\n if (isI18nStr(value, delimiters)) {\n jsonObj[key] = compileStr(value, localeValues[0].values, delimiters);\n if (localeValues.length > 1) {\n // 格式化国际化语言\n const valueLocales = (jsonObj[key + 'Locales'] = {});\n localeValues.forEach((localValue) => {\n valueLocales[localValue.locale] = compileStr(value, localValue.values, delimiters);\n });\n }\n }\n }\n else {\n compileJsonObj(value, localeValues, delimiters);\n }\n}\nfunction compileJsonObj(jsonObj, localeValues, delimiters) {\n walkJsonObj(jsonObj, (jsonObj, key) => {\n compileValue(jsonObj, key, localeValues, delimiters);\n });\n return jsonObj;\n}\nfunction walkJsonObj(jsonObj, walk) {\n if (Array.isArray(jsonObj)) {\n for (let i = 0; i < jsonObj.length; i++) {\n if (walk(jsonObj, i)) {\n return true;\n }\n }\n }\n else if (isObject(jsonObj)) {\n for (const key in jsonObj) {\n if (walk(jsonObj, key)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction resolveLocale(locales) {\n return (locale) => {\n if (!locale) {\n return locale;\n }\n locale = normalizeLocale(locale) || locale;\n return resolveLocaleChain(locale).find((locale) => locales.indexOf(locale) > -1);\n };\n}\nfunction resolveLocaleChain(locale) {\n const chain = [];\n const tokens = locale.split('-');\n while (tokens.length) {\n chain.push(tokens.join('-'));\n tokens.pop();\n }\n return chain;\n}\n\nexport { BaseFormatter as Formatter, I18n, LOCALE_EN, LOCALE_ES, LOCALE_FR, LOCALE_ZH_HANS, LOCALE_ZH_HANT, compileI18nJsonStr, hasI18nJson, initVueI18n, isI18nStr, isString, normalizeLocale, parseI18nJson, resolveLocale };\n","import { isHTMLTag, isSVGTag, isVoidTag, isString, isFunction, isPlainObject, hyphenate, camelize, normalizeStyle as normalizeStyle$1, parseStringStyle, isArray, normalizeClass as normalizeClass$1, extend, capitalize } from '@vue/shared';\n\nconst BUILT_IN_TAG_NAMES = [\n 'ad',\n 'ad-content-page',\n 'ad-draw',\n 'audio',\n 'button',\n 'camera',\n 'canvas',\n 'checkbox',\n 'checkbox-group',\n 'cover-image',\n 'cover-view',\n 'editor',\n 'form',\n 'functional-page-navigator',\n 'icon',\n 'image',\n 'input',\n 'label',\n 'live-player',\n 'live-pusher',\n 'map',\n 'movable-area',\n 'movable-view',\n 'navigator',\n 'official-account',\n 'open-data',\n 'picker',\n 'picker-view',\n 'picker-view-column',\n 'progress',\n 'radio',\n 'radio-group',\n 'rich-text',\n 'scroll-view',\n 'slider',\n 'swiper',\n 'swiper-item',\n 'switch',\n 'text',\n 'textarea',\n 'video',\n 'view',\n 'web-view',\n 'location-picker',\n 'location-view',\n];\nconst BUILT_IN_TAGS = BUILT_IN_TAG_NAMES.map((tag) => 'uni-' + tag);\nconst TAGS = [\n 'app',\n 'layout',\n 'content',\n 'main',\n 'top-window',\n 'left-window',\n 'right-window',\n 'tabbar',\n 'page',\n 'page-head',\n 'page-wrapper',\n 'page-body',\n 'page-refresh',\n 'actionsheet',\n 'modal',\n 'toast',\n 'resize-sensor',\n 'shadow-root',\n].map((tag) => 'uni-' + tag);\nconst NVUE_BUILT_IN_TAGS = [\n 'svg',\n 'view',\n 'a',\n 'div',\n 'img',\n 'image',\n 'text',\n 'span',\n 'input',\n 'textarea',\n 'spinner',\n 'select',\n // slider 被自定义 u-slider 替代\n // 'slider',\n 'slider-neighbor',\n 'indicator',\n 'canvas',\n 'list',\n 'cell',\n 'header',\n 'loading',\n 'loading-indicator',\n 'refresh',\n 'scrollable',\n 'scroller',\n 'video',\n 'web',\n 'embed',\n 'tabbar',\n 'tabheader',\n 'datepicker',\n 'timepicker',\n 'marquee',\n 'countdown',\n 'dc-switch',\n 'waterfall',\n 'richtext',\n 'recycle-list',\n 'u-scalable',\n 'barcode',\n 'gcanvas',\n];\nconst UVUE_BUILT_IN_TAGS = [\n 'ad',\n 'ad-content-page',\n 'ad-draw',\n 'native-view',\n 'loading-indicator',\n 'list-view',\n 'list-item',\n 'swiper',\n 'swiper-item',\n 'rich-text',\n 'sticky-view',\n 'sticky-header',\n 'sticky-section',\n // 自定义\n 'uni-slider',\n // 原生实现\n 'button',\n 'nested-scroll-header',\n 'nested-scroll-body',\n 'waterflow',\n 'flow-item',\n 'share-element',\n 'cover-view',\n 'cover-image',\n];\nconst UVUE_WEB_BUILT_IN_TAGS = [\n 'list-view',\n 'list-item',\n 'sticky-section',\n 'sticky-header',\n 'cloud-db-element',\n].map((tag) => 'uni-' + tag);\nconst UVUE_IOS_BUILT_IN_TAGS = [\n 'scroll-view',\n 'web-view',\n 'slider',\n 'form',\n 'switch',\n];\nconst UVUE_HARMONY_BUILT_IN_TAGS = [\n // TODO 列出完整列表\n ...BUILT_IN_TAG_NAMES,\n 'volume-panel',\n];\nconst NVUE_U_BUILT_IN_TAGS = [\n 'u-text',\n 'u-image',\n 'u-input',\n 'u-textarea',\n 'u-video',\n 'u-web-view',\n 'u-slider',\n 'u-ad',\n 'u-ad-draw',\n 'u-rich-text',\n];\nconst UNI_UI_CONFLICT_TAGS = ['list-item'].map((tag) => 'uni-' + tag);\nfunction isBuiltInComponent(tag) {\n if (UNI_UI_CONFLICT_TAGS.indexOf(tag) !== -1) {\n return false;\n }\n // h5 平台会被转换为 v-uni-\n const realTag = 'uni-' + tag.replace('v-uni-', '');\n // TODO 区分x和非x\n return (BUILT_IN_TAGS.indexOf(realTag) !== -1 ||\n UVUE_WEB_BUILT_IN_TAGS.indexOf(realTag) !== -1);\n}\nfunction isH5CustomElement(tag, isX = false) {\n if (isX && UVUE_WEB_BUILT_IN_TAGS.indexOf(tag) !== -1) {\n return true;\n }\n return TAGS.indexOf(tag) !== -1 || BUILT_IN_TAGS.indexOf(tag) !== -1;\n}\nfunction isUniXElement(name) {\n return /^I?Uni.*Element(?:Impl)?$/.test(name);\n}\nfunction isH5NativeTag(tag) {\n return (tag !== 'head' &&\n (isHTMLTag(tag) || isSVGTag(tag)) &&\n !isBuiltInComponent(tag));\n}\nfunction isAppNativeTag(tag) {\n return isHTMLTag(tag) || isSVGTag(tag) || isBuiltInComponent(tag);\n}\nconst NVUE_CUSTOM_COMPONENTS = [\n 'ad',\n 'ad-draw',\n 'button',\n 'checkbox-group',\n 'checkbox',\n 'form',\n 'icon',\n 'label',\n 'movable-area',\n 'movable-view',\n 'navigator',\n 'picker',\n 'progress',\n 'radio-group',\n 'radio',\n 'rich-text',\n 'swiper-item',\n 'swiper',\n 'switch',\n 'slider',\n 'picker-view',\n 'picker-view-column',\n];\n// 内置的easycom组件\nconst UVUE_BUILT_IN_EASY_COMPONENTS = ['map', 'camera'];\nfunction isAppUVueBuiltInEasyComponent(tag) {\n return UVUE_BUILT_IN_EASY_COMPONENTS.includes(tag);\n}\n// 主要是指前端实现的组件列表\nconst UVUE_CUSTOM_COMPONENTS = [\n ...NVUE_CUSTOM_COMPONENTS,\n ...UVUE_BUILT_IN_EASY_COMPONENTS,\n];\nfunction isAppUVueNativeTag(tag) {\n // 前端实现的内置组件都会注册一个根组件\n if (tag.startsWith('uni-') && tag.endsWith('-element')) {\n return true;\n }\n if (UVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (UVUE_CUSTOM_COMPONENTS.includes(tag)) {\n return false;\n }\n if (isBuiltInComponent(tag)) {\n return true;\n }\n // u-text,u-video...\n if (NVUE_U_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n return false;\n}\nfunction isAppIOSUVueNativeTag(tag) {\n // 前端实现的内置组件都会注册一个根组件\n if (tag.startsWith('uni-') && tag.endsWith('-element')) {\n return true;\n }\n if (NVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (UVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (UVUE_IOS_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n return false;\n}\nfunction isAppHarmonyUVueNativeTag(tag) {\n // video 目前是easycom实现的\n if (tag === 'video' || tag === 'map') {\n return false;\n }\n // 前端实现的内置组件都会注册一个根组件\n if (tag.startsWith('uni-') && tag.endsWith('-element')) {\n return true;\n }\n if (NVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (UVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (UVUE_HARMONY_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n return false;\n}\nfunction isAppNVueNativeTag(tag) {\n if (NVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (NVUE_CUSTOM_COMPONENTS.includes(tag)) {\n return false;\n }\n if (isBuiltInComponent(tag)) {\n return true;\n }\n // u-text,u-video...\n if (NVUE_U_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n return false;\n}\nfunction isMiniProgramNativeTag(tag) {\n return isBuiltInComponent(tag);\n}\nfunction isMiniProgramUVueNativeTag(tag) {\n // 小程序平台内置的自定义元素,会被转换为 view\n if (tag.startsWith('uni-') && tag.endsWith('-element')) {\n return true;\n }\n return isBuiltInComponent(tag);\n}\nfunction createIsCustomElement(tags = []) {\n return function isCustomElement(tag) {\n return tags.includes(tag);\n };\n}\nfunction isComponentTag(tag) {\n return tag[0].toLowerCase() + tag.slice(1) === 'component';\n}\nconst COMPONENT_SELECTOR_PREFIX = 'uni-';\nconst COMPONENT_PREFIX = 'v-' + COMPONENT_SELECTOR_PREFIX;\n// TODO 是否还存在其他需要特殊处理的 void 标签?\nconst APP_VOID_TAGS = ['textarea'];\nfunction isAppVoidTag(tag) {\n return APP_VOID_TAGS.includes(tag) || isVoidTag(tag);\n}\n\nconst LINEFEED = '\\n';\nconst NAVBAR_HEIGHT = 44;\nconst TABBAR_HEIGHT = 50;\nconst ON_REACH_BOTTOM_DISTANCE = 50;\nconst RESPONSIVE_MIN_WIDTH = 768;\nconst UNI_STORAGE_LOCALE = 'UNI_LOCALE';\n// quickapp-webview 不能使用 default 作为插槽名称\nconst SLOT_DEFAULT_NAME = 'd';\nconst COMPONENT_NAME_PREFIX = 'VUni';\nconst I18N_JSON_DELIMITERS = ['%', '%'];\nconst PRIMARY_COLOR = '#007aff';\nconst SELECTED_COLOR = '#0062cc'; // 选中的颜色,如选项卡默认的选中颜色\nconst BACKGROUND_COLOR = '#f7f7f7'; // 背景色,如标题栏默认背景色\nconst UNI_SSR = '__uniSSR';\nconst UNI_SSR_TITLE = 'title';\nconst UNI_SSR_STORE = 'store';\nconst UNI_SSR_DATA = 'data';\nconst UNI_SSR_GLOBAL_DATA = 'globalData';\nconst SCHEME_RE = /^([a-z-]+:)?\\/\\//i;\nconst DATA_RE = /^data:.*,.*/;\nconst WEB_INVOKE_APPSERVICE = 'WEB_INVOKE_APPSERVICE';\nconst WXS_PROTOCOL = 'wxs://';\nconst JSON_PROTOCOL = 'json://';\nconst WXS_MODULES = 'wxsModules';\nconst RENDERJS_MODULES = 'renderjsModules';\n// lifecycle\n// App and Page\nconst ON_SHOW = 'onShow';\nconst ON_HIDE = 'onHide';\n//App\nconst ON_LAUNCH = 'onLaunch';\nconst ON_ERROR = 'onError';\nconst ON_THEME_CHANGE = 'onThemeChange';\nconst OFF_THEME_CHANGE = 'offThemeChange';\nconst ON_HOST_THEME_CHANGE = 'onHostThemeChange';\nconst OFF_HOST_THEME_CHANGE = 'offHostThemeChange';\nconst ON_KEYBOARD_HEIGHT_CHANGE = 'onKeyboardHeightChange';\nconst ON_PAGE_NOT_FOUND = 'onPageNotFound';\nconst ON_UNHANDLE_REJECTION = 'onUnhandledRejection';\nconst ON_EXIT = 'onExit';\n//Page\nconst ON_LOAD = 'onLoad';\nconst ON_READY = 'onReady';\nconst ON_UNLOAD = 'onUnload';\n// 百度特有\nconst ON_INIT = 'onInit';\n// 微信特有\nconst ON_SAVE_EXIT_STATE = 'onSaveExitState';\nconst ON_RESIZE = 'onResize';\nconst ON_BACK_PRESS = 'onBackPress';\nconst ON_PAGE_SCROLL = 'onPageScroll';\nconst ON_TAB_ITEM_TAP = 'onTabItemTap';\nconst ON_REACH_BOTTOM = 'onReachBottom';\nconst ON_PULL_DOWN_REFRESH = 'onPullDownRefresh';\nconst ON_SHARE_TIMELINE = 'onShareTimeline';\nconst ON_SHARE_CHAT = 'onShareChat'; // xhs-share\nconst ON_ADD_TO_FAVORITES = 'onAddToFavorites';\nconst ON_SHARE_APP_MESSAGE = 'onShareAppMessage';\n// navigationBar\nconst ON_NAVIGATION_BAR_BUTTON_TAP = 'onNavigationBarButtonTap';\nconst ON_NAVIGATION_BAR_CHANGE = 'onNavigationBarChange';\nconst ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED = 'onNavigationBarSearchInputClicked';\nconst ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED = 'onNavigationBarSearchInputChanged';\nconst ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED = 'onNavigationBarSearchInputConfirmed';\nconst ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED = 'onNavigationBarSearchInputFocusChanged';\n// framework\nconst ON_APP_ENTER_FOREGROUND = 'onAppEnterForeground';\nconst ON_APP_ENTER_BACKGROUND = 'onAppEnterBackground';\nconst ON_WEB_INVOKE_APP_SERVICE = 'onWebInvokeAppService';\nconst ON_WXS_INVOKE_CALL_METHOD = 'onWxsInvokeCallMethod';\n// mergeVirtualHostAttributes\nconst VIRTUAL_HOST_STYLE = 'virtualHostStyle';\nconst VIRTUAL_HOST_CLASS = 'virtualHostClass';\nconst VIRTUAL_HOST_HIDDEN = 'virtualHostHidden';\nconst VIRTUAL_HOST_ID = 'virtualHostId';\n\nfunction cache(fn) {\n const cache = Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\nfunction cacheStringFunction(fn) {\n return cache(fn);\n}\nfunction getLen(str = '') {\n return ('' + str).replace(/[^\\x00-\\xff]/g, '**').length;\n}\nfunction hasLeadingSlash(str) {\n return str.indexOf('/') === 0;\n}\nfunction addLeadingSlash(str) {\n return hasLeadingSlash(str) ? str : '/' + str;\n}\nfunction removeLeadingSlash(str) {\n return hasLeadingSlash(str) ? str.slice(1) : str;\n}\nconst invokeArrayFns = (fns, arg) => {\n let ret;\n for (let i = 0; i < fns.length; i++) {\n ret = fns[i](arg);\n }\n return ret;\n};\nfunction updateElementStyle(element, styles) {\n for (const attrName in styles) {\n element.style[attrName] = styles[attrName];\n }\n}\nfunction once(fn, ctx = null) {\n let res;\n return ((...args) => {\n if (fn) {\n res = fn.apply(ctx, args);\n fn = null;\n }\n return res;\n });\n}\nconst sanitise = (val) => (val && JSON.parse(JSON.stringify(val))) || val;\nconst _completeValue = (value) => (value > 9 ? value : '0' + value);\nfunction formatDateTime({ date = new Date(), mode = 'date' }) {\n if (mode === 'time') {\n return (_completeValue(date.getHours()) + ':' + _completeValue(date.getMinutes()));\n }\n else {\n return (date.getFullYear() +\n '-' +\n _completeValue(date.getMonth() + 1) +\n '-' +\n _completeValue(date.getDate()));\n }\n}\nfunction callOptions(options, data) {\n options = options || {};\n if (isString(data)) {\n data = {\n errMsg: data,\n };\n }\n if (/:ok$/.test(data.errMsg)) {\n if (isFunction(options.success)) {\n options.success(data);\n }\n }\n else {\n if (isFunction(options.fail)) {\n options.fail(data);\n }\n }\n if (isFunction(options.complete)) {\n options.complete(data);\n }\n}\nfunction getValueByDataPath(obj, path) {\n if (!isString(path)) {\n return;\n }\n path = path.replace(/\\[(\\d+)\\]/g, '.$1');\n const parts = path.split('.');\n let key = parts[0];\n if (!obj) {\n obj = {};\n }\n if (parts.length === 1) {\n return obj[key];\n }\n return getValueByDataPath(obj[key], parts.slice(1).join('.'));\n}\nfunction sortObject(obj) {\n let sortObj = {};\n if (isPlainObject(obj)) {\n Object.keys(obj)\n .sort()\n .forEach((key) => {\n const _key = key;\n sortObj[_key] = obj[_key];\n });\n }\n return !Object.keys(sortObj) ? obj : sortObj;\n}\nfunction getGlobalOnce() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n // worker\n if (typeof self !== 'undefined') {\n return self;\n }\n // browser\n if (typeof window !== 'undefined') {\n return window;\n }\n // nodejs\n // if (typeof global !== 'undefined') {\n // return global\n // }\n function g() {\n return this;\n }\n if (typeof g() !== 'undefined') {\n return g();\n }\n return (function () {\n return new Function('return this')();\n })();\n}\nlet g = undefined;\nfunction getGlobal() {\n if (g) {\n return g;\n }\n g = getGlobalOnce();\n return g;\n}\n\nfunction isComponentInternalInstance(vm) {\n return !!vm.appContext;\n}\nfunction resolveComponentInstance(instance) {\n return (instance &&\n (isComponentInternalInstance(instance) ? instance.proxy : instance));\n}\nfunction resolveOwnerVm(vm) {\n if (!vm) {\n return;\n }\n let componentName = vm.type.name;\n while (componentName && isBuiltInComponent(hyphenate(componentName))) {\n // ownerInstance 内置组件需要使用父 vm\n vm = vm.parent;\n componentName = vm.type.name;\n }\n return vm.proxy;\n}\nfunction isElement(el) {\n // Element\n return el.nodeType === 1;\n}\nfunction resolveOwnerEl(instance, multi = false) {\n const { vnode } = instance;\n if (isElement(vnode.el)) {\n return multi ? (vnode.el ? [vnode.el] : []) : vnode.el;\n }\n const { subTree } = instance;\n // ShapeFlags.ARRAY_CHILDREN = 1<<4\n if (subTree.shapeFlag & 16) {\n const elemVNodes = subTree.children.filter((vnode) => vnode.el && isElement(vnode.el));\n if (elemVNodes.length > 0) {\n if (multi) {\n return elemVNodes.map((node) => node.el);\n }\n return elemVNodes[0].el;\n }\n }\n return multi ? (vnode.el ? [vnode.el] : []) : vnode.el;\n}\nfunction dynamicSlotName(name) {\n return name === 'default' ? SLOT_DEFAULT_NAME : name;\n}\nconst customizeRE = /:/g;\nfunction customizeEvent(str) {\n return camelize(str.replace(customizeRE, '-'));\n}\nfunction normalizeStyle(value) {\n const g = getGlobal();\n if (g && g.UTSJSONObject && value instanceof g.UTSJSONObject) {\n const styleObject = {};\n g.UTSJSONObject.keys(value).forEach((key) => {\n styleObject[key] = value[key];\n });\n return normalizeStyle$1(styleObject);\n }\n else if (value instanceof Map) {\n const styleObject = {};\n value.forEach((value, key) => {\n styleObject[key] = value;\n });\n return normalizeStyle$1(styleObject);\n }\n else if (isString(value)) {\n return parseStringStyle(value);\n }\n else if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item)\n ? parseStringStyle(item)\n : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n }\n else {\n return normalizeStyle$1(value);\n }\n}\nfunction normalizeClass(value) {\n let res = '';\n const g = getGlobal();\n if (g && g.UTSJSONObject && value instanceof g.UTSJSONObject) {\n g.UTSJSONObject.keys(value).forEach((key) => {\n if (value[key]) {\n res += key + ' ';\n }\n });\n }\n else if (value instanceof Map) {\n value.forEach((value, key) => {\n if (value) {\n res += key + ' ';\n }\n });\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + ' ';\n }\n }\n }\n else {\n res = normalizeClass$1(value);\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nlet lastLogTime = 0;\nfunction formatLog(module, ...args) {\n const now = Date.now();\n const diff = lastLogTime ? now - lastLogTime : 0;\n lastLogTime = now;\n return `[${now}][${diff}ms][${module}]:${args\n .map((arg) => JSON.stringify(arg))\n .join(' ')}`;\n}\n\nfunction formatKey(key) {\n return camelize(key.substring(5));\n}\n// question/139181,增加副作用,避免 initCustomDataset 在 build 下被 tree-shaking\nconst initCustomDatasetOnce = /*#__PURE__*/ once((isBuiltInElement) => {\n isBuiltInElement =\n isBuiltInElement || ((el) => el.tagName.startsWith('UNI-'));\n const prototype = HTMLElement.prototype;\n const setAttribute = prototype.setAttribute;\n prototype.setAttribute = function (key, value) {\n if (key.startsWith('data-') && isBuiltInElement(this)) {\n const dataset = this.__uniDataset ||\n (this.__uniDataset = {});\n dataset[formatKey(key)] = value;\n }\n setAttribute.call(this, key, value);\n };\n const removeAttribute = prototype.removeAttribute;\n prototype.removeAttribute = function (key) {\n if (this.__uniDataset &&\n key.startsWith('data-') &&\n isBuiltInElement(this)) {\n delete this.__uniDataset[formatKey(key)];\n }\n removeAttribute.call(this, key);\n };\n});\nfunction getCustomDataset(el) {\n return extend({}, el.dataset, el.__uniDataset);\n}\n\nconst unitRE = new RegExp(`\"[^\"]+\"|'[^']+'|url\\\\([^)]+\\\\)|(\\\\d*\\\\.?\\\\d+)[r|u]px`, 'g');\nfunction toFixed(number, precision) {\n const multiplier = Math.pow(10, precision + 1);\n const wholeNumber = Math.floor(number * multiplier);\n return (Math.round(wholeNumber / 10) * 10) / multiplier;\n}\nconst defaultRpx2Unit = {\n unit: 'rem',\n unitRatio: 10 / 320,\n unitPrecision: 5,\n};\nconst defaultMiniProgramRpx2Unit = {\n unit: 'rpx',\n unitRatio: 1,\n unitPrecision: 1,\n};\nconst defaultNVueRpx2Unit = defaultMiniProgramRpx2Unit;\nfunction createRpx2Unit(unit, unitRatio, unitPrecision) {\n // ignore: rpxCalcIncludeWidth\n return (val) => val.replace(unitRE, (m, $1) => {\n if (!$1) {\n return m;\n }\n if (unitRatio === 1) {\n return `${$1}${unit}`;\n }\n const value = toFixed(parseFloat($1) * unitRatio, unitPrecision);\n return value === 0 ? '0' : `${value}${unit}`;\n });\n}\n\nfunction passive(passive) {\n return { passive };\n}\nfunction normalizeDataset(el) {\n // TODO\n return JSON.parse(JSON.stringify(el.dataset || {}));\n}\nfunction normalizeTarget(el) {\n const { id, offsetTop, offsetLeft } = el;\n return {\n id,\n dataset: getCustomDataset(el),\n offsetTop,\n offsetLeft,\n };\n}\nfunction addFont(family, source, desc) {\n const fonts = document.fonts;\n if (fonts) {\n const fontFace = new FontFace(family, source, desc);\n return fontFace.load().then(() => {\n fonts.add && fonts.add(fontFace);\n });\n }\n return new Promise((resolve) => {\n const style = document.createElement('style');\n const values = [];\n if (desc) {\n const { style, weight, stretch, unicodeRange, variant, featureSettings } = desc;\n style && values.push(`font-style:${style}`);\n weight && values.push(`font-weight:${weight}`);\n stretch && values.push(`font-stretch:${stretch}`);\n unicodeRange && values.push(`unicode-range:${unicodeRange}`);\n variant && values.push(`font-variant:${variant}`);\n featureSettings && values.push(`font-feature-settings:${featureSettings}`);\n }\n style.innerText = `@font-face{font-family:\"${family}\";src:${source};${values.join(';')}}`;\n document.head.appendChild(style);\n resolve();\n });\n}\nfunction scrollTo(scrollTop, duration, isH5) {\n if (isString(scrollTop)) {\n const el = document.querySelector(scrollTop);\n if (el) {\n const { top } = el.getBoundingClientRect();\n scrollTop = top + window.pageYOffset;\n // 如果存在,减去 高度\n const pageHeader = document.querySelector('uni-page-head');\n if (pageHeader) {\n scrollTop -= pageHeader.offsetHeight;\n }\n }\n }\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n const documentElement = document.documentElement;\n const { clientHeight, scrollHeight } = documentElement;\n scrollTop = Math.min(scrollTop, scrollHeight - clientHeight);\n if (duration === 0) {\n // 部分浏览器(比如微信)中 scrollTop 的值需要通过 document.body 来控制\n documentElement.scrollTop = document.body.scrollTop = scrollTop;\n return;\n }\n if (window.scrollY === scrollTop) {\n return;\n }\n const scrollTo = (duration) => {\n if (duration <= 0) {\n window.scrollTo(0, scrollTop);\n return;\n }\n const distaince = scrollTop - window.scrollY;\n requestAnimationFrame(function () {\n window.scrollTo(0, window.scrollY + (distaince / duration) * 10);\n scrollTo(duration - 10);\n });\n };\n scrollTo(duration);\n}\n\nconst encode = encodeURIComponent;\nfunction stringifyQuery(obj, encodeStr = encode) {\n const res = obj\n ? Object.keys(obj)\n .map((key) => {\n let val = obj[key];\n if (typeof val === undefined || val === null) {\n val = '';\n }\n else if (isPlainObject(val)) {\n val = JSON.stringify(val);\n }\n return encodeStr(key) + '=' + encodeStr(val);\n })\n .filter((x) => x.length > 0)\n .join('&')\n : null;\n return res ? `?${res}` : '';\n}\n/**\n * Decode text using `decodeURIComponent`. Returns the original text if it\n * fails.\n *\n * @param text - string to decode\n * @returns decoded string\n */\nfunction decode(text) {\n try {\n return decodeURIComponent('' + text);\n }\n catch (err) { }\n return '' + text;\n}\nfunction decodedQuery(query = {}) {\n const decodedQuery = {};\n Object.keys(query).forEach((name) => {\n try {\n decodedQuery[name] = decode(query[name]);\n }\n catch (e) {\n decodedQuery[name] = query[name];\n }\n });\n return decodedQuery;\n}\nconst PLUS_RE = /\\+/g; // %2B\n/**\n * https://github.com/vuejs/vue-router-next/blob/master/src/query.ts\n * @internal\n *\n * @param search - search string to parse\n * @returns a query object\n */\nfunction parseQuery(search) {\n const query = {};\n // avoid creating an object with an empty key and empty value\n // because of split('&')\n if (search === '' || search === '?')\n return query;\n const hasLeadingIM = search[0] === '?';\n const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');\n for (let i = 0; i < searchParams.length; ++i) {\n // pre decode the + into space\n const searchParam = searchParams[i].replace(PLUS_RE, ' ');\n // allow the = character\n let eqPos = searchParam.indexOf('=');\n let key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\n let value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\n if (key in query) {\n // an extra variable for ts types\n let currentValue = query[key];\n if (!isArray(currentValue)) {\n currentValue = query[key] = [currentValue];\n }\n currentValue.push(value);\n }\n else {\n query[key] = value;\n }\n }\n return query;\n}\n\nfunction parseUrl(url) {\n const [path, querystring] = url.split('?', 2);\n return {\n path,\n query: parseQuery(querystring || ''),\n };\n}\n\nfunction parseNVueDataset(attr) {\n const dataset = {};\n if (attr) {\n Object.keys(attr).forEach((key) => {\n if (key.indexOf('data-') === 0) {\n dataset[key.replace('data-', '')] = attr[key];\n }\n });\n }\n return dataset;\n}\n\nfunction plusReady(callback) {\n if (!isFunction(callback)) {\n return;\n }\n if (window.plus) {\n return callback();\n }\n document.addEventListener('plusready', callback);\n}\n\nclass DOMException extends Error {\n constructor(message) {\n super(message);\n this.name = 'DOMException';\n }\n}\n\nfunction normalizeEventType(type, options) {\n if (options) {\n if (options.capture) {\n type += 'Capture';\n }\n if (options.once) {\n type += 'Once';\n }\n if (options.passive) {\n type += 'Passive';\n }\n }\n return `on${capitalize(camelize(type))}`;\n}\nclass UniEvent {\n constructor(type, opts) {\n this.defaultPrevented = false;\n this.timeStamp = Date.now();\n this._stop = false;\n this._end = false;\n this.type = type;\n this.bubbles = !!opts.bubbles;\n this.cancelable = !!opts.cancelable;\n }\n preventDefault() {\n this.defaultPrevented = true;\n }\n stopImmediatePropagation() {\n this._end = this._stop = true;\n }\n stopPropagation() {\n this._stop = true;\n }\n}\nfunction createUniEvent(evt) {\n if (evt instanceof UniEvent) {\n return evt;\n }\n const [type] = parseEventName(evt.type);\n const uniEvent = new UniEvent(type, {\n bubbles: false,\n cancelable: false,\n });\n extend(uniEvent, evt);\n return uniEvent;\n}\nclass UniEventTarget {\n constructor() {\n this.listeners = Object.create(null);\n }\n dispatchEvent(evt) {\n const listeners = this.listeners[evt.type];\n if (!listeners) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error(formatLog('dispatchEvent', this.nodeId), evt.type, 'not found');\n }\n return false;\n }\n // 格式化事件类型\n const event = createUniEvent(evt);\n const len = listeners.length;\n for (let i = 0; i < len; i++) {\n listeners[i].call(this, event);\n if (event._end) {\n break;\n }\n }\n return event.cancelable && event.defaultPrevented;\n }\n addEventListener(type, listener, options) {\n type = normalizeEventType(type, options);\n (this.listeners[type] || (this.listeners[type] = [])).push(listener);\n }\n removeEventListener(type, callback, options) {\n type = normalizeEventType(type, options);\n const listeners = this.listeners[type];\n if (!listeners) {\n return;\n }\n const index = listeners.indexOf(callback);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseEventName(name) {\n let options;\n if (optionsModifierRE.test(name)) {\n options = {};\n let m;\n while ((m = name.match(optionsModifierRE))) {\n name = name.slice(0, name.length - m[0].length);\n options[m[0].toLowerCase()] = true;\n }\n }\n return [hyphenate(name.slice(2)), options];\n}\n\nconst EventModifierFlags = /*#__PURE__*/ (() => {\n return {\n stop: 1,\n prevent: 1 << 1,\n self: 1 << 2,\n };\n})();\nfunction encodeModifier(modifiers) {\n let flag = 0;\n if (modifiers.includes('stop')) {\n flag |= EventModifierFlags.stop;\n }\n if (modifiers.includes('prevent')) {\n flag |= EventModifierFlags.prevent;\n }\n if (modifiers.includes('self')) {\n flag |= EventModifierFlags.self;\n }\n return flag;\n}\n\nconst NODE_TYPE_PAGE = 0;\nconst NODE_TYPE_ELEMENT = 1;\nconst NODE_TYPE_TEXT = 3;\nconst NODE_TYPE_COMMENT = 8;\nfunction sibling(node, type) {\n const { parentNode } = node;\n if (!parentNode) {\n return null;\n }\n const { childNodes } = parentNode;\n return childNodes[childNodes.indexOf(node) + (type === 'n' ? 1 : -1)] || null;\n}\nfunction removeNode(node) {\n const { parentNode } = node;\n if (parentNode) {\n const { childNodes } = parentNode;\n const index = childNodes.indexOf(node);\n if (index > -1) {\n node.parentNode = null;\n childNodes.splice(index, 1);\n }\n }\n}\nfunction checkNodeId(node) {\n if (!node.nodeId && node.pageNode) {\n node.nodeId = node.pageNode.genId();\n }\n}\n// 为优化性能,各平台不使用proxy来实现node的操作拦截,而是直接通过pageNode定制\nclass UniNode extends UniEventTarget {\n constructor(nodeType, nodeName, container) {\n super();\n this.pageNode = null;\n this.parentNode = null;\n this._text = null;\n if (container) {\n const { pageNode } = container;\n if (pageNode) {\n this.pageNode = pageNode;\n this.nodeId = pageNode.genId();\n !pageNode.isUnmounted && pageNode.onCreate(this, nodeName);\n }\n }\n this.nodeType = nodeType;\n this.nodeName = nodeName;\n this.childNodes = [];\n }\n get firstChild() {\n return this.childNodes[0] || null;\n }\n get lastChild() {\n const { childNodes } = this;\n const length = childNodes.length;\n return length ? childNodes[length - 1] : null;\n }\n get nextSibling() {\n return sibling(this, 'n');\n }\n get nodeValue() {\n return null;\n }\n set nodeValue(_val) { }\n get textContent() {\n return this._text || '';\n }\n set textContent(text) {\n this._text = text;\n if (this.pageNode && !this.pageNode.isUnmounted) {\n this.pageNode.onTextContent(this, text);\n }\n }\n get parentElement() {\n const { parentNode } = this;\n if (parentNode && parentNode.nodeType === NODE_TYPE_ELEMENT) {\n return parentNode;\n }\n return null;\n }\n get previousSibling() {\n return sibling(this, 'p');\n }\n appendChild(newChild) {\n return this.insertBefore(newChild, null);\n }\n cloneNode(deep) {\n const cloned = extend(Object.create(Object.getPrototypeOf(this)), this);\n const { attributes } = cloned;\n if (attributes) {\n cloned.attributes = extend({}, attributes);\n }\n if (deep) {\n cloned.childNodes = cloned.childNodes.map((childNode) => childNode.cloneNode(true));\n }\n return cloned;\n }\n insertBefore(newChild, refChild) {\n // 先从现在的父节点移除(注意:不能触发onRemoveChild,否则会生成先remove该 id,再 insert)\n removeNode(newChild);\n newChild.pageNode = this.pageNode;\n newChild.parentNode = this;\n checkNodeId(newChild);\n const { childNodes } = this;\n if (refChild) {\n const index = childNodes.indexOf(refChild);\n if (index === -1) {\n throw new DOMException(`Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.`);\n }\n childNodes.splice(index, 0, newChild);\n }\n else {\n childNodes.push(newChild);\n }\n return this.pageNode && !this.pageNode.isUnmounted\n ? this.pageNode.onInsertBefore(this, newChild, refChild)\n : newChild;\n }\n removeChild(oldChild) {\n const { childNodes } = this;\n const index = childNodes.indexOf(oldChild);\n if (index === -1) {\n throw new DOMException(`Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.`);\n }\n oldChild.parentNode = null;\n childNodes.splice(index, 1);\n return this.pageNode && !this.pageNode.isUnmounted\n ? this.pageNode.onRemoveChild(oldChild)\n : oldChild;\n }\n}\nconst ATTR_CLASS = 'class';\nconst ATTR_STYLE = 'style';\nconst ATTR_INNER_HTML = 'innerHTML';\nconst ATTR_TEXT_CONTENT = 'textContent';\nconst ATTR_V_SHOW = '.vShow';\nconst ATTR_V_OWNER_ID = '.vOwnerId';\nconst ATTR_V_RENDERJS = '.vRenderjs';\nconst ATTR_CHANGE_PREFIX = 'change:';\nclass UniBaseNode extends UniNode {\n constructor(nodeType, nodeName, container) {\n super(nodeType, nodeName, container);\n this.attributes = Object.create(null);\n this.style = null;\n this.vShow = null;\n this._html = null;\n }\n get className() {\n return (this.attributes[ATTR_CLASS] || '');\n }\n set className(val) {\n this.setAttribute(ATTR_CLASS, val);\n }\n get innerHTML() {\n return '';\n }\n set innerHTML(html) {\n this._html = html;\n }\n addEventListener(type, listener, options) {\n super.addEventListener(type, listener, options);\n if (this.pageNode && !this.pageNode.isUnmounted) {\n if (listener.wxsEvent) {\n this.pageNode.onAddWxsEvent(this, normalizeEventType(type, options), listener.wxsEvent, encodeModifier(listener.modifiers || []));\n }\n else {\n this.pageNode.onAddEvent(this, normalizeEventType(type, options), encodeModifier(listener.modifiers || []));\n }\n }\n }\n removeEventListener(type, callback, options) {\n super.removeEventListener(type, callback, options);\n if (this.pageNode && !this.pageNode.isUnmounted) {\n this.pageNode.onRemoveEvent(this, normalizeEventType(type, options));\n }\n }\n getAttribute(qualifiedName) {\n if (qualifiedName === ATTR_STYLE) {\n return this.style;\n }\n return this.attributes[qualifiedName];\n }\n removeAttribute(qualifiedName) {\n if (qualifiedName == ATTR_STYLE) {\n this.style = null;\n }\n else {\n delete this.attributes[qualifiedName];\n }\n if (this.pageNode && !this.pageNode.isUnmounted) {\n this.pageNode.onRemoveAttribute(this, qualifiedName);\n }\n }\n setAttribute(qualifiedName, value) {\n if (qualifiedName === ATTR_STYLE) {\n this.style = value;\n }\n else {\n this.attributes[qualifiedName] = value;\n }\n if (this.pageNode && !this.pageNode.isUnmounted) {\n this.pageNode.onSetAttribute(this, qualifiedName, value);\n }\n }\n toJSON({ attr, normalize, } = {}) {\n const { attributes, style, listeners, _text } = this;\n const res = {};\n if (Object.keys(attributes).length) {\n res.a = normalize ? normalize(attributes) : attributes;\n }\n const events = Object.keys(listeners);\n if (events.length) {\n let w = undefined;\n const e = {};\n events.forEach((name) => {\n const handlers = listeners[name];\n if (handlers.length) {\n // 可能存在多个 handler 且不同 modifiers 吗?\n const { wxsEvent, modifiers } = handlers[0];\n const modifier = encodeModifier(modifiers || []);\n if (!wxsEvent) {\n e[name] = modifier;\n }\n else {\n if (!w) {\n w = {};\n }\n w[name] = [normalize ? normalize(wxsEvent) : wxsEvent, modifier];\n }\n }\n });\n res.e = normalize ? normalize(e, false) : e;\n if (w) {\n res.w = normalize ? normalize(w, false) : w;\n }\n }\n if (style !== null) {\n res.s = normalize ? normalize(style) : style;\n }\n if (!attr) {\n res.i = this.nodeId;\n res.n = this.nodeName;\n }\n if (_text !== null) {\n res.t = normalize ? normalize(_text) : _text;\n }\n return res;\n }\n}\n\nclass UniCommentNode extends UniNode {\n constructor(text, container) {\n super(NODE_TYPE_COMMENT, '#comment', container);\n this._text = (process.env.NODE_ENV !== 'production') ? text : '';\n }\n toJSON(opts = {}) {\n // 暂时不传递 text 到 view 层,没啥意义,节省点数据量\n return opts.attr\n ? {}\n : {\n i: this.nodeId,\n };\n // return opts.attr\n // ? { t: this._text as string }\n // : {\n // i: this.nodeId!,\n // t: this._text as string,\n // }\n }\n}\n\nclass UniElement extends UniBaseNode {\n constructor(nodeName, container) {\n super(NODE_TYPE_ELEMENT, nodeName.toUpperCase(), container);\n this.tagName = this.nodeName;\n }\n}\nclass UniInputElement extends UniElement {\n get value() {\n return this.getAttribute('value');\n }\n set value(val) {\n this.setAttribute('value', val);\n }\n}\nclass UniTextAreaElement extends UniInputElement {\n}\n\nclass UniTextNode extends UniBaseNode {\n constructor(text, container) {\n super(NODE_TYPE_TEXT, '#text', container);\n this._text = text;\n }\n get nodeValue() {\n return this._text || '';\n }\n set nodeValue(text) {\n this._text = text;\n if (this.pageNode && !this.pageNode.isUnmounted) {\n this.pageNode.onNodeValue(this, text);\n }\n }\n}\n\nconst forcePatchProps = {\n AD: ['data'],\n 'AD-DRAW': ['data'],\n 'LIVE-PLAYER': ['picture-in-picture-mode'],\n MAP: [\n 'markers',\n 'polyline',\n 'circles',\n 'controls',\n 'include-points',\n 'polygons',\n ],\n PICKER: ['range', 'value'],\n 'PICKER-VIEW': ['value'],\n 'RICH-TEXT': ['nodes'],\n VIDEO: ['danmu-list', 'header'],\n 'WEB-VIEW': ['webview-styles'],\n};\nconst forcePatchPropKeys = ['animation'];\n\nconst forcePatchProp = (el, key) => {\n if (forcePatchPropKeys.indexOf(key) > -1) {\n return true;\n }\n const keys = forcePatchProps[el.nodeName];\n if (keys && keys.indexOf(key) > -1) {\n return true;\n }\n return false;\n};\n\nconst ACTION_TYPE_PAGE_CREATE = 1;\nconst ACTION_TYPE_PAGE_CREATED = 2;\nconst ACTION_TYPE_CREATE = 3;\nconst ACTION_TYPE_INSERT = 4;\nconst ACTION_TYPE_REMOVE = 5;\nconst ACTION_TYPE_SET_ATTRIBUTE = 6;\nconst ACTION_TYPE_REMOVE_ATTRIBUTE = 7;\nconst ACTION_TYPE_ADD_EVENT = 8;\nconst ACTION_TYPE_REMOVE_EVENT = 9;\nconst ACTION_TYPE_SET_TEXT = 10;\nconst ACTION_TYPE_ADD_WXS_EVENT = 12;\nconst ACTION_TYPE_PAGE_SCROLL = 15;\nconst ACTION_TYPE_EVENT = 20;\n\n/**\n * 需要手动传入 timer,主要是解决 App 平台的定制 timer\n */\nfunction debounce(fn, delay, { clearTimeout, setTimeout }) {\n let timeout;\n const newFn = function () {\n clearTimeout(timeout);\n const timerFn = () => fn.apply(this, arguments);\n timeout = setTimeout(timerFn, delay);\n };\n newFn.cancel = function () {\n clearTimeout(timeout);\n };\n return newFn;\n}\n\nclass EventChannel {\n constructor(id, events) {\n this.id = id;\n this.listener = {};\n this.emitCache = [];\n if (events) {\n Object.keys(events).forEach((name) => {\n this.on(name, events[name]);\n });\n }\n }\n emit(eventName, ...args) {\n const fns = this.listener[eventName];\n if (!fns) {\n return this.emitCache.push({\n eventName,\n args,\n });\n }\n fns.forEach((opt) => {\n opt.fn.apply(opt.fn, args);\n });\n this.listener[eventName] = fns.filter((opt) => opt.type !== 'once');\n }\n on(eventName, fn) {\n this._addListener(eventName, 'on', fn);\n this._clearCache(eventName);\n }\n once(eventName, fn) {\n this._addListener(eventName, 'once', fn);\n this._clearCache(eventName);\n }\n off(eventName, fn) {\n const fns = this.listener[eventName];\n if (!fns) {\n return;\n }\n if (fn) {\n for (let i = 0; i < fns.length;) {\n if (fns[i].fn === fn) {\n fns.splice(i, 1);\n i--;\n }\n i++;\n }\n }\n else {\n delete this.listener[eventName];\n }\n }\n _clearCache(eventName) {\n for (let index = 0; index < this.emitCache.length; index++) {\n const cache = this.emitCache[index];\n const _name = eventName\n ? cache.eventName === eventName\n ? eventName\n : null\n : cache.eventName;\n if (!_name)\n continue;\n const location = this.emit.apply(this, [_name, ...cache.args]);\n if (typeof location === 'number') {\n this.emitCache.pop();\n continue;\n }\n this.emitCache.splice(index, 1);\n index--;\n }\n }\n _addListener(eventName, type, fn) {\n (this.listener[eventName] || (this.listener[eventName] = [])).push({\n fn,\n type,\n });\n }\n}\n\nconst PAGE_HOOKS = [\n ON_INIT,\n ON_LOAD,\n ON_SHOW,\n ON_HIDE,\n ON_UNLOAD,\n ON_BACK_PRESS,\n ON_PAGE_SCROLL,\n ON_TAB_ITEM_TAP,\n ON_REACH_BOTTOM,\n ON_PULL_DOWN_REFRESH,\n ON_SHARE_TIMELINE,\n ON_SHARE_APP_MESSAGE,\n ON_SHARE_CHAT,\n ON_ADD_TO_FAVORITES,\n ON_SAVE_EXIT_STATE,\n ON_NAVIGATION_BAR_BUTTON_TAP,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED,\n];\nfunction isRootImmediateHook(name) {\n const PAGE_SYNC_HOOKS = [ON_LOAD, ON_SHOW];\n return PAGE_SYNC_HOOKS.indexOf(name) > -1;\n}\n// isRootImmediateHookX deprecated\nfunction isRootHook(name) {\n return PAGE_HOOKS.indexOf(name) > -1;\n}\nconst UniLifecycleHooks = [\n ON_SHOW,\n ON_HIDE,\n ON_LAUNCH,\n ON_ERROR,\n ON_THEME_CHANGE,\n ON_PAGE_NOT_FOUND,\n ON_UNHANDLE_REJECTION,\n ON_EXIT,\n ON_INIT,\n ON_LOAD,\n ON_READY,\n ON_UNLOAD,\n ON_RESIZE,\n ON_BACK_PRESS,\n ON_PAGE_SCROLL,\n ON_TAB_ITEM_TAP,\n ON_REACH_BOTTOM,\n ON_PULL_DOWN_REFRESH,\n ON_SHARE_TIMELINE,\n ON_ADD_TO_FAVORITES,\n ON_SHARE_APP_MESSAGE,\n ON_SHARE_CHAT,\n ON_SAVE_EXIT_STATE,\n ON_NAVIGATION_BAR_BUTTON_TAP,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED,\n];\nconst MINI_PROGRAM_PAGE_RUNTIME_HOOKS = /*#__PURE__*/ (() => {\n return {\n onPageScroll: 1,\n onShareAppMessage: 1 << 1,\n onShareTimeline: 1 << 2,\n };\n})();\nfunction isUniLifecycleHook(name, value, checkType = true) {\n // 检查类型\n if (checkType && !isFunction(value)) {\n return false;\n }\n if (UniLifecycleHooks.indexOf(name) > -1) {\n // 已预定义\n return true;\n }\n else if (name.indexOf('on') === 0) {\n // 以 on 开头\n return true;\n }\n return false;\n}\n\nlet vueApp;\nconst createVueAppHooks = [];\n/**\n * 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑\n */\nfunction onCreateVueApp(hook) {\n // TODO 每个 nvue 页面都会触发\n if (vueApp) {\n return hook(vueApp);\n }\n createVueAppHooks.push(hook);\n}\nfunction invokeCreateVueAppHook(app) {\n vueApp = app;\n createVueAppHooks.forEach((hook) => hook(app));\n}\nconst invokeCreateErrorHandler = once((app, createErrorHandler) => {\n // 不再判断开发者是否监听了onError,直接返回 createErrorHandler,内部 errorHandler 会调用开发者自定义的 errorHandler,以及判断开发者是否监听了onError\n return createErrorHandler(app);\n});\n\nconst E = function () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n};\nE.prototype = {\n _id: 1,\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx,\n _id: this._id,\n });\n return this._id++;\n },\n once: function (name, callback, ctx) {\n var self = this;\n function listener() {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n }\n listener._ = callback;\n return this.on(name, listener, ctx);\n },\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n return this;\n },\n off: function (name, event) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n if (evts && event) {\n for (var i = evts.length - 1; i >= 0; i--) {\n if (evts[i].fn === event ||\n evts[i].fn._ === event ||\n evts[i]._id === event) {\n evts.splice(i, 1);\n break;\n }\n }\n liveEvents = evts;\n }\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n liveEvents.length ? (e[name] = liveEvents) : delete e[name];\n return this;\n },\n};\nvar E$1 = E;\n\nconst borderStyles = {\n black: 'rgba(0,0,0,0.4)',\n white: 'rgba(255,255,255,0.4)',\n};\nfunction normalizeTabBarStyles(borderStyle) {\n if (borderStyle && borderStyle in borderStyles) {\n return borderStyles[borderStyle];\n }\n return borderStyle;\n}\nfunction normalizeTitleColor(titleColor) {\n return titleColor === 'black' ? '#000000' : '#ffffff';\n}\nfunction resolveStringStyleItem(modeStyle, styleItem, key) {\n if (isString(styleItem) && styleItem.startsWith('@')) {\n const _key = styleItem.replace('@', '');\n let _styleItem = modeStyle[_key] || styleItem;\n switch (key) {\n case 'titleColor':\n _styleItem = normalizeTitleColor(_styleItem);\n break;\n case 'borderStyle':\n _styleItem = normalizeTabBarStyles(_styleItem);\n break;\n }\n return _styleItem;\n }\n return styleItem;\n}\nfunction normalizeStyles(pageStyle, themeConfig = {}, mode = 'light') {\n const modeStyle = themeConfig[mode];\n const styles = {};\n if (typeof modeStyle === 'undefined' || !pageStyle)\n return pageStyle;\n Object.keys(pageStyle).forEach((key) => {\n const styleItem = pageStyle[key]; // Object Array String\n const parseStyleItem = () => {\n if (isPlainObject(styleItem))\n return normalizeStyles(styleItem, themeConfig, mode);\n if (isArray(styleItem))\n return styleItem.map((item) => {\n if (isPlainObject(item))\n return normalizeStyles(item, themeConfig, mode);\n return resolveStringStyleItem(modeStyle, item);\n });\n return resolveStringStyleItem(modeStyle, styleItem, key);\n };\n styles[key] = parseStyleItem();\n });\n return styles;\n}\n\nfunction getEnvLocale() {\n const { env } = process;\n const lang = env.LC_ALL || env.LC_MESSAGES || env.LANG || env.LANGUAGE;\n return (lang && lang.replace(/[.:].*/, '')) || 'en';\n}\n\nconst isStringIntegerKey = (key) => typeof key === 'string' &&\n key !== 'NaN' &&\n key[0] !== '-' &&\n '' + parseInt(key, 10) === key;\nconst isNumberIntegerKey = (key) => typeof key === 'number' &&\n !isNaN(key) &&\n key >= 0 &&\n parseInt(key + '', 10) === key;\n/**\n * 用于替代@vue/shared的isIntegerKey,原始方法在鸿蒙arkts中会引发bug。根本原因是arkts的数组的key是数字而不是字符串。\n * 目前这个方法使用的地方都和数组有关,切记不能挪作他用。\n * @param key\n * @returns\n */\nconst isIntegerKey = (key) => isNumberIntegerKey(key) || isStringIntegerKey(key);\n\nexport { ACTION_TYPE_ADD_EVENT, ACTION_TYPE_ADD_WXS_EVENT, ACTION_TYPE_CREATE, ACTION_TYPE_EVENT, ACTION_TYPE_INSERT, ACTION_TYPE_PAGE_CREATE, ACTION_TYPE_PAGE_CREATED, ACTION_TYPE_PAGE_SCROLL, ACTION_TYPE_REMOVE, ACTION_TYPE_REMOVE_ATTRIBUTE, ACTION_TYPE_REMOVE_EVENT, ACTION_TYPE_SET_ATTRIBUTE, ACTION_TYPE_SET_TEXT, ATTR_CHANGE_PREFIX, ATTR_CLASS, ATTR_INNER_HTML, ATTR_STYLE, ATTR_TEXT_CONTENT, ATTR_V_OWNER_ID, ATTR_V_RENDERJS, ATTR_V_SHOW, BACKGROUND_COLOR, BUILT_IN_TAGS, BUILT_IN_TAG_NAMES, COMPONENT_NAME_PREFIX, COMPONENT_PREFIX, COMPONENT_SELECTOR_PREFIX, DATA_RE, E$1 as Emitter, EventChannel, EventModifierFlags, I18N_JSON_DELIMITERS, JSON_PROTOCOL, LINEFEED, MINI_PROGRAM_PAGE_RUNTIME_HOOKS, NAVBAR_HEIGHT, NODE_TYPE_COMMENT, NODE_TYPE_ELEMENT, NODE_TYPE_PAGE, NODE_TYPE_TEXT, NVUE_BUILT_IN_TAGS, NVUE_U_BUILT_IN_TAGS, OFF_HOST_THEME_CHANGE, OFF_THEME_CHANGE, ON_ADD_TO_FAVORITES, ON_APP_ENTER_BACKGROUND, ON_APP_ENTER_FOREGROUND, ON_BACK_PRESS, ON_ERROR, ON_EXIT, ON_HIDE, ON_HOST_THEME_CHANGE, ON_INIT, ON_KEYBOARD_HEIGHT_CHANGE, ON_LAUNCH, ON_LOAD, ON_NAVIGATION_BAR_BUTTON_TAP, ON_NAVIGATION_BAR_CHANGE, ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED, ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED, ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED, ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED, ON_PAGE_NOT_FOUND, ON_PAGE_SCROLL, ON_PULL_DOWN_REFRESH, ON_REACH_BOTTOM, ON_REACH_BOTTOM_DISTANCE, ON_READY, ON_RESIZE, ON_SAVE_EXIT_STATE, ON_SHARE_APP_MESSAGE, ON_SHARE_CHAT, ON_SHARE_TIMELINE, ON_SHOW, ON_TAB_ITEM_TAP, ON_THEME_CHANGE, ON_UNHANDLE_REJECTION, ON_UNLOAD, ON_WEB_INVOKE_APP_SERVICE, ON_WXS_INVOKE_CALL_METHOD, PLUS_RE, PRIMARY_COLOR, RENDERJS_MODULES, RESPONSIVE_MIN_WIDTH, SCHEME_RE, SELECTED_COLOR, SLOT_DEFAULT_NAME, TABBAR_HEIGHT, TAGS, UNI_SSR, UNI_SSR_DATA, UNI_SSR_GLOBAL_DATA, UNI_SSR_STORE, UNI_SSR_TITLE, UNI_STORAGE_LOCALE, UNI_UI_CONFLICT_TAGS, UVUE_BUILT_IN_TAGS, UVUE_HARMONY_BUILT_IN_TAGS, UVUE_IOS_BUILT_IN_TAGS, UVUE_WEB_BUILT_IN_TAGS, UniBaseNode, UniCommentNode, UniElement, UniEvent, UniInputElement, UniLifecycleHooks, UniNode, UniTextAreaElement, UniTextNode, VIRTUAL_HOST_CLASS, VIRTUAL_HOST_HIDDEN, VIRTUAL_HOST_ID, VIRTUAL_HOST_STYLE, WEB_INVOKE_APPSERVICE, WXS_MODULES, WXS_PROTOCOL, addFont, addLeadingSlash, borderStyles, cache, cacheStringFunction, callOptions, createIsCustomElement, createRpx2Unit, createUniEvent, customizeEvent, debounce, decode, decodedQuery, defaultMiniProgramRpx2Unit, defaultNVueRpx2Unit, defaultRpx2Unit, dynamicSlotName, forcePatchProp, formatDateTime, formatLog, getCustomDataset, getEnvLocale, getGlobal, getLen, getValueByDataPath, initCustomDatasetOnce, invokeArrayFns, invokeCreateErrorHandler, invokeCreateVueAppHook, isAppHarmonyUVueNativeTag, isAppIOSUVueNativeTag, isAppNVueNativeTag, isAppNativeTag, isAppUVueBuiltInEasyComponent, isAppUVueNativeTag, isAppVoidTag, isBuiltInComponent, isComponentInternalInstance, isComponentTag, isH5CustomElement, isH5NativeTag, isIntegerKey, isMiniProgramNativeTag, isMiniProgramUVueNativeTag, isRootHook, isRootImmediateHook, isUniLifecycleHook, isUniXElement, normalizeClass, normalizeDataset, normalizeEventType, normalizeProps, normalizeStyle, normalizeStyles, normalizeTabBarStyles, normalizeTarget, normalizeTitleColor, onCreateVueApp, once, parseEventName, parseNVueDataset, parseQuery, parseUrl, passive, plusReady, removeLeadingSlash, resolveComponentInstance, resolveOwnerEl, resolveOwnerVm, sanitise, scrollTo, sortObject, stringifyQuery, updateElementStyle };\n","import { isRootHook, getValueByDataPath, isUniLifecycleHook, ON_ERROR, UniLifecycleHooks, invokeCreateErrorHandler, dynamicSlotName } from '@dcloudio/uni-shared';\nimport { NOOP, extend, isSymbol, isObject, def, hasChanged, isFunction, isArray, isPromise, camelize, capitalize, EMPTY_OBJ, remove, toHandlerKey, hasOwn, hyphenate, isReservedProp, toRawType, isString, normalizeClass, normalizeStyle, isOn, toTypeString, isMap, isIntegerKey, isSet, isPlainObject, makeMap, invokeArrayFns, isBuiltInDirective, looseToNumber, NO, EMPTY_ARR, isModelListener, toNumber, toDisplayString } from '@vue/shared';\nexport { EMPTY_OBJ, camelize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\n/**\n* @dcloudio/uni-mp-vue v3.4.21\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n\nfunction warn$2(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$2(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this._active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n this._active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$2(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeEffect;\nclass ReactiveEffect {\n constructor(fn, trigger, scheduler, scope) {\n this.fn = fn;\n this.trigger = trigger;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n /**\n * @internal\n */\n this._dirtyLevel = 4;\n /**\n * @internal\n */\n this._trackId = 0;\n /**\n * @internal\n */\n this._runnings = 0;\n /**\n * @internal\n */\n this._shouldSchedule = false;\n /**\n * @internal\n */\n this._depsLength = 0;\n recordEffectScope(this, scope);\n }\n get dirty() {\n if (this._dirtyLevel === 2 || this._dirtyLevel === 3) {\n this._dirtyLevel = 1;\n pauseTracking();\n for (let i = 0; i < this._depsLength; i++) {\n const dep = this.deps[i];\n if (dep.computed) {\n triggerComputed(dep.computed);\n if (this._dirtyLevel >= 4) {\n break;\n }\n }\n }\n if (this._dirtyLevel === 1) {\n this._dirtyLevel = 0;\n }\n resetTracking();\n }\n return this._dirtyLevel >= 4;\n }\n set dirty(v) {\n this._dirtyLevel = v ? 4 : 0;\n }\n run() {\n this._dirtyLevel = 0;\n if (!this.active) {\n return this.fn();\n }\n let lastShouldTrack = shouldTrack;\n let lastEffect = activeEffect;\n try {\n shouldTrack = true;\n activeEffect = this;\n this._runnings++;\n preCleanupEffect(this);\n return this.fn();\n } finally {\n postCleanupEffect(this);\n this._runnings--;\n activeEffect = lastEffect;\n shouldTrack = lastShouldTrack;\n }\n }\n stop() {\n var _a;\n if (this.active) {\n preCleanupEffect(this);\n postCleanupEffect(this);\n (_a = this.onStop) == null ? void 0 : _a.call(this);\n this.active = false;\n }\n }\n}\nfunction triggerComputed(computed) {\n return computed.value;\n}\nfunction preCleanupEffect(effect2) {\n effect2._trackId++;\n effect2._depsLength = 0;\n}\nfunction postCleanupEffect(effect2) {\n if (effect2.deps.length > effect2._depsLength) {\n for (let i = effect2._depsLength; i < effect2.deps.length; i++) {\n cleanupDepEffect(effect2.deps[i], effect2);\n }\n effect2.deps.length = effect2._depsLength;\n }\n}\nfunction cleanupDepEffect(dep, effect2) {\n const trackId = dep.get(effect2);\n if (trackId !== void 0 && effect2._trackId !== trackId) {\n dep.delete(effect2);\n if (dep.size === 0) {\n dep.cleanup();\n }\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn, NOOP, () => {\n if (_effect.dirty) {\n _effect.run();\n }\n });\n if (options) {\n extend(_effect, options);\n if (options.scope)\n recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nlet pauseScheduleStack = 0;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction pauseScheduling() {\n pauseScheduleStack++;\n}\nfunction resetScheduling() {\n pauseScheduleStack--;\n while (!pauseScheduleStack && queueEffectSchedulers.length) {\n queueEffectSchedulers.shift()();\n }\n}\nfunction trackEffect(effect2, dep, debuggerEventExtraInfo) {\n var _a;\n if (dep.get(effect2) !== effect2._trackId) {\n dep.set(effect2, effect2._trackId);\n const oldDep = effect2.deps[effect2._depsLength];\n if (oldDep !== dep) {\n if (oldDep) {\n cleanupDepEffect(oldDep, effect2);\n }\n effect2.deps[effect2._depsLength++] = dep;\n } else {\n effect2._depsLength++;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n }\n}\nconst queueEffectSchedulers = [];\nfunction triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {\n var _a;\n pauseScheduling();\n for (const effect2 of dep.keys()) {\n let tracking;\n if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0);\n effect2._dirtyLevel = dirtyLevel;\n }\n if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n effect2.trigger();\n if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) {\n effect2._shouldSchedule = false;\n if (effect2.scheduler) {\n queueEffectSchedulers.push(effect2.scheduler);\n }\n }\n }\n }\n resetScheduling();\n}\n\nconst createDep = (cleanup, computed) => {\n const dep = /* @__PURE__ */ new Map();\n dep.cleanup = cleanup;\n dep.computed = computed;\n return dep;\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = createDep(() => depsMap.delete(key)));\n }\n trackEffect(\n activeEffect,\n dep,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key\n } : void 0\n );\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n return;\n }\n let deps = [];\n if (type === \"clear\") {\n deps = [...depsMap.values()];\n } else if (key === \"length\" && isArray(target)) {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || !isSymbol(key2) && key2 >= newLength) {\n deps.push(dep);\n }\n });\n } else {\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n switch (type) {\n case \"add\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isIntegerKey(key)) {\n deps.push(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n pauseScheduling();\n for (const dep of deps) {\n if (dep) {\n triggerEffects(\n dep,\n 4,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n } : void 0\n );\n }\n }\n resetScheduling();\n}\nfunction getDepFromReactive(object, key) {\n var _a;\n return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\", i + \"\");\n }\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n return arr[key](...args.map(toRaw));\n } else {\n return res;\n }\n };\n });\n [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n pauseTracking();\n pauseScheduling();\n const res = toRaw(this)[key].apply(this, args);\n resetScheduling();\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction hasOwnProperty(key) {\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the reciever is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n return false;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$2(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$2(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(\n true\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly = false, isShallow = false) {\n target = target[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has: has2 } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has2.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has2.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n}\nfunction has(key, isReadonly = false) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\"];\n !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n}\nfunction set$1(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2 ? get2.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\", void 0, void 0, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn$2(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations2 = {\n get(key) {\n return get(this, key);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations2 = {\n get(key) {\n return get(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n mutableInstrumentations2[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations2[method] = createIterableMethod(\n method,\n true,\n true\n );\n });\n return [\n mutableInstrumentations2,\n readonlyInstrumentations2,\n shallowInstrumentations2,\n shallowReadonlyInstrumentations2\n ];\n}\nconst [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has2.call(target, rawKey)) {\n const type = toRawType(target);\n warn$2(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$2(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nconst COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this.getter = getter;\n this._setter = _setter;\n this.dep = void 0;\n this.__v_isRef = true;\n this[\"__v_isReadonly\"] = false;\n this.effect = new ReactiveEffect(\n () => getter(this._value),\n () => triggerRefValue(\n this,\n this.effect._dirtyLevel === 2 ? 2 : 3\n )\n );\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\"] = isReadonly;\n }\n get value() {\n const self = toRaw(this);\n if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) {\n triggerRefValue(self, 4);\n }\n trackRefValue(self);\n if (self.effect._dirtyLevel >= 2) {\n if (!!(process.env.NODE_ENV !== \"production\") && this._warnRecursive) {\n warn$2(COMPUTED_SIDE_EFFECT_WARN, `\n\ngetter: `, this.getter);\n }\n triggerRefValue(self, 2);\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x\n get _dirty() {\n return this.effect.dirty;\n }\n set _dirty(v) {\n this.effect.dirty = v;\n }\n // #endregion\n}\nfunction computed$1(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n warn$2(\"Write operation failed: computed value is readonly\");\n } : NOOP;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nfunction trackRefValue(ref2) {\n var _a;\n if (shouldTrack && activeEffect) {\n ref2 = toRaw(ref2);\n trackEffect(\n activeEffect,\n (_a = ref2.dep) != null ? _a : ref2.dep = createDep(\n () => ref2.dep = void 0,\n ref2 instanceof ComputedRefImpl ? ref2 : void 0\n ),\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"get\",\n key: \"value\"\n } : void 0\n );\n }\n}\nfunction triggerRefValue(ref2, dirtyLevel = 4, newVal) {\n ref2 = toRaw(ref2);\n const dep = ref2.dep;\n if (dep) {\n triggerEffects(\n dep,\n dirtyLevel,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: newVal\n } : void 0\n );\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = void 0;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, 4, newVal);\n }\n }\n}\nfunction triggerRef(ref2) {\n triggerRefValue(ref2, 4, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = void 0;\n this.__v_isRef = true;\n const { get, set } = factory(\n () => trackRefValue(this),\n () => triggerRefValue(this)\n );\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn$2(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this.__v_isRef = true;\n this.__v_isReadonly = true;\n }\n get value() {\n return this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn$1(msg, ...args) {\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\n\nconst ErrorTypeStrings = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core .\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings[type] || type : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n callWithErrorHandling(\n appErrorHandler,\n null,\n 10,\n [err, exposedInstance, errorInfo]\n );\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings[type] || type;\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n console.error(err);\n } else {\n console.error(err);\n }\n } else {\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick$1(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.pre) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!queue.length || !queue.includes(\n job,\n isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n )) {\n if (job.id == null) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction hasQueueJob(job) {\n return queue.indexOf(job) > -1;\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs || !activePostFlushCbs.includes(\n cb,\n cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n )) {\n pendingPostFlushCbs.push(cb);\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n queue.sort(comparator);\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n callWithErrorHandling(job, null, 14);\n }\n }\n } finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n } else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n } else {\n seen.set(fn, count + 1);\n }\n }\n}\n\nlet devtools;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools) {\n devtools.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook(hook, target) {\n var _a, _b;\n devtools = hook;\n if (devtools) {\n devtools.enabled = true;\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook(newHook, target);\n });\n setTimeout(() => {\n if (!devtools) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools && typeof devtools.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n // fixed by xxxxxx\n // 为 0 是 App,无 parent 是 Page 指向 App\n component.uid === 0 ? void 0 : component.parent ? component.parent.uid : 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nfunction emit(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const {\n emitsOptions,\n propsOptions: [propsOptions]\n } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) && true) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn$1(\n `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(event)}\" prop.`\n );\n }\n } else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn$1(\n `Invalid event arguments: event validation failed for event \"${event}\".`\n );\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith(\"update:\");\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n }\n if (number) {\n args = rawArgs.map(looseToNumber);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn$1(\n `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n instance,\n instance.type\n )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n event\n )}\" instead of \"${event}\".`\n );\n }\n }\n let handlerName;\n let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n props[handlerName = toHandlerKey(camelize(event))];\n if (!handler && isModelListener) {\n handler = props[handlerName = toHandlerKey(hyphenate(event))];\n }\n if (handler) {\n callWithAsyncErrorHandling(\n handler,\n instance,\n 6,\n args\n );\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n } else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(\n onceHandler,\n instance,\n 6,\n args\n );\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== void 0) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw2) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach((key) => normalized[key] = null);\n } else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, \"\");\n return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx)\n return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nfunction markAttrsAccessed() {\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n );\n }\n return ctx;\n }\n};\n\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n );\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n );\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n warn$1(\n `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n );\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, {\n immediate,\n deep,\n flush,\n once,\n onTrack,\n onTrigger\n} = EMPTY_OBJ) {\n if (cb && once) {\n const _cb = cb;\n cb = (...args) => {\n _cb(...args);\n unwatch();\n };\n }\n if (!!(process.env.NODE_ENV !== \"production\") && deep !== void 0 && typeof deep === \"number\") {\n warn$1(\n `watch() \"deep\" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.`\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n if (immediate !== void 0) {\n warn$1(\n `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (deep !== void 0) {\n warn$1(\n `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (once !== void 0) {\n warn$1(\n `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n }\n const warnInvalidSource = (s) => {\n warn$1(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const instance = currentInstance;\n const reactiveGetter = (source2) => deep === true ? source2 : (\n // for deep: false, only traverse root-level properties\n traverse(source2, deep === false ? 1 : void 0)\n );\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2);\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = () => callWithErrorHandling(source, instance, 2);\n } else {\n getter = () => {\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(\n source,\n instance,\n 3,\n [onCleanup]\n );\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4);\n cleanup = effect.onStop = void 0;\n };\n };\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active || !effect.dirty) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) {\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n } else {\n effect.run();\n }\n };\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === \"sync\") {\n scheduler = job;\n } else if (flush === \"post\") {\n scheduler = () => queuePostRenderEffect$1(job, instance && instance.suspense);\n } else {\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, NOOP, scheduler);\n const scope = getCurrentScope();\n const unwatch = () => {\n effect.stop();\n if (scope) {\n remove(scope.effects, effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n if (cb) {\n if (immediate) {\n job();\n } else {\n oldValue = effect.run();\n }\n } else if (flush === \"post\") {\n queuePostRenderEffect$1(\n effect.run.bind(effect),\n instance && instance.suspense\n );\n } else {\n effect.run();\n }\n return unwatch;\n}\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options = value;\n }\n const reset = setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n reset();\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split(\".\");\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, depth, currentDepth = 0, seen) {\n if (!isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n if (depth && depth > 0) {\n if (currentDepth >= depth) {\n return value;\n }\n currentDepth++;\n }\n seen = seen || /* @__PURE__ */ new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isRef(value)) {\n traverse(value.value, depth, currentDepth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, currentDepth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, currentDepth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, currentDepth, seen);\n }\n }\n return value;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getExposeProxy(currentRenderingInstance) || currentRenderingInstance.proxy;\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\n\nfunction createAppContext() {\n return {\n app: null,\n config: {\n isNativeTag: NO,\n performance: false,\n globalProperties: {},\n optionMergeStrategies: {},\n errorHandler: void 0,\n warnHandler: void 0,\n compilerOptions: {}\n },\n mixins: [],\n components: {},\n directives: {},\n provides: /* @__PURE__ */ Object.create(null),\n optionsCache: /* @__PURE__ */ new WeakMap(),\n propsCache: /* @__PURE__ */ new WeakMap(),\n emitsCache: /* @__PURE__ */ new WeakMap()\n };\n}\nlet uid$1 = 0;\nfunction createAppAPI(render, hydrate) {\n return function createApp(rootComponent, rootProps = null) {\n if (!isFunction(rootComponent)) {\n rootComponent = extend({}, rootComponent);\n }\n if (rootProps != null && !isObject(rootProps)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`root props passed to app.mount() must be an object.`);\n rootProps = null;\n }\n const context = createAppContext();\n const installedPlugins = /* @__PURE__ */ new WeakSet();\n const app = context.app = {\n _uid: uid$1++,\n _component: rootComponent,\n _props: rootProps,\n _container: null,\n _context: context,\n _instance: null,\n version,\n get config() {\n return context.config;\n },\n set config(v) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `app.config cannot be replaced. Modify individual options instead.`\n );\n }\n },\n use(plugin, ...options) {\n if (installedPlugins.has(plugin)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`Plugin has already been applied to target app.`);\n } else if (plugin && isFunction(plugin.install)) {\n installedPlugins.add(plugin);\n plugin.install(app, ...options);\n } else if (isFunction(plugin)) {\n installedPlugins.add(plugin);\n plugin(app, ...options);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `A plugin must either be a function or an object with an \"install\" function.`\n );\n }\n return app;\n },\n mixin(mixin) {\n if (__VUE_OPTIONS_API__) {\n if (!context.mixins.includes(mixin)) {\n context.mixins.push(mixin);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n \"Mixin has already been applied to target app\" + (mixin.name ? `: ${mixin.name}` : \"\")\n );\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Mixins are only available in builds supporting Options API\");\n }\n return app;\n },\n component(name, component) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateComponentName(name, context.config);\n }\n if (!component) {\n return context.components[name];\n }\n if (!!(process.env.NODE_ENV !== \"production\") && context.components[name]) {\n warn$1(`Component \"${name}\" has already been registered in target app.`);\n }\n context.components[name] = component;\n return app;\n },\n directive(name, directive) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateDirectiveName(name);\n }\n if (!directive) {\n return context.directives[name];\n }\n if (!!(process.env.NODE_ENV !== \"production\") && context.directives[name]) {\n warn$1(`Directive \"${name}\" has already been registered in target app.`);\n }\n context.directives[name] = directive;\n return app;\n },\n // fixed by xxxxxx\n mount() {\n },\n // fixed by xxxxxx\n unmount() {\n },\n provide(key, value) {\n if (!!(process.env.NODE_ENV !== \"production\") && key in context.provides) {\n warn$1(\n `App already provides property with key \"${String(key)}\". It will be overwritten with the new value.`\n );\n }\n context.provides[key] = value;\n return app;\n },\n runWithContext(fn) {\n const lastApp = currentApp;\n currentApp = app;\n try {\n return fn();\n } finally {\n currentApp = lastApp;\n }\n }\n };\n return app;\n };\n}\nlet currentApp = null;\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`provide() can only be used inside setup().`);\n }\n } else {\n let provides = currentInstance.provides;\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n provides[key] = value;\n if (currentInstance.type.mpType === \"app\") {\n currentInstance.appContext.app.provide(key, value);\n }\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n const instance = currentInstance || currentRenderingInstance;\n if (instance || currentApp) {\n const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides;\n if (provides && key in provides) {\n return provides[key];\n } else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`injection \"${String(key)}\" not found.`);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`inject() can only be used inside setup() or functional components.`);\n }\n}\nfunction hasInjectionContext() {\n return !!(currentInstance || currentRenderingInstance || currentApp);\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8326: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n if (isRootHook(type)) {\n target = target.root;\n }\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n if (target.isUnmounted) {\n return;\n }\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(\n (ErrorTypeStrings[type] || type.replace(/^on/, \"\")).replace(/ hook$/, \"\")\n );\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (``)\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (\n // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, (...args) => hook(...args), target)\n);\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n \"rtg\"\n);\nconst onRenderTracked = createHook(\n \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i)\n return null;\n if (isStatefulComponent(i))\n return getExposeProxy(i) || i.proxy;\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n // fixed by xxxxxx vue-i18n 在 dev 模式,访问了 $el,故模拟一个假的\n // $el: i => i.vnode.el,\n $el: (i) => i.__$el || (i.__$el = {}),\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n i.effect.dirty = true;\n queueJob(i.update);\n }),\n // $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy!)),// fixed by xxxxxx\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance, \"get\", key);\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate \r\n\r\n","import Component from 'D:/项目/tk-mini-program/components/Advertisement/Advertisement.vue'\nwx.createComponent(Component)"],"names":[],"mappings":";;AAKI,MAAK,YAAU;AAAA,EACX,OAAO;AACH,WAAO;AAAA,MACH,OAAO;AAAA,IACX;AAAA,EACH;AAAA,EACD,SAAS;AAAA,EAER;AAAA,EACD,SAAS;AAAA;AAAA,EAET;AACJ;;;;;AChBJ,GAAG,gBAAgB,SAAS;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/components/contentList/contentList.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/components/contentList/contentList.js.map new file mode 100644 index 0000000..102061b --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/components/contentList/contentList.js.map @@ -0,0 +1 @@ +{"version":3,"file":"contentList.js","sources":["components/contentList/contentList.vue","../../HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDov6aG555uuL3RrLW1pbmktcHJvZ3JhbS9jb21wb25lbnRzL2NvbnRlbnRMaXN0L2NvbnRlbnRMaXN0LnZ1ZQ"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n","import Component from 'D:/项目/tk-mini-program/components/contentList/contentList.vue'\nwx.createComponent(Component)"],"names":[],"mappings":";;;AAyBA,MAAK,YAAU;AAAA,EACb,OAAO;AACL,WAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA;AAAA,MAER,MAAM;AAAA,QACJ;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,MACF;AAAA;AAAA;EAGJ;AAAA,EACD,SAAS;AAAA,EAER;AAAA,EACD,SAAS;AAAA;AAAA,EAER;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzIA,GAAG,gBAAgB,SAAS;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/components/tabBar/tabBar.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/components/tabBar/tabBar.js.map new file mode 100644 index 0000000..3046f0e --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/components/tabBar/tabBar.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tabBar.js","sources":["components/tabBar/tabBar.vue","../../HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDov6aG555uuL3RrLW1pbmktcHJvZ3JhbS9jb21wb25lbnRzL3RhYkJhci90YWJCYXIudnVl"],"sourcesContent":["\r\n\r\n\r\n\r\n","import Component from 'D:/项目/tk-mini-program/components/tabBar/tabBar.vue'\nwx.createComponent(Component)"],"names":["ref","uni"],"mappings":";;;;;;;;;;;;AAsCC,QAAI,mBAAmBA,kBAAI,KAAK;AA+ChCC,kBAAAA,MAAI,cAAc;AAAA,MACf,SAAS,SAAU,KAAK;AAExBA,sBAAY,MAAA,MAAA,OAAA,sCAAA,MAAK,IAAI,UAAU;AAC5B,YAAI,IAAI,SAAS,MAAM,IAAI;AACxBA,8BAAA,MAAA,OAAA,sCAAY,YAAW,IAAI,SAAS,GAAG;AAAA,QACzC;AAAA,MACH;AAAA,IACL,CAAE;AAcD,aAAS,WAAW,MAAM,OAAO;AAChC,UAAI,UAAU,GAAG;AAGhB,0BAAmB;AACnB;AAAA,MACH,WAAa,UAAU,GAAG;AACvBA,sBAAAA,MAAI,WAAW;AAAA,UACd,KAAK;AAAA,QACT,CAAI;AAAA,MACJ,WAAa,UAAU,GAAG;AACvBA,sBAAAA,MAAI,WAAW;AAAA,UACd,KAAK;AAAA,QACT,CAAI;AAAA,MACJ,OAAS;AACNA,sBAAAA,MAAI,UAAU;AAAA,UACb,KAAK,KAAK;AAAA,QACd,CAAI;AAAA,MACD;AAAA,IAED;AACD,UAAM,eAAeD,cAAAA,IAAK;AAE1B,aAAS,oBAAoB;AAC5B,mBAAa,MAAM,KAAM;AAAA,IACzB;AAMD,UAAM,iBAAiB,MAAM;AAC5B,aAAO;AAAA,IACP;;;;;;;;;;;;;;;;;;;;;;;AC3IF,GAAG,gBAAgB,SAAS;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/components/topNavigation/topNavigation.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/components/topNavigation/topNavigation.js.map new file mode 100644 index 0000000..9735e8e --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/components/topNavigation/topNavigation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"topNavigation.js","sources":["components/topNavigation/topNavigation.vue","../../HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDov6aG555uuL3RrLW1pbmktcHJvZ3JhbS9jb21wb25lbnRzL3RvcE5hdmlnYXRpb24vdG9wTmF2aWdhdGlvbi52dWU"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n","import Component from 'D:/项目/tk-mini-program/components/topNavigation/topNavigation.vue'\nwx.createComponent(Component)"],"names":[],"mappings":";;;AAoBA,MAAK,YAAU;AAAA,EACb,OAAO;AACL,WAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA;EAEX;AAAA,EACD,SAAS;AAAA,EAER;AAAA,EACD,SAAS;AAAA,IACP,aAAa;AACX,WAAK,SAAS;AACd,WAAK,MAAM,YAAY;AAAA,IACxB;AAAA,IACD,oBAAoB;AAClB,WAAK,SAAS;AACd,WAAK,MAAM,mBAAmB;AAAA,IAC/B;AAAA,IACD,YAAY;AACV,WAAK,MAAM,WAAW;AAAA,IACvB;AAAA,IACD,SAAS;AACP,WAAK,MAAM,QAAQ;AAAA,IACpB;AAAA,EACF;AACH;;;;;;;;;;;;;;;AC7CA,GAAG,gBAAgB,SAAS;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/Home/Home.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/Home/Home.js.map new file mode 100644 index 0000000..f06bbb7 --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/Home/Home.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Home.js","sources":["pages/Home/Home.vue","../../HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvSG9tZS9Ib21lLnZ1ZQ"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'D:/项目/tk-mini-program/pages/Home/Home.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;AAmBA,MAAO,gBAAe,MAAW;AACjC,MAAO,gBAAe,MAAW;AAGjC,MAAK,YAAU;AAAA,EACb,OAAO;AACL,WAAO;EACR;AAAA,EACD,SAAS;AAAA,EAER;AAAA,EACD,SAAS;AAAA;AAAA,EAER;AAAA,EACD,YAAY;AAAA,IACV;AAAA,IACA;AAAA,EACD;AACH;;;;;;;;;;;;;;;;;ACpCA,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map new file mode 100644 index 0000000..d4454b7 --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["pages/index/index.vue","../../HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["\r\n\r\n\r\n\r\n\n","import MiniProgramPage from 'D:/项目/tk-mini-program/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;AAUC,MAAK,YAAU;AAAA,EACd,OAAO;AACN,WAAO;AAAA,MACN,OAAO;AAAA,IACR;AAAA,EACA;AAAA,EACD,SAAS;AAAA,EAER;AAAA,EACD,SAAS,CAET;AACD;;;;;;;;ACrBD,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/app.js b/unpackage/dist/dev/mp-weixin/app.js new file mode 100644 index 0000000..15c3cbd --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/app.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); +const common_vendor = require("./common/vendor.js"); +if (!Math) { + "./pages/Home/Home.js"; + "./pages/index/index.js"; +} +const _sfc_main = { + onLaunch: function() { + common_vendor.index.__f__("log", "at App.vue:4", "App Launch"); + }, + onShow: function() { + common_vendor.index.__f__("log", "at App.vue:7", "App Show"); + }, + onHide: function() { + common_vendor.index.__f__("log", "at App.vue:10", "App Hide"); + } +}; +function createApp() { + const app = common_vendor.createSSRApp(_sfc_main); + return { + app + }; +} +createApp().app.mount("#app"); +exports.createApp = createApp; +//# sourceMappingURL=../.sourcemap/mp-weixin/app.js.map diff --git a/unpackage/dist/dev/mp-weixin/app.json b/unpackage/dist/dev/mp-weixin/app.json new file mode 100644 index 0000000..c10f747 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/app.json @@ -0,0 +1,11 @@ +{ + "pages": [ + "pages/Home/Home", + "pages/index/index" + ], + "window": { + "navigationStyle": "custom", + "statusBarBackground": "#ffffff" + }, + "usingComponents": {} +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/app.wxss b/unpackage/dist/dev/mp-weixin/app.wxss new file mode 100644 index 0000000..d4f3237 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/app.wxss @@ -0,0 +1,3 @@ + + /*每个页面公共css */ +page{--status-bar-height:25px;--top-window-height:0px;--window-top:0px;--window-bottom:0px;--window-left:0px;--window-right:0px;--window-magin:0px}[data-c-h="true"]{display: none !important;} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/common/assets.js b/unpackage/dist/dev/mp-weixin/common/assets.js new file mode 100644 index 0000000..4870728 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/common/assets.js @@ -0,0 +1,10 @@ +"use strict"; +const _imports_0$2 = "/static/HomeBackground.png"; +const _imports_0$1 = "/static/logo.png"; +const _imports_0 = "/static/Searching.png"; +const _imports_1 = "/static/female.png"; +exports._imports_0 = _imports_0$2; +exports._imports_0$1 = _imports_0$1; +exports._imports_0$2 = _imports_0; +exports._imports_1 = _imports_1; +//# sourceMappingURL=../../.sourcemap/mp-weixin/common/assets.js.map diff --git a/unpackage/dist/dev/mp-weixin/common/vendor.js b/unpackage/dist/dev/mp-weixin/common/vendor.js new file mode 100644 index 0000000..158b193 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/common/vendor.js @@ -0,0 +1,7911 @@ +"use strict"; +/** +* @vue/shared v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +function makeMap(str, expectsLowerCase) { + const set2 = new Set(str.split(",")); + return expectsLowerCase ? (val) => set2.has(val.toLowerCase()) : (val) => set2.has(val); +} +const EMPTY_OBJ = Object.freeze({}); +const EMPTY_ARR = Object.freeze([]); +const NOOP = () => { +}; +const NO = () => false; +const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +const isModelListener = (key) => key.startsWith("onUpdate:"); +const extend = Object.assign; +const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +const hasOwnProperty$1 = Object.prototype.hasOwnProperty; +const hasOwn = (val, key) => hasOwnProperty$1.call(val, key); +const isArray = Array.isArray; +const isMap = (val) => toTypeString(val) === "[object Map]"; +const isSet = (val) => toTypeString(val) === "[object Set]"; +const isFunction = (val) => typeof val === "function"; +const isString = (val) => typeof val === "string"; +const isSymbol = (val) => typeof val === "symbol"; +const isObject = (val) => val !== null && typeof val === "object"; +const isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +const objectToString = Object.prototype.toString; +const toTypeString = (value) => objectToString.call(value); +const toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +const isPlainObject = (val) => toTypeString(val) === "[object Object]"; +const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +const camelizeRE = /-(\w)/g; +const camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); +}); +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const toHandlerKey = cacheStringFunction((str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; +}); +const hasChanged = (value, oldValue) => !Object.is(value, oldValue); +const invokeArrayFns$1 = (fns, arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](arg); + } +}; +const def = (obj, key, value) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + value + }); +}; +const looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +const toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val); +}; +const replacer = (_key, val) => { + if (val && val.__v_isRef) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce( + (entries, [key, val2], i) => { + entries[stringifySymbol(key, i) + " =>"] = val2; + return entries; + }, + {} + ) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) + }; + } else if (isSymbol(val)) { + return stringifySymbol(val); + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; +const stringifySymbol = (v, i = "") => { + var _a; + return isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v; +}; +const LOCALE_ZH_HANS = "zh-Hans"; +const LOCALE_ZH_HANT = "zh-Hant"; +const LOCALE_EN = "en"; +const LOCALE_FR = "fr"; +const LOCALE_ES = "es"; +function include(str, parts) { + return !!parts.find((part) => str.indexOf(part) !== -1); +} +function startsWith(str, parts) { + return parts.find((part) => str.indexOf(part) === 0); +} +function normalizeLocale(locale, messages) { + if (!locale) { + return; + } + locale = locale.trim().replace(/_/g, "-"); + if (messages && messages[locale]) { + return locale; + } + locale = locale.toLowerCase(); + if (locale === "chinese") { + return LOCALE_ZH_HANS; + } + if (locale.indexOf("zh") === 0) { + if (locale.indexOf("-hans") > -1) { + return LOCALE_ZH_HANS; + } + if (locale.indexOf("-hant") > -1) { + return LOCALE_ZH_HANT; + } + if (include(locale, ["-tw", "-hk", "-mo", "-cht"])) { + return LOCALE_ZH_HANT; + } + return LOCALE_ZH_HANS; + } + let locales = [LOCALE_EN, LOCALE_FR, LOCALE_ES]; + if (messages && Object.keys(messages).length > 0) { + locales = Object.keys(messages); + } + const lang = startsWith(locale, locales); + if (lang) { + return lang; + } +} +const SLOT_DEFAULT_NAME = "d"; +const ON_SHOW = "onShow"; +const ON_HIDE = "onHide"; +const ON_LAUNCH = "onLaunch"; +const ON_ERROR = "onError"; +const ON_THEME_CHANGE = "onThemeChange"; +const ON_PAGE_NOT_FOUND = "onPageNotFound"; +const ON_UNHANDLE_REJECTION = "onUnhandledRejection"; +const ON_EXIT = "onExit"; +const ON_LOAD = "onLoad"; +const ON_READY = "onReady"; +const ON_UNLOAD = "onUnload"; +const ON_INIT = "onInit"; +const ON_SAVE_EXIT_STATE = "onSaveExitState"; +const ON_RESIZE = "onResize"; +const ON_BACK_PRESS = "onBackPress"; +const ON_PAGE_SCROLL = "onPageScroll"; +const ON_TAB_ITEM_TAP = "onTabItemTap"; +const ON_REACH_BOTTOM = "onReachBottom"; +const ON_PULL_DOWN_REFRESH = "onPullDownRefresh"; +const ON_SHARE_TIMELINE = "onShareTimeline"; +const ON_SHARE_CHAT = "onShareChat"; +const ON_ADD_TO_FAVORITES = "onAddToFavorites"; +const ON_SHARE_APP_MESSAGE = "onShareAppMessage"; +const ON_NAVIGATION_BAR_BUTTON_TAP = "onNavigationBarButtonTap"; +const ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED = "onNavigationBarSearchInputClicked"; +const ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED = "onNavigationBarSearchInputChanged"; +const ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED = "onNavigationBarSearchInputConfirmed"; +const ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED = "onNavigationBarSearchInputFocusChanged"; +const VIRTUAL_HOST_STYLE = "virtualHostStyle"; +const VIRTUAL_HOST_CLASS = "virtualHostClass"; +const VIRTUAL_HOST_HIDDEN = "virtualHostHidden"; +const VIRTUAL_HOST_ID = "virtualHostId"; +function hasLeadingSlash(str) { + return str.indexOf("/") === 0; +} +function addLeadingSlash(str) { + return hasLeadingSlash(str) ? str : "/" + str; +} +const invokeArrayFns = (fns, arg) => { + let ret; + for (let i = 0; i < fns.length; i++) { + ret = fns[i](arg); + } + return ret; +}; +function once(fn, ctx = null) { + let res; + return (...args) => { + if (fn) { + res = fn.apply(ctx, args); + fn = null; + } + return res; + }; +} +function getValueByDataPath(obj, path) { + if (!isString(path)) { + return; + } + path = path.replace(/\[(\d+)\]/g, ".$1"); + const parts = path.split("."); + let key = parts[0]; + if (!obj) { + obj = {}; + } + if (parts.length === 1) { + return obj[key]; + } + return getValueByDataPath(obj[key], parts.slice(1).join(".")); +} +function sortObject(obj) { + let sortObj = {}; + if (isPlainObject(obj)) { + Object.keys(obj).sort().forEach((key) => { + const _key = key; + sortObj[_key] = obj[_key]; + }); + } + return !Object.keys(sortObj) ? obj : sortObj; +} +const customizeRE = /:/g; +function customizeEvent(str) { + return camelize(str.replace(customizeRE, "-")); +} +const encode = encodeURIComponent; +function stringifyQuery(obj, encodeStr = encode) { + const res = obj ? Object.keys(obj).map((key) => { + let val = obj[key]; + if (typeof val === void 0 || val === null) { + val = ""; + } else if (isPlainObject(val)) { + val = JSON.stringify(val); + } + return encodeStr(key) + "=" + encodeStr(val); + }).filter((x) => x.length > 0).join("&") : null; + return res ? `?${res}` : ""; +} +const PAGE_HOOKS = [ + ON_INIT, + ON_LOAD, + ON_SHOW, + ON_HIDE, + ON_UNLOAD, + ON_BACK_PRESS, + ON_PAGE_SCROLL, + ON_TAB_ITEM_TAP, + ON_REACH_BOTTOM, + ON_PULL_DOWN_REFRESH, + ON_SHARE_TIMELINE, + ON_SHARE_APP_MESSAGE, + ON_SHARE_CHAT, + ON_ADD_TO_FAVORITES, + ON_SAVE_EXIT_STATE, + ON_NAVIGATION_BAR_BUTTON_TAP, + ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED, + ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED, + ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED, + ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED +]; +function isRootHook(name) { + return PAGE_HOOKS.indexOf(name) > -1; +} +const UniLifecycleHooks = [ + ON_SHOW, + ON_HIDE, + ON_LAUNCH, + ON_ERROR, + ON_THEME_CHANGE, + ON_PAGE_NOT_FOUND, + ON_UNHANDLE_REJECTION, + ON_EXIT, + ON_INIT, + ON_LOAD, + ON_READY, + ON_UNLOAD, + ON_RESIZE, + ON_BACK_PRESS, + ON_PAGE_SCROLL, + ON_TAB_ITEM_TAP, + ON_REACH_BOTTOM, + ON_PULL_DOWN_REFRESH, + ON_SHARE_TIMELINE, + ON_ADD_TO_FAVORITES, + ON_SHARE_APP_MESSAGE, + ON_SHARE_CHAT, + ON_SAVE_EXIT_STATE, + ON_NAVIGATION_BAR_BUTTON_TAP, + ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED, + ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED, + ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED, + ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED +]; +const MINI_PROGRAM_PAGE_RUNTIME_HOOKS = /* @__PURE__ */ (() => { + return { + onPageScroll: 1, + onShareAppMessage: 1 << 1, + onShareTimeline: 1 << 2 + }; +})(); +function isUniLifecycleHook(name, value, checkType = true) { + if (checkType && !isFunction(value)) { + return false; + } + if (UniLifecycleHooks.indexOf(name) > -1) { + return true; + } else if (name.indexOf("on") === 0) { + return true; + } + return false; +} +let vueApp; +const createVueAppHooks = []; +function onCreateVueApp(hook) { + if (vueApp) { + return hook(vueApp); + } + createVueAppHooks.push(hook); +} +function invokeCreateVueAppHook(app) { + vueApp = app; + createVueAppHooks.forEach((hook) => hook(app)); +} +const invokeCreateErrorHandler = once((app, createErrorHandler2) => { + return createErrorHandler2(app); +}); +const E = function() { +}; +E.prototype = { + _id: 1, + on: function(name, callback, ctx) { + var e2 = this.e || (this.e = {}); + (e2[name] || (e2[name] = [])).push({ + fn: callback, + ctx, + _id: this._id + }); + return this._id++; + }, + once: function(name, callback, ctx) { + var self2 = this; + function listener() { + self2.off(name, listener); + callback.apply(ctx, arguments); + } + listener._ = callback; + return this.on(name, listener, ctx); + }, + emit: function(name) { + var data = [].slice.call(arguments, 1); + var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); + var i = 0; + var len = evtArr.length; + for (i; i < len; i++) { + evtArr[i].fn.apply(evtArr[i].ctx, data); + } + return this; + }, + off: function(name, event) { + var e2 = this.e || (this.e = {}); + var evts = e2[name]; + var liveEvents = []; + if (evts && event) { + for (var i = evts.length - 1; i >= 0; i--) { + if (evts[i].fn === event || evts[i].fn._ === event || evts[i]._id === event) { + evts.splice(i, 1); + break; + } + } + liveEvents = evts; + } + liveEvents.length ? e2[name] = liveEvents : delete e2[name]; + return this; + } +}; +var E$1 = E; +/** +* @dcloudio/uni-mp-vue v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +function warn$2(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); +} +let activeEffectScope; +class EffectScope { + constructor(detached = false) { + this.detached = detached; + this._active = true; + this.effects = []; + this.cleanups = []; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else { + warn$2(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + activeEffectScope = this; + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + activeEffectScope = this.parent; + } + stop(fromParent) { + if (this._active) { + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + this._active = false; + } + } +} +function recordEffectScope(effect2, scope = activeEffectScope) { + if (scope && scope.active) { + scope.effects.push(effect2); + } +} +function getCurrentScope() { + return activeEffectScope; +} +let activeEffect; +class ReactiveEffect { + constructor(fn, trigger2, scheduler, scope) { + this.fn = fn; + this.trigger = trigger2; + this.scheduler = scheduler; + this.active = true; + this.deps = []; + this._dirtyLevel = 4; + this._trackId = 0; + this._runnings = 0; + this._shouldSchedule = false; + this._depsLength = 0; + recordEffectScope(this, scope); + } + get dirty() { + if (this._dirtyLevel === 2 || this._dirtyLevel === 3) { + this._dirtyLevel = 1; + pauseTracking(); + for (let i = 0; i < this._depsLength; i++) { + const dep = this.deps[i]; + if (dep.computed) { + triggerComputed(dep.computed); + if (this._dirtyLevel >= 4) { + break; + } + } + } + if (this._dirtyLevel === 1) { + this._dirtyLevel = 0; + } + resetTracking(); + } + return this._dirtyLevel >= 4; + } + set dirty(v) { + this._dirtyLevel = v ? 4 : 0; + } + run() { + this._dirtyLevel = 0; + if (!this.active) { + return this.fn(); + } + let lastShouldTrack = shouldTrack; + let lastEffect = activeEffect; + try { + shouldTrack = true; + activeEffect = this; + this._runnings++; + preCleanupEffect(this); + return this.fn(); + } finally { + postCleanupEffect(this); + this._runnings--; + activeEffect = lastEffect; + shouldTrack = lastShouldTrack; + } + } + stop() { + var _a; + if (this.active) { + preCleanupEffect(this); + postCleanupEffect(this); + (_a = this.onStop) == null ? void 0 : _a.call(this); + this.active = false; + } + } +} +function triggerComputed(computed2) { + return computed2.value; +} +function preCleanupEffect(effect2) { + effect2._trackId++; + effect2._depsLength = 0; +} +function postCleanupEffect(effect2) { + if (effect2.deps.length > effect2._depsLength) { + for (let i = effect2._depsLength; i < effect2.deps.length; i++) { + cleanupDepEffect(effect2.deps[i], effect2); + } + effect2.deps.length = effect2._depsLength; + } +} +function cleanupDepEffect(dep, effect2) { + const trackId = dep.get(effect2); + if (trackId !== void 0 && effect2._trackId !== trackId) { + dep.delete(effect2); + if (dep.size === 0) { + dep.cleanup(); + } + } +} +let shouldTrack = true; +let pauseScheduleStack = 0; +const trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function pauseScheduling() { + pauseScheduleStack++; +} +function resetScheduling() { + pauseScheduleStack--; + while (!pauseScheduleStack && queueEffectSchedulers.length) { + queueEffectSchedulers.shift()(); + } +} +function trackEffect(effect2, dep, debuggerEventExtraInfo) { + var _a; + if (dep.get(effect2) !== effect2._trackId) { + dep.set(effect2, effect2._trackId); + const oldDep = effect2.deps[effect2._depsLength]; + if (oldDep !== dep) { + if (oldDep) { + cleanupDepEffect(oldDep, effect2); + } + effect2.deps[effect2._depsLength++] = dep; + } else { + effect2._depsLength++; + } + { + (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo)); + } + } +} +const queueEffectSchedulers = []; +function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) { + var _a; + pauseScheduling(); + for (const effect2 of dep.keys()) { + let tracking; + if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) { + effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0); + effect2._dirtyLevel = dirtyLevel; + } + if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) { + { + (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo)); + } + effect2.trigger(); + if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) { + effect2._shouldSchedule = false; + if (effect2.scheduler) { + queueEffectSchedulers.push(effect2.scheduler); + } + } + } + } + resetScheduling(); +} +const createDep = (cleanup, computed2) => { + const dep = /* @__PURE__ */ new Map(); + dep.cleanup = cleanup; + dep.computed = computed2; + return dep; +}; +const targetMap = /* @__PURE__ */ new WeakMap(); +const ITERATE_KEY = Symbol("iterate"); +const MAP_KEY_ITERATE_KEY = Symbol("Map key iterate"); +function track(target, type, key) { + if (shouldTrack && activeEffect) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = createDep(() => depsMap.delete(key))); + } + trackEffect( + activeEffect, + dep, + { + target, + type, + key + } + ); + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + return; + } + let deps = []; + if (type === "clear") { + deps = [...depsMap.values()]; + } else if (key === "length" && isArray(target)) { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || !isSymbol(key2) && key2 >= newLength) { + deps.push(dep); + } + }); + } else { + if (key !== void 0) { + deps.push(depsMap.get(key)); + } + switch (type) { + case "add": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isIntegerKey(key)) { + deps.push(depsMap.get("length")); + } + break; + case "delete": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (isMap(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + } + break; + } + } + pauseScheduling(); + for (const dep of deps) { + if (dep) { + triggerEffects( + dep, + 4, + { + target, + type, + key, + newValue, + oldValue, + oldTarget + } + ); + } + } + resetScheduling(); +} +const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); +const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) +); +const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations(); +function createArrayInstrumentations() { + const instrumentations = {}; + ["includes", "indexOf", "lastIndexOf"].forEach((key) => { + instrumentations[key] = function(...args) { + const arr = toRaw(this); + for (let i = 0, l = this.length; i < l; i++) { + track(arr, "get", i + ""); + } + const res = arr[key](...args); + if (res === -1 || res === false) { + return arr[key](...args.map(toRaw)); + } else { + return res; + } + }; + }); + ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { + instrumentations[key] = function(...args) { + pauseTracking(); + pauseScheduling(); + const res = toRaw(this)[key].apply(this, args); + resetScheduling(); + resetTracking(); + return res; + }; + }); + return instrumentations; +} +function hasOwnProperty(key) { + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +class BaseReactiveHandler { + constructor(_isReadonly = false, _isShallow = false) { + this._isReadonly = _isReadonly; + this._isShallow = _isShallow; + } + get(target, key, receiver) { + const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return isShallow2; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the reciever is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; + } + const targetIsArray = isArray(target); + if (!isReadonly2) { + if (targetIsArray && hasOwn(arrayInstrumentations, key)) { + return Reflect.get(arrayInstrumentations, key, receiver); + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get(target, key, receiver); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (isShallow2) { + return res; + } + if (isRef(res)) { + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +} +class MutableReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(false, isShallow2); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + if (isOldValueReadonly) { + return false; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set(target, key, value, receiver); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } +} +class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(true, isShallow2); + } + set(target, key) { + { + warn$2( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + { + warn$2( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } +} +const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); +const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); +const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler( + true +); +const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); +const toShallow = (value) => value; +const getProto = (v) => Reflect.getPrototypeOf(v); +function get(target, key, isReadonly2 = false, isShallow2 = false) { + target = target["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly2) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has: has2 } = getProto(rawTarget); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + if (has2.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has2.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } +} +function has$1(key, isReadonly2 = false) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly2) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); +} +function size(target, isReadonly2 = false) { + target = target["__v_raw"]; + !isReadonly2 && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); +} +function add(value) { + value = toRaw(value); + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; +} +function set$1(key, value) { + value = toRaw(value); + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; +} +function deleteEntry(key) { + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2 ? get2.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; +} +function clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = isMap(target) ? new Map(target) : new Set(target); + const result = target.clear(); + if (hadItems) { + trigger(target, "clear", void 0, void 0, oldTarget); + } + return result; +} +function createForEach(isReadonly2, isShallow2) { + return function forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + }; +} +function createIterableMethod(method, isReadonly2, isShallow2) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; +} +function createReadonlyMethod(type) { + return function(...args) { + { + const key = args[0] ? `on key "${args[0]}" ` : ``; + warn$2( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; +} +function createInstrumentations() { + const mutableInstrumentations2 = { + get(key) { + return get(this, key); + }, + get size() { + return size(this); + }, + has: has$1, + add, + set: set$1, + delete: deleteEntry, + clear, + forEach: createForEach(false, false) + }; + const shallowInstrumentations2 = { + get(key) { + return get(this, key, false, true); + }, + get size() { + return size(this); + }, + has: has$1, + add, + set: set$1, + delete: deleteEntry, + clear, + forEach: createForEach(false, true) + }; + const readonlyInstrumentations2 = { + get(key) { + return get(this, key, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has$1.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, false) + }; + const shallowReadonlyInstrumentations2 = { + get(key) { + return get(this, key, true, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has$1.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, true) + }; + const iteratorMethods = [ + "keys", + "values", + "entries", + Symbol.iterator + ]; + iteratorMethods.forEach((method) => { + mutableInstrumentations2[method] = createIterableMethod(method, false, false); + readonlyInstrumentations2[method] = createIterableMethod(method, true, false); + shallowInstrumentations2[method] = createIterableMethod(method, false, true); + shallowReadonlyInstrumentations2[method] = createIterableMethod( + method, + true, + true + ); + }); + return [ + mutableInstrumentations2, + readonlyInstrumentations2, + shallowInstrumentations2, + shallowReadonlyInstrumentations2 + ]; +} +const [ + mutableInstrumentations, + readonlyInstrumentations, + shallowInstrumentations, + shallowReadonlyInstrumentations +] = /* @__PURE__ */ createInstrumentations(); +function createInstrumentationGetter(isReadonly2, shallow) { + const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations; + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) +}; +const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) +}; +const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) +}; +const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) +}; +function checkIdentityKeys(target, has2, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has2.call(target, rawKey)) { + const type = toRawType(target); + warn$2( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } +} +const reactiveMap = /* @__PURE__ */ new WeakMap(); +const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +const readonlyMap = /* @__PURE__ */ new WeakMap(); +const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2; + default: + return 0; + } +} +function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value)); +} +function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + { + warn$2(`value cannot be made reactive: ${String(target)}`); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const targetType = getTargetType(target); + if (targetType === 0) { + return target; + } + const proxy = new Proxy( + target, + targetType === 2 ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + if (Object.isExtensible(value)) { + def(value, "__v_skip", true); + } + return value; +} +const toReactive = (value) => isObject(value) ? reactive(value) : value; +const toReadonly = (value) => isObject(value) ? readonly(value) : value; +const COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`; +class ComputedRefImpl { + constructor(getter, _setter, isReadonly2, isSSR) { + this.getter = getter; + this._setter = _setter; + this.dep = void 0; + this.__v_isRef = true; + this["__v_isReadonly"] = false; + this.effect = new ReactiveEffect( + () => getter(this._value), + () => triggerRefValue( + this, + this.effect._dirtyLevel === 2 ? 2 : 3 + ) + ); + this.effect.computed = this; + this.effect.active = this._cacheable = !isSSR; + this["__v_isReadonly"] = isReadonly2; + } + get value() { + const self = toRaw(this); + if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) { + triggerRefValue(self, 4); + } + trackRefValue(self); + if (self.effect._dirtyLevel >= 2) { + if (this._warnRecursive) { + warn$2(COMPUTED_SIDE_EFFECT_WARN, ` + +getter: `, this.getter); + } + triggerRefValue(self, 2); + } + return self._value; + } + set value(newValue) { + this._setter(newValue); + } + // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x + get _dirty() { + return this.effect.dirty; + } + set _dirty(v) { + this.effect.dirty = v; + } + // #endregion +} +function computed$1(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + const onlyGetter = isFunction(getterOrOptions); + if (onlyGetter) { + getter = getterOrOptions; + setter = () => { + warn$2("Write operation failed: computed value is readonly"); + }; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); + if (debugOptions && !isSSR) { + cRef.effect.onTrack = debugOptions.onTrack; + cRef.effect.onTrigger = debugOptions.onTrigger; + } + return cRef; +} +function trackRefValue(ref2) { + var _a; + if (shouldTrack && activeEffect) { + ref2 = toRaw(ref2); + trackEffect( + activeEffect, + (_a = ref2.dep) != null ? _a : ref2.dep = createDep( + () => ref2.dep = void 0, + ref2 instanceof ComputedRefImpl ? ref2 : void 0 + ), + { + target: ref2, + type: "get", + key: "value" + } + ); + } +} +function triggerRefValue(ref2, dirtyLevel = 4, newVal) { + ref2 = toRaw(ref2); + const dep = ref2.dep; + if (dep) { + triggerEffects( + dep, + dirtyLevel, + { + target: ref2, + type: "set", + key: "value", + newValue: newVal + } + ); + } +} +function isRef(r2) { + return !!(r2 && r2.__v_isRef === true); +} +function ref(value) { + return createRef(value, false); +} +function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +class RefImpl { + constructor(value, __v_isShallow) { + this.__v_isShallow = __v_isShallow; + this.dep = void 0; + this.__v_isRef = true; + this._rawValue = __v_isShallow ? value : toRaw(value); + this._value = __v_isShallow ? value : toReactive(value); + } + get value() { + trackRefValue(this); + return this._value; + } + set value(newVal) { + const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal); + newVal = useDirectValue ? newVal : toRaw(newVal); + if (hasChanged(newVal, this._rawValue)) { + this._rawValue = newVal; + this._value = useDirectValue ? newVal : toReactive(newVal); + triggerRefValue(this, 4, newVal); + } + } +} +function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; +} +const shallowUnwrapHandlers = { + get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} +const stack = []; +function pushWarningContext(vnode) { + stack.push(vnode); +} +function popWarningContext() { + stack.pop(); +} +function warn$1(msg, ...args) { + pauseTracking(); + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + msg + args.map((a) => { + var _a, _b; + return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a); + }).join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + resetTracking(); +} +function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; +} +function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; +} +function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; +} +function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; +} +function formatProp(key, value, raw) { + if (isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } +} +const ErrorTypeStrings = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ." +}; +function callWithErrorHandling(fn, instance, type, args) { + try { + return args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } +} +function callWithAsyncErrorHandling(fn, instance, type, args) { + if (isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = ErrorTypeStrings[type] || type; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + const appErrorHandler = instance.appContext.config.errorHandler; + if (appErrorHandler) { + callWithErrorHandling( + appErrorHandler, + null, + 10, + [err, exposedInstance, errorInfo] + ); + return; + } + } + logError(err, type, contextVNode, throwInDev); +} +function logError(err, type, contextVNode, throwInDev = true) { + { + const info = ErrorTypeStrings[type] || type; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + if (throwInDev) { + console.error(err); + } else { + console.error(err); + } + } +} +let isFlushing = false; +let isFlushPending = false; +const queue$1 = []; +let flushIndex = 0; +const pendingPostFlushCbs = []; +let activePostFlushCbs = null; +let postFlushIndex = 0; +const resolvedPromise = /* @__PURE__ */ Promise.resolve(); +let currentFlushPromise = null; +const RECURSION_LIMIT = 100; +function nextTick$1(fn) { + const p2 = currentFlushPromise || resolvedPromise; + return fn ? p2.then(this ? fn.bind(this) : fn) : p2; +} +function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue$1.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue$1[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.pre) { + start = middle + 1; + } else { + end = middle; + } + } + return start; +} +function queueJob(job) { + if (!queue$1.length || !queue$1.includes( + job, + isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex + )) { + if (job.id == null) { + queue$1.push(job); + } else { + queue$1.splice(findInsertionIndex(job.id), 0, job); + } + queueFlush(); + } +} +function queueFlush() { + if (!isFlushing && !isFlushPending) { + isFlushPending = true; + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function hasQueueJob(job) { + return queue$1.indexOf(job) > -1; +} +function invalidateJob(job) { + const i = queue$1.indexOf(job); + if (i > flushIndex) { + queue$1.splice(i, 1); + } +} +function queuePostFlushCb(cb) { + if (!isArray(cb)) { + if (!activePostFlushCbs || !activePostFlushCbs.includes( + cb, + cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex + )) { + pendingPostFlushCbs.push(cb); + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); +} +function flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) { + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (; i < queue$1.length; i++) { + const cb = queue$1[i]; + if (cb && cb.pre) { + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + queue$1.splice(i, 1); + i--; + cb(); + } + } +} +function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)].sort( + (a, b) => getId(a) - getId(b) + ); + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) { + continue; + } + activePostFlushCbs[postFlushIndex](); + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +const getId = (job) => job.id == null ? Infinity : job.id; +const comparator = (a, b) => { + const diff2 = getId(a) - getId(b); + if (diff2 === 0) { + if (a.pre && !b.pre) + return -1; + if (b.pre && !a.pre) + return 1; + } + return diff2; +}; +function flushJobs(seen) { + isFlushPending = false; + isFlushing = true; + { + seen = seen || /* @__PURE__ */ new Map(); + } + queue$1.sort(comparator); + const check = (job) => checkRecursiveUpdates(seen, job); + try { + for (flushIndex = 0; flushIndex < queue$1.length; flushIndex++) { + const job = queue$1[flushIndex]; + if (job && job.active !== false) { + if (check(job)) { + continue; + } + callWithErrorHandling(job, null, 14); + } + } + } finally { + flushIndex = 0; + queue$1.length = 0; + flushPostFlushCbs(seen); + isFlushing = false; + currentFlushPromise = null; + if (queue$1.length || pendingPostFlushCbs.length) { + flushJobs(seen); + } + } +} +function checkRecursiveUpdates(seen, fn) { + if (!seen.has(fn)) { + seen.set(fn, 1); + } else { + const count = seen.get(fn); + if (count > RECURSION_LIMIT) { + const instance = fn.ownerInstance; + const componentName = instance && getComponentName(instance.type); + handleError( + `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`, + null, + 10 + ); + return true; + } else { + seen.set(fn, count + 1); + } + } +} +let devtools; +let buffer = []; +let devtoolsNotInstalled = false; +function emit$1(event, ...args) { + if (devtools) { + devtools.emit(event, ...args); + } else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } +} +function setDevtoolsHook(hook, target) { + var _a, _b; + devtools = hook; + if (devtools) { + devtools.enabled = true; + buffer.forEach(({ event, args }) => devtools.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook(newHook, target); + }); + setTimeout(() => { + if (!devtools) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + devtoolsNotInstalled = true; + buffer = []; + } + }, 3e3); + } else { + devtoolsNotInstalled = true; + buffer = []; + } +} +function devtoolsInitApp(app, version2) { + emit$1("app:init", app, version2, { + Fragment, + Text, + Comment, + Static + }); +} +const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook( + "component:added" + /* COMPONENT_ADDED */ +); +const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook( + "component:updated" + /* COMPONENT_UPDATED */ +); +const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook( + "component:removed" + /* COMPONENT_REMOVED */ +); +const devtoolsComponentRemoved = (component) => { + if (devtools && typeof devtools.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !devtools.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } +}; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + // fixed by xxxxxx + // 为 0 是 App,无 parent 是 Page 指向 App + component.uid === 0 ? void 0 : component.parent ? component.parent.uid : 0, + component + ); + }; +} +const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook( + "perf:start" + /* PERFORMANCE_START */ +); +const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook( + "perf:end" + /* PERFORMANCE_END */ +); +function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit$1(hook, component.appContext.app, component.uid, component, type, time); + }; +} +function devtoolsComponentEmit(component, event, params) { + emit$1( + "component:emit", + component.appContext.app, + component, + event, + params + ); +} +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) + return; + const props = instance.vnode.props || EMPTY_OBJ; + { + const { + emitsOptions, + propsOptions: [propsOptions] + } = instance; + if (emitsOptions) { + if (!(event in emitsOptions) && true) { + if (!propsOptions || !(toHandlerKey(event) in propsOptions)) { + warn$1( + `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.` + ); + } + } else { + const validator = emitsOptions[event]; + if (isFunction(validator)) { + const isValid = validator(...rawArgs); + if (!isValid) { + warn$1( + `Invalid event arguments: event validation failed for event "${event}".` + ); + } + } + } + } + } + let args = rawArgs; + const isModelListener2 = event.startsWith("update:"); + const modelArg = isModelListener2 && event.slice(7); + if (modelArg && modelArg in props) { + const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`; + const { number, trim } = props[modifiersKey] || EMPTY_OBJ; + if (trim) { + args = rawArgs.map((a) => isString(a) ? a.trim() : a); + } + if (number) { + args = rawArgs.map(looseToNumber); + } + } + { + devtoolsComponentEmit(instance, event, args); + } + { + const lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { + warn$1( + `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( + instance, + instance.type + )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate( + event + )}" instead of "${event}".` + ); + } + } + let handlerName; + let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = toHandlerKey(camelize(event))]; + if (!handler && isModelListener2) { + handler = props[handlerName = toHandlerKey(hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (!isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + extend(normalized, raw); + } + if (isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key); +} +let currentRenderingInstance = null; +function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + instance && instance.type.__scopeId || null; + return prev; +} +const COMPONENTS = "components"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component2 = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component2, + false + ); + if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) { + return Component2; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component2[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component2; + } + if (warnMissing && !res) { + const extra = type === COMPONENTS ? ` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; + warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); + } + return res; + } else { + warn$1( + `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().` + ); + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]); +} +const INITIAL_WATCHER_VALUE = {}; +function watch(source, cb, options) { + if (!isFunction(cb)) { + warn$1( + `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` + ); + } + return doWatch(source, cb, options); +} +function doWatch(source, cb, { + immediate, + deep, + flush, + once: once2, + onTrack, + onTrigger +} = EMPTY_OBJ) { + if (cb && once2) { + const _cb = cb; + cb = (...args) => { + _cb(...args); + unwatch(); + }; + } + if (deep !== void 0 && typeof deep === "number") { + warn$1( + `watch() "deep" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.` + ); + } + if (!cb) { + if (immediate !== void 0) { + warn$1( + `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (deep !== void 0) { + warn$1( + `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (once2 !== void 0) { + warn$1( + `watch() "once" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + } + const warnInvalidSource = (s2) => { + warn$1( + `Invalid watch source: `, + s2, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const instance = currentInstance; + const reactiveGetter = (source2) => deep === true ? source2 : ( + // for deep: false, only traverse root-level properties + traverse(source2, deep === false ? 1 : void 0) + ); + let getter; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => reactiveGetter(source); + forceTrigger = true; + } else if (isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s2) => isReactive(s2) || isShallow(s2)); + getter = () => source.map((s2) => { + if (isRef(s2)) { + return s2.value; + } else if (isReactive(s2)) { + return reactiveGetter(s2); + } else if (isFunction(s2)) { + return callWithErrorHandling(s2, instance, 2); + } else { + warnInvalidSource(s2); + } + }); + } else if (isFunction(source)) { + if (cb) { + getter = () => callWithErrorHandling(source, instance, 2); + } else { + getter = () => { + if (cleanup) { + cleanup(); + } + return callWithAsyncErrorHandling( + source, + instance, + 3, + [onCleanup] + ); + }; + } + } else { + getter = NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + getter = () => traverse(baseGetter()); + } + let cleanup; + let onCleanup = (fn) => { + cleanup = effect2.onStop = () => { + callWithErrorHandling(fn, instance, 4); + cleanup = effect2.onStop = void 0; + }; + }; + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = () => { + if (!effect2.active || !effect2.dirty) { + return; + } + if (cb) { + const newValue = effect2.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) { + if (cleanup) { + cleanup(); + } + callWithAsyncErrorHandling(cb, instance, 3, [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + onCleanup + ]); + oldValue = newValue; + } + } else { + effect2.run(); + } + }; + job.allowRecurse = !!cb; + let scheduler; + if (flush === "sync") { + scheduler = job; + } else if (flush === "post") { + scheduler = () => queuePostRenderEffect$1(job, instance && instance.suspense); + } else { + job.pre = true; + if (instance) + job.id = instance.uid; + scheduler = () => queueJob(job); + } + const effect2 = new ReactiveEffect(getter, NOOP, scheduler); + const scope = getCurrentScope(); + const unwatch = () => { + effect2.stop(); + if (scope) { + remove(scope.effects, effect2); + } + }; + { + effect2.onTrack = onTrack; + effect2.onTrigger = onTrigger; + } + if (cb) { + if (immediate) { + job(); + } else { + oldValue = effect2.run(); + } + } else if (flush === "post") { + queuePostRenderEffect$1( + effect2.run.bind(effect2), + instance && instance.suspense + ); + } else { + effect2.run(); + } + return unwatch; +} +function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const reset = setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + reset(); + return res; +} +function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; +} +function traverse(value, depth, currentDepth = 0, seen) { + if (!isObject(value) || value["__v_skip"]) { + return value; + } + if (depth && depth > 0) { + if (currentDepth >= depth) { + return value; + } + currentDepth++; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + if (isRef(value)) { + traverse(value.value, depth, currentDepth, seen); + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], depth, currentDepth, seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach((v) => { + traverse(v, depth, currentDepth, seen); + }); + } else if (isPlainObject(value)) { + for (const key in value) { + traverse(value[key], depth, currentDepth, seen); + } + } + return value; +} +function validateDirectiveName(name) { + if (isBuiltInDirective(name)) { + warn$1("Do not use built-in directive ids as custom directive id: " + name); + } +} +function createAppContext() { + return { + app: null, + config: { + isNativeTag: NO, + performance: false, + globalProperties: {}, + optionMergeStrategies: {}, + errorHandler: void 0, + warnHandler: void 0, + compilerOptions: {} + }, + mixins: [], + components: {}, + directives: {}, + provides: /* @__PURE__ */ Object.create(null), + optionsCache: /* @__PURE__ */ new WeakMap(), + propsCache: /* @__PURE__ */ new WeakMap(), + emitsCache: /* @__PURE__ */ new WeakMap() + }; +} +let uid$1 = 0; +function createAppAPI(render, hydrate) { + return function createApp2(rootComponent, rootProps = null) { + if (!isFunction(rootComponent)) { + rootComponent = extend({}, rootComponent); + } + if (rootProps != null && !isObject(rootProps)) { + warn$1(`root props passed to app.mount() must be an object.`); + rootProps = null; + } + const context = createAppContext(); + const installedPlugins = /* @__PURE__ */ new WeakSet(); + const app = context.app = { + _uid: uid$1++, + _component: rootComponent, + _props: rootProps, + _container: null, + _context: context, + _instance: null, + version, + get config() { + return context.config; + }, + set config(v) { + { + warn$1( + `app.config cannot be replaced. Modify individual options instead.` + ); + } + }, + use(plugin2, ...options) { + if (installedPlugins.has(plugin2)) { + warn$1(`Plugin has already been applied to target app.`); + } else if (plugin2 && isFunction(plugin2.install)) { + installedPlugins.add(plugin2); + plugin2.install(app, ...options); + } else if (isFunction(plugin2)) { + installedPlugins.add(plugin2); + plugin2(app, ...options); + } else { + warn$1( + `A plugin must either be a function or an object with an "install" function.` + ); + } + return app; + }, + mixin(mixin) { + { + if (!context.mixins.includes(mixin)) { + context.mixins.push(mixin); + } else { + warn$1( + "Mixin has already been applied to target app" + (mixin.name ? `: ${mixin.name}` : "") + ); + } + } + return app; + }, + component(name, component) { + { + validateComponentName(name, context.config); + } + if (!component) { + return context.components[name]; + } + if (context.components[name]) { + warn$1(`Component "${name}" has already been registered in target app.`); + } + context.components[name] = component; + return app; + }, + directive(name, directive) { + { + validateDirectiveName(name); + } + if (!directive) { + return context.directives[name]; + } + if (context.directives[name]) { + warn$1(`Directive "${name}" has already been registered in target app.`); + } + context.directives[name] = directive; + return app; + }, + // fixed by xxxxxx + mount() { + }, + // fixed by xxxxxx + unmount() { + }, + provide(key, value) { + if (key in context.provides) { + warn$1( + `App already provides property with key "${String(key)}". It will be overwritten with the new value.` + ); + } + context.provides[key] = value; + return app; + }, + runWithContext(fn) { + const lastApp = currentApp; + currentApp = app; + try { + return fn(); + } finally { + currentApp = lastApp; + } + } + }; + return app; + }; +} +let currentApp = null; +function provide(key, value) { + if (!currentInstance) { + { + warn$1(`provide() can only be used inside setup().`); + } + } else { + let provides = currentInstance.provides; + const parentProvides = currentInstance.parent && currentInstance.parent.provides; + if (parentProvides === provides) { + provides = currentInstance.provides = Object.create(parentProvides); + } + provides[key] = value; + if (currentInstance.type.mpType === "app") { + currentInstance.appContext.app.provide(key, value); + } + } +} +function inject(key, defaultValue, treatDefaultAsFactory = false) { + const instance = currentInstance || currentRenderingInstance; + if (instance || currentApp) { + const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides; + if (provides && key in provides) { + return provides[key]; + } else if (arguments.length > 1) { + return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; + } else { + warn$1(`injection "${String(key)}" not found.`); + } + } else { + warn$1(`inject() can only be used inside setup() or functional components.`); + } +} +const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; +function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); +} +function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); +} +function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } +} +function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + remove(keepAliveRoot[type], injected); + }, target); +} +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + if (isRootHook(type)) { + target = target.root; + } + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + if (target.isUnmounted) { + return; + } + pauseTracking(); + const reset = setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + reset(); + resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } else { + const apiName = toHandlerKey( + (ErrorTypeStrings[type] || type.replace(/^on/, "")).replace(/ hook$/, "") + ); + warn$1( + `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + ); + } +} +const createHook = (lifecycle) => (hook, target = currentInstance) => ( + // post-create lifecycle registrations are noops during SSR (except for serverPrefetch) + (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target) +); +const onBeforeMount = createHook("bm"); +const onMounted = createHook("m"); +const onBeforeUpdate = createHook("bu"); +const onUpdated = createHook("u"); +const onBeforeUnmount = createHook("bum"); +const onUnmounted = createHook("um"); +const onServerPrefetch = createHook("sp"); +const onRenderTriggered = createHook( + "rtg" +); +const onRenderTracked = createHook( + "rtc" +); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} +const getPublicInstance = (i) => { + if (!i) + return null; + if (isStatefulComponent(i)) + return getExposeProxy(i) || i.proxy; + return getPublicInstance(i.parent); +}; +const publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + // fixed by xxxxxx vue-i18n 在 dev 模式,访问了 $el,故模拟一个假的 + // $el: i => i.vnode.el, + $el: (i) => i.__$el || (i.__$el = {}), + $data: (i) => i.data, + $props: (i) => shallowReadonly(i.props), + $attrs: (i) => shallowReadonly(i.attrs), + $slots: (i) => shallowReadonly(i.slots), + $refs: (i) => shallowReadonly(i.refs), + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $emit: (i) => i.emit, + $options: (i) => resolveMergedOptions(i), + $forceUpdate: (i) => i.f || (i.f = () => { + i.effect.dirty = true; + queueJob(i.update); + }), + // $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy!)),// fixed by xxxxxx + $watch: (i) => instanceWatch.bind(i) + }) +); +const isReservedPrefix = (key) => key === "_" || key === "$"; +const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); +const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key === "__isVue") { + return true; + } + let normalizedProps; + if (key[0] !== "$") { + const n2 = accessCache[key]; + if (n2 !== void 0) { + switch (n2) { + case 1: + return setupState[key]; + case 2: + return data[key]; + case 4: + return ctx[key]; + case 3: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1; + return setupState[key]; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + accessCache[key] = 2; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3; + return props[key]; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4; + return ctx[key]; + } else if (shouldCacheAccess) { + accessCache[key] = 0; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + track(instance, "get", key); + } else if (key === "$slots") { + track(instance, "get", key); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else if (currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading + // to infinite warning loop + key.indexOf("__v") !== 0)) { + if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { + warn$1( + `Property ${JSON.stringify( + key + )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` + ); + } else if (instance === currentRenderingInstance) { + warn$1( + `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` + ); + } + } + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) { + warn$1(`Cannot mutate