From 1f25d3d879fd5be73a11593920c45ec78354a16b Mon Sep 17 00:00:00 2001 From: JianFeeeee <109188060+JianFeeeee@users.noreply.github.com> Date: Sat, 30 May 2026 11:00:36 +0800 Subject: [PATCH] ONI Agent Bridge - initial mod implementation --- .gitignore | 20 + ONIModTutorial-main.zip | Bin 0 -> 1169500 bytes .../.github/workflows/deploy.yml | 50 + .../.github/workflows/pr-check.yml | 28 + ONIModTutorial/ONIModTutorial-main/.gitignore | 12 + .../.vitepress/cache/deps/_metadata.json | 61 + .../.vitepress/cache/deps/chunk-BUSYA2B4.js | 9 + .../cache/deps/chunk-BUSYA2B4.js.map | 7 + .../.vitepress/cache/deps/chunk-LJKO4TMH.js | 9719 ++++++++++++ .../cache/deps/chunk-LJKO4TMH.js.map | 7 + .../.vitepress/cache/deps/chunk-QE257C5J.js | 12824 ++++++++++++++++ .../cache/deps/chunk-QE257C5J.js.map | 7 + .../.vitepress/cache/deps/package.json | 3 + .../.vitepress/cache/deps/rss-parser.js | 6788 ++++++++ .../.vitepress/cache/deps/rss-parser.js.map | 7 + .../deps/vitepress___@vue_devtools-api.js | 4507 ++++++ .../deps/vitepress___@vue_devtools-api.js.map | 7 + .../cache/deps/vitepress___@vueuse_core.js | 584 + .../deps/vitepress___@vueuse_core.js.map | 7 + ...ess___@vueuse_integrations_useFocusTrap.js | 1353 ++ ...__@vueuse_integrations_useFocusTrap.js.map | 7 + .../vitepress___mark__js_src_vanilla__js.js | 1667 ++ ...itepress___mark__js_src_vanilla__js.js.map | 7 + .../cache/deps/vitepress___minisearch.js | 1815 +++ .../cache/deps/vitepress___minisearch.js.map | 7 + .../.vitepress/cache/deps/vue.js | 348 + .../.vitepress/cache/deps/vue.js.map | 7 + .../ONIModTutorial-main/.vitepress/config.mts | 131 + .../theme/components/Contributors.vue | 89 + .../theme/components/LearningTimeline.vue | 35 + .../.vitepress/theme/components/SteamNews.vue | 292 + .../theme/components/WorkshopList.vue | 290 + .../.vitepress/theme/custom.css | 61 + .../.vitepress/theme/index.mts | 19 + ONIModTutorial/ONIModTutorial-main/README.md | 115 + .../ONIModTutorial-main/announcements.md | 7 + .../ONIModTutorial-main/api-examples.md | 3 + .../ONIModTutorial-main/asset-extraction.md | 109 + .../ONIModTutorial-main/build-and-debug.md | 0 .../community-guidelines.md | 37 + .../ONIModTutorial-main/content/buildings.md | 0 .../ONIModTutorial-main/content/creatures.md | 0 .../ONIModTutorial-main/content/elements.md | 0 .../ONIModTutorial-main/content/items.md | 175 + .../ONIModTutorial-main/content/plants.md | 0 .../ONIModTutorial-main/contribute.md | 11 + .../ONIModTutorial-main/contributors.md | 10 + .../csharp-basics-reference.md | 182 + .../ONIModTutorial-main/csharp-basics.md | 77 + .../development-environment.md | 24 + .../ONIModTutorial-main/dnspy-analysis.md | 24 + .../ONIModTutorial-main/first-mod-tutorial.md | 137 + .../ONIModTutorial-main/harmony-reference.md | 395 + ONIModTutorial/ONIModTutorial-main/index.md | 29 + .../ONIModTutorial-main/markdown-examples.md | 85 + .../ONIModTutorial-main/mod-structure.md | 49 + .../ONIModTutorial-main/package-lock.json | 2568 ++++ .../ONIModTutorial-main/package.json | 13 + ONIModTutorial/ONIModTutorial-main/preface.md | 39 + .../VSInstallation-details/VSInstall.png | Bin 0 -> 161306 bytes .../VSInstallation-details/VSInstall_.png | Bin 0 -> 105685 bytes .../public/images/first-mod/ModTemplate.png | Bin 0 -> 8823 bytes .../public/images/first-mod/Project.png | Bin 0 -> 13433 bytes .../public/images/steam-upload/Tool.png | Bin 0 -> 9622 bytes .../public/images/steam-upload/Tool_1.png | Bin 0 -> 35515 bytes .../public/templates/ONIModTemplate.zip | Bin 0 -> 7790 bytes .../ONIModTutorial-main/resource-unity.md | 98 + .../steam-workshop-upload.md | 64 + .../version-compatibility.md | 65 + .../visual-studio-installation.md | 57 + .../ONIModTutorial-main/workshop-list.md | 15 + README.md | 325 + SKILL.md | 489 + config.json | 5 + docs/AI_KNOWLEDGE_BASE.md | 268 + docs/MOD_DEV_GUIDE.md | 349 + docs/batch_example.json | 40 + mod/API_REFERENCE.md | 180 + mod/ONIAgentBridge.cs | 241 + mod/ONIAgentBridge.csproj | 19 + mod/mod.yaml | 3 + mod/mod_info.yaml | 4 + scripts/annotate_apis.py | 142 + scripts/auto_analyze.sh | 30 + scripts/auto_repair.sh | 28 + scripts/build_mod.sh | 61 + scripts/event_daemon.py | 295 + scripts/fix_csharp.py | 185 + scripts/setup.sh | 28 + scripts/watch.sh | 26 + skills/oni_agent.md | 466 + tools/oni_analyzer.py | 281 + tools/oni_api.py | 1540 ++ tools/oni_builder.py | 163 + tools/oni_commander.py | 355 + 95 files changed, 50686 insertions(+) create mode 100644 .gitignore create mode 100644 ONIModTutorial-main.zip create mode 100644 ONIModTutorial/ONIModTutorial-main/.github/workflows/deploy.yml create mode 100644 ONIModTutorial/ONIModTutorial-main/.github/workflows/pr-check.yml create mode 100644 ONIModTutorial/ONIModTutorial-main/.gitignore create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/_metadata.json create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-BUSYA2B4.js create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-BUSYA2B4.js.map create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-LJKO4TMH.js create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-LJKO4TMH.js.map create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-QE257C5J.js create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-QE257C5J.js.map create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/package.json create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/rss-parser.js create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/rss-parser.js.map create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/vitepress___@vue_devtools-api.js create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/vitepress___@vueuse_core.js create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/vitepress___@vueuse_core.js.map create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js.map create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js.map create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/vitepress___minisearch.js create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/vitepress___minisearch.js.map create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/vue.js create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/vue.js.map create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/config.mts create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/theme/components/Contributors.vue create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/theme/components/LearningTimeline.vue create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/theme/components/SteamNews.vue create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/theme/components/WorkshopList.vue create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/theme/custom.css create mode 100644 ONIModTutorial/ONIModTutorial-main/.vitepress/theme/index.mts create mode 100644 ONIModTutorial/ONIModTutorial-main/README.md create mode 100644 ONIModTutorial/ONIModTutorial-main/announcements.md create mode 100644 ONIModTutorial/ONIModTutorial-main/api-examples.md create mode 100644 ONIModTutorial/ONIModTutorial-main/asset-extraction.md create mode 100644 ONIModTutorial/ONIModTutorial-main/build-and-debug.md create mode 100644 ONIModTutorial/ONIModTutorial-main/community-guidelines.md create mode 100644 ONIModTutorial/ONIModTutorial-main/content/buildings.md create mode 100644 ONIModTutorial/ONIModTutorial-main/content/creatures.md create mode 100644 ONIModTutorial/ONIModTutorial-main/content/elements.md create mode 100644 ONIModTutorial/ONIModTutorial-main/content/items.md create mode 100644 ONIModTutorial/ONIModTutorial-main/content/plants.md create mode 100644 ONIModTutorial/ONIModTutorial-main/contribute.md create mode 100644 ONIModTutorial/ONIModTutorial-main/contributors.md create mode 100644 ONIModTutorial/ONIModTutorial-main/csharp-basics-reference.md create mode 100644 ONIModTutorial/ONIModTutorial-main/csharp-basics.md create mode 100644 ONIModTutorial/ONIModTutorial-main/development-environment.md create mode 100644 ONIModTutorial/ONIModTutorial-main/dnspy-analysis.md create mode 100644 ONIModTutorial/ONIModTutorial-main/first-mod-tutorial.md create mode 100644 ONIModTutorial/ONIModTutorial-main/harmony-reference.md create mode 100644 ONIModTutorial/ONIModTutorial-main/index.md create mode 100644 ONIModTutorial/ONIModTutorial-main/markdown-examples.md create mode 100644 ONIModTutorial/ONIModTutorial-main/mod-structure.md create mode 100644 ONIModTutorial/ONIModTutorial-main/package-lock.json create mode 100644 ONIModTutorial/ONIModTutorial-main/package.json create mode 100644 ONIModTutorial/ONIModTutorial-main/preface.md create mode 100644 ONIModTutorial/ONIModTutorial-main/public/images/VSInstallation-details/VSInstall.png create mode 100644 ONIModTutorial/ONIModTutorial-main/public/images/VSInstallation-details/VSInstall_.png create mode 100644 ONIModTutorial/ONIModTutorial-main/public/images/first-mod/ModTemplate.png create mode 100644 ONIModTutorial/ONIModTutorial-main/public/images/first-mod/Project.png create mode 100644 ONIModTutorial/ONIModTutorial-main/public/images/steam-upload/Tool.png create mode 100644 ONIModTutorial/ONIModTutorial-main/public/images/steam-upload/Tool_1.png create mode 100644 ONIModTutorial/ONIModTutorial-main/public/templates/ONIModTemplate.zip create mode 100644 ONIModTutorial/ONIModTutorial-main/resource-unity.md create mode 100644 ONIModTutorial/ONIModTutorial-main/steam-workshop-upload.md create mode 100644 ONIModTutorial/ONIModTutorial-main/version-compatibility.md create mode 100644 ONIModTutorial/ONIModTutorial-main/visual-studio-installation.md create mode 100644 ONIModTutorial/ONIModTutorial-main/workshop-list.md create mode 100644 README.md create mode 100644 SKILL.md create mode 100644 config.json create mode 100644 docs/AI_KNOWLEDGE_BASE.md create mode 100644 docs/MOD_DEV_GUIDE.md create mode 100644 docs/batch_example.json create mode 100644 mod/API_REFERENCE.md create mode 100644 mod/ONIAgentBridge.cs create mode 100644 mod/ONIAgentBridge.csproj create mode 100644 mod/mod.yaml create mode 100644 mod/mod_info.yaml create mode 100644 scripts/annotate_apis.py create mode 100644 scripts/auto_analyze.sh create mode 100644 scripts/auto_repair.sh create mode 100644 scripts/build_mod.sh create mode 100644 scripts/event_daemon.py create mode 100644 scripts/fix_csharp.py create mode 100644 scripts/setup.sh create mode 100644 scripts/watch.sh create mode 100644 skills/oni_agent.md create mode 100644 tools/oni_analyzer.py create mode 100644 tools/oni_api.py create mode 100644 tools/oni_builder.py create mode 100644 tools/oni_commander.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..099fbf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +node_modules/ +__pycache__/ +*.pyc +*.pyo +.DS_Store +.env +*.dll +*.pdb +*.log +mod/bin/ +mod/obj/ +mod/Output/ +.vscode/ +.idea/ +venv/ +.venv/ +dist/ +build/ +*.egg-info/ +.python-version diff --git a/ONIModTutorial-main.zip b/ONIModTutorial-main.zip new file mode 100644 index 0000000000000000000000000000000000000000..29640212b8dcefd717248260f090d2a6854d3377 GIT binary patch literal 1169500 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≠~KI)LWHOkNg3{99%T((S) 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%0AVpJg=1|9h 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
!`hKu&msBWB}fjK!xYd=*JX~iXYO9Hz`cs2o#(q z#U9;fI2{XHQ;$t}`D6s*mt56QIJ}{8;0~tfnCW6yA2*Rx&cIK$95_4Er z-~Z-vClLC?Erh}gia`c8k5$Uy2rVZd5jRx2sms4T@tUx=^B(!RX=Sk=Yv`JO5<2=> z%V>6!<|V;(^MVADH^3yBT|3;jbzr1`y2+tYFnEO2z(lMTbxwwXl-nV{YHty zy}D#7@+q;AQkTtNTO9jECx-3#-CqrOID`wIJ!$)Nr|0;Cy3C0-N17w}Kr`T3|9jUm z1D>~3N=RAa6aeAIKWlrG<6+x6F^)-Mk<_^(vx%D5Ii+LOH37-(K@)RTn{98_>m@5t z26EE6BAWizdUSyLJ*LTdo!C^6`y?4WX>y7i36Vy3#aOtHq}#C3W!dfGlN{= zav`}8jP*TF6Jg;A*Z4uD`O-!YxKSq2kE#(oXxm7psuIJkI&Al^G%E^onKpF3s3Xe( zR#bYx@=F`BviWMwjk5Ehs5{t28ue8HEq2#FH8UY&_N!lYKtlKSYethHZ`?QT-^_m8 zNR^c@lS&4f=sjKP6H-b=6(C?t84EO6K#}uV1853kQhPqMu(Ol4moC{Q6|Q@#3mLB! zkmvy;(Y+9fPS`+u)JO@5jvFKepcqO>G~`&dQw%g>^C=umi$q5zBy1DG{`%jKL}KY@ zp1V~C5Im&`y`jWZ2Y)sd-4%bn@#eFs^p)xuvS#0Q&4L&PHpZv$r zhk5jbHSCkd*QPvqUO=C-pFkht!|%u!vZ*qZ&9;5W*&wHwejMoDXO5I|WTcdCU99s3 zdn8C*m)375v48CP>?vCrn(%#P?0LWkBr?+v2APKP$}Y{4?M_>d*TfkAZQbOFa5a_I z2?1~8VV6x^s&j2gX7Y1}L_5qZ(9t&P8nx^UcTWRNp9I4#n^|^P3u`~+fNpYCQyjMP z{Ls_*$O>8lxTXg;%Z}ysV@-7gj4I)y+Pw3OJ=>3!Ks?g#9@_}76JoesMF5ftFl@2! z2xI3Y2MwD++CLkIe(lf(T;Qi0?6B<;AYbvXLZMgLRf&%zXXc%HQROpOs8J)o-!KDhyha_1b6o^UbhA>&nKE=$ zP2Bq@4OTY4v3mT_F)z4HX-gik_w0VtTFpEqUyMB%$4r$_uHx8C{IIA?i25hTI-2;%!Y;W0#qeClEVrAtYY z0#)QNgGx#$j``;kMy1|k4tHE7na^&kzGgcZoScUZj0reudP?3V2_A+7U$QLU7lJ{& z;hRI>F4hWBdlQNmc-Sy1%~|6iA^q-2=f7snI&S3+Z#vHj{1R9GSZTy7*M@(&Mozbf z$PL{ftd_WS@49FanEju%B(v-zLw&2PF|D~vx@cRO7ENoW2~vKP$hn;wIZ2xBGwx67 zeW0*5ZtS>>QhCmSjf_R}))`YiHu5Oskh3+OcO7oM%b@~+I-fEm+*qMU)*K+wZ~qjb zqxo|}2Zp|0^VvM%p}Fjg<_iyqRZQ+tEjuK z#ZG6-NJS(*%6}Va2_(^`MhJC!5($ z#y`;sqabPf$P}8LAMF4a{EEGeWLw<$nGS4bW=uY(&F?)X<*@#U5w>yBB^Ensuzh=Z%{WqySpYsF zvMI8KXbMykgBj&6JE*8|U7slFq$y?+d^;v$G9YiPWZTe#_o5xEKV2pG=Y;I+v+qf< zNa|Fddm;67{JLvq!{2kgpAS6Q4hk-3j=H)or7n!65NPTqf3Ysg3M~a==QbFD)@hez zCeCXyes5#OfvF;5VbhTyJqI$owssOsnuA&E1KR$q@xj=`Rao!K=09Q8xlV{&|1;Qq zVm$KhNh93;Uq!sZ^^O}Q_`xkc3pO!QeGwTwRst?bZ&Rg1>-RGi7tCS>Wy<^W?LLc}nQ>8== zZzfvR4b0^nP`z5W)d{e#Np~)*Yu8W2g01#I&RTE!oMob%#Wq7ieBxQ7vEifEv$dch zc2sQmq}Z@W`Q=t^V`cn!y<~pJ5+iNG^;^%w`C&75?Gm|{f>@T^i=^=I^_*Z+jhKI= z1_)NYTk0iNg=%-!H0s534Sv9*xXe+DM;ldJ_s^zYOt@YH=X6{;-973W@78&fL#2G3 z+14qe>_)|wE_0={>zEfV8`JiDxx>kq#-6`2rG4esBm$D6Auc_NX6!mD!8SKQ>sa#v zXw^IH5hLlztDAZ5dx_!+VpMi7O-L;WA3109rwuOl z`H1s7kVp=jk0p6;mjnxX{tm;0jAj{RmJ%*qQZO*ZHgU4bQ#T|4cbaEPLdyT_?AVst zMwajU8C!YFsY)PAL293D*$`vE5JOmU>J%kgV_UH-X>~D}s{QxV*SW|}o!#>S@@OtS zJ$;*2PtO8Bg7;i>m{;o?&&SmQ>;J(;x-$*A{n#t-$C}FygRlC*f%&0Cny@wdN?ks* zYIeAsY6FS(;qtd`J$L5R55xgxJL=Z7zTpuk=)6`zmH+Ili+rhC-zdjMe9(7f4VlO~ zh?f1;rB0R2i{2VF%IGs|3{K9_(+$r_L>3*(Ce0lBy_0HXdLHmL+cE&%Q>z(7rucvmti+d_~a0TC}U_x!r`o{xtdmq`Hxx?4N z`%7Y_!v}&WK$OXU((y+Z)~|TVmduq0afJ}$*}M&Tboc}~erCg=h%mkbPR?xooV#dP zQj9%vJnC~EG~eXaYz`|nc|S&Edd+bL2`j8QPJs__krzi1{Y3oX!`TzJ{@bM&h_>Mq z0D45aH$2AU*C4kgp(@dg9_po!Ih?43CCyIVAV_bx7DM|rAfZn?H=3aI5ar@PCxbQS z2anvxB$D2outP@Z-5#XH&48?5ON(T-T!yr$8D35$m;#9eBMHc%8zfdkaq%|fNYJSg z#pChNL*Yr^#hhm2J*(i5(D+DR>&few&p7}jf9%Gb4r5HH`Z#7fw`qd7_;}2pYiv9v z7ymX!UlT>00DE0J;<;!*7*ke{Ed%!CDYCcdJJGf7w-FcDAH2!Tx_Y4hnG|ey?{)3( zy`B#2uK;3DTR1YszAV6Ydg?OnQ^>eAAA{9^fVXQoQ~4AeNfc9M_<_BJFC3gz5q2L6 z$-S(yuTe?NOV@<8oYwrT;ZuyNZCKCwT1%F~pV%e+hQEN`sU8LTM4X$N)i0YmVTAvK z2KUnr_`AsTFqEYB{4C`)hfF_;DMP|-RPgC;Ml54_s&27{U9J;xxw4W)xj`GS-q|JX z71(HANlJVU@75r}rRF9&-~&D#?tRP#Q>4dVBUe9%0apTL$_t;z)^r;^Zw*eP4%;xx z^UEOSc|^#ah^2R>U%xsEkHA0rpUlZ*_~;l2eY`jp0onwi{C~QPZmWTSK~d>by$;~c z&(G3$fSmk)fM9zz6829!vu{j|+>p6exeyUPUML@n{`}F z{7Cj&7oT{`|Ir#OxW*Eylv>yBFdwcoC>-hbY^>(T$i+VMX&bqD!4Nrcs1xmDkoQme z{xO3eea!~~DnbvtMCH)Y>QVoIVm)IO{n9_Z5VE072PSifT+_jx9r!23^|)vyRI24b z2JkGas3Sl>p=>exn*5G5xjn+Ljsn@|5j%?X^HdV!%T$^PFFS2>A9SHmCSxLPk1-Sq z5|Vfli=4Vxb3qZL=Z*b5i)EXBm#fz7$=+RBF)i^$`B*0Us0qpLWP{N$4ZeBy8Tk(u z|8n`ktw_5DU5E=&jswZ7gPyS2r#{rMl8VA|uw+>nT-WiStVxu3`(r? zLTO^w5B+*bt-_;?4|=LmHa6~~=Dequtu!I1x^r6br{<0B1-4-|jnjV}z;Yrx1{o3_ z^c*}LGQWSD9HK8&YJJ!Y_!Io8DGC%l1uNPj-7){H*iu%mFo6sX_g zYo<7{ke2MCdlg63x^K^8vnsyO%q;|!3im3)SG`f4 z21~RKmMHr2o+>8rnRH8kt z_m6#LT;WlZ)sxlm_ukOxE=E|LVpGo%$+cs-C1tNRb)&W4q&B@)n#|-Qp#J_!-)QVl zJh{=c8kD}QN4a>iU2-Vu)*dD%DSo(H)fTgV*sXseERu|}Jh@;pA2?x{3#sN6az{P9 z59m*7cDagT?UBVbvHd(smW}Hm42NNU8@PC0ZX(W4o<|Tirfr7yi8DT0q})0?)2`X= z@8nP+ko=?~)WsczOgVs%BP@&kK~gZVRB_YcDQq;}?^Nn?^R11+@J>9;{$@`yGB&h*EP}RLnf2IAl(&!q6Z&Inuj!pOjsMM(JNYhOS4~=RbRLxmtdud*SkU zWAIYAfB!m<^CZO!RHr60^QNe3y!Ldj6bpY8Dcy;BQ^yV*OB3Z&>uszYUw3U;`)-NcP|1LuKkVqo;XR)TXA#GRCW%6{fVt3u*CQ^dxQY zuJgk~9%FIbG<3tIj2S8JYo0$3J5Y6{7`o;G}gjZ)1Tvf3lRMTac1c(mM#LF9? zJc6mN(`9ZF|9R+*F=zDA<0{P(KrXE#VA~`iiWV7QkYAT=%_HJXjkmNS_;VX)scYmR zv}W+)q`;s<30ahLXV0_a=cFGbA&bP>g?O_$Lu=pjyfjWh>ml_r}`-<=3%$S&iTSo6m9=ByMu(RHY0YF)%DH9L!?|R-4qj= z>n-4{0OS^&CyCeRjBZURC&$a{7;6rsfz_*xN~M?J;-FQIy$TF0fYgq~0zM5f)gkrg zpVEWU?@0cPhGAJ1=j~;S)030G45e=c=z!bAy?S!V6Zza1^<-9@sgS{uDE68Ma6gzN z6;p+M6?DBrF$K-%FeueZcW8qK3*)Mq{s~T9F+sbnl3y!vp;C-L+r$2mZERX!FOa~T zJ$CDlYekL!L#m>V*XG*YLTNp#jHCR_Q}XrgLnX_4G;Ew`&bZjp!Hv7FC7C+l`ILDMMvopQ zuRg;|w*O^9iy_|iOEe{?B#yadKo6EgPK13}<=(J@q9z@#4AG5&M1y+^>Ur_Ad40Th z4C_xFREwf!-1JRXneG9Vfh2IHzP0O%4*p#^J#u0_V&j;{)d}BrT7gQ;R))kgs4BA& z(OSj#Q&v4rWTlCf4dmX6JMxC;EKoITjC%y2((AuAfoVxXJ8K1Vs=bgi{a?~nMtVOe zq6#2F`&%Wk(+0bXwMHj>g^GyAQUQZWe!VOD1yVqrDc?M6s{F}d5AfTJk{!OV0@*#zkObF~uUdi1|dL)J6s>C!A zsuwd6qpcw=smi*oE(%*fGA#z8g(3H-Vb{8bC}rpg{qP~I>y+tkURc$-;|d<&_Y#aA zg~ADTU~gtu!axN5UcxR_Td1|idLQ?&)&$@ZQ^A7lTfop=VzA8Y|BEA;hUl%o?Dd?a$qzq6td zb9h4Kn<>QwmY5V=@QpIfjSYtR@FpVv^8d9^JE8|UTN1<}fR)7}TDLBdL!Q6_z>5|- zB%N|E`#PGR9|T{ZQS<)IB3UJ}{=9V1#mV8UYYen!Zhg+ZE?lry&U$A+co*lvqN0b7 zEd(wM0E?Lu`WCB+E#-fLuOv+L?7f(>O-xn0#5*BA@9Ov&qSSE_IY?Nsj%7{C&j^d& zwIVtwC+1C!5>P}%IyrSU%cGi#)Ta+^;8WUa3I!0YD^?^}OQy=^>kElX;d*NVvB_yo~o5Q90(#?SxT3Q7WF(Y$!0DXc}63#ji zE%=k4(j!#D@2@=Haa8rX3}-3dh1Jt|D-CPOqW&iNF=~tx@B%waJ5|j%5%)DNjV#0H zKrPlF6W!T2CwDMSaCkqsL%FHzUpFS)d6RWuHt*qULB!eU7)l~yTehm1Dp||;`_gUb z0ctZNnCsoUNCO!xvel!m63uD&DUm9yD~`Klb0|>zl2kLN2b4D*-*27#e)MUf-6UtNnV+R>~i>`kVCzLvqdlZ^Emuc9l@br)UZf z^f<72l}>b;twUGjA{(1&)(R?>YusyUiH-K_#tJz!noW!~2}&i9qotfL^@I*YzKt?3 zVJdDa>yt)J^SKL*`Hpx!=`9p!)-OJz-k?_e-L9;TS)hjkh}TbxC!IbM;Fk9WFTXN- z)B+7QyZ!dI7kJ>V1z;0x->%`$w4Uw8QM0(pBHeC%p2eBb&jY33YdyqxJ>l>DdY<$H z{GW~W&XxuDT`T|q`&$423jgQEdK&{rD?L3+Cp{-eBRy9GTMKJzga4Y-SvsjGg8~39 zAR=2{`&c;PjJxPx`DW=USUZGm8y5mP@<3sdh%1ncgrI%_mk4<>Z!;_7OZl1equNi~3os|I7spV>9}j`vX4a&=%6n6Y5*yfX-!ne=$4 zzt?!bKbWjtj!K*?Yd&6Q|9P^%@u{u-d0&RU{VZGwYI3~~K|eX|rnmul^>i?sgI##f z$>j-_d$d@{xed*H%x*(B{c~XE05nX`^MHK&ah*x6ctq=QU6Wg~!`pc`4xPj9_d@fv z%YE71dQ0v*>-A9TX1k+)1J+G2k)!EXYs1qG`n?OWcx916YS6^{w6ShvH`CdO?0(HL z5jcwJIz9(vyZrPu_Lw-d`*=Y6Rl!$uH>?D}+c*5G__hSrr0vXh*oOT!Kc@xVnnxg> z+F*=eEzqmR`+gFlKyLksxpx$zm9zA?knKKq&CoR6w|QSE%YN22=RsnH4Z!EVbpyxM zzpw!YsAhgR_QfE$rc4ZbC|;Ps)I{5-=jqZf7PMm;kFj+d+)aRIEJaUGLvx4F7Rnn4 zQ_`5~sWFx3`pp3Rlph6fngBSyX0LueShow$B?GYE{LPa0vb}ce-cOunMlW5+oSuhC z_NNr|615~}SH@`e_O+963Pl>L1*<4r0*bnM8J75}M(9`~ek7;}cMoa64vZ{Z|2f=p zH3)%^Z07`zbwm0<$3NAR6;SQb-x*l@Vmj|yNDl^l6U0oBz!n1#!4$=q;}mgo5 z;F$h06Oi5ybu)ct3#f{-N#lA$cFwn~l=m9^+MXJQi_OoSm*46ZfKItEni)qH_ri55 z4y{O=xa6%g^bXbDqTG*2j*4t8q}YUmbHdLK$vB9F$(m}|w-eXD=^UP|(?F}%AOkR> zb$RYWQl>g1f#>wJ*q=-aWm4sy)88*W3E*0 zQKS;8;+wLYbKmG|B)IlI*sinxWRPJ}MPCxgvdm7z5{jo58v?Npqs3n*WRHiLo_6of zxK=kTFtpWKqgA<1)24UR#k76Cj>-dzhiOivQX6ggJo#U_xh*?3+mhbHUwtP`Byxxn za(d-I_$Qc0tQCQZ6_v_TPzROJ4}fbRB+_O83D6*9Rc5%yS?Hh^XwF!i70yqqb%IsI zwPmu7N0~#I(#;gGMSIr-on$JPmUIsJ;zX1nwSUbuHW@Cdj;ui76K)AEK(q)jxLJ$h zl`aZ33R-~0OcDDjyVnIlj6imv7S)#jLDUyms(5QEI9NrJq!KQ zoWYP_8gv^-0bgyN%gI5as+rRp?O+DsULEDF&c1YUq1gqhw6(227lyqBgu9aO#B}xa z;3+NtvbEjRAhxWBB$sPItoqX-Y1E)0%q+uzyq^$2U$9ctvTEKn zs@bu0XOpZ^X+5d3k7Uc@G}na^+qFT4Go7IdW4<^|{HP!Zwz3;U-HTTlul=)=$XUzr z*&1&wKm5U5A-%%g5CmVHAfraYUMh1g6*&M4UunM2?Luc0ikcZ4Vu^V$)aALk2BXnQUUGn;6#zC>kTy)C+OZc2vVAQOY0;^R4Wtmq z2`J{sFkpf5Tt`L9IiF;6-t1F}pi#l~T5T9k@g{0L4sz zwGyA{v$dq@AV%{7@Gxz+VO0sDP7DC0ECVfJGD%F?J)a6Lp^?Tiwro%i`Dc`ASJ)z< zrrH&;wQpyD{F>Pz;U-G5aC3Va9`!Gr0>t*m${Q7l||9$T@1Mko|@+Ppapq#a#U7V~vt^YacMJdn=KfqYV>Ih^`_AZociawG;;n1owD?xLtpM%h8 zgz1TV1ZSyxjP{hMkA$4uz}#V{7lAy&(~T$ghn3rj_zdEF;d-4>p9^5vzDqPQL@CZd zWgp5JHUAR{7ypVGkP3D|Le#80)vtq4f%kzhPJgD;7G8KZY%@N)d##TR7-%h5PwB#= z-*I?iCmY*Iiw$5+VhXIr1Rg`+bjCs?*56T`fSv0m)YFFi(#0yqbfynsnxEZ_pz|tJ zs617nhe+I?!VDF3@;K>7pP=LJ%Ey~iW3cz04wq%9p`Sg)ak7&W;Bx%o7V{rh+?K`f zzkU$b=fmiE?D;30Czl8MAO9EC~SB;|K+cB%DkgED$n8sTjZ& zJ8+1_VwPlArhuc}jMEruMuWmCFE-XL`ln*t{x%xPnl`SSe0h%jJ81}WQ@0NGuCN85 zf~UhP2gwe|0v@$;8ghksjXT+x!#EI33;dUpjz9?Wj4+bR9j={5$*#Yg#Zr=lCazk- zy#KdQwmBCfMv}{wn#*q3DTs*m27JO`C}*yOOq%uva{4OL>Sex*E2AJo<`iV1e&@kQ1xwyT z3dO%5k*l=Bnw^>W{DMx7Hb^0bNsfai*bE)Mx;H93p+sqz`HWuQGl>$1HBSiRpvzB$ zqh;$(uK(c{BrcGyNX6d6_(DZv{ZOzo?KWD^>C*8<=Z0>f1 zn%lv4zS&Ps-vEsaTQbhyjEQx%P#aRS)FMF%bK`ICtHZU?8 zlcM4#;jl9kSYo53sWv@5%K3KFP@26)+4wwHZp8xGkBMoRjvSkn<>!hkkA$<$kkoJ;v?TH@_u6N zGsq*k>*3IFiN?=#Cb)7vX!~VLOZ|%8ae!%#D+SpWT%AT37`+7UoZgr)JM!nO!y4=s zjUgy$!f*#A_@F>}Z96Wub~bT&2ZQYtfBB~`%dF5dHG<_~|2(n*OPyYy>*vhL)|)M_ z=a-9#?BvbXo9>T|hvwr;>einj3L@Aa5z9^crKlVo=kmhdrFmkkZnbtL6)&jBu8w4m z9>>p-m`yjh&Gtj*(mg9`W?PKWqDj{{&xu^- zOakN`=cx z#l%xZX#|9l!!6iHS}5y>j`c+f5xl7orwdv{^A*I zo94S$$Sq;7~ywJ#uo*N3U%VeE5z|qcaS4p#@(HuSfmWR{;{E%>B@GrpX{~v(6fIm^ zk!+#RX2ISppV3r0tfDz7NzCXxG3y+y^kSR!8zO)d6Av^Z`R%Vm9}2qZrXfRx2ycXH zdy`%fDyyjG4s<>jKdaEGmApftNlA(Md@_a?ne-@TA@A2f*~Dm(SP|tc)*MVrQFnQB z7P4k1Cc62|jA3<6cCKhGSc+0?x+(OMZ%1P9AOo@$e9 zsL>dj!e9CkcCC8N!x zo-G?B+vOCTkF0|pU;xwCp&8dM^}-vw@!2jQAk6e&eIn!ADgT&o!$bR)2?y@B(s(FWjW6s_y1dYpQoKfmzVPr2Juc7A@y`~>*~ca887&CQ^ZCk$+lc|pb4y!h zOauDT+K&_{{C?FOw+%oFp=IpWCcA|s?IHs=L0yS5spQ5BKIR{utO&7Ak0l+(lW?}@ zQRQI;v<~5*D!!cJ+0lqyMgwl+faX1^q9*yd4cou;Igm}y6B9AqleOEOp4S@>m2S>i zUiAZ3lec<3u3{8*7&Pf2^E(9RifKpK*)Q1LJD|s{wCJ=cGil4+NSoxDu>e#qE~sgK zP%B#aUweb2=-Tu>Lj&S*gP3&dlXe|Ce#k#7s}~Nu`3~_wKWp zunT$2;MEK0JN4{0Qgj+}y$rZ*vdE^F0r170IE`5EaRWAy=6##TYOT-1ct^znwYBxj zwly_0t5`cGT_Z0~cQzQ;4cE4l0e^#NSLwSCBDeU;Hq_ql0R)iR{3&I`$@bOaBN%} zyeH<D! z=K9NC9gc=m&G>(v+zj=5x^4I_^oz3o{U;i2@X0_?3&^+^^)B@hghkuw2;}bU z6GzT)4V>m=uo8(~jtLWLXi0&ryxv6pU^!gOQ0h0k=R^Acs@JCD#XWkeBV{ zA;Q2j6boBxfW8L)WY4RVjuLFI6H@WX_x{ji!LuFObdO&hG%B@moE&&s$Q}xZ=tsqs zTz^`yQDCbeG`BEU*Y&E73Q&=1$iiMg`pk!yVUvAhFkO`+;*2rS*OtzISKLWr0yz}ucvIBFJrxhKsO+;*Yb?q!eP>{zups@@d)XTF@wM@>^|A3W z^6~YN_`L7w(_QcD`n~m${Jiq<@d3UfSIfVh7S>!4A%pi zi(UfMpHxum*=?JUNS*8V77zxt^axK_^pI4UT)5DCXs~gy05Yq+aG=$={N3Hy-BkNl zE)`dzwTt2X8Q6Pda2Zt!*)b)rcU>_~sNaC5%L&n)z*SBIQIq*m(6d{h2D%HNshx~* z3`Bv_BY;oS{MunC%pujp)p2;~2@8!%Hy*E-rMXA;?(RK|-kLPsa~Nzl?2pr}UZuGN zKCrjkdX8d%A{|_2o?xD09bykRfZbf*=sk#Na~%Nl7qwTBS)>AF;UOy8)YFG!t(^`J z@vm)k?}dh==8rtba!g4ebRsSSS|z$?LSPzn*m>FB>Rc_W-Xez06#7$^5Dlu>=wHxJhALdc4l<_z-8jlyV(Olge}$p87(bYcYJ56 zkTerpGVsgzZK`VRC`$UB%d-xwPxy36-9v|lRI-#kwa_j_=s zRFdcP);>6!k-G~2dveFT!Z>oqP26|$?{b&-KlEa|xcC5Ey_opk&fa(T_xuKjj)3RlegAv1ko*4A5%6Ct@4Mbn zaJ`S~)qfKXKL208e|Pj70pG>=_I`>YwnDRuV5Zq-@h9TzZchw zjqiQms)vjJHTVYb^Lza7a2$LO-$&;>dR!H!Tx=Dl*Y#LN%+r~bnBMz#YV6NEN;RI( z^VwwY=fOOGTEW$sR`2J;JiBy%cA?$R&7_zfJ7~~6z1ZhrkR5)1mG5OMKNh~Xoi~8r zfbg%q_ub)q|CyQ?KTiYM$MbxusQ(o|ZojbKW2-#4D%Q`}&)XjOVGw>y57WnIAwG_V zQ!o3+^BVx!-R=l@FAn~f^%M5v`K%a&5kDsWm$&y_)P28PoUZ|2x5Lw|STENGJLvD@ z*{T@0SZ~$5oiyurRn=n`MoE^8>B0c$?Wdk1}BR?~w9JzL? zwv2abyHP$3a-sg808Irg?pPfdPvK&mFn;=^BHjVR#B>bJ+=8y5ckeK+{=YSocXa3% zs>eibiBeNH>_T3EpIEkAb{n>}S*4Q|rpep^hL#}42M8Y`e#=AB=fg5T<5Q^7CwUZb z(h10dE?a_{s+>U$vTb0Q7I*!C#mvzZclfVBx=_0v0jsaf=E0QNL>-w`H+T~@x^8!2 zbrDo>l4LmyCD^AYtzHI+Y)f~CocJUUYL7gDK4W>ZFj_k*KHUXH;A@{t|2C6Vx4W@Q zB7@Tn)qBD)!9QO@^mY%6`W-I~nf+rZea#iMZ4uoi9r$42(ELjk3Vax%KwJo3!&(PG zswB@7=Hjn~M=M{ax{a)uPs4CW!V)z1B89SJ+c~36_-x5Kcs!W@O51S_Pl?l!l1tjM z(9}U_&NVAtHoIm2*wN>dv(MyM%`~5&)9Y$>cprBQFks`ix&4kW?uY#xTK(Qf|Q@MdglbJ$9MFIBns?v&-0fLd+!p7reo zCu86qlY_;Y!NR3ApJYE?C_0MxP-QjGQL)kdTRVGR0v6@kaIK**kxMD!QVa(Z{(A3G z>KA2RI4sxFWV`lmv45^VXd`26zY?M*ti0d$@7QKJUukVK7p3OC$v)!F5u_L z(&}iN*EaNx!)a;G!%qtjk8(iS8ytWBSu#)&d~LcX>&C*)>1eA*b9c}xB8Cw04xmtu zI8yd};+gOU5;_ExxEGgSzOQb-kQ7gvy{B=|u6!4Le)@YzG}2Yya{M%AzdN{nKq}-E zuLU7EMQ-KOM%}(hxykubI87X=Z7AtL%k(Etay&p|Cmq5kJo|J#bZ2l|g=X53k{s6b z;t>Rf7J@YG#C|!sbYv%WT@vcUT-2#*gf%sT6bg?N*>b^ptNXpLt$rjAVnmwo*I1Hz&tXX&cFRfz*R`32<-w z3(mQ+&yo1+G@T=N89s@DmUKc=cPHpI=Vv8AD@G32p{sS3RgG`WGM}4jYt+wY# z4THVf7b(Wml!FjyU@gUMQdc0REE8^3s9z;?scVDJ5}i5?vkT67>EfQcX)X@#CMBsO zZ&RcoGyP5DrWVe*4wG(j+~5c!zYHlRceFN}*rcT3p_1ih(!3M3iUXGO_3CITR~N<1 z8JF7XEi+9AqR2XWhBL*?``P|1FDvSVQm(sisgM#}OKgYcUV^Rfn9$!W6RvEpg_iIWRlORpQOvC)LXgS3Jj0LR;DO5iyTfDQWb5jwLMs88yTY4_T^BQ zK;a9}L0zj8I>2zV$eXyr8$1)A8#9wZmbe0QTvCIbz|s#I=*E+t#38=3EH+`-_2ZiV2VSE^&J6-j}wNOLt4DqYx9tC;S=xx zR!F&1h`0(4Nz4mKOR1cYv>!4iqX$r{Wnoq^fD&;pcv$U z5x88M!&UYUEaZ8@t&{X(QyWx*p<|+fk~bqJ^(FCv5sb!;S%-cc1#&T3toFu@B91~T z`O-X*-c=_;7lIh`to2UP*-}%74pP(;Ilj=9IgYz4jYhd?iR0E95e*&773bM{b1)N- z(d{4Y-Y&^;YZZ3gO?g#h&@7mf#ktGtG~Q-l1*mOTv}s792Mu0MDl(CWDl{^mQ5pSA zb+@%;gTBS=_l}sGfIc*2U3U-tpK5lymh~s_tuGk6p{Tg#kd1*adlQ`FCk3T{sSR0R zLoBOJUbQl8;?y>18a|YugC&Eu1*-`l+d{)3*`(7j1pw4NwlHzxN{)K~=xu$XFVd*Kz#Hr=U|oZ=F~CV$3cQ{i8flNB4DkXrGEMq+2r8N@fJD{ zrG?0Pj)npZD2M{h(OubC!8c|!y+2$U;!rk#8j3*Wta?8uzguj-Bw;)X-Y1O@dkd@~ zg)bh%D_I&N)F|M?*?;sli5>SKn~WBteNx*#W8uD{=M_WGvWyWlUNauDs(d?R&*s5+ zA$8Id4XjyQsPCFySZr2l4Z4ao7Lj3$Q;q27>OW0?4c?;MD9v(fv^svE5t!$;9oIAA zg|u!FO?IU-)8;6-woY$X0>Ebe;An9IG$))F+~D%?#SEx<R3W& zf@cOxxVzip5`j;uVmX6JvvIOzp>QZ75oluKs{W(2^>(MT@r(b4g?DDa_%Lp06T4Nc-ATt+so9 zBuv4llqokMRjk+;;*No=m_WsZp+vn(H3lJF9aY-lPN+4t;EME;F0x<^&kXyy*~jb5 zTQb|j_e3i3qX!a^mdyFMEBz z!0uQ-@0IXuRJ2f>(+#Y*L-WYE2wsZV`HT5 zK$3-dFuHVNFeO1u&I)@`t(<{6$1djHCG!~dLu)d>gUpy!##ul5p*-Q@ezsSt>eoLL zGrt7%NisX0o@v{M*3vH{gsIk>vYjeKt>^PVH1sDWNiluGIrvC|Or)rC@Kero#3cqA z6gmn@Tvsgl$44$XoS=?~^7s7%6F5_i6bf#-m$(xncDX2NSEF00inQvDqywQwsfFHH zew>pq>=L))LD@P|S3Q{w6f)?6}!FP^HwXN6@B7l~ssrc9C zq(s5#;m<(I=O%78n$oo%vdWy<>3DZT*O*reXwD+KD{W1sni(2*vV}jLKr>Y_3*8xj0rbU2_(PWb0z7dVUOIsUC94*e|B%6-e4JX}fJoE;cOm z57L@>D)7?zBWVJF9(e;~TedUef>T78yiO=Yw9&UAK1*4XU`;y#yy4%NLy9Po%mOc^ z7pJDRY4#uH>Cm^aVSh9WE5j}s%EY)AvV_G|9y`&lrE0k=qet*ZgC)Oa+9T*s&3j-A z9OP|AwaY#W5~zkquacP{3vl`&{$9de#K(r%4`_Mz1`{pOg0atIKe zVnUpE$O8l?X3B6crTjV#L{yuBJbWyak6zlj>TtPE<1Nj_!YRmsNXstyDC*cRkK=u& zScIPD$Lc8Wo=4ut##;^5?T<2{SZaj9C7p$tbDP-Q7QzKwsciia<-+ z2STx6*Bepu<94YPmz9*48&Ok67^IgKRl%y-;$M&SCsC(rXKgz0Aen?luFJ`^Akcu4 z_-BmJs{=9D_CM{SLODDj^Vy|`7M6RFMtB8pJ}TSHB2>8|dVDFYDHzzP#HCKH zrbf6)Zd(;Cb7*1Jowqw&EHzv~T~A^6t`_P{-;nu&qoPKsO7dqGb1AmlW{U?9iBJ+K zn5whl8K=e3OC9iXz6>sg@On!z46nF1f%aW^!=Q;O#3O(>{gMu#H=P@>2}aCzs$4)c z`CKHi6_MZ+#4kB00)%_^SO^T}j%;d6wP(AhTMMbzq3FeO7P8+%X19Gy9@wD^q0~&u zeM#0sH7FZiAqhx2{yF`6`7{Bk3yB7hlKumL7zVn>D_GfQc^yo^kYS4vAmDPv=|s%a zB#2+stV<_jNa{xBOgde+)p3y>u7w7Bwrt};y^h(%9%=E{#4EA{$3il)%-EefjcL8ILTx+ZdWC~Lcq^;Oh z6^-%sHwMhDhAvFT`uL(>mU!pjY7<1d(h6O<8>?VD$&CRHq}821 zos6y7@Id}veIJfSPZe^IIcJW)keC&w3LBu^;m0E*yXOylO0Z~9RQs~_Slp&1f;)h)a9ZKf$@vdAqr4lw9gZsfU3h6 zz}8*$?Tq<$p5SBG>D(h?en&b*6?xR&D3m+8j`;OR6cX{^2g?%LpMnM787}NmXHCc>@og4n@6(q1l@n{mM0G*eQ@= z%(LW3@yO;_#b{qN4KK!yL8gwxmX?!WuAVXHmW3Rt?37@;uNy%uQC^F9CtP^Rr$lv7 z$WZS6MEP^=)y6%VETgRdO3v#5M`x~mk+rxtZG4{;bT=C9Rvl7^lksQy^2@S)2j)Uq zU0Q3T+<yTXuqFgZ8UemZzq7{jk_wJYc*c;4^C zFt2;)dEa{y^2n(_k4W0Fxn*5VMi{Z@Dw%+0j1 z^i!#E5_*jcU( zJD@r+R@y!kC+9LUT#D*MwYRdgMWZn%UrHO+1kXUvI%sKlz&vSwu$U==`I$$3E9|~g zZ0r86=&k|W#e%P^E4;{q#HK=~R*g;0`eJgI+qEulUq^GcJe4>>;y^bI{HCoob5`ms z)*9=o-z#8&61ST=bwv|&5QE8jS7jZkTa%j7I>06V7a6Js_l0laL@IvJxgpEcEbkNo z+s7V3FkKsnB(4bLxNKAa!0PJ9hXTqZu_8#QQDn%I(PcwV8$Oj)5}YrD`}tCI)KKnw3D@4J z=%)dXOOd85S5T8lCLUCcvogrV<9UsyZ13J!_f+o$lG1avC254XQUf$b?|hkqo3W=} z1Y{ZtdXa|Go>2;6sx4_UXFAmw5@Dd<&*ynm>P;-Z8JqS(3y`|NUbWD^#UJQ+Ef%@b z33SxgyA&(p5gi80M9CQK!M(AluPyC>MxrIcc*5C(tpX||y*g1gky+$eJZTy|oSlbL zpliUFOMW;?7q30>Zd>waKg;rmTI#usCV-nOF|G(2JU^X@BnR%V^9!+5ih=RA0jq2? zRLj9^_|EM#!6xk8iE@*fOl8+z_D0Ylu0PTq0a%iQgXkt|p5h&a|7wFPyKDz; z2d<=FwuIG5-^Abm^HaCLL@OySFJ19&+`V>{9QqK*a-YHhdJ#iD*c_u|wqkXfVtIladQ$8GBCxRpfi5b9eR>d9pNhn=4tqz& z%=?Zf3as63UUOK=9lGN6lv$wNGI0F|Y0mDs-4?e|pKY7K@;Ve=DDQL5Zg~8K=O?2V zj&|o6s<}sOE%6St(}=-h&rO<(h6SdfZ(TXrqvAPH0V^z-_AxS1iW$6htAi!l`;Z*MUSb7NA4W#)uB1vP%MM-n6z!LkPtXY{ zNkt2tP-AJ@-r1y3Qf>)H~~3U*>Sg>-0`YiLo?swG*&TG zv{n9r^RVwgHHun|fsHWU*kPmLn-h`i4tG)iUULz z!oJqV{ztp`7No4RKMpF+eGiFdAZ)||&*AhnWI%LK@5DX- z`m0{bPLU+n7|YzC1kz0B$vHD_r-KL=vL&1}}JT7>4=D@ia_zlB0A)U2y2v7Exc9tRIZbF{3N3XDmgcUs^`Vq5saIpgE z3t>q1gWhR#3QPw99r(I-7i(*TCw`g)(pLdjG0ZQF>?zZ<1}Ybe%LI=M&wCjh!fTYl z{;apG+*=o}!!5b?h@1P?=cfCD9QAWF`8OzC_I^=sw4oXIIemULrtF6lUb4NeLt>Lz z!Wq&y=-Zq`Ak9hrBaB3PeR3ys-J~Cs&t(+3%iNKs;h1bS6{s>{MxSoeDS}L%A|-SM zdDG1iS_rO6ZkRRbw&XRsp7Q+HyIFnI`hrzuo9MfkzT=NgsA{$yyGjJ$c2_4UI!<)) zP-B7LX8*-UUGLXJKMHdtPO#77lye30lta9CPc9X5<-i!#$i}7*YW}P-$iH52G(WES zwy{juT7@dB3eaNI{qmOf^yEx!M4_>O&qlHB)cSO4-rR^`FvRN&)4g(*vkh*C0#Y?(XB?UO2p2ncaWxCN$%Ht`hQd56Hob%{WtkqWi=COGc*n}P zQaLAqAB1!V+?|9wyfuL?27bAgrEc9VOy?kHyz;_lf^50OmoH*|s7@Vx-=4Yf!YYm4aYCA=pIrGNCR*jyHqoP3SA^# zF!SP)l0egAR$}uLM-VN*1tj3*ysUL>%L4!)ssIA0 z{C_Z0bT$U||Bah^_rex)-Mf9K-oU8^lq8^7FHEmD-T)4am)1fdRcH_;<5Wd9PoM>a zZNnxIk(y#}XIr1nzG57|`a53Veyb(Tw%eNYaJ(zUVwJgBf5P+2s{_i*0LiVBFljgG+xjKZAPJ_v^YL`X zhNQne4{=LgKc!u+-jaI`{^@>HEd_%ulXDD^omL?J%|Kz zesxWq`R{T=%D37@ySTjkkJ3U4UUj4J<(Tx^CIjWTFl^?=X8p8Sh`TG)uhFSzSALt2 zYaI+L)F17b&I=`<>+fZ++${^AOIcd~br`fA*qk)7e5Y?)<=Ypxio0Y3JhbGP*2;oS zm#k2VLCfbqX%(?TmCgD_C3v?a-zp;UDr_oJumSy)8s{T6_Yvy!=0gb!wtvbt4eYfP>MG01 zv0ZrHSTdevmIa>LwsBnwLY`$nYQ5kJp$|dwj3D)eOIk65l+0_eU$DeQyQ?Xhzk88i z3x3So?9T^6pjlw32*ntc6E`MNhMB9r8Sp9y%S4IN6at5UgY!+|4*Cf$mQbSeaH&v0 z0k(bDAPaa85G72?ys%0YN^4eVX9DXopM&ff&PFVImX`iBD}ecoF9q7T9g+y*f!r>J zJJiM;~PLQj2VNr^f5Ln~tS64Un)&iJD{$T8lNY4RNsUo+aHVZA|1O-|ukSejj zo#7TsumrcuE%8)h<`yeH-oZ1~ItP1;8yHN}yaPStYxYr>`_|fJ)biY4kV=2kAnEH{ z0CW)iO%E;aNPrzI!d(tRgQZDw&l0i+wv-eWlg7k@DOilpsm5$cb{-G>vw=^Q7QN+} z0mSOhQ3;$)2hglL4)5*&1d2&ngvKs8P+bFB+gTOy=#1M?IV=Z?o0;(8=uFOKM$uUY zk0$h1o(Jy_+kNM-h5a0k6#>`kfC}ouXh4Km0J4H|@fxntAIw?LanaMagZm-f33=g9 zs7?I>8VE*%P%cau<-%|~r%bX!C-B~E?whL#R?+XI@`!vQMNeMF2{UGvziTXUVVK-k zKCjAd3(b}X;e^rp3{e?M!m2NHP;{kUq+l&r9Y&`3jN4NBdo}TzbH?KEYD_kt?HA#V?cpZGNf1^CWp;*eHzz)m^a} zkv>ImCK|13iPe$}G2eu|Mp;8WAr4=0(W>h5#t)=w7q(r~sNdMwpsc?K%->7I&ydh| zo#1$!VsD8zlOgsK4SOe5y$bsHc<~J=t{jXn{2u^MK(N2{oqDjp8-cbBY%mN!GypsH zpvmqW7Sif%EC?dEt3{0BUZ^lCidE9GGg4w$@nD5ORp2X1BhM5Ao%N~15edYs+V&#T*216m*vfos6Th7>Q#Vl%8E2jUa1L~ERGfjYpHjRl!xaVK(RmR=4Gd{ZKK z01ycsEZQPzpn=AcSk=)j~XQFisa!3FacIgn^csXozTg+z#&uugLqgE!s?UXz`3n3JqL7-hR&qdZUg zjb;$GQn4)mCam{XsLXp|r~RlR%w=2__8??yBc$Rc7cQ{gmKaeEX?j#0X{9AY{oN?I zcG-y;2>n8}!kPm$8<WA88!pvUo}6Yv5A{&5`mO6ufuRW9y_#%J$64L>s;av++ej^7V4zZvU*OQ; zz-m4jlZNR*j)1n)dvQYAVx8Alz3BA!4L+*+^j*EL>&0=1;WdT=Oj;FS{;aI9L6r95 z3>EGLWYzWHuIA}rY2H*8^|0Twlrh{@)*gD2S}>?;MO%jn%}}gth)SMR)WUn){fU*775$s_oHh`-z4Pl7?X z6V1LXHlC#37GO`D5%MfTmjH7-m3B+1S3yN|yJDnumh!sS6$&SwPyYYOkC(RL9Q)w_ML3j0YNO1K=2>L`AxI-&R_wD+3)Rm|pAx3VbRV|%2Z2rH^D zmj#>-?Q-s8Oqc@Z5lglP%P6rAxe`_?_KP4pQ>g9QQ%}CxjT474f5kP=4r@?D^?q1k zh2|V~sHlI#e*a}L>2u<1OmkD$V-mC#5vII;Rp^6dOb(}ICP`L$jvhU;1t=(udi}kq z1qgPXhfu8mqE~8WOtvlJn+o>Sl0w!sV|17(@NcK9VAX6z#Gf<$59}cTL}3`hPjlTMq%e*qW;uRXclfm$uC@YD&R+` z4oO95`tGAlbvs|Guld~2@-lDs(3=G;hWg{q$(dP`%bO-Gg5XOEHh&Zxv|yp8n;^r^ z6xf!-fi<`+iZo~69S#SV=jXGb`mAU--R>&c*Y5Y`!}+(qcJb1sOJBP%|JFC&{_5M` zxOfONruA7>d?)QILstnI^|}{It#uOrl-)j&cRK6{m{DF%8?74`b!`at7}}g_5Cg?~ zqspw$(WYZ)SZaE9FIkh_EPJ(#&IfzeE*7buz&Tl4NOp`ZqXbrLz2C*U=?RPrlmYGc z4%28N@fETHa6Mn`r!>H9sh>m>Spn5kjR88ltvjk!M**_j!gQ7RTaSU2by#6y0?u=o zEAmz;%#N~&nsVW;;S>r^`S=fM5Ocwj9E+G0w<_%zK@~?iiNf}7Q!5JETY#v=J`Ac( zwMieLy(Zv_QaQ1J&Y!m$1pxB;0aWbnsaJM~y>4Z;=IcAGf>h_`EO4JtVL;VliZOUv z(|e#fZR$1t-~jbNx}J@4d{_VW_i-1qubo6jv9AX!Bc<927p;}+E)MYKrc$QDSW#~u z_TKj6j6JgxNyS+(+LNCk^QCwLp*C5`A?3z-~7+qdHL& zk&J-denUZu`%#+PC!eD0NvEXedhc7K9d(-byA_Yo?{$}yQ0ixZ5@zEY_Jl!W(*CpA z!XcJ(J26PB1L@&9tk6?BGJ}{070v$Y0bx^Sz;A^aGCgOjm?4!13%pXsI04%aHT}(T z$EQ)LO0n{g5L~HK@Xx6sStJ1uTGD~ohZZk@1T;ZyD&WL4z#4W<{Y^S$el%p$=#$Pl z(AiB@vHp<$Aktnn@*rDJiDsZiMiAf$K77!s9K#l)xLUHSk`>R*Ve9Xx794J@##Yr_ zy4*fftQ@M#JqB(q?@BYlSyf+#0i2?!D%7du{<$lKa!r-1Yk38@4Q|GFeREp->Wg$! zvl>Fs@?7DbLqBoN>_hpZpsy$)_511No?;EadO|mzukSmNbhKQt^^qy_qZ92#UA1~C z?D1k8VL#oOkCJ)C-n038(bjz9=JLF3#rP0ksiw6X4)65WcKiE>fqkAt=frfjG`rD7 zwZpTp#}mlBjWcQ@5s}VqM>NeFWZ-6u2}IRpqh%m!q)eQ&u!-U99OPpbIZnJ_k15;< z%S9sFPL=?Fin-$cttOf`a(n(H`B9#_T$v&&{WN9MRNz(bx7#BnCAXsCegr~vzfT*3 zwV;QQGDH->9S^7?!}6e7a+B3WJC1imBSP|)?Y7h>!wuuc3 z$fYZ5py?JTL$o7t26}=v>gsqV{5RZzt~Tgxysir<6)RHf@6pElAG0ICWAv%a+2yt~r6ap#kpt82@5mRE0la`Sep*;-n@ zaZN}s)65%KdDfLlX0~Cc0UXAz_%R*5N$u+5({&d9qoptH@zvGq*H`b^9?M>1n{N;V zPf!&_q)c>a6o#-k(mNM-lHX7UJ){$D=l2Qt8OBIaDTlI3@T9->P+?5{9g0_Y*9w^w zgwya~G6}%XxIfB>78H|&bz(nc8d119fJ^!(z!ik5Xb2*?@l~M#prdPsvID5zi<;VN zE1aP`6&@iv0!tM#l;{;N;Mpfk@CiG`qGDAw>yeYjp)wT^Oq%DO)X1 zG>HY5aAZ@}45eYdd&qfEX4dp-Lq-hsQ~75H zqFGKl3k|5CvbKCBfZ`x?1}7Z*`(b8`gRo2HqOneceGmrh`HzzRXlEDrc^2+PXI72!pIWMO)s1FX@C#mF`x;20h@kAclLekZ6R>G)ED zMxnrikqz5PiapKZG-|2l_N!zhZWqKNCC&RNr`$2Ei9ma#MDiVtjd(Gk`0iuwU z*06dm;%_=IIOi@Y&}Y=*!s2=Biws7U%lb8PBQS)5?c&^A9y-T);-LuU=T;2%h)Lbw zjU0CxVjUbFa{H$ycqfJsLc5#Iz}{)A9=xk6zcY_dfx>Bk9HwR;?T1)r0%pHlrZ-J6 zV2V(tKm)ULrPt=3veID5dSMa|M%@rR;MJ`I#r3wqZ`F=+(VONti;-By2U>&#rH;=@ z+MPd|oOZ|aA}AS@jI0GepL}O2-0dSW9Z!R8x6R z2Y;(8o{epAw;bh(dK3$_$u_F%^PAETJhR(%vfit^;OU*%iv=DgMh6!8%VFRc5a=j> zYIK*)jLQ!U;<7$F$NwGXoF}>muT9f~byae+ZYQZohb&SsMSztvT4yHm<0~1R8Jk5~ zIkc&jSZRX`&x(G2d|LVk?=VZ;cY9WBHPWK44aBWyrdtc&|wOwD4ed% zt<(5ituLmzH3hSvg<4f}DYm6tUy15K4WJoJ@H~e=gZT|5k2q&@F2KTVV9gJT-GM~J zr5=x2=dh`)7!(djmTAnnK~yG70G zfKAnx#IqATgQrJI*cUh>Uh>mfHYK1F&PD=kQBprnx0683B)UV(24J(QL=kit(jaT5 z$2D%wGt0m}TySvn1h=DtAgndoKUm*1+*6+%bl>`tO7YG#R+>2WJ-?F>1g;dy*+wTtq05#VMakn_*<(4Jf?wZs4wil*=79sLXKY>8HbL-}Gxjg#d>uKbfN7i2d zh{mfYMLC!af9sQ)yjLz6=#;h=cq@!mK3yCF@9~>+GpF6r_c&}}WBJ{7(;QmFiIP}h zH~uV|U=SBD;3B4c$optLZ^k|kJ?oU4+nzvsW#a4vVdfu#mHfoVa=XukfD3lUwaZ+e zvN8g|9tRYninqnhu`AjepRo7rL=YXCCaL!1vti_6DUfSK{nN^CI|VsFMceJb;E*MP zl`xr*%zwGaD`%%!vSIV2S}{k-wF#q`ak$ryA>;{mzv4ZLWy@-ge++o8Nozrn22r{j z4ltg#z00W@Gz4=@3kTJWd#X`9v84p$fjq1?jbJW{qr+vIwB3&d&JaargU7I!b@e6D zq8kr0mL*)VheOH|x@eNh2LKP_pT189&;`9 zY3AA534P!G^wUR=-}Lr%WcmSURy{#lqqv7z9^}6EcG~X+mAXutRJj66rIQz}gz2L! z$f7U>l#9|H8ay(=%SJBc5bQley=rMjp}Nf|G+T$fO6py=pGLhP9%Q4Q$%^x`U~fk| zt;d7vJi?ye>BR)MEO8D%=To$qn(^UWC(a-p#vCR*N&0i6WRyjnxxEk~yu9W7lI7JY z%AfLYsZapG8e8fnpN8H#iXyI!e3CJBMORkVmRptC;9WQv{q$)dKix^=j;hFCeO(-T;ky{~CjtjBPg$T3mU7}C=oRiQ z9T=m|DwZAMP@vQ}*@#Fx;)H2gey)M|mEq>UB7SgKbJbP*IZSpy6$RziT{(n@SkT8& z1iY0U+xyKU|~K{ zZ`IPQ(muapaq&)4eF77s*RR4fTe%!m?3vOE^1~YtE9t)HXh8K=cq}-qGOJwn4*cm4 zeDF(shlEV_v(9UFub+0-P{dToNp6dD;;@}6Y-ne>PuW4zPY!zU;mM(W9m1wk*gk-s zEAW6w-Ghq!p7yhh8BIZ-A+6S0lz=yGFDe)k=9c@QuTVHG8Zmyprg*>rzFzRZ+yp&s zgdD@0M1=#Lc9?dcT7?BqM^1f+)1x(e`yrtWFooYp|1h7txm9FUSgR8$W|kjYw+}Cw zt#B?oCioic4>+3M4&$UBm}c;@Gzg$12G1q4Q%280Z?uAAy98%|y8GclCZpy|^CHEX zvIx*DVB&A@BBOA|RghNEGDw+Sg~DP7L#=-2KQNJ%)?jj?&n4>h_5MzV86}nc+QFSA zwR(PnFF!fnVbIHVSS8Ull@hCJmK0y_LL}?L#tdT2#>^&HhPLoijZ}ErjouH_gtwy^ z9=*q7R{WvH?+~C{c+&bpMn%>48np^%7ZM9;DZFWfIUY*ZGBeRn3{0(jgbnBldTU#1WRsVL>aPvcY9@l5^7=Id z6u*#}jPlOUoR}F(Tjg&2kd?%6z*Y+EsW~mI zYJrt#6y3_=3J{7lBX@xcSIF99(3vgNqB>_^C-P&nwIr9y_zHk5jD*4sYAd5;k`B8? zqLh-+;GV7`V7qiAYPi@UD3kSDQ&D>I*71S^B3~)iM&t(#*;Zu$Oba+M$oC?vXN`omcU&C^n zSHvT<$)j=h2Swopbl{~N~G+fKfyHbp00Y_O5-czk$OdHQw zEA2^5J2?FC-EP0ziBg;NRs{SDAl#DxPT`v^sE3GEHwBahA5AR+>q_>&6EPYFw6QT# zHp>MZSB3Ed#B3F}biqCbMNxIn+xk>*>bqgKx}V(SsOKt{_6}0vtSjAl1SYhqvyO!} zo!#3<7v;Fhs3UmK9bq{WrhWvM3(8v-OoiNjy!mSTfx|wjA5_Q-!&ftcjiRchx~ZkQhC)$ON`I0L>z zo9~AxK1zD+DDXa^o_W*KxbR!{f%!m*LM@bC! zWuVymMX4h=Rz~%`%V03fDwESO4o*d2(suzgDB}}mJKlUG3;nKG_Qle5(SeV&;yTLp}CxA zO{MC^dzINq1AKGx06&Y;zTTV0MAM+x+7-YtavAzoHp)!k7Y}#JVZK>D%yVL#=gOQQ zuZp5O5$rf%aGo8N(vADu!(jJdunX428#EdFaYxOmEj9ballnvvEPckE4&A@AF@t%n zXAE*!1Pvj|iS~7X9${~%-yt^fn~?90Wu?s3#(AZwrE9NM&SG zE2bJaO>Gszz(!G))j0mF8}|oA6ooEg|E`o% zI`lel2B^IJx@Do2@c1{5zdwHVTgSgOe)j$6KQVsx=i_I8I)3(-<7a<8e)hM=zd3&P zyW?lSGk*5_<7a<3e)h-5zkU2W&wuRsPgQC`rE&b7;~yJ8`^{rj>o=bN`1skMji3F= z_}O2KpZ(SN+20(i7yoPg?6=3yesBEj55~{_==dj(f9m;np8sS;xK}Fe;1`f@aW_K)Lde}DW3<0I9De;ObC z#Q5l^#z#MW{D;rK_xx9%{~AQ|_{`v9I&piLV z@zH-g{)OXTeEtXUy8GhC;h*a-ehmIej{p3{&%AKQcjNe%U;OlopMcN(m$4Bb#_r^#6eSGv=$A5GDcQ0^a zR*!$>Se5;SV^#F$j{np6=vT%^zcfBl5C3I+^xc2{jq%a{7$2#>zdk8)7UVQ(>_x|PAUi?q^vG(FOUi|vMeD}rwa4HO6{La68@5OIH zfjcjL`(J+j#c#sn==krCpN)@x_l26A-}&c18z24Q_((mf`TEoG(Vrh59sk3NKYfAo zb@%w!j#YR5*9$dYzx~hZt6C@Z_($WTKN%nW+41*||J#c{dGQBMlLyEDI6hMI^S9%p zzaJm{_3=LeocqUWD*j@8^f%+9zZ)O@)r-G_m!G}(-!J~*#WQ&P_{BfIIC}B-6%7Y& z2zmwBeP+xy2yKvAbOy1SF?wo5enm)Jj=(PR8hjPt&V;yUL|VjE#8c4$gRlZw4UQW8 z6cwgJ)M=5l05>P$Wez7r%)UJdY?K@;1eJ`lVfed_A)pvKU*gp9j(4IYZ|c+q7%6G& zo7iMr4CRh?R~#DWOB@tWR4{8$LHUbEFMiUC!Bq zQ*32`cB4jlxcQ(aw;^WLFY`rKcF!~D`9ie}CaY)@;DnpE{2OszPMd-`#;`~{gI3}r zIVU46Mq63*=?IgzCwM*=EG_L(8lb}r^2{cfvq-yKwF}ZT@dH!ZO7`fzFgiaHCfhs@ z@$EHs_NbqqM}P}`6<7Po&21gYQV$yDRCGZT%Ff)Fi5{!f>mEP?o-k1}$KXQR-<27F z!ho)6VN%Xr3UzEAA$S*p&DNzUoDPk8Q()2bC{z&H;GF|g6 z-q_fvRA*#wh^}5-_YU`U^3y(K}E7ev6ix&oDx@nJ{acM`iafR~>!Grv! zE?1a6eBg7mOkojZke7kh7$YhojoFIiEdgUw@|8q2M<}88X$6H zNY<6$d{E_g@9B@1{XKJBUU8CJw7vfA*Pl=|W%E);oL642m`*GCVSM{3cF0sU!>Ycw z@Vfu)fi&IA6WBqp{g3LP@Xm+P!G1sOI60uE$ytX-Q)~g)9!5AiHWd%0Y@64406Lj9 z`xLku{t%>AaN}bRHaqS~7GY8+@b#MOyrGO6H3$k0^Haq};nL<n&en0n2xSIzbuj~m{w;pn1!h9Dp9=d*~|kfYq0fZT-^kM{Xm zE4+XT8Z!FbqkVm~UoIE~ilJJg$`pn+izk>uiafU8%q_9J(bJcC#YSmhP7bJ zKW58KZPg9kgzmv%=$1H5fS(LpL0@GF0*#3fa;yg))FNv2sDWOZlXg^m4u!J`6Ty@a zSGc085T$XORh*1m^La6Rsw>@Y5KJBCWH*o|+(L8lYhSx`=^J1D`uxSOUV7`RUo%xo z1E!--;s2b)zJY_Us;S7LtKEJ$lz3=c+D$vDmH8qdESaF}sXt%E`39|+ zu<=J)V5qf?cJQi%?M%lNVz!|WE{4P{L_m~oIACCS1RTxG8U|0%U1YR(PLraybyD1~ z#C&#Ld1zOXi$C&179VrLD6ySQ!+m;RB1%Mc8DnMd1IO;giRzhBqE$E2*i16@-_RT1 zT!v})=(0(Di5cf>G~$gjgkr8qHA{m~-nDg7@;vHp6@f_tC9H*cWqi{M0vF_PBuB@| zonm`pfUG}3FmMQr!CVe5!r421{Z;$=(&475_UR~ATn^_bR>(!EBN^YxUV)iAfIAgw zAyDjSw)&d8GsPpb(XSjzZ|^S{_SXH@RbY?&o@dly6uxO^l4WUN-^IM*bVm_98iD~K4}Pw z1G#k+bLkQs~cnt`IIMIl|nX*wrjPy;>?)e;|eAGdglVMd2& ze5m|+zdYZ`<5YmuX6U2S9C{$Moi}i8wK6YNjKGzXI&*zpP^(P;! zt=_1U?ig<$&^Tx1`31>-bMl&s=gd&A`=;{`avkO#miA+UuHdv?l8&BrE za9Oaj$)>32d5(=y3FdL6{1Oc-<|S@oV|X;)dVsYxG85YyZDByTf(BWl3Gvu6Q1t<` z030;Uu(qOuKEGvCfcYZ8L*FLm&DFd+bMozLrBZH%kk(6n@gl?F^lUQEC3Vo>b#3hF z7oNqZGu6lg8%4)MU@&v01NtsKx7K8~JB9gh&rFfaZ{5MvxLNlW$^zEwWM{wxjIgec zSvGUh0g-?ma`Gs_D^g(U%1~=TBb9ft83wRE9HHHb#wKi!wcGtsLTSn%NsZEnY(7F= zk&7?n*Ge^4a|mq`=ZCdLNcQ|g&u*#q6@dN#c6$_1D&T05ihaW1-ow9_9i8!%k_4my zR6&4(6B8Kq&Sf~rwOU5u2}i>|$e*JJIkC-@TGS_Ut0-WYV^X z?+d+?H%90#kFK~NBoD^8!8nceoV~Zj^MMpvHI(D;l%|q2YEA-e&8Ab?N_nuk)P7n0 zr82ha7EF4<+^Uu&jV)aLk}FN}_rkN^O{bfZJL}F$iz}WPn7&rS6qzMp*4~mcOlLUD zEnL26TJsM7>gdwRI1Jj5_S>JE$=g!~O0~V^h+W#578$J)&Z=#EM#6p;Gxega(Bsfd6MaLt`a%!G@W}+-#XU;gtrD|<&c{fgsBAhaB?Ac{Ep{XBv zH2LO2rd55Skm9xc`@%Q{lfBTFc4IYV47FzhlSAt??lElf#+WG@_3=zx^P-pv-0lN` zC2;;ltNraX9uO^M!vnbVDBMwGhNqziS3VH8wplFFT_{wE){S6!z*voT@Rz-A)QY>s7rr z!8zkUt=E5`+iC2x_i9bFTr4b2D zvh7%S%@|moRSIb&vx*n4WSP+MD;2pRt@uOVEo#^B6;-L6{Z!<8%tL^0etnHhPRHd{ zeVN`ew=&ZvJ_NNcG}n|F^QPDknT(=P2W_$CM9Tn9^e;42Hx_EQ1tP%)An0{|FTfp* ziVm+4-&|vdZ|Xy)isOWqNh7w~-DzY@m>X_Eq5R7f+@M7V3;t!dJh@fXY3tw~bRl~{ zW2gk{)@T@2E1hr{&OzrNW=H|buB=G2$DZEMX&#+qXE}IStRm>x*7Fr&RaXcvXUO8c ziBHzwtT58%LlX$S3O{PLoafX}qmnFwuI4O|Vg*r3qsG6f(LX$DbYZ%FSC(&T zo~BvGTs6BXzdKuc^q0|-&oK$$@9=)IY8Z?%+E9vetlVC-M^--NW|dZnf3cTL%Ui(g@wP>HALQ?n zU?XE9H#o#D@x+u}nK;#!AFGswF~E5->k!$bs*_iI`b(GckR-{Rbnnx264;&IY6q_e zlsnk=z9ni-hG6i;5BBO2ffSfnpRG-Z%b>au`9pg%a0P zSdZb@`KGa3M9NPp>u!Ic+fKc&Yu_DjCVA0|ujx@&6KrPI+kY=Ph$6!M&|^B#`woyF zyTiAsQD9rnb8ALu{G)S0Qg_`{@E_hBLaxRHCBS?9?`6`PifiGUH9VnW`@z1!>V=xF z{%H|%f*4{;ATUrn}dE6ptg?%68ubd_HV`J-Q_ zIPR7ASlz<t zoiY(a0ey??Y$}3QZt3ukrydk;xs@pumJHZ%)R5@X-(qzqf9IB_08b%%X}wPyd3uQG zSUE}SG2K%#Ix_Jv6FPIk^;&0fGO$v~r`cdk3`}~VHtGCxJ8GupjiUwwKlERb3(Nu73ZWX z^42c3=u_RbD(Y8pqHE4P2l&eRNqjojt7S=4=&JMMB#p_1gW8k(O0}PVqwvg|S?BZy zFO1VkanqwOhuwmxtCMfA)+$!QskV|Gj$?6@G_oEjF)!X^PCLzEa)8O!3NF#w z9cH7>L+8LX;i@(CZ6L8T$A?ZFo4HJKid)alEa4i?^(CLHyn7}3hTGpC3hiS`@$Rj} z=OFCa9RlL~|5r&r34NxP`{gt7xLX6YOsr29>W&zs zYdYC-=U8*fJ7Sx0RT6Ea6-(+9<@D*LG)J6GmeSH{_1!XV;99Y0b=?{EE^J&hojGJQ z=wMvF6P#9~T$B~y6uUO;oFTC@U$b+4Y^xS@*p~#SjzWD;nTc4n9qB}wXY!P4c zIMF3opn_Ukda_<81#~UoZ9gNz^IngS|EbVgjx|?)DJD?F%B3nxo((ePr|d@=S@xwba^>_%0uc? zC{oz3$ON)``qH$TQvUdA>YV@em4Zola@Ur8s0eSAiG6eeI>6DDAkAm$kq<7lbv7({G&Cl)j7C>FNy>9k>TljrcEKGBV7} z*^jE&KvZ%U7=#W&g|ht-+y<@YrhmY@_^_9EKxbi9b=aR)(5keV9VbbYA_#FZQr`#6 z?4Dv;bmA&d@~W7~tRNUFpY4272$;THoGuieg6f@{he?rf?FjBF`}u4zj)+I<^xId{ za3>#xvUWn>m#1Zw?4H{y& zu3Bib%)~HyOj4Xh`p)M{W>=4I71q7v7R+ahn7r$QHp(bdDmT}Ji=(4XM#=q$aW69Q ziP*k@WOxEKG5M~?8v?lu+SG&PVFfZu*o&v_Rn;M;LltJgQxHaeDIDTJoN?Zi-vw$soniFE@(U$-)-5Ji}iIa5d&d{VvxyH*4rv2RrBw`Y0yHSZksj#Ql zPnP;gRHC|TO?TKIhF#`~j7C|>l%8{!eyIY@g`#w4ON#SfGw(uBn`B<;+Sp*a0a#LwHi z-Mw?9`P2mKe9iF!?wvz7?s4KYh+n3ho9qMPl6hbysGxvD9)ZnCt>fjtZrju}T=UDf zB9{hq!j;JVodx%fYzC7?K9rz}Ts5}Wr64cPFc@HVvQcGx2QI1>69pbjMtAHNvq4U2 zeD$r_N#DP|sjPRL#-OBwjz@b?>e8OvHH;lYFTs?3n%)mEWVSYqFQ6c}Z<_rNBi$Y6 z`sZlGt3G7<-t&y2rSwf!90c6!C+0i&8n~he)O2~{VIljp^L<7ZIswmtr>UO>R6iO0 zR6RcZd2&_X3$RW|wplo-D|k34)LP?7S9G5e^Suzy+{~)Zsr3S;w5lb8UO(5vq!p); zlFe-~5DSs^E(SFK;5rJ_3pgo0(4qeJSTZGb)Om#ER@BDK>rV*a;l_+PmfXd&)k0P; z1Q(3Kx{aw(g>|Fzzp`hYqF5IUJCoL`1bY5_{^T!Iu5v}A&J>-Z2%Y^Lp|It8=kEMe z@;cJ`cCu+E)w|S1Zw-od(5YmdS6y~H=U%zq|gP)#_{MB<-%7}GD?c_E}c#0eMzJp40Dp+ z-aMs*V^~7Y<>9I(PX$&2(_)z&QEfTmiDm-;(doL&vyPqSKvKgbVs|n@PEz@GK5ZH| z2_2kMqPaYS`fU` zjo*DIe%HW!XFh)SGS~qL)3R3QHfFm06t2|+TR{IH1IGZv*HKS>u(w12i+X2Xwc6yq4<0GRZQHbinR*$@_}dpXnkb^QR1S zBRgeK@6%DNUh?s0^vQDUnZEl@^&Psf2t1T0OAhdzdAp*kX>l3_xKn^JGoFkJ*gu-1 zRf|*M79?&3tGwf4RpCr)Y9uguYSkH^G)2SgYYZ1_Ywusc)$!=3WC~6sW^+sKX{lLX z9#5p3*k^e+uAx|SPwj%N2^71=>5S}={xeXl21!%AM8E9i#3L}>i>V+H^~$K=y&kYi z=-S52dz!lJ#jyrvpBN9Mv-2;%oaW3KA=xHcC@2nM6q}0GXq2#mjSyPjjhTD> zw5wznt_MC>;QnsA8yMjG3KhyD{VLx-1WOza`mpghz;m?R>mepPA0lQ@!`Tq#MNN8V z1UdOUwAa{kuhOqn(n`02{V5{12Bh+Y*f6s+q`le+XzQ#cVa5#9FiZtP$!pv2=Jfu;$#F1n#^^=Y*!FN4_{#X(RREuN+bMjzE{P@6Wn|dCH4LI zQLLyU4(t7NXC8jdFR3bDxr)_4L2zlbeK=dwT`(Jd!@VF(-)*LOOJi|utr0fq9BYyB0u=*`V(rWecG_C7Vq zR80mR!)EYuwfeL;U|`z2R1atKeKX$w>_GAMgI=chUPxV}yjlE-uAX`n9cV_!;6h!( zSd(PZ>AYI>OMg@KCpaZNv+B^AIg?zOzW#P7bghYdCawppaN`Eg*t+fq4%c!*wd%p* zfxbJbM)tz=N8hyI5H69D9VU58a$$El#jr4m=*nPo?IGQ)Lk3KpiCNPxT(CUnT+~fh zATuPC{I%jclqusu?$+e2AeZ-v;@b>Ve44cUr}UYh$yQ?Zqq z?U7Z0Rp_pvbAd@K?kPkj z*7>CAn!MXoeg+{dIC=0Y0xPgnU(5lEvo7fm!2ydeG&Td5?4@Hfa>P4LY(^0ZPZ^t0 zfN0ajW)$2o=3Gk5c{Dk>G9ZtlPUorut?WBj)D>!s-qDkNdSrw*=boxcQ827To1mo` z19K4|a{XRS1c<)!fcyKhN-Ce>k%u|_CS)u(7k}doeTYO~$>Pc|_okG}8Z4Vw555-K z*(e}*-eoC8>EbgJ*X`wvFF0jmA?for@_>Yi&L}zga)M4*48v2gbna3&w#J zC_#&GDniSmuC%3WTHD+!h3eqdB89m_q7@G=!$l%ig-)T4~)VO3jWi3J$~AFsNJ=an3%<)^JLTvRrfGxu`3R zLH@}3vh`xPZ@pv1c;Y~`_VlR-xFJw?SFDP=0A_!{DZy(ocQSaAe$#^|?f{_6zzY5`5uE$>aAvdiBSA3JqXX30%;jL_ z%9SgPMt`wUTW&NyU97bmjdZcLg3n>2abJCGG+z2ot<{L;7i;$wz}kn6#)q}LjmBMQ zWrd!ajYhL}tco7P%sG6&TR&5Q+uh8$6Z_!Vvq<((5UHFq==!Tn*7f;*Q zyN%kaYP@!<(YOU5*K`Zb-6lM)&`7Y1nxwFHuhF+TMfl=)XPRKGVfN@I~*WJl)^jE& z<;oUC@yRrx3lh|~ngkZhV4w03yG??~-J^ibMz+0XQ76nIU0kGbSdx+5QY$vF zG(e*qJ7N(unnNk*edITOw!^r)YMU5ND`g@CVt7?a|wd)No5R zg5PPq5up(pG)Z-6)GMa18aoC{KpxCTJn+LsF<^_W_Y6|DG*Z4KGix`Hb{_Gp<05(s z)Y2@CJAI4E_XG2Em8KHsN)va&^Q%{Di{=Jrz;a5B;tBHW72-EIRf?Y|&TS@SPhx;! z0Z{cLsCmnL{fG#j36G%PWX|Fs$o8}}t;^kNSQ=vtx@$-&0*YKQLqJ}N9}qzpJ)23B zunfx}FpW9`Bs|79OMP+`n#1PV*ZF?II_tJSYtnRK+pCS{x6Gp5p%EIEz#Q3O+aH-V zx@vgs8dX-}K~00k2%0a8Fw25;aV{J#a|tnG8A+tSNVB1veB6XaKFp73RkHrwCEGI} zWp)+~&a9XrESn+VbTBt^T26VHES;F{n`L^q^wNYm-I^*A5nSI{(zGdv^R5=U7UeA4 z!}(mI^(a}2w-%?HZo!#PyF8BEomg|l)|`qLOi$wFl!KG?q0ruxCPp{{bk4ZFW+u;+ zbXA$pnuJ{Uh+im>c1^J0H7zWVBQ6;lX%Q2-&ut~N9A+YKig|QYg!c)e>f=2josj6P z#0m|l6$5J71*PWi{VxKgPq8Rpb5P%~O8Z9_6ryXM*_`FllESYc(OB+$3;3YcUp^*2 zSfoQ4!PuO@D{=j}87jU_tLxzPRv{b0_0jEiG&>>WFa6GX{7D~i#8^}0F4|1~P%&evd z$?Thh#R6k4FEL!(&ZnVQtTJm*Q3G{|okgj_+R0p&!l7%0@ds9H$his)R;)?#9xi$Y zsVzgxm9O%+=?_~?%60S9aHi+wWaH<+*1x(~fURb@FtWEL6JG^;-|}dO4K}SRjSNm` zt=1cIg|wSC7rKFs-*x%Wpx6{M21dTa4rf(}ZX3ofIRg0Wi&phAJo2Xd^SW4KWR{j4 zu7H$Bj4OdZXbS%ciXomas+=wox`e*B!;vbho;>-`Q9s60XP1e0zXGBpelE2{ z>yXo!@>WxfAY>g#3uNozG847vsGipMVbwR%YMG~-38fC*2kx#P+1UtBb`_IFGe=jw z70e^p%V}N2_Stf>GhE?Sj%jKNcjwyirr%0Od&2 zOn`lA2$sHVNQ$cqTQHBHS4ox{a|PZF1%jHD-CeXA41Hm2XgwsYXSIZmrD;LEy|hH@ zu5se_DNq7i6};O@`1?{nV(YO4O|Fr7ZMnahlYyn=HK_~U~U0b1X0^XDphNXGS$yacPz-k|DGnMMg?N`mP z^q=-s*u-hh$7UC2Rqx_lIAQNYHNWy$%%ys{y6tSatn!wN77!l^_Z=>{)+8?Rf*YGe zn2c6Uw*q%rZfbnCL^R`g$3HeRbUI~=c5n=Q({&yR_S*hw3M8k6x`YIL&;0(D)=AmK zvJBk3``E8R#BW|G+|AUR%)S{e3jfy%7zwxt4%96n6|s>#RJqr+g1Scj4ao(Ip^NM$ zb{iWm`or{msVlPdwqwrtU%QLGJDl2`4AD`6?${+V2(fD{A-!5HLsl)=wlK&>V&DnEo*#=zBwd+-4`sT$O-S*7ja4)SB2LaLhL&V+2ciDH_;@PN``Fh zAkC~2p|D@EnylRiwYxpG=@q>f3N_}J1h>?_xBI?)Uxr05b%^c*Id@zD9D0@_G?d{>L*dyp z9%Ak7u-qF!!5pp#9(*4Jh5gxfO)3PAw1{l8?1QO$Nw8J}|6Aq>&C8}_-n^u;35d)n z{s7Xo(I_@Zu^rxo*bHb)*wzr2I)^WrLJvwDbGyHwQDRAd>b-n3g~dJm1juv(u* z5Gy#)8>knxwd4yL2ke}k!?GyKvPG9|+s0nDZQHhO+qP}nwr$(C?rFaE`-5s_ROHM# z#(lKDT*d2Bc!tbFcp9G;%GTV!1#OGXDvLc#MWWjIyobwI){mwLF#i#6mD~8S-uEKSAcFT z%QjLxb>>gP_hxA6t_#oloWY&E)Mk`MxZ>=>65e<_H?0uZwAdpT3APYZk~n{dM)&spYy!CcNfn_P*NwNA4TO0^vx=xBN z21+GKUH`l+1a_(28}X`lO0AAC6qeT;5};Vk1=ts4{!7s#N5BTRUQgJn6W&{I(&%$; zAg<5E(8M5n>X1CMC@QJXVH=NE7zu$l<<6`F%<*e?C~OyQu|L2Iv6mi+|tM!CAt8I*-Zkp^aqs!4l(Az z!X&#B3Ai5D+69X;(6JU}Pg7F=-r8a?3m=9m;KJ8?fGXe%zeT+IgWV)*2b-U;JHes=MU~;aH3R zTZGqM&NSq$zL;HuQ=ibH+eD&SPnWCBwU^CMbg6Q87vidKrkZNcqf~&lY@mmvX&L%3 zd#$5!8KFstrw+a8bR?NqEJHoxOaXKV2iuVp6HeMpnS~HJ%>_?w{zwMH>dRwavqnH` z?DeccW9JfcH^y1hUB8~`P_LJ6CM8u1q*>{pW5Yx2;Q`F=c72ElLL*brm6fg%10}+d-d<%I3oi+jMK^Uu+<{6~8&O*G*v%?O8)|4O5Nc6R|PydI^m& zPIg+a;<@(N6gc(abJ|)6VEervRkKP&YD?p zSJ|lUGxdozBq*5=hBqaS5oY0psv8*SI$hnPB5GZ|{|}2Z2ch@b1B8(hpuj<9zqu)) zgn^8K>$uoI$a22(=3K6Z_6`TS`o0DUXAxxui&bL6p-8q1ck}hEJ$5==1oRC zY3>oKm4Uu+A>#cZxY9*hU6bMRCK0Z))Q4&kZg zV8Ajlu0d(aJEzUn)8V?)_AYikz6sCAjW`m=`1bXMUsN8=2MuQ?VUEq%9) zWVKv|+r_A)dqi=GZKp<6bHA+q7Wu*W2Y;yaPA+TFL4^?oJK)r? zKP414we2#KS;}PEEJjHC1L4>w&$+IEpmlHywJ}j3GaZl3n8pUFmDoo-%wZrF?+ETZ z&}Y(tpMpthYf_pAO=nA<@?Vk%Z@`u#MKRT+h@?Un5{ z4!Sn`4}gj%yCRcyL1`K*%tb(aHtr#09T>`OgV_K{hW zoWQQhe{AGYnRXDLX~|ier7gXim=c$FG{wIR9-t+Y5n`^>yV}+rI;e+MyJqz~e!W%d zb}@1B*UBq$ieN=WVPj#^Ed#>d`Ba`eq_9TAUNG|_fXCXfKm|SncGM01XVu2Nk@7jg z!*ZQ`fS1Q^P^YRbQr%3q!piP~9tbay3*f5bf(?Q%0^YshUahA>HAjQJ&jWjh+yXAhw_^U#3>TgcY}RuZ;( z*j;;^u#~;3O>h0TCV>dyms1Uak}ftdpBPZj=UgpjnW!JxWgLL;$kG& zlO|SG9?oM}5OdQtn%=Z(G}owO79J$B2K)MZHugS_Z%3qx(RG(O4rGK)8+oJiEyw_P ze{)kB1Hu|5`LNa&>~V}Kd3&14UQP&uVPxO9aD-)|hUKli4KmSmB%ZnUSRUTw#o!mZ z1FdspI|K|lM9Us)fR#kp#~L{*Y%vLda95qAbbpBS&^=G`IKPxb&nDbqV7B={-EDKm zbw>GuYgBq{WI^+Zi7*Y5>rwXpm%^v7`Hy9|K&(NFIL^zQ4egO7^2H%0UdQ#E2uoW? zFAB^>Y2L*AnplY4v2FzNYESFAVJ>DA5V-Pu8^LuMdaHhAi_<09>z{?4#C~H;N&WZg zrE~kvb&grbB7K(xjl?iz=e!HOhNEtSYX%#l?0>(8zU#-gz29&9UxoGLo;?I{yBg8B zPpR-Okzt$pk4i71Ph!M$;I1B^A&$mDFo#Wkj4Q#xGAoQBb`Eno8?2Bxx8NHN2f9{z z5W-=9m-~<<43W%7hIcRCHK%TtCmAaJj+hr-jgakk!mL&1H;?EO8CkTXF)7_m%=e}C zMSC}Np4|w6&|Yx76iKH?u&$wuaBXy)fOZqPCM~g89YQm=a~sI9Bi*)mFO343**u`H z%};zC+(j^sQ&(_+!xbf|FfEbPeaP)Kjt-Bhn5cSOPATn)v?uuBcxG(FGRdZpImiDX zGU(NDFTJu8K%g8Usr6jXvh_{UZS?il6YEqTOMza3x|^Jz5?dCk)?8>?xlY18;*(xs z&;ve3vGG=!u8e-Atayrs@yvn{vs+O>v7}QI$wm%)`Wg=P{D_;mP}r3En;UAM<@Pl- zdZR9B>v?M8xZP$rqbJyW1r7sgHy`)UnkPy)?THtKk*pdmb&}*d?Pjd8)xg2CEAC+b zJVD~c)@uZ>-upsJi<~joyQ1w_M6U5$O+6Ne)Ea9n&n9DwM!w4?!g|GKAWDx|7Xx|l zfxf)jVCdGE?2xOcjr4d?%2cDB+YM=WJA}wtJsiEPXTSiVXByzZ*Vi!9Zz9JN-bMhL zD0P{$lMmW0%pwKOpLpGBr}cl0+mA34$?N8t!{QihUR|O7_@V6I+m`SK`QooVO`pWz z{Eq*CAONWO+O_BBvt4?)0RYB60RV*l{|G`0TMH)>14kqCf0j=F2RP{G zgw2+C{`ZSwWNIg}$!sz;ag&Q|Ob(O~t z44jyl)PCE#yQ)J2=Pz2cVD8L@730WShi3EYk&>H)*Np?SI)e`y}%EJ#wYyHTTvurXlwW zLZN=2H}@CSd)W7QaYoM9eNg$G=KXu{k#zS^^zGe45!utKer(g@KX+uY%e*nBrNLTT zRjNZXcHgsyazk%LcQ)c5SsX7P#wyS0xdoIhR(kE@u))8PG(yyelS6Zq4=07zBc>c&YF__u52f(n%@nxZX#01~t)8(kZ~dYnR#0C_NmrSx{_{RMH5A#5fq zzZt8ZeyKYXREDD#d(6V)!N-u+yg!uJAb0sUKVtWDYZ@;UU0!dvMU(dMySRc6UHJl# zdU)J{e!a7%>-jKP$?J5iRQLeo>Js|}i-r_8VH-gPs<2ENgbV}5pCH$r6;k}U zh{n2$3)8FQn99c9iT0YT_so!;Uzi;bF}1=pJS557cm@(RYVAC4_9M^ z$iB>1k)y$b6?4Ftrr@&7`NNoN`#trT%sP!N0`kX0DH78{5x@^~q8tw8h7{K7sxwfA zR&5cYZ4RSDTlY*vy*_7ft-VP-ywueO z2`RAS^&>QSvUCPfd9qOwV3I=`J=O+G+&Z)VY5-Lah2sYOWg5CBBi6gRjP&w8q8qv? zD^U^+#afcS7H_jLPhYAU9X{h*+0wVCwjN)T8lTOvWEGK;RlvnTp6{GY$KjfZ;K!<$FBF@?O z$)}ZsijTdU`xMjt_Sz8CJXu0uK~jX^MVJ)IYW>3eb0U!XTTBF^PNB&*0k>uRT~q|H zY=4JQbd78>zM9vWabjX(caKlqm~@jKQ+eXu$Z^CqK+>PUb206Ruc;~=wdgAF$zj3^ z9)MOzldh`CDL16aywb^ogCU7@M~O{_oHYgeRRNelhtM+OqcdV2U&t}p{m&o(-x7)f z0`QGDHp)W1{|SWbo4*B=XMe0N8i8)Qs)H4PjrE-=z4x00Abm+2pbkb^GRigG%uH}e zYF9na$+q%8Z@Bf2nRGy#jX&%t(O~ZWY#tBXlRaXt!Y)y%$*hfGalIsO|RKqF=2Q^bn4C^=SB^o_%Ss5uOQ7$QJeH#NBp? z;nmYbyzb&x+14xOE~6^%(t0AJ6qsnoMCNx;F6t(tFyD2X$ym-U$l1vZkqi@Ks7v-gU?KS(KB@@c1?Z z!3B&A$U$&!Gli>h&G4!>kLzr0LXiL+Dba?PG5CWr*Hbi*DpOO z@^t9bQGVOKwv)SbX!>b8bpPVxr@2j1-}Y6Br(*lp`o~!l_jIAP`;cjK?&ie}%KQx% z-1o`0E-Sit$YcmJsk49;WDR?_&2-1^NS_ODrC-Mk_;g?m4 zCVe%DY6_#Nv9>YEgk_X(JH1%quXs@bGr{Ph;4&hOfLvuSttpIhK655sk0S=$4M2In zRB00w=;wrnPs|1l6S3v6kr7*jfl`FcA(Zo?Q9VcwVO+VCHaa_~@$Vid;JBQz;CbQ4w?mr){ym8p{_K!R)rx=56xqfEMas; z=B&Q^ORCBeKk^4PK|m6|H1|xHBE=TxRD;tY;Nml1a??q*Q~~ZDod?RFWco>T`(;-3 z_dbG~zY`NChA&rqL%^;l`!UdmY!MJbSoeYZ@mo4^6#R!ZFKH?rqXGovQ&V?B#~tD| zo{TH_12~*MzG*&Z$fXGUS$o62ptGzDIHnkMI7b0JYT(SvpO z%!BW;%_n9E%eff!o1Pw7(7Q*DFkpbsF-$12GH^=B_#Q#NtY!HT8`DdCu`GL;%a1RI z-0iOK+E8U%j%SunQb-udM(qMLFS3L|1&IXK;^PaDI3|)rD;5H&5HIPp<$F&%1@@d1 zz&9HyM){dALohZDwGWu!f#sFCsF>Fw1*hb>Xf0@BpiG>Vg@AkL3y0WhwT6lVrWB@z zmi%pMnuZSIRsUEsrFN?f0}mz=#yb4J`4DMeEU{+M5mXm!oHN~7==d;ClNz&$IbYr&+q_@yU7^J`%XG z2Pblbe)Jj=6@F4}Ff5jXWWU<}OT#}_RZNHB5r`rfFxyF-`L4JX@;qT;g6*u2;Qw;M zsODRw>^GC4DKZFZ%yV}9ueYHhZaG(s%Tcegt1=+-psu^n`{tUVDNki-?yRn!p;a(( zHGjP{=#0T44)DR!9-0UCV%2g$+MG9Z3!wnwHdDJk`5vy$ivGUK_&Bfy`q^|Xnb+qY zLECMj3CLRk7Ap+Uv`zOYM+JgBS#(=OnI>jd7tie)AGE?n)1(dgY{GwT5u){>LZIgM zupA#evUc^`B6P0WtWX*Dis;3Q0kA++SMjN?M>Zn1r>D!gh#egyO6bjAie8z90h`9t zTQIOC0!`eu|5>;u%hG1kf168c36Y&5{h(#z!>4W(OHZzF;u}Id6q5oxvgulDP3Ed~ z!TQ5&GUS-*CAnA3B`!T;G(benV9pA>-a zJ+v4O3g%GwYn$uJZY+s&fJ$h`f?+G} zYo(ts6zrxo&SNAO9Sjcy(?4RZS%T0L>lcliiqnAeg!OW~IOP9h22hsJFGZ7(8oSDM z5w5zJh4h~{$zfzG*p&aSOeK41~kP=qhNiU63yG` znZiGU5RB~FYml7u3WAT-dJq_obg);ir9u>7BwserFS|=D%rYGb#*tj()@ic|6mlK4 zrBA-)5_{}a5_ci$Cf(4-=)Y}UBi@yTyfErDp-PV9^vouum^1JiZu#8FJq~-LVU?%g zktUTew_YGe1s?sgG)#Z+=A?CD9SH)Vy3Z7c_hSpRJ;9*j0@cupQ%7t|W2Yy}2Vyun zuBF#(n+TGJ7ML*{t3VrkkX2IBOHnFnvR0*$g}w|6Z82(rrR%`JEyge~7I~hGq96nX z>Ler91(J=1=nfDbM64g#_M(6HxghOYjO|l9RP7@-@s~@hUFhY%Np3AP&*oxVtt(*q zedAMG#7awA-mh1SD$0SaFmAoc7L4S(0UDoD!*I}`JC@x|LZ7>L)0O!SYopWcO^ve~ zm`x4DA7FMy7bE#z_5Q+GmntlsT_^`%IsZtoT$pu0|2n zPzC*hJBKQAcWK>h%t6ySmfElkNNa6OYD||EpX;qog9b;OW{r(InO)H_6q80;@HzKG zk?-0FaAr#8g=?xRHUb%If1~-r%d){c@&ok5qlF3wh#aDGL`hw7@60BEWOrrQq9SK( zH*oE?PB1a>-w@IDh(BDLmTBf`A@~vQnw*3jMafMz%B&&`zzk{$$8LUd0c1W;2yG-? z@&KNcnA)+9;*rf0oJbqgWN&kXyu!*J(p|eq76q2hhuJLaM`H1u3<*>gkl*!ZXg3Vq z=?GxVi4gD@EKQ4@H>RfgXlWovl)j#ij@k!u(3i4Cb-xznJ*jxqozX@BP}*^0VFc*w zT1HF)&*6wcPcVZSelpIiQkgt9>{p3hd5I6?k5uuRSO8_0(N-b$#&U@Hh}0hZ=F(-Q zU7uL`Y{tRP9}hqG;ui=IA8?POb6^|+4ITq>a_KvT5*ZI6eD_o@q8E~Ub*UdrqSIF= z(R=v{`0`%QNN)AjQ?8#QB`eO5n^HA_H+OFLCqMDv&^TR!dFe6*QPS7nnBeb}%i087 z@>TvkAdN!0Xszb=JS1UxGK{8P2jE^*72A|P2bs@0!MUd z(vBQloDgGo(#PhkY$R0meCk)&PO6xLp`YFj9X_2SCerl#D+|`5a$Z80)9dqi z^t?NX5(s5vLY}E{8r3FSGfhaLvLTkcQ zG9_x0nDjgL{(h5u)q^suPojjgcJeS*WIgf*945pOeRzyA)4pdTV3YN6H5PYFPPfi3 z?S@XEh9ZZ6fTJh3Y`CH~gqni_+nq@#O7G)!T{(a%RMz^F*F%Xa^H6&3((X5k&oNk= zxYsx5r+GdhVieQ12f@!)zzV<&u?;hoW=Y3J`;pkGxxZl~f@+{e_-`ps=t(xHabxpws3ATDOIR`*7;! z8%y&KK3)9}ej*-KDs-UdJ8{j1zC_}8ZFvzs#vI-wx5Jc9+lOy;RXtYYb!#muci)DD zj`V1v^_Lx&Ce;KC>vZE!KC~E!Cd28x zs;ac>r%87~bn&Bnuxoro>$-Mx?9$_>N|!(5l7$fGfR10s2|C;0POJX$aq%Wl6(pn; z-O50S29u=5Nw;+6%1nuFk=elxs{t|o*xFsL53GrnWTgr~Y_CYA2AwucTI#}^;P4!T zTA-NkbpL3~*pS&gnt=F(kwIBnQ6xVgPx$KWk{mwx1$vG#wNr(ov4zmGMUp);*^=NTqY`bNq4MvRLk4~$Erldn9r8iU@U#bjLI<&mQrO2%y zWdOrzM$lLv2`QK_)o)u6L57(aY!>tclmdGO^Pi6b{e_0g8J4~rTls~gV0UMpOV|Qf zt?%s=yYC{?wsu1TqQJ|2Uk(__QTZ0);i2wLNJp-m6*JT#9v+Djjae>gjeMy>i(BS! zdm54w+7{u#fKPoPkCkFRimr-5yt-1Cb!opgu1_2^IVUB?9Y;W+w(N|6(;#NO3jnxR z<&K~T6BG;)tTIyZ2kQsb(Az%$Y{GG}1|v;FSI3i^BQmb}@W_J4x2~YPsXN(SDZW{R z_dr~E>#SQHfYz+|WoyA=~?A4>=+q#l&!N9LTV?)MQvh&fecg zh^a_iZ^Vl&#w+ir9&fu$hrQwN^oXJLbkqC`26boWn*7&@M0!6d15~FSY&k>-PE#iJ z2*}A2()!bEtUrynxuOWskWY1D8;X;x%{cLW(jap+xe1H>qa4hj|K zGN2IcLwVcrb~8G`6pN6j7Cq{u8+J&n<~u>&!gamem{8557@H{-nS0%;$!%&h8|s<| zTO8v{TDF?fb|r~SB-ts32-rCcr})}7Y&QSqaM6XE_7Tj7T+ZGFFhQyli?c+Sj8>k< z36i_LV~wc~A#N)LY+qF*V2nR~l$hW84l{0F8dvp08q7_Xl~mLUm7E;KJXSYLf?>p} z!Wk`+S!)*dLZFYb3~BNQP!4H+QDE#4HU^QfJ;}+j$18=Waqv*xuJqe!op@B0ezLYj zhW@>{dA(zjP0%4*&AZ1Rty(A@PIx(b16A&yD$UF)YT@@^OspIuXZj;u2H1SE^;yV~%+VjaxO`Yjlt1@&C!0Ll*&hIcy%6R)RUf*P7IICwj zmm!^>N{a;3D8kh0O{`tP>DEgBs^zKcocW-PkZt{bK;p9uTbZfJ*5v|d3^@$5eT?2R zEjEYHq4cM0XP6CR^ID;PUny-PPFiD7Oop!R(z!gaS3a)qNzr>>NB<@3OpToSPPw#sno&?ma8~!6G${KMa)LXgV@Z)a}by{-_QDf!D@E1^s=p$~smg zaj$A_nlvKU&y3l1=BN|^b{MlT(dK6#WnD`g6r7FtKTy3pNuK=u>KrGZVHq8Nxu z4*xdwO`^Pd(tc5aNj!OV^p``Qps?m9?}Kl;+f^D`G*hv^faA8yKY{9mS0DoMvP9Joeax>_SP+fFZ=NHv`roBIc)Gkc5Qw z9F7C(v4f>S*%MAyxu`OtQ$!(#_iQdNno8(@a;}rPAm)Y z8`;Tu-C&|w@&Cz7KLSw!aq=4zPTA1V?U@5(z}%>hd|elK3>>&HkiTXhLzL)w|46yw zM9>l=0)fFw+PP|eRgFN&OI!-d;75GkNokhFWQgz)fTrgKB7|E&N`Y`> z2uZ0;B$#N;-TPveT)rSO=+~f!lnf-qIk7(?#x_!sRPI|MOp(&Xqs&5eFi-lrLIifm zMDU6HkXNc#?TUIc=f(u6t= zmIBdRbqh7HyNq-AX!YjHpt@)9=0%ARpZLbaophESve?YdkXiRxc@n8KBY}0|;J}Gy z{?^%1asG+yAN;xS!UOAGJZ@!-?+_$*8BEahasTuFPU@@MraV7R&_L7_ktk&CYkN#c zDxllEqkMHM=L?}4OaHOX!zp<_+jHD6iQQwu&0$$}Pw}Q2_tOTnJ70+R1uixwW8K1% zSz9+3PYb3?qrQd(OJnA==K@&y=FY>S=Ao6(u8jT?-2Xx_pCd8eA`CCil2E77`yoLT zos@>2G!ep-?oKyj_hpKgh801ja6OM&*D=8n`$bxLCQ8w82Jmyuzl~54T}`@pt~{#4 zs9YeRI*e$tML>xsUi9q#5)_a4jdDcV(Ss*~W2+~i=r4H5)1>H@M&g}K%$`0WvA3Ii z5|iB)BR3%sqT2MTU9gM3U12c}F#7FLeOU@+ytkr?Q(~sN)sZwZ`q2`SRBgjd^vi8w-H<96n z%zWi?N&wS#=^MU|r;jJSWUz`cWc@Bn8{+o?_linHQGSRVIjA!2QLT$hyI_g^QoquQ zxgjXHgcxDQ2z|+g!;GO7HqHvQ7Op;BtzEtr%RgFTiALSHSZAZ-myfWuF-O z<|Vfg(+32Vqj}98YL0@75u?X&IA$_k9{f_Wac%#{$-Al38dhptZHCmbMy+CXKLRl!dx)eT za9JO5n(Q`h;4Kl>qyiNNfUr>Obhl@S5*BpIV};UHqj-9^&3qvEqzw|OGwqJqNf(n1 z;@ULHh;(2~*95JDRWMlfv;X_`F-n9>q?dm|#@PK}p*HZ_|DqGlgIcqhfKwa_qvs*YKFNhodL$e#ohTf3-0KfM{^iJRL3qIsl5 zLSdrJT@~#Bh3$X{z2jeq4?7GWGLfsrjxB=E9=Tr4&ymtk8Wfz2E(GX4TzT=~|it$-kY6S$YMh}+o*>mbS5(?$_U39TB8bw0qx*f~Irog&V?`h6i z-A$c{kr&e$MNG%t$%P$u28`&t!;npTQ2} zxM(c3Q&1n8)1L5Fa7|p@>_(n0g>x-Hob?Dm;`0mprw^>Ub`y2;56myAAObU>n$YKm z)Uv~x#G0{~IH%_=5nCn^+2c6NlK*+g&~^B0WzldGTzYx2^|xz+Vhz!22X3R#{iYe! zVt-ZvY)9YuptOvfX50ig296=MVyv!3a^MVQw^^}xxrtj|^DOvz?K39JFjk_|bL!H> zoB&$GShhe$JVUc&VLW7G-&3RxRQh1xH7T>Sez|@oj@~Hvra!h>A%@&ls5bbUfY98^ z1rkW8ze`Cg&cHHx=HqoWcL*LPK~NVMO!1nD^W?wNN{n}y_?tfkGpclWwrP=8*wZGj zdS33DPHZ(M`+M*jY$I528;FtT$`1kL+GCvWuYvnd|<2b#N?pCF;(P#y9KZicKHl zF%mQ+aKRlii_TLTE)in=%>CWFJ16%V%m$g)+p61Q5VMh2n06+XMA^yGL(6YyncPmY zrzw+bl%pbE+2!C|mgL}>^wJH4|Eh&{%xo`(EU_~Z3;ymTeSiY{BT~8avpk|r9kSBKCSRCnsd_N?QQ~2nQJud8A7B--C zg}CyC0(Y#<#)CupMEyROX4U-g7)29>iMtM)jH*9Nsy_9f@8|wHpX_!jHwuW=gxAzS zb@wp3XxNiuB)bO_HBUQ_$;NtUq-AQ%7JrK)8bXS~k-KZ8u1Cqq##p?<*@)k8SC?VT zuo(#3#n}Zx!sC{;BB1%gsf)WXwGO|biDzk1c&Ytku&&NfAjRS_YMh#|Sd|9s-F%fO8XfbEs)+s?_SfLBX3_>v2-`_! zTIZ+KOC7|u^-jD0H4kGFad7Vi-q6#x#|x`d@mC;}2$YK&vAlGsn;u|K)dA|uw3WNs zV35P9?!fU+TbnTbAif97Wy}XLyo3=-H7GEy=m0cA;2jHRQG+(sIa>a9e;>LO;K|4) zc6j+Xh5MHU{+^UA??7$+-`TGOLt0H}(VWfwA;s65;X#sYWKhJ;hJ>@aBq4zz5%(|w z9Y^^j`~xFxZX;UMDKe#aTko$S2aQvm7qyI<@?cw>zn7~-+`6#yDanNR$MHy$)v<62 z8teTMOIZ?(uDfvVcyl~y`auW~c)b~$aZ&-H!P(|fW5Fd^{)~MFRP%TAn)+r_pLzoy8#x>Y7@(~1x`ceQ? zlqP3+;*Sfk2BH_A2=qdS5b@(R)7=BIX{^QZo2Pto0yr(q({qlI`)FPhaFZ8Ah^`V) zEjT>N{MFue$hC39z)+>hwmq}x@wySeSRATzOeYLmO(j3-GUP~7QlKnBQAlv%0|*t> z>C>B%Qu3A|+HA#&G$V9iw@CE~%wDqDsn;uwfivwJOkNqLVkedk}C`@_pG2^B@9BsNi*3*9RG&Cr2jF}FPd~N z<@6J9=-loaBzG}brHV7slV@uD3(3^6DzI>dMsCDJqu35XmtZ3sTdWfWEF7+ zz%idQE4)oOcN~D^@?)y3)>UH5U%TrN+*Y*ld?G_#)wj3O?i&Uw1oX<6vqu&gzNC z>@xfkR!VN0^sV5TTTI5>3MU^Jv z9vX7)dnr6wuidX8k8!c@;5%I+z1QLGn=#gLHu-F(LI zk9VA9)xrZNGt=vRmlSdAJw-HNTXf)>C!nP53OQbU0aA_j~Z1I&s5Gu7KNk! zAmda|$eD$xFDc6I{Bh%IrJg=^%*2Hc%99-lyuj)xyJZ;XF~eg2aIL#aXEoUq7S7x$k3bqXeU3a0Ju}8*S z*Il_2D~KOl$3vT7J@`MM83E`1*I3#YyPLs!j0Fk~=J#+Tf-qx=0$ky4XBeoce+@Ua zK0iwN7+XJA#Hj%Ozpgcft{&KrYW{5(_i?exl3HB1&3O)Ub=2CLHMDILa27~!TVID% zRQ%DA>^FX=>;Y5kTY_srOCs{*_S|y|+%(W}{5bX*;T7#8eGVep8;BQsX}5f~fb^{4 z5bD!i{bZh!pOAnH3}dCYj>jk2((maBv5M-5gH)##?-#I0_#8H}J(YH1brH?ycw13h zAGUq9oRx3Xy@)t==O~@UF5H>f{rNP>oF!y-282PpN~2& zyVp|xx6cPMuDvX;3|)SZ*HMK-q8=b2)(Y^GZq}< zbmEKQKb!T-f%D%XzppmFIwR_{)GrsDkzL8h<$~*teTDv@IF;Sb;Iv!M>(4C@g5L}F zT}`mBYu;(`H)S&-FW&*}i3|G3Tp&gzT>c6*4Y+onD4no@_nokM#xGmfUI;q~QFxH7 zETtH06wep)9Z@XX+yU6iSy?LSOE*QbHZi%^Wr_M6$@#=mh}qoo#r;NvEtW&nNb$9M zwAd39CZP+Mfm3WO+?}i1s=U_!=$}!?qu$D++YmD_@ibUq*03$+AUWq}9~(q=P-f2h z5JG)vFJJ`|2MWQNV0wxhn8M|aU!M_KfW6McuH!pn+{t1UR7Vsh{6y|+hRf{HouL>3 zfhCqecU^ZmwQLXGYSjHvIcD;WRJ{$%)x{13Ku^|MgmAvtR{JhHr%TR_r05Z+jA!j4 z0*J1x%C;i$IW>zHpCMPxSs0|}kWp*Tik$%Wwu-@p0Xs?CJnc3=W4}}ANcL-Ppj3SI z_Q#2-uRpG=?1?d9LEiM1`Lrhuu1|@iY0=Q0fYP-kxK$FUTlj_JQz=%wpvl-)k?EJm zIr^;2(7W1lQM+6W458@n?z-%j8=VaPA8Wmu7Hxm*41EJhY13Vy#iN#qUx@csmfn#O z8>Uc9Ae^s)Was4s@7*n8=9*{7*Hv*pr9@GzJh+rz)CDr?dra!?p*Pn9N6WZP2KG0- z$aoixTWYZ-_AwZ;(B}L9#u$qbC3Y?YPTdC>u>1}^X#WydL#?@ZvTVc-Y>nS!u6Lq} zGxT=0Me;&LZdI{{`r!+)rDWV9rBg$UIfX@jsO;_2wPB0TRRwbGEh1}bA>Tv^eJ7`iY=%8rlg=GpDbxt;FV=;vpN;WB#n>ca{fALrT(1|c8~3m_lt z*y%~q+GB+g-5a@i&>rg!a~p4bl%|GKLr>w52< z6|6I~T?sk=T%%&|S}DEmfsy~T*6@w|f<(-PMuDFKW#wEJ!%Zxp+|x0H1B#A=U@J(b zQ9~D(xDt|2NkgY3lH*CCX&{Q^P|AO!s76> z-=F#G4SP?H<1T8jSGB~f+qW6Ak;iZzK{~cVGkD}MJ744mpUfmog3WC20)txlQ-~z= zne~dWG>5lsm`&0t=$P@D`f3Fpz)42U2Qr}|P7NB*gr96~A(pa?M50I*ZW4q3gYysx}Fl44fJp4+ON5@3DY+1eZ-#fe} z;ct&xmvSWFT@f}O7OLwTDBSGAHnlAOo@O|=wjxI?+q`$~{~%Xs_vUVpc)XdfIHlZq zim_`>U-Ey+X{@y+kLdM&|Mafdbg!#Uhr4z$nSaat_F8_e z2MwP(qd`QI^HTKi?KQL+G;yYB<)!=D1dR{titUmKsLwuFXPLkmt0{ImN=FJmJbD;N z-LeL7@PZ09I`>__BLQ{iQ9lVrRAFILg2#t^WiUkjnxdDW-*L@M)OUDZ`~94$x6e7E zV#AFks{CB3U2^NsWnB%!$@=<-$Yke z2t2w#b))?r^VN7ZH>H#f3z|=-1uaZ4+c}8XW1-1rAOW5h285=5WVYF5ZPQ}yj2YZ| z&WBF>`}NdX9KM~6tWVUTB8CCtBc^g${3FuW9>DnqrS^hF?jXZO>ud$MhZt^19$;;I z1!?K}UZn>QStTSWDc}Z-d!z%QraS9!Q|UN~?VSvLzD8!P<;N@9iou2a*MqF;e8Zs4 zG^Cx2Uk66`1$N*!bX`axH>Vj1_rp&}KXmQh`n2-zCrw*xhHBKsfa-Z}4`P0PhyU2` zgIXZ}Abg8h-H|v9SUJ8=sB`hfCk=FBQmc1_zR8cTp0CeH(y&Y@ zW6?mGRSx$83snp6G45LLEiZz5K&|aAx;5;2dP{9KTB-1+}8box2<8VnVzr@D3zsYxeWMZt8w+7={zFBJN+C zE99deovi#^BS`(G-CLAxv1(rCre1!D6fZHfM2m|hIK`n&M`D69ZC1zad zu=u77(<7hbKUU$;>h zo)k57@7N(7{Ho(Z7w?dQ80|s;qB#mAV|NUligi#IK{J+GLblv4N*HQPJ28>EVo`s zuZdYh?t(IY;OJBX`_&~yNwRbn0hogu?rusk3kE2BJbFroX;04#an3jc5Pte@1Bwu& z|0ElBfo=xB#C&sa7xB%=b}Z~rw?%GtMD!FqIcMQez;ST&KgcM!&!W!+TGGkc#5eZA zOy0@4yNNp(X9oE0@UrUFT%q)&Z?Na7Sb^ncmejOe+?pl>aRI&}2 z=L=I*KSaYgeSYXj;{NnXQWak{3s#wf{Is8!%g;gBij9uxKM0pLE@YJ$})E*JZFw9EeM(bvV4BcT-lYEj&6>(9(2DGzV#A%cV1>%7sr(}1x%6d*#cSnD#dtL$v#e$SPoSPFy4lPy-o83plo!q;`OWX zhPPwF1e{9|b#-(Y_;G$PtYQt4c>l! z_omC{JH_;UIh;{{?x=Z(E_hq}+BstUkF|5^u7nA+ZEPoaqsuhj-N8p-af+up};DRDC7fu+;{vsmM)926Id6+^Hfq+lE? zM(=feqz=+Smt4^LjwtK&asI@YZ*>nvft>3IrbOJ%K8oaVbKUq4Nl?;+a)@RQA04o^ zwj7~yL%?sg%v?RmtHvk3`vR$zHJnNN<9q8Ktj^ zS|?n&%db|ZJ>jIMhz&$4+;==4S{cz{T&?}d@APTIj6KBy_r!TpG%EzXLH;#fhc}T) ziw%}ws+$(oUg=K+APz}f;n@5uYR!V-9`Mi&+;k_$cOe_%1Ai$EmF(}LCL8fucpLsh zDh*$1Wj|5~-FxHRvZ788isNHb&P%7_Gx$sEZOzS#&!!_%2CZ`m;|Z`=^67sx-5y}x zUEN$g*#wMWX&){IWM2sT`1P$xyg5TB$2;5)RB`UToD~QPNmTWmD`@EN*S(eU<1~-V z@EX0#*c~R!as*M5)?qbPm>N|&43eB?UcB?WDL%H^>o2jZwd(4!%z)(9V0(iB{T;Je zg_ol*WAVWnWXms)t?=HsB_so$wVX*|uJQ6&>V8WRg&+eSTe2KGJH>WnFwF#|^Vi$< zA|2i<1-jrs0M8X8?2s6xc#eP9p%*ff^5$QAj6;HlycL2}&2_n{|5T(ynpd2s^h2$V zR*X;y`%9~5Tafhs)~BX8fO<`NXJ)#O2COd3j|T0zf9zZ~L=`+JB_a&+(bK>G_I7%? z{7%Wfa%}eJ%YWx%v zT0?$ZFl@fa4eq=C&wg0^!0qt{XS2XJ%%8zdul(I|5H}I~8^dW02~w*+IuPPTwY`ng z$vTFxOzGY=`9OsYE$tDd%SzHbiiB~#;q`Q2i-SDkx4OJUx;g`G>bI+BdJf#i|9}=8G2s;!_pr2_jk%lo3fc}s>FDclQ9(gHG zRCKpf!(@r>p{Ho(np3lHRxDX*jA@c+uK#2tG2_2V$pMSkq>kj-v^NbB3yc#IJGOjg!% z9ZO{cdj9qW@rm$w4aoj6nQx6YA0Pa@p6{Pm6Y90HogVM+Q@|DPKl%zCyK2EbIs$WH zf{hqzW)F%>@It(uV}@{@-=zg+mmF)NA5Wd>L3n|FeHcteGdd;2XX^6NL@3LC7sI_$ zXP|-ncp^4T3>`@|OX_6VD$`q8rJqWQgD@X=u0`64+s|n=>3{Jk<>8|wDEl7YwFfHP z8~lgz-U$E&M2hzvY^sN8`fs}*A4TE*?@@I}7T<9J@dw7&Wf!?C$gd2^6VAxZ1i31-kgx?eB*Jtu@eH@`kl%BluB zHYUVdqL9;rl5bhhQtrjbK?|F^zCvk{^Y8H7rr2xzJbd(;F^X0?eLpaTAw8LKyNWjK zTfPbZHzp0uVe=&H2LiHq4GJRue}hTW+ZsCje^mOi>%$LSGKt~+=LG|@gF97V6cBc1 zxzPIxby3n6Alndg*JoN`gO#dcm11&G`lWWlInA8YY9?l;I>t8JmA13egKeyCDrzPs zCN|95^O;B1=9wuw-U-;!k-K)ky{S)^_0oj(zuCTY!+P^CD$Mi6!~9w!`i&L-M)jw` zWu9A)ma=Qe_MMd%VDe}FZhx9=f~{< zcH=WsX!;Kz+c1}03q&3nGRc&g8PU8a_XIva%y4|j)iY+wO>>XUXnM5<|M`+_L`8>1677*zKN5GeQ4^#jpD=S8Kn= zIrFRj{y`gRtY^yd{b6`q*`_t2xCEDvZN_jJIMA3z-rjs9&m9l^Lnsy*=b2H47=K3` zXUR!j2J~?W@poRC82fKN4HAs3n0H3p7vh16b8I?#0Hm446Zl`D>ai?G?w)6i5B&VY zRMr^6@Mqh%`-E%mq-Oq%(Os-)_(}gc8p@vQ6=0CYb*&5HR41KKKjT*cON6rI#>RTf zCkHBp*c*Q!>6Y&Q+}eurI3TSNbVtT7TZa7|Sj8YQ!BnSBmEA^k=?GTLJ{l$vQIfSI z52YG!YB_Gxju)FY0{5UHm;3Mv@@IlE)geYwNQ5!tY1ebUGH^)}LLsXI_y?vX0PD3- z+M@0TrSI0xlu2@?qm@o;wLLms`--h4o8ZJ0tJ@54jE#twD;G)oWtyyQLO_8v; z3wQ?Mce)_SmLn_nnQ{i;?{pe@Gn~IiU&7||dZcQDPhX+$Ci^mir~>^Bgr# zSXYn?F%lOoG%mVM3HljL(e_vSQ1DM<+@^^dNaFDTt+=@fs-QNIQ`u?5rI!v^%q=rQ zC%~Z$P5W^$_(x%*iE9#Cp!*d=dzYU*nNKH6UX;&@j&}9#4znNiS|qq?e;O4=u*)!? z!4VbEVU1zrnJVu+(jGC&h?f=wDLpZnBZc`Hr zpJ*U2pg5uXUIF1nskx5c>qOxPJ6#nQ1&%MIES|7wI0x1(Ol)(fmXrdXKz;rAfEJIw zy6O&fCdfv02Egb$kM=n%rrekdvc{ayZ`x1g?aeE6sPGsD_ra>=%|t}5mprOvx0SX- zs6UkNtm8s09_bsK?oYwH1WQ`!hiPdfyCucX;kR3gARDV`uyLy9ZUZ7L%v^YK%8K(^ zj0uN{{zXtqP3$=ERa#~VKDa?R8JGn3M0FL{nMM`Wt`OX1Af~6M_*3x#AyTKun2soJ znne0!O2m8a6ghueoDC@6_k zZ=w(rx7%{Y$m0X6kF5f@70yz-4SN2;6bQjFTxalW)|FjT z>YDroXt&aTf{g8I9~kl@2d!WYBh6<;DvZ}Cv%|qHbWI$k0FGkG*Vp1s*w4>TUKBod zwUM_D=KQii(D@(zHN7`BFZ_B^W)czWyuvZ^eH*NkVQ9}r-GJEu#Qs**BGvFB28QBAQ_;FhPHV&9O^OI2|UrJW~cySrd}VGgHrqO2tCI zU|4D_O$m9K4q=`UYjE&*?*bxYm%aCgfdOxfCgVTd8b7zu(j6-e_S+x%+n@0JN8NJ;c;b4aAlml)73KK3r(8({1g8z z{qf83@@}JV3KAan-E{p1Ty$4Uw%*V&swb`1pULAKnTmKffOvXtL8v=I-b%xGBpO!r znUZktoGvS8G9DbJXtzcq??3gLN&CHbSwYgZ{rgAq{`0LfBO&y zpSsN;>jPxc-Xjr{CLozy!IH~y%qV7i&SbL&Q%Q|06T`|}c7}8atxi#DAnOFQN_{7{ zhI(!}tHKAa2?W$wNt*Qvy|Rvn)qC>sm-XqAt)_yKjYCvdWF2y=!EG(}E;{kva@iP( zuOy(F#PA9IL4v6m9(udY*Z5^b*aONfAD~w3p3=01d-+Va5iJ@vg^4h2L0LHhw?Omvbw;PZ$wlZmj= z!>_jiiICKcT!mPg@~_a1P*v9}t5k}8R0AEkHHPDTE9&2a3R?_67x9-s;W0Nha)kQ~ z+VES@h}ExRgH4h_JPq#s7GY_yXa>mC%%4=vPo^+jOqg5FF|kH5-5*dA_->6F6jz3G zUT%}zBg)sPLxI^514V6j?ph3Y+Jb{H3w3^J{*D;|ava0opDZY9>!?v+l~B(a{djw? zijh^SM*oIfAKqwkF2%JLmVGPGtlp!#mC+5j zw1)9AqX`F|i;3Es{K`C8C67PQ7h_BV%XnY|_Jd%#v}*}_aIRLzh>gtS8=~UJ4cd0) z=CpxW3YE6jS)(YjX-v)Wje;^Okh*@Q)QXWSKl2vH&5{h$aIs6oy=urEQhtd?uF#{o zJ~!Qm`CSzq5vJat2WNfta)iw!iFx^%A_M*98JAGP_auX~7x5SY#JI z3|3VT4cdR6v$8l)Q?RFB_&1Bu1;jyggbhSy!OV1rQ+w87>(GKY)Q8;gqMbPh+Njgr zp}5?4*Xn6OlK(CKk!9;z_Wmw8;PN`Sy|ZUUD5n&nq!d|%hbkb_C49(U;GbnnIv$-_ z5x0E{)`w_~j!zmstrsBLp2-NU%jRw^pF;wgumy?Fw9B#$#$aO+{4C$7Rk)xQoMsL~ z)WSz$dN@XOS7(jb3Y!6Wx9+l|AM^Hw4B8jE4~3`T*K5EnwQR>U+73;#npJ( zl=|PG$&N`L`m2zA;EzP}_o$cK)V_-|e3V2=#PhT23|S_P{=9|C$9oa#HH0V(C?Vkt zy=dNPf&1KCT^>u#&YS(p{2GU-y=VelI)M*CkL_upI-lokk**qLu!kIdH}bwA*dx4-Z- z2TUl5lTn^9ebN)>YE1SzYQkR_@ZE)hiFSIqzOyOH$?0W`1(YVDuaS!M**pvI+8 zNhRT0frv}2(b%sKm5&C9LHJwor-*LhrK|IEKKE32xx9?47to*4by^=o`bA6BLx2D_ zvO_pG%ue0_Dyx+mQit13OvUsN8B=eQMe2CvIrFt_bRr>;&xxK->HFpox*j~9?VX(; zh|PADxcC_fMUY}9x1hU-KVf4itZT^Z=0%h?@wwn>Dr| z^N`)2)=x){YygbcYeDXG3^@=!vP6eX*|HiKLWHXU*-&u*1eODC%c9z+Q^w4=N;;3E zb(4yD5vU?W1n%-U1jxSsY=aL5KDX`zD5SS3!$B^#e)e+ALfvegH)kY(SN`F_<gmy1#hhBE9 zR&FE}@GJ;reIm$i$YRdz90n=n08Z#6#Qn^%rj{XKIqiI7TREJz4ZVxQe##-j@nkK@GbKCOq064S68bg^;{4HorP6YLAr{W@}TXTvJtD-$#^X|5a9hYmu`R5Hj- zuhT0>?0Zi?6QrQ37Obj&_D8W_^HyA9Ai4`QW|%bZY~^yhYI=p!bas@$hPil#-}BmuWaLwU><`-KDb{j7 z#n9y`$J$P4pcKT|b~nMfTF{(x_x_XEeG?9)>`q0c|MOvBhfQ(Ufx{8<-X8*jO5yMZ zMPz?QAh0HBdC!6~9~4WaA(&v-ad3v33*3^7Yl++?ZG3)kptOlRCp|}HN>Q5s00FKXtwTw$-f=L2H%P@l0WQt+%5!B z>19yFfumLrYmR)Qe@jLG%|vlyTbJN%DHM9p8LT4wt8p&Tg$8r!sXslUrU|X}9xCcJ zvm{_&2PhU)aOr!z`USxCPCm^f$YV*+YM+w9n-7`H>X-Y**UU6Lw!ULh$P*$P<_-x_ znFjSfB8UYQqa=XR#gY8hs@Niq{CA*SHj~($<>e?#@rR|6eWY4 zcQuY6h_G{U3-2kX3=Z&i!pMZRVTv`&Q*P9CIYp)%pMQ;CP>R?akUa;baL43AYJh$1nh0=zqO-SYzj9x?O}C8e+N4++QDWCCIxJ4FQ{Vl*)E8v8gDqY~J70c(68BXfgS)DwK5uDeqNJfY-m=dbLIt`-OMP?~#M zMq;!3gscY_f*888Kv%2`QPMN{kt;`%og?Ze}7`2Rqacj zEC@qgg!#OVqTw%aPx5*^+;j)~VB$W_>=Na^gRR-)pbrUUbP*WkEb!=of4Hl~(U!>n z+^`OwH=uT751&bIl&WJYF^llzl(neWv?>xP%u3qVhk^SnBL)mhej2^VuEdAA!>A}B z4iLN?d$?`_3Fdn|S`{gKiAwUWBlsrCxk`y`>>B?8#^)54s1hkIq30;b)93=#jdcG_ zHH}a;V~!i8_hATN*p9UfB1_~nAfv6i7hy*%$tQI{NjKUbn}NzNRdyT5@A3a(0LQLb+P>+9 zM*QXRo%{ z4~L}Qhdwjet6bm8?jjR(g)O%r2yARw(l>WYN^~Aztyq(L%SN&zsw;CpVV%%eHzom*BTC>L`tw zA=H#rrgc^S^~iaDI)nN2bBD}on3br{$oM;XJag+HP2>-t5o`~-^x460na`iTZQb}V=>OPCi zP>RL5;Ou)XdbEf^dTc-&Dz(GfNX;)+~+g%?uK#ABri$68hn|@6Ao;j#-_wZ#WltojIJ#(wtqhkz<9s|QWKN96) zUO=dY*~JQfX8G!pxum2A$QxzMz&JfYQ`$dFh&-PQpYN`6-TBCY=g8yUs_mwvjm6rw zxTTjEsT!V`qi;);BA8CDq2YkP-l)bDp(_N_x8IT#d1$SkM(|@;Rhcno^xk2kdA=V2 z`eaQ5uUrvg#g@&4N(pog0?_#^&D1-pISJuW;wmCkpaZ(*9sp$jO~?eVy%Ryk#kHrC z3lzNOXUB_a{`ozjGQUQ){cFu=ybW}dGfW5Az!I}~bAIp5csVb!&Pj%1W+yn1XSyZ( zj8J0->UCt&MzIz)D5N2g<}yG;&}^MuM=2|*kFhxot7ATbtrg9QCinP+L8|=0d7WvR z#dZKBk*FmfiGmNWDPbMIC9daN>*`PkB0xAd!-5fzyQ4`FJ1t_0zSlg;4~dG7K^aZr zVR4>rT$&HH?XKs7K(Umt<1tE4)B8^si$=go>wSq7J)%q5O^9REsM`BGjWY+34aC zOxO=ToZKY#-sMKFwZ>NFtRwckctojEoCg)tstWfy#rnp^ z6-8EfG_BDLvj#xG2b7FG^cCQT=*!FJpAYD*ua$~KQNpKLI5=`@Nj@sxr<97#Alid( zVamEIU~}}~X8>lvq8P4ohP>ax_V6h$469X%wx*4s>)?j0VoY)eNnorgP35rBCX3q+ zSwm}#7_#j21OH~Xw&a}5D|Ew8aaZ~uW8cb`KTmO&J}r9S`Vy+^$PypP)VLuwI_VRG zh$(hJ9^ExKKi@h%pAsM?(B+UC;B0Gq=PPyfNyW?os!?rXu7F8;V9Y;(4d*vaXPPI~ z^QKRoY*X|{roX=iz;~0Vi0xv@qiz-J6=X04V)O%orGCCRXiDLU6W;Alg1&h@xd|RF z@{Uhs?XeQ^Cs6TYP0zgJx^qcCxD!{2yhMgAh9bH<@7vxXJ8 zPQu8t^a^6jpErFV)5sx)nBogPFk(CH;4R)G081Qf@!KYy(jX-`(|)@K2?b-pFf;^O za`O!f@vms>}Y=8Zbh`>LXVXYaEZwhdclVm+E+8-rt*{`lvVfOinF#8aA}72PE4 z#~R86fzfA@RTpNF_Y!lMe=MRxCkcyGBOz4xb?$0Lho$HphlpEmMu%%`@2+I}&7i;Y1Q;xfc zDlMyc9=dd>poK5?ODsiDg`3bwLKum6c_*jga&JaJttXG&O&^*GuyZ7RiP-DYYDCv1 z`tAVqUTOI(6-3T|8U6iWpc?0VLRtFhgLEDWFT`hX?Zz}oUiOd0<`+T_(sW&HyQ

& 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�^4Yj(W4PHJznmQeG%6_nLJ+? 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 h`O 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੝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

2^KLt84 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 CS2D8z literal 0 HcmV?d00001 diff --git a/ONIModTutorial/ONIModTutorial-main/.github/workflows/deploy.yml b/ONIModTutorial/ONIModTutorial-main/.github/workflows/deploy.yml new file mode 100644 index 0000000..7c94dfb --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/.github/workflows/deploy.yml @@ -0,0 +1,50 @@ +name: Deploy VitePress site to Pages + +on: + push: + branches: [main] +concurrency: + group: "pages" + cancel-in-progress: true + +permissions: + contents: read + pages: write + id-token: write + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Install dependencies + run: npm install + + - name: Build with VitePress + + run: npx vitepress build + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: .vitepress/dist + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/ONIModTutorial/ONIModTutorial-main/.github/workflows/pr-check.yml b/ONIModTutorial/ONIModTutorial-main/.github/workflows/pr-check.yml new file mode 100644 index 0000000..0f4dcf9 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/.github/workflows/pr-check.yml @@ -0,0 +1,28 @@ +name: PR Check + +on: + pull_request: + branches: + - main + - master + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + + - name: Install deps + run: npm ci + + - name: Build + run: npm run build + diff --git a/ONIModTutorial/ONIModTutorial-main/.gitignore b/ONIModTutorial/ONIModTutorial-main/.gitignore new file mode 100644 index 0000000..eac6186 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/.gitignore @@ -0,0 +1,12 @@ +# 排除依赖库 +node_modules/ + +# 排除编译输出 +dist/ +.temp/ +.cache/ + +# 排除本地环境变量和日志 +*.log +.DS_Store +.env \ No newline at end of file diff --git a/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/_metadata.json b/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/_metadata.json new file mode 100644 index 0000000..d906b97 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/_metadata.json @@ -0,0 +1,61 @@ +{ + "hash": "5368ccde", + "configHash": "2733785a", + "lockfileHash": "3ae99b52", + "browserHash": "26eaea40", + "optimized": { + "vue": { + "src": "../../../node_modules/vue/dist/vue.runtime.esm-bundler.js", + "file": "vue.js", + "fileHash": "605c659d", + "needsInterop": false + }, + "vitepress > @vue/devtools-api": { + "src": "../../../node_modules/@vue/devtools-api/dist/index.js", + "file": "vitepress___@vue_devtools-api.js", + "fileHash": "3cacbefb", + "needsInterop": false + }, + "vitepress > @vueuse/core": { + "src": "../../../node_modules/@vueuse/core/index.mjs", + "file": "vitepress___@vueuse_core.js", + "fileHash": "770ea158", + "needsInterop": false + }, + "vitepress > @vueuse/integrations/useFocusTrap": { + "src": "../../../node_modules/@vueuse/integrations/useFocusTrap.mjs", + "file": "vitepress___@vueuse_integrations_useFocusTrap.js", + "fileHash": "b915752a", + "needsInterop": false + }, + "vitepress > mark.js/src/vanilla.js": { + "src": "../../../node_modules/mark.js/src/vanilla.js", + "file": "vitepress___mark__js_src_vanilla__js.js", + "fileHash": "38aa2e8f", + "needsInterop": false + }, + "vitepress > minisearch": { + "src": "../../../node_modules/minisearch/dist/es/index.js", + "file": "vitepress___minisearch.js", + "fileHash": "f5e205a1", + "needsInterop": false + }, + "rss-parser": { + "src": "../../../node_modules/rss-parser/index.js", + "file": "rss-parser.js", + "fileHash": "c4c7877b", + "needsInterop": true + } + }, + "chunks": { + "chunk-LJKO4TMH": { + "file": "chunk-LJKO4TMH.js" + }, + "chunk-QE257C5J": { + "file": "chunk-QE257C5J.js" + }, + "chunk-BUSYA2B4": { + "file": "chunk-BUSYA2B4.js" + } + } +} \ No newline at end of file diff --git a/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-BUSYA2B4.js b/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-BUSYA2B4.js new file mode 100644 index 0000000..a7109e0 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-BUSYA2B4.js @@ -0,0 +1,9 @@ +var __getOwnPropNames = Object.getOwnPropertyNames; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; + +export { + __commonJS +}; +//# sourceMappingURL=chunk-BUSYA2B4.js.map diff --git a/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-BUSYA2B4.js.map b/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-BUSYA2B4.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-BUSYA2B4.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-LJKO4TMH.js b/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-LJKO4TMH.js new file mode 100644 index 0000000..6a104f9 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-LJKO4TMH.js @@ -0,0 +1,9719 @@ +import { + Fragment, + TransitionGroup, + computed, + customRef, + defineComponent, + effectScope, + getCurrentInstance, + getCurrentScope, + h, + hasInjectionContext, + inject, + isReactive, + isReadonly, + isRef, + markRaw, + nextTick, + onBeforeMount, + onBeforeUnmount, + onBeforeUpdate, + onMounted, + onScopeDispose, + onUnmounted, + onUpdated, + provide, + reactive, + readonly, + ref, + shallowReactive, + shallowRef, + toRaw, + toRef, + toRefs, + toValue, + unref, + watch, + watchEffect +} from "./chunk-QE257C5J.js"; + +// node_modules/@vueuse/shared/index.mjs +function computedEager(fn, options) { + var _a; + const result = shallowRef(); + watchEffect(() => { + result.value = fn(); + }, { + ...options, + flush: (_a = options == null ? void 0 : options.flush) != null ? _a : "sync" + }); + return readonly(result); +} +function computedWithControl(source, fn) { + let v = void 0; + let track; + let trigger; + const dirty = shallowRef(true); + const update = () => { + dirty.value = true; + trigger(); + }; + watch(source, update, { flush: "sync" }); + const get2 = typeof fn === "function" ? fn : fn.get; + const set2 = typeof fn === "function" ? void 0 : fn.set; + const result = customRef((_track, _trigger) => { + track = _track; + trigger = _trigger; + return { + get() { + if (dirty.value) { + v = get2(v); + dirty.value = false; + } + track(); + return v; + }, + set(v2) { + set2 == null ? void 0 : set2(v2); + } + }; + }); + if (Object.isExtensible(result)) + result.trigger = update; + return result; +} +function tryOnScopeDispose(fn) { + if (getCurrentScope()) { + onScopeDispose(fn); + return true; + } + return false; +} +function createEventHook() { + const fns = /* @__PURE__ */ new Set(); + const off = (fn) => { + fns.delete(fn); + }; + const clear = () => { + fns.clear(); + }; + const on = (fn) => { + fns.add(fn); + const offFn = () => off(fn); + tryOnScopeDispose(offFn); + return { + off: offFn + }; + }; + const trigger = (...args) => { + return Promise.all(Array.from(fns).map((fn) => fn(...args))); + }; + return { + on, + off, + trigger, + clear + }; +} +function createGlobalState(stateFactory) { + let initialized = false; + let state; + const scope = effectScope(true); + return (...args) => { + if (!initialized) { + state = scope.run(() => stateFactory(...args)); + initialized = true; + } + return state; + }; +} +var localProvidedStateMap = /* @__PURE__ */ new WeakMap(); +var injectLocal = (...args) => { + var _a; + const key = args[0]; + const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy; + if (instance == null && !hasInjectionContext()) + throw new Error("injectLocal must be called in setup"); + if (instance && localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance)) + return localProvidedStateMap.get(instance)[key]; + return inject(...args); +}; +var provideLocal = (key, value) => { + var _a; + const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy; + if (instance == null) + throw new Error("provideLocal must be called in setup"); + if (!localProvidedStateMap.has(instance)) + localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null)); + const localProvidedState = localProvidedStateMap.get(instance); + localProvidedState[key] = value; + provide(key, value); +}; +function createInjectionState(composable, options) { + const key = (options == null ? void 0 : options.injectionKey) || Symbol(composable.name || "InjectionState"); + const defaultValue = options == null ? void 0 : options.defaultValue; + const useProvidingState = (...args) => { + const state = composable(...args); + provideLocal(key, state); + return state; + }; + const useInjectedState = () => injectLocal(key, defaultValue); + return [useProvidingState, useInjectedState]; +} +function createRef(value, deep) { + if (deep === true) { + return ref(value); + } else { + return shallowRef(value); + } +} +function createSharedComposable(composable) { + let subscribers = 0; + let state; + let scope; + const dispose = () => { + subscribers -= 1; + if (scope && subscribers <= 0) { + scope.stop(); + state = void 0; + scope = void 0; + } + }; + return (...args) => { + subscribers += 1; + if (!scope) { + scope = effectScope(true); + state = scope.run(() => composable(...args)); + } + tryOnScopeDispose(dispose); + return state; + }; +} +function extendRef(ref2, extend, { enumerable = false, unwrap = true } = {}) { + for (const [key, value] of Object.entries(extend)) { + if (key === "value") + continue; + if (isRef(value) && unwrap) { + Object.defineProperty(ref2, key, { + get() { + return value.value; + }, + set(v) { + value.value = v; + }, + enumerable + }); + } else { + Object.defineProperty(ref2, key, { value, enumerable }); + } + } + return ref2; +} +function get(obj, key) { + if (key == null) + return unref(obj); + return unref(obj)[key]; +} +function isDefined(v) { + return unref(v) != null; +} +function makeDestructurable(obj, arr) { + if (typeof Symbol !== "undefined") { + const clone = { ...obj }; + Object.defineProperty(clone, Symbol.iterator, { + enumerable: false, + value() { + let index = 0; + return { + next: () => ({ + value: arr[index++], + done: index > arr.length + }) + }; + } + }); + return clone; + } else { + return Object.assign([...arr], obj); + } +} +function reactify(fn, options) { + const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue; + return function(...args) { + return computed(() => fn.apply(this, args.map((i) => unrefFn(i)))); + }; +} +function reactifyObject(obj, optionsOrKeys = {}) { + let keys2 = []; + let options; + if (Array.isArray(optionsOrKeys)) { + keys2 = optionsOrKeys; + } else { + options = optionsOrKeys; + const { includeOwnProperties = true } = optionsOrKeys; + keys2.push(...Object.keys(obj)); + if (includeOwnProperties) + keys2.push(...Object.getOwnPropertyNames(obj)); + } + return Object.fromEntries( + keys2.map((key) => { + const value = obj[key]; + return [ + key, + typeof value === "function" ? reactify(value.bind(obj), options) : value + ]; + }) + ); +} +function toReactive(objectRef) { + if (!isRef(objectRef)) + return reactive(objectRef); + const proxy = new Proxy({}, { + get(_, p, receiver) { + return unref(Reflect.get(objectRef.value, p, receiver)); + }, + set(_, p, value) { + if (isRef(objectRef.value[p]) && !isRef(value)) + objectRef.value[p].value = value; + else + objectRef.value[p] = value; + return true; + }, + deleteProperty(_, p) { + return Reflect.deleteProperty(objectRef.value, p); + }, + has(_, p) { + return Reflect.has(objectRef.value, p); + }, + ownKeys() { + return Object.keys(objectRef.value); + }, + getOwnPropertyDescriptor() { + return { + enumerable: true, + configurable: true + }; + } + }); + return reactive(proxy); +} +function reactiveComputed(fn) { + return toReactive(computed(fn)); +} +function reactiveOmit(obj, ...keys2) { + const flatKeys = keys2.flat(); + const predicate = flatKeys[0]; + return reactiveComputed(() => typeof predicate === "function" ? Object.fromEntries(Object.entries(toRefs(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs(obj)).filter((e) => !flatKeys.includes(e[0])))); +} +var isClient = typeof window !== "undefined" && typeof document !== "undefined"; +var isWorker = typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope; +var isDef = (val) => typeof val !== "undefined"; +var notNullish = (val) => val != null; +var assert = (condition, ...infos) => { + if (!condition) + console.warn(...infos); +}; +var toString = Object.prototype.toString; +var isObject = (val) => toString.call(val) === "[object Object]"; +var now = () => Date.now(); +var timestamp = () => +Date.now(); +var clamp = (n, min, max) => Math.min(max, Math.max(min, n)); +var noop = () => { +}; +var rand = (min, max) => { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min + 1)) + min; +}; +var hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key); +var isIOS = getIsIOS(); +function getIsIOS() { + var _a, _b; + return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent)); +} +function createFilterWrapper(filter, fn) { + function wrapper(...args) { + return new Promise((resolve, reject) => { + Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject); + }); + } + return wrapper; +} +var bypassFilter = (invoke2) => { + return invoke2(); +}; +function debounceFilter(ms, options = {}) { + let timer; + let maxTimer; + let lastRejector = noop; + const _clearTimeout = (timer2) => { + clearTimeout(timer2); + lastRejector(); + lastRejector = noop; + }; + let lastInvoker; + const filter = (invoke2) => { + const duration = toValue(ms); + const maxDuration = toValue(options.maxWait); + if (timer) + _clearTimeout(timer); + if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) { + if (maxTimer) { + _clearTimeout(maxTimer); + maxTimer = null; + } + return Promise.resolve(invoke2()); + } + return new Promise((resolve, reject) => { + lastRejector = options.rejectOnCancel ? reject : resolve; + lastInvoker = invoke2; + if (maxDuration && !maxTimer) { + maxTimer = setTimeout(() => { + if (timer) + _clearTimeout(timer); + maxTimer = null; + resolve(lastInvoker()); + }, maxDuration); + } + timer = setTimeout(() => { + if (maxTimer) + _clearTimeout(maxTimer); + maxTimer = null; + resolve(invoke2()); + }, duration); + }); + }; + return filter; +} +function throttleFilter(...args) { + let lastExec = 0; + let timer; + let isLeading = true; + let lastRejector = noop; + let lastValue; + let ms; + let trailing; + let leading; + let rejectOnCancel; + if (!isRef(args[0]) && typeof args[0] === "object") + ({ delay: ms, trailing = true, leading = true, rejectOnCancel = false } = args[0]); + else + [ms, trailing = true, leading = true, rejectOnCancel = false] = args; + const clear = () => { + if (timer) { + clearTimeout(timer); + timer = void 0; + lastRejector(); + lastRejector = noop; + } + }; + const filter = (_invoke) => { + const duration = toValue(ms); + const elapsed = Date.now() - lastExec; + const invoke2 = () => { + return lastValue = _invoke(); + }; + clear(); + if (duration <= 0) { + lastExec = Date.now(); + return invoke2(); + } + if (elapsed > duration && (leading || !isLeading)) { + lastExec = Date.now(); + invoke2(); + } else if (trailing) { + lastValue = new Promise((resolve, reject) => { + lastRejector = rejectOnCancel ? reject : resolve; + timer = setTimeout(() => { + lastExec = Date.now(); + isLeading = true; + resolve(invoke2()); + clear(); + }, Math.max(0, duration - elapsed)); + }); + } + if (!leading && !timer) + timer = setTimeout(() => isLeading = true, duration); + isLeading = false; + return lastValue; + }; + return filter; +} +function pausableFilter(extendFilter = bypassFilter, options = {}) { + const { + initialState = "active" + } = options; + const isActive = toRef2(initialState === "active"); + function pause() { + isActive.value = false; + } + function resume() { + isActive.value = true; + } + const eventFilter = (...args) => { + if (isActive.value) + extendFilter(...args); + }; + return { isActive: readonly(isActive), pause, resume, eventFilter }; +} +function cacheStringFunction(fn) { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +} +var hyphenateRE = /\B([A-Z])/g; +var hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase()); +var camelizeRE = /-(\w)/g; +var camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); +}); +function promiseTimeout(ms, throwOnTimeout = false, reason = "Timeout") { + return new Promise((resolve, reject) => { + if (throwOnTimeout) + setTimeout(() => reject(reason), ms); + else + setTimeout(resolve, ms); + }); +} +function identity(arg) { + return arg; +} +function createSingletonPromise(fn) { + let _promise; + function wrapper() { + if (!_promise) + _promise = fn(); + return _promise; + } + wrapper.reset = async () => { + const _prev = _promise; + _promise = void 0; + if (_prev) + await _prev; + }; + return wrapper; +} +function invoke(fn) { + return fn(); +} +function containsProp(obj, ...props) { + return props.some((k) => k in obj); +} +function increaseWithUnit(target, delta) { + var _a; + if (typeof target === "number") + return target + delta; + const value = ((_a = target.match(/^-?\d+\.?\d*/)) == null ? void 0 : _a[0]) || ""; + const unit = target.slice(value.length); + const result = Number.parseFloat(value) + delta; + if (Number.isNaN(result)) + return target; + return result + unit; +} +function pxValue(px) { + return px.endsWith("rem") ? Number.parseFloat(px) * 16 : Number.parseFloat(px); +} +function objectPick(obj, keys2, omitUndefined = false) { + return keys2.reduce((n, k) => { + if (k in obj) { + if (!omitUndefined || obj[k] !== void 0) + n[k] = obj[k]; + } + return n; + }, {}); +} +function objectOmit(obj, keys2, omitUndefined = false) { + return Object.fromEntries(Object.entries(obj).filter(([key, value]) => { + return (!omitUndefined || value !== void 0) && !keys2.includes(key); + })); +} +function objectEntries(obj) { + return Object.entries(obj); +} +function getLifeCycleTarget(target) { + return target || getCurrentInstance(); +} +function toArray(value) { + return Array.isArray(value) ? value : [value]; +} +function toRef2(...args) { + if (args.length !== 1) + return toRef(...args); + const r = args[0]; + return typeof r === "function" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r); +} +var resolveRef = toRef2; +function reactivePick(obj, ...keys2) { + const flatKeys = keys2.flat(); + const predicate = flatKeys[0]; + return reactiveComputed(() => typeof predicate === "function" ? Object.fromEntries(Object.entries(toRefs(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef2(obj, k)]))); +} +function refAutoReset(defaultValue, afterMs = 1e4) { + return customRef((track, trigger) => { + let value = toValue(defaultValue); + let timer; + const resetAfter = () => setTimeout(() => { + value = toValue(defaultValue); + trigger(); + }, toValue(afterMs)); + tryOnScopeDispose(() => { + clearTimeout(timer); + }); + return { + get() { + track(); + return value; + }, + set(newValue) { + value = newValue; + trigger(); + clearTimeout(timer); + timer = resetAfter(); + } + }; + }); +} +function useDebounceFn(fn, ms = 200, options = {}) { + return createFilterWrapper( + debounceFilter(ms, options), + fn + ); +} +function refDebounced(value, ms = 200, options = {}) { + const debounced = ref(value.value); + const updater = useDebounceFn(() => { + debounced.value = value.value; + }, ms, options); + watch(value, () => updater()); + return debounced; +} +function refDefault(source, defaultValue) { + return computed({ + get() { + var _a; + return (_a = source.value) != null ? _a : defaultValue; + }, + set(value) { + source.value = value; + } + }); +} +function useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) { + return createFilterWrapper( + throttleFilter(ms, trailing, leading, rejectOnCancel), + fn + ); +} +function refThrottled(value, delay = 200, trailing = true, leading = true) { + if (delay <= 0) + return value; + const throttled = ref(value.value); + const updater = useThrottleFn(() => { + throttled.value = value.value; + }, delay, trailing, leading); + watch(value, () => updater()); + return throttled; +} +function refWithControl(initial, options = {}) { + let source = initial; + let track; + let trigger; + const ref2 = customRef((_track, _trigger) => { + track = _track; + trigger = _trigger; + return { + get() { + return get2(); + }, + set(v) { + set2(v); + } + }; + }); + function get2(tracking = true) { + if (tracking) + track(); + return source; + } + function set2(value, triggering = true) { + var _a, _b; + if (value === source) + return; + const old = source; + if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false) + return; + source = value; + (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old); + if (triggering) + trigger(); + } + const untrackedGet = () => get2(false); + const silentSet = (v) => set2(v, false); + const peek = () => get2(false); + const lay = (v) => set2(v, false); + return extendRef( + ref2, + { + get: get2, + set: set2, + untrackedGet, + silentSet, + peek, + lay + }, + { enumerable: true } + ); +} +var controlledRef = refWithControl; +function set(...args) { + if (args.length === 2) { + const [ref2, value] = args; + ref2.value = value; + } + if (args.length === 3) { + const [target, key, value] = args; + target[key] = value; + } +} +function watchWithFilter(source, cb, options = {}) { + const { + eventFilter = bypassFilter, + ...watchOptions + } = options; + return watch( + source, + createFilterWrapper( + eventFilter, + cb + ), + watchOptions + ); +} +function watchPausable(source, cb, options = {}) { + const { + eventFilter: filter, + initialState = "active", + ...watchOptions + } = options; + const { eventFilter, pause, resume, isActive } = pausableFilter(filter, { initialState }); + const stop = watchWithFilter( + source, + cb, + { + ...watchOptions, + eventFilter + } + ); + return { stop, pause, resume, isActive }; +} +function syncRef(left, right, ...[options]) { + const { + flush = "sync", + deep = false, + immediate = true, + direction = "both", + transform = {} + } = options || {}; + const watchers = []; + const transformLTR = "ltr" in transform && transform.ltr || ((v) => v); + const transformRTL = "rtl" in transform && transform.rtl || ((v) => v); + if (direction === "both" || direction === "ltr") { + watchers.push(watchPausable( + left, + (newValue) => { + watchers.forEach((w) => w.pause()); + right.value = transformLTR(newValue); + watchers.forEach((w) => w.resume()); + }, + { flush, deep, immediate } + )); + } + if (direction === "both" || direction === "rtl") { + watchers.push(watchPausable( + right, + (newValue) => { + watchers.forEach((w) => w.pause()); + left.value = transformRTL(newValue); + watchers.forEach((w) => w.resume()); + }, + { flush, deep, immediate } + )); + } + const stop = () => { + watchers.forEach((w) => w.stop()); + }; + return stop; +} +function syncRefs(source, targets, options = {}) { + const { + flush = "sync", + deep = false, + immediate = true + } = options; + const targetsArray = toArray(targets); + return watch( + source, + (newValue) => targetsArray.forEach((target) => target.value = newValue), + { flush, deep, immediate } + ); +} +function toRefs2(objectRef, options = {}) { + if (!isRef(objectRef)) + return toRefs(objectRef); + const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {}; + for (const key in objectRef.value) { + result[key] = customRef(() => ({ + get() { + return objectRef.value[key]; + }, + set(v) { + var _a; + const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true; + if (replaceRef) { + if (Array.isArray(objectRef.value)) { + const copy = [...objectRef.value]; + copy[key] = v; + objectRef.value = copy; + } else { + const newObject = { ...objectRef.value, [key]: v }; + Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value)); + objectRef.value = newObject; + } + } else { + objectRef.value[key] = v; + } + } + })); + } + return result; +} +var toValue2 = toValue; +var resolveUnref = toValue; +function tryOnBeforeMount(fn, sync = true, target) { + const instance = getLifeCycleTarget(target); + if (instance) + onBeforeMount(fn, target); + else if (sync) + fn(); + else + nextTick(fn); +} +function tryOnBeforeUnmount(fn, target) { + const instance = getLifeCycleTarget(target); + if (instance) + onBeforeUnmount(fn, target); +} +function tryOnMounted(fn, sync = true, target) { + const instance = getLifeCycleTarget(); + if (instance) + onMounted(fn, target); + else if (sync) + fn(); + else + nextTick(fn); +} +function tryOnUnmounted(fn, target) { + const instance = getLifeCycleTarget(target); + if (instance) + onUnmounted(fn, target); +} +function createUntil(r, isNot = false) { + function toMatch(condition, { flush = "sync", deep = false, timeout, throwOnTimeout } = {}) { + let stop = null; + const watcher = new Promise((resolve) => { + stop = watch( + r, + (v) => { + if (condition(v) !== isNot) { + if (stop) + stop(); + else + nextTick(() => stop == null ? void 0 : stop()); + resolve(v); + } + }, + { + flush, + deep, + immediate: true + } + ); + }); + const promises = [watcher]; + if (timeout != null) { + promises.push( + promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop()) + ); + } + return Promise.race(promises); + } + function toBe(value, options) { + if (!isRef(value)) + return toMatch((v) => v === value, options); + const { flush = "sync", deep = false, timeout, throwOnTimeout } = options != null ? options : {}; + let stop = null; + const watcher = new Promise((resolve) => { + stop = watch( + [r, value], + ([v1, v2]) => { + if (isNot !== (v1 === v2)) { + if (stop) + stop(); + else + nextTick(() => stop == null ? void 0 : stop()); + resolve(v1); + } + }, + { + flush, + deep, + immediate: true + } + ); + }); + const promises = [watcher]; + if (timeout != null) { + promises.push( + promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => { + stop == null ? void 0 : stop(); + return toValue(r); + }) + ); + } + return Promise.race(promises); + } + function toBeTruthy(options) { + return toMatch((v) => Boolean(v), options); + } + function toBeNull(options) { + return toBe(null, options); + } + function toBeUndefined(options) { + return toBe(void 0, options); + } + function toBeNaN(options) { + return toMatch(Number.isNaN, options); + } + function toContains(value, options) { + return toMatch((v) => { + const array = Array.from(v); + return array.includes(value) || array.includes(toValue(value)); + }, options); + } + function changed(options) { + return changedTimes(1, options); + } + function changedTimes(n = 1, options) { + let count = -1; + return toMatch(() => { + count += 1; + return count >= n; + }, options); + } + if (Array.isArray(toValue(r))) { + const instance = { + toMatch, + toContains, + changed, + changedTimes, + get not() { + return createUntil(r, !isNot); + } + }; + return instance; + } else { + const instance = { + toMatch, + toBe, + toBeTruthy, + toBeNull, + toBeNaN, + toBeUndefined, + changed, + changedTimes, + get not() { + return createUntil(r, !isNot); + } + }; + return instance; + } +} +function until(r) { + return createUntil(r); +} +function defaultComparator(value, othVal) { + return value === othVal; +} +function useArrayDifference(...args) { + var _a, _b; + const list = args[0]; + const values = args[1]; + let compareFn = (_a = args[2]) != null ? _a : defaultComparator; + const { + symmetric = false + } = (_b = args[3]) != null ? _b : {}; + if (typeof compareFn === "string") { + const key = compareFn; + compareFn = (value, othVal) => value[key] === othVal[key]; + } + const diff1 = computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1)); + if (symmetric) { + const diff2 = computed(() => toValue(values).filter((x) => toValue(list).findIndex((y) => compareFn(x, y)) === -1)); + return computed(() => symmetric ? [...toValue(diff1), ...toValue(diff2)] : toValue(diff1)); + } else { + return diff1; + } +} +function useArrayEvery(list, fn) { + return computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array))); +} +function useArrayFilter(list, fn) { + return computed(() => toValue(list).map((i) => toValue(i)).filter(fn)); +} +function useArrayFind(list, fn) { + return computed(() => toValue( + toValue(list).find((element, index, array) => fn(toValue(element), index, array)) + )); +} +function useArrayFindIndex(list, fn) { + return computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array))); +} +function findLast(arr, cb) { + let index = arr.length; + while (index-- > 0) { + if (cb(arr[index], index, arr)) + return arr[index]; + } + return void 0; +} +function useArrayFindLast(list, fn) { + return computed(() => toValue( + !Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array)) + )); +} +function isArrayIncludesOptions(obj) { + return isObject(obj) && containsProp(obj, "formIndex", "comparator"); +} +function useArrayIncludes(...args) { + var _a; + const list = args[0]; + const value = args[1]; + let comparator = args[2]; + let formIndex = 0; + if (isArrayIncludesOptions(comparator)) { + formIndex = (_a = comparator.fromIndex) != null ? _a : 0; + comparator = comparator.comparator; + } + if (typeof comparator === "string") { + const key = comparator; + comparator = (element, value2) => element[key] === toValue(value2); + } + comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2); + return computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator( + toValue(element), + toValue(value), + index, + toValue(array) + ))); +} +function useArrayJoin(list, separator) { + return computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator))); +} +function useArrayMap(list, fn) { + return computed(() => toValue(list).map((i) => toValue(i)).map(fn)); +} +function useArrayReduce(list, reducer, ...args) { + const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index); + return computed(() => { + const resolved = toValue(list); + return args.length ? resolved.reduce(reduceCallback, typeof args[0] === "function" ? toValue(args[0]()) : toValue(args[0])) : resolved.reduce(reduceCallback); + }); +} +function useArraySome(list, fn) { + return computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array))); +} +function uniq(array) { + return Array.from(new Set(array)); +} +function uniqueElementsBy(array, fn) { + return array.reduce((acc, v) => { + if (!acc.some((x) => fn(v, x, array))) + acc.push(v); + return acc; + }, []); +} +function useArrayUnique(list, compareFn) { + return computed(() => { + const resolvedList = toValue(list).map((element) => toValue(element)); + return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList); + }); +} +function useCounter(initialValue = 0, options = {}) { + let _initialValue = unref(initialValue); + const count = shallowRef(initialValue); + const { + max = Number.POSITIVE_INFINITY, + min = Number.NEGATIVE_INFINITY + } = options; + const inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min); + const dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max); + const get2 = () => count.value; + const set2 = (val) => count.value = Math.max(min, Math.min(max, val)); + const reset = (val = _initialValue) => { + _initialValue = val; + return set2(val); + }; + return { count, inc, dec, get: get2, set: set2, reset }; +} +var REGEX_PARSE = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[T\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/i; +var REGEX_FORMAT = /[YMDHhms]o|\[([^\]]+)\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|z{1,4}|SSS/g; +function defaultMeridiem(hours, minutes, isLowercase, hasPeriod) { + let m = hours < 12 ? "AM" : "PM"; + if (hasPeriod) + m = m.split("").reduce((acc, curr) => acc += `${curr}.`, ""); + return isLowercase ? m.toLowerCase() : m; +} +function formatOrdinal(num) { + const suffixes = ["th", "st", "nd", "rd"]; + const v = num % 100; + return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]); +} +function formatDate(date, formatStr, options = {}) { + var _a; + const years = date.getFullYear(); + const month = date.getMonth(); + const days = date.getDate(); + const hours = date.getHours(); + const minutes = date.getMinutes(); + const seconds = date.getSeconds(); + const milliseconds = date.getMilliseconds(); + const day = date.getDay(); + const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem; + const stripTimeZone = (dateString) => { + var _a2; + return (_a2 = dateString.split(" ")[1]) != null ? _a2 : ""; + }; + const matches = { + Yo: () => formatOrdinal(years), + YY: () => String(years).slice(-2), + YYYY: () => years, + M: () => month + 1, + Mo: () => formatOrdinal(month + 1), + MM: () => `${month + 1}`.padStart(2, "0"), + MMM: () => date.toLocaleDateString(toValue(options.locales), { month: "short" }), + MMMM: () => date.toLocaleDateString(toValue(options.locales), { month: "long" }), + D: () => String(days), + Do: () => formatOrdinal(days), + DD: () => `${days}`.padStart(2, "0"), + H: () => String(hours), + Ho: () => formatOrdinal(hours), + HH: () => `${hours}`.padStart(2, "0"), + h: () => `${hours % 12 || 12}`.padStart(1, "0"), + ho: () => formatOrdinal(hours % 12 || 12), + hh: () => `${hours % 12 || 12}`.padStart(2, "0"), + m: () => String(minutes), + mo: () => formatOrdinal(minutes), + mm: () => `${minutes}`.padStart(2, "0"), + s: () => String(seconds), + so: () => formatOrdinal(seconds), + ss: () => `${seconds}`.padStart(2, "0"), + SSS: () => `${milliseconds}`.padStart(3, "0"), + d: () => day, + dd: () => date.toLocaleDateString(toValue(options.locales), { weekday: "narrow" }), + ddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: "short" }), + dddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: "long" }), + A: () => meridiem(hours, minutes), + AA: () => meridiem(hours, minutes, false, true), + a: () => meridiem(hours, minutes, true), + aa: () => meridiem(hours, minutes, true, true), + z: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: "shortOffset" })), + zz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: "shortOffset" })), + zzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: "shortOffset" })), + zzzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: "longOffset" })) + }; + return formatStr.replace(REGEX_FORMAT, (match, $1) => { + var _a2, _b; + return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match; + }); +} +function normalizeDate(date) { + if (date === null) + return new Date(Number.NaN); + if (date === void 0) + return /* @__PURE__ */ new Date(); + if (date instanceof Date) + return new Date(date); + if (typeof date === "string" && !/Z$/i.test(date)) { + const d = date.match(REGEX_PARSE); + if (d) { + const m = d[2] - 1 || 0; + const ms = (d[7] || "0").substring(0, 3); + return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms); + } + } + return new Date(date); +} +function useDateFormat(date, formatStr = "HH:mm:ss", options = {}) { + return computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options)); +} +function useIntervalFn(cb, interval = 1e3, options = {}) { + const { + immediate = true, + immediateCallback = false + } = options; + let timer = null; + const isActive = shallowRef(false); + function clean() { + if (timer) { + clearInterval(timer); + timer = null; + } + } + function pause() { + isActive.value = false; + clean(); + } + function resume() { + const intervalValue = toValue(interval); + if (intervalValue <= 0) + return; + isActive.value = true; + if (immediateCallback) + cb(); + clean(); + if (isActive.value) + timer = setInterval(cb, intervalValue); + } + if (immediate && isClient) + resume(); + if (isRef(interval) || typeof interval === "function") { + const stopWatch = watch(interval, () => { + if (isActive.value && isClient) + resume(); + }); + tryOnScopeDispose(stopWatch); + } + tryOnScopeDispose(pause); + return { + isActive, + pause, + resume + }; +} +function useInterval(interval = 1e3, options = {}) { + const { + controls: exposeControls = false, + immediate = true, + callback + } = options; + const counter = shallowRef(0); + const update = () => counter.value += 1; + const reset = () => { + counter.value = 0; + }; + const controls = useIntervalFn( + callback ? () => { + update(); + callback(counter.value); + } : update, + interval, + { immediate } + ); + if (exposeControls) { + return { + counter, + reset, + ...controls + }; + } else { + return counter; + } +} +function useLastChanged(source, options = {}) { + var _a; + const ms = shallowRef((_a = options.initialValue) != null ? _a : null); + watch( + source, + () => ms.value = timestamp(), + options + ); + return ms; +} +function useTimeoutFn(cb, interval, options = {}) { + const { + immediate = true, + immediateCallback = false + } = options; + const isPending = shallowRef(false); + let timer = null; + function clear() { + if (timer) { + clearTimeout(timer); + timer = null; + } + } + function stop() { + isPending.value = false; + clear(); + } + function start(...args) { + if (immediateCallback) + cb(); + clear(); + isPending.value = true; + timer = setTimeout(() => { + isPending.value = false; + timer = null; + cb(...args); + }, toValue(interval)); + } + if (immediate) { + isPending.value = true; + if (isClient) + start(); + } + tryOnScopeDispose(stop); + return { + isPending: readonly(isPending), + start, + stop + }; +} +function useTimeout(interval = 1e3, options = {}) { + const { + controls: exposeControls = false, + callback + } = options; + const controls = useTimeoutFn( + callback != null ? callback : noop, + interval, + options + ); + const ready = computed(() => !controls.isPending.value); + if (exposeControls) { + return { + ready, + ...controls + }; + } else { + return ready; + } +} +function useToNumber(value, options = {}) { + const { + method = "parseFloat", + radix, + nanToZero + } = options; + return computed(() => { + let resolved = toValue(value); + if (typeof method === "function") + resolved = method(resolved); + else if (typeof resolved === "string") + resolved = Number[method](resolved, radix); + if (nanToZero && Number.isNaN(resolved)) + resolved = 0; + return resolved; + }); +} +function useToString(value) { + return computed(() => `${toValue(value)}`); +} +function useToggle(initialValue = false, options = {}) { + const { + truthyValue = true, + falsyValue = false + } = options; + const valueIsRef = isRef(initialValue); + const _value = shallowRef(initialValue); + function toggle(value) { + if (arguments.length) { + _value.value = value; + return _value.value; + } else { + const truthy = toValue(truthyValue); + _value.value = _value.value === truthy ? toValue(falsyValue) : truthy; + return _value.value; + } + } + if (valueIsRef) + return toggle; + else + return [_value, toggle]; +} +function watchArray(source, cb, options) { + let oldList = (options == null ? void 0 : options.immediate) ? [] : [...typeof source === "function" ? source() : Array.isArray(source) ? source : toValue(source)]; + return watch(source, (newList, _, onCleanup) => { + const oldListRemains = Array.from({ length: oldList.length }); + const added = []; + for (const obj of newList) { + let found = false; + for (let i = 0; i < oldList.length; i++) { + if (!oldListRemains[i] && obj === oldList[i]) { + oldListRemains[i] = true; + found = true; + break; + } + } + if (!found) + added.push(obj); + } + const removed = oldList.filter((_2, i) => !oldListRemains[i]); + cb(newList, oldList, added, removed, onCleanup); + oldList = [...newList]; + }, options); +} +function watchAtMost(source, cb, options) { + const { + count, + ...watchOptions + } = options; + const current = shallowRef(0); + const stop = watchWithFilter( + source, + (...args) => { + current.value += 1; + if (current.value >= toValue(count)) + nextTick(() => stop()); + cb(...args); + }, + watchOptions + ); + return { count: current, stop }; +} +function watchDebounced(source, cb, options = {}) { + const { + debounce = 0, + maxWait = void 0, + ...watchOptions + } = options; + return watchWithFilter( + source, + cb, + { + ...watchOptions, + eventFilter: debounceFilter(debounce, { maxWait }) + } + ); +} +function watchDeep(source, cb, options) { + return watch( + source, + cb, + { + ...options, + deep: true + } + ); +} +function watchIgnorable(source, cb, options = {}) { + const { + eventFilter = bypassFilter, + ...watchOptions + } = options; + const filteredCb = createFilterWrapper( + eventFilter, + cb + ); + let ignoreUpdates; + let ignorePrevAsyncUpdates; + let stop; + if (watchOptions.flush === "sync") { + const ignore = shallowRef(false); + ignorePrevAsyncUpdates = () => { + }; + ignoreUpdates = (updater) => { + ignore.value = true; + updater(); + ignore.value = false; + }; + stop = watch( + source, + (...args) => { + if (!ignore.value) + filteredCb(...args); + }, + watchOptions + ); + } else { + const disposables = []; + const ignoreCounter = shallowRef(0); + const syncCounter = shallowRef(0); + ignorePrevAsyncUpdates = () => { + ignoreCounter.value = syncCounter.value; + }; + disposables.push( + watch( + source, + () => { + syncCounter.value++; + }, + { ...watchOptions, flush: "sync" } + ) + ); + ignoreUpdates = (updater) => { + const syncCounterPrev = syncCounter.value; + updater(); + ignoreCounter.value += syncCounter.value - syncCounterPrev; + }; + disposables.push( + watch( + source, + (...args) => { + const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value; + ignoreCounter.value = 0; + syncCounter.value = 0; + if (ignore) + return; + filteredCb(...args); + }, + watchOptions + ) + ); + stop = () => { + disposables.forEach((fn) => fn()); + }; + } + return { stop, ignoreUpdates, ignorePrevAsyncUpdates }; +} +function watchImmediate(source, cb, options) { + return watch( + source, + cb, + { + ...options, + immediate: true + } + ); +} +function watchOnce(source, cb, options) { + const stop = watch(source, (...args) => { + nextTick(() => stop()); + return cb(...args); + }, options); + return stop; +} +function watchThrottled(source, cb, options = {}) { + const { + throttle = 0, + trailing = true, + leading = true, + ...watchOptions + } = options; + return watchWithFilter( + source, + cb, + { + ...watchOptions, + eventFilter: throttleFilter(throttle, trailing, leading) + } + ); +} +function watchTriggerable(source, cb, options = {}) { + let cleanupFn; + function onEffect() { + if (!cleanupFn) + return; + const fn = cleanupFn; + cleanupFn = void 0; + fn(); + } + function onCleanup(callback) { + cleanupFn = callback; + } + const _cb = (value, oldValue) => { + onEffect(); + return cb(value, oldValue, onCleanup); + }; + const res = watchIgnorable(source, _cb, options); + const { ignoreUpdates } = res; + const trigger = () => { + let res2; + ignoreUpdates(() => { + res2 = _cb(getWatchSources(source), getOldValue(source)); + }); + return res2; + }; + return { + ...res, + trigger + }; +} +function getWatchSources(sources) { + if (isReactive(sources)) + return sources; + if (Array.isArray(sources)) + return sources.map((item) => toValue(item)); + return toValue(sources); +} +function getOldValue(source) { + return Array.isArray(source) ? source.map(() => void 0) : void 0; +} +function whenever(source, cb, options) { + const stop = watch( + source, + (v, ov, onInvalidate) => { + if (v) { + if (options == null ? void 0 : options.once) + nextTick(() => stop()); + cb(v, ov, onInvalidate); + } + }, + { + ...options, + once: false + } + ); + return stop; +} + +// node_modules/@vueuse/core/index.mjs +function computedAsync(evaluationCallback, initialState, optionsOrRef) { + let options; + if (isRef(optionsOrRef)) { + options = { + evaluating: optionsOrRef + }; + } else { + options = optionsOrRef || {}; + } + const { + lazy = false, + evaluating = void 0, + shallow = true, + onError = noop + } = options; + const started = shallowRef(!lazy); + const current = shallow ? shallowRef(initialState) : ref(initialState); + let counter = 0; + watchEffect(async (onInvalidate) => { + if (!started.value) + return; + counter++; + const counterAtBeginning = counter; + let hasFinished = false; + if (evaluating) { + Promise.resolve().then(() => { + evaluating.value = true; + }); + } + try { + const result = await evaluationCallback((cancelCallback) => { + onInvalidate(() => { + if (evaluating) + evaluating.value = false; + if (!hasFinished) + cancelCallback(); + }); + }); + if (counterAtBeginning === counter) + current.value = result; + } catch (e) { + onError(e); + } finally { + if (evaluating && counterAtBeginning === counter) + evaluating.value = false; + hasFinished = true; + } + }); + if (lazy) { + return computed(() => { + started.value = true; + return current.value; + }); + } else { + return current; + } +} +function computedInject(key, options, defaultSource, treatDefaultAsFactory) { + let source = inject(key); + if (defaultSource) + source = inject(key, defaultSource); + if (treatDefaultAsFactory) + source = inject(key, defaultSource, treatDefaultAsFactory); + if (typeof options === "function") { + return computed((ctx) => options(source, ctx)); + } else { + return computed({ + get: (ctx) => options.get(source, ctx), + set: options.set + }); + } +} +function createReusableTemplate(options = {}) { + const { + inheritAttrs = true + } = options; + const render = shallowRef(); + const define = defineComponent({ + setup(_, { slots }) { + return () => { + render.value = slots.default; + }; + } + }); + const reuse = defineComponent({ + inheritAttrs, + props: options.props, + setup(props, { attrs, slots }) { + return () => { + var _a; + if (!render.value && true) + throw new Error("[VueUse] Failed to find the definition of reusable template"); + const vnode = (_a = render.value) == null ? void 0 : _a.call(render, { + ...options.props == null ? keysToCamelKebabCase(attrs) : props, + $slots: slots + }); + return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode; + }; + } + }); + return makeDestructurable( + { define, reuse }, + [define, reuse] + ); +} +function keysToCamelKebabCase(obj) { + const newObj = {}; + for (const key in obj) + newObj[camelize(key)] = obj[key]; + return newObj; +} +function createTemplatePromise(options = {}) { + let index = 0; + const instances = ref([]); + function create(...args) { + const props = shallowReactive({ + key: index++, + args, + promise: void 0, + resolve: () => { + }, + reject: () => { + }, + isResolving: false, + options + }); + instances.value.push(props); + props.promise = new Promise((_resolve, _reject) => { + props.resolve = (v) => { + props.isResolving = true; + return _resolve(v); + }; + props.reject = _reject; + }).finally(() => { + props.promise = void 0; + const index2 = instances.value.indexOf(props); + if (index2 !== -1) + instances.value.splice(index2, 1); + }); + return props.promise; + } + function start(...args) { + if (options.singleton && instances.value.length > 0) + return instances.value[0].promise; + return create(...args); + } + const component = defineComponent((_, { slots }) => { + const renderList = () => instances.value.map((props) => { + var _a; + return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props)); + }); + if (options.transition) + return () => h(TransitionGroup, options.transition, renderList); + return renderList; + }); + component.start = start; + return component; +} +function createUnrefFn(fn) { + return function(...args) { + return fn.apply(this, args.map((i) => toValue(i))); + }; +} +var defaultWindow = isClient ? window : void 0; +var defaultDocument = isClient ? window.document : void 0; +var defaultNavigator = isClient ? window.navigator : void 0; +var defaultLocation = isClient ? window.location : void 0; +function unrefElement(elRef) { + var _a; + const plain = toValue(elRef); + return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain; +} +function useEventListener(...args) { + const cleanups = []; + const cleanup = () => { + cleanups.forEach((fn) => fn()); + cleanups.length = 0; + }; + const register = (el, event, listener, options) => { + el.addEventListener(event, listener, options); + return () => el.removeEventListener(event, listener, options); + }; + const firstParamTargets = computed(() => { + const test = toArray(toValue(args[0])).filter((e) => e != null); + return test.every((e) => typeof e !== "string") ? test : void 0; + }); + const stopWatch = watchImmediate( + () => { + var _a, _b; + return [ + (_b = (_a = firstParamTargets.value) == null ? void 0 : _a.map((e) => unrefElement(e))) != null ? _b : [defaultWindow].filter((e) => e != null), + toArray(toValue(firstParamTargets.value ? args[1] : args[0])), + toArray(unref(firstParamTargets.value ? args[2] : args[1])), + // @ts-expect-error - TypeScript gets the correct types, but somehow still complains + toValue(firstParamTargets.value ? args[3] : args[2]) + ]; + }, + ([raw_targets, raw_events, raw_listeners, raw_options]) => { + cleanup(); + if (!(raw_targets == null ? void 0 : raw_targets.length) || !(raw_events == null ? void 0 : raw_events.length) || !(raw_listeners == null ? void 0 : raw_listeners.length)) + return; + const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options; + cleanups.push( + ...raw_targets.flatMap( + (el) => raw_events.flatMap( + (event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone)) + ) + ) + ); + }, + { flush: "post" } + ); + const stop = () => { + stopWatch(); + cleanup(); + }; + tryOnScopeDispose(cleanup); + return stop; +} +var _iOSWorkaround = false; +function onClickOutside(target, handler, options = {}) { + const { window: window2 = defaultWindow, ignore = [], capture = true, detectIframe = false, controls = false } = options; + if (!window2) { + return controls ? { stop: noop, cancel: noop, trigger: noop } : noop; + } + if (isIOS && !_iOSWorkaround) { + _iOSWorkaround = true; + const listenerOptions = { passive: true }; + Array.from(window2.document.body.children).forEach((el) => useEventListener(el, "click", noop, listenerOptions)); + useEventListener(window2.document.documentElement, "click", noop, listenerOptions); + } + let shouldListen = true; + const shouldIgnore = (event) => { + return toValue(ignore).some((target2) => { + if (typeof target2 === "string") { + return Array.from(window2.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el)); + } else { + const el = unrefElement(target2); + return el && (event.target === el || event.composedPath().includes(el)); + } + }); + }; + function hasMultipleRoots(target2) { + const vm = toValue(target2); + return vm && vm.$.subTree.shapeFlag === 16; + } + function checkMultipleRoots(target2, event) { + const vm = toValue(target2); + const children = vm.$.subTree && vm.$.subTree.children; + if (children == null || !Array.isArray(children)) + return false; + return children.some((child) => child.el === event.target || event.composedPath().includes(child.el)); + } + const listener = (event) => { + const el = unrefElement(target); + if (event.target == null) + return; + if (!(el instanceof Element) && hasMultipleRoots(target) && checkMultipleRoots(target, event)) + return; + if (!el || el === event.target || event.composedPath().includes(el)) + return; + if ("detail" in event && event.detail === 0) + shouldListen = !shouldIgnore(event); + if (!shouldListen) { + shouldListen = true; + return; + } + handler(event); + }; + let isProcessingClick = false; + const cleanup = [ + useEventListener(window2, "click", (event) => { + if (!isProcessingClick) { + isProcessingClick = true; + setTimeout(() => { + isProcessingClick = false; + }, 0); + listener(event); + } + }, { passive: true, capture }), + useEventListener(window2, "pointerdown", (e) => { + const el = unrefElement(target); + shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el)); + }, { passive: true }), + detectIframe && useEventListener(window2, "blur", (event) => { + setTimeout(() => { + var _a; + const el = unrefElement(target); + if (((_a = window2.document.activeElement) == null ? void 0 : _a.tagName) === "IFRAME" && !(el == null ? void 0 : el.contains(window2.document.activeElement))) { + handler(event); + } + }, 0); + }, { passive: true }) + ].filter(Boolean); + const stop = () => cleanup.forEach((fn) => fn()); + if (controls) { + return { + stop, + cancel: () => { + shouldListen = false; + }, + trigger: (event) => { + shouldListen = true; + listener(event); + shouldListen = false; + } + }; + } + return stop; +} +function useMounted() { + const isMounted = shallowRef(false); + const instance = getCurrentInstance(); + if (instance) { + onMounted(() => { + isMounted.value = true; + }, instance); + } + return isMounted; +} +function useSupported(callback) { + const isMounted = useMounted(); + return computed(() => { + isMounted.value; + return Boolean(callback()); + }); +} +function useMutationObserver(target, callback, options = {}) { + const { window: window2 = defaultWindow, ...mutationOptions } = options; + let observer; + const isSupported = useSupported(() => window2 && "MutationObserver" in window2); + const cleanup = () => { + if (observer) { + observer.disconnect(); + observer = void 0; + } + }; + const targets = computed(() => { + const value = toValue(target); + const items = toArray(value).map(unrefElement).filter(notNullish); + return new Set(items); + }); + const stopWatch = watch( + () => targets.value, + (targets2) => { + cleanup(); + if (isSupported.value && targets2.size) { + observer = new MutationObserver(callback); + targets2.forEach((el) => observer.observe(el, mutationOptions)); + } + }, + { immediate: true, flush: "post" } + ); + const takeRecords = () => { + return observer == null ? void 0 : observer.takeRecords(); + }; + const stop = () => { + stopWatch(); + cleanup(); + }; + tryOnScopeDispose(stop); + return { + isSupported, + stop, + takeRecords + }; +} +function onElementRemoval(target, callback, options = {}) { + const { + window: window2 = defaultWindow, + document: document2 = window2 == null ? void 0 : window2.document, + flush = "sync" + } = options; + if (!window2 || !document2) + return noop; + let stopFn; + const cleanupAndUpdate = (fn) => { + stopFn == null ? void 0 : stopFn(); + stopFn = fn; + }; + const stopWatch = watchEffect(() => { + const el = unrefElement(target); + if (el) { + const { stop } = useMutationObserver( + document2, + (mutationsList) => { + const targetRemoved = mutationsList.map((mutation) => [...mutation.removedNodes]).flat().some((node) => node === el || node.contains(el)); + if (targetRemoved) { + callback(mutationsList); + } + }, + { + window: window2, + childList: true, + subtree: true + } + ); + cleanupAndUpdate(stop); + } + }, { flush }); + const stopHandle = () => { + stopWatch(); + cleanupAndUpdate(); + }; + tryOnScopeDispose(stopHandle); + return stopHandle; +} +function createKeyPredicate(keyFilter) { + if (typeof keyFilter === "function") + return keyFilter; + else if (typeof keyFilter === "string") + return (event) => event.key === keyFilter; + else if (Array.isArray(keyFilter)) + return (event) => keyFilter.includes(event.key); + return () => true; +} +function onKeyStroke(...args) { + let key; + let handler; + let options = {}; + if (args.length === 3) { + key = args[0]; + handler = args[1]; + options = args[2]; + } else if (args.length === 2) { + if (typeof args[1] === "object") { + key = true; + handler = args[0]; + options = args[1]; + } else { + key = args[0]; + handler = args[1]; + } + } else { + key = true; + handler = args[0]; + } + const { + target = defaultWindow, + eventName = "keydown", + passive = false, + dedupe = false + } = options; + const predicate = createKeyPredicate(key); + const listener = (e) => { + if (e.repeat && toValue(dedupe)) + return; + if (predicate(e)) + handler(e); + }; + return useEventListener(target, eventName, listener, passive); +} +function onKeyDown(key, handler, options = {}) { + return onKeyStroke(key, handler, { ...options, eventName: "keydown" }); +} +function onKeyPressed(key, handler, options = {}) { + return onKeyStroke(key, handler, { ...options, eventName: "keypress" }); +} +function onKeyUp(key, handler, options = {}) { + return onKeyStroke(key, handler, { ...options, eventName: "keyup" }); +} +var DEFAULT_DELAY = 500; +var DEFAULT_THRESHOLD = 10; +function onLongPress(target, handler, options) { + var _a, _b; + const elementRef = computed(() => unrefElement(target)); + let timeout; + let posStart; + let startTimestamp; + let hasLongPressed = false; + function clear() { + if (timeout) { + clearTimeout(timeout); + timeout = void 0; + } + posStart = void 0; + startTimestamp = void 0; + hasLongPressed = false; + } + function onRelease(ev) { + var _a2, _b2, _c; + const [_startTimestamp, _posStart, _hasLongPressed] = [startTimestamp, posStart, hasLongPressed]; + clear(); + if (!(options == null ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp) + return; + if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value) + return; + if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent) + ev.preventDefault(); + if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop) + ev.stopPropagation(); + const dx = ev.x - _posStart.x; + const dy = ev.y - _posStart.y; + const distance = Math.sqrt(dx * dx + dy * dy); + options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed); + } + function onDown(ev) { + var _a2, _b2, _c, _d; + if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value) + return; + clear(); + if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent) + ev.preventDefault(); + if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop) + ev.stopPropagation(); + posStart = { + x: ev.x, + y: ev.y + }; + startTimestamp = ev.timeStamp; + timeout = setTimeout( + () => { + hasLongPressed = true; + handler(ev); + }, + (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY + ); + } + function onMove(ev) { + var _a2, _b2, _c, _d; + if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value) + return; + if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false) + return; + if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent) + ev.preventDefault(); + if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop) + ev.stopPropagation(); + const dx = ev.x - posStart.x; + const dy = ev.y - posStart.y; + const distance = Math.sqrt(dx * dx + dy * dy); + if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD)) + clear(); + } + const listenerOptions = { + capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture, + once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once + }; + const cleanup = [ + useEventListener(elementRef, "pointerdown", onDown, listenerOptions), + useEventListener(elementRef, "pointermove", onMove, listenerOptions), + useEventListener(elementRef, ["pointerup", "pointerleave"], onRelease, listenerOptions) + ]; + const stop = () => cleanup.forEach((fn) => fn()); + return stop; +} +function isFocusedElementEditable() { + const { activeElement, body } = document; + if (!activeElement) + return false; + if (activeElement === body) + return false; + switch (activeElement.tagName) { + case "INPUT": + case "TEXTAREA": + return true; + } + return activeElement.hasAttribute("contenteditable"); +} +function isTypedCharValid({ + keyCode, + metaKey, + ctrlKey, + altKey +}) { + if (metaKey || ctrlKey || altKey) + return false; + if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105) + return true; + if (keyCode >= 65 && keyCode <= 90) + return true; + return false; +} +function onStartTyping(callback, options = {}) { + const { document: document2 = defaultDocument } = options; + const keydown = (event) => { + if (!isFocusedElementEditable() && isTypedCharValid(event)) { + callback(event); + } + }; + if (document2) + useEventListener(document2, "keydown", keydown, { passive: true }); +} +function templateRef(key, initialValue = null) { + const instance = getCurrentInstance(); + let _trigger = () => { + }; + const element = customRef((track, trigger) => { + _trigger = trigger; + return { + get() { + var _a, _b; + track(); + return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue; + }, + set() { + } + }; + }); + tryOnMounted(_trigger); + onUpdated(_trigger); + return element; +} +function useActiveElement(options = {}) { + var _a; + const { + window: window2 = defaultWindow, + deep = true, + triggerOnRemoval = false + } = options; + const document2 = (_a = options.document) != null ? _a : window2 == null ? void 0 : window2.document; + const getDeepActiveElement = () => { + var _a2; + let element = document2 == null ? void 0 : document2.activeElement; + if (deep) { + while (element == null ? void 0 : element.shadowRoot) + element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement; + } + return element; + }; + const activeElement = shallowRef(); + const trigger = () => { + activeElement.value = getDeepActiveElement(); + }; + if (window2) { + const listenerOptions = { + capture: true, + passive: true + }; + useEventListener( + window2, + "blur", + (event) => { + if (event.relatedTarget !== null) + return; + trigger(); + }, + listenerOptions + ); + useEventListener( + window2, + "focus", + trigger, + listenerOptions + ); + } + if (triggerOnRemoval) { + onElementRemoval(activeElement, trigger, { document: document2 }); + } + trigger(); + return activeElement; +} +function useRafFn(fn, options = {}) { + const { + immediate = true, + fpsLimit = void 0, + window: window2 = defaultWindow, + once = false + } = options; + const isActive = shallowRef(false); + const intervalLimit = computed(() => { + return fpsLimit ? 1e3 / toValue(fpsLimit) : null; + }); + let previousFrameTimestamp = 0; + let rafId = null; + function loop(timestamp2) { + if (!isActive.value || !window2) + return; + if (!previousFrameTimestamp) + previousFrameTimestamp = timestamp2; + const delta = timestamp2 - previousFrameTimestamp; + if (intervalLimit.value && delta < intervalLimit.value) { + rafId = window2.requestAnimationFrame(loop); + return; + } + previousFrameTimestamp = timestamp2; + fn({ delta, timestamp: timestamp2 }); + if (once) { + isActive.value = false; + rafId = null; + return; + } + rafId = window2.requestAnimationFrame(loop); + } + function resume() { + if (!isActive.value && window2) { + isActive.value = true; + previousFrameTimestamp = 0; + rafId = window2.requestAnimationFrame(loop); + } + } + function pause() { + isActive.value = false; + if (rafId != null && window2) { + window2.cancelAnimationFrame(rafId); + rafId = null; + } + } + if (immediate) + resume(); + tryOnScopeDispose(pause); + return { + isActive: readonly(isActive), + pause, + resume + }; +} +function useAnimate(target, keyframes, options) { + let config; + let animateOptions; + if (isObject(options)) { + config = options; + animateOptions = objectOmit(options, ["window", "immediate", "commitStyles", "persist", "onReady", "onError"]); + } else { + config = { duration: options }; + animateOptions = options; + } + const { + window: window2 = defaultWindow, + immediate = true, + commitStyles, + persist, + playbackRate: _playbackRate = 1, + onReady, + onError = (e) => { + console.error(e); + } + } = config; + const isSupported = useSupported(() => window2 && HTMLElement && "animate" in HTMLElement.prototype); + const animate = shallowRef(void 0); + const store = shallowReactive({ + startTime: null, + currentTime: null, + timeline: null, + playbackRate: _playbackRate, + pending: false, + playState: immediate ? "idle" : "paused", + replaceState: "active" + }); + const pending = computed(() => store.pending); + const playState = computed(() => store.playState); + const replaceState = computed(() => store.replaceState); + const startTime = computed({ + get() { + return store.startTime; + }, + set(value) { + store.startTime = value; + if (animate.value) + animate.value.startTime = value; + } + }); + const currentTime = computed({ + get() { + return store.currentTime; + }, + set(value) { + store.currentTime = value; + if (animate.value) { + animate.value.currentTime = value; + syncResume(); + } + } + }); + const timeline = computed({ + get() { + return store.timeline; + }, + set(value) { + store.timeline = value; + if (animate.value) + animate.value.timeline = value; + } + }); + const playbackRate = computed({ + get() { + return store.playbackRate; + }, + set(value) { + store.playbackRate = value; + if (animate.value) + animate.value.playbackRate = value; + } + }); + const play = () => { + if (animate.value) { + try { + animate.value.play(); + syncResume(); + } catch (e) { + syncPause(); + onError(e); + } + } else { + update(); + } + }; + const pause = () => { + var _a; + try { + (_a = animate.value) == null ? void 0 : _a.pause(); + syncPause(); + } catch (e) { + onError(e); + } + }; + const reverse = () => { + var _a; + if (!animate.value) + update(); + try { + (_a = animate.value) == null ? void 0 : _a.reverse(); + syncResume(); + } catch (e) { + syncPause(); + onError(e); + } + }; + const finish = () => { + var _a; + try { + (_a = animate.value) == null ? void 0 : _a.finish(); + syncPause(); + } catch (e) { + onError(e); + } + }; + const cancel = () => { + var _a; + try { + (_a = animate.value) == null ? void 0 : _a.cancel(); + syncPause(); + } catch (e) { + onError(e); + } + }; + watch(() => unrefElement(target), (el) => { + if (el) { + update(); + } else { + animate.value = void 0; + } + }); + watch(() => keyframes, (value) => { + if (animate.value) { + update(); + const targetEl = unrefElement(target); + if (targetEl) { + animate.value.effect = new KeyframeEffect( + targetEl, + toValue(value), + animateOptions + ); + } + } + }, { deep: true }); + tryOnMounted(() => update(true), false); + tryOnScopeDispose(cancel); + function update(init) { + const el = unrefElement(target); + if (!isSupported.value || !el) + return; + if (!animate.value) + animate.value = el.animate(toValue(keyframes), animateOptions); + if (persist) + animate.value.persist(); + if (_playbackRate !== 1) + animate.value.playbackRate = _playbackRate; + if (init && !immediate) + animate.value.pause(); + else + syncResume(); + onReady == null ? void 0 : onReady(animate.value); + } + const listenerOptions = { passive: true }; + useEventListener(animate, ["cancel", "finish", "remove"], syncPause, listenerOptions); + useEventListener(animate, "finish", () => { + var _a; + if (commitStyles) + (_a = animate.value) == null ? void 0 : _a.commitStyles(); + }, listenerOptions); + const { resume: resumeRef, pause: pauseRef } = useRafFn(() => { + if (!animate.value) + return; + store.pending = animate.value.pending; + store.playState = animate.value.playState; + store.replaceState = animate.value.replaceState; + store.startTime = animate.value.startTime; + store.currentTime = animate.value.currentTime; + store.timeline = animate.value.timeline; + store.playbackRate = animate.value.playbackRate; + }, { immediate: false }); + function syncResume() { + if (isSupported.value) + resumeRef(); + } + function syncPause() { + if (isSupported.value && window2) + window2.requestAnimationFrame(pauseRef); + } + return { + isSupported, + animate, + // actions + play, + pause, + reverse, + finish, + cancel, + // state + pending, + playState, + replaceState, + startTime, + currentTime, + timeline, + playbackRate + }; +} +function useAsyncQueue(tasks, options) { + const { + interrupt = true, + onError = noop, + onFinished = noop, + signal + } = options || {}; + const promiseState = { + aborted: "aborted", + fulfilled: "fulfilled", + pending: "pending", + rejected: "rejected" + }; + const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null })); + const result = reactive(initialResult); + const activeIndex = shallowRef(-1); + if (!tasks || tasks.length === 0) { + onFinished(); + return { + activeIndex, + result + }; + } + function updateResult(state, res) { + activeIndex.value++; + result[activeIndex.value].data = res; + result[activeIndex.value].state = state; + } + tasks.reduce((prev, curr) => { + return prev.then((prevRes) => { + var _a; + if (signal == null ? void 0 : signal.aborted) { + updateResult(promiseState.aborted, new Error("aborted")); + return; + } + if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) { + onFinished(); + return; + } + const done = curr(prevRes).then((currentRes) => { + updateResult(promiseState.fulfilled, currentRes); + if (activeIndex.value === tasks.length - 1) + onFinished(); + return currentRes; + }); + if (!signal) + return done; + return Promise.race([done, whenAborted(signal)]); + }).catch((e) => { + if (signal == null ? void 0 : signal.aborted) { + updateResult(promiseState.aborted, e); + return e; + } + updateResult(promiseState.rejected, e); + onError(); + return e; + }); + }, Promise.resolve()); + return { + activeIndex, + result + }; +} +function whenAborted(signal) { + return new Promise((resolve, reject) => { + const error = new Error("aborted"); + if (signal.aborted) + reject(error); + else + signal.addEventListener("abort", () => reject(error), { once: true }); + }); +} +function useAsyncState(promise, initialState, options) { + const { + immediate = true, + delay = 0, + onError = noop, + onSuccess = noop, + resetOnExecute = true, + shallow = true, + throwError + } = options != null ? options : {}; + const state = shallow ? shallowRef(initialState) : ref(initialState); + const isReady = shallowRef(false); + const isLoading = shallowRef(false); + const error = shallowRef(void 0); + async function execute(delay2 = 0, ...args) { + if (resetOnExecute) + state.value = initialState; + error.value = void 0; + isReady.value = false; + isLoading.value = true; + if (delay2 > 0) + await promiseTimeout(delay2); + const _promise = typeof promise === "function" ? promise(...args) : promise; + try { + const data = await _promise; + state.value = data; + isReady.value = true; + onSuccess(data); + } catch (e) { + error.value = e; + onError(e); + if (throwError) + throw e; + } finally { + isLoading.value = false; + } + return state.value; + } + if (immediate) { + execute(delay); + } + const shell = { + state, + isReady, + isLoading, + error, + execute + }; + function waitUntilIsLoaded() { + return new Promise((resolve, reject) => { + until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject); + }); + } + return { + ...shell, + then(onFulfilled, onRejected) { + return waitUntilIsLoaded().then(onFulfilled, onRejected); + } + }; +} +var defaults = { + array: (v) => JSON.stringify(v), + object: (v) => JSON.stringify(v), + set: (v) => JSON.stringify(Array.from(v)), + map: (v) => JSON.stringify(Object.fromEntries(v)), + null: () => "" +}; +function getDefaultSerialization(target) { + if (!target) + return defaults.null; + if (target instanceof Map) + return defaults.map; + else if (target instanceof Set) + return defaults.set; + else if (Array.isArray(target)) + return defaults.array; + else + return defaults.object; +} +function useBase64(target, options) { + const base64 = shallowRef(""); + const promise = shallowRef(); + function execute() { + if (!isClient) + return; + promise.value = new Promise((resolve, reject) => { + try { + const _target = toValue(target); + if (_target == null) { + resolve(""); + } else if (typeof _target === "string") { + resolve(blobToBase64(new Blob([_target], { type: "text/plain" }))); + } else if (_target instanceof Blob) { + resolve(blobToBase64(_target)); + } else if (_target instanceof ArrayBuffer) { + resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target)))); + } else if (_target instanceof HTMLCanvasElement) { + resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality)); + } else if (_target instanceof HTMLImageElement) { + const img = _target.cloneNode(false); + img.crossOrigin = "Anonymous"; + imgLoaded(img).then(() => { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); + canvas.width = img.width; + canvas.height = img.height; + ctx.drawImage(img, 0, 0, canvas.width, canvas.height); + resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality)); + }).catch(reject); + } else if (typeof _target === "object") { + const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target); + const serialized = _serializeFn(_target); + return resolve(blobToBase64(new Blob([serialized], { type: "application/json" }))); + } else { + reject(new Error("target is unsupported types")); + } + } catch (error) { + reject(error); + } + }); + promise.value.then((res) => { + base64.value = (options == null ? void 0 : options.dataUrl) === false ? res.replace(/^data:.*?;base64,/, "") : res; + }); + return promise.value; + } + if (isRef(target) || typeof target === "function") + watch(target, execute, { immediate: true }); + else + execute(); + return { + base64, + promise, + execute + }; +} +function imgLoaded(img) { + return new Promise((resolve, reject) => { + if (!img.complete) { + img.onload = () => { + resolve(); + }; + img.onerror = reject; + } else { + resolve(); + } + }); +} +function blobToBase64(blob) { + return new Promise((resolve, reject) => { + const fr = new FileReader(); + fr.onload = (e) => { + resolve(e.target.result); + }; + fr.onerror = reject; + fr.readAsDataURL(blob); + }); +} +function useBattery(options = {}) { + const { navigator: navigator2 = defaultNavigator } = options; + const events2 = ["chargingchange", "chargingtimechange", "dischargingtimechange", "levelchange"]; + const isSupported = useSupported(() => navigator2 && "getBattery" in navigator2 && typeof navigator2.getBattery === "function"); + const charging = shallowRef(false); + const chargingTime = shallowRef(0); + const dischargingTime = shallowRef(0); + const level = shallowRef(1); + let battery; + function updateBatteryInfo() { + charging.value = this.charging; + chargingTime.value = this.chargingTime || 0; + dischargingTime.value = this.dischargingTime || 0; + level.value = this.level; + } + if (isSupported.value) { + navigator2.getBattery().then((_battery) => { + battery = _battery; + updateBatteryInfo.call(battery); + useEventListener(battery, events2, updateBatteryInfo, { passive: true }); + }); + } + return { + isSupported, + charging, + chargingTime, + dischargingTime, + level + }; +} +function useBluetooth(options) { + let { + acceptAllDevices = false + } = options || {}; + const { + filters = void 0, + optionalServices = void 0, + navigator: navigator2 = defaultNavigator + } = options || {}; + const isSupported = useSupported(() => navigator2 && "bluetooth" in navigator2); + const device = shallowRef(); + const error = shallowRef(null); + watch(device, () => { + connectToBluetoothGATTServer(); + }); + async function requestDevice() { + if (!isSupported.value) + return; + error.value = null; + if (filters && filters.length > 0) + acceptAllDevices = false; + try { + device.value = await (navigator2 == null ? void 0 : navigator2.bluetooth.requestDevice({ + acceptAllDevices, + filters, + optionalServices + })); + } catch (err) { + error.value = err; + } + } + const server = shallowRef(); + const isConnected = shallowRef(false); + function reset() { + isConnected.value = false; + device.value = void 0; + server.value = void 0; + } + async function connectToBluetoothGATTServer() { + error.value = null; + if (device.value && device.value.gatt) { + useEventListener(device, "gattserverdisconnected", reset, { passive: true }); + try { + server.value = await device.value.gatt.connect(); + isConnected.value = server.value.connected; + } catch (err) { + error.value = err; + } + } + } + tryOnMounted(() => { + var _a; + if (device.value) + (_a = device.value.gatt) == null ? void 0 : _a.connect(); + }); + tryOnScopeDispose(() => { + var _a; + if (device.value) + (_a = device.value.gatt) == null ? void 0 : _a.disconnect(); + }); + return { + isSupported, + isConnected: readonly(isConnected), + // Device: + device, + requestDevice, + // Server: + server, + // Errors: + error + }; +} +var ssrWidthSymbol = Symbol("vueuse-ssr-width"); +function useSSRWidth() { + const ssrWidth = hasInjectionContext() ? injectLocal(ssrWidthSymbol, null) : null; + return typeof ssrWidth === "number" ? ssrWidth : void 0; +} +function provideSSRWidth(width, app) { + if (app !== void 0) { + app.provide(ssrWidthSymbol, width); + } else { + provideLocal(ssrWidthSymbol, width); + } +} +function useMediaQuery(query, options = {}) { + const { window: window2 = defaultWindow, ssrWidth = useSSRWidth() } = options; + const isSupported = useSupported(() => window2 && "matchMedia" in window2 && typeof window2.matchMedia === "function"); + const ssrSupport = shallowRef(typeof ssrWidth === "number"); + const mediaQuery = shallowRef(); + const matches = shallowRef(false); + const handler = (event) => { + matches.value = event.matches; + }; + watchEffect(() => { + if (ssrSupport.value) { + ssrSupport.value = !isSupported.value; + const queryStrings = toValue(query).split(","); + matches.value = queryStrings.some((queryString) => { + const not = queryString.includes("not all"); + const minWidth = queryString.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/); + const maxWidth = queryString.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/); + let res = Boolean(minWidth || maxWidth); + if (minWidth && res) { + res = ssrWidth >= pxValue(minWidth[1]); + } + if (maxWidth && res) { + res = ssrWidth <= pxValue(maxWidth[1]); + } + return not ? !res : res; + }); + return; + } + if (!isSupported.value) + return; + mediaQuery.value = window2.matchMedia(toValue(query)); + matches.value = mediaQuery.value.matches; + }); + useEventListener(mediaQuery, "change", handler, { passive: true }); + return computed(() => matches.value); +} +var breakpointsTailwind = { + "sm": 640, + "md": 768, + "lg": 1024, + "xl": 1280, + "2xl": 1536 +}; +var breakpointsBootstrapV5 = { + xs: 0, + sm: 576, + md: 768, + lg: 992, + xl: 1200, + xxl: 1400 +}; +var breakpointsVuetifyV2 = { + xs: 0, + sm: 600, + md: 960, + lg: 1264, + xl: 1904 +}; +var breakpointsVuetifyV3 = { + xs: 0, + sm: 600, + md: 960, + lg: 1280, + xl: 1920, + xxl: 2560 +}; +var breakpointsVuetify = breakpointsVuetifyV2; +var breakpointsAntDesign = { + xs: 480, + sm: 576, + md: 768, + lg: 992, + xl: 1200, + xxl: 1600 +}; +var breakpointsQuasar = { + xs: 0, + sm: 600, + md: 1024, + lg: 1440, + xl: 1920 +}; +var breakpointsSematic = { + mobileS: 320, + mobileM: 375, + mobileL: 425, + tablet: 768, + laptop: 1024, + laptopL: 1440, + desktop4K: 2560 +}; +var breakpointsMasterCss = { + "3xs": 360, + "2xs": 480, + "xs": 600, + "sm": 768, + "md": 1024, + "lg": 1280, + "xl": 1440, + "2xl": 1600, + "3xl": 1920, + "4xl": 2560 +}; +var breakpointsPrimeFlex = { + sm: 576, + md: 768, + lg: 992, + xl: 1200 +}; +var breakpointsElement = { + xs: 0, + sm: 768, + md: 992, + lg: 1200, + xl: 1920 +}; +function useBreakpoints(breakpoints, options = {}) { + function getValue2(k, delta) { + let v = toValue(breakpoints[toValue(k)]); + if (delta != null) + v = increaseWithUnit(v, delta); + if (typeof v === "number") + v = `${v}px`; + return v; + } + const { window: window2 = defaultWindow, strategy = "min-width", ssrWidth = useSSRWidth() } = options; + const ssrSupport = typeof ssrWidth === "number"; + const mounted = ssrSupport ? shallowRef(false) : { value: true }; + if (ssrSupport) { + tryOnMounted(() => mounted.value = !!window2); + } + function match(query, size) { + if (!mounted.value && ssrSupport) { + return query === "min" ? ssrWidth >= pxValue(size) : ssrWidth <= pxValue(size); + } + if (!window2) + return false; + return window2.matchMedia(`(${query}-width: ${size})`).matches; + } + const greaterOrEqual = (k) => { + return useMediaQuery(() => `(min-width: ${getValue2(k)})`, options); + }; + const smallerOrEqual = (k) => { + return useMediaQuery(() => `(max-width: ${getValue2(k)})`, options); + }; + const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => { + Object.defineProperty(shortcuts, k, { + get: () => strategy === "min-width" ? greaterOrEqual(k) : smallerOrEqual(k), + enumerable: true, + configurable: true + }); + return shortcuts; + }, {}); + function current() { + const points = Object.keys(breakpoints).map((k) => [k, shortcutMethods[k], pxValue(getValue2(k))]).sort((a, b) => a[2] - b[2]); + return computed(() => points.filter(([, v]) => v.value).map(([k]) => k)); + } + return Object.assign(shortcutMethods, { + greaterOrEqual, + smallerOrEqual, + greater(k) { + return useMediaQuery(() => `(min-width: ${getValue2(k, 0.1)})`, options); + }, + smaller(k) { + return useMediaQuery(() => `(max-width: ${getValue2(k, -0.1)})`, options); + }, + between(a, b) { + return useMediaQuery(() => `(min-width: ${getValue2(a)}) and (max-width: ${getValue2(b, -0.1)})`, options); + }, + isGreater(k) { + return match("min", getValue2(k, 0.1)); + }, + isGreaterOrEqual(k) { + return match("min", getValue2(k)); + }, + isSmaller(k) { + return match("max", getValue2(k, -0.1)); + }, + isSmallerOrEqual(k) { + return match("max", getValue2(k)); + }, + isInBetween(a, b) { + return match("min", getValue2(a)) && match("max", getValue2(b, -0.1)); + }, + current, + active() { + const bps = current(); + return computed(() => bps.value.length === 0 ? "" : bps.value.at(strategy === "min-width" ? -1 : 0)); + } + }); +} +function useBroadcastChannel(options) { + const { + name, + window: window2 = defaultWindow + } = options; + const isSupported = useSupported(() => window2 && "BroadcastChannel" in window2); + const isClosed = shallowRef(false); + const channel = ref(); + const data = ref(); + const error = shallowRef(null); + const post = (data2) => { + if (channel.value) + channel.value.postMessage(data2); + }; + const close = () => { + if (channel.value) + channel.value.close(); + isClosed.value = true; + }; + if (isSupported.value) { + tryOnMounted(() => { + error.value = null; + channel.value = new BroadcastChannel(name); + const listenerOptions = { + passive: true + }; + useEventListener(channel, "message", (e) => { + data.value = e.data; + }, listenerOptions); + useEventListener(channel, "messageerror", (e) => { + error.value = e; + }, listenerOptions); + useEventListener(channel, "close", () => { + isClosed.value = true; + }, listenerOptions); + }); + } + tryOnScopeDispose(() => { + close(); + }); + return { + isSupported, + channel, + data, + post, + close, + error, + isClosed + }; +} +var WRITABLE_PROPERTIES = [ + "hash", + "host", + "hostname", + "href", + "pathname", + "port", + "protocol", + "search" +]; +function useBrowserLocation(options = {}) { + const { window: window2 = defaultWindow } = options; + const refs = Object.fromEntries( + WRITABLE_PROPERTIES.map((key) => [key, ref()]) + ); + for (const [key, ref2] of objectEntries(refs)) { + watch(ref2, (value) => { + if (!(window2 == null ? void 0 : window2.location) || window2.location[key] === value) + return; + window2.location[key] = value; + }); + } + const buildState = (trigger) => { + var _a; + const { state: state2, length } = (window2 == null ? void 0 : window2.history) || {}; + const { origin } = (window2 == null ? void 0 : window2.location) || {}; + for (const key of WRITABLE_PROPERTIES) + refs[key].value = (_a = window2 == null ? void 0 : window2.location) == null ? void 0 : _a[key]; + return reactive({ + trigger, + state: state2, + length, + origin, + ...refs + }); + }; + const state = ref(buildState("load")); + if (window2) { + const listenerOptions = { passive: true }; + useEventListener(window2, "popstate", () => state.value = buildState("popstate"), listenerOptions); + useEventListener(window2, "hashchange", () => state.value = buildState("hashchange"), listenerOptions); + } + return state; +} +function useCached(refValue, comparator = (a, b) => a === b, options) { + const { deepRefs = true, ...watchOptions } = options || {}; + const cachedValue = createRef(refValue.value, deepRefs); + watch(() => refValue.value, (value) => { + if (!comparator(value, cachedValue.value)) + cachedValue.value = value; + }, watchOptions); + return cachedValue; +} +function usePermission(permissionDesc, options = {}) { + const { + controls = false, + navigator: navigator2 = defaultNavigator + } = options; + const isSupported = useSupported(() => navigator2 && "permissions" in navigator2); + const permissionStatus = shallowRef(); + const desc = typeof permissionDesc === "string" ? { name: permissionDesc } : permissionDesc; + const state = shallowRef(); + const update = () => { + var _a, _b; + state.value = (_b = (_a = permissionStatus.value) == null ? void 0 : _a.state) != null ? _b : "prompt"; + }; + useEventListener(permissionStatus, "change", update, { passive: true }); + const query = createSingletonPromise(async () => { + if (!isSupported.value) + return; + if (!permissionStatus.value) { + try { + permissionStatus.value = await navigator2.permissions.query(desc); + } catch (e) { + permissionStatus.value = void 0; + } finally { + update(); + } + } + if (controls) + return toRaw(permissionStatus.value); + }); + query(); + if (controls) { + return { + state, + isSupported, + query + }; + } else { + return state; + } +} +function useClipboard(options = {}) { + const { + navigator: navigator2 = defaultNavigator, + read = false, + source, + copiedDuring = 1500, + legacy = false + } = options; + const isClipboardApiSupported = useSupported(() => navigator2 && "clipboard" in navigator2); + const permissionRead = usePermission("clipboard-read"); + const permissionWrite = usePermission("clipboard-write"); + const isSupported = computed(() => isClipboardApiSupported.value || legacy); + const text = shallowRef(""); + const copied = shallowRef(false); + const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false }); + async function updateText() { + let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionRead.value)); + if (!useLegacy) { + try { + text.value = await navigator2.clipboard.readText(); + } catch (e) { + useLegacy = true; + } + } + if (useLegacy) { + text.value = legacyRead(); + } + } + if (isSupported.value && read) + useEventListener(["copy", "cut"], updateText, { passive: true }); + async function copy(value = toValue(source)) { + if (isSupported.value && value != null) { + let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionWrite.value)); + if (!useLegacy) { + try { + await navigator2.clipboard.writeText(value); + } catch (e) { + useLegacy = true; + } + } + if (useLegacy) + legacyCopy(value); + text.value = value; + copied.value = true; + timeout.start(); + } + } + function legacyCopy(value) { + const ta = document.createElement("textarea"); + ta.value = value != null ? value : ""; + ta.style.position = "absolute"; + ta.style.opacity = "0"; + document.body.appendChild(ta); + ta.select(); + document.execCommand("copy"); + ta.remove(); + } + function legacyRead() { + var _a, _b, _c; + return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : ""; + } + function isAllowed(status) { + return status === "granted" || status === "prompt"; + } + return { + isSupported, + text, + copied, + copy + }; +} +function useClipboardItems(options = {}) { + const { + navigator: navigator2 = defaultNavigator, + read = false, + source, + copiedDuring = 1500 + } = options; + const isSupported = useSupported(() => navigator2 && "clipboard" in navigator2); + const content = ref([]); + const copied = shallowRef(false); + const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false }); + function updateContent() { + if (isSupported.value) { + navigator2.clipboard.read().then((items) => { + content.value = items; + }); + } + } + if (isSupported.value && read) + useEventListener(["copy", "cut"], updateContent, { passive: true }); + async function copy(value = toValue(source)) { + if (isSupported.value && value != null) { + await navigator2.clipboard.write(value); + content.value = value; + copied.value = true; + timeout.start(); + } + } + return { + isSupported, + content, + copied, + copy + }; +} +function cloneFnJSON(source) { + return JSON.parse(JSON.stringify(source)); +} +function useCloned(source, options = {}) { + const cloned = ref({}); + const isModified = shallowRef(false); + let _lastSync = false; + const { + manual, + clone = cloneFnJSON, + // watch options + deep = true, + immediate = true + } = options; + watch(cloned, () => { + if (_lastSync) { + _lastSync = false; + return; + } + isModified.value = true; + }, { + deep: true, + flush: "sync" + }); + function sync() { + _lastSync = true; + isModified.value = false; + cloned.value = clone(toValue(source)); + } + if (!manual && (isRef(source) || typeof source === "function")) { + watch(source, sync, { + ...options, + deep, + immediate + }); + } else { + sync(); + } + return { cloned, isModified, sync }; +} +var _global = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; +var globalKey = "__vueuse_ssr_handlers__"; +var handlers = getHandlers(); +function getHandlers() { + if (!(globalKey in _global)) + _global[globalKey] = _global[globalKey] || {}; + return _global[globalKey]; +} +function getSSRHandler(key, fallback) { + return handlers[key] || fallback; +} +function setSSRHandler(key, fn) { + handlers[key] = fn; +} +function usePreferredDark(options) { + return useMediaQuery("(prefers-color-scheme: dark)", options); +} +function guessSerializerType(rawInit) { + return rawInit == null ? "any" : rawInit instanceof Set ? "set" : rawInit instanceof Map ? "map" : rawInit instanceof Date ? "date" : typeof rawInit === "boolean" ? "boolean" : typeof rawInit === "string" ? "string" : typeof rawInit === "object" ? "object" : !Number.isNaN(rawInit) ? "number" : "any"; +} +var StorageSerializers = { + boolean: { + read: (v) => v === "true", + write: (v) => String(v) + }, + object: { + read: (v) => JSON.parse(v), + write: (v) => JSON.stringify(v) + }, + number: { + read: (v) => Number.parseFloat(v), + write: (v) => String(v) + }, + any: { + read: (v) => v, + write: (v) => String(v) + }, + string: { + read: (v) => v, + write: (v) => String(v) + }, + map: { + read: (v) => new Map(JSON.parse(v)), + write: (v) => JSON.stringify(Array.from(v.entries())) + }, + set: { + read: (v) => new Set(JSON.parse(v)), + write: (v) => JSON.stringify(Array.from(v)) + }, + date: { + read: (v) => new Date(v), + write: (v) => v.toISOString() + } +}; +var customStorageEventName = "vueuse-storage"; +function useStorage(key, defaults2, storage, options = {}) { + var _a; + const { + flush = "pre", + deep = true, + listenToStorageChanges = true, + writeDefaults = true, + mergeDefaults = false, + shallow, + window: window2 = defaultWindow, + eventFilter, + onError = (e) => { + console.error(e); + }, + initOnMounted + } = options; + const data = (shallow ? shallowRef : ref)(typeof defaults2 === "function" ? defaults2() : defaults2); + const keyComputed = computed(() => toValue(key)); + if (!storage) { + try { + storage = getSSRHandler("getDefaultStorage", () => { + var _a2; + return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage; + })(); + } catch (e) { + onError(e); + } + } + if (!storage) + return data; + const rawInit = toValue(defaults2); + const type = guessSerializerType(rawInit); + const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type]; + const { pause: pauseWatch, resume: resumeWatch } = watchPausable( + data, + () => write(data.value), + { flush, deep, eventFilter } + ); + watch(keyComputed, () => update(), { flush }); + if (window2 && listenToStorageChanges) { + tryOnMounted(() => { + if (storage instanceof Storage) + useEventListener(window2, "storage", update, { passive: true }); + else + useEventListener(window2, customStorageEventName, updateFromCustomEvent); + if (initOnMounted) + update(); + }); + } + if (!initOnMounted) + update(); + function dispatchWriteEvent(oldValue, newValue) { + if (window2) { + const payload = { + key: keyComputed.value, + oldValue, + newValue, + storageArea: storage + }; + window2.dispatchEvent(storage instanceof Storage ? new StorageEvent("storage", payload) : new CustomEvent(customStorageEventName, { + detail: payload + })); + } + } + function write(v) { + try { + const oldValue = storage.getItem(keyComputed.value); + if (v == null) { + dispatchWriteEvent(oldValue, null); + storage.removeItem(keyComputed.value); + } else { + const serialized = serializer.write(v); + if (oldValue !== serialized) { + storage.setItem(keyComputed.value, serialized); + dispatchWriteEvent(oldValue, serialized); + } + } + } catch (e) { + onError(e); + } + } + function read(event) { + const rawValue = event ? event.newValue : storage.getItem(keyComputed.value); + if (rawValue == null) { + if (writeDefaults && rawInit != null) + storage.setItem(keyComputed.value, serializer.write(rawInit)); + return rawInit; + } else if (!event && mergeDefaults) { + const value = serializer.read(rawValue); + if (typeof mergeDefaults === "function") + return mergeDefaults(value, rawInit); + else if (type === "object" && !Array.isArray(value)) + return { ...rawInit, ...value }; + return value; + } else if (typeof rawValue !== "string") { + return rawValue; + } else { + return serializer.read(rawValue); + } + } + function update(event) { + if (event && event.storageArea !== storage) + return; + if (event && event.key == null) { + data.value = rawInit; + return; + } + if (event && event.key !== keyComputed.value) + return; + pauseWatch(); + try { + if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value)) + data.value = read(event); + } catch (e) { + onError(e); + } finally { + if (event) + nextTick(resumeWatch); + else + resumeWatch(); + } + } + function updateFromCustomEvent(event) { + update(event.detail); + } + return data; +} +var CSS_DISABLE_TRANS = "*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}"; +function useColorMode(options = {}) { + const { + selector = "html", + attribute = "class", + initialValue = "auto", + window: window2 = defaultWindow, + storage, + storageKey = "vueuse-color-scheme", + listenToStorageChanges = true, + storageRef, + emitAuto, + disableTransition = true + } = options; + const modes = { + auto: "", + light: "light", + dark: "dark", + ...options.modes || {} + }; + const preferredDark = usePreferredDark({ window: window2 }); + const system = computed(() => preferredDark.value ? "dark" : "light"); + const store = storageRef || (storageKey == null ? toRef2(initialValue) : useStorage(storageKey, initialValue, storage, { window: window2, listenToStorageChanges })); + const state = computed(() => store.value === "auto" ? system.value : store.value); + const updateHTMLAttrs = getSSRHandler( + "updateHTMLAttrs", + (selector2, attribute2, value) => { + const el = typeof selector2 === "string" ? window2 == null ? void 0 : window2.document.querySelector(selector2) : unrefElement(selector2); + if (!el) + return; + const classesToAdd = /* @__PURE__ */ new Set(); + const classesToRemove = /* @__PURE__ */ new Set(); + let attributeToChange = null; + if (attribute2 === "class") { + const current = value.split(/\s/g); + Object.values(modes).flatMap((i) => (i || "").split(/\s/g)).filter(Boolean).forEach((v) => { + if (current.includes(v)) + classesToAdd.add(v); + else + classesToRemove.add(v); + }); + } else { + attributeToChange = { key: attribute2, value }; + } + if (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null) + return; + let style; + if (disableTransition) { + style = window2.document.createElement("style"); + style.appendChild(document.createTextNode(CSS_DISABLE_TRANS)); + window2.document.head.appendChild(style); + } + for (const c of classesToAdd) { + el.classList.add(c); + } + for (const c of classesToRemove) { + el.classList.remove(c); + } + if (attributeToChange) { + el.setAttribute(attributeToChange.key, attributeToChange.value); + } + if (disableTransition) { + window2.getComputedStyle(style).opacity; + document.head.removeChild(style); + } + } + ); + function defaultOnChanged(mode) { + var _a; + updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode); + } + function onChanged(mode) { + if (options.onChanged) + options.onChanged(mode, defaultOnChanged); + else + defaultOnChanged(mode); + } + watch(state, onChanged, { flush: "post", immediate: true }); + tryOnMounted(() => onChanged(state.value)); + const auto = computed({ + get() { + return emitAuto ? store.value : state.value; + }, + set(v) { + store.value = v; + } + }); + return Object.assign(auto, { store, system, state }); +} +function useConfirmDialog(revealed = shallowRef(false)) { + const confirmHook = createEventHook(); + const cancelHook = createEventHook(); + const revealHook = createEventHook(); + let _resolve = noop; + const reveal = (data) => { + revealHook.trigger(data); + revealed.value = true; + return new Promise((resolve) => { + _resolve = resolve; + }); + }; + const confirm = (data) => { + revealed.value = false; + confirmHook.trigger(data); + _resolve({ data, isCanceled: false }); + }; + const cancel = (data) => { + revealed.value = false; + cancelHook.trigger(data); + _resolve({ data, isCanceled: true }); + }; + return { + isRevealed: computed(() => revealed.value), + reveal, + confirm, + cancel, + onReveal: revealHook.on, + onConfirm: confirmHook.on, + onCancel: cancelHook.on + }; +} +function useCountdown(initialCountdown, options) { + var _a, _b; + const remaining = shallowRef(toValue(initialCountdown)); + const intervalController = useIntervalFn(() => { + var _a2, _b2; + const value = remaining.value - 1; + remaining.value = value < 0 ? 0 : value; + (_a2 = options == null ? void 0 : options.onTick) == null ? void 0 : _a2.call(options); + if (remaining.value <= 0) { + intervalController.pause(); + (_b2 = options == null ? void 0 : options.onComplete) == null ? void 0 : _b2.call(options); + } + }, (_a = options == null ? void 0 : options.interval) != null ? _a : 1e3, { immediate: (_b = options == null ? void 0 : options.immediate) != null ? _b : false }); + const reset = (countdown) => { + var _a2; + remaining.value = (_a2 = toValue(countdown)) != null ? _a2 : toValue(initialCountdown); + }; + const stop = () => { + intervalController.pause(); + reset(); + }; + const resume = () => { + if (!intervalController.isActive.value) { + if (remaining.value > 0) { + intervalController.resume(); + } + } + }; + const start = (countdown) => { + reset(countdown); + intervalController.resume(); + }; + return { + remaining, + reset, + stop, + start, + pause: intervalController.pause, + resume, + isActive: intervalController.isActive + }; +} +function useCssVar(prop, target, options = {}) { + const { window: window2 = defaultWindow, initialValue, observe = false } = options; + const variable = shallowRef(initialValue); + const elRef = computed(() => { + var _a; + return unrefElement(target) || ((_a = window2 == null ? void 0 : window2.document) == null ? void 0 : _a.documentElement); + }); + function updateCssVar() { + var _a; + const key = toValue(prop); + const el = toValue(elRef); + if (el && window2 && key) { + const value = (_a = window2.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim(); + variable.value = value || variable.value || initialValue; + } + } + if (observe) { + useMutationObserver(elRef, updateCssVar, { + attributeFilter: ["style", "class"], + window: window2 + }); + } + watch( + [elRef, () => toValue(prop)], + (_, old) => { + if (old[0] && old[1]) + old[0].style.removeProperty(old[1]); + updateCssVar(); + }, + { immediate: true } + ); + watch( + [variable, elRef], + ([val, el]) => { + const raw_prop = toValue(prop); + if ((el == null ? void 0 : el.style) && raw_prop) { + if (val == null) + el.style.removeProperty(raw_prop); + else + el.style.setProperty(raw_prop, val); + } + }, + { immediate: true } + ); + return variable; +} +function useCurrentElement(rootComponent) { + const vm = getCurrentInstance(); + const currentElement = computedWithControl( + () => null, + () => rootComponent ? unrefElement(rootComponent) : vm.proxy.$el + ); + onUpdated(currentElement.trigger); + onMounted(currentElement.trigger); + return currentElement; +} +function useCycleList(list, options) { + const state = shallowRef(getInitialValue()); + const listRef = toRef2(list); + const index = computed({ + get() { + var _a; + const targetList = listRef.value; + let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value); + if (index2 < 0) + index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0; + return index2; + }, + set(v) { + set2(v); + } + }); + function set2(i) { + const targetList = listRef.value; + const length = targetList.length; + const index2 = (i % length + length) % length; + const value = targetList[index2]; + state.value = value; + return value; + } + function shift(delta = 1) { + return set2(index.value + delta); + } + function next(n = 1) { + return shift(n); + } + function prev(n = 1) { + return shift(-n); + } + function getInitialValue() { + var _a, _b; + return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0; + } + watch(listRef, () => set2(index.value)); + return { + state, + index, + next, + prev, + go: set2 + }; +} +function useDark(options = {}) { + const { + valueDark = "dark", + valueLight = "" + } = options; + const mode = useColorMode({ + ...options, + onChanged: (mode2, defaultHandler) => { + var _a; + if (options.onChanged) + (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === "dark", defaultHandler, mode2); + else + defaultHandler(mode2); + }, + modes: { + dark: valueDark, + light: valueLight + } + }); + const system = computed(() => mode.system.value); + const isDark = computed({ + get() { + return mode.value === "dark"; + }, + set(v) { + const modeVal = v ? "dark" : "light"; + if (system.value === modeVal) + mode.value = "auto"; + else + mode.value = modeVal; + } + }); + return isDark; +} +function fnBypass(v) { + return v; +} +function fnSetSource(source, value) { + return source.value = value; +} +function defaultDump(clone) { + return clone ? typeof clone === "function" ? clone : cloneFnJSON : fnBypass; +} +function defaultParse(clone) { + return clone ? typeof clone === "function" ? clone : cloneFnJSON : fnBypass; +} +function useManualRefHistory(source, options = {}) { + const { + clone = false, + dump = defaultDump(clone), + parse = defaultParse(clone), + setSource = fnSetSource + } = options; + function _createHistoryRecord() { + return markRaw({ + snapshot: dump(source.value), + timestamp: timestamp() + }); + } + const last = ref(_createHistoryRecord()); + const undoStack = ref([]); + const redoStack = ref([]); + const _setSource = (record) => { + setSource(source, parse(record.snapshot)); + last.value = record; + }; + const commit = () => { + undoStack.value.unshift(last.value); + last.value = _createHistoryRecord(); + if (options.capacity && undoStack.value.length > options.capacity) + undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY); + if (redoStack.value.length) + redoStack.value.splice(0, redoStack.value.length); + }; + const clear = () => { + undoStack.value.splice(0, undoStack.value.length); + redoStack.value.splice(0, redoStack.value.length); + }; + const undo = () => { + const state = undoStack.value.shift(); + if (state) { + redoStack.value.unshift(last.value); + _setSource(state); + } + }; + const redo = () => { + const state = redoStack.value.shift(); + if (state) { + undoStack.value.unshift(last.value); + _setSource(state); + } + }; + const reset = () => { + _setSource(last.value); + }; + const history = computed(() => [last.value, ...undoStack.value]); + const canUndo = computed(() => undoStack.value.length > 0); + const canRedo = computed(() => redoStack.value.length > 0); + return { + source, + undoStack, + redoStack, + last, + history, + canUndo, + canRedo, + clear, + commit, + reset, + undo, + redo + }; +} +function useRefHistory(source, options = {}) { + const { + deep = false, + flush = "pre", + eventFilter + } = options; + const { + eventFilter: composedFilter, + pause, + resume: resumeTracking, + isActive: isTracking + } = pausableFilter(eventFilter); + const { + ignoreUpdates, + ignorePrevAsyncUpdates, + stop + } = watchIgnorable( + source, + commit, + { deep, flush, eventFilter: composedFilter } + ); + function setSource(source2, value) { + ignorePrevAsyncUpdates(); + ignoreUpdates(() => { + source2.value = value; + }); + } + const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource }); + const { clear, commit: manualCommit } = manualHistory; + function commit() { + ignorePrevAsyncUpdates(); + manualCommit(); + } + function resume(commitNow) { + resumeTracking(); + if (commitNow) + commit(); + } + function batch(fn) { + let canceled = false; + const cancel = () => canceled = true; + ignoreUpdates(() => { + fn(cancel); + }); + if (!canceled) + commit(); + } + function dispose() { + stop(); + clear(); + } + return { + ...manualHistory, + isTracking, + pause, + resume, + commit, + batch, + dispose + }; +} +function useDebouncedRefHistory(source, options = {}) { + const filter = options.debounce ? debounceFilter(options.debounce) : void 0; + const history = useRefHistory(source, { ...options, eventFilter: filter }); + return { + ...history + }; +} +function useDeviceMotion(options = {}) { + const { + window: window2 = defaultWindow, + requestPermissions = false, + eventFilter = bypassFilter + } = options; + const isSupported = useSupported(() => typeof DeviceMotionEvent !== "undefined"); + const requirePermissions = useSupported(() => isSupported.value && "requestPermission" in DeviceMotionEvent && typeof DeviceMotionEvent.requestPermission === "function"); + const permissionGranted = shallowRef(false); + const acceleration = ref({ x: null, y: null, z: null }); + const rotationRate = ref({ alpha: null, beta: null, gamma: null }); + const interval = shallowRef(0); + const accelerationIncludingGravity = ref({ + x: null, + y: null, + z: null + }); + function init() { + if (window2) { + const onDeviceMotion = createFilterWrapper( + eventFilter, + (event) => { + var _a, _b, _c, _d, _e, _f, _g, _h, _i; + acceleration.value = { + x: ((_a = event.acceleration) == null ? void 0 : _a.x) || null, + y: ((_b = event.acceleration) == null ? void 0 : _b.y) || null, + z: ((_c = event.acceleration) == null ? void 0 : _c.z) || null + }; + accelerationIncludingGravity.value = { + x: ((_d = event.accelerationIncludingGravity) == null ? void 0 : _d.x) || null, + y: ((_e = event.accelerationIncludingGravity) == null ? void 0 : _e.y) || null, + z: ((_f = event.accelerationIncludingGravity) == null ? void 0 : _f.z) || null + }; + rotationRate.value = { + alpha: ((_g = event.rotationRate) == null ? void 0 : _g.alpha) || null, + beta: ((_h = event.rotationRate) == null ? void 0 : _h.beta) || null, + gamma: ((_i = event.rotationRate) == null ? void 0 : _i.gamma) || null + }; + interval.value = event.interval; + } + ); + useEventListener(window2, "devicemotion", onDeviceMotion, { passive: true }); + } + } + const ensurePermissions = async () => { + if (!requirePermissions.value) + permissionGranted.value = true; + if (permissionGranted.value) + return; + if (requirePermissions.value) { + const requestPermission = DeviceMotionEvent.requestPermission; + try { + const response = await requestPermission(); + if (response === "granted") { + permissionGranted.value = true; + init(); + } + } catch (error) { + console.error(error); + } + } + }; + if (isSupported.value) { + if (requestPermissions && requirePermissions.value) { + ensurePermissions().then(() => init()); + } else { + init(); + } + } + return { + acceleration, + accelerationIncludingGravity, + rotationRate, + interval, + isSupported, + requirePermissions, + ensurePermissions, + permissionGranted + }; +} +function useDeviceOrientation(options = {}) { + const { window: window2 = defaultWindow } = options; + const isSupported = useSupported(() => window2 && "DeviceOrientationEvent" in window2); + const isAbsolute = shallowRef(false); + const alpha = shallowRef(null); + const beta = shallowRef(null); + const gamma = shallowRef(null); + if (window2 && isSupported.value) { + useEventListener(window2, "deviceorientation", (event) => { + isAbsolute.value = event.absolute; + alpha.value = event.alpha; + beta.value = event.beta; + gamma.value = event.gamma; + }, { passive: true }); + } + return { + isSupported, + isAbsolute, + alpha, + beta, + gamma + }; +} +function useDevicePixelRatio(options = {}) { + const { + window: window2 = defaultWindow + } = options; + const pixelRatio = shallowRef(1); + const query = useMediaQuery(() => `(resolution: ${pixelRatio.value}dppx)`, options); + let stop = noop; + if (window2) { + stop = watchImmediate(query, () => pixelRatio.value = window2.devicePixelRatio); + } + return { + pixelRatio: readonly(pixelRatio), + stop + }; +} +function useDevicesList(options = {}) { + const { + navigator: navigator2 = defaultNavigator, + requestPermissions = false, + constraints = { audio: true, video: true }, + onUpdated: onUpdated2 + } = options; + const devices = ref([]); + const videoInputs = computed(() => devices.value.filter((i) => i.kind === "videoinput")); + const audioInputs = computed(() => devices.value.filter((i) => i.kind === "audioinput")); + const audioOutputs = computed(() => devices.value.filter((i) => i.kind === "audiooutput")); + const isSupported = useSupported(() => navigator2 && navigator2.mediaDevices && navigator2.mediaDevices.enumerateDevices); + const permissionGranted = shallowRef(false); + let stream; + async function update() { + if (!isSupported.value) + return; + devices.value = await navigator2.mediaDevices.enumerateDevices(); + onUpdated2 == null ? void 0 : onUpdated2(devices.value); + if (stream) { + stream.getTracks().forEach((t) => t.stop()); + stream = null; + } + } + async function ensurePermissions() { + const deviceName = constraints.video ? "camera" : "microphone"; + if (!isSupported.value) + return false; + if (permissionGranted.value) + return true; + const { state, query } = usePermission(deviceName, { controls: true }); + await query(); + if (state.value !== "granted") { + let granted = true; + try { + stream = await navigator2.mediaDevices.getUserMedia(constraints); + } catch (e) { + stream = null; + granted = false; + } + update(); + permissionGranted.value = granted; + } else { + permissionGranted.value = true; + } + return permissionGranted.value; + } + if (isSupported.value) { + if (requestPermissions) + ensurePermissions(); + useEventListener(navigator2.mediaDevices, "devicechange", update, { passive: true }); + update(); + } + return { + devices, + ensurePermissions, + permissionGranted, + videoInputs, + audioInputs, + audioOutputs, + isSupported + }; +} +function useDisplayMedia(options = {}) { + var _a; + const enabled = shallowRef((_a = options.enabled) != null ? _a : false); + const video = options.video; + const audio = options.audio; + const { navigator: navigator2 = defaultNavigator } = options; + const isSupported = useSupported(() => { + var _a2; + return (_a2 = navigator2 == null ? void 0 : navigator2.mediaDevices) == null ? void 0 : _a2.getDisplayMedia; + }); + const constraint = { audio, video }; + const stream = shallowRef(); + async function _start() { + var _a2; + if (!isSupported.value || stream.value) + return; + stream.value = await navigator2.mediaDevices.getDisplayMedia(constraint); + (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => useEventListener(t, "ended", stop, { passive: true })); + return stream.value; + } + async function _stop() { + var _a2; + (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop()); + stream.value = void 0; + } + function stop() { + _stop(); + enabled.value = false; + } + async function start() { + await _start(); + if (stream.value) + enabled.value = true; + return stream.value; + } + watch( + enabled, + (v) => { + if (v) + _start(); + else + _stop(); + }, + { immediate: true } + ); + return { + isSupported, + stream, + start, + stop, + enabled + }; +} +function useDocumentVisibility(options = {}) { + const { document: document2 = defaultDocument } = options; + if (!document2) + return shallowRef("visible"); + const visibility = shallowRef(document2.visibilityState); + useEventListener(document2, "visibilitychange", () => { + visibility.value = document2.visibilityState; + }, { passive: true }); + return visibility; +} +function useDraggable(target, options = {}) { + var _a; + const { + pointerTypes, + preventDefault: preventDefault2, + stopPropagation, + exact, + onMove, + onEnd, + onStart, + initialValue, + axis = "both", + draggingElement = defaultWindow, + containerElement, + handle: draggingHandle = target, + buttons = [0] + } = options; + const position = ref( + (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 } + ); + const pressedDelta = ref(); + const filterEvent = (e) => { + if (pointerTypes) + return pointerTypes.includes(e.pointerType); + return true; + }; + const handleEvent = (e) => { + if (toValue(preventDefault2)) + e.preventDefault(); + if (toValue(stopPropagation)) + e.stopPropagation(); + }; + const start = (e) => { + var _a2; + if (!toValue(buttons).includes(e.button)) + return; + if (toValue(options.disabled) || !filterEvent(e)) + return; + if (toValue(exact) && e.target !== toValue(target)) + return; + const container = toValue(containerElement); + const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container); + const targetRect = toValue(target).getBoundingClientRect(); + const pos = { + x: e.clientX - (container ? targetRect.left - containerRect.left + container.scrollLeft : targetRect.left), + y: e.clientY - (container ? targetRect.top - containerRect.top + container.scrollTop : targetRect.top) + }; + if ((onStart == null ? void 0 : onStart(pos, e)) === false) + return; + pressedDelta.value = pos; + handleEvent(e); + }; + const move = (e) => { + if (toValue(options.disabled) || !filterEvent(e)) + return; + if (!pressedDelta.value) + return; + const container = toValue(containerElement); + const targetRect = toValue(target).getBoundingClientRect(); + let { x, y } = position.value; + if (axis === "x" || axis === "both") { + x = e.clientX - pressedDelta.value.x; + if (container) + x = Math.min(Math.max(0, x), container.scrollWidth - targetRect.width); + } + if (axis === "y" || axis === "both") { + y = e.clientY - pressedDelta.value.y; + if (container) + y = Math.min(Math.max(0, y), container.scrollHeight - targetRect.height); + } + position.value = { + x, + y + }; + onMove == null ? void 0 : onMove(position.value, e); + handleEvent(e); + }; + const end = (e) => { + if (toValue(options.disabled) || !filterEvent(e)) + return; + if (!pressedDelta.value) + return; + pressedDelta.value = void 0; + onEnd == null ? void 0 : onEnd(position.value, e); + handleEvent(e); + }; + if (isClient) { + const config = () => { + var _a2; + return { + capture: (_a2 = options.capture) != null ? _a2 : true, + passive: !toValue(preventDefault2) + }; + }; + useEventListener(draggingHandle, "pointerdown", start, config); + useEventListener(draggingElement, "pointermove", move, config); + useEventListener(draggingElement, "pointerup", end, config); + } + return { + ...toRefs2(position), + position, + isDragging: computed(() => !!pressedDelta.value), + style: computed( + () => `left:${position.value.x}px;top:${position.value.y}px;` + ) + }; +} +function useDropZone(target, options = {}) { + var _a, _b; + const isOverDropZone = shallowRef(false); + const files = shallowRef(null); + let counter = 0; + let isValid = true; + if (isClient) { + const _options = typeof options === "function" ? { onDrop: options } : options; + const multiple = (_a = _options.multiple) != null ? _a : true; + const preventDefaultForUnhandled = (_b = _options.preventDefaultForUnhandled) != null ? _b : false; + const getFiles = (event) => { + var _a2, _b2; + const list = Array.from((_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.files) != null ? _b2 : []); + return list.length === 0 ? null : multiple ? list : [list[0]]; + }; + const checkDataTypes = (types) => { + const dataTypes = unref(_options.dataTypes); + if (typeof dataTypes === "function") + return dataTypes(types); + if (!(dataTypes == null ? void 0 : dataTypes.length)) + return true; + if (types.length === 0) + return false; + return types.every( + (type) => dataTypes.some((allowedType) => type.includes(allowedType)) + ); + }; + const checkValidity = (items) => { + const types = Array.from(items != null ? items : []).map((item) => item.type); + const dataTypesValid = checkDataTypes(types); + const multipleFilesValid = multiple || items.length <= 1; + return dataTypesValid && multipleFilesValid; + }; + const isSafari = () => /^(?:(?!chrome|android).)*safari/i.test(navigator.userAgent) && !("chrome" in window); + const handleDragEvent = (event, eventType) => { + var _a2, _b2, _c, _d, _e, _f; + const dataTransferItemList = (_a2 = event.dataTransfer) == null ? void 0 : _a2.items; + isValid = (_b2 = dataTransferItemList && checkValidity(dataTransferItemList)) != null ? _b2 : false; + if (preventDefaultForUnhandled) { + event.preventDefault(); + } + if (!isSafari() && !isValid) { + if (event.dataTransfer) { + event.dataTransfer.dropEffect = "none"; + } + return; + } + event.preventDefault(); + if (event.dataTransfer) { + event.dataTransfer.dropEffect = "copy"; + } + const currentFiles = getFiles(event); + switch (eventType) { + case "enter": + counter += 1; + isOverDropZone.value = true; + (_c = _options.onEnter) == null ? void 0 : _c.call(_options, null, event); + break; + case "over": + (_d = _options.onOver) == null ? void 0 : _d.call(_options, null, event); + break; + case "leave": + counter -= 1; + if (counter === 0) + isOverDropZone.value = false; + (_e = _options.onLeave) == null ? void 0 : _e.call(_options, null, event); + break; + case "drop": + counter = 0; + isOverDropZone.value = false; + if (isValid) { + files.value = currentFiles; + (_f = _options.onDrop) == null ? void 0 : _f.call(_options, currentFiles, event); + } + break; + } + }; + useEventListener(target, "dragenter", (event) => handleDragEvent(event, "enter")); + useEventListener(target, "dragover", (event) => handleDragEvent(event, "over")); + useEventListener(target, "dragleave", (event) => handleDragEvent(event, "leave")); + useEventListener(target, "drop", (event) => handleDragEvent(event, "drop")); + } + return { + files, + isOverDropZone + }; +} +function useResizeObserver(target, callback, options = {}) { + const { window: window2 = defaultWindow, ...observerOptions } = options; + let observer; + const isSupported = useSupported(() => window2 && "ResizeObserver" in window2); + const cleanup = () => { + if (observer) { + observer.disconnect(); + observer = void 0; + } + }; + const targets = computed(() => { + const _targets = toValue(target); + return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)]; + }); + const stopWatch = watch( + targets, + (els) => { + cleanup(); + if (isSupported.value && window2) { + observer = new ResizeObserver(callback); + for (const _el of els) { + if (_el) + observer.observe(_el, observerOptions); + } + } + }, + { immediate: true, flush: "post" } + ); + const stop = () => { + cleanup(); + stopWatch(); + }; + tryOnScopeDispose(stop); + return { + isSupported, + stop + }; +} +function useElementBounding(target, options = {}) { + const { + reset = true, + windowResize = true, + windowScroll = true, + immediate = true, + updateTiming = "sync" + } = options; + const height = shallowRef(0); + const bottom = shallowRef(0); + const left = shallowRef(0); + const right = shallowRef(0); + const top = shallowRef(0); + const width = shallowRef(0); + const x = shallowRef(0); + const y = shallowRef(0); + function recalculate() { + const el = unrefElement(target); + if (!el) { + if (reset) { + height.value = 0; + bottom.value = 0; + left.value = 0; + right.value = 0; + top.value = 0; + width.value = 0; + x.value = 0; + y.value = 0; + } + return; + } + const rect = el.getBoundingClientRect(); + height.value = rect.height; + bottom.value = rect.bottom; + left.value = rect.left; + right.value = rect.right; + top.value = rect.top; + width.value = rect.width; + x.value = rect.x; + y.value = rect.y; + } + function update() { + if (updateTiming === "sync") + recalculate(); + else if (updateTiming === "next-frame") + requestAnimationFrame(() => recalculate()); + } + useResizeObserver(target, update); + watch(() => unrefElement(target), (ele) => !ele && update()); + useMutationObserver(target, update, { + attributeFilter: ["style", "class"] + }); + if (windowScroll) + useEventListener("scroll", update, { capture: true, passive: true }); + if (windowResize) + useEventListener("resize", update, { passive: true }); + tryOnMounted(() => { + if (immediate) + update(); + }); + return { + height, + bottom, + left, + right, + top, + width, + x, + y, + update + }; +} +function useElementByPoint(options) { + const { + x, + y, + document: document2 = defaultDocument, + multiple, + interval = "requestAnimationFrame", + immediate = true + } = options; + const isSupported = useSupported(() => { + if (toValue(multiple)) + return document2 && "elementsFromPoint" in document2; + return document2 && "elementFromPoint" in document2; + }); + const element = shallowRef(null); + const cb = () => { + var _a, _b; + element.value = toValue(multiple) ? (_a = document2 == null ? void 0 : document2.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document2 == null ? void 0 : document2.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null; + }; + const controls = interval === "requestAnimationFrame" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate }); + return { + isSupported, + element, + ...controls + }; +} +function useElementHover(el, options = {}) { + const { + delayEnter = 0, + delayLeave = 0, + triggerOnRemoval = false, + window: window2 = defaultWindow + } = options; + const isHovered = shallowRef(false); + let timer; + const toggle = (entering) => { + const delay = entering ? delayEnter : delayLeave; + if (timer) { + clearTimeout(timer); + timer = void 0; + } + if (delay) + timer = setTimeout(() => isHovered.value = entering, delay); + else + isHovered.value = entering; + }; + if (!window2) + return isHovered; + useEventListener(el, "mouseenter", () => toggle(true), { passive: true }); + useEventListener(el, "mouseleave", () => toggle(false), { passive: true }); + if (triggerOnRemoval) { + onElementRemoval( + computed(() => unrefElement(el)), + () => toggle(false) + ); + } + return isHovered; +} +function useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) { + const { window: window2 = defaultWindow, box = "content-box" } = options; + const isSVG = computed(() => { + var _a, _b; + return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes("svg"); + }); + const width = shallowRef(initialSize.width); + const height = shallowRef(initialSize.height); + const { stop: stop1 } = useResizeObserver( + target, + ([entry]) => { + const boxSize = box === "border-box" ? entry.borderBoxSize : box === "content-box" ? entry.contentBoxSize : entry.devicePixelContentBoxSize; + if (window2 && isSVG.value) { + const $elem = unrefElement(target); + if ($elem) { + const rect = $elem.getBoundingClientRect(); + width.value = rect.width; + height.value = rect.height; + } + } else { + if (boxSize) { + const formatBoxSize = toArray(boxSize); + width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0); + height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0); + } else { + width.value = entry.contentRect.width; + height.value = entry.contentRect.height; + } + } + }, + options + ); + tryOnMounted(() => { + const ele = unrefElement(target); + if (ele) { + width.value = "offsetWidth" in ele ? ele.offsetWidth : initialSize.width; + height.value = "offsetHeight" in ele ? ele.offsetHeight : initialSize.height; + } + }); + const stop2 = watch( + () => unrefElement(target), + (ele) => { + width.value = ele ? initialSize.width : 0; + height.value = ele ? initialSize.height : 0; + } + ); + function stop() { + stop1(); + stop2(); + } + return { + width, + height, + stop + }; +} +function useIntersectionObserver(target, callback, options = {}) { + const { + root, + rootMargin = "0px", + threshold = 0, + window: window2 = defaultWindow, + immediate = true + } = options; + const isSupported = useSupported(() => window2 && "IntersectionObserver" in window2); + const targets = computed(() => { + const _target = toValue(target); + return toArray(_target).map(unrefElement).filter(notNullish); + }); + let cleanup = noop; + const isActive = shallowRef(immediate); + const stopWatch = isSupported.value ? watch( + () => [targets.value, unrefElement(root), isActive.value], + ([targets2, root2]) => { + cleanup(); + if (!isActive.value) + return; + if (!targets2.length) + return; + const observer = new IntersectionObserver( + callback, + { + root: unrefElement(root2), + rootMargin, + threshold + } + ); + targets2.forEach((el) => el && observer.observe(el)); + cleanup = () => { + observer.disconnect(); + cleanup = noop; + }; + }, + { immediate, flush: "post" } + ) : noop; + const stop = () => { + cleanup(); + stopWatch(); + isActive.value = false; + }; + tryOnScopeDispose(stop); + return { + isSupported, + isActive, + pause() { + cleanup(); + isActive.value = false; + }, + resume() { + isActive.value = true; + }, + stop + }; +} +function useElementVisibility(element, options = {}) { + const { + window: window2 = defaultWindow, + scrollTarget, + threshold = 0, + rootMargin, + once = false + } = options; + const elementIsVisible = shallowRef(false); + const { stop } = useIntersectionObserver( + element, + (intersectionObserverEntries) => { + let isIntersecting = elementIsVisible.value; + let latestTime = 0; + for (const entry of intersectionObserverEntries) { + if (entry.time >= latestTime) { + latestTime = entry.time; + isIntersecting = entry.isIntersecting; + } + } + elementIsVisible.value = isIntersecting; + if (once) { + watchOnce(elementIsVisible, () => { + stop(); + }); + } + }, + { + root: scrollTarget, + window: window2, + threshold, + rootMargin: toValue(rootMargin) + } + ); + return elementIsVisible; +} +var events = /* @__PURE__ */ new Map(); +function useEventBus(key) { + const scope = getCurrentScope(); + function on(listener) { + var _a; + const listeners = events.get(key) || /* @__PURE__ */ new Set(); + listeners.add(listener); + events.set(key, listeners); + const _off = () => off(listener); + (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off); + return _off; + } + function once(listener) { + function _listener(...args) { + off(_listener); + listener(...args); + } + return on(_listener); + } + function off(listener) { + const listeners = events.get(key); + if (!listeners) + return; + listeners.delete(listener); + if (!listeners.size) + reset(); + } + function reset() { + events.delete(key); + } + function emit(event, payload) { + var _a; + (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload)); + } + return { on, once, off, emit, reset }; +} +function resolveNestedOptions$1(options) { + if (options === true) + return {}; + return options; +} +function useEventSource(url, events2 = [], options = {}) { + const event = shallowRef(null); + const data = shallowRef(null); + const status = shallowRef("CONNECTING"); + const eventSource = ref(null); + const error = shallowRef(null); + const urlRef = toRef2(url); + const lastEventId = shallowRef(null); + let explicitlyClosed = false; + let retried = 0; + const { + withCredentials = false, + immediate = true, + autoConnect = true, + autoReconnect + } = options; + const close = () => { + if (isClient && eventSource.value) { + eventSource.value.close(); + eventSource.value = null; + status.value = "CLOSED"; + explicitlyClosed = true; + } + }; + const _init = () => { + if (explicitlyClosed || typeof urlRef.value === "undefined") + return; + const es = new EventSource(urlRef.value, { withCredentials }); + status.value = "CONNECTING"; + eventSource.value = es; + es.onopen = () => { + status.value = "OPEN"; + error.value = null; + }; + es.onerror = (e) => { + status.value = "CLOSED"; + error.value = e; + if (es.readyState === 2 && !explicitlyClosed && autoReconnect) { + es.close(); + const { + retries = -1, + delay = 1e3, + onFailed + } = resolveNestedOptions$1(autoReconnect); + retried += 1; + if (typeof retries === "number" && (retries < 0 || retried < retries)) + setTimeout(_init, delay); + else if (typeof retries === "function" && retries()) + setTimeout(_init, delay); + else + onFailed == null ? void 0 : onFailed(); + } + }; + es.onmessage = (e) => { + event.value = null; + data.value = e.data; + lastEventId.value = e.lastEventId; + }; + for (const event_name of events2) { + useEventListener(es, event_name, (e) => { + event.value = event_name; + data.value = e.data || null; + }, { passive: true }); + } + }; + const open = () => { + if (!isClient) + return; + close(); + explicitlyClosed = false; + retried = 0; + _init(); + }; + if (immediate) + open(); + if (autoConnect) + watch(urlRef, open); + tryOnScopeDispose(close); + return { + eventSource, + event, + data, + status, + error, + open, + close, + lastEventId + }; +} +function useEyeDropper(options = {}) { + const { initialValue = "" } = options; + const isSupported = useSupported(() => typeof window !== "undefined" && "EyeDropper" in window); + const sRGBHex = shallowRef(initialValue); + async function open(openOptions) { + if (!isSupported.value) + return; + const eyeDropper = new window.EyeDropper(); + const result = await eyeDropper.open(openOptions); + sRGBHex.value = result.sRGBHex; + return result; + } + return { isSupported, sRGBHex, open }; +} +function useFavicon(newIcon = null, options = {}) { + const { + baseUrl = "", + rel = "icon", + document: document2 = defaultDocument + } = options; + const favicon = toRef2(newIcon); + const applyIcon = (icon) => { + const elements = document2 == null ? void 0 : document2.head.querySelectorAll(`link[rel*="${rel}"]`); + if (!elements || elements.length === 0) { + const link = document2 == null ? void 0 : document2.createElement("link"); + if (link) { + link.rel = rel; + link.href = `${baseUrl}${icon}`; + link.type = `image/${icon.split(".").pop()}`; + document2 == null ? void 0 : document2.head.append(link); + } + return; + } + elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`); + }; + watch( + favicon, + (i, o) => { + if (typeof i === "string" && i !== o) + applyIcon(i); + }, + { immediate: true } + ); + return favicon; +} +var payloadMapping = { + json: "application/json", + text: "text/plain" +}; +function isFetchOptions(obj) { + return obj && containsProp(obj, "immediate", "refetch", "initialData", "timeout", "beforeFetch", "afterFetch", "onFetchError", "fetch", "updateDataOnError"); +} +var reAbsolute = /^(?:[a-z][a-z\d+\-.]*:)?\/\//i; +function isAbsoluteURL(url) { + return reAbsolute.test(url); +} +function headersToObject(headers) { + if (typeof Headers !== "undefined" && headers instanceof Headers) + return Object.fromEntries(headers.entries()); + return headers; +} +function combineCallbacks(combination, ...callbacks) { + if (combination === "overwrite") { + return async (ctx) => { + let callback; + for (let i = callbacks.length - 1; i >= 0; i--) { + if (callbacks[i] != null) { + callback = callbacks[i]; + break; + } + } + if (callback) + return { ...ctx, ...await callback(ctx) }; + return ctx; + }; + } else { + return async (ctx) => { + for (const callback of callbacks) { + if (callback) + ctx = { ...ctx, ...await callback(ctx) }; + } + return ctx; + }; + } +} +function createFetch(config = {}) { + const _combination = config.combination || "chain"; + const _options = config.options || {}; + const _fetchOptions = config.fetchOptions || {}; + function useFactoryFetch(url, ...args) { + const computedUrl = computed(() => { + const baseUrl = toValue(config.baseUrl); + const targetUrl = toValue(url); + return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl; + }); + let options = _options; + let fetchOptions = _fetchOptions; + if (args.length > 0) { + if (isFetchOptions(args[0])) { + options = { + ...options, + ...args[0], + beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch), + afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch), + onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError) + }; + } else { + fetchOptions = { + ...fetchOptions, + ...args[0], + headers: { + ...headersToObject(fetchOptions.headers) || {}, + ...headersToObject(args[0].headers) || {} + } + }; + } + } + if (args.length > 1 && isFetchOptions(args[1])) { + options = { + ...options, + ...args[1], + beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch), + afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch), + onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError) + }; + } + return useFetch(computedUrl, fetchOptions, options); + } + return useFactoryFetch; +} +function useFetch(url, ...args) { + var _a; + const supportsAbort = typeof AbortController === "function"; + let fetchOptions = {}; + let options = { + immediate: true, + refetch: false, + timeout: 0, + updateDataOnError: false + }; + const config = { + method: "GET", + type: "text", + payload: void 0 + }; + if (args.length > 0) { + if (isFetchOptions(args[0])) + options = { ...options, ...args[0] }; + else + fetchOptions = args[0]; + } + if (args.length > 1) { + if (isFetchOptions(args[1])) + options = { ...options, ...args[1] }; + } + const { + fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch, + initialData, + timeout + } = options; + const responseEvent = createEventHook(); + const errorEvent = createEventHook(); + const finallyEvent = createEventHook(); + const isFinished = shallowRef(false); + const isFetching = shallowRef(false); + const aborted = shallowRef(false); + const statusCode = shallowRef(null); + const response = shallowRef(null); + const error = shallowRef(null); + const data = shallowRef(initialData || null); + const canAbort = computed(() => supportsAbort && isFetching.value); + let controller; + let timer; + const abort = () => { + if (supportsAbort) { + controller == null ? void 0 : controller.abort(); + controller = new AbortController(); + controller.signal.onabort = () => aborted.value = true; + fetchOptions = { + ...fetchOptions, + signal: controller.signal + }; + } + }; + const loading = (isLoading) => { + isFetching.value = isLoading; + isFinished.value = !isLoading; + }; + if (timeout) + timer = useTimeoutFn(abort, timeout, { immediate: false }); + let executeCounter = 0; + const execute = async (throwOnFailed = false) => { + var _a2, _b; + abort(); + loading(true); + error.value = null; + statusCode.value = null; + aborted.value = false; + executeCounter += 1; + const currentExecuteCounter = executeCounter; + const defaultFetchOptions = { + method: config.method, + headers: {} + }; + const payload = toValue(config.payload); + if (payload) { + const headers = headersToObject(defaultFetchOptions.headers); + const proto = Object.getPrototypeOf(payload); + if (!config.payloadType && payload && (proto === Object.prototype || Array.isArray(proto)) && !(payload instanceof FormData)) + config.payloadType = "json"; + if (config.payloadType) + headers["Content-Type"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType; + defaultFetchOptions.body = config.payloadType === "json" ? JSON.stringify(payload) : payload; + } + let isCanceled = false; + const context = { + url: toValue(url), + options: { + ...defaultFetchOptions, + ...fetchOptions + }, + cancel: () => { + isCanceled = true; + } + }; + if (options.beforeFetch) + Object.assign(context, await options.beforeFetch(context)); + if (isCanceled || !fetch) { + loading(false); + return Promise.resolve(null); + } + let responseData = null; + if (timer) + timer.start(); + return fetch( + context.url, + { + ...defaultFetchOptions, + ...context.options, + headers: { + ...headersToObject(defaultFetchOptions.headers), + ...headersToObject((_b = context.options) == null ? void 0 : _b.headers) + } + } + ).then(async (fetchResponse) => { + response.value = fetchResponse; + statusCode.value = fetchResponse.status; + responseData = await fetchResponse.clone()[config.type](); + if (!fetchResponse.ok) { + data.value = initialData || null; + throw new Error(fetchResponse.statusText); + } + if (options.afterFetch) { + ({ data: responseData } = await options.afterFetch({ + data: responseData, + response: fetchResponse, + context, + execute + })); + } + data.value = responseData; + responseEvent.trigger(fetchResponse); + return fetchResponse; + }).catch(async (fetchError) => { + let errorData = fetchError.message || fetchError.name; + if (options.onFetchError) { + ({ error: errorData, data: responseData } = await options.onFetchError({ + data: responseData, + error: fetchError, + response: response.value, + context, + execute + })); + } + error.value = errorData; + if (options.updateDataOnError) + data.value = responseData; + errorEvent.trigger(fetchError); + if (throwOnFailed) + throw fetchError; + return null; + }).finally(() => { + if (currentExecuteCounter === executeCounter) + loading(false); + if (timer) + timer.stop(); + finallyEvent.trigger(null); + }); + }; + const refetch = toRef2(options.refetch); + watch( + [ + refetch, + toRef2(url) + ], + ([refetch2]) => refetch2 && execute(), + { deep: true } + ); + const shell = { + isFinished: readonly(isFinished), + isFetching: readonly(isFetching), + statusCode, + response, + error, + data, + canAbort, + aborted, + abort, + execute, + onFetchResponse: responseEvent.on, + onFetchError: errorEvent.on, + onFetchFinally: finallyEvent.on, + // method + get: setMethod("GET"), + put: setMethod("PUT"), + post: setMethod("POST"), + delete: setMethod("DELETE"), + patch: setMethod("PATCH"), + head: setMethod("HEAD"), + options: setMethod("OPTIONS"), + // type + json: setType("json"), + text: setType("text"), + blob: setType("blob"), + arrayBuffer: setType("arrayBuffer"), + formData: setType("formData") + }; + function setMethod(method) { + return (payload, payloadType) => { + if (!isFetching.value) { + config.method = method; + config.payload = payload; + config.payloadType = payloadType; + if (isRef(config.payload)) { + watch( + [ + refetch, + toRef2(config.payload) + ], + ([refetch2]) => refetch2 && execute(), + { deep: true } + ); + } + return { + ...shell, + then(onFulfilled, onRejected) { + return waitUntilFinished().then(onFulfilled, onRejected); + } + }; + } + return void 0; + }; + } + function waitUntilFinished() { + return new Promise((resolve, reject) => { + until(isFinished).toBe(true).then(() => resolve(shell)).catch(reject); + }); + } + function setType(type) { + return () => { + if (!isFetching.value) { + config.type = type; + return { + ...shell, + then(onFulfilled, onRejected) { + return waitUntilFinished().then(onFulfilled, onRejected); + } + }; + } + return void 0; + }; + } + if (options.immediate) + Promise.resolve().then(() => execute()); + return { + ...shell, + then(onFulfilled, onRejected) { + return waitUntilFinished().then(onFulfilled, onRejected); + } + }; +} +function joinPaths(start, end) { + if (!start.endsWith("/") && !end.startsWith("/")) { + return `${start}/${end}`; + } + if (start.endsWith("/") && end.startsWith("/")) { + return `${start.slice(0, -1)}${end}`; + } + return `${start}${end}`; +} +var DEFAULT_OPTIONS = { + multiple: true, + accept: "*", + reset: false, + directory: false +}; +function prepareInitialFiles(files) { + if (!files) + return null; + if (files instanceof FileList) + return files; + const dt = new DataTransfer(); + for (const file of files) { + dt.items.add(file); + } + return dt.files; +} +function useFileDialog(options = {}) { + const { + document: document2 = defaultDocument + } = options; + const files = ref(prepareInitialFiles(options.initialFiles)); + const { on: onChange, trigger: changeTrigger } = createEventHook(); + const { on: onCancel, trigger: cancelTrigger } = createEventHook(); + let input; + if (document2) { + input = document2.createElement("input"); + input.type = "file"; + input.onchange = (event) => { + const result = event.target; + files.value = result.files; + changeTrigger(files.value); + }; + input.oncancel = () => { + cancelTrigger(); + }; + } + const reset = () => { + files.value = null; + if (input && input.value) { + input.value = ""; + changeTrigger(null); + } + }; + const open = (localOptions) => { + if (!input) + return; + const _options = { + ...DEFAULT_OPTIONS, + ...options, + ...localOptions + }; + input.multiple = _options.multiple; + input.accept = _options.accept; + input.webkitdirectory = _options.directory; + if (hasOwn(_options, "capture")) + input.capture = _options.capture; + if (_options.reset) + reset(); + input.click(); + }; + return { + files: readonly(files), + open, + reset, + onCancel, + onChange + }; +} +function useFileSystemAccess(options = {}) { + const { + window: _window = defaultWindow, + dataType = "Text" + } = options; + const window2 = _window; + const isSupported = useSupported(() => window2 && "showSaveFilePicker" in window2 && "showOpenFilePicker" in window2); + const fileHandle = shallowRef(); + const data = shallowRef(); + const file = shallowRef(); + const fileName = computed(() => { + var _a, _b; + return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : ""; + }); + const fileMIME = computed(() => { + var _a, _b; + return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : ""; + }); + const fileSize = computed(() => { + var _a, _b; + return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0; + }); + const fileLastModified = computed(() => { + var _a, _b; + return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0; + }); + async function open(_options = {}) { + if (!isSupported.value) + return; + const [handle] = await window2.showOpenFilePicker({ ...toValue(options), ..._options }); + fileHandle.value = handle; + await updateData(); + } + async function create(_options = {}) { + if (!isSupported.value) + return; + fileHandle.value = await window2.showSaveFilePicker({ ...options, ..._options }); + data.value = void 0; + await updateData(); + } + async function save(_options = {}) { + if (!isSupported.value) + return; + if (!fileHandle.value) + return saveAs(_options); + if (data.value) { + const writableStream = await fileHandle.value.createWritable(); + await writableStream.write(data.value); + await writableStream.close(); + } + await updateFile(); + } + async function saveAs(_options = {}) { + if (!isSupported.value) + return; + fileHandle.value = await window2.showSaveFilePicker({ ...options, ..._options }); + if (data.value) { + const writableStream = await fileHandle.value.createWritable(); + await writableStream.write(data.value); + await writableStream.close(); + } + await updateFile(); + } + async function updateFile() { + var _a; + file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile()); + } + async function updateData() { + var _a, _b; + await updateFile(); + const type = toValue(dataType); + if (type === "Text") + data.value = await ((_a = file.value) == null ? void 0 : _a.text()); + else if (type === "ArrayBuffer") + data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer()); + else if (type === "Blob") + data.value = file.value; + } + watch(() => toValue(dataType), updateData); + return { + isSupported, + data, + file, + fileName, + fileMIME, + fileSize, + fileLastModified, + open, + create, + save, + saveAs, + updateData + }; +} +function useFocus(target, options = {}) { + const { initialValue = false, focusVisible = false, preventScroll = false } = options; + const innerFocused = shallowRef(false); + const targetElement = computed(() => unrefElement(target)); + const listenerOptions = { passive: true }; + useEventListener(targetElement, "focus", (event) => { + var _a, _b; + if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, ":focus-visible"))) + innerFocused.value = true; + }, listenerOptions); + useEventListener(targetElement, "blur", () => innerFocused.value = false, listenerOptions); + const focused = computed({ + get: () => innerFocused.value, + set(value) { + var _a, _b; + if (!value && innerFocused.value) + (_a = targetElement.value) == null ? void 0 : _a.blur(); + else if (value && !innerFocused.value) + (_b = targetElement.value) == null ? void 0 : _b.focus({ preventScroll }); + } + }); + watch( + targetElement, + () => { + focused.value = initialValue; + }, + { immediate: true, flush: "post" } + ); + return { focused }; +} +var EVENT_FOCUS_IN = "focusin"; +var EVENT_FOCUS_OUT = "focusout"; +var PSEUDO_CLASS_FOCUS_WITHIN = ":focus-within"; +function useFocusWithin(target, options = {}) { + const { window: window2 = defaultWindow } = options; + const targetElement = computed(() => unrefElement(target)); + const _focused = shallowRef(false); + const focused = computed(() => _focused.value); + const activeElement = useActiveElement(options); + if (!window2 || !activeElement.value) { + return { focused }; + } + const listenerOptions = { passive: true }; + useEventListener(targetElement, EVENT_FOCUS_IN, () => _focused.value = true, listenerOptions); + useEventListener(targetElement, EVENT_FOCUS_OUT, () => { + var _a, _b, _c; + return _focused.value = (_c = (_b = (_a = targetElement.value) == null ? void 0 : _a.matches) == null ? void 0 : _b.call(_a, PSEUDO_CLASS_FOCUS_WITHIN)) != null ? _c : false; + }, listenerOptions); + return { focused }; +} +function useFps(options) { + var _a; + const fps = shallowRef(0); + if (typeof performance === "undefined") + return fps; + const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10; + let last = performance.now(); + let ticks = 0; + useRafFn(() => { + ticks += 1; + if (ticks >= every) { + const now2 = performance.now(); + const diff = now2 - last; + fps.value = Math.round(1e3 / (diff / ticks)); + last = now2; + ticks = 0; + } + }); + return fps; +} +var eventHandlers = [ + "fullscreenchange", + "webkitfullscreenchange", + "webkitendfullscreen", + "mozfullscreenchange", + "MSFullscreenChange" +]; +function useFullscreen(target, options = {}) { + const { + document: document2 = defaultDocument, + autoExit = false + } = options; + const targetRef = computed(() => { + var _a; + return (_a = unrefElement(target)) != null ? _a : document2 == null ? void 0 : document2.documentElement; + }); + const isFullscreen = shallowRef(false); + const requestMethod = computed(() => { + return [ + "requestFullscreen", + "webkitRequestFullscreen", + "webkitEnterFullscreen", + "webkitEnterFullScreen", + "webkitRequestFullScreen", + "mozRequestFullScreen", + "msRequestFullscreen" + ].find((m) => document2 && m in document2 || targetRef.value && m in targetRef.value); + }); + const exitMethod = computed(() => { + return [ + "exitFullscreen", + "webkitExitFullscreen", + "webkitExitFullScreen", + "webkitCancelFullScreen", + "mozCancelFullScreen", + "msExitFullscreen" + ].find((m) => document2 && m in document2 || targetRef.value && m in targetRef.value); + }); + const fullscreenEnabled = computed(() => { + return [ + "fullScreen", + "webkitIsFullScreen", + "webkitDisplayingFullscreen", + "mozFullScreen", + "msFullscreenElement" + ].find((m) => document2 && m in document2 || targetRef.value && m in targetRef.value); + }); + const fullscreenElementMethod = [ + "fullscreenElement", + "webkitFullscreenElement", + "mozFullScreenElement", + "msFullscreenElement" + ].find((m) => document2 && m in document2); + const isSupported = useSupported(() => targetRef.value && document2 && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0); + const isCurrentElementFullScreen = () => { + if (fullscreenElementMethod) + return (document2 == null ? void 0 : document2[fullscreenElementMethod]) === targetRef.value; + return false; + }; + const isElementFullScreen = () => { + if (fullscreenEnabled.value) { + if (document2 && document2[fullscreenEnabled.value] != null) { + return document2[fullscreenEnabled.value]; + } else { + const target2 = targetRef.value; + if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) { + return Boolean(target2[fullscreenEnabled.value]); + } + } + } + return false; + }; + async function exit() { + if (!isSupported.value || !isFullscreen.value) + return; + if (exitMethod.value) { + if ((document2 == null ? void 0 : document2[exitMethod.value]) != null) { + await document2[exitMethod.value](); + } else { + const target2 = targetRef.value; + if ((target2 == null ? void 0 : target2[exitMethod.value]) != null) + await target2[exitMethod.value](); + } + } + isFullscreen.value = false; + } + async function enter() { + if (!isSupported.value || isFullscreen.value) + return; + if (isElementFullScreen()) + await exit(); + const target2 = targetRef.value; + if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) { + await target2[requestMethod.value](); + isFullscreen.value = true; + } + } + async function toggle() { + await (isFullscreen.value ? exit() : enter()); + } + const handlerCallback = () => { + const isElementFullScreenValue = isElementFullScreen(); + if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen()) + isFullscreen.value = isElementFullScreenValue; + }; + const listenerOptions = { capture: false, passive: true }; + useEventListener(document2, eventHandlers, handlerCallback, listenerOptions); + useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, listenerOptions); + if (autoExit) + tryOnScopeDispose(exit); + return { + isSupported, + isFullscreen, + enter, + exit, + toggle + }; +} +function mapGamepadToXbox360Controller(gamepad) { + return computed(() => { + if (gamepad.value) { + return { + buttons: { + a: gamepad.value.buttons[0], + b: gamepad.value.buttons[1], + x: gamepad.value.buttons[2], + y: gamepad.value.buttons[3] + }, + bumper: { + left: gamepad.value.buttons[4], + right: gamepad.value.buttons[5] + }, + triggers: { + left: gamepad.value.buttons[6], + right: gamepad.value.buttons[7] + }, + stick: { + left: { + horizontal: gamepad.value.axes[0], + vertical: gamepad.value.axes[1], + button: gamepad.value.buttons[10] + }, + right: { + horizontal: gamepad.value.axes[2], + vertical: gamepad.value.axes[3], + button: gamepad.value.buttons[11] + } + }, + dpad: { + up: gamepad.value.buttons[12], + down: gamepad.value.buttons[13], + left: gamepad.value.buttons[14], + right: gamepad.value.buttons[15] + }, + back: gamepad.value.buttons[8], + start: gamepad.value.buttons[9] + }; + } + return null; + }); +} +function useGamepad(options = {}) { + const { + navigator: navigator2 = defaultNavigator + } = options; + const isSupported = useSupported(() => navigator2 && "getGamepads" in navigator2); + const gamepads = ref([]); + const onConnectedHook = createEventHook(); + const onDisconnectedHook = createEventHook(); + const stateFromGamepad = (gamepad) => { + const hapticActuators = []; + const vibrationActuator = "vibrationActuator" in gamepad ? gamepad.vibrationActuator : null; + if (vibrationActuator) + hapticActuators.push(vibrationActuator); + if (gamepad.hapticActuators) + hapticActuators.push(...gamepad.hapticActuators); + return { + id: gamepad.id, + index: gamepad.index, + connected: gamepad.connected, + mapping: gamepad.mapping, + timestamp: gamepad.timestamp, + vibrationActuator: gamepad.vibrationActuator, + hapticActuators, + axes: gamepad.axes.map((axes) => axes), + buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value })) + }; + }; + const updateGamepadState = () => { + const _gamepads = (navigator2 == null ? void 0 : navigator2.getGamepads()) || []; + for (const gamepad of _gamepads) { + if (gamepad && gamepads.value[gamepad.index]) + gamepads.value[gamepad.index] = stateFromGamepad(gamepad); + } + }; + const { isActive, pause, resume } = useRafFn(updateGamepadState); + const onGamepadConnected = (gamepad) => { + if (!gamepads.value.some(({ index }) => index === gamepad.index)) { + gamepads.value.push(stateFromGamepad(gamepad)); + onConnectedHook.trigger(gamepad.index); + } + resume(); + }; + const onGamepadDisconnected = (gamepad) => { + gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index); + onDisconnectedHook.trigger(gamepad.index); + }; + const listenerOptions = { passive: true }; + useEventListener("gamepadconnected", (e) => onGamepadConnected(e.gamepad), listenerOptions); + useEventListener("gamepaddisconnected", (e) => onGamepadDisconnected(e.gamepad), listenerOptions); + tryOnMounted(() => { + const _gamepads = (navigator2 == null ? void 0 : navigator2.getGamepads()) || []; + for (const gamepad of _gamepads) { + if (gamepad && gamepads.value[gamepad.index]) + onGamepadConnected(gamepad); + } + }); + pause(); + return { + isSupported, + onConnected: onConnectedHook.on, + onDisconnected: onDisconnectedHook.on, + gamepads, + pause, + resume, + isActive + }; +} +function useGeolocation(options = {}) { + const { + enableHighAccuracy = true, + maximumAge = 3e4, + timeout = 27e3, + navigator: navigator2 = defaultNavigator, + immediate = true + } = options; + const isSupported = useSupported(() => navigator2 && "geolocation" in navigator2); + const locatedAt = shallowRef(null); + const error = shallowRef(null); + const coords = ref({ + accuracy: 0, + latitude: Number.POSITIVE_INFINITY, + longitude: Number.POSITIVE_INFINITY, + altitude: null, + altitudeAccuracy: null, + heading: null, + speed: null + }); + function updatePosition(position) { + locatedAt.value = position.timestamp; + coords.value = position.coords; + error.value = null; + } + let watcher; + function resume() { + if (isSupported.value) { + watcher = navigator2.geolocation.watchPosition( + updatePosition, + (err) => error.value = err, + { + enableHighAccuracy, + maximumAge, + timeout + } + ); + } + } + if (immediate) + resume(); + function pause() { + if (watcher && navigator2) + navigator2.geolocation.clearWatch(watcher); + } + tryOnScopeDispose(() => { + pause(); + }); + return { + isSupported, + coords, + locatedAt, + error, + resume, + pause + }; +} +var defaultEvents$1 = ["mousemove", "mousedown", "resize", "keydown", "touchstart", "wheel"]; +var oneMinute = 6e4; +function useIdle(timeout = oneMinute, options = {}) { + const { + initialState = false, + listenForVisibilityChange = true, + events: events2 = defaultEvents$1, + window: window2 = defaultWindow, + eventFilter = throttleFilter(50) + } = options; + const idle = shallowRef(initialState); + const lastActive = shallowRef(timestamp()); + let timer; + const reset = () => { + idle.value = false; + clearTimeout(timer); + timer = setTimeout(() => idle.value = true, timeout); + }; + const onEvent = createFilterWrapper( + eventFilter, + () => { + lastActive.value = timestamp(); + reset(); + } + ); + if (window2) { + const document2 = window2.document; + const listenerOptions = { passive: true }; + for (const event of events2) + useEventListener(window2, event, onEvent, listenerOptions); + if (listenForVisibilityChange) { + useEventListener(document2, "visibilitychange", () => { + if (!document2.hidden) + onEvent(); + }, listenerOptions); + } + reset(); + } + return { + idle, + lastActive, + reset + }; +} +async function loadImage(options) { + return new Promise((resolve, reject) => { + const img = new Image(); + const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy, width, height, decoding, fetchPriority, ismap, usemap } = options; + img.src = src; + if (srcset != null) + img.srcset = srcset; + if (sizes != null) + img.sizes = sizes; + if (clazz != null) + img.className = clazz; + if (loading != null) + img.loading = loading; + if (crossorigin != null) + img.crossOrigin = crossorigin; + if (referrerPolicy != null) + img.referrerPolicy = referrerPolicy; + if (width != null) + img.width = width; + if (height != null) + img.height = height; + if (decoding != null) + img.decoding = decoding; + if (fetchPriority != null) + img.fetchPriority = fetchPriority; + if (ismap != null) + img.isMap = ismap; + if (usemap != null) + img.useMap = usemap; + img.onload = () => resolve(img); + img.onerror = reject; + }); +} +function useImage(options, asyncStateOptions = {}) { + const state = useAsyncState( + () => loadImage(toValue(options)), + void 0, + { + resetOnExecute: true, + ...asyncStateOptions + } + ); + watch( + () => toValue(options), + () => state.execute(asyncStateOptions.delay), + { deep: true } + ); + return state; +} +function resolveElement(el) { + if (typeof Window !== "undefined" && el instanceof Window) + return el.document.documentElement; + if (typeof Document !== "undefined" && el instanceof Document) + return el.documentElement; + return el; +} +var ARRIVED_STATE_THRESHOLD_PIXELS = 1; +function useScroll(element, options = {}) { + const { + throttle = 0, + idle = 200, + onStop = noop, + onScroll = noop, + offset = { + left: 0, + right: 0, + top: 0, + bottom: 0 + }, + eventListenerOptions = { + capture: false, + passive: true + }, + behavior = "auto", + window: window2 = defaultWindow, + onError = (e) => { + console.error(e); + } + } = options; + const internalX = shallowRef(0); + const internalY = shallowRef(0); + const x = computed({ + get() { + return internalX.value; + }, + set(x2) { + scrollTo(x2, void 0); + } + }); + const y = computed({ + get() { + return internalY.value; + }, + set(y2) { + scrollTo(void 0, y2); + } + }); + function scrollTo(_x, _y) { + var _a, _b, _c, _d; + if (!window2) + return; + const _element = toValue(element); + if (!_element) + return; + (_c = _element instanceof Document ? window2.document.body : _element) == null ? void 0 : _c.scrollTo({ + top: (_a = toValue(_y)) != null ? _a : y.value, + left: (_b = toValue(_x)) != null ? _b : x.value, + behavior: toValue(behavior) + }); + const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element; + if (x != null) + internalX.value = scrollContainer.scrollLeft; + if (y != null) + internalY.value = scrollContainer.scrollTop; + } + const isScrolling = shallowRef(false); + const arrivedState = reactive({ + left: true, + right: false, + top: true, + bottom: false + }); + const directions = reactive({ + left: false, + right: false, + top: false, + bottom: false + }); + const onScrollEnd = (e) => { + if (!isScrolling.value) + return; + isScrolling.value = false; + directions.left = false; + directions.right = false; + directions.top = false; + directions.bottom = false; + onStop(e); + }; + const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle); + const setArrivedState = (target) => { + var _a; + if (!window2) + return; + const el = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target); + const { display, flexDirection, direction } = getComputedStyle(el); + const directionMultipler = direction === "rtl" ? -1 : 1; + const scrollLeft = el.scrollLeft; + directions.left = scrollLeft < internalX.value; + directions.right = scrollLeft > internalX.value; + const left = Math.abs(scrollLeft * directionMultipler) <= (offset.left || 0); + const right = Math.abs(scrollLeft * directionMultipler) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS; + if (display === "flex" && flexDirection === "row-reverse") { + arrivedState.left = right; + arrivedState.right = left; + } else { + arrivedState.left = left; + arrivedState.right = right; + } + internalX.value = scrollLeft; + let scrollTop = el.scrollTop; + if (target === window2.document && !scrollTop) + scrollTop = window2.document.body.scrollTop; + directions.top = scrollTop < internalY.value; + directions.bottom = scrollTop > internalY.value; + const top = Math.abs(scrollTop) <= (offset.top || 0); + const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS; + if (display === "flex" && flexDirection === "column-reverse") { + arrivedState.top = bottom; + arrivedState.bottom = top; + } else { + arrivedState.top = top; + arrivedState.bottom = bottom; + } + internalY.value = scrollTop; + }; + const onScrollHandler = (e) => { + var _a; + if (!window2) + return; + const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target; + setArrivedState(eventTarget); + isScrolling.value = true; + onScrollEndDebounced(e); + onScroll(e); + }; + useEventListener( + element, + "scroll", + throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler, + eventListenerOptions + ); + tryOnMounted(() => { + try { + const _element = toValue(element); + if (!_element) + return; + setArrivedState(_element); + } catch (e) { + onError(e); + } + }); + useEventListener( + element, + "scrollend", + onScrollEnd, + eventListenerOptions + ); + return { + x, + y, + isScrolling, + arrivedState, + directions, + measure() { + const _element = toValue(element); + if (window2 && _element) + setArrivedState(_element); + } + }; +} +function useInfiniteScroll(element, onLoadMore, options = {}) { + var _a; + const { + direction = "bottom", + interval = 100, + canLoadMore = () => true + } = options; + const state = reactive(useScroll( + element, + { + ...options, + offset: { + [direction]: (_a = options.distance) != null ? _a : 0, + ...options.offset + } + } + )); + const promise = ref(); + const isLoading = computed(() => !!promise.value); + const observedElement = computed(() => { + return resolveElement(toValue(element)); + }); + const isElementVisible = useElementVisibility(observedElement); + function checkAndLoad() { + state.measure(); + if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value)) + return; + const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value; + const isNarrower = direction === "bottom" || direction === "top" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth; + if (state.arrivedState[direction] || isNarrower) { + if (!promise.value) { + promise.value = Promise.all([ + onLoadMore(state), + new Promise((resolve) => setTimeout(resolve, interval)) + ]).finally(() => { + promise.value = null; + nextTick(() => checkAndLoad()); + }); + } + } + } + const stop = watch( + () => [state.arrivedState[direction], isElementVisible.value], + checkAndLoad, + { immediate: true } + ); + tryOnUnmounted(stop); + return { + isLoading, + reset() { + nextTick(() => checkAndLoad()); + } + }; +} +var defaultEvents = ["mousedown", "mouseup", "keydown", "keyup"]; +function useKeyModifier(modifier, options = {}) { + const { + events: events2 = defaultEvents, + document: document2 = defaultDocument, + initial = null + } = options; + const state = shallowRef(initial); + if (document2) { + events2.forEach((listenerEvent) => { + useEventListener(document2, listenerEvent, (evt) => { + if (typeof evt.getModifierState === "function") + state.value = evt.getModifierState(modifier); + }, { passive: true }); + }); + } + return state; +} +function useLocalStorage(key, initialValue, options = {}) { + const { window: window2 = defaultWindow } = options; + return useStorage(key, initialValue, window2 == null ? void 0 : window2.localStorage, options); +} +var DefaultMagicKeysAliasMap = { + ctrl: "control", + command: "meta", + cmd: "meta", + option: "alt", + up: "arrowup", + down: "arrowdown", + left: "arrowleft", + right: "arrowright" +}; +function useMagicKeys(options = {}) { + const { + reactive: useReactive = false, + target = defaultWindow, + aliasMap = DefaultMagicKeysAliasMap, + passive = true, + onEventFired = noop + } = options; + const current = reactive(/* @__PURE__ */ new Set()); + const obj = { + toJSON() { + return {}; + }, + current + }; + const refs = useReactive ? reactive(obj) : obj; + const metaDeps = /* @__PURE__ */ new Set(); + const usedKeys = /* @__PURE__ */ new Set(); + function setRefs(key, value) { + if (key in refs) { + if (useReactive) + refs[key] = value; + else + refs[key].value = value; + } + } + function reset() { + current.clear(); + for (const key of usedKeys) + setRefs(key, false); + } + function updateRefs(e, value) { + var _a, _b; + const key = (_a = e.key) == null ? void 0 : _a.toLowerCase(); + const code = (_b = e.code) == null ? void 0 : _b.toLowerCase(); + const values = [code, key].filter(Boolean); + if (key) { + if (value) + current.add(key); + else + current.delete(key); + } + for (const key2 of values) { + usedKeys.add(key2); + setRefs(key2, value); + } + if (key === "meta" && !value) { + metaDeps.forEach((key2) => { + current.delete(key2); + setRefs(key2, false); + }); + metaDeps.clear(); + } else if (typeof e.getModifierState === "function" && e.getModifierState("Meta") && value) { + [...current, ...values].forEach((key2) => metaDeps.add(key2)); + } + } + useEventListener(target, "keydown", (e) => { + updateRefs(e, true); + return onEventFired(e); + }, { passive }); + useEventListener(target, "keyup", (e) => { + updateRefs(e, false); + return onEventFired(e); + }, { passive }); + useEventListener("blur", reset, { passive }); + useEventListener("focus", reset, { passive }); + const proxy = new Proxy( + refs, + { + get(target2, prop, rec) { + if (typeof prop !== "string") + return Reflect.get(target2, prop, rec); + prop = prop.toLowerCase(); + if (prop in aliasMap) + prop = aliasMap[prop]; + if (!(prop in refs)) { + if (/[+_-]/.test(prop)) { + const keys2 = prop.split(/[+_-]/g).map((i) => i.trim()); + refs[prop] = computed(() => keys2.map((key) => toValue(proxy[key])).every(Boolean)); + } else { + refs[prop] = shallowRef(false); + } + } + const r = Reflect.get(target2, prop, rec); + return useReactive ? toValue(r) : r; + } + } + ); + return proxy; +} +function usingElRef(source, cb) { + if (toValue(source)) + cb(toValue(source)); +} +function timeRangeToArray(timeRanges) { + let ranges = []; + for (let i = 0; i < timeRanges.length; ++i) + ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]]; + return ranges; +} +function tracksToArray(tracks) { + return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType })); +} +var defaultOptions = { + src: "", + tracks: [] +}; +function useMediaControls(target, options = {}) { + target = toRef2(target); + options = { + ...defaultOptions, + ...options + }; + const { + document: document2 = defaultDocument + } = options; + const listenerOptions = { passive: true }; + const currentTime = shallowRef(0); + const duration = shallowRef(0); + const seeking = shallowRef(false); + const volume = shallowRef(1); + const waiting = shallowRef(false); + const ended = shallowRef(false); + const playing = shallowRef(false); + const rate = shallowRef(1); + const stalled = shallowRef(false); + const buffered = ref([]); + const tracks = ref([]); + const selectedTrack = shallowRef(-1); + const isPictureInPicture = shallowRef(false); + const muted = shallowRef(false); + const supportsPictureInPicture = document2 && "pictureInPictureEnabled" in document2; + const sourceErrorEvent = createEventHook(); + const playbackErrorEvent = createEventHook(); + const disableTrack = (track) => { + usingElRef(target, (el) => { + if (track) { + const id = typeof track === "number" ? track : track.id; + el.textTracks[id].mode = "disabled"; + } else { + for (let i = 0; i < el.textTracks.length; ++i) + el.textTracks[i].mode = "disabled"; + } + selectedTrack.value = -1; + }); + }; + const enableTrack = (track, disableTracks = true) => { + usingElRef(target, (el) => { + const id = typeof track === "number" ? track : track.id; + if (disableTracks) + disableTrack(); + el.textTracks[id].mode = "showing"; + selectedTrack.value = id; + }); + }; + const togglePictureInPicture = () => { + return new Promise((resolve, reject) => { + usingElRef(target, async (el) => { + if (supportsPictureInPicture) { + if (!isPictureInPicture.value) { + el.requestPictureInPicture().then(resolve).catch(reject); + } else { + document2.exitPictureInPicture().then(resolve).catch(reject); + } + } + }); + }); + }; + watchEffect(() => { + if (!document2) + return; + const el = toValue(target); + if (!el) + return; + const src = toValue(options.src); + let sources = []; + if (!src) + return; + if (typeof src === "string") + sources = [{ src }]; + else if (Array.isArray(src)) + sources = src; + else if (isObject(src)) + sources = [src]; + el.querySelectorAll("source").forEach((e) => { + e.remove(); + }); + sources.forEach(({ src: src2, type, media }) => { + const source = document2.createElement("source"); + source.setAttribute("src", src2); + source.setAttribute("type", type || ""); + source.setAttribute("media", media || ""); + useEventListener(source, "error", sourceErrorEvent.trigger, listenerOptions); + el.appendChild(source); + }); + el.load(); + }); + watch([target, volume], () => { + const el = toValue(target); + if (!el) + return; + el.volume = volume.value; + }); + watch([target, muted], () => { + const el = toValue(target); + if (!el) + return; + el.muted = muted.value; + }); + watch([target, rate], () => { + const el = toValue(target); + if (!el) + return; + el.playbackRate = rate.value; + }); + watchEffect(() => { + if (!document2) + return; + const textTracks = toValue(options.tracks); + const el = toValue(target); + if (!textTracks || !textTracks.length || !el) + return; + el.querySelectorAll("track").forEach((e) => e.remove()); + textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => { + const track = document2.createElement("track"); + track.default = isDefault || false; + track.kind = kind; + track.label = label; + track.src = src; + track.srclang = srcLang; + if (track.default) + selectedTrack.value = i; + el.appendChild(track); + }); + }); + const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => { + const el = toValue(target); + if (!el) + return; + el.currentTime = time; + }); + const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => { + const el = toValue(target); + if (!el) + return; + if (isPlaying) { + el.play().catch((e) => { + playbackErrorEvent.trigger(e); + throw e; + }); + } else { + el.pause(); + } + }); + useEventListener( + target, + "timeupdate", + () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime), + listenerOptions + ); + useEventListener( + target, + "durationchange", + () => duration.value = toValue(target).duration, + listenerOptions + ); + useEventListener( + target, + "progress", + () => buffered.value = timeRangeToArray(toValue(target).buffered), + listenerOptions + ); + useEventListener( + target, + "seeking", + () => seeking.value = true, + listenerOptions + ); + useEventListener( + target, + "seeked", + () => seeking.value = false, + listenerOptions + ); + useEventListener( + target, + ["waiting", "loadstart"], + () => { + waiting.value = true; + ignorePlayingUpdates(() => playing.value = false); + }, + listenerOptions + ); + useEventListener( + target, + "loadeddata", + () => waiting.value = false, + listenerOptions + ); + useEventListener( + target, + "playing", + () => { + waiting.value = false; + ended.value = false; + ignorePlayingUpdates(() => playing.value = true); + }, + listenerOptions + ); + useEventListener( + target, + "ratechange", + () => rate.value = toValue(target).playbackRate, + listenerOptions + ); + useEventListener( + target, + "stalled", + () => stalled.value = true, + listenerOptions + ); + useEventListener( + target, + "ended", + () => ended.value = true, + listenerOptions + ); + useEventListener( + target, + "pause", + () => ignorePlayingUpdates(() => playing.value = false), + listenerOptions + ); + useEventListener( + target, + "play", + () => ignorePlayingUpdates(() => playing.value = true), + listenerOptions + ); + useEventListener( + target, + "enterpictureinpicture", + () => isPictureInPicture.value = true, + listenerOptions + ); + useEventListener( + target, + "leavepictureinpicture", + () => isPictureInPicture.value = false, + listenerOptions + ); + useEventListener( + target, + "volumechange", + () => { + const el = toValue(target); + if (!el) + return; + volume.value = el.volume; + muted.value = el.muted; + }, + listenerOptions + ); + const listeners = []; + const stop = watch([target], () => { + const el = toValue(target); + if (!el) + return; + stop(); + listeners[0] = useEventListener(el.textTracks, "addtrack", () => tracks.value = tracksToArray(el.textTracks), listenerOptions); + listeners[1] = useEventListener(el.textTracks, "removetrack", () => tracks.value = tracksToArray(el.textTracks), listenerOptions); + listeners[2] = useEventListener(el.textTracks, "change", () => tracks.value = tracksToArray(el.textTracks), listenerOptions); + }); + tryOnScopeDispose(() => listeners.forEach((listener) => listener())); + return { + currentTime, + duration, + waiting, + seeking, + ended, + stalled, + buffered, + playing, + rate, + // Volume + volume, + muted, + // Tracks + tracks, + selectedTrack, + enableTrack, + disableTrack, + // Picture in Picture + supportsPictureInPicture, + togglePictureInPicture, + isPictureInPicture, + // Events + onSourceError: sourceErrorEvent.on, + onPlaybackError: playbackErrorEvent.on + }; +} +function useMemoize(resolver, options) { + const initCache = () => { + if (options == null ? void 0 : options.cache) + return shallowReactive(options.cache); + return shallowReactive(/* @__PURE__ */ new Map()); + }; + const cache = initCache(); + const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args); + const _loadData = (key, ...args) => { + cache.set(key, resolver(...args)); + return cache.get(key); + }; + const loadData = (...args) => _loadData(generateKey(...args), ...args); + const deleteData = (...args) => { + cache.delete(generateKey(...args)); + }; + const clearData = () => { + cache.clear(); + }; + const memoized = (...args) => { + const key = generateKey(...args); + if (cache.has(key)) + return cache.get(key); + return _loadData(key, ...args); + }; + memoized.load = loadData; + memoized.delete = deleteData; + memoized.clear = clearData; + memoized.generateKey = generateKey; + memoized.cache = cache; + return memoized; +} +function useMemory(options = {}) { + const memory = ref(); + const isSupported = useSupported(() => typeof performance !== "undefined" && "memory" in performance); + if (isSupported.value) { + const { interval = 1e3 } = options; + useIntervalFn(() => { + memory.value = performance.memory; + }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback }); + } + return { isSupported, memory }; +} +var UseMouseBuiltinExtractors = { + page: (event) => [event.pageX, event.pageY], + client: (event) => [event.clientX, event.clientY], + screen: (event) => [event.screenX, event.screenY], + movement: (event) => event instanceof MouseEvent ? [event.movementX, event.movementY] : null +}; +function useMouse(options = {}) { + const { + type = "page", + touch = true, + resetOnTouchEnds = false, + initialValue = { x: 0, y: 0 }, + window: window2 = defaultWindow, + target = window2, + scroll = true, + eventFilter + } = options; + let _prevMouseEvent = null; + let _prevScrollX = 0; + let _prevScrollY = 0; + const x = shallowRef(initialValue.x); + const y = shallowRef(initialValue.y); + const sourceType = shallowRef(null); + const extractor = typeof type === "function" ? type : UseMouseBuiltinExtractors[type]; + const mouseHandler = (event) => { + const result = extractor(event); + _prevMouseEvent = event; + if (result) { + [x.value, y.value] = result; + sourceType.value = "mouse"; + } + if (window2) { + _prevScrollX = window2.scrollX; + _prevScrollY = window2.scrollY; + } + }; + const touchHandler = (event) => { + if (event.touches.length > 0) { + const result = extractor(event.touches[0]); + if (result) { + [x.value, y.value] = result; + sourceType.value = "touch"; + } + } + }; + const scrollHandler = () => { + if (!_prevMouseEvent || !window2) + return; + const pos = extractor(_prevMouseEvent); + if (_prevMouseEvent instanceof MouseEvent && pos) { + x.value = pos[0] + window2.scrollX - _prevScrollX; + y.value = pos[1] + window2.scrollY - _prevScrollY; + } + }; + const reset = () => { + x.value = initialValue.x; + y.value = initialValue.y; + }; + const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event); + const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event); + const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler(); + if (target) { + const listenerOptions = { passive: true }; + useEventListener(target, ["mousemove", "dragover"], mouseHandlerWrapper, listenerOptions); + if (touch && type !== "movement") { + useEventListener(target, ["touchstart", "touchmove"], touchHandlerWrapper, listenerOptions); + if (resetOnTouchEnds) + useEventListener(target, "touchend", reset, listenerOptions); + } + if (scroll && type === "page") + useEventListener(window2, "scroll", scrollHandlerWrapper, listenerOptions); + } + return { + x, + y, + sourceType + }; +} +function useMouseInElement(target, options = {}) { + const { + handleOutside = true, + window: window2 = defaultWindow + } = options; + const type = options.type || "page"; + const { x, y, sourceType } = useMouse(options); + const targetRef = shallowRef(target != null ? target : window2 == null ? void 0 : window2.document.body); + const elementX = shallowRef(0); + const elementY = shallowRef(0); + const elementPositionX = shallowRef(0); + const elementPositionY = shallowRef(0); + const elementHeight = shallowRef(0); + const elementWidth = shallowRef(0); + const isOutside = shallowRef(true); + let stop = () => { + }; + if (window2) { + stop = watch( + [targetRef, x, y], + () => { + const el = unrefElement(targetRef); + if (!el || !(el instanceof Element)) + return; + const { + left, + top, + width, + height + } = el.getBoundingClientRect(); + elementPositionX.value = left + (type === "page" ? window2.pageXOffset : 0); + elementPositionY.value = top + (type === "page" ? window2.pageYOffset : 0); + elementHeight.value = height; + elementWidth.value = width; + const elX = x.value - elementPositionX.value; + const elY = y.value - elementPositionY.value; + isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height; + if (handleOutside || !isOutside.value) { + elementX.value = elX; + elementY.value = elY; + } + }, + { immediate: true } + ); + useEventListener( + document, + "mouseleave", + () => isOutside.value = true, + { passive: true } + ); + } + return { + x, + y, + sourceType, + elementX, + elementY, + elementPositionX, + elementPositionY, + elementHeight, + elementWidth, + isOutside, + stop + }; +} +function useMousePressed(options = {}) { + const { + touch = true, + drag = true, + capture = false, + initialValue = false, + window: window2 = defaultWindow + } = options; + const pressed = shallowRef(initialValue); + const sourceType = shallowRef(null); + if (!window2) { + return { + pressed, + sourceType + }; + } + const onPressed = (srcType) => (event) => { + var _a; + pressed.value = true; + sourceType.value = srcType; + (_a = options.onPressed) == null ? void 0 : _a.call(options, event); + }; + const onReleased = (event) => { + var _a; + pressed.value = false; + sourceType.value = null; + (_a = options.onReleased) == null ? void 0 : _a.call(options, event); + }; + const target = computed(() => unrefElement(options.target) || window2); + const listenerOptions = { passive: true, capture }; + useEventListener(target, "mousedown", onPressed("mouse"), listenerOptions); + useEventListener(window2, "mouseleave", onReleased, listenerOptions); + useEventListener(window2, "mouseup", onReleased, listenerOptions); + if (drag) { + useEventListener(target, "dragstart", onPressed("mouse"), listenerOptions); + useEventListener(window2, "drop", onReleased, listenerOptions); + useEventListener(window2, "dragend", onReleased, listenerOptions); + } + if (touch) { + useEventListener(target, "touchstart", onPressed("touch"), listenerOptions); + useEventListener(window2, "touchend", onReleased, listenerOptions); + useEventListener(window2, "touchcancel", onReleased, listenerOptions); + } + return { + pressed, + sourceType + }; +} +function useNavigatorLanguage(options = {}) { + const { window: window2 = defaultWindow } = options; + const navigator2 = window2 == null ? void 0 : window2.navigator; + const isSupported = useSupported(() => navigator2 && "language" in navigator2); + const language = shallowRef(navigator2 == null ? void 0 : navigator2.language); + useEventListener(window2, "languagechange", () => { + if (navigator2) + language.value = navigator2.language; + }, { passive: true }); + return { + isSupported, + language + }; +} +function useNetwork(options = {}) { + const { window: window2 = defaultWindow } = options; + const navigator2 = window2 == null ? void 0 : window2.navigator; + const isSupported = useSupported(() => navigator2 && "connection" in navigator2); + const isOnline = shallowRef(true); + const saveData = shallowRef(false); + const offlineAt = shallowRef(void 0); + const onlineAt = shallowRef(void 0); + const downlink = shallowRef(void 0); + const downlinkMax = shallowRef(void 0); + const rtt = shallowRef(void 0); + const effectiveType = shallowRef(void 0); + const type = shallowRef("unknown"); + const connection = isSupported.value && navigator2.connection; + function updateNetworkInformation() { + if (!navigator2) + return; + isOnline.value = navigator2.onLine; + offlineAt.value = isOnline.value ? void 0 : Date.now(); + onlineAt.value = isOnline.value ? Date.now() : void 0; + if (connection) { + downlink.value = connection.downlink; + downlinkMax.value = connection.downlinkMax; + effectiveType.value = connection.effectiveType; + rtt.value = connection.rtt; + saveData.value = connection.saveData; + type.value = connection.type; + } + } + const listenerOptions = { passive: true }; + if (window2) { + useEventListener(window2, "offline", () => { + isOnline.value = false; + offlineAt.value = Date.now(); + }, listenerOptions); + useEventListener(window2, "online", () => { + isOnline.value = true; + onlineAt.value = Date.now(); + }, listenerOptions); + } + if (connection) + useEventListener(connection, "change", updateNetworkInformation, listenerOptions); + updateNetworkInformation(); + return { + isSupported, + isOnline: readonly(isOnline), + saveData: readonly(saveData), + offlineAt: readonly(offlineAt), + onlineAt: readonly(onlineAt), + downlink: readonly(downlink), + downlinkMax: readonly(downlinkMax), + effectiveType: readonly(effectiveType), + rtt: readonly(rtt), + type: readonly(type) + }; +} +function useNow(options = {}) { + const { + controls: exposeControls = false, + interval = "requestAnimationFrame" + } = options; + const now2 = ref(/* @__PURE__ */ new Date()); + const update = () => now2.value = /* @__PURE__ */ new Date(); + const controls = interval === "requestAnimationFrame" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true }); + if (exposeControls) { + return { + now: now2, + ...controls + }; + } else { + return now2; + } +} +function useObjectUrl(object) { + const url = shallowRef(); + const release = () => { + if (url.value) + URL.revokeObjectURL(url.value); + url.value = void 0; + }; + watch( + () => toValue(object), + (newObject) => { + release(); + if (newObject) + url.value = URL.createObjectURL(newObject); + }, + { immediate: true } + ); + tryOnScopeDispose(release); + return readonly(url); +} +function useClamp(value, min, max) { + if (typeof value === "function" || isReadonly(value)) + return computed(() => clamp(toValue(value), toValue(min), toValue(max))); + const _value = ref(value); + return computed({ + get() { + return _value.value = clamp(_value.value, toValue(min), toValue(max)); + }, + set(value2) { + _value.value = clamp(value2, toValue(min), toValue(max)); + } + }); +} +function useOffsetPagination(options) { + const { + total = Number.POSITIVE_INFINITY, + pageSize = 10, + page = 1, + onPageChange = noop, + onPageSizeChange = noop, + onPageCountChange = noop + } = options; + const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY); + const pageCount = computed(() => Math.max( + 1, + Math.ceil(toValue(total) / toValue(currentPageSize)) + )); + const currentPage = useClamp(page, 1, pageCount); + const isFirstPage = computed(() => currentPage.value === 1); + const isLastPage = computed(() => currentPage.value === pageCount.value); + if (isRef(page)) { + syncRef(page, currentPage, { + direction: isReadonly(page) ? "ltr" : "both" + }); + } + if (isRef(pageSize)) { + syncRef(pageSize, currentPageSize, { + direction: isReadonly(pageSize) ? "ltr" : "both" + }); + } + function prev() { + currentPage.value--; + } + function next() { + currentPage.value++; + } + const returnValue = { + currentPage, + currentPageSize, + pageCount, + isFirstPage, + isLastPage, + prev, + next + }; + watch(currentPage, () => { + onPageChange(reactive(returnValue)); + }); + watch(currentPageSize, () => { + onPageSizeChange(reactive(returnValue)); + }); + watch(pageCount, () => { + onPageCountChange(reactive(returnValue)); + }); + return returnValue; +} +function useOnline(options = {}) { + const { isOnline } = useNetwork(options); + return isOnline; +} +function usePageLeave(options = {}) { + const { window: window2 = defaultWindow } = options; + const isLeft = shallowRef(false); + const handler = (event) => { + if (!window2) + return; + event = event || window2.event; + const from = event.relatedTarget || event.toElement; + isLeft.value = !from; + }; + if (window2) { + const listenerOptions = { passive: true }; + useEventListener(window2, "mouseout", handler, listenerOptions); + useEventListener(window2.document, "mouseleave", handler, listenerOptions); + useEventListener(window2.document, "mouseenter", handler, listenerOptions); + } + return isLeft; +} +function useScreenOrientation(options = {}) { + const { + window: window2 = defaultWindow + } = options; + const isSupported = useSupported(() => window2 && "screen" in window2 && "orientation" in window2.screen); + const screenOrientation = isSupported.value ? window2.screen.orientation : {}; + const orientation = ref(screenOrientation.type); + const angle = shallowRef(screenOrientation.angle || 0); + if (isSupported.value) { + useEventListener(window2, "orientationchange", () => { + orientation.value = screenOrientation.type; + angle.value = screenOrientation.angle; + }, { passive: true }); + } + const lockOrientation = (type) => { + if (isSupported.value && typeof screenOrientation.lock === "function") + return screenOrientation.lock(type); + return Promise.reject(new Error("Not supported")); + }; + const unlockOrientation = () => { + if (isSupported.value && typeof screenOrientation.unlock === "function") + screenOrientation.unlock(); + }; + return { + isSupported, + orientation, + angle, + lockOrientation, + unlockOrientation + }; +} +function useParallax(target, options = {}) { + const { + deviceOrientationTiltAdjust = (i) => i, + deviceOrientationRollAdjust = (i) => i, + mouseTiltAdjust = (i) => i, + mouseRollAdjust = (i) => i, + window: window2 = defaultWindow + } = options; + const orientation = reactive(useDeviceOrientation({ window: window2 })); + const screenOrientation = reactive(useScreenOrientation({ window: window2 })); + const { + elementX: x, + elementY: y, + elementWidth: width, + elementHeight: height + } = useMouseInElement(target, { handleOutside: false, window: window2 }); + const source = computed(() => { + if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) { + return "deviceOrientation"; + } + return "mouse"; + }); + const roll = computed(() => { + if (source.value === "deviceOrientation") { + let value; + switch (screenOrientation.orientation) { + case "landscape-primary": + value = orientation.gamma / 90; + break; + case "landscape-secondary": + value = -orientation.gamma / 90; + break; + case "portrait-primary": + value = -orientation.beta / 90; + break; + case "portrait-secondary": + value = orientation.beta / 90; + break; + default: + value = -orientation.beta / 90; + } + return deviceOrientationRollAdjust(value); + } else { + const value = -(y.value - height.value / 2) / height.value; + return mouseRollAdjust(value); + } + }); + const tilt = computed(() => { + if (source.value === "deviceOrientation") { + let value; + switch (screenOrientation.orientation) { + case "landscape-primary": + value = orientation.beta / 90; + break; + case "landscape-secondary": + value = -orientation.beta / 90; + break; + case "portrait-primary": + value = orientation.gamma / 90; + break; + case "portrait-secondary": + value = -orientation.gamma / 90; + break; + default: + value = orientation.gamma / 90; + } + return deviceOrientationTiltAdjust(value); + } else { + const value = (x.value - width.value / 2) / width.value; + return mouseTiltAdjust(value); + } + }); + return { roll, tilt, source }; +} +function useParentElement(element = useCurrentElement()) { + const parentElement = shallowRef(); + const update = () => { + const el = unrefElement(element); + if (el) + parentElement.value = el.parentElement; + }; + tryOnMounted(update); + watch(() => toValue(element), update); + return parentElement; +} +function usePerformanceObserver(options, callback) { + const { + window: window2 = defaultWindow, + immediate = true, + ...performanceOptions + } = options; + const isSupported = useSupported(() => window2 && "PerformanceObserver" in window2); + let observer; + const stop = () => { + observer == null ? void 0 : observer.disconnect(); + }; + const start = () => { + if (isSupported.value) { + stop(); + observer = new PerformanceObserver(callback); + observer.observe(performanceOptions); + } + }; + tryOnScopeDispose(stop); + if (immediate) + start(); + return { + isSupported, + start, + stop + }; +} +var defaultState = { + x: 0, + y: 0, + pointerId: 0, + pressure: 0, + tiltX: 0, + tiltY: 0, + width: 0, + height: 0, + twist: 0, + pointerType: null +}; +var keys = Object.keys(defaultState); +function usePointer(options = {}) { + const { + target = defaultWindow + } = options; + const isInside = shallowRef(false); + const state = ref(options.initialValue || {}); + Object.assign(state.value, defaultState, state.value); + const handler = (event) => { + isInside.value = true; + if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType)) + return; + state.value = objectPick(event, keys, false); + }; + if (target) { + const listenerOptions = { passive: true }; + useEventListener(target, ["pointerdown", "pointermove", "pointerup"], handler, listenerOptions); + useEventListener(target, "pointerleave", () => isInside.value = false, listenerOptions); + } + return { + ...toRefs2(state), + isInside + }; +} +function usePointerLock(target, options = {}) { + const { document: document2 = defaultDocument } = options; + const isSupported = useSupported(() => document2 && "pointerLockElement" in document2); + const element = shallowRef(); + const triggerElement = shallowRef(); + let targetElement; + if (isSupported.value) { + const listenerOptions = { passive: true }; + useEventListener(document2, "pointerlockchange", () => { + var _a; + const currentElement = (_a = document2.pointerLockElement) != null ? _a : element.value; + if (targetElement && currentElement === targetElement) { + element.value = document2.pointerLockElement; + if (!element.value) + targetElement = triggerElement.value = null; + } + }, listenerOptions); + useEventListener(document2, "pointerlockerror", () => { + var _a; + const currentElement = (_a = document2.pointerLockElement) != null ? _a : element.value; + if (targetElement && currentElement === targetElement) { + const action = document2.pointerLockElement ? "release" : "acquire"; + throw new Error(`Failed to ${action} pointer lock.`); + } + }, listenerOptions); + } + async function lock(e) { + var _a; + if (!isSupported.value) + throw new Error("Pointer Lock API is not supported by your browser."); + triggerElement.value = e instanceof Event ? e.currentTarget : null; + targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e); + if (!targetElement) + throw new Error("Target element undefined."); + targetElement.requestPointerLock(); + return await until(element).toBe(targetElement); + } + async function unlock() { + if (!element.value) + return false; + document2.exitPointerLock(); + await until(element).toBeNull(); + return true; + } + return { + isSupported, + element, + triggerElement, + lock, + unlock + }; +} +function usePointerSwipe(target, options = {}) { + const targetRef = toRef2(target); + const { + threshold = 50, + onSwipe, + onSwipeEnd, + onSwipeStart, + disableTextSelect = false + } = options; + const posStart = reactive({ x: 0, y: 0 }); + const updatePosStart = (x, y) => { + posStart.x = x; + posStart.y = y; + }; + const posEnd = reactive({ x: 0, y: 0 }); + const updatePosEnd = (x, y) => { + posEnd.x = x; + posEnd.y = y; + }; + const distanceX = computed(() => posStart.x - posEnd.x); + const distanceY = computed(() => posStart.y - posEnd.y); + const { max, abs } = Math; + const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold); + const isSwiping = shallowRef(false); + const isPointerDown = shallowRef(false); + const direction = computed(() => { + if (!isThresholdExceeded.value) + return "none"; + if (abs(distanceX.value) > abs(distanceY.value)) { + return distanceX.value > 0 ? "left" : "right"; + } else { + return distanceY.value > 0 ? "up" : "down"; + } + }); + const eventIsAllowed = (e) => { + var _a, _b, _c; + const isReleasingButton = e.buttons === 0; + const isPrimaryButton = e.buttons === 1; + return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true; + }; + const listenerOptions = { passive: true }; + const stops = [ + useEventListener(target, "pointerdown", (e) => { + if (!eventIsAllowed(e)) + return; + isPointerDown.value = true; + const eventTarget = e.target; + eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId); + const { clientX: x, clientY: y } = e; + updatePosStart(x, y); + updatePosEnd(x, y); + onSwipeStart == null ? void 0 : onSwipeStart(e); + }, listenerOptions), + useEventListener(target, "pointermove", (e) => { + if (!eventIsAllowed(e)) + return; + if (!isPointerDown.value) + return; + const { clientX: x, clientY: y } = e; + updatePosEnd(x, y); + if (!isSwiping.value && isThresholdExceeded.value) + isSwiping.value = true; + if (isSwiping.value) + onSwipe == null ? void 0 : onSwipe(e); + }, listenerOptions), + useEventListener(target, "pointerup", (e) => { + if (!eventIsAllowed(e)) + return; + if (isSwiping.value) + onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value); + isPointerDown.value = false; + isSwiping.value = false; + }, listenerOptions) + ]; + tryOnMounted(() => { + var _a, _b, _c, _d, _e, _f, _g, _h; + (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty("touch-action", "none"); + if (disableTextSelect) { + (_d = (_c = targetRef.value) == null ? void 0 : _c.style) == null ? void 0 : _d.setProperty("-webkit-user-select", "none"); + (_f = (_e = targetRef.value) == null ? void 0 : _e.style) == null ? void 0 : _f.setProperty("-ms-user-select", "none"); + (_h = (_g = targetRef.value) == null ? void 0 : _g.style) == null ? void 0 : _h.setProperty("user-select", "none"); + } + }); + const stop = () => stops.forEach((s) => s()); + return { + isSwiping: readonly(isSwiping), + direction: readonly(direction), + posStart: readonly(posStart), + posEnd: readonly(posEnd), + distanceX, + distanceY, + stop + }; +} +function usePreferredColorScheme(options) { + const isLight = useMediaQuery("(prefers-color-scheme: light)", options); + const isDark = useMediaQuery("(prefers-color-scheme: dark)", options); + return computed(() => { + if (isDark.value) + return "dark"; + if (isLight.value) + return "light"; + return "no-preference"; + }); +} +function usePreferredContrast(options) { + const isMore = useMediaQuery("(prefers-contrast: more)", options); + const isLess = useMediaQuery("(prefers-contrast: less)", options); + const isCustom = useMediaQuery("(prefers-contrast: custom)", options); + return computed(() => { + if (isMore.value) + return "more"; + if (isLess.value) + return "less"; + if (isCustom.value) + return "custom"; + return "no-preference"; + }); +} +function usePreferredLanguages(options = {}) { + const { window: window2 = defaultWindow } = options; + if (!window2) + return ref(["en"]); + const navigator2 = window2.navigator; + const value = ref(navigator2.languages); + useEventListener(window2, "languagechange", () => { + value.value = navigator2.languages; + }, { passive: true }); + return value; +} +function usePreferredReducedMotion(options) { + const isReduced = useMediaQuery("(prefers-reduced-motion: reduce)", options); + return computed(() => { + if (isReduced.value) + return "reduce"; + return "no-preference"; + }); +} +function usePreferredReducedTransparency(options) { + const isReduced = useMediaQuery("(prefers-reduced-transparency: reduce)", options); + return computed(() => { + if (isReduced.value) + return "reduce"; + return "no-preference"; + }); +} +function usePrevious(value, initialValue) { + const previous = shallowRef(initialValue); + watch( + toRef2(value), + (_, oldValue) => { + previous.value = oldValue; + }, + { flush: "sync" } + ); + return readonly(previous); +} +var topVarName = "--vueuse-safe-area-top"; +var rightVarName = "--vueuse-safe-area-right"; +var bottomVarName = "--vueuse-safe-area-bottom"; +var leftVarName = "--vueuse-safe-area-left"; +function useScreenSafeArea() { + const top = shallowRef(""); + const right = shallowRef(""); + const bottom = shallowRef(""); + const left = shallowRef(""); + if (isClient) { + const topCssVar = useCssVar(topVarName); + const rightCssVar = useCssVar(rightVarName); + const bottomCssVar = useCssVar(bottomVarName); + const leftCssVar = useCssVar(leftVarName); + topCssVar.value = "env(safe-area-inset-top, 0px)"; + rightCssVar.value = "env(safe-area-inset-right, 0px)"; + bottomCssVar.value = "env(safe-area-inset-bottom, 0px)"; + leftCssVar.value = "env(safe-area-inset-left, 0px)"; + update(); + useEventListener("resize", useDebounceFn(update), { passive: true }); + } + function update() { + top.value = getValue(topVarName); + right.value = getValue(rightVarName); + bottom.value = getValue(bottomVarName); + left.value = getValue(leftVarName); + } + return { + top, + right, + bottom, + left, + update + }; +} +function getValue(position) { + return getComputedStyle(document.documentElement).getPropertyValue(position); +} +function useScriptTag(src, onLoaded = noop, options = {}) { + const { + immediate = true, + manual = false, + type = "text/javascript", + async = true, + crossOrigin, + referrerPolicy, + noModule, + defer, + document: document2 = defaultDocument, + attrs = {} + } = options; + const scriptTag = shallowRef(null); + let _promise = null; + const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => { + const resolveWithElement = (el2) => { + scriptTag.value = el2; + resolve(el2); + return el2; + }; + if (!document2) { + resolve(false); + return; + } + let shouldAppend = false; + let el = document2.querySelector(`script[src="${toValue(src)}"]`); + if (!el) { + el = document2.createElement("script"); + el.type = type; + el.async = async; + el.src = toValue(src); + if (defer) + el.defer = defer; + if (crossOrigin) + el.crossOrigin = crossOrigin; + if (noModule) + el.noModule = noModule; + if (referrerPolicy) + el.referrerPolicy = referrerPolicy; + Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value)); + shouldAppend = true; + } else if (el.hasAttribute("data-loaded")) { + resolveWithElement(el); + } + const listenerOptions = { + passive: true + }; + useEventListener(el, "error", (event) => reject(event), listenerOptions); + useEventListener(el, "abort", (event) => reject(event), listenerOptions); + useEventListener(el, "load", () => { + el.setAttribute("data-loaded", "true"); + onLoaded(el); + resolveWithElement(el); + }, listenerOptions); + if (shouldAppend) + el = document2.head.appendChild(el); + if (!waitForScriptLoad) + resolveWithElement(el); + }); + const load = (waitForScriptLoad = true) => { + if (!_promise) + _promise = loadScript(waitForScriptLoad); + return _promise; + }; + const unload = () => { + if (!document2) + return; + _promise = null; + if (scriptTag.value) + scriptTag.value = null; + const el = document2.querySelector(`script[src="${toValue(src)}"]`); + if (el) + document2.head.removeChild(el); + }; + if (immediate && !manual) + tryOnMounted(load); + if (!manual) + tryOnUnmounted(unload); + return { scriptTag, load, unload }; +} +function checkOverflowScroll(ele) { + const style = window.getComputedStyle(ele); + if (style.overflowX === "scroll" || style.overflowY === "scroll" || style.overflowX === "auto" && ele.clientWidth < ele.scrollWidth || style.overflowY === "auto" && ele.clientHeight < ele.scrollHeight) { + return true; + } else { + const parent = ele.parentNode; + if (!parent || parent.tagName === "BODY") + return false; + return checkOverflowScroll(parent); + } +} +function preventDefault(rawEvent) { + const e = rawEvent || window.event; + const _target = e.target; + if (checkOverflowScroll(_target)) + return false; + if (e.touches.length > 1) + return true; + if (e.preventDefault) + e.preventDefault(); + return false; +} +var elInitialOverflow = /* @__PURE__ */ new WeakMap(); +function useScrollLock(element, initialState = false) { + const isLocked = shallowRef(initialState); + let stopTouchMoveListener = null; + let initialOverflow = ""; + watch(toRef2(element), (el) => { + const target = resolveElement(toValue(el)); + if (target) { + const ele = target; + if (!elInitialOverflow.get(ele)) + elInitialOverflow.set(ele, ele.style.overflow); + if (ele.style.overflow !== "hidden") + initialOverflow = ele.style.overflow; + if (ele.style.overflow === "hidden") + return isLocked.value = true; + if (isLocked.value) + return ele.style.overflow = "hidden"; + } + }, { + immediate: true + }); + const lock = () => { + const el = resolveElement(toValue(element)); + if (!el || isLocked.value) + return; + if (isIOS) { + stopTouchMoveListener = useEventListener( + el, + "touchmove", + (e) => { + preventDefault(e); + }, + { passive: false } + ); + } + el.style.overflow = "hidden"; + isLocked.value = true; + }; + const unlock = () => { + const el = resolveElement(toValue(element)); + if (!el || !isLocked.value) + return; + if (isIOS) + stopTouchMoveListener == null ? void 0 : stopTouchMoveListener(); + el.style.overflow = initialOverflow; + elInitialOverflow.delete(el); + isLocked.value = false; + }; + tryOnScopeDispose(unlock); + return computed({ + get() { + return isLocked.value; + }, + set(v) { + if (v) + lock(); + else unlock(); + } + }); +} +function useSessionStorage(key, initialValue, options = {}) { + const { window: window2 = defaultWindow } = options; + return useStorage(key, initialValue, window2 == null ? void 0 : window2.sessionStorage, options); +} +function useShare(shareOptions = {}, options = {}) { + const { navigator: navigator2 = defaultNavigator } = options; + const _navigator = navigator2; + const isSupported = useSupported(() => _navigator && "canShare" in _navigator); + const share = async (overrideOptions = {}) => { + if (isSupported.value) { + const data = { + ...toValue(shareOptions), + ...toValue(overrideOptions) + }; + let granted = true; + if (data.files && _navigator.canShare) + granted = _navigator.canShare({ files: data.files }); + if (granted) + return _navigator.share(data); + } + }; + return { + isSupported, + share + }; +} +var defaultSortFn = (source, compareFn) => source.sort(compareFn); +var defaultCompare = (a, b) => a - b; +function useSorted(...args) { + var _a, _b, _c, _d; + const [source] = args; + let compareFn = defaultCompare; + let options = {}; + if (args.length === 2) { + if (typeof args[1] === "object") { + options = args[1]; + compareFn = (_a = options.compareFn) != null ? _a : defaultCompare; + } else { + compareFn = (_b = args[1]) != null ? _b : defaultCompare; + } + } else if (args.length > 2) { + compareFn = (_c = args[1]) != null ? _c : defaultCompare; + options = (_d = args[2]) != null ? _d : {}; + } + const { + dirty = false, + sortFn = defaultSortFn + } = options; + if (!dirty) + return computed(() => sortFn([...toValue(source)], compareFn)); + watchEffect(() => { + const result = sortFn(toValue(source), compareFn); + if (isRef(source)) + source.value = result; + else + source.splice(0, source.length, ...result); + }); + return source; +} +function useSpeechRecognition(options = {}) { + const { + interimResults = true, + continuous = true, + maxAlternatives = 1, + window: window2 = defaultWindow + } = options; + const lang = toRef2(options.lang || "en-US"); + const isListening = shallowRef(false); + const isFinal = shallowRef(false); + const result = shallowRef(""); + const error = shallowRef(void 0); + let recognition; + const start = () => { + isListening.value = true; + }; + const stop = () => { + isListening.value = false; + }; + const toggle = (value = !isListening.value) => { + if (value) { + start(); + } else { + stop(); + } + }; + const SpeechRecognition = window2 && (window2.SpeechRecognition || window2.webkitSpeechRecognition); + const isSupported = useSupported(() => SpeechRecognition); + if (isSupported.value) { + recognition = new SpeechRecognition(); + recognition.continuous = continuous; + recognition.interimResults = interimResults; + recognition.lang = toValue(lang); + recognition.maxAlternatives = maxAlternatives; + recognition.onstart = () => { + isListening.value = true; + isFinal.value = false; + }; + watch(lang, (lang2) => { + if (recognition && !isListening.value) + recognition.lang = lang2; + }); + recognition.onresult = (event) => { + const currentResult = event.results[event.resultIndex]; + const { transcript } = currentResult[0]; + isFinal.value = currentResult.isFinal; + result.value = transcript; + error.value = void 0; + }; + recognition.onerror = (event) => { + error.value = event; + }; + recognition.onend = () => { + isListening.value = false; + recognition.lang = toValue(lang); + }; + watch(isListening, (newValue, oldValue) => { + if (newValue === oldValue) + return; + if (newValue) + recognition.start(); + else + recognition.stop(); + }); + } + tryOnScopeDispose(() => { + stop(); + }); + return { + isSupported, + isListening, + isFinal, + recognition, + result, + error, + toggle, + start, + stop + }; +} +function useSpeechSynthesis(text, options = {}) { + const { + pitch = 1, + rate = 1, + volume = 1, + window: window2 = defaultWindow + } = options; + const synth = window2 && window2.speechSynthesis; + const isSupported = useSupported(() => synth); + const isPlaying = shallowRef(false); + const status = shallowRef("init"); + const spokenText = toRef2(text || ""); + const lang = toRef2(options.lang || "en-US"); + const error = shallowRef(void 0); + const toggle = (value = !isPlaying.value) => { + isPlaying.value = value; + }; + const bindEventsForUtterance = (utterance2) => { + utterance2.lang = toValue(lang); + utterance2.voice = toValue(options.voice) || null; + utterance2.pitch = toValue(pitch); + utterance2.rate = toValue(rate); + utterance2.volume = volume; + utterance2.onstart = () => { + isPlaying.value = true; + status.value = "play"; + }; + utterance2.onpause = () => { + isPlaying.value = false; + status.value = "pause"; + }; + utterance2.onresume = () => { + isPlaying.value = true; + status.value = "play"; + }; + utterance2.onend = () => { + isPlaying.value = false; + status.value = "end"; + }; + utterance2.onerror = (event) => { + error.value = event; + }; + }; + const utterance = computed(() => { + isPlaying.value = false; + status.value = "init"; + const newUtterance = new SpeechSynthesisUtterance(spokenText.value); + bindEventsForUtterance(newUtterance); + return newUtterance; + }); + const speak = () => { + synth.cancel(); + if (utterance) + synth.speak(utterance.value); + }; + const stop = () => { + synth.cancel(); + isPlaying.value = false; + }; + if (isSupported.value) { + bindEventsForUtterance(utterance.value); + watch(lang, (lang2) => { + if (utterance.value && !isPlaying.value) + utterance.value.lang = lang2; + }); + if (options.voice) { + watch(options.voice, () => { + synth.cancel(); + }); + } + watch(isPlaying, () => { + if (isPlaying.value) + synth.resume(); + else + synth.pause(); + }); + } + tryOnScopeDispose(() => { + isPlaying.value = false; + }); + return { + isSupported, + isPlaying, + status, + utterance, + error, + stop, + toggle, + speak + }; +} +function useStepper(steps, initialStep) { + const stepsRef = ref(steps); + const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value)); + const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0])); + const current = computed(() => at(index.value)); + const isFirst = computed(() => index.value === 0); + const isLast = computed(() => index.value === stepNames.value.length - 1); + const next = computed(() => stepNames.value[index.value + 1]); + const previous = computed(() => stepNames.value[index.value - 1]); + function at(index2) { + if (Array.isArray(stepsRef.value)) + return stepsRef.value[index2]; + return stepsRef.value[stepNames.value[index2]]; + } + function get2(step) { + if (!stepNames.value.includes(step)) + return; + return at(stepNames.value.indexOf(step)); + } + function goTo(step) { + if (stepNames.value.includes(step)) + index.value = stepNames.value.indexOf(step); + } + function goToNext() { + if (isLast.value) + return; + index.value++; + } + function goToPrevious() { + if (isFirst.value) + return; + index.value--; + } + function goBackTo(step) { + if (isAfter(step)) + goTo(step); + } + function isNext(step) { + return stepNames.value.indexOf(step) === index.value + 1; + } + function isPrevious(step) { + return stepNames.value.indexOf(step) === index.value - 1; + } + function isCurrent(step) { + return stepNames.value.indexOf(step) === index.value; + } + function isBefore(step) { + return index.value < stepNames.value.indexOf(step); + } + function isAfter(step) { + return index.value > stepNames.value.indexOf(step); + } + return { + steps: stepsRef, + stepNames, + index, + current, + next, + previous, + isFirst, + isLast, + at, + get: get2, + goTo, + goToNext, + goToPrevious, + goBackTo, + isNext, + isPrevious, + isCurrent, + isBefore, + isAfter + }; +} +function useStorageAsync(key, initialValue, storage, options = {}) { + var _a; + const { + flush = "pre", + deep = true, + listenToStorageChanges = true, + writeDefaults = true, + mergeDefaults = false, + shallow, + window: window2 = defaultWindow, + eventFilter, + onError = (e) => { + console.error(e); + } + } = options; + const rawInit = toValue(initialValue); + const type = guessSerializerType(rawInit); + const data = (shallow ? shallowRef : ref)(toValue(initialValue)); + const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type]; + if (!storage) { + try { + storage = getSSRHandler("getDefaultStorageAsync", () => { + var _a2; + return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage; + })(); + } catch (e) { + onError(e); + } + } + async function read(event) { + if (!storage || event && event.key !== key) + return; + try { + const rawValue = event ? event.newValue : await storage.getItem(key); + if (rawValue == null) { + data.value = rawInit; + if (writeDefaults && rawInit !== null) + await storage.setItem(key, await serializer.write(rawInit)); + } else if (mergeDefaults) { + const value = await serializer.read(rawValue); + if (typeof mergeDefaults === "function") + data.value = mergeDefaults(value, rawInit); + else if (type === "object" && !Array.isArray(value)) + data.value = { ...rawInit, ...value }; + else data.value = value; + } else { + data.value = await serializer.read(rawValue); + } + } catch (e) { + onError(e); + } + } + read(); + if (window2 && listenToStorageChanges) + useEventListener(window2, "storage", (e) => Promise.resolve().then(() => read(e)), { passive: true }); + if (storage) { + watchWithFilter( + data, + async () => { + try { + if (data.value == null) + await storage.removeItem(key); + else + await storage.setItem(key, await serializer.write(data.value)); + } catch (e) { + onError(e); + } + }, + { + flush, + deep, + eventFilter + } + ); + } + return data; +} +var _id = 0; +function useStyleTag(css, options = {}) { + const isLoaded = shallowRef(false); + const { + document: document2 = defaultDocument, + immediate = true, + manual = false, + id = `vueuse_styletag_${++_id}` + } = options; + const cssRef = shallowRef(css); + let stop = () => { + }; + const load = () => { + if (!document2) + return; + const el = document2.getElementById(id) || document2.createElement("style"); + if (!el.isConnected) { + el.id = id; + if (options.media) + el.media = options.media; + document2.head.appendChild(el); + } + if (isLoaded.value) + return; + stop = watch( + cssRef, + (value) => { + el.textContent = value; + }, + { immediate: true } + ); + isLoaded.value = true; + }; + const unload = () => { + if (!document2 || !isLoaded.value) + return; + stop(); + document2.head.removeChild(document2.getElementById(id)); + isLoaded.value = false; + }; + if (immediate && !manual) + tryOnMounted(load); + if (!manual) + tryOnScopeDispose(unload); + return { + id, + css: cssRef, + unload, + load, + isLoaded: readonly(isLoaded) + }; +} +function useSwipe(target, options = {}) { + const { + threshold = 50, + onSwipe, + onSwipeEnd, + onSwipeStart, + passive = true + } = options; + const coordsStart = reactive({ x: 0, y: 0 }); + const coordsEnd = reactive({ x: 0, y: 0 }); + const diffX = computed(() => coordsStart.x - coordsEnd.x); + const diffY = computed(() => coordsStart.y - coordsEnd.y); + const { max, abs } = Math; + const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold); + const isSwiping = shallowRef(false); + const direction = computed(() => { + if (!isThresholdExceeded.value) + return "none"; + if (abs(diffX.value) > abs(diffY.value)) { + return diffX.value > 0 ? "left" : "right"; + } else { + return diffY.value > 0 ? "up" : "down"; + } + }); + const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY]; + const updateCoordsStart = (x, y) => { + coordsStart.x = x; + coordsStart.y = y; + }; + const updateCoordsEnd = (x, y) => { + coordsEnd.x = x; + coordsEnd.y = y; + }; + const listenerOptions = { passive, capture: !passive }; + const onTouchEnd = (e) => { + if (isSwiping.value) + onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value); + isSwiping.value = false; + }; + const stops = [ + useEventListener(target, "touchstart", (e) => { + if (e.touches.length !== 1) + return; + const [x, y] = getTouchEventCoords(e); + updateCoordsStart(x, y); + updateCoordsEnd(x, y); + onSwipeStart == null ? void 0 : onSwipeStart(e); + }, listenerOptions), + useEventListener(target, "touchmove", (e) => { + if (e.touches.length !== 1) + return; + const [x, y] = getTouchEventCoords(e); + updateCoordsEnd(x, y); + if (listenerOptions.capture && !listenerOptions.passive && Math.abs(diffX.value) > Math.abs(diffY.value)) + e.preventDefault(); + if (!isSwiping.value && isThresholdExceeded.value) + isSwiping.value = true; + if (isSwiping.value) + onSwipe == null ? void 0 : onSwipe(e); + }, listenerOptions), + useEventListener(target, ["touchend", "touchcancel"], onTouchEnd, listenerOptions) + ]; + const stop = () => stops.forEach((s) => s()); + return { + isSwiping, + direction, + coordsStart, + coordsEnd, + lengthX: diffX, + lengthY: diffY, + stop, + // TODO: Remove in the next major version + isPassiveEventSupported: true + }; +} +function useTemplateRefsList() { + const refs = ref([]); + refs.value.set = (el) => { + if (el) + refs.value.push(el); + }; + onBeforeUpdate(() => { + refs.value.length = 0; + }); + return refs; +} +function useTextDirection(options = {}) { + const { + document: document2 = defaultDocument, + selector = "html", + observe = false, + initialValue = "ltr" + } = options; + function getValue2() { + var _a, _b; + return (_b = (_a = document2 == null ? void 0 : document2.querySelector(selector)) == null ? void 0 : _a.getAttribute("dir")) != null ? _b : initialValue; + } + const dir = ref(getValue2()); + tryOnMounted(() => dir.value = getValue2()); + if (observe && document2) { + useMutationObserver( + document2.querySelector(selector), + () => dir.value = getValue2(), + { attributes: true } + ); + } + return computed({ + get() { + return dir.value; + }, + set(v) { + var _a, _b; + dir.value = v; + if (!document2) + return; + if (dir.value) + (_a = document2.querySelector(selector)) == null ? void 0 : _a.setAttribute("dir", dir.value); + else + (_b = document2.querySelector(selector)) == null ? void 0 : _b.removeAttribute("dir"); + } + }); +} +function getRangesFromSelection(selection) { + var _a; + const rangeCount = (_a = selection.rangeCount) != null ? _a : 0; + return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i)); +} +function useTextSelection(options = {}) { + const { + window: window2 = defaultWindow + } = options; + const selection = ref(null); + const text = computed(() => { + var _a, _b; + return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : ""; + }); + const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []); + const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect())); + function onSelectionChange() { + selection.value = null; + if (window2) + selection.value = window2.getSelection(); + } + if (window2) + useEventListener(window2.document, "selectionchange", onSelectionChange, { passive: true }); + return { + text, + rects, + ranges, + selection + }; +} +function tryRequestAnimationFrame(window2 = defaultWindow, fn) { + if (window2 && typeof window2.requestAnimationFrame === "function") { + window2.requestAnimationFrame(fn); + } else { + fn(); + } +} +function useTextareaAutosize(options = {}) { + var _a, _b; + const { window: window2 = defaultWindow } = options; + const textarea = toRef2(options == null ? void 0 : options.element); + const input = toRef2((_a = options == null ? void 0 : options.input) != null ? _a : ""); + const styleProp = (_b = options == null ? void 0 : options.styleProp) != null ? _b : "height"; + const textareaScrollHeight = shallowRef(1); + const textareaOldWidth = shallowRef(0); + function triggerResize() { + var _a2; + if (!textarea.value) + return; + let height = ""; + textarea.value.style[styleProp] = "1px"; + textareaScrollHeight.value = (_a2 = textarea.value) == null ? void 0 : _a2.scrollHeight; + const _styleTarget = toValue(options == null ? void 0 : options.styleTarget); + if (_styleTarget) + _styleTarget.style[styleProp] = `${textareaScrollHeight.value}px`; + else + height = `${textareaScrollHeight.value}px`; + textarea.value.style[styleProp] = height; + } + watch([input, textarea], () => nextTick(triggerResize), { immediate: true }); + watch(textareaScrollHeight, () => { + var _a2; + return (_a2 = options == null ? void 0 : options.onResize) == null ? void 0 : _a2.call(options); + }); + useResizeObserver(textarea, ([{ contentRect }]) => { + if (textareaOldWidth.value === contentRect.width) + return; + tryRequestAnimationFrame(window2, () => { + textareaOldWidth.value = contentRect.width; + triggerResize(); + }); + }); + if (options == null ? void 0 : options.watch) + watch(options.watch, triggerResize, { immediate: true, deep: true }); + return { + textarea, + input, + triggerResize + }; +} +function useThrottledRefHistory(source, options = {}) { + const { throttle = 200, trailing = true } = options; + const filter = throttleFilter(throttle, trailing); + const history = useRefHistory(source, { ...options, eventFilter: filter }); + return { + ...history + }; +} +var DEFAULT_UNITS = [ + { max: 6e4, value: 1e3, name: "second" }, + { max: 276e4, value: 6e4, name: "minute" }, + { max: 72e6, value: 36e5, name: "hour" }, + { max: 5184e5, value: 864e5, name: "day" }, + { max: 24192e5, value: 6048e5, name: "week" }, + { max: 28512e6, value: 2592e6, name: "month" }, + { max: Number.POSITIVE_INFINITY, value: 31536e6, name: "year" } +]; +var DEFAULT_MESSAGES = { + justNow: "just now", + past: (n) => n.match(/\d/) ? `${n} ago` : n, + future: (n) => n.match(/\d/) ? `in ${n}` : n, + month: (n, past) => n === 1 ? past ? "last month" : "next month" : `${n} month${n > 1 ? "s" : ""}`, + year: (n, past) => n === 1 ? past ? "last year" : "next year" : `${n} year${n > 1 ? "s" : ""}`, + day: (n, past) => n === 1 ? past ? "yesterday" : "tomorrow" : `${n} day${n > 1 ? "s" : ""}`, + week: (n, past) => n === 1 ? past ? "last week" : "next week" : `${n} week${n > 1 ? "s" : ""}`, + hour: (n) => `${n} hour${n > 1 ? "s" : ""}`, + minute: (n) => `${n} minute${n > 1 ? "s" : ""}`, + second: (n) => `${n} second${n > 1 ? "s" : ""}`, + invalid: "" +}; +function DEFAULT_FORMATTER(date) { + return date.toISOString().slice(0, 10); +} +function useTimeAgo(time, options = {}) { + const { + controls: exposeControls = false, + updateInterval = 3e4 + } = options; + const { now: now2, ...controls } = useNow({ interval: updateInterval, controls: true }); + const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now2))); + if (exposeControls) { + return { + timeAgo, + ...controls + }; + } else { + return timeAgo; + } +} +function formatTimeAgo(from, options = {}, now2 = Date.now()) { + var _a; + const { + max, + messages = DEFAULT_MESSAGES, + fullDateFormatter = DEFAULT_FORMATTER, + units = DEFAULT_UNITS, + showSecond = false, + rounding = "round" + } = options; + const roundFn = typeof rounding === "number" ? (n) => +n.toFixed(rounding) : Math[rounding]; + const diff = +now2 - +from; + const absDiff = Math.abs(diff); + function getValue2(diff2, unit) { + return roundFn(Math.abs(diff2) / unit.value); + } + function format(diff2, unit) { + const val = getValue2(diff2, unit); + const past = diff2 > 0; + const str = applyFormat(unit.name, val, past); + return applyFormat(past ? "past" : "future", str, past); + } + function applyFormat(name, val, isPast) { + const formatter = messages[name]; + if (typeof formatter === "function") + return formatter(val, isPast); + return formatter.replace("{0}", val.toString()); + } + if (absDiff < 6e4 && !showSecond) + return messages.justNow; + if (typeof max === "number" && absDiff > max) + return fullDateFormatter(new Date(from)); + if (typeof max === "string") { + const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max; + if (unitMax && absDiff > unitMax) + return fullDateFormatter(new Date(from)); + } + for (const [idx, unit] of units.entries()) { + const val = getValue2(diff, unit); + if (val <= 0 && units[idx - 1]) + return format(diff, units[idx - 1]); + if (absDiff < unit.max) + return format(diff, unit); + } + return messages.invalid; +} +function useTimeoutPoll(fn, interval, options = {}) { + const { + immediate = true, + immediateCallback = false + } = options; + const { start } = useTimeoutFn(loop, interval, { immediate }); + const isActive = shallowRef(false); + async function loop() { + if (!isActive.value) + return; + await fn(); + start(); + } + function resume() { + if (!isActive.value) { + isActive.value = true; + if (immediateCallback) + fn(); + start(); + } + } + function pause() { + isActive.value = false; + } + if (immediate && isClient) + resume(); + tryOnScopeDispose(pause); + return { + isActive, + pause, + resume + }; +} +function useTimestamp(options = {}) { + const { + controls: exposeControls = false, + offset = 0, + immediate = true, + interval = "requestAnimationFrame", + callback + } = options; + const ts = shallowRef(timestamp() + offset); + const update = () => ts.value = timestamp() + offset; + const cb = callback ? () => { + update(); + callback(ts.value); + } : update; + const controls = interval === "requestAnimationFrame" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate }); + if (exposeControls) { + return { + timestamp: ts, + ...controls + }; + } else { + return ts; + } +} +function useTitle(newTitle = null, options = {}) { + var _a, _b, _c; + const { + document: document2 = defaultDocument, + restoreOnUnmount = (t) => t + } = options; + const originalTitle = (_a = document2 == null ? void 0 : document2.title) != null ? _a : ""; + const title = toRef2((_b = newTitle != null ? newTitle : document2 == null ? void 0 : document2.title) != null ? _b : null); + const isReadonly2 = !!(newTitle && typeof newTitle === "function"); + function format(t) { + if (!("titleTemplate" in options)) + return t; + const template = options.titleTemplate || "%s"; + return typeof template === "function" ? template(t) : toValue(template).replace(/%s/g, t); + } + watch( + title, + (newValue, oldValue) => { + if (newValue !== oldValue && document2) + document2.title = format(newValue != null ? newValue : ""); + }, + { immediate: true } + ); + if (options.observe && !options.titleTemplate && document2 && !isReadonly2) { + useMutationObserver( + (_c = document2.head) == null ? void 0 : _c.querySelector("title"), + () => { + if (document2 && document2.title !== title.value) + title.value = format(document2.title); + }, + { childList: true } + ); + } + tryOnScopeDispose(() => { + if (restoreOnUnmount) { + const restoredTitle = restoreOnUnmount(originalTitle, title.value || ""); + if (restoredTitle != null && document2) + document2.title = restoredTitle; + } + }); + return title; +} +var _TransitionPresets = { + easeInSine: [0.12, 0, 0.39, 0], + easeOutSine: [0.61, 1, 0.88, 1], + easeInOutSine: [0.37, 0, 0.63, 1], + easeInQuad: [0.11, 0, 0.5, 0], + easeOutQuad: [0.5, 1, 0.89, 1], + easeInOutQuad: [0.45, 0, 0.55, 1], + easeInCubic: [0.32, 0, 0.67, 0], + easeOutCubic: [0.33, 1, 0.68, 1], + easeInOutCubic: [0.65, 0, 0.35, 1], + easeInQuart: [0.5, 0, 0.75, 0], + easeOutQuart: [0.25, 1, 0.5, 1], + easeInOutQuart: [0.76, 0, 0.24, 1], + easeInQuint: [0.64, 0, 0.78, 0], + easeOutQuint: [0.22, 1, 0.36, 1], + easeInOutQuint: [0.83, 0, 0.17, 1], + easeInExpo: [0.7, 0, 0.84, 0], + easeOutExpo: [0.16, 1, 0.3, 1], + easeInOutExpo: [0.87, 0, 0.13, 1], + easeInCirc: [0.55, 0, 1, 0.45], + easeOutCirc: [0, 0.55, 0.45, 1], + easeInOutCirc: [0.85, 0, 0.15, 1], + easeInBack: [0.36, 0, 0.66, -0.56], + easeOutBack: [0.34, 1.56, 0.64, 1], + easeInOutBack: [0.68, -0.6, 0.32, 1.6] +}; +var TransitionPresets = Object.assign({}, { linear: identity }, _TransitionPresets); +function createEasingFunction([p0, p1, p2, p3]) { + const a = (a1, a2) => 1 - 3 * a2 + 3 * a1; + const b = (a1, a2) => 3 * a2 - 6 * a1; + const c = (a1) => 3 * a1; + const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t; + const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1); + const getTforX = (x) => { + let aGuessT = x; + for (let i = 0; i < 4; ++i) { + const currentSlope = getSlope(aGuessT, p0, p2); + if (currentSlope === 0) + return aGuessT; + const currentX = calcBezier(aGuessT, p0, p2) - x; + aGuessT -= currentX / currentSlope; + } + return aGuessT; + }; + return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3); +} +function lerp(a, b, alpha) { + return a + alpha * (b - a); +} +function toVec(t) { + return (typeof t === "number" ? [t] : t) || []; +} +function executeTransition(source, from, to, options = {}) { + var _a, _b; + const fromVal = toValue(from); + const toVal = toValue(to); + const v1 = toVec(fromVal); + const v2 = toVec(toVal); + const duration = (_a = toValue(options.duration)) != null ? _a : 1e3; + const startedAt = Date.now(); + const endAt = Date.now() + duration; + const trans = typeof options.transition === "function" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity; + const ease = typeof trans === "function" ? trans : createEasingFunction(trans); + return new Promise((resolve) => { + source.value = fromVal; + const tick = () => { + var _a2; + if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) { + resolve(); + return; + } + const now2 = Date.now(); + const alpha = ease((now2 - startedAt) / duration); + const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha)); + if (Array.isArray(source.value)) + source.value = arr.map((n, i) => { + var _a3, _b2; + return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha); + }); + else if (typeof source.value === "number") + source.value = arr[0]; + if (now2 < endAt) { + requestAnimationFrame(tick); + } else { + source.value = toVal; + resolve(); + } + }; + tick(); + }); +} +function useTransition(source, options = {}) { + let currentId = 0; + const sourceVal = () => { + const v = toValue(source); + return typeof v === "number" ? v : v.map(toValue); + }; + const outputRef = ref(sourceVal()); + watch(sourceVal, async (to) => { + var _a, _b; + if (toValue(options.disabled)) + return; + const id = ++currentId; + if (options.delay) + await promiseTimeout(toValue(options.delay)); + if (id !== currentId) + return; + const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to); + (_a = options.onStarted) == null ? void 0 : _a.call(options); + await executeTransition(outputRef, outputRef.value, toVal, { + ...options, + abort: () => { + var _a2; + return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options)); + } + }); + (_b = options.onFinished) == null ? void 0 : _b.call(options); + }, { deep: true }); + watch(() => toValue(options.disabled), (disabled) => { + if (disabled) { + currentId++; + outputRef.value = sourceVal(); + } + }); + tryOnScopeDispose(() => { + currentId++; + }); + return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value); +} +function useUrlSearchParams(mode = "history", options = {}) { + const { + initialValue = {}, + removeNullishValues = true, + removeFalsyValues = false, + write: enableWrite = true, + writeMode = "replace", + window: window2 = defaultWindow + } = options; + if (!window2) + return reactive(initialValue); + const state = reactive({}); + function getRawParams() { + if (mode === "history") { + return window2.location.search || ""; + } else if (mode === "hash") { + const hash = window2.location.hash || ""; + const index = hash.indexOf("?"); + return index > 0 ? hash.slice(index) : ""; + } else { + return (window2.location.hash || "").replace(/^#/, ""); + } + } + function constructQuery(params) { + const stringified = params.toString(); + if (mode === "history") + return `${stringified ? `?${stringified}` : ""}${window2.location.hash || ""}`; + if (mode === "hash-params") + return `${window2.location.search || ""}${stringified ? `#${stringified}` : ""}`; + const hash = window2.location.hash || "#"; + const index = hash.indexOf("?"); + if (index > 0) + return `${window2.location.search || ""}${hash.slice(0, index)}${stringified ? `?${stringified}` : ""}`; + return `${window2.location.search || ""}${hash}${stringified ? `?${stringified}` : ""}`; + } + function read() { + return new URLSearchParams(getRawParams()); + } + function updateState(params) { + const unusedKeys = new Set(Object.keys(state)); + for (const key of params.keys()) { + const paramsForKey = params.getAll(key); + state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || ""; + unusedKeys.delete(key); + } + Array.from(unusedKeys).forEach((key) => delete state[key]); + } + const { pause, resume } = watchPausable( + state, + () => { + const params = new URLSearchParams(""); + Object.keys(state).forEach((key) => { + const mapEntry = state[key]; + if (Array.isArray(mapEntry)) + mapEntry.forEach((value) => params.append(key, value)); + else if (removeNullishValues && mapEntry == null) + params.delete(key); + else if (removeFalsyValues && !mapEntry) + params.delete(key); + else + params.set(key, mapEntry); + }); + write(params, false); + }, + { deep: true } + ); + function write(params, shouldUpdate) { + pause(); + if (shouldUpdate) + updateState(params); + if (writeMode === "replace") { + window2.history.replaceState( + window2.history.state, + window2.document.title, + window2.location.pathname + constructQuery(params) + ); + } else { + window2.history.pushState( + window2.history.state, + window2.document.title, + window2.location.pathname + constructQuery(params) + ); + } + resume(); + } + function onChanged() { + if (!enableWrite) + return; + write(read(), true); + } + const listenerOptions = { passive: true }; + useEventListener(window2, "popstate", onChanged, listenerOptions); + if (mode !== "history") + useEventListener(window2, "hashchange", onChanged, listenerOptions); + const initial = read(); + if (initial.keys().next().value) + updateState(initial); + else + Object.assign(state, initialValue); + return state; +} +function useUserMedia(options = {}) { + var _a, _b; + const enabled = shallowRef((_a = options.enabled) != null ? _a : false); + const autoSwitch = shallowRef((_b = options.autoSwitch) != null ? _b : true); + const constraints = ref(options.constraints); + const { navigator: navigator2 = defaultNavigator } = options; + const isSupported = useSupported(() => { + var _a2; + return (_a2 = navigator2 == null ? void 0 : navigator2.mediaDevices) == null ? void 0 : _a2.getUserMedia; + }); + const stream = shallowRef(); + function getDeviceOptions(type) { + switch (type) { + case "video": { + if (constraints.value) + return constraints.value.video || false; + break; + } + case "audio": { + if (constraints.value) + return constraints.value.audio || false; + break; + } + } + } + async function _start() { + if (!isSupported.value || stream.value) + return; + stream.value = await navigator2.mediaDevices.getUserMedia({ + video: getDeviceOptions("video"), + audio: getDeviceOptions("audio") + }); + return stream.value; + } + function _stop() { + var _a2; + (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop()); + stream.value = void 0; + } + function stop() { + _stop(); + enabled.value = false; + } + async function start() { + await _start(); + if (stream.value) + enabled.value = true; + return stream.value; + } + async function restart() { + _stop(); + return await start(); + } + watch( + enabled, + (v) => { + if (v) + _start(); + else _stop(); + }, + { immediate: true } + ); + watch( + constraints, + () => { + if (autoSwitch.value && stream.value) + restart(); + }, + { immediate: true } + ); + tryOnScopeDispose(() => { + stop(); + }); + return { + isSupported, + stream, + start, + stop, + restart, + constraints, + enabled, + autoSwitch + }; +} +function useVModel(props, key, emit, options = {}) { + var _a, _b, _c; + const { + clone = false, + passive = false, + eventName, + deep = false, + defaultValue, + shouldEmit + } = options; + const vm = getCurrentInstance(); + const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy)); + let event = eventName; + if (!key) { + key = "modelValue"; + } + event = event || `update:${key.toString()}`; + const cloneFn = (val) => !clone ? val : typeof clone === "function" ? clone(val) : cloneFnJSON(val); + const getValue2 = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue; + const triggerEmit = (value) => { + if (shouldEmit) { + if (shouldEmit(value)) + _emit(event, value); + } else { + _emit(event, value); + } + }; + if (passive) { + const initialValue = getValue2(); + const proxy = ref(initialValue); + let isUpdating = false; + watch( + () => props[key], + (v) => { + if (!isUpdating) { + isUpdating = true; + proxy.value = cloneFn(v); + nextTick(() => isUpdating = false); + } + } + ); + watch( + proxy, + (v) => { + if (!isUpdating && (v !== props[key] || deep)) + triggerEmit(v); + }, + { deep } + ); + return proxy; + } else { + return computed({ + get() { + return getValue2(); + }, + set(value) { + triggerEmit(value); + } + }); + } +} +function useVModels(props, emit, options = {}) { + const ret = {}; + for (const key in props) { + ret[key] = useVModel( + props, + key, + emit, + options + ); + } + return ret; +} +function useVibrate(options) { + const { + pattern = [], + interval = 0, + navigator: navigator2 = defaultNavigator + } = options || {}; + const isSupported = useSupported(() => typeof navigator2 !== "undefined" && "vibrate" in navigator2); + const patternRef = toRef2(pattern); + let intervalControls; + const vibrate = (pattern2 = patternRef.value) => { + if (isSupported.value) + navigator2.vibrate(pattern2); + }; + const stop = () => { + if (isSupported.value) + navigator2.vibrate(0); + intervalControls == null ? void 0 : intervalControls.pause(); + }; + if (interval > 0) { + intervalControls = useIntervalFn( + vibrate, + interval, + { + immediate: false, + immediateCallback: false + } + ); + } + return { + isSupported, + pattern, + intervalControls, + vibrate, + stop + }; +} +function useVirtualList(list, options) { + const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = "itemHeight" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list); + return { + list: currentList, + scrollTo, + containerProps: { + ref: containerRef, + onScroll: () => { + calculateRange(); + }, + style: containerStyle + }, + wrapperProps + }; +} +function useVirtualListResources(list) { + const containerRef = shallowRef(null); + const size = useElementSize(containerRef); + const currentList = ref([]); + const source = shallowRef(list); + const state = ref({ start: 0, end: 10 }); + return { state, source, currentList, size, containerRef }; +} +function createGetViewCapacity(state, source, itemSize) { + return (containerSize) => { + if (typeof itemSize === "number") + return Math.ceil(containerSize / itemSize); + const { start = 0 } = state.value; + let sum = 0; + let capacity = 0; + for (let i = start; i < source.value.length; i++) { + const size = itemSize(i); + sum += size; + capacity = i; + if (sum > containerSize) + break; + } + return capacity - start; + }; +} +function createGetOffset(source, itemSize) { + return (scrollDirection) => { + if (typeof itemSize === "number") + return Math.floor(scrollDirection / itemSize) + 1; + let sum = 0; + let offset = 0; + for (let i = 0; i < source.value.length; i++) { + const size = itemSize(i); + sum += size; + if (sum >= scrollDirection) { + offset = i; + break; + } + } + return offset + 1; + }; +} +function createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) { + return () => { + const element = containerRef.value; + if (element) { + const offset = getOffset(type === "vertical" ? element.scrollTop : element.scrollLeft); + const viewCapacity = getViewCapacity(type === "vertical" ? element.clientHeight : element.clientWidth); + const from = offset - overscan; + const to = offset + viewCapacity + overscan; + state.value = { + start: from < 0 ? 0 : from, + end: to > source.value.length ? source.value.length : to + }; + currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({ + data: ele, + index: index + state.value.start + })); + } + }; +} +function createGetDistance(itemSize, source) { + return (index) => { + if (typeof itemSize === "number") { + const size2 = index * itemSize; + return size2; + } + const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0); + return size; + }; +} +function useWatchForSizes(size, list, containerRef, calculateRange) { + watch([size.width, size.height, list, containerRef], () => { + calculateRange(); + }); +} +function createComputedTotalSize(itemSize, source) { + return computed(() => { + if (typeof itemSize === "number") + return source.value.length * itemSize; + return source.value.reduce((sum, _, index) => sum + itemSize(index), 0); + }); +} +var scrollToDictionaryForElementScrollKey = { + horizontal: "scrollLeft", + vertical: "scrollTop" +}; +function createScrollTo(type, calculateRange, getDistance, containerRef) { + return (index) => { + if (containerRef.value) { + containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index); + calculateRange(); + } + }; +} +function useHorizontalVirtualList(options, list) { + const resources = useVirtualListResources(list); + const { state, source, currentList, size, containerRef } = resources; + const containerStyle = { overflowX: "auto" }; + const { itemWidth, overscan = 5 } = options; + const getViewCapacity = createGetViewCapacity(state, source, itemWidth); + const getOffset = createGetOffset(source, itemWidth); + const calculateRange = createCalculateRange("horizontal", overscan, getOffset, getViewCapacity, resources); + const getDistanceLeft = createGetDistance(itemWidth, source); + const offsetLeft = computed(() => getDistanceLeft(state.value.start)); + const totalWidth = createComputedTotalSize(itemWidth, source); + useWatchForSizes(size, list, containerRef, calculateRange); + const scrollTo = createScrollTo("horizontal", calculateRange, getDistanceLeft, containerRef); + const wrapperProps = computed(() => { + return { + style: { + height: "100%", + width: `${totalWidth.value - offsetLeft.value}px`, + marginLeft: `${offsetLeft.value}px`, + display: "flex" + } + }; + }); + return { + scrollTo, + calculateRange, + wrapperProps, + containerStyle, + currentList, + containerRef + }; +} +function useVerticalVirtualList(options, list) { + const resources = useVirtualListResources(list); + const { state, source, currentList, size, containerRef } = resources; + const containerStyle = { overflowY: "auto" }; + const { itemHeight, overscan = 5 } = options; + const getViewCapacity = createGetViewCapacity(state, source, itemHeight); + const getOffset = createGetOffset(source, itemHeight); + const calculateRange = createCalculateRange("vertical", overscan, getOffset, getViewCapacity, resources); + const getDistanceTop = createGetDistance(itemHeight, source); + const offsetTop = computed(() => getDistanceTop(state.value.start)); + const totalHeight = createComputedTotalSize(itemHeight, source); + useWatchForSizes(size, list, containerRef, calculateRange); + const scrollTo = createScrollTo("vertical", calculateRange, getDistanceTop, containerRef); + const wrapperProps = computed(() => { + return { + style: { + width: "100%", + height: `${totalHeight.value - offsetTop.value}px`, + marginTop: `${offsetTop.value}px` + } + }; + }); + return { + calculateRange, + scrollTo, + containerStyle, + wrapperProps, + currentList, + containerRef + }; +} +function useWakeLock(options = {}) { + const { + navigator: navigator2 = defaultNavigator, + document: document2 = defaultDocument + } = options; + const requestedType = shallowRef(false); + const sentinel = shallowRef(null); + const documentVisibility = useDocumentVisibility({ document: document2 }); + const isSupported = useSupported(() => navigator2 && "wakeLock" in navigator2); + const isActive = computed(() => !!sentinel.value && documentVisibility.value === "visible"); + if (isSupported.value) { + useEventListener(sentinel, "release", () => { + var _a, _b; + requestedType.value = (_b = (_a = sentinel.value) == null ? void 0 : _a.type) != null ? _b : false; + }, { passive: true }); + whenever( + () => documentVisibility.value === "visible" && (document2 == null ? void 0 : document2.visibilityState) === "visible" && requestedType.value, + (type) => { + requestedType.value = false; + forceRequest(type); + } + ); + } + async function forceRequest(type) { + var _a; + await ((_a = sentinel.value) == null ? void 0 : _a.release()); + sentinel.value = isSupported.value ? await navigator2.wakeLock.request(type) : null; + } + async function request(type) { + if (documentVisibility.value === "visible") + await forceRequest(type); + else + requestedType.value = type; + } + async function release() { + requestedType.value = false; + const s = sentinel.value; + sentinel.value = null; + await (s == null ? void 0 : s.release()); + } + return { + sentinel, + isSupported, + isActive, + request, + forceRequest, + release + }; +} +function useWebNotification(options = {}) { + const { + window: window2 = defaultWindow, + requestPermissions: _requestForPermissions = true + } = options; + const defaultWebNotificationOptions = options; + const isSupported = useSupported(() => { + if (!window2 || !("Notification" in window2)) + return false; + if (Notification.permission === "granted") + return true; + try { + const notification2 = new Notification(""); + notification2.onshow = () => { + notification2.close(); + }; + } catch (e) { + if (e.name === "TypeError") + return false; + } + return true; + }); + const permissionGranted = shallowRef(isSupported.value && "permission" in Notification && Notification.permission === "granted"); + const notification = ref(null); + const ensurePermissions = async () => { + if (!isSupported.value) + return; + if (!permissionGranted.value && Notification.permission !== "denied") { + const result = await Notification.requestPermission(); + if (result === "granted") + permissionGranted.value = true; + } + return permissionGranted.value; + }; + const { on: onClick, trigger: clickTrigger } = createEventHook(); + const { on: onShow, trigger: showTrigger } = createEventHook(); + const { on: onError, trigger: errorTrigger } = createEventHook(); + const { on: onClose, trigger: closeTrigger } = createEventHook(); + const show = async (overrides) => { + if (!isSupported.value || !permissionGranted.value) + return; + const options2 = Object.assign({}, defaultWebNotificationOptions, overrides); + notification.value = new Notification(options2.title || "", options2); + notification.value.onclick = clickTrigger; + notification.value.onshow = showTrigger; + notification.value.onerror = errorTrigger; + notification.value.onclose = closeTrigger; + return notification.value; + }; + const close = () => { + if (notification.value) + notification.value.close(); + notification.value = null; + }; + if (_requestForPermissions) + tryOnMounted(ensurePermissions); + tryOnScopeDispose(close); + if (isSupported.value && window2) { + const document2 = window2.document; + useEventListener(document2, "visibilitychange", (e) => { + e.preventDefault(); + if (document2.visibilityState === "visible") { + close(); + } + }); + } + return { + isSupported, + notification, + ensurePermissions, + permissionGranted, + show, + close, + onClick, + onShow, + onError, + onClose + }; +} +var DEFAULT_PING_MESSAGE = "ping"; +function resolveNestedOptions(options) { + if (options === true) + return {}; + return options; +} +function useWebSocket(url, options = {}) { + const { + onConnected, + onDisconnected, + onError, + onMessage, + immediate = true, + autoConnect = true, + autoClose = true, + protocols = [] + } = options; + const data = ref(null); + const status = shallowRef("CLOSED"); + const wsRef = ref(); + const urlRef = toRef2(url); + let heartbeatPause; + let heartbeatResume; + let explicitlyClosed = false; + let retried = 0; + let bufferedData = []; + let retryTimeout; + let pongTimeoutWait; + const _sendBuffer = () => { + if (bufferedData.length && wsRef.value && status.value === "OPEN") { + for (const buffer of bufferedData) + wsRef.value.send(buffer); + bufferedData = []; + } + }; + const resetRetry = () => { + if (retryTimeout != null) { + clearTimeout(retryTimeout); + retryTimeout = void 0; + } + }; + const resetHeartbeat = () => { + clearTimeout(pongTimeoutWait); + pongTimeoutWait = void 0; + }; + const close = (code = 1e3, reason) => { + resetRetry(); + if (!isClient && !isWorker || !wsRef.value) + return; + explicitlyClosed = true; + resetHeartbeat(); + heartbeatPause == null ? void 0 : heartbeatPause(); + wsRef.value.close(code, reason); + wsRef.value = void 0; + }; + const send = (data2, useBuffer = true) => { + if (!wsRef.value || status.value !== "OPEN") { + if (useBuffer) + bufferedData.push(data2); + return false; + } + _sendBuffer(); + wsRef.value.send(data2); + return true; + }; + const _init = () => { + if (explicitlyClosed || typeof urlRef.value === "undefined") + return; + const ws = new WebSocket(urlRef.value, protocols); + wsRef.value = ws; + status.value = "CONNECTING"; + ws.onopen = () => { + status.value = "OPEN"; + retried = 0; + onConnected == null ? void 0 : onConnected(ws); + heartbeatResume == null ? void 0 : heartbeatResume(); + _sendBuffer(); + }; + ws.onclose = (ev) => { + status.value = "CLOSED"; + resetHeartbeat(); + heartbeatPause == null ? void 0 : heartbeatPause(); + onDisconnected == null ? void 0 : onDisconnected(ws, ev); + if (!explicitlyClosed && options.autoReconnect && (wsRef.value == null || ws === wsRef.value)) { + const { + retries = -1, + delay = 1e3, + onFailed + } = resolveNestedOptions(options.autoReconnect); + const checkRetires = typeof retries === "function" ? retries : () => typeof retries === "number" && (retries < 0 || retried < retries); + if (checkRetires(retried)) { + retried += 1; + retryTimeout = setTimeout(_init, delay); + } else { + onFailed == null ? void 0 : onFailed(); + } + } + }; + ws.onerror = (e) => { + onError == null ? void 0 : onError(ws, e); + }; + ws.onmessage = (e) => { + if (options.heartbeat) { + resetHeartbeat(); + const { + message = DEFAULT_PING_MESSAGE, + responseMessage = message + } = resolveNestedOptions(options.heartbeat); + if (e.data === toValue(responseMessage)) + return; + } + data.value = e.data; + onMessage == null ? void 0 : onMessage(ws, e); + }; + }; + if (options.heartbeat) { + const { + message = DEFAULT_PING_MESSAGE, + interval = 1e3, + pongTimeout = 1e3 + } = resolveNestedOptions(options.heartbeat); + const { pause, resume } = useIntervalFn( + () => { + send(toValue(message), false); + if (pongTimeoutWait != null) + return; + pongTimeoutWait = setTimeout(() => { + close(); + explicitlyClosed = false; + }, pongTimeout); + }, + interval, + { immediate: false } + ); + heartbeatPause = pause; + heartbeatResume = resume; + } + if (autoClose) { + if (isClient) + useEventListener("beforeunload", () => close(), { passive: true }); + tryOnScopeDispose(close); + } + const open = () => { + if (!isClient && !isWorker) + return; + close(); + explicitlyClosed = false; + retried = 0; + _init(); + }; + if (immediate) + open(); + if (autoConnect) + watch(urlRef, open); + return { + data, + status, + close, + send, + open, + ws: wsRef + }; +} +function useWebWorker(arg0, workerOptions, options) { + const { + window: window2 = defaultWindow + } = options != null ? options : {}; + const data = ref(null); + const worker = shallowRef(); + const post = (...args) => { + if (!worker.value) + return; + worker.value.postMessage(...args); + }; + const terminate = function terminate2() { + if (!worker.value) + return; + worker.value.terminate(); + }; + if (window2) { + if (typeof arg0 === "string") + worker.value = new Worker(arg0, workerOptions); + else if (typeof arg0 === "function") + worker.value = arg0(); + else + worker.value = arg0; + worker.value.onmessage = (e) => { + data.value = e.data; + }; + tryOnScopeDispose(() => { + if (worker.value) + worker.value.terminate(); + }); + } + return { + data, + post, + terminate, + worker + }; +} +function depsParser(deps, localDeps) { + if (deps.length === 0 && localDeps.length === 0) + return ""; + const depsString = deps.map((dep) => `'${dep}'`).toString(); + const depsFunctionString = localDeps.filter((dep) => typeof dep === "function").map((fn) => { + const str = fn.toString(); + if (str.trim().startsWith("function")) { + return str; + } else { + const name = fn.name; + return `const ${name} = ${str}`; + } + }).join(";"); + const importString = `importScripts(${depsString});`; + return `${depsString.trim() === "" ? "" : importString} ${depsFunctionString}`; +} +function jobRunner(userFunc) { + return (e) => { + const userFuncArgs = e.data[0]; + return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => { + postMessage(["SUCCESS", result]); + }).catch((error) => { + postMessage(["ERROR", error]); + }); + }; +} +function createWorkerBlobUrl(fn, deps, localDeps) { + const blobCode = `${depsParser(deps, localDeps)}; onmessage=(${jobRunner})(${fn})`; + const blob = new Blob([blobCode], { type: "text/javascript" }); + const url = URL.createObjectURL(blob); + return url; +} +function useWebWorkerFn(fn, options = {}) { + const { + dependencies = [], + localDependencies = [], + timeout, + window: window2 = defaultWindow + } = options; + const worker = ref(); + const workerStatus = shallowRef("PENDING"); + const promise = ref({}); + const timeoutId = shallowRef(); + const workerTerminate = (status = "PENDING") => { + if (worker.value && worker.value._url && window2) { + worker.value.terminate(); + URL.revokeObjectURL(worker.value._url); + promise.value = {}; + worker.value = void 0; + window2.clearTimeout(timeoutId.value); + workerStatus.value = status; + } + }; + workerTerminate(); + tryOnScopeDispose(workerTerminate); + const generateWorker = () => { + const blobUrl = createWorkerBlobUrl(fn, dependencies, localDependencies); + const newWorker = new Worker(blobUrl); + newWorker._url = blobUrl; + newWorker.onmessage = (e) => { + const { resolve = () => { + }, reject = () => { + } } = promise.value; + const [status, result] = e.data; + switch (status) { + case "SUCCESS": + resolve(result); + workerTerminate(status); + break; + default: + reject(result); + workerTerminate("ERROR"); + break; + } + }; + newWorker.onerror = (e) => { + const { reject = () => { + } } = promise.value; + e.preventDefault(); + reject(e); + workerTerminate("ERROR"); + }; + if (timeout) { + timeoutId.value = setTimeout( + () => workerTerminate("TIMEOUT_EXPIRED"), + timeout + ); + } + return newWorker; + }; + const callWorker = (...fnArgs) => new Promise((resolve, reject) => { + var _a; + promise.value = { + resolve, + reject + }; + (_a = worker.value) == null ? void 0 : _a.postMessage([[...fnArgs]]); + workerStatus.value = "RUNNING"; + }); + const workerFn = (...fnArgs) => { + if (workerStatus.value === "RUNNING") { + console.error( + "[useWebWorkerFn] You can only run one instance of the worker at a time." + ); + return Promise.reject(); + } + worker.value = generateWorker(); + return callWorker(...fnArgs); + }; + return { + workerFn, + workerStatus, + workerTerminate + }; +} +function useWindowFocus(options = {}) { + const { window: window2 = defaultWindow } = options; + if (!window2) + return shallowRef(false); + const focused = shallowRef(window2.document.hasFocus()); + const listenerOptions = { passive: true }; + useEventListener(window2, "blur", () => { + focused.value = false; + }, listenerOptions); + useEventListener(window2, "focus", () => { + focused.value = true; + }, listenerOptions); + return focused; +} +function useWindowScroll(options = {}) { + const { window: window2 = defaultWindow, ...rest } = options; + return useScroll(window2, rest); +} +function useWindowSize(options = {}) { + const { + window: window2 = defaultWindow, + initialWidth = Number.POSITIVE_INFINITY, + initialHeight = Number.POSITIVE_INFINITY, + listenOrientation = true, + includeScrollbar = true, + type = "inner" + } = options; + const width = shallowRef(initialWidth); + const height = shallowRef(initialHeight); + const update = () => { + if (window2) { + if (type === "outer") { + width.value = window2.outerWidth; + height.value = window2.outerHeight; + } else if (type === "visual" && window2.visualViewport) { + const { width: visualViewportWidth, height: visualViewportHeight, scale } = window2.visualViewport; + width.value = Math.round(visualViewportWidth * scale); + height.value = Math.round(visualViewportHeight * scale); + } else if (includeScrollbar) { + width.value = window2.innerWidth; + height.value = window2.innerHeight; + } else { + width.value = window2.document.documentElement.clientWidth; + height.value = window2.document.documentElement.clientHeight; + } + } + }; + update(); + tryOnMounted(update); + const listenerOptions = { passive: true }; + useEventListener("resize", update, listenerOptions); + if (window2 && type === "visual" && window2.visualViewport) { + useEventListener(window2.visualViewport, "resize", update, listenerOptions); + } + if (listenOrientation) { + const matches = useMediaQuery("(orientation: portrait)"); + watch(matches, () => update()); + } + return { width, height }; +} + +export { + computedEager, + computedWithControl, + tryOnScopeDispose, + createEventHook, + createGlobalState, + injectLocal, + provideLocal, + createInjectionState, + createRef, + createSharedComposable, + extendRef, + get, + isDefined, + makeDestructurable, + reactify, + reactifyObject, + toReactive, + reactiveComputed, + reactiveOmit, + isClient, + isWorker, + isDef, + notNullish, + assert, + isObject, + now, + timestamp, + clamp, + noop, + rand, + hasOwn, + isIOS, + createFilterWrapper, + bypassFilter, + debounceFilter, + throttleFilter, + pausableFilter, + hyphenate, + camelize, + promiseTimeout, + identity, + createSingletonPromise, + invoke, + containsProp, + increaseWithUnit, + pxValue, + objectPick, + objectOmit, + objectEntries, + getLifeCycleTarget, + toArray, + toRef2 as toRef, + resolveRef, + reactivePick, + refAutoReset, + useDebounceFn, + refDebounced, + refDefault, + useThrottleFn, + refThrottled, + refWithControl, + controlledRef, + set, + watchWithFilter, + watchPausable, + syncRef, + syncRefs, + toRefs2 as toRefs, + toValue2 as toValue, + resolveUnref, + tryOnBeforeMount, + tryOnBeforeUnmount, + tryOnMounted, + tryOnUnmounted, + until, + useArrayDifference, + useArrayEvery, + useArrayFilter, + useArrayFind, + useArrayFindIndex, + useArrayFindLast, + useArrayIncludes, + useArrayJoin, + useArrayMap, + useArrayReduce, + useArraySome, + useArrayUnique, + useCounter, + formatDate, + normalizeDate, + useDateFormat, + useIntervalFn, + useInterval, + useLastChanged, + useTimeoutFn, + useTimeout, + useToNumber, + useToString, + useToggle, + watchArray, + watchAtMost, + watchDebounced, + watchDeep, + watchIgnorable, + watchImmediate, + watchOnce, + watchThrottled, + watchTriggerable, + whenever, + computedAsync, + computedInject, + createReusableTemplate, + createTemplatePromise, + createUnrefFn, + defaultWindow, + defaultDocument, + defaultNavigator, + defaultLocation, + unrefElement, + useEventListener, + onClickOutside, + useMounted, + useSupported, + useMutationObserver, + onElementRemoval, + onKeyStroke, + onKeyDown, + onKeyPressed, + onKeyUp, + onLongPress, + onStartTyping, + templateRef, + useActiveElement, + useRafFn, + useAnimate, + useAsyncQueue, + useAsyncState, + useBase64, + useBattery, + useBluetooth, + useSSRWidth, + provideSSRWidth, + useMediaQuery, + breakpointsTailwind, + breakpointsBootstrapV5, + breakpointsVuetifyV2, + breakpointsVuetifyV3, + breakpointsVuetify, + breakpointsAntDesign, + breakpointsQuasar, + breakpointsSematic, + breakpointsMasterCss, + breakpointsPrimeFlex, + breakpointsElement, + useBreakpoints, + useBroadcastChannel, + useBrowserLocation, + useCached, + usePermission, + useClipboard, + useClipboardItems, + cloneFnJSON, + useCloned, + getSSRHandler, + setSSRHandler, + usePreferredDark, + StorageSerializers, + customStorageEventName, + useStorage, + useColorMode, + useConfirmDialog, + useCountdown, + useCssVar, + useCurrentElement, + useCycleList, + useDark, + useManualRefHistory, + useRefHistory, + useDebouncedRefHistory, + useDeviceMotion, + useDeviceOrientation, + useDevicePixelRatio, + useDevicesList, + useDisplayMedia, + useDocumentVisibility, + useDraggable, + useDropZone, + useResizeObserver, + useElementBounding, + useElementByPoint, + useElementHover, + useElementSize, + useIntersectionObserver, + useElementVisibility, + useEventBus, + useEventSource, + useEyeDropper, + useFavicon, + createFetch, + useFetch, + useFileDialog, + useFileSystemAccess, + useFocus, + useFocusWithin, + useFps, + useFullscreen, + mapGamepadToXbox360Controller, + useGamepad, + useGeolocation, + useIdle, + useImage, + useScroll, + useInfiniteScroll, + useKeyModifier, + useLocalStorage, + DefaultMagicKeysAliasMap, + useMagicKeys, + useMediaControls, + useMemoize, + useMemory, + useMouse, + useMouseInElement, + useMousePressed, + useNavigatorLanguage, + useNetwork, + useNow, + useObjectUrl, + useOffsetPagination, + useOnline, + usePageLeave, + useScreenOrientation, + useParallax, + useParentElement, + usePerformanceObserver, + usePointer, + usePointerLock, + usePointerSwipe, + usePreferredColorScheme, + usePreferredContrast, + usePreferredLanguages, + usePreferredReducedMotion, + usePreferredReducedTransparency, + usePrevious, + useScreenSafeArea, + useScriptTag, + useScrollLock, + useSessionStorage, + useShare, + useSorted, + useSpeechRecognition, + useSpeechSynthesis, + useStepper, + useStorageAsync, + useStyleTag, + useSwipe, + useTemplateRefsList, + useTextDirection, + useTextSelection, + useTextareaAutosize, + useThrottledRefHistory, + useTimeAgo, + formatTimeAgo, + useTimeoutPoll, + useTimestamp, + useTitle, + TransitionPresets, + executeTransition, + useTransition, + useUrlSearchParams, + useUserMedia, + useVModel, + useVModels, + useVibrate, + useVirtualList, + useWakeLock, + useWebNotification, + useWebSocket, + useWebWorker, + useWebWorkerFn, + useWindowFocus, + useWindowScroll, + useWindowSize +}; +//# sourceMappingURL=chunk-LJKO4TMH.js.map diff --git a/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-LJKO4TMH.js.map b/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-LJKO4TMH.js.map new file mode 100644 index 0000000..87cb807 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-LJKO4TMH.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../node_modules/@vueuse/shared/index.mjs", "../../../node_modules/@vueuse/core/index.mjs"], + "sourcesContent": ["import { shallowRef, watchEffect, readonly, watch, customRef, getCurrentScope, onScopeDispose, effectScope, getCurrentInstance, hasInjectionContext, inject, provide, ref, isRef, unref, toValue as toValue$1, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue';\n\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, {\n ...options,\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n });\n return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = shallowRef(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n watch(source, update, { flush: \"sync\" });\n const get = typeof fn === \"function\" ? fn : fn.get;\n const set = typeof fn === \"function\" ? void 0 : fn.set;\n const result = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get(v);\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = /* @__PURE__ */ new Set();\n const off = (fn) => {\n fns.delete(fn);\n };\n const clear = () => {\n fns.clear();\n };\n const on = (fn) => {\n fns.add(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (...args) => {\n return Promise.all(Array.from(fns).map((fn) => fn(...args)));\n };\n return {\n on,\n off,\n trigger,\n clear\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = effectScope(true);\n return (...args) => {\n if (!initialized) {\n state = scope.run(() => stateFactory(...args));\n initialized = true;\n }\n return state;\n };\n}\n\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\nconst injectLocal = (...args) => {\n var _a;\n const key = args[0];\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null && !hasInjectionContext())\n throw new Error(\"injectLocal must be called in setup\");\n if (instance && localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n return localProvidedStateMap.get(instance)[key];\n return inject(...args);\n};\n\nconst provideLocal = (key, value) => {\n var _a;\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null)\n throw new Error(\"provideLocal must be called in setup\");\n if (!localProvidedStateMap.has(instance))\n localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null));\n const localProvidedState = localProvidedStateMap.get(instance);\n localProvidedState[key] = value;\n provide(key, value);\n};\n\nfunction createInjectionState(composable, options) {\n const key = (options == null ? void 0 : options.injectionKey) || Symbol(composable.name || \"InjectionState\");\n const defaultValue = options == null ? void 0 : options.defaultValue;\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provideLocal(key, state);\n return state;\n };\n const useInjectedState = () => injectLocal(key, defaultValue);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createRef(value, deep) {\n if (deep === true) {\n return ref(value);\n } else {\n return shallowRef(value);\n }\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!scope) {\n scope = effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return unref(obj);\n return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return unref(v) != null;\n}\n\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = { ...obj };\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue$1;\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(\n keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n })\n );\n}\n\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue$1(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n var _a, _b;\n return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent));\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n let lastInvoker;\n const filter = (invoke) => {\n const duration = toValue$1(ms);\n const maxDuration = toValue$1(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n lastInvoker = invoke;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(lastInvoker());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(...args) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n let ms;\n let trailing;\n let leading;\n let rejectOnCancel;\n if (!isRef(args[0]) && typeof args[0] === \"object\")\n ({ delay: ms, trailing = true, leading = true, rejectOnCancel = false } = args[0]);\n else\n [ms, trailing = true, leading = true, rejectOnCancel = false] = args;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = toValue$1(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter, options = {}) {\n const {\n initialState = \"active\"\n } = options;\n const isActive = toRef(initialState === \"active\");\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nfunction 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 hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?\\d+\\.?\\d*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = Number.parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction pxValue(px) {\n return px.endsWith(\"rem\") ? Number.parseFloat(px) * 16 : Number.parseFloat(px);\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n return (!omitUndefined || value !== void 0) && !keys.includes(key);\n }));\n}\nfunction objectEntries(obj) {\n return Object.entries(obj);\n}\nfunction getLifeCycleTarget(target) {\n return target || getCurrentInstance();\n}\nfunction toArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\nfunction toRef(...args) {\n if (args.length !== 1)\n return toRef$1(...args);\n const r = args[0];\n return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue$1(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = toValue$1(defaultValue);\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = toValue$1(defaultValue);\n trigger();\n }, toValue$1(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(\n debounceFilter(ms, options),\n fn\n );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(\n throttleFilter(ms, trailing, leading, rejectOnCancel),\n fn\n );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(\n ref,\n {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n },\n { enumerable: true }\n );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n const [target, key, value] = args;\n target[key] = value;\n }\n}\n\nfunction watchWithFilter(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\n\nfunction watchPausable(source, cb, options = {}) {\n const {\n eventFilter: filter,\n initialState = \"active\",\n ...watchOptions\n } = options;\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter, { initialState });\n const stop = watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter\n }\n );\n return { stop, pause, resume, isActive };\n}\n\nfunction syncRef(left, right, ...[options]) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options || {};\n const watchers = [];\n const transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n const transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n if (direction === \"both\" || direction === \"ltr\") {\n watchers.push(watchPausable(\n left,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n right.value = transformLTR(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchers.push(watchPausable(\n right,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n left.value = transformRTL(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n const stop = () => {\n watchers.forEach((w) => w.stop());\n };\n return stop;\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n const targetsArray = toArray(targets);\n return watch(\n source,\n (newValue) => targetsArray.forEach((target) => target.value = newValue),\n { flush, deep, immediate }\n );\n}\n\nfunction toRefs(objectRef, options = {}) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n var _a;\n const replaceRef = (_a = toValue$1(options.replaceRef)) != null ? _a : true;\n if (replaceRef) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = { ...objectRef.value, [key]: v };\n Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n objectRef.value = newObject;\n }\n } else {\n objectRef.value[key] = v;\n }\n }\n }));\n }\n return result;\n}\n\nconst toValue = toValue$1;\nconst resolveUnref = toValue$1;\n\nfunction tryOnBeforeMount(fn, sync = true, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeMount(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeUnmount(fn, target);\n}\n\nfunction tryOnMounted(fn, sync = true, target) {\n const instance = getLifeCycleTarget();\n if (instance)\n onMounted(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onUnmounted(fn, target);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n if (stop)\n stop();\n else\n nextTick(() => stop == null ? void 0 : stop());\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue$1(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n if (stop)\n stop();\n else\n nextTick(() => stop == null ? void 0 : stop());\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue$1(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue$1(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(toValue$1(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue$1(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n return value === othVal;\n}\nfunction useArrayDifference(...args) {\n var _a, _b;\n const list = args[0];\n const values = args[1];\n let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n const {\n symmetric = false\n } = (_b = args[3]) != null ? _b : {};\n if (typeof compareFn === \"string\") {\n const key = compareFn;\n compareFn = (value, othVal) => value[key] === othVal[key];\n }\n const diff1 = computed(() => toValue$1(list).filter((x) => toValue$1(values).findIndex((y) => compareFn(x, y)) === -1));\n if (symmetric) {\n const diff2 = computed(() => toValue$1(values).filter((x) => toValue$1(list).findIndex((y) => compareFn(x, y)) === -1));\n return computed(() => symmetric ? [...toValue$1(diff1), ...toValue$1(diff2)] : toValue$1(diff1));\n } else {\n return diff1;\n }\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => toValue$1(list).every((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(() => toValue$1(\n toValue$1(list).find((element, index, array) => fn(toValue$1(element), index, array))\n ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => toValue$1(list).findIndex((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return computed(() => toValue$1(\n !Array.prototype.findLast ? findLast(toValue$1(list), (element, index, array) => fn(toValue$1(element), index, array)) : toValue$1(list).findLast((element, index, array) => fn(toValue$1(element), index, array))\n ));\n}\n\nfunction isArrayIncludesOptions(obj) {\n return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n var _a;\n const list = args[0];\n const value = args[1];\n let comparator = args[2];\n let formIndex = 0;\n if (isArrayIncludesOptions(comparator)) {\n formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n comparator = comparator.comparator;\n }\n if (typeof comparator === \"string\") {\n const key = comparator;\n comparator = (element, value2) => element[key] === toValue$1(value2);\n }\n comparator = comparator != null ? comparator : (element, value2) => element === toValue$1(value2);\n return computed(() => toValue$1(list).slice(formIndex).some((element, index, array) => comparator(\n toValue$1(element),\n toValue$1(value),\n index,\n toValue$1(array)\n )));\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).join(toValue$1(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(toValue$1(sum), toValue$1(value), index);\n return computed(() => {\n const resolved = toValue$1(list);\n return args.length ? resolved.reduce(reduceCallback, typeof args[0] === \"function\" ? toValue$1(args[0]()) : toValue$1(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => toValue$1(list).some((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction uniq(array) {\n return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n return array.reduce((acc, v) => {\n if (!acc.some((x) => fn(v, x, array)))\n acc.push(v);\n return acc;\n }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n return computed(() => {\n const resolvedList = toValue$1(list).map((element) => toValue$1(element));\n return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n let _initialValue = unref(initialValue);\n const count = shallowRef(initialValue);\n const {\n max = Number.POSITIVE_INFINITY,\n min = Number.NEGATIVE_INFINITY\n } = options;\n const inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min);\n const dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = _initialValue) => {\n _initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[T\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/i;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)\\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|z{1,4}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n const v = num % 100;\n return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const stripTimeZone = (dateString) => {\n var _a2;\n return (_a2 = dateString.split(\" \")[1]) != null ? _a2 : \"\";\n };\n const matches = {\n Yo: () => formatOrdinal(years),\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n Mo: () => formatOrdinal(month + 1),\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(toValue$1(options.locales), { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(toValue$1(options.locales), { month: \"long\" }),\n D: () => String(days),\n Do: () => formatOrdinal(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n Ho: () => formatOrdinal(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n ho: () => formatOrdinal(hours % 12 || 12),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mo: () => formatOrdinal(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n so: () => formatOrdinal(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true),\n z: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zzz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zzzz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"longOffset\" }))\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n var _a2, _b;\n return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n });\n}\nfunction normalizeDate(date) {\n if (date === null)\n return new Date(Number.NaN);\n if (date === void 0)\n return /* @__PURE__ */ new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return computed(() => formatDate(normalizeDate(toValue$1(date)), toValue$1(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = shallowRef(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = toValue$1(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n if (isActive.value)\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval) || typeof interval === \"function\") {\n const stopWatch = watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = shallowRef(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(\n callback ? () => {\n update();\n callback(counter.value);\n } : update,\n interval,\n { immediate }\n );\n if (exposeControls) {\n return {\n counter,\n reset,\n ...controls\n };\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = shallowRef((_a = options.initialValue) != null ? _a : null);\n watch(\n source,\n () => ms.value = timestamp(),\n options\n );\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n const isPending = shallowRef(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n if (immediateCallback)\n cb();\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, toValue$1(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: readonly(isPending),\n start,\n stop\n };\n}\n\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(\n callback != null ? callback : noop,\n interval,\n options\n );\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return {\n ready,\n ...controls\n };\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return computed(() => {\n let resolved = toValue$1(value);\n if (typeof method === \"function\")\n resolved = method(resolved);\n else if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && Number.isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return computed(() => `${toValue$1(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = isRef(initialValue);\n const _value = shallowRef(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = toValue$1(truthyValue);\n _value.value = _value.value === truthy ? toValue$1(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [...typeof source === \"function\" ? source() : Array.isArray(source) ? source : toValue$1(source)];\n return watch(source, (newList, _, onCleanup) => {\n const oldListRemains = Array.from({ length: oldList.length });\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nfunction watchAtMost(source, cb, options) {\n const {\n count,\n ...watchOptions\n } = options;\n const current = shallowRef(0);\n const stop = watchWithFilter(\n source,\n (...args) => {\n current.value += 1;\n if (current.value >= toValue$1(count))\n nextTick(() => stop());\n cb(...args);\n },\n watchOptions\n );\n return { count: current, stop };\n}\n\nfunction watchDebounced(source, cb, options = {}) {\n const {\n debounce = 0,\n maxWait = void 0,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: debounceFilter(debounce, { maxWait })\n }\n );\n}\n\nfunction watchDeep(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n deep: true\n }\n );\n}\n\nfunction watchIgnorable(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n const filteredCb = createFilterWrapper(\n eventFilter,\n cb\n );\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = shallowRef(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = watch(\n source,\n (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n },\n watchOptions\n );\n } else {\n const disposables = [];\n const ignoreCounter = shallowRef(0);\n const syncCounter = shallowRef(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(\n watch(\n source,\n () => {\n syncCounter.value++;\n },\n { ...watchOptions, flush: \"sync\" }\n )\n );\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(\n watch(\n source,\n (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n },\n watchOptions\n )\n );\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchImmediate(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n immediate: true\n }\n );\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n return stop;\n}\n\nfunction watchThrottled(source, cb, options = {}) {\n const {\n throttle = 0,\n trailing = true,\n leading = true,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: throttleFilter(throttle, trailing, leading)\n }\n );\n}\n\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return {\n ...res,\n trigger\n };\n}\nfunction getWatchSources(sources) {\n if (isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => toValue$1(item));\n return toValue$1(sources);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n const stop = watch(\n source,\n (v, ov, onInvalidate) => {\n if (v) {\n if (options == null ? void 0 : options.once)\n nextTick(() => stop());\n cb(v, ov, onInvalidate);\n }\n },\n {\n ...options,\n once: false\n }\n );\n return stop;\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createRef, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, computedEager as eagerComputed, extendRef, formatDate, get, getLifeCycleTarget, hasOwn, hyphenate, identity, watchIgnorable as ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, provideLocal, pxValue, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toArray, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n", "import { noop, makeDestructurable, camelize, isClient, toArray, watchImmediate, isObject, tryOnScopeDispose, isIOS, notNullish, tryOnMounted, objectOmit, promiseTimeout, until, injectLocal, provideLocal, pxValue, increaseWithUnit, objectEntries, createRef, createSingletonPromise, useTimeoutFn, pausableWatch, toRef, createEventHook, useIntervalFn, computedWithControl, timestamp, pausableFilter, watchIgnorable, debounceFilter, bypassFilter, createFilterWrapper, toRefs, watchOnce, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, tryOnUnmounted, clamp, syncRef, objectPick, watchWithFilter, identity, isDef, whenever, isWorker } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, shallowRef, ref, watchEffect, computed, inject, defineComponent, h, TransitionGroup, shallowReactive, Fragment, toValue, unref, getCurrentInstance, onMounted, watch, customRef, onUpdated, readonly, reactive, hasInjectionContext, toRaw, nextTick, markRaw, getCurrentScope, isReadonly, onBeforeUpdate } from 'vue';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n let options;\n if (isRef(optionsOrRef)) {\n options = {\n evaluating: optionsOrRef\n };\n } else {\n options = optionsOrRef || {};\n }\n const {\n lazy = false,\n evaluating = void 0,\n shallow = true,\n onError = noop\n } = options;\n const started = shallowRef(!lazy);\n const current = shallow ? shallowRef(initialState) : ref(initialState);\n let counter = 0;\n watchEffect(async (onInvalidate) => {\n if (!started.value)\n return;\n counter++;\n const counterAtBeginning = counter;\n let hasFinished = false;\n if (evaluating) {\n Promise.resolve().then(() => {\n evaluating.value = true;\n });\n }\n try {\n const result = await evaluationCallback((cancelCallback) => {\n onInvalidate(() => {\n if (evaluating)\n evaluating.value = false;\n if (!hasFinished)\n cancelCallback();\n });\n });\n if (counterAtBeginning === counter)\n current.value = result;\n } catch (e) {\n onError(e);\n } finally {\n if (evaluating && counterAtBeginning === counter)\n evaluating.value = false;\n hasFinished = true;\n }\n });\n if (lazy) {\n return computed(() => {\n started.value = true;\n return current.value;\n });\n } else {\n return current;\n }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n let source = inject(key);\n if (defaultSource)\n source = inject(key, defaultSource);\n if (treatDefaultAsFactory)\n source = inject(key, defaultSource, treatDefaultAsFactory);\n if (typeof options === \"function\") {\n return computed((ctx) => options(source, ctx));\n } else {\n return computed({\n get: (ctx) => options.get(source, ctx),\n set: options.set\n });\n }\n}\n\nfunction createReusableTemplate(options = {}) {\n const {\n inheritAttrs = true\n } = options;\n const render = shallowRef();\n const define = /*@__PURE__*/ defineComponent({\n setup(_, { slots }) {\n return () => {\n render.value = slots.default;\n };\n }\n });\n const reuse = /*@__PURE__*/ defineComponent({\n inheritAttrs,\n props: options.props,\n setup(props, { attrs, slots }) {\n return () => {\n var _a;\n if (!render.value && process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n const vnode = (_a = render.value) == null ? void 0 : _a.call(render, {\n ...options.props == null ? keysToCamelKebabCase(attrs) : props,\n $slots: slots\n });\n return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n };\n }\n });\n return makeDestructurable(\n { define, reuse },\n [define, reuse]\n );\n}\nfunction keysToCamelKebabCase(obj) {\n const newObj = {};\n for (const key in obj)\n newObj[camelize(key)] = obj[key];\n return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n let index = 0;\n const instances = ref([]);\n function create(...args) {\n const props = shallowReactive({\n key: index++,\n args,\n promise: void 0,\n resolve: () => {\n },\n reject: () => {\n },\n isResolving: false,\n options\n });\n instances.value.push(props);\n props.promise = new Promise((_resolve, _reject) => {\n props.resolve = (v) => {\n props.isResolving = true;\n return _resolve(v);\n };\n props.reject = _reject;\n }).finally(() => {\n props.promise = void 0;\n const index2 = instances.value.indexOf(props);\n if (index2 !== -1)\n instances.value.splice(index2, 1);\n });\n return props.promise;\n }\n function start(...args) {\n if (options.singleton && instances.value.length > 0)\n return instances.value[0].promise;\n return create(...args);\n }\n const component = /*@__PURE__*/ defineComponent((_, { slots }) => {\n const renderList = () => instances.value.map((props) => {\n var _a;\n return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n });\n if (options.transition)\n return () => h(TransitionGroup, options.transition, renderList);\n return renderList;\n });\n component.start = start;\n return component;\n}\n\nfunction createUnrefFn(fn) {\n return function(...args) {\n return fn.apply(this, args.map((i) => toValue(i)));\n };\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nfunction useEventListener(...args) {\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options) => {\n el.addEventListener(event, listener, options);\n return () => el.removeEventListener(event, listener, options);\n };\n const firstParamTargets = computed(() => {\n const test = toArray(toValue(args[0])).filter((e) => e != null);\n return test.every((e) => typeof e !== \"string\") ? test : void 0;\n });\n const stopWatch = watchImmediate(\n () => {\n var _a, _b;\n return [\n (_b = (_a = firstParamTargets.value) == null ? void 0 : _a.map((e) => unrefElement(e))) != null ? _b : [defaultWindow].filter((e) => e != null),\n toArray(toValue(firstParamTargets.value ? args[1] : args[0])),\n toArray(unref(firstParamTargets.value ? args[2] : args[1])),\n // @ts-expect-error - TypeScript gets the correct types, but somehow still complains\n toValue(firstParamTargets.value ? args[3] : args[2])\n ];\n },\n ([raw_targets, raw_events, raw_listeners, raw_options]) => {\n cleanup();\n if (!(raw_targets == null ? void 0 : raw_targets.length) || !(raw_events == null ? void 0 : raw_events.length) || !(raw_listeners == null ? void 0 : raw_listeners.length))\n return;\n const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;\n cleanups.push(\n ...raw_targets.flatMap(\n (el) => raw_events.flatMap(\n (event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))\n )\n )\n );\n },\n { flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(cleanup);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false, controls = false } = options;\n if (!window) {\n return controls ? { stop: noop, cancel: noop, trigger: noop } : noop;\n }\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n const listenerOptions = { passive: true };\n Array.from(window.document.body.children).forEach((el) => useEventListener(el, \"click\", noop, listenerOptions));\n useEventListener(window.document.documentElement, \"click\", noop, listenerOptions);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return toValue(ignore).some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n function hasMultipleRoots(target2) {\n const vm = toValue(target2);\n return vm && vm.$.subTree.shapeFlag === 16;\n }\n function checkMultipleRoots(target2, event) {\n const vm = toValue(target2);\n const children = vm.$.subTree && vm.$.subTree.children;\n if (children == null || !Array.isArray(children))\n return false;\n return children.some((child) => child.el === event.target || event.composedPath().includes(child.el));\n }\n const listener = (event) => {\n const el = unrefElement(target);\n if (event.target == null)\n return;\n if (!(el instanceof Element) && hasMultipleRoots(target) && checkMultipleRoots(target, event))\n return;\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (\"detail\" in event && event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n let isProcessingClick = false;\n const cleanup = [\n useEventListener(window, \"click\", (event) => {\n if (!isProcessingClick) {\n isProcessingClick = true;\n setTimeout(() => {\n isProcessingClick = false;\n }, 0);\n listener(event);\n }\n }, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement))) {\n handler(event);\n }\n }, 0);\n }, { passive: true })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n if (controls) {\n return {\n stop,\n cancel: () => {\n shouldListen = false;\n },\n trigger: (event) => {\n shouldListen = true;\n listener(event);\n shouldListen = false;\n }\n };\n }\n return stop;\n}\n\nfunction useMounted() {\n const isMounted = shallowRef(false);\n const instance = getCurrentInstance();\n if (instance) {\n onMounted(() => {\n isMounted.value = true;\n }, instance);\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useMutationObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...mutationOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const value = toValue(target);\n const items = toArray(value).map(unrefElement).filter(notNullish);\n return new Set(items);\n });\n const stopWatch = watch(\n () => targets.value,\n (targets2) => {\n cleanup();\n if (isSupported.value && targets2.size) {\n observer = new MutationObserver(callback);\n targets2.forEach((el) => observer.observe(el, mutationOptions));\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const takeRecords = () => {\n return observer == null ? void 0 : observer.takeRecords();\n };\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop,\n takeRecords\n };\n}\n\nfunction onElementRemoval(target, callback, options = {}) {\n const {\n window = defaultWindow,\n document = window == null ? void 0 : window.document,\n flush = \"sync\"\n } = options;\n if (!window || !document)\n return noop;\n let stopFn;\n const cleanupAndUpdate = (fn) => {\n stopFn == null ? void 0 : stopFn();\n stopFn = fn;\n };\n const stopWatch = watchEffect(() => {\n const el = unrefElement(target);\n if (el) {\n const { stop } = useMutationObserver(\n document,\n (mutationsList) => {\n const targetRemoved = mutationsList.map((mutation) => [...mutation.removedNodes]).flat().some((node) => node === el || node.contains(el));\n if (targetRemoved) {\n callback(mutationsList);\n }\n },\n {\n window,\n childList: true,\n subtree: true\n }\n );\n cleanupAndUpdate(stop);\n }\n }, { flush });\n const stopHandle = () => {\n stopWatch();\n cleanupAndUpdate();\n };\n tryOnScopeDispose(stopHandle);\n return stopHandle;\n}\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n let posStart;\n let startTimestamp;\n let hasLongPressed = false;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n posStart = void 0;\n startTimestamp = void 0;\n hasLongPressed = false;\n }\n function onRelease(ev) {\n var _a2, _b2, _c;\n const [_startTimestamp, _posStart, _hasLongPressed] = [startTimestamp, posStart, hasLongPressed];\n clear();\n if (!(options == null ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp)\n return;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - _posStart.x;\n const dy = ev.y - _posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed);\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n posStart = {\n x: ev.x,\n y: ev.y\n };\n startTimestamp = ev.timeStamp;\n timeout = setTimeout(\n () => {\n hasLongPressed = true;\n handler(ev);\n },\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n function onMove(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - posStart.x;\n const dy = ev.y - posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD))\n clear();\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n const cleanup = [\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n useEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], onRelease, listenerOptions)\n ];\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nfunction isFocusedElementEditable() {\n const { activeElement, body } = document;\n if (!activeElement)\n return false;\n if (activeElement === body)\n return false;\n switch (activeElement.tagName) {\n case \"INPUT\":\n case \"TEXTAREA\":\n return true;\n }\n return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\n return true;\n return false;\n}\nfunction onStartTyping(callback, options = {}) {\n const { document: document2 = defaultDocument } = options;\n const keydown = (event) => {\n if (!isFocusedElementEditable() && isTypedCharValid(event)) {\n callback(event);\n }\n };\n if (document2)\n useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n const instance = getCurrentInstance();\n let _trigger = () => {\n };\n const element = customRef((track, trigger) => {\n _trigger = trigger;\n return {\n get() {\n var _a, _b;\n track();\n return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n },\n set() {\n }\n };\n });\n tryOnMounted(_trigger);\n onUpdated(_trigger);\n return element;\n}\n\nfunction useActiveElement(options = {}) {\n var _a;\n const {\n window = defaultWindow,\n deep = true,\n triggerOnRemoval = false\n } = options;\n const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n const getDeepActiveElement = () => {\n var _a2;\n let element = document == null ? void 0 : document.activeElement;\n if (deep) {\n while (element == null ? void 0 : element.shadowRoot)\n element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n }\n return element;\n };\n const activeElement = shallowRef();\n const trigger = () => {\n activeElement.value = getDeepActiveElement();\n };\n if (window) {\n const listenerOptions = {\n capture: true,\n passive: true\n };\n useEventListener(\n window,\n \"blur\",\n (event) => {\n if (event.relatedTarget !== null)\n return;\n trigger();\n },\n listenerOptions\n );\n useEventListener(\n window,\n \"focus\",\n trigger,\n listenerOptions\n );\n }\n if (triggerOnRemoval) {\n onElementRemoval(activeElement, trigger, { document });\n }\n trigger();\n return activeElement;\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n fpsLimit = void 0,\n window = defaultWindow,\n once = false\n } = options;\n const isActive = shallowRef(false);\n const intervalLimit = computed(() => {\n return fpsLimit ? 1e3 / toValue(fpsLimit) : null;\n });\n let previousFrameTimestamp = 0;\n let rafId = null;\n function loop(timestamp) {\n if (!isActive.value || !window)\n return;\n if (!previousFrameTimestamp)\n previousFrameTimestamp = timestamp;\n const delta = timestamp - previousFrameTimestamp;\n if (intervalLimit.value && delta < intervalLimit.value) {\n rafId = window.requestAnimationFrame(loop);\n return;\n }\n previousFrameTimestamp = timestamp;\n fn({ delta, timestamp });\n if (once) {\n isActive.value = false;\n rafId = null;\n return;\n }\n rafId = window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n previousFrameTimestamp = 0;\n rafId = window.requestAnimationFrame(loop);\n }\n }\n function pause() {\n isActive.value = false;\n if (rafId != null && window) {\n window.cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n if (immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive: readonly(isActive),\n pause,\n resume\n };\n}\n\nfunction useAnimate(target, keyframes, options) {\n let config;\n let animateOptions;\n if (isObject(options)) {\n config = options;\n animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n } else {\n config = { duration: options };\n animateOptions = options;\n }\n const {\n window = defaultWindow,\n immediate = true,\n commitStyles,\n persist,\n playbackRate: _playbackRate = 1,\n onReady,\n onError = (e) => {\n console.error(e);\n }\n } = config;\n const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n const animate = shallowRef(void 0);\n const store = shallowReactive({\n startTime: null,\n currentTime: null,\n timeline: null,\n playbackRate: _playbackRate,\n pending: false,\n playState: immediate ? \"idle\" : \"paused\",\n replaceState: \"active\"\n });\n const pending = computed(() => store.pending);\n const playState = computed(() => store.playState);\n const replaceState = computed(() => store.replaceState);\n const startTime = computed({\n get() {\n return store.startTime;\n },\n set(value) {\n store.startTime = value;\n if (animate.value)\n animate.value.startTime = value;\n }\n });\n const currentTime = computed({\n get() {\n return store.currentTime;\n },\n set(value) {\n store.currentTime = value;\n if (animate.value) {\n animate.value.currentTime = value;\n syncResume();\n }\n }\n });\n const timeline = computed({\n get() {\n return store.timeline;\n },\n set(value) {\n store.timeline = value;\n if (animate.value)\n animate.value.timeline = value;\n }\n });\n const playbackRate = computed({\n get() {\n return store.playbackRate;\n },\n set(value) {\n store.playbackRate = value;\n if (animate.value)\n animate.value.playbackRate = value;\n }\n });\n const play = () => {\n if (animate.value) {\n try {\n animate.value.play();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n } else {\n update();\n }\n };\n const pause = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.pause();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const reverse = () => {\n var _a;\n if (!animate.value)\n update();\n try {\n (_a = animate.value) == null ? void 0 : _a.reverse();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n };\n const finish = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.finish();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const cancel = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.cancel();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n watch(() => unrefElement(target), (el) => {\n if (el) {\n update();\n } else {\n animate.value = void 0;\n }\n });\n watch(() => keyframes, (value) => {\n if (animate.value) {\n update();\n const targetEl = unrefElement(target);\n if (targetEl) {\n animate.value.effect = new KeyframeEffect(\n targetEl,\n toValue(value),\n animateOptions\n );\n }\n }\n }, { deep: true });\n tryOnMounted(() => update(true), false);\n tryOnScopeDispose(cancel);\n function update(init) {\n const el = unrefElement(target);\n if (!isSupported.value || !el)\n return;\n if (!animate.value)\n animate.value = el.animate(toValue(keyframes), animateOptions);\n if (persist)\n animate.value.persist();\n if (_playbackRate !== 1)\n animate.value.playbackRate = _playbackRate;\n if (init && !immediate)\n animate.value.pause();\n else\n syncResume();\n onReady == null ? void 0 : onReady(animate.value);\n }\n const listenerOptions = { passive: true };\n useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause, listenerOptions);\n useEventListener(animate, \"finish\", () => {\n var _a;\n if (commitStyles)\n (_a = animate.value) == null ? void 0 : _a.commitStyles();\n }, listenerOptions);\n const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n if (!animate.value)\n return;\n store.pending = animate.value.pending;\n store.playState = animate.value.playState;\n store.replaceState = animate.value.replaceState;\n store.startTime = animate.value.startTime;\n store.currentTime = animate.value.currentTime;\n store.timeline = animate.value.timeline;\n store.playbackRate = animate.value.playbackRate;\n }, { immediate: false });\n function syncResume() {\n if (isSupported.value)\n resumeRef();\n }\n function syncPause() {\n if (isSupported.value && window)\n window.requestAnimationFrame(pauseRef);\n }\n return {\n isSupported,\n animate,\n // actions\n play,\n pause,\n reverse,\n finish,\n cancel,\n // state\n pending,\n playState,\n replaceState,\n startTime,\n currentTime,\n timeline,\n playbackRate\n };\n}\n\nfunction useAsyncQueue(tasks, options) {\n const {\n interrupt = true,\n onError = noop,\n onFinished = noop,\n signal\n } = options || {};\n const promiseState = {\n aborted: \"aborted\",\n fulfilled: \"fulfilled\",\n pending: \"pending\",\n rejected: \"rejected\"\n };\n const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n const result = reactive(initialResult);\n const activeIndex = shallowRef(-1);\n if (!tasks || tasks.length === 0) {\n onFinished();\n return {\n activeIndex,\n result\n };\n }\n function updateResult(state, res) {\n activeIndex.value++;\n result[activeIndex.value].data = res;\n result[activeIndex.value].state = state;\n }\n tasks.reduce((prev, curr) => {\n return prev.then((prevRes) => {\n var _a;\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, new Error(\"aborted\"));\n return;\n }\n if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n const done = curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n if (activeIndex.value === tasks.length - 1)\n onFinished();\n return currentRes;\n });\n if (!signal)\n return done;\n return Promise.race([done, whenAborted(signal)]);\n }).catch((e) => {\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, e);\n return e;\n }\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\nfunction whenAborted(signal) {\n return new Promise((resolve, reject) => {\n const error = new Error(\"aborted\");\n if (signal.aborted)\n reject(error);\n else\n signal.addEventListener(\"abort\", () => reject(error), { once: true });\n });\n}\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = shallowRef(false);\n const isLoading = shallowRef(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate) {\n execute(delay);\n }\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n };\n}\n\nconst defaults = {\n array: (v) => JSON.stringify(v),\n object: (v) => JSON.stringify(v),\n set: (v) => JSON.stringify(Array.from(v)),\n map: (v) => JSON.stringify(Object.fromEntries(v)),\n null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n if (!target)\n return defaults.null;\n if (target instanceof Map)\n return defaults.map;\n else if (target instanceof Set)\n return defaults.set;\n else if (Array.isArray(target))\n return defaults.array;\n else\n return defaults.object;\n}\n\nfunction useBase64(target, options) {\n const base64 = shallowRef(\"\");\n const promise = shallowRef();\n function execute() {\n if (!isClient)\n return;\n promise.value = new Promise((resolve, reject) => {\n try {\n const _target = toValue(target);\n if (_target == null) {\n resolve(\"\");\n } else if (typeof _target === \"string\") {\n resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n } else if (_target instanceof Blob) {\n resolve(blobToBase64(_target));\n } else if (_target instanceof ArrayBuffer) {\n resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n } else if (_target instanceof HTMLCanvasElement) {\n resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n } else if (_target instanceof HTMLImageElement) {\n const img = _target.cloneNode(false);\n img.crossOrigin = \"Anonymous\";\n imgLoaded(img).then(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n }).catch(reject);\n } else if (typeof _target === \"object\") {\n const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n const serialized = _serializeFn(_target);\n return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n } else {\n reject(new Error(\"target is unsupported types\"));\n }\n } catch (error) {\n reject(error);\n }\n });\n promise.value.then((res) => {\n base64.value = (options == null ? void 0 : options.dataUrl) === false ? res.replace(/^data:.*?;base64,/, \"\") : res;\n });\n return promise.value;\n }\n if (isRef(target) || typeof target === \"function\")\n watch(target, execute, { immediate: true });\n else\n execute();\n return {\n base64,\n promise,\n execute\n };\n}\nfunction imgLoaded(img) {\n return new Promise((resolve, reject) => {\n if (!img.complete) {\n img.onload = () => {\n resolve();\n };\n img.onerror = reject;\n } else {\n resolve();\n }\n });\n}\nfunction blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const fr = new FileReader();\n fr.onload = (e) => {\n resolve(e.target.result);\n };\n fr.onerror = reject;\n fr.readAsDataURL(blob);\n });\n}\n\nfunction useBattery(options = {}) {\n const { navigator = defaultNavigator } = options;\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = useSupported(() => navigator && \"getBattery\" in navigator && typeof navigator.getBattery === \"function\");\n const charging = shallowRef(false);\n const chargingTime = shallowRef(0);\n const dischargingTime = shallowRef(0);\n const level = shallowRef(1);\n let battery;\n function updateBatteryInfo() {\n charging.value = this.charging;\n chargingTime.value = this.chargingTime || 0;\n dischargingTime.value = this.dischargingTime || 0;\n level.value = this.level;\n }\n if (isSupported.value) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n useEventListener(battery, events, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useBluetooth(options) {\n let {\n acceptAllDevices = false\n } = options || {};\n const {\n filters = void 0,\n optionalServices = void 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n const device = shallowRef();\n const error = shallowRef(null);\n watch(device, () => {\n connectToBluetoothGATTServer();\n });\n async function requestDevice() {\n if (!isSupported.value)\n return;\n error.value = null;\n if (filters && filters.length > 0)\n acceptAllDevices = false;\n try {\n device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n acceptAllDevices,\n filters,\n optionalServices\n }));\n } catch (err) {\n error.value = err;\n }\n }\n const server = shallowRef();\n const isConnected = shallowRef(false);\n function reset() {\n isConnected.value = false;\n device.value = void 0;\n server.value = void 0;\n }\n async function connectToBluetoothGATTServer() {\n error.value = null;\n if (device.value && device.value.gatt) {\n useEventListener(device, \"gattserverdisconnected\", reset, { passive: true });\n try {\n server.value = await device.value.gatt.connect();\n isConnected.value = server.value.connected;\n } catch (err) {\n error.value = err;\n }\n }\n }\n tryOnMounted(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.connect();\n });\n tryOnScopeDispose(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n });\n return {\n isSupported,\n isConnected: readonly(isConnected),\n // Device:\n device,\n requestDevice,\n // Server:\n server,\n // Errors:\n error\n };\n}\n\nconst ssrWidthSymbol = Symbol(\"vueuse-ssr-width\");\nfunction useSSRWidth() {\n const ssrWidth = hasInjectionContext() ? injectLocal(ssrWidthSymbol, null) : null;\n return typeof ssrWidth === \"number\" ? ssrWidth : void 0;\n}\nfunction provideSSRWidth(width, app) {\n if (app !== void 0) {\n app.provide(ssrWidthSymbol, width);\n } else {\n provideLocal(ssrWidthSymbol, width);\n }\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow, ssrWidth = useSSRWidth() } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n const ssrSupport = shallowRef(typeof ssrWidth === \"number\");\n const mediaQuery = shallowRef();\n const matches = shallowRef(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n watchEffect(() => {\n if (ssrSupport.value) {\n ssrSupport.value = !isSupported.value;\n const queryStrings = toValue(query).split(\",\");\n matches.value = queryStrings.some((queryString) => {\n const not = queryString.includes(\"not all\");\n const minWidth = queryString.match(/\\(\\s*min-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n const maxWidth = queryString.match(/\\(\\s*max-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n let res = Boolean(minWidth || maxWidth);\n if (minWidth && res) {\n res = ssrWidth >= pxValue(minWidth[1]);\n }\n if (maxWidth && res) {\n res = ssrWidth <= pxValue(maxWidth[1]);\n }\n return not ? !res : res;\n });\n return;\n }\n if (!isSupported.value)\n return;\n mediaQuery.value = window.matchMedia(toValue(query));\n matches.value = mediaQuery.value.matches;\n });\n useEventListener(mediaQuery, \"change\", handler, { passive: true });\n return computed(() => matches.value);\n}\n\nconst breakpointsTailwind = {\n \"sm\": 640,\n \"md\": 768,\n \"lg\": 1024,\n \"xl\": 1280,\n \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n};\nconst breakpointsVuetifyV2 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1264,\n xl: 1904\n};\nconst breakpointsVuetifyV3 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560\n};\nconst breakpointsVuetify = breakpointsVuetifyV2;\nconst breakpointsAntDesign = {\n xs: 480,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1600\n};\nconst breakpointsQuasar = {\n xs: 0,\n sm: 600,\n md: 1024,\n lg: 1440,\n xl: 1920\n};\nconst breakpointsSematic = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 425,\n tablet: 768,\n laptop: 1024,\n laptopL: 1440,\n desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n \"3xs\": 360,\n \"2xs\": 480,\n \"xs\": 600,\n \"sm\": 768,\n \"md\": 1024,\n \"lg\": 1280,\n \"xl\": 1440,\n \"2xl\": 1600,\n \"3xl\": 1920,\n \"4xl\": 2560\n};\nconst breakpointsPrimeFlex = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200\n};\nconst breakpointsElement = {\n xs: 0,\n sm: 768,\n md: 992,\n lg: 1200,\n xl: 1920\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n function getValue(k, delta) {\n let v = toValue(breakpoints[toValue(k)]);\n if (delta != null)\n v = increaseWithUnit(v, delta);\n if (typeof v === \"number\")\n v = `${v}px`;\n return v;\n }\n const { window = defaultWindow, strategy = \"min-width\", ssrWidth = useSSRWidth() } = options;\n const ssrSupport = typeof ssrWidth === \"number\";\n const mounted = ssrSupport ? shallowRef(false) : { value: true };\n if (ssrSupport) {\n tryOnMounted(() => mounted.value = !!window);\n }\n function match(query, size) {\n if (!mounted.value && ssrSupport) {\n return query === \"min\" ? ssrWidth >= pxValue(size) : ssrWidth <= pxValue(size);\n }\n if (!window)\n return false;\n return window.matchMedia(`(${query}-width: ${size})`).matches;\n }\n const greaterOrEqual = (k) => {\n return useMediaQuery(() => `(min-width: ${getValue(k)})`, options);\n };\n const smallerOrEqual = (k) => {\n return useMediaQuery(() => `(max-width: ${getValue(k)})`, options);\n };\n const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n Object.defineProperty(shortcuts, k, {\n get: () => strategy === \"min-width\" ? greaterOrEqual(k) : smallerOrEqual(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n function current() {\n const points = Object.keys(breakpoints).map((k) => [k, shortcutMethods[k], pxValue(getValue(k))]).sort((a, b) => a[2] - b[2]);\n return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n }\n return Object.assign(shortcutMethods, {\n greaterOrEqual,\n smallerOrEqual,\n greater(k) {\n return useMediaQuery(() => `(min-width: ${getValue(k, 0.1)})`, options);\n },\n smaller(k) {\n return useMediaQuery(() => `(max-width: ${getValue(k, -0.1)})`, options);\n },\n between(a, b) {\n return useMediaQuery(() => `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n },\n isGreater(k) {\n return match(\"min\", getValue(k, 0.1));\n },\n isGreaterOrEqual(k) {\n return match(\"min\", getValue(k));\n },\n isSmaller(k) {\n return match(\"max\", getValue(k, -0.1));\n },\n isSmallerOrEqual(k) {\n return match(\"max\", getValue(k));\n },\n isInBetween(a, b) {\n return match(\"min\", getValue(a)) && match(\"max\", getValue(b, -0.1));\n },\n current,\n active() {\n const bps = current();\n return computed(() => bps.value.length === 0 ? \"\" : bps.value.at(strategy === \"min-width\" ? -1 : 0));\n }\n });\n}\n\nfunction useBroadcastChannel(options) {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n const isClosed = shallowRef(false);\n const channel = ref();\n const data = ref();\n const error = shallowRef(null);\n const post = (data2) => {\n if (channel.value)\n channel.value.postMessage(data2);\n };\n const close = () => {\n if (channel.value)\n channel.value.close();\n isClosed.value = true;\n };\n if (isSupported.value) {\n tryOnMounted(() => {\n error.value = null;\n channel.value = new BroadcastChannel(name);\n const listenerOptions = {\n passive: true\n };\n useEventListener(channel, \"message\", (e) => {\n data.value = e.data;\n }, listenerOptions);\n useEventListener(channel, \"messageerror\", (e) => {\n error.value = e;\n }, listenerOptions);\n useEventListener(channel, \"close\", () => {\n isClosed.value = true;\n }, listenerOptions);\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n isSupported,\n channel,\n data,\n post,\n close,\n error,\n isClosed\n };\n}\n\nconst WRITABLE_PROPERTIES = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\"\n];\nfunction useBrowserLocation(options = {}) {\n const { window = defaultWindow } = options;\n const refs = Object.fromEntries(\n WRITABLE_PROPERTIES.map((key) => [key, ref()])\n );\n for (const [key, ref] of objectEntries(refs)) {\n watch(ref, (value) => {\n if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n return;\n window.location[key] = value;\n });\n }\n const buildState = (trigger) => {\n var _a;\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { origin } = (window == null ? void 0 : window.location) || {};\n for (const key of WRITABLE_PROPERTIES)\n refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n return reactive({\n trigger,\n state: state2,\n length,\n origin,\n ...refs\n });\n };\n const state = ref(buildState(\"load\"));\n if (window) {\n const listenerOptions = { passive: true };\n useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), listenerOptions);\n useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), listenerOptions);\n }\n return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, options) {\n const { deepRefs = true, ...watchOptions } = options || {};\n const cachedValue = createRef(refValue.value, deepRefs);\n watch(() => refValue.value, (value) => {\n if (!comparator(value, cachedValue.value))\n cachedValue.value = value;\n }, watchOptions);\n return cachedValue;\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n const permissionStatus = shallowRef();\n const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n const state = shallowRef();\n const update = () => {\n var _a, _b;\n state.value = (_b = (_a = permissionStatus.value) == null ? void 0 : _a.state) != null ? _b : \"prompt\";\n };\n useEventListener(permissionStatus, \"change\", update, { passive: true });\n const query = createSingletonPromise(async () => {\n if (!isSupported.value)\n return;\n if (!permissionStatus.value) {\n try {\n permissionStatus.value = await navigator.permissions.query(desc);\n } catch (e) {\n permissionStatus.value = void 0;\n } finally {\n update();\n }\n }\n if (controls)\n return toRaw(permissionStatus.value);\n });\n query();\n if (controls) {\n return {\n state,\n isSupported,\n query\n };\n } else {\n return state;\n }\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500,\n legacy = false\n } = options;\n const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const permissionRead = usePermission(\"clipboard-read\");\n const permissionWrite = usePermission(\"clipboard-write\");\n const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n const text = shallowRef(\"\");\n const copied = shallowRef(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\n async function updateText() {\n let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionRead.value));\n if (!useLegacy) {\n try {\n text.value = await navigator.clipboard.readText();\n } catch (e) {\n useLegacy = true;\n }\n }\n if (useLegacy) {\n text.value = legacyRead();\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateText, { passive: true });\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionWrite.value));\n if (!useLegacy) {\n try {\n await navigator.clipboard.writeText(value);\n } catch (e) {\n useLegacy = true;\n }\n }\n if (useLegacy)\n legacyCopy(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n function legacyCopy(value) {\n const ta = document.createElement(\"textarea\");\n ta.value = value != null ? value : \"\";\n ta.style.position = \"absolute\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n document.execCommand(\"copy\");\n ta.remove();\n }\n function legacyRead() {\n var _a, _b, _c;\n return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n }\n function isAllowed(status) {\n return status === \"granted\" || status === \"prompt\";\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\n}\n\nfunction useClipboardItems(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500\n } = options;\n const isSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const content = ref([]);\n const copied = shallowRef(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\n function updateContent() {\n if (isSupported.value) {\n navigator.clipboard.read().then((items) => {\n content.value = items;\n });\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateContent, { passive: true });\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n await navigator.clipboard.write(value);\n content.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n return {\n isSupported,\n content,\n copied,\n copy\n };\n}\n\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n const cloned = ref({});\n const isModified = shallowRef(false);\n let _lastSync = false;\n const {\n manual,\n clone = cloneFnJSON,\n // watch options\n deep = true,\n immediate = true\n } = options;\n watch(cloned, () => {\n if (_lastSync) {\n _lastSync = false;\n return;\n }\n isModified.value = true;\n }, {\n deep: true,\n flush: \"sync\"\n });\n function sync() {\n _lastSync = true;\n isModified.value = false;\n cloned.value = clone(toValue(source));\n }\n if (!manual && (isRef(source) || typeof source === \"function\")) {\n watch(source, sync, {\n ...options,\n deep,\n immediate\n });\n } else {\n sync();\n }\n return { cloned, isModified, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n handlers[key] = fn;\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n },\n initOnMounted\n } = options;\n const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n const keyComputed = computed(() => toValue(key));\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n watch(keyComputed, () => update(), { flush });\n if (window && listenToStorageChanges) {\n tryOnMounted(() => {\n if (storage instanceof Storage)\n useEventListener(window, \"storage\", update, { passive: true });\n else\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n if (initOnMounted)\n update();\n });\n }\n if (!initOnMounted)\n update();\n function dispatchWriteEvent(oldValue, newValue) {\n if (window) {\n const payload = {\n key: keyComputed.value,\n oldValue,\n newValue,\n storageArea: storage\n };\n window.dispatchEvent(storage instanceof Storage ? new StorageEvent(\"storage\", payload) : new CustomEvent(customStorageEventName, {\n detail: payload\n }));\n }\n }\n function write(v) {\n try {\n const oldValue = storage.getItem(keyComputed.value);\n if (v == null) {\n dispatchWriteEvent(oldValue, null);\n storage.removeItem(keyComputed.value);\n } else {\n const serialized = serializer.write(v);\n if (oldValue !== serialized) {\n storage.setItem(keyComputed.value, serialized);\n dispatchWriteEvent(oldValue, serialized);\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(keyComputed.value);\n if (rawValue == null) {\n if (writeDefaults && rawInit != null)\n storage.setItem(keyComputed.value, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return { ...rawInit, ...value };\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== keyComputed.value)\n return;\n pauseWatch();\n try {\n if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n return data;\n}\n\nconst CSS_DISABLE_TRANS = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = {\n auto: \"\",\n light: \"light\",\n dark: \"dark\",\n ...options.modes || {}\n };\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n const classesToAdd = /* @__PURE__ */ new Set();\n const classesToRemove = /* @__PURE__ */ new Set();\n let attributeToChange = null;\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n classesToAdd.add(v);\n else\n classesToRemove.add(v);\n });\n } else {\n attributeToChange = { key: attribute2, value };\n }\n if (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n style.appendChild(document.createTextNode(CSS_DISABLE_TRANS));\n window.document.head.appendChild(style);\n }\n for (const c of classesToAdd) {\n el.classList.add(c);\n }\n for (const c of classesToRemove) {\n el.classList.remove(c);\n }\n if (attributeToChange) {\n el.setAttribute(attributeToChange.key, attributeToChange.value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n return Object.assign(auto, { store, system, state });\n}\n\nfunction useConfirmDialog(revealed = shallowRef(false)) {\n const confirmHook = createEventHook();\n const cancelHook = createEventHook();\n const revealHook = createEventHook();\n let _resolve = noop;\n const reveal = (data) => {\n revealHook.trigger(data);\n revealed.value = true;\n return new Promise((resolve) => {\n _resolve = resolve;\n });\n };\n const confirm = (data) => {\n revealed.value = false;\n confirmHook.trigger(data);\n _resolve({ data, isCanceled: false });\n };\n const cancel = (data) => {\n revealed.value = false;\n cancelHook.trigger(data);\n _resolve({ data, isCanceled: true });\n };\n return {\n isRevealed: computed(() => revealed.value),\n reveal,\n confirm,\n cancel,\n onReveal: revealHook.on,\n onConfirm: confirmHook.on,\n onCancel: cancelHook.on\n };\n}\n\nfunction useCountdown(initialCountdown, options) {\n var _a, _b;\n const remaining = shallowRef(toValue(initialCountdown));\n const intervalController = useIntervalFn(() => {\n var _a2, _b2;\n const value = remaining.value - 1;\n remaining.value = value < 0 ? 0 : value;\n (_a2 = options == null ? void 0 : options.onTick) == null ? void 0 : _a2.call(options);\n if (remaining.value <= 0) {\n intervalController.pause();\n (_b2 = options == null ? void 0 : options.onComplete) == null ? void 0 : _b2.call(options);\n }\n }, (_a = options == null ? void 0 : options.interval) != null ? _a : 1e3, { immediate: (_b = options == null ? void 0 : options.immediate) != null ? _b : false });\n const reset = (countdown) => {\n var _a2;\n remaining.value = (_a2 = toValue(countdown)) != null ? _a2 : toValue(initialCountdown);\n };\n const stop = () => {\n intervalController.pause();\n reset();\n };\n const resume = () => {\n if (!intervalController.isActive.value) {\n if (remaining.value > 0) {\n intervalController.resume();\n }\n }\n };\n const start = (countdown) => {\n reset(countdown);\n intervalController.resume();\n };\n return {\n remaining,\n reset,\n stop,\n start,\n pause: intervalController.pause,\n resume,\n isActive: intervalController.isActive\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue, observe = false } = options;\n const variable = shallowRef(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window && key) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || variable.value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n (_, old) => {\n if (old[0] && old[1])\n old[0].style.removeProperty(old[1]);\n updateCssVar();\n },\n { immediate: true }\n );\n watch(\n [variable, elRef],\n ([val, el]) => {\n const raw_prop = toValue(prop);\n if ((el == null ? void 0 : el.style) && raw_prop) {\n if (val == null)\n el.style.removeProperty(raw_prop);\n else\n el.style.setProperty(raw_prop, val);\n }\n },\n { immediate: true }\n );\n return variable;\n}\n\nfunction useCurrentElement(rootComponent) {\n const vm = getCurrentInstance();\n const currentElement = computedWithControl(\n () => null,\n () => rootComponent ? unrefElement(rootComponent) : vm.proxy.$el\n );\n onUpdated(currentElement.trigger);\n onMounted(currentElement.trigger);\n return currentElement;\n}\n\nfunction useCycleList(list, options) {\n const state = shallowRef(getInitialValue());\n const listRef = toRef(list);\n const index = computed({\n get() {\n var _a;\n const targetList = listRef.value;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const targetList = listRef.value;\n const length = targetList.length;\n const index2 = (i % length + length) % length;\n const value = targetList[index2];\n state.value = value;\n return value;\n }\n function shift(delta = 1) {\n return set(index.value + delta);\n }\n function next(n = 1) {\n return shift(n);\n }\n function prev(n = 1) {\n return shift(-n);\n }\n function getInitialValue() {\n var _a, _b;\n return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n }\n watch(listRef, () => set(index.value));\n return {\n state,\n index,\n next,\n prev,\n go: set\n };\n}\n\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\"\n } = options;\n const mode = useColorMode({\n ...options,\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n });\n const system = computed(() => mode.system.value);\n const isDark = computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n const modeVal = v ? \"dark\" : \"light\";\n if (system.value === modeVal)\n mode.value = \"auto\";\n else\n mode.value = modeVal;\n }\n });\n return isDark;\n}\n\nfunction fnBypass(v) {\n return v;\n}\nfunction fnSetSource(source, value) {\n return source.value = value;\n}\nfunction defaultDump(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n const {\n clone = false,\n dump = defaultDump(clone),\n parse = defaultParse(clone),\n setSource = fnSetSource\n } = options;\n function _createHistoryRecord() {\n return markRaw({\n snapshot: dump(source.value),\n timestamp: timestamp()\n });\n }\n const last = ref(_createHistoryRecord());\n const undoStack = ref([]);\n const redoStack = ref([]);\n const _setSource = (record) => {\n setSource(source, parse(record.snapshot));\n last.value = record;\n };\n const commit = () => {\n undoStack.value.unshift(last.value);\n last.value = _createHistoryRecord();\n if (options.capacity && undoStack.value.length > options.capacity)\n undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n if (redoStack.value.length)\n redoStack.value.splice(0, redoStack.value.length);\n };\n const clear = () => {\n undoStack.value.splice(0, undoStack.value.length);\n redoStack.value.splice(0, redoStack.value.length);\n };\n const undo = () => {\n const state = undoStack.value.shift();\n if (state) {\n redoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const redo = () => {\n const state = redoStack.value.shift();\n if (state) {\n undoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const reset = () => {\n _setSource(last.value);\n };\n const history = computed(() => [last.value, ...undoStack.value]);\n const canUndo = computed(() => undoStack.value.length > 0);\n const canRedo = computed(() => redoStack.value.length > 0);\n return {\n source,\n undoStack,\n redoStack,\n last,\n history,\n canUndo,\n canRedo,\n clear,\n commit,\n reset,\n undo,\n redo\n };\n}\n\nfunction useRefHistory(source, options = {}) {\n const {\n deep = false,\n flush = \"pre\",\n eventFilter\n } = options;\n const {\n eventFilter: composedFilter,\n pause,\n resume: resumeTracking,\n isActive: isTracking\n } = pausableFilter(eventFilter);\n const {\n ignoreUpdates,\n ignorePrevAsyncUpdates,\n stop\n } = watchIgnorable(\n source,\n commit,\n { deep, flush, eventFilter: composedFilter }\n );\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource });\n const { clear, commit: manualCommit } = manualHistory;\n function commit() {\n ignorePrevAsyncUpdates();\n manualCommit();\n }\n function resume(commitNow) {\n resumeTracking();\n if (commitNow)\n commit();\n }\n function batch(fn) {\n let canceled = false;\n const cancel = () => canceled = true;\n ignoreUpdates(() => {\n fn(cancel);\n });\n if (!canceled)\n commit();\n }\n function dispose() {\n stop();\n clear();\n }\n return {\n ...manualHistory,\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n };\n}\n\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nfunction useDeviceMotion(options = {}) {\n const {\n window = defaultWindow,\n requestPermissions = false,\n eventFilter = bypassFilter\n } = options;\n const isSupported = useSupported(() => typeof DeviceMotionEvent !== \"undefined\");\n const requirePermissions = useSupported(() => isSupported.value && \"requestPermission\" in DeviceMotionEvent && typeof DeviceMotionEvent.requestPermission === \"function\");\n const permissionGranted = shallowRef(false);\n const acceleration = ref({ x: null, y: null, z: null });\n const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n const interval = shallowRef(0);\n const accelerationIncludingGravity = ref({\n x: null,\n y: null,\n z: null\n });\n function init() {\n if (window) {\n const onDeviceMotion = createFilterWrapper(\n eventFilter,\n (event) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n acceleration.value = {\n x: ((_a = event.acceleration) == null ? void 0 : _a.x) || null,\n y: ((_b = event.acceleration) == null ? void 0 : _b.y) || null,\n z: ((_c = event.acceleration) == null ? void 0 : _c.z) || null\n };\n accelerationIncludingGravity.value = {\n x: ((_d = event.accelerationIncludingGravity) == null ? void 0 : _d.x) || null,\n y: ((_e = event.accelerationIncludingGravity) == null ? void 0 : _e.y) || null,\n z: ((_f = event.accelerationIncludingGravity) == null ? void 0 : _f.z) || null\n };\n rotationRate.value = {\n alpha: ((_g = event.rotationRate) == null ? void 0 : _g.alpha) || null,\n beta: ((_h = event.rotationRate) == null ? void 0 : _h.beta) || null,\n gamma: ((_i = event.rotationRate) == null ? void 0 : _i.gamma) || null\n };\n interval.value = event.interval;\n }\n );\n useEventListener(window, \"devicemotion\", onDeviceMotion, { passive: true });\n }\n }\n const ensurePermissions = async () => {\n if (!requirePermissions.value)\n permissionGranted.value = true;\n if (permissionGranted.value)\n return;\n if (requirePermissions.value) {\n const requestPermission = DeviceMotionEvent.requestPermission;\n try {\n const response = await requestPermission();\n if (response === \"granted\") {\n permissionGranted.value = true;\n init();\n }\n } catch (error) {\n console.error(error);\n }\n }\n };\n if (isSupported.value) {\n if (requestPermissions && requirePermissions.value) {\n ensurePermissions().then(() => init());\n } else {\n init();\n }\n }\n return {\n acceleration,\n accelerationIncludingGravity,\n rotationRate,\n interval,\n isSupported,\n requirePermissions,\n ensurePermissions,\n permissionGranted\n };\n}\n\nfunction useDeviceOrientation(options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n const isAbsolute = shallowRef(false);\n const alpha = shallowRef(null);\n const beta = shallowRef(null);\n const gamma = shallowRef(null);\n if (window && isSupported.value) {\n useEventListener(window, \"deviceorientation\", (event) => {\n isAbsolute.value = event.absolute;\n alpha.value = event.alpha;\n beta.value = event.beta;\n gamma.value = event.gamma;\n }, { passive: true });\n }\n return {\n isSupported,\n isAbsolute,\n alpha,\n beta,\n gamma\n };\n}\n\nfunction useDevicePixelRatio(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const pixelRatio = shallowRef(1);\n const query = useMediaQuery(() => `(resolution: ${pixelRatio.value}dppx)`, options);\n let stop = noop;\n if (window) {\n stop = watchImmediate(query, () => pixelRatio.value = window.devicePixelRatio);\n }\n return {\n pixelRatio: readonly(pixelRatio),\n stop\n };\n}\n\nfunction useDevicesList(options = {}) {\n const {\n navigator = defaultNavigator,\n requestPermissions = false,\n constraints = { audio: true, video: true },\n onUpdated\n } = options;\n const devices = ref([]);\n const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n const permissionGranted = shallowRef(false);\n let stream;\n async function update() {\n if (!isSupported.value)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n if (stream) {\n stream.getTracks().forEach((t) => t.stop());\n stream = null;\n }\n }\n async function ensurePermissions() {\n const deviceName = constraints.video ? \"camera\" : \"microphone\";\n if (!isSupported.value)\n return false;\n if (permissionGranted.value)\n return true;\n const { state, query } = usePermission(deviceName, { controls: true });\n await query();\n if (state.value !== \"granted\") {\n let granted = true;\n try {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n } catch (e) {\n stream = null;\n granted = false;\n }\n update();\n permissionGranted.value = granted;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (isSupported.value) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update, { passive: true });\n update();\n }\n return {\n devices,\n ensurePermissions,\n permissionGranted,\n videoInputs,\n audioInputs,\n audioOutputs,\n isSupported\n };\n}\n\nfunction useDisplayMedia(options = {}) {\n var _a;\n const enabled = shallowRef((_a = options.enabled) != null ? _a : false);\n const video = options.video;\n const audio = options.audio;\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n });\n const constraint = { audio, video };\n const stream = shallowRef();\n async function _start() {\n var _a2;\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => useEventListener(t, \"ended\", stop, { passive: true }));\n return stream.value;\n }\n async function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility(options = {}) {\n const { document = defaultDocument } = options;\n if (!document)\n return shallowRef(\"visible\");\n const visibility = shallowRef(document.visibilityState);\n useEventListener(document, \"visibilitychange\", () => {\n visibility.value = document.visibilityState;\n }, { passive: true });\n return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n var _a;\n const {\n pointerTypes,\n preventDefault,\n stopPropagation,\n exact,\n onMove,\n onEnd,\n onStart,\n initialValue,\n axis = \"both\",\n draggingElement = defaultWindow,\n containerElement,\n handle: draggingHandle = target,\n buttons = [0]\n } = options;\n const position = ref(\n (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n );\n const pressedDelta = ref();\n const filterEvent = (e) => {\n if (pointerTypes)\n return pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (toValue(preventDefault))\n e.preventDefault();\n if (toValue(stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n var _a2;\n if (!toValue(buttons).includes(e.button))\n return;\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (toValue(exact) && e.target !== toValue(target))\n return;\n const container = toValue(containerElement);\n const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n const targetRect = toValue(target).getBoundingClientRect();\n const pos = {\n x: e.clientX - (container ? targetRect.left - containerRect.left + container.scrollLeft : targetRect.left),\n y: e.clientY - (container ? targetRect.top - containerRect.top + container.scrollTop : targetRect.top)\n };\n if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n return;\n pressedDelta.value = pos;\n handleEvent(e);\n };\n const move = (e) => {\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n const container = toValue(containerElement);\n const targetRect = toValue(target).getBoundingClientRect();\n let { x, y } = position.value;\n if (axis === \"x\" || axis === \"both\") {\n x = e.clientX - pressedDelta.value.x;\n if (container)\n x = Math.min(Math.max(0, x), container.scrollWidth - targetRect.width);\n }\n if (axis === \"y\" || axis === \"both\") {\n y = e.clientY - pressedDelta.value.y;\n if (container)\n y = Math.min(Math.max(0, y), container.scrollHeight - targetRect.height);\n }\n position.value = {\n x,\n y\n };\n onMove == null ? void 0 : onMove(position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n onEnd == null ? void 0 : onEnd(position.value, e);\n handleEvent(e);\n };\n if (isClient) {\n const config = () => {\n var _a2;\n return {\n capture: (_a2 = options.capture) != null ? _a2 : true,\n passive: !toValue(preventDefault)\n };\n };\n useEventListener(draggingHandle, \"pointerdown\", start, config);\n useEventListener(draggingElement, \"pointermove\", move, config);\n useEventListener(draggingElement, \"pointerup\", end, config);\n }\n return {\n ...toRefs(position),\n position,\n isDragging: computed(() => !!pressedDelta.value),\n style: computed(\n () => `left:${position.value.x}px;top:${position.value.y}px;`\n )\n };\n}\n\nfunction useDropZone(target, options = {}) {\n var _a, _b;\n const isOverDropZone = shallowRef(false);\n const files = shallowRef(null);\n let counter = 0;\n let isValid = true;\n if (isClient) {\n const _options = typeof options === \"function\" ? { onDrop: options } : options;\n const multiple = (_a = _options.multiple) != null ? _a : true;\n const preventDefaultForUnhandled = (_b = _options.preventDefaultForUnhandled) != null ? _b : false;\n const getFiles = (event) => {\n var _a2, _b2;\n const list = Array.from((_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.files) != null ? _b2 : []);\n return list.length === 0 ? null : multiple ? list : [list[0]];\n };\n const checkDataTypes = (types) => {\n const dataTypes = unref(_options.dataTypes);\n if (typeof dataTypes === \"function\")\n return dataTypes(types);\n if (!(dataTypes == null ? void 0 : dataTypes.length))\n return true;\n if (types.length === 0)\n return false;\n return types.every(\n (type) => dataTypes.some((allowedType) => type.includes(allowedType))\n );\n };\n const checkValidity = (items) => {\n const types = Array.from(items != null ? items : []).map((item) => item.type);\n const dataTypesValid = checkDataTypes(types);\n const multipleFilesValid = multiple || items.length <= 1;\n return dataTypesValid && multipleFilesValid;\n };\n const isSafari = () => /^(?:(?!chrome|android).)*safari/i.test(navigator.userAgent) && !(\"chrome\" in window);\n const handleDragEvent = (event, eventType) => {\n var _a2, _b2, _c, _d, _e, _f;\n const dataTransferItemList = (_a2 = event.dataTransfer) == null ? void 0 : _a2.items;\n isValid = (_b2 = dataTransferItemList && checkValidity(dataTransferItemList)) != null ? _b2 : false;\n if (preventDefaultForUnhandled) {\n event.preventDefault();\n }\n if (!isSafari() && !isValid) {\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"none\";\n }\n return;\n }\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"copy\";\n }\n const currentFiles = getFiles(event);\n switch (eventType) {\n case \"enter\":\n counter += 1;\n isOverDropZone.value = true;\n (_c = _options.onEnter) == null ? void 0 : _c.call(_options, null, event);\n break;\n case \"over\":\n (_d = _options.onOver) == null ? void 0 : _d.call(_options, null, event);\n break;\n case \"leave\":\n counter -= 1;\n if (counter === 0)\n isOverDropZone.value = false;\n (_e = _options.onLeave) == null ? void 0 : _e.call(_options, null, event);\n break;\n case \"drop\":\n counter = 0;\n isOverDropZone.value = false;\n if (isValid) {\n files.value = currentFiles;\n (_f = _options.onDrop) == null ? void 0 : _f.call(_options, currentFiles, event);\n }\n break;\n }\n };\n useEventListener(target, \"dragenter\", (event) => handleDragEvent(event, \"enter\"));\n useEventListener(target, \"dragover\", (event) => handleDragEvent(event, \"over\"));\n useEventListener(target, \"dragleave\", (event) => handleDragEvent(event, \"leave\"));\n useEventListener(target, \"drop\", (event) => handleDragEvent(event, \"drop\"));\n }\n return {\n files,\n isOverDropZone\n };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...observerOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const _targets = toValue(target);\n return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)];\n });\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els) {\n if (_el)\n observer.observe(_el, observerOptions);\n }\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementBounding(target, options = {}) {\n const {\n reset = true,\n windowResize = true,\n windowScroll = true,\n immediate = true,\n updateTiming = \"sync\"\n } = options;\n const height = shallowRef(0);\n const bottom = shallowRef(0);\n const left = shallowRef(0);\n const right = shallowRef(0);\n const top = shallowRef(0);\n const width = shallowRef(0);\n const x = shallowRef(0);\n const y = shallowRef(0);\n function recalculate() {\n const el = unrefElement(target);\n if (!el) {\n if (reset) {\n height.value = 0;\n bottom.value = 0;\n left.value = 0;\n right.value = 0;\n top.value = 0;\n width.value = 0;\n x.value = 0;\n y.value = 0;\n }\n return;\n }\n const rect = el.getBoundingClientRect();\n height.value = rect.height;\n bottom.value = rect.bottom;\n left.value = rect.left;\n right.value = rect.right;\n top.value = rect.top;\n width.value = rect.width;\n x.value = rect.x;\n y.value = rect.y;\n }\n function update() {\n if (updateTiming === \"sync\")\n recalculate();\n else if (updateTiming === \"next-frame\")\n requestAnimationFrame(() => recalculate());\n }\n useResizeObserver(target, update);\n watch(() => unrefElement(target), (ele) => !ele && update());\n useMutationObserver(target, update, {\n attributeFilter: [\"style\", \"class\"]\n });\n if (windowScroll)\n useEventListener(\"scroll\", update, { capture: true, passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n tryOnMounted(() => {\n if (immediate)\n update();\n });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nfunction useElementByPoint(options) {\n const {\n x,\n y,\n document = defaultDocument,\n multiple,\n interval = \"requestAnimationFrame\",\n immediate = true\n } = options;\n const isSupported = useSupported(() => {\n if (toValue(multiple))\n return document && \"elementsFromPoint\" in document;\n return document && \"elementFromPoint\" in document;\n });\n const element = shallowRef(null);\n const cb = () => {\n var _a, _b;\n element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n };\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n return {\n isSupported,\n element,\n ...controls\n };\n}\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n triggerOnRemoval = false,\n window = defaultWindow\n } = options;\n const isHovered = shallowRef(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n if (triggerOnRemoval) {\n onElementRemoval(\n computed(() => unrefElement(el)),\n () => toggle(false)\n );\n }\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = shallowRef(initialSize.width);\n const height = shallowRef(initialSize.height);\n const { stop: stop1 } = useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const rect = $elem.getBoundingClientRect();\n width.value = rect.width;\n height.value = rect.height;\n }\n } else {\n if (boxSize) {\n const formatBoxSize = toArray(boxSize);\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n tryOnMounted(() => {\n const ele = unrefElement(target);\n if (ele) {\n width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n }\n });\n const stop2 = watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n function stop() {\n stop1();\n stop2();\n }\n return {\n width,\n height,\n stop\n };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return toArray(_target).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = shallowRef(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, options = {}) {\n const {\n window = defaultWindow,\n scrollTarget,\n threshold = 0,\n rootMargin,\n once = false\n } = options;\n const elementIsVisible = shallowRef(false);\n const { stop } = useIntersectionObserver(\n element,\n (intersectionObserverEntries) => {\n let isIntersecting = elementIsVisible.value;\n let latestTime = 0;\n for (const entry of intersectionObserverEntries) {\n if (entry.time >= latestTime) {\n latestTime = entry.time;\n isIntersecting = entry.isIntersecting;\n }\n }\n elementIsVisible.value = isIntersecting;\n if (once) {\n watchOnce(elementIsVisible, () => {\n stop();\n });\n }\n },\n {\n root: scrollTarget,\n window,\n threshold,\n rootMargin: toValue(rootMargin)\n }\n );\n return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n const scope = getCurrentScope();\n function on(listener) {\n var _a;\n const listeners = events.get(key) || /* @__PURE__ */ new Set();\n listeners.add(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n return _off;\n }\n function once(listener) {\n function _listener(...args) {\n off(_listener);\n listener(...args);\n }\n return on(_listener);\n }\n function off(listener) {\n const listeners = events.get(key);\n if (!listeners)\n return;\n listeners.delete(listener);\n if (!listeners.size)\n reset();\n }\n function reset() {\n events.delete(key);\n }\n function emit(event, payload) {\n var _a;\n (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n }\n return { on, once, off, emit, reset };\n}\n\nfunction resolveNestedOptions$1(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useEventSource(url, events = [], options = {}) {\n const event = shallowRef(null);\n const data = shallowRef(null);\n const status = shallowRef(\"CONNECTING\");\n const eventSource = ref(null);\n const error = shallowRef(null);\n const urlRef = toRef(url);\n const lastEventId = shallowRef(null);\n let explicitlyClosed = false;\n let retried = 0;\n const {\n withCredentials = false,\n immediate = true,\n autoConnect = true,\n autoReconnect\n } = options;\n const close = () => {\n if (isClient && eventSource.value) {\n eventSource.value.close();\n eventSource.value = null;\n status.value = \"CLOSED\";\n explicitlyClosed = true;\n }\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const es = new EventSource(urlRef.value, { withCredentials });\n status.value = \"CONNECTING\";\n eventSource.value = es;\n es.onopen = () => {\n status.value = \"OPEN\";\n error.value = null;\n };\n es.onerror = (e) => {\n status.value = \"CLOSED\";\n error.value = e;\n if (es.readyState === 2 && !explicitlyClosed && autoReconnect) {\n es.close();\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions$1(autoReconnect);\n retried += 1;\n if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n setTimeout(_init, delay);\n else if (typeof retries === \"function\" && retries())\n setTimeout(_init, delay);\n else\n onFailed == null ? void 0 : onFailed();\n }\n };\n es.onmessage = (e) => {\n event.value = null;\n data.value = e.data;\n lastEventId.value = e.lastEventId;\n };\n for (const event_name of events) {\n useEventListener(es, event_name, (e) => {\n event.value = event_name;\n data.value = e.data || null;\n }, { passive: true });\n }\n };\n const open = () => {\n if (!isClient)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n open();\n if (autoConnect)\n watch(urlRef, open);\n tryOnScopeDispose(close);\n return {\n eventSource,\n event,\n data,\n status,\n error,\n open,\n close,\n lastEventId\n };\n}\n\nfunction useEyeDropper(options = {}) {\n const { initialValue = \"\" } = options;\n const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = shallowRef(initialValue);\n async function open(openOptions) {\n if (!isSupported.value)\n return;\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(openOptions);\n sRGBHex.value = result.sRGBHex;\n return result;\n }\n return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n const {\n baseUrl = \"\",\n rel = \"icon\",\n document = defaultDocument\n } = options;\n const favicon = toRef(newIcon);\n const applyIcon = (icon) => {\n const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n if (!elements || elements.length === 0) {\n const link = document == null ? void 0 : document.createElement(\"link\");\n if (link) {\n link.rel = rel;\n link.href = `${baseUrl}${icon}`;\n link.type = `image/${icon.split(\".\").pop()}`;\n document == null ? void 0 : document.head.append(link);\n }\n return;\n }\n elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n watch(\n favicon,\n (i, o) => {\n if (typeof i === \"string\" && i !== o)\n applyIcon(i);\n },\n { immediate: true }\n );\n return favicon;\n}\n\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nconst reAbsolute = /^(?:[a-z][a-z\\d+\\-.]*:)?\\/\\//i;\nfunction isAbsoluteURL(url) {\n return reAbsolute.test(url);\n}\nfunction headersToObject(headers) {\n if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n return Object.fromEntries(headers.entries());\n return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n if (combination === \"overwrite\") {\n return async (ctx) => {\n let callback;\n for (let i = callbacks.length - 1; i >= 0; i--) {\n if (callbacks[i] != null) {\n callback = callbacks[i];\n break;\n }\n }\n if (callback)\n return { ...ctx, ...await callback(ctx) };\n return ctx;\n };\n } else {\n return async (ctx) => {\n for (const callback of callbacks) {\n if (callback)\n ctx = { ...ctx, ...await callback(ctx) };\n }\n return ctx;\n };\n }\n}\nfunction createFetch(config = {}) {\n const _combination = config.combination || \"chain\";\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = computed(() => {\n const baseUrl = toValue(config.baseUrl);\n const targetUrl = toValue(url);\n return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n });\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = {\n ...options,\n ...args[0],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n };\n } else {\n fetchOptions = {\n ...fetchOptions,\n ...args[0],\n headers: {\n ...headersToObject(fetchOptions.headers) || {},\n ...headersToObject(args[0].headers) || {}\n }\n };\n }\n }\n if (args.length > 1 && isFetchOptions(args[1])) {\n options = {\n ...options,\n ...args[1],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n };\n }\n return useFetch(computedUrl, fetchOptions, options);\n }\n return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n var _a;\n const supportsAbort = typeof AbortController === \"function\";\n let fetchOptions = {};\n let options = {\n immediate: true,\n refetch: false,\n timeout: 0,\n updateDataOnError: false\n };\n const config = {\n method: \"GET\",\n type: \"text\",\n payload: void 0\n };\n if (args.length > 0) {\n if (isFetchOptions(args[0]))\n options = { ...options, ...args[0] };\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = { ...options, ...args[1] };\n }\n const {\n fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n initialData,\n timeout\n } = options;\n const responseEvent = createEventHook();\n const errorEvent = createEventHook();\n const finallyEvent = createEventHook();\n const isFinished = shallowRef(false);\n const isFetching = shallowRef(false);\n const aborted = shallowRef(false);\n const statusCode = shallowRef(null);\n const response = shallowRef(null);\n const error = shallowRef(null);\n const data = shallowRef(initialData || null);\n const canAbort = computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort) {\n controller == null ? void 0 : controller.abort();\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = {\n ...fetchOptions,\n signal: controller.signal\n };\n }\n };\n const loading = (isLoading) => {\n isFetching.value = isLoading;\n isFinished.value = !isLoading;\n };\n if (timeout)\n timer = useTimeoutFn(abort, timeout, { immediate: false });\n let executeCounter = 0;\n const execute = async (throwOnFailed = false) => {\n var _a2, _b;\n abort();\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n executeCounter += 1;\n const currentExecuteCounter = executeCounter;\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n const payload = toValue(config.payload);\n if (payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n const proto = Object.getPrototypeOf(payload);\n if (!config.payloadType && payload && (proto === Object.prototype || Array.isArray(proto)) && !(payload instanceof FormData))\n config.payloadType = \"json\";\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n }\n let isCanceled = false;\n const context = {\n url: toValue(url),\n options: {\n ...defaultFetchOptions,\n ...fetchOptions\n },\n cancel: () => {\n isCanceled = true;\n }\n };\n if (options.beforeFetch)\n Object.assign(context, await options.beforeFetch(context));\n if (isCanceled || !fetch) {\n loading(false);\n return Promise.resolve(null);\n }\n let responseData = null;\n if (timer)\n timer.start();\n return fetch(\n context.url,\n {\n ...defaultFetchOptions,\n ...context.options,\n headers: {\n ...headersToObject(defaultFetchOptions.headers),\n ...headersToObject((_b = context.options) == null ? void 0 : _b.headers)\n }\n }\n ).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse.clone()[config.type]();\n if (!fetchResponse.ok) {\n data.value = initialData || null;\n throw new Error(fetchResponse.statusText);\n }\n if (options.afterFetch) {\n ({ data: responseData } = await options.afterFetch({\n data: responseData,\n response: fetchResponse,\n context,\n execute\n }));\n }\n data.value = responseData;\n responseEvent.trigger(fetchResponse);\n return fetchResponse;\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError) {\n ({ error: errorData, data: responseData } = await options.onFetchError({\n data: responseData,\n error: fetchError,\n response: response.value,\n context,\n execute\n }));\n }\n error.value = errorData;\n if (options.updateDataOnError)\n data.value = responseData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n throw fetchError;\n return null;\n }).finally(() => {\n if (currentExecuteCounter === executeCounter)\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n };\n const refetch = toRef(options.refetch);\n watch(\n [\n refetch,\n toRef(url)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n const shell = {\n isFinished: readonly(isFinished),\n isFetching: readonly(isFetching),\n statusCode,\n response,\n error,\n data,\n canAbort,\n aborted,\n abort,\n execute,\n onFetchResponse: responseEvent.on,\n onFetchError: errorEvent.on,\n onFetchFinally: finallyEvent.on,\n // method\n get: setMethod(\"GET\"),\n put: setMethod(\"PUT\"),\n post: setMethod(\"POST\"),\n delete: setMethod(\"DELETE\"),\n patch: setMethod(\"PATCH\"),\n head: setMethod(\"HEAD\"),\n options: setMethod(\"OPTIONS\"),\n // type\n json: setType(\"json\"),\n text: setType(\"text\"),\n blob: setType(\"blob\"),\n arrayBuffer: setType(\"arrayBuffer\"),\n formData: setType(\"formData\")\n };\n function setMethod(method) {\n return (payload, payloadType) => {\n if (!isFetching.value) {\n config.method = method;\n config.payload = payload;\n config.payloadType = payloadType;\n if (isRef(config.payload)) {\n watch(\n [\n refetch,\n toRef(config.payload)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n function waitUntilFinished() {\n return new Promise((resolve, reject) => {\n until(isFinished).toBe(true).then(() => resolve(shell)).catch(reject);\n });\n }\n function setType(type) {\n return () => {\n if (!isFetching.value) {\n config.type = type;\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n if (options.immediate)\n Promise.resolve().then(() => execute());\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n}\nfunction joinPaths(start, end) {\n if (!start.endsWith(\"/\") && !end.startsWith(\"/\")) {\n return `${start}/${end}`;\n }\n if (start.endsWith(\"/\") && end.startsWith(\"/\")) {\n return `${start.slice(0, -1)}${end}`;\n }\n return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: \"*\",\n reset: false,\n directory: false\n};\nfunction prepareInitialFiles(files) {\n if (!files)\n return null;\n if (files instanceof FileList)\n return files;\n const dt = new DataTransfer();\n for (const file of files) {\n dt.items.add(file);\n }\n return dt.files;\n}\nfunction useFileDialog(options = {}) {\n const {\n document = defaultDocument\n } = options;\n const files = ref(prepareInitialFiles(options.initialFiles));\n const { on: onChange, trigger: changeTrigger } = createEventHook();\n const { on: onCancel, trigger: cancelTrigger } = createEventHook();\n let input;\n if (document) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = (event) => {\n const result = event.target;\n files.value = result.files;\n changeTrigger(files.value);\n };\n input.oncancel = () => {\n cancelTrigger();\n };\n }\n const reset = () => {\n files.value = null;\n if (input && input.value) {\n input.value = \"\";\n changeTrigger(null);\n }\n };\n const open = (localOptions) => {\n if (!input)\n return;\n const _options = {\n ...DEFAULT_OPTIONS,\n ...options,\n ...localOptions\n };\n input.multiple = _options.multiple;\n input.accept = _options.accept;\n input.webkitdirectory = _options.directory;\n if (hasOwn(_options, \"capture\"))\n input.capture = _options.capture;\n if (_options.reset)\n reset();\n input.click();\n };\n return {\n files: readonly(files),\n open,\n reset,\n onCancel,\n onChange\n };\n}\n\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = options;\n const window = _window;\n const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n const fileHandle = shallowRef();\n const data = shallowRef();\n const file = shallowRef();\n const fileName = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n });\n const fileMIME = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n });\n const fileSize = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n });\n const fileLastModified = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n });\n async function open(_options = {}) {\n if (!isSupported.value)\n return;\n const [handle] = await window.showOpenFilePicker({ ...toValue(options), ..._options });\n fileHandle.value = handle;\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n data.value = void 0;\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported.value)\n return;\n if (!fileHandle.value)\n return saveAs(_options);\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function saveAs(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function updateFile() {\n var _a;\n file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n }\n async function updateData() {\n var _a, _b;\n await updateFile();\n const type = toValue(dataType);\n if (type === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n else if (type === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n else if (type === \"Blob\")\n data.value = file.value;\n }\n watch(() => toValue(dataType), updateData);\n return {\n isSupported,\n data,\n file,\n fileName,\n fileMIME,\n fileSize,\n fileLastModified,\n open,\n create,\n save,\n saveAs,\n updateData\n };\n}\n\nfunction useFocus(target, options = {}) {\n const { initialValue = false, focusVisible = false, preventScroll = false } = options;\n const innerFocused = shallowRef(false);\n const targetElement = computed(() => unrefElement(target));\n const listenerOptions = { passive: true };\n useEventListener(targetElement, \"focus\", (event) => {\n var _a, _b;\n if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n innerFocused.value = true;\n }, listenerOptions);\n useEventListener(targetElement, \"blur\", () => innerFocused.value = false, listenerOptions);\n const focused = computed({\n get: () => innerFocused.value,\n set(value) {\n var _a, _b;\n if (!value && innerFocused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n else if (value && !innerFocused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus({ preventScroll });\n }\n });\n watch(\n targetElement,\n () => {\n focused.value = initialValue;\n },\n { immediate: true, flush: \"post\" }\n );\n return { focused };\n}\n\nconst EVENT_FOCUS_IN = \"focusin\";\nconst EVENT_FOCUS_OUT = \"focusout\";\nconst PSEUDO_CLASS_FOCUS_WITHIN = \":focus-within\";\nfunction useFocusWithin(target, options = {}) {\n const { window = defaultWindow } = options;\n const targetElement = computed(() => unrefElement(target));\n const _focused = shallowRef(false);\n const focused = computed(() => _focused.value);\n const activeElement = useActiveElement(options);\n if (!window || !activeElement.value) {\n return { focused };\n }\n const listenerOptions = { passive: true };\n useEventListener(targetElement, EVENT_FOCUS_IN, () => _focused.value = true, listenerOptions);\n useEventListener(targetElement, EVENT_FOCUS_OUT, () => {\n var _a, _b, _c;\n return _focused.value = (_c = (_b = (_a = targetElement.value) == null ? void 0 : _a.matches) == null ? void 0 : _b.call(_a, PSEUDO_CLASS_FOCUS_WITHIN)) != null ? _c : false;\n }, listenerOptions);\n return { focused };\n}\n\nfunction useFps(options) {\n var _a;\n const fps = shallowRef(0);\n if (typeof performance === \"undefined\")\n return fps;\n const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n let last = performance.now();\n let ticks = 0;\n useRafFn(() => {\n ticks += 1;\n if (ticks >= every) {\n const now = performance.now();\n const diff = now - last;\n fps.value = Math.round(1e3 / (diff / ticks));\n last = now;\n ticks = 0;\n }\n });\n return fps;\n}\n\nconst eventHandlers = [\n \"fullscreenchange\",\n \"webkitfullscreenchange\",\n \"webkitendfullscreen\",\n \"mozfullscreenchange\",\n \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n const {\n document = defaultDocument,\n autoExit = false\n } = options;\n const targetRef = computed(() => {\n var _a;\n return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.documentElement;\n });\n const isFullscreen = shallowRef(false);\n const requestMethod = computed(() => {\n return [\n \"requestFullscreen\",\n \"webkitRequestFullscreen\",\n \"webkitEnterFullscreen\",\n \"webkitEnterFullScreen\",\n \"webkitRequestFullScreen\",\n \"mozRequestFullScreen\",\n \"msRequestFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const exitMethod = computed(() => {\n return [\n \"exitFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitExitFullScreen\",\n \"webkitCancelFullScreen\",\n \"mozCancelFullScreen\",\n \"msExitFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenEnabled = computed(() => {\n return [\n \"fullScreen\",\n \"webkitIsFullScreen\",\n \"webkitDisplayingFullscreen\",\n \"mozFullScreen\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenElementMethod = [\n \"fullscreenElement\",\n \"webkitFullscreenElement\",\n \"mozFullScreenElement\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document);\n const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n const isCurrentElementFullScreen = () => {\n if (fullscreenElementMethod)\n return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n return false;\n };\n const isElementFullScreen = () => {\n if (fullscreenEnabled.value) {\n if (document && document[fullscreenEnabled.value] != null) {\n return document[fullscreenEnabled.value];\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n return Boolean(target2[fullscreenEnabled.value]);\n }\n }\n }\n return false;\n };\n async function exit() {\n if (!isSupported.value || !isFullscreen.value)\n return;\n if (exitMethod.value) {\n if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n await document[exitMethod.value]();\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n await target2[exitMethod.value]();\n }\n }\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported.value || isFullscreen.value)\n return;\n if (isElementFullScreen())\n await exit();\n const target2 = targetRef.value;\n if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n await target2[requestMethod.value]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n await (isFullscreen.value ? exit() : enter());\n }\n const handlerCallback = () => {\n const isElementFullScreenValue = isElementFullScreen();\n if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n isFullscreen.value = isElementFullScreenValue;\n };\n const listenerOptions = { capture: false, passive: true };\n useEventListener(document, eventHandlers, handlerCallback, listenerOptions);\n useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, listenerOptions);\n if (autoExit)\n tryOnScopeDispose(exit);\n return {\n isSupported,\n isFullscreen,\n enter,\n exit,\n toggle\n };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n return computed(() => {\n if (gamepad.value) {\n return {\n buttons: {\n a: gamepad.value.buttons[0],\n b: gamepad.value.buttons[1],\n x: gamepad.value.buttons[2],\n y: gamepad.value.buttons[3]\n },\n bumper: {\n left: gamepad.value.buttons[4],\n right: gamepad.value.buttons[5]\n },\n triggers: {\n left: gamepad.value.buttons[6],\n right: gamepad.value.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.value.axes[0],\n vertical: gamepad.value.axes[1],\n button: gamepad.value.buttons[10]\n },\n right: {\n horizontal: gamepad.value.axes[2],\n vertical: gamepad.value.axes[3],\n button: gamepad.value.buttons[11]\n }\n },\n dpad: {\n up: gamepad.value.buttons[12],\n down: gamepad.value.buttons[13],\n left: gamepad.value.buttons[14],\n right: gamepad.value.buttons[15]\n },\n back: gamepad.value.buttons[8],\n start: gamepad.value.buttons[9]\n };\n }\n return null;\n });\n}\nfunction useGamepad(options = {}) {\n const {\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n const gamepads = ref([]);\n const onConnectedHook = createEventHook();\n const onDisconnectedHook = createEventHook();\n const stateFromGamepad = (gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n if (vibrationActuator)\n hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators)\n hapticActuators.push(...gamepad.hapticActuators);\n return {\n id: gamepad.id,\n index: gamepad.index,\n connected: gamepad.connected,\n mapping: gamepad.mapping,\n timestamp: gamepad.timestamp,\n vibrationActuator: gamepad.vibrationActuator,\n hapticActuators,\n axes: gamepad.axes.map((axes) => axes),\n buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n };\n };\n const updateGamepadState = () => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n gamepads.value[gamepad.index] = stateFromGamepad(gamepad);\n }\n };\n const { isActive, pause, resume } = useRafFn(updateGamepadState);\n const onGamepadConnected = (gamepad) => {\n if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n gamepads.value.push(stateFromGamepad(gamepad));\n onConnectedHook.trigger(gamepad.index);\n }\n resume();\n };\n const onGamepadDisconnected = (gamepad) => {\n gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n onDisconnectedHook.trigger(gamepad.index);\n };\n const listenerOptions = { passive: true };\n useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad), listenerOptions);\n useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad), listenerOptions);\n tryOnMounted(() => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n onGamepadConnected(gamepad);\n }\n });\n pause();\n return {\n isSupported,\n onConnected: onConnectedHook.on,\n onDisconnected: onDisconnectedHook.on,\n gamepads,\n pause,\n resume,\n isActive\n };\n}\n\nfunction useGeolocation(options = {}) {\n const {\n enableHighAccuracy = true,\n maximumAge = 3e4,\n timeout = 27e3,\n navigator = defaultNavigator,\n immediate = true\n } = options;\n const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n const locatedAt = shallowRef(null);\n const error = shallowRef(null);\n const coords = ref({\n accuracy: 0,\n latitude: Number.POSITIVE_INFINITY,\n longitude: Number.POSITIVE_INFINITY,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n function updatePosition(position) {\n locatedAt.value = position.timestamp;\n coords.value = position.coords;\n error.value = null;\n }\n let watcher;\n function resume() {\n if (isSupported.value) {\n watcher = navigator.geolocation.watchPosition(\n updatePosition,\n (err) => error.value = err,\n {\n enableHighAccuracy,\n maximumAge,\n timeout\n }\n );\n }\n }\n if (immediate)\n resume();\n function pause() {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n }\n tryOnScopeDispose(() => {\n pause();\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error,\n resume,\n pause\n };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n const {\n initialState = false,\n listenForVisibilityChange = true,\n events = defaultEvents$1,\n window = defaultWindow,\n eventFilter = throttleFilter(50)\n } = options;\n const idle = shallowRef(initialState);\n const lastActive = shallowRef(timestamp());\n let timer;\n const reset = () => {\n idle.value = false;\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\n };\n const onEvent = createFilterWrapper(\n eventFilter,\n () => {\n lastActive.value = timestamp();\n reset();\n }\n );\n if (window) {\n const document = window.document;\n const listenerOptions = { passive: true };\n for (const event of events)\n useEventListener(window, event, onEvent, listenerOptions);\n if (listenForVisibilityChange) {\n useEventListener(document, \"visibilitychange\", () => {\n if (!document.hidden)\n onEvent();\n }, listenerOptions);\n }\n reset();\n }\n return {\n idle,\n lastActive,\n reset\n };\n}\n\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy, width, height, decoding, fetchPriority, ismap, usemap } = options;\n img.src = src;\n if (srcset != null)\n img.srcset = srcset;\n if (sizes != null)\n img.sizes = sizes;\n if (clazz != null)\n img.className = clazz;\n if (loading != null)\n img.loading = loading;\n if (crossorigin != null)\n img.crossOrigin = crossorigin;\n if (referrerPolicy != null)\n img.referrerPolicy = referrerPolicy;\n if (width != null)\n img.width = width;\n if (height != null)\n img.height = height;\n if (decoding != null)\n img.decoding = decoding;\n if (fetchPriority != null)\n img.fetchPriority = fetchPriority;\n if (ismap != null)\n img.isMap = ismap;\n if (usemap != null)\n img.useMap = usemap;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n {\n resetOnExecute: true,\n ...asyncStateOptions\n }\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nfunction resolveElement(el) {\n if (typeof Window !== \"undefined\" && el instanceof Window)\n return el.document.documentElement;\n if (typeof Document !== \"undefined\" && el instanceof Document)\n return el.documentElement;\n return el;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\",\n window = defaultWindow,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const internalX = shallowRef(0);\n const internalY = shallowRef(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c, _d;\n if (!window)\n return;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element;\n if (x != null)\n internalX.value = scrollContainer.scrollLeft;\n if (y != null)\n internalY.value = scrollContainer.scrollTop;\n }\n const isScrolling = shallowRef(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n var _a;\n if (!window)\n return;\n const el = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target);\n const { display, flexDirection, direction } = getComputedStyle(el);\n const directionMultipler = direction === \"rtl\" ? -1 : 1;\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft * directionMultipler) <= (offset.left || 0);\n const right = Math.abs(scrollLeft * directionMultipler) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === window.document && !scrollTop)\n scrollTop = window.document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n var _a;\n if (!window)\n return;\n const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n tryOnMounted(() => {\n try {\n const _element = toValue(element);\n if (!_element)\n return;\n setArrivedState(_element);\n } catch (e) {\n onError(e);\n }\n });\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (window && _element)\n setArrivedState(_element);\n }\n };\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100,\n canLoadMore = () => true\n } = options;\n const state = reactive(useScroll(\n element,\n {\n ...options,\n offset: {\n [direction]: (_a = options.distance) != null ? _a : 0,\n ...options.offset\n }\n }\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n const observedElement = computed(() => {\n return resolveElement(toValue(element));\n });\n const isElementVisible = useElementVisibility(observedElement);\n function checkAndLoad() {\n state.measure();\n if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value))\n return;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n const stop = watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n tryOnUnmounted(stop);\n return {\n isLoading,\n reset() {\n nextTick(() => checkAndLoad());\n }\n };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n const {\n events = defaultEvents,\n document = defaultDocument,\n initial = null\n } = options;\n const state = shallowRef(initial);\n if (document) {\n events.forEach((listenerEvent) => {\n useEventListener(document, listenerEvent, (evt) => {\n if (typeof evt.getModifierState === \"function\")\n state.value = evt.getModifierState(modifier);\n }, { passive: true });\n });\n }\n return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n const {\n reactive: useReactive = false,\n target = defaultWindow,\n aliasMap = DefaultMagicKeysAliasMap,\n passive = true,\n onEventFired = noop\n } = options;\n const current = reactive(/* @__PURE__ */ new Set());\n const obj = {\n toJSON() {\n return {};\n },\n current\n };\n const refs = useReactive ? reactive(obj) : obj;\n const metaDeps = /* @__PURE__ */ new Set();\n const usedKeys = /* @__PURE__ */ new Set();\n function setRefs(key, value) {\n if (key in refs) {\n if (useReactive)\n refs[key] = value;\n else\n refs[key].value = value;\n }\n }\n function reset() {\n current.clear();\n for (const key of usedKeys)\n setRefs(key, false);\n }\n function updateRefs(e, value) {\n var _a, _b;\n const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n const values = [code, key].filter(Boolean);\n if (key) {\n if (value)\n current.add(key);\n else\n current.delete(key);\n }\n for (const key2 of values) {\n usedKeys.add(key2);\n setRefs(key2, value);\n }\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n useEventListener(target, \"keydown\", (e) => {\n updateRefs(e, true);\n return onEventFired(e);\n }, { passive });\n useEventListener(target, \"keyup\", (e) => {\n updateRefs(e, false);\n return onEventFired(e);\n }, { passive });\n useEventListener(\"blur\", reset, { passive });\n useEventListener(\"focus\", reset, { passive });\n const proxy = new Proxy(\n refs,\n {\n get(target2, prop, rec) {\n if (typeof prop !== \"string\")\n return Reflect.get(target2, prop, rec);\n prop = prop.toLowerCase();\n if (prop in aliasMap)\n prop = aliasMap[prop];\n if (!(prop in refs)) {\n if (/[+_-]/.test(prop)) {\n const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n refs[prop] = computed(() => keys.map((key) => toValue(proxy[key])).every(Boolean));\n } else {\n refs[prop] = shallowRef(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? toValue(r) : r;\n }\n }\n );\n return proxy;\n}\n\nfunction usingElRef(source, cb) {\n if (toValue(source))\n cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n let ranges = [];\n for (let i = 0; i < timeRanges.length; ++i)\n ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n return ranges;\n}\nfunction tracksToArray(tracks) {\n return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n src: \"\",\n tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n target = toRef(target);\n options = {\n ...defaultOptions,\n ...options\n };\n const {\n document = defaultDocument\n } = options;\n const listenerOptions = { passive: true };\n const currentTime = shallowRef(0);\n const duration = shallowRef(0);\n const seeking = shallowRef(false);\n const volume = shallowRef(1);\n const waiting = shallowRef(false);\n const ended = shallowRef(false);\n const playing = shallowRef(false);\n const rate = shallowRef(1);\n const stalled = shallowRef(false);\n const buffered = ref([]);\n const tracks = ref([]);\n const selectedTrack = shallowRef(-1);\n const isPictureInPicture = shallowRef(false);\n const muted = shallowRef(false);\n const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n const sourceErrorEvent = createEventHook();\n const playbackErrorEvent = createEventHook();\n const disableTrack = (track) => {\n usingElRef(target, (el) => {\n if (track) {\n const id = typeof track === \"number\" ? track : track.id;\n el.textTracks[id].mode = \"disabled\";\n } else {\n for (let i = 0; i < el.textTracks.length; ++i)\n el.textTracks[i].mode = \"disabled\";\n }\n selectedTrack.value = -1;\n });\n };\n const enableTrack = (track, disableTracks = true) => {\n usingElRef(target, (el) => {\n const id = typeof track === \"number\" ? track : track.id;\n if (disableTracks)\n disableTrack();\n el.textTracks[id].mode = \"showing\";\n selectedTrack.value = id;\n });\n };\n const togglePictureInPicture = () => {\n return new Promise((resolve, reject) => {\n usingElRef(target, async (el) => {\n if (supportsPictureInPicture) {\n if (!isPictureInPicture.value) {\n el.requestPictureInPicture().then(resolve).catch(reject);\n } else {\n document.exitPictureInPicture().then(resolve).catch(reject);\n }\n }\n });\n });\n };\n watchEffect(() => {\n if (!document)\n return;\n const el = toValue(target);\n if (!el)\n return;\n const src = toValue(options.src);\n let sources = [];\n if (!src)\n return;\n if (typeof src === \"string\")\n sources = [{ src }];\n else if (Array.isArray(src))\n sources = src;\n else if (isObject(src))\n sources = [src];\n el.querySelectorAll(\"source\").forEach((e) => {\n e.remove();\n });\n sources.forEach(({ src: src2, type, media }) => {\n const source = document.createElement(\"source\");\n source.setAttribute(\"src\", src2);\n source.setAttribute(\"type\", type || \"\");\n source.setAttribute(\"media\", media || \"\");\n useEventListener(source, \"error\", sourceErrorEvent.trigger, listenerOptions);\n el.appendChild(source);\n });\n el.load();\n });\n watch([target, volume], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.volume = volume.value;\n });\n watch([target, muted], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.muted = muted.value;\n });\n watch([target, rate], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.playbackRate = rate.value;\n });\n watchEffect(() => {\n if (!document)\n return;\n const textTracks = toValue(options.tracks);\n const el = toValue(target);\n if (!textTracks || !textTracks.length || !el)\n return;\n el.querySelectorAll(\"track\").forEach((e) => e.remove());\n textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n const track = document.createElement(\"track\");\n track.default = isDefault || false;\n track.kind = kind;\n track.label = label;\n track.src = src;\n track.srclang = srcLang;\n if (track.default)\n selectedTrack.value = i;\n el.appendChild(track);\n });\n });\n const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n const el = toValue(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n const el = toValue(target);\n if (!el)\n return;\n if (isPlaying) {\n el.play().catch((e) => {\n playbackErrorEvent.trigger(e);\n throw e;\n });\n } else {\n el.pause();\n }\n });\n useEventListener(\n target,\n \"timeupdate\",\n () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime),\n listenerOptions\n );\n useEventListener(\n target,\n \"durationchange\",\n () => duration.value = toValue(target).duration,\n listenerOptions\n );\n useEventListener(\n target,\n \"progress\",\n () => buffered.value = timeRangeToArray(toValue(target).buffered),\n listenerOptions\n );\n useEventListener(\n target,\n \"seeking\",\n () => seeking.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"seeked\",\n () => seeking.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n [\"waiting\", \"loadstart\"],\n () => {\n waiting.value = true;\n ignorePlayingUpdates(() => playing.value = false);\n },\n listenerOptions\n );\n useEventListener(\n target,\n \"loadeddata\",\n () => waiting.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n \"playing\",\n () => {\n waiting.value = false;\n ended.value = false;\n ignorePlayingUpdates(() => playing.value = true);\n },\n listenerOptions\n );\n useEventListener(\n target,\n \"ratechange\",\n () => rate.value = toValue(target).playbackRate,\n listenerOptions\n );\n useEventListener(\n target,\n \"stalled\",\n () => stalled.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"ended\",\n () => ended.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"pause\",\n () => ignorePlayingUpdates(() => playing.value = false),\n listenerOptions\n );\n useEventListener(\n target,\n \"play\",\n () => ignorePlayingUpdates(() => playing.value = true),\n listenerOptions\n );\n useEventListener(\n target,\n \"enterpictureinpicture\",\n () => isPictureInPicture.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"leavepictureinpicture\",\n () => isPictureInPicture.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n \"volumechange\",\n () => {\n const el = toValue(target);\n if (!el)\n return;\n volume.value = el.volume;\n muted.value = el.muted;\n },\n listenerOptions\n );\n const listeners = [];\n const stop = watch([target], () => {\n const el = toValue(target);\n if (!el)\n return;\n stop();\n listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n });\n tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n return {\n currentTime,\n duration,\n waiting,\n seeking,\n ended,\n stalled,\n buffered,\n playing,\n rate,\n // Volume\n volume,\n muted,\n // Tracks\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n // Picture in Picture\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n // Events\n onSourceError: sourceErrorEvent.on,\n onPlaybackError: playbackErrorEvent.on\n };\n}\n\nfunction useMemoize(resolver, options) {\n const initCache = () => {\n if (options == null ? void 0 : options.cache)\n return shallowReactive(options.cache);\n return shallowReactive(/* @__PURE__ */ new Map());\n };\n const cache = initCache();\n const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n const _loadData = (key, ...args) => {\n cache.set(key, resolver(...args));\n return cache.get(key);\n };\n const loadData = (...args) => _loadData(generateKey(...args), ...args);\n const deleteData = (...args) => {\n cache.delete(generateKey(...args));\n };\n const clearData = () => {\n cache.clear();\n };\n const memoized = (...args) => {\n const key = generateKey(...args);\n if (cache.has(key))\n return cache.get(key);\n return _loadData(key, ...args);\n };\n memoized.load = loadData;\n memoized.delete = deleteData;\n memoized.clear = clearData;\n memoized.generateKey = generateKey;\n memoized.cache = cache;\n return memoized;\n}\n\nfunction useMemory(options = {}) {\n const memory = ref();\n const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n if (isSupported.value) {\n const { interval = 1e3 } = options;\n useIntervalFn(() => {\n memory.value = performance.memory;\n }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n }\n return { isSupported, memory };\n}\n\nconst UseMouseBuiltinExtractors = {\n page: (event) => [event.pageX, event.pageY],\n client: (event) => [event.clientX, event.clientY],\n screen: (event) => [event.screenX, event.screenY],\n movement: (event) => event instanceof MouseEvent ? [event.movementX, event.movementY] : null\n};\nfunction useMouse(options = {}) {\n const {\n type = \"page\",\n touch = true,\n resetOnTouchEnds = false,\n initialValue = { x: 0, y: 0 },\n window = defaultWindow,\n target = window,\n scroll = true,\n eventFilter\n } = options;\n let _prevMouseEvent = null;\n let _prevScrollX = 0;\n let _prevScrollY = 0;\n const x = shallowRef(initialValue.x);\n const y = shallowRef(initialValue.y);\n const sourceType = shallowRef(null);\n const extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n const mouseHandler = (event) => {\n const result = extractor(event);\n _prevMouseEvent = event;\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"mouse\";\n }\n if (window) {\n _prevScrollX = window.scrollX;\n _prevScrollY = window.scrollY;\n }\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const result = extractor(event.touches[0]);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"touch\";\n }\n }\n };\n const scrollHandler = () => {\n if (!_prevMouseEvent || !window)\n return;\n const pos = extractor(_prevMouseEvent);\n if (_prevMouseEvent instanceof MouseEvent && pos) {\n x.value = pos[0] + window.scrollX - _prevScrollX;\n y.value = pos[1] + window.scrollY - _prevScrollY;\n }\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n if (touch && type !== \"movement\") {\n useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n if (resetOnTouchEnds)\n useEventListener(target, \"touchend\", reset, listenerOptions);\n }\n if (scroll && type === \"page\")\n useEventListener(window, \"scroll\", scrollHandlerWrapper, listenerOptions);\n }\n return {\n x,\n y,\n sourceType\n };\n}\n\nfunction useMouseInElement(target, options = {}) {\n const {\n handleOutside = true,\n window = defaultWindow\n } = options;\n const type = options.type || \"page\";\n const { x, y, sourceType } = useMouse(options);\n const targetRef = shallowRef(target != null ? target : window == null ? void 0 : window.document.body);\n const elementX = shallowRef(0);\n const elementY = shallowRef(0);\n const elementPositionX = shallowRef(0);\n const elementPositionY = shallowRef(0);\n const elementHeight = shallowRef(0);\n const elementWidth = shallowRef(0);\n const isOutside = shallowRef(true);\n let stop = () => {\n };\n if (window) {\n stop = watch(\n [targetRef, x, y],\n () => {\n const el = unrefElement(targetRef);\n if (!el || !(el instanceof Element))\n return;\n const {\n left,\n top,\n width,\n height\n } = el.getBoundingClientRect();\n elementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n elementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n elementHeight.value = height;\n elementWidth.value = width;\n const elX = x.value - elementPositionX.value;\n const elY = y.value - elementPositionY.value;\n isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n },\n { immediate: true }\n );\n useEventListener(\n document,\n \"mouseleave\",\n () => isOutside.value = true,\n { passive: true }\n );\n }\n return {\n x,\n y,\n sourceType,\n elementX,\n elementY,\n elementPositionX,\n elementPositionY,\n elementHeight,\n elementWidth,\n isOutside,\n stop\n };\n}\n\nfunction useMousePressed(options = {}) {\n const {\n touch = true,\n drag = true,\n capture = false,\n initialValue = false,\n window = defaultWindow\n } = options;\n const pressed = shallowRef(initialValue);\n const sourceType = shallowRef(null);\n if (!window) {\n return {\n pressed,\n sourceType\n };\n }\n const onPressed = (srcType) => (event) => {\n var _a;\n pressed.value = true;\n sourceType.value = srcType;\n (_a = options.onPressed) == null ? void 0 : _a.call(options, event);\n };\n const onReleased = (event) => {\n var _a;\n pressed.value = false;\n sourceType.value = null;\n (_a = options.onReleased) == null ? void 0 : _a.call(options, event);\n };\n const target = computed(() => unrefElement(options.target) || window);\n const listenerOptions = { passive: true, capture };\n useEventListener(target, \"mousedown\", onPressed(\"mouse\"), listenerOptions);\n useEventListener(window, \"mouseleave\", onReleased, listenerOptions);\n useEventListener(window, \"mouseup\", onReleased, listenerOptions);\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), listenerOptions);\n useEventListener(window, \"drop\", onReleased, listenerOptions);\n useEventListener(window, \"dragend\", onReleased, listenerOptions);\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), listenerOptions);\n useEventListener(window, \"touchend\", onReleased, listenerOptions);\n useEventListener(window, \"touchcancel\", onReleased, listenerOptions);\n }\n return {\n pressed,\n sourceType\n };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"language\" in navigator);\n const language = shallowRef(navigator == null ? void 0 : navigator.language);\n useEventListener(window, \"languagechange\", () => {\n if (navigator)\n language.value = navigator.language;\n }, { passive: true });\n return {\n isSupported,\n language\n };\n}\n\nfunction useNetwork(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n const isOnline = shallowRef(true);\n const saveData = shallowRef(false);\n const offlineAt = shallowRef(void 0);\n const onlineAt = shallowRef(void 0);\n const downlink = shallowRef(void 0);\n const downlinkMax = shallowRef(void 0);\n const rtt = shallowRef(void 0);\n const effectiveType = shallowRef(void 0);\n const type = shallowRef(\"unknown\");\n const connection = isSupported.value && navigator.connection;\n function updateNetworkInformation() {\n if (!navigator)\n return;\n isOnline.value = navigator.onLine;\n offlineAt.value = isOnline.value ? void 0 : Date.now();\n onlineAt.value = isOnline.value ? Date.now() : void 0;\n if (connection) {\n downlink.value = connection.downlink;\n downlinkMax.value = connection.downlinkMax;\n effectiveType.value = connection.effectiveType;\n rtt.value = connection.rtt;\n saveData.value = connection.saveData;\n type.value = connection.type;\n }\n }\n const listenerOptions = { passive: true };\n if (window) {\n useEventListener(window, \"offline\", () => {\n isOnline.value = false;\n offlineAt.value = Date.now();\n }, listenerOptions);\n useEventListener(window, \"online\", () => {\n isOnline.value = true;\n onlineAt.value = Date.now();\n }, listenerOptions);\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, listenerOptions);\n updateNetworkInformation();\n return {\n isSupported,\n isOnline: readonly(isOnline),\n saveData: readonly(saveData),\n offlineAt: readonly(offlineAt),\n onlineAt: readonly(onlineAt),\n downlink: readonly(downlink),\n downlinkMax: readonly(downlinkMax),\n effectiveType: readonly(effectiveType),\n rtt: readonly(rtt),\n type: readonly(type)\n };\n}\n\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = ref(/* @__PURE__ */ new Date());\n const update = () => now.value = /* @__PURE__ */ new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return {\n now,\n ...controls\n };\n } else {\n return now;\n }\n}\n\nfunction useObjectUrl(object) {\n const url = shallowRef();\n const release = () => {\n if (url.value)\n URL.revokeObjectURL(url.value);\n url.value = void 0;\n };\n watch(\n () => toValue(object),\n (newObject) => {\n release();\n if (newObject)\n url.value = URL.createObjectURL(newObject);\n },\n { immediate: true }\n );\n tryOnScopeDispose(release);\n return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n if (typeof value === \"function\" || isReadonly(value))\n return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n const _value = ref(value);\n return computed({\n get() {\n return _value.value = clamp(_value.value, toValue(min), toValue(max));\n },\n set(value2) {\n _value.value = clamp(value2, toValue(min), toValue(max));\n }\n });\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = Number.POSITIVE_INFINITY,\n pageSize = 10,\n page = 1,\n onPageChange = noop,\n onPageSizeChange = noop,\n onPageCountChange = noop\n } = options;\n const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n const pageCount = computed(() => Math.max(\n 1,\n Math.ceil(toValue(total) / toValue(currentPageSize))\n ));\n const currentPage = useClamp(page, 1, pageCount);\n const isFirstPage = computed(() => currentPage.value === 1);\n const isLastPage = computed(() => currentPage.value === pageCount.value);\n if (isRef(page)) {\n syncRef(page, currentPage, {\n direction: isReadonly(page) ? \"ltr\" : \"both\"\n });\n }\n if (isRef(pageSize)) {\n syncRef(pageSize, currentPageSize, {\n direction: isReadonly(pageSize) ? \"ltr\" : \"both\"\n });\n }\n function prev() {\n currentPage.value--;\n }\n function next() {\n currentPage.value++;\n }\n const returnValue = {\n currentPage,\n currentPageSize,\n pageCount,\n isFirstPage,\n isLastPage,\n prev,\n next\n };\n watch(currentPage, () => {\n onPageChange(reactive(returnValue));\n });\n watch(currentPageSize, () => {\n onPageSizeChange(reactive(returnValue));\n });\n watch(pageCount, () => {\n onPageCountChange(reactive(returnValue));\n });\n return returnValue;\n}\n\nfunction useOnline(options = {}) {\n const { isOnline } = useNetwork(options);\n return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n const { window = defaultWindow } = options;\n const isLeft = shallowRef(false);\n const handler = (event) => {\n if (!window)\n return;\n event = event || window.event;\n const from = event.relatedTarget || event.toElement;\n isLeft.value = !from;\n };\n if (window) {\n const listenerOptions = { passive: true };\n useEventListener(window, \"mouseout\", handler, listenerOptions);\n useEventListener(window.document, \"mouseleave\", handler, listenerOptions);\n useEventListener(window.document, \"mouseenter\", handler, listenerOptions);\n }\n return isLeft;\n}\n\nfunction useScreenOrientation(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n const screenOrientation = isSupported.value ? window.screen.orientation : {};\n const orientation = ref(screenOrientation.type);\n const angle = shallowRef(screenOrientation.angle || 0);\n if (isSupported.value) {\n useEventListener(window, \"orientationchange\", () => {\n orientation.value = screenOrientation.type;\n angle.value = screenOrientation.angle;\n }, { passive: true });\n }\n const lockOrientation = (type) => {\n if (isSupported.value && typeof screenOrientation.lock === \"function\")\n return screenOrientation.lock(type);\n return Promise.reject(new Error(\"Not supported\"));\n };\n const unlockOrientation = () => {\n if (isSupported.value && typeof screenOrientation.unlock === \"function\")\n screenOrientation.unlock();\n };\n return {\n isSupported,\n orientation,\n angle,\n lockOrientation,\n unlockOrientation\n };\n}\n\nfunction useParallax(target, options = {}) {\n const {\n deviceOrientationTiltAdjust = (i) => i,\n deviceOrientationRollAdjust = (i) => i,\n mouseTiltAdjust = (i) => i,\n mouseRollAdjust = (i) => i,\n window = defaultWindow\n } = options;\n const orientation = reactive(useDeviceOrientation({ window }));\n const screenOrientation = reactive(useScreenOrientation({ window }));\n const {\n elementX: x,\n elementY: y,\n elementWidth: width,\n elementHeight: height\n } = useMouseInElement(target, { handleOutside: false, window });\n const source = computed(() => {\n if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) {\n return \"deviceOrientation\";\n }\n return \"mouse\";\n });\n const roll = computed(() => {\n if (source.value === \"deviceOrientation\") {\n let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.gamma / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.gamma / 90;\n break;\n case \"portrait-primary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-secondary\":\n value = orientation.beta / 90;\n break;\n default:\n value = -orientation.beta / 90;\n }\n return deviceOrientationRollAdjust(value);\n } else {\n const value = -(y.value - height.value / 2) / height.value;\n return mouseRollAdjust(value);\n }\n });\n const tilt = computed(() => {\n if (source.value === \"deviceOrientation\") {\n let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.beta / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-primary\":\n value = orientation.gamma / 90;\n break;\n case \"portrait-secondary\":\n value = -orientation.gamma / 90;\n break;\n default:\n value = orientation.gamma / 90;\n }\n return deviceOrientationTiltAdjust(value);\n } else {\n const value = (x.value - width.value / 2) / width.value;\n return mouseTiltAdjust(value);\n }\n });\n return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n const parentElement = shallowRef();\n const update = () => {\n const el = unrefElement(element);\n if (el)\n parentElement.value = el.parentElement;\n };\n tryOnMounted(update);\n watch(() => toValue(element), update);\n return parentElement;\n}\n\nfunction usePerformanceObserver(options, callback) {\n const {\n window = defaultWindow,\n immediate = true,\n ...performanceOptions\n } = options;\n const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n let observer;\n const stop = () => {\n observer == null ? void 0 : observer.disconnect();\n };\n const start = () => {\n if (isSupported.value) {\n stop();\n observer = new PerformanceObserver(callback);\n observer.observe(performanceOptions);\n }\n };\n tryOnScopeDispose(stop);\n if (immediate)\n start();\n return {\n isSupported,\n start,\n stop\n };\n}\n\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = shallowRef(false);\n const state = ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = objectPick(event, keys, false);\n };\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n }\n return {\n ...toRefs(state),\n isInside\n };\n}\n\nfunction usePointerLock(target, options = {}) {\n const { document = defaultDocument } = options;\n const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n const element = shallowRef();\n const triggerElement = shallowRef();\n let targetElement;\n if (isSupported.value) {\n const listenerOptions = { passive: true };\n useEventListener(document, \"pointerlockchange\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n element.value = document.pointerLockElement;\n if (!element.value)\n targetElement = triggerElement.value = null;\n }\n }, listenerOptions);\n useEventListener(document, \"pointerlockerror\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n const action = document.pointerLockElement ? \"release\" : \"acquire\";\n throw new Error(`Failed to ${action} pointer lock.`);\n }\n }, listenerOptions);\n }\n async function lock(e) {\n var _a;\n if (!isSupported.value)\n throw new Error(\"Pointer Lock API is not supported by your browser.\");\n triggerElement.value = e instanceof Event ? e.currentTarget : null;\n targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n if (!targetElement)\n throw new Error(\"Target element undefined.\");\n targetElement.requestPointerLock();\n return await until(element).toBe(targetElement);\n }\n async function unlock() {\n if (!element.value)\n return false;\n document.exitPointerLock();\n await until(element).toBeNull();\n return true;\n }\n return {\n isSupported,\n element,\n triggerElement,\n lock,\n unlock\n };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n const targetRef = toRef(target);\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n disableTextSelect = false\n } = options;\n const posStart = reactive({ x: 0, y: 0 });\n const updatePosStart = (x, y) => {\n posStart.x = x;\n posStart.y = y;\n };\n const posEnd = reactive({ x: 0, y: 0 });\n const updatePosEnd = (x, y) => {\n posEnd.x = x;\n posEnd.y = y;\n };\n const distanceX = computed(() => posStart.x - posEnd.x);\n const distanceY = computed(() => posStart.y - posEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n const isSwiping = shallowRef(false);\n const isPointerDown = shallowRef(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? \"left\" : \"right\";\n } else {\n return distanceY.value > 0 ? \"up\" : \"down\";\n }\n });\n const eventIsAllowed = (e) => {\n var _a, _b, _c;\n const isReleasingButton = e.buttons === 0;\n const isPrimaryButton = e.buttons === 1;\n return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n };\n const listenerOptions = { passive: true };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n if (!eventIsAllowed(e))\n return;\n isPointerDown.value = true;\n const eventTarget = e.target;\n eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n const { clientX: x, clientY: y } = e;\n updatePosStart(x, y);\n updatePosEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"pointermove\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (!isPointerDown.value)\n return;\n const { clientX: x, clientY: y } = e;\n updatePosEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, \"pointerup\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isPointerDown.value = false;\n isSwiping.value = false;\n }, listenerOptions)\n ];\n tryOnMounted(() => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n if (disableTextSelect) {\n (_d = (_c = targetRef.value) == null ? void 0 : _c.style) == null ? void 0 : _d.setProperty(\"-webkit-user-select\", \"none\");\n (_f = (_e = targetRef.value) == null ? void 0 : _e.style) == null ? void 0 : _f.setProperty(\"-ms-user-select\", \"none\");\n (_h = (_g = targetRef.value) == null ? void 0 : _g.style) == null ? void 0 : _h.setProperty(\"user-select\", \"none\");\n }\n });\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping: readonly(isSwiping),\n direction: readonly(direction),\n posStart: readonly(posStart),\n posEnd: readonly(posEnd),\n distanceX,\n distanceY,\n stop\n };\n}\n\nfunction usePreferredColorScheme(options) {\n const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n return computed(() => {\n if (isDark.value)\n return \"dark\";\n if (isLight.value)\n return \"light\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredContrast(options) {\n const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n return computed(() => {\n if (isMore.value)\n return \"more\";\n if (isLess.value)\n return \"less\";\n if (isCustom.value)\n return \"custom\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredLanguages(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref([\"en\"]);\n const navigator = window.navigator;\n const value = ref(navigator.languages);\n useEventListener(window, \"languagechange\", () => {\n value.value = navigator.languages;\n }, { passive: true });\n return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredReducedTransparency(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-transparency: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePrevious(value, initialValue) {\n const previous = shallowRef(initialValue);\n watch(\n toRef(value),\n (_, oldValue) => {\n previous.value = oldValue;\n },\n { flush: \"sync\" }\n );\n return readonly(previous);\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = shallowRef(\"\");\n const right = shallowRef(\"\");\n const bottom = shallowRef(\"\");\n const left = shallowRef(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update), { passive: true });\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n const {\n immediate = true,\n manual = false,\n type = \"text/javascript\",\n async = true,\n crossOrigin,\n referrerPolicy,\n noModule,\n defer,\n document = defaultDocument,\n attrs = {}\n } = options;\n const scriptTag = shallowRef(null);\n let _promise = null;\n const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n const resolveWithElement = (el2) => {\n scriptTag.value = el2;\n resolve(el2);\n return el2;\n };\n if (!document) {\n resolve(false);\n return;\n }\n let shouldAppend = false;\n let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = toValue(src);\n if (defer)\n el.defer = defer;\n if (crossOrigin)\n el.crossOrigin = crossOrigin;\n if (noModule)\n el.noModule = noModule;\n if (referrerPolicy)\n el.referrerPolicy = referrerPolicy;\n Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n shouldAppend = true;\n } else if (el.hasAttribute(\"data-loaded\")) {\n resolveWithElement(el);\n }\n const listenerOptions = {\n passive: true\n };\n useEventListener(el, \"error\", (event) => reject(event), listenerOptions);\n useEventListener(el, \"abort\", (event) => reject(event), listenerOptions);\n useEventListener(el, \"load\", () => {\n el.setAttribute(\"data-loaded\", \"true\");\n onLoaded(el);\n resolveWithElement(el);\n }, listenerOptions);\n if (shouldAppend)\n el = document.head.appendChild(el);\n if (!waitForScriptLoad)\n resolveWithElement(el);\n });\n const load = (waitForScriptLoad = true) => {\n if (!_promise)\n _promise = loadScript(waitForScriptLoad);\n return _promise;\n };\n const unload = () => {\n if (!document)\n return;\n _promise = null;\n if (scriptTag.value)\n scriptTag.value = null;\n const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (el)\n document.head.removeChild(el);\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnUnmounted(unload);\n return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n const isLocked = shallowRef(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow = \"\";\n watch(toRef(element), (el) => {\n const target = resolveElement(toValue(el));\n if (target) {\n const ele = target;\n if (!elInitialOverflow.get(ele))\n elInitialOverflow.set(ele, ele.style.overflow);\n if (ele.style.overflow !== \"hidden\")\n initialOverflow = ele.style.overflow;\n if (ele.style.overflow === \"hidden\")\n return isLocked.value = true;\n if (isLocked.value)\n return ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const el = resolveElement(toValue(element));\n if (!el || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n el,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n el.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const el = resolveElement(toValue(element));\n if (!el || !isLocked.value)\n return;\n if (isIOS)\n stopTouchMoveListener == null ? void 0 : stopTouchMoveListener();\n el.style.overflow = initialOverflow;\n elInitialOverflow.delete(el);\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else unlock();\n }\n });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n const share = async (overrideOptions = {}) => {\n if (isSupported.value) {\n const data = {\n ...toValue(shareOptions),\n ...toValue(overrideOptions)\n };\n let granted = true;\n if (data.files && _navigator.canShare)\n granted = _navigator.canShare({ files: data.files });\n if (granted)\n return _navigator.share(data);\n }\n };\n return {\n isSupported,\n share\n };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n var _a, _b, _c, _d;\n const [source] = args;\n let compareFn = defaultCompare;\n let options = {};\n if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n options = args[1];\n compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n } else {\n compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n }\n } else if (args.length > 2) {\n compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n options = (_d = args[2]) != null ? _d : {};\n }\n const {\n dirty = false,\n sortFn = defaultSortFn\n } = options;\n if (!dirty)\n return computed(() => sortFn([...toValue(source)], compareFn));\n watchEffect(() => {\n const result = sortFn(toValue(source), compareFn);\n if (isRef(source))\n source.value = result;\n else\n source.splice(0, source.length, ...result);\n });\n return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n maxAlternatives = 1,\n window = defaultWindow\n } = options;\n const lang = toRef(options.lang || \"en-US\");\n const isListening = shallowRef(false);\n const isFinal = shallowRef(false);\n const result = shallowRef(\"\");\n const error = shallowRef(void 0);\n let recognition;\n const start = () => {\n isListening.value = true;\n };\n const stop = () => {\n isListening.value = false;\n };\n const toggle = (value = !isListening.value) => {\n if (value) {\n start();\n } else {\n stop();\n }\n };\n const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n const isSupported = useSupported(() => SpeechRecognition);\n if (isSupported.value) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = toValue(lang);\n recognition.maxAlternatives = maxAlternatives;\n recognition.onstart = () => {\n isListening.value = true;\n isFinal.value = false;\n };\n watch(lang, (lang2) => {\n if (recognition && !isListening.value)\n recognition.lang = lang2;\n });\n recognition.onresult = (event) => {\n const currentResult = event.results[event.resultIndex];\n const { transcript } = currentResult[0];\n isFinal.value = currentResult.isFinal;\n result.value = transcript;\n error.value = void 0;\n };\n recognition.onerror = (event) => {\n error.value = event;\n };\n recognition.onend = () => {\n isListening.value = false;\n recognition.lang = toValue(lang);\n };\n watch(isListening, (newValue, oldValue) => {\n if (newValue === oldValue)\n return;\n if (newValue)\n recognition.start();\n else\n recognition.stop();\n });\n }\n tryOnScopeDispose(() => {\n stop();\n });\n return {\n isSupported,\n isListening,\n isFinal,\n recognition,\n result,\n error,\n toggle,\n start,\n stop\n };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n const {\n pitch = 1,\n rate = 1,\n volume = 1,\n window = defaultWindow\n } = options;\n const synth = window && window.speechSynthesis;\n const isSupported = useSupported(() => synth);\n const isPlaying = shallowRef(false);\n const status = shallowRef(\"init\");\n const spokenText = toRef(text || \"\");\n const lang = toRef(options.lang || \"en-US\");\n const error = shallowRef(void 0);\n const toggle = (value = !isPlaying.value) => {\n isPlaying.value = value;\n };\n const bindEventsForUtterance = (utterance2) => {\n utterance2.lang = toValue(lang);\n utterance2.voice = toValue(options.voice) || null;\n utterance2.pitch = toValue(pitch);\n utterance2.rate = toValue(rate);\n utterance2.volume = volume;\n utterance2.onstart = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onpause = () => {\n isPlaying.value = false;\n status.value = \"pause\";\n };\n utterance2.onresume = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onend = () => {\n isPlaying.value = false;\n status.value = \"end\";\n };\n utterance2.onerror = (event) => {\n error.value = event;\n };\n };\n const utterance = computed(() => {\n isPlaying.value = false;\n status.value = \"init\";\n const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n bindEventsForUtterance(newUtterance);\n return newUtterance;\n });\n const speak = () => {\n synth.cancel();\n if (utterance)\n synth.speak(utterance.value);\n };\n const stop = () => {\n synth.cancel();\n isPlaying.value = false;\n };\n if (isSupported.value) {\n bindEventsForUtterance(utterance.value);\n watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\n });\n if (options.voice) {\n watch(options.voice, () => {\n synth.cancel();\n });\n }\n watch(isPlaying, () => {\n if (isPlaying.value)\n synth.resume();\n else\n synth.pause();\n });\n }\n tryOnScopeDispose(() => {\n isPlaying.value = false;\n });\n return {\n isSupported,\n isPlaying,\n status,\n utterance,\n error,\n stop,\n toggle,\n speak\n };\n}\n\nfunction useStepper(steps, initialStep) {\n const stepsRef = ref(steps);\n const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n const current = computed(() => at(index.value));\n const isFirst = computed(() => index.value === 0);\n const isLast = computed(() => index.value === stepNames.value.length - 1);\n const next = computed(() => stepNames.value[index.value + 1]);\n const previous = computed(() => stepNames.value[index.value - 1]);\n function at(index2) {\n if (Array.isArray(stepsRef.value))\n return stepsRef.value[index2];\n return stepsRef.value[stepNames.value[index2]];\n }\n function get(step) {\n if (!stepNames.value.includes(step))\n return;\n return at(stepNames.value.indexOf(step));\n }\n function goTo(step) {\n if (stepNames.value.includes(step))\n index.value = stepNames.value.indexOf(step);\n }\n function goToNext() {\n if (isLast.value)\n return;\n index.value++;\n }\n function goToPrevious() {\n if (isFirst.value)\n return;\n index.value--;\n }\n function goBackTo(step) {\n if (isAfter(step))\n goTo(step);\n }\n function isNext(step) {\n return stepNames.value.indexOf(step) === index.value + 1;\n }\n function isPrevious(step) {\n return stepNames.value.indexOf(step) === index.value - 1;\n }\n function isCurrent(step) {\n return stepNames.value.indexOf(step) === index.value;\n }\n function isBefore(step) {\n return index.value < stepNames.value.indexOf(step);\n }\n function isAfter(step) {\n return index.value > stepNames.value.indexOf(step);\n }\n return {\n steps: stepsRef,\n stepNames,\n index,\n current,\n next,\n previous,\n isFirst,\n isLast,\n at,\n get,\n goTo,\n goToNext,\n goToPrevious,\n goBackTo,\n isNext,\n isPrevious,\n isCurrent,\n isBefore,\n isAfter\n };\n}\n\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = toValue(initialValue);\n const type = guessSerializerType(rawInit);\n const data = (shallow ? shallowRef : ref)(toValue(initialValue));\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorageAsync\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n async function read(event) {\n if (!storage || event && event.key !== key)\n return;\n try {\n const rawValue = event ? event.newValue : await storage.getItem(key);\n if (rawValue == null) {\n data.value = rawInit;\n if (writeDefaults && rawInit !== null)\n await storage.setItem(key, await serializer.write(rawInit));\n } else if (mergeDefaults) {\n const value = await serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n data.value = mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n data.value = { ...rawInit, ...value };\n else data.value = value;\n } else {\n data.value = await serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n }\n }\n read();\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)), { passive: true });\n if (storage) {\n watchWithFilter(\n data,\n async () => {\n try {\n if (data.value == null)\n await storage.removeItem(key);\n else\n await storage.setItem(key, await serializer.write(data.value));\n } catch (e) {\n onError(e);\n }\n },\n {\n flush,\n deep,\n eventFilter\n }\n );\n }\n return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n const isLoaded = shallowRef(false);\n const {\n document = defaultDocument,\n immediate = true,\n manual = false,\n id = `vueuse_styletag_${++_id}`\n } = options;\n const cssRef = shallowRef(css);\n let stop = () => {\n };\n const load = () => {\n if (!document)\n return;\n const el = document.getElementById(id) || document.createElement(\"style\");\n if (!el.isConnected) {\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n }\n if (isLoaded.value)\n return;\n stop = watch(\n cssRef,\n (value) => {\n el.textContent = value;\n },\n { immediate: true }\n );\n isLoaded.value = true;\n };\n const unload = () => {\n if (!document || !isLoaded.value)\n return;\n stop();\n document.head.removeChild(document.getElementById(id));\n isLoaded.value = false;\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnScopeDispose(unload);\n return {\n id,\n css: cssRef,\n unload,\n load,\n isLoaded: readonly(isLoaded)\n };\n}\n\nfunction useSwipe(target, options = {}) {\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n passive = true\n } = options;\n const coordsStart = reactive({ x: 0, y: 0 });\n const coordsEnd = reactive({ x: 0, y: 0 });\n const diffX = computed(() => coordsStart.x - coordsEnd.x);\n const diffY = computed(() => coordsStart.y - coordsEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n const isSwiping = shallowRef(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? \"left\" : \"right\";\n } else {\n return diffY.value > 0 ? \"up\" : \"down\";\n }\n });\n const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x;\n coordsStart.y = y;\n };\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x;\n coordsEnd.y = y;\n };\n const listenerOptions = { passive, capture: !passive };\n const onTouchEnd = (e) => {\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isSwiping.value = false;\n };\n const stops = [\n useEventListener(target, \"touchstart\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsStart(x, y);\n updateCoordsEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"touchmove\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsEnd(x, y);\n if (listenerOptions.capture && !listenerOptions.passive && Math.abs(diffX.value) > Math.abs(diffY.value))\n e.preventDefault();\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop,\n // TODO: Remove in the next major version\n isPassiveEventSupported: true\n };\n}\n\nfunction useTemplateRefsList() {\n const refs = ref([]);\n refs.value.set = (el) => {\n if (el)\n refs.value.push(el);\n };\n onBeforeUpdate(() => {\n refs.value.length = 0;\n });\n return refs;\n}\n\nfunction useTextDirection(options = {}) {\n const {\n document = defaultDocument,\n selector = \"html\",\n observe = false,\n initialValue = \"ltr\"\n } = options;\n function getValue() {\n var _a, _b;\n return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n }\n const dir = ref(getValue());\n tryOnMounted(() => dir.value = getValue());\n if (observe && document) {\n useMutationObserver(\n document.querySelector(selector),\n () => dir.value = getValue(),\n { attributes: true }\n );\n }\n return computed({\n get() {\n return dir.value;\n },\n set(v) {\n var _a, _b;\n dir.value = v;\n if (!document)\n return;\n if (dir.value)\n (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n else\n (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n }\n });\n}\n\nfunction getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const selection = ref(null);\n const text = computed(() => {\n var _a, _b;\n return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n });\n const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n function onSelectionChange() {\n selection.value = null;\n if (window)\n selection.value = window.getSelection();\n }\n if (window)\n useEventListener(window.document, \"selectionchange\", onSelectionChange, { passive: true });\n return {\n text,\n rects,\n ranges,\n selection\n };\n}\n\nfunction tryRequestAnimationFrame(window = defaultWindow, fn) {\n if (window && typeof window.requestAnimationFrame === \"function\") {\n window.requestAnimationFrame(fn);\n } else {\n fn();\n }\n}\nfunction useTextareaAutosize(options = {}) {\n var _a, _b;\n const { window = defaultWindow } = options;\n const textarea = toRef(options == null ? void 0 : options.element);\n const input = toRef((_a = options == null ? void 0 : options.input) != null ? _a : \"\");\n const styleProp = (_b = options == null ? void 0 : options.styleProp) != null ? _b : \"height\";\n const textareaScrollHeight = shallowRef(1);\n const textareaOldWidth = shallowRef(0);\n function triggerResize() {\n var _a2;\n if (!textarea.value)\n return;\n let height = \"\";\n textarea.value.style[styleProp] = \"1px\";\n textareaScrollHeight.value = (_a2 = textarea.value) == null ? void 0 : _a2.scrollHeight;\n const _styleTarget = toValue(options == null ? void 0 : options.styleTarget);\n if (_styleTarget)\n _styleTarget.style[styleProp] = `${textareaScrollHeight.value}px`;\n else\n height = `${textareaScrollHeight.value}px`;\n textarea.value.style[styleProp] = height;\n }\n watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n watch(textareaScrollHeight, () => {\n var _a2;\n return (_a2 = options == null ? void 0 : options.onResize) == null ? void 0 : _a2.call(options);\n });\n useResizeObserver(textarea, ([{ contentRect }]) => {\n if (textareaOldWidth.value === contentRect.width)\n return;\n tryRequestAnimationFrame(window, () => {\n textareaOldWidth.value = contentRect.width;\n triggerResize();\n });\n });\n if (options == null ? void 0 : options.watch)\n watch(options.watch, triggerResize, { immediate: true, deep: true });\n return {\n textarea,\n input,\n triggerResize\n };\n}\n\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = throttleFilter(throttle, trailing);\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nconst DEFAULT_UNITS = [\n { max: 6e4, value: 1e3, name: \"second\" },\n { max: 276e4, value: 6e4, name: \"minute\" },\n { max: 72e6, value: 36e5, name: \"hour\" },\n { max: 5184e5, value: 864e5, name: \"day\" },\n { max: 24192e5, value: 6048e5, name: \"week\" },\n { max: 28512e6, value: 2592e6, name: \"month\" },\n { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n justNow: \"just now\",\n past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n updateInterval = 3e4\n } = options;\n const { now, ...controls } = useNow({ interval: updateInterval, controls: true });\n const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n if (exposeControls) {\n return {\n timeAgo,\n ...controls\n };\n } else {\n return timeAgo;\n }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n var _a;\n const {\n max,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER,\n units = DEFAULT_UNITS,\n showSecond = false,\n rounding = \"round\"\n } = options;\n const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n const diff = +now - +from;\n const absDiff = Math.abs(diff);\n function getValue(diff2, unit) {\n return roundFn(Math.abs(diff2) / unit.value);\n }\n function format(diff2, unit) {\n const val = getValue(diff2, unit);\n const past = diff2 > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n function applyFormat(name, val, isPast) {\n const formatter = messages[name];\n if (typeof formatter === \"function\")\n return formatter(val, isPast);\n return formatter.replace(\"{0}\", val.toString());\n }\n if (absDiff < 6e4 && !showSecond)\n return messages.justNow;\n if (typeof max === \"number\" && absDiff > max)\n return fullDateFormatter(new Date(from));\n if (typeof max === \"string\") {\n const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const [idx, unit] of units.entries()) {\n const val = getValue(diff, unit);\n if (val <= 0 && units[idx - 1])\n return format(diff, units[idx - 1]);\n if (absDiff < unit.max)\n return format(diff, unit);\n }\n return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n const { start } = useTimeoutFn(loop, interval, { immediate });\n const isActive = shallowRef(false);\n async function loop() {\n if (!isActive.value)\n return;\n await fn();\n start();\n }\n function resume() {\n if (!isActive.value) {\n isActive.value = true;\n if (immediateCallback)\n fn();\n start();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (immediate && isClient)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\",\n callback\n } = options;\n const ts = shallowRef(timestamp() + offset);\n const update = () => ts.value = timestamp() + offset;\n const cb = callback ? () => {\n update();\n callback(ts.value);\n } : update;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n if (exposeControls) {\n return {\n timestamp: ts,\n ...controls\n };\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b, _c;\n const {\n document = defaultDocument,\n restoreOnUnmount = (t) => t\n } = options;\n const originalTitle = (_a = document == null ? void 0 : document.title) != null ? _a : \"\";\n const title = toRef((_b = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _b : null);\n const isReadonly = !!(newTitle && typeof newTitle === \"function\");\n function format(t) {\n if (!(\"titleTemplate\" in options))\n return t;\n const template = options.titleTemplate || \"%s\";\n return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n }\n watch(\n title,\n (newValue, oldValue) => {\n if (newValue !== oldValue && document)\n document.title = format(newValue != null ? newValue : \"\");\n },\n { immediate: true }\n );\n if (options.observe && !options.titleTemplate && document && !isReadonly) {\n useMutationObserver(\n (_c = document.head) == null ? void 0 : _c.querySelector(\"title\"),\n () => {\n if (document && document.title !== title.value)\n title.value = format(document.title);\n },\n { childList: true }\n );\n }\n tryOnScopeDispose(() => {\n if (restoreOnUnmount) {\n const restoredTitle = restoreOnUnmount(originalTitle, title.value || \"\");\n if (restoredTitle != null && document)\n document.title = restoredTitle;\n }\n });\n return title;\n}\n\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n const b = (a1, a2) => 3 * a2 - 6 * a1;\n const c = (a1) => 3 * a1;\n const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n const getTforX = (x) => {\n let aGuessT = x;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, p0, p2);\n if (currentSlope === 0)\n return aGuessT;\n const currentX = calcBezier(aGuessT, p0, p2) - x;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n };\n return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n return a + alpha * (b - a);\n}\nfunction toVec(t) {\n return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n var _a, _b;\n const fromVal = toValue(from);\n const toVal = toValue(to);\n const v1 = toVec(fromVal);\n const v2 = toVec(toVal);\n const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n const startedAt = Date.now();\n const endAt = Date.now() + duration;\n const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n return new Promise((resolve) => {\n source.value = fromVal;\n const tick = () => {\n var _a2;\n if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n resolve();\n return;\n }\n const now = Date.now();\n const alpha = ease((now - startedAt) / duration);\n const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n if (Array.isArray(source.value))\n source.value = arr.map((n, i) => {\n var _a3, _b2;\n return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n });\n else if (typeof source.value === \"number\")\n source.value = arr[0];\n if (now < endAt) {\n requestAnimationFrame(tick);\n } else {\n source.value = toVal;\n resolve();\n }\n };\n tick();\n });\n}\nfunction useTransition(source, options = {}) {\n let currentId = 0;\n const sourceVal = () => {\n const v = toValue(source);\n return typeof v === \"number\" ? v : v.map(toValue);\n };\n const outputRef = ref(sourceVal());\n watch(sourceVal, async (to) => {\n var _a, _b;\n if (toValue(options.disabled))\n return;\n const id = ++currentId;\n if (options.delay)\n await promiseTimeout(toValue(options.delay));\n if (id !== currentId)\n return;\n const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n (_a = options.onStarted) == null ? void 0 : _a.call(options);\n await executeTransition(outputRef, outputRef.value, toVal, {\n ...options,\n abort: () => {\n var _a2;\n return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n }\n });\n (_b = options.onFinished) == null ? void 0 : _b.call(options);\n }, { deep: true });\n watch(() => toValue(options.disabled), (disabled) => {\n if (disabled) {\n currentId++;\n outputRef.value = sourceVal();\n }\n });\n tryOnScopeDispose(() => {\n currentId++;\n });\n return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n write: enableWrite = true,\n writeMode = \"replace\",\n window = defaultWindow\n } = options;\n if (!window)\n return reactive(initialValue);\n const state = reactive({});\n function getRawParams() {\n if (mode === \"history\") {\n return window.location.search || \"\";\n } else if (mode === \"hash\") {\n const hash = window.location.hash || \"\";\n const index = hash.indexOf(\"?\");\n return index > 0 ? hash.slice(index) : \"\";\n } else {\n return (window.location.hash || \"\").replace(/^#/, \"\");\n }\n }\n function constructQuery(params) {\n const stringified = params.toString();\n if (mode === \"history\")\n return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n const hash = window.location.hash || \"#\";\n const index = hash.indexOf(\"?\");\n if (index > 0)\n return `${window.location.search || \"\"}${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n return `${window.location.search || \"\"}${hash}${stringified ? `?${stringified}` : \"\"}`;\n }\n function read() {\n return new URLSearchParams(getRawParams());\n }\n function updateState(params) {\n const unusedKeys = new Set(Object.keys(state));\n for (const key of params.keys()) {\n const paramsForKey = params.getAll(key);\n state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n unusedKeys.delete(key);\n }\n Array.from(unusedKeys).forEach((key) => delete state[key]);\n }\n const { pause, resume } = pausableWatch(\n state,\n () => {\n const params = new URLSearchParams(\"\");\n Object.keys(state).forEach((key) => {\n const mapEntry = state[key];\n if (Array.isArray(mapEntry))\n mapEntry.forEach((value) => params.append(key, value));\n else if (removeNullishValues && mapEntry == null)\n params.delete(key);\n else if (removeFalsyValues && !mapEntry)\n params.delete(key);\n else\n params.set(key, mapEntry);\n });\n write(params, false);\n },\n { deep: true }\n );\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n if (writeMode === \"replace\") {\n window.history.replaceState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n } else {\n window.history.pushState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n }\n resume();\n }\n function onChanged() {\n if (!enableWrite)\n return;\n write(read(), true);\n }\n const listenerOptions = { passive: true };\n useEventListener(window, \"popstate\", onChanged, listenerOptions);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, listenerOptions);\n const initial = read();\n if (initial.keys().next().value)\n updateState(initial);\n else\n Object.assign(state, initialValue);\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b;\n const enabled = shallowRef((_a = options.enabled) != null ? _a : false);\n const autoSwitch = shallowRef((_b = options.autoSwitch) != null ? _b : true);\n const constraints = ref(options.constraints);\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n });\n const stream = shallowRef();\n function getDeviceOptions(type) {\n switch (type) {\n case \"video\": {\n if (constraints.value)\n return constraints.value.video || false;\n break;\n }\n case \"audio\": {\n if (constraints.value)\n return constraints.value.audio || false;\n break;\n }\n }\n }\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(\"video\"),\n audio: getDeviceOptions(\"audio\")\n });\n return stream.value;\n }\n function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n async function restart() {\n _stop();\n return await start();\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else _stop();\n },\n { immediate: true }\n );\n watch(\n constraints,\n () => {\n if (autoSwitch.value && stream.value)\n restart();\n },\n { immediate: true }\n );\n tryOnScopeDispose(() => {\n stop();\n });\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n constraints,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n key = \"modelValue\";\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n let isUpdating = false;\n watch(\n () => props[key],\n (v) => {\n if (!isUpdating) {\n isUpdating = true;\n proxy.value = cloneFn(v);\n nextTick(() => isUpdating = false);\n }\n }\n );\n watch(\n proxy,\n (v) => {\n if (!isUpdating && (v !== props[key] || deep))\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props) {\n ret[key] = useVModel(\n props,\n key,\n emit,\n options\n );\n }\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n const patternRef = toRef(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported.value)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported.value)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = useIntervalFn(\n vibrate,\n interval,\n {\n immediate: false,\n immediateCallback: false\n }\n );\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n return {\n list: currentList,\n scrollTo,\n containerProps: {\n ref: containerRef,\n onScroll: () => {\n calculateRange();\n },\n style: containerStyle\n },\n wrapperProps\n };\n}\nfunction useVirtualListResources(list) {\n const containerRef = shallowRef(null);\n const size = useElementSize(containerRef);\n const currentList = ref([]);\n const source = shallowRef(list);\n const state = ref({ start: 0, end: 10 });\n return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n return (containerSize) => {\n if (typeof itemSize === \"number\")\n return Math.ceil(containerSize / itemSize);\n const { start = 0 } = state.value;\n let sum = 0;\n let capacity = 0;\n for (let i = start; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n capacity = i;\n if (sum > containerSize)\n break;\n }\n return capacity - start;\n };\n}\nfunction createGetOffset(source, itemSize) {\n return (scrollDirection) => {\n if (typeof itemSize === \"number\")\n return Math.floor(scrollDirection / itemSize) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n if (sum >= scrollDirection) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n return () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n const from = offset - overscan;\n const to = offset + viewCapacity + overscan;\n state.value = {\n start: from < 0 ? 0 : from,\n end: to > source.value.length ? source.value.length : to\n };\n currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n data: ele,\n index: index + state.value.start\n }));\n }\n };\n}\nfunction createGetDistance(itemSize, source) {\n return (index) => {\n if (typeof itemSize === \"number\") {\n const size2 = index * itemSize;\n return size2;\n }\n const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n return size;\n };\n}\nfunction useWatchForSizes(size, list, containerRef, calculateRange) {\n watch([size.width, size.height, list, containerRef], () => {\n calculateRange();\n });\n}\nfunction createComputedTotalSize(itemSize, source) {\n return computed(() => {\n if (typeof itemSize === \"number\")\n return source.value.length * itemSize;\n return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n });\n}\nconst scrollToDictionaryForElementScrollKey = {\n horizontal: \"scrollLeft\",\n vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n return (index) => {\n if (containerRef.value) {\n containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n calculateRange();\n }\n };\n}\nfunction useHorizontalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowX: \"auto\" };\n const { itemWidth, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n const getOffset = createGetOffset(source, itemWidth);\n const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceLeft = createGetDistance(itemWidth, source);\n const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n const totalWidth = createComputedTotalSize(itemWidth, source);\n useWatchForSizes(size, list, containerRef, calculateRange);\n const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n height: \"100%\",\n width: `${totalWidth.value - offsetLeft.value}px`,\n marginLeft: `${offsetLeft.value}px`,\n display: \"flex\"\n }\n };\n });\n return {\n scrollTo,\n calculateRange,\n wrapperProps,\n containerStyle,\n currentList,\n containerRef\n };\n}\nfunction useVerticalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowY: \"auto\" };\n const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n const getOffset = createGetOffset(source, itemHeight);\n const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceTop = createGetDistance(itemHeight, source);\n const offsetTop = computed(() => getDistanceTop(state.value.start));\n const totalHeight = createComputedTotalSize(itemHeight, source);\n useWatchForSizes(size, list, containerRef, calculateRange);\n const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n width: \"100%\",\n height: `${totalHeight.value - offsetTop.value}px`,\n marginTop: `${offsetTop.value}px`\n }\n };\n });\n return {\n calculateRange,\n scrollTo,\n containerStyle,\n wrapperProps,\n currentList,\n containerRef\n };\n}\n\nfunction useWakeLock(options = {}) {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n const requestedType = shallowRef(false);\n const sentinel = shallowRef(null);\n const documentVisibility = useDocumentVisibility({ document });\n const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n const isActive = computed(() => !!sentinel.value && documentVisibility.value === \"visible\");\n if (isSupported.value) {\n useEventListener(sentinel, \"release\", () => {\n var _a, _b;\n requestedType.value = (_b = (_a = sentinel.value) == null ? void 0 : _a.type) != null ? _b : false;\n }, { passive: true });\n whenever(\n () => documentVisibility.value === \"visible\" && (document == null ? void 0 : document.visibilityState) === \"visible\" && requestedType.value,\n (type) => {\n requestedType.value = false;\n forceRequest(type);\n }\n );\n }\n async function forceRequest(type) {\n var _a;\n await ((_a = sentinel.value) == null ? void 0 : _a.release());\n sentinel.value = isSupported.value ? await navigator.wakeLock.request(type) : null;\n }\n async function request(type) {\n if (documentVisibility.value === \"visible\")\n await forceRequest(type);\n else\n requestedType.value = type;\n }\n async function release() {\n requestedType.value = false;\n const s = sentinel.value;\n sentinel.value = null;\n await (s == null ? void 0 : s.release());\n }\n return {\n sentinel,\n isSupported,\n isActive,\n request,\n forceRequest,\n release\n };\n}\n\nfunction useWebNotification(options = {}) {\n const {\n window = defaultWindow,\n requestPermissions: _requestForPermissions = true\n } = options;\n const defaultWebNotificationOptions = options;\n const isSupported = useSupported(() => {\n if (!window || !(\"Notification\" in window))\n return false;\n if (Notification.permission === \"granted\")\n return true;\n try {\n const notification2 = new Notification(\"\");\n notification2.onshow = () => {\n notification2.close();\n };\n } catch (e) {\n if (e.name === \"TypeError\")\n return false;\n }\n return true;\n });\n const permissionGranted = shallowRef(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n const notification = ref(null);\n const ensurePermissions = async () => {\n if (!isSupported.value)\n return;\n if (!permissionGranted.value && Notification.permission !== \"denied\") {\n const result = await Notification.requestPermission();\n if (result === \"granted\")\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n };\n const { on: onClick, trigger: clickTrigger } = createEventHook();\n const { on: onShow, trigger: showTrigger } = createEventHook();\n const { on: onError, trigger: errorTrigger } = createEventHook();\n const { on: onClose, trigger: closeTrigger } = createEventHook();\n const show = async (overrides) => {\n if (!isSupported.value || !permissionGranted.value)\n return;\n const options2 = Object.assign({}, defaultWebNotificationOptions, overrides);\n notification.value = new Notification(options2.title || \"\", options2);\n notification.value.onclick = clickTrigger;\n notification.value.onshow = showTrigger;\n notification.value.onerror = errorTrigger;\n notification.value.onclose = closeTrigger;\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n if (_requestForPermissions)\n tryOnMounted(ensurePermissions);\n tryOnScopeDispose(close);\n if (isSupported.value && window) {\n const document = window.document;\n useEventListener(document, \"visibilitychange\", (e) => {\n e.preventDefault();\n if (document.visibilityState === \"visible\") {\n close();\n }\n });\n }\n return {\n isSupported,\n notification,\n ensurePermissions,\n permissionGranted,\n show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useWebSocket(url, options = {}) {\n const {\n onConnected,\n onDisconnected,\n onError,\n onMessage,\n immediate = true,\n autoConnect = true,\n autoClose = true,\n protocols = []\n } = options;\n const data = ref(null);\n const status = shallowRef(\"CLOSED\");\n const wsRef = ref();\n const urlRef = toRef(url);\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n let retryTimeout;\n let pongTimeoutWait;\n const _sendBuffer = () => {\n if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n for (const buffer of bufferedData)\n wsRef.value.send(buffer);\n bufferedData = [];\n }\n };\n const resetRetry = () => {\n if (retryTimeout != null) {\n clearTimeout(retryTimeout);\n retryTimeout = void 0;\n }\n };\n const resetHeartbeat = () => {\n clearTimeout(pongTimeoutWait);\n pongTimeoutWait = void 0;\n };\n const close = (code = 1e3, reason) => {\n resetRetry();\n if (!isClient && !isWorker || !wsRef.value)\n return;\n explicitlyClosed = true;\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n wsRef.value = void 0;\n };\n const send = (data2, useBuffer = true) => {\n if (!wsRef.value || status.value !== \"OPEN\") {\n if (useBuffer)\n bufferedData.push(data2);\n return false;\n }\n _sendBuffer();\n wsRef.value.send(data2);\n return true;\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const ws = new WebSocket(urlRef.value, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n ws.onopen = () => {\n status.value = \"OPEN\";\n retried = 0;\n onConnected == null ? void 0 : onConnected(ws);\n heartbeatResume == null ? void 0 : heartbeatResume();\n _sendBuffer();\n };\n ws.onclose = (ev) => {\n status.value = \"CLOSED\";\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n if (!explicitlyClosed && options.autoReconnect && (wsRef.value == null || ws === wsRef.value)) {\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions(options.autoReconnect);\n const checkRetires = typeof retries === \"function\" ? retries : () => typeof retries === \"number\" && (retries < 0 || retried < retries);\n if (checkRetires(retried)) {\n retried += 1;\n retryTimeout = setTimeout(_init, delay);\n } else {\n onFailed == null ? void 0 : onFailed();\n }\n }\n };\n ws.onerror = (e) => {\n onError == null ? void 0 : onError(ws, e);\n };\n ws.onmessage = (e) => {\n if (options.heartbeat) {\n resetHeartbeat();\n const {\n message = DEFAULT_PING_MESSAGE,\n responseMessage = message\n } = resolveNestedOptions(options.heartbeat);\n if (e.data === toValue(responseMessage))\n return;\n }\n data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = DEFAULT_PING_MESSAGE,\n interval = 1e3,\n pongTimeout = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = useIntervalFn(\n () => {\n send(toValue(message), false);\n if (pongTimeoutWait != null)\n return;\n pongTimeoutWait = setTimeout(() => {\n close();\n explicitlyClosed = false;\n }, pongTimeout);\n },\n interval,\n { immediate: false }\n );\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (autoClose) {\n if (isClient)\n useEventListener(\"beforeunload\", () => close(), { passive: true });\n tryOnScopeDispose(close);\n }\n const open = () => {\n if (!isClient && !isWorker)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n open();\n if (autoConnect)\n watch(urlRef, open);\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n const {\n window = defaultWindow\n } = options != null ? options : {};\n const data = ref(null);\n const worker = shallowRef();\n const post = (...args) => {\n if (!worker.value)\n return;\n worker.value.postMessage(...args);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n if (typeof arg0 === \"string\")\n worker.value = new Worker(arg0, workerOptions);\n else if (typeof arg0 === \"function\")\n worker.value = arg0();\n else\n worker.value = arg0;\n worker.value.onmessage = (e) => {\n data.value = e.data;\n };\n tryOnScopeDispose(() => {\n if (worker.value)\n worker.value.terminate();\n });\n }\n return {\n data,\n post,\n terminate,\n worker\n };\n}\n\nfunction depsParser(deps, localDeps) {\n if (deps.length === 0 && localDeps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n const depsFunctionString = localDeps.filter((dep) => typeof dep === \"function\").map((fn) => {\n const str = fn.toString();\n if (str.trim().startsWith(\"function\")) {\n return str;\n } else {\n const name = fn.name;\n return `const ${name} = ${str}`;\n }\n }).join(\";\");\n const importString = `importScripts(${depsString});`;\n return `${depsString.trim() === \"\" ? \"\" : importString} ${depsFunctionString}`;\n}\n\nfunction jobRunner(userFunc) {\n return (e) => {\n const userFuncArgs = e.data[0];\n return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n postMessage([\"SUCCESS\", result]);\n }).catch((error) => {\n postMessage([\"ERROR\", error]);\n });\n };\n}\n\nfunction createWorkerBlobUrl(fn, deps, localDeps) {\n const blobCode = `${depsParser(deps, localDeps)}; onmessage=(${jobRunner})(${fn})`;\n const blob = new Blob([blobCode], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n const {\n dependencies = [],\n localDependencies = [],\n timeout,\n window = defaultWindow\n } = options;\n const worker = ref();\n const workerStatus = shallowRef(\"PENDING\");\n const promise = ref({});\n const timeoutId = shallowRef();\n const workerTerminate = (status = \"PENDING\") => {\n if (worker.value && worker.value._url && window) {\n worker.value.terminate();\n URL.revokeObjectURL(worker.value._url);\n promise.value = {};\n worker.value = void 0;\n window.clearTimeout(timeoutId.value);\n workerStatus.value = status;\n }\n };\n workerTerminate();\n tryOnScopeDispose(workerTerminate);\n const generateWorker = () => {\n const blobUrl = createWorkerBlobUrl(fn, dependencies, localDependencies);\n const newWorker = new Worker(blobUrl);\n newWorker._url = blobUrl;\n newWorker.onmessage = (e) => {\n const { resolve = () => {\n }, reject = () => {\n } } = promise.value;\n const [status, result] = e.data;\n switch (status) {\n case \"SUCCESS\":\n resolve(result);\n workerTerminate(status);\n break;\n default:\n reject(result);\n workerTerminate(\"ERROR\");\n break;\n }\n };\n newWorker.onerror = (e) => {\n const { reject = () => {\n } } = promise.value;\n e.preventDefault();\n reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(\n () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n timeout\n );\n }\n return newWorker;\n };\n const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n var _a;\n promise.value = {\n resolve,\n reject\n };\n (_a = worker.value) == null ? void 0 : _a.postMessage([[...fnArgs]]);\n workerStatus.value = \"RUNNING\";\n });\n const workerFn = (...fnArgs) => {\n if (workerStatus.value === \"RUNNING\") {\n console.error(\n \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n );\n return Promise.reject();\n }\n worker.value = generateWorker();\n return callWorker(...fnArgs);\n };\n return {\n workerFn,\n workerStatus,\n workerTerminate\n };\n}\n\nfunction useWindowFocus(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return shallowRef(false);\n const focused = shallowRef(window.document.hasFocus());\n const listenerOptions = { passive: true };\n useEventListener(window, \"blur\", () => {\n focused.value = false;\n }, listenerOptions);\n useEventListener(window, \"focus\", () => {\n focused.value = true;\n }, listenerOptions);\n return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n const { window = defaultWindow, ...rest } = options;\n return useScroll(window, rest);\n}\n\nfunction useWindowSize(options = {}) {\n const {\n window = defaultWindow,\n initialWidth = Number.POSITIVE_INFINITY,\n initialHeight = Number.POSITIVE_INFINITY,\n listenOrientation = true,\n includeScrollbar = true,\n type = \"inner\"\n } = options;\n const width = shallowRef(initialWidth);\n const height = shallowRef(initialHeight);\n const update = () => {\n if (window) {\n if (type === \"outer\") {\n width.value = window.outerWidth;\n height.value = window.outerHeight;\n } else if (type === \"visual\" && window.visualViewport) {\n const { width: visualViewportWidth, height: visualViewportHeight, scale } = window.visualViewport;\n width.value = Math.round(visualViewportWidth * scale);\n height.value = Math.round(visualViewportHeight * scale);\n } else if (includeScrollbar) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n } else {\n width.value = window.document.documentElement.clientWidth;\n height.value = window.document.documentElement.clientHeight;\n }\n }\n };\n update();\n tryOnMounted(update);\n const listenerOptions = { passive: true };\n useEventListener(\"resize\", update, listenerOptions);\n if (window && type === \"visual\" && window.visualViewport) {\n useEventListener(window.visualViewport, \"resize\", update, listenerOptions);\n }\n if (listenOrientation) {\n const matches = useMediaQuery(\"(orientation: portrait)\");\n watch(matches, () => update());\n }\n return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsElement, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, breakpointsVuetifyV2, breakpointsVuetifyV3, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onElementRemoval, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, provideSSRWidth, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCountdown, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePreferredReducedTransparency, usePrevious, useRafFn, useRefHistory, useResizeObserver, useSSRWidth, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n"], + "mappings": "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", + "names": ["get", "set", "ref", "keys", "invoke", "toRef", "toRefs", "toValue", "window", "document", "timestamp", "navigator", "events", "getValue", "ref", "defaults", "toRef", "set", "onUpdated", "preventDefault", "toRefs", "now", "keys", "get", "isReadonly"] +} diff --git a/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-QE257C5J.js b/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-QE257C5J.js new file mode 100644 index 0000000..0a0bf08 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/.vitepress/cache/deps/chunk-QE257C5J.js @@ -0,0 +1,12824 @@ +// node_modules/@vue/shared/dist/shared.esm-bundler.js +function makeMap(str) { + const map2 = /* @__PURE__ */ Object.create(null); + for (const key of str.split(",")) map2[key] = 1; + return (val) => val in map2; +} +var EMPTY_OBJ = true ? Object.freeze({}) : {}; +var EMPTY_ARR = true ? Object.freeze([]) : []; +var NOOP = () => { +}; +var NO = () => false; +var isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +var isModelListener = (key) => key.startsWith("onUpdate:"); +var extend = Object.assign; +var remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var hasOwn = (val, key) => hasOwnProperty.call(val, key); +var isArray = Array.isArray; +var isMap = (val) => toTypeString(val) === "[object Map]"; +var isSet = (val) => toTypeString(val) === "[object Set]"; +var isDate = (val) => toTypeString(val) === "[object Date]"; +var isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +var isFunction = (val) => typeof val === "function"; +var isString = (val) => typeof val === "string"; +var isSymbol = (val) => typeof val === "symbol"; +var isObject = (val) => val !== null && typeof val === "object"; +var isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +var objectToString = Object.prototype.toString; +var toTypeString = (value) => objectToString.call(value); +var toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +var isPlainObject = (val) => toTypeString(val) === "[object Object]"; +var isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +var isReservedProp = makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +var isBuiltInDirective = makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +var cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +var camelizeRE = /-\w/g; +var camelize = cacheStringFunction( + (str) => { + return str.replace(camelizeRE, (c) => c.slice(1).toUpperCase()); + } +); +var hyphenateRE = /\B([A-Z])/g; +var hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +var capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +var toHandlerKey = cacheStringFunction( + (str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; + } +); +var hasChanged = (value, oldValue) => !Object.is(value, oldValue); +var invokeArrayFns = (fns, ...arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](...arg); + } +}; +var def = (obj, key, value, writable = false) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + writable, + value + }); +}; +var looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +var toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +var _globalThis; +var getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; +var 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,Symbol"; +var isGloballyAllowed = makeMap(GLOBALS_ALLOWED); +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; + } +} +var listDelimiterRE = /;(?![^(]*\))/g; +var propertyDelimiterRE = /:([^]+)/; +var 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 stringifyStyle(styles) { + if (!styles) return ""; + if (isString(styles)) return styles; + let ret = ""; + for (const key in styles) { + const value = styles[key]; + if (isString(value) || typeof value === "number") { + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); + ret += `${normalizedKey}:${value};`; + } + } + 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(); +} +function normalizeProps(props) { + if (!props) return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; +} +var 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"; +var 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"; +var 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"; +var VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +var isHTMLTag = makeMap(HTML_TAGS); +var isSVGTag = makeMap(SVG_TAGS); +var isMathMLTag = makeMap(MATH_TAGS); +var isVoidTag = makeMap(VOID_TAGS); +var specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +var isSpecialBooleanAttr = makeMap(specialBooleanAttrs); +var isBooleanAttr = makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +function includeBooleanAttr(value) { + return !!value || value === ""; +} +var isKnownHtmlAttr = makeMap( + `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` +); +var isKnownSvgAttr = makeMap( + `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` +); +var isKnownMathMLAttr = makeMap( + `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns` +); +function isRenderableAttrValue(value) { + if (value == null) { + return false; + } + const type = typeof value; + return type === "string" || type === "number" || type === "boolean"; +} +var cssVarNameEscapeSymbolsRE = /[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g; +function getEscapedCssVarName(key, doubleEscape) { + return key.replace( + cssVarNameEscapeSymbolsRE, + (s) => doubleEscape ? s === '"' ? '\\\\\\"' : `\\\\${s}` : `\\${s}` + ); +} +function looseCompareArrays(a, b) { + if (a.length !== b.length) return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; +} +function looseEqual(a, b) { + if (a === b) return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); +} +function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); +} +var isRef = (val) => { + return !!(val && val["__v_isRef"] === true); +}; +var toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val); +}; +var replacer = (_key, val) => { + if (isRef(val)) { + 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; +}; +var stringifySymbol = (v, i = "") => { + var _a; + return ( + // Symbol.description in es2019+ so we need to cast here to pass + // the lib: es2016 check + isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v + ); +}; +function normalizeCssVarValue(value) { + if (value == null) { + return "initial"; + } + if (typeof value === "string") { + return value === "" ? " " : value; + } + if (typeof value !== "number" || !Number.isFinite(value)) { + if (true) { + console.warn( + "[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:", + value + ); + } + } + return String(value); +} + +// node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js +function warn(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); +} +var activeEffectScope; +var EffectScope = class { + constructor(detached = false) { + this.detached = detached; + this._active = true; + this._on = 0; + this.effects = []; + this.cleanups = []; + this._isPaused = false; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + pause() { + if (this._active) { + this._isPaused = true; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].pause(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].pause(); + } + } + } + /** + * Resumes the effect scope, including all child scopes and effects. + */ + resume() { + if (this._active) { + if (this._isPaused) { + this._isPaused = false; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].resume(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].resume(); + } + } + } + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else if (true) { + warn(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + if (++this._on === 1) { + this.prevScope = activeEffectScope; + activeEffectScope = this; + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + if (this._on > 0 && --this._on === 0) { + activeEffectScope = this.prevScope; + this.prevScope = void 0; + } + } + stop(fromParent) { + if (this._active) { + this._active = false; + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + this.effects.length = 0; + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + this.cleanups.length = 0; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + this.scopes.length = 0; + } + 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; + } + } +}; +function effectScope(detached) { + return new EffectScope(detached); +} +function getCurrentScope() { + return activeEffectScope; +} +function onScopeDispose(fn, failSilently = false) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } else if (!failSilently) { + warn( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } +} +var activeSub; +var pausedQueueEffects = /* @__PURE__ */ new WeakSet(); +var ReactiveEffect = class { + constructor(fn) { + this.fn = fn; + this.deps = void 0; + this.depsTail = void 0; + this.flags = 1 | 4; + this.next = void 0; + this.cleanup = void 0; + this.scheduler = void 0; + if (activeEffectScope && activeEffectScope.active) { + activeEffectScope.effects.push(this); + } + } + pause() { + this.flags |= 64; + } + resume() { + if (this.flags & 64) { + this.flags &= -65; + if (pausedQueueEffects.has(this)) { + pausedQueueEffects.delete(this); + this.trigger(); + } + } + } + /** + * @internal + */ + notify() { + if (this.flags & 2 && !(this.flags & 32)) { + return; + } + if (!(this.flags & 8)) { + batch(this); + } + } + run() { + if (!(this.flags & 1)) { + return this.fn(); + } + this.flags |= 2; + cleanupEffect(this); + prepareDeps(this); + const prevEffect = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = this; + shouldTrack = true; + try { + return this.fn(); + } finally { + if (activeSub !== this) { + warn( + "Active effect was not restored correctly - this is likely a Vue internal bug." + ); + } + cleanupDeps(this); + activeSub = prevEffect; + shouldTrack = prevShouldTrack; + this.flags &= -3; + } + } + stop() { + if (this.flags & 1) { + for (let link = this.deps; link; link = link.nextDep) { + removeSub(link); + } + this.deps = this.depsTail = void 0; + cleanupEffect(this); + this.onStop && this.onStop(); + this.flags &= -2; + } + } + trigger() { + if (this.flags & 64) { + pausedQueueEffects.add(this); + } else if (this.scheduler) { + this.scheduler(); + } else { + this.runIfDirty(); + } + } + /** + * @internal + */ + runIfDirty() { + if (isDirty(this)) { + this.run(); + } + } + get dirty() { + return isDirty(this); + } +}; +var batchDepth = 0; +var batchedSub; +var batchedComputed; +function batch(sub, isComputed = false) { + sub.flags |= 8; + if (isComputed) { + sub.next = batchedComputed; + batchedComputed = sub; + return; + } + sub.next = batchedSub; + batchedSub = sub; +} +function startBatch() { + batchDepth++; +} +function endBatch() { + if (--batchDepth > 0) { + return; + } + if (batchedComputed) { + let e = batchedComputed; + batchedComputed = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + e = next; + } + } + let error; + while (batchedSub) { + let e = batchedSub; + batchedSub = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + if (e.flags & 1) { + try { + ; + e.trigger(); + } catch (err) { + if (!error) error = err; + } + } + e = next; + } + } + if (error) throw error; +} +function prepareDeps(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + link.version = -1; + link.prevActiveLink = link.dep.activeLink; + link.dep.activeLink = link; + } +} +function cleanupDeps(sub) { + let head; + let tail = sub.depsTail; + let link = tail; + while (link) { + const prev = link.prevDep; + if (link.version === -1) { + if (link === tail) tail = prev; + removeSub(link); + removeDep(link); + } else { + head = link; + } + link.dep.activeLink = link.prevActiveLink; + link.prevActiveLink = void 0; + link = prev; + } + sub.deps = head; + sub.depsTail = tail; +} +function isDirty(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) { + return true; + } + } + if (sub._dirty) { + return true; + } + return false; +} +function refreshComputed(computed3) { + if (computed3.flags & 4 && !(computed3.flags & 16)) { + return; + } + computed3.flags &= -17; + if (computed3.globalVersion === globalVersion) { + return; + } + computed3.globalVersion = globalVersion; + if (!computed3.isSSR && computed3.flags & 128 && (!computed3.deps && !computed3._dirty || !isDirty(computed3))) { + return; + } + computed3.flags |= 2; + const dep = computed3.dep; + const prevSub = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = computed3; + shouldTrack = true; + try { + prepareDeps(computed3); + const value = computed3.fn(computed3._value); + if (dep.version === 0 || hasChanged(value, computed3._value)) { + computed3.flags |= 128; + computed3._value = value; + dep.version++; + } + } catch (err) { + dep.version++; + throw err; + } finally { + activeSub = prevSub; + shouldTrack = prevShouldTrack; + cleanupDeps(computed3); + computed3.flags &= -3; + } +} +function removeSub(link, soft = false) { + const { dep, prevSub, nextSub } = link; + if (prevSub) { + prevSub.nextSub = nextSub; + link.prevSub = void 0; + } + if (nextSub) { + nextSub.prevSub = prevSub; + link.nextSub = void 0; + } + if (dep.subsHead === link) { + dep.subsHead = nextSub; + } + if (dep.subs === link) { + dep.subs = prevSub; + if (!prevSub && dep.computed) { + dep.computed.flags &= -5; + for (let l = dep.computed.deps; l; l = l.nextDep) { + removeSub(l, true); + } + } + } + if (!soft && !--dep.sc && dep.map) { + dep.map.delete(dep.key); + } +} +function removeDep(link) { + const { prevDep, nextDep } = link; + if (prevDep) { + prevDep.nextDep = nextDep; + link.prevDep = void 0; + } + if (nextDep) { + nextDep.prevDep = prevDep; + link.nextDep = void 0; + } +} +function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const e = new ReactiveEffect(fn); + if (options) { + extend(e, options); + } + try { + e.run(); + } catch (err) { + e.stop(); + throw err; + } + const runner = e.run.bind(e); + runner.effect = e; + return runner; +} +function stop(runner) { + runner.effect.stop(); +} +var shouldTrack = true; +var trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function cleanupEffect(e) { + const { cleanup } = e; + e.cleanup = void 0; + if (cleanup) { + const prevSub = activeSub; + activeSub = void 0; + try { + cleanup(); + } finally { + activeSub = prevSub; + } + } +} +var globalVersion = 0; +var Link = class { + constructor(sub, dep) { + this.sub = sub; + this.dep = dep; + this.version = dep.version; + this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0; + } +}; +var Dep = class { + // TODO isolatedDeclarations "__v_skip" + constructor(computed3) { + this.computed = computed3; + this.version = 0; + this.activeLink = void 0; + this.subs = void 0; + this.map = void 0; + this.key = void 0; + this.sc = 0; + this.__v_skip = true; + if (true) { + this.subsHead = void 0; + } + } + track(debugInfo) { + if (!activeSub || !shouldTrack || activeSub === this.computed) { + return; + } + let link = this.activeLink; + if (link === void 0 || link.sub !== activeSub) { + link = this.activeLink = new Link(activeSub, this); + if (!activeSub.deps) { + activeSub.deps = activeSub.depsTail = link; + } else { + link.prevDep = activeSub.depsTail; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + } + addSub(link); + } else if (link.version === -1) { + link.version = this.version; + if (link.nextDep) { + const next = link.nextDep; + next.prevDep = link.prevDep; + if (link.prevDep) { + link.prevDep.nextDep = next; + } + link.prevDep = activeSub.depsTail; + link.nextDep = void 0; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + if (activeSub.deps === link) { + activeSub.deps = next; + } + } + } + if (activeSub.onTrack) { + activeSub.onTrack( + extend( + { + effect: activeSub + }, + debugInfo + ) + ); + } + return link; + } + trigger(debugInfo) { + this.version++; + globalVersion++; + this.notify(debugInfo); + } + notify(debugInfo) { + startBatch(); + try { + if (true) { + for (let head = this.subsHead; head; head = head.nextSub) { + if (head.sub.onTrigger && !(head.sub.flags & 8)) { + head.sub.onTrigger( + extend( + { + effect: head.sub + }, + debugInfo + ) + ); + } + } + } + for (let link = this.subs; link; link = link.prevSub) { + if (link.sub.notify()) { + ; + link.sub.dep.notify(); + } + } + } finally { + endBatch(); + } + } +}; +function addSub(link) { + link.dep.sc++; + if (link.sub.flags & 4) { + const computed3 = link.dep.computed; + if (computed3 && !link.dep.subs) { + computed3.flags |= 4 | 16; + for (let l = computed3.deps; l; l = l.nextDep) { + addSub(l); + } + } + const currentTail = link.dep.subs; + if (currentTail !== link) { + link.prevSub = currentTail; + if (currentTail) currentTail.nextSub = link; + } + if (link.dep.subsHead === void 0) { + link.dep.subsHead = link; + } + link.dep.subs = link; + } +} +var targetMap = /* @__PURE__ */ new WeakMap(); +var ITERATE_KEY = Symbol( + true ? "Object iterate" : "" +); +var MAP_KEY_ITERATE_KEY = Symbol( + true ? "Map keys iterate" : "" +); +var ARRAY_ITERATE_KEY = Symbol( + true ? "Array iterate" : "" +); +function track(target, type, key) { + if (shouldTrack && activeSub) { + 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 = new Dep()); + dep.map = depsMap; + dep.key = key; + } + if (true) { + dep.track({ + target, + type, + key + }); + } else { + dep.track(); + } + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + globalVersion++; + return; + } + const run = (dep) => { + if (dep) { + if (true) { + dep.trigger({ + target, + type, + key, + newValue, + oldValue, + oldTarget + }); + } else { + dep.trigger(); + } + } + }; + startBatch(); + if (type === "clear") { + depsMap.forEach(run); + } else { + const targetIsArray = isArray(target); + const isArrayIndex = targetIsArray && isIntegerKey(key); + if (targetIsArray && key === "length") { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) { + run(dep); + } + }); + } else { + if (key !== void 0 || depsMap.has(void 0)) { + run(depsMap.get(key)); + } + if (isArrayIndex) { + run(depsMap.get(ARRAY_ITERATE_KEY)); + } + switch (type) { + case "add": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isArrayIndex) { + run(depsMap.get("length")); + } + break; + case "delete": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (isMap(target)) { + run(depsMap.get(ITERATE_KEY)); + } + break; + } + } + } + endBatch(); +} +function getDepFromReactive(object, key) { + const depMap = targetMap.get(object); + return depMap && depMap.get(key); +} +function reactiveReadArray(array) { + const raw = toRaw(array); + if (raw === array) return raw; + track(raw, "iterate", ARRAY_ITERATE_KEY); + return isShallow(array) ? raw : raw.map(toReactive); +} +function shallowReadArray(arr) { + track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY); + return arr; +} +function toWrapped(target, item) { + if (isReadonly(target)) { + return isReactive(target) ? toReadonly(toReactive(item)) : toReadonly(item); + } + return toReactive(item); +} +var arrayInstrumentations = { + __proto__: null, + [Symbol.iterator]() { + return iterator(this, Symbol.iterator, (item) => toWrapped(this, item)); + }, + concat(...args) { + return reactiveReadArray(this).concat( + ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x) + ); + }, + entries() { + return iterator(this, "entries", (value) => { + value[1] = toWrapped(this, value[1]); + return value; + }); + }, + every(fn, thisArg) { + return apply(this, "every", fn, thisArg, void 0, arguments); + }, + filter(fn, thisArg) { + return apply( + this, + "filter", + fn, + thisArg, + (v) => v.map((item) => toWrapped(this, item)), + arguments + ); + }, + find(fn, thisArg) { + return apply( + this, + "find", + fn, + thisArg, + (item) => toWrapped(this, item), + arguments + ); + }, + findIndex(fn, thisArg) { + return apply(this, "findIndex", fn, thisArg, void 0, arguments); + }, + findLast(fn, thisArg) { + return apply( + this, + "findLast", + fn, + thisArg, + (item) => toWrapped(this, item), + arguments + ); + }, + findLastIndex(fn, thisArg) { + return apply(this, "findLastIndex", fn, thisArg, void 0, arguments); + }, + // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement + forEach(fn, thisArg) { + return apply(this, "forEach", fn, thisArg, void 0, arguments); + }, + includes(...args) { + return searchProxy(this, "includes", args); + }, + indexOf(...args) { + return searchProxy(this, "indexOf", args); + }, + join(separator) { + return reactiveReadArray(this).join(separator); + }, + // keys() iterator only reads `length`, no optimization required + lastIndexOf(...args) { + return searchProxy(this, "lastIndexOf", args); + }, + map(fn, thisArg) { + return apply(this, "map", fn, thisArg, void 0, arguments); + }, + pop() { + return noTracking(this, "pop"); + }, + push(...args) { + return noTracking(this, "push", args); + }, + reduce(fn, ...args) { + return reduce(this, "reduce", fn, args); + }, + reduceRight(fn, ...args) { + return reduce(this, "reduceRight", fn, args); + }, + shift() { + return noTracking(this, "shift"); + }, + // slice could use ARRAY_ITERATE but also seems to beg for range tracking + some(fn, thisArg) { + return apply(this, "some", fn, thisArg, void 0, arguments); + }, + splice(...args) { + return noTracking(this, "splice", args); + }, + toReversed() { + return reactiveReadArray(this).toReversed(); + }, + toSorted(comparer) { + return reactiveReadArray(this).toSorted(comparer); + }, + toSpliced(...args) { + return reactiveReadArray(this).toSpliced(...args); + }, + unshift(...args) { + return noTracking(this, "unshift", args); + }, + values() { + return iterator(this, "values", (item) => toWrapped(this, item)); + } +}; +function iterator(self2, method, wrapValue) { + const arr = shallowReadArray(self2); + const iter = arr[method](); + if (arr !== self2 && !isShallow(self2)) { + iter._next = iter.next; + iter.next = () => { + const result = iter._next(); + if (!result.done) { + result.value = wrapValue(result.value); + } + return result; + }; + } + return iter; +} +var arrayProto = Array.prototype; +function apply(self2, method, fn, thisArg, wrappedRetFn, args) { + const arr = shallowReadArray(self2); + const needsWrap = arr !== self2 && !isShallow(self2); + const methodFn = arr[method]; + if (methodFn !== arrayProto[method]) { + const result2 = methodFn.apply(self2, args); + return needsWrap ? toReactive(result2) : result2; + } + let wrappedFn = fn; + if (arr !== self2) { + if (needsWrap) { + wrappedFn = function(item, index) { + return fn.call(this, toWrapped(self2, item), index, self2); + }; + } else if (fn.length > 2) { + wrappedFn = function(item, index) { + return fn.call(this, item, index, self2); + }; + } + } + const result = methodFn.call(arr, wrappedFn, thisArg); + return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result; +} +function reduce(self2, method, fn, args) { + const arr = shallowReadArray(self2); + let wrappedFn = fn; + if (arr !== self2) { + if (!isShallow(self2)) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, toWrapped(self2, item), index, self2); + }; + } else if (fn.length > 3) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, item, index, self2); + }; + } + } + return arr[method](wrappedFn, ...args); +} +function searchProxy(self2, method, args) { + const arr = toRaw(self2); + track(arr, "iterate", ARRAY_ITERATE_KEY); + const res = arr[method](...args); + if ((res === -1 || res === false) && isProxy(args[0])) { + args[0] = toRaw(args[0]); + return arr[method](...args); + } + return res; +} +function noTracking(self2, method, args = []) { + pauseTracking(); + startBatch(); + const res = toRaw(self2)[method].apply(self2, args); + endBatch(); + resetTracking(); + return res; +} +var isNonTrackableKeys = makeMap(`__proto__,__v_isRef,__isVue`); +var builtInSymbols = new Set( + Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) +); +function hasOwnProperty2(key) { + if (!isSymbol(key)) key = String(key); + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +var BaseReactiveHandler = class { + constructor(_isReadonly = false, _isShallow = false) { + this._isReadonly = _isReadonly; + this._isShallow = _isShallow; + } + get(target, key, receiver) { + if (key === "__v_skip") return target["__v_skip"]; + 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 receiver is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; + } + const targetIsArray = isArray(target); + if (!isReadonly2) { + let fn; + if (targetIsArray && (fn = arrayInstrumentations[key])) { + return fn; + } + if (key === "hasOwnProperty") { + return hasOwnProperty2; + } + } + const res = Reflect.get( + target, + key, + // if this is a proxy wrapping a ref, return methods using the raw ref + // as receiver so that we don't have to call `toRaw` on the ref in all + // its class methods + isRef2(target) ? target : receiver + ); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (isShallow2) { + return res; + } + if (isRef2(res)) { + const value = targetIsArray && isIntegerKey(key) ? res : res.value; + return isReadonly2 && isObject(value) ? readonly(value) : value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +}; +var MutableReactiveHandler = class extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(false, isShallow2); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + const isArrayWithIntegerKey = isArray(target) && isIntegerKey(key); + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArrayWithIntegerKey && isRef2(oldValue) && !isRef2(value)) { + if (isOldValueReadonly) { + if (true) { + warn( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target[key] + ); + } + return true; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = isArrayWithIntegerKey ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set( + target, + key, + value, + isRef2(target) ? target : 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); + } +}; +var ReadonlyReactiveHandler = class extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(true, isShallow2); + } + set(target, key) { + if (true) { + warn( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + if (true) { + warn( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } +}; +var mutableHandlers = new MutableReactiveHandler(); +var readonlyHandlers = new ReadonlyReactiveHandler(); +var shallowReactiveHandlers = new MutableReactiveHandler(true); +var shallowReadonlyHandlers = new ReadonlyReactiveHandler(true); +var toShallow = (value) => value; +var getProto = (v) => Reflect.getPrototypeOf(v); +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) { + if (true) { + const key = args[0] ? `on key "${args[0]}" ` : ``; + warn( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; +} +function createInstrumentations(readonly2, shallow) { + const instrumentations = { + get(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly2) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has } = getProto(rawTarget); + const wrap = shallow ? toShallow : readonly2 ? toReadonly : toReactive; + if (has.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } + }, + get size() { + const target = this["__v_raw"]; + !readonly2 && track(toRaw(target), "iterate", ITERATE_KEY); + return target.size; + }, + has(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly2) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); + }, + forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = shallow ? toShallow : readonly2 ? toReadonly : toReactive; + !readonly2 && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + } + }; + extend( + instrumentations, + readonly2 ? { + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear") + } : { + add(value) { + if (!shallow && !isShallow(value) && !isReadonly(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; + }, + set(key, value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else if (true) { + checkIdentityKeys(target, has, key); + } + const oldValue = get.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; + }, + delete(key) { + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else if (true) { + checkIdentityKeys(target, has, key); + } + const oldValue = get ? get.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + }, + clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = true ? isMap(target) ? new Map(target) : new Set(target) : void 0; + const result = target.clear(); + if (hadItems) { + trigger( + target, + "clear", + void 0, + void 0, + oldTarget + ); + } + return result; + } + } + ); + const iteratorMethods = [ + "keys", + "values", + "entries", + Symbol.iterator + ]; + iteratorMethods.forEach((method) => { + instrumentations[method] = createIterableMethod(method, readonly2, shallow); + }); + return instrumentations; +} +function createInstrumentationGetter(isReadonly2, shallow) { + const instrumentations = createInstrumentations(isReadonly2, shallow); + 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 + ); + }; +} +var mutableCollectionHandlers = { + get: createInstrumentationGetter(false, false) +}; +var shallowCollectionHandlers = { + get: createInstrumentationGetter(false, true) +}; +var readonlyCollectionHandlers = { + get: createInstrumentationGetter(true, false) +}; +var shallowReadonlyCollectionHandlers = { + get: createInstrumentationGetter(true, true) +}; +function checkIdentityKeys(target, has, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has.call(target, rawKey)) { + const type = toRawType(target); + warn( + `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.` + ); + } +} +var reactiveMap = /* @__PURE__ */ new WeakMap(); +var shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +var readonlyMap = /* @__PURE__ */ new WeakMap(); +var 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)) { + if (true) { + warn( + `value cannot be made ${isReadonly2 ? "readonly" : "reactive"}: ${String( + target + )}` + ); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const targetType = getTargetType(target); + if (targetType === 0) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + 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 value ? !!value["__v_raw"] : false; +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + if (!hasOwn(value, "__v_skip") && Object.isExtensible(value)) { + def(value, "__v_skip", true); + } + return value; +} +var toReactive = (value) => isObject(value) ? reactive(value) : value; +var toReadonly = (value) => isObject(value) ? readonly(value) : value; +function isRef2(r) { + return r ? r["__v_isRef"] === true : false; +} +function ref(value) { + return createRef(value, false); +} +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (isRef2(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +var RefImpl = class { + constructor(value, isShallow2) { + this.dep = new Dep(); + this["__v_isRef"] = true; + this["__v_isShallow"] = false; + this._rawValue = isShallow2 ? value : toRaw(value); + this._value = isShallow2 ? value : toReactive(value); + this["__v_isShallow"] = isShallow2; + } + get value() { + if (true) { + this.dep.track({ + target: this, + type: "get", + key: "value" + }); + } else { + this.dep.track(); + } + return this._value; + } + set value(newValue) { + const oldValue = this._rawValue; + const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue); + newValue = useDirectValue ? newValue : toRaw(newValue); + if (hasChanged(newValue, oldValue)) { + this._rawValue = newValue; + this._value = useDirectValue ? newValue : toReactive(newValue); + if (true) { + this.dep.trigger({ + target: this, + type: "set", + key: "value", + newValue, + oldValue + }); + } else { + this.dep.trigger(); + } + } + } +}; +function triggerRef(ref2) { + if (ref2.dep) { + if (true) { + ref2.dep.trigger({ + target: ref2, + type: "set", + key: "value", + newValue: ref2._value + }); + } else { + ref2.dep.trigger(); + } + } +} +function unref(ref2) { + return isRef2(ref2) ? ref2.value : ref2; +} +function toValue(source) { + return isFunction(source) ? source() : unref(source); +} +var shallowUnwrapHandlers = { + get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef2(oldValue) && !isRef2(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); +} +var CustomRefImpl = class { + constructor(factory) { + this["__v_isRef"] = true; + this._value = void 0; + const dep = this.dep = new Dep(); + const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep)); + this._get = get; + this._set = set; + } + get value() { + return this._value = this._get(); + } + set value(newVal) { + this._set(newVal); + } +}; +function customRef(factory) { + return new CustomRefImpl(factory); +} +function toRefs(object) { + if (!isProxy(object)) { + warn(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; +} +var ObjectRefImpl = class { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this["__v_isRef"] = true; + this._value = void 0; + this._raw = toRaw(_object); + let shallow = true; + let obj = _object; + if (!isArray(_object) || !isIntegerKey(String(_key))) { + do { + shallow = !isProxy(obj) || isShallow(obj); + } while (shallow && (obj = obj["__v_raw"])); + } + this._shallow = shallow; + } + get value() { + let val = this._object[this._key]; + if (this._shallow) { + val = unref(val); + } + return this._value = val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + if (this._shallow && isRef2(this._raw[this._key])) { + const nestedRef = this._object[this._key]; + if (isRef2(nestedRef)) { + nestedRef.value = newVal; + return; + } + } + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(this._raw, this._key); + } +}; +var GetterRefImpl = class { + constructor(_getter) { + this._getter = _getter; + this["__v_isRef"] = true; + this["__v_isReadonly"] = true; + this._value = void 0; + } + get value() { + return this._value = this._getter(); + } +}; +function toRef(source, key, defaultValue) { + if (isRef2(source)) { + return source; + } else if (isFunction(source)) { + return new GetterRefImpl(source); + } else if (isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + return new ObjectRefImpl(source, key, defaultValue); +} +var ComputedRefImpl = class { + constructor(fn, setter, isSSR) { + this.fn = fn; + this.setter = setter; + this._value = void 0; + this.dep = new Dep(this); + this.__v_isRef = true; + this.deps = void 0; + this.depsTail = void 0; + this.flags = 16; + this.globalVersion = globalVersion - 1; + this.next = void 0; + this.effect = this; + this["__v_isReadonly"] = !setter; + this.isSSR = isSSR; + } + /** + * @internal + */ + notify() { + this.flags |= 16; + if (!(this.flags & 8) && // avoid infinite self recursion + activeSub !== this) { + batch(this, true); + return true; + } else if (true) ; + } + get value() { + const link = true ? this.dep.track({ + target: this, + type: "get", + key: "value" + }) : this.dep.track(); + refreshComputed(this); + if (link) { + link.version = this.dep.version; + } + return this._value; + } + set value(newValue) { + if (this.setter) { + this.setter(newValue); + } else if (true) { + warn("Write operation failed: computed value is readonly"); + } + } +}; +function computed(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + if (isFunction(getterOrOptions)) { + getter = getterOrOptions; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, isSSR); + if (debugOptions && !isSSR) { + cRef.onTrack = debugOptions.onTrack; + cRef.onTrigger = debugOptions.onTrigger; + } + return cRef; +} +var TrackOpTypes = { + "GET": "get", + "HAS": "has", + "ITERATE": "iterate" +}; +var TriggerOpTypes = { + "SET": "set", + "ADD": "add", + "DELETE": "delete", + "CLEAR": "clear" +}; +var INITIAL_WATCHER_VALUE = {}; +var cleanupMap = /* @__PURE__ */ new WeakMap(); +var activeWatcher = void 0; +function getCurrentWatcher() { + return activeWatcher; +} +function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) { + if (owner) { + let cleanups = cleanupMap.get(owner); + if (!cleanups) cleanupMap.set(owner, cleanups = []); + cleanups.push(cleanupFn); + } else if (!failSilently) { + warn( + `onWatcherCleanup() was called when there was no active watcher to associate with.` + ); + } +} +function watch(source, cb, options = EMPTY_OBJ) { + const { immediate, deep, once, scheduler, augmentJob, call } = options; + const warnInvalidSource = (s) => { + (options.onWarn || warn)( + `Invalid watch source: `, + s, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const reactiveGetter = (source2) => { + if (deep) return source2; + if (isShallow(source2) || deep === false || deep === 0) + return traverse(source2, 1); + return traverse(source2); + }; + let effect2; + let getter; + let cleanup; + let boundCleanup; + let forceTrigger = false; + let isMultiSource = false; + if (isRef2(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((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef2(s)) { + return s.value; + } else if (isReactive(s)) { + return reactiveGetter(s); + } else if (isFunction(s)) { + return call ? call(s, 2) : s(); + } else { + warnInvalidSource(s); + } + }); + } else if (isFunction(source)) { + if (cb) { + getter = call ? () => call(source, 2) : source; + } else { + getter = () => { + if (cleanup) { + pauseTracking(); + try { + cleanup(); + } finally { + resetTracking(); + } + } + const currentEffect = activeWatcher; + activeWatcher = effect2; + try { + return call ? call(source, 3, [boundCleanup]) : source(boundCleanup); + } finally { + activeWatcher = currentEffect; + } + }; + } + } else { + getter = NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + const depth = deep === true ? Infinity : deep; + getter = () => traverse(baseGetter(), depth); + } + const scope = getCurrentScope(); + const watchHandle = () => { + effect2.stop(); + if (scope && scope.active) { + remove(scope.effects, effect2); + } + }; + if (once && cb) { + const _cb = cb; + cb = (...args) => { + _cb(...args); + watchHandle(); + }; + } + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = (immediateFirstRun) => { + if (!(effect2.flags & 1) || !effect2.dirty && !immediateFirstRun) { + return; + } + if (cb) { + const newValue = effect2.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) { + if (cleanup) { + cleanup(); + } + const currentWatcher = activeWatcher; + activeWatcher = effect2; + try { + const args = [ + 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, + boundCleanup + ]; + oldValue = newValue; + call ? call(cb, 3, args) : ( + // @ts-expect-error + cb(...args) + ); + } finally { + activeWatcher = currentWatcher; + } + } + } else { + effect2.run(); + } + }; + if (augmentJob) { + augmentJob(job); + } + effect2 = new ReactiveEffect(getter); + effect2.scheduler = scheduler ? () => scheduler(job, false) : job; + boundCleanup = (fn) => onWatcherCleanup(fn, false, effect2); + cleanup = effect2.onStop = () => { + const cleanups = cleanupMap.get(effect2); + if (cleanups) { + if (call) { + call(cleanups, 4); + } else { + for (const cleanup2 of cleanups) cleanup2(); + } + cleanupMap.delete(effect2); + } + }; + if (true) { + effect2.onTrack = options.onTrack; + effect2.onTrigger = options.onTrigger; + } + if (cb) { + if (immediate) { + job(true); + } else { + oldValue = effect2.run(); + } + } else if (scheduler) { + scheduler(job.bind(null, true), true); + } else { + effect2.run(); + } + watchHandle.pause = effect2.pause.bind(effect2); + watchHandle.resume = effect2.resume.bind(effect2); + watchHandle.stop = watchHandle; + return watchHandle; +} +function traverse(value, depth = Infinity, seen) { + if (depth <= 0 || !isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Map(); + if ((seen.get(value) || 0) >= depth) { + return value; + } + seen.set(value, depth); + depth--; + if (isRef2(value)) { + traverse(value.value, depth, seen); + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], depth, seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach((v) => { + traverse(v, depth, seen); + }); + } else if (isPlainObject(value)) { + for (const key in value) { + traverse(value[key], depth, seen); + } + for (const key of Object.getOwnPropertySymbols(value)) { + if (Object.prototype.propertyIsEnumerable.call(value, key)) { + traverse(value[key], depth, seen); + } + } + } + return value; +} + +// node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js +var stack = []; +function pushWarningContext(vnode) { + stack.push(vnode); +} +function popWarningContext() { + stack.pop(); +} +var isWarning = false; +function warn$1(msg, ...args) { + if (isWarning) return; + isWarning = true; + 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, + [ + // eslint-disable-next-line no-restricted-syntax + 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(); + isWarning = false; +} +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 (isRef2(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]; + } +} +function assertNumber(val, type) { + if (false) return; + if (val === void 0) { + return; + } else if (typeof val !== "number") { + warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`); + } else if (isNaN(val)) { + warn$1(`${type} is NaN - the duration expression might be incorrect.`); + } +} +var ErrorCodes = { + "SETUP_FUNCTION": 0, + "0": "SETUP_FUNCTION", + "RENDER_FUNCTION": 1, + "1": "RENDER_FUNCTION", + "NATIVE_EVENT_HANDLER": 5, + "5": "NATIVE_EVENT_HANDLER", + "COMPONENT_EVENT_HANDLER": 6, + "6": "COMPONENT_EVENT_HANDLER", + "VNODE_HOOK": 7, + "7": "VNODE_HOOK", + "DIRECTIVE_HOOK": 8, + "8": "DIRECTIVE_HOOK", + "TRANSITION_HOOK": 9, + "9": "TRANSITION_HOOK", + "APP_ERROR_HANDLER": 10, + "10": "APP_ERROR_HANDLER", + "APP_WARN_HANDLER": 11, + "11": "APP_WARN_HANDLER", + "FUNCTION_REF": 12, + "12": "FUNCTION_REF", + "ASYNC_COMPONENT_LOADER": 13, + "13": "ASYNC_COMPONENT_LOADER", + "SCHEDULER": 14, + "14": "SCHEDULER", + "COMPONENT_UPDATE": 15, + "15": "COMPONENT_UPDATE", + "APP_UNMOUNT_CLEANUP": 16, + "16": "APP_UNMOUNT_CLEANUP" +}; +var ErrorTypeStrings$1 = { + ["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", + [15]: "component update", + [16]: "app unmount cleanup function" +}; +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; + } + if (isArray(fn)) { + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; + } else if (true) { + warn$1( + `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}` + ); + } +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = true ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${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; + } + if (errorHandler) { + pauseTracking(); + callWithErrorHandling(errorHandler, null, 10, [ + err, + exposedInstance, + errorInfo + ]); + resetTracking(); + return; + } + } + logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction); +} +function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) { + if (true) { + const info = ErrorTypeStrings$1[type]; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } else if (throwInProd) { + throw err; + } else { + console.error(err); + } +} +var queue = []; +var flushIndex = -1; +var pendingPostFlushCbs = []; +var activePostFlushCbs = null; +var postFlushIndex = 0; +var resolvedPromise = Promise.resolve(); +var currentFlushPromise = null; +var RECURSION_LIMIT = 100; +function nextTick(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.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.flags & 2) { + start = middle + 1; + } else { + end = middle; + } + } + return start; +} +function queueJob(job) { + if (!(job.flags & 1)) { + const jobId = getId(job); + const lastJob = queue[queue.length - 1]; + if (!lastJob || // fast path when the job id is larger than the tail + !(job.flags & 2) && jobId >= getId(lastJob)) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(jobId), 0, job); + } + job.flags |= 1; + queueFlush(); + } +} +function queueFlush() { + if (!currentFlushPromise) { + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function queuePostFlushCb(cb) { + if (!isArray(cb)) { + if (activePostFlushCbs && cb.id === -1) { + activePostFlushCbs.splice(postFlushIndex + 1, 0, cb); + } else if (!(cb.flags & 1)) { + pendingPostFlushCbs.push(cb); + cb.flags |= 1; + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); +} +function flushPreFlushCbs(instance, seen, i = flushIndex + 1) { + if (true) { + seen = seen || /* @__PURE__ */ new Map(); + } + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.flags & 2) { + if (instance && cb.id !== instance.uid) { + continue; + } + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + queue.splice(i, 1); + i--; + if (cb.flags & 4) { + cb.flags &= -2; + } + cb(); + if (!(cb.flags & 4)) { + cb.flags &= -2; + } + } + } +} +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; + if (true) { + seen = seen || /* @__PURE__ */ new Map(); + } + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + const cb = activePostFlushCbs[postFlushIndex]; + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + if (cb.flags & 4) { + cb.flags &= -2; + } + if (!(cb.flags & 8)) cb(); + cb.flags &= -2; + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +var getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id; +function flushJobs(seen) { + if (true) { + seen = seen || /* @__PURE__ */ new Map(); + } + const check = true ? (job) => checkRecursiveUpdates(seen, job) : NOOP; + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && !(job.flags & 8)) { + if (check(job)) { + continue; + } + if (job.flags & 4) { + job.flags &= ~1; + } + callWithErrorHandling( + job, + job.i, + job.i ? 15 : 14 + ); + if (!(job.flags & 4)) { + job.flags &= ~1; + } + } + } + } finally { + for (; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job) { + job.flags &= -2; + } + } + flushIndex = -1; + queue.length = 0; + flushPostFlushCbs(seen); + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(seen); + } + } +} +function checkRecursiveUpdates(seen, fn) { + const count = seen.get(fn) || 0; + if (count > RECURSION_LIMIT) { + const instance = fn.i; + 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; + } + seen.set(fn, count + 1); + return false; +} +var isHmrUpdating = false; +var hmrDirtyComponents = /* @__PURE__ */ new Map(); +if (true) { + getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; +} +var map = /* @__PURE__ */ new Map(); +function registerHMR(instance) { + const id = instance.type.__hmrId; + let record = map.get(id); + if (!record) { + createRecord(id, instance.type); + record = map.get(id); + } + record.instances.add(instance); +} +function unregisterHMR(instance) { + map.get(instance.type.__hmrId).instances.delete(instance); +} +function createRecord(id, initialDef) { + if (map.has(id)) { + return false; + } + map.set(id, { + initialDef: normalizeClassComponent(initialDef), + instances: /* @__PURE__ */ new Set() + }); + return true; +} +function normalizeClassComponent(component) { + return isClassComponent(component) ? component.__vccOpts : component; +} +function rerender(id, newRender) { + const record = map.get(id); + if (!record) { + return; + } + record.initialDef.render = newRender; + [...record.instances].forEach((instance) => { + if (newRender) { + instance.render = newRender; + normalizeClassComponent(instance.type).render = newRender; + } + instance.renderCache = []; + isHmrUpdating = true; + if (!(instance.job.flags & 8)) { + instance.update(); + } + isHmrUpdating = false; + }); +} +function reload(id, newComp) { + const record = map.get(id); + if (!record) return; + newComp = normalizeClassComponent(newComp); + updateComponentDef(record.initialDef, newComp); + const instances = [...record.instances]; + for (let i = 0; i < instances.length; i++) { + const instance = instances[i]; + const oldComp = normalizeClassComponent(instance.type); + let dirtyInstances = hmrDirtyComponents.get(oldComp); + if (!dirtyInstances) { + if (oldComp !== record.initialDef) { + updateComponentDef(oldComp, newComp); + } + hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set()); + } + dirtyInstances.add(instance); + instance.appContext.propsCache.delete(instance.type); + instance.appContext.emitsCache.delete(instance.type); + instance.appContext.optionsCache.delete(instance.type); + if (instance.ceReload) { + dirtyInstances.add(instance); + instance.ceReload(newComp.styles); + dirtyInstances.delete(instance); + } else if (instance.parent) { + queueJob(() => { + if (!(instance.job.flags & 8)) { + isHmrUpdating = true; + instance.parent.update(); + isHmrUpdating = false; + dirtyInstances.delete(instance); + } + }); + } else if (instance.appContext.reload) { + instance.appContext.reload(); + } else if (typeof window !== "undefined") { + window.location.reload(); + } else { + console.warn( + "[HMR] Root or manually mounted instance modified. Full reload required." + ); + } + if (instance.root.ce && instance !== instance.root) { + instance.root.ce._removeChildStyle(oldComp); + } + } + queuePostFlushCb(() => { + hmrDirtyComponents.clear(); + }); +} +function updateComponentDef(oldComp, newComp) { + extend(oldComp, newComp); + for (const key in oldComp) { + if (key !== "__file" && !(key in newComp)) { + delete oldComp[key]; + } + } +} +function tryWrap(fn) { + return (id, arg) => { + try { + return fn(id, arg); + } catch (e) { + console.error(e); + console.warn( + `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` + ); + } + }; +} +var devtools$1; +var buffer = []; +var devtoolsNotInstalled = false; +function emit$1(event, ...args) { + if (devtools$1) { + devtools$1.emit(event, ...args); + } else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } +} +function setDevtoolsHook$1(hook, target) { + var _a, _b; + devtools$1 = hook; + if (devtools$1) { + devtools$1.enabled = true; + buffer.forEach(({ event, args }) => devtools$1.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 + // eslint-disable-next-line no-restricted-syntax + !((_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$1(newHook, target); + }); + setTimeout(() => { + if (!devtools$1) { + 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 + }); +} +function devtoolsUnmountApp(app) { + emit$1("app:unmount", app); +} +var devtoolsComponentAdded = createDevtoolsComponentHook( + "component:added" + /* COMPONENT_ADDED */ +); +var devtoolsComponentUpdated = createDevtoolsComponentHook( + "component:updated" + /* COMPONENT_UPDATED */ +); +var _devtoolsComponentRemoved = createDevtoolsComponentHook( + "component:removed" + /* COMPONENT_REMOVED */ +); +var devtoolsComponentRemoved = (component) => { + if (devtools$1 && typeof devtools$1.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !devtools$1.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } +}; +function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); + }; +} +var devtoolsPerfStart = createDevtoolsPerformanceHook( + "perf:start" + /* PERFORMANCE_START */ +); +var devtoolsPerfEnd = 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 + ); +} +var currentRenderingInstance = null; +var currentScopeId = null; +function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; +} +function pushScopeId(id) { + currentScopeId = id; +} +function popScopeId() { + currentScopeId = null; +} +var withScopeId = (_id) => withCtx; +function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + if (true) { + devtoolsComponentUpdated(ctx); + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; +} +function validateDirectiveName(name) { + if (isBuiltInDirective(name)) { + warn$1("Do not use built-in directive ids as custom directive id: " + name); + } +} +function withDirectives(vnode, directives) { + if (currentRenderingInstance === null) { + warn$1(`withDirectives can only be used inside render functions.`); + return vnode; + } + const instance = getComponentPublicInstance(currentRenderingInstance); + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; + if (dir) { + if (isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + resetTracking(); + } + } +} +function provide(key, value) { + if (true) { + if (!currentInstance || currentInstance.isMounted) { + warn$1(`provide() can only be used inside setup().`); + } + } + if (currentInstance) { + let provides = currentInstance.provides; + const parentProvides = currentInstance.parent && currentInstance.parent.provides; + if (parentProvides === provides) { + provides = currentInstance.provides = Object.create(parentProvides); + } + provides[key] = value; + } +} +function inject(key, defaultValue, treatDefaultAsFactory = false) { + const instance = getCurrentInstance(); + if (instance || currentApp) { + let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0; + if (provides && key in provides) { + return provides[key]; + } else if (arguments.length > 1) { + return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; + } else if (true) { + warn$1(`injection "${String(key)}" not found.`); + } + } else if (true) { + warn$1(`inject() can only be used inside setup() or functional components.`); + } +} +function hasInjectionContext() { + return !!(getCurrentInstance() || currentApp); +} +var ssrContextKey = Symbol.for("v-scx"); +var useSSRContext = () => { + { + const ctx = inject(ssrContextKey); + if (!ctx) { + warn$1( + `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.` + ); + } + return ctx; + } +}; +function watchEffect(effect2, options) { + return doWatch(effect2, null, options); +} +function watchPostEffect(effect2, options) { + return doWatch( + effect2, + null, + true ? extend({}, options, { flush: "post" }) : { flush: "post" } + ); +} +function watchSyncEffect(effect2, options) { + return doWatch( + effect2, + null, + true ? extend({}, options, { flush: "sync" }) : { flush: "sync" } + ); +} +function watch2(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, options = EMPTY_OBJ) { + const { immediate, deep, flush, once } = options; + 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 (once !== void 0) { + warn$1( + `watch() "once" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + } + const baseWatchOptions = extend({}, options); + if (true) baseWatchOptions.onWarn = warn$1; + const runsImmediately = cb && immediate || !cb && flush !== "post"; + let ssrCleanup; + if (isInSSRComponentSetup) { + if (flush === "sync") { + const ctx = useSSRContext(); + ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); + } else if (!runsImmediately) { + const watchStopHandle = () => { + }; + watchStopHandle.stop = NOOP; + watchStopHandle.resume = NOOP; + watchStopHandle.pause = NOOP; + return watchStopHandle; + } + } + const instance = currentInstance; + baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args); + let isPre = false; + if (flush === "post") { + baseWatchOptions.scheduler = (job) => { + queuePostRenderEffect(job, instance && instance.suspense); + }; + } else if (flush !== "sync") { + isPre = true; + baseWatchOptions.scheduler = (job, isFirstRun) => { + if (isFirstRun) { + job(); + } else { + queueJob(job); + } + }; + } + baseWatchOptions.augmentJob = (job) => { + if (cb) { + job.flags |= 4; + } + if (isPre) { + job.flags |= 2; + if (instance) { + job.id = instance.uid; + job.i = instance; + } + } + }; + const watchHandle = watch(source, cb, baseWatchOptions); + if (isInSSRComponentSetup) { + if (ssrCleanup) { + ssrCleanup.push(watchHandle); + } else if (runsImmediately) { + watchHandle(); + } + } + return watchHandle; +} +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; + }; +} +var TeleportEndKey = Symbol("_vte"); +var isTeleport = (type) => type.__isTeleport; +var isTeleportDisabled = (props) => props && (props.disabled || props.disabled === ""); +var isTeleportDeferred = (props) => props && (props.defer || props.defer === ""); +var isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement; +var isTargetMathML = (target) => typeof MathMLElement === "function" && target instanceof MathMLElement; +var resolveTarget = (props, select) => { + const targetSelector = props && props.to; + if (isString(targetSelector)) { + if (!select) { + warn$1( + `Current renderer does not support string target for Teleports. (missing querySelector renderer option)` + ); + return null; + } else { + const target = select(targetSelector); + if (!target && !isTeleportDisabled(props)) { + warn$1( + `Failed to locate Teleport target with selector "${targetSelector}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.` + ); + } + return target; + } + } else { + if (!targetSelector && !isTeleportDisabled(props)) { + warn$1(`Invalid Teleport target: ${targetSelector}`); + } + return targetSelector; + } +}; +var TeleportImpl = { + name: "Teleport", + __isTeleport: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) { + const { + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + o: { insert, querySelector, createText, createComment } + } = internals; + const disabled = isTeleportDisabled(n2.props); + let { shapeFlag, children, dynamicChildren } = n2; + if (isHmrUpdating) { + optimized = false; + dynamicChildren = null; + } + if (n1 == null) { + const placeholder = n2.el = true ? createComment("teleport start") : createText(""); + const mainAnchor = n2.anchor = true ? createComment("teleport end") : createText(""); + insert(placeholder, container, anchor); + insert(mainAnchor, container, anchor); + const mount = (container2, anchor2) => { + if (shapeFlag & 16) { + mountChildren( + children, + container2, + anchor2, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const mountToTarget = () => { + const target = n2.target = resolveTarget(n2.props, querySelector); + const targetAnchor = prepareAnchor(target, n2, createText, insert); + if (target) { + if (namespace !== "svg" && isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace !== "mathml" && isTargetMathML(target)) { + namespace = "mathml"; + } + if (parentComponent && parentComponent.isCE) { + (parentComponent.ce._teleportTargets || (parentComponent.ce._teleportTargets = /* @__PURE__ */ new Set())).add(target); + } + if (!disabled) { + mount(target, targetAnchor); + updateCssVars(n2, false); + } + } else if (!disabled) { + warn$1( + "Invalid Teleport target on mount:", + target, + `(${typeof target})` + ); + } + }; + if (disabled) { + mount(container, mainAnchor); + updateCssVars(n2, true); + } + if (isTeleportDeferred(n2.props)) { + n2.el.__isMounted = false; + queuePostRenderEffect(() => { + mountToTarget(); + delete n2.el.__isMounted; + }, parentSuspense); + } else { + mountToTarget(); + } + } else { + if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) { + queuePostRenderEffect(() => { + TeleportImpl.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + }, parentSuspense); + return; + } + n2.el = n1.el; + n2.targetStart = n1.targetStart; + const mainAnchor = n2.anchor = n1.anchor; + const target = n2.target = n1.target; + const targetAnchor = n2.targetAnchor = n1.targetAnchor; + const wasDisabled = isTeleportDisabled(n1.props); + const currentContainer = wasDisabled ? container : target; + const currentAnchor = wasDisabled ? mainAnchor : targetAnchor; + if (namespace === "svg" || isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace === "mathml" || isTargetMathML(target)) { + namespace = "mathml"; + } + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + currentContainer, + parentComponent, + parentSuspense, + namespace, + slotScopeIds + ); + traverseStaticChildren(n1, n2, false); + } else if (!optimized) { + patchChildren( + n1, + n2, + currentContainer, + currentAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + false + ); + } + if (disabled) { + if (!wasDisabled) { + moveTeleport( + n2, + container, + mainAnchor, + internals, + 1 + ); + } else { + if (n2.props && n1.props && n2.props.to !== n1.props.to) { + n2.props.to = n1.props.to; + } + } + } else { + if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) { + const nextTarget = n2.target = resolveTarget( + n2.props, + querySelector + ); + if (nextTarget) { + moveTeleport( + n2, + nextTarget, + null, + internals, + 0 + ); + } else if (true) { + warn$1( + "Invalid Teleport target on update:", + target, + `(${typeof target})` + ); + } + } else if (wasDisabled) { + moveTeleport( + n2, + target, + targetAnchor, + internals, + 1 + ); + } + } + updateCssVars(n2, disabled); + } + }, + remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) { + const { + shapeFlag, + children, + anchor, + targetStart, + targetAnchor, + target, + props + } = vnode; + if (target) { + hostRemove(targetStart); + hostRemove(targetAnchor); + } + doRemove && hostRemove(anchor); + if (shapeFlag & 16) { + const shouldRemove = doRemove || !isTeleportDisabled(props); + for (let i = 0; i < children.length; i++) { + const child = children[i]; + unmount( + child, + parentComponent, + parentSuspense, + shouldRemove, + !!child.dynamicChildren + ); + } + } + }, + move: moveTeleport, + hydrate: hydrateTeleport +}; +function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) { + if (moveType === 0) { + insert(vnode.targetAnchor, container, parentAnchor); + } + const { el, anchor, shapeFlag, children, props } = vnode; + const isReorder = moveType === 2; + if (isReorder) { + insert(el, container, parentAnchor); + } + if (!isReorder || isTeleportDisabled(props)) { + if (shapeFlag & 16) { + for (let i = 0; i < children.length; i++) { + move( + children[i], + container, + parentAnchor, + 2 + ); + } + } + } + if (isReorder) { + insert(anchor, container, parentAnchor); + } +} +function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { + o: { nextSibling, parentNode, querySelector, insert, createText } +}, hydrateChildren) { + function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) { + vnode2.anchor = hydrateChildren( + nextSibling(node2), + vnode2, + parentNode(node2), + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + vnode2.targetStart = targetStart; + vnode2.targetAnchor = targetAnchor; + } + const target = vnode.target = resolveTarget( + vnode.props, + querySelector + ); + const disabled = isTeleportDisabled(vnode.props); + if (target) { + const targetNode = target._lpa || target.firstChild; + if (vnode.shapeFlag & 16) { + if (disabled) { + hydrateDisabledTeleport( + node, + vnode, + targetNode, + targetNode && nextSibling(targetNode) + ); + } else { + vnode.anchor = nextSibling(node); + let targetAnchor = targetNode; + while (targetAnchor) { + if (targetAnchor && targetAnchor.nodeType === 8) { + if (targetAnchor.data === "teleport start anchor") { + vnode.targetStart = targetAnchor; + } else if (targetAnchor.data === "teleport anchor") { + vnode.targetAnchor = targetAnchor; + target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor); + break; + } + } + targetAnchor = nextSibling(targetAnchor); + } + if (!vnode.targetAnchor) { + prepareAnchor(target, vnode, createText, insert); + } + hydrateChildren( + targetNode && nextSibling(targetNode), + vnode, + target, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } + updateCssVars(vnode, disabled); + } else if (disabled) { + if (vnode.shapeFlag & 16) { + hydrateDisabledTeleport(node, vnode, node, nextSibling(node)); + } + } + return vnode.anchor && nextSibling(vnode.anchor); +} +var Teleport = TeleportImpl; +function updateCssVars(vnode, isDisabled) { + const ctx = vnode.ctx; + if (ctx && ctx.ut) { + let node, anchor; + if (isDisabled) { + node = vnode.el; + anchor = vnode.anchor; + } else { + node = vnode.targetStart; + anchor = vnode.targetAnchor; + } + while (node && node !== anchor) { + if (node.nodeType === 1) node.setAttribute("data-v-owner", ctx.uid); + node = node.nextSibling; + } + ctx.ut(); + } +} +function prepareAnchor(target, vnode, createText, insert) { + const targetStart = vnode.targetStart = createText(""); + const targetAnchor = vnode.targetAnchor = createText(""); + targetStart[TeleportEndKey] = targetAnchor; + if (target) { + insert(targetStart, target); + insert(targetAnchor, target); + } + return targetAnchor; +} +var leaveCbKey = Symbol("_leaveCb"); +var enterCbKey = Symbol("_enterCb"); +function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: /* @__PURE__ */ new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; +} +var TransitionHookValidator = [Function, Array]; +var BaseTransitionPropsValidators = { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator +}; +var recursiveGetSubtree = (instance) => { + const subTree = instance.subTree; + return subTree.component ? recursiveGetSubtree(subTree.component) : subTree; +}; +var BaseTransitionImpl = { + name: `BaseTransition`, + props: BaseTransitionPropsValidators, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + if (!children || !children.length) { + return; + } + const child = findNonCommentChild(children); + const rawProps = toRaw(props); + const { mode } = rawProps; + if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") { + warn$1(`invalid mode: ${mode}`); + } + if (state.isLeaving) { + return emptyPlaceholder(child); + } + const innerChild = getInnerChild$1(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + let enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance, + // #11061, ensure enterHooks is fresh after clone + (hooks) => enterHooks = hooks + ); + if (innerChild.type !== Comment) { + setTransitionHooks(innerChild, enterHooks); + } + let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree); + if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(oldInnerChild, innerChild) && recursiveGetSubtree(instance).type !== Comment) { + let leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); + setTransitionHooks(oldInnerChild, leavingHooks); + if (mode === "out-in" && innerChild.type !== Comment) { + state.isLeaving = true; + leavingHooks.afterLeave = () => { + state.isLeaving = false; + if (!(instance.job.flags & 8)) { + instance.update(); + } + delete leavingHooks.afterLeave; + oldInnerChild = void 0; + }; + return emptyPlaceholder(child); + } else if (mode === "in-out" && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + el[leaveCbKey] = () => { + earlyRemove(); + el[leaveCbKey] = void 0; + delete enterHooks.delayedLeave; + oldInnerChild = void 0; + }; + enterHooks.delayedLeave = () => { + delayedLeave(); + delete enterHooks.delayedLeave; + oldInnerChild = void 0; + }; + }; + } else { + oldInnerChild = void 0; + } + } else if (oldInnerChild) { + oldInnerChild = void 0; + } + return child; + }; + } +}; +function findNonCommentChild(children) { + let child = children[0]; + if (children.length > 1) { + let hasFound = false; + for (const c of children) { + if (c.type !== Comment) { + if (hasFound) { + warn$1( + " can only be used on a single element or component. Use for lists." + ); + break; + } + child = c; + hasFound = true; + if (false) break; + } + } + } + return child; +} +var BaseTransition = BaseTransitionImpl; +function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = /* @__PURE__ */ Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; +} +function resolveTransitionHooks(vnode, props, state, instance, postClone) { + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook3 = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook3(hook, args); + if (isArray(hook)) { + if (hook.every((hook2) => hook2.length <= 1)) done(); + } else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } else { + return; + } + } + if (el[leaveCbKey]) { + el[leaveCbKey]( + true + /* cancelled */ + ); + } + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) { + leavingVNode.el[leaveCbKey](); + } + callHook3(hook, [el]); + }, + enter(el) { + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } else { + return; + } + } + let called = false; + const done = el[enterCbKey] = (cancelled) => { + if (called) return; + called = true; + if (cancelled) { + callHook3(cancelHook, [el]); + } else { + callHook3(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el[enterCbKey] = void 0; + }; + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove2) { + const key2 = String(vnode.key); + if (el[enterCbKey]) { + el[enterCbKey]( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove2(); + } + callHook3(onBeforeLeave, [el]); + let called = false; + const done = el[leaveCbKey] = (cancelled) => { + if (called) return; + called = true; + remove2(); + if (cancelled) { + callHook3(onLeaveCancelled, [el]); + } else { + callHook3(onAfterLeave, [el]); + } + el[leaveCbKey] = void 0; + if (leavingVNodesCache[key2] === vnode) { + delete leavingVNodesCache[key2]; + } + }; + leavingVNodesCache[key2] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } else { + done(); + } + }, + clone(vnode2) { + const hooks2 = resolveTransitionHooks( + vnode2, + props, + state, + instance, + postClone + ); + if (postClone) postClone(hooks2); + return hooks2; + } + }; + return hooks; +} +function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } +} +function getInnerChild$1(vnode) { + if (!isKeepAlive(vnode)) { + if (isTeleport(vnode.type) && vnode.children) { + return findNonCommentChild(vnode.children); + } + return vnode; + } + if (vnode.component) { + return vnode.component.subTree; + } + const { shapeFlag, children } = vnode; + if (children) { + if (shapeFlag & 16) { + return children[0]; + } + if (shapeFlag & 32 && isFunction(children.default)) { + return children.default(); + } + } +} +function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + vnode.transition = hooks; + setTransitionHooks(vnode.component.subTree, hooks); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + } +} +function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); + if (child.type === Fragment) { + if (child.patchFlag & 128) keyedFragmentCount++; + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); + } else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2; + } + } + return ret; +} +function defineComponent(options, extraOptions) { + return isFunction(options) ? ( + // #8236: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + (() => extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; +} +function useId() { + const i = getCurrentInstance(); + if (i) { + return (i.appContext.config.idPrefix || "v") + "-" + i.ids[0] + i.ids[1]++; + } else if (true) { + warn$1( + `useId() is called when there is no active component instance to be associated with.` + ); + } + return ""; +} +function markAsyncBoundary(instance) { + instance.ids = [instance.ids[0] + instance.ids[2]++ + "-", 0, 0]; +} +var knownTemplateRefs = /* @__PURE__ */ new WeakSet(); +function useTemplateRef(key) { + const i = getCurrentInstance(); + const r = shallowRef(null); + if (i) { + const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs; + let desc; + if ((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) { + warn$1(`useTemplateRef('${key}') already exists.`); + } else { + Object.defineProperty(refs, key, { + enumerable: true, + get: () => r.value, + set: (val) => r.value = val + }); + } + } else if (true) { + warn$1( + `useTemplateRef() is called when there is no active component instance to be associated with.` + ); + } + const ret = true ? readonly(r) : r; + if (true) { + knownTemplateRefs.add(ret); + } + return ret; +} +var pendingSetRefMap = /* @__PURE__ */ new WeakMap(); +function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { + if (isArray(rawRef)) { + rawRef.forEach( + (r, i) => setRef( + r, + oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), + parentSuspense, + vnode, + isUnmount + ) + ); + return; + } + if (isAsyncWrapper(vnode) && !isUnmount) { + if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) { + setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree); + } + return; + } + const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el; + const value = isUnmount ? null : refValue; + const { i: owner, r: ref2 } = rawRef; + if (!owner) { + warn$1( + `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.` + ); + return; + } + const oldRef = oldRawRef && oldRawRef.r; + const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs; + const setupState = owner.setupState; + const rawSetupState = toRaw(setupState); + const canSetSetupRef = setupState === EMPTY_OBJ ? NO : (key) => { + if (true) { + if (hasOwn(rawSetupState, key) && !isRef2(rawSetupState[key])) { + warn$1( + `Template ref "${key}" used on a non-ref value. It will not work in the production build.` + ); + } + if (knownTemplateRefs.has(rawSetupState[key])) { + return false; + } + } + return hasOwn(rawSetupState, key); + }; + const canSetRef = (ref22) => { + return !knownTemplateRefs.has(ref22); + }; + if (oldRef != null && oldRef !== ref2) { + invalidatePendingSetRef(oldRawRef); + if (isString(oldRef)) { + refs[oldRef] = null; + if (canSetSetupRef(oldRef)) { + setupState[oldRef] = null; + } + } else if (isRef2(oldRef)) { + if (canSetRef(oldRef)) { + oldRef.value = null; + } + const oldRawRefAtom = oldRawRef; + if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null; + } + } + if (isFunction(ref2)) { + callWithErrorHandling(ref2, owner, 12, [value, refs]); + } else { + const _isString = isString(ref2); + const _isRef = isRef2(ref2); + if (_isString || _isRef) { + const doSet = () => { + if (rawRef.f) { + const existing = _isString ? canSetSetupRef(ref2) ? setupState[ref2] : refs[ref2] : canSetRef(ref2) || !rawRef.k ? ref2.value : refs[rawRef.k]; + if (isUnmount) { + isArray(existing) && remove(existing, refValue); + } else { + if (!isArray(existing)) { + if (_isString) { + refs[ref2] = [refValue]; + if (canSetSetupRef(ref2)) { + setupState[ref2] = refs[ref2]; + } + } else { + const newVal = [refValue]; + if (canSetRef(ref2)) { + ref2.value = newVal; + } + if (rawRef.k) refs[rawRef.k] = newVal; + } + } else if (!existing.includes(refValue)) { + existing.push(refValue); + } + } + } else if (_isString) { + refs[ref2] = value; + if (canSetSetupRef(ref2)) { + setupState[ref2] = value; + } + } else if (_isRef) { + if (canSetRef(ref2)) { + ref2.value = value; + } + if (rawRef.k) refs[rawRef.k] = value; + } else if (true) { + warn$1("Invalid template ref type:", ref2, `(${typeof ref2})`); + } + }; + if (value) { + const job = () => { + doSet(); + pendingSetRefMap.delete(rawRef); + }; + job.id = -1; + pendingSetRefMap.set(rawRef, job); + queuePostRenderEffect(job, parentSuspense); + } else { + invalidatePendingSetRef(rawRef); + doSet(); + } + } else if (true) { + warn$1("Invalid template ref type:", ref2, `(${typeof ref2})`); + } + } +} +function invalidatePendingSetRef(rawRef) { + const pendingSetRef = pendingSetRefMap.get(rawRef); + if (pendingSetRef) { + pendingSetRef.flags |= 8; + pendingSetRefMap.delete(rawRef); + } +} +var hasLoggedMismatchError = false; +var logMismatchError = () => { + if (hasLoggedMismatchError) { + return; + } + console.error("Hydration completed but contains mismatches."); + hasLoggedMismatchError = true; +}; +var isSVGContainer = (container) => container.namespaceURI.includes("svg") && container.tagName !== "foreignObject"; +var isMathMLContainer = (container) => container.namespaceURI.includes("MathML"); +var getContainerType = (container) => { + if (container.nodeType !== 1) return void 0; + if (isSVGContainer(container)) return "svg"; + if (isMathMLContainer(container)) return "mathml"; + return void 0; +}; +var isComment = (node) => node.nodeType === 8; +function createHydrationFunctions(rendererInternals) { + const { + mt: mountComponent, + p: patch, + o: { + patchProp: patchProp2, + createText, + nextSibling, + parentNode, + remove: remove2, + insert, + createComment + } + } = rendererInternals; + const hydrate2 = (vnode, container) => { + if (!container.hasChildNodes()) { + warn$1( + `Attempting to hydrate existing markup but container is empty. Performing full mount instead.` + ); + patch(null, vnode, container); + flushPostFlushCbs(); + container._vnode = vnode; + return; + } + hydrateNode(container.firstChild, vnode, null, null, null); + flushPostFlushCbs(); + container._vnode = vnode; + }; + const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => { + optimized = optimized || !!vnode.dynamicChildren; + const isFragmentStart = isComment(node) && node.data === "["; + const onMismatch = () => handleMismatch( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + isFragmentStart + ); + const { type, ref: ref2, shapeFlag, patchFlag } = vnode; + let domType = node.nodeType; + vnode.el = node; + if (true) { + def(node, "__vnode", vnode, true); + def(node, "__vueParentComponent", parentComponent, true); + } + if (patchFlag === -2) { + optimized = false; + vnode.dynamicChildren = null; + } + let nextNode = null; + switch (type) { + case Text: + if (domType !== 3) { + if (vnode.children === "") { + insert(vnode.el = createText(""), parentNode(node), node); + nextNode = node; + } else { + nextNode = onMismatch(); + } + } else { + if (node.data !== vnode.children) { + warn$1( + `Hydration text mismatch in`, + node.parentNode, + ` + - rendered on server: ${JSON.stringify( + node.data + )} + - expected on client: ${JSON.stringify(vnode.children)}` + ); + logMismatchError(); + node.data = vnode.children; + } + nextNode = nextSibling(node); + } + break; + case Comment: + if (isTemplateNode(node)) { + nextNode = nextSibling(node); + replaceNode( + vnode.el = node.content.firstChild, + node, + parentComponent + ); + } else if (domType !== 8 || isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = nextSibling(node); + } + break; + case Static: + if (isFragmentStart) { + node = nextSibling(node); + domType = node.nodeType; + } + if (domType === 1 || domType === 3) { + nextNode = node; + const needToAdoptContent = !vnode.children.length; + for (let i = 0; i < vnode.staticCount; i++) { + if (needToAdoptContent) + vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data; + if (i === vnode.staticCount - 1) { + vnode.anchor = nextNode; + } + nextNode = nextSibling(nextNode); + } + return isFragmentStart ? nextSibling(nextNode) : nextNode; + } else { + onMismatch(); + } + break; + case Fragment: + if (!isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = hydrateFragment( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + break; + default: + if (shapeFlag & 1) { + if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) { + nextNode = onMismatch(); + } else { + nextNode = hydrateElement( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } else if (shapeFlag & 6) { + vnode.slotScopeIds = slotScopeIds; + const container = parentNode(node); + if (isFragmentStart) { + nextNode = locateClosingAnchor(node); + } else if (isComment(node) && node.data === "teleport start") { + nextNode = locateClosingAnchor(node, node.data, "teleport end"); + } else { + nextNode = nextSibling(node); + } + mountComponent( + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + optimized + ); + if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) { + let subTree; + if (isFragmentStart) { + subTree = createVNode(Fragment); + subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild; + } else { + subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div"); + } + subTree.el = node; + vnode.component.subTree = subTree; + } + } else if (shapeFlag & 64) { + if (domType !== 8) { + nextNode = onMismatch(); + } else { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized, + rendererInternals, + hydrateChildren + ); + } + } else if (shapeFlag & 128) { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + getContainerType(parentNode(node)), + slotScopeIds, + optimized, + rendererInternals, + hydrateNode + ); + } else if (true) { + warn$1("Invalid HostVNode type:", type, `(${typeof type})`); + } + } + if (ref2 != null) { + setRef(ref2, null, parentSuspense, vnode); + } + return nextNode; + }; + const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!vnode.dynamicChildren; + const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode; + const forcePatch = type === "input" || type === "option"; + if (true) { + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + let needCallTransitionHooks = false; + if (isTemplateNode(el)) { + needCallTransitionHooks = needTransition( + null, + // no need check parentSuspense in hydration + transition + ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear; + const content = el.content.firstChild; + if (needCallTransitionHooks) { + const cls = content.getAttribute("class"); + if (cls) content.$cls = cls; + transition.beforeEnter(content); + } + replaceNode(content, el, parentComponent); + vnode.el = el = content; + } + if (shapeFlag & 16 && // skip if element has innerHTML / textContent + !(props && (props.innerHTML || props.textContent))) { + let next = hydrateChildren( + el.firstChild, + vnode, + el, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + let hasWarned2 = false; + while (next) { + if (!isMismatchAllowed( + el, + 1 + /* CHILDREN */ + )) { + if (!hasWarned2) { + warn$1( + `Hydration children mismatch on`, + el, + ` +Server rendered element contains more child nodes than client vdom.` + ); + hasWarned2 = true; + } + logMismatchError(); + } + const cur = next; + next = next.nextSibling; + remove2(cur); + } + } else if (shapeFlag & 8) { + let clientText = vnode.children; + if (clientText[0] === "\n" && (el.tagName === "PRE" || el.tagName === "TEXTAREA")) { + clientText = clientText.slice(1); + } + const { textContent } = el; + if (textContent !== clientText && // innerHTML normalize \r\n or \r into a single \n in the DOM + textContent !== clientText.replace(/\r\n|\r/g, "\n")) { + if (!isMismatchAllowed( + el, + 0 + /* TEXT */ + )) { + warn$1( + `Hydration text content mismatch on`, + el, + ` + - rendered on server: ${textContent} + - expected on client: ${clientText}` + ); + logMismatchError(); + } + el.textContent = vnode.children; + } + } + if (props) { + if (true) { + const isCustomElement = el.tagName.includes("-"); + for (const key in props) { + if (// #11189 skip if this node has directives that have created hooks + // as it could have mutated the DOM in any possible way + !(dirs && dirs.some((d) => d.dir.created)) && propHasMismatch(el, key, props[key], vnode, parentComponent)) { + logMismatchError(); + } + if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers + key[0] === "." || isCustomElement) { + patchProp2(el, key, null, props[key], void 0, parentComponent); + } + } + } else if (props.onClick) { + patchProp2( + el, + "onClick", + null, + props.onClick, + void 0, + parentComponent + ); + } else if (patchFlag & 4 && isReactive(props.style)) { + for (const key in props.style) props.style[key]; + } + } + let vnodeHooks; + if (vnodeHooks = props && props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHooks, parentComponent, vnode); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) { + queueEffectWithSuspense(() => { + vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + } + return el.nextSibling; + }; + const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!parentVNode.dynamicChildren; + const children = parentVNode.children; + const l = children.length; + let hasWarned2 = false; + for (let i = 0; i < l; i++) { + const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]); + const isText = vnode.type === Text; + if (node) { + if (isText && !optimized) { + if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) { + insert( + createText( + node.data.slice(vnode.children.length) + ), + container, + nextSibling(node) + ); + node.data = vnode.children; + } + } + node = hydrateNode( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } else if (isText && !vnode.children) { + insert(vnode.el = createText(""), container); + } else { + if (!isMismatchAllowed( + container, + 1 + /* CHILDREN */ + )) { + if (!hasWarned2) { + warn$1( + `Hydration children mismatch on`, + container, + ` +Server rendered element contains fewer child nodes than client vdom.` + ); + hasWarned2 = true; + } + logMismatchError(); + } + patch( + null, + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + } + } + return node; + }; + const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + const { slotScopeIds: fragmentSlotScopeIds } = vnode; + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + const container = parentNode(node); + const next = hydrateChildren( + nextSibling(node), + vnode, + container, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + if (next && isComment(next) && next.data === "]") { + return nextSibling(vnode.anchor = next); + } else { + logMismatchError(); + insert(vnode.anchor = createComment(`]`), container, next); + return next; + } + }; + const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => { + if (!isMismatchAllowed( + node.parentElement, + 1 + /* CHILDREN */ + )) { + warn$1( + `Hydration node mismatch: +- rendered on server:`, + node, + node.nodeType === 3 ? `(text)` : isComment(node) && node.data === "[" ? `(start of fragment)` : ``, + ` +- expected on client:`, + vnode.type + ); + logMismatchError(); + } + vnode.el = null; + if (isFragment) { + const end = locateClosingAnchor(node); + while (true) { + const next2 = nextSibling(node); + if (next2 && next2 !== end) { + remove2(next2); + } else { + break; + } + } + } + const next = nextSibling(node); + const container = parentNode(node); + remove2(node); + patch( + null, + vnode, + container, + next, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + if (parentComponent) { + parentComponent.vnode.el = vnode.el; + updateHOCHostEl(parentComponent, vnode.el); + } + return next; + }; + const locateClosingAnchor = (node, open = "[", close = "]") => { + let match = 0; + while (node) { + node = nextSibling(node); + if (node && isComment(node)) { + if (node.data === open) match++; + if (node.data === close) { + if (match === 0) { + return nextSibling(node); + } else { + match--; + } + } + } + } + return node; + }; + const replaceNode = (newNode, oldNode, parentComponent) => { + const parentNode2 = oldNode.parentNode; + if (parentNode2) { + parentNode2.replaceChild(newNode, oldNode); + } + let parent = parentComponent; + while (parent) { + if (parent.vnode.el === oldNode) { + parent.vnode.el = parent.subTree.el = newNode; + } + parent = parent.parent; + } + }; + const isTemplateNode = (node) => { + return node.nodeType === 1 && node.tagName === "TEMPLATE"; + }; + return [hydrate2, hydrateNode]; +} +function propHasMismatch(el, key, clientValue, vnode, instance) { + let mismatchType; + let mismatchKey; + let actual; + let expected; + if (key === "class") { + if (el.$cls) { + actual = el.$cls; + delete el.$cls; + } else { + actual = el.getAttribute("class"); + } + expected = normalizeClass(clientValue); + if (!isSetEqual(toClassSet(actual || ""), toClassSet(expected))) { + mismatchType = 2; + mismatchKey = `class`; + } + } else if (key === "style") { + actual = el.getAttribute("style") || ""; + expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue)); + const actualMap = toStyleMap(actual); + const expectedMap = toStyleMap(expected); + if (vnode.dirs) { + for (const { dir, value } of vnode.dirs) { + if (dir.name === "show" && !value) { + expectedMap.set("display", "none"); + } + } + } + if (instance) { + resolveCssVars(instance, vnode, expectedMap); + } + if (!isMapEqual(actualMap, expectedMap)) { + mismatchType = 3; + mismatchKey = "style"; + } + } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) { + if (isBooleanAttr(key)) { + actual = el.hasAttribute(key); + expected = includeBooleanAttr(clientValue); + } else if (clientValue == null) { + actual = el.hasAttribute(key); + expected = false; + } else { + if (el.hasAttribute(key)) { + actual = el.getAttribute(key); + } else if (key === "value" && el.tagName === "TEXTAREA") { + actual = el.value; + } else { + actual = false; + } + expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false; + } + if (actual !== expected) { + mismatchType = 4; + mismatchKey = key; + } + } + if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) { + const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}="${v}"`; + const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on`; + const postSegment = ` + - rendered on server: ${format(actual)} + - expected on client: ${format(expected)} + Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead. + You should fix the source of the mismatch.`; + { + warn$1(preSegment, el, postSegment); + } + return true; + } + return false; +} +function toClassSet(str) { + return new Set(str.trim().split(/\s+/)); +} +function isSetEqual(a, b) { + if (a.size !== b.size) { + return false; + } + for (const s of a) { + if (!b.has(s)) { + return false; + } + } + return true; +} +function toStyleMap(str) { + const styleMap = /* @__PURE__ */ new Map(); + for (const item of str.split(";")) { + let [key, value] = item.split(":"); + key = key.trim(); + value = value && value.trim(); + if (key && value) { + styleMap.set(key, value); + } + } + return styleMap; +} +function isMapEqual(a, b) { + if (a.size !== b.size) { + return false; + } + for (const [key, value] of a) { + if (value !== b.get(key)) { + return false; + } + } + return true; +} +function resolveCssVars(instance, vnode, expectedMap) { + const root = instance.subTree; + if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) { + const cssVars = instance.getCssVars(); + for (const key in cssVars) { + const value = normalizeCssVarValue(cssVars[key]); + expectedMap.set(`--${getEscapedCssVarName(key, false)}`, value); + } + } + if (vnode === root && instance.parent) { + resolveCssVars(instance.parent, instance.vnode, expectedMap); + } +} +var allowMismatchAttr = "data-allow-mismatch"; +var MismatchTypeString = { + [ + 0 + /* TEXT */ + ]: "text", + [ + 1 + /* CHILDREN */ + ]: "children", + [ + 2 + /* CLASS */ + ]: "class", + [ + 3 + /* STYLE */ + ]: "style", + [ + 4 + /* ATTRIBUTE */ + ]: "attribute" +}; +function isMismatchAllowed(el, allowedType) { + if (allowedType === 0 || allowedType === 1) { + while (el && !el.hasAttribute(allowMismatchAttr)) { + el = el.parentElement; + } + } + const allowedAttr = el && el.getAttribute(allowMismatchAttr); + if (allowedAttr == null) { + return false; + } else if (allowedAttr === "") { + return true; + } else { + const list = allowedAttr.split(","); + if (allowedType === 0 && list.includes("children")) { + return true; + } + return list.includes(MismatchTypeString[allowedType]); + } +} +var requestIdleCallback = getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1)); +var cancelIdleCallback = getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id)); +var hydrateOnIdle = (timeout = 1e4) => (hydrate2) => { + const id = requestIdleCallback(hydrate2, { timeout }); + return () => cancelIdleCallback(id); +}; +function elementIsVisibleInViewport(el) { + const { top, left, bottom, right } = el.getBoundingClientRect(); + const { innerHeight, innerWidth } = window; + return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth); +} +var hydrateOnVisible = (opts) => (hydrate2, forEach) => { + const ob = new IntersectionObserver((entries) => { + for (const e of entries) { + if (!e.isIntersecting) continue; + ob.disconnect(); + hydrate2(); + break; + } + }, opts); + forEach((el) => { + if (!(el instanceof Element)) return; + if (elementIsVisibleInViewport(el)) { + hydrate2(); + ob.disconnect(); + return false; + } + ob.observe(el); + }); + return () => ob.disconnect(); +}; +var hydrateOnMediaQuery = (query) => (hydrate2) => { + if (query) { + const mql = matchMedia(query); + if (mql.matches) { + hydrate2(); + } else { + mql.addEventListener("change", hydrate2, { once: true }); + return () => mql.removeEventListener("change", hydrate2); + } + } +}; +var hydrateOnInteraction = (interactions = []) => (hydrate2, forEach) => { + if (isString(interactions)) interactions = [interactions]; + let hasHydrated = false; + const doHydrate = (e) => { + if (!hasHydrated) { + hasHydrated = true; + teardown(); + hydrate2(); + e.target.dispatchEvent(new e.constructor(e.type, e)); + } + }; + const teardown = () => { + forEach((el) => { + for (const i of interactions) { + el.removeEventListener(i, doHydrate); + } + }); + }; + forEach((el) => { + for (const i of interactions) { + el.addEventListener(i, doHydrate, { once: true }); + } + }); + return teardown; +}; +function forEachElement(node, cb) { + if (isComment(node) && node.data === "[") { + let depth = 1; + let next = node.nextSibling; + while (next) { + if (next.nodeType === 1) { + const result = cb(next); + if (result === false) { + break; + } + } else if (isComment(next)) { + if (next.data === "]") { + if (--depth === 0) break; + } else if (next.data === "[") { + depth++; + } + } + next = next.nextSibling; + } + } else { + cb(node); + } +} +var isAsyncWrapper = (i) => !!i.type.__asyncLoader; +function defineAsyncComponent(source) { + if (isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + hydrate: hydrateStrategy, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve2, reject) => { + const userRetry = () => resolve2(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (!comp) { + warn$1( + `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` + ); + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + if (comp && !isObject(comp) && !isFunction(comp)) { + throw new Error(`Invalid async component load result: ${comp}`); + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + __asyncHydrate(el, instance, hydrate2) { + let patched = false; + (instance.bu || (instance.bu = [])).push(() => patched = true); + const performHydrate = () => { + if (patched) { + if (true) { + warn$1( + `Skipping lazy hydration for component '${getComponentName(resolvedComp) || resolvedComp.__file}': it was updated before lazy hydration performed.` + ); + } + return; + } + hydrate2(); + }; + const doHydrate = hydrateStrategy ? () => { + const teardown = hydrateStrategy( + performHydrate, + (cb) => forEachElement(el, cb) + ); + if (teardown) { + (instance.bum || (instance.bum = [])).push(teardown); + } + } : performHydrate; + if (resolvedComp) { + doHydrate(); + } else { + load().then(() => !instance.isUnmounted && doHydrate()); + } + }, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + markAsyncBoundary(instance); + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + ); + }; + if (suspensible && instance.suspense || isInSSRComponentSetup) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = ref(false); + const error = ref(); + const delayed = ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + instance.parent.update(); + } + }).catch((err) => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createInnerComp( + loadingComponent, + instance + ); + } + }; + } + }); +} +function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; +} +var isKeepAlive = (vnode) => vnode.type.__isKeepAlive; +var KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const sharedContext = instance.ctx; + if (!sharedContext.renderer) { + return () => { + const children = slots.default && slots.default(); + return children && children.length === 1 ? children[0] : children; + }; + } + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + if (true) { + instance.__v_cache = cache; + } + const parentSuspense = instance.suspense; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; + const storageContainer = createElement("div"); + sharedContext.activate = (vnode, container, anchor, namespace, optimized) => { + const instance2 = vnode.component; + move(vnode, container, anchor, 0, parentSuspense); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + namespace, + vnode.slotScopeIds, + optimized + ); + queuePostRenderEffect(() => { + instance2.isDeactivated = false; + if (instance2.a) { + invokeArrayFns(instance2.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + }, parentSuspense); + if (true) { + devtoolsComponentAdded(instance2); + } + }; + sharedContext.deactivate = (vnode) => { + const instance2 = vnode.component; + invalidateMount(instance2.m); + invalidateMount(instance2.a); + move(vnode, storageContainer, null, 1, parentSuspense); + queuePostRenderEffect(() => { + if (instance2.da) { + invokeArrayFns(instance2.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + instance2.isDeactivated = true; + }, parentSuspense); + if (true) { + devtoolsComponentAdded(instance2); + } + if (true) { + instance2.__keepAliveStorageContainer = storageContainer; + } + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : vnode.type + ); + if (name && !filter(name)) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (cached && (!current || !isSameVNodeType(cached, current))) { + unmount(cached); + } else if (current) { + resetShapeFlag(current); + } + cache.delete(key); + keys.delete(key); + } + watch2( + () => [props.include, props.exclude], + ([include, exclude]) => { + include && pruneCache((name) => matches(include, name)); + exclude && pruneCache((name) => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: "post", deep: true } + ); + let pendingCacheKey = null; + const cacheSubtree = () => { + if (pendingCacheKey != null) { + if (isSuspense(instance.subTree.type)) { + queuePostRenderEffect(() => { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + }, instance.subTree.suspense); + } else { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach((cached) => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type && cached.key === vnode.key) { + resetShapeFlag(vnode); + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return current = null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + if (true) { + warn$1(`KeepAlive should contain exactly one component child.`); + } + current = null; + return children; + } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + if (vnode.type === Comment) { + current = null; + return vnode; + } + const comp = vnode.type; + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); + const { include, exclude, max } = props; + if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + vnode.shapeFlag &= -257; + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128) { + rawVNode.ssContent = vnode; + } + } + pendingCacheKey = key; + if (cachedVNode) { + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + setTransitionHooks(vnode, vnode.transition); + } + vnode.shapeFlag |= 512; + keys.delete(key); + keys.add(key); + } else { + keys.add(key); + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + vnode.shapeFlag |= 256; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } +}; +var KeepAlive = KeepAliveImpl; +function matches(pattern, name) { + if (isArray(pattern)) { + return pattern.some((p2) => matches(p2, name)); + } else if (isString(pattern)) { + return pattern.split(",").includes(name); + } else if (isRegExp(pattern)) { + pattern.lastIndex = 0; + return pattern.test(name); + } + return false; +} +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 resetShapeFlag(vnode) { + vnode.shapeFlag &= -257; + vnode.shapeFlag &= -513; +} +function getInnerChild(vnode) { + return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; +} +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + 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 if (true) { + const apiName = toHandlerKey(ErrorTypeStrings$1[type].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(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` + ); + } +} +var createHook = (lifecycle) => (hook, target = currentInstance) => { + if (!isInSSRComponentSetup || lifecycle === "sp") { + injectHook(lifecycle, (...args) => hook(...args), target); + } +}; +var onBeforeMount = createHook("bm"); +var onMounted = createHook("m"); +var onBeforeUpdate = createHook( + "bu" +); +var onUpdated = createHook("u"); +var onBeforeUnmount = createHook( + "bum" +); +var onUnmounted = createHook("um"); +var onServerPrefetch = createHook( + "sp" +); +var onRenderTriggered = createHook("rtg"); +var onRenderTracked = createHook("rtc"); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} +var COMPONENTS = "components"; +var DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +var NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + ); + if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + 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 if (true) { + 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))]); +} +function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + const sourceIsArray = isArray(source); + if (sourceIsArray || isString(source)) { + const sourceIsReactiveArray = sourceIsArray && isReactive(source); + let needsWrap = false; + let isReadonlySource = false; + if (sourceIsReactiveArray) { + needsWrap = !isShallow(source); + isReadonlySource = isReadonly(source); + source = shallowReadArray(source); + } + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem( + needsWrap ? isReadonlySource ? toReadonly(toReactive(source[i])) : toReactive(source[i]) : source[i], + i, + void 0, + cached && cached[i] + ); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source)) { + warn$1(`The v-for range expect an integer value but got ${source}.`); + } + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } else if (isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; +} +function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; +} +function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) { + const hasProps = Object.keys(props).length > 0; + if (name !== "default") props.name = name; + return openBlock(), createBlock( + Fragment, + null, + [createVNode("slot", props, fallback && fallback())], + hasProps ? -2 : 64 + ); + } + let slot = slots[name]; + if (slot && slot.length > 1) { + warn$1( + `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` + ); + slot = () => []; + } + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key; + const rendered = createBlock( + Fragment, + { + key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content + (!validSlotContent && fallback ? "_fb" : "") + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; +} +function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) return true; + if (child.type === Comment) return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; +} +function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + if (!isObject(obj)) { + warn$1(`v-on with no argument expects an object value.`); + return ret; + } + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key]; + } + return ret; +} +var getPublicInstance = (i) => { + if (!i) return null; + if (isStatefulComponent(i)) return getComponentPublicInstance(i); + return getPublicInstance(i.parent); +}; +var publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => true ? shallowReadonly(i.props) : i.props, + $attrs: (i) => true ? shallowReadonly(i.attrs) : i.attrs, + $slots: (i) => true ? shallowReadonly(i.slots) : i.slots, + $refs: (i) => true ? shallowReadonly(i.refs) : i.refs, + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $host: (i) => i.ce, + $emit: (i) => i.emit, + $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type, + $forceUpdate: (i) => i.f || (i.f = () => { + queueJob(i.update); + }), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP + }) +); +var isReservedPrefix = (key) => key === "_" || key === "$"; +var hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); +var PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + if (key === "__v_skip") { + return true; + } + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key === "__isVue") { + return true; + } + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + 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 (__VUE_OPTIONS_API__ && data !== EMPTY_OBJ && hasOwn(data, key)) { + accessCache[key] = 2; + return data[key]; + } else if (hasOwn(props, key)) { + accessCache[key] = 3; + return props[key]; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4; + return ctx[key]; + } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) { + accessCache[key] = 0; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + track(instance.attrs, "get", ""); + markAttrsAccessed(); + } 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 + + \ No newline at end of file diff --git a/ONIModTutorial/ONIModTutorial-main/.vitepress/theme/components/LearningTimeline.vue b/ONIModTutorial/ONIModTutorial-main/.vitepress/theme/components/LearningTimeline.vue new file mode 100644 index 0000000..02147d0 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/.vitepress/theme/components/LearningTimeline.vue @@ -0,0 +1,35 @@ + + + + + \ No newline at end of file diff --git a/ONIModTutorial/ONIModTutorial-main/.vitepress/theme/components/SteamNews.vue b/ONIModTutorial/ONIModTutorial-main/.vitepress/theme/components/SteamNews.vue new file mode 100644 index 0000000..f53cc06 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/.vitepress/theme/components/SteamNews.vue @@ -0,0 +1,292 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/ONIModTutorial/ONIModTutorial-main/.vitepress/theme/components/WorkshopList.vue b/ONIModTutorial/ONIModTutorial-main/.vitepress/theme/components/WorkshopList.vue new file mode 100644 index 0000000..0752df6 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/.vitepress/theme/components/WorkshopList.vue @@ -0,0 +1,290 @@ + + + + + diff --git a/ONIModTutorial/ONIModTutorial-main/.vitepress/theme/custom.css b/ONIModTutorial/ONIModTutorial-main/.vitepress/theme/custom.css new file mode 100644 index 0000000..fd64def --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/.vitepress/theme/custom.css @@ -0,0 +1,61 @@ +/** + * VitePress 布局宽度自定义 + */ + +:root { + /* 1. 文档内容的最大宽度 (默认是 1152px) */ + /* 设置为 1280px 或 1440px 可以让代码块更宽,减少横向滚动条 */ + --vp-content-max-width: 1280px; + + /* 2. 整个页面的最大宽度 (包括侧边栏和正文) */ + --vp-layout-max-width: 1600px; + + /* --vp-c-brand-1: #8f2a3b; + --vp-c-brand-2: #8f2a3b; */ +} + + +.VPHero .name { + /* 撤销默认的渐变色背景 */ + background: none !important; + -webkit-background-clip: initial !important; + background-clip: initial !important; + -webkit-text-fill-color: initial !important; +} + + +/* 强制覆盖首页标题的渐变效果 */ +.VPHero .name span.color-w { + background: none !important; + -webkit-text-fill-color: initial !important; + color: var(--vp-c-text-1) !important; +} + +.VPHero .name span.color-r { + background: none !important; + -webkit-text-fill-color: #ff4d4f !important; /* 红色 */ + color: #ff4d4f !important; +} + +/* 正文里的颜色 */ +span.color-white { + color: #ffffff !important; +} +span.color-white { + color: #ff4d4f !important; +} + + + +/* 如果你希望“代码块”在宽屏下表现更好,可以加上这个微调 */ +@media (min-width: 1280px) { + .VPDoc .container { + /* 这里的 margin 会自动平衡左右空间 */ + margin: 0 auto; + } +} + +/* 3. (可选) 首页 Hero 部分的宽度调整 */ +:root { + --vp-home-hero-max-width: 1152px; +} \ No newline at end of file diff --git a/ONIModTutorial/ONIModTutorial-main/.vitepress/theme/index.mts b/ONIModTutorial/ONIModTutorial-main/.vitepress/theme/index.mts new file mode 100644 index 0000000..57e761b --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/.vitepress/theme/index.mts @@ -0,0 +1,19 @@ +// .vitepress/theme/index.mts +import DefaultTheme from 'vitepress/theme' +import './custom.css' // 这里的引入才是有效的 +// @ts-ignore +import Contributors from './components/Contributors.vue' +import SteamNews from './components/SteamNews.vue' +import LearningTimeline from './components/LearningTimeline.vue' +import WorkshopList from './components/WorkshopList.vue' + +export default { + extends: DefaultTheme, + enhanceApp({ app }: any) { + app.component('Contributors', Contributors) + app.component('SteamNews', SteamNews) + app.component('LearningTimeline', LearningTimeline) + app.component('WorkshopList', WorkshopList) + } + +} diff --git a/ONIModTutorial/ONIModTutorial-main/README.md b/ONIModTutorial/ONIModTutorial-main/README.md new file mode 100644 index 0000000..16a8dd4 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/README.md @@ -0,0 +1,115 @@ +

+

🧩 ONIModTutorial

+ + [![VitePress](https://img.shields.io/badge/Docs-VitePress-4FC08D)](https://vitepress.vuejs.org/) + +_📘 《缺氧(Oxygen Not Included)》Mod 开发教程 · 从入门到进阶 · 长期维护_ + +
+ +--- + +## 🎯 仓库目标 + +- 帮助新人快速入门 ONI Mod 开发 +- 系统整理缺氧 Mod 常用技术与思路 +- 记录 Harmony 补丁、反编译、组件分析等实战经验 +- 作为长期维护的知识库,而不是零散笔记 + +--- + +## 📚 教程内容概览 + +教程内容主要包括(并持续补充中): + +- 缺氧 Mod 开发基础认知 +- 开发环境搭建 +- Mod 基本结构与加载流程 +- C# 基础(面向 ONI Mod) +- Harmony 补丁详解与实战 +- dnSpy / 反编译分析游戏源码 +- 常见系统解析(建筑、复制人、植物、逻辑、UI 等) +- 实用代码示例与踩坑记录 + +--- + +## 📁 仓库结构说明 + +- content/ + 教程正文内容,所有章节均以 `.md` 文件形式存在 + - preface.md —— 教程引言 + - csharp-basics.md —— C# 基础(ONI Mod 向) + - harmony-reference.md —— Harmony 补丁整理与示例 + - 其他章节持续增加中… + +- .github/workflows/ + GitHub Actions 配置(如自动构建文档) + +- vitepress/ + VitePress 文档站点配置 + +- public/ + 文档站点用到的静态资源 + +--- + +## 🚀 本地测试 + +### 直接阅读(推荐) + +- 直接在 GitHub 中按顺序阅读 `content` 目录下的 Markdown 文件即可 + +### 本地测试运行文档站点(可选) + +1. 安装 Node.js(推荐使用 v16 及以上长期支持版本【LTS】windows系统确保安装时勾选添加到 PATH) + [Node.js下载及安装](https://nodejs.org/zh-cn/download) + + 安装完成后,打开终端(如 bash、PowerShell、CMD 等),输入 `node -v` 确认安装成功并正确添加Node到系统环境变量中。 + +2. 克隆仓库 + + ``` + git clone https://github.com/ChiYuKe/ONIModTutorial.git + ``` + +3. 安装依赖 + + ``` + npm install + ``` + +4. 启动本地文档 + + ``` + npm run dev + ``` + +5. 浏览器访问终端提示的本地地址,通常是 `http://localhost:端口号/ONIModTutorial/` + ``` + http://localhost:5173/ONIModTutorial/ + ``` +6. 在浏览器尽情阅读 + +--- + +## 🧠 适合人群 + +✔ 想制作《缺氧》Mod 的玩家 +✔ 有一定 C# 基础,想深入理解 ONI 内部逻辑 +✔ 希望系统学习 Harmony Patch 的开发者 +✔ 已在做 Mod,但想补齐底层理解的人 + +--- + +## 🤝 贡献说明 + +欢迎任何形式的贡献,包括但不限于: + +- 修正教程错误 +- 补充新的章节 +- 提供实战案例 +- 优化结构和表述 + +你可以通过 **Issue** 或 **Pull Request** 提交改动。 + +--- diff --git a/ONIModTutorial/ONIModTutorial-main/announcements.md b/ONIModTutorial/ONIModTutorial-main/announcements.md new file mode 100644 index 0000000..df747cc --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/announcements.md @@ -0,0 +1,7 @@ +::: info 提示 +下方动态实时同步自 Steam 官方,若图片加载较慢请稍候。 +::: + + + + \ No newline at end of file diff --git a/ONIModTutorial/ONIModTutorial-main/api-examples.md b/ONIModTutorial/ONIModTutorial-main/api-examples.md new file mode 100644 index 0000000..d261b61 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/api-examples.md @@ -0,0 +1,3 @@ +--- +outline: deep +--- diff --git a/ONIModTutorial/ONIModTutorial-main/asset-extraction.md b/ONIModTutorial/ONIModTutorial-main/asset-extraction.md new file mode 100644 index 0000000..4e6eb33 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/asset-extraction.md @@ -0,0 +1,109 @@ +# 🎨 游戏资产提取 (Asset Extraction) + +在进行《缺氧》(Oxygen Not Included)的 Mod 开发时,获取原版资产(贴图、动画、文本)是进行二次创作和保持视觉一致性的基础。本章将详细介绍开发者常用的资产解包与处理工具。 + +## 一 . 资源解包 + +### 1.1 AssetRipper + +目前处理 Unity 引擎资源最强大的开源工具之一。它不仅能提取静态贴图,还能在一定程度上还原 Unity 项目的资源目录结构。 + +* **[📥 官方仓库 (GitHub Releases)](https://github.com/AssetRipper/AssetRipper/releases)** +* **适用范围**:UI 图标(Sprite)、建筑贴图(Texture2D)、音频文件(AudioClip)... 。 + +#### 🛠️ 提取指南 + +* **载入资源:** 运行 `AssetRipper` ,选择游戏的 `OxygenNotIncluded_Data` 文件夹。 +* **资源导出:** 在视图中,通过 `Export`导出全部资源。 + +### 1.2 AssetStudio +如果你不需要还原整个项目,只想快速找到某几张特定的贴图、立绘或听一段音频,AssetStudio 是更高效的选择。它支持实时预览,让你在导出前就能看到资源内容。 + +* **[📥 官方仓库 (GitHub Releases)](https://github.com/aelurum/AssetStudio/releases)** + +* **适用范围**:快速筛选特定贴图、导出 3D 模型(Mesh)、预览动画片段... 。 + +#### 🛠️ 提取指南 +* **载入资源:** 运行 `AssetStudioModGUI` ,点击菜单栏的 `File` -> `Load Folder` ,选择游戏的 `OxygenNotIncluded_Data` 文件夹。 +* **资源导出:** 点击 `Filter Type` 勾选你需要的类型(如 `Texture2D` `Sprite` `TexAsset`),最后 `Export` -> `Filtered assets` 导出勾选的类型 + + + +### 💡 进阶技巧:如何选择工具? +| 需求场景 | 推荐工具| 优势 | +|----------|----------|----------| +| 我想研究游戏的 UI 布局或逻辑 | `AssetRipper` | 能够尽可能还原 `.prefab` 和文件夹结构。 | +| 我只想拿到动画纹理资源 | `AssetStudio` | 无需等待漫长的导出过程,导出方便 | + + + + +--- + +## 二 . 动画处理 + +《缺氧》的动态表现基于 Klei 自定义的 **KAnim** 系统,而非 Unity 原生动画。每个动画对象由三个核心文件组成:`图集(*_0.png)`、`结构(*_build.bytes)` 和 `序列(*_anim.bytes)`。 + +### 🛠️ 推荐转换工具 + +#### kanimal-SE (KAnim转换) +**kanimal-SE** 是处理 KAnim 的标准工具,支持将字节流转换为可编辑的 SCML 格式。 +* **[📥 官方仓库 (kanimal-SE)](https://github.com/skairunner/kanimal-SE)** + +::: code-group +```powershell [Windows (PowerShell)] +# 解包:将 KAnim 转换为可编辑的 SCML (用于 Spriter 编辑) +.\kanimal-cli.exe scml [file_name].png [file_name]_anim.bytes [file_name]_build.bytes + +# 打包:将修改后的 SCML 重新编译为游戏可读的 KAnim +.\kanimal-cli.exe kanim [file_name].scml +``` +::: + + +::: tip 🚀 推荐:KAnim_GUI (可视化操作) +**KAnim_GUI** 对 `kanimal-SE` 提供了极简的图形化界面,支持快速解压和重组 KAnim,极大地降低了命令行操作的门槛。需要将 `kanimal-SE(kanimal-cli.exe)` 放入 `KAnim_GUI(KAnimGui.exe)` 同目录下才能正常工作 +* **[📥 官方仓库 (KAnim_GUI)](https://github.com/ChiYuKe/KAnim_GUI)** + +::: + +--- + +## 三 . 多语言与文本处理 + +无论是寻找建筑的 `PrefabID`,还是为 Mod 增加多语言支持,都需要处理 `.po` 格式的翻译文件。 + +### 🔍 文本利器:Poedit +* **[📥 官方下载 (Poedit 官网)](https://poedit.net/)** + +::: info 实战技巧 +* **快速溯源**:使用 `Ctrl + F` 搜索游戏内的中文词条(如“电解器”),即可快速定位其对应的 `StringKey`(例如:`STRINGS.BUILDINGS.PREFABS.ELECTROLYZER.NAME`)。 +* **规范化翻译**:使用 Poedit 维护你的 `zh.po` 文件,可以确保翻译格式完全符合 Klei 的底层加载规范,避免乱码。 +::: + +--- + +## ⚠️ 开发准则与约束 + +::: danger 法律声明:严禁商业用途 +所有提取自《缺氧》的游戏资产(包括但不限于原画、音效、动画脚本、底层代码)所有权均归 **Klei Entertainment** 所有,严禁用于任何形式的商业盈利行为。 +::: + +::: warning 尊重版权 +* **禁止二次分发**:请勿在公开平台分发未经大幅修改的官方原始资源包。 +* **致谢声明**:若你的作品基于官方素材修改,请在说明文档中按照惯例标注 `"Credit to Klei Entertainment"`。 +::: + +--- + +
diff --git a/ONIModTutorial/ONIModTutorial-main/build-and-debug.md b/ONIModTutorial/ONIModTutorial-main/build-and-debug.md new file mode 100644 index 0000000..e69de29 diff --git a/ONIModTutorial/ONIModTutorial-main/community-guidelines.md b/ONIModTutorial/ONIModTutorial-main/community-guidelines.md new file mode 100644 index 0000000..c2b8c59 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/community-guidelines.md @@ -0,0 +1,37 @@ +# 开源协议与社区规范 + +在开发《缺氧》Mod 并将其发布至 Steam 创意工坊之前,请务必阅读并遵守科雷(Klei)官方发布的通用准则。 + +## 官方准则 (Klei Official Guidelines) + +> [!IMPORTANT] +> **官方原文链接:** [General Mod and & UGC Guidelines](https://support.klei.com/hc/en-us/articles/360029556052-General-Mod-and-UGC-Guidelines) + +### 1. 允许的 Mod 类型 +* **新实体**:包括自定义美术资产和特殊能力的各色角色。 +* **平衡调整**:对现有角色、建筑或物品的数值微调。 +* **逻辑修改**:改变生物行为、世界生成规则或 UI 界面。 +* **新机制**:为玩家提供全新的游戏挑战或功能扩展。 + +### 2. 严禁行为 (Prohibited) +为了维护社区环境,以下行为是被严格禁止的,违规可能导致 Mod 被下架: +* **侵权与盗用**:未经授权使用他人作品,或包含未授权的版权材料(如其他游戏的素材)。 +* **破解与绕过**:试图解锁 DLC、皮肤或绕过付费所有权验证。 +* **代码混淆**:**禁止加密或模糊化代码**。Klei 官方和玩家必须能够审计代码以确保安全性。 +* **商业化/付费墙**:严禁任何形式的付费 Mod、付费皮肤或“赞助者提前体验”等金钱交易。 + +### 3. 开发礼仪 (Etiquette) +* **默认不授权**:若原作者未明确说明,一律视为“未获得授权”。 +* **二次开发**:引用或修改他人作品前请务必联系作者,并注明出处。 +* **维护义务**:作者没有义务必须更新 Mod,但建议在发布时提供完整的说明和截图。 +* **关于弃坑**:若原作者未明确禁止且 Mod 已失效,社区成员可以进行兼容性更新并重新上传,但需尊重原作者的移除请求。 + +--- + +## 开源协议建议 + +对于你自己的代码,我建议在 GitHub 上选择一个开源协议(如 **MIT** 或 **GPL-3.0**)。 +* **MIT**:最宽松,别人可以随意使用你的代码,只需保留你的署名。 +* **GPL-3.0**:最严格,如果别人用了你的代码,他们的 Mod 也必须开源。 + +**尊重他人劳动成果,是社区良性发展的基石。** diff --git a/ONIModTutorial/ONIModTutorial-main/content/buildings.md b/ONIModTutorial/ONIModTutorial-main/content/buildings.md new file mode 100644 index 0000000..e69de29 diff --git a/ONIModTutorial/ONIModTutorial-main/content/creatures.md b/ONIModTutorial/ONIModTutorial-main/content/creatures.md new file mode 100644 index 0000000..e69de29 diff --git a/ONIModTutorial/ONIModTutorial-main/content/elements.md b/ONIModTutorial/ONIModTutorial-main/content/elements.md new file mode 100644 index 0000000..e69de29 diff --git a/ONIModTutorial/ONIModTutorial-main/content/items.md b/ONIModTutorial/ONIModTutorial-main/content/items.md new file mode 100644 index 0000000..a2ae41d --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/content/items.md @@ -0,0 +1,175 @@ +# 🚀 编写第一个 物品 + +本章将带你亲手编写一个物品或者说掉落物。 + +--- + +## 一 . 准备工作 + +在开始之前,你需要手动创建一个文件夹,用于存放你开发的 Mod 文件: +* **路径**:`%USERPROFILE%\Documents\Klei\OxygenNotIncluded\mods\` +* **操作**:在此目录下创建一个名为 **`Dev`** 的文件夹。 + +--- + +## 二 . 创建项目 + +1. 打开 **Visual Studio 2022**。 +2. 选择 **创建新项目** -> 搜索 **类库**(建议选择支持 **.NET Standard 2.1** 的类库模板)-> 点击下一步。 +3. **项目名称**:输入 `MyFirstItem`。 +4. **目标框架**:务必选择 **.NET Standard 2.1**。 + +--- + +## 三 . 导入游戏核心库 (References) + +你需要把游戏的 `.dll` 文件“介绍”给 Visual Studio,它才能理解游戏代码。 + +1. 在右侧 **解决方案资源管理器** 中,当然你的可能在左侧,右键点击 **引用 (References)** -> **添加引用**。 +2. 点击 **浏览**,进入游戏目录: + `...\steamapps\common\OxygenNotIncluded\OxygenNotIncluded_Data\Managed\` +3. **选中并添加以下文件:** + * `Assembly-CSharp.dll` + * `Assembly-CSharp-firstpass.dll` + * `0Harmony.dll` + * `UnityEngine.dll` + * `UnityEngine.CoreModule.dll` + +--- + + +## 四 . 编写代码 + +在我们的工程中,创建如下 `.cs` 文件结构: + +``` 文件结构 + +MyFirstItem/ +├── Patch.cs # Harmony补丁入口文件,用来在游戏加载时注册你的Mod逻辑 +├── MyFirstItemConfig.cs # 物品的定义文件(ID、动画、属性等核心配置) +├── STRINGS.cs # 本地化文本(名称、描述、效果说明) +└── MyFirstItem.cs # 自定义组件逻辑(功能代码实现) + +``` + +--- + +### MyFirstItemConfig.cs 的处理 + +我们需要先继承 `IEntityConfig`。 + +在 Oxygen Not Included 中: + +> `IEntityConfig` 是用来“定义一个实体”的接口。 + +简单说: + +> 它告诉游戏:我要注册一个新的实体,请按这些规则创建它。 + +--- + +### 基础结构 + +```csharp +using System.Collections.Generic; +using UnityEngine; + +namespace ONIModTutorialCode +{ + public class MyFirstItemConfig : IEntityConfig + { + public GameObject CreatePrefab() + { + + } + + public void OnPrefabInit(GameObject inst) + { + // 预制体初始化时调用 + } + + public void OnSpawn(GameObject inst) + { + // 实例生成时调用(生成到地图上才会触发) + } + + public string[] GetDlcIds() + { + return null; // 所有 DLC 可用 + } + } +} +``` + +--- + +### 实现 CreatePrefab() + +在 `CreatePrefab()` 中,我们使用 `EntityTemplates.CreateLooseEntity()` 来注册它。 + +这里的动画资源我们使用仙水掌的 `cactus_kanim` 中的 `idle_empty` 状态。 + +常规掉落物通常使用 `"object"`。 + +(这里为什么是 `idle_empty` 而不是 `object`,我们会在后面说明。) + +--- + +### 完整代码(可直接复制) + +```csharp +using System.Collections.Generic; +using UnityEngine; + +namespace ONIModTutorialCode +{ + public class MyFirstItemConfig : IEntityConfig + { + // 物品ID + public const string ID = "MYFIRSTITEM"; + + public GameObject CreatePrefab() + { + GameObject gameObject = EntityTemplates.CreateLooseEntity( + ID, + STRINGS.ITEMS.MYFIRSTITEM.NAME, + STRINGS.ITEMS.MYFIRSTITEM.DESC, + 5f, + true, + Assets.GetAnim("cactus_kanim"), + "idle_empty", + Grid.SceneLayer.SolidConduits, + EntityTemplates.CollisionShape.RECTANGLE, + 0.6f, + 0.6f, + true, + 0, + SimHashes.Creature, + new List { GameTags.IndustrialIngredient } + ); + + return gameObject; + } + + public void OnPrefabInit(GameObject inst) + { + // 预制体初始化时调用 + } + + public void OnSpawn(GameObject inst) + { + // 实例生成时调用 + } + + public string[] GetDlcIds() + { + return null; + } + } +} +``` +--- + +> 🚧 **To Be Continued...** +> +> 先写一点,有点累了,睡一觉 diff --git a/ONIModTutorial/ONIModTutorial-main/content/plants.md b/ONIModTutorial/ONIModTutorial-main/content/plants.md new file mode 100644 index 0000000..e69de29 diff --git a/ONIModTutorial/ONIModTutorial-main/contribute.md b/ONIModTutorial/ONIModTutorial-main/contribute.md new file mode 100644 index 0000000..fc4d994 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/contribute.md @@ -0,0 +1,11 @@ +--- +layout: home +hero: + name: 加入贡献 + text: 共同打造这个教程文档 + tagline: 无论你是新手还是大佬,我们都欢迎。 + actions: + - theme: brand + text: 加入群聊(QQ) + link: https://qm.qq.com/q/9IXwoJzOus +--- \ No newline at end of file diff --git a/ONIModTutorial/ONIModTutorial-main/contributors.md b/ONIModTutorial/ONIModTutorial-main/contributors.md new file mode 100644 index 0000000..4024a08 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/contributors.md @@ -0,0 +1,10 @@ +--- +editLink: false +--- + +# 贡献者名单 + +感谢所有为本项目做出贡献的小伙伴! + + + diff --git a/ONIModTutorial/ONIModTutorial-main/csharp-basics-reference.md b/ONIModTutorial/ONIModTutorial-main/csharp-basics-reference.md new file mode 100644 index 0000000..903f1a2 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/csharp-basics-reference.md @@ -0,0 +1,182 @@ +--- +sidebar: false +--- + + ⬅ 返回 + + + + + +# ⚡ C# 核心语法 +--- +这不是一篇“C# 入门”,而是 **专门为《缺氧(ONI)》Mod 开发提炼的最小语法集**。 + +> 🎯 阅读目标: +> +> * 能**直接看懂 ONI 源码** +> * 能**独立写 Harmony Patch** +> * 知道哪些语法是“必须会”,哪些可以先无视 + +--- + +## 🧠 总览 + +> **ONI Mod 的 C# 本质只有四件事:** +> +> 1️⃣ 类 + 组件 +> 2️⃣ static + ref +> 3️⃣ 数组 + 泛型 +> 4️⃣ null 判断 + +下面所有内容,都是在为这四点服务。 + +--- + +## 🧱 一、class 是一切的起点 + +### 你在 ONI 里只会写这三种类 + +```csharp +public class XXXConfig : IBuildingConfig {} +public class XXXPatch {} +public class XXXComponent : KMonoBehaviour {} +``` + +结论: + +* **类必须是 `public`** +* 不要纠结面向对象 + +--- + +## 🔧 二、static:为什么 Patch 必须是 static + +### 普通方法(ONI 几乎不用) + +```csharp +public void DoSomething() {} +``` + +### Patch 方法(必须这样) + +```csharp +public static void Postfix() {} +``` + +原因一句话解释: + +> Harmony **不会 new 你的类**,只能调用静态方法。 + +👉 **Patch 写错 90% 都是这里的问题** + +--- + +## 🧬 三、ref:为什么 ONI Patch 能“改游戏” + +### 没有 ref(改不到) + +```csharp +public static void Postfix(BuildingDef def) +{ + def.EnergyConsumptionWhenActive = 1f; // ❌ 无效 +} +``` + +### 有 ref(直接改内存) + +```csharp +public static void Postfix(ref BuildingDef __result) +{ + __result.EnergyConsumptionWhenActive = 1f; // ✅ 生效 +} +``` + +一句话结论: + +> **Harmony 能改游戏,全靠 ref。** + +--- + +## 📦 四、组件思维:ONI ≈ Unity + +### 所有功能 = 组件 + +```csharp +go.AddOrGet(); +go.AddOrGet(); +``` + +### AddOrGet 的真实含义 + +```text +有 → 拿 +无 → 加 +``` + +> ❗ ONI 世界里 +> +> * **没有组件 = 没有功能** + +--- + +## 🔍 五、泛型 ``:不要怕,它只是“占位” + +### 看到下面这两行,直接翻译成中文 + +```csharp +go.AddOrGet(); +go.GetComponent(); +``` + +翻译: + +> “我要 **ElementConverter** 这个组件” + +> `` = 类型占位符,仅此而已 + +--- + +## 🚧 六、null 判断:ONI Mod 的生命线 + +### 正确写法 + +```csharp +var converter = go.GetComponent(); +if (converter == null) + return; +``` + +原因一句话: + +> Patch 执行顺序不固定,**组件不一定存在**。 + +👉 **不写 null 判断 = 随机崩溃** + +--- + + diff --git a/ONIModTutorial/ONIModTutorial-main/csharp-basics.md b/ONIModTutorial/ONIModTutorial-main/csharp-basics.md new file mode 100644 index 0000000..ca005a9 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/csharp-basics.md @@ -0,0 +1,77 @@ +# 🛠️ C# 开发基础(ONI Mod 专用) + +在编写《缺氧(Oxygen Not Included, ONI)》Mod 代码之前,你需要掌握一些 **C# 的核心概念**。本篇内容将**专门围绕 ONI Mod 开发中最常见、最实用的语法与结构**展开,避免泛泛而谈。 + +--- + +## 📦 一、命名空间与类(Namespace & Class) + +《缺氧》的源码规模非常庞大,因此大量使用 **命名空间(namespace)** 来对功能进行划分。你的 Mod 代码也应当遵循这一习惯,以避免冲突、提升可维护性。 + +### ✅ 开始 + +::: danger 💡 建议 +如果不知道什么是 `空间命名(namespace)` `类名(Class)` `方法名(Method)` 是什么的,在这里你就可以止步了,可以花点时间快速了解一下 `C#` ,这会让你后续的开发事半功倍。 +::: + +* [C# 杂七杂八](./csharp-basics-reference.md) +* [Harmony的小整理](./harmony-reference.md) +* [Harmony官方文档](https://harmony.pardeike.net/articles/patching.html)。 + +--- + +--- + +## 🔧 二、HarmonyPatch:精准定位游戏源码 + +在《缺氧》Mod 开发中,`[HarmonyPatch]` 属性(Attribute)就像一个**手术定位仪**。它告诉补丁框架:你需要拦截哪个“类”里的哪个“方法”。 + +### 1. 核心语法:三种定位方式 + +根据目标方法的复杂程度,你通常会用到以下三种写法: + +| 定位类型 | 代码示例 (Attribute) | 适用场景 | +| :--- | :--- | :--- | +| **基础定位** | `[HarmonyPatch(typeof(Db), "Initialize")]` | **最常用**。目标类中只有一个同名方法时使用。 | +| **重载定位** | `[HarmonyPatch(typeof(Assets), "GetSprite", new Type[] { typeof(HashedString) })]` | 当方法有**多个重载**(名字相同但参数不同)时,必须指定参数类型。 | +| **属性定位** | `[HarmonyPatch(typeof(BuildingDef), "IsSolid", MethodType.Getter)]` | 专门用于拦截 C# 的 **属性 (Property)**。需指定是修改 `Getter` 还是 `Setter`。 | + +--- +### 2. 🔍 实战:如何从 dnSpy 提取 Patch 信息? + +当你使用 **dnSpy** 查看游戏源码 `Assembly-CSharp.dll` 时,请按照以下逻辑进行拆解: + + + +* **类名 (Class)**:看代码最顶层的 `public class` 后面跟着的单词。 + * 源码:`public class GeneratedBuildings` + * 对应参数:**`typeof(GeneratedBuildings)`** +* **方法名 (Method)**:看括号左边的那个单词。 + * 源码:`public static void LoadGeneratedBuildings(...)` + * 对应参数:**`"LoadGeneratedBuildings"`** +* **参数类型 (Parameters)**:看括号里面的内容,如果是[重载](./harmony-reference.md#postfix-Overloading)方法则需要提取。 + * 源码:`(ICollection types)` + * 对应参数:**`new Type[] { typeof(ICollection) }`** + +--- + +### 3. 📝 标准代码结构模板 + +```csharp +using HarmonyLib; // 必须引用 Harmony 库 +using UnityEngine; // 如果用到 Debug.Log 或 GameObject + +namespace MyOniMod +{ + // 1. 定位:我们要改哪个类的哪个方法? + [HarmonyPatch(typeof(EntityConfigManager), "LoadGeneratedEntities")] + public class MyEntityPatch + { + // 2. 注入:在原方法执行后(Postfix)做点什么? + public static void Postfix() + { + // 你的逻辑代码 + Debug.Log("ONI Mod: 游戏实体加载完成!"); + } + } +} diff --git a/ONIModTutorial/ONIModTutorial-main/development-environment.md b/ONIModTutorial/ONIModTutorial-main/development-environment.md new file mode 100644 index 0000000..57d1c97 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/development-environment.md @@ -0,0 +1,24 @@ +# 🛠️ 开发环境搭建 + +在编写代码之前,我们需要准备好开发工具,并配置针对《缺氧》的自动编译环境。 + +--- +## 软件准备清单 + +你需要安装以下工具。请确保它们已正确安装: + +| 工具 | 作用 | 下载链接 | 推荐版本 | +| :--- | :--- | :--- | :--- | +| **Visual Studio 2026** | 核心开发 IDE | [官方下载地址](https://visualstudio.microsoft.com/zh-hans/vs/community/) | 社区版 (Community) | +| **dnSpy** | 逆向源码 / 找代码 | [GitHub 下载页](https://github.com/dnSpy/dnSpy/releases) | 最新版 (win64) | + +--- + +### ⚠️ 核心注意事项 + +> **💡 关键点:关于 .NET 版本** +> 《缺氧》官方现在把 [**.NET Standard 2.1**](https://learn.microsoft.com/zh-cn/dotnet/standard/net-standard) 视为模组开发的更佳起点;与此同时,游戏本体仍保留 Unity 的 **.NET Framework API Compatibility Target** 作为兼容层。 +> +> * **如果不选这个版本**:你的 Mod 在加载时也许会报错,或者更容易遇到引用和兼容性问题。 +> * **VS 安装提示**:在安装 Visual Studio Installer 时,请务必勾选 **“.NET 桌面开发”** 工作负荷,并确保已安装用于 **.NET Standard 2.1** 的相关开发组件。 +> * [图文安装教程](./visual-studio-installation.md) | diff --git a/ONIModTutorial/ONIModTutorial-main/dnspy-analysis.md b/ONIModTutorial/ONIModTutorial-main/dnspy-analysis.md new file mode 100644 index 0000000..8397d4f --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/dnspy-analysis.md @@ -0,0 +1,24 @@ +# 🎨 游戏代码反编译 + + + +## 一. 代码反编译 + +如果你想了解游戏的逻辑(如建筑如何运作、掉落概率等),你需要反编译游戏的 `.dll` 文件。 + +### 🛠️ 工具:dnSpy + +目前社区最推荐的 `.NET` 反编译器和调试器。 + +* **[📥 官方仓库 (GitHub Releases)](https://github.com/dnSpyEx/dnSpy/releases)** +* **适用范围**:查看 `C#` 代码、搜索特定方法、甚至直接修改并重新编译代码。 + +#### 💡 操作步骤 + +* 找到游戏的程序集文件:通常位于 `OxygenNotIncluded_Data/Managed/Assembly-CSharp.dll` 。 + +* 将该文件拖入 **dnSpy** 。 + +* 使用 `Ctrl + Shift + K` 进行全局搜索,快速定位你想研究的类名(如 `ElectrolyzerConfig` )。 + +* 或者选择目标 `.dll` 文件,将其导出成 `Visual Studio` 工程文件。 diff --git a/ONIModTutorial/ONIModTutorial-main/first-mod-tutorial.md b/ONIModTutorial/ONIModTutorial-main/first-mod-tutorial.md new file mode 100644 index 0000000..ddbc881 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/first-mod-tutorial.md @@ -0,0 +1,137 @@ +# 🚀 编写第一个 Mod:节能电解器 + +本章将带你亲手编写一个 Mod,把电解器的 120W 功耗改为 1W。 + +--- + +## 一 . 准备工作 + +在开始之前,你需要手动创建一个文件夹,用于存放你开发的 Mod 文件: +* **路径**:`%USERPROFILE%\Documents\Klei\OxygenNotIncluded\mods\` +* **操作**:在此目录下创建一个名为 **`Dev`** 的文件夹。 + +--- + +## 二 . 创建项目 + +1. 打开 **Visual Studio 2022**。 +2. 选择 **创建新项目** -> 搜索 **类库**(建议选择支持 **.NET Standard 2.1** 的类库模板)-> 点击下一步。 +3. **项目名称**:输入 `MyFirstMod`。 +4. **目标框架**:务必选择 **.NET Standard 2.1**。 + +--- + +## 三 . 导入游戏核心库 (References) + +你需要把游戏的 `.dll` 文件“介绍”给 Visual Studio,它才能理解游戏代码。 + +1. 在右侧 **解决方案资源管理器** 中,当然你的可能在左侧,右键点击 **引用 (References)** -> **添加引用**。 +2. 点击 **浏览**,进入游戏目录: + `...\steamapps\common\OxygenNotIncluded\OxygenNotIncluded_Data\Managed\` +3. **选中并添加以下文件:** + * `Assembly-CSharp.dll` + * `Assembly-CSharp-firstpass.dll` + * `0Harmony.dll` + * `UnityEngine.dll` + * `UnityEngine.CoreModule.dll` + +--- + +## 四 . 编写补丁代码 + + +::: info 进阶指引 +想要进一步了解补丁?请点击阅读: +[了解 Postfix →](./harmony-reference.md#postfix) +::: +删除项目自动生成的 `Class1.cs` 里的所有内容,粘贴下面的代码: + +```csharp +using HarmonyLib; + +namespace MyFirstMod +{ + // 告诉游戏:要在 ElectrolyzerConfig 的 CreateBuildingDef 执行完后动刀 + [HarmonyPatch(typeof(ElectrolyzerConfig), "CreateBuildingDef")] + public class MyFirstPatch + { + // Postfix 代表后置补丁 + public static void Postfix(ref BuildingDef __result) + { + // 将电解器的功耗改为 1 瓦 + __result.EnergyConsumptionWhenActive = 1f; + Debug.Log("电解器的功耗已被修改为 1 瓦"); + } + } +} +``` + +### 📝 调试技巧 +> 如果 Mod 运行不正常,可以在这里查看日志排查: + +`%USERPROFILE%\AppData\LocalLow\Klei\Oxygen Not Included\player.log` + +--- +## 🎁 五 . 下载项目模板 (可选) + +前面叽里咕噜没看懂? +没关系,我这里提供了一份Mod模板,如果你是按教程来的,那么在这里我将默认你安装了Visual Studio 2026版本。 + +### 安装方法: + +* [点击此处下载模板 .zip 文件](/templates/ONIModTemplate.zip)(不要解压)。 +* 将其放入Visual Studio 模板文件夹: +> `%USERPROFILE%\Documents\Visual Studio 18\Templates\ProjectTemplates` +
+ 📸 点击展开查看ProjectTemplates目录结构 +
+
+ 发布界面 +
+
+ +* 重启你的Visual Studio, 创建项目时候你将可以看到: + +
+ 📸 点击展开查看预览图 +
+
+ 发布界面 +
+
+ + +## 六 . 编译与部署 + +1. **生成 DLL**:点击顶部菜单栏的 **生成 (Build)** -> **生成解决方案**, 或者直接在 **解决方案资源管理器** 当中右键项目然后 **生成 (Build)**。 +2. **找到文件**:进入项目文件夹的 `bin/Debug` 目录,找到 `MyFirstMod.dll`。 +3. **放入游戏**:在 `Documents\Klei\OxygenNotIncluded\mods\Dev\` 当中创建一个`MyFirstMod`文件夹,将 `MyFirstMod.dll`放入其中,记住不要少了上一章讲的 +`mod.yaml` 和 `mod_info.yaml` + +--- diff --git a/ONIModTutorial/ONIModTutorial-main/harmony-reference.md b/ONIModTutorial/ONIModTutorial-main/harmony-reference.md new file mode 100644 index 0000000..dd6dfe6 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/harmony-reference.md @@ -0,0 +1,395 @@ +--- +sidebar: false +--- + + ⬅ 返回 + + + + + +# 🧩 Harmony 补丁整理 + +> **本篇是 Harmony 在《缺氧(ONI)》Mod 开发中的实战速查表** +> 👉 目标:**快速了解以及什么时候该用哪一种 Patch** + +--- + +## 📖 阅读指引 + +- **基础操作**:了解 `Harmony` 初始化及 `Prefix / Postfix` 的基本用法。 +- **常用参数**:了解 `__instance / __state / AccessTools` 读写游戏数据。 +- **特殊场景**:了解 `Transpiler / Finalizer` 处理底层逻辑与异常的方式。 + +--- + +## 🧠 一、Harmony 是什么? + +Harmony 是一个 **运行时方法注入库**,用于在**不修改源代码**的情况下: + +- 插入逻辑 +- 拦截原方法 +- 修改返回值 +- 重写部分执行流程 + +--- + +## 🧩 二、Patch 类型总览 + +| Patch 类型 | 执行时机 | 常见用途 | +|----------|----------|----------| +| Prefix | 原方法执行前 | 拦截 / 改参数 / 阻止执行 | +| Postfix | 原方法执行后 | 补充逻辑 / 改返回值 | +| Transpiler | IL 层 | 改硬编码 / if / 常量 | +| Finalizer | 所有逻辑后 | 捕获异常 / 兜底 | +--- + +## ⚙️ 三、Harmony 初始化 + +> 在 ONI 中,继承 UserMod2 后,游戏会自动帮你执行 harmony.PatchAll()。你不需要再手动调用它,除非你有特殊的动态补丁需求。 + + +```csharp +using HarmonyLib; +using KMod; + +namespace MyMod +{ + public class MyFirstMod : UserMod2 + { + public override void OnLoad(Harmony harmony) + { + // 1. 必须保留基类调用,它会处理自动 PatchAll + base.OnLoad(harmony); + + // 2. 这里通常用来放“全局初始化”逻辑 + // 比如:打印日志确认 Mod 已加载 + Debug.Log("MyFirstMod 已成功加载!"); + } + } +} +``` + +--- + +## 🟦 四、Prefix(执行前拦截) + +`Prefix` 用于在原代码跑起来之前先一步执行。 + +### 4.1 基础用法:单纯插入逻辑 +如果你只想在某个动作发生时顺便做点事(比如记录日志),补丁返回 void 即可。 + +```csharp +[HarmonyPatch(typeof(Operational), nameof(Operational.SetActive))] +public static class Log_Patch +{ + public static void Prefix(bool value) + { + // 只是看一眼参数,不影响原逻辑执行 + Debug.Log($"建筑状态尝试切换为: {value}"); + } +} +``` + +--- +### 4.2 进阶用法:干预原逻辑 + +如果你想改变游戏的结果,需要注意 bool 返回值和 ref 关键字的作用。 + +| 方式 | 代码关键点| 实际效果 | +|----------|----------|----------| +| 强行篡改 | `ref bool value` | 改指令。 原代码照样跑,但你偷偷换掉了它的参数(比如让关机指令变成开机) | +| 彻底拦截 | `return false` | 断后路。 原代码被直接掐断,后面的逻辑(动画、音效、状态改变)全都不再执行 | + + +**案例对比:** +我们依然是在`[HarmonyPatch(typeof(Operational), nameof(Operational.SetActive))]`上打补丁。 +```csharp + +// 情况 A:篡改参数(原逻辑继续跑,但用你的数) +public static void Prefix(ref bool value) +{ + value = true; // 哪怕玩家点了关闭,建筑也会因为参数被改而保持开启 +} + +// 情况 B:彻底拦截(原逻辑直接罢工) +public static bool Prefix(bool value, bool force_ignore) +{ + return false; // 原方法体内的代码一行都不会跑,功能被完全“冻结” +} + +``` + +--- +

🟩 五、Postfix(执行后补充)

+ +`Prefix` 在原方法执行完毕后运行。它是最推荐的补丁方式,因为它不会中断游戏的正常逻辑,兼容性最好。 + +### 5.1 实战代码:追加额外逻辑 +- 作用: 在原逻辑跑完后,顺便执行一些你自己的操作。 + +```csharp +[HarmonyPatch(typeof(ElectrolyzerConfig), "CreateBuildingDef")] +public class ElectrolyzerCreateBuildingDef_Patch +{ + public static void Postfix(ref BuildingDef __result) + { + // 将电解器的功耗改为 1 瓦 + __result.EnergyConsumptionWhenActive = 1f; + Debug.Log("电解器的功耗已被修改为 1 瓦"); + } +} +``` +- 场景: 初始化后的属性修正、添加自定义的组件、触发额外的通知。 +- 优势: 无论你的代码写得好不好,原版代码都已经安全跑完了,不会导致核心功能丢失。 + +--- +### 5.2 修改返回值:修改计算结果 + +- 作用: 劫持原方法的返回值,让游戏拿到你“调包”后的结果。 +```csharp +[HarmonyPatch(typeof(Overheatable), nameof(Overheatable.OverheatTemperature), MethodType.Getter)] +public static class Overheatable_OverheatTemperature_Patch +{ + // ref __result 指向原方法算出来的那个返回值 + public static void Postfix(ref float __result) + { + __result = 9999f; // 让建筑永远不会因为温度过高而损坏(强行改掉判定数值) + } +} + +``` + +| 枚举项 | 怎么认出它(看 ILSpy/dnSpy) | 干嘛的 | +| :--- | :--- | :--- | +| **Normal** | 方法名后面带个括号,比如 OnSpawn() | 在某个动作执行前后“插一脚” | +| **Getter** | 代码里长这样:float Speed { get; } | 用于修改游戏“读取”到的数据 | +| **Setter** | 代码里长这样:set { ... } | 用于在游戏尝试修改某个数值时进行拦截 | +| **Constructor** | 跟类名长得一模一样的方法 | 在对象刚创建、还没放进世界时,提前修改它的默认字段或初始化逻辑 | +| **StaticConstructor** |前面带 static 的构造函数 | 专门用来修改游戏加载时就定死的全局静态常量 | +| **Enumerator** | 里面有一堆 yield return 的方法 | 专门对付 ONI 里的异步动作、动画序列或那些不是瞬间完成的任务 | + + + +

5.3 处理重载

+在 ONI 源码中,经常会出现多个方法名相同但参数不同的方法。如果不指定参数类型,Harmony 会报错。 + +**案例:拦截 `ModUtil.AddBuildingToPlanScreen`** +这个方法在游戏源码中有多个重载版本,我们对比来看: + +```csharp +public static class ModUtil +{ + // 重载 A:只有 2 个参数 + public static void AddBuildingToPlanScreen(HashedString category, string building_id) { ... } + + // 重载 B:有 3 个参数 + public static void AddBuildingToPlanScreen(HashedString category, string building_id, string subcategoryID) { ... } + + // 重载 c:有 5 个参数 + public static void AddBuildingToPlanScreen(HashedString category, string building_id, string subcategoryID, string relativeBuildingId, ModUtil.BuildingOrdering ordering = ModUtil.BuildingOrdering.After) { ... } +} + +// 【对应的 HarmonyPatch 写法】 +// 拦截“重载 B”,必须明确写出那 3 个参数的类型: +[HarmonyPatch(typeof(ModUtil), "AddBuildingToPlanScreen", new Type[] { typeof(HashedString), typeof(string), typeof(string) })] +// 试试举一反三 重载a会是怎么样的? + +// ❌ 错误写法 +[HarmonyPatch(typeof(ModUtil), "AddBuildingToPlanScreen")] + +``` + +--- + +### 🛠️ 总结:Prefix 与 Postfix 怎么选? +- 选 Prefix 的唯一理由:你需要在事情发生之前拦住它(比如阻止一个动作,或者在原逻辑使用参数前改掉参数)。 + +- 其他情况全选 Postfix:只要不需要拦截原逻辑,就往原逻辑后面接代码。这是保持 Mod 稳定、不坏档的金法则。 + +--- + + + +## 🔁 六、状态桥接(__state 传值) +有时候你需要在执行之后知道执行之前发生了什么(比如:存货前有多少,存货后剩多少)。`__state` 就是专门用来在 `Prefix` 和 `Postfix` 之间带货的“临时储物柜”。 + + +### 6.1 实战用法:前后状态对比 +- 作用: 记录一个初始值,等原逻辑跑完后再拿出来算差值。 +```csharp +[HarmonyPatch(typeof(Storage), "Store")] +public static class Storage_Monitor_Patch +{ + // 1. 在执行前,把当前帧数塞进 __state 储物柜 + public static void Prefix(out int __state) + { + __state = Time.frameCount; + } + + // 2. 在执行后,从 __state 储物柜拿出刚才存的帧数 + public static void Postfix(int __state) + { + int cost = Time.frameCount - __state; + if (cost > 0) + { + Debug.Log($"这次存货居然花了 {cost} 帧的时间!"); + } + } +} +``` +### 💡 为什么用它? + +* **性能追踪:** 记录方法运行前后的时间差。 +* **逻辑判定:** 记录执行前的数值(比如生命值),执行后发现数值没变,就触发补救逻辑。 +* **简洁性:** 它只在这一次补丁调用中有效,跑完就销毁,不会像全局变量那样污染你的代码。 + +### 🔑 参数细节说明(避坑) + +* **Prefix 里:** 必须用 out 或者 ref(比如 out int __state),否则存不进去。 +* **Postfix 里:** 直接用(比如 int __state)即可拿到之前存的值。 + + +--- + +## 🔓 七、访问 private 字段(AccessTools与 ___) +在 ONI 源码中,很多变量被声明为 `private` 你直接用 `__instance` 变量名 是访问不到的。这时有两种常用的“破门”方法。 + + +### 7.1 方法一:三下划线暗号(最快、最推荐) +如果只是想简单读写一个实例变量,Harmony 提供了一个极简写法:在参数名前加 三个下划线。 +```csharp +[HarmonyPatch(typeof(Storage), "OnSpawn")] +public static class Storage_Easy_Patch +{ + // ___capacityKg 对应 Storage 类里的私有变量 capacityKg + public static void Postfix(Storage __instance, ref float ___capacityKg) + { + ___capacityKg = 9999f; // 直接像改普通变量一样改掉它 + } +} +``` +### 7.2 方法二:使用 AccessTools(性能更好、更强大) +当你需要在多个地方频繁访问同一个变量,或者要处理 `static`(静态)私有变量时,建议先提前定义一个“后门”。 +```csharp +using System.Reflection; + +public static class Storage_Hard_Patch +{ + // 1. 先定义后门(只找一次,性能更优) + private static readonly FieldInfo CapacityField = + AccessTools.Field(typeof(Storage), "capacityKg"); + + [HarmonyPatch(typeof(Storage), "OnSpawn")] + public static class Patch + { + public static void Postfix(Storage __instance) + { + // 2. 暴力写入新值 + CapacityField.SetValue(__instance, 9999f); + } + } +} +``` + +### 💡 怎么选? + +* **三下划线 (`___`)**:**日常主力。** 只要能跑通,就优先用它,代码短且不容易写错。 +* **AccessTools**:**重型工具。** + - 专门对付 `static private`(静态私有)变量。 + - 适合在补丁函数体外面拿取数据。 + - 如果你需要极致的性能优化,提前定义一个 `static readonly FieldInfo` 会比三下划线快那么一点点。 +--- + +## 🧬 Transpiler(改底层指令) +这是 Harmony 中最硬核的补丁。 +- 它不是在方法前后插话,而是直接冲进原代码内部,把某几行代码“抠掉”或者“掉包”。 + +### 8.1 它的作用 +如果你发现 `Prefix` 和 `Postfix` 都没法改掉某个逻辑,通常是因为那个逻辑是硬编码在方法中间的。 + +* **改常量:** 比如代码里写死了一个 `if (speed > 10f)`,你想把 `10f` 改成 `100f`。 +* **删代码:** 比如你想把原版中某一行烦人的检测逻辑彻底抹除。 +* **加指令:** 在方法的第 50 行和第 51 行中间塞进你自己的逻辑。 + +### 8.2 实战代码:修改硬编码数值 +- 场景: 游戏原本规定挖矿只掉一半掉落物`0.5f`,我们通过补丁把它改成全掉 `1.0f`。 +```csharp +[HarmonyPatch(typeof(WorldDamage), "OnDigComplete")] +public static class WorldDamage_OnDigComplete_Patch +{ + // Transpiler 接收的是一组 IL 指令集 + private static IEnumerable Transpiler(IEnumerable instructions) + { + foreach (var ins in instructions) + { + // 目标:找到指令是“加载浮点数 0.5”的那一行 + if (ins.opcode == OpCodes.Ldc_R4 && (float)ins.operand == 0.5f) + { + // 改成 1.0f + ins.operand = 1.0f; + } + yield return ins; + } + } +} +``` +### ⚠️ 为什么说要慎用? +* **报错难找:** 普通的补丁写错,通常只是功能失效;`Transpiler` 写错,可能会导致游戏直接闪退或整个类崩掉。 +* **极易冲突:** 如果有两个 Mod 同时对同一个方法的同一行代码动了“手术”,游戏大概率会当场报废。 +* **门槛高:** 你需要看懂 IL(中间语言) 指令(类似于 `ldarg.0` `call` `stfld` 等),就像在看天书。 + +--- + +## 🧯 九、Finalizer(异常兜底) + +```csharp +[HarmonyPatch(typeof(SomeClass), "SomeMethod")] +public static class SomeMethod_Finalizer +{ + public static void Finalizer(Exception __exception) + { + if (__exception != null) + { + Debug.LogError(__exception); + } + } +} +``` + +--- + +## ⚠️ 十、ONI Mod 常见翻车点 + +- Patch 方法忘记 `static` +- 参数签名与原方法不一致 +- Prefix `return false` 但没处理返回值 +- Transpiler 修改逻辑过多 + + +--- + diff --git a/ONIModTutorial/ONIModTutorial-main/index.md b/ONIModTutorial/ONIModTutorial-main/index.md new file mode 100644 index 0000000..f3b817b --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/index.md @@ -0,0 +1,29 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + # name: "ONIModTutorial" + name: ONIModTutorial + text: "缺氧 MOD 教程" + tagline: "Talk is cheap. Show me the code." + actions: + - theme: brand + text: 开始阅读 + link: /preface + - theme: alt + text: API Examples + # link: /api-examples + +features: + - title: 开发环境搭建 + details: 介绍如何配置 Visual Studio 2022 开发环境,以及如何引用游戏核心 DLL 文件。 + + - title: 源码反编译与分析 + details: 使用 dnSpy 等工具查阅游戏底层代码逻辑,学习如何定位 Patch(补丁)注入点。 + + - title: 实践与心得 + details: 分享《缺氧》Mod 开发中的实战案例,涵盖 Harmony 补丁使用及常见问题记录。 + +--- + diff --git a/ONIModTutorial/ONIModTutorial-main/markdown-examples.md b/ONIModTutorial/ONIModTutorial-main/markdown-examples.md new file mode 100644 index 0000000..f9258a5 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/markdown-examples.md @@ -0,0 +1,85 @@ +# Markdown Extension Examples + +This page demonstrates some of the built-in markdown extensions provided by VitePress. + +## Syntax Highlighting + +VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting: + +**Input** + +````md +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` +```` + +**Output** + +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` + +## Custom Containers + +**Input** + +```md +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: +``` + +**Output** + +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: + +## More + +Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). diff --git a/ONIModTutorial/ONIModTutorial-main/mod-structure.md b/ONIModTutorial/ONIModTutorial-main/mod-structure.md new file mode 100644 index 0000000..de8a6fd --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/mod-structure.md @@ -0,0 +1,49 @@ +# 📂 Mod 目录结构 + +一个标准的《缺氧》Mod 目录通常包含以下核心文件。理解这些文件的角色是开发的第一步。 + +## 一 . 典型结构总览 + +每个模组都使用一个单独文件夹,例如,你的`MyFirstMod`路径应该如下所示: +`...\Klei\OxygenNotIncluded\mods\Dev\MyFirstMod\` +* `MyFirstMod.dll` +* `mod.yaml` +* `mod_info.yaml` +```text +MyFirstMod/ +├── mod_info.yaml # Mod 的元数据与版本兼容性配置 +├── mod.yaml # 用于配置 Mod 的名称、描述等静态信息 +├── MyFirstMod.dll # 编译后的程序集文件(逻辑代码) +└── preview.png # Steam 创意工坊显示的预览图 + +``` +## 二 . 配置文件详解 +::: code-group +```yaml [mod_info.yaml 模板] +supportedContent: ALL # 支持范围:VANILLA_ID, EXPANSION1_ID, 或 ALL +minimumSupportedBuild: 512719 # 运行该 Mod 所需的最低游戏版本号 +version: "1.0.0" # 你自己的 Mod 版本号 +``` +::: + + +::: code-group +```yaml [mod.yaml 模板] +title: "MyFirstMod" # 游戏内 Mod 列表显示的名称 +description: "这是一个示例描述" # 游戏内显示的详细功能介绍 +staticID: "AuthorName.MyMod" # Mod 的唯一标识符(建议格式:作者名.Mod名) +``` +::: + + + + + + +## 三 . 资源与可选目录 (进阶) +当你的 Mod 不再仅仅是简单的逻辑修改,而是涉及新建筑、新美术或多语言支持时,需要建立以下目录结构: +* **/translations/:** 用于存放多语言翻译文件(.pot 或 .po)。 +* **/anim/assets/:** 存放自定义建筑、生物或掉落物的动画资源。 +* **/assets/:** 额外素材 +* **/elements/:** 存放自定义元素的配置数据。 +* **/worldgen/:** 涉及地形生成、生物群落(Biomes)修改时的核心目录。包含 `biomes`、`features` 等子文件夹。 diff --git a/ONIModTutorial/ONIModTutorial-main/package-lock.json b/ONIModTutorial/ONIModTutorial-main/package-lock.json new file mode 100644 index 0000000..569ab1b --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/package-lock.json @@ -0,0 +1,2568 @@ +{ + "name": "ONIModTutorial", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "rss-parser": "^3.13.0" + }, + "devDependencies": { + "vitepress": "^1.6.4" + } + }, + "node_modules/@algolia/abtesting": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.12.2.tgz", + "integrity": "sha512-oWknd6wpfNrmRcH0vzed3UPX0i17o4kYLM5OMITyMVM2xLgaRbIafoxL0e8mcrNNb0iORCJA0evnNDKRYth5WQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz", + "integrity": "sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.17.7", + "@algolia/autocomplete-shared": "1.17.7" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz", + "integrity": "sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.7" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz", + "integrity": "sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.7" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz", + "integrity": "sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.46.2.tgz", + "integrity": "sha512-oRSUHbylGIuxrlzdPA8FPJuwrLLRavOhAmFGgdAvMcX47XsyM+IOGa9tc7/K5SPvBqn4nhppOCEz7BrzOPWc4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.46.2.tgz", + "integrity": "sha512-EPBN2Oruw0maWOF4OgGPfioTvd+gmiNwx0HmD9IgmlS+l75DatcBkKOPNJN+0z3wBQWUO5oq602ATxIfmTQ8bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.46.2.tgz", + "integrity": "sha512-Hj8gswSJNKZ0oyd0wWissqyasm+wTz1oIsv5ZmLarzOZAp3vFEda8bpDQ8PUhO+DfkbiLyVnAxsPe4cGzWtqkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.46.2.tgz", + "integrity": "sha512-6dBZko2jt8FmQcHCbmNLB0kCV079Mx/DJcySTL3wirgDBUH7xhY1pOuUTLMiGkqM5D8moVZTvTdRKZUJRkrwBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.46.2.tgz", + "integrity": "sha512-1waE2Uqh/PHNeDXGn/PM/WrmYOBiUGSVxAWqiJIj73jqPqvfzZgzdakHscIVaDl6Cp+j5dwjsZ5LCgaUr6DtmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.46.2.tgz", + "integrity": "sha512-EgOzTZkyDcNL6DV0V/24+oBJ+hKo0wNgyrOX/mePBM9bc9huHxIY2352sXmoZ648JXXY2x//V1kropF/Spx83w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.46.2.tgz", + "integrity": "sha512-ZsOJqu4HOG5BlvIFnMU0YKjQ9ZI6r3C31dg2jk5kMWPSdhJpYL9xa5hEe7aieE+707dXeMI4ej3diy6mXdZpgA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion": { + "version": "1.46.2", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.46.2.tgz", + "integrity": "sha512-1Uw2OslTWiOFDtt83y0bGiErJYy5MizadV0nHnOoHFWMoDqWW0kQoMFI65pXqRSkVvit5zjXSLik2xMiyQJDWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.46.2", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.46.2.tgz", + "integrity": "sha512-xk9f+DPtNcddWN6E7n1hyNNsATBCHIqAvVGG2EAGHJc4AFYL18uM/kMTiOKXE/LKDPyy1JhIerrh9oYb7RBrgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.46.2.tgz", + "integrity": "sha512-NApbTPj9LxGzNw4dYnZmj2BoXiAc8NmbbH6qBNzQgXklGklt/xldTvu+FACN6ltFsTzoNU6j2mWNlHQTKGC5+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.46.2.tgz", + "integrity": "sha512-ekotpCwpSp033DIIrsTpYlGUCF6momkgupRV/FA3m62SreTSZUKjgK6VTNyG7TtYfq9YFm/pnh65bATP/ZWJEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.46.2.tgz", + "integrity": "sha512-gKE+ZFi/6y7saTr34wS0SqYFDcjHW4Wminv8PDZEi0/mE99+hSrbKgJWxo2ztb5eqGirQTgIh1AMVacGGWM1iw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.46.2.tgz", + "integrity": "sha512-ciPihkletp7ttweJ8Zt+GukSVLp2ANJHU+9ttiSxsJZThXc4Y2yJ8HGVWesW5jN1zrsZsezN71KrMx/iZsOYpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.8.2.tgz", + "integrity": "sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@docsearch/js": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.8.2.tgz", + "integrity": "sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docsearch/react": "3.8.2", + "preact": "^10.0.0" + } + }, + "node_modules/@docsearch/react": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.8.2.tgz", + "integrity": "sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "1.17.7", + "@algolia/autocomplete-preset-algolia": "1.17.7", + "@docsearch/css": "3.8.2", + "algoliasearch": "^5.14.2" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@iconify-json/simple-icons": { + "version": "1.2.66", + "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.66.tgz", + "integrity": "sha512-D1OnnXwiQXFkVMw5M+Bt8mPsXeMkQyGmMdrmN7lsQlKMUkfLOp6JWhnUJ92po51WXT046aF/zzqSmkKqg08p4Q==", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.55.1.tgz", + "integrity": "sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.55.1.tgz", + "integrity": "sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.55.1.tgz", + "integrity": "sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.55.1.tgz", + "integrity": "sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.55.1.tgz", + "integrity": "sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.55.1.tgz", + "integrity": "sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.55.1.tgz", + "integrity": "sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.55.1.tgz", + "integrity": "sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.55.1.tgz", + "integrity": "sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.55.1.tgz", + "integrity": "sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.55.1.tgz", + "integrity": "sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.55.1.tgz", + "integrity": "sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.55.1.tgz", + "integrity": "sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.55.1.tgz", + "integrity": "sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.55.1.tgz", + "integrity": "sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.55.1.tgz", + "integrity": "sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.55.1.tgz", + "integrity": "sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.55.1.tgz", + "integrity": "sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.55.1.tgz", + "integrity": "sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.55.1.tgz", + "integrity": "sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.55.1.tgz", + "integrity": "sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.55.1.tgz", + "integrity": "sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.55.1.tgz", + "integrity": "sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.55.1.tgz", + "integrity": "sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.55.1.tgz", + "integrity": "sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", + "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/engine-javascript": "2.5.0", + "@shikijs/engine-oniguruma": "2.5.0", + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", + "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^3.1.0" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", + "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-2.5.0.tgz", + "integrity": "sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-2.5.0.tgz", + "integrity": "sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/transformers": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-2.5.0.tgz", + "integrity": "sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "2.5.0", + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", + "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.26.tgz", + "integrity": "sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@vue/shared": "3.5.26", + "entities": "^7.0.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz", + "integrity": "sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.26", + "@vue/shared": "3.5.26" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz", + "integrity": "sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@vue/compiler-core": "3.5.26", + "@vue/compiler-dom": "3.5.26", + "@vue/compiler-ssr": "3.5.26", + "@vue/shared": "3.5.26", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz", + "integrity": "sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.26", + "@vue/shared": "3.5.26" + } + }, + "node_modules/@vue/devtools-api": { + "version": "7.7.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.9.tgz", + "integrity": "sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.7.9" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.7.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.9.tgz", + "integrity": "sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.7.9", + "birpc": "^2.3.0", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.2" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.7.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.9.tgz", + "integrity": "sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.26.tgz", + "integrity": "sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.26" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.26.tgz", + "integrity": "sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.26", + "@vue/shared": "3.5.26" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.26.tgz", + "integrity": "sha512-XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.26", + "@vue/runtime-core": "3.5.26", + "@vue/shared": "3.5.26", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.26.tgz", + "integrity": "sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.26", + "@vue/shared": "3.5.26" + }, + "peerDependencies": { + "vue": "3.5.26" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.26.tgz", + "integrity": "sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vueuse/core": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz", + "integrity": "sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/integrations": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-12.8.2.tgz", + "integrity": "sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vueuse/core": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "^4", + "axios": "^1", + "change-case": "^5", + "drauu": "^0.4", + "focus-trap": "^7", + "fuse.js": "^7", + "idb-keyval": "^6", + "jwt-decode": "^4", + "nprogress": "^0.2", + "qrcode": "^1.5", + "sortablejs": "^1", + "universal-cookie": "^7" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.8.2.tgz", + "integrity": "sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-12.8.2.tgz", + "integrity": "sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/algoliasearch": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.46.2.tgz", + "integrity": "sha512-qqAXW9QvKf2tTyhpDA4qXv1IfBwD2eduSW6tUEBFIfCeE9gn9HQ9I5+MaKoenRuHrzk5sQoNh1/iof8mY7uD6Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@algolia/abtesting": "1.12.2", + "@algolia/client-abtesting": "5.46.2", + "@algolia/client-analytics": "5.46.2", + "@algolia/client-common": "5.46.2", + "@algolia/client-insights": "5.46.2", + "@algolia/client-personalization": "5.46.2", + "@algolia/client-query-suggestions": "5.46.2", + "@algolia/client-search": "5.46.2", + "@algolia/ingestion": "1.46.2", + "@algolia/monitoring": "1.46.2", + "@algolia/recommend": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/birpc": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz", + "integrity": "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/copy-anything": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-4.0.5.tgz", + "integrity": "sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^5.2.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.0.tgz", + "integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/focus-trap": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.8.0.tgz", + "integrity": "sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "tabbable": "^6.4.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-what": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-5.5.0.tgz", + "integrity": "sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/minisearch": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.2.0.tgz", + "integrity": "sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==", + "dev": true, + "license": "MIT" + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/oniguruma-to-es": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", + "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/preact": { + "version": "10.28.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.28.2.tgz", + "integrity": "sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", + "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "dev": true, + "license": "MIT" + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rollup": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.55.1.tgz", + "integrity": "sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.55.1", + "@rollup/rollup-android-arm64": "4.55.1", + "@rollup/rollup-darwin-arm64": "4.55.1", + "@rollup/rollup-darwin-x64": "4.55.1", + "@rollup/rollup-freebsd-arm64": "4.55.1", + "@rollup/rollup-freebsd-x64": "4.55.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.55.1", + "@rollup/rollup-linux-arm-musleabihf": "4.55.1", + "@rollup/rollup-linux-arm64-gnu": "4.55.1", + "@rollup/rollup-linux-arm64-musl": "4.55.1", + "@rollup/rollup-linux-loong64-gnu": "4.55.1", + "@rollup/rollup-linux-loong64-musl": "4.55.1", + "@rollup/rollup-linux-ppc64-gnu": "4.55.1", + "@rollup/rollup-linux-ppc64-musl": "4.55.1", + "@rollup/rollup-linux-riscv64-gnu": "4.55.1", + "@rollup/rollup-linux-riscv64-musl": "4.55.1", + "@rollup/rollup-linux-s390x-gnu": "4.55.1", + "@rollup/rollup-linux-x64-gnu": "4.55.1", + "@rollup/rollup-linux-x64-musl": "4.55.1", + "@rollup/rollup-openbsd-x64": "4.55.1", + "@rollup/rollup-openharmony-arm64": "4.55.1", + "@rollup/rollup-win32-arm64-msvc": "4.55.1", + "@rollup/rollup-win32-ia32-msvc": "4.55.1", + "@rollup/rollup-win32-x64-gnu": "4.55.1", + "@rollup/rollup-win32-x64-msvc": "4.55.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/rss-parser": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.13.0.tgz", + "integrity": "sha512-7jWUBV5yGN3rqMMj7CZufl/291QAhvrrGpDNE4k/02ZchL0npisiYYqULF71jCEKoIiHvK/Q2e6IkDwPziT7+w==", + "license": "MIT", + "dependencies": { + "entities": "^2.0.3", + "xml2js": "^0.5.0" + } + }, + "node_modules/rss-parser/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/sax": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", + "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/search-insights": { + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/shiki": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-2.5.0.tgz", + "integrity": "sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "2.5.0", + "@shikijs/engine-javascript": "2.5.0", + "@shikijs/engine-oniguruma": "2.5.0", + "@shikijs/langs": "2.5.0", + "@shikijs/themes": "2.5.0", + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/superjson": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.6.tgz", + "integrity": "sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-anything": "^4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tabbable": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz", + "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==", + "dev": true, + "license": "MIT" + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitepress": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.6.4.tgz", + "integrity": "sha512-+2ym1/+0VVrbhNyRoFFesVvBvHAVMZMK0rw60E3X/5349M1GuVdKeazuksqopEdvkKwKGs21Q729jX81/bkBJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docsearch/css": "3.8.2", + "@docsearch/js": "3.8.2", + "@iconify-json/simple-icons": "^1.2.21", + "@shikijs/core": "^2.1.0", + "@shikijs/transformers": "^2.1.0", + "@shikijs/types": "^2.1.0", + "@types/markdown-it": "^14.1.2", + "@vitejs/plugin-vue": "^5.2.1", + "@vue/devtools-api": "^7.7.0", + "@vue/shared": "^3.5.13", + "@vueuse/core": "^12.4.0", + "@vueuse/integrations": "^12.4.0", + "focus-trap": "^7.6.4", + "mark.js": "8.11.1", + "minisearch": "^7.1.1", + "shiki": "^2.1.0", + "vite": "^5.4.14", + "vue": "^3.5.13" + }, + "bin": { + "vitepress": "bin/vitepress.js" + }, + "peerDependencies": { + "markdown-it-mathjax3": "^4", + "postcss": "^8" + }, + "peerDependenciesMeta": { + "markdown-it-mathjax3": { + "optional": true + }, + "postcss": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.26.tgz", + "integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.5.26", + "@vue/compiler-sfc": "3.5.26", + "@vue/runtime-dom": "3.5.26", + "@vue/server-renderer": "3.5.26", + "@vue/shared": "3.5.26" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/ONIModTutorial/ONIModTutorial-main/package.json b/ONIModTutorial/ONIModTutorial-main/package.json new file mode 100644 index 0000000..ed43f03 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/package.json @@ -0,0 +1,13 @@ +{ + "scripts": { + "dev": "vitepress dev", + "build": "vitepress build", + "preview": "vitepress preview" + }, + "devDependencies": { + "vitepress": "^1.6.4" + }, + "dependencies": { + "rss-parser": "^3.13.0" + } +} diff --git a/ONIModTutorial/ONIModTutorial-main/preface.md b/ONIModTutorial/ONIModTutorial-main/preface.md new file mode 100644 index 0000000..60d3255 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/preface.md @@ -0,0 +1,39 @@ +# 🚀 开发引言 (Preface) + +这份文档旨在为 **《缺氧》**(*Oxygen Not Included*)的 Mod 开发者提供一份系统化的技术指南。 + +::: info 编写初衷 +在尝试通过 Mod 扩展游戏玩法的过程中,会遇到许多问题,也会解决一些问题。本项目建立的初衷是:**整理并记录开发过程中的新发现**,让后来的开发者~~少走弯路~~。 +::: + +### 🛠️ 文档核心价值 +| 特性 | 描述 | +| :--- | :--- | +| **源码参考** |内容主要参考当前版本的 `Assembly-CSharp.dll` 逆向结果,尽量确保时效性。 | +| **侧重实践** |分享我寻找 **Hook 点** 或修改 **Prefab** 时的思路,希望能提供一些实操参考。 | +| **尝试同步** | 由于游戏仍在更新,我会尽力在业余时间同步那些影响较大的逻辑变动。 | + +### 🗺️ 学习路线图 + +1. **环境准备** + * 介绍我常用的反编译与开发工具配置。。 +2. **基础机制** + * 探讨 Harmony 补丁的使用以及对游戏对象结构的理解。 +3. **进阶尝试** + * 记录从属性修改到实体注入的一些实验性过程。 +--- + +::: danger 💡 学习建议 +**Mod 开发需要一定的 C# 基础。** 如果你是完全的编程新手,建议先花点时间了解 C# 的基本语法(变量、类、继承、Lambda 表达式),这会让你后续的开发事半功倍。 +::: + +--- + +
+

从零开始,在代码中构建属于你的宇宙。

+ + + +
diff --git a/ONIModTutorial/ONIModTutorial-main/public/images/VSInstallation-details/VSInstall.png b/ONIModTutorial/ONIModTutorial-main/public/images/VSInstallation-details/VSInstall.png new file mode 100644 index 0000000000000000000000000000000000000000..c5d5f483e27492e418fb271557c9b9dc879eb24a GIT binary patch literal 161306 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 ?i;CvZdT=J* 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 + 此工具是缺氧游戏附赠的,在库中可搜索到 + +--- + +## 二 . 上传已有 Mod + +如果你需要发布的 Mod,请参考下方界面: + +
+ 发布界面 +
+ +按照以下步骤配置上传信息: + +* **选择项目**:点击此处选择你准备好的 Mod 文件夹。 +* **路径确认**:确保显示的是整个 Mod 文件夹的完整路径。 +* **预览图**:选择你 Mod 文件夹中的 `preview.png` 文件(建议尺寸 512x512)。 +* **Mod 名称**:输入你希望在创意工坊上显示的标题。 + + + + +::: warning 注意事项 +1. **文件夹结构**:上传前请务必确认 `mod_info.yaml` 位于文件夹根目录。 +2. **预览图限制**:图片大小不得超过 1MB,否则 Steam 可能会上传失败。 +3. **版本号同步**:记得更新 `mod_info.yaml` 中的 `version` 字段,方便玩家识别更新内容。 +::: + +## 三 . 创意工坊 图片、标题与描述 +* **编辑标题与描述**:多国语言版本标题与描述 + **常用标签 + ```html + + [h1][/h1]..[h*][/h*] [url=*][/url] [hr/] + + [url=链接]链接[/url] [img=链接]图片[/img] + + [hr/] + + [table] + [tr] + [td]单元格内容[/td] + [tr] + [table/] + + [list] + [*]列表项1[/*] + [*]列表项2[/*] + [list/] + + [br/> + ``` +* **添加编辑图片/视频**:图片尺寸比例1920/1080 diff --git a/ONIModTutorial/ONIModTutorial-main/version-compatibility.md b/ONIModTutorial/ONIModTutorial-main/version-compatibility.md new file mode 100644 index 0000000..35cd580 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/version-compatibility.md @@ -0,0 +1,65 @@ +# 🔄 多版本兼容性与发布管理 + +为了确保 Mod 能够在不同版本的《缺氧》(如本体、DLC、测试版)中正常运行,你需要正确配置 `mod_info.yaml` 和 `archived_versions` 文件夹。 + +--- + +## 一 . 核心配置文件:mod_info.yaml +> [!IMPORTANT] +> **官方原文链接:** [Setting up mod_info.yaml and archived_versions](https://forums.kleientertainment.com/forums/topic/158363-setting-up-mod_infoyaml-and-archived_versions/) + + +每个发布到 Steam Workshop 的 Mod 根目录必须包含 `mod_info.yaml`。它决定了 Mod 的“准入资格”。 + +::: code-group +```yaml [mod_info.yaml 模板] +supportedContent: ALL # 支持范围:VANILLA_ID, EXPANSION1_ID, 或 ALL +minimumSupportedBuild: 512719 # 运行该 Mod 所需的最低游戏版本号 +version: "1.0.0" # 你自己的 Mod 版本号 +``` +::: + +## 二 . 文件夹结构:archived_versions + +当你需要同时兼容当前稳定版和之前的旧版本时,不能只靠一个 .dll。你需要使用文件夹分层。 + +📂 推荐目录结构 +::: details 点击查看结构树 +```yaml +MyMod/ +├── mod_info.yaml # 最新版的信息(通常指向当前正式版) +├── mod.yaml # 最新版的基本描述(通常指向当前正式版) +├── MyMod.dll # 适用于当前最新正式版的代码 +└── archived_versions/ # 存档版本文件夹 + └── 512719/ # 文件夹名 = 适用的最低游戏版本号 + ├── mod_info.yaml # 该版本的独立信息 + ├── mod.yaml # 该版本的基本描述 + └── MyMod.dll # 该版本的专用代码 +``` +::: + +⚙️ 运行逻辑说明 +* **扫描阶段:** 游戏启动时会优先扫描 `archived_versions` 文件夹。 + +* **匹配阶段:** 它会寻找文件夹名(版本号)小于或等于当前游戏版本,且最接近当前版本的文件夹。 + +* **回退阶段:** 如果没有匹配的归档文件夹,则运行根目录下的默认文件。 + +## 三 . 兼容性开发建议 + +::: tip 🛡️ 为什么使用这种结构? + +* **版本隔离(防止“炸档”):** 当游戏大版本更新导致 API 变更时,旧版本用户会自动定向到 `archived_versions` 运行,确保插件不会因环境冲突而崩溃。 +* **双轨并行(分支维护):** 支持同时为 **测试版 (Testing Branch)** 和 **正式版 (Live Branch)** 维护两套完全独立的 DLL 逻辑,互不干扰。 +::: + +### 🛠️ 自动化生成事件 + +在 Visual Studio 的项目属性中添加 **生成事件 (Post-build event)**,可实现编译后自动归档到对应文件夹: + +```batch +# 如果是 Release 配置,自动拷贝到 512719 归档目录 +if "$(ConfigurationName)" == "Release" ( + xcopy /Y "$(TargetDir)$(TargetFileName)" "$(ProjectDir)archived_versions\512719\" +) +``` \ No newline at end of file diff --git a/ONIModTutorial/ONIModTutorial-main/visual-studio-installation.md b/ONIModTutorial/ONIModTutorial-main/visual-studio-installation.md new file mode 100644 index 0000000..7fdce39 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/visual-studio-installation.md @@ -0,0 +1,57 @@ +--- +sidebar: false +--- +
+ 返回 + + +# 🛠️ Visual Studio 安装细节 + +在安装过程中,正确的勾选决定了你是否能顺利编译 Mod。请参考以下图解进行配置: + +### 1. 选择工作负荷 (Workloads) +首先,你需要告诉 VS 你要进行桌面程序开发。 + +
+ 安装 +
+ +> **操作:** 勾选 **“.NET 桌面开发”**。这是开发 C# 插件最基础的环境,包含了编译器和必要的库。 + +--- + +### 2. 精确勾选组件 (Individual Components) +这是最关键的一步,很多新手会因为少勾选组件而无法创建合适的项目模板。 + +
+ 选择组件 +
+ +**必须确保以下项已勾选:** +* **.NET 桌面开发相关组件**:用于编写针对《缺氧》的代码。 +* **.NET Standard 2.1 相关开发支持**:提供项目模板和程序集引用支持。 + +--- + +### 3. 完成安装 +确认右下角的安装位置有足够的空间(通常需要几 GB),点击 **“修改”** 或 **“安装”**。安装完成后,建议重启电脑以确保环境变量生效。 + +::: tip 下一步 +安装完成后,你可以回到 [开发环境搭建](./development-environment#back-point) 继续学习如何创建你的第一个 Mod 项目。 +::: diff --git a/ONIModTutorial/ONIModTutorial-main/workshop-list.md b/ONIModTutorial/ONIModTutorial-main/workshop-list.md new file mode 100644 index 0000000..bf777c1 --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/workshop-list.md @@ -0,0 +1,15 @@ +# 玩家社区与扩展 🚀 + +这里同步了《缺氧》创意工坊最新的模组动态,以及我们的开发路线图。 + +## 创意工坊动态 + + + + +--- + +## 学习路线图 (Roadmap) + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..ef2b3eb --- /dev/null +++ b/README.md @@ -0,0 +1,325 @@ +# ONI Agent — 缺氧 AI 助手工具集 + +[Oxygen Not Included](https://www.kleientertainment.com/games/oxygen-not-included)(《缺氧》)是一款高难度的太空殖民模拟游戏。**ONI Agent** 为 AI 提供了一套完整的"眼手"系统:92 个 RESTful API 端点覆盖了玩家能做的全部操作(建造/挖掘/研究/管线/自动化/生物管理/覆盖层切换等),截图和视角控制让 AI 看到游戏画面,事件守护进程让 AI 实时感知游戏动态。Mod + Python 工具链 + AI 三层架构,让任何支持 Tool Use 的模型都能像人类一样操作游戏。 + +## 整体架构 + +``` +┌─────────────────────────────────────────────────┐ +│ AI Agent │ +│ (Claude / GPT / 任何支持 Tool Use 的模型) │ +└──────┬──────────────────────────┬───────────────┘ + │ HTTP API (RESTful JSON) │ CLI 工具链 + ▼ ▼ +┌──────────────┐ ┌────────────────────────────┐ +│ ONI Mod │ │ Python Tools │ +│ (C# / │ │ ├── oni_api.py (客户端) │ +│ Harmony) │ │ ├── oni_analyzer.py (分析) │ +│ 端口 23876 │ │ └── oni_builder.py (蓝图) │ +└──────┬───────┘ └──────────┬─────────────────┘ + │ │ + ▼ ▼ +┌─────────────────────────────────────────────────┐ +│ Oxygen Not Included (游戏) │ +└─────────────────────────────────────────────────┘ +``` + +## 快速开始 + +### 前置条件 + +- [Oxygen Not Included](https://store.steampowered.com/app/457140) 游戏 +- Python 3.8+ +- Mod 文件部署到游戏 Mod 目录 + +### 1. 安装 Mod + +将 `mod/` 目录下的内容(`mod_info.yaml` + `ONIAgentBridge.dll`)放入游戏的 Mod 文件夹: + +``` +Windows: %USERPROFILE%\Documents\Klei\OxygenNotIncluded\mods\local\ONIAgentBridge\ +macOS: ~/Library/Application Support/Klei/OxygenNotIncluded/mods/local/ONIAgentBridge/ +Linux: ~/.config/unity3d/Klei/OxygenNot Included/mods/local/ONIAgentBridge/ +``` + +### 2. 启动游戏 + +启动 ONI,在 Mod 菜单中启用 **ONI Agent Bridge**,加载存档。 + +### 3. 验证连接 + +```bash +python3 tools/oni_api.py health +``` + +预期输出: `{ "status": "ok", "service": "oni-agent-bridge" }` + +### 4. 查看游戏状态 + +```bash +python3 tools/oni_api.py status +python3 tools/oni_analyzer.py +``` + +## 工具链详解 + +### `tools/oni_api.py` — Mod API 客户端 + +与游戏 Mod 通信的核心 CLI 工具,支持所有查询和操作。 + +```bash +# 状态查询 +python3 tools/oni_api.py status # 游戏总览 +python3 tools/oni_api.py resources # 全部资源 +python3 tools/oni_api.py buildings # 全部建筑 +python3 tools/oni_api.py duplicants # 复制人详情 +python3 tools/oni_api.py research # 科技进度 +python3 tools/oni_api.py geysers # 喷泉列表 +python3 tools/oni_api.py critters # 小动物 +python3 tools/oni_api.py plants # 植物 +python3 tools/oni_api.py rooms # 房间 + +# 地图/格子数据 +python3 tools/oni_api.py cell 10 5 # 查看单个格子 +python3 tools/oni_api.py cells 0 0 20 20 # 查看 20x20 区域 +python3 tools/oni_api.py slice y 20 0 50 # 扫描第 20 行 +python3 tools/oni_api.py gas 50 50 30 # 气体分析 +python3 tools/oni_api.py explore 40 40 30 20 # AI 友好摘要 + +# 实体注册表(查询 ID) +python3 tools/oni_api.py registry buildings Electrolyzer +python3 tools/oni_api.py registry elements Water +python3 tools/oni_api.py registry techs + +# 执行操作 +python3 tools/oni_api.py dig 10 10 8 6 # 挖掘区域 +python3 tools/oni_api.py build Electrolyzer 15 12 # 建造建筑 +python3 tools/oni_api.py deconstruct Tile 10 10 # 拆除 +python3 tools/oni_api.py prioritize 15 12 9 # 优先 +python3 tools/oni_api.py research_select ImprovedOxygen # 科研 +python3 tools/oni_api.py mop 10 10 # 清理液体 +python3 tools/oni_api.py harvest 20 15 # 收获植物 + +# 游戏速度控制(AI 操作前必须先暂停) +python3 tools/oni_api.py pause "Reason here" # 暂停游戏 +python3 tools/oni_api.py unpause 1 # 恢复(1x 速度) +python3 tools/oni_api.py speed 3 # 直接设速度(不暂停) + +# 批量任务 +python3 tools/oni_api.py batch docs/batch_example.json # 执行批量建造计划 + +# 优先级管理 +python3 tools/oni_api.py priority_global dig 7 # 全局挖掘优先级设为 7 +python3 tools/oni_api.py priority_type Electrolyzer 9 # 电解器建造优先级设为 9 + +# 管道/电线路径 +python3 tools/oni_api.py build_pipe_line liquid 42 40 48 40 # 铺设液体管道 +python3 tools/oni_api.py build_wire_line regular 42 40 48 40 # 铺设电线 + +# 高级指令(多个 API 组合) +python3 tools/oni_commander.py diagnose # 全面诊断 +python3 tools/oni_commander.py fix_co2 # 自动处理 CO2 +python3 tools/oni_commander.py fix_overload # 处理过载电路 +python3 tools/oni_commander.py emergency_o2 # 紧急制氧 +python3 tools/oni_commander.py expand_base 40 40 10 8 # 一键拓展房间 +``` + +### `tools/oni_analyzer.py` — 智能分析器 + +自动拉取全方位游戏状态,分析六大维度并生成可操作建议。 + +```bash +python3 tools/oni_analyzer.py +``` + +分析内容: +- 氧气供应状态 → 建议 SPOM 建造时机 +- 食物储备 → 建议扩建农场/养殖 +- 电力状况 → 建议新增发电类型 +- 温度异常 → 建议冷却方案 +- 水资源 → 建议过滤/收集策略 +- 科研进度 → 建议下一个研究方向 + +### `tools/oni_builder.py` — 蓝图建造器 + +预置常用建筑模块,一键部署。 + +```bash +python3 tools/oni_builder.py list # 列出所有蓝图 +python3 tools/oni_builder.py build spom 42 42 # 建造 SPOM +``` + +内置蓝图(7个): + +| 蓝图 | 说明 | 尺寸 | +|------|------|------| +| `spom` | 标准 SPOM(电解制氧+氢气发电闭环) | 8×6 | +| `spom_mini` | 紧凑型 SPOM(前期过渡用) | 5×4 | +| `toilet_loop` | 卫生间水循环(厕所→净水器→厕所) | 8×4 | +| `ranch_hatch` | 哈奇养殖模块 | 10×6 | +| `farm_mealwood` | 浆果农场(6个种植箱+储物箱) | 6×4 | +| `cooling` | 蒸汽涡轮冷却模块 | 8×6 | +| `bedroom` | 标准卧室(床+梯子床+装饰) | 8×4 | + +### `scripts/event_daemon.py` — 事件守护进程(AI 输入源) + +持续轮询游戏事件并将其注入 AI 输入流。这是 AI 感知游戏状态变化的实时通道。 + +```bash +python3 scripts/event_daemon.py +``` + +工作原理: +1. 每 5 秒轮询 `GET /api/state/events?since=` 获取新事件 +2. 对事件分类(critical / warning / info) +3. critical 事件 → 红色告警 + **自动触发全量游戏快照**(周期/窒息/饥饿/压力) +4. warning 事件 → 结构化输出给 AI +5. 维护滚动事件历史(最多 200 条),AI 可随时查询摘要 + +事件类型: +- `critical` — 复制人窒息、建筑损坏、电力中断 → 立即触发分析 +- `warning` — 低氧、食物短缺、高温 → 主动通知给 AI +- `action_feedback` — 建造/挖掘等操作的结果反馈 +- `info` — 常规游戏状态变化 + +### 辅助脚本 + +```bash +bash scripts/auto_repair.sh # 诊断 Mod 连接 +bash scripts/auto_analyze.sh # 一键健康检查+状态+分析 +bash scripts/watch.sh 60 # 每 60 秒持续监控 +bash scripts/setup.sh # 环境初始化 +python3 scripts/event_daemon.py # 事件守护进程(AI 输入源) +``` + +## Mod API 完整端点 + +### 状态查询 (GET) + +| 端点 | 说明 | +|------|------| +| `/health` | Mod 存活检测 | +| `/api/state/game` | 全局状态(周期/人数/世界尺寸) | +| `/api/state/resources` | 资源列表(含物态/分类) | +| `/api/state/duplicants` | 复制人(位置/压力/食物/当前任务) | +| `/api/state/buildings` | 建筑(位置/是否运行/功耗/分类) | +| `/api/state/research` | 科技树(进度/解锁建筑) | +| `/api/state/geysers` | 喷泉(位置/状态/排放率) | +| `/api/state/alert` | 警报 | +| `/api/state/critters` | 小动物(位置/种类/幸福度) | +| `/api/state/plants` | 植物(位置/生长进度/是否枯萎) | +| `/api/state/rooms` | 房间(类型/格数/建筑数) | +| `/api/state/queue` | 任务队列(查看待处理任务) | +| `/api/state/events?since=&limit=` | 事件流(AI 轮询增量事件) | +| `/api/state/priorities` | 优先级配置(全局/建筑/复制人) | + +### 地图/格子数据 (GET) + +| 端点 | 说明 | +|------|------| +| `/api/state/cell?x=10&y=5` | 单格详情 | +| `/api/state/cells?x=&y=&width=&height=` | 矩形区域批量查询 | +| `/api/state/cells/slice?axis=&index=&start=&end=` | 行/列扫描 | +| `/api/state/gas?x=&y=&radius=` | 区域气体分布 | + +### 实体注册表 (GET,AI 参考) + +| 端点 | 说明 | +|------|------| +| `/api/registry/buildings` | 全部建筑定义(尺寸/功耗/材料) | +| `/api/registry/elements` | 全部元素定义(比热容/熔沸点/导热) | +| `/api/registry/techs` | 全部科技定义(前置/解锁) | +| `/api/registry/priorities` | 优先级级别含义对照表 | + +### 操作 (POST) + +| 端点 | 请求体 | +|------|--------| +| `/api/action/dig` | `{x, y, width, height}` | +| `/api/action/build` | `{buildingId, x, y}` | +| `/api/action/deconstruct` | `{buildingId, x, y}` | +| `/api/action/prioritize` | `{x, y, priority}` | +| `/api/action/research` | `{techId}` | +| `/api/action/mop` | `{x, y}` | +| `/api/action/harvest` | `{x, y}` | +| `/api/action/schedule` | `{duplicantId, schedule}` | +| `/api/action/wardrobe` | `{duplicantId, equipment}` | +| `/api/action/batch` | `{actions: [{type, ...}]}` — 批量执行 | +| `/api/action/priority_global` | `{target, priority}` — 全局默认优先级 | +| `/api/action/priority_type` | `{buildingType, priority}` — 按建筑类型设优先级 | +| `/api/action/pause` | `{reason?}` — 暂停游戏(AI 操作前必须调用) | +| `/api/action/unpause` | `{speed?}` — 恢复游戏 | +| `/api/action/speed` | `{speed}` — 设置速度 1x/2x/3x | + +## 项目结构 + +``` +oni-agent/ +├── README.md # ← 本文件 +├── config.json # Mod 连接配置(host/port/timeout) +├── SKILL.md # AI Agent skill 定义与操作手册 +│ +├── mod/ # 游戏 Mod(C# / Harmony) +│ ├── mod_info.yaml # Mod 元信息(标题/版本/兼容性) +│ └── ONIAgentBridge.cs # HTTP API 服务实现 +│ +├── tools/ # Python 工具链 +│ ├── oni_api.py # API 客户端(20+ 子命令) +│ ├── oni_analyzer.py # 状态分析(6维度预警+建议) +│ └── oni_builder.py # 蓝图建造(7个预置模块) +│ +├── scripts/ # 辅助脚本 +│ ├── setup.sh # 环境初始化 +│ ├── auto_repair.sh # 连接诊断 +│ ├── auto_analyze.sh # 一键分析 +│ ├── watch.sh # 持续监控模式 +│ └── event_daemon.py # 事件守护进程(AI 实时输入源) +│ +├── docs/ +│ ├── MOD_DEV_GUIDE.md # Mod 开发规范与约束 +│ ├── AI_KNOWLEDGE_BASE.md # 200+ 建筑/元素/科技 ID 知识库 +│ └── batch_example.json # 批量任务示例文件 +│ +└── skills/ + └── oni_agent.md # Agent skill 定义 +``` + +## 文档索引 + +| 文档 | 目标读者 | 内容 | +|------|---------|------| +| `SKILL.md` | AI Agent | 坐标系理解、API 用途、场景推理示例、操作表述规范 | +| `docs/AI_KNOWLEDGE_BASE.md` | AI Agent | 建筑 ID 对照表、元素属性、科技树、游戏机制参考 | +| `docs/MOD_DEV_GUIDE.md` | Mod 开发者 | 通信协议、端点规范、安全约束、检查清单 | +| `README.md` | 人类用户 | ← 你在看这个 | + +## 常见问题 + +**Q: Mod 连接不上?** + +运行 `bash scripts/auto_repair.sh` 诊断。确认: +1. 游戏已启动并加载存档 +2. Mod 已在游戏中启用 +3. 端口 23876 未被占用 + +**Q: `buildingId` 从哪查?** + +```bash +python3 tools/oni_api.py registry buildings | grep -i electrolyzer +``` + +或者查看 `docs/AI_KNOWLEDGE_BASE.md`。 + +**Q: 怎么知道在哪个坐标建造?** + +使用 `explore` 命令探索区域: + +```bash +python3 tools/oni_api.py explore 40 40 30 20 +``` + +它会告诉你该区域有哪些建筑、复制人、元素分布,帮你决策。 + +## 许可证 + +MIT diff --git a/SKILL.md b/SKILL.md new file mode 100644 index 0000000..54a6379 --- /dev/null +++ b/SKILL.md @@ -0,0 +1,489 @@ +# Oxygen Not Included (ONI) Agent + +## 职责 +协助玩家操作和管理游?缺氧"(Oxygen Not Included),提供游戏知识、策略建议,并通过 Mod API 直接操控游戏? +## 工程结构 + +``` +oni-agent/ +├── config.json # Mod 连接配置 +├── mod/ +? ├── mod_info.yaml # Mod 元信?? └── ONIAgentBridge.cs # Mod HTTP API 服务 (端口 23876) +├── tools/ +? ├── oni_api.py # Mod API 客户?? ├── oni_analyzer.py # 游戏状态分?? └── oni_builder.py # 蓝图建造规?├── scripts/ +? ├── auto_repair.sh # 连接诊断 +? ├── auto_analyze.sh # 一键分?? ├── watch.sh # 持续监控 +? └── setup.sh # 环境初始?├── docs/ +? ├── MOD_DEV_GUIDE.md # Mod 开发指?? └── AI_KNOWLEDGE_BASE.md # AI 知识?(ID注册?语义标签) +├── skills/ +? └── oni_agent.md # Agent skill 定义 +└── SKILL.md # 本文?``` + +--- + +## 重要概念:理?ONI 的数据模? +### 1. 坐标? +ONI 使用二维方格(tile)系统。AI 必须理解坐标系才能正确操作: + +``` + y ? ? ┌────┬────┬────? ? ?5,5)?6,5)?7,5)? ? ├────┼────┼────? ? ?5,4)?6,4)?7,4)? ?这个格子 (6,4) 包含一个电解器 + ? ├────┼────┼────? ? ?5,3)?6,3)?7,3)? ? └────┴────┴────? └──────────────────────────?x + (0,0) +``` + +- **原点 (0,0)** 在地?*左下?* +- **x ?*向右增加?*y ?*向上增加 +- 每个格子 (cell) 有唯一?(x, y) 坐标 +- 建筑占用 w×h 个格子,其坐标是**左下角锚?* +- 世界大小通过 `/api/state/game` 查询(`gridWidth` x `gridHeight`?- 典型地图: ~256 x 384 ? +### 2. 理解格子状? +每格的数据结构如下(通过 `/api/state/cell?x=&y=` 查询): + +```json +{ + "x": 10, "y": 5, + "element": "Oxygen", // 该格包含的元素名? "elementState": "gas", // solid/liquid/gas/vacuum + "massKg": 1.8, // 该格中元素的质量 + "temperatureC": 23.5, // 温度(摄氏? + "hasBuilding": true, // 是否有建? "buildingName": "Electrolyzer",// 建筑名称(如有) + "hasDuplicant": false, // 是否有复制人 + "isVacuum": false, // 是否为真? "isSolid": false, // 是否为固? "isLiquid": false, + "isGas": true, + "isVisible": true // 是否已探?} +``` + +### 3. 理解地图区域 + +通过 `/api/state/cells?x=&y=&width=&height=` 获取矩形区域的格子数组? +通过 `explore ` 命令获取 AI 友好的结构化摘要?- 该区域的建筑列表(带是否可运行) +- 该区域的复制人列表(带压?当前任务?- 元素分布统计 +- 感兴趣的关键格子 + +--- + +## 通信方式 + +- Mod 在游戏内启动 HTTP 服务,暴?RESTful API +- 通过 `http://127.0.0.1:PORT` 与游戏通信 +- 端口?`config.json` 中配置(默认 23876? +--- + +## 可用 API 端点 + +### 状态查?(GET) + +| 端点 | 说明 | 用?| +|------|------|------| +| `/api/state/buildable` | 当前科技解锁的建?| 查看 AI 现在能造什?| +| `/api/state/research` | 科技树(进度/解锁的建筑) | 科研规划 | +| `/api/state/geysers` | 喷泉(位?状?排放率) | 资源规划 | +| `/api/state/alert` | 警报列表 | 紧急处?| +| `/api/state/critters` | 小动物(位置/种类/幸福?年龄?| 养殖管理 | +| `/api/state/plants` | 植物(位?生长进度/是否枯萎?| 农业管理 | +| `/api/state/rooms` | 房间(类?格数/建筑数) | 房间判定 | + +### 地图/格子数据 (GET) + +| 端点 | 说明 | 示例 | +|------|------|------| +| `/api/state/cell?x=10&y=5` | 单格详情 | 查看某个格子是气?液体/建筑 | +| `/api/state/cells?x=0&y=0&width=10&height=10` | 矩形区域 | 查看 10x10 区域 | +| `/api/state/cells/slice?axis=y&index=20&start=0&end=50` | ?列扫?| 查看?20 ?| +| `/api/state/gas?x=10&y=10&radius=20` | 区域气体分析 | 查看周围气体成分 | + +### 实体注册?(GET,AI 参考用) + +| 端点 | 说明 | +|------|------| +| `/api/registry/buildings` | 所有建?ID 及尺?功?发热 | +| `/api/registry/elements` | 所有元?ID 及比热容/导热/熔沸?| +| `/api/registry/techs` | 所有科技 ID 及前?解锁内容 | + +### 操作 (POST) + +| 端点 | 请求?| 用?| +|------|--------|------| +| `/api/action/toggle` | `{x, y}` | 开关建筑(省电/控制流程?| +| `/api/action/set_recipe` | `{x, y, recipeId}` | 设置建筑配方 | +| `/api/action/empty` | `{x, y}` | 清空建筑储物 | +| `/api/action/cancel_errand` | `{x, y}` | 取消建筑处的任务 | +| `/api/action/dig` | `{x, y, width, height}` | 挖掘区域 | +| `/api/action/build` | `{buildingId, x, y}` | 建造建?| +| `/api/action/deconstruct` | `{buildingId, x, y}` | 拆除建筑 | +| `/api/action/prioritize` | `{x, y, priority}` | 设优先级 | +| `/api/action/research` | `{techId}` | 选研究项?| +| `/api/action/mop` | `{x, y}` | 清理液体 | +| `/api/action/harvest` | `{x, y}` | 收获植物 | + +--- + +## AI 如何进行推理和操? +### 第一步:获取全局上下? +```bash +python3 tools/oni_api.py status +python3 tools/oni_api.py buildings +python3 tools/oni_analyzer.py +``` + +### 第二步:理解地图 + +```bash +# 探索基地中心区域(假设基地在 50,50?python3 tools/oni_api.py explore 40 40 40 30 + +# 检查某个格子的详细信息 +python3 tools/oni_api.py cell 45 48 + +# 查看气体分布 +python3 tools/oni_api.py gas 50 50 30 +``` + +### 第三步:参考知识库 + +```bash +# 查找某个建筑?ID +python3 tools/oni_api.py registry buildings Electrolyzer + +# 查看元素属?python3 tools/oni_api.py registry elements Water + +# 查看科技?python3 tools/oni_api.py registry techs +``` + +### 第四步:执行操作 + +```bash +# 建造电解器 +python3 tools/oni_api.py build Electrolyzer 45 48 + +# 挖掘空间 +python3 tools/oni_api.py dig 40 45 8 6 + +# 选择科研方向 +python3 tools/oni_api.py research_select ImprovedOxygen + +# 使用蓝图 +python3 tools/oni_builder.py build spom 42 42 +``` + +--- + +## AI 如何理解常见游戏场景 + +### 场景 1:氧气不? +**AI 推理过程?* +1. 检?`/api/state/resources` 中的 O2 ?Algae 存量 +2. 检?`/api/state/buildings` 是否有电解器或氧气扩散器 +3. 检?`/api/state/cell?x=&y=` 查询基地气体分布 +4. 如果 Algae < 1t 且无电解??建议建?SPOM +5. SPOM 需要:水源 + 电解?+ 气体?+ 氢气发电?+ 气体过滤?6. 通过 `explore` 找到一?8x6 的空?7. 执行 `build Electrolyzer x y` + `build GasPump ...` + `build HydrogenGenerator ...` + +### 场景 2:食物短? +**AI 推理过程?* +1. 检?Calories < 500,000 kcal ?食物预警 +2. 检查是否有 PlanterBox/FarmTile ?ElectricGrill +3. 如果没有农场 ?建议建?5 ?PlanterBox ?Mealwood +4. Mealwood 不需要灌溉或施肥,只需 Dirt +5. 检?Dirt 存量,如果足??执行建?6. 如果有污??建议建?Water Sieve + 厕所水循? +### 场景 3:温度过? +**AI 推理过程?* +1. 检查温度数据(通过资源中的 Temperature 或格子数据) +2. 查看热源(煤发电机、精炼厂等靠近基地的位置?3. 建议:用隔热门包围热?+ 建造液冷模?4. 液冷模块需要:Aquatuner + SteamTurbine + 导热液体管道 + +--- + +## 暂停与速度参? +游戏状态中?`isPaused` ?`gameSpeed` 字段? +``` +isPaused: true ?是否暂停 +gameSpeed: 0 ?0=暂停, 1=1x, 2=2x, 3=3x +``` + +暂停规则已集成在"统一操作协议"的标?SOP 中,详见下节。核心原则: +- **所有写操作前必须暂?*(dig/build/deconstruct/batch/pipe/wire?- **只读查询不需要暂?*(status/resources/events?- **操作完成后必须恢?* + +--- + +--- +## AI 统一操作协议 + +这是 AI 操作缺氧的标准协议。所有决策和操作必须遵循此协议? +### 铁律(必须遵守) + +``` +铁律 1: 任何时?AI 开始推?决策??必须先暂停游戏? 工具在获取游戏状态数据时会自动触发暂停, + 保证 AI 获取的信息是当前时刻的准确快照? ?工具自动执行 pause(无需手动调用? ?AI 完成所有操作后主动 unpause + +铁律 2: 任何时?AI 需要向用户提问,必须先暂停游戏? ?工具自动暂停,用户回答后 AI 恢复?unpause + +铁律 3: 任何时?AI 结束回答/退出操作状态,必须确保游戏处于暂停态, + 除非用户明确要求不暂停? ?防止游戏?AI 不监控时状态恶化(窒息/过载/高温/CO₂) + +铁律 4: 任何时?AI 执行写操作(dig/build/deconstruct/batch/pipe/wire), + 工具自动确保暂停态? +铁律 5: 重大操作前必须先 save 存档,失败后允许 load 回滚?``` + +### 核心操作循环 + +每次 AI 与游戏交互都必须遵循这个五步循环? +``` +┌─────────────────────────────────────────────────────────?? 1. 上下文感? ?? snapshot + diagnose + events ?? "我现在看到什么?当前状态是什么?发生了什么?" ?└──────────────────────┬──────────────────────────────────? ?┌─────────────────────────────────────────────────────────?? 2. 决策与规? ?? pause ?分析数据 ?确定目标 ?选择工具 ?? "基于现状,我需要做什么?用什么工具?在哪个坐标?" ?└──────────────────────┬──────────────────────────────────? ?┌─────────────────────────────────────────────────────────?? 3. 执行前保? ?? save ?camera ?cell ?snapshot ?? "先存档,然后把视野移过去,确认坐标正? ?└──────────────────────┬──────────────────────────────────? ?┌─────────────────────────────────────────────────────────?? 4. 执行操作 ?? dig/build/build_pipe_line/batch ?? 每一步检查反馈(success/fail + suggestion? ?└──────────────────────┬──────────────────────────────────? ?┌─────────────────────────────────────────────────────────?? 5. 验证与恢? ?? unpause ?snapshot ?检查状? ?? 恶化 ?load 回滚 ?换方? ?└─────────────────────────────────────────────────────────?``` + +### 标准操作 SOP + +任何时?AI 执行操作,必须按以下流程? +``` +步骤 0: 暂停 + python3 tools/oni_api.py pause "操作说明" + ?确认 success=true,否则重? +步骤 1: 视觉确认 + python3 tools/oni_api.py camera + python3 tools/oni_api.py snapshot + ?下载截图,确认目标位置正? +步骤 2: 数据确认 + python3 tools/oni_api.py cell + ?hasBuilding=true ??deconstruct 或换位置 + ?isSolid=true ??dig + ?isVacuum=true ?确认原因 + +步骤 3: 安全存档 + python3 tools/oni_api.py save "before_任务? + ?确认 success=true + +步骤 4: 执行 + dig / build / build_pipe_line / build_wire_line / batch + ?每次检查反馈: + success=true ?继续 + success=false ??suggestion ?调整重试 ?3次失败则 load 回滚 + +步骤 5: 验证 + snapshot ?截图对比 + resources ?资源变化 + 未改??load 回滚 + +步骤 6: 恢复 + unpause 1 +``` + +### 决策框架 + +AI 面对任何问题按此框架思考: + +``` +【数据收集? status ?diagnose ?power ?co2 ?temp_zones ?resources ?buildings + +【定位分析? cells ?cell ?camera + snapshot + +【方案选择? 紧??emergency_o2 / fix_co2 / fix_overload + 建??定坐??build / build_pipe_line / build_wire_line + 批量 ?batch JSON + 扩展 ?expand_base + 检??diagnose + 回滚 ?load +``` + +### 标准方案手册 + +#### 方案 A:初期基地(Cycle 1-20? +``` +1. pause "Initial base" +2. diagnose +3. expand_base <中心> +5. build ManualGenerator <坐标> +6. build Battery <坐标> +7. build OxygenDiffuser <坐标> +8. build PlanterBox x5 +9. build Cot x3 / LadderBed x3 +10. build Outhouse + WashBasin +11. research_select FarmingTech +12. research_select PowerRegulation +13. unpause 1 +``` + +#### 方案 B:CO2 危机 + +``` +症状:duplicants 窒息,co2 显示大量 CO2 +1. pause "CO2" +2. co2 ?找到最?CO2 聚集?3. camera <最?y> 20 +4. snapshot ?确认地形 +5. save "before_co2" +6. fix_co2 ?自动挖排气管 +7. snapshot ?确认挖?8. unpause 1 +9. 30s ?co2 确认下降 +``` + +#### 方案 C:电力过? +``` +症状:power 显示 *** OVERLOAD *** +1. pause "Power overload" +2. power ?哪个电路过载 +3. diagnose ?资源检?4. save "before_power" +5. fix_overload ?修复建议 +6. 如电力不??build <发电? ?build_wire_line <连接> +7. power ?确认过载消失 +8. unpause 1 +``` + +#### 方案 D:氧气危? +``` +症状:duplicants 显示 oxygen<20% +1. pause "O2" +2. snapshot ?视觉确认 +3. resources ?O2/Algae 存量 +4. buildings ?电解?扩散?5. save "before_o2" +6. 分支? 无设??build OxygenDiffuser + 无藻??build Electrolyzer + 接水管电? 设备不工??cell 检查供水和供电 +7. unpause 1 +8. 30s ?resources ?O2 回升?``` + +#### 方案 E:建?SPOM + +``` +1. pause "SPOM" +2. explore ?8x6 空地 +3. camera ?snapshot 确认 +4. save "before_spom" +5. oni_builder.py build spom +6. build_pipe_line liquid <水源> <电解? +7. build_wire_line heavy <发电? <电池> cross +8. unpause 1 +``` + +#### 方案 F:管道铺设(带交叉处理) + +``` +需求:液体管道横穿已有气体管道 +1. pause "Plumbing" +2. camera <起点> <终点> 25 +3. save "before_pipe" +4. 横穿段用 cross 模式? build_pipe_line liquid <起点> <终点> cross + ?Mod 自动在交叉处放跨接器 +5. pipes liquid ?确认流动 +6. unpause 1 +``` + +#### 方案 G:电线布? +``` +需求:为新建筑拉电线到电网 +1. pause "Wiring" +2. camera <建筑> <电源> 25 +3. power ?查空余容?4. save "before_wire" +5. 布线(横穿用 cross): + build_wire_line regular <建筑> <变压? cross +6. unpause 1 +``` + +### 错误恢复 + +``` +操作失败 ?AI 必须读取 error + errorMessage + suggestion + +错误处理表: +cell_occupied ?换坐标或 deconstruct +cell_solid ??dig +cell_occupied_by_dupe?等待 +material_shortage ?查资?+ 安排生产 +unknown_building ?registry buildings 查询 +unknown_tech ?registry techs 查询 +missing_prerequisites?先研究前置科技 +invalid_priority ??1-9 +save_not_found ?saves 列出 + +重试 3 次失??load 回滚 +``` + +### 坐标定位方法 + +``` +方法 1: 基于已有建筑偏移 + buildings ?查已有建筑坐??偏移放置 + +方法 2: 基于区域探索 + explore ?找空? +方法 3: 基于资源位置 + co2 ?CO2 聚集点下方挖排气? +方法 4: 基于 cell 验证 + cell ?确认 isSolid=false + hasBuilding=false + isVisible=true + +AI 习惯:头脑规划坐??cell 验证 ?确认无误再建?``` + +### 事件自动响应 + +event_daemon 运行?AI 自动响应规则? +``` +[CRITICAL] 窒息 + ?diagnose ?执行方案 D 或方?B + +[CRITICAL] 电力中断 + ?power ?执行方案 C + +[WARNING] 食物短缺 + ?Calories<200k ??PlanterBox x5 + +[WARNING] 温度过高 + ?temp_zones ?隔热?+ 冷却 + +[INFO] 新周? ?research ?继续科研 + ?resources ?安排生产 + +AI 不应等待指令——事件本身就是指令?``` + +--- + +## AI 如何表达"在哪个格子做什? + +### 定位语法 + +AI 在描述操作时应使用以下格式: + +``` +在坐?(x, y) 建? +在区?(x, y, width, height) 进行挖掘 +?(x1,y1) ?(x2,y2) 铺设管道/电线 +在格?(x, y) 设置优先级为 +``` + +### 坐标查找策略 + +?AI 不确定在哪里建造时?1. 先用 `explore` 找一个空闲区域(没有建筑和固体阻挡) +2. 检查空闲区域的元素和温度是否适合 +3. ?`cell` 命令确认目标格子状?4. 然后?`dig` 清理空间 +5. 最后用 `build` 建? +### 建筑放置规则 + +- 建筑坐标是其**左下?*的位?- 建筑占用?w×h 区域必须全部是空?- 需要确认目标区域无建筑、无固体自然方块 +- 气体/液体不会阻挡建筑 +- 如果建筑需要特定环境(如电解器需要水),AI 需要先检查环? +--- + +## 工具列表 + +| 工具 | 用?| +|------|------| +| `tools/oni_api.py` | Mod API 客户端(状?格子/注册?操作/批量/优先?事件?| +| `tools/oni_analyzer.py` | 自动分析游戏状态、生成预警和建议 | +| `tools/oni_builder.py` | 预置蓝图建造(SPOM/农场/养殖等) | +| `scripts/auto_repair.sh` | 诊断 Mod 连接问题 | +| `scripts/auto_analyze.sh` | 一键健康检?状?分析 | +| `scripts/watch.sh [秒]` | 循环监控模式 | +| `scripts/setup.sh` | 环境初始化与检?| +| `scripts/event_daemon.py` | **事件守护进程** ?持续轮询事件 ?AI 输入?| +| `docs/AI_KNOWLEDGE_BASE.md` | 建筑/元素/科技 ID 注册表和游戏机制参?| +| `docs/batch_example.json` | 批量任务示例文件 | + +--- + +## 核心游戏知识 + +### 生存优先?1. **氧气** ?电解?> 藻类制氧(前期过渡) +2. **食物** ?浆果 > 烤肉 > 营养?3. **温度控制** ?液冷 + 蒸汽?4. **电力** ?氢气发电 > 煤炭 > 手动 +5. **水资源管?* ?净水器、污水过? +### 常用布局 +- SPOM: 电解制氧 + 氢气发电闭环 +- 卫生间水循环: 卫生??净水器 ?卫生?- 冷却系统: 液冷 + 蒸汽?+ 导热?- Ranch 模块: 养殖哈奇/滑鳞/飞鱼 + +### 关键事件预警 +- 氧气不足 (< 500g/tile) ?增加制氧 +- 温度超标 (> 40°C ?< -10°C) ?增加温控 +- 食物短缺 (< 5 周期余量) ?扩大种植/养殖 +- 电力不足 ?增加发电或减少负?- 污水满溢 ?增加净?扩大存储 diff --git a/config.json b/config.json new file mode 100644 index 0000000..6d61125 --- /dev/null +++ b/config.json @@ -0,0 +1,5 @@ +{ + "modHost": "127.0.0.1", + "modPort": 23876, + "timeout": 10 +} diff --git a/docs/AI_KNOWLEDGE_BASE.md b/docs/AI_KNOWLEDGE_BASE.md new file mode 100644 index 0000000..05f9a13 --- /dev/null +++ b/docs/AI_KNOWLEDGE_BASE.md @@ -0,0 +1,268 @@ +# ONI Knowledge Base — AI Reference + +This file aggregates all building IDs, element IDs, tech IDs, and their semantic metadata +in one structured document. The AI uses this to understand what each entity means and +how to reason about the game. + +## Coordinate System + +ONI uses a 2D grid. The origin (0,0) is at the **bottom-left** of the map. +- x increases to the right +- y increases upward +- Each cell is 1x1 tile +- Buildings may occupy multiple cells (width x height); the (x,y) is the **bottom-left anchor** +- World size varies by asteroid (default ~256x384 cells) + +When the AI wants to reference a location: +- Use absolute (x,y) coordinates +- For regions: (x, y, width, height) +- For buildings: reference the bottom-left cell of the building +- For movement: "at (x,y)" or "from (x1,y1) to (x2,y2)" + +## Building Categories + +| Category | Purpose | Examples | +|------------|----------------------------------------|---------------------------------------------------| +| Base | Structure, storage, doors, ladders | Tile, Ladder, StorageBin, InsulatedTile, Door | +| Oxygen | Oxygen production, gas cleaning | Electrolyzer, OxygenDiffuser, Deodorizer | +| Power | Power generation, storage, wiring | CoalGenerator, HydrogenGenerator, Battery | +| Food | Food production, cooking, ranching | PlanterBox, ElectricGrill, MicrobeMusher, Ranch | +| Plumbing | Liquid handling, hygiene | LiquidPump, Lavatory, WaterSiever, Shower | +| Ventilation| Gas handling | GasPump, GasFilter, GasVent | +| Refinement | Material processing | MetalRefinery, RockCrusher, Kiln, Compost | +| Medicine | Health, disease treatment | Apothecary, MassageTable, SickBay | +| Furniture | Decor, morale, stress relief | Cot, MessTable, ArcadeCabinet, FlowerPot | +| Stations | Research, suit docks, crafting | ResearchStation, SuperComputer, AtmoSuitDock | +| Utilities | Temperature management | ThermoAquatuner, SpaceHeater, TempshiftPlate | +| Automation | Logic circuits, sensors | AND Gate, AtmoSensor, AutomationWire | +| Shipping | Conveyor systems | ConveyorLoader, ConveyorRail, SolidFilter | + +## Key Building IDs (frequently used by AI) + +``` +# Oxygen production +Electrolyzer -> Produces O2 + H2 from water (needs 1kg/s water) +OxygenDiffuser -> Produces O2 from algae (early game) +Deodorizer -> Converts PollutedOxygen to Oxygen (needs filtration medium) + +# Power +ManualGenerator -> 400W, duplicant powered +CoalGenerator -> 600W, consumes Coal +HydrogenGenerator -> 800W, consumes H2 +NaturalGasGenerator-> 800W, consumes NaturalGas +PetroleumGenerator -> 2000W, consumes Petroleum +SteamTurbine -> Extracts heat from steam, produces power +SolarPanel -> 380W max, needs light +WoodBurner -> 300W, consumes Lumber + +# Power storage +Battery -> 10kJ storage, small +JumboBattery -> 40kJ storage +SmartBattery -> 20kJ storage, automation output + +# Food +PlanterBox -> Grows plants, needs dupe delivery +FarmTile -> Grows plants with irrigation +HydroponicFarm -> Grows plants with automatic irrigation +ElectricGrill -> Cooks food (better quality) +MicrobeMusher -> Makes basic mush bars from water + dirt +GasRange -> Advanced cooking with gas +Refrigerator -> Stores food, slows decay + +# Plumbing +LiquidPump -> Pumps liquids (240kg/s) +Lavatory -> Produces PollutedWater from dupe use +WaterSiever -> Filters PollutedWater -> Water +Desalinator -> Removes salt from SaltWater/Brine +LiquidVent -> Outputs liquid into world + +# Ventilation +GasPump -> Pumps gases (500g/s) +GasFilter -> Filters specific gas from mixed pipes +GasVent -> Outputs gas into world +HighPressureGasVent-> 20kg/tile max pressure + +# Refinement +MetalRefinery -> Refines metal ores into refined metals +RockCrusher -> Crushes rock into sand/power +Kiln -> Burns clay -> ceramic +GlassForge -> Makes glass from sand +Compost -> Converts polluted dirt into dirt + +# Base +Tile -> Standard tile, 2 tiles high +Ladder -> Allows vertical movement +InsulatedTile -> Reduces heat transfer (best insulation) +ManualAirlock -> Manual door +PneumaticDoor -> Auto door, lets gas pass +MechanizedAirlock -> Auto door, seals gas/liquid +StorageBin -> Stores solid resources +LiquidReservoir -> Stores 5t of liquid +GasReservoir -> Stores 150kg of gas + +# Temperature +ThermoAquatuner -> Cools liquid piped through it (needs steam room) +ThermoRegulator -> Cools gas piped through it +SpaceHeater -> Heats area (inefficient) +LiquidTepidizer -> Heats liquid (up to 85C) +TempshiftPlate -> Distributes heat evenly + +# Stations +ResearchStation -> Basic research (needs dirt) +SuperComputer -> Advanced research (needs plastic) +AtmoSuitDock -> Stores atmo suit +GroomingStation -> Grooms critters for happiness/eggs +RanchStation -> Ranching skill station +FarmStation -> Improves farm yield (needs fertilizer) +PowerControlStation-> Improves generator efficiency + +# Medicine +MassageTable -> Reduces stress +SickBay -> Cures diseases +TriageCot -> Heals physical damage +Apothecary -> Produces medicine + +# Automation (common items) +AtmoSensor -> Senses gas pressure +ThermoSensor -> Senses temperature +HydroSensor -> Senses liquid pressure +GasElementSensor -> Senses specific gas type +AND Gate, NOT Gate, FILTER Gate, BUFFER Gate +``` + +## Key Element IDs (resources) + +``` +# Critical survival +Oxygen -> Breathable gas (needed by dupes) +Water -> Essential for farming, electrolysis, life support +Dirt -> Used in research (early) and farming +Algae -> Consumed by OxygenDiffuser + +# Food chain +Calories -> Aggregate food energy for colony +MealLice -> Basic food from mealwood plants +BristleBerry -> Mid-tier food from bristle blossom +Mushroom -> Food from dusk cap (needs CO2 + slime) +RawEgg -> Egg for cooking +Meat -> From ranching + +# Power chain +Coal -> Burned in CoalGenerator +Hydrogen -> Burned in HydrogenGenerator +NaturalGas -> Burned in NaturalGasGenerator +Petroleum -> Burned in PetroleumGenerator +CrudeOil -> Can be refined to Petroleum + +# Construction metals +CopperOre -> Early building material +IronOre -> Mid building material +GoldAmalgam -> High corrosion resistance +Wolframite -> Very high melting point (tungsten source) +Steel -> Strong, high melting point (refined) +RefinedIron -> Mid refined metal +Plastic -> Advanced material (from polymer press or dreckos) +Ceramic -> Best insulation material + +# Water / liquids +SaltWater -> Can be desalinated to Water +Brine -> Can be desalinated (more salt per water) +PollutedWater -> Can be filtered to Water (also used by reed fiber) +CrudeOil -> Pumped from oil biome +Petroleum -> Refined from oil (cooking or refinery) +Lumber -> From arbor trees, burned in wood burner +Ethanol -> From lumber, burned in petroleum generator + +# Gas handling +PollutedOxygen -> Can be deodorized to Oxygen +CarbonDioxide -> Sinks to bottom, used by mushrooms/soda fountain +ChlorineGas -> Disinfects, used by balm lily +SourGas -> Can be cooled to methane + sulfur + +# Rare / advanced +Niobium -> End-game space material +Thermium -> Best heat conductor (space material) +Isoresin -> Used for insulation (space material) +ViscoGel -> Non-mixing liquid (space material) +Radium -> Radioactive, spaced out DLC +``` + +## Research Tech Tree (simplified path) + +``` +Tier 0 (start): FarmingTech, PowerRegulation, Plumbing, Ventilation +Tier 1: FoodPreparation (-> ElectricGrill, MicrobeMusher) + InteriorDecor (-> Cot, FlowerPot, various decor) + AdvancedPowerRegulation (-> SmartBattery, PowerTransformer) + LiquidPiping (-> LiquidPump, WaterSiever, Desalinator) + GasPiping (-> GasPump, GasFilter) + FineDining (-> GasRange, Refrigerator) +Tier 2: ImprovedOxygen (-> Electrolyzer) + RefinedObjects (-> MetalRefinery, RockCrusher) + TemperatureModulation (-> ThermoAquatuner, ThermoRegulator) + Ranching (-> GroomingStation, Incubator) + SmartStorage (-> LiquidReservoir, GasReservoir) + Automation (-> first automation buildings) +Tier 3: HighTemperatureForging (-> Steel) + SpaceProgram (-> telescope, rocket platform) + CryoFuelPropulsion (-> hydrogen rocket engine) +Tier 4: MaterialsScience (-> SuperCoolant, ViscoGel) +``` + +## Building Size Reference (width x height) + +``` +1x1: Wire, GasPipe, LiquidPipe, AutomationWire, Switch, Sensor +1x2: ManualGenerator, Battery, PlanterBox, FarmTile, RationBox +2x1: GasFilter, LiquidFilter, Incubator, Jukebot +2x2: CoalGenerator, HydrogenGenerator, OxygenDiffuser, Electrolyzer, + GasPump, LiquidPump, AlgaeTerrarium, Deodorizer, WaterSiever, + ElectricGrill, MicrobeMusher, RockCrusher, Kiln, Compost, + MassageTable, Apothecary, ResearchStation, TextileLoom +2x3: MetalRefinery, PolymerPress, OilRefinery, AtmoSuitDock +2x4: Telescope, MolecularForge +3x1: LadderBed, DisplayShelf +3x2: ManualAirlock, PneumaticDoor, MechanizedAirlock, ConveyorLoader, + SmartStorageBin, LiquidReservoir, GasReservoir +3x3: Shower, Sauna, HotTub +3x4: SteamTurbine +4x2: SuperComputer, JumboBattery, StorageBin +4x4: SolarPanel +``` + +## Common Game Mechanics (AI reference) + +### Gas/Liquid Physics +- Gases **layer by density**: CO2 (sinks) < O2 < PollutedO2 < NaturalGas < H2 (rises) +- Liquids **layer by density**: Petroleum < Water/SaltWater/Brine < CrudeOil < Mercury +- Pressure limit for gas vents: GasVent = 2kg/tile, HighPressureGasVent = 20kg/tile +- Buildings overheat above their overheat temperature (default 75C, some higher) +- Insulated Tile reduces heat transfer by ~100x + +### Duplicant Needs +- Oxygen: need ~100g/s per dupe +- Food: need ~1000kcal/cycle per dupe +- Stress: > 50% starts causing problems, > 80% mental breaks +- Temperature: comfortable at 18-35C, hypothermia below 10C, hyperthermia above 40C +- Morale: affected by decor, food quality, room bonuses + +### Room Types +- Latrine: Outhouse + WashBasin = +1 morale +- Washroom: Lavatory + Sink = +2 morale +- Barracks: Cot/LadderBed + 1 decor = +1 morale +- Bedroom: ComfyBed + 1 decor = +2 morale +- Mess Hall: MessTable + 1 decor = +3 morale +- Great Hall: MessTable + 2+ decor and recreation = +6 morale +- Park: 4+ wild/planted plants = +1 morale +- Nature Reserve: 12+ wild plants = +6 morale +- Stable: GroomingStation + CritterDropOff = ranching room +- Ranch: Incubator + feeder (spaced out) + +### SPOM (Self-Powered Oxygen Module) +The classic Rodriguez SPOM: +- 1 Electrolyzer (consumes 1kg/s water -> 888g/s O2 + 112g/s H2) +- 2 GasPumps for O2 extraction +- 1 HydrogenGenerator (burns 100g/s H2, produces 800W) +- 1 GasFilter to separate H2 from O2 +- Net power positive (runs on its own hydrogen) +- Standard size: 8x6 tiles diff --git a/docs/MOD_DEV_GUIDE.md b/docs/MOD_DEV_GUIDE.md new file mode 100644 index 0000000..f29fc92 --- /dev/null +++ b/docs/MOD_DEV_GUIDE.md @@ -0,0 +1,349 @@ +# ONI Agent Mod 开发指南 + +## 概述 + +本文档规定了一个与外部 Agent(AI 助手)对接的《缺氧》(Oxygen Not Included) Mod 应遵循的接口规范、约束条件和最佳实践。遵循此规范开发的 Mod 可与 `oni-agent` 工具链无缝协作。 + +--- + +## 1. 通信协议 + +### 1.1 传输层 +- **协议**: HTTP 1.1 +- **地址**: `127.0.0.1`(仅本地回环,禁止暴露到外部网络) +- **端口**: 由配置文件指定(默认 `23876`) +- **编码**: 所有请求和响应均为 UTF-8 + +### 1.2 数据格式 +- 所有请求和响应使用 `application/json` +- 响应必须包含有效的 JSON +- 错误响应必须包含 `error` 字段 + +```json +// 成功响应 +{ "result": "ok", ... } + +// 错误响应 +{ "error": "error_message" } +``` + +### 1.3 请求超时 +- 服务端应在 5 秒内响应 +- 长时间操作应排队后立即返回 `{ "result": "queued" }` + +--- + +## 2. API 端点规范 + +### 2.1 健康检查 + +``` +GET /health +``` + +用于 Agent 探测 Mod 是否存活。必须始终可达,不依赖游戏状态。 + +**响应**: +```json +{ "status": "ok", "service": "mod_name" } +``` + +### 2.2 状态查询端点 + +所有状态查询为 `GET` 请求,路径前缀 `/api/state/`。 + +| 端点 | 返回内容 | 必需 | 新增字段 | +|------|---------|------|---------| +| `/api/state/game` | 周期、复制人、世界尺寸 | **是** | `gridWidth`, `gridHeight` | +| `/api/state/resources` | 资源列表(含分类/物态) | **是** | `id`, `state`, `category` | +| `/api/state/duplicants` | 复制人详情 | **是** | `x`, `y`, `cell`, `currentChore` | +| `/api/state/buildings` | 建筑列表 | 推荐 | `cell`, `category`, `powerWatt` | +| `/api/state/research` | 科技树(含解锁列表) | 推荐 | `requiredTechs`, `unlockedBuildings` | +| `/api/state/geysers` | 喷泉详情 | 可选 | `cell`, `isActive`, `isDormant` | +| `/api/state/alert` | 当前警报 | 推荐 | `clickable` | +| `/api/state/critters` | 小动物详情 | 可选 | `cell`, `calories` | +| `/api/state/plants` | 植物列表 | 可选 | `isGrown`, `progress`, `isWilting` | +| `/api/state/rooms` | 房间列表 | 可选 | 类型/格数/建筑/生物/植物 | + +### 2.3 地图/格子数据端点 + +这是 AI 理解游戏世界最重要的端点。格子级数据让 AI 知道每个具体位置的状态。 + +| 端点 | 说明 | 参数 | +|------|------|------| +| `GET /api/state/cell` | 单格详情 | `?x=&y=` | +| `GET /api/state/cells` | 矩形区域(批量) | `?x=&y=&width=&height=` | +| `GET /api/state/cells/slice` | 行或列扫描 | `?axis=x&index=&start=&end=` | +| `GET /api/state/gas` | 气体分布分析 | `?x=&y=&radius=` | + +#### `GET /api/state/cell?x=10&y=5` + +```json +{ + "x": 10, "y": 5, "cell": 4523, + "element": "Oxygen", + "elementId": "Oxygen", + "elementState": "gas", + "massKg": 1.8, + "temperatureC": 23.5, + "isSolid": false, "isLiquid": false, "isGas": true, + "hasBuilding": true, "buildingName": "GasPump", + "hasDuplicant": false, "duplicantName": null, + "isVacuum": false, "isVisible": true +} +``` + +#### `GET /api/state/cells?x=0&y=0&width=5&height=5` + +```json +{ + "region": { "x": 0, "y": 0, "width": 5, "height": 5 }, + "cells": [ /* array of cell objects */ ] +} +``` + +### 2.4 实体注册表端点 (AI 参考) + +用于 AI 在运行时查询游戏实体的元数据。所有为 `GET` 请求。 + +| 端点 | 返回内容 | +|------|---------| +| `/api/registry/buildings` | 全部建筑定义(尺寸/功耗/发热/材料) | +| `/api/registry/elements` | 全部元素定义(比热容/导热/熔沸点) | +| `/api/registry/techs` | 全部科技定义(前置/解锁建筑) | + +#### `GET /api/registry/buildings` + +```json +[ + { + "id": "Electrolyzer", + "name": "Electrolyzer", + "category": "Oxygen", + "width": 2, "height": 2, + "powerCost": 120, + "heatGeneration": 1.25, + "constructionMass": ["IronOre", "IronOre"] + } +] +``` + +### 2.5 操作端点 + +所有操作为 `POST` 请求,路径前缀 `/api/action/`。 + +| 端点 | 作用 | 必需 | +|------|------|------| +| `/api/action/dig` | 挖掘指定区域 | **是** | +| `/api/action/build` | 建造建筑 | **是** | +| `/api/action/deconstruct` | 拆除建筑 | 推荐 | +| `/api/action/prioritize` | 设置优先级 | 可选 | +| `/api/action/research` | 选择研究方向 | 推荐 | +| `/api/action/schedule` | 修改复制人日程 | 可选 | +| `/api/action/wardrobe` | 修改复制人装备 | 可选 | +| `/api/action/mop` | 清理液体 | 推荐 | +| `/api/action/harvest` | 收获植物 | 推荐 | +| `/api/action/cancel` | 取消操作 | 可选 | + +#### `GET /api/state/game` + +```json +{ + "cycle": 42, + "duplicantCount": 6, + "worldName": "Terra", + "worldSize": 256 +} +``` + +#### `GET /api/state/duplicants` + +```json +[ + { + "name": "Dup1", + "stress": 12.5, + "calories": 850000, + "stamina": 98.2, + "oxygen": 85.0, + "diseases": 0, + "skillLevels": 3 + } +] +``` + +#### `GET /api/state/resources` + +```json +[ + { "name": "Oxygen", "tag": "Oxygen", "amount": 12345.6, "unit": "kg" } +] +``` + +#### `GET /api/state/buildings` + +```json +[ + { + "name": "Manual Generator", + "id": "ManualGenerator", + "x": 10, + "y": 5, + "isOperational": true + } +] +``` + +### 2.3 操作端点 + +所有操作为 `POST` 请求,路径前缀 `/api/action/`。 + +| 端点 | 作用 | 必需 | +|------|------|------| +| `/api/action/dig` | 挖掘指定区域 | **是** | +| `/api/action/build` | 建造建筑 | **是** | +| `/api/action/deconstruct` | 拆除建筑 | 推荐 | +| `/api/action/prioritize` | 设置优先级 | 可选 | +| `/api/action/research` | 选择研究方向 | 推荐 | +| `/api/action/schedule` | 修改复制人日程 | 可选 | +| `/api/action/wardrobe` | 修改复制人装备 | 可选 | + +#### `POST /api/action/dig` + +**请求体**: +```json +{ "x": 10, "y": 5, "width": 8, "height": 6 } +``` + +**响应**: +```json +{ "result": "dig_queued", "x": 10, "y": 5, "width": 8, "height": 6 } +``` + +#### `POST /api/action/build` + +**请求体**: +```json +{ "buildingId": "Electrolyzer", "x": 10, "y": 5, "rotation": null } +``` + +**响应**: +```json +{ "result": "build_queued", "buildingId": "Electrolyzer", "x": 10, "y": 5 } +``` + +--- + +## 3. Mod 约束 + +### 3.1 安全性 +1. **仅绑定本地回环地址** `127.0.0.1`,不得监听 `0.0.0.0` +2. **不得实现认证/授权**——回环地址默认安全 +3. **不得执行文件 I/O**(读取 Mod 自带配置除外) +4. **输入校验**——所有用户输入必须校验类型和范围 + +### 3.2 性能 +1. 状态查询必须是**只读操作**,不得持有锁 +2. 资源列表等大数据量接口应考虑分页(未来扩展) +3. 建造/挖掘等操作应返回 `queued` 后异步执行 +4. HTTP 服务器应在**单独线程**运行,不得阻塞游戏主线程 + +### 3.3 兼容性 +1. 使用 `KMod.UserMod2` 基类 +2. 使用 `Harmony` 进行补丁(如果使用) +3. 引用 `UnityEngine` 和 `Assembly-CSharp` 程序集 +4. 最小支持游戏版本应在 `mod_info.yaml` 中声明(当前推荐 `612000`) + +### 3.4 错误处理 +```json +// Mod 内部错误的通用格式 +{ "error": "error_type", "details": "human readable message" } + +// 常见错误类型 +{ "error": "not_found" } // 404 端点不存在 +{ "error": "invalid_request" } // 请求体解析失败 +{ "error": "not_implemented" } // 功能尚未实现 +{ "error": "unknown_building", "buildingId": "..." } // 建筑 ID 不识别 +{ "error": "unknown_tech", "techId": "..." } // 科技 ID 不识别 +``` + +--- + +## 4. 配置文件规范 + +Agent 侧通过 `config.json` 定位 Mod: + +```json +{ + "modHost": "127.0.0.1", + "modPort": 23876, + "timeout": 10 +} +``` + +- `modHost`: 始终为 `127.0.0.1` +- `modPort`: 应与 Mod 中监听的端口一致 +- `timeout`: HTTP 请求超时秒数 + +--- + +## 5. AI-Friendly 数据设计原则 + +### 5.1 数据可读性 +所有暴露的数据应满足 AI 可直接理解的三个条件: +1. **命名语义化** — 使用自然语言字段名(如 `temperatureC` 而非 `tempK`) +2. **数据类型合理** — 使用数字而非枚举字符串(温度用 `float` 而非 `string`) +3. **上下文完整** — 每个实体包含足够的位置和状态信息(坐标、类别、是否可运行) + +### 5.2 坐标系统 +- 统一使用 `(x, y)` 整数坐标,对应游戏网格 +- 原点在左下角:`(0, 0)` +- 建筑使用其左下角锚点坐标 +- 返回数据中同时提供 `cell` 索引(Grid 内部使用)和 `(x, y)` 坐标 + +### 5.3 实体分类 +每个实体(建筑、元素、科技)必须包含分类标签: +- 建筑: `category`(Base/Oxygen/Power/Food/...) +- 元素: `state`(solid/liquid/gas)+ `category`(metal/water/fuel/...) +- 资源: 带 `state` 和 `category` 帮助 AI 推理用途 + +### 5.4 AI 推理辅助 +- `/api/registry/*` 端点提供完整的实体元数据查询 +- `GET /api/state/gas` 提供区域气体分布统计(AI 无法逐格遍历) +- `/api/state/rooms` 提供房间判定结果(AI 无法自行判断房间类型) + +### 5.5 操作设计 +操作设计遵循以下原则: +- **幂等性** — 同个操作重复执行不产生副作用 +- **非阻塞** — 操作立即返回 `queued`,异步执行 +- **确定性** — 使用绝对坐标 `(x, y)`,不支持"在某个建筑旁边"这类模糊表述 +- **输入校验** — 拒绝未知的 `buildingId` 或越界坐标 + +## 6. 扩展建议 + +### 5.1 添加新端点 +1. 在 `ProcessRequest` 中添加路由匹配 +2. 实现对应的处理方法 +3. 更新本指南和 `SKILL.md` + +### 5.2 蓝图系统 +预置的建造方案(蓝图)应满足: +- 坐标相对于原点,便于偏移 +- 包含预先挖掘区域 +- 建筑顺序隐含依赖关系 + +### 5.3 事件推送(未来) +考虑支持 WebSocket 或 SSE,用于游戏事件实时推送(如警报触发)。 + +--- + +## 6. 开发检查清单 + +- [ ] Mod 继承 `UserMod2`,在 `OnLoad` 中启动 HTTP 服务 +- [ ] 在 `OnUnload` 中停止 HTTP 服务 +- [ ] 实现全部必需端点(health, game, resources, duplicants, dig, build) +- [ ] 错误响应包含 `error` 字段 +- [ ] 端口号与 `config.json` 一致 +- [ ] 仅绑定 `127.0.0.1` +- [ ] 使用 `Newtonsoft.Json`(游戏自带,无需额外依赖) +- [ ] `mod_info.yaml` 声明了正确的游戏版本 diff --git a/docs/batch_example.json b/docs/batch_example.json new file mode 100644 index 0000000..30eb2ba --- /dev/null +++ b/docs/batch_example.json @@ -0,0 +1,40 @@ +{ + "name": "Build SPOM - Step 1: Dig and Electrolyzer", + "actions": [ + { + "type": "dig", + "x": 42, + "y": 40, + "width": 8, + "height": 6 + }, + { + "type": "build", + "buildingId": "Electrolyzer", + "x": 45, + "y": 42 + }, + { + "type": "build", + "buildingId": "GasPump", + "x": 43, + "y": 42 + }, + { + "type": "build", + "buildingId": "HydrogenGenerator", + "x": 45, + "y": 40 + }, + { + "type": "wait", + "delayMs": 100 + }, + { + "type": "priority", + "x": 45, + "y": 42, + "priority": 9 + } + ] +} diff --git a/mod/API_REFERENCE.md b/mod/API_REFERENCE.md new file mode 100644 index 0000000..f7029d4 --- /dev/null +++ b/mod/API_REFERENCE.md @@ -0,0 +1,180 @@ +# ONI Mod API Reference (Confirmed via DLL Decompile) +## Assembly: Assembly-CSharp.dll (D:\steam\...\Managed\) + +### BuildingDef (extends Def -> ScriptableObject) +``` +FIELD string PrefabID # FROM BASE CLASS Def +FIELD int WidthInCells +FIELD int HeightInCells +FIELD float EnergyConsumptionWhenActive +FIELD float ExhaustKilowattsWhenActive +FIELD string[] MaterialCategory +FIELD float[] Mass +FIELD string Name # PROPERTY (Name getter) +PROPERTY string Desc, Flavor, Effect +``` +> **Usage**: `def.PrefabID` (NOT `def?.PrefabID` — fields cannot use null-conditional) + +### Building (base of BuildingComplete) +``` +FIELD BuildingDef Def +PROPERTY Orientation Orientation +METHOD int GetCell() +METHOD int GetBottomLeftCell() +``` +> **Usage**: `((BuildingComplete)item).Def.PrefabID` / `building.Def.WidthInCells` +> `IsOperational` is NOT on BuildingComplete — use `go.GetComponent()?.IsOperational` +> `IsOperational` is a PROPERTY (bool), NOT a method: no `()` after it + +### Operational +``` +PROPERTY bool IsOperational # getter +PROPERTY bool IsFunctional +PROPERTY bool IsActive +METHOD void SetFlag(Flag flag, bool value) +METHOD bool GetFlag(Flag flag) +METHOD void SetActive(bool value, bool force_ignore) +``` + +### Generator +``` +PROPERTY float WattageRating +PROPERTY ushort CircuitID +PROPERTY float JoulesAvailable +PROPERTY float Capacity +PROPERTY bool IsEmpty +``` +> NO `IsPowered` property. Check `JoulesAvailable > 0` instead. + +### ConduitFlow.ConduitContents (STRUCT — value type!) +``` +STRUCT ConduitContents { + SimHashes element # FIELD + float mass # FIELD + float temperature # FIELD + int diseaseHash + int diseaseCount +} +``` +> `flow.GetContents(int cell)` returns `ConduitContents` (always valid since it's a struct) +> **Never** null-check with `!= null` — use `contents.mass > 0` instead + +### CircuitManager +``` +METHOD ushort GetCircuitID(int cell) +METHOD float GetWattsUsedByCircuit(ushort circuitID) +METHOD float GetWattsGeneratedByCircuit(ushort circuitID) +METHOD float GetMaxSafeWattageForCircuit(ushort circuitID) +METHOD List GetGeneratorsOnCircuit(ushort circuitID) +METHOD List GetConsumersOnCircuit(ushort circuitID) +METHOD List GetBatteriesOnCircuit(ushort circuitID) +``` +> NO `GetCircuits()` method. Discover circuit IDs via `GetCircuitID(cell)` for each building. + +### SaveLoader +``` +PROPERTY static SaveLoader Instance # getter +METHOD string Save(string filename, bool isAutoSave, bool updateSavePointer) +METHOD bool Load(string filename) +METHOD string GetActiveSaveFilePath() +``` +> All are INSTANCE methods. Usage: `SaveLoader.Instance.Save(...)` + +### Techs (ResourceSet) +``` +METHOD Tech TryGetTechForTechItem(string itemId) +``` +> To enumerate: use the base class `ResourceSet` which has `resources` / implements IEnumerable +> `Db.Get().Techs` returns the Techs collection. Iterate via `foreach (var tech in Db.Get().Techs.resources)` +> or check if Techs implements IEnumerable directly + +### World +``` +PROPERTY static World Instance +``` +> NO `worldName` property. **Fallback**: Use a hardcoded string like "ONI World" + +### Components quirks +- `Cmps` implements `IEnumerable` (non-generic) → foreach gives `object`, cast explicitly +- `CmpsByWorld` does NOT implement IEnumerable → CANNOT foreach. Access items through its internal API + - Workaround: skip `Components.Geysers` or use reflection to access items +- `Components.CreatureIdentities` NOT FOUND → use `Components.Brains` instead +- `Components.Crops` gives `Crop` objects → access `.gameObject` not cast to GameObject + +### Missing types in this ONI version +- ~~`ImmuneSystemMonitor`~~ → NOT FOUND, wrap in try-catch +- ~~`GlobalNotificationManager`~~ → NOT FOUND, use `Notifier` if available +- ~~`AlertManager`~~ → NOT FOUND +- ~~`PriorityScreen.Instance`~~ → NOT FOUND +- ~~`AttributeLevels`~~ → NOT FOUND +- ~~`GameTags.RawPoultry` / `PreciousStone`~~ → NOT FOUND +- ~~`MoraleProvider` / `QualityOfLife` / `HappyMonitor`~~ → NOT FOUND + +### Grid (Stable — confirmed working) +``` +STATIC Element[] Element # grid[cell] +STATIC float[] Mass +STATIC float[] Temperature +STATIC bool[] Solid +STATIC bool[] IsVisible +STATIC GameObject[,] Objects # [cell, ObjectLayer enum] +STATIC int XYToCell(int x, int y) +STATIC void CellToXY(int cell, out int x, out int y) +STATIC int CellCount (field) +STATIC int WidthInCells +STATIC int HeightInCells +``` + +### ObjectLayer (enum values include) +- Building, Pickupables, Minion, Plants, Creatures, etc. +- NO `Creature` value → check the actual enum + +### Health +``` +PROPERTY float hitPoints # NOT a method +PROPERTY float maxHitPoints +METHOD bool IsIncapacitated() +METHOD void Damage(float amount) +``` + +### Verified correct patterns +```csharp +// Buildings +foreach (var item in Components.BuildingCompletes) { + var b = (BuildingComplete)item; + var go = b.gameObject; + var def = b.Def; // FIELD on Building base + string id = def.PrefabID; // FIELD on Def base + int w = def.WidthInCells; + bool op = go.GetComponent()?.IsOperational ?? false; +} + +// Pipes (ConduitContents is struct!) +var contents = flow.GetContents(cell); +if (contents.mass > 0) { ... } + +// Power +ushort cid = mgr.GetCircuitID(cell); +float used = mgr.GetWattsUsedByCircuit(cid); + +// Save/Load +SaveLoader.Instance.Save("name", true, false); +SaveLoader.Instance.Load("path"); + +// Pause +SpeedControlScreen.Instance.Pause(false, true); +SpeedControlScreen.Instance.Unpause(true); +bool paused = SpeedControlScreen.Instance.IsPaused; +int speed = SpeedControlScreen.Instance.GetSpeed(); +SpeedControlScreen.Instance.SetSpeed(3); + +// Camera +CameraController.Instance.SnapTo(new Vector3(x, y, z)); + +// Duplicants +foreach (var item in Components.MinionIdentities) { + var m = (MinionIdentity)item; + string name = m.GetProperName(); + var go = m.gameObject; +} +``` diff --git a/mod/ONIAgentBridge.cs b/mod/ONIAgentBridge.cs new file mode 100644 index 0000000..5e50d91 --- /dev/null +++ b/mod/ONIAgentBridge.cs @@ -0,0 +1,241 @@ +using HarmonyLib; +using KMod; +using Newtonsoft.Json; +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; +using UnityEngine; + +namespace ONIAgentBridge +{ + public class Mod : UserMod2 + { + private HttpListener _listener; + internal static ConcurrentQueue cmdQueue = new ConcurrentQueue(); + internal static List eventLog = new List(); + internal static int eventSeq = 0; + internal static object eventLock = new object(); + + public class QueueProcessor : UnityEngine.MonoBehaviour + { + public void Update() + { + System.Action a; + while (cmdQueue.TryDequeue(out a)) + try { a(); } catch (System.Exception ex) { lock(eventLock) { eventLog.Add(new GameEvent{id=eventSeq++,title="[Q] "+ex.Message}); } } + } + } + + public override void OnLoad(Harmony harmony) + { + base.OnLoad(harmony); + var go = new GameObject("ONI_Processor"); + go.AddComponent(); + UnityEngine.Object.DontDestroyOnLoad(go); + int port = 23876; + _listener = new HttpListener(); + _listener.Prefixes.Add($"http://127.0.0.1:{port}/"); + _listener.Start(); + _listener.BeginGetContext(OnRequest, null); + } + + void OnRequest(IAsyncResult ar) + { + try + { + var ctx = _listener.EndGetContext(ar); + _listener.BeginGetContext(OnRequest, null); + Process(ctx); + } + catch { } + } + + void Process(HttpListenerContext ctx) + { + try + { + var path = ctx.Request.Url.AbsolutePath.TrimEnd('/'); + var method = ctx.Request.HttpMethod; + var q = ctx.Request.QueryString; + string json = null; + + System.Action respond = () => { + var b = Encoding.UTF8.GetBytes(json ?? "{}"); + ctx.Response.ContentType = "application/json"; + ctx.Response.OutputStream.Write(b, 0, b.Length); + ctx.Response.OutputStream.Close(); + }; + + if (path == "/api/screenshot/latest" && method == "GET") { ServeScreenshot(ctx); return; } + else if (path == "/health" && method == "GET") json = J(new { status = "ok" }); + else if (path == "/api/state/game" && method == "GET") json = ReadGame(); + else if (path == "/api/state/resources" && method == "GET") json = ReadResources(); + else if (path == "/api/state/buildings" && method == "GET") json = ReadBuildings(); + else if (path == "/api/state/duplicants" && method == "GET") json = ReadDupes(); + else if (path == "/api/state/rooms" && method == "GET") json = ReadRooms(); + else if (path == "/api/state/cell" && method == "GET") json = ReadCell(q); + else if (path == "/api/state/cells" && method == "GET") json = ReadCells(q); + else if (path == "/api/state/gas" && method == "GET") json = ReadGas(q); + else if (path == "/api/state/co2" && method == "GET") json = ReadCO2(); + else if (path == "/api/state/temperature/zones" && method == "GET") json = ReadTemp(); + else if (path == "/api/state/power" && method == "GET") json = ReadPower(); + else if (path == "/api/state/pipes" && method == "GET") json = ReadPipes(q); + else if (path == "/api/state/events" && method == "GET") json = ReadEvents(q); + else if (path == "/api/state/alert" && method == "GET") json = ReadAlerts(); + else if (path == "/api/state/storage" && method == "GET") json = ReadStorage(); + else if (path == "/api/state/saves" && method == "GET") json = ReadSaves(); + else if (path == "/api/state/camera" && method == "GET") json = ReadCamera(); + else if (path == "/api/registry/buildings" && method == "GET") json = ReadBuildingReg(); + else if (path == "/api/registry/elements" && method == "GET") json = ReadElementReg(); + else if (path == "/api/action/pause" && method == "POST") { cmdQueue.Enqueue(() => { try { SpeedControlScreen.Instance.Pause(false, true); } catch { } }); json = Ok("paused"); } + else if (path == "/api/action/unpause" && method == "POST") { cmdQueue.Enqueue(() => { try { SpeedControlScreen.Instance.Unpause(true); SpeedControlScreen.Instance.SetSpeed(1); } catch { } }); json = Ok("unpaused"); } + else if (path == "/api/action/dig" && method == "POST") json = QueueDig(ctx); + else if (path == "/api/action/build" && method == "POST") json = QueueBuild(ctx); + else if (path == "/api/action/test" && method == "POST") { cmdQueue.Enqueue(() => { lock(eventLock) { eventLog.Add(new GameEvent{id=eventSeq++,title="[Test] queue works!"}); } }); json = Ok("test_queued"); } + else json = J(new { error = "not_found", path }); + + respond(); + } + catch { } + } + + string J(object o) => JsonConvert.SerializeObject(o); + string Ok(string r, object d = null) => J(new { success = true, result = r, data = d ?? new { } }); + string Fail(string e, string m = null) => J(new { success = false, error = e, errorMessage = m ?? e }); + + void PushEvent(string t, string s, string title, string msg, string cat = "general") + { + lock (eventLock) { eventLog.Add(new GameEvent { id = eventSeq++, type = t, severity = s, timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds(), cycle = 0, category = cat, title = title, message = msg }); if (eventLog.Count > 500) eventLog.RemoveRange(0, eventLog.Count - 500); } + } + + // === READERS (safe from background threads) === + string ReadGame() => J(new { cycle = GameClock.Instance?.GetCycle() ?? 0, duplicantCount = Components.MinionIdentities.Count(), worldSize = Grid.CellCount, gridWidth = Grid.WidthInCells, gridHeight = Grid.HeightInCells, isPaused = SpeedControlScreen.Instance.IsPaused, gameSpeed = SpeedControlScreen.Instance.IsPaused ? 0 : SpeedControlScreen.Instance.GetSpeed() }); + string ReadResources() { try { var l = new List(); foreach (var e in ElementLoader.elements) { float a = 0; try { var w = ClusterManager.Instance?.activeWorld; if (w != null) a = w.worldInventory.GetAmount(e.tag, false); } catch { } if (a > 0) l.Add(new { id = e.id.ToString(), name = e.name, tag = e.tag.ToString(), amount = a, unit = "kg", state = e.IsGas ? "gas" : e.IsLiquid ? "liquid" : "solid" }); } return J(l); } catch { return J(new List()); } } + string ReadBuildings() { try { var l = new List(); foreach (var i in Components.BuildingCompletes) { var b = (BuildingComplete)i; var d = b.Def; l.Add(new { id = d.PrefabID, name = d.Name, x = (int)b.transform.position.x, y = (int)b.transform.position.y, width = d.WidthInCells, height = d.HeightInCells }); } return J(l); } catch { return J(new List()); } } + string ReadDupes() { try { var l = new List(); foreach (var i in Components.MinionIdentities) { var m = (MinionIdentity)i; l.Add(new { name = m.GetProperName(), x = (int)m.transform.position.x, y = (int)m.transform.position.y, health = m.gameObject.GetComponent()?.hitPoints ?? 100 }); } return J(l); } catch { return J(new List()); } } + string ReadRooms() { try { var l = new List(); var rp = Game.Instance.roomProber; if (rp != null) foreach (var r in rp.rooms) l.Add(new { id = r.roomType?.Id ?? "?", name = r.roomType?.Name ?? "?" }); return J(l); } catch { return J(new List()); } } + string ReadCell(NameValueCollection q) { try { int x = int.Parse(q["x"] ?? "-1"), y = int.Parse(q["y"] ?? "-1"); int c = Grid.XYToCell(x, y); if (c < 0 || c >= Grid.CellCount) return J(new { error = "bounds" }); var el = Grid.Element[c]; return J(new { x, y, cell = c, element = el?.name ?? "Vacuum", massKg = Grid.Mass[c], temperatureC = Grid.Temperature[c] > 0 ? Grid.Temperature[c] - 273.15f : -273.15f, isSolid = Grid.Solid[c], isVisible = true, hasBuilding = Grid.Objects[c, (int)ObjectLayer.Building] != null, buildingName = Grid.Objects[c, (int)ObjectLayer.Building]?.name, hasDuplicant = Grid.Objects[c, (int)ObjectLayer.Minion] != null, isVacuum = el == null, isDiggable = Grid.Solid[c] && el != null && el.id != SimHashes.Unobtanium }); } catch { return J(new { error = "err" }); } } + string ReadCells(NameValueCollection q) { try { int x = int.Parse(q["x"] ?? "0"), y = int.Parse(q["y"] ?? "0"), w = int.Parse(q["width"] ?? "10"), h = int.Parse(q["height"] ?? "10"); var cs = new List(); for (int cy = y; cy < y + h; cy++) for (int cx = x; cx < x + w; cx++) { int c = Grid.XYToCell(cx, cy); if (c >= 0 && c < Grid.CellCount) cs.Add(new { x = cx, y = cy, element = Grid.Element[c]?.name ?? "Vacuum", isSolid = Grid.Solid[c], hasBuilding = Grid.Objects[c, (int)ObjectLayer.Building] != null, hasDuplicant = Grid.Objects[c, (int)ObjectLayer.Minion] != null }); } return J(new { cells = cs }); } catch { return J(new { error = "err" }); } } + string ReadGas(NameValueCollection q) { try { int x = int.Parse(q["x"] ?? "0"), y = int.Parse(q["y"] ?? "0"), r = int.Parse(q["radius"] ?? "20"); var g = new Dictionary(); for (int cy = Math.Max(0, y - r); cy <= Math.Min(Grid.HeightInCells - 1, y + r); cy++) for (int cx = Math.Max(0, x - r); cx <= Math.Min(Grid.WidthInCells - 1, x + r); cx++) { int c = Grid.XYToCell(cx, cy); if (c < 0) continue; var el = Grid.Element[c]; if (el != null && el.IsGas) { float m = Grid.Mass[c]; if (g.ContainsKey(el.name)) { g[el.name].mass += m; g[el.name].count++; } else g[el.name] = new GasEntry { gas = el.name, mass = m, count = 1 }; } } return J(new { gases = g.Values }); } catch { return J(new { error = "err" }); } } + string ReadCO2() { try { var p = new List(); int step = Math.Max(1, Grid.CellCount / 500); for (int i = 0; i < Grid.CellCount; i += step) { var el = Grid.Element[i]; if (el != null && el.id == SimHashes.CarbonDioxide && Grid.Mass[i] > 0.5f) { int x, y; Grid.CellToXY(i, out x, out y); p.Add(new { x, y, mass = Grid.Mass[i] }); } } return J(new { pockets = p }); } catch { return J(new { error = "err" }); } } + string ReadTemp() { try { int s = Math.Max(1, Grid.CellCount / 300); float mn = float.MaxValue, mx = float.MinValue, sum = 0; int n = 0; for (int i = 0; i < Grid.CellCount; i += s) { float t = Grid.Temperature[i]; if (t <= 0) continue; float tc = t - 273.15f; sum += tc; n++; if (tc < mn) mn = tc; if (tc > mx) mx = tc; } return J(new { averageC = n > 0 ? sum / n : 0, minC = mn, maxC = mx }); } catch { return J(new { error = "err" }); } } + string ReadPower() { try { var c = new List(); var m = Game.Instance.circuitManager; if (m != null) for (ushort i = 1; i <= 16; i++) { float u = m.GetWattsUsedByCircuit(i); if (u > 0 || m.HasGenerators(i)) c.Add(new { id = (int)i, wattsUsed = u, maxWatts = m.GetMaxSafeWattageForCircuit(i), isOverloaded = u > m.GetMaxSafeWattageForCircuit(i) }); } return J(new { circuits = c }); } catch { return J(new { error = "err" }); } } + string ReadPipes(NameValueCollection q) { try { var s = new List(); string t = q["type"] ?? "all"; foreach (var f in new[] { new { n = "liquid", fl = Game.Instance.liquidConduitFlow }, new { n = "gas", fl = Game.Instance.gasConduitFlow } }) { if (t != "all" && t != f.n) continue; if (f.fl == null) continue; int cnt = 0; foreach (var i in Components.BuildingCompletes) { if (cnt > 100) break; var b = (BuildingComplete)i; var pid = b.Def.PrefabID; if (pid != (f.n == "gas" ? "GasConduit" : "LiquidConduit") && pid != (f.n == "gas" ? "GasConduitBridge" : "LiquidConduitBridge")) continue; var ct = f.fl.GetContents(b.GetCell()); if (ct.mass > 0) { s.Add(new { type = f.n, element = ct.element.ToString(), mass = ct.mass }); cnt++; } } } return J(new { segments = s }); } catch { return J(new { error = "err" }); } } + string ReadEvents(NameValueCollection q) { int s = int.Parse(q["since"] ?? "-1"), l = Math.Min(int.Parse(q["limit"] ?? "50"), 200); lock (eventLock) { var ev = eventLog.Where(e => e.id > s).Take(l).ToList(); return J(new { events = ev, next_seq = ev.Any() ? ev.Last().id : s }); } } + string ReadAlerts() { try { var l = new List(); var nm = global::NotificationManager.Instance; if (nm != null) { foreach (var fn in new[] { "notifications", "pendingNotifications" }) { try { var f = typeof(global::NotificationManager).GetField(fn, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); if (f == null) continue; var items = f.GetValue(nm) as System.Collections.IEnumerable; if (items != null) foreach (global::Notification n in items) l.Add(new { title = n.titleText, severity = n.Type.ToString() }); } catch { } } } return J(l); } catch { return J(new List()); } } + string ReadStorage() { try { var l = new List(); foreach (var i in Components.BuildingCompletes) { var b = (BuildingComplete)i; var s = b.gameObject.GetComponent(); if (s == null || s.MassStored() <= 0) continue; l.Add(new { building = b.Def?.Name ?? b.name, x = (int)b.transform.position.x, y = (int)b.transform.position.y, mass = s.MassStored(), capacity = s.capacityKg }); } return J(new { storages = l.Take(50).ToList() }); } catch { return J(new { error = "err" }); } } + string ReadSaves() { try { var l = new List(); string sp = SaveLoader.GetActiveSaveFilePath(); var d = Path.GetDirectoryName(sp); if (d != null && Directory.Exists(d)) foreach (var f in Directory.GetFiles(d, "*.sav")) { var fi = new FileInfo(f); l.Add(new { name = Path.GetFileNameWithoutExtension(f) }); } return J(new { saves = l }); } catch { return J(new { error = "err" }); } } + string ReadCamera() { try { var c = CameraController.Instance; var p = c.transform.position; return J(new { x = p.x, y = p.y }); } catch { return J(new { error = "err" }); } } + string ReadBuildingReg() { try { var l = new List(); foreach (var i in Assets.BuildingDefs) { var d = (BuildingDef)i; l.Add(new { id = d.PrefabID, name = d.Name, width = d.WidthInCells, height = d.HeightInCells }); } return J(l); } catch { return J(new { error = "err" }); } } + string ReadElementReg() { try { var l = new List(); foreach (var e in ElementLoader.elements) l.Add(new { id = e.id.ToString(), name = e.name }); return J(l); } catch { return J(new { error = "err" }); } } + + string QueueDig(HttpListenerContext c) + { + try + { + var d = JsonConvert.DeserializeObject(new StreamReader(c.Request.InputStream).ReadToEnd()); + if (d == null) return Fail("invalid"); + int x = d.x, y = d.y, w = d.width, h = d.height; + cmdQueue.Enqueue(() => { + for (int dy = 0; dy < h; dy++) for (int dx = 0; dx < w; dx++) { int cell = Grid.XYToCell(x + dx, y + dy); if (cell >= 0 && cell < Grid.CellCount) try { DigTool.PlaceDig(cell, 0); } catch { } } + }); + return Ok("dig_queued"); + } + catch { return Fail("error"); } + } + + string QueueBuild(HttpListenerContext c) + { + try + { + var d = JsonConvert.DeserializeObject(new StreamReader(c.Request.InputStream).ReadToEnd()); + if (d == null) return Fail("invalid"); + int x = d.x, y = d.y; string bid = d.buildingId; + // Find available materials on HTTP thread (WorldInventory works from background) + var availableTags = new List(); + try + { + var worldInv = ClusterManager.Instance?.activeWorld?.worldInventory; + if (worldInv != null) + { + var def = Assets.GetBuildingDef(bid); + if (def != null) + foreach (var cat in def.MaterialCategory ?? new string[0]) + foreach (var elem in ElementLoader.elements) + { + if (worldInv.GetAmount(elem.tag, false) <= 0) continue; + bool match = (cat == "RawMineral" && elem.HasTag(GameTags.ConsumableOre)); + match = match || (cat == "Metal" && elem.HasTag(GameTags.Metal)); + if (match) availableTags.Add(elem.tag); + } + } + } + catch { } + // If no materials found, use default sand + if (availableTags.Count == 0) availableTags.Add(new Tag("SandStone")); + List capturedTags = new List(availableTags); + cmdQueue.Enqueue(() => { + lock(eventLock) { eventLog.Add(new GameEvent{id=eventSeq++,title="[Build] START "+bid}); } + try + { + var def = Assets.GetBuildingDef(bid); + if (def == null) { lock(eventLock) { eventLog.Add(new GameEvent{id=eventSeq++,title="[B] def null"}); } return; } + int cell = Grid.XYToCell(x, y); + if (cell < 0 || cell >= Grid.CellCount) { lock(eventLock) { eventLog.Add(new GameEvent{id=eventSeq++,title="[B] bounds"}); } return; } + lock(eventLock) { eventLog.Add(new GameEvent{id=eventSeq++,title="[B] cell="+cell}); } + var world = ClusterManager.Instance?.activeWorld; + lock(eventLock) { eventLog.Add(new GameEvent{id=eventSeq++,title="[B] world ok"}); } + for (int dy = 0; dy < def.HeightInCells; dy++) + for (int dx = 0; dx < def.WidthInCells; dx++) { + int c2 = Grid.XYToCell(x+dx, y+dy); + if (c2 < 0 || c2 >= Grid.CellCount) continue; + if (Grid.Objects[c2, (int)ObjectLayer.Building] != null) { lock(eventLock){eventLog.Add(new GameEvent{id=eventSeq++,title="[B] occupied"});} return; } + } + lock(eventLock) { eventLog.Add(new GameEvent{id=eventSeq++,title="[B] cells ok"}); } + var pos = Grid.CellToPos(cell); + // Use game's build system (handles all initialization) + lock(eventLock) { eventLog.Add(new GameEvent{id=eventSeq++,title="[B] cells ok"}); } + try { + var loader = UnityEngine.Object.FindObjectOfType(); + GameObject go = null; + if (loader != null) go = loader.CreateBuildingUnderConstruction(def); + if (go == null) { + // Fallback: create complete building directly + go = def.Instantiate(Grid.CellToPos(cell), Orientation.Neutral, null, (int)def.SceneLayer); + } + if (go != null) go.SetActive(true); + lock(eventLock) { eventLog.Add(new GameEvent{id=eventSeq++,title="[B] "+(go==null?"null":"ok")}); } + } catch (Exception ex2) { lock(eventLock){eventLog.Add(new GameEvent{id=eventSeq++,title="[B] ex:"+ex2.Message});} } + } + catch (Exception ex) { lock(eventLock) { eventLog.Add(new GameEvent{id=eventSeq++,title="[Build] EX:"+ex.Message}); } } + }); + return Ok("build_queued"); + } + catch { return Fail("error"); } + } + + static string _ss = null; + void ServeScreenshot(HttpListenerContext ctx) + { + try + { + if (_ss != null && File.Exists(_ss)) { var b = File.ReadAllBytes(_ss); ctx.Response.ContentType = "image/png"; ctx.Response.ContentLength64 = b.Length; ctx.Response.OutputStream.Write(b, 0, b.Length); return; } + } + catch { } + ctx.Response.StatusCode = 404; + ctx.Response.OutputStream.Close(); + } + } + + + + public class GameEvent { public int id; public string type; public string severity; public long timestamp; public int cycle; public string category; public string title; public string message; } + public class GasEntry { public string gas; public float mass; public int count; } + public class DigReq { public int x; public int y; public int width; public int height; } + public class BuildReq { public string buildingId; public int x; public int y; } +} diff --git a/mod/ONIAgentBridge.csproj b/mod/ONIAgentBridge.csproj new file mode 100644 index 0000000..76129b4 --- /dev/null +++ b/mod/ONIAgentBridge.csproj @@ -0,0 +1,19 @@ + + + net48 + ONIAgentBridge + ONIAgentBridge + latest + disable + + + + + + + + + + + + diff --git a/mod/mod.yaml b/mod/mod.yaml new file mode 100644 index 0000000..2ac2a6f --- /dev/null +++ b/mod/mod.yaml @@ -0,0 +1,3 @@ +title: "ONI Agent Bridge" +staticID: "oni_agent_bridge" +description: "Expose HTTP API for AI agents to read ONI game state and perform actions" diff --git a/mod/mod_info.yaml b/mod/mod_info.yaml new file mode 100644 index 0000000..bc4180f --- /dev/null +++ b/mod/mod_info.yaml @@ -0,0 +1,4 @@ +supportedContent: ALL +minimumSupportedBuild: 722606 +version: 1.0.0 +APIVersion: 2 diff --git a/scripts/annotate_apis.py b/scripts/annotate_apis.py new file mode 100644 index 0000000..807fa0c --- /dev/null +++ b/scripts/annotate_apis.py @@ -0,0 +1,142 @@ +#!/usr/bin/env python3 +""" +DEPRECATED: Annotate uncertain C# APIs in the Mod source with verification markers. + +This script was used during the initial prototyping phase. The mod has since been +rewritten to use confirmed API signatures from the actual ONI DLL. Running this +script on the current source will add irrelevant annotations. +""" + +import re + +with open('mod/ONIAgentBridge.cs', 'r') as f: + content = f.read() + lines = content.split('\n') + +annotations = {} +# Track by line number (1-indexed) +for i, line in enumerate(lines, 1): + s = line.strip() + + # Skip comments and using directives + if s.startswith('//') or s.startswith('/*') or s.startswith('using ') or s.startswith('#') or s.startswith('*'): + continue + + # === SpeedControlScreen === + if 'SpeedControlScreen.Instance' in s and ('Pause(' in s or 'Unpause(' in s or 'SetSpeed(' in s): + annotations[i] = '🔶 UNVERIFIED: Pause/Unpause/SetSpeed method signatures on SpeedControlScreen' + + # === Circuit Manager === + if 'circuitManager' in s: + annotations[i] = '🔶 UNVERIFIED: Game.Instance.circuitManager — may be electricalManager' + if 'mgr.GetCircuits()' in s: + annotations[i] = '🔶 UNVERIFIED: circuitManager.GetCircuits() method may not exist' + if 'circuit.WattsUsed' in s or 'circuit.WattsGenerated' in s or 'circuit.MaxWatts' in s: + annotations[i] = '🔶 UNVERIFIED: Circuit property names may differ' + if 'gen.WattageRating' in s or 'gen.CircuitID' in s: + annotations[i] = '🔶 UNVERIFIED: Generator property names may differ' + + # === Pipes === + if 'Game.Instance?.liquidConduitFlow' in s: + annotations[i] = '🔶 UNVERIFIED: Game.Instance.liquidConduitFlow — may be different conduit system' + if 'Game.Instance?.gasConduitFlow' in s: + annotations[i] = '🔶 UNVERIFIED: Game.Instance.gasConduitFlow — may be different conduit system' + if 'flow.GetContents(' in s: + annotations[i] = '🔶 UNVERIFIED: ConduitFlow.GetContents() method and return type' + if 'contents.element' in s or 'contents.mass' in s or 'contents.temperature' in s: + annotations[i] = '🔶 UNVERIFIED: ConduitContents property names' + if 'Components.LiquidConduits' in s or 'Components.GasConduits' in s: + annotations[i] = '🔶 UNVERIFIED: Components.LiquidConduits / GasConduits may not exist' + if 'conduit.GetCell()' in s: + annotations[i] = '🔶 UNVERIFIED: Conduit.GetCell() method' + + # === Printing Pod === + if 'pod.IsReady()' in s or 'pod.CyclesUntilReady()' in s: + annotations[i] = '🔶 UNVERIFIED: PrintingPod methods IsReady/CyclesUntilReady — may differ' + if 'pod.GetCurrentOffers()' in s: + annotations[i] = '🔶 UNVERIFIED: PrintingPod.GetCurrentOffers() return type' + if 'offer.GetName()' in s: + annotations[i] = '🔶 UNVERIFIED: CarePackage/PrintingPodOffer.GetName() method' + if 'pod.SelectOffer(' in s: + annotations[i] = '🔶 UNVERIFIED: PrintingPod.SelectOffer(int) method' + if 'ImmuneSystemMonitor.Instance' in s and ('IsReadyToPrint' in s or 'GetCyclesUntilNextPrint' in s): + annotations[i] = '🔶 UNVERIFIED: ImmuneSystemMonitor methods may not exist' + + # === Door === + if 'door.Lock()' in s or 'door.Unlock()' in s: + annotations[i] = '🔶 UNVERIFIED: Door.Lock()/Unlock() methods may not exist' + + # === Operational/Toggle === + if 'oper.SetFlag(Operational.ActiveFlag,' in s: + annotations[i] = '🔶 UNVERIFIED: Operational.SetFlag signature — may need different approach' + + # === Storage === + if 'storage.DropAll(' in s: + annotations[i] = '🔶 UNVERIFIED: Storage.DropAll() parameters may differ' + + # === Camera === + if 'CameraController.Instance' in s and 'SetPosition' not in s: + annotations[i] = '🔶 UNVERIFIED: CameraController.Instance may not be the correct singleton' + if 'Camera.main?.orthographicSize' in s: + annotations[i] = '🔶 UNVERIFIED: Camera.main.orthographicSize setter may not work in ONI' + if 'cam.transform.position' in s and '= new Vector3' in s: + annotations[i] = '🔶 UNVERIFIED: Setting camera transform.position directly may not work' + + # === Screenshot === + if 'ScreenCapture.CaptureScreenshot' in s: + annotations[i] = '🔶 UNVERIFIED: ScreenCapture may not be available in ONI Unity version' + + # === Save/Load === + if 'SaveLoader.Save(' in s or 'SaveLoader.Load(' in s: + annotations[i] = '🔶 UNVERIFIED: SaveLoader.Save/Load method signatures' + if 'SaveLoader.GetActiveSaveFilePath()' in s: + annotations[i] = '🔶 UNVERIFIED: SaveLoader.GetActiveSaveFilePath() may not exist' + + # === Research === + if 'Research.Instance?.GetActiveResearchTechnologies' in s: + annotations[i] = '🔶 UNVERIFIED: Research.GetActiveResearchTechnologies() method' + if 'Research.Instance?.QueueResearch(' in s: + annotations[i] = '🔶 UNVERIFIED: Research.QueueResearch(Tech) method' + if 'Research.Instance?.CancelResearch(' in s: + annotations[i] = '🔶 UNVERIFIED: Research.CancelResearch(Tech) method' + if 'tech.pointsForCompletion' in s: + annotations[i] = '🔶 UNVERIFIED: Tech.pointsForCompletion property' + + # === Overlay === + if 'simOverlayManager' in s: + annotations[i] = '🔶 UNVERIFIED: Game.Instance.simOverlayManager may not exist' + if 'currentOverlay' in s: + annotations[i] = '🔶 UNVERIFIED: currentOverlay.ToString() may not yield expected overlay names' + + # === Buildings === + if 'Assets.BuildingDefs' in s and 'GetBuildingDef' not in s: + annotations[i] = '🔶 UNVERIFIED: Assets.BuildingDefs may not be a collection' + + # === Grid === + if 'Grid.Germs' in s: + annotations[i] = '🔶 UNVERIFIED: Grid.Germs API — may not exist or have different type' + + # === DTO class === + if 'public int? x2' in s or 'public int? y2' in s: + annotations[i] = '🔶 UNVERIFIED: Nullable parameters may not serialize correctly' + + # === Buildings detail === + if 'health?.GetHealth()' in s: + annotations[i] = '🔶 UNVERIFIED: Health component GetHealth()/GetMaxHealth() methods' + + # === Sensor === + if 'AtmoSensor' in s and '?.threshold' in s: + annotations[i] = '🔶 UNVERIFIED: AtmoSensor/ThermoSensor/HydroSensor threshold property' + +# Apply annotations — add comment after the line +annotated = 0 +for lineno in sorted(annotations.keys(), reverse=True): + idx = lineno - 1 + comment = ' // ' + annotations[lineno] + lines[idx] = lines[idx] + comment + annotated += 1 + +with open('mod/ONIAgentBridge.cs', 'w') as f: + f.write('\n'.join(lines)) + +print(f"Annotated {annotated} lines with verification markers") diff --git a/scripts/auto_analyze.sh b/scripts/auto_analyze.sh new file mode 100644 index 0000000..3710588 --- /dev/null +++ b/scripts/auto_analyze.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +# ONI Agent - Quick analysis report +# Runs health check, then pulls full game state and analyzes it. +set -euo pipefail + +SCRIPT_DIR="$(dirname "$0")" +TOOLS_DIR="$SCRIPT_DIR/../tools" + +echo "========================================" +echo " ONI Agent - Quick Analysis" +echo "========================================" + +# Step 1: Health check +echo "[1/3] Checking Mod connection..." +python3 "$TOOLS_DIR/oni_api.py" health 2>/dev/null || { + echo "[!] Game not connected. Run auto_repair.sh first." + exit 1 +} + +# Step 2: Full status dump +echo "[2/3] Fetching game state..." +python3 "$TOOLS_DIR/oni_api.py" status + +# Step 3: Analysis report +echo "" +echo "[3/3] Running analysis..." +python3 "$TOOLS_DIR/oni_analyzer.py" + +echo "" +echo "Done." diff --git a/scripts/auto_repair.sh b/scripts/auto_repair.sh new file mode 100644 index 0000000..ed47e9d --- /dev/null +++ b/scripts/auto_repair.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +# ONI Agent - Auto Repair Script +# Detects game connection issues and attempts to restart the Mod bridge. +set -euo pipefail + +CONFIG_PATH="$(dirname "$0")/../config.json" +HOST=$(python3 -c "import json; print(json.load(open('$CONFIG_PATH'))['modHost'])") +PORT=$(python3 -c "import json; print(json.load(open('$CONFIG_PATH'))['modPort'])") +TIMEOUT=$(python3 -c "import json; print(json.load(open('$CONFIG_PATH'))['timeout'])") + +check_health() { + curl -sf --max-time "$TIMEOUT" "http://$HOST:$PORT/health" > /dev/null 2>&1 +} + +echo "[ONI Agent] Checking Mod connection..." +if check_health; then + echo "[OK] Mod is running on $HOST:$PORT" + exit 0 +else + echo "[!] Cannot reach Mod at $HOST:$PORT" + echo " Make sure Oxygen Not Included is running with the ONI Agent Bridge mod enabled." + echo " Steps:" + echo " 1. Launch Oxygen Not Included" + echo " 2. Enable 'ONI Agent Bridge' mod in the Mod menu" + echo " 3. Load a save or start a new game" + echo " 4. Run this script again" + exit 1 +fi diff --git a/scripts/build_mod.sh b/scripts/build_mod.sh new file mode 100644 index 0000000..351d0b7 --- /dev/null +++ b/scripts/build_mod.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash +# Build the ONI Agent Bridge Mod +# Requires: mono-complete (for mcs compiler) +# Requires: ONI game installed to get reference DLLs +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" +MOD_DIR="$PROJECT_DIR/mod" +OUTPUT_DIR="$MOD_DIR/bin" + +ONI_PATH="${ONI_PATH:-}" +if [ -z "$ONI_PATH" ]; then + for candidate in \ + "$HOME/.steam/steam/steamapps/common/OxygenNotIncluded" \ + "$HOME/.local/share/Steam/steamapps/common/OxygenNotIncluded" \ + "/c/Program Files (x86)/Steam/steamapps/common/OxygenNotIncluded" \ + "/mnt/c/Program Files (x86)/Steam/steamapps/common/OxygenNotIncluded"; do + MANAGED="$candidate/OxygenNotIncluded_Data/Managed" + if [ -d "$MANAGED" ]; then + ONI_PATH="$MANAGED" + break + fi + done +fi + +if [ -z "$ONI_PATH" ]; then + echo "[!] ONI installation not found." + echo " Set ONI_PATH to the Managed directory:" + echo ' export ONI_PATH="/path/to/OxygenNotIncluded_Data/Managed"' + exit 1 +fi + +echo "[Build] ONI: $ONI_PATH" + +for dll in "$ONI_PATH/Assembly-CSharp.dll" "$ONI_PATH/UnityEngine.dll" \ + "$ONI_PATH/UnityEngine.CoreModule.dll" "$ONI_PATH/0Harmony.dll"; do + if [ ! -f "$dll" ]; then echo "[!] Missing: $dll"; exit 1; fi +done + +mkdir -p "$OUTPUT_DIR" + +REFS="" +for dll in "$ONI_PATH/Assembly-CSharp.dll" "$ONI_PATH/UnityEngine.dll" \ + "$ONI_PATH/UnityEngine.CoreModule.dll" "$ONI_PATH/0Harmony.dll"; do + REFS="$REFS -reference:\"$dll\"" +done +if [ -f "$ONI_PATH/Assembly-CSharp-firstpass.dll" ]; then + REFS="$REFS -reference:\"$ONI_PATH/Assembly-CSharp-firstpass.dll\"" +fi + +echo "[Build] Compiling..." +eval mcs -target:library -out:"$OUTPUT_DIR/ONIAgentBridge.dll" $REFS -recurse:"$MOD_DIR/*.cs" + +echo "[Build] SUCCESS: $OUTPUT_DIR/ONIAgentBridge.dll" +echo "" +echo "Install (Linux):" +echo " MOD_DIR=~/.config/unity3d/Klei/OxygenNot\\ Included/mods/local/ONIAgentBridge" +echo " mkdir -p \"\$MOD_DIR\"" +echo " cp $OUTPUT_DIR/ONIAgentBridge.dll $MOD_DIR/mod_info.yaml \"\$MOD_DIR/\"" +echo " # Then enable mod in ONI > Mods > ONI Agent Bridge" diff --git a/scripts/event_daemon.py b/scripts/event_daemon.py new file mode 100644 index 0000000..ed13fa2 --- /dev/null +++ b/scripts/event_daemon.py @@ -0,0 +1,295 @@ +#!/usr/bin/env python3 +""" +ONI Agent Event Daemon +====================== +Continuous event poller that feeds game events to the AI's input stream. + +Architecture: + Game Mod --> Event Queue (via HTTP) --> Event Daemon --> AI Input Stream + +The daemon: + 1. Polls GET /api/state/events?since= every N seconds + 2. Classifies events by severity (critical/warning/info) + 3. For critical events: immediately triggers full analysis + prints alert + 4. For warning events: logs and optionally triggers targeted checks + 5. For info events: accumulates and reports periodically + 6. Maintains a compact event log for AI context +""" + +import json +import os +import sys +import time +import datetime + +# Add tools to path +TOOLS_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'tools') +sys.path.insert(0, TOOLS_DIR) + +# Disable auto-pause for event daemon — we poll frequently and should not pause the game +import oni_api +oni_api.AUTO_PAUSE_ENABLED = False + +from oni_api import api_get, api_post, api_url + + +# ── Configuration ────────────────────────────────────────────────────────── + +POLL_INTERVAL = 5 # seconds between event polls +CRITICAL_POLL_INTERVAL = 2 # poll faster when critical events detected +MAX_EVENT_HISTORY = 200 # events kept in rolling buffer +CRITICAL_SEVERITIES = {'critical', 'duplicantdeath', 'buildingdamage', 'poweroutage'} +WARNING_SEVERITIES = {'warning', 'duplicantstress', 'lowoxygen', 'foodshortage'} + + +# ── Event History ────────────────────────────────────────────────────────── + +class EventHistory: + """Rolling buffer of events + statistics for AI context.""" + + def __init__(self, maxlen=MAX_EVENT_HISTORY): + self.events = [] + self.maxlen = maxlen + self.stats = { + 'total': 0, + 'critical': 0, + 'warning': 0, + 'info': 0, + 'by_category': {}, + 'by_type': {}, + 'last_poll_cycle': 0, + } + + def push(self, events): + for e in events: + self.events.append(e) + self.stats['total'] += 1 + sev = (e.get('severity') or 'info').lower() + cat = e.get('category', 'unknown') + etype = e.get('type', 'unknown') + + if sev in ('critical', 'duplicantdeath', 'buildingdamage'): + self.stats['critical'] += 1 + elif sev in ('warning',): + self.stats['warning'] += 1 + else: + self.stats['info'] += 1 + + self.stats['by_category'][cat] = self.stats['by_category'].get(cat, 0) + 1 + self.stats['by_type'][etype] = self.stats['by_type'].get(etype, 0) + 1 + + self.stats['last_poll_cycle'] = e.get('cycle', 0) + + # Trim + if len(self.events) > self.maxlen: + self.events = self.events[-self.maxlen:] + + def get_summary(self): + return { + 'total_events': self.stats['total'], + 'critical_count': self.stats['critical'], + 'warning_count': self.stats['warning'], + 'info_count': self.stats['info'], + 'categories': dict(sorted(self.stats['by_category'].items(), + key=lambda x: -x[1])[:10]), + 'last_cycle': self.stats['last_poll_cycle'], + 'recent_critical': [e for e in self.events[-20:] + if (e.get('severity') or '').lower() in CRITICAL_SEVERITIES][-5:], + } + + +# ── Event Classifier ────────────────────────────────────────────────────── + +def classify_event(e): + """Return the action type for a given event.""" + sev = (e.get('severity') or '').lower() + title = (e.get('title') or '').lower() + msg = (e.get('message') or '').lower() + cat = (e.get('category') or '').lower() + + if sev in CRITICAL_SEVERITIES: + return 'critical' + if sev in WARNING_SEVERITIES: + return 'warning' + if cat == 'action': + return 'action_feedback' + + # Content-based classification + combined = title + ' ' + msg + if any(w in combined for w in ['suffocat', 'choking', 'no oxygen', 'out of air']): + return 'critical' + if any(w in combined for w in ['starving', 'food', 'hungry']): + return 'warning' + if any(w in combined for w in ['heat', 'overheat', 'temperature', 'melt']): + return 'warning' + if any(w in combined for w in ['power', 'wattage', 'shutoff']): + return 'warning' + if any(w in combined for w in ['duplicant', 'stress', 'break']): + return 'warning' + if any(w in combined for w in ['research complete', 'research completed']): + return 'info_research' + if any(w in combined for w in ['printing pod']): + return 'info_printing_pod' + + return 'info' + + +def format_event_for_ai(e): + """Format an event as a structured string for AI input.""" + ts = datetime.datetime.fromtimestamp(e.get('timestamp', time.time())).strftime('%H:%M:%S') + cycle = e.get('cycle', '?') + severity = e.get('severity', 'info').upper() + title = e.get('title', '?') + message = e.get('message', '') + + lines = [f"[EVENT {severity}] Cycle {cycle} @ {ts}"] + lines.append(f" Title: {title}") + if message: + lines.append(f" Message: {message}") + entity = e.get('entity') + if entity: + lines.append(f" Entity: {entity}") + cell = e.get('cell') + if isinstance(cell, int) and cell >= 0: + lines.append(f" Cell: {cell}") + return '\n'.join(lines) + + +# ── Polling Loop ────────────────────────────────────────────────────────── + +def poll_loop(event_history): + seq = 0 + consecutive_errors = 0 + + print("[ONI Event Daemon] Starting event poll...") + print(f"[ONI Event Daemon] Poll interval: {POLL_INTERVAL}s") + print() + + while True: + try: + data = api_get(f"/api/state/events?since={seq}&limit=50") + + if 'error' in data: + consecutive_errors += 1 + if consecutive_errors == 1: + print(f"[!] Cannot reach game: {data['error']}") + print(" Waiting for game connection...") + time.sleep(POLL_INTERVAL * 2) + continue + + consecutive_errors = 0 + events = data.get('events', []) + next_seq = data.get('next_seq', seq) + + if events: + event_history.push(events) + + # Classify and report + critical_events = [] + for e in events: + cls = classify_event(e) + if cls == 'critical': + critical_events.append(e) + # Print alert with clear marker + print("=" * 56) + print(" *** CRITICAL EVENT ***") + print(format_event_for_ai(e)) + print("=" * 56) + print() + + # Auto-trigger full analysis on critical events + _trigger_emergency_analysis(e) + elif cls == 'warning': + print(format_event_for_ai(e)) + print() + elif cls == 'info_research': + # Research completed — show with unlocks + print("=" * 40) + print(format_event_for_ai(e)) + print(" -> Check what's new: python3 tools/oni_api.py buildable") + print("=" * 40) + print() + elif cls == 'info_printing_pod': + # Printing pod ready + print("=" * 40) + print(format_event_for_ai(e)) + print(" -> View options: python3 tools/oni_api.py printing_pod") + print("=" * 40) + print() + else: + # Only print non-info events or batch feedback + cat = e.get('category', '') + if cat != 'general' or cls != 'info': + print(format_event_for_ai(e)) + print() + + # If critical events happened, poll faster for a bit + if critical_events: + seq = next_seq + time.sleep(CRITICAL_POLL_INTERVAL) + continue + + seq = next_seq + time.sleep(POLL_INTERVAL) + + except KeyboardInterrupt: + print("\n[ONI Event Daemon] Shutting down.") + summary = event_history.get_summary() + print(f" Total events seen: {summary['total_events']}") + print(f" Critical: {summary['critical_count']}, Warning: {summary['warning_count']}") + break + except Exception as e: + consecutive_errors += 1 + if consecutive_errors <= 2: + print(f"[!] Poll error: {e}") + time.sleep(POLL_INTERVAL) + + +def _trigger_emergency_analysis(event): + """On critical events, pull game state snapshot for AI context.""" + try: + print(" -> Triggering emergency snapshot...") + game = api_get('/api/state/game') + alerts = api_get('/api/state/alert') + dups = api_get('/api/state/duplicants') + + if 'error' not in game: + print(f" [SNAPSHOT] Cycle {game.get('cycle', '?')}, " + f"{game.get('duplicantCount', '?')} dupes, " + f"{game.get('suffocating', 0)} suffocating, " + f"{game.get('starving', 0)} starving, " + f"{game.get('stressed', 0)} stressed") + if isinstance(alerts, list) and alerts: + print(f" [ALERTS] {len(alerts)} active:") + for a in alerts[:3]: + print(f" - [{a.get('severity', '?')}] {a.get('title', '?')}") + print() + except: + pass + + +# ── Main ────────────────────────────────────────────────────────────────── + +def main(): + history = EventHistory() + try: + poll_loop(history) + except KeyboardInterrupt: + pass + + # Print final summary + summary = history.get_summary() + print() + print("=" * 56) + print(" Event Daemon Session Summary") + print("=" * 56) + print(f" Total events: {summary['total_events']}") + print(f" Critical: {summary['critical_count']}") + print(f" Warning: {summary['warning_count']}") + print(f" Info: {summary['info_count']}") + print(f" Top categories: {', '.join(summary['categories'].keys())}") + print("=" * 56) + + +if __name__ == '__main__': + main() diff --git a/scripts/fix_csharp.py b/scripts/fix_csharp.py new file mode 100644 index 0000000..be27b8a --- /dev/null +++ b/scripts/fix_csharp.py @@ -0,0 +1,185 @@ +#!/usr/bin/env python3 +"""Convert C# 7/8 features in ONIAgentBridge.cs to C# 6 compatible code. + +DEPRECATED: The mod source (ONIAgentBridge.cs) has been rewritten to use if-else chains. +This script is kept for historical reference only and should not be run on the current source. +""" + +import re + +with open('mod/ONIAgentBridge.cs', 'r') as f: + content = f.read() + +# 1. Convert tuple switch at ProcessRequest to if-else chain +# Find the switch and replace it +old_switch_start = """ switch (path, method) + {""" + +# Read the entire switch block and reconstruct +lines = content.split('\n') +new_lines = [] +i = 0 +while i < len(lines): + line = lines[i] + + # Find the C# 7 tuple switch + if 'switch (path, method)' in line and '{' in lines[i+1]: + new_lines.append(' // --- C# 6 compatible dispatch ---') + new_lines.append(' bool _handled = false;') + i += 2 # skip "switch (path, method)" and "{" + + while i < len(lines): + stripped = lines[i].strip() + + # Check for case pattern: case ("...", "..."): + m = re.match(r'case \("([^"]+)", "([^"]+)"\):', stripped) + if m: + endpoint = m.group(1) + method = m.group(2) + indent = lines[i][:len(lines[i]) - len(lines[i].lstrip())] + new_lines.append(f'{indent}else if (path == "{endpoint}" && method == "{method}")') + new_lines.append(f'{indent}{{') + new_lines.append(f'{indent} _handled = true;') + i += 1 + # Copy lines until "break;" + while i < len(lines) and lines[i].strip() != 'break;': + new_lines.append(lines[i]) + i += 1 + new_lines.append(f'{indent}}}') + i += 1 # skip "break;" + continue + + # Check for default case + if stripped == 'default:': + i += 1 + # Skip the opening brace + if lines[i].strip() == '{': + i += 1 + new_lines.append(' if (!_handled)') + new_lines.append(' {') + while i < len(lines): + if lines[i].strip() == '}' and not _is_end_of_method(lines, i): + # This could be the switch closing brace + # Check if next line is the method closing + break + new_lines.append(lines[i]) + i += 1 + new_lines.append(' }') + # Skip the closing brace of the switch + if lines[i].strip() == '}': + i += 1 + continue + + # Check for closing brace of switch + if stripped == '}': + i += 1 + break + + # Any other content inside switch (shouldn't happen) + new_lines.append(lines[i]) + i += 1 + continue + + new_lines.append(line) + i += 1 + +content = '\n'.join(new_lines) + +def _is_end_of_method(lines, idx): + """Check if this } ends a method (next non-blank is a method or class member).""" + for j in range(idx+1, min(idx+10, len(lines))): + s = lines[j].strip() + if s == '' or s.startswith('//') or s.startswith('/*'): + continue + if s.startswith('private ') or s.startswith('public ') or s.startswith('internal ') or s.startswith('static ') or s.startswith('}'): + return True + return False + return False + +# 2. Fix switch expressions (C# 8): `wireType switch { ... }` -> if-else +# Pattern: string buildingId = wireType switch { "heavy" => "HeaviWatWire", ... } +def fix_switch_expr(match): + full = match.group(0) + var_name = match.group(1) + # Parse the switch arms + # Extract the expression after "= " + body = match.group(2) + return full # placeholder, we'll handle below + +# Fix: string buildingId = wireType switch { "heavy" => "HeaviWatWire", _ => "Wire" }; +# Convert to: string buildingId; if (wireType == "heavy") buildingId = "HeaviWatWire"; else ... +for pattern in [ + (r'wireType switch\s*\{([^}]+)\}', 'wireType'), + (r'error switch\s*\{([^}]+)\}', 'error'), + (r'i switch\s*\{([^}]+)\}', 'i'), +]: + pat, varname = pattern + matches = list(re.finditer(pat, content)) + for m in reversed(matches): + body = m.group(1) + arms = re.findall(r'"([^"]*)"\s*=>\s*"([^"]*)"', body) + default = re.findall(r'_\s*=>\s*(null|"[^"]*")', body) + + if varname == 'i': + # label assignment + replacements = [] + for key, val in arms: + replacements.append(f' if ({varname} == {key}) label = "{val}";') + if default: + replacements.append(f' else label = {default[0]};') + new_code = '\n'.join(replacements) + else: + # Find the variable being assigned + start = m.start() + # Look backwards to find the variable name + line_start = content.rfind('\n', 0, start) + 1 + line_before = content[line_start:start] + var_match = re.match(r'\s*(?:\w+\s+)?(\w+)\s*=\s*$', line_before) + + indent = ' ' * 16 + if varname == 'wireType': + # Multiple instances in wire building, find each by context + context_before = content[max(0,start-200):start] + if 'bridgeId' in context_before: + varname_full = 'bridgeId' + else: + varname_full = 'buildingId' + else: + varname_full = varname + + lines_code = [f' string {varname_full};'] + first = True + for key, val in arms: + prefix = 'if' if first else 'else if' + lines_code.append(f' {prefix} ({varname} == "{key}") {varname_full} = "{val}";') + first = False + if default: + dval = default[0] + lines_code.append(f' else {varname_full} = {dval};') + + new_code = '\n'.join(lines_code) + + # Replace the assignment line + switch expression + # Find the full assignment + assign_start = content.rfind('\n', 0, start) + assign_end = m.end() + while assign_end < len(content) and content[assign_end] != '\n': + assign_end += 1 + old = content[assign_start:assign_end] + content = content[:assign_start] + '\n' + new_code + content[assign_end:] + +# Write result +with open('mod/ONIAgentBridge.cs', 'w') as f: + f.write(content) + +print('Done. Checking for remaining C# 7+ features...') + +# Verify +remaining = re.findall(r'\bswitch\b', content) +print(f'Remaining "switch" keywords: {len(remaining)}') +# Count them +for i, line in enumerate(content.split('\n')): + if 'switch' in line and not line.strip().startswith('//') and 'ProcessRequest' not in line: + sline = line.strip() + if 'if (' not in line and 'dictionary' not in line.lower() and 'dispatch' not in line: + print(f' Line ~{i}: {sline[:80]}') diff --git a/scripts/setup.sh b/scripts/setup.sh new file mode 100644 index 0000000..9174bca --- /dev/null +++ b/scripts/setup.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +# ONI Agent - Project Setup Script +# Ensures Python dependencies and directory structure. +set -euo pipefail + +echo "[ONI Agent] Setting up project..." + +# Verify Python3 +if ! command -v python3 &> /dev/null; then + echo "[!] Python3 is required but not found." + exit 1 +fi +echo "[OK] Python3 found: $(python3 --version)" + +# Verify Python tools are syntactically valid +TOOLS_DIR="$(dirname "$0")/../tools" +for f in "$TOOLS_DIR"/*.py; do + python3 -m py_compile "$f" 2>/dev/null && echo "[OK] $f" || echo "[!] Syntax error in $f" +done + +echo "" +echo "[OK] Setup complete." +echo "" +echo "Next steps:" +echo " 1. Launch Oxygen Not Included with the ONI Agent Bridge mod" +echo " 2. Run: python3 tools/oni_api.py health" +echo " 3. Run: python3 tools/oni_api.py status" +echo " 4. Run: python3 tools/oni_analyzer.py" diff --git a/scripts/watch.sh b/scripts/watch.sh new file mode 100644 index 0000000..26ec84c --- /dev/null +++ b/scripts/watch.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +# ONI Agent - Watch Mode +# Continuously polls game state and runs analysis on a timer. +set -euo pipefail + +SCRIPT_DIR="$(dirname "$0")" +TOOLS_DIR="$SCRIPT_DIR/../tools" +INTERVAL=${1:-60} + +if ! [[ "$INTERVAL" =~ ^[0-9]+$ ]] || [ "$INTERVAL" -lt 10 ]; then + echo "Usage: watch.sh [interval_seconds] (minimum 10)" + exit 1 +fi + +echo "[ONI Agent] Watch mode started (interval: ${INTERVAL}s)" +echo "Press Ctrl+C to stop." +echo "" + +while true; do + clear 2>/dev/null || true + output=$(python3 "$TOOLS_DIR/oni_analyzer.py" 2>&1) + echo "$output" + echo "" + echo "[Next update in ${INTERVAL}s...]" + sleep "$INTERVAL" +done diff --git a/skills/oni_agent.md b/skills/oni_agent.md new file mode 100644 index 0000000..5d3a136 --- /dev/null +++ b/skills/oni_agent.md @@ -0,0 +1,466 @@ +# ONI Agent Skill + +AI 操作《缺氧》(Oxygen Not Included) 的完整技能定义。 + +## 触发条件 +- 用户提到《缺氧》/ Oxygen Not Included / ONI +- 用户询问游戏策略、建造方案、资源管理 +- 用户希望 Mod 工具链执行操作 +- 用户需要实时游戏操作协助 + +## 游戏核心玩法 + +缺氧是一款太空殖民模拟游戏。核心目标是在恶劣环境中维持复制人的生存并建设可持续基地。 + +### 生存要素优先级 + +| 优先级 | 要素 | 危险条件 | 后果 | 解决方案路线 | +|--------|------|---------|------|-------------| +| ★★★ | 氧气 | O₂ < 500 kg 或无制氧设备 | 复制人 110s 内窒息死亡 | 藻类制氧(前期) → 电解器+氢气发电(SPOM) | +| ★★★ | 食物 | Calories < 1000 kcal/人 | 复制人饿死 | 浆果种植 → 烤肉 → 营养膏棒 | +| ★★☆ | 温度 | > 40°C 或 < 10°C | 作物枯萎/复制人受伤 | 隔热/液冷+蒸汽机/加热 | +| ★★☆ | 电力 | 电量不足/电路过载 | 设备停摆/电线起火 | 手动→煤→氢→天然气→太阳能 | +| ★☆☆ | 士气 | Stress > 80% | 精神崩溃/破坏设备 | 房间奖励/装饰/按摩/高品质食物 | +| ★☆☆ | 病菌 | Slimelung/Food Poisoning | 生病死亡 | 洗手/净化/消毒/氧气服 | + +### 游戏世界规则 + +- 二维网格地图,原点 (0,0) 在左下角,x 向右 y 向上 +- 气体按密度分层:CO₂(沉底) < PollutedO₂ < O₂ < NaturalGas < H₂(上升) +- 建筑占用 w×h 格子,坐标指左下角锚点 +- 科技通过研究站→超级计算机逐步解锁新建筑 +- 每 3 周期传送舱提供一次新复制人或补给选择 + +--- + +## API 总览(92 个端点) + +工具链让 AI 能像人类玩家一样理解游戏并执行操作。所有 API 通过 `tools/oni_api.py` 命令行调用。 + +### 一、状态查询 — 理解"当前发生了什么" + +每次 AI 推理前工具自动暂停游戏,保证数据时效性。AI 操作完成后主动 unpause。 + +```bash +# 全局总览 — 最常用的命令 +python3 tools/oni_api.py status +# 输出:周期、窒息人数、饥饿人数、压力人数、是否暂停、游戏速度 + +# 全面诊断 +python3 tools/oni_commander.py diagnose +# 输出:电力+CO₂+温度+疾病+管道的完整报告 +``` + +**各状态查询命令的用途:** + +| 命令 | 等价于玩家做什么 | AI 用它做什么 | +|------|-----------------|-------------| +| `status` | 看一眼基地总览面板 | 快速评估危机:有人在窒息吗?在挨饿吗? | +| `resources` | 打开资源面板 | 检查氧气储量够多久、煤还剩多少 | +| `duplicants` | 逐一查看每个复制人 | 谁在窒息?谁压力爆了?谁没事干? | +| `buildings` | 按分类查看建筑 | 数一数有多少发电机、电解器、种植箱 | +| `power` | 打开电力覆盖层 | 哪个电路过载了?负载多少? | +| `co2` | 看 CO₂ 在哪聚集 | CO₂ 是前中期最大杀手,找到它并挖排气道 | +| `temp_zones` | 看温度覆盖层 | 找到过热区域(>50°C)和过冷区域(<5°C) | +| `pipes gas/liquid` | 点开管道看看 | 管道堵塞了吗?内容物在流动吗? | +| `rooms` | 打开房间覆盖层 | 确认宿舍/卫生间/餐厅生效了吗 | +| `morale` | 查看士气面板 | 士气够不够支撑当前技能数 | +| `diseases` | 打开病菌覆盖层 | 谁被感染了?环境病菌多吗? | +| `storage` | 查看储物建筑 | 储备粮在哪、存了多少 | +| `storages` | 同上 | 同 storage | +| `resources` | 资源面板 | 所有物资的精确余量 | +| `skills` | 技能面板 | 每个复制人的属性值和已学技能 | +| `research` | 科技树 | 哪些科技已完成、哪些可研究 | +| `research_detail` | 点开研究站 | 研究站在工作吗?现在在研究什么? | +| `buildable` | 建造菜单 | 当前科技解锁了哪些建筑 | +| `geysers` | 查看喷泉 | 找到水源/天然气/火山位置 | +| `critters` | 查看生物 | 哈奇/飞鱼/滑鳞的数量和位置 | +| `plants` | 查看植物 | 作物生长进度、是否枯萎 | + +### 二、格子地图 — 理解"每个格子有什么" + +所有建造操作前必须先用格子查询确认位置。 + +```bash +# 查看单个格子(最常用) +python3 tools/oni_api.py cell 45 48 +# 输出:元素、温度、有无建筑、有无复制人、是否可挖掘、是否安全 + +# 查看 10x10 区域 +python3 tools/oni_api.py cells 40 40 10 10 +# 输出:区域内所有格子的地图 + AI 友好摘要 + +# 扫描某一行/列 +python3 tools/oni_api.py slice y 20 0 50 +# 输出:第 20 行从 0 到 50 的每个格子 + +# 气体分析 +python3 tools/oni_api.py gas 50 50 30 +# 输出:以 50,50 为中心半径 30 内的气体分布 + +# AI 友好区域探索 +python3 tools/oni_api.py explore 40 40 20 20 +# 输出:区域内建筑列表+复制人+元素摘要+感兴趣格子 +``` + +**AI 坐标定位方法:** + +``` +方法 1: buildings → 查已有建筑坐标 → 在附近偏移找空地 +方法 2: explore → 找 buildings_in_region 为空的区域 +方法 3: cell → 确认 isSolid=false + hasBuilding=false + isVisible=true +方法 4: co2 → 在 CO₂ 聚集点下方挖排气通道 +方法 5: gas → 在气体聚集区放气体泵 +``` + +### 三、实体注册表 — "这个建筑是什么" + +AI 在运行时查询任何不懂的 ID: + +```bash +# 查建筑 +python3 tools/oni_api.py registry buildings Electrolyzer +# 输出:名称、分类、尺寸(2x2)、功耗(120W)、所需材料 + +# 查元素 +python3 tools/oni_api.py registry elements Water +# 输出:比热容、导热系数、沸点(99°C)、物态 + +# 查科技 +python3 tools/oni_api.py registry techs ImprovedOxygen +# 输出:前置科技、解锁建筑(Electrolyzer) + +# 查优先级含义 +python3 tools/oni_api.py registry priorities +# 输出:1=最低 5=默认 9=紧急 +``` + +### 四、建造操作 — "建造世界" + +建造 = 挖掘(dig) → 放置(build)。坐标是建筑左下角。 + +```bash +# 挖掘区域 +python3 tools/oni_api.py dig 40 40 10 10 +# 在 (40,40) 处挖一个 10x10 的空间 + +# 放置建筑 +python3 tools/oni_api.py build Electrolyzer 45 42 +# 在 (45,42) 放电解器(左下角定位,占 2x2 格) + +# 铺设管路 +python3 tools/oni_api.py build_pipe_line liquid 42 40 48 40 line +# 从 (42,40) 到 (48,40) 铺液体管道 +# mode=line: 与已有管线合并 +# mode=cross: 交叉处自动用跨接器跳过 +# mode=single: 单段 + +# 铺设电线 +python3 tools/oni_api.py build_wire_line heavy 30 20 45 20 cross +# 从 (30,20) 到 (45,20) 铺重载电线 +# 交叉处用跨接器不连通 + +# 拆除 +python3 tools/oni_api.py deconstruct Tile 42 45 +# 拆除 (42,45) 处的 Tile + +# 旋转 +python3 tools/oni_api.py rotate 45 48 +# 旋转 (45,48) 处的建筑 + +# 清碎片 +python3 tools/oni_api.py clear 40 40 5 +# 清除 (40,40) 半径 5 内的碎片 + +# 复制设置 +python3 tools/oni_api.py copy_settings 45 48 50 48 +# 把 (45,48) 建筑的设置复制到 (50,48) +``` + +### 五、建筑操作 — "使用已建成的建筑" + +相当于玩家点击建筑后选择功能。 + +```bash +# 开关 +python3 tools/oni_api.py toggle 45 42 +# 关闭/打开电解器(省电或恢复运行) + +# 设优先级 +python3 tools/oni_api.py set_building_priority 45 42 9 +# 电解器优先级设为 9(紧急) + +# 设配方 +python3 tools/oni_api.py set_recipe 30 25 Crush +# 碎岩机设为粉碎模式 + +# 开关自动化 +python3 tools/oni_api.py set_automation 45 42 on +# 电解器开启自动化控制 + +# 清空储物 +python3 tools/oni_api.py empty 50 50 +# 清空 (50,50) 储物箱全部内容 + +# 设储物过滤 +python3 tools/oni_api.py storage_filter 50 50 Coal +# 储物箱只收煤炭 + +# 设冰箱温度 +python3 tools/oni_api.py fridge_temp 60 30 2 +# 冰箱设为 2°C + +# 设电池充放电阈值 +python3 tools/oni_api.py battery_charge 35 25 90 20 +# 智能电池 90% 停充、20% 启动 + +# 设阀门流量 +python3 tools/oni_api.py valve_flow 42 42 1000 +# 阀门限流 1000g/s + +# 设排气口压力 +python3 tools/oni_api.py vent_pressure 45 50 2000 +# 高压排气口设为 2000g + +# 设孵化器 +python3 tools/oni_api.py incubator_setting 50 40 HatchEgg +# 孵化器优先孵哈奇蛋 + +# 设传感器阈值 +python3 tools/oni_api.py sensor_threshold 70 30 500 +# 气压传感器阈值 500g + +# 消毒 +python3 tools/oni_api.py disinfect 42 42 +# 对 (42,42) 消毒 + +# 清扫 +python3 tools/oni_api.py sweep 40 40 10 +# 标记 (40,40) 半径 10 内的物品为待清扫 + +# 取消任务 +python3 tools/oni_api.py cancel_errand 45 42 +# 取消电解器处的排队任务 +``` + +### 六、门控制 + +```bash +# 锁门 +python3 tools/oni_api.py door_lock 42 45 on +# 锁上 (42,45) 的门,复制人不能通过 + +# 单向通行 +python3 tools/oni_api.py door_one_way 42 45 left +# 门只允许向左通过 + +# 手动开门/关门 +python3 tools/oni_api.py door_open 42 45 off +# 手动关闭 (42,45) 的门 +``` + +### 七、复制人管理 + +```bash +# 移动复制人 +python3 tools/oni_api.py dupe_move Dup1 30 25 +# 命令 Dup1 移动到 (30,25) + +# 取消任务 +python3 tools/oni_api.py dupe_cancel_task Dup1 +# 命令 Dup1 取消当前正在做的事 + +# 分配工作 +python3 tools/oni_api.py assign_job Dup1 Dig +# 让 Dup1 专注挖掘工作 + +# 个人优先级 +python3 tools/oni_api.py dupe_personal_priority Dup1 Dig 9 +# Dup1 的挖掘优先级设为 9(最高) +``` + +### 八、科研管理 + +```bash +# 查看研究状态 +python3 tools/oni_api.py research_detail +# 输出:研究站是否工作、当前研究什么、超级计算机是否造好 + +# 选择研究 +python3 tools/oni_api.py research_select ImprovedOxygen +# 开始研究 ImprovedOxygen + +# 取消研究 +python3 tools/oni_api.py research_cancel +# 取消全部当前研究 +``` + +### 九、生物/植物管理 + +```bash +# 攻击生物 +python3 tools/oni_api.py critter_attack 120 80 +# 标记 (120,80) 的生物为攻击目标 + +# 抓捕生物 +python3 tools/oni_api.py critter_wrangle 120 80 +# 抓捕 (120,80) 的生物运到存放点 + +# 收获植物 +python3 tools/oni_api.py harvest 50 45 +# 收获 (50,45) 的成熟作物 + +# 拔除植物 +python3 tools/oni_api.py plant_uproot 50 45 +# 拔掉 (50,45) 的植物 +``` + +### 十、游戏控制 + +```bash +# 暂停/恢复 +python3 tools/oni_api.py pause "Building SPOM" +python3 tools/oni_api.py unpause 1 + +# 速度 +python3 tools/oni_api.py speed 3 + +# 存档回滚 +python3 tools/oni_api.py save "before_experiment" +python3 tools/oni_api.py saves +python3 tools/oni_api.py load "before_experiment" + +# 截图视角 +python3 tools/oni_api.py snapshot /tmp/now.png +python3 tools/oni_api.py camera 120 80 20 + +# 覆盖层切换 +python3 tools/oni_api.py overlay power +python3 tools/oni_api.py overlay temp +python3 tools/oni_api.py overlay gas +python3 tools/oni_api.py overlay rooms + +# 传送舱 +python3 tools/oni_api.py printing_pod +python3 tools/oni_api.py printing_pod_select 0 +``` + +### 十一、批量操作 + +```bash +python3 tools/oni_api.py batch docs/batch_example.json +# 一次执行多个动作,逐个报告结果 +``` + +### 十二、高级指令 + +```bash +# 全面诊断 +python3 tools/oni_commander.py diagnose + +# 自动处理 CO₂ +python3 tools/oni_commander.py fix_co2 + +# 处理过载电路 +python3 tools/oni_commander.py fix_overload + +# 紧急制氧 +python3 tools/oni_commander.py emergency_o2 + +# 一键拓展房间 +python3 tools/oni_commander.py expand_base 40 40 10 8 +``` + +--- + +## 常见场景查询路线 + +### "复制人要窒息了" +``` +status → 看 suffocating 计数 +duplicants → 找 oxygen < 20 的复制人 +cell <窒息复制人坐标> → 所在格子的元素 +co2 → 如果是 CO₂ 窒息,fix_co2 挖排气道 +resources → O₂ 存量和 Algae 存量 +buildings → 过滤 Oxygen 分类看有无制氧设备 +无设备 → emergency_o2 或 build OxygenDiffuser +``` + +### "基地没电了" +``` +power → 看各电路负载和过载 +resources → Coal/Hydrogen/NaturalGas 存量 +buildings → Power 分类有哪些发电机 +过载 → fix_overload +缺电 → 根据资源选发电机类型 +``` + +### "研究卡住了" +``` +research_detail → 研究站通不通电、有没有复制人在研究 +building_detail <研究站坐标> → 供上电了吗 +resources → Dirt 够吗(研究站消耗) +需超级计算机 → build SuperComputer <坐标> +``` + +### "管道不走了" +``` +pipes liquid → 看管道内容 +building_detail <水泵> → 泵有没有电 +building_detail <目的地建筑> → 输入是否已满 +build_pipe_line liquid <起点> <终点> cross → 重建 +``` + +### "传送舱来了" +``` +event_daemon 显示 [EVENT] Printing Pod ready +printing_pod → 看选项 +printing_pod_select 0|1|2 → 选择 +``` + +--- + +## AI 操作铁律 + +``` +铁律 1: AI 开始推理/决策前 → 工具自动暂停游戏 +铁律 2: AI 需要问用户时 → 工具自动暂停 +铁律 3: AI 退出回答时 → 确保游戏已暂停(无人监控时不能运行) +铁律 4: 写操作前 → 工具自动确保暂停态 +铁律 5: 重大操作前 → save 存档,失败可 load 回滚 +铁律 6: 每次操作后检查反馈 → 读 error + errorMessage + suggestion +``` + +## 工具列表 + +| 工具 | 用途 | +|------|------| +| `tools/oni_api.py` | 92 个 API 端点的 CLI 客户端(所有查询/操作) | +| `tools/oni_commander.py` | 高级指令(diagnose/fix_co2/expand_base 等) | +| `tools/oni_analyzer.py` | 自动分析+6 维度预警建议 | +| `tools/oni_builder.py` | 预置 SPOM/农场/养殖等蓝图 | +| `scripts/event_daemon.py` | 事件守护进程,持续轮询推送游戏事件到 AI | + +## 常用操作速查 + +```bash +# 每分钟检查 +python3 scripts/event_daemon.py + +# 紧急三步 +python3 tools/oni_api.py pause "Emergency" +python3 tools/oni_commander.py diagnose +python3 tools/oni_api.py status +# ...操作... +python3 tools/oni_api.py unpause 1 + +# 存档保护 +python3 tools/oni_api.py save "before_操作" +# ...操作... +# 如果搞砸了: +python3 tools/oni_api.py load "before_操作" + +# 截图确认 +python3 tools/oni_api.py camera 50 50 20 +python3 tools/oni_api.py snapshot +``` diff --git a/tools/oni_analyzer.py b/tools/oni_analyzer.py new file mode 100644 index 0000000..f1f4122 --- /dev/null +++ b/tools/oni_analyzer.py @@ -0,0 +1,281 @@ +import json +import sys +from oni_api import api_get + + +def get_game_state(): + return { + 'game': api_get('/api/state/game'), + 'resources': api_get('/api/state/resources'), + 'duplicants': api_get('/api/state/duplicants'), + 'buildings': api_get('/api/state/buildings'), + 'research': api_get('/api/state/research'), + 'geysers': api_get('/api/state/geysers'), + 'alerts': api_get('/api/state/alert'), + 'critters': api_get('/api/state/critters'), + 'plants': api_get('/api/state/plants'), + 'rooms': api_get('/api/state/rooms'), + } + + +def as_dict(resources): + if not isinstance(resources, list): + return {} + return {r.get('name'): r for r in resources} + + +def buildings_by_cat(buildings): + cats = {} + for b in (buildings or []): + cat = b.get('category', 'Other') + cats.setdefault(cat, []).append(b) + return cats + + +def analyze_o2(resources, buildings): + r = as_dict(resources) + o2 = r.get('Oxygen', {}).get('amount', 0) + algae = r.get('Algae', {}).get('amount', 0) + pw = r.get('PollutedWater', {}).get('amount', 0) + + has_electrolyzer = any(b.get('id') == 'Electrolyzer' for b in (buildings or [])) + has_diffuser = any(b.get('id') == 'OxygenDiffuser' for b in (buildings or [])) + + warnings = [] + if o2 < 100: + warnings.append(("CRITICAL", f"Oxygen critically low ({o2:.0f} kg)!")) + elif o2 < 500: + warnings.append(("WARN", f"Oxygen declining ({o2:.0f} kg)")) + + if o2 < 1000 and not has_electrolyzer and not has_diffuser: + warnings.append(("CRITICAL", "No oxygen production buildings found! Build OxygenDiffuser or Electrolyzer")) + + if algae < 1000: + warnings.append(("WARN", f"Algae running out ({algae:.0f} kg) — build electrolyzer")) + elif algae < 5000 and not has_electrolyzer: + warnings.append(("INFO", f"Algae moderate ({algae:.0f} kg) — plan SPOM transition")) + + if pw > 50000: + warnings.append(("INFO", f"Polluted water abundant ({pw:.0f} kg) — use for reed fiber / pincha pepper")) + + return warnings + + +def analyze_food(resources, buildings): + r = as_dict(resources) + cal = r.get('Calories', {}).get('amount', 0) + + has_farm = any(b.get('id') in ('PlanterBox', 'FarmTile') for b in (buildings or [])) + has_grill = any(b.get('id') == 'ElectricGrill' for b in (buildings or [])) + + warnings = [] + if cal < 100000: + warnings.append(("CRITICAL", f"Food shortage ({cal:.0f} kcal)!")) + elif cal < 500000: + warnings.append(("WARN", f"Food declining ({cal:.0f} kcal)")) + elif cal > 2000000: + warnings.append(("INFO", f"Food surplus ({cal:.0f} kcal)")) + + if cal < 500000 and not has_farm: + warnings.append(("WARN", "No farm plots found. Build PlanterBox and plant Mealwood")) + if cal < 500000 and not has_grill: + warnings.append(("INFO", "Build ElectricGrill to improve food quality")) + return warnings + + +def analyze_power(resources, buildings): + r = as_dict(resources) + coal = r.get('Coal', {}).get('amount', 0) + hydrogen = r.get('Hydrogen', {}).get('amount', 0) + natgas = r.get('NaturalGas', {}).get('amount', 0) + + generators = [b for b in (buildings or []) if b.get('id') in ( + 'CoalGenerator', 'HydrogenGenerator', 'NaturalGasGenerator', + 'ManualGenerator', 'PetroleumGenerator', 'WoodBurner' + )] + batteries = [b for b in (buildings or []) if b.get('id') in ('Battery', 'JumboBattery', 'SmartBattery')] + + warnings = [] + if not generators: + warnings.append(("CRITICAL", "No power generators found! Build ManualGenerator or CoalGenerator")) + else: + powered_on = sum(1 for g in generators if g.get('isOperational')) + warnings.append(("INFO", f"Power: {len(generators)} generators ({powered_on} operational), {len(batteries)} batteries")) + + if coal < 5000 and any(g.get('id') == 'CoalGenerator' for g in generators): + warnings.append(("WARN", f"Coal low ({coal:.0f} kg) — diversify power")) + if hydrogen > 20000: + warnings.append(("INFO", f"Hydrogen stockpiled ({hydrogen:.0f} kg) — add generators")) + if natgas > 10000: + warnings.append(("INFO", f"Natural gas abundant ({natgas:.0f} kg)")) + + return warnings + + +def analyze_temp(): + from oni_api import api_get + data = api_get('/api/state/temperature/zones', auto_pause=False) + warnings = [] + if 'error' in data: + return warnings + avg = data.get('averageC', 0) + if avg > 50: + warnings.append(("CRITICAL", f"Overheating ({avg:.0f}°C)")) + elif avg > 35: + warnings.append(("WARN", f"High temperature ({avg:.0f}°C)")) + elif avg < -5: + warnings.append(("WARN", f"Too cold ({avg:.0f}°C)")) + if data.get('hotSpots'): + warnings.append(("WARN", f"{len(data['hotSpots'])} hot spots (>50°C)")) + if data.get('coldSpots'): + warnings.append(("WARN", f"{len(data['coldSpots'])} cold spots (<5°C)")) + return warnings + + +def analyze_water(resources): + r = as_dict(resources) + water = r.get('Water', {}).get('amount', 0) + pw = r.get('PollutedWater', {}).get('amount', 0) + sw = r.get('SaltWater', {}).get('amount', 0) + + total_water = water + pw + sw + warnings = [] + if total_water < 10000: + warnings.append(("WARN", f"Total water low ({total_water:.0f} kg across all sources)")) + elif total_water < 50000: + warnings.append(("INFO", f"Water reserves moderate ({total_water:.0f} kg)")) + if water < 10000 and pw > 10000: + warnings.append(("INFO", f"Filter polluted water ({pw:.0f} kg available)")) + + return warnings + + +def analyze_research(research): + if not isinstance(research, list): + return [] + warnings = [] + done = sum(1 for t in research if t.get('isComplete')) + total = len(research) + if done == 0 and total > 0: + warnings.append(("WARN", "No research completed! Start with Research Station")) + elif done < total * 0.3: + warnings.append(("INFO", f"Research progress: {done}/{total} ({done*100//total}%)")) + return warnings + + +def suggest_actions(warnings, alerts, buildings): + suggestions = [] + + has_electrolyzer = any(b.get('id') == 'Electrolyzer' for b in (buildings or [])) + has_lavatory = any(b.get('id') == 'Lavatory' for b in (buildings or [])) + has_sieve = any(b.get('id') == 'WaterSiever' for b in (buildings or [])) + + for sev, msg in warnings: + ml = msg.lower() + if 'oxygen' in ml: + suggestions.append("Build SPOM: Electrolyzer + Hydrogen Generator at a water source") + elif 'food' in ml and 'shortage' in ml: + suggestions.append("Build PlanterBoxes x5, plant Mealwood (no irrigation needed)") + elif 'food' in ml and 'declining' in ml: + suggestions.append("Expand farm or start hatch ranching (Hatch eats Sedimentary Rock)") + elif 'power' in ml and 'generator' in ml: + suggestions.append("Build ManualGenerator (early) or CoalGenerator (durable)") + elif 'coal' in ml: + suggestions.append("Diversify power: build HydrogenGenerator + SmartBattery") + elif 'hydrogen' in ml: + suggestions.append("Connect HydrogenGenerator to your hydrogen vent/SPOM") + elif 'water' in ml and 'low' in ml: + suggestions.append("Dig to find water geyser or filter polluted water") + elif 'heat' in ml or 'overheat' in ml: + suggestions.append("Build insulated tiles around heat sources; add cooling loop") + + if not has_lavatory: + suggestions.append("Build Lavatory + Water Sieve for renewable water loop") + if not has_electrolyzer: + suggestions.append("Plan SPOM once Algae < 5t or you have renewable water") + if not has_sieve and has_lavatory: + suggestions.append("Build Water Sieve to close the bathroom loop") + + return list(dict.fromkeys(suggestions)) + + +def print_report(state): + g = state.get('game', {}) + if 'error' in g: + print(f"[!] Cannot connect to game: {g['error']}") + return False + + resources = state.get('resources', []) + buildings = state.get('buildings', []) + alerts = state.get('alerts', []) + + all_warnings = [] + all_warnings += analyze_o2(resources, buildings) + all_warnings += analyze_food(resources, buildings) + all_warnings += analyze_power(resources, buildings) + all_warnings += analyze_temp() + all_warnings += analyze_water(resources) + all_warnings += analyze_research(state.get('research', [])) + + critical = [w for w in all_warnings if w[0] == 'CRITICAL'] + warns = [w for w in all_warnings if w[0] == 'WARN'] + infos = [w for w in all_warnings if w[0] == 'INFO'] + + suggestions = suggest_actions(all_warnings, alerts, buildings) + + print("=" * 56) + print(" ONI Analysis Report") + print("=" * 56) + print(f" Cycle: {g.get('cycle', '?')}") + print(f" Duplicants: {g.get('duplicantCount', '?')}") + print(f" World: {g.get('worldName', '?')}") + print(f" Grid: {g.get('gridWidth', '?')} x {g.get('gridHeight', '?')}") + print(f" Buildings: {len(buildings or [])}") + print(f" Critters: {len(state.get('critters', []) or [])}") + print(f" Geysers: {len(state.get('geysers', []) or [])}") + print(f" Plants: {len(state.get('plants', []) or [])}") + print(f" Rooms: {len(state.get('rooms', []) or [])}") + print(f" Research done: {sum(1 for t in (state.get('research') or []) if t.get('isComplete'))}/{len(state.get('research', []) or [])}") + print() + + if critical: + print(f" [CRITICAL] {len(critical)} issues — act immediately!") + for _, msg in critical: + print(f" ! {msg}") + print() + + if warns: + print(f" [WARN] {len(warns)} issues") + for _, msg in warns: + print(f" * {msg}") + print() + + if infos: + print(f" [INFO] {len(infos)} notes") + for _, msg in infos: + print(f" i {msg}") + print() + + if not all_warnings: + print(" Status: All stable") + print() + + if suggestions: + print(f" Suggestions ({len(suggestions)}):") + for s in suggestions: + print(f" -> {s}") + print() + + print(f" In-game alerts: {len(alerts) if isinstance(alerts, list) else 0}") + if isinstance(alerts, list): + for a in alerts: + print(f" [{a.get('severity', '?')}] {a.get('title', '?')}") + print("=" * 56) + + return True + + +if __name__ == '__main__': + state = get_game_state() + if not print_report(state): + sys.exit(1) diff --git a/tools/oni_api.py b/tools/oni_api.py new file mode 100644 index 0000000..13397e7 --- /dev/null +++ b/tools/oni_api.py @@ -0,0 +1,1540 @@ +import json +import os +import sys +import inspect +import urllib.request +import urllib.error + +CONFIG_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'config.json') + +# Auto-pause control +AUTO_PAUSE_ENABLED = True +"""When True, api_get and api_post auto-pause game before executing. +Set to False for event daemon polling (lightweight, frequent checks).""" + +def load_config(): + with open(CONFIG_PATH) as f: + return json.load(f) + +def api_url(endpoint): + cfg = load_config() + return f"http://{cfg['modHost']}:{cfg['modPort']}{endpoint}" + +def _auto_pause(): + """Auto-pause the game before any AI operation, ensuring data freshness.""" + if not AUTO_PAUSE_ENABLED: + return + try: + cfg = load_config() + url = f"http://{cfg['modHost']}:{cfg['modPort']}/api/action/pause" + req = urllib.request.Request(url, data=b'{}', headers={'Content-Type': 'application/json'}, method='POST') + with urllib.request.urlopen(req, timeout=3): + pass + except: + pass + +def api_get(endpoint, auto_pause=True): + if auto_pause and AUTO_PAUSE_ENABLED: + _auto_pause() + url = api_url(endpoint) + cfg = load_config() + try: + req = urllib.request.Request(url, method='GET') + with urllib.request.urlopen(req, timeout=cfg['timeout']) as resp: + return json.loads(resp.read().decode()) + except urllib.error.URLError as e: + return {"error": str(e)} + +def api_post(endpoint, data, auto_pause=True): + if auto_pause and AUTO_PAUSE_ENABLED: + _auto_pause() + url = api_url(endpoint) + cfg = load_config() + try: + req = urllib.request.Request( + url, data=json.dumps(data).encode(), + headers={'Content-Type': 'application/json'}, + method='POST' + ) + with urllib.request.urlopen(req, timeout=cfg['timeout']) as resp: + return json.loads(resp.read().decode()) + except urllib.error.URLError as e: + return {"error": str(e)} + +# --------------------------------------------------------------------------- +# Command implementations +# --------------------------------------------------------------------------- + +def cmd_health(*args): + print(json.dumps(api_get('/health'), indent=2, ensure_ascii=False)) + +def cmd_status(): + game = api_get('/api/state/game') + resources = api_get('/api/state/resources') + dups = api_get('/api/state/duplicants') + alerts = api_get('/api/state/alert') + + if 'error' in game: + print(f"Error: {game['error']}") + return + + print("=== Game ===") + print(f" Cycle: {game.get('cycle', '?')}") + print(f" Duplicants: {game.get('duplicantCount', '?')}") + print(f" World: {game.get('worldName', '?')}") + print(f" Grid: {game.get('gridWidth', '?')} x {game.get('gridHeight', '?')}") + + print("\n=== Resources (top 15) ===") + if isinstance(resources, list): + for r in sorted(resources, key=lambda x: x.get('amount', 0), reverse=True)[:15]: + state_mark = {'solid': '■', 'liquid': '≈', 'gas': '◌', 'vacuum': ' '}.get(r.get('state', ''), '?') + cat = r.get('category', '') + print(f" {state_mark} {r.get('name', '?'):20s} {r.get('amount', 0):>10.1f} kg [{cat}]") + + print("\n=== Duplicants ===") + if isinstance(dups, list): + for d in dups: + chore = d.get('currentChore', '?').replace('Chore', '') + print(f" {d.get('name'):12s} at ({d.get('x', '?'):3d},{d.get('y', '?'):3d}) " + f"stress={d.get('stress', 0):.0f}% food={d.get('calories', 0)/1000:.0f} kcal " + f"doing={chore}") + + print("\n=== Alerts ===") + if isinstance(alerts, list): + if alerts: + for a in alerts: + print(f" [{a.get('severity', '?')}] {a.get('title', '?')}: {a.get('message', '')}") + else: + print(" (none)") + +def cmd_resources(): + data = api_get('/api/state/resources') + if isinstance(data, list): + for r in sorted(data, key=lambda x: x.get('amount', 0), reverse=True): + state_mark = {'solid': '■', 'liquid': '≈', 'gas': '◌'}.get(r.get('state', ''), ' ') + print(f"{state_mark} {r.get('name', '?'):25s} {r.get('amount', 0):>12.1f} kg {r.get('state', '?'):8s} [{r.get('category', '?')}]") + else: + print(json.dumps(data, indent=2, ensure_ascii=False)) + +def cmd_duplicants(): + data = api_get('/api/state/duplicants') + if isinstance(data, list): + for d in data: + print(f" Name: {d.get('name', '?')}") + print(f" Cell: ({d.get('x', '?')}, {d.get('y', '?')})") + print(f" Stress: {d.get('stress', 0):.1f}%") + print(f" Food: {d.get('calories', 0)/1000:.0f} kcal") + print(f" Stamina: {d.get('stamina', 0):.0f}%") + print(f" Oxygen: {d.get('oxygen', 0):.0f}%") + print(f" Chore: {d.get('currentChore', '?')}") + print() + else: + print(json.dumps(data, indent=2, ensure_ascii=False)) + +def cmd_buildings(): + data = api_get('/api/state/buildings') + if isinstance(data, list): + cats = {} + for b in data: + cat = b.get('category', 'Other') + if cat not in cats: + cats[cat] = [] + cats[cat].append(b) + for cat, blist in sorted(cats.items()): + print(f"[{cat}] ({len(blist)})") + for b in blist: + op = 'ON' if b.get('isOperational') else 'OFF' + pw = f" {b.get('powerWatt', 0)}W" if b.get('powerWatt', 0) > 0 else '' + print(f" {b.get('name', '?'):25s} at ({b.get('x', '?')},{b.get('y', '?')}) [{op}]{pw}") + print() + else: + print(json.dumps(data, indent=2, ensure_ascii=False)) + +def cmd_research(): + data = api_get('/api/state/research') + if isinstance(data, list): + for t in data: + status = "DONE" if t.get('isComplete') else f"{t.get('progress', 0)*100:.0f}%" + print(f" {t.get('name', '?'):25s} [{status:5s}] ({t.get('category', '?')})") + else: + print(json.dumps(data, indent=2, ensure_ascii=False)) + +def cmd_geysers(): + data = api_get('/api/state/geysers') + if isinstance(data, list): + for g in data: + print(f" {g.get('name', '?'):25s} at ({g.get('x', '?')}, {g.get('y', '?')}) " + f"state={g.get('state', '?'):8s} rate={g.get('emitRate', 0):.1f} g/s") + else: + print(json.dumps(data, indent=2, ensure_ascii=False)) + +def cmd_critters(): + data = api_get('/api/state/critters') + if isinstance(data, list): + for c in data: + print(f" {c.get('name', '?'):20s} ({c.get('species', '?')}) at ({c.get('x', '?')},{c.get('y', '?')}) " + f"age={c.get('age', 0):.1f} happy={c.get('happiness', 0)}") + else: + print(json.dumps(data, indent=2, ensure_ascii=False)) + +def cmd_plants(): + data = api_get('/api/state/plants') + if isinstance(data, list): + for p in data: + grown = "GROWN" if p.get('isGrown') else f"{p.get('progress', 0)*100:.0f}%" + wilt = " WILT" if p.get('isWilting') else "" + print(f" {p.get('name', '?'):25s} at ({p.get('x', '?')},{p.get('y', '?')}) [{grown}]{wilt}") + else: + print(json.dumps(data, indent=2, ensure_ascii=False)) + +def cmd_rooms(): + data = api_get('/api/state/rooms') + if isinstance(data, list): + for r in data: + print(f" {r.get('name', '?'):25s} cells={r.get('cellCount', 0):4d} " + f"buildings={r.get('buildings', 0)} creatures={r.get('creatures', 0)} plants={r.get('plants', 0)}") + else: + print(json.dumps(data, indent=2, ensure_ascii=False)) + +def cmd_cell(args): + if len(args) < 2: + print("Usage: cell ") + return + data = api_get(f"/api/state/cell?x={args[0]}&y={args[1]}") + if 'error' in data: + print(f"Error: {data['error']}") + return + print(f"Cell ({data.get('x', '?')}, {data.get('y', '?')}) [{data.get('cell', '?')}]") + print(f" Element: {data.get('element', '?')} ({data.get('elementState', '?')})") + print(f" Mass: {data.get('massKg', 0):.1f} kg") + print(f" Temp: {data.get('temperatureC', 0):.1f} °C") + print(f" Building: {data.get('buildingName', 'none')}") + print(f" Duplicant: {data.get('duplicantName', 'none')}") + print(f" Pressure: {data.get('pressure', 0):.3f} kg") + print(f" Visible: {data.get('isVisible', False)}") + +def cmd_cells(args): + if len(args) < 4: + print("Usage: cells ") + return + data = api_get(f"/api/state/cells?x={args[0]}&y={args[1]}&width={args[2]}&height={args[3]}") + if 'error' in data: + print(f"Error: {data['error']}") + return + region = data.get('region', {}) + cells = data.get('cells', []) + print(f"Region ({region.get('x', '?')},{region.get('y', '?')}) {region.get('width', '?')}x{region.get('height', '?')} ({len(cells)} cells)") + print() + # Print as a grid + grid = {} + for c in cells: + key = (c.get('x'), c.get('y')) + grid[key] = c + rx, ry = region.get('x', 0), region.get('y', 0) + rw, rh = region.get('width', 0), region.get('height', 0) + # Header row + header = " " + for cx in range(rx, rx + rw): + header += f"{cx % 10} " + print(header) + for cy in range(ry + rh - 1, ry - 1, -1): + row = f"{cy:3d} " + for cx in range(rx, rx + rw): + c = grid.get((cx, cy)) + if c is None: + row += " " + elif c.get('isVacuum'): + row += " " + elif c.get('hasDuplicant'): + row += "D " + elif c.get('hasBuilding'): + row += "B " + elif c.get('isLiquid'): + row += "~ " + elif c.get('isGas'): + row += ". " + elif c.get('isSolid'): + row += "# " + else: + row += " " + print(row) + +def cmd_cell_slice(args): + if len(args) < 2: + print("Usage: slice [start] [end]") + return + axis = args[0] + index = args[1] + start = args[2] if len(args) > 2 else "0" + end = args[3] if len(args) > 3 else "100" + data = api_get(f"/api/state/cells/slice?axis={axis}&index={index}&start={start}&end={end}") + if 'error' in data: + print(f"Error: {data['error']}") + return + for c in data.get('cells', []): + state = "VAC" if c.get('isVacuum') else c.get('element', '?') + building = f" [{c.get('buildingName', '')}]" if c.get('hasBuilding') else "" + print(f" ({c.get('x', '?')},{c.get('y', '?')}) {state:15s} {c.get('temperatureC', 0):6.1f}°C {c.get('massKg', 0):8.1f}kg{building}") + +def cmd_gas(args): + if len(args) < 2: + print("Usage: gas [radius]") + return + x, y = args[0], args[1] + radius = args[2] if len(args) > 2 else "20" + data = api_get(f"/api/state/gas?x={x}&y={y}&radius={radius}") + if 'error' in data: + print(f"Error: {data['error']}") + return + print(f"Gas analysis at ({x},{y}) radius={radius}") + for g in data.get('gases', []): + print(f" {g.get('gas', '?'):25s} {g.get('mass', 0):10.1f} kg ({g.get('count', 0)} cells)") + +def cmd_registry(args): + if len(args) < 1: + print("Usage: registry [filter]") + return + kind = args[0] + filt = args[1].lower() if len(args) > 1 else "" + data = api_get(f"/api/registry/{kind}") + if isinstance(data, list): + count = 0 + for item in data: + name = item.get('name', item.get('id', '?')) + item_id = item.get('id', '') + if filt and filt not in name.lower() and filt not in item_id.lower(): + continue + count += 1 + if kind == 'buildings': + print(f" {item_id:35s} {item.get('name', '?'):30s} {item.get('width', 1)}x{item.get('height', 1)} {item.get('powerCost', 0)}W") + elif kind == 'elements': + print(f" {item_id:25s} {item.get('name', '?'):20s} {item.get('state', '?'):7s} [{item.get('category', '?')}]") + elif kind == 'techs': + status = "DONE" if item.get('isComplete') else "PENDING" + unlocks = ', '.join(item.get('unlockedBuildings', [])[:5]) + print(f" {item_id:30s} {item.get('name', '?'):25s} [{status}] -> {unlocks}") + print(f"\n Total: {count} matches") + else: + print(json.dumps(data, indent=2, ensure_ascii=False)) + +def cmd_dig(args): + if len(args) < 4: + print("Usage: dig ") + return + result = api_post('/api/action/dig', { + "x": int(args[0]), "y": int(args[1]), + "width": int(args[2]), "height": int(args[3]) + }) + print(json.dumps(result, indent=2, ensure_ascii=False)) + +def cmd_build(args): + if len(args) < 3: + print("Usage: build [rotation]") + return + data = {"buildingId": args[0], "x": int(args[1]), "y": int(args[2])} + if len(args) >= 4: + data["rotation"] = args[3] + result = api_post('/api/action/build', data) + print(json.dumps(result, indent=2, ensure_ascii=False)) + +def cmd_deconstruct(args): + if len(args) < 3: + print("Usage: deconstruct ") + return + result = api_post('/api/action/deconstruct', { + "buildingId": args[0], "x": int(args[1]), "y": int(args[2]) + }) + print(json.dumps(result, indent=2, ensure_ascii=False)) + +def cmd_prioritize(args): + if len(args) < 3: + print("Usage: prioritize ") + return + result = api_post('/api/action/prioritize', { + "x": int(args[0]), "y": int(args[1]), "priority": int(args[2]) + }) + print(json.dumps(result, indent=2, ensure_ascii=False)) + +def cmd_research_select(args): + if len(args) < 1: + print("Usage: research_select ") + return + result = api_post('/api/action/research', {"techId": args[0]}) + print(json.dumps(result, indent=2, ensure_ascii=False)) + +def cmd_mop(args): + if len(args) < 2: + print("Usage: mop ") + return + result = api_post('/api/action/mop', {"x": int(args[0]), "y": int(args[1])}) + print(json.dumps(result, indent=2, ensure_ascii=False)) + +def cmd_harvest(args): + if len(args) < 2: + print("Usage: harvest ") + return + result = api_post('/api/action/harvest', {"x": int(args[0]), "y": int(args[1])}) + print(json.dumps(result, indent=2, ensure_ascii=False)) + +# --------------------------------------------------------------------------- +# Event / Queue / Batch / Priority +# --------------------------------------------------------------------------- + +def cmd_events(args): + """Poll game events. Usage: events [since] [limit]""" + since = args[0] if len(args) > 0 else "0" + limit = args[1] if len(args) > 1 else "50" + data = api_get(f"/api/state/events?since={since}&limit={limit}") + if 'error' in data: + print(f"Error: {data['error']}") + return + events = data.get('events', []) + next_seq = data.get('next_seq', 0) + has_more = data.get('has_more', False) + + if not events: + print("No new events.") + print(f"Next sequence: {next_seq}") + return + + print(f"Events ({len(events)} new, next_seq={next_seq}, has_more={has_more}):") + print() + for e in events: + severity = e.get('severity', '?') + sev_mark = {'critical': '!!!', 'warning': '!!', 'info': 'i'}.get(severity.lower(), '?') + cat = e.get('category', '?') + title = e.get('title', '?') + msg = e.get('message', '') + cycle = e.get('cycle', '?') + entity = e.get('entity', '') + cell = e.get('cell', '') + print(f" [{sev_mark}] ({cycle}) {title}") + if msg: + print(f" {msg}") + if entity: + print(f" entity: {entity}") + if isinstance(cell, int) and cell >= 0: + print(f" cell index: {cell}") + print() + +def cmd_queue(args): + """View pending task queue. Usage: queue [batch_id]""" + params = "" + if args: + params = f"?batch_id={args[0]}" + data = api_get(f"/api/state/queue{params}") + if 'error' in data: + print(f"Error: {data['error']}") + return + print(f"Task Queue:") + print(f" Length: {data.get('queue_length', '?')}") + print(f" Batch ID: {data.get('batch_id', 'none')}") + for t in data.get('tasks', []): + print(f" - {t.get('type', '?')}: {t.get('value', '?')}") + +def cmd_batch(args): + """Execute a batch of actions. Usage: batch """ + if not args: + print("Usage: batch ") + print(" JSON format: { \"actions\": [ { \"type\": \"build|dig|...\", ... } ] }") + return + try: + with open(args[0]) as f: + plan = json.load(f) + except Exception as e: + print(f"Error reading file: {e}") + return + + result = api_post('/api/action/batch', plan) + if 'error' in result: + print(f"Error: {result['error']}") + return + + print(f"Batch: {result.get('batchId', '?')}") + print(f" Total: {result.get('total', 0)}") + print(f" OK: {result.get('successCount', 0)}") + print(f" Failed: {result.get('failCount', 0)}") + print(f" Summary: {result.get('summary', '?')}") + print() + + for action in result.get('actions', []): + status = 'OK' if action.get('success') else 'FAIL' + result_type = action.get('result', '?') + error = action.get('error', '') + err_msg = action.get('errorMessage', '') + suggestion = action.get('suggestion', '') + + print(f" [{status}] {result_type}") + if error: + print(f" error: {error}") + if err_msg: + print(f" msg: {err_msg}") + if suggestion: + print(f" -> {suggestion}") + print() + +def cmd_priority_global(args): + """Set global priority. Usage: priority_global """ + if len(args) < 2: + print("Usage: priority_global ") + print(" target: 'dig', 'build', 'clear', or 'all'") + print(" priority: 1 (lowest) to 9 (emergency)") + return + result = api_post('/api/action/priority_global', { + "target": args[0], + "priority": int(args[1]) + }) + _print_feedback(result) + +def cmd_priority_type(args): + """Set priority for a building type. Usage: priority_type """ + if len(args) < 2: + print("Usage: priority_type ") + return + result = api_post('/api/action/priority_type', { + "buildingType": args[0], + "priority": int(args[1]) + }) + _print_feedback(result) + +def cmd_pause(args): + """Pause the game. Usage: pause [reason]""" + reason = ' '.join(args) if args else 'AI operation in progress' + result = api_post('/api/action/pause', {} if not args else {"reason": reason}) + _print_feedback(result) + +def cmd_unpause(args): + """Unpause the game. Usage: unpause [speed]""" + speed = int(args[0]) if args else 1 + result = api_post('/api/action/unpause', {"speed": speed}) + _print_feedback(result) + +def cmd_speed(args): + """Set game speed. Usage: speed <1|2|3>""" + if not args: + print("Usage: speed <1|2|3>") + return + speed = int(args[0]) + if speed < 1 or speed > 3: + print("Speed must be 1, 2, or 3") + return + result = api_post('/api/action/speed', {"speed": speed}) + _print_feedback(result) + +# --------------------------------------------------------------------------- +# Save / Load +# --------------------------------------------------------------------------- + +def cmd_saves(args): + """List saves. Usage: saves""" + data = api_get('/api/state/saves') + if 'error' in data: + print(f"Error: {data['error']}") + return + for s in data.get('saves', []): + print(f" {s.get('name', '?'):40s} {s.get('size', 0)/1024:.0f} KB") + +def cmd_save(args): + """Save game. Usage: save [name]""" + name = ' '.join(args) if args else None + result = api_post('/api/action/save', {"name": name} if name else {}) + _print_feedback(result) + +def cmd_save_as(args): + """Save with specific name. Usage: save_as """ + if not args: + print("Usage: save_as ") + return + result = api_post('/api/action/save_as', {"name": ' '.join(args)}) + _print_feedback(result) + +def cmd_load(args): + """Load a save. Usage: load """ + if not args: + print("Usage: load ") + return + name = ' '.join(args) + print(f"[!] Loading save '{name}' — game will restart!") + result = api_post('/api/action/load', {"name": name}) + _print_feedback(result) + +# --------------------------------------------------------------------------- +# Power Grid +# --------------------------------------------------------------------------- + +def cmd_power(args): + """Analyze power grid. Usage: power""" + data = api_get('/api/state/power') + if 'error' in data: + print(f"Error: {data['error']}") + return + print(f"Power Grid — {data.get('circuitCount', 0)} circuits") + print() + for c in data.get('circuits', []): + overload = " *** OVERLOAD ***" if c.get('isOverloaded') else "" + print(f" Circuit {c.get('id', '?')}: {c.get('wattsUsed', 0):.0f}W / {c.get('maxWatts', 0):.0f}W used{overload}") + print() + print(f"Generators ({len(data.get('generators', []))}):") + for g in data.get('generators', []): + status = 'ON' if g.get('isActive') else 'OFF' + print(f" {g.get('name', '?'):25s} {g.get('watts', 0):.0f}W [{status}]") + +# --------------------------------------------------------------------------- +# Pipes +# --------------------------------------------------------------------------- + +def cmd_pipes(args): + """Inspect pipe contents. Usage: pipes [gas|liquid]""" + ptype = args[0] if args else 'all' + if ptype not in ('gas', 'liquid', 'all'): + print("Usage: pipes [gas|liquid|all]") + return + data = api_get(f"/api/state/pipes?type={ptype}") + if 'error' in data: + print(f"Error: {data['error']}") + return + print(f"Pipe Contents ({data.get('pipeType', '?')}): {data.get('segmentCount', 0)} segments") + for s in data.get('segments', [])[:20]: + t = s.get('type', '?') + el = s.get('element', '?') + m = s.get('mass', 0) + temp = s.get('temperature', 0) + print(f" [{t}] {el:20s} {m:8.1f} kg {temp:6.1f} K") + +# --------------------------------------------------------------------------- +# CO2 +# --------------------------------------------------------------------------- + +def cmd_co2(args): + """Find CO2 pockets. Usage: co2""" + data = api_get('/api/state/co2') + if 'error' in data: + print(f"Error: {data['error']}") + return + print(f"CO2 Pockets: {data.get('pocketCount', 0)} Total: {data.get('totalMassKg', 0):.0f} kg") + for p in data.get('pockets', [])[:10]: + print(f" ({p.get('x', '?')},{p.get('y', '?')}) {p.get('mass', 0):.1f} kg {p.get('temp', 0):.0f}°C") + +# --------------------------------------------------------------------------- +# Temperature +# --------------------------------------------------------------------------- + +def cmd_temp_zones(args): + """Analyze temperature zones. Usage: temp_zones""" + data = api_get('/api/state/temperature/zones') + if 'error' in data: + print(f"Error: {data['error']}") + return + print(f"Temperature Analysis:") + print(f" Average: {data.get('averageC', 0):.0f}°C") + print(f" Min: {data.get('minC', 0):.0f}°C") + print(f" Max: {data.get('maxC', 0):.0f}°C") + print(f" Samples: {data.get('sampleCount', 0)}") + print() + hotspots = data.get('hotSpots', []) + if hotspots: + print(f"Hot spots (>50°C):") + for h in hotspots: + print(f" ({h.get('x', '?')},{h.get('y', '?')}) {h.get('tempC', 0):.0f}°C") + coldspots = data.get('coldSpots', []) + if coldspots: + print(f"Cold spots (<5°C):") + for c in coldspots: + print(f" ({c.get('x', '?')},{c.get('y', '?')}) {c.get('tempC', 0):.0f}°C") + +# --------------------------------------------------------------------------- +# Morale +# --------------------------------------------------------------------------- + +def cmd_morale(args): + """Check morale. Usage: morale""" + data = api_get('/api/state/morale') + if 'error' in data: + print(f"Error: {data['error']}") + return + for m in data if isinstance(data, list) else []: + print(f" {m.get('name', '?'):12s} morale={m.get('morale', 0):.0f} qol={m.get('qualityOfLife', 0):.0f}") + +# --------------------------------------------------------------------------- +# Diseases +# --------------------------------------------------------------------------- + +def cmd_diseases(args): + """Check disease status. Usage: diseases""" + data = api_get('/api/state/diseases') + if 'error' in data: + print(f"Error: {data['error']}") + return + infected = data.get('infectedDuplicants', []) + if infected: + print(f"Infected dupes: {len(infected)}") + for d in infected: + print(f" {d.get('duplicant', '?')} - {d.get('disease', '?')} ({d.get('severity', '?')})") + else: + print("No infected duplicants.") + germs = data.get('environmentGerms', {}) + if germs: + print(f"Environmental germs:") + for name, count in sorted(germs.items(), key=lambda x: -x[1])[:5]: + print(f" {name}: {count:.0f}") + +# --------------------------------------------------------------------------- +# Storage +# --------------------------------------------------------------------------- + +def cmd_storage(args): + """Check storage. Usage: storage""" + data = api_get('/api/state/storage') + if 'error' in data: + print(f"Error: {data['error']}") + return + print(f"Storage buildings: {data.get('storageCount', 0)}") + for s in data.get('storages', [])[:10]: + print(f" {s.get('building', '?'):25s} ({s.get('x', '?')},{s.get('y', '?')}) " + f"{s.get('totalMass', 0):.0f}/{s.get('capacity', 0):.0f} kg") + +# --------------------------------------------------------------------------- +# Skills / Job +# --------------------------------------------------------------------------- + +def cmd_skills(args): + """Show duplicant skills. Usage: skills""" + data = api_get('/api/state/duplicants/skills') + if 'error' in data: + print(f"Error: {data['error']}") + return + for d in data if isinstance(data, list) else []: + print(f" {d.get('name', '?'):12s} skill_pts={d.get('skillPoints', 0)} total_pts={d.get('totalSkillPointsGained', 0)}") + for a in d.get('attributes', [])[:5]: + print(f" {a.get('name', '?'):15s} = {a.get('value', 0)}") + +def cmd_assign_job(args): + """Assign dupe to a job. Usage: assign_job """ + if len(args) < 2: + print("Usage: assign_job ") + print(" chore groups: Build, Dig, Cook, Farm, Ranch, Operate, Research, Store, Tidy, LifeSupport") + return + result = api_post('/api/action/assign_job', { + "duplicantId": args[0], + "choreGroup": args[1] + }) + _print_feedback(result) + +# --------------------------------------------------------------------------- +# Pipe / Wire Lines +# --------------------------------------------------------------------------- + +def cmd_build_pipe_line(args): + """Build a pipe line with crossing mode. Usage: build_pipe_line [mode]""" + if len(args) < 5: + print("Usage: build_pipe_line gas|liquid [mode]") + print(" mode: 'line' (default, auto-merge), 'cross' (use bridges at intersections), 'single' (one segment)") + return + ptype = args[0] + x1, y1, x2, y2 = int(args[1]), int(args[2]), int(args[3]), int(args[4]) + mode = args[5] if len(args) > 5 else 'line' + + if mode not in ('line', 'cross', 'single'): + print("[!] mode must be 'line', 'cross', or 'single'") + return + + result = api_post('/api/action/build_pipe', { + "type": ptype, "x1": x1, "y1": y1, + "x2": x2, "y2": y2, "mode": mode + }) + if result.get('success'): + d = result.get('data', {}) + segs = d.get('segmentCount', 0) + bridges = d.get('bridgesPlaced', 0) + xing = sum(1 for s in d.get('segments', []) if s.get('crossing')) + print(f"[OK] {ptype} pipe: {segs} segments, {bridges} bridges, {xing} crossings handled") + if xing > 0: + print(f" Mode '{mode}': {'bridges used at crossings' if mode == 'cross' else 'merged at crossings'}") + else: + _print_feedback(result) + +def cmd_build_wire_line(args): + """Build a wire line with crossing mode. Usage: build_wire_line [mode]""" + if len(args) < 5: + print("Usage: build_wire_line regular|heavy|conductive [mode]") + print(" mode: 'line' (default, auto-merge), 'cross' (use bridges at intersections), 'single' (one segment)") + return + wtype = args[0] + x1, y1, x2, y2 = int(args[1]), int(args[2]), int(args[3]), int(args[4]) + mode = args[5] if len(args) > 5 else 'line' + + if mode not in ('line', 'cross', 'single'): + print("[!] mode must be 'line', 'cross', or 'single'") + return + + result = api_post('/api/action/build_wire', { + "type": wtype, "x1": x1, "y1": y1, + "x2": x2, "y2": y2, "mode": mode + }) + if result.get('success'): + d = result.get('data', {}) + segs = d.get('segmentCount', 0) + bridges = d.get('bridgesPlaced', 0) + xing = sum(1 for s in d.get('segments', []) if s.get('crossing')) + print(f"[OK] {wtype} wire: {segs} segments, {bridges} bridges, {xing} crossings handled") + else: + _print_feedback(result) + +def _print_feedback(result): + """Pretty-print action feedback.""" + if result.get('success'): + print(f"OK: {result.get('result', 'done')}") + for k, v in result.get('data', {}).items(): + print(f" {k}: {v}") + else: + print(f"FAIL: {result.get('error', 'unknown_error')}") + print(f" {result.get('errorMessage', '')}") + sug = result.get('suggestion') + if sug: + print(f" -> {sug}") + +# --------------------------------------------------------------------------- +# Buildable / Research / Building Interaction +# --------------------------------------------------------------------------- + +def cmd_buildable(args): + """List all buildable buildings. Usage: buildable [filter]""" + filt = args[0].lower() if args else "" + data = api_get('/api/state/buildable') + if 'error' in data: + print(f"Error: {data['error']}") + return + total = data.get('total', 0) + unlocked = data.get('unlocked', 0) + print(f"Buildings: {unlocked}/{total} unlocked") + print() + for b in data.get('buildings', []): + name = b.get('name', '?') + bid = b.get('id', '') + if filt and filt not in name.lower() and filt not in bid.lower(): + continue + mark = "✓" if b.get('unlocked') else "✗" + cat = b.get('category', '?') + pw = f" {b.get('powerCost', 0)}W" if b.get('powerCost', 0) > 0 else "" + print(f" [{mark}] {name:30s} {bid:30s} {cat:15s}{pw}") + +def cmd_toggle(args): + """Toggle building on/off. Usage: toggle """ + if len(args) < 2: + print("Usage: toggle ") + return + result = api_post('/api/action/toggle', {"x": int(args[0]), "y": int(args[1])}) + _print_feedback(result) + +def cmd_set_recipe(args): + """Set a building's recipe. Usage: set_recipe """ + if len(args) < 3: + print("Usage: set_recipe ") + return + result = api_post('/api/action/set_recipe', { + "x": int(args[0]), "y": int(args[1]), "recipeId": args[2] + }) + _print_feedback(result) + +def cmd_empty(args): + """Empty a building's storage. Usage: empty """ + if len(args) < 2: + print("Usage: empty ") + return + result = api_post('/api/action/empty', {"x": int(args[0]), "y": int(args[1])}) + _print_feedback(result) + +def cmd_cancel_errand(args): + """Cancel errands at a building. Usage: cancel_errand """ + if len(args) < 2: + print("Usage: cancel_errand ") + return + result = api_post('/api/action/cancel_errand', {"x": int(args[0]), "y": int(args[1])}) + _print_feedback(result) + +# --------------------------------------------------------------------------- +# Research Enhancements +# --------------------------------------------------------------------------- + +def cmd_research_detail(args): + """Detailed research status. Usage: research_detail""" + data = api_get('/api/state/research/detail') + if 'error' in data: + print(f"Error: {data['error']}") + return + print("=== Research Status ===") + print(f" Research Station: {'✓' if data.get('researchStationOperational') else '✗'} " + f"(built={data.get('hasResearchStation', False)})") + print(f" Super Computer: {'✓' if data.get('hasSuperComputer') else '✗'}") + active = data.get('activeResearch', []) + if active: + for a in active: + print(f" Active: {a.get('name', '?')} ({a.get('progress', 0)*100:.0f}%)") + else: + print(f" Active: none {'[all complete]' if data.get('researchComplete') else '[idle]'}") + stations = data.get('stations', []) + if stations: + print(f" Stations: {len(stations)}") + for s in stations: + op = 'ON' if s.get('isOperational') else 'OFF' + print(f" {s.get('name', '?')} at ({s.get('x', '?')},{s.get('y', '?')}) [{op}]") + +def cmd_research_cancel(args): + """Cancel research. Usage: research_cancel [techId]""" + payload = {"techId": args[0]} if args else {} + result = api_post('/api/action/research_cancel', payload) + _print_feedback(result) + +# --------------------------------------------------------------------------- +# Building Detail +# --------------------------------------------------------------------------- + +def cmd_building_detail(args): + """Detailed info about a building. Usage: building_detail """ + if len(args) < 2: + print("Usage: building_detail ") + return + data = api_get(f"/api/state/building_detail?x={args[0]}&y={args[1]}") + if 'error' in data: + print(f"Error: {data['error']}") + return + print(f"Building: {data.get('name', '?')} ({data.get('id', '?')})") + print(f" Position: ({data.get('x', '?')},{data.get('y', '?')}) size={data.get('width')}x{data.get('height')}") + print(f" Operational: {'ON' if data.get('isOperational') else 'OFF'}") + print(f" Powered: {'YES' if data.get('isPowered') else 'NO'} {data.get('powerWatt', 0)}W") + print(f" Health: {data.get('health', '?')}/{data.get('maxHealth', '?')}") + storage = data.get('storageItems', []) + if storage: + print(f" Storage: {data.get('storageMass', 0):.0f}/{data.get('storageCapacity', 0):.0f} kg") + for s in storage[:5]: + print(f" {s.get('name', '?')}: {s.get('mass', 0):.1f} kg") + print(f" Automation: {'YES' if data.get('hasAutomation') else 'NO'}") + print(f" Materials: {', '.join(data.get('material', []))}") + +def cmd_set_building_priority(args): + """Set a building's priority. Usage: set_building_priority """ + if len(args) < 3: + print("Usage: set_building_priority ") + return + result = api_post('/api/action/set_building_priority', { + "x": int(args[0]), "y": int(args[1]), "priority": int(args[2]) + }) + _print_feedback(result) + +def cmd_set_automation(args): + """Toggle automation on a building. Usage: set_automation """ + if len(args) < 3: + print("Usage: set_automation ") + return + enabled = args[2].lower() in ('on', 'true', '1', 'yes') + result = api_post('/api/action/set_automation', { + "x": int(args[0]), "y": int(args[1]), "enabled": enabled + }) + _print_feedback(result) + +# --------------------------------------------------------------------------- +# Printing Pod +# --------------------------------------------------------------------------- + +def cmd_printing_pod(args): + """Check Printing Pod status. Usage: printing_pod""" + data = api_get('/api/state/printing_pod') + if 'error' in data: + print(f"Error: {data['error']}") + return + if data.get('isReady'): + print("=== Printing Pod: READY ===") + print(f" Options available:") + for opt in data.get('options', []): + print(f" [{opt.get('index')}] {opt.get('description', '?')} ({opt.get('type', '?')})") + print() + print(" Select with: python3 tools/oni_api.py printing_pod_select <0|1|2>") + else: + cycles = data.get('cyclesUntilNext', 0) + if cycles > 0: + print(f"Printing Pod: not ready ({cycles:.1f} cycles remaining)") + else: + print("Printing Pod: checking...") + +def cmd_printing_pod_select(args): + """Select a Printing Pod option. Usage: printing_pod_select <0|1|2>""" + if not args: + print("Usage: printing_pod_select <0|1|2>") + return + index = int(args[0]) + if index < 0 or index > 2: + print("Index must be 0, 1, or 2") + return + result = api_post('/api/action/printing_pod_select', {"index": index}) + _print_feedback(result) + +# --------------------------------------------------------------------------- +# Atmo Suits / Critter Attack / Door Control +# --------------------------------------------------------------------------- + +def cmd_atmo_suits(args): + """Check atmo suit docks. Usage: atmo_suits""" + data = api_get('/api/state/atmo_suits') + if 'error' in data: + print(f"Error: {data['error']}") + return + print(f"Atmo Suit Docks: {data.get('dockCount', 0)}") + has = data.get('hasAtmoSuits', False) + print(f"Has suits available: {'YES' if has else 'NO'}") + for d in data.get('docks', []): + suit = "HAS SUIT" if d.get('hasSuit') else "empty" + o2 = d.get('o2Level', 0) + print(f" {d.get('name', '?'):20s} at ({d.get('x', '?')},{d.get('y', '?')}) " + f"{suit:10s} O2={o2:.0f} {'ON' if d.get('isOperational') else 'OFF'}") + +def cmd_critter_attack(args): + """Toggle critter attack. Usage: critter_attack """ + if len(args) < 2: + print("Usage: critter_attack ") + return + result = api_post('/api/action/critter_attack', {"x": int(args[0]), "y": int(args[1])}) + _print_feedback(result) + +def cmd_door_lock(args): + """Lock/unlock a door. Usage: door_lock """ + if len(args) < 3: + print("Usage: door_lock ") + return + locked = args[2].lower() in ('on', 'true', '1', 'lock', 'locked', 'yes') + result = api_post('/api/action/door_lock', { + "x": int(args[0]), "y": int(args[1]), "locked": locked + }) + _print_feedback(result) + +def cmd_door_one_way(args): + """Set door one-way. Usage: door_one_way """ + if len(args) < 3: + print("Usage: door_one_way ") + return + result = api_post('/api/action/door_one_way', { + "x": int(args[0]), "y": int(args[1]), "direction": args[2] + }) + _print_feedback(result) + +# --------------------------------------------------------------------------- +# Dupe / Critter / Plant / Sensor / Storage / Sweep / Disinfect +# --------------------------------------------------------------------------- + +def cmd_dupe_move(args): + """Move a duplicant. Usage: dupe_move """ + if len(args) < 3: + print("Usage: dupe_move ") + return + result = api_post('/api/action/dupe_move', { + "duplicantId": args[0], "x": int(args[1]), "y": int(args[2]) + }) + _print_feedback(result) + +def cmd_dupe_cancel_task(args): + """Cancel a dupe's current task. Usage: dupe_cancel_task """ + if not args: + print("Usage: dupe_cancel_task ") + return + result = api_post('/api/action/dupe_cancel_task', {"duplicantId": args[0]}) + _print_feedback(result) + +def cmd_critter_wrangle(args): + """Wrangle a critter. Usage: critter_wrangle """ + if len(args) < 2: + print("Usage: critter_wrangle ") + return + result = api_post('/api/action/critter_wrangle', {"x": int(args[0]), "y": int(args[1])}) + _print_feedback(result) + +def cmd_plant_uproot(args): + """Uproot a plant. Usage: plant_uproot """ + if len(args) < 2: + print("Usage: plant_uproot ") + return + result = api_post('/api/action/plant_uproot', {"x": int(args[0]), "y": int(args[1])}) + _print_feedback(result) + +def cmd_storage_filter(args): + """Set storage filter. Usage: storage_filter """ + if len(args) < 3: + print("Usage: storage_filter ") + return + result = api_post('/api/action/storage_filter', { + "x": int(args[0]), "y": int(args[1]), "filter": args[2] + }) + _print_feedback(result) + +def cmd_door_open(args): + """Open/close a door. Usage: door_open """ + if len(args) < 3: + print("Usage: door_open ") + return + open_door = args[2].lower() in ('on', 'true', '1', 'open', 'yes') + result = api_post('/api/action/door_open', { + "x": int(args[0]), "y": int(args[1]), "open": open_door + }) + _print_feedback(result) + +def cmd_sensors(args): + """List all sensors. Usage: sensors [filter]""" + filt = args[0].lower() if args else "" + data = api_get('/api/state/sensors') + if 'error' in data: + print(f"Error: {data['error']}") + return + print(f"Sensors: {data.get('sensorCount', 0)}") + for s in data.get('sensors', []): + sname = f"{s.get('type', '?')}Sensor" + if filt and filt not in sname.lower() and filt not in str(s.get('threshold', '')): + continue + thr = f" threshold={s.get('threshold')}" if s.get('threshold') is not None else "" + print(f" {sname:15s} at ({s.get('x', '?')},{s.get('y', '?')}){thr} {'ON' if s.get('isOperational') else 'OFF'}") + +# --------------------------------------------------------------------------- +# Extended interactions +# --------------------------------------------------------------------------- + +def cmd_clear(args): + """Clear debris. Usage: clear [radius]""" + if len(args) < 2: + print("Usage: clear [radius]") + return + payload = {"x": int(args[0]), "y": int(args[1]), "radius": int(args[2]) if len(args) > 2 else 1} + result = api_post('/api/action/clear', payload) + _print_feedback(result) + +def cmd_rotate(args): + """Rotate a building. Usage: rotate """ + if len(args) < 2: + print("Usage: rotate ") + return + result = api_post('/api/action/rotate', {"x": int(args[0]), "y": int(args[1])}) + _print_feedback(result) + +def cmd_copy_settings(args): + """Copy building settings. Usage: copy_settings """ + if len(args) < 4: + print("Usage: copy_settings ") + return + result = api_post('/api/action/copy_settings', { + "x1": int(args[0]), "y1": int(args[1]), "x2": int(args[2]), "y2": int(args[3]) + }) + _print_feedback(result) + +def cmd_overlay(args): + """Set overlay view. Usage: overlay """ + if not args: + print("Usage: overlay ") + return + result = api_post('/api/action/overlay', {"type": args[0]}) + _print_feedback(result) + +def cmd_dupe_personal_priority(args): + """Set dupe personal priority. Usage: dupe_personal_priority """ + if len(args) < 3: + print("Usage: dupe_personal_priority ") + print(" taskType: Dig, Build, Cook, Farm, Ranch, Operate, Research, Store, Tidy, LifeSupport, Supply") + return + result = api_post('/api/action/dupe_personal_priority', { + "duplicantId": args[0], "taskType": args[1], "priority": int(args[2]) + }) + _print_feedback(result) + +def cmd_battery_charge(args): + """Set battery charge limits. Usage: battery_charge """ + if len(args) < 4: + print("Usage: battery_charge ") + return + result = api_post('/api/action/battery_charge', { + "x": int(args[0]), "y": int(args[1]), + "high": int(args[2]), "low": int(args[3]) + }) + _print_feedback(result) + +def cmd_valve_flow(args): + """Set valve flow limit. Usage: valve_flow """ + if len(args) < 3: + print("Usage: valve_flow ") + return + result = api_post('/api/action/valve_flow', { + "x": int(args[0]), "y": int(args[1]), "flow": float(args[2]) + }) + _print_feedback(result) + +def cmd_vent_pressure(args): + """Set vent overpressure. Usage: vent_pressure """ + if len(args) < 3: + print("Usage: vent_pressure ") + return + result = api_post('/api/action/vent_pressure', { + "x": int(args[0]), "y": int(args[1]), "pressure": float(args[2]) + }) + _print_feedback(result) + +def cmd_incubator_setting(args): + """Set incubator egg priority. Usage: incubator_setting """ + if len(args) < 3: + print("Usage: incubator_setting ") + return + result = api_post('/api/action/incubator_setting', { + "x": int(args[0]), "y": int(args[1]), "egg": args[2] + }) + _print_feedback(result) + +def cmd_fridge_temp(args): + """Set fridge temperature. Usage: fridge_temp """ + if len(args) < 3: + print("Usage: fridge_temp ") + return + result = api_post('/api/action/fridge_temp', { + "x": int(args[0]), "y": int(args[1]), "temperature": float(args[2]) + }) + _print_feedback(result) + +def cmd_sensor_threshold(args): + """Set sensor threshold. Usage: sensor_threshold """ + if len(args) < 3: + print("Usage: sensor_threshold ") + return + result = api_post('/api/action/sensor_threshold', { + "x": int(args[0]), "y": int(args[1]), "threshold": float(args[2]) + }) + _print_feedback(result) + +def cmd_sweep(args): + """Mark for sweeping. Usage: sweep [radius]""" + if len(args) < 2: + print("Usage: sweep [radius]") + return + payload = {"x": int(args[0]), "y": int(args[1])} + if len(args) > 2: + payload["radius"] = int(args[2]) + result = api_post('/api/action/sweep', payload) + _print_feedback(result) + +def cmd_disinfect(args): + """Disinfect a cell. Usage: disinfect """ + if len(args) < 2: + print("Usage: disinfect ") + return + result = api_post('/api/action/disinfect', {"x": int(args[0]), "y": int(args[1])}) + _print_feedback(result) + +# --------------------------------------------------------------------------- +# Screenshot / Camera +# --------------------------------------------------------------------------- + +def cmd_snapshot(args): + """Take a screenshot and save locally. Usage: snapshot [output.png]""" + output = args[0] if args else f"oni_snapshot_{int(__import__('time').time())}.png" + result = api_post('/api/action/screenshot', {}) + if not result.get('success'): + print(f"[!] Screenshot failed: {result.get('errorMessage', '')}") + return + filename = result.get('data', {}).get('filename', '?') + print(f"[OK] Screenshot taken: {filename}") + + # Download the image + try: + import urllib.request + url = api_url('/api/screenshot/latest') + urllib.request.urlretrieve(url, output) + print(f"[OK] Saved to {output} ({os.path.getsize(output)} bytes)") + except Exception as e: + print(f"[!] Download failed: {e}") + +def cmd_camera(args): + """Control camera. Usage: camera [zoom]""" + if len(args) < 2: + print("Usage: camera [zoom]") + print(" zoom: 5 (close) to 80 (far), default 30") + return + x, y = int(args[0]), int(args[1]) + zoom = float(args[2]) if len(args) > 2 else None + payload = {"x": x, "y": y} + if zoom is not None: + payload["zoom"] = zoom + result = api_post('/api/action/camera', payload) + _print_feedback(result) + +def cmd_camera_status(args): + """Get current camera position. Usage: camera_status""" + data = api_get('/api/state/camera') + if 'error' in data: + print(f"Error: {data['error']}") + return + print(f"Camera at ({data.get('x', 0):.0f}, {data.get('y', 0):.0f}), zoom={data.get('zoom', 30):.0f}") + +def cmd_explore(args): + """AI-friendly exploration: reads a region and returns structured text summary.""" + x = int(args[0]) if len(args) > 0 else 0 + y = int(args[1]) if len(args) > 1 else 0 + w = int(args[2]) if len(args) > 2 else 20 + h = int(args[3]) if len(args) > 3 else 20 + + cells_data = api_get(f"/api/state/cells?x={x}&y={y}&width={w}&height={h}") + buildings_data = api_get("/api/state/buildings") + dups_data = api_get("/api/state/duplicants") + + summary = { + "region": f"({x},{y}) to ({x+w-1},{y+h-1})", + "cell_count": len(cells_data.get('cells', [])), + "buildings_in_region": [], + "duplicants_in_region": [], + "elements_summary": {}, + "interesting_cells": [] + } + + region_cells = cells_data.get('cells', []) + + # Buildings overlapping region + if isinstance(buildings_data, list): + for b in buildings_data: + bx, by = b.get('x', -1), b.get('y', -1) + if x <= bx < x + w and y <= by < y + h: + summary["buildings_in_region"].append({ + "name": b.get('name', '?'), + "id": b.get('id', '?'), + "position": (bx, by), + "operational": b.get('isOperational', False) + }) + + # Dupes in region + if isinstance(dups_data, list): + for d in dups_data: + dx, dy = d.get('x', -1), d.get('y', -1) + if x <= dx < x + w and y <= dy < y + h: + summary["duplicants_in_region"].append({ + "name": d.get('name', '?'), + "position": (dx, dy), + "stress": d.get('stress', 0), + "chore": d.get('currentChore', '?') + }) + + # Element summary + elem_counts = {} + for c in region_cells: + ename = c.get('element', 'Vacuum') + elem_counts[ename] = elem_counts.get(ename, 0) + 1 + summary["elements_summary"] = elem_counts + + # Interesting cells (buildings, dupes, liquids, hot) + for c in region_cells: + if c.get('hasDuplicant') or c.get('hasBuilding') or (c.get('isLiquid') and c.get('massKg', 0) > 100): + summary["interesting_cells"].append({ + "pos": (c.get('x'), c.get('y')), + "element": c.get('element'), + "mass_kg": c.get('massKg', 0), + "temp_c": c.get('temperatureC', 0), + "building": c.get('buildingName'), + "dupe": c.get('duplicantName') + }) + + print(json.dumps(summary, indent=2, ensure_ascii=False)) + + +COMMANDS = { + 'health': cmd_health, + 'status': cmd_status, + 'resources': cmd_resources, + 'duplicants': cmd_duplicants, + 'buildings': cmd_buildings, + 'research': cmd_research, + 'geysers': cmd_geysers, + 'critters': cmd_critters, + 'plants': cmd_plants, + 'rooms': cmd_rooms, + 'queue': cmd_queue, + 'events': cmd_events, + 'cell': cmd_cell, + 'cells': cmd_cells, + 'slice': cmd_cell_slice, + 'gas': cmd_gas, + 'registry': cmd_registry, + 'dig': cmd_dig, + 'build': cmd_build, + 'deconstruct': cmd_deconstruct, + 'prioritize': cmd_prioritize, + 'research_select': cmd_research_select, + 'mop': cmd_mop, + 'harvest': cmd_harvest, + 'explore': cmd_explore, + 'batch': cmd_batch, + 'priority_global': cmd_priority_global, + 'priority_type': cmd_priority_type, + 'pause': cmd_pause, + 'unpause': cmd_unpause, + 'speed': cmd_speed, + 'save': cmd_save, + 'save_as': cmd_save_as, + 'load': cmd_load, + 'saves': cmd_saves, + 'power': cmd_power, + 'pipes': cmd_pipes, + 'co2': cmd_co2, + 'temp_zones': cmd_temp_zones, + 'morale': cmd_morale, + 'diseases': cmd_diseases, + 'storage': cmd_storage, + 'storages': cmd_storage, + 'skills': cmd_skills, + 'assign_job': cmd_assign_job, + 'build_pipe_line': cmd_build_pipe_line, + 'build_wire_line': cmd_build_wire_line, + 'snapshot': cmd_snapshot, + 'camera': cmd_camera, + 'camera_status': cmd_camera_status, + 'buildable': cmd_buildable, + 'toggle': cmd_toggle, + 'set_recipe': cmd_set_recipe, + 'empty': cmd_empty, + 'cancel_errand': cmd_cancel_errand, + 'research_detail': cmd_research_detail, + 'research_cancel': cmd_research_cancel, + 'building_detail': cmd_building_detail, + 'set_building_priority': cmd_set_building_priority, + 'set_automation': cmd_set_automation, + 'printing_pod': cmd_printing_pod, + 'printing_pod_select': cmd_printing_pod_select, + 'atmo_suits': cmd_atmo_suits, + 'critter_attack': cmd_critter_attack, + 'door_lock': cmd_door_lock, + 'door_one_way': cmd_door_one_way, + 'dupe_move': cmd_dupe_move, + 'dupe_cancel_task': cmd_dupe_cancel_task, + 'critter_wrangle': cmd_critter_wrangle, + 'plant_uproot': cmd_plant_uproot, + 'storage_filter': cmd_storage_filter, + 'door_open': cmd_door_open, + 'sensors': cmd_sensors, + 'sensor_threshold': cmd_sensor_threshold, + 'sweep': cmd_sweep, + 'disinfect': cmd_disinfect, + 'clear': cmd_clear, + 'rotate': cmd_rotate, + 'copy_settings': cmd_copy_settings, + 'overlay': cmd_overlay, + 'dupe_personal_priority': cmd_dupe_personal_priority, + 'battery_charge': cmd_battery_charge, + 'valve_flow': cmd_valve_flow, + 'vent_pressure': cmd_vent_pressure, + 'incubator_setting': cmd_incubator_setting, + 'fridge_temp': cmd_fridge_temp, +} + +if __name__ == '__main__': + cmd = sys.argv[1] if len(sys.argv) > 1 else 'help' + + if cmd == 'help' or cmd not in COMMANDS: + print("ONI Agent API Client") + print("=" * 60) + print("") + print("=== State Queries ===") + print(" health Check Mod connection") + print(" status Game overview (cycle, resources, dups, alerts)") + print(" resources [filter] List all resources with amounts") + print(" duplicants Show duplicant details") + print(" buildings List all buildings (grouped by category)") + print(" research Show research tree progress") + print(" geysers Show geyser states") + print(" critters Show critter list") + print(" plants Show plant list") + print(" rooms Show rooms") + print("") + print("=== Map / Cell Data ===") + print(" cell Get single cell details") + print(" cells Get region as grid") + print(" slice Row/column scan") + print(" gas [r] Gas analysis in radius r") + print(" explore AI-friendly region summary") + print("") + print("=== Door / Critter / Suits ===") + print(" door_lock on|off Lock/unlock a door") + print(" door_one_way Set door to one-way (left/right/up/down/none)") + print(" door_open on|off Open/close a door manually") + print(" critter_attack Toggle critter attack mode") + print(" critter_wrangle Wrangle a critter") + print(" atmo_suits Check atmo suit dock status") + print("") + print("=== Duplicant / Plant ===") + print(" dupe_move Move a duplicant to coordinates") + print(" dupe_cancel_task Cancel a dupe's current task") + print(" plant_uproot Uproot a plant") + print("") + print("=== Sensors / Automation ===") + print(" sensors [filter] List all sensors and thresholds") + print(" sensor_threshold Set sensor threshold") + print("") + print("=== Storage / Cleaning ===") + print(" storage_filter Set storage building filter") + print(" sweep [r] Mark area for sweeping") + print(" disinfect Disinfect a cell/building") + print(" empty Empty building storage") + print(" events [since] [limit] Poll new game events") + print(" printing_pod Check Printing Pod status (ready/options)") + print(" printing_pod_select <0|1|2> Select Printing Pod option") + print("") + print("=== Registries (AI Reference) ===") + print(" registry buildings [f] List all building IDs with metadata") + print(" registry elements [f] List all element IDs with properties") + print(" registry techs [f] List all tech IDs with unlocks") + print(" registry priorities Show priority level meanings") + print("") + print("=== Research / Buildable ===") + print(" buildable [filter] List buildings unlocked by current research") + print(" research Show research tree progress") + print(" research_detail Detailed research status (active tech / stations)") + print(" research_select Select tech to research") + print(" research_cancel [id] Cancel research (all or specific tech)") + print("") + print("=== Building Interaction ===") + print(" building_detail Full detail for a building (health/contents/automation)") + print(" toggle Toggle building on/off") + print(" set_recipe Set building recipe") + print(" empty Empty building storage") + print(" cancel_errand Cancel errands at building") + print(" set_building_priority

Set building priority 1-9") + print(" set_automation on|off Toggle automation input") + print("") + print("=== Game Speed Control ===") + print(" pause [reason] Pause the game (AI should always pause before ops)") + print(" unpause [speed] Unpause the game at 1x/2x/3x speed") + print(" speed <1|2|3> Set game speed while running") + print("") + print("=== Save / Load ===") + print(" save [name] Save game (AI undo button)") + print(" save_as Save with custom name") + print(" saves List save files") + print(" load Load a save (rollback)") + print("") + print("=== Grid Analysis ===") + print(" power Power grid (circuits, load, overloads)") + print(" pipes [gas|liquid|all] Pipe contents (debug plumbing)") + print(" co2 Find CO2 pockets (colony killer!)") + print(" temp_zones Temperature hot/cold spots") + print("") + print("=== Colony Management ===") + print(" storages Storage building contents") + print(" diseases Disease/infection overview") + print(" skills Duplicant skills and attributes") + print(" assign_job Assign dupe to a chore group") + print(" morale Duplicant morale levels") + print("") + print("=== Screenshot / Camera ===") + print(" snapshot [file.png] Take screenshot + save locally") + print(" camera [zoom] Move camera view to coordinates") + print(" camera_status Get current camera position/zoom") + print("") + print("=== Batch / Priority (Advanced) ===") + print(" batch Execute batch plan") + print(" priority_global

Set global default priority") + print(" priority_type

Set per-building-type priority") + else: + args = sys.argv[2:] + fn = COMMANDS[cmd] + # Check if function accepts arguments + sig = inspect.signature(fn) + if len(sig.parameters) > 0: + fn(args) + else: + fn() diff --git a/tools/oni_builder.py b/tools/oni_builder.py new file mode 100644 index 0000000..29520f9 --- /dev/null +++ b/tools/oni_builder.py @@ -0,0 +1,163 @@ +import json +import sys +from oni_api import api_post + +BLUEPRINTS = { + 'spom': { + 'name': 'SPOM (Self-Powered Oxygen Module)', + 'description': 'Standard Rodriguez SPOM: electrolyzer + hydrogen generators', + 'size': {'width': 8, 'height': 6}, + 'dig': {'x': -1, 'y': -1, 'width': 10, 'height': 8}, + 'buildings': [ + {'id': 'Electrolyzer', 'x': 3, 'y': 2}, + {'id': 'GasPump', 'x': 1, 'y': 2}, + {'id': 'GasPump', 'x': 5, 'y': 2}, + {'id': 'HydrogenGenerator', 'x': 1, 'y': 0}, + {'id': 'HydrogenGenerator', 'x': 4, 'y': 0}, + {'id': 'GasFilter', 'x': 3, 'y': 0}, + ], + }, + 'spom_mini': { + 'name': 'Mini SPOM', + 'description': 'Compact electrolyzer + 1 hydrogen generator for early game', + 'size': {'width': 5, 'height': 4}, + 'dig': {'x': -1, 'y': -1, 'width': 7, 'height': 6}, + 'buildings': [ + {'id': 'Electrolyzer', 'x': 2, 'y': 1}, + {'id': 'GasPump', 'x': 1, 'y': 1}, + {'id': 'HydrogenGenerator', 'x': 2, 'y': 0}, + ], + }, + 'toilet_loop': { + 'name': 'Bathroom Water Loop', + 'description': 'Lavatory -> Water Purifier -> Lavatory closed loop', + 'size': {'width': 8, 'height': 4}, + 'dig': {'x': -1, 'y': -1, 'width': 10, 'height': 6}, + 'buildings': [ + {'id': 'Lavatory', 'x': 1, 'y': 1}, + {'id': 'Lavatory', 'x': 3, 'y': 1}, + {'id': 'WaterPurifier', 'x': 6, 'y': 1}, + {'id': 'LiquidPump', 'x': 6, 'y': 2}, + ], + }, + 'ranch_hatch': { + 'name': 'Hatch Ranch', + 'description': 'Standard hatch ranching module with feeder and incubator', + 'size': {'width': 10, 'height': 6}, + 'dig': {'x': -1, 'y': -1, 'width': 12, 'height': 8}, + 'buildings': [ + {'id': 'RanchStation', 'x': 1, 'y': 1}, + {'id': 'Incubator', 'x': 4, 'y': 1}, + {'id': 'StorageLocker', 'x': 8, 'y': 1}, + ], + }, + 'farm_mealwood': { + 'name': 'Mealwood Farm', + 'description': 'Basic mealwood farm: 5 planter boxes + storage', + 'size': {'width': 6, 'height': 4}, + 'dig': {'x': -1, 'y': -1, 'width': 8, 'height': 6}, + 'buildings': [ + {'id': 'PlanterBox', 'x': 1, 'y': 1}, + {'id': 'PlanterBox', 'x': 3, 'y': 1}, + {'id': 'PlanterBox', 'x': 5, 'y': 1}, + {'id': 'PlanterBox', 'x': 1, 'y': 3}, + {'id': 'PlanterBox', 'x': 3, 'y': 3}, + {'id': 'StorageLocker', 'x': 5, 'y': 3}, + ], + }, + 'cooling': { + 'name': 'Steam Turbine Cooler', + 'description': 'Liquid cooling loop with steam turbine + aquatuner', + 'size': {'width': 8, 'height': 6}, + 'dig': {'x': -1, 'y': -1, 'width': 10, 'height': 8}, + 'buildings': [ + {'id': 'SteamTurbine', 'x': 1, 'y': 4}, + {'id': 'SteamTurbine', 'x': 5, 'y': 4}, + {'id': 'Aquatuner', 'x': 2, 'y': 1}, + {'id': 'LiquidPump', 'x': 5, 'y': 1}, + ], + }, + 'bedroom': { + 'name': 'Barracks / Bedroom', + 'description': 'Basic bedroom module with cots and decorations', + 'size': {'width': 8, 'height': 4}, + 'dig': {'x': -1, 'y': -1, 'width': 10, 'height': 6}, + 'buildings': [ + {'id': 'Bed', 'x': 1, 'y': 1}, + {'id': 'Bed', 'x': 3, 'y': 1}, + {'id': 'Bed', 'x': 5, 'y': 1}, + {'id': 'LadderBed', 'x': 1, 'y': 3}, + {'id': 'LadderBed', 'x': 3, 'y': 3}, + {'id': 'FlowerVase', 'x': 6, 'y': 1}, + ], + }, +} + + +def list_blueprints(): + print(f"Available Blueprints ({len(BLUEPRINTS)}):") + print("=" * 60) + for key, bp in BLUEPRINTS.items(): + print(f" {key:16s} {bp['name']:28s} {bp['size']['width']}x{bp['size']['height']}") + print(f" {'':16s} {bp['description']}") + print() + + +def apply_blueprint(name, origin_x, origin_y): + bp = BLUEPRINTS.get(name) + if not bp: + print(f"[!] Blueprint '{name}' not found") + print(f" Use 'list' to see available blueprints") + return False + + print(f"Applying blueprint: {bp['name']}") + print(f" Origin: ({origin_x}, {origin_y})") + print(f" Size: {bp['size']['width']} x {bp['size']['height']}") + print() + + results = [] + + dig = bp.get('dig', {'x': -1, 'y': -1, 'width': bp['size']['width'] + 2, 'height': bp['size']['height'] + 2}) + dig_result = api_post('/api/action/dig', { + 'x': origin_x + dig['x'], + 'y': origin_y + dig['y'], + 'width': dig['width'], + 'height': dig['height'], + }) + status = 'OK' if 'error' not in dig_result else dig_result.get('error', 'fail') + print(f" [Dig] area ({dig['width']}x{dig['height']}): {status}") + + for b in bp['buildings']: + x = origin_x + b['x'] + y = origin_y + b['y'] + result = api_post('/api/action/build', { + 'buildingId': b['id'], + 'x': x, + 'y': y, + }) + ok = 'error' not in result + results.append({'building': b['id'], 'x': x, 'y': y, 'ok': ok}) + status = 'OK' if ok else result.get('error', 'fail') + print(f" [Build] {b['id']:20s} at ({x:3d}, {y:3d}): {status}") + + ok_count = sum(1 for r in results if r['ok']) + print() + print(f" Result: {ok_count}/{len(results)} buildings placed") + return ok_count == len(results) + + +if __name__ == '__main__': + cmd = sys.argv[1] if len(sys.argv) > 1 else 'list' + + if cmd == 'list': + list_blueprints() + elif cmd == 'build': + if len(sys.argv) < 4: + print("Usage: python oni_builder.py build ") + print() + list_blueprints() + sys.exit(1) + success = apply_blueprint(sys.argv[2], int(sys.argv[3]), int(sys.argv[4])) + sys.exit(0 if success else 1) + else: + print("Usage: python oni_builder.py ") diff --git a/tools/oni_commander.py b/tools/oni_commander.py new file mode 100644 index 0000000..3680ca9 --- /dev/null +++ b/tools/oni_commander.py @@ -0,0 +1,355 @@ +#!/usr/bin/env python3 +""" +ONI Commander — 高级指令封装 +============================ +把多个底层 API 调用组合成一条"指挥官指令",AI 一句话就能执行复杂操作。 +""" + +import json +import sys +import os +import inspect + +TOOLS_DIR = os.path.dirname(__file__) +sys.path.insert(0, TOOLS_DIR) + +from oni_api import api_get, api_post, _print_feedback + + +def cmd_diagnose(args): + """全面诊断:O2、食物、电力、CO2、温度、管道。""" + print("=" * 56) + print(" ONI Full Diagnostic") + print("=" * 56) + + pause_before() + pause_after() + + # 1. 游戏总览 + game = api_get('/api/state/game') + if 'error' in game: + print(f"[!] Cannot connect: {game['error']}") + return False + print(f" Cycle {game.get('cycle', '?')} | {game.get('duplicantCount', '?')} dupes | " + f"{game.get('suffocating', 0)} suffocating | {game.get('starving', 0)} starving | " + f"{game.get('stressed', 0)} stressed") + + # 2. 电力 + print("\n--- Power ---") + power = api_get('/api/state/power') + if 'circuits' in power: + for c in power['circuits']: + mark = " *** OVERLOAD ***" if c.get('isOverloaded') else "" + print(f" Circuit {c.get('id')}: {c.get('wattsUsed', 0):.0f}W / {c.get('maxWatts', 0):.0f}W{mark}") + + # 3. CO2 + print("\n--- CO2 ---") + co2 = api_get('/api/state/co2') + if co2.get('pocketCount', 0) > 0: + print(f" {co2.get('pocketCount')} pockets ({co2.get('totalMassKg', 0):.0f} kg CO2)") + for p in co2.get('pockets', [])[:3]: + print(f" ({p.get('x')},{p.get('y')}) {p.get('mass', 0):.0f} kg") + else: + print(" No CO2 pockets detected") + + # 4. 温度 + print("\n--- Temperature ---") + temp = api_get('/api/state/temperature/zones') + if 'averageC' in temp: + print(f" Avg: {temp['averageC']:.0f}°C Min: {temp.get('minC', 0):.0f}°C Max: {temp.get('maxC', 0):.0f}°C") + if temp.get('hotSpots'): + print(f" {len(temp['hotSpots'])} hot spots (>50°C) — risk!") + if temp.get('coldSpots'): + print(f" {len(temp['coldSpots'])} cold spots (<5°C)") + + # 5. 疾病 + print("\n--- Diseases ---") + diseases = api_get('/api/state/diseases') + infected = diseases.get('infectedDuplicants', []) + if infected: + for d in infected: + print(f" {d.get('duplicant')} — {d.get('disease')} ({d.get('severity')})") + else: + print(" No infections") + + # 6. 管道 + print("\n--- Pipes ---") + for pt in ('gas', 'liquid'): + pipes = api_get(f'/api/state/pipes?type={pt}') + segs = pipes.get('segmentCount', 0) + if segs: + first = pipes.get('segments', [{}])[0] + print(f" {pt}: {segs} segments (e.g. {first.get('element', '?')})") + else: + print(f" {pt}: empty") + + print() + print("=" * 56) + print(" Diagnostic complete") + print("=" * 56) + + +def cmd_fix_co2(args): + """找到 CO2 并挖掘排气通道。""" + print("[CO2 Fix] Scanning for CO2 pockets...") + co2 = api_get('/api/state/co2') + pockets = co2.get('pockets', []) + if not pockets: + print("[OK] No CO2 pockets found.") + return + + pause_before() + + # Find the lowest y-level pocket and dig below it + bottom = min(pockets, key=lambda p: p.get('y', 0)) + x, y = bottom.get('x', 0), bottom.get('y', 0) + print(f"[CO2 Fix] Largest pocket at ({x},{y}), {bottom.get('mass', 0):.0f} kg") + + # Dig a 1-wide shaft down + dig_y = max(0, y - 5) + result = api_post('/api/action/dig', {"x": x, "y": dig_y, "width": 1, "height": y - dig_y + 1}) + if result.get('success'): + print(f"[CO2 Fix] Dug vent shaft at x={x}, y={dig_y}..{y}") + else: + print(f"[CO2 Fix] Dig failed: {result.get('errorMessage', 'unknown')}") + + pause_after() + + +def cmd_fix_overload(args): + """检测过载电路并给出修复建议。""" + print("[Power Fix] Analyzing circuits...") + power = api_get('/api/state/power') + overloaded = [c for c in power.get('circuits', []) if c.get('isOverloaded')] + if not overloaded: + print("[OK] No overloaded circuits.") + return + + pause_before() + + print(f"[Power Fix] {len(overloaded)} overloaded circuits:") + for c in overloaded: + print(f" Circuit {c.get('id')}: {c.get('wattsUsed', 0):.0f}W / {c.get('maxWatts', 0):.0f}W") + + # Suggest fixes + print() + print(" Suggested fixes:") + print(" 1. Move heavy consumers (MetalRefinery, Aquatuner) to separate circuit") + print(" 2. Upgrade wire to HeaviWatt or split into 2 transformers") + print(" 3. Add PowerTransformer to isolate high-load branches") + + pause_after() + + +def cmd_build_pipe_line(args): + """铺设管道路径(带交叉模式)。""" + if len(args) < 5: + print("Usage: build_pipe_line gas|liquid [mode]") + print(" mode: 'line'(默认,与已有管线合并) | 'cross'(跨接器跳过) | 'single'(单段)") + return + ptype = args[0] + x1, y1, x2, y2 = int(args[1]), int(args[2]), int(args[3]), int(args[4]) + mode = args[5] if len(args) > 5 else 'line' + + pause_before() + + if ptype not in ('gas', 'liquid'): + print("[!] Type must be 'gas' or 'liquid'") + return + + result = api_post('/api/action/build_pipe', { + "type": ptype, "x1": x1, "y1": y1, + "x2": x2, "y2": y2, "mode": mode + }) + if result.get('success'): + d = result.get('data', {}) + segs = d.get('segmentCount', 0) + bridges = d.get('bridgesPlaced', 0) + print(f"[OK] {ptype} pipe: {segs} segments from ({x1},{y1}) to ({x2},{y2})") + if bridges > 0: + print(f" {bridges} bridges placed at crossings (mode={mode})") + else: + print(f"[!] Failed: {result.get('errorMessage', 'unknown')}") + + pause_after() + + +def cmd_build_wire_line(args): + """铺设电线路径。""" + if len(args) < 5: + print("Usage: build_wire_line regular|heavy|conductive [mode]") + print(" mode: 'line' (default), 'cross' (use bridges), 'single'") + return + wtype = args[0] + x1, y1, x2, y2 = int(args[1]), int(args[2]), int(args[3]), int(args[4]) + mode = args[5] if len(args) > 5 else 'line' + + pause_before() + + if wtype not in ('regular', 'heavy', 'conductive', 'heavy_conductive'): + print("[!] Type must be 'regular', 'heavy', 'conductive', or 'heavy_conductive'") + return + + result = api_post('/api/action/build_wire', { + "type": wtype, "x1": x1, "y1": y1, + "x2": x2, "y2": y2, "mode": mode + }) + if result.get('success'): + segs = result.get('data', {}).get('segmentCount', 0) + print(f"[OK] {wtype} wire: {segs} segments from ({x1},{y1}) to ({x2},{y2})") + else: + print(f"[!] Failed: {result.get('errorMessage', 'unknown')}") + + pause_after() + + +def cmd_expand_base(args): + """拓展基地:挖掘 + 建造墙壁。""" + if len(args) < 4: + print("Usage: expand_base ") + return + x, y, w, h = int(args[0]), int(args[1]), int(args[2]), int(args[3]) + + pause_before() + + # Dig + r1 = api_post('/api/action/dig', {"x": x - 1, "y": y - 1, "width": w + 2, "height": h + 2}) + if not r1.get('success'): + print(f"[!] Dig failed: {r1.get('errorMessage', 'unknown')}") + pause_after() + return + print(f"[Expand] Dug ({x},{y}) {w}x{h}") + + # Build floor tiles + for fx in range(x, x + w): + api_post('/api/action/build', {"buildingId": "Tile", "x": fx, "y": y}) + print(f"[Expand] Built floor: {w} tiles") + + # Build walls + for wx in range(x, x + w): + api_post('/api/action/build', {"buildingId": "Tile", "x": wx, "y": y + h}) + for wy in range(y + 1, y + h): + api_post('/api/action/build', {"buildingId": "Tile", "x": x, "y": wy}) + api_post('/api/action/build', {"buildingId": "Tile", "x": x + w - 1, "y": wy}) + print(f"[Expand] Built walls") + + pause_after() + print(f"[OK] Room expanded to ({x},{y}) {w}x{h}") + + +def cmd_emergency_o2(args): + """紧急制氧:检查 O2 并自动建造。""" + print("[Emergency O2] Checking oxygen status...") + + pause_before() + + resources = api_get('/api/state/resources') + buildings = api_get('/api/state/buildings') + game = api_get('/api/state/game') + + if isinstance(resources, list): + o2 = next((r for r in resources if r.get('name') == 'Oxygen'), {}) + algae = next((r for r in resources if r.get('name') == 'Algae'), {}) + o2_kg = o2.get('amount', 0) + algae_kg = algae.get('amount', 0) + print(f" O2: {o2_kg:.0f} kg | Algae: {algae_kg:.0f} kg") + else: + o2_kg, algae_kg = 0, 0 + + has_electrolyzer = any(b.get('id') == 'Electrolyzer' for b in (buildings or [])) + has_diffuser = any(b.get('id') == 'OxygenDiffuser' for b in (buildings or [])) + + if o2_kg < 500: + print("[CRITICAL] Oxygen critical!") + if has_diffuser and algae_kg > 500: + print(" OxygenDiffuser already exists, checking Algae supply...") + elif not has_electrolyzer and not has_diffuser: + # Find a spot near base and build + game_info = api_get('/api/state/game') + print(" No O2 production! Building OxygenDiffuser...") + result = api_post('/api/action/build', {"buildingId": "OxygenDiffuser", "x": 30, "y": 20}) + if result.get('success'): + print(" [OK] OxygenDiffuser queued at (30,20)") + else: + print(f" [!] {result.get('errorMessage', 'build failed')}") + elif o2_kg < 2000 and not has_electrolyzer: + print("[WARN] Low O2, recommend SPOM build") + else: + print("[OK] Oxygen stable") + + pause_after() + + +# ── Helpers ────────────────────────────────────────────────────────────── + +def pause_before(): + """High-level ops always pause first.""" + api_post('/api/action/pause', {"reason": "High-level operation"}) + + +def pause_after(): + """Resume after operation.""" + api_post('/api/action/unpause', {"speed": 1}) + + +# ── Command Registry ───────────────────────────────────────────────────── + +COMMANDS = { + 'diagnose': cmd_diagnose, + 'fix_co2': cmd_fix_co2, + 'fix_overload': cmd_fix_overload, + 'expand_base': cmd_expand_base, + 'emergency_o2': cmd_emergency_o2, + 'build_pipe_line': cmd_build_pipe_line, + 'build_wire_line': cmd_build_wire_line, + 'snapshot': cmd_snapshot, + 'camera': cmd_camera, +} + +def cmd_snapshot(args): + """Take screenshot + view. Usage: snapshot [name]""" + from oni_api import cmd_snapshot as api_snapshot + api_snapshot(args) + +def cmd_camera(args): + """Move camera. Usage: camera [zoom]""" + from oni_api import cmd_camera as api_camera + api_camera(args) + +if __name__ == '__main__': + cmd = sys.argv[1] if len(sys.argv) > 1 else 'help' + + if cmd == 'help' or cmd not in COMMANDS: + print("ONI Commander — 高级指令") + print("=" * 56) + print() + print("=== Diagnostics ===") + print(" diagnose 全面诊断(O2/电力/CO2/温度/疾病/管道)") + print() + print("=== Automated Fixes ===") + print(" fix_co2 找到 CO2 并挖掘排气通道") + print(" fix_overload 检测过载电路并建议修复") + print(" emergency_o2 紧急制氧(检查+自动建造)") + print() + print("=== Room Expansion ===") + print(" expand_base 挖掘+建造墙壁(一键拓展房间)") + print() + print("=== Pipe / Wire Lines ===") + print(" build_pipe_line [mode]") + print(" t: gas | liquid | mode: line(merge) | cross(bridge)") + print(" build_wire_line [mode]") + print(" t: regular | heavy | conductive | heavy_conductive") + print() + print("=== Screenshot / Camera ===") + print(" snapshot [file.png] Take screenshot") + print(" camera [zoom] Move camera view") + print() + print("All high-level commands auto-pause/resume the game.") + else: + args = sys.argv[2:] + fn = COMMANDS[cmd] + sig = inspect.signature(fn) + if len(sig.parameters) > 0: + fn(args) + else: + fn()

7dLH6Hq*#wo(3!j(kU{qXJo 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 TL3jT+k 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]i1cn`)vBNJ(-MA6iFr(KE2WKxL6ACJP7Lb@% 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�Hk>Lly7IKT&*^1< zV$`@KKq~_^ldl;J5HYU+5qA8MznR++M4p8-7c6XRBlegs6TL|;|GQyyUY#Zl9~%A_ z{ZZ^OCCSE+qp}JAZ~^MmC2~LN>aJ`GRUOCob}q=zO(yA$KD5pICI;LhHMQBsCBJ}% z^sfFMI^n*gAxX=EeGN+qc{ecl^f|}AnxGMsbbjyQV0zA5H}nL3Q}Qs??rO_lQ8~4I zr!`T$jc(@L0oF|bn}#^3=NSb4yE8%!dSp}a>N@V&g5)5Fu4lQqxp2Q>+SGEmuUsX` zGit4GTHWfhB0|4RaSFXtTLlg%^e)P+QtuKsPF6*S*t@Y-jIlhe ztf*LR4s?eOHZiu4Obl4I226fTv`}bBTmhu_86b5?iJr8$8=-P}6^^~qi6&c9bv1&t z&xPkJ?vwTof1b4|0#osrC-LsNvSmq$hJe*nyk_p%iErm-q}>0hifm%iK6!A%pAPGl zYnjZ_QCvXVw_P99zd}^V_ZfXZ#9-V2EtRgd@EJ0FgrmTNg6!;Kds8ut_3H;Xc_mkV z()I6lh;t3X?>hfre?vbynQReI9e62e7&|Bq;&RW~Cn~Z<#ks<#Nkbm6(UIO|3zTK% zlgNk3F5h-w9mACTz$FyxS6(Y-3K*c++J@o$K{cT1NLQ}JY0r3-AM`%w!1tr5XO)7b z>Yrbh7nKr?75AL1tVsOMH)z6{*M%A=h&Pd)LUw)M*JEqniQK`FN$N3>8uyIb{e~9t z)Bn@R;5)>f$X0ulf!}sicC#L8k^kyB0NmP>1&$>kZ@yg>hs*JLX?Kq8dA9#>V*Fh8&^NUy` zqGw-U!Gyrjmj$}JCc)NHUgpsJkjHujMgC!^02&4%Zf)gUX{{N^TAG``fv>18HNCSQ zG=&B=x=3o`#RblMjnHzXaQ{aVN34L0?Fok@Hm;DL)^TOwDYDmTI%|ixGPc0(%3@%1 z`tJUY$AY28!8sDuQeWL?TjbyOym{}+ReSUG|L@^WbDS8JnKkI&S1@Vu_R~qUqXrZD z&Qag+V|sOn+FFPP8x%ZaK-!?pg)|%Fb{a@uIfj%NY3^ccG!h$xZw|Sybn~}8-~E%_ za@Tfc&~~1o%=vS;;Xy&WijdDqhH4_wS7<#yJbNa-3cT$t0_i~aOEhm4&d%;}?ZV5n znuk#^)_i zgo{Gk$LKg&R(T}!a&%6?vcgYqb(QTB{WzKr6ON+3Q}D9mjp$p&$@HR`-qtz%-16~l9Sg2mSCc(}tz>GEsS1A8ZJ^7T#^{hbuCmE0R2 z^jBN*Y7mZ2CUOYgHpX57N|>5F&VF%z=e@C)4 zpQoG(M|;ReI2Fm$E@nrjE-5Dte+B~ymN_57PK*K=iKRfGx+A2qqljH-Yi&i{j6|rg zd02oRF~VogJiG1GvzL8$#ny}-Tst>k$YoZ>1aaX|?!^B2iJ^IZs^^i>^TiFwqr(F7 z1Yy160|N}e7~U#K9SugD+G7?8d3KZIP#3A$9C#Fyko(_7#Q#fN^xq|fPM_sfwHL-} zX5dN+BjhV2AD#bb*s|~3=eg-4zx(7GzFsQfBrlxYr(;_5h zrey2pO?%g_Vr6&fgTGfEJN@BU?3*^Zpg-|xq|j7j_#&y;is4$i$yvV7P~0@Zzg;B^ ziplav_CgF%hDUs_AK8V?QYm!srecj+NSX}U5j-A>GF{->_aR#hrduf0N4*W-+*u0c z#Vox(XE>PMSEz0r*9vl*U(&$o;P^Y1*$V=v#C^wL?rTdJ=*+sXWSgzw#6urfi;cSP zIW`bTvjz6LOmQ@djP>4NAz!bzM}6XgJng5`b+3w$->IOCYs4`#kka%z2U1Ln@0c4y zc=nA(5287LF|({El4d8v5ZnVdZ^I*}pz-nB{b8bXxg@0)9*)?J5b*x-<=wKcI>xug z-#2~Qv?d|`^LN7KrK%N1iW>x1ARlc%8*A&Cd?|f>eeliCP$pif@=W9Uc<1QPO0;4Q zh%J^ij$PgMPJ>XO1!4n6ˠ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 a>Y97+-rBdT+3Y12;oMo(Gp|WT*Z&VrPAy3Q literal 0 HcmV?d00001 diff --git a/ONIModTutorial/ONIModTutorial-main/public/images/first-mod/ModTemplate.png b/ONIModTutorial/ONIModTutorial-main/public/images/first-mod/ModTemplate.png new file mode 100644 index 0000000000000000000000000000000000000000..5a7ef42158bc5bbb5dc224ec7df55d737f32473c GIT binary patch literal 8823 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 C03mq* literal 0 HcmV?d00001 diff --git a/ONIModTutorial/ONIModTutorial-main/public/images/first-mod/Project.png b/ONIModTutorial/ONIModTutorial-main/public/images/first-mod/Project.png new file mode 100644 index 0000000000000000000000000000000000000000..1d03501d733a6f6f58d0e7f05a05283f40a31943 GIT binary patch literal 13433 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 literal 0 HcmV?d00001 diff --git a/ONIModTutorial/ONIModTutorial-main/public/images/steam-upload/Tool.png b/ONIModTutorial/ONIModTutorial-main/public/images/steam-upload/Tool.png new file mode 100644 index 0000000000000000000000000000000000000000..67bd941ba27f2dd177d3824a00d7cf238cc6c367 GIT binary patch literal 9622 zcmV;HC287;P)eh4bY)!^&fNe202g#cSael$WpW@x zZ*6U5Zgc=sV{&C>ZgXgFboX@)M*sjI07*naRCt{2eQ9)5*Ol(xw{A_UL8TcXBmqK9 zVip(-n9+4@?Nji&dN*Lnc9vM$MMK$ zurUS?*ai#;5CRF!Q%S0MJp27P!#!0JgN+==o!UR(a_XFY_c{0M{q1j`TLm`GT?_>& zNJ0KkVgjPw;rXD=_)`!BpmG1E+;#*aK+($oA|T}L0E7U5$gkx{c0fQ9b0h?0LNh}^2876MQ`Zat zrDlfwTFp-U$q&QKXGh%G4+nkOYV*fX&h@43Phj=)`ps>Gl9w zqvSr4Hfu9P0wi%O07QW_(q;f8G1iZ7I9FU7os8ai-Nq5qM;l}7}L;9ID-PJ zygroQM}d}7Eualh8*F))9KiRo1udL0SrDzRdFmw~SfK$omU3)HYZvC2u5Bx>M&hTo z9Fki~lq0bM0_8w(JW$%?T`W`q!4jqaOn|ydJ?NVCd5JzqmTRkd$QH8hi=^2@x;<6` zg9?n*yc7hQGC?WG`zY7qavE@Gyfxayh(7E(bc7 z6KG%sddcPF4o7$wTuz~ZyuLPv1_* zp(VUoE@yEz(77CH?W)iF!{yd)y7R$@{?=VoG~uW5SnL-+`rk(n9Rz^;9{Ai{AN!fRi)qO?dtA{#}n^)7A}{oqP)!K z^>+94zGo#9OHPdu0N`D4IT4FBT{)w2xSXL4&eKH7{S?Y!j%F?2$>Va`n492osu$#P zIq3&{0;JuZNTC6V%0Ccsj-&t@qzaD1BH@&YrbU!VX0QZ`KFYglTu$Yp!WwS7I--&B zj9D47I5gmQ­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 M07*qoM6N<$fYG-3( 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 literal 0 HcmV?d00001 diff --git a/ONIModTutorial/ONIModTutorial-main/public/templates/ONIModTemplate.zip b/ONIModTutorial/ONIModTutorial-main/public/templates/ONIModTemplate.zip new file mode 100644 index 0000000000000000000000000000000000000000..2df063cd93fbfe37a8bcfda68b3ee9f89485f41f GIT binary patch literal 7790 zcmeHMXHXQ|x*ftu&I3pWiAv5Al?;-GFk~3QkaLnGNDh*tL4KP*`Pa<5y&*P{0)JKcZG^rmnD295!t2zFrL8S$I&;%3aeG}Zn@PdmI&y{T#;K9Zc z?Awdkhn#DBEN4$f*S(Bn4H0~;s1I^`_w4EN7pXK=CPcaOXzU$LW_|L4xQT2Jp%dx) zFVl|^;&*yhPm?Gb+RJg@l}JjSvI1$pZ69EtCJJ~nzBb0z=}>$Xad#_xHt(!4cB+GI z6(}ccS=vVh(~z)aX<$K*7Y?K5%rB7^78-WIC1kyCGc974~a-@KxbTfD5&=uP= z)~;YK)&8gJaKyS2XYCu{eP6D| zQj+meLxO8QX*Z)=0a*M=(BKx`4mJ_VU;vNg8|h}IErDZlYw+p!%@&y;ZIDn1$_Kw1 zrDp;0KIiBt!%K^SjD|O99oIf(0CHnR0$csb@A{Hv%_p!1c`%z$wJiC&x&RBAo#>W+? z7x#5d%=M+j$DQ0Y0#eK2HHgtOCT0@?SUuDR>XZi-4k=JgKu8W-xH$?6NC3__1k?IggNqrKLgd>k?+x!`}u){ z^c85v$#$>L=S^PoRn+jdo#6Xo16% z{Q0^mDcw$Q?h>3Av$6kj26c^Sbu*eNKVZz;O*TXso?47U zehGw|%s1F3U03^ufl-dnF;`c=v=_3V1XscY0IabA0NR`Of_1gQO1k=LN_zZq-rlyZ z)-C~RZg%cB-A>fk)~1!CN964?aCBoKin0%_wTWIuM>LjCsDJLl$C~rGw!IcvY`QI~ zUS+9A{!-n=!K99ePt?`NsxI%a(#OtE;*3&Kiu55?)BBi$pQ{LQ_tg_ScX~rTqhi2R z{4@NsQ}66GO9NY_MIG4oaRNsf56QAx>T@IFflYA8C%a-Hg6CBFT=C=BJVMQH0d0Xa zJ3n_vjy;-Z#QiRpU16JHWAbiY+>MtrKrbY7kb7vgNS)`I%KZLdp+z-Ci%OaE`S+wZ z;&rI5Nii>8-8V)sL*)`!Sdl(KX*m~J>>vUL0`BLTdD2KTCJ9vybQ<~ma14YD+A{Nd zCg4+y;ncn^(F6AnRDl>Zc_axkKvB}Bqp($|fQ5DBl1qoM@t~veQTq_PQaRVVs4tO% zwBhqm3?mb>!29tTsX6p3G-pFH%A#76u>07f5xw(%7<=uV_qI52EwYdYd7!CEGZ(EF#6O_a@2%elM7~@RhmG z%koBEC+zz%N%h5H_%Y=k=#E3&pyoMUx9yg0rl`L-sf~Yvn{}I^Q>^L<9m9OXZfDR2 z-cEyucKbS_tCy_*o)~fGK)etBX`}E&HKEJGcFd@nq_1-+W#Ujz$pLU*Z7_MnXJ7Kv zwyRRx45uPllj7^VD!RWoptn;9*D>P}6HE$gre&p()=xd;2kYX}#w7MwBj)Dkw<4k# zbYKIAEQ-CJ-Ga;v&Xqy|$_whh?k#`^Ui4?U001=}06>1T_@K~#AN*=I?rwY@ZuYKO z0U{HZjD1gq?Xr83k)*3EMA5y-jKS&h?DAf6!Fq#wewo<1n9)~Ocj5v-PAPDC(LLt0 z%Q~%|jQWg59^TLBGv6JFlW*QTm&*s2`8#JX4kYFe&O=Z;BjR}rF8t5*A7TQSH_(>e z^n)4DFjDLG>f6<`eN(%#TF z(z1&u6~z8Th0kgSKoO+=Q zE=+;gm~8ycd9KS7yFR2~#kzhpR2yl*JAN;5s7XK*6;MAg5$^4Zf7-e1hP&bP5do?z{x| z{qegG(w$(|gU+=2IMu9t(O>;vj}+fB~;Bg^-yDT8;F8%gO>z&TkL4(y?OVc8N~3t-?lGErI9z3u7SVJcRsfn>e1vNNwQ?@=o} zlV@&@6&ocrYvUp8f)tAhNsA*&N=nZk)bjDie|vy7;xzSb^UGHEL((05ws-uLe_L_@ z%j=%!?XL|9g#Jfr)m5EKNC_{?qN4T~=D1f9O*KpF>k?G`U%fH4Qo^p4m7bh0@YYmU z&y9{RdGH*SMIRx<9T7HwxX82tj_hEU+}zxfgyi($#&A*xi@LdJQbX}(I<Qzwg?R+omm8(d z51MbMTaIok>C|bYq2*p-qK<~1Shz2S=+Nf%>?_n(L`UO|M}6@-#d~)Mfj$>=GddEA zHDj?a53&SglQDD|lF~A=TzIB9m|+$yCuFj6vSswDX0h!z9cWFmGd>=>%g4I8O%%v?-(?P04f=&X<-ihdYhoG9*Vus#6kkeDg{P2WAE zSAo#<4$3wu{jCR$8Ewq6=ME!H+-qEp#>_QYV2aVeI1I7oc>2@zVG;Y|Qdqtsm4Y=! z3E?|pTBV{Q#YY1CigjN1@unkPJyw!y3#+KnrKN=7BDGxvT(rEDkaW3i(Vd)4?kW1s zz(-lVAMgWF!E8&m9`ZxQpA(s>Nqj}nF7Vh=3g zWo<@Qof+Y9Wx);a<${=@AygPsaGUIznWSN!y)8cv>Elr>x=*7yoJrR(H5x1Ivvc{a zt*wtNESFuEnL}1)i9cn`ne%c3vUUp`(6r6GgIex8Z+WzOk5!Y4-@6lgXkIF}ar`Lj zl}n_{qDd+n+;s zyoV0=_nCJF>9)^>KAG-u6m&z(Jw`stS+_tz`EmJj zoY1E9)pP-Yb0yJ)L%`m4+Is2(q1zEf#ikrP9e}fP+3$lhGnI%dciE)*E?PPQDk`d) zvJ4Wu(gncNWIX;YPx5uAhm|wkA8s+SI`1mndu}IL3ygK;tG}Ne`?AXY$hb9jV)E|O zU}DelBtfs9B$frv%z|x097t~DB`Z_q;}!mDdM=|$<(*F(J~!Qk8~1Gbf%&_jFf(&= zetzKg@B@;>#Q2B??LA#O!Dl8q7#NT@2&NV~i=C>x{nu6a68;T+D= z@;lKHM37JUBYt0ma|FM@fe^?=c%nK`?6o2kk0hqluFzV`W%|STmByL5hx?}JQN|0u zyG*kA3@r`olxH3m2J3;^Tt?#k-`{T{_DrcI5!I(sPb_-UAQQ;tTAR34v$@d?0dLH?V2LahkQpJ%3n!D51 z6bkCdV=!1Bd>|-Pu9shzt7V&0uImf1(|8`RdE7Zub2<8ZFj^{u~79kL&Np=bzIWeQ4bq)T6Oh zZnTOO`U9tunOPDQO(MAJgW0)0I!E}v0;wLq+Km8xtvFQU{dmMM7b+yzm@NIg0j^r@ z0P~dhpAhv+@buZg%6=I%$)!Nx#BYy}>p-XQ93Rp>8P*Z8%Kl|yuU#jm78bDsy>~P% zZWuw&^wgCv;x@!pr`FTRU z?GJSMxMqhdSbHi&-f%qV#Xa|R&PZvs*|__9FOXYnqe_LA8v$8al_dimLO0-q>GRH; z?|6<`hB*Soi$li6CE#te==~WK3fYFZCL=#FK~I%^y}n@k8RUKNreh_cDKaX8<`(GI zg2SeZp1qRRCEfofl)zrLj~#9O)LgCXZGQ`;-$LoPQ2H&Deha1FLg}|q`Yn|H9}6XG z)AQ6HH*R&_jh*>NoTM4>Z%2vmvA55^Ql$d@A-B&DNs+93#8a}NUqS=rn%Hy6`*qb= z$&XB2r_#GW9-F*Rk3TBY4)g5PZy&lS#r zHzfMnzU+CGIDWaSsw$n%qIw;-e4o$NniZ{fBdskbsXd8bnxRomW35AXO}ktC=v`|( zTNC6Rgl*4dA|<@;-T!1ip3F>q`TTBPH)(4F0iA2V!9*R18`wvnC^J?+_yC(jspIIR zM`==tamHBE+fi=9wL>TzlJb_u!BdK-he57R(Z@c11F;bYV(F=#ZRph)23+V6p52!o zXQ&;5ypHM~0OIt2DY79};PAzt(C%S9V~#DK)F(KUx?hH>D^Vw+*@xFC{4@aXn7ybe z*QrT>yqLtl+!w%vtns25nq;rr`Ji0Del{fGcsW Windows --> Package Manager --> + --> Add package from git url --> + `https://github.com/Unity-Technologies/AssetBundles-Browser.git` + +2. **打包资源** + Unity菜单栏 --> Windows --> Asset Bundle Browser-> Tab: Configure 确认 --> Tab: Build -> Build + +3. **Mod中引用** + 需要引用 `UnityEngine.AssetBundleModule.dll` 包 + + ```csharp + using UnityEngine; + + // 载入ab包 + AssetBundle assetBundle = AssetBundle.LoadFromFile(file_path); + + // 加载资源 + // sprite 图片资源 + assetBundle.LoadAsset(sprite_name); + + // 挂载时机:[HarmonyPath(typeof(Asset),"OnPrefabInit")] + // 资源挂载点:Assets.Sprites + + // prefab 预制体 + GameObject prefab = assetBundle.LoadAsset("gameobject_name"); + gameObjectNameInstance = Util.KInstantiate(prefab); + ``` + +### 2. UI界面 + +**简介:** +在缺氧Mod开发中,自定义UI界面是增强用户体验的重要部分。常见的UI界面包括: +- SideScreen:物品或建筑的侧边信息栏 +- 自定义对话框 +- 配置面板 + +**实现方式:** +1. 使用Unity创建UI预制体,打包到AB包中 +2. 在Mod中加载并实例化这些预制体 +3. 使用Harmony补丁修改游戏的UI系统,将自定义UI集成到游戏中 + +### 3. 动画效果 + +**简介:** +动画效果可以为Mod添加视觉吸引力,包括: +- 粒子效果:如特效、光晕、烟雾等 +- 材质动画:如发光、变色等效果 +- 模型动画:如机械运动、角色动作等 + +**实现方式:** +1. 在Unity中创建动画效果和材质 +2. 打包到AB包中 +3. 在Mod中加载并应用这些效果 + +## 最佳实践 + +1. **资源管理**:合理组织AB包,避免过大的包体 +2. **性能优化**:只加载必要的资源,及时卸载不需要的资源 +3. **版本控制**:为AB包添加版本号,方便更新和兼容性管理 +4. **错误处理**:添加资源加载失败的处理逻辑 + +## 注意事项 + +- 确保使用与游戏版本兼容的Unity版本 +- 避免使用Unity的新特性,确保向后兼容性 +- 测试不同平台上的资源加载情况 +- 遵守Klei的Mod开发规范 + +通过合理使用Unity资源,你可以创建更加丰富和专业的缺氧Mod,为玩家带来更好的游戏体验。 \ No newline at end of file diff --git a/ONIModTutorial/ONIModTutorial-main/steam-workshop-upload.md b/ONIModTutorial/ONIModTutorial-main/steam-workshop-upload.md new file mode 100644 index 0000000..7a4a05a --- /dev/null +++ b/ONIModTutorial/ONIModTutorial-main/steam-workshop-upload.md @@ -0,0 +1,64 @@ +# 📤 Steam Workshop 上传指南 + +配置好 `mod_info.yaml` 后,你可以使用《缺氧》游戏内置的工具将 Mod 上传至创意工坊。 + +--- + +## 一 . 上传工具 + +

gzAn!Cs!qe#u+G%` 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