From c224ee0a440c37a515ef0081348c5d861d979aee Mon Sep 17 00:00:00 2001 From: sunmeng Date: Thu, 8 May 2025 17:27:47 +0800 Subject: [PATCH] =?UTF-8?q?canvas=E5=B9=B3=E7=A7=BB=E5=A4=84=E7=90=86-?= =?UTF-8?q?=E7=9C=9F=E6=9C=BA=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manifest.json | 2 +- pages/index/index.vue | 138 +++++++-- static/canvas.jpg | Bin 0 -> 195625 bytes .../mp-weixin-devtools/index.js.map | 2 +- .../dist/dev/.sourcemap/mp-weixin/app.js.map | 2 +- .../.sourcemap/mp-weixin/common/vendor.js.map | 2 +- .../dev/.sourcemap/mp-weixin/index.js.map | 2 +- .../mp-weixin/pages/index/index.js.map | 2 +- .../mp-weixin/pages/index/index2.js.map | 2 +- .../mp-weixin/pages/index/index_step4.js.map | 2 +- .../mp-weixin/pages/index/step2.js.map | 2 +- .../.sourcemap/mp-weixin/static/canvas.js.map | 1 + unpackage/dist/dev/mp-weixin/common/assets.js | 4 - unpackage/dist/dev/mp-weixin/common/vendor.js | 276 +++++++----------- unpackage/dist/dev/mp-weixin/index.js | 91 +++++- .../dist/dev/mp-weixin/pages/index/index.wxml | 2 +- .../dist/dev/mp-weixin/pages/index/indexFu.js | 16 - .../dev/mp-weixin/pages/index/indexFu.json | 6 - .../dev/mp-weixin/pages/index/indexFu.wxml | 1 - .../dev/mp-weixin/pages/index/indexFu.wxss | 0 .../dist/dev/mp-weixin/pages/index/step2.wxml | 2 +- .../dist/dev/mp-weixin/project.config.json | 2 +- .../dev/mp-weixin/project.private.config.json | 3 +- .../dist/dev/mp-weixin/static/canvas.jpg | Bin 0 -> 195625 bytes 24 files changed, 322 insertions(+), 238 deletions(-) create mode 100644 static/canvas.jpg create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/static/canvas.js.map delete mode 100644 unpackage/dist/dev/mp-weixin/common/assets.js delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/indexFu.js delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/indexFu.json delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/indexFu.wxml delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/indexFu.wxss create mode 100644 unpackage/dist/dev/mp-weixin/static/canvas.jpg diff --git a/manifest.json b/manifest.json index ad09f4d..9c96a3c 100644 --- a/manifest.json +++ b/manifest.json @@ -50,7 +50,7 @@ "quickapp" : {}, /* 小程序特有相关 */ "mp-weixin" : { - "appid" : "", + "appid" : "wx5c9edf82da6032c4", "setting" : { "urlCheck" : false }, diff --git a/pages/index/index.vue b/pages/index/index.vue index 3668bde..35765c2 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -1,10 +1,19 @@ \n\n\n\n"],"mappings":";;;;;;;IAaC,IAAMA,WAAA,GAAcC,aAAA,CAAGC,GAAA,CAAC,GAAG;IAC3B,IAAMC,YAAA,GAAeF,aAAA,CAAGC,GAAA,CAAC,GAAG;IAG5B,SAASE,KAAA,EAAO;MACf,IAAMC,GAAA,GAAMJ,aAAA,CAAGK,KAAA,CAACC,mBAAA,CAAoB,UAAS,IAAI;MACjDN,aAAA,CAAAK,KAAA,CAAAE,KAAA,uCAAYH,GAAA,EAAI,IAAI;MAEpBA,GAAA,CAAII,SAAA,EAAW;MACfJ,GAAA,CAAIK,GAAA,CAAI,KAAK,KAAK,IAAI,GAAGC,IAAA,CAAKC,EAAA,GAAK,CAAC;MACpCP,GAAA,CAAIQ,YAAA,CAAa,kBAAkB;MACnCR,GAAA,CAAIS,IAAA,EAAM;MAGVT,GAAA,CAAII,SAAA,EAAW;MACfJ,GAAA,CAAIK,GAAA,CAAI,KAAK,KAAK,IAAI,GAAGC,IAAA,CAAKC,EAAA,GAAK,CAAC;MACpCP,GAAA,CAAIQ,YAAA,CAAa,OAAO;MACxBR,GAAA,CAAIS,IAAA,EAAM;MACVT,GAAA,CAAID,IAAA,CAAK,OAAOW,UAAA,CAAW,YAAI;QAC3Bd,aAAA,CAAAK,KAAA,CAAYE,KAAA,wCAAC;MAChB,GAAC,GAAG,CAAC;IACN;IAGD,IAAMQ,UAAA,GAAa,SAAbA,WAAA,EAAmB;MACxBf,aAAA,CAAAK,KAAA,CAAYE,KAAA,+CAAQ;MACpBJ,IAAA;MACAH,aAAA,CAAAK,KAAA,CAAAE,KAAA,uCAAY,WAAW;IACvB;IAEDP,aAAA,CAAAgB,SAAA,CAAU,YAAM,CAEjB,CAAE","ignoreList":[]} \ No newline at end of file +{"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":";","ignoreList":[]} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map index 652501a..171f7f6 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map @@ -1 +1 @@ -{"version":3,"file":"app.js","sources":["App.vue","main.js"],"sourcesContent":["\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;AACC,YAAO,IAAA,MAAA,MAAA;;"} \ No newline at end of file +{"version":3,"file":"app.js","sources":["App.vue"],"sourcesContent":["\n\n\n"],"names":["uni"],"mappings":";;;;;;;;AACC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,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;;;;;;;;;"} \ 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 index cbc6c42..7a339a4 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map @@ -1 +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];\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 \n\n"],"names":["ref","getCurrentInstance","uni","onMounted"],"mappings":";;;;;AAaC,UAAM,cAAcA,cAAG,IAAC,GAAG;AAC3B,UAAM,eAAeA,cAAG,IAAC,GAAG;AAC5B,UAAM,WAAWC,cAAAA,mBAAoB;AAErC,aAAS,OAAO;AACf,YAAM,MAAMC,cAAG,MAAC,oBAAoB,UAAS,QAAQ;AACrDA,oBAAA,MAAA,MAAA,OAAA,+BAAY,KAAI,IAAI;AAEpB,UAAI,UAAW;AACf,UAAI,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC;AACpC,UAAI,aAAa,kBAAkB;AACnC,UAAI,KAAM;AAGV,UAAI,UAAW;AACf,UAAI,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC;AACpC,UAAI,aAAa,OAAO;AACxB,UAAI,KAAM;AACV,UAAI,KAAM;AAAA,IACV;AAGD,UAAM,aAAa,MAAM;AACxB;IACA;AAEDC,kBAAAA,UAAU,MAAM;AAAA,IAGjB,CAAE;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ 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 index c8c68a4..71eab5f 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../../HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["import MiniProgramPage from 'C:/Users/hp/Desktop/app/canvas/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["MiniProgramPage"],"mappings":";;AACA,GAAG,WAAWA,MAAe,eAAA;"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["pages/index/index.vue?type=page"],"sourcesContent":["import MiniProgramPage from '/Users/sunmeng/Desktop/canvas/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["MiniProgramPage"],"mappings":";;AACA,GAAG,WAAWA,MAAe,eAAA;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index2.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index2.js.map index aa6e1b4..9b2cc2d 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index2.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index2.js.map @@ -1 +1 @@ -{"version":3,"file":"index2.js","sources":["../../HBuilderX/plugins/uniapp-cli-vite/uniPage:/QzovVXNlcnMvaHAvRGVza3RvcC9hcHAvY2FudmFzL3BhZ2VzL2luZGV4L2luZGV4LnZ1ZQ"],"sourcesContent":["import MiniProgramPage from 'C:/Users/hp/Desktop/app/canvas/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["MiniProgramPage"],"mappings":";;AACA,GAAG,WAAWA,MAAe,eAAA;"} \ No newline at end of file +{"version":3,"file":"index2.js","sources":["/Users/sunmeng/Desktop/canvas/pages/index/index.vue?type=page"],"sourcesContent":["import MiniProgramPage from '/Users/sunmeng/Desktop/canvas/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["MiniProgramPage"],"mappings":";;AACA,GAAG,WAAWA,MAAe,eAAA;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index_step4.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index_step4.js.map index 14af5e2..530d150 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index_step4.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index_step4.js.map @@ -1 +1 @@ -{"version":3,"file":"index_step4.js","sources":["pages/index/index_step4.vue","../../HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXhfc3RlcDQudnVl"],"sourcesContent":["\n\n\n\n","import MiniProgramPage from 'C:/Users/hp/Desktop/app/canvas/pages/index/index_step4.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","getCurrentInstance","uni","onMounted"],"mappings":";;;;;AAaC,UAAM,cAAcA,cAAG,IAAC,GAAG;AAC3B,UAAM,eAAeA,cAAG,IAAC,GAAG;AAC5B,UAAM,WAAWC,cAAAA,mBAAoB;AAErC,aAAS,OAAO;AACf,YAAM,MAAMC,cAAG,MAAC,oBAAoB,UAAS,QAAQ;AACrDA,oBAAA,MAAA,MAAA,OAAA,qCAAY,KAAI,IAAI;AAEpB,UAAI,UAAW;AACf,UAAI,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC;AACpC,UAAI,aAAa,sBAAsB;AACvC,UAAI,KAAM;AAGV,UAAI,UAAW;AACf,UAAI,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC;AACpC,UAAI,aAAa,OAAO;AACxB,UAAI,KAAM;AACV,UAAI,KAAM;AAAA,IACV;AAGD,UAAM,aAAa,MAAM;AACxBA,oBAAAA,MAAI,WAAW;AAAA,QACd,KAAI;AAAA,MACP,CAAG;AACD;IACA;AAEDC,kBAAAA,UAAU,MAAM;AACf,WAAM;AAAA,IAER,CAAE;;;;;;;;;;;AC5CF,GAAG,WAAW,eAAe;"} \ No newline at end of file +{"version":3,"file":"index_step4.js","sources":["pages/index/index_step4.vue?type=page"],"sourcesContent":["import MiniProgramPage from '/Users/sunmeng/Desktop/canvas/pages/index/index_step4.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/step2.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/step2.js.map index 2381cd6..461ca25 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/step2.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/step2.js.map @@ -1 +1 @@ -{"version":3,"file":"step2.js","sources":["pages/index/step2.vue","../../HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvc3RlcDIudnVl"],"sourcesContent":["\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/hp/Desktop/app/canvas/pages/index/step2.vue'\nwx.createPage(MiniProgramPage)"],"names":["MiniProgramPage"],"mappings":";;;;;AAOC,MAAM,aAAa,MAAW;;;;;;;;;ACN/B,GAAG,WAAWA,SAAe;"} \ No newline at end of file +{"version":3,"file":"step2.js","sources":["pages/index/step2.vue?type=page"],"sourcesContent":["import MiniProgramPage from '/Users/sunmeng/Desktop/canvas/pages/index/step2.vue'\nwx.createPage(MiniProgramPage)"],"names":["MiniProgramPage"],"mappings":";;;;;;;;;;;;;;AACA,GAAG,WAAWA,SAAe;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/static/canvas.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/static/canvas.js.map new file mode 100644 index 0000000..fdea23c --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/static/canvas.js.map @@ -0,0 +1 @@ +{"version":3,"file":"canvas.js","sources":["static/canvas.jpg"],"sourcesContent":["export default \"__VITE_ASSET__72ea9485__\""],"names":[],"mappings":";;AAAA,MAAe,SAAA;;"} \ 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 deleted file mode 100644 index be03fa9..0000000 --- a/unpackage/dist/dev/mp-weixin/common/assets.js +++ /dev/null @@ -1,4 +0,0 @@ -"use strict"; -const _imports_0 = "/static/logo.png"; -exports._imports_0 = _imports_0; -//# 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 index 120c5d6..69564f1 100644 --- a/unpackage/dist/dev/mp-weixin/common/vendor.js +++ b/unpackage/dist/dev/mp-weixin/common/vendor.js @@ -2519,21 +2519,21 @@ function injectHook(type, hook, target = currentInstance, prepend = false) { ); } } -const createHook = (lifecycle) => (hook, target = currentInstance) => ( +const createHook$1 = (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( +const onBeforeMount = createHook$1("bm"); +const onMounted = createHook$1("m"); +const onBeforeUpdate = createHook$1("bu"); +const onUpdated = createHook$1("u"); +const onBeforeUnmount = createHook$1("bum"); +const onUnmounted = createHook$1("um"); +const onServerPrefetch = createHook$1("sp"); +const onRenderTriggered = createHook$1( "rtg" ); -const onRenderTracked = createHook( +const onRenderTracked = createHook$1( "rtc" ); function onErrorCaptured(hook, target = currentInstance) { @@ -5902,29 +5902,11 @@ function getOSInfo(system, platform) { osName = platform; osVersion = system; } else { - osName = system.split(" ")[0] || platform; + osName = system.split(" ")[0] || ""; osVersion = system.split(" ")[1] || ""; } - osName = osName.toLocaleLowerCase(); - switch (osName) { - case "harmony": - case "ohos": - case "openharmony": - osName = "harmonyos"; - break; - case "iphone os": - osName = "ios"; - break; - case "mac": - case "darwin": - osName = "macos"; - break; - case "windows_nt": - osName = "windows"; - break; - } return { - osName, + osName: osName.toLocaleLowerCase(), osVersion }; } @@ -5945,9 +5927,9 @@ function populateParameters(fromRes, toRes) { appVersion: "1.0.0", appVersionCode: "100", appLanguage: getAppLanguage(hostLanguage), - uniCompileVersion: "4.61", - uniCompilerVersion: "4.61", - uniRuntimeVersion: "4.61", + uniCompileVersion: "4.57", + uniCompilerVersion: "4.57", + uniRuntimeVersion: "4.57", uniPlatform: "mp-weixin", deviceBrand, deviceModel: model, @@ -6096,9 +6078,9 @@ const getAppBaseInfo = { appLanguage: getAppLanguage(hostLanguage), isUniAppX: false, uniPlatform: "mp-weixin", - uniCompileVersion: "4.61", - uniCompilerVersion: "4.61", - uniRuntimeVersion: "4.61" + uniCompileVersion: "4.57", + uniCompilerVersion: "4.57", + uniRuntimeVersion: "4.57" }; extend(toRes, parameters); } @@ -6379,91 +6361,6 @@ function tryConnectSocket(host2, port, id) { }); }); } -const CONSOLE_TYPES = ["log", "warn", "error", "info", "debug"]; -const originalConsole = /* @__PURE__ */ CONSOLE_TYPES.reduce((methods, type) => { - methods[type] = console[type].bind(console); - return methods; -}, {}); -let sendError = null; -const errorQueue = /* @__PURE__ */ new Set(); -const errorExtra = {}; -function sendErrorMessages(errors) { - if (sendError == null) { - errors.forEach((error) => { - errorQueue.add(error); - }); - return; - } - const data = errors.map((err) => { - if (typeof err === "string") { - return err; - } - const isPromiseRejection = err && "promise" in err && "reason" in err; - const prefix = isPromiseRejection ? "UnhandledPromiseRejection: " : ""; - if (isPromiseRejection) { - err = err.reason; - } - if (err instanceof Error && err.stack) { - if (err.message && !err.stack.includes(err.message)) { - return `${prefix}${err.message} -${err.stack}`; - } - return `${prefix}${err.stack}`; - } - if (typeof err === "object" && err !== null) { - try { - return prefix + JSON.stringify(err); - } catch (err2) { - return prefix + String(err2); - } - } - return prefix + String(err); - }).filter(Boolean); - if (data.length > 0) { - sendError(JSON.stringify(Object.assign({ - type: "error", - data - }, errorExtra))); - } -} -function setSendError(value, extra = {}) { - sendError = value; - Object.assign(errorExtra, extra); - if (value != null && errorQueue.size > 0) { - const errors = Array.from(errorQueue); - errorQueue.clear(); - sendErrorMessages(errors); - } -} -function initOnError() { - function onError2(error) { - try { - if (typeof PromiseRejectionEvent !== "undefined" && error instanceof PromiseRejectionEvent && error.reason instanceof Error && error.reason.message && error.reason.message.includes(`Cannot create property 'errMsg' on string 'taskId`)) { - return; - } - if (true) { - originalConsole.error(error); - } - sendErrorMessages([error]); - } catch (err) { - originalConsole.error(err); - } - } - if (typeof index.onError === "function") { - index.onError(onError2); - } - if (typeof index.onUnhandledRejection === "function") { - index.onUnhandledRejection(onError2); - } - return function offError2() { - if (typeof index.offError === "function") { - index.offError(onError2); - } - if (typeof index.offUnhandledRejection === "function") { - index.offUnhandledRejection(onError2); - } - }; -} function formatMessage(type, args) { try { return { @@ -6496,16 +6393,7 @@ function formatArg(arg, depth = 0) { case "boolean": return formatBoolean(arg); case "object": - try { - return formatObject(arg, depth); - } catch (e) { - return { - type: "object", - value: { - properties: [] - } - }; - } + return formatObject(arg, depth); case "undefined": return formatUndefined(); case "function": @@ -6651,21 +6539,14 @@ function formatObject(value, depth) { } } } - let entries = Object.entries(value); - if (isHarmonyBuilderParams(value)) { - entries = entries.filter(([key]) => key !== "modifier" && key !== "nodeContent"); - } return { type: "object", className, value: { - properties: entries.map((entry) => formatObjectProperty(entry[0], entry[1], depth + 1)) + properties: Object.entries(value).map((entry) => formatObjectProperty(entry[0], entry[1], depth + 1)) } }; } -function isHarmonyBuilderParams(value) { - return value.modifier && value.modifier._attribute && value.nodeContent; -} function isComponentPublicInstance(value) { return value.$ && isComponentInternalInstance(value.$); } @@ -6743,11 +6624,10 @@ function formatMapEntry(value, depth) { value: formatArg(value[1], depth) }; } +const CONSOLE_TYPES = ["log", "warn", "error", "info", "debug"]; let sendConsole = null; const messageQueue = []; const messageExtra = {}; -const EXCEPTION_BEGIN_MARK = "---BEGIN:EXCEPTION---"; -const EXCEPTION_END_MARK = "---END:EXCEPTION---"; function sendConsoleMessages(messages) { if (sendConsole == null) { messageQueue.push(...messages); @@ -6767,6 +6647,10 @@ function setSendConsole(value, extra = {}) { sendConsoleMessages(messages); } } +const originalConsole = /* @__PURE__ */ CONSOLE_TYPES.reduce((methods, type) => { + methods[type] = console[type].bind(console); + return methods; +}, {}); const atFileRegex = /^\s*at\s+[\w/./-]+:\d+$/; function rewriteConsole() { function wrapConsole(type) { @@ -6781,18 +6665,6 @@ function rewriteConsole() { { originalConsole[type](...originalArgs); } - if (type === "error" && args.length === 1) { - const arg = args[0]; - if (typeof arg === "string" && arg.startsWith(EXCEPTION_BEGIN_MARK)) { - const startIndex = EXCEPTION_BEGIN_MARK.length; - const endIndex = arg.length - EXCEPTION_END_MARK.length; - sendErrorMessages([arg.slice(startIndex, endIndex)]); - return; - } else if (arg instanceof Error) { - sendErrorMessages([arg]); - return; - } - } sendConsoleMessages([formatMessage(type, args)]); }; } @@ -6837,10 +6709,87 @@ function isConsoleWritable() { console.log = value; return isWritable; } +let sendError = null; +const errorQueue = /* @__PURE__ */ new Set(); +const errorExtra = {}; +function sendErrorMessages(errors) { + if (sendError == null) { + errors.forEach((error) => { + errorQueue.add(error); + }); + return; + } + const data = errors.map((err) => { + const isPromiseRejection = err && "promise" in err && "reason" in err; + const prefix = isPromiseRejection ? "UnhandledPromiseRejection: " : ""; + if (isPromiseRejection) { + err = err.reason; + } + if (err instanceof Error && err.stack) { + if (err.message && !err.stack.includes(err.message)) { + return `${prefix}${err.message} +${err.stack}`; + } + return `${prefix}${err.stack}`; + } + if (typeof err === "object" && err !== null) { + try { + return prefix + JSON.stringify(err); + } catch (err2) { + return prefix + String(err2); + } + } + return prefix + String(err); + }).filter(Boolean); + if (data.length > 0) { + sendError(JSON.stringify(Object.assign({ + type: "error", + data + }, errorExtra))); + } +} +function setSendError(value, extra = {}) { + sendError = value; + Object.assign(errorExtra, extra); + if (value != null && errorQueue.size > 0) { + const errors = Array.from(errorQueue); + errorQueue.clear(); + sendErrorMessages(errors); + } +} +function initOnError() { + function onError2(error) { + try { + if (typeof PromiseRejectionEvent !== "undefined" && error instanceof PromiseRejectionEvent && error.reason instanceof Error && error.reason.message && error.reason.message.includes(`Cannot create property 'errMsg' on string 'taskId`)) { + return; + } + if (true) { + originalConsole.error(error); + } + sendErrorMessages([error]); + } catch (err) { + originalConsole.error(err); + } + } + if (typeof index.onError === "function") { + index.onError(onError2); + } + if (typeof index.onUnhandledRejection === "function") { + index.onUnhandledRejection(onError2); + } + return function offError2() { + if (typeof index.offError === "function") { + index.offError(onError2); + } + if (typeof index.offUnhandledRejection === "function") { + index.offUnhandledRejection(onError2); + } + }; +} function initRuntimeSocketService() { - const hosts = "192.168.160.1,192.168.229.1,172.10.0.126,127.0.0.1"; + const hosts = "127.0.0.1,172.10.0.117"; const port = "8090"; - const id = "mp-weixin_Q6XvSB"; + const id = "mp-weixin_c9b8fP"; const lazy = typeof swan !== "undefined"; let restoreError = lazy ? () => { } : initOnError(); @@ -6856,19 +6805,13 @@ function initRuntimeSocketService() { restoreError(); restoreConsole(); originalConsole.error(wrapError("开发模式下日志通道建立 socket 连接失败。")); - { - originalConsole.error(wrapError("小程序平台,请勾选不校验合法域名配置。")); - } + originalConsole.error(wrapError("如果是小程序平台,请勾选不校验合法域名配置。")); originalConsole.error(wrapError("如果是运行到真机,请确认手机与电脑处于同一网络。")); return false; } - { - initMiniProgramGlobalFlag(); - } + initMiniProgramGlobalFlag(); socket.onClose(() => { - { - originalConsole.error(wrapError("开发模式下日志通道 socket 连接关闭,请在 HBuilderX 中重新运行。")); - } + originalConsole.error(wrapError("开发模式下日志通道 socket 连接关闭,请在 HBuilderX 中重新运行。")); restoreError(); restoreConsole(); }); @@ -7785,11 +7728,16 @@ const createSubpackageApp = initCreateSubpackageApp(); wx.createPluginApp = global.createPluginApp = createPluginApp; wx.createSubpackageApp = global.createSubpackageApp = createSubpackageApp; } +const createHook = (lifecycle) => (hook, target = getCurrentInstance()) => { + !isInSSRComponentSetup && injectHook(lifecycle, hook, target); +}; +const onReady = /* @__PURE__ */ createHook(ON_READY); exports._export_sfc = _export_sfc; exports.createSSRApp = createSSRApp; exports.getCurrentInstance = getCurrentInstance; exports.index = index; exports.o = o; exports.onMounted = onMounted; +exports.onReady = onReady; exports.ref = ref; //# sourceMappingURL=../../.sourcemap/mp-weixin/common/vendor.js.map diff --git a/unpackage/dist/dev/mp-weixin/index.js b/unpackage/dist/dev/mp-weixin/index.js index 756d3d3..1525d68 100644 --- a/unpackage/dist/dev/mp-weixin/index.js +++ b/unpackage/dist/dev/mp-weixin/index.js @@ -3,32 +3,91 @@ const common_vendor = require("./common/vendor.js"); const _sfc_main = { __name: "index", setup(__props) { - const canvasWidth = common_vendor.ref(200); - const canvasHeight = common_vendor.ref(200); + common_vendor.ref(375); + common_vendor.ref(400); const instance = common_vendor.getCurrentInstance(); - function draw() { + const scale = common_vendor.ref(1); + const offsetX = common_vendor.ref(0); + const offsetY = common_vendor.ref(0); + const lastDistance = common_vendor.ref(-1); + const startX = common_vendor.ref(0); + const startY = common_vendor.ref(0); + const isDragging = common_vendor.ref(false); + const imgUrl = common_vendor.ref("https://assets.sx25.troyrc.com/sx25/images/events/XBDT.jpg"); + async function draw() { const ctx = common_vendor.index.createCanvasContext("canvas", instance); - common_vendor.index.__f__("log", "at pages/index/index.vue:20", ctx, "12"); - ctx.beginPath(); - ctx.arc(100, 100, 80, 0, Math.PI * 2); - ctx.setFillStyle("rgba(0, 0, 0, 1)"); - ctx.fill(); - ctx.beginPath(); - ctx.arc(100, 100, 75, 0, Math.PI * 2); - ctx.setFillStyle("white"); - ctx.fill(); + ctx.scale(scale.value, scale.value); + const res = await common_vendor.index.getImageInfo({ + src: imgUrl.value + }); + ctx.drawImage(res.path, 0, 0); ctx.draw(); } + const handleTouchStart = (e) => { + common_vendor.index.__f__("log", "at pages/index/index.vue:93", "handleTouchStart"); + if (e.touches.length === 1) { + startX.value = e.touches[0].clientX - offsetX.value; + startY.value = e.touches[0].clientY - offsetY.value; + isDragging.value = true; + } else if (e.touches.length === 2) { + const x1 = e.touches[0].clientX; + const y1 = e.touches[0].clientY; + const x2 = e.touches[1].clientX; + const y2 = e.touches[1].clientY; + lastDistance.value = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); + } + }; + const handleTouchMove = (e) => { + common_vendor.index.__f__("log", "at pages/index/index.vue:111", "handleTouchMove"); + if (e.touches.length === 1 && isDragging.value) { + const currentX = e.touches[0].clientX - startX.value; + const currentY = e.touches[0].clientY - startY.value; + offsetX.value = currentX; + offsetY.value = currentY; + } else if (e.touches.length === 2) { + const x1 = e.touches[0].clientX; + const y1 = e.touches[0].clientY; + const x2 = e.touches[1].clientX; + const y2 = e.touches[1].clientY; + const distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); + if (lastDistance.value > 0) { + const newScale = scale.value * (distance / lastDistance.value); + scale.value = Math.min(Math.max(newScale, 0.5), 4); + } + lastDistance.value = distance; + } + }; + const handleTouchEnd = () => { + common_vendor.index.__f__("log", "at pages/index/index.vue:136", "handleTouchEnd"); + lastDistance.value = -1; + isDragging.value = false; + }; const handleDraw = () => { draw(); }; - common_vendor.onMounted(() => { + common_vendor.onReady(() => { + common_vendor.index.__f__("log", "at pages/index/index.vue:153", "onReadyonReady"); + common_vendor.index.downloadFile({ + url: imgUrl.value, + success: function(sres) { + common_vendor.index.__f__("log", "at pages/index/index.vue:157", sres, "sres"); + imgUrl.value = sres.tempFilePath || sres.path; + draw(); + }, + fail: function(fres) { + common_vendor.index.__f__("log", "at pages/index/index.vue:161", "fres", fres); + } + }); }); return (_ctx, _cache) => { return { - a: canvasWidth.value, - b: canvasHeight.value, - c: common_vendor.o(handleDraw) + a: common_vendor.o(handleTouchStart), + b: common_vendor.o(handleTouchMove), + c: common_vendor.o(handleTouchEnd), + d: "1000px", + e: "800px", + f: `translate(${offsetX.value}px, ${offsetY.value}px) scale(${scale.value})`, + g: common_vendor.o(handleDraw) }; }; } diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index.wxml b/unpackage/dist/dev/mp-weixin/pages/index/index.wxml index 8d9d9fc..0bd41a7 100644 --- a/unpackage/dist/dev/mp-weixin/pages/index/index.wxml +++ b/unpackage/dist/dev/mp-weixin/pages/index/index.wxml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/index/indexFu.js b/unpackage/dist/dev/mp-weixin/pages/index/indexFu.js deleted file mode 100644 index 4d0785a..0000000 --- a/unpackage/dist/dev/mp-weixin/pages/index/indexFu.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict"; -require("../../common/vendor.js"); -if (!Math) { - indexZi(); -} -const indexZi = () => "./index2.js"; -const _sfc_main = { - __name: "indexFu", - setup(__props) { - return (_ctx, _cache) => { - return {}; - }; - } -}; -wx.createPage(_sfc_main); -//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/index/indexFu.js.map diff --git a/unpackage/dist/dev/mp-weixin/pages/index/indexFu.json b/unpackage/dist/dev/mp-weixin/pages/index/indexFu.json deleted file mode 100644 index 3c6e243..0000000 --- a/unpackage/dist/dev/mp-weixin/pages/index/indexFu.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "navigationBarTitleText": "fu", - "usingComponents": { - "index-zi": "./index" - } -} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/index/indexFu.wxml b/unpackage/dist/dev/mp-weixin/pages/index/indexFu.wxml deleted file mode 100644 index 55b40e8..0000000 --- a/unpackage/dist/dev/mp-weixin/pages/index/indexFu.wxml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/index/indexFu.wxss b/unpackage/dist/dev/mp-weixin/pages/index/indexFu.wxss deleted file mode 100644 index e69de29..0000000 diff --git a/unpackage/dist/dev/mp-weixin/pages/index/step2.wxml b/unpackage/dist/dev/mp-weixin/pages/index/step2.wxml index 4e195fb..f705531 100644 --- a/unpackage/dist/dev/mp-weixin/pages/index/step2.wxml +++ b/unpackage/dist/dev/mp-weixin/pages/index/step2.wxml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/project.config.json b/unpackage/dist/dev/mp-weixin/project.config.json index 1a75e49..cd73585 100644 --- a/unpackage/dist/dev/mp-weixin/project.config.json +++ b/unpackage/dist/dev/mp-weixin/project.config.json @@ -19,7 +19,7 @@ }, "compileType": "miniprogram", "libVersion": "3.8.3", - "appid": "touristappid", + "appid": "wx5c9edf82da6032c4", "projectname": "canvas", "condition": {}, "editorSetting": { diff --git a/unpackage/dist/dev/mp-weixin/project.private.config.json b/unpackage/dist/dev/mp-weixin/project.private.config.json index 38a7329..de0e568 100644 --- a/unpackage/dist/dev/mp-weixin/project.private.config.json +++ b/unpackage/dist/dev/mp-weixin/project.private.config.json @@ -2,6 +2,7 @@ "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", "projectname": "canvas", "setting": { - "compileHotReLoad": true + "compileHotReLoad": true, + "urlCheck": false } } \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/static/canvas.jpg b/unpackage/dist/dev/mp-weixin/static/canvas.jpg new file mode 100644 index 0000000000000000000000000000000000000000..204f55d6d8cce7f5fe12d88b59935646d243f653 GIT binary patch literal 195625 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%0A5&H0qutmAwjCYWHI=!8<%;ct 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