diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..438484b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+unpackage/*
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin-devtools/pages/index/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin-devtools/pages/index/index.js.map
deleted file mode 100644
index 08bb3b2..0000000
--- a/unpackage/dist/dev/.sourcemap/mp-weixin-devtools/pages/index/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"names":["uniNoticeBar","_sfc_main","components","onLoad","getConfig","userId","common_vendor","index","getStorageSync","login","data","bg","imagePath","name","phone","base64","workUnit","address","createTime","number","model","recordList","methods","request","url","method","Promise","resolve","reject","header","timeout","success","res","__f__","statusCode","Error","concat","fail","err","_this","_asyncToGenerator2","_regeneratorRuntime2","mark","_callee","wrap","_callee$","_context","prev","next","sent","home","stop","wxLogin","provider","onlyAuthorize","_success","_callee2","_callee2$","_context2","code","_x","apply","arguments","_this2","_callee3","wxCode","_callee3$","_context3","setStorageSync","user_id","message","t0","openReceivePop","$refs","receivePop","open","closeReceivePop","close","openRecordPop","_this3","_callee4","_callee4$","_context4","loadRecordList","recordPop","_this4","_callee5","result","_callee5$","_context5","showLoading","title","hideLoading","closeRecordPop","seleImg","_this5","_callee6","_yield$common_utils$p","path","_callee6$","_context6","common_utils","processImage","length","showToast","icon","finish","validateForm","trim","submitForm","_this6","_callee7","formData","_callee7$","_context7","abrupt","UserId","Name","Phone","Company","Address","ProductModel","ProductSerialNumber","ProductDate","ProductImage","clearForm","previewImage","current","urls","wx","createPage","MiniProgramPage"],"sources":["index.vue","cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["\r\n\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t设备专属权益兑换\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t领取记录\r\n\t\t\r\n\r\n\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\r\n\t\t\t\t恭喜您获得赠礼\r\n\r\n\t\t\t\t填写地址和产品信息,送货上门\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\t—— 收货地址填写 ——\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t姓名\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t联系方式\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t工作单位\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t收货地址\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\t—— 产品信息填写 ——\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t型号\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t出品编号\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t出品年月\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t+\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t拍摄并上传清晰的产品铭牌信息用于辅助审核,通过后立即发货\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t关闭\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t提交\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t领取记录\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ item.name }}\r\n\t\t\t\t\t\t\t\t{{ item.phone }}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ item.time }}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{{ item.address }}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'D:/CodeManage/gift/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"mappings":"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","ignoreList":[]}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin-devtools/uni_modules/uni-transition/components/uni-transition/uni-transition.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin-devtools/uni_modules/uni-transition/components/uni-transition/uni-transition.js.map
deleted file mode 100644
index a763156..0000000
--- a/unpackage/dist/dev/.sourcemap/mp-weixin-devtools/uni_modules/uni-transition/components/uni-transition/uni-transition.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"names":["_sfc_main","name","emits","props","show","type","Boolean","default","modeClass","Array","String","_default","duration","Number","styles","Object","customClass","onceRender","data","isShow","transform","opacity","animationData","durationTime","config","watch","handler","newVal","open","close","immediate","computed","stylesObject","_objectSpread2","i","line","toLine","transformStyles","created","timingFunction","transformOrigin","delay","methods","init","obj","arguments","length","undefined","animation","uni_modules_uniTransition_components_uniTransition_createAnimation","createAnimation","assign","onClick","$emit","detail","step","_this","keys","forEach","key","value","_this$animation","isArray","apply","_toConsumableArray2","run","fn","_this2","clearTimeout","timer","styleInit","$nextTick","setTimeout","tranfromInit","_this3","_this3$styleInit","_this4","buildStyle","type2","mode","animationType","startsWith","_this5","buildTranfrom","aniNum","animationMode","fade","concat","replace","toLowerCase","wx","createComponent","Component"],"sources":["uni-transition.vue","RDovQ29kZU1hbmFnZS9naWZ0L3VuaV9tb2R1bGVzL3VuaS10cmFuc2l0aW9uL2NvbXBvbmVudHMvdW5pLXRyYW5zaXRpb24vdW5pLXRyYW5zaXRpb24udnVl"],"sourcesContent":["\r\n\t\r\n\t\r\n\t\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\t\r\n\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n","import Component from 'D:/CodeManage/gift/uni_modules/uni-transition/components/uni-transition/uni-transition.vue'\nwx.createComponent(Component)"],"mappings":";;;;;;;AAgCC,IAAKA,SAAA,GAAU;EACdC,IAAA,EAAM;EACNC,KAAA,EAAO,CAAC,SAAS,QAAQ;EACzBC,KAAA,EAAO;IACNC,IAAA,EAAM;MACLC,IAAA,EAAMC,OAAA;MACNC,OAAA,EAAS;IACT;IACDC,SAAA,EAAW;MACVH,IAAA,EAAM,CAACI,KAAA,EAAOC,MAAM;MACpBH,OAAA,WAAAI,SAAA,EAAW;QACV,OAAO;MACR;IACA;IACDC,QAAA,EAAU;MACTP,IAAA,EAAMQ,MAAA;MACNN,OAAA,EAAS;IACT;IACDO,MAAA,EAAQ;MACPT,IAAA,EAAMU,MAAA;MACNR,OAAA,WAAAI,SAAA,EAAW;QACV,OAAO,CAAC;MACT;IACA;IACDK,WAAA,EAAa;MACZX,IAAA,EAAMK,MAAA;MACNH,OAAA,EAAS;IACT;IACDU,UAAA,EAAY;MACXZ,IAAA,EAAMC,OAAA;MACNC,OAAA,EAAS;IACT;EACD;EACDW,IAAA,WAAAA,KAAA,EAAO;IACN,OAAO;MACNC,MAAA,EAAQ;MACRC,SAAA,EAAW;MACXC,OAAA,EAAS;MACTC,aAAA,EAAe,CAAE;MACjBC,YAAA,EAAc;MACdC,MAAA,EAAQ,CAAC;IACV;EACA;EACDC,KAAA,EAAO;IACNrB,IAAA,EAAM;MACLsB,OAAA,WAAAA,QAAQC,MAAA,EAAQ;QACf,IAAIA,MAAA,EAAQ;UACX,KAAKC,IAAA,EAAK;QAAA,OACJ;UAEN,IAAI,KAAKT,MAAA,EAAQ;YAChB,KAAKU,KAAA,EAAM;UACZ;QACD;MACA;MACDC,SAAA,EAAW;IACZ;EACA;EACDC,QAAA,EAAU;IAAA;IAETC,YAAA,WAAAA,aAAA,EAAe;MACd,IAAIlB,MAAA,GAAAmB,cAAA,CAAAA,cAAA,KACA,KAAKnB,MAAA;QACR,uBAAuB,KAAKF,QAAA,GAAW,MAAO;MAAA,EAC/C;MACA,IAAIQ,SAAA,GAAY;MAChB,SAASc,CAAA,IAAKpB,MAAA,EAAQ;QACrB,IAAIqB,IAAA,GAAO,KAAKC,MAAA,CAAOF,CAAC;QACxBd,SAAA,IAAae,IAAA,GAAO,MAAMrB,MAAA,CAAOoB,CAAC,IAAI;MACvC;MACA,OAAOd,SAAA;IACP;IAAA;IAEDiB,eAAA,WAAAA,gBAAA,EAAkB;MACjB,OAAO,eAAe,KAAKjB,SAAA,GAAY,cAAmB,KAAKC,OAAA,GAAU,MAAM,KAAKW,YAAA;IACrF;EACA;EACDM,OAAA,WAAAA,QAAA,EAAU;IAET,KAAKd,MAAA,GAAS;MACbZ,QAAA,EAAU,KAAKA,QAAA;MACf2B,cAAA,EAAgB;MAChBC,eAAA,EAAiB;MACjBC,KAAA,EAAO;IACR;IACA,KAAKlB,YAAA,GAAe,KAAKX,QAAA;EACzB;EACD8B,OAAA,EAAS;IAAA;AAAA;AAAA;IAIRC,IAAA,WAAAA,KAAA,EAAe;MAAA,IAAVC,GAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAM;MACV,IAAID,GAAA,CAAIhC,QAAA,EAAU;QACjB,KAAKW,YAAA,GAAeqB,GAAA,CAAIhC,QAAA;MACzB;MACA,KAAKoC,SAAA,GAAYC,kEAAA,CAAeC,eAAA,CAACnC,MAAA,CAAOoC,MAAA,CAAO,KAAK3B,MAAA,EAAQoB,GAAG,GAAG,IAAI;IACtE;IAAA;AAAA;AAAA;IAIDQ,OAAA,WAAAA,QAAA,EAAU;MACT,KAAKC,KAAA,CAAM,SAAS;QACnBC,MAAA,EAAQ,KAAKnC;MAAA,CACb;IACD;IAAA;AAAA;AAAA;AAAA;IAKDoC,IAAA,WAAAA,KAAKX,GAAA,EAAkB;MAAA,IAAAY,KAAA;MAAA,IAAbhC,MAAA,GAAAqB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAS;MAClB,IAAI,CAAC,KAAKG,SAAA,EAAW,OAAO;MAC5BjC,MAAA,CAAO0C,IAAA,CAAKb,GAAG,EAAEc,OAAA,CAAQ,UAAAC,GAAA,EAAO;QAC/B,IAAMC,KAAA,GAAQhB,GAAA,CAAIe,GAAG;QACrB,IAAI,OAAOH,KAAA,CAAKR,SAAA,CAAUW,GAAG,MAAM,YAAY;UAAA,IAAAE,eAAA;UAC9CpD,KAAA,CAAMqD,OAAA,CAAQF,KAAK,IAClB,CAAAC,eAAA,GAAAL,KAAA,CAAKR,SAAA,EAAUW,GAAG,EAAAI,KAAA,CAAAF,eAAA,EAAAG,mBAAA,CAAKJ,KAAK,KAC5BJ,KAAA,CAAKR,SAAA,CAAUW,GAAG,EAAEC,KAAK;QAC3B;MAAA,CACA;MACD,KAAKZ,SAAA,CAAUO,IAAA,CAAK/B,MAAM;MAC1B,OAAO;IACP;IAAA;AAAA;AAAA;IAIDyC,GAAA,WAAAA,IAAIC,EAAA,EAAI;MACP,IAAI,CAAC,KAAKlB,SAAA,EAAW;MACrB,KAAKA,SAAA,CAAUiB,GAAA,CAAIC,EAAE;IACrB;IAAA;IAEDtC,IAAA,WAAAA,KAAA,EAAO;MAAA,IAAAuC,MAAA;MACNC,YAAA,CAAa,KAAKC,KAAK;MACvB,KAAKlD,MAAA,GAAS;MAEd,KAAKC,SAAA,GAAY,KAAKkD,SAAA,CAAU,KAAK,EAAElD,SAAA,IAAa;MACpD,KAAKC,OAAA,GAAU,KAAKiD,SAAA,CAAU,KAAK,EAAEjD,OAAA,IAAW;MAGhD,KAAKkD,SAAA,CAAU,YAAM;QAEpBJ,MAAA,CAAKE,KAAA,GAAQG,UAAA,CAAW,YAAM;UAC7BL,MAAA,CAAKnB,SAAA,GAAYC,kEAAA,CAAAC,eAAA,CAAgBiB,MAAA,CAAK3C,MAAA,EAAQ2C,MAAI;UAClDA,MAAA,CAAKM,YAAA,CAAa,KAAK,EAAElB,IAAA,EAAK;UAC9BY,MAAA,CAAKnB,SAAA,CAAUiB,GAAA,CAAI,YAAM;YAMxBE,MAAA,CAAK/C,SAAA,GAAY;YACjB+C,MAAA,CAAK9C,OAAA,GAAU8C,MAAA,CAAKG,SAAA,CAAU,KAAK,EAAEjD,OAAA,IAAW;YAEhD8C,MAAA,CAAKd,KAAA,CAAM,UAAU;cACpBC,MAAA,EAAQa,MAAA,CAAKhD;YAAA,CACb;UAAA,CACD;QACD,GAAE,EAAE;MAAA,CACL;IACD;IAAA;IAEDU,KAAA,WAAAA,MAAMxB,IAAA,EAAM;MAAA,IAAAqE,MAAA;MACX,IAAI,CAAC,KAAK1B,SAAA,EAAW;MACrB,KAAKyB,YAAA,CAAa,IAAI,EACpBlB,IAAA,EAAK,CACLU,GAAA,CAAI,YAAM;QACVS,MAAA,CAAKvD,MAAA,GAAS;QACduD,MAAA,CAAKpD,aAAA,GAAgB;QACrBoD,MAAA,CAAK1B,SAAA,GAAY;QACjB,IAAA2B,gBAAA,GAA6BD,MAAA,CAAKJ,SAAA,CAAU,KAAK;UAA3CjD,OAAA,GAAAsD,gBAAA,CAAAtD,OAAA;UAASD,SAAA,GAAAuD,gBAAA,CAAAvD,SAAA;QACfsD,MAAA,CAAKrD,OAAA,GAAUA,OAAA,IAAW;QAC1BqD,MAAA,CAAKtD,SAAA,GAAYA,SAAA;QACjBsD,MAAA,CAAKrB,KAAA,CAAM,UAAU;UACpBC,MAAA,EAAQoB,MAAA,CAAKvD;QAAA,CACb;MAAA,CACD;IACF;IAAA;IAEDmD,SAAA,WAAAA,UAAUjE,IAAA,EAAM;MAAA,IAAAuE,MAAA;MACf,IAAI9D,MAAA,GAAS;QAAEM,SAAA,EAAW;QAAIC,OAAA,EAAS;MAAE;MACzC,IAAMwD,UAAA,GAAa,SAAbA,WAAcC,KAAA,EAAMC,IAAA,EAAS;QAClC,IAAMnB,KAAA,GAAQgB,MAAA,CAAKI,aAAA,CAAcF,KAAI,EAAEC,IAAI;QAC3C,IAAIA,IAAA,CAAKE,UAAA,CAAW,MAAM,GAAG;UAC5BnE,MAAA,CAAOO,OAAA,GAAUuC,KAAA;QAAA,OACX;UACN9C,MAAA,CAAOM,SAAA,IAAawC,KAAA,GAAQ;QAC7B;MACD;MAEA,IAAI,OAAO,KAAKpD,SAAA,KAAc,UAAU;QACvCqE,UAAA,CAAWxE,IAAA,EAAM,KAAKG,SAAS;MAAA,OACzB;QACN,KAAKA,SAAA,CAAUkD,OAAA,CAAQ,UAAAqB,IAAA;UAAA,OAAQF,UAAA,CAAWxE,IAAA,EAAM0E,IAAI,CAAC;QAAA;MACtD;MACA,OAAOjE,MAAA;IACP;IAAA;IAED2D,YAAA,WAAAA,aAAapE,IAAA,EAAM;MAAA,IAAA6E,MAAA;MAClB,IAAIC,aAAA,GAAgB,SAAhBA,cAAiBL,KAAA,EAAMC,IAAA,EAAS;QACnC,IAAIK,MAAA,GAAS;QACb,IAAIL,IAAA,KAAS,QAAQ;UACpBK,MAAA,GAASN,KAAA,GAAO,IAAI;QAAA,OACd;UACNM,MAAA,GAASN,KAAA,GAAO,UAAU;UAC1B,IAAIC,IAAA,KAAS,WAAW;YACvBK,MAAA,GAASN,KAAA,GAAO,MAAM;UACvB;UACA,IAAIC,IAAA,KAAS,YAAY;YACxBK,MAAA,GAASN,KAAA,GAAO,MAAM;UACvB;UACA,IAAIC,IAAA,KAAS,eAAe;YAC3BK,MAAA,GAASN,KAAA,GAAO,SAAS;UAC1B;UACA,IAAIC,IAAA,KAAS,gBAAgB;YAC5BK,MAAA,GAASN,KAAA,GAAO,SAAS;UAC1B;QACD;QACAI,MAAA,CAAKlC,SAAA,CAAUkC,MAAA,CAAKG,aAAA,EAAe,CAACN,IAAI,CAAC,EAAEK,MAAM;MAClD;MACA,IAAI,OAAO,KAAK5E,SAAA,KAAc,UAAU;QACvC2E,aAAA,CAAc9E,IAAA,EAAM,KAAKG,SAAS;MAAA,OAC5B;QACN,KAAKA,SAAA,CAAUkD,OAAA,CAAQ,UAAAqB,IAAA,EAAQ;UAC9BI,aAAA,CAAc9E,IAAA,EAAM0E,IAAI;QAAA,CACxB;MACF;MAEA,OAAO,KAAK/B,SAAA;IACZ;IACDgC,aAAA,WAAAA,cAAc3E,IAAA,EAAM;MACnB,OAAO;QACNiF,IAAA,EAAMjF,IAAA,GAAO,IAAI;QACjB,2BAAAkF,MAAA,CAA2BlF,IAAA,GAAO,MAAM,OAAO;QAC/C,6BAAAkF,MAAA,CAA6BlF,IAAA,GAAO,MAAM,MAAM;QAChD,8BAAAkF,MAAA,CAA8BlF,IAAA,GAAO,MAAM,MAAM;QACjD,4BAAAkF,MAAA,CAA4BlF,IAAA,GAAO,MAAM,OAAO;QAChD,qBAAAkF,MAAA,CAAqBlF,IAAA,GAAO,IAAI,GAAG,eAAAkF,MAAA,CAAYlF,IAAA,GAAO,IAAI,GAAG;QAC7D,sBAAAkF,MAAA,CAAsBlF,IAAA,GAAO,IAAI,GAAG,eAAAkF,MAAA,CAAYlF,IAAA,GAAO,IAAI,GAAG;MAC/D;IACA;IAAA;IAEDgF,aAAA,WAAAA,cAAA,EAAgB;MACf,OAAO;QACNC,IAAA,EAAM;QACN,aAAa;QACb,eAAe;QACf,gBAAgB;QAChB,cAAc;QACd,WAAW;QACX,YAAY;MACb;IACA;IAAA;IAEDlD,MAAA,WAAAA,OAAOnC,IAAA,EAAM;MACZ,OAAOA,IAAA,CAAKuF,OAAA,CAAQ,YAAY,KAAK,EAAEC,WAAA,EAAY;IACpD;EACD;AACD;;;;;;;;;;;;;AC/RDC,EAAA,CAAGC,eAAA,CAAgBC,SAAS","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
deleted file mode 100644
index 1f6c440..0000000
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"app.js","sources":["App.vue","main.js"],"sourcesContent":["\r\n\r\n","import App from './App'\r\n\r\n// #ifndef VUE3\r\nimport Vue from 'vue'\r\nimport './uni.promisify.adaptor'\r\nVue.config.productionTip = false\r\nApp.mpType = 'app'\r\nconst app = new Vue({\r\n ...App\r\n})\r\napp.$mount()\r\n// #endif\r\n\r\n// #ifdef VUE3\r\nimport { createSSRApp } from 'vue'\r\nexport function createApp() {\r\n const app = createSSRApp(App)\r\n return {\r\n app\r\n }\r\n}\r\n// #endif"],"names":["uni","createSSRApp","App"],"mappings":";;;;;;AACC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,gBAAY,YAAY;AAAA,EACxB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,UAAU;AAAA,EACtB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACvB;AACD;ACIM,SAAS,YAAY;AAC1B,QAAM,MAAMC,cAAY,aAACC,SAAG;AAC5B,SAAO;AAAA,IACL;AAAA,EACD;AACH;;;"}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map
deleted file mode 100644
index b416c89..0000000
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"assets.js","sources":["static/ic_close.png"],"sourcesContent":["export default \"__VITE_ASSET__96212905__\""],"names":[],"mappings":";AAAA,MAAe,aAAA;;"}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/utils.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/utils.js.map
deleted file mode 100644
index 8ba7223..0000000
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/common/utils.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"utils.js","sources":["common/utils.js"],"sourcesContent":["// /**\n// * 获取文件大小(Promise封装)\n// * @param {string} filePath \n// * @returns {Promise} 文件字节数\n// */\n// const getFileSize = (filePath) => {\n// return new Promise(resolve => {\n// uni.getFileInfo({\n// filePath,\n// success: (res) => resolve(res.size),\n// fail: () => resolve(Infinity)\n// });\n// });\n// };\n\n\n/**\n * 获取文件大小(兼容新版API)\n * @param {string} filePath \n * @returns {Promise} 文件字节数\n */\nconst getFileSize = async (filePath) => {\n try {\n const res = await new Promise((resolve, reject) => {\n\n wx.getFileSystemManager().getFileInfo({\n filePath,\n success: resolve,\n fail: reject\n });\n });\n return res.size || Infinity;\n } catch (err) {\n console.error('获取文件大小失败:', err);\n return Infinity;\n }\n };\n\n/**\n * 执行图片压缩(Promise封装)\n * @param {string} src \n * @param {number} quality \n * @returns {Promise} 压缩后的临时路径\n */\nconst doCompressImage = (src, quality) => {\n return new Promise(resolve => {\n uni.compressImage({\n src,\n quality,\n success: (res) => resolve(res.tempFilePath),\n fail: () => resolve(src) // 失败返回原路径\n });\n });\n};\n\n/**\n * 智能图片压缩(支持多平台)\n * @param {string} tempFilePath - 图片临时路径\n * @param {number} maxSize - 目标最大字节数(默认500KB)\n * @param {number} [initialQuality=80] - 初始压缩质量(1-100)\n * @returns {Promise} 压缩后的临时路径\n */\nexport const compressImage = async (tempFilePath, maxSize = 500 * 1024, initialQuality = 80) => {\n let quality = initialQuality;\n let compressedPath = tempFilePath;\n let currentSize = Infinity;\n\n // 二分法压缩参数\n let low = 10;\n let high = initialQuality;\n\n while (low <= high) {\n quality = Math.floor((low + high) / 2);\n\n // 使用提取的Promise方法\n compressedPath = await doCompressImage(tempFilePath, quality);\n currentSize = await getFileSize(compressedPath);\n\n if (currentSize <= maxSize) {\n low = quality + 1; // 尝试更高质量\n } else {\n high = quality - 1; // 降低质量\n }\n\n if (high - low < 5) break; // 安全阀\n }\n\n // 最终强制压缩(如果仍未达标)\n if (currentSize > maxSize) {\n compressedPath = await doCompressImage(tempFilePath, 10);\n }\n\n return compressedPath;\n};\n\n\n/**\n * 精准图片压缩(优化版)\n * @param {string} tempFilePath - 图片临时路径\n * @param {number} targetSize - 目标字节数(默认500KB)\n * @param {number} [initialQuality=85] - 初始压缩质量(1-100)\n * @returns {Promise<{path: string, quality: number, iterations: number, finalSize: number}>}\n */\nexport const preciseCompress = async (tempFilePath, targetSize = 500 * 1024, initialQuality = 85) => {\n let quality = initialQuality;\n let compressedPath = tempFilePath;\n let currentSize = Infinity;\n let iterations = 0;\n const maxIterations = 10; // 增加最大迭代次数\n const history = []; // 记录每次压缩结果用于分析\n \n // 首先检查原图大小,如果已经满足直接返回\n const originalSize = await getFileSize(tempFilePath);\n if (originalSize <= targetSize) {\n return { path: tempFilePath, quality: 100, iterations: 0, finalSize: originalSize };\n }\n\n // 智能预测初始质量范围(新增)\n const predictQualityRange = (originalSize, targetSize) => {\n const ratio = targetSize / originalSize;\n if (ratio > 0.8) return { low: 70, high: 95 };\n if (ratio > 0.5) return { low: 45, high: 75 };\n if (ratio > 0.3) return { low: 25, high: 50 };\n if (ratio > 0.1) return { low: 10, high: 30 };\n return { low: 5, high: 15 }; // 极限压缩\n };\n\n const { low: predictedLow, high: predictedHigh } = predictQualityRange(originalSize, targetSize);\n let low = predictedLow;\n let high = Math.min(predictedHigh, initialQuality);\n\n console.log(`预测质量范围: ${low}-${high} (原图${(originalSize/1024).toFixed(2)}KB → 目标${(targetSize/1024).toFixed(2)}KB)`);\n\n // 动态调整二分法边界(优化版)\n const adjustBounds = (currentQuality, currentSize, targetSize) => {\n const sizeRatio = currentSize / targetSize;\n const qualityDelta = Math.max(2, Math.floor(currentQuality * 0.1)); // 动态调整幅度\n\n if (sizeRatio > 2.5) {\n return { lowDelta: -qualityDelta * 2, highDelta: -qualityDelta };\n } else if (sizeRatio > 1.5) {\n return { lowDelta: -qualityDelta, highDelta: -Math.floor(qualityDelta / 2) };\n } else if (sizeRatio > 1.1) {\n return { lowDelta: -3, highDelta: -1 };\n } else {\n return { lowDelta: -1, highDelta: 0 };\n }\n };\n\n let bestResult = null; // 记录最佳结果\n\n while (iterations < maxIterations && low <= high) {\n iterations++;\n quality = Math.floor((low + high) / 2);\n\n // 跳过已经测试过的quality值\n if (history.some(item => item.quality === quality)) {\n break;\n }\n\n compressedPath = await doCompressImage(tempFilePath, quality);\n currentSize = await getFileSize(compressedPath);\n history.push({ quality, size: currentSize });\n\n console.log(`第${iterations}次尝试: quality=${quality} → ${(currentSize / 1024).toFixed(2)}KB (目标${(targetSize/1024).toFixed(2)}KB)`);\n\n // 更新最佳结果\n if (!bestResult || Math.abs(currentSize - targetSize) < Math.abs(bestResult.size - targetSize)) {\n bestResult = { quality, size: currentSize, path: compressedPath };\n }\n\n // 精准匹配检查(容差范围调整为3%)\n if (Math.abs(currentSize - targetSize) < targetSize * 0.03) {\n console.log('✅ 达到精准匹配,提前结束');\n break;\n }\n\n if (currentSize > targetSize) {\n const { lowDelta, highDelta } = adjustBounds(quality, currentSize, targetSize);\n high = Math.max(5, quality + highDelta); // 确保不会低于最小值\n } else {\n low = quality + 1; // 当小于目标时,尝试更高质量\n }\n\n // 收敛检查\n if (high - low <= 1) break;\n }\n\n // 如果最佳结果仍然超标,尝试极限压缩\n if (bestResult && bestResult.size > targetSize * 1.1) {\n console.log('🔥 尝试极限压缩...');\n const extremePath = await doCompressImage(tempFilePath, 5);\n const extremeSize = await getFileSize(extremePath);\n console.log(`极限压缩结果: quality=5 → ${(extremeSize / 1024).toFixed(2)}KB`);\n \n if (extremeSize < bestResult.size) {\n bestResult = { quality: 5, size: extremeSize, path: extremePath };\n }\n }\n\n const finalResult = bestResult || { quality: 10, size: currentSize, path: compressedPath };\n \n console.log(`🎯 最终结果:quality=${finalResult.quality} → ${(finalResult.size / 1024).toFixed(2)}KB` +\n `(迭代${iterations}次,压缩率${((1 - finalResult.size / originalSize) * 100).toFixed(1)}%)`);\n\n return {\n path: finalResult.path,\n quality: finalResult.quality,\n iterations,\n finalSize: finalResult.size\n };\n};\n\n\n\n/**\n* 图片转Base64(兼容多平台)\n* @param {string} filePath - 图片临时路径\n* @returns {Promise} Base64字符串(带data:image/前缀)\n*/\nexport const imageToBase64 = (filePath) => {\n return new Promise((resolve, reject) => {\n // 先获取图片类型\n uni.getImageInfo({\n src: filePath,\n success: (info) => {\n const type = info.type || 'jpeg';\n // 读取文件为Base64\n uni.getFileSystemManager().readFile({\n filePath,\n encoding: 'base64',\n success: (res) => resolve(`data:image/${type};base64,${res.data}`),\n fail: reject\n });\n },\n fail: () => {\n // 类型获取失败时默认jpeg\n uni.getFileSystemManager().readFile({\n filePath,\n encoding: 'base64',\n success: (res) => resolve(`data:image/jpeg;base64,${res.data}`),\n fail: reject\n });\n }\n });\n });\n};\n\n/**\n * 完整处理流程(智能判断是否压缩):\n * 选择图片 → 检查大小 → 按需压缩 → 转Base64\n * @returns {Promise<{ base64: string, path: string, compressed: boolean }>}\n */\nexport const processImage = async (maxSize = 500 * 1024) => {\n // 1. 选择图片\n const chooseRes = await new Promise(resolve => {\n uni.chooseImage({\n count: 1,\n sizeType: ['original', 'compressed'],\n success: resolve,\n fail: () => resolve(null)\n });\n });\n if (!chooseRes) throw new Error('选择图片失败');\n\n const tempFilePath = chooseRes.tempFilePaths[0];\n let finalPath = tempFilePath;\n let isCompressed = false;\n\n // 2. 检查文件大小\n const fileSize = await getFileSize(tempFilePath);\n console.log(`原图大小: ${(fileSize / 1024).toFixed(2)}KB`);\n\n // 3. 按需压缩\n if (fileSize > maxSize) {\n console.log('🔄 开始智能压缩...');\n const compressResult = await preciseCompress(tempFilePath, maxSize);\n finalPath = compressResult.path;\n isCompressed = true;\n \n // 验证压缩结果\n console.log(`✅ 压缩完成: ${(fileSize / 1024).toFixed(2)}KB → ${(compressResult.finalSize / 1024).toFixed(2)}KB` +\n ` (节省${((1 - compressResult.finalSize / fileSize) * 100).toFixed(1)}%)`);\n }\n\n // 4. 转换为Base64\n const base64 = await imageToBase64(finalPath);\n console.log(`📄 Base64长度: ${base64.length} 字符`);\n\n return {\n base64, // Base64字符串\n path: finalPath, // 最终文件路径(可能是原图或压缩图)\n compressed: isCompressed // 是否经过压缩\n };\n};"],"names":["wx","uni","originalSize","targetSize","currentSize"],"mappings":"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"}
\ 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
deleted file mode 100644
index df4dc69..0000000
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"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, makeMap } 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 // custom element\n 'match-media',\n];\nconst UVUE_WEB_BUILT_IN_TAGS = [\n 'list-view',\n 'list-item',\n 'sticky-section',\n 'sticky-header',\n 'cloud-db-element',\n].map((tag) => 'uni-' + tag);\nconst UVUE_IOS_BUILT_IN_TAGS = [\n 'scroll-view',\n 'web-view',\n 'slider',\n 'form',\n 'switch',\n];\nconst UVUE_HARMONY_BUILT_IN_TAGS = [\n // TODO 列出完整列表\n ...BUILT_IN_TAG_NAMES,\n 'volume-panel',\n];\nconst NVUE_U_BUILT_IN_TAGS = [\n 'u-text',\n 'u-image',\n 'u-input',\n 'u-textarea',\n 'u-video',\n 'u-web-view',\n 'u-slider',\n 'u-ad',\n 'u-ad-draw',\n 'u-rich-text',\n];\nconst UVUE_WEB_BUILT_IN_CUSTOM_ELEMENTS = ['match-media'];\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 = [\n 'map',\n 'camera',\n 'live-player',\n 'live-pusher',\n];\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_LAST_PAGE_BACK_PRESS = 'onLastPageBackPress';\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\nconst GLOBALS_ALLOWED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +\n 'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +\n 'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,' +\n 'uni';\nconst isGloballyAllowed = /*#__PURE__*/ makeMap(GLOBALS_ALLOWED);\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_LAST_PAGE_BACK_PRESS, 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_CUSTOM_ELEMENTS, 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, isGloballyAllowed, 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};\nfunction getComponentInternalInstance(i) {\n return i;\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 // fixed by xxxxxx\n $: getComponentInternalInstance,\n // fixed by xxxxxx vue-i18n 在 dev 模式,访问了 $el,故模拟一个假的\n // $el: i => i.vnode.el,\n $el: (i) => i.__$el || (i.__$el = {}),\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n i.effect.dirty = true;\n queueJob(i.update);\n }),\n // $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy!)),// fixed by xxxxxx\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance, \"get\", key);\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate \r\n\r\n","import MiniProgramPage from 'D:/CodeManage/gift/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["uni","processImage"],"mappings":"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"}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.js.map
deleted file mode 100644
index c614835..0000000
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"uni-notice-bar.js","sources":["uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue"],"sourcesContent":["\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{{text}}\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t 0\" :style=\"{ color: moreColor, fontSize: fontSize + 'px' }\">{{ moreText }}\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n"],"names":["uni"],"mappings":"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"}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js.map
deleted file mode 100644
index c20fe60..0000000
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"uni-popup.js","sources":["uni_modules/uni-popup/components/uni-popup/uni-popup.vue","../../软件/HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDovQ29kZU1hbmFnZS9naWZ0L3VuaV9tb2R1bGVzL3VuaS1wb3B1cC9jb21wb25lbnRzL3VuaS1wb3B1cC91bmktcG9wdXAudnVl"],"sourcesContent":["\r\n\t\r\n\r\n\r\n\r\n\r\n","import Component from 'D:/CodeManage/gift/uni_modules/uni-popup/components/uni-popup/uni-popup.vue'\nwx.createComponent(Component)"],"names":["uni"],"mappings":";;AA+CC,MAAK,YAAU;AAAA,EACd,MAAM;AAAA,EACN,YAAY,CAIX;AAAA,EACD,OAAO,CAAC,UAAU,WAAW;AAAA,EAC7B,OAAO;AAAA;AAAA,IAEN,WAAW;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA;AAAA,IAGD,MAAM;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA,IAED,aAAa;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA,IAED,WAAW;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA,IACD,iBAAiB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA,IACD,UAAU;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA,IACD,qBAAqB;AAAA,MACpB,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA,IACD,cAAa;AAAA,MACZ,MAAM;AAAA,IACP;AAAA,EACA;AAAA,EAED,OAAO;AAAA;AAAA;AAAA;AAAA,IAIN,MAAM;AAAA,MACL,SAAS,SAAS,MAAM;AACvB,YAAI,CAAC,KAAK,OAAO,IAAI;AAAG;AACxB,aAAK,KAAK,OAAO,IAAI,CAAC,EAAE,IAAI;AAAA,MAC5B;AAAA,MACD,WAAW;AAAA,IACX;AAAA,IACD,WAAW;AAAA,MACV,SAAS,SAAS,QAAQ;AACzB,YAAI,CAAC,KAAK,OAAO,MAAM;AAAG;AAC1B,aAAK,KAAK,OAAO,KAAK,IAAI,CAAC,EAAE,IAAI;AAAA,MACjC;AAAA,MACD,WAAW;AAAA,IACX;AAAA;AAAA;AAAA;AAAA;AAAA,IAKD,WAAW;AAAA,MACV,SAAS,SAAS,KAAK;AACtB,aAAK,UAAU;AAAA,MACf;AAAA,MACD,WAAW;AAAA,IACX;AAAA,IACD,aAAa;AAAA,MACZ,SAAS,SAAS,KAAK;AACtB,aAAK,UAAU;AAAA,MACf;AAAA,MACD,WAAW;AAAA,IACX;AAAA;AAAA,IAED,UAAU,MAAM;AAAA,IAKhB;AAAA,EACA;AAAA,EACD,OAAO;AACN,WAAO;AAAA,MACN,UAAU;AAAA,MACV,KAAK,CAAE;AAAA,MACP,WAAW;AAAA,MACX,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,QAAQ;AAAA,QACP,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,MACP;AAAA,MACD,WAAW;AAAA,QACV,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,KAAK;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,iBAAiB;AAAA,MACjB;AAAA,MACD,YAAY;AAAA,QACX,iBAAiB;AAAA,QACjB,cAAc,KAAK,gBAAgB;AAAA,QACnC,UAAU;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,MACP;AAAA,MACD,UAAU;AAAA,MACV,SAAS;AAAA,MACT,YAAY;AAAA,IACb;AAAA,EACA;AAAA,EACD,UAAU;AAAA,IACT,YAAY;AACX,UAAI,MAAM,EAAE,iBAAiB,KAAK;AAClC,UAAI,KAAK,gBAAgB,KAAK;AAC7B,cAAM,OAAO,OAAO,KAAK,EAAE,cAAc,KAAK,cAAc;AAAA,MAC7D;AACA,aAAO;AAAA,IACP;AAAA,IACD,YAAY;AACX,aAAO,KAAK,cAAc,OAAO,KAAK,eAAe;AAAA,IACrD;AAAA,IACD,KAAK;AACJ,UAAI,KAAK,oBAAoB,MAAM,KAAK,oBAAoB,QAAQ;AACnE,eAAO;AAAA,MACR;AACA,aAAO,KAAK;AAAA,IACb;AAAA,EACA;AAAA,EACD,UAAU;AACT,UAAM,UAAU,MAAM;AAErB,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAIA,cAAAA,MAAI,cAAc;AAYtB,WAAK,aAAa;AAClB,WAAK,cAAc,gBAAgB,aAAa;AAEhD,UAAI,YAAY,KAAK,UAAU;AAE9B,aAAK,iBAAiB,eAAe,SAAS;AAAA,aAKxC;AACN,aAAK,iBAAiB;AAAA,MACvB;AAAA,IACD;AACA,YAAQ;AAAA,EAOR;AAAA;AAAA,EASD,YAAY;AACX,SAAK,aAAa;AAAA,EAClB;AAAA,EAED,YAAY;AACR,SAAK,aAAa,CAAC,KAAK,SAAS;AAAA,EAClC;AAAA,EACD,cAAc;AACZ,SAAK,aAAa,IAAI;AAAA,EACvB;AAAA,EACH,UAAU;AAET,QAAI,KAAK,gBAAgB,QAAQ,KAAK,cAAc,MAAM;AACzD,WAAK,UAAU;AAAA,WACT;AACN,WAAK,UAAU,KAAK,gBAAgB,OAAO,KAAK,cAAc,KAAK;AAAA,IACpE;AACA,QAAI,KAAK,WAAW;AACnB,WAAK,WAAW;AAAA,WACV;AACN,WAAK,WAAW;AAAA,IACjB;AAEA,SAAK,eAAe;AAEpB,SAAK,mBAAmB;AACxB,SAAK,UAAU,kBAAkB,KAAK;AAAA,EACtC;AAAA,EACD,SAAS;AAAA,IACR,aAAa,UAAU,MAAM;AAAA,IAK5B;AAAA;AAAA;AAAA;AAAA,IAID,YAAY;AACX,WAAK,WAAW;AAAA,IAChB;AAAA;AAAA;AAAA;AAAA,IAID,cAAc;AACb,WAAK,UAAU;AAAA,IACf;AAAA;AAAA,IAED,MAAM,GAAG;AAER,QAAE,gBAAgB;AAElB,WAAK,mBAAmB;AAAA,IACxB;AAAA,IAED,KAAK,WAAW;AAEf,UAAI,KAAK,WAAW;AACnB;AAAA,MACD;AACA,UAAI,YAAY,CAAC,OAAO,UAAU,UAAU,QAAQ,SAAS,WAAW,UAAU,OAAO;AACzF,UAAI,EAAE,aAAa,UAAU,QAAQ,SAAS,MAAM,KAAK;AACxD,oBAAY,KAAK;AAAA,MAClB;AACA,UAAI,CAAC,KAAK,OAAO,SAAS,GAAG;AAC5BA,sBAAAA,MAAA,MAAA,SAAA,mEAAc,SAAS,SAAS;AAChC;AAAA,MACD;AACA,WAAK,KAAK,OAAO,SAAS,CAAC,EAAE;AAC7B,WAAK,MAAM,UAAU;AAAA,QACpB,MAAM;AAAA,QACN,MAAM;AAAA,OACN;AAAA,IACD;AAAA,IACD,MAAM,MAAM;AACX,WAAK,YAAY;AACjB,WAAK,MAAM,UAAU;AAAA,QACpB,MAAM;AAAA,QACN,MAAM,KAAK;AAAA,OACX;AACD,mBAAa,KAAK,KAAK;AAGvB,WAAK,QAAQ,WAAW,MAAM;AAC7B,aAAK,YAAY;AAAA,MACjB,GAAE,GAAG;AAAA,IACN;AAAA;AAAA,IAED,aAAa;AACZ,WAAK,mBAAmB;AAAA,IACxB;AAAA,IAED,QAAQ;AACP,UAAI,KAAK,kBAAkB;AAE1B,aAAK,mBAAmB;AACxB;AAAA,MACD;AACA,WAAK,MAAM,WAAW;AACtB,UAAI,CAAC,KAAK;AAAS;AACnB,WAAK,MAAM;AAAA,IACX;AAAA;AAAA;AAAA;AAAA,IAID,IAAI,MAAM;AACT,WAAK,aAAa,KAAK,YAAY,iBAAiB;AACpD,WAAK,MAAM,CAAC,WAAW;AACvB,WAAK,aAAa;AAAA,QACjB,UAAU;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,QACP,iBAAiB,KAAK;AAAA,QACtB,cAAa,KAAK,gBAAgB;AAAA,MACnC;AAEA,UAAI;AAAM;AACV,WAAK,YAAY;AACjB,WAAK,YAAY;AACjB,WAAK,UAAU,MAAM;AACpB,aAAK,aAAa;AAClB,YAAI,KAAK,gBAAgB,KAAK,SAAS,WAAW;AACjD,eAAK,aAAa,WAAW;AAAA,QAC9B;AAAA,OACA;AAAA,IACD;AAAA;AAAA;AAAA;AAAA,IAID,OAAO,MAAM;AACZ,WAAK,aAAa;AAClB,WAAK,MAAM,CAAC,cAAc;AAC1B,WAAK,aAAa;AAAA,QACjB,UAAU;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,eAAe,KAAK,iBAAiB;AAAA,QACrC,iBAAiB,KAAK;AAAA,QACtB,cAAa,KAAK,gBAAgB;AAAA,MACnC;AAEA,UAAI;AAAM;AACV,WAAK,aAAa;AAAA,IAClB;AAAA;AAAA;AAAA;AAAA,IAID,OAAO,MAAM;AACZ,WAAK,aAAa;AAGjB,WAAK,MAAM,CAAC,MAAM;AAKnB,WAAK,aAAa;AAAA,QACjB,UAAU;AAAA,QAEV,SAAS;AAAA,QACT,eAAe;AAAA,QAEf,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK;AAAA,QACL,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,cAAa,KAAK,gBAAgB;AAAA,MACnC;AAEA,UAAI;AAAM;AACV,WAAK,aAAa;AAAA,IAClB;AAAA,IACD,KAAK,MAAM;AACV,WAAK,aAAa;AAClB,WAAK,MAAM,CAAC,YAAY;AACxB,WAAK,aAAa;AAAA,QACjB,UAAU;AAAA,QACV,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,KAAK;AAAA,QACL,iBAAiB,KAAK;AAAA,QACtB,cAAa,KAAK,gBAAgB;AAAA,QAElC,SAAS;AAAA,QACT,eAAe;AAAA,MAEhB;AAEA,UAAI;AAAM;AACV,WAAK,aAAa;AAAA,IAClB;AAAA,IACD,MAAM,MAAM;AACX,WAAK,aAAa;AAClB,WAAK,MAAM,CAAC,aAAa;AACzB,WAAK,aAAa;AAAA,QACjB,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,KAAK;AAAA,QACL,iBAAiB,KAAK;AAAA,QACtB,cAAa,KAAK,gBAAgB;AAAA,QAElC,SAAS;AAAA,QACT,eAAe;AAAA,MAEhB;AAEA,UAAI;AAAM;AACV,WAAK,aAAa;AAAA,IAClB;AAAA,IACD,eAAc;AACb,WAAK,UAAU,MAAI;AAClB,aAAK,YAAY;AACjB,aAAK,YAAY;AAAA,OACjB;AAAA,IACF;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/cD,GAAG,gBAAgB,SAAS;"}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-transition/components/uni-transition/createAnimation.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-transition/components/uni-transition/createAnimation.js.map
deleted file mode 100644
index cef6efa..0000000
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-transition/components/uni-transition/createAnimation.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"createAnimation.js","sources":["uni_modules/uni-transition/components/uni-transition/createAnimation.js"],"sourcesContent":["// const defaultOption = {\r\n// \tduration: 300,\r\n// \ttimingFunction: 'linear',\r\n// \tdelay: 0,\r\n// \ttransformOrigin: '50% 50% 0'\r\n// }\r\n// #ifdef APP-NVUE\r\nconst nvueAnimation = uni.requireNativePlugin('animation')\r\n// #endif\r\nclass MPAnimation {\r\n\tconstructor(options, _this) {\r\n\t\tthis.options = options\r\n\t\t// 在iOS10+QQ小程序平台下,传给原生的对象一定是个普通对象而不是Proxy对象,否则会报parameter should be Object instead of ProxyObject的错误\r\n\t\tthis.animation = uni.createAnimation({\r\n\t\t\t...options\r\n\t\t})\r\n\t\tthis.currentStepAnimates = {}\r\n\t\tthis.next = 0\r\n\t\tthis.$ = _this\r\n\r\n\t}\r\n\r\n\t_nvuePushAnimates(type, args) {\r\n\t\tlet aniObj = this.currentStepAnimates[this.next]\r\n\t\tlet styles = {}\r\n\t\tif (!aniObj) {\r\n\t\t\tstyles = {\r\n\t\t\t\tstyles: {},\r\n\t\t\t\tconfig: {}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstyles = aniObj\r\n\t\t}\r\n\t\tif (animateTypes1.includes(type)) {\r\n\t\t\tif (!styles.styles.transform) {\r\n\t\t\t\tstyles.styles.transform = ''\r\n\t\t\t}\r\n\t\t\tlet unit = ''\r\n\t\t\tif(type === 'rotate'){\r\n\t\t\t\tunit = 'deg'\r\n\t\t\t}\r\n\t\t\tstyles.styles.transform += `${type}(${args+unit}) `\r\n\t\t} else {\r\n\t\t\tstyles.styles[type] = `${args}`\r\n\t\t}\r\n\t\tthis.currentStepAnimates[this.next] = styles\r\n\t}\r\n\t_animateRun(styles = {}, config = {}) {\r\n\t\tlet ref = this.$.$refs['ani'].ref\r\n\t\tif (!ref) return\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tnvueAnimation.transition(ref, {\r\n\t\t\t\tstyles,\r\n\t\t\t\t...config\r\n\t\t\t}, res => {\r\n\t\t\t\tresolve()\r\n\t\t\t})\r\n\t\t})\r\n\t}\r\n\r\n\t_nvueNextAnimate(animates, step = 0, fn) {\r\n\t\tlet obj = animates[step]\r\n\t\tif (obj) {\r\n\t\t\tlet {\r\n\t\t\t\tstyles,\r\n\t\t\t\tconfig\r\n\t\t\t} = obj\r\n\t\t\tthis._animateRun(styles, config).then(() => {\r\n\t\t\t\tstep += 1\r\n\t\t\t\tthis._nvueNextAnimate(animates, step, fn)\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tthis.currentStepAnimates = {}\r\n\t\t\ttypeof fn === 'function' && fn()\r\n\t\t\tthis.isEnd = true\r\n\t\t}\r\n\t}\r\n\r\n\tstep(config = {}) {\r\n\t\t// #ifndef APP-NVUE\r\n\t\tthis.animation.step(config)\r\n\t\t// #endif\r\n\t\t// #ifdef APP-NVUE\r\n\t\tthis.currentStepAnimates[this.next].config = Object.assign({}, this.options, config)\r\n\t\tthis.currentStepAnimates[this.next].styles.transformOrigin = this.currentStepAnimates[this.next].config.transformOrigin\r\n\t\tthis.next++\r\n\t\t// #endif\r\n\t\treturn this\r\n\t}\r\n\r\n\trun(fn) {\r\n\t\t// #ifndef APP-NVUE\r\n\t\tthis.$.animationData = this.animation.export()\r\n\t\tthis.$.timer = setTimeout(() => {\r\n\t\t\ttypeof fn === 'function' && fn()\r\n\t\t}, this.$.durationTime)\r\n\t\t// #endif\r\n\t\t// #ifdef APP-NVUE\r\n\t\tthis.isEnd = false\r\n\t\tlet ref = this.$.$refs['ani'] && this.$.$refs['ani'].ref\r\n\t\tif(!ref) return\r\n\t\tthis._nvueNextAnimate(this.currentStepAnimates, 0, fn)\r\n\t\tthis.next = 0\r\n\t\t// #endif\r\n\t}\r\n}\r\n\r\n\r\nconst animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d',\r\n\t'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY',\r\n\t'translateZ'\r\n]\r\nconst animateTypes2 = ['opacity', 'backgroundColor']\r\nconst animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom']\r\nanimateTypes1.concat(animateTypes2, animateTypes3).forEach(type => {\r\n\tMPAnimation.prototype[type] = function(...args) {\r\n\t\t// #ifndef APP-NVUE\r\n\t\tthis.animation[type](...args)\r\n\t\t// #endif\r\n\t\t// #ifdef APP-NVUE\r\n\t\tthis._nvuePushAnimates(type, args)\r\n\t\t// #endif\r\n\t\treturn this\r\n\t}\r\n})\r\n\r\nexport function createAnimation(option, _this) {\r\n\tif(!_this) return\r\n\tclearTimeout(_this.timer)\r\n\treturn new MPAnimation(option, _this)\r\n}\r\n"],"names":["uni"],"mappings":"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"}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.js.map
deleted file mode 100644
index 2b24766..0000000
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"uni-transition.js","sources":["uni_modules/uni-transition/components/uni-transition/uni-transition.vue","../../软件/HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDovQ29kZU1hbmFnZS9naWZ0L3VuaV9tb2R1bGVzL3VuaS10cmFuc2l0aW9uL2NvbXBvbmVudHMvdW5pLXRyYW5zaXRpb24vdW5pLXRyYW5zaXRpb24udnVl"],"sourcesContent":["\r\n\t\r\n\t\r\n\t\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\t\r\n\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n","import Component from 'D:/CodeManage/gift/uni_modules/uni-transition/components/uni-transition/uni-transition.vue'\nwx.createComponent(Component)"],"names":["createAnimation","type"],"mappings":"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"}
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/app.js b/unpackage/dist/dev/mp-weixin/app.js
deleted file mode 100644
index 3f4921e..0000000
--- a/unpackage/dist/dev/mp-weixin/app.js
+++ /dev/null
@@ -1,26 +0,0 @@
-"use strict";
-Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
-const common_vendor = require("./common/vendor.js");
-if (!Math) {
- "./pages/index/index.js";
-}
-const _sfc_main = {
- onLaunch: function() {
- common_vendor.index.__f__("log", "at App.vue:4", "App Launch");
- },
- onShow: function() {
- common_vendor.index.__f__("log", "at App.vue:7", "App Show");
- },
- onHide: function() {
- common_vendor.index.__f__("log", "at App.vue:10", "App Hide");
- }
-};
-function createApp() {
- const app = common_vendor.createSSRApp(_sfc_main);
- return {
- app
- };
-}
-createApp().app.mount("#app");
-exports.createApp = createApp;
-//# sourceMappingURL=../.sourcemap/mp-weixin/app.js.map
diff --git a/unpackage/dist/dev/mp-weixin/app.json b/unpackage/dist/dev/mp-weixin/app.json
deleted file mode 100644
index fe9d27a..0000000
--- a/unpackage/dist/dev/mp-weixin/app.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "pages": [
- "pages/index/index"
- ],
- "window": {
- "navigationBarTextStyle": "black",
- "navigationBarTitleText": "uni-app",
- "navigationBarBackgroundColor": "#F8F8F8",
- "backgroundColor": "#F8F8F8"
- },
- "usingComponents": {}
-}
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/app.wxss b/unpackage/dist/dev/mp-weixin/app.wxss
deleted file mode 100644
index 2d482c3..0000000
--- a/unpackage/dist/dev/mp-weixin/app.wxss
+++ /dev/null
@@ -1,20 +0,0 @@
-
- /*每个页面公共css */
-.column {
- display: flex;
- flex-direction: column;
-}
-.row {
- display: flex;
- flex-direction: row;
-}
-.row-reverse {
- display: flex;
- flex-direction: row-reverse;
-}
-.center {
- display: flex;
- align-items: center;
- justify-content: center;
-}
-page{--status-bar-height:25px;--top-window-height:0px;--window-top:0px;--window-bottom:0px;--window-left:0px;--window-right:0px;--window-magin:0px}[data-c-h="true"]{display: none !important;}
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/common/assets.js b/unpackage/dist/dev/mp-weixin/common/assets.js
deleted file mode 100644
index 3fba815..0000000
--- a/unpackage/dist/dev/mp-weixin/common/assets.js
+++ /dev/null
@@ -1,4 +0,0 @@
-"use strict";
-const _imports_0 = "/static/ic_close.png";
-exports._imports_0 = _imports_0;
-//# sourceMappingURL=../../.sourcemap/mp-weixin/common/assets.js.map
diff --git a/unpackage/dist/dev/mp-weixin/common/utils.js b/unpackage/dist/dev/mp-weixin/common/utils.js
deleted file mode 100644
index 74c2be0..0000000
--- a/unpackage/dist/dev/mp-weixin/common/utils.js
+++ /dev/null
@@ -1,173 +0,0 @@
-"use strict";
-const common_vendor = require("./vendor.js");
-const getFileSize = async (filePath) => {
- try {
- const res = await new Promise((resolve, reject) => {
- common_vendor.wx$1.getFileSystemManager().getFileInfo({
- filePath,
- success: resolve,
- fail: reject
- });
- });
- return res.size || Infinity;
- } catch (err) {
- common_vendor.index.__f__("error", "at common/utils.js:34", "获取文件大小失败:", err);
- return Infinity;
- }
-};
-const doCompressImage = (src, quality) => {
- return new Promise((resolve) => {
- common_vendor.index.compressImage({
- src,
- quality,
- success: (res) => resolve(res.tempFilePath),
- fail: () => resolve(src)
- // 失败返回原路径
- });
- });
-};
-const preciseCompress = async (tempFilePath, targetSize = 500 * 1024, initialQuality = 85) => {
- let quality = initialQuality;
- let compressedPath = tempFilePath;
- let currentSize = Infinity;
- let iterations = 0;
- const maxIterations = 10;
- const history = [];
- const originalSize = await getFileSize(tempFilePath);
- if (originalSize <= targetSize) {
- return { path: tempFilePath, quality: 100, iterations: 0, finalSize: originalSize };
- }
- const predictQualityRange = (originalSize2, targetSize2) => {
- const ratio = targetSize2 / originalSize2;
- if (ratio > 0.8)
- return { low: 70, high: 95 };
- if (ratio > 0.5)
- return { low: 45, high: 75 };
- if (ratio > 0.3)
- return { low: 25, high: 50 };
- if (ratio > 0.1)
- return { low: 10, high: 30 };
- return { low: 5, high: 15 };
- };
- const { low: predictedLow, high: predictedHigh } = predictQualityRange(originalSize, targetSize);
- let low = predictedLow;
- let high = Math.min(predictedHigh, initialQuality);
- common_vendor.index.__f__("log", "at common/utils.js:132", `预测质量范围: ${low}-${high} (原图${(originalSize / 1024).toFixed(2)}KB → 目标${(targetSize / 1024).toFixed(2)}KB)`);
- const adjustBounds = (currentQuality, currentSize2, targetSize2) => {
- const sizeRatio = currentSize2 / targetSize2;
- const qualityDelta = Math.max(2, Math.floor(currentQuality * 0.1));
- if (sizeRatio > 2.5) {
- return { lowDelta: -qualityDelta * 2, highDelta: -qualityDelta };
- } else if (sizeRatio > 1.5) {
- return { lowDelta: -qualityDelta, highDelta: -Math.floor(qualityDelta / 2) };
- } else if (sizeRatio > 1.1) {
- return { lowDelta: -3, highDelta: -1 };
- } else {
- return { lowDelta: -1, highDelta: 0 };
- }
- };
- let bestResult = null;
- while (iterations < maxIterations && low <= high) {
- iterations++;
- quality = Math.floor((low + high) / 2);
- if (history.some((item) => item.quality === quality)) {
- break;
- }
- compressedPath = await doCompressImage(tempFilePath, quality);
- currentSize = await getFileSize(compressedPath);
- history.push({ quality, size: currentSize });
- common_vendor.index.__f__("log", "at common/utils.js:165", `第${iterations}次尝试: quality=${quality} → ${(currentSize / 1024).toFixed(2)}KB (目标${(targetSize / 1024).toFixed(2)}KB)`);
- if (!bestResult || Math.abs(currentSize - targetSize) < Math.abs(bestResult.size - targetSize)) {
- bestResult = { quality, size: currentSize, path: compressedPath };
- }
- if (Math.abs(currentSize - targetSize) < targetSize * 0.03) {
- common_vendor.index.__f__("log", "at common/utils.js:174", "✅ 达到精准匹配,提前结束");
- break;
- }
- if (currentSize > targetSize) {
- const { lowDelta, highDelta } = adjustBounds(quality, currentSize, targetSize);
- high = Math.max(5, quality + highDelta);
- } else {
- low = quality + 1;
- }
- if (high - low <= 1)
- break;
- }
- if (bestResult && bestResult.size > targetSize * 1.1) {
- common_vendor.index.__f__("log", "at common/utils.js:191", "🔥 尝试极限压缩...");
- const extremePath = await doCompressImage(tempFilePath, 5);
- const extremeSize = await getFileSize(extremePath);
- common_vendor.index.__f__("log", "at common/utils.js:194", `极限压缩结果: quality=5 → ${(extremeSize / 1024).toFixed(2)}KB`);
- if (extremeSize < bestResult.size) {
- bestResult = { quality: 5, size: extremeSize, path: extremePath };
- }
- }
- const finalResult = bestResult || { quality: 10, size: currentSize, path: compressedPath };
- common_vendor.index.__f__("log", "at common/utils.js:203", `🎯 最终结果:quality=${finalResult.quality} → ${(finalResult.size / 1024).toFixed(2)}KB(迭代${iterations}次,压缩率${((1 - finalResult.size / originalSize) * 100).toFixed(1)}%)`);
- return {
- path: finalResult.path,
- quality: finalResult.quality,
- iterations,
- finalSize: finalResult.size
- };
-};
-const imageToBase64 = (filePath) => {
- return new Promise((resolve, reject) => {
- common_vendor.index.getImageInfo({
- src: filePath,
- success: (info) => {
- const type = info.type || "jpeg";
- common_vendor.index.getFileSystemManager().readFile({
- filePath,
- encoding: "base64",
- success: (res) => resolve(`data:image/${type};base64,${res.data}`),
- fail: reject
- });
- },
- fail: () => {
- common_vendor.index.getFileSystemManager().readFile({
- filePath,
- encoding: "base64",
- success: (res) => resolve(`data:image/jpeg;base64,${res.data}`),
- fail: reject
- });
- }
- });
- });
-};
-const processImage = async (maxSize = 500 * 1024) => {
- const chooseRes = await new Promise((resolve) => {
- common_vendor.index.chooseImage({
- count: 1,
- sizeType: ["original", "compressed"],
- success: resolve,
- fail: () => resolve(null)
- });
- });
- if (!chooseRes)
- throw new Error("选择图片失败");
- const tempFilePath = chooseRes.tempFilePaths[0];
- let finalPath = tempFilePath;
- let isCompressed = false;
- const fileSize = await getFileSize(tempFilePath);
- common_vendor.index.__f__("log", "at common/utils.js:272", `原图大小: ${(fileSize / 1024).toFixed(2)}KB`);
- if (fileSize > maxSize) {
- common_vendor.index.__f__("log", "at common/utils.js:276", "🔄 开始智能压缩...");
- const compressResult = await preciseCompress(tempFilePath, maxSize);
- finalPath = compressResult.path;
- isCompressed = true;
- common_vendor.index.__f__("log", "at common/utils.js:282", `✅ 压缩完成: ${(fileSize / 1024).toFixed(2)}KB → ${(compressResult.finalSize / 1024).toFixed(2)}KB (节省${((1 - compressResult.finalSize / fileSize) * 100).toFixed(1)}%)`);
- }
- const base64 = await imageToBase64(finalPath);
- common_vendor.index.__f__("log", "at common/utils.js:288", `📄 Base64长度: ${base64.length} 字符`);
- return {
- base64,
- // Base64字符串
- path: finalPath,
- // 最终文件路径(可能是原图或压缩图)
- compressed: isCompressed
- // 是否经过压缩
- };
-};
-exports.processImage = processImage;
-//# sourceMappingURL=../../.sourcemap/mp-weixin/common/utils.js.map
diff --git a/unpackage/dist/dev/mp-weixin/common/vendor.js b/unpackage/dist/dev/mp-weixin/common/vendor.js
deleted file mode 100644
index 8b62de2..0000000
--- a/unpackage/dist/dev/mp-weixin/common/vendor.js
+++ /dev/null
@@ -1,8010 +0,0 @@
-"use strict";
-/**
-* @vue/shared v3.4.21
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/
-function makeMap(str, expectsLowerCase) {
- const set2 = new Set(str.split(","));
- return expectsLowerCase ? (val) => set2.has(val.toLowerCase()) : (val) => set2.has(val);
-}
-const EMPTY_OBJ = Object.freeze({});
-const EMPTY_ARR = Object.freeze([]);
-const NOOP = () => {
-};
-const NO = () => false;
-const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter
-(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);
-const isModelListener = (key) => key.startsWith("onUpdate:");
-const extend = Object.assign;
-const remove = (arr, el) => {
- const i = arr.indexOf(el);
- if (i > -1) {
- arr.splice(i, 1);
- }
-};
-const hasOwnProperty$1 = Object.prototype.hasOwnProperty;
-const hasOwn = (val, key) => hasOwnProperty$1.call(val, key);
-const isArray = Array.isArray;
-const isMap = (val) => toTypeString(val) === "[object Map]";
-const isSet = (val) => toTypeString(val) === "[object Set]";
-const isFunction = (val) => typeof val === "function";
-const isString = (val) => typeof val === "string";
-const isSymbol = (val) => typeof val === "symbol";
-const isObject = (val) => val !== null && typeof val === "object";
-const isPromise = (val) => {
- return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);
-};
-const objectToString = Object.prototype.toString;
-const toTypeString = (value) => objectToString.call(value);
-const toRawType = (value) => {
- return toTypeString(value).slice(8, -1);
-};
-const isPlainObject = (val) => toTypeString(val) === "[object Object]";
-const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
-const isReservedProp = /* @__PURE__ */ makeMap(
- // the leading comma is intentional so empty string "" is also included
- ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"
-);
-const isBuiltInDirective = /* @__PURE__ */ makeMap(
- "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"
-);
-const cacheStringFunction = (fn) => {
- const cache = /* @__PURE__ */ Object.create(null);
- return (str) => {
- const hit = cache[str];
- return hit || (cache[str] = fn(str));
- };
-};
-const camelizeRE = /-(\w)/g;
-const camelize = cacheStringFunction((str) => {
- return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : "");
-});
-const hyphenateRE = /\B([A-Z])/g;
-const hyphenate = cacheStringFunction(
- (str) => str.replace(hyphenateRE, "-$1").toLowerCase()
-);
-const capitalize = cacheStringFunction((str) => {
- return str.charAt(0).toUpperCase() + str.slice(1);
-});
-const toHandlerKey = cacheStringFunction((str) => {
- const s2 = str ? `on${capitalize(str)}` : ``;
- return s2;
-});
-const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
-const invokeArrayFns$1 = (fns, arg) => {
- for (let i = 0; i < fns.length; i++) {
- fns[i](arg);
- }
-};
-const def = (obj, key, value) => {
- Object.defineProperty(obj, key, {
- configurable: true,
- enumerable: false,
- value
- });
-};
-const looseToNumber = (val) => {
- const n2 = parseFloat(val);
- return isNaN(n2) ? val : n2;
-};
-function normalizeStyle(value) {
- if (isArray(value)) {
- const res = {};
- for (let i = 0; i < value.length; i++) {
- const item = value[i];
- const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);
- if (normalized) {
- for (const key in normalized) {
- res[key] = normalized[key];
- }
- }
- }
- return res;
- } else if (isString(value) || isObject(value)) {
- return value;
- }
-}
-const listDelimiterRE = /;(?![^(]*\))/g;
-const propertyDelimiterRE = /:([^]+)/;
-const styleCommentRE = /\/\*[^]*?\*\//g;
-function parseStringStyle(cssText) {
- const ret = {};
- cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
- if (item) {
- const tmp = item.split(propertyDelimiterRE);
- tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
- }
- });
- return ret;
-}
-function normalizeClass(value) {
- let res = "";
- if (isString(value)) {
- res = value;
- } else if (isArray(value)) {
- for (let i = 0; i < value.length; i++) {
- const normalized = normalizeClass(value[i]);
- if (normalized) {
- res += normalized + " ";
- }
- }
- } else if (isObject(value)) {
- for (const name in value) {
- if (value[name]) {
- res += name + " ";
- }
- }
- }
- return res.trim();
-}
-const toDisplayString = (val) => {
- return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);
-};
-const replacer = (_key, val) => {
- if (val && val.__v_isRef) {
- return replacer(_key, val.value);
- } else if (isMap(val)) {
- return {
- [`Map(${val.size})`]: [...val.entries()].reduce(
- (entries, [key, val2], i) => {
- entries[stringifySymbol(key, i) + " =>"] = val2;
- return entries;
- },
- {}
- )
- };
- } else if (isSet(val)) {
- return {
- [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))
- };
- } else if (isSymbol(val)) {
- return stringifySymbol(val);
- } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {
- return String(val);
- }
- return val;
-};
-const stringifySymbol = (v, i = "") => {
- var _a;
- return isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v;
-};
-const LOCALE_ZH_HANS = "zh-Hans";
-const LOCALE_ZH_HANT = "zh-Hant";
-const LOCALE_EN = "en";
-const LOCALE_FR = "fr";
-const LOCALE_ES = "es";
-function include(str, parts) {
- return !!parts.find((part) => str.indexOf(part) !== -1);
-}
-function startsWith(str, parts) {
- return parts.find((part) => str.indexOf(part) === 0);
-}
-function normalizeLocale(locale, messages) {
- if (!locale) {
- return;
- }
- locale = locale.trim().replace(/_/g, "-");
- if (messages && messages[locale]) {
- return locale;
- }
- locale = locale.toLowerCase();
- if (locale === "chinese") {
- return LOCALE_ZH_HANS;
- }
- if (locale.indexOf("zh") === 0) {
- if (locale.indexOf("-hans") > -1) {
- return LOCALE_ZH_HANS;
- }
- if (locale.indexOf("-hant") > -1) {
- return LOCALE_ZH_HANT;
- }
- if (include(locale, ["-tw", "-hk", "-mo", "-cht"])) {
- return LOCALE_ZH_HANT;
- }
- return LOCALE_ZH_HANS;
- }
- let locales = [LOCALE_EN, LOCALE_FR, LOCALE_ES];
- if (messages && Object.keys(messages).length > 0) {
- locales = Object.keys(messages);
- }
- const lang = startsWith(locale, locales);
- if (lang) {
- return lang;
- }
-}
-const SLOT_DEFAULT_NAME = "d";
-const ON_SHOW = "onShow";
-const ON_HIDE = "onHide";
-const ON_LAUNCH = "onLaunch";
-const ON_ERROR = "onError";
-const ON_THEME_CHANGE = "onThemeChange";
-const ON_PAGE_NOT_FOUND = "onPageNotFound";
-const ON_UNHANDLE_REJECTION = "onUnhandledRejection";
-const ON_EXIT = "onExit";
-const ON_LOAD = "onLoad";
-const ON_READY = "onReady";
-const ON_UNLOAD = "onUnload";
-const ON_INIT = "onInit";
-const ON_SAVE_EXIT_STATE = "onSaveExitState";
-const ON_RESIZE = "onResize";
-const ON_BACK_PRESS = "onBackPress";
-const ON_PAGE_SCROLL = "onPageScroll";
-const ON_TAB_ITEM_TAP = "onTabItemTap";
-const ON_REACH_BOTTOM = "onReachBottom";
-const ON_PULL_DOWN_REFRESH = "onPullDownRefresh";
-const ON_SHARE_TIMELINE = "onShareTimeline";
-const ON_SHARE_CHAT = "onShareChat";
-const ON_ADD_TO_FAVORITES = "onAddToFavorites";
-const ON_SHARE_APP_MESSAGE = "onShareAppMessage";
-const ON_NAVIGATION_BAR_BUTTON_TAP = "onNavigationBarButtonTap";
-const ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED = "onNavigationBarSearchInputClicked";
-const ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED = "onNavigationBarSearchInputChanged";
-const ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED = "onNavigationBarSearchInputConfirmed";
-const ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED = "onNavigationBarSearchInputFocusChanged";
-const VIRTUAL_HOST_STYLE = "virtualHostStyle";
-const VIRTUAL_HOST_CLASS = "virtualHostClass";
-const VIRTUAL_HOST_HIDDEN = "virtualHostHidden";
-const VIRTUAL_HOST_ID = "virtualHostId";
-function hasLeadingSlash(str) {
- return str.indexOf("/") === 0;
-}
-function addLeadingSlash(str) {
- return hasLeadingSlash(str) ? str : "/" + str;
-}
-const invokeArrayFns = (fns, arg) => {
- let ret;
- for (let i = 0; i < fns.length; i++) {
- ret = fns[i](arg);
- }
- return ret;
-};
-function once(fn, ctx = null) {
- let res;
- return (...args) => {
- if (fn) {
- res = fn.apply(ctx, args);
- fn = null;
- }
- return res;
- };
-}
-function getValueByDataPath(obj, path) {
- if (!isString(path)) {
- return;
- }
- path = path.replace(/\[(\d+)\]/g, ".$1");
- const parts = path.split(".");
- let key = parts[0];
- if (!obj) {
- obj = {};
- }
- if (parts.length === 1) {
- return obj[key];
- }
- return getValueByDataPath(obj[key], parts.slice(1).join("."));
-}
-function sortObject(obj) {
- let sortObj = {};
- if (isPlainObject(obj)) {
- Object.keys(obj).sort().forEach((key) => {
- const _key = key;
- sortObj[_key] = obj[_key];
- });
- }
- return !Object.keys(sortObj) ? obj : sortObj;
-}
-const customizeRE = /:/g;
-function customizeEvent(str) {
- return camelize(str.replace(customizeRE, "-"));
-}
-const encode = encodeURIComponent;
-function stringifyQuery(obj, encodeStr = encode) {
- const res = obj ? Object.keys(obj).map((key) => {
- let val = obj[key];
- if (typeof val === void 0 || val === null) {
- val = "";
- } else if (isPlainObject(val)) {
- val = JSON.stringify(val);
- }
- return encodeStr(key) + "=" + encodeStr(val);
- }).filter((x) => x.length > 0).join("&") : null;
- return res ? `?${res}` : "";
-}
-const PAGE_HOOKS = [
- ON_INIT,
- ON_LOAD,
- ON_SHOW,
- ON_HIDE,
- ON_UNLOAD,
- ON_BACK_PRESS,
- ON_PAGE_SCROLL,
- ON_TAB_ITEM_TAP,
- ON_REACH_BOTTOM,
- ON_PULL_DOWN_REFRESH,
- ON_SHARE_TIMELINE,
- ON_SHARE_APP_MESSAGE,
- ON_SHARE_CHAT,
- ON_ADD_TO_FAVORITES,
- ON_SAVE_EXIT_STATE,
- ON_NAVIGATION_BAR_BUTTON_TAP,
- ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED,
- ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED,
- ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED,
- ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED
-];
-function isRootHook(name) {
- return PAGE_HOOKS.indexOf(name) > -1;
-}
-const UniLifecycleHooks = [
- ON_SHOW,
- ON_HIDE,
- ON_LAUNCH,
- ON_ERROR,
- ON_THEME_CHANGE,
- ON_PAGE_NOT_FOUND,
- ON_UNHANDLE_REJECTION,
- ON_EXIT,
- ON_INIT,
- ON_LOAD,
- ON_READY,
- ON_UNLOAD,
- ON_RESIZE,
- ON_BACK_PRESS,
- ON_PAGE_SCROLL,
- ON_TAB_ITEM_TAP,
- ON_REACH_BOTTOM,
- ON_PULL_DOWN_REFRESH,
- ON_SHARE_TIMELINE,
- ON_ADD_TO_FAVORITES,
- ON_SHARE_APP_MESSAGE,
- ON_SHARE_CHAT,
- ON_SAVE_EXIT_STATE,
- ON_NAVIGATION_BAR_BUTTON_TAP,
- ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED,
- ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED,
- ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED,
- ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED
-];
-const MINI_PROGRAM_PAGE_RUNTIME_HOOKS = /* @__PURE__ */ (() => {
- return {
- onPageScroll: 1,
- onShareAppMessage: 1 << 1,
- onShareTimeline: 1 << 2
- };
-})();
-function isUniLifecycleHook(name, value, checkType = true) {
- if (checkType && !isFunction(value)) {
- return false;
- }
- if (UniLifecycleHooks.indexOf(name) > -1) {
- return true;
- } else if (name.indexOf("on") === 0) {
- return true;
- }
- return false;
-}
-let vueApp;
-const createVueAppHooks = [];
-function onCreateVueApp(hook) {
- if (vueApp) {
- return hook(vueApp);
- }
- createVueAppHooks.push(hook);
-}
-function invokeCreateVueAppHook(app) {
- vueApp = app;
- createVueAppHooks.forEach((hook) => hook(app));
-}
-const invokeCreateErrorHandler = once((app, createErrorHandler2) => {
- return createErrorHandler2(app);
-});
-const E = function() {
-};
-E.prototype = {
- _id: 1,
- on: function(name, callback, ctx) {
- var e2 = this.e || (this.e = {});
- (e2[name] || (e2[name] = [])).push({
- fn: callback,
- ctx,
- _id: this._id
- });
- return this._id++;
- },
- once: function(name, callback, ctx) {
- var self2 = this;
- function listener() {
- self2.off(name, listener);
- callback.apply(ctx, arguments);
- }
- listener._ = callback;
- return this.on(name, listener, ctx);
- },
- emit: function(name) {
- var data = [].slice.call(arguments, 1);
- var evtArr = ((this.e || (this.e = {}))[name] || []).slice();
- var i = 0;
- var len = evtArr.length;
- for (i; i < len; i++) {
- evtArr[i].fn.apply(evtArr[i].ctx, data);
- }
- return this;
- },
- off: function(name, event) {
- var e2 = this.e || (this.e = {});
- var evts = e2[name];
- var liveEvents = [];
- if (evts && event) {
- for (var i = evts.length - 1; i >= 0; i--) {
- if (evts[i].fn === event || evts[i].fn._ === event || evts[i]._id === event) {
- evts.splice(i, 1);
- break;
- }
- }
- liveEvents = evts;
- }
- liveEvents.length ? e2[name] = liveEvents : delete e2[name];
- return this;
- }
-};
-var E$1 = E;
-/**
-* @dcloudio/uni-mp-vue v3.4.21
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/
-function warn$2(msg, ...args) {
- console.warn(`[Vue warn] ${msg}`, ...args);
-}
-let activeEffectScope;
-class EffectScope {
- constructor(detached = false) {
- this.detached = detached;
- this._active = true;
- this.effects = [];
- this.cleanups = [];
- this.parent = activeEffectScope;
- if (!detached && activeEffectScope) {
- this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(
- this
- ) - 1;
- }
- }
- get active() {
- return this._active;
- }
- run(fn) {
- if (this._active) {
- const currentEffectScope = activeEffectScope;
- try {
- activeEffectScope = this;
- return fn();
- } finally {
- activeEffectScope = currentEffectScope;
- }
- } else {
- warn$2(`cannot run an inactive effect scope.`);
- }
- }
- /**
- * This should only be called on non-detached scopes
- * @internal
- */
- on() {
- activeEffectScope = this;
- }
- /**
- * This should only be called on non-detached scopes
- * @internal
- */
- off() {
- activeEffectScope = this.parent;
- }
- stop(fromParent) {
- if (this._active) {
- let i, l;
- for (i = 0, l = this.effects.length; i < l; i++) {
- this.effects[i].stop();
- }
- for (i = 0, l = this.cleanups.length; i < l; i++) {
- this.cleanups[i]();
- }
- if (this.scopes) {
- for (i = 0, l = this.scopes.length; i < l; i++) {
- this.scopes[i].stop(true);
- }
- }
- if (!this.detached && this.parent && !fromParent) {
- const last = this.parent.scopes.pop();
- if (last && last !== this) {
- this.parent.scopes[this.index] = last;
- last.index = this.index;
- }
- }
- this.parent = void 0;
- this._active = false;
- }
- }
-}
-function recordEffectScope(effect2, scope = activeEffectScope) {
- if (scope && scope.active) {
- scope.effects.push(effect2);
- }
-}
-function getCurrentScope() {
- return activeEffectScope;
-}
-let activeEffect;
-class ReactiveEffect {
- constructor(fn, trigger2, scheduler, scope) {
- this.fn = fn;
- this.trigger = trigger2;
- this.scheduler = scheduler;
- this.active = true;
- this.deps = [];
- this._dirtyLevel = 4;
- this._trackId = 0;
- this._runnings = 0;
- this._shouldSchedule = false;
- this._depsLength = 0;
- recordEffectScope(this, scope);
- }
- get dirty() {
- if (this._dirtyLevel === 2 || this._dirtyLevel === 3) {
- this._dirtyLevel = 1;
- pauseTracking();
- for (let i = 0; i < this._depsLength; i++) {
- const dep = this.deps[i];
- if (dep.computed) {
- triggerComputed(dep.computed);
- if (this._dirtyLevel >= 4) {
- break;
- }
- }
- }
- if (this._dirtyLevel === 1) {
- this._dirtyLevel = 0;
- }
- resetTracking();
- }
- return this._dirtyLevel >= 4;
- }
- set dirty(v) {
- this._dirtyLevel = v ? 4 : 0;
- }
- run() {
- this._dirtyLevel = 0;
- if (!this.active) {
- return this.fn();
- }
- let lastShouldTrack = shouldTrack;
- let lastEffect = activeEffect;
- try {
- shouldTrack = true;
- activeEffect = this;
- this._runnings++;
- preCleanupEffect(this);
- return this.fn();
- } finally {
- postCleanupEffect(this);
- this._runnings--;
- activeEffect = lastEffect;
- shouldTrack = lastShouldTrack;
- }
- }
- stop() {
- var _a;
- if (this.active) {
- preCleanupEffect(this);
- postCleanupEffect(this);
- (_a = this.onStop) == null ? void 0 : _a.call(this);
- this.active = false;
- }
- }
-}
-function triggerComputed(computed2) {
- return computed2.value;
-}
-function preCleanupEffect(effect2) {
- effect2._trackId++;
- effect2._depsLength = 0;
-}
-function postCleanupEffect(effect2) {
- if (effect2.deps.length > effect2._depsLength) {
- for (let i = effect2._depsLength; i < effect2.deps.length; i++) {
- cleanupDepEffect(effect2.deps[i], effect2);
- }
- effect2.deps.length = effect2._depsLength;
- }
-}
-function cleanupDepEffect(dep, effect2) {
- const trackId = dep.get(effect2);
- if (trackId !== void 0 && effect2._trackId !== trackId) {
- dep.delete(effect2);
- if (dep.size === 0) {
- dep.cleanup();
- }
- }
-}
-let shouldTrack = true;
-let pauseScheduleStack = 0;
-const trackStack = [];
-function pauseTracking() {
- trackStack.push(shouldTrack);
- shouldTrack = false;
-}
-function resetTracking() {
- const last = trackStack.pop();
- shouldTrack = last === void 0 ? true : last;
-}
-function pauseScheduling() {
- pauseScheduleStack++;
-}
-function resetScheduling() {
- pauseScheduleStack--;
- while (!pauseScheduleStack && queueEffectSchedulers.length) {
- queueEffectSchedulers.shift()();
- }
-}
-function trackEffect(effect2, dep, debuggerEventExtraInfo) {
- var _a;
- if (dep.get(effect2) !== effect2._trackId) {
- dep.set(effect2, effect2._trackId);
- const oldDep = effect2.deps[effect2._depsLength];
- if (oldDep !== dep) {
- if (oldDep) {
- cleanupDepEffect(oldDep, effect2);
- }
- effect2.deps[effect2._depsLength++] = dep;
- } else {
- effect2._depsLength++;
- }
- {
- (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));
- }
- }
-}
-const queueEffectSchedulers = [];
-function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {
- var _a;
- pauseScheduling();
- for (const effect2 of dep.keys()) {
- let tracking;
- if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {
- effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0);
- effect2._dirtyLevel = dirtyLevel;
- }
- if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {
- {
- (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));
- }
- effect2.trigger();
- if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) {
- effect2._shouldSchedule = false;
- if (effect2.scheduler) {
- queueEffectSchedulers.push(effect2.scheduler);
- }
- }
- }
- }
- resetScheduling();
-}
-const createDep = (cleanup, computed2) => {
- const dep = /* @__PURE__ */ new Map();
- dep.cleanup = cleanup;
- dep.computed = computed2;
- return dep;
-};
-const targetMap = /* @__PURE__ */ new WeakMap();
-const ITERATE_KEY = Symbol("iterate");
-const MAP_KEY_ITERATE_KEY = Symbol("Map key iterate");
-function track(target, type, key) {
- if (shouldTrack && activeEffect) {
- let depsMap = targetMap.get(target);
- if (!depsMap) {
- targetMap.set(target, depsMap = /* @__PURE__ */ new Map());
- }
- let dep = depsMap.get(key);
- if (!dep) {
- depsMap.set(key, dep = createDep(() => depsMap.delete(key)));
- }
- trackEffect(
- activeEffect,
- dep,
- {
- target,
- type,
- key
- }
- );
- }
-}
-function trigger(target, type, key, newValue, oldValue, oldTarget) {
- const depsMap = targetMap.get(target);
- if (!depsMap) {
- return;
- }
- let deps = [];
- if (type === "clear") {
- deps = [...depsMap.values()];
- } else if (key === "length" && isArray(target)) {
- const newLength = Number(newValue);
- depsMap.forEach((dep, key2) => {
- if (key2 === "length" || !isSymbol(key2) && key2 >= newLength) {
- deps.push(dep);
- }
- });
- } else {
- if (key !== void 0) {
- deps.push(depsMap.get(key));
- }
- switch (type) {
- case "add":
- if (!isArray(target)) {
- deps.push(depsMap.get(ITERATE_KEY));
- if (isMap(target)) {
- deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));
- }
- } else if (isIntegerKey(key)) {
- deps.push(depsMap.get("length"));
- }
- break;
- case "delete":
- if (!isArray(target)) {
- deps.push(depsMap.get(ITERATE_KEY));
- if (isMap(target)) {
- deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));
- }
- }
- break;
- case "set":
- if (isMap(target)) {
- deps.push(depsMap.get(ITERATE_KEY));
- }
- break;
- }
- }
- pauseScheduling();
- for (const dep of deps) {
- if (dep) {
- triggerEffects(
- dep,
- 4,
- {
- target,
- type,
- key,
- newValue,
- oldValue,
- oldTarget
- }
- );
- }
- }
- resetScheduling();
-}
-const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);
-const builtInSymbols = new Set(
- /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol)
-);
-const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();
-function createArrayInstrumentations() {
- const instrumentations = {};
- ["includes", "indexOf", "lastIndexOf"].forEach((key) => {
- instrumentations[key] = function(...args) {
- const arr = toRaw(this);
- for (let i = 0, l = this.length; i < l; i++) {
- track(arr, "get", i + "");
- }
- const res = arr[key](...args);
- if (res === -1 || res === false) {
- return arr[key](...args.map(toRaw));
- } else {
- return res;
- }
- };
- });
- ["push", "pop", "shift", "unshift", "splice"].forEach((key) => {
- instrumentations[key] = function(...args) {
- pauseTracking();
- pauseScheduling();
- const res = toRaw(this)[key].apply(this, args);
- resetScheduling();
- resetTracking();
- return res;
- };
- });
- return instrumentations;
-}
-function hasOwnProperty(key) {
- const obj = toRaw(this);
- track(obj, "has", key);
- return obj.hasOwnProperty(key);
-}
-class BaseReactiveHandler {
- constructor(_isReadonly = false, _isShallow = false) {
- this._isReadonly = _isReadonly;
- this._isShallow = _isShallow;
- }
- get(target, key, receiver) {
- const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;
- if (key === "__v_isReactive") {
- return !isReadonly2;
- } else if (key === "__v_isReadonly") {
- return isReadonly2;
- } else if (key === "__v_isShallow") {
- return isShallow2;
- } else if (key === "__v_raw") {
- if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype
- // this means the reciever is a user proxy of the reactive proxy
- Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {
- return target;
- }
- return;
- }
- const targetIsArray = isArray(target);
- if (!isReadonly2) {
- if (targetIsArray && hasOwn(arrayInstrumentations, key)) {
- return Reflect.get(arrayInstrumentations, key, receiver);
- }
- if (key === "hasOwnProperty") {
- return hasOwnProperty;
- }
- }
- const res = Reflect.get(target, key, receiver);
- if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {
- return res;
- }
- if (!isReadonly2) {
- track(target, "get", key);
- }
- if (isShallow2) {
- return res;
- }
- if (isRef(res)) {
- return targetIsArray && isIntegerKey(key) ? res : res.value;
- }
- if (isObject(res)) {
- return isReadonly2 ? readonly(res) : reactive(res);
- }
- return res;
- }
-}
-class MutableReactiveHandler extends BaseReactiveHandler {
- constructor(isShallow2 = false) {
- super(false, isShallow2);
- }
- set(target, key, value, receiver) {
- let oldValue = target[key];
- if (!this._isShallow) {
- const isOldValueReadonly = isReadonly(oldValue);
- if (!isShallow(value) && !isReadonly(value)) {
- oldValue = toRaw(oldValue);
- value = toRaw(value);
- }
- if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
- if (isOldValueReadonly) {
- return false;
- } else {
- oldValue.value = value;
- return true;
- }
- }
- }
- const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);
- const result = Reflect.set(target, key, value, receiver);
- if (target === toRaw(receiver)) {
- if (!hadKey) {
- trigger(target, "add", key, value);
- } else if (hasChanged(value, oldValue)) {
- trigger(target, "set", key, value, oldValue);
- }
- }
- return result;
- }
- deleteProperty(target, key) {
- const hadKey = hasOwn(target, key);
- const oldValue = target[key];
- const result = Reflect.deleteProperty(target, key);
- if (result && hadKey) {
- trigger(target, "delete", key, void 0, oldValue);
- }
- return result;
- }
- has(target, key) {
- const result = Reflect.has(target, key);
- if (!isSymbol(key) || !builtInSymbols.has(key)) {
- track(target, "has", key);
- }
- return result;
- }
- ownKeys(target) {
- track(
- target,
- "iterate",
- isArray(target) ? "length" : ITERATE_KEY
- );
- return Reflect.ownKeys(target);
- }
-}
-class ReadonlyReactiveHandler extends BaseReactiveHandler {
- constructor(isShallow2 = false) {
- super(true, isShallow2);
- }
- set(target, key) {
- {
- warn$2(
- `Set operation on key "${String(key)}" failed: target is readonly.`,
- target
- );
- }
- return true;
- }
- deleteProperty(target, key) {
- {
- warn$2(
- `Delete operation on key "${String(key)}" failed: target is readonly.`,
- target
- );
- }
- return true;
- }
-}
-const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();
-const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();
-const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(
- true
-);
-const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);
-const toShallow = (value) => value;
-const getProto = (v) => Reflect.getPrototypeOf(v);
-function get(target, key, isReadonly2 = false, isShallow2 = false) {
- target = target["__v_raw"];
- const rawTarget = toRaw(target);
- const rawKey = toRaw(key);
- if (!isReadonly2) {
- if (hasChanged(key, rawKey)) {
- track(rawTarget, "get", key);
- }
- track(rawTarget, "get", rawKey);
- }
- const { has: has2 } = getProto(rawTarget);
- const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;
- if (has2.call(rawTarget, key)) {
- return wrap(target.get(key));
- } else if (has2.call(rawTarget, rawKey)) {
- return wrap(target.get(rawKey));
- } else if (target !== rawTarget) {
- target.get(key);
- }
-}
-function has$1(key, isReadonly2 = false) {
- const target = this["__v_raw"];
- const rawTarget = toRaw(target);
- const rawKey = toRaw(key);
- if (!isReadonly2) {
- if (hasChanged(key, rawKey)) {
- track(rawTarget, "has", key);
- }
- track(rawTarget, "has", rawKey);
- }
- return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);
-}
-function size(target, isReadonly2 = false) {
- target = target["__v_raw"];
- !isReadonly2 && track(toRaw(target), "iterate", ITERATE_KEY);
- return Reflect.get(target, "size", target);
-}
-function add(value) {
- value = toRaw(value);
- const target = toRaw(this);
- const proto = getProto(target);
- const hadKey = proto.has.call(target, value);
- if (!hadKey) {
- target.add(value);
- trigger(target, "add", value, value);
- }
- return this;
-}
-function set$1(key, value) {
- value = toRaw(value);
- const target = toRaw(this);
- const { has: has2, get: get2 } = getProto(target);
- let hadKey = has2.call(target, key);
- if (!hadKey) {
- key = toRaw(key);
- hadKey = has2.call(target, key);
- } else {
- checkIdentityKeys(target, has2, key);
- }
- const oldValue = get2.call(target, key);
- target.set(key, value);
- if (!hadKey) {
- trigger(target, "add", key, value);
- } else if (hasChanged(value, oldValue)) {
- trigger(target, "set", key, value, oldValue);
- }
- return this;
-}
-function deleteEntry(key) {
- const target = toRaw(this);
- const { has: has2, get: get2 } = getProto(target);
- let hadKey = has2.call(target, key);
- if (!hadKey) {
- key = toRaw(key);
- hadKey = has2.call(target, key);
- } else {
- checkIdentityKeys(target, has2, key);
- }
- const oldValue = get2 ? get2.call(target, key) : void 0;
- const result = target.delete(key);
- if (hadKey) {
- trigger(target, "delete", key, void 0, oldValue);
- }
- return result;
-}
-function clear() {
- const target = toRaw(this);
- const hadItems = target.size !== 0;
- const oldTarget = isMap(target) ? new Map(target) : new Set(target);
- const result = target.clear();
- if (hadItems) {
- trigger(target, "clear", void 0, void 0, oldTarget);
- }
- return result;
-}
-function createForEach(isReadonly2, isShallow2) {
- return function forEach(callback, thisArg) {
- const observed = this;
- const target = observed["__v_raw"];
- const rawTarget = toRaw(target);
- const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;
- !isReadonly2 && track(rawTarget, "iterate", ITERATE_KEY);
- return target.forEach((value, key) => {
- return callback.call(thisArg, wrap(value), wrap(key), observed);
- });
- };
-}
-function createIterableMethod(method, isReadonly2, isShallow2) {
- return function(...args) {
- const target = this["__v_raw"];
- const rawTarget = toRaw(target);
- const targetIsMap = isMap(rawTarget);
- const isPair = method === "entries" || method === Symbol.iterator && targetIsMap;
- const isKeyOnly = method === "keys" && targetIsMap;
- const innerIterator = target[method](...args);
- const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;
- !isReadonly2 && track(
- rawTarget,
- "iterate",
- isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY
- );
- return {
- // iterator protocol
- next() {
- const { value, done } = innerIterator.next();
- return done ? { value, done } : {
- value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),
- done
- };
- },
- // iterable protocol
- [Symbol.iterator]() {
- return this;
- }
- };
- };
-}
-function createReadonlyMethod(type) {
- return function(...args) {
- {
- const key = args[0] ? `on key "${args[0]}" ` : ``;
- warn$2(
- `${capitalize(type)} operation ${key}failed: target is readonly.`,
- toRaw(this)
- );
- }
- return type === "delete" ? false : type === "clear" ? void 0 : this;
- };
-}
-function createInstrumentations() {
- const mutableInstrumentations2 = {
- get(key) {
- return get(this, key);
- },
- get size() {
- return size(this);
- },
- has: has$1,
- add,
- set: set$1,
- delete: deleteEntry,
- clear,
- forEach: createForEach(false, false)
- };
- const shallowInstrumentations2 = {
- get(key) {
- return get(this, key, false, true);
- },
- get size() {
- return size(this);
- },
- has: has$1,
- add,
- set: set$1,
- delete: deleteEntry,
- clear,
- forEach: createForEach(false, true)
- };
- const readonlyInstrumentations2 = {
- get(key) {
- return get(this, key, true);
- },
- get size() {
- return size(this, true);
- },
- has(key) {
- return has$1.call(this, key, true);
- },
- add: createReadonlyMethod("add"),
- set: createReadonlyMethod("set"),
- delete: createReadonlyMethod("delete"),
- clear: createReadonlyMethod("clear"),
- forEach: createForEach(true, false)
- };
- const shallowReadonlyInstrumentations2 = {
- get(key) {
- return get(this, key, true, true);
- },
- get size() {
- return size(this, true);
- },
- has(key) {
- return has$1.call(this, key, true);
- },
- add: createReadonlyMethod("add"),
- set: createReadonlyMethod("set"),
- delete: createReadonlyMethod("delete"),
- clear: createReadonlyMethod("clear"),
- forEach: createForEach(true, true)
- };
- const iteratorMethods = [
- "keys",
- "values",
- "entries",
- Symbol.iterator
- ];
- iteratorMethods.forEach((method) => {
- mutableInstrumentations2[method] = createIterableMethod(method, false, false);
- readonlyInstrumentations2[method] = createIterableMethod(method, true, false);
- shallowInstrumentations2[method] = createIterableMethod(method, false, true);
- shallowReadonlyInstrumentations2[method] = createIterableMethod(
- method,
- true,
- true
- );
- });
- return [
- mutableInstrumentations2,
- readonlyInstrumentations2,
- shallowInstrumentations2,
- shallowReadonlyInstrumentations2
- ];
-}
-const [
- mutableInstrumentations,
- readonlyInstrumentations,
- shallowInstrumentations,
- shallowReadonlyInstrumentations
-] = /* @__PURE__ */ createInstrumentations();
-function createInstrumentationGetter(isReadonly2, shallow) {
- const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations;
- return (target, key, receiver) => {
- if (key === "__v_isReactive") {
- return !isReadonly2;
- } else if (key === "__v_isReadonly") {
- return isReadonly2;
- } else if (key === "__v_raw") {
- return target;
- }
- return Reflect.get(
- hasOwn(instrumentations, key) && key in target ? instrumentations : target,
- key,
- receiver
- );
- };
-}
-const mutableCollectionHandlers = {
- get: /* @__PURE__ */ createInstrumentationGetter(false, false)
-};
-const shallowCollectionHandlers = {
- get: /* @__PURE__ */ createInstrumentationGetter(false, true)
-};
-const readonlyCollectionHandlers = {
- get: /* @__PURE__ */ createInstrumentationGetter(true, false)
-};
-const shallowReadonlyCollectionHandlers = {
- get: /* @__PURE__ */ createInstrumentationGetter(true, true)
-};
-function checkIdentityKeys(target, has2, key) {
- const rawKey = toRaw(key);
- if (rawKey !== key && has2.call(target, rawKey)) {
- const type = toRawType(target);
- warn$2(
- `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`
- );
- }
-}
-const reactiveMap = /* @__PURE__ */ new WeakMap();
-const shallowReactiveMap = /* @__PURE__ */ new WeakMap();
-const readonlyMap = /* @__PURE__ */ new WeakMap();
-const shallowReadonlyMap = /* @__PURE__ */ new WeakMap();
-function targetTypeMap(rawType) {
- switch (rawType) {
- case "Object":
- case "Array":
- return 1;
- case "Map":
- case "Set":
- case "WeakMap":
- case "WeakSet":
- return 2;
- default:
- return 0;
- }
-}
-function getTargetType(value) {
- return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));
-}
-function reactive(target) {
- if (isReadonly(target)) {
- return target;
- }
- return createReactiveObject(
- target,
- false,
- mutableHandlers,
- mutableCollectionHandlers,
- reactiveMap
- );
-}
-function shallowReactive(target) {
- return createReactiveObject(
- target,
- false,
- shallowReactiveHandlers,
- shallowCollectionHandlers,
- shallowReactiveMap
- );
-}
-function readonly(target) {
- return createReactiveObject(
- target,
- true,
- readonlyHandlers,
- readonlyCollectionHandlers,
- readonlyMap
- );
-}
-function shallowReadonly(target) {
- return createReactiveObject(
- target,
- true,
- shallowReadonlyHandlers,
- shallowReadonlyCollectionHandlers,
- shallowReadonlyMap
- );
-}
-function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {
- if (!isObject(target)) {
- {
- warn$2(`value cannot be made reactive: ${String(target)}`);
- }
- return target;
- }
- if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) {
- return target;
- }
- const existingProxy = proxyMap.get(target);
- if (existingProxy) {
- return existingProxy;
- }
- const targetType = getTargetType(target);
- if (targetType === 0) {
- return target;
- }
- const proxy = new Proxy(
- target,
- targetType === 2 ? collectionHandlers : baseHandlers
- );
- proxyMap.set(target, proxy);
- return proxy;
-}
-function isReactive(value) {
- if (isReadonly(value)) {
- return isReactive(value["__v_raw"]);
- }
- return !!(value && value["__v_isReactive"]);
-}
-function isReadonly(value) {
- return !!(value && value["__v_isReadonly"]);
-}
-function isShallow(value) {
- return !!(value && value["__v_isShallow"]);
-}
-function isProxy(value) {
- return isReactive(value) || isReadonly(value);
-}
-function toRaw(observed) {
- const raw = observed && observed["__v_raw"];
- return raw ? toRaw(raw) : observed;
-}
-function markRaw(value) {
- if (Object.isExtensible(value)) {
- def(value, "__v_skip", true);
- }
- return value;
-}
-const toReactive = (value) => isObject(value) ? reactive(value) : value;
-const toReadonly = (value) => isObject(value) ? readonly(value) : value;
-const COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`;
-class ComputedRefImpl {
- constructor(getter, _setter, isReadonly2, isSSR) {
- this.getter = getter;
- this._setter = _setter;
- this.dep = void 0;
- this.__v_isRef = true;
- this["__v_isReadonly"] = false;
- this.effect = new ReactiveEffect(
- () => getter(this._value),
- () => triggerRefValue(
- this,
- this.effect._dirtyLevel === 2 ? 2 : 3
- )
- );
- this.effect.computed = this;
- this.effect.active = this._cacheable = !isSSR;
- this["__v_isReadonly"] = isReadonly2;
- }
- get value() {
- const self = toRaw(this);
- if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) {
- triggerRefValue(self, 4);
- }
- trackRefValue(self);
- if (self.effect._dirtyLevel >= 2) {
- if (this._warnRecursive) {
- warn$2(COMPUTED_SIDE_EFFECT_WARN, `
-
-getter: `, this.getter);
- }
- triggerRefValue(self, 2);
- }
- return self._value;
- }
- set value(newValue) {
- this._setter(newValue);
- }
- // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x
- get _dirty() {
- return this.effect.dirty;
- }
- set _dirty(v) {
- this.effect.dirty = v;
- }
- // #endregion
-}
-function computed$1(getterOrOptions, debugOptions, isSSR = false) {
- let getter;
- let setter;
- const onlyGetter = isFunction(getterOrOptions);
- if (onlyGetter) {
- getter = getterOrOptions;
- setter = () => {
- warn$2("Write operation failed: computed value is readonly");
- };
- } else {
- getter = getterOrOptions.get;
- setter = getterOrOptions.set;
- }
- const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);
- if (debugOptions && !isSSR) {
- cRef.effect.onTrack = debugOptions.onTrack;
- cRef.effect.onTrigger = debugOptions.onTrigger;
- }
- return cRef;
-}
-function trackRefValue(ref2) {
- var _a;
- if (shouldTrack && activeEffect) {
- ref2 = toRaw(ref2);
- trackEffect(
- activeEffect,
- (_a = ref2.dep) != null ? _a : ref2.dep = createDep(
- () => ref2.dep = void 0,
- ref2 instanceof ComputedRefImpl ? ref2 : void 0
- ),
- {
- target: ref2,
- type: "get",
- key: "value"
- }
- );
- }
-}
-function triggerRefValue(ref2, dirtyLevel = 4, newVal) {
- ref2 = toRaw(ref2);
- const dep = ref2.dep;
- if (dep) {
- triggerEffects(
- dep,
- dirtyLevel,
- {
- target: ref2,
- type: "set",
- key: "value",
- newValue: newVal
- }
- );
- }
-}
-function isRef(r2) {
- return !!(r2 && r2.__v_isRef === true);
-}
-function ref(value) {
- return createRef(value, false);
-}
-function createRef(rawValue, shallow) {
- if (isRef(rawValue)) {
- return rawValue;
- }
- return new RefImpl(rawValue, shallow);
-}
-class RefImpl {
- constructor(value, __v_isShallow) {
- this.__v_isShallow = __v_isShallow;
- this.dep = void 0;
- this.__v_isRef = true;
- this._rawValue = __v_isShallow ? value : toRaw(value);
- this._value = __v_isShallow ? value : toReactive(value);
- }
- get value() {
- trackRefValue(this);
- return this._value;
- }
- set value(newVal) {
- const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);
- newVal = useDirectValue ? newVal : toRaw(newVal);
- if (hasChanged(newVal, this._rawValue)) {
- this._rawValue = newVal;
- this._value = useDirectValue ? newVal : toReactive(newVal);
- triggerRefValue(this, 4, newVal);
- }
- }
-}
-function unref(ref2) {
- return isRef(ref2) ? ref2.value : ref2;
-}
-const shallowUnwrapHandlers = {
- get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),
- set: (target, key, value, receiver) => {
- const oldValue = target[key];
- if (isRef(oldValue) && !isRef(value)) {
- oldValue.value = value;
- return true;
- } else {
- return Reflect.set(target, key, value, receiver);
- }
- }
-};
-function proxyRefs(objectWithRefs) {
- return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);
-}
-const stack = [];
-function pushWarningContext(vnode) {
- stack.push(vnode);
-}
-function popWarningContext() {
- stack.pop();
-}
-function warn$1(msg, ...args) {
- pauseTracking();
- const instance = stack.length ? stack[stack.length - 1].component : null;
- const appWarnHandler = instance && instance.appContext.config.warnHandler;
- const trace = getComponentTrace();
- if (appWarnHandler) {
- callWithErrorHandling(
- appWarnHandler,
- instance,
- 11,
- [
- msg + args.map((a) => {
- var _a, _b;
- return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);
- }).join(""),
- instance && instance.proxy,
- trace.map(
- ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`
- ).join("\n"),
- trace
- ]
- );
- } else {
- const warnArgs = [`[Vue warn]: ${msg}`, ...args];
- if (trace.length && // avoid spamming console during tests
- true) {
- warnArgs.push(`
-`, ...formatTrace(trace));
- }
- console.warn(...warnArgs);
- }
- resetTracking();
-}
-function getComponentTrace() {
- let currentVNode = stack[stack.length - 1];
- if (!currentVNode) {
- return [];
- }
- const normalizedStack = [];
- while (currentVNode) {
- const last = normalizedStack[0];
- if (last && last.vnode === currentVNode) {
- last.recurseCount++;
- } else {
- normalizedStack.push({
- vnode: currentVNode,
- recurseCount: 0
- });
- }
- const parentInstance = currentVNode.component && currentVNode.component.parent;
- currentVNode = parentInstance && parentInstance.vnode;
- }
- return normalizedStack;
-}
-function formatTrace(trace) {
- const logs = [];
- trace.forEach((entry, i) => {
- logs.push(...i === 0 ? [] : [`
-`], ...formatTraceEntry(entry));
- });
- return logs;
-}
-function formatTraceEntry({ vnode, recurseCount }) {
- const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;
- const isRoot = vnode.component ? vnode.component.parent == null : false;
- const open = ` at <${formatComponentName(
- vnode.component,
- vnode.type,
- isRoot
- )}`;
- const close = `>` + postfix;
- return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];
-}
-function formatProps(props) {
- const res = [];
- const keys = Object.keys(props);
- keys.slice(0, 3).forEach((key) => {
- res.push(...formatProp(key, props[key]));
- });
- if (keys.length > 3) {
- res.push(` ...`);
- }
- return res;
-}
-function formatProp(key, value, raw) {
- if (isString(value)) {
- value = JSON.stringify(value);
- return raw ? value : [`${key}=${value}`];
- } else if (typeof value === "number" || typeof value === "boolean" || value == null) {
- return raw ? value : [`${key}=${value}`];
- } else if (isRef(value)) {
- value = formatProp(key, toRaw(value.value), true);
- return raw ? value : [`${key}=Ref<`, value, `>`];
- } else if (isFunction(value)) {
- return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];
- } else {
- value = toRaw(value);
- return raw ? value : [`${key}=`, value];
- }
-}
-const ErrorTypeStrings = {
- ["sp"]: "serverPrefetch hook",
- ["bc"]: "beforeCreate hook",
- ["c"]: "created hook",
- ["bm"]: "beforeMount hook",
- ["m"]: "mounted hook",
- ["bu"]: "beforeUpdate hook",
- ["u"]: "updated",
- ["bum"]: "beforeUnmount hook",
- ["um"]: "unmounted hook",
- ["a"]: "activated hook",
- ["da"]: "deactivated hook",
- ["ec"]: "errorCaptured hook",
- ["rtc"]: "renderTracked hook",
- ["rtg"]: "renderTriggered hook",
- [0]: "setup function",
- [1]: "render function",
- [2]: "watcher getter",
- [3]: "watcher callback",
- [4]: "watcher cleanup function",
- [5]: "native event handler",
- [6]: "component event handler",
- [7]: "vnode hook",
- [8]: "directive hook",
- [9]: "transition hook",
- [10]: "app errorHandler",
- [11]: "app warnHandler",
- [12]: "ref function",
- [13]: "async component loader",
- [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ."
-};
-function callWithErrorHandling(fn, instance, type, args) {
- try {
- return args ? fn(...args) : fn();
- } catch (err) {
- handleError(err, instance, type);
- }
-}
-function callWithAsyncErrorHandling(fn, instance, type, args) {
- if (isFunction(fn)) {
- const res = callWithErrorHandling(fn, instance, type, args);
- if (res && isPromise(res)) {
- res.catch((err) => {
- handleError(err, instance, type);
- });
- }
- return res;
- }
- const values = [];
- for (let i = 0; i < fn.length; i++) {
- values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));
- }
- return values;
-}
-function handleError(err, instance, type, throwInDev = true) {
- const contextVNode = instance ? instance.vnode : null;
- if (instance) {
- let cur = instance.parent;
- const exposedInstance = instance.proxy;
- const errorInfo = ErrorTypeStrings[type] || type;
- while (cur) {
- const errorCapturedHooks = cur.ec;
- if (errorCapturedHooks) {
- for (let i = 0; i < errorCapturedHooks.length; i++) {
- if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {
- return;
- }
- }
- }
- cur = cur.parent;
- }
- const appErrorHandler = instance.appContext.config.errorHandler;
- if (appErrorHandler) {
- callWithErrorHandling(
- appErrorHandler,
- null,
- 10,
- [err, exposedInstance, errorInfo]
- );
- return;
- }
- }
- logError(err, type, contextVNode, throwInDev);
-}
-function logError(err, type, contextVNode, throwInDev = true) {
- {
- const info = ErrorTypeStrings[type] || type;
- if (contextVNode) {
- pushWarningContext(contextVNode);
- }
- warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);
- if (contextVNode) {
- popWarningContext();
- }
- if (throwInDev) {
- console.error(err);
- } else {
- console.error(err);
- }
- }
-}
-let isFlushing = false;
-let isFlushPending = false;
-const queue$1 = [];
-let flushIndex = 0;
-const pendingPostFlushCbs = [];
-let activePostFlushCbs = null;
-let postFlushIndex = 0;
-const resolvedPromise = /* @__PURE__ */ Promise.resolve();
-let currentFlushPromise = null;
-const RECURSION_LIMIT = 100;
-function nextTick$1(fn) {
- const p2 = currentFlushPromise || resolvedPromise;
- return fn ? p2.then(this ? fn.bind(this) : fn) : p2;
-}
-function findInsertionIndex(id) {
- let start = flushIndex + 1;
- let end = queue$1.length;
- while (start < end) {
- const middle = start + end >>> 1;
- const middleJob = queue$1[middle];
- const middleJobId = getId(middleJob);
- if (middleJobId < id || middleJobId === id && middleJob.pre) {
- start = middle + 1;
- } else {
- end = middle;
- }
- }
- return start;
-}
-function queueJob(job) {
- if (!queue$1.length || !queue$1.includes(
- job,
- isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex
- )) {
- if (job.id == null) {
- queue$1.push(job);
- } else {
- queue$1.splice(findInsertionIndex(job.id), 0, job);
- }
- queueFlush();
- }
-}
-function queueFlush() {
- if (!isFlushing && !isFlushPending) {
- isFlushPending = true;
- currentFlushPromise = resolvedPromise.then(flushJobs);
- }
-}
-function hasQueueJob(job) {
- return queue$1.indexOf(job) > -1;
-}
-function invalidateJob(job) {
- const i = queue$1.indexOf(job);
- if (i > flushIndex) {
- queue$1.splice(i, 1);
- }
-}
-function queuePostFlushCb(cb) {
- if (!isArray(cb)) {
- if (!activePostFlushCbs || !activePostFlushCbs.includes(
- cb,
- cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex
- )) {
- pendingPostFlushCbs.push(cb);
- }
- } else {
- pendingPostFlushCbs.push(...cb);
- }
- queueFlush();
-}
-function flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {
- {
- seen = seen || /* @__PURE__ */ new Map();
- }
- for (; i < queue$1.length; i++) {
- const cb = queue$1[i];
- if (cb && cb.pre) {
- if (checkRecursiveUpdates(seen, cb)) {
- continue;
- }
- queue$1.splice(i, 1);
- i--;
- cb();
- }
- }
-}
-function flushPostFlushCbs(seen) {
- if (pendingPostFlushCbs.length) {
- const deduped = [...new Set(pendingPostFlushCbs)].sort(
- (a, b) => getId(a) - getId(b)
- );
- pendingPostFlushCbs.length = 0;
- if (activePostFlushCbs) {
- activePostFlushCbs.push(...deduped);
- return;
- }
- activePostFlushCbs = deduped;
- {
- seen = seen || /* @__PURE__ */ new Map();
- }
- for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {
- if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {
- continue;
- }
- activePostFlushCbs[postFlushIndex]();
- }
- activePostFlushCbs = null;
- postFlushIndex = 0;
- }
-}
-const getId = (job) => job.id == null ? Infinity : job.id;
-const comparator = (a, b) => {
- const diff2 = getId(a) - getId(b);
- if (diff2 === 0) {
- if (a.pre && !b.pre)
- return -1;
- if (b.pre && !a.pre)
- return 1;
- }
- return diff2;
-};
-function flushJobs(seen) {
- isFlushPending = false;
- isFlushing = true;
- {
- seen = seen || /* @__PURE__ */ new Map();
- }
- queue$1.sort(comparator);
- const check = (job) => checkRecursiveUpdates(seen, job);
- try {
- for (flushIndex = 0; flushIndex < queue$1.length; flushIndex++) {
- const job = queue$1[flushIndex];
- if (job && job.active !== false) {
- if (check(job)) {
- continue;
- }
- callWithErrorHandling(job, null, 14);
- }
- }
- } finally {
- flushIndex = 0;
- queue$1.length = 0;
- flushPostFlushCbs(seen);
- isFlushing = false;
- currentFlushPromise = null;
- if (queue$1.length || pendingPostFlushCbs.length) {
- flushJobs(seen);
- }
- }
-}
-function checkRecursiveUpdates(seen, fn) {
- if (!seen.has(fn)) {
- seen.set(fn, 1);
- } else {
- const count = seen.get(fn);
- if (count > RECURSION_LIMIT) {
- const instance = fn.ownerInstance;
- const componentName = instance && getComponentName(instance.type);
- handleError(
- `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,
- null,
- 10
- );
- return true;
- } else {
- seen.set(fn, count + 1);
- }
- }
-}
-let devtools;
-let buffer = [];
-let devtoolsNotInstalled = false;
-function emit$1(event, ...args) {
- if (devtools) {
- devtools.emit(event, ...args);
- } else if (!devtoolsNotInstalled) {
- buffer.push({ event, args });
- }
-}
-function setDevtoolsHook(hook, target) {
- var _a, _b;
- devtools = hook;
- if (devtools) {
- devtools.enabled = true;
- buffer.forEach(({ event, args }) => devtools.emit(event, ...args));
- buffer = [];
- } else if (
- // handle late devtools injection - only do this if we are in an actual
- // browser environment to avoid the timer handle stalling test runner exit
- // (#4815)
- typeof window !== "undefined" && // some envs mock window but not fully
- window.HTMLElement && // also exclude jsdom
- !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom"))
- ) {
- const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];
- replay.push((newHook) => {
- setDevtoolsHook(newHook, target);
- });
- setTimeout(() => {
- if (!devtools) {
- target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;
- devtoolsNotInstalled = true;
- buffer = [];
- }
- }, 3e3);
- } else {
- devtoolsNotInstalled = true;
- buffer = [];
- }
-}
-function devtoolsInitApp(app, version2) {
- emit$1("app:init", app, version2, {
- Fragment,
- Text,
- Comment,
- Static
- });
-}
-const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(
- "component:added"
- /* COMPONENT_ADDED */
-);
-const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(
- "component:updated"
- /* COMPONENT_UPDATED */
-);
-const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(
- "component:removed"
- /* COMPONENT_REMOVED */
-);
-const devtoolsComponentRemoved = (component) => {
- if (devtools && typeof devtools.cleanupBuffer === "function" && // remove the component if it wasn't buffered
- !devtools.cleanupBuffer(component)) {
- _devtoolsComponentRemoved(component);
- }
-};
-/*! #__NO_SIDE_EFFECTS__ */
-// @__NO_SIDE_EFFECTS__
-function createDevtoolsComponentHook(hook) {
- return (component) => {
- emit$1(
- hook,
- component.appContext.app,
- component.uid,
- // fixed by xxxxxx
- // 为 0 是 App,无 parent 是 Page 指向 App
- component.uid === 0 ? void 0 : component.parent ? component.parent.uid : 0,
- component
- );
- };
-}
-const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(
- "perf:start"
- /* PERFORMANCE_START */
-);
-const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(
- "perf:end"
- /* PERFORMANCE_END */
-);
-function createDevtoolsPerformanceHook(hook) {
- return (component, type, time) => {
- emit$1(hook, component.appContext.app, component.uid, component, type, time);
- };
-}
-function devtoolsComponentEmit(component, event, params) {
- emit$1(
- "component:emit",
- component.appContext.app,
- component,
- event,
- params
- );
-}
-function emit(instance, event, ...rawArgs) {
- if (instance.isUnmounted)
- return;
- const props = instance.vnode.props || EMPTY_OBJ;
- {
- const {
- emitsOptions,
- propsOptions: [propsOptions]
- } = instance;
- if (emitsOptions) {
- if (!(event in emitsOptions) && true) {
- if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {
- warn$1(
- `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.`
- );
- }
- } else {
- const validator = emitsOptions[event];
- if (isFunction(validator)) {
- const isValid = validator(...rawArgs);
- if (!isValid) {
- warn$1(
- `Invalid event arguments: event validation failed for event "${event}".`
- );
- }
- }
- }
- }
- }
- let args = rawArgs;
- const isModelListener2 = event.startsWith("update:");
- const modelArg = isModelListener2 && event.slice(7);
- if (modelArg && modelArg in props) {
- const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`;
- const { number, trim } = props[modifiersKey] || EMPTY_OBJ;
- if (trim) {
- args = rawArgs.map((a) => isString(a) ? a.trim() : a);
- }
- if (number) {
- args = rawArgs.map(looseToNumber);
- }
- }
- {
- devtoolsComponentEmit(instance, event, args);
- }
- {
- const lowerCaseEvent = event.toLowerCase();
- if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {
- warn$1(
- `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName(
- instance,
- instance.type
- )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate(
- event
- )}" instead of "${event}".`
- );
- }
- }
- let handlerName;
- let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)
- props[handlerName = toHandlerKey(camelize(event))];
- if (!handler && isModelListener2) {
- handler = props[handlerName = toHandlerKey(hyphenate(event))];
- }
- if (handler) {
- callWithAsyncErrorHandling(
- handler,
- instance,
- 6,
- args
- );
- }
- const onceHandler = props[handlerName + `Once`];
- if (onceHandler) {
- if (!instance.emitted) {
- instance.emitted = {};
- } else if (instance.emitted[handlerName]) {
- return;
- }
- instance.emitted[handlerName] = true;
- callWithAsyncErrorHandling(
- onceHandler,
- instance,
- 6,
- args
- );
- }
-}
-function normalizeEmitsOptions(comp, appContext, asMixin = false) {
- const cache = appContext.emitsCache;
- const cached = cache.get(comp);
- if (cached !== void 0) {
- return cached;
- }
- const raw = comp.emits;
- let normalized = {};
- let hasExtends = false;
- if (!isFunction(comp)) {
- const extendEmits = (raw2) => {
- const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);
- if (normalizedFromExtend) {
- hasExtends = true;
- extend(normalized, normalizedFromExtend);
- }
- };
- if (!asMixin && appContext.mixins.length) {
- appContext.mixins.forEach(extendEmits);
- }
- if (comp.extends) {
- extendEmits(comp.extends);
- }
- if (comp.mixins) {
- comp.mixins.forEach(extendEmits);
- }
- }
- if (!raw && !hasExtends) {
- if (isObject(comp)) {
- cache.set(comp, null);
- }
- return null;
- }
- if (isArray(raw)) {
- raw.forEach((key) => normalized[key] = null);
- } else {
- extend(normalized, raw);
- }
- if (isObject(comp)) {
- cache.set(comp, normalized);
- }
- return normalized;
-}
-function isEmitListener(options, key) {
- if (!options || !isOn(key)) {
- return false;
- }
- key = key.slice(2).replace(/Once$/, "");
- return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);
-}
-let currentRenderingInstance = null;
-function setCurrentRenderingInstance(instance) {
- const prev = currentRenderingInstance;
- currentRenderingInstance = instance;
- instance && instance.type.__scopeId || null;
- return prev;
-}
-const COMPONENTS = "components";
-function resolveComponent(name, maybeSelfReference) {
- return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;
-}
-function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {
- const instance = currentRenderingInstance || currentInstance;
- if (instance) {
- const Component2 = instance.type;
- if (type === COMPONENTS) {
- const selfName = getComponentName(
- Component2,
- false
- );
- if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {
- return Component2;
- }
- }
- const res = (
- // local registration
- // check instance[type] first which is resolved for options API
- resolve(instance[type] || Component2[type], name) || // global registration
- resolve(instance.appContext[type], name)
- );
- if (!res && maybeSelfReference) {
- return Component2;
- }
- if (warnMissing && !res) {
- const extra = type === COMPONENTS ? `
-If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;
- warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);
- }
- return res;
- } else {
- warn$1(
- `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`
- );
- }
-}
-function resolve(registry, name) {
- return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);
-}
-const INITIAL_WATCHER_VALUE = {};
-function watch(source, cb, options) {
- if (!isFunction(cb)) {
- warn$1(
- `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.`
- );
- }
- return doWatch(source, cb, options);
-}
-function doWatch(source, cb, {
- immediate,
- deep,
- flush,
- once: once2,
- onTrack,
- onTrigger
-} = EMPTY_OBJ) {
- if (cb && once2) {
- const _cb = cb;
- cb = (...args) => {
- _cb(...args);
- unwatch();
- };
- }
- if (deep !== void 0 && typeof deep === "number") {
- warn$1(
- `watch() "deep" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.`
- );
- }
- if (!cb) {
- if (immediate !== void 0) {
- warn$1(
- `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.`
- );
- }
- if (deep !== void 0) {
- warn$1(
- `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.`
- );
- }
- if (once2 !== void 0) {
- warn$1(
- `watch() "once" option is only respected when using the watch(source, callback, options?) signature.`
- );
- }
- }
- const warnInvalidSource = (s2) => {
- warn$1(
- `Invalid watch source: `,
- s2,
- `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`
- );
- };
- const instance = currentInstance;
- const reactiveGetter = (source2) => deep === true ? source2 : (
- // for deep: false, only traverse root-level properties
- traverse(source2, deep === false ? 1 : void 0)
- );
- let getter;
- let forceTrigger = false;
- let isMultiSource = false;
- if (isRef(source)) {
- getter = () => source.value;
- forceTrigger = isShallow(source);
- } else if (isReactive(source)) {
- getter = () => reactiveGetter(source);
- forceTrigger = true;
- } else if (isArray(source)) {
- isMultiSource = true;
- forceTrigger = source.some((s2) => isReactive(s2) || isShallow(s2));
- getter = () => source.map((s2) => {
- if (isRef(s2)) {
- return s2.value;
- } else if (isReactive(s2)) {
- return reactiveGetter(s2);
- } else if (isFunction(s2)) {
- return callWithErrorHandling(s2, instance, 2);
- } else {
- warnInvalidSource(s2);
- }
- });
- } else if (isFunction(source)) {
- if (cb) {
- getter = () => callWithErrorHandling(source, instance, 2);
- } else {
- getter = () => {
- if (cleanup) {
- cleanup();
- }
- return callWithAsyncErrorHandling(
- source,
- instance,
- 3,
- [onCleanup]
- );
- };
- }
- } else {
- getter = NOOP;
- warnInvalidSource(source);
- }
- if (cb && deep) {
- const baseGetter = getter;
- getter = () => traverse(baseGetter());
- }
- let cleanup;
- let onCleanup = (fn) => {
- cleanup = effect2.onStop = () => {
- callWithErrorHandling(fn, instance, 4);
- cleanup = effect2.onStop = void 0;
- };
- };
- let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
- const job = () => {
- if (!effect2.active || !effect2.dirty) {
- return;
- }
- if (cb) {
- const newValue = effect2.run();
- if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) {
- if (cleanup) {
- cleanup();
- }
- callWithAsyncErrorHandling(cb, instance, 3, [
- newValue,
- // pass undefined as the old value when it's changed for the first time
- oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
- onCleanup
- ]);
- oldValue = newValue;
- }
- } else {
- effect2.run();
- }
- };
- job.allowRecurse = !!cb;
- let scheduler;
- if (flush === "sync") {
- scheduler = job;
- } else if (flush === "post") {
- scheduler = () => queuePostRenderEffect$1(job, instance && instance.suspense);
- } else {
- job.pre = true;
- if (instance)
- job.id = instance.uid;
- scheduler = () => queueJob(job);
- }
- const effect2 = new ReactiveEffect(getter, NOOP, scheduler);
- const scope = getCurrentScope();
- const unwatch = () => {
- effect2.stop();
- if (scope) {
- remove(scope.effects, effect2);
- }
- };
- {
- effect2.onTrack = onTrack;
- effect2.onTrigger = onTrigger;
- }
- if (cb) {
- if (immediate) {
- job();
- } else {
- oldValue = effect2.run();
- }
- } else if (flush === "post") {
- queuePostRenderEffect$1(
- effect2.run.bind(effect2),
- instance && instance.suspense
- );
- } else {
- effect2.run();
- }
- return unwatch;
-}
-function instanceWatch(source, value, options) {
- const publicThis = this.proxy;
- const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);
- let cb;
- if (isFunction(value)) {
- cb = value;
- } else {
- cb = value.handler;
- options = value;
- }
- const reset = setCurrentInstance(this);
- const res = doWatch(getter, cb.bind(publicThis), options);
- reset();
- return res;
-}
-function createPathGetter(ctx, path) {
- const segments = path.split(".");
- return () => {
- let cur = ctx;
- for (let i = 0; i < segments.length && cur; i++) {
- cur = cur[segments[i]];
- }
- return cur;
- };
-}
-function traverse(value, depth, currentDepth = 0, seen) {
- if (!isObject(value) || value["__v_skip"]) {
- return value;
- }
- if (depth && depth > 0) {
- if (currentDepth >= depth) {
- return value;
- }
- currentDepth++;
- }
- seen = seen || /* @__PURE__ */ new Set();
- if (seen.has(value)) {
- return value;
- }
- seen.add(value);
- if (isRef(value)) {
- traverse(value.value, depth, currentDepth, seen);
- } else if (isArray(value)) {
- for (let i = 0; i < value.length; i++) {
- traverse(value[i], depth, currentDepth, seen);
- }
- } else if (isSet(value) || isMap(value)) {
- value.forEach((v) => {
- traverse(v, depth, currentDepth, seen);
- });
- } else if (isPlainObject(value)) {
- for (const key in value) {
- traverse(value[key], depth, currentDepth, seen);
- }
- }
- return value;
-}
-function validateDirectiveName(name) {
- if (isBuiltInDirective(name)) {
- warn$1("Do not use built-in directive ids as custom directive id: " + name);
- }
-}
-function createAppContext() {
- return {
- app: null,
- config: {
- isNativeTag: NO,
- performance: false,
- globalProperties: {},
- optionMergeStrategies: {},
- errorHandler: void 0,
- warnHandler: void 0,
- compilerOptions: {}
- },
- mixins: [],
- components: {},
- directives: {},
- provides: /* @__PURE__ */ Object.create(null),
- optionsCache: /* @__PURE__ */ new WeakMap(),
- propsCache: /* @__PURE__ */ new WeakMap(),
- emitsCache: /* @__PURE__ */ new WeakMap()
- };
-}
-let uid$1 = 0;
-function createAppAPI(render, hydrate) {
- return function createApp2(rootComponent, rootProps = null) {
- if (!isFunction(rootComponent)) {
- rootComponent = extend({}, rootComponent);
- }
- if (rootProps != null && !isObject(rootProps)) {
- warn$1(`root props passed to app.mount() must be an object.`);
- rootProps = null;
- }
- const context = createAppContext();
- const installedPlugins = /* @__PURE__ */ new WeakSet();
- const app = context.app = {
- _uid: uid$1++,
- _component: rootComponent,
- _props: rootProps,
- _container: null,
- _context: context,
- _instance: null,
- version,
- get config() {
- return context.config;
- },
- set config(v) {
- {
- warn$1(
- `app.config cannot be replaced. Modify individual options instead.`
- );
- }
- },
- use(plugin2, ...options) {
- if (installedPlugins.has(plugin2)) {
- warn$1(`Plugin has already been applied to target app.`);
- } else if (plugin2 && isFunction(plugin2.install)) {
- installedPlugins.add(plugin2);
- plugin2.install(app, ...options);
- } else if (isFunction(plugin2)) {
- installedPlugins.add(plugin2);
- plugin2(app, ...options);
- } else {
- warn$1(
- `A plugin must either be a function or an object with an "install" function.`
- );
- }
- return app;
- },
- mixin(mixin) {
- {
- if (!context.mixins.includes(mixin)) {
- context.mixins.push(mixin);
- } else {
- warn$1(
- "Mixin has already been applied to target app" + (mixin.name ? `: ${mixin.name}` : "")
- );
- }
- }
- return app;
- },
- component(name, component) {
- {
- validateComponentName(name, context.config);
- }
- if (!component) {
- return context.components[name];
- }
- if (context.components[name]) {
- warn$1(`Component "${name}" has already been registered in target app.`);
- }
- context.components[name] = component;
- return app;
- },
- directive(name, directive) {
- {
- validateDirectiveName(name);
- }
- if (!directive) {
- return context.directives[name];
- }
- if (context.directives[name]) {
- warn$1(`Directive "${name}" has already been registered in target app.`);
- }
- context.directives[name] = directive;
- return app;
- },
- // fixed by xxxxxx
- mount() {
- },
- // fixed by xxxxxx
- unmount() {
- },
- provide(key, value) {
- if (key in context.provides) {
- warn$1(
- `App already provides property with key "${String(key)}". It will be overwritten with the new value.`
- );
- }
- context.provides[key] = value;
- return app;
- },
- runWithContext(fn) {
- const lastApp = currentApp;
- currentApp = app;
- try {
- return fn();
- } finally {
- currentApp = lastApp;
- }
- }
- };
- return app;
- };
-}
-let currentApp = null;
-function provide(key, value) {
- if (!currentInstance) {
- {
- warn$1(`provide() can only be used inside setup().`);
- }
- } else {
- let provides = currentInstance.provides;
- const parentProvides = currentInstance.parent && currentInstance.parent.provides;
- if (parentProvides === provides) {
- provides = currentInstance.provides = Object.create(parentProvides);
- }
- provides[key] = value;
- if (currentInstance.type.mpType === "app") {
- currentInstance.appContext.app.provide(key, value);
- }
- }
-}
-function inject(key, defaultValue, treatDefaultAsFactory = false) {
- const instance = currentInstance || currentRenderingInstance;
- if (instance || currentApp) {
- const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides;
- if (provides && key in provides) {
- return provides[key];
- } else if (arguments.length > 1) {
- return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;
- } else {
- warn$1(`injection "${String(key)}" not found.`);
- }
- } else {
- warn$1(`inject() can only be used inside setup() or functional components.`);
- }
-}
-const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;
-function onActivated(hook, target) {
- registerKeepAliveHook(hook, "a", target);
-}
-function onDeactivated(hook, target) {
- registerKeepAliveHook(hook, "da", target);
-}
-function registerKeepAliveHook(hook, type, target = currentInstance) {
- const wrappedHook = hook.__wdc || (hook.__wdc = () => {
- let current = target;
- while (current) {
- if (current.isDeactivated) {
- return;
- }
- current = current.parent;
- }
- return hook();
- });
- injectHook(type, wrappedHook, target);
- if (target) {
- let current = target.parent;
- while (current && current.parent) {
- if (isKeepAlive(current.parent.vnode)) {
- injectToKeepAliveRoot(wrappedHook, type, target, current);
- }
- current = current.parent;
- }
- }
-}
-function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {
- const injected = injectHook(
- type,
- hook,
- keepAliveRoot,
- true
- /* prepend */
- );
- onUnmounted(() => {
- remove(keepAliveRoot[type], injected);
- }, target);
-}
-function injectHook(type, hook, target = currentInstance, prepend = false) {
- if (target) {
- if (isRootHook(type)) {
- target = target.root;
- }
- const hooks = target[type] || (target[type] = []);
- const wrappedHook = hook.__weh || (hook.__weh = (...args) => {
- if (target.isUnmounted) {
- return;
- }
- pauseTracking();
- const reset = setCurrentInstance(target);
- const res = callWithAsyncErrorHandling(hook, target, type, args);
- reset();
- resetTracking();
- return res;
- });
- if (prepend) {
- hooks.unshift(wrappedHook);
- } else {
- hooks.push(wrappedHook);
- }
- return wrappedHook;
- } else {
- const apiName = toHandlerKey(
- (ErrorTypeStrings[type] || type.replace(/^on/, "")).replace(/ hook$/, "")
- );
- warn$1(
- `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().`
- );
- }
-}
-const createHook = (lifecycle) => (hook, target = currentInstance) => (
- // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)
- (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target)
-);
-const onBeforeMount = createHook("bm");
-const onMounted = createHook("m");
-const onBeforeUpdate = createHook("bu");
-const onUpdated = createHook("u");
-const onBeforeUnmount = createHook("bum");
-const onUnmounted = createHook("um");
-const onServerPrefetch = createHook("sp");
-const onRenderTriggered = createHook(
- "rtg"
-);
-const onRenderTracked = createHook(
- "rtc"
-);
-function onErrorCaptured(hook, target = currentInstance) {
- injectHook("ec", hook, target);
-}
-const getPublicInstance = (i) => {
- if (!i)
- return null;
- if (isStatefulComponent(i))
- return getExposeProxy(i) || i.proxy;
- return getPublicInstance(i.parent);
-};
-function getComponentInternalInstance(i) {
- return i;
-}
-const publicPropertiesMap = (
- // Move PURE marker to new line to workaround compiler discarding it
- // due to type annotation
- /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {
- // fixed by xxxxxx
- $: getComponentInternalInstance,
- // fixed by xxxxxx vue-i18n 在 dev 模式,访问了 $el,故模拟一个假的
- // $el: i => i.vnode.el,
- $el: (i) => i.__$el || (i.__$el = {}),
- $data: (i) => i.data,
- $props: (i) => shallowReadonly(i.props),
- $attrs: (i) => shallowReadonly(i.attrs),
- $slots: (i) => shallowReadonly(i.slots),
- $refs: (i) => shallowReadonly(i.refs),
- $parent: (i) => getPublicInstance(i.parent),
- $root: (i) => getPublicInstance(i.root),
- $emit: (i) => i.emit,
- $options: (i) => resolveMergedOptions(i),
- $forceUpdate: (i) => i.f || (i.f = () => {
- i.effect.dirty = true;
- queueJob(i.update);
- }),
- // $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy!)),// fixed by xxxxxx
- $watch: (i) => instanceWatch.bind(i)
- })
-);
-const isReservedPrefix = (key) => key === "_" || key === "$";
-const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);
-const PublicInstanceProxyHandlers = {
- get({ _: instance }, key) {
- const { ctx, setupState, data, props, accessCache, type, appContext } = instance;
- if (key === "__isVue") {
- return true;
- }
- let normalizedProps;
- if (key[0] !== "$") {
- const n2 = accessCache[key];
- if (n2 !== void 0) {
- switch (n2) {
- case 1:
- return setupState[key];
- case 2:
- return data[key];
- case 4:
- return ctx[key];
- case 3:
- return props[key];
- }
- } else if (hasSetupBinding(setupState, key)) {
- accessCache[key] = 1;
- return setupState[key];
- } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
- accessCache[key] = 2;
- return data[key];
- } else if (
- // only cache other properties when instance has declared (thus stable)
- // props
- (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)
- ) {
- accessCache[key] = 3;
- return props[key];
- } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
- accessCache[key] = 4;
- return ctx[key];
- } else if (shouldCacheAccess) {
- accessCache[key] = 0;
- }
- }
- const publicGetter = publicPropertiesMap[key];
- let cssModule, globalProperties;
- if (publicGetter) {
- if (key === "$attrs") {
- track(instance, "get", key);
- } else if (key === "$slots") {
- track(instance, "get", key);
- }
- return publicGetter(instance);
- } else if (
- // css module (injected by vue-loader)
- (cssModule = type.__cssModules) && (cssModule = cssModule[key])
- ) {
- return cssModule;
- } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
- accessCache[key] = 4;
- return ctx[key];
- } else if (
- // global properties
- globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)
- ) {
- {
- return globalProperties[key];
- }
- } else if (currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading
- // to infinite warning loop
- key.indexOf("__v") !== 0)) {
- if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {
- warn$1(
- `Property ${JSON.stringify(
- key
- )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`
- );
- } else if (instance === currentRenderingInstance) {
- warn$1(
- `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`
- );
- }
- }
- },
- set({ _: instance }, key, value) {
- const { data, setupState, ctx } = instance;
- if (hasSetupBinding(setupState, key)) {
- setupState[key] = value;
- return true;
- } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) {
- warn$1(`Cannot mutate