From 8caf6c2b10a41ad0d9923c087bf17618bca5d780 Mon Sep 17 00:00:00 2001 From: A1300399510 <1300399510@qq.com> Date: Mon, 20 Oct 2025 01:36:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=AE=BA=E5=9D=9B?= =?UTF-8?q?=E9=A6=96=E9=A1=B5=E7=9B=B8=E5=85=B3=E8=B5=84=E6=BA=90=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=92=8C=E5=9F=BA=E7=A1=80=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增论坛首页所需的图片资源、CSS样式文件、Vue组件和基础功能实现。包括: 1. 添加多个图标图片资源 2. 创建index.css和sectionIndex.css样式文件 3. 实现论坛首页的Vue组件结构和基础交互 4. 添加论坛板块列表和帖子展示功能 5. 实现公共样式和布局组件 --- css/index copy.css | 354 + css/index.css | 42 + css/index.less | 59 +- css/sectionIndex.less | 430 + img/bi-copper-icon.png | Bin 0 -> 2336 bytes img/collect-golden.svg | 6 + img/collect-gray.png | Bin 0 -> 25959 bytes img/discuss-icon.png | Bin 0 -> 2811 bytes img/essence-icon.png | Bin 0 -> 72700 bytes img/like-icon.png | Bin 0 -> 1254 bytes img/like-red-icon.png | Bin 0 -> 965 bytes img/logo-icon.png | Bin 0 -> 4537 bytes img/recommend-icon.png | Bin 0 -> 66979 bytes img/sections-left.svg | 6 + img/share-gray.png | Bin 0 -> 1417 bytes index.html | 158 +- js/axios.min.js | 2 + js/index.js | 75 + js/sectionIndex.js | 9 + js/vue.global.js | 18039 +++++++++++++++++++++++++++++++++++++++ sectionIndex.html | 24 + 21 files changed, 19193 insertions(+), 11 deletions(-) create mode 100644 css/index copy.css create mode 100644 css/sectionIndex.less create mode 100644 img/bi-copper-icon.png create mode 100644 img/collect-golden.svg create mode 100644 img/collect-gray.png create mode 100644 img/discuss-icon.png create mode 100644 img/essence-icon.png create mode 100644 img/like-icon.png create mode 100644 img/like-red-icon.png create mode 100644 img/logo-icon.png create mode 100644 img/recommend-icon.png create mode 100644 img/sections-left.svg create mode 100644 img/share-gray.png create mode 100644 js/axios.min.js create mode 100644 js/index.js create mode 100644 js/sectionIndex.js create mode 100644 js/vue.global.js create mode 100644 sectionIndex.html diff --git a/css/index copy.css b/css/index copy.css new file mode 100644 index 0000000..073b4c8 --- /dev/null +++ b/css/index copy.css @@ -0,0 +1,354 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: "PingFangSC-Regular", "PingFang SC", sans-serif; + font-weight: 400; + font-style: normal; +} +body { + padding: 10px; + background-color: #eef2f5; +} +/* 公共的 css 样式 */ +.flexflex { + display: flex; +} +.flexcenter { + display: flex; + justify-content: center; + align-items: center; +} +.flexjcenter { + display: flex; + justify-content: center; +} +.flexacenter { + display: flex; + align-items: center; +} +.flex1 { + flex: 1; +} +.flexcolumn { + display: flex; + flex-direction: column; +} +.one-line-display { + word-break: keep-all; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.topic-and-selectives .head-top { + width: 64px; + height: 24px; + border-radius: 20px 20px 20px 0; + margin-bottom: 10px; +} +.topic-and-selectives .head-top .icon { + width: 15px; + height: 12px; + margin-right: 3px; +} +.topic-and-selectives .head-top .text { + font-family: "PingFangSC-Regular", "PingFang SC", sans-serif; + font-weight: 400; + font-style: normal; + color: #ffffff; + font-size: 14px; +} +.topic-and-selectives .topic-box { + width: 308px; + height: 320px; + background-color: #ffffff; + border: 1px solid #e9eef2; + border-radius: 10px; + padding: 10px; + margin-right: 12px; +} +.topic-and-selectives .topic-box .head-top { + background-color: #f4ae38; +} +.topic-and-selectives .topic-box .topic-head { + height: 109px; + background-color: #f6f6f6; + border-radius: 8px; + flex-direction: column; + justify-content: space-between; + padding: 12px 16px; + margin-bottom: 12px; +} +.topic-and-selectives .topic-box .topic-head .title { + font-size: 16px; + color: #000000; + line-height: 23px; +} +.topic-and-selectives .topic-box .topic-head .hint { + font-family: "PingFangSC-Regular", "PingFang SC", sans-serif; + font-weight: 400; + font-style: normal; + font-size: 16px; + color: #7f7f7f; +} +.topic-and-selectives .topic-box .topic-head .people { + position: relative; + justify-content: space-between; +} +.topic-and-selectives .topic-box .topic-head .people::after { + content: ""; + position: absolute; + top: 0; + left: 0; + transform: translateY(-100%); + width: 30px; + height: 4px; + background-color: #f4ae38; + border-radius: 150px; +} +.topic-and-selectives .topic-box .topic-head .people .left { + color: #aaaaaa; + font-size: 13px; +} +.topic-and-selectives .topic-box .topic-head .people .left .number { + color: #333333; + margin-right: 3px; +} +.topic-and-selectives .topic-box .topic-head .people .right .item { + width: 26px; + height: 26px; + border-radius: 50%; +} +.topic-and-selectives .topic-box .topic-head .people .right .item .img { + width: 26px; + height: 26px; + border-radius: 50%; +} +.topic-and-selectives .topic-box .topic-head .people .right .item:nth-child(6) { + margin-right: -9px; +} +.topic-and-selectives .topic-box .topic-head .people .right .item:nth-child(5) { + margin-right: -9px; +} +.topic-and-selectives .topic-box .topic-head .people .right .item:nth-child(4) { + margin-right: -7px; +} +.topic-and-selectives .topic-box .topic-list .item:hover { + color: #000000; +} +.topic-and-selectives .topic-box .topic-list .item:not(:last-child) { + margin-bottom: 1px; +} +.topic-and-selectives .topic-box .topic-list .item .img { + width: 12px; + height: 10px; + margin-right: 9px; +} +.topic-and-selectives .topic-box .topic-list .item .text { + font-size: 14px; + color: #555555; + line-height: 28px; +} +.topic-and-selectives .selectives-box { + width: 628px; + height: 320px; + background-color: #ffffff; + border: 1px solid #e9eef2; + border-radius: 10px; + padding: 10px; +} +.topic-and-selectives .selectives-box .head-top { + background-color: #f68251; + margin-bottom: 22px; +} +.topic-and-selectives .selectives-box .list { + flex-wrap: wrap; + padding: 0 5px; + justify-content: space-between; +} +.topic-and-selectives .selectives-box .list .item { + font-size: 14px; + color: #555555; + line-height: 20px; + margin-bottom: 12px; + position: relative; +} +.topic-and-selectives .selectives-box .list .item .dot { + width: 6px; + height: 6px; + border-radius: 50%; + background-color: #f68251; + margin-right: 10px; +} +.topic-and-selectives .selectives-box .list .item .text { + width: 265px; +} +.forum-sections-list { + position: relative; + width: 897px; + height: 240px; + background-color: #ffffff; + border: 1px solid #e9eef2; + border-radius: 10px; + padding-left: 70px; + padding-top: 20px; +} +.forum-sections-list .img { + position: absolute; + top: -1px; + left: -1px; + width: 60px; + height: 240px; +} +.forum-sections-list .title { + font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif; + font-weight: 650; + font-style: normal; + font-size: 16px; + color: #000000; + margin-bottom: 16px; +} +.forum-sections-list .list .line:not(:last-child) { + margin-bottom: 10px; +} +.forum-sections-list .list .line .item { + font-family: "PingFangSC-Regular", "PingFang SC", sans-serif; + font-weight: 400; + font-style: normal; + font-size: 14px; + color: #333; + padding: 0 18px; + height: 32px; + background-color: #f6f6f6; + border: 1px solid #f2f2f2; + border-radius: 16px; + cursor: pointer; +} +.forum-sections-list .list .line .item:not(:last-child) { + margin-right: 10px; +} +.item-box { + width: 897px; + background-color: #ffffff; + border: 1px solid #e9eef2; + border-radius: 10px; + padding: 18px 20px 0; +} +.item-box .item-head { + margin-bottom: 14px; +} +.item-box .item-head .avatar { + width: 28px; + height: 28px; + border-radius: 50%; + margin-right: 8px; +} +.item-box .item-head .name { + font-style: normal; + color: #555555; + font-size: 14px; + margin-right: 8px; +} +.item-box .item-head .group { + height: 15px; + margin-right: 8px; +} +.item-box .item-head .time { + font-size: 13px; + color: #aaaaaa; +} +.item-box .item-head .view { + font-size: 12px; + color: #aaaaaa; + margin-right: 15px; +} +.item-box .item-head .view .icon { + width: 13px; + height: 8px; + margin-right: 5px; +} +.item-box .item-head .btn { + width: 24px; + height: 16px; + background-color: #f2f2f2; + border-radius: 150px; +} +.item-box .item-head .btn .icon { + width: 18px; + height: 18px; +} +.item-box .label { + margin-bottom: 10px; +} +.item-box .label .item { + font-size: 14px; + color: #555555; + padding: 0 9px; + height: 24px; + line-height: 24px; + background-color: #f2f2f2; + border-radius: 6px; +} +.item-box .label .item.icon { + padding: 0; +} +.item-box .label .item:not(:last-child) { + margin-right: 10px; +} +.item-box .label .item.blue { + color: #ffffff; + background-color: #04b0d5; +} +.item-box .title { + font-weight: 650; + font-size: 20px; + color: #000000; + line-height: 36px; + margin-bottom: 7px; + font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif; +} +.item-box .message { + font-size: 14px; + color: #555555; + white-space: pre-wrap; + margin-bottom: 15px; +} +.item-box .comment { + height: 40px; + background-color: #f6f6f6; + border-radius: 10px; + padding: 0 10px; +} +.item-box .comment .icon { + width: 20px; + height: 20px; + border-radius: 50%; + margin-right: 10px; +} +.item-box .comment .text { + font-size: 14px; + color: #7f7f7f; +} +.item-box .bottom { + height: 55px; + justify-content: flex-end; +} +.item-box .bottom .bottom-item { + cursor: pointer; +} +.item-box .bottom .bottom-item:not(:last-child) { + margin-right: 60px; +} +.item-box .bottom .bottom-item .icon { + width: 20px; + height: 20px; + margin-right: 8px; +} +.item-box .bottom .bottom-item .text { + color: #aaaaaa; + font-size: 13px; +} +.item-box .bottom .bottom-item.like .icon { + width: 18px; + height: 18px; +} diff --git a/css/index.css b/css/index.css index 830576d..11fd36a 100644 --- a/css/index.css +++ b/css/index.css @@ -1,4 +1,46 @@ * { margin: 0; padding: 0; + box-sizing: border-box; + font-family: "PingFangSC-Regular", "PingFang SC", sans-serif; + font-weight: 400; + font-style: normal; +} +body { + padding: 10px; + background-color: #eef2f5; +} +/* 公共的 css 样式 */ +.flexflex { + display: flex; +} +.flexcenter { + display: flex; + justify-content: center; + align-items: center; +} +.flexjcenter { + display: flex; + justify-content: center; +} +.flexacenter { + display: flex; + align-items: center; +} +.flex1 { + flex: 1; +} +.flexcolumn { + display: flex; + flex-direction: column; +} +.one-line-display { + word-break: keep-all; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +#sectionIndex .head .logo { + width: 136px; + height: 68px; } diff --git a/css/index.less b/css/index.less index afafd28..f11e6f4 100644 --- a/css/index.less +++ b/css/index.less @@ -1,4 +1,59 @@ -*{ +* { margin: 0; padding: 0; -} \ No newline at end of file + box-sizing: border-box; + font-family: "PingFangSC-Regular", "PingFang SC", sans-serif; + font-weight: 400; + font-style: normal; +} + +body { + padding: 10px; + background-color: rgba(238, 242, 245, 1); +} + +/* 公共的 css 样式 */ +.flexflex { + display: flex; +} + +.flexcenter { + display: flex; + justify-content: center; + align-items: center; +} + +.flexjcenter { + display: flex; + justify-content: center; +} + +.flexacenter { + display: flex; + align-items: center; +} + +.flex1 { + flex: 1; +} + +.flexcolumn { + display: flex; + flex-direction: column; +} + +.one-line-display { + word-break: keep-all; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +#sectionIndex { + .head { + .logo { + width: 136px; + height: 68px; + } + } +} diff --git a/css/sectionIndex.less b/css/sectionIndex.less new file mode 100644 index 0000000..11209b3 --- /dev/null +++ b/css/sectionIndex.less @@ -0,0 +1,430 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: "PingFangSC-Regular", "PingFang SC", sans-serif; + font-weight: 400; + font-style: normal; +} + +body { + padding: 10px; + background-color: rgba(238, 242, 245, 1); +} + +/* 公共的 css 样式 */ +.flexflex { + display: flex; +} + +.flexcenter { + display: flex; + justify-content: center; + align-items: center; +} + +.flexjcenter { + display: flex; + justify-content: center; +} + +.flexacenter { + display: flex; + align-items: center; +} + +.flex1 { + flex: 1; +} + +.flexcolumn { + display: flex; + flex-direction: column; +} + +.one-line-display { + word-break: keep-all; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.topic-and-selectives { + .head-top { + width: 64px; + height: 24px; + border-radius: 20px 20px 20px 0; + margin-bottom: 10px; + .icon { + width: 15px; + height: 12px; + margin-right: 3px; + } + + .text { + font-family: "PingFangSC-Regular", "PingFang SC", sans-serif; + font-weight: 400; + font-style: normal; + color: #ffffff; + font-size: 14px; + } + } + + .topic-box { + width: 308px; + height: 320px; + background-color: rgba(255, 255, 255, 1); + border: 1px solid rgba(233, 238, 242, 1); + border-radius: 10px; + padding: 10px; + margin-right: 12px; + + .head-top { + background-color: rgba(244, 174, 56, 1); + } + + .topic-head { + height: 109px; + background-color: rgba(246, 246, 246, 1); + border-radius: 8px; + flex-direction: column; + justify-content: space-between; + padding: 12px 16px; + margin-bottom: 12px; + + .title { + font-size: 16px; + color: #000000; + line-height: 23px; + } + + .hint { + font-family: "PingFangSC-Regular", "PingFang SC", sans-serif; + font-weight: 400; + font-style: normal; + font-size: 16px; + color: #7f7f7f; + } + + .people { + position: relative; + justify-content: space-between; + &::after { + content: ""; + position: absolute; + top: 0; + left: 0; + transform: translateY(-100%); + width: 30px; + height: 4px; + background-color: rgba(244, 174, 56, 1); + border-radius: 150px; + } + + .left { + color: #aaaaaa; + font-size: 13px; + + .number { + color: #333333; + + margin-right: 3px; + } + } + + .right { + .item { + width: 26px; + height: 26px; + border-radius: 50%; + .img { + width: 26px; + height: 26px; + border-radius: 50%; + } + + &:nth-child(6) { + margin-right: -9px; + } + + &:nth-child(5) { + margin-right: -9px; + } + + &:nth-child(4) { + margin-right: -7px; + } + } + } + } + } + + .topic-list { + .item { + &:hover { + color: #000000; + } + + &:not(:last-child) { + margin-bottom: 1px; + } + + .img { + width: 12px; + height: 10px; + margin-right: 9px; + } + + .text { + font-size: 14px; + color: #555555; + line-height: 28px; + } + } + } + } + + .selectives-box { + width: 628px; + height: 320px; + background-color: #ffffff; + border: 1px solid #e9eef2; + border-radius: 10px; + padding: 10px; + + .head-top { + background-color: rgba(246, 130, 81, 1); + margin-bottom: 22px; + } + + .list { + flex-wrap: wrap; + padding: 0 5px; + justify-content: space-between; + + .item { + font-size: 14px; + color: #555555; + line-height: 20px; + margin-bottom: 12px; + position: relative; + + .dot { + width: 6px; + height: 6px; + border-radius: 50%; + background-color: #f68251; + margin-right: 10px; + } + + .text { + width: 265px; + } + } + } + } +} + +.forum-sections-list { + position: relative; + width: 897px; + height: 240px; + background-color: rgba(255, 255, 255, 1); + border: 1px solid rgba(233, 238, 242, 1); + border-radius: 10px; + padding-left: 70px; + padding-top: 20px; + + .img { + position: absolute; + top: -1px; + left: -1px; + width: 60px; + height: 240px; + } + + .title { + font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif; + font-weight: 650; + font-style: normal; + font-size: 16px; + color: #000000; + margin-bottom: 16px; + } + + .list { + .line { + &:not(:last-child) { + margin-bottom: 10px; + } + .item { + font-family: "PingFangSC-Regular", "PingFang SC", sans-serif; + font-weight: 400; + font-style: normal; + font-size: 14px; + color: #333; + padding: 0 18px; + height: 32px; + background-color: rgba(246, 246, 246, 1); + border: 1px solid rgba(242, 242, 242, 1); + border-radius: 16px; + cursor: pointer; + + &:not(:last-child) { + margin-right: 10px; + } + } + } + } +} + +.item-box { + width: 897px; + background-color: rgba(255, 255, 255, 1); + border: 1px solid rgba(233, 238, 242, 1); + border-radius: 10px; + padding: 18px 20px 0; + + .item-head { + margin-bottom: 14px; + .avatar { + width: 28px; + height: 28px; + border-radius: 50%; + margin-right: 8px; + } + + .name { + font-style: normal; + color: #555555; + font-size: 14px; + margin-right: 8px; + } + + .group { + height: 15px; + margin-right: 8px; + } + + .time { + font-size: 13px; + color: #aaaaaa; + } + + .view { + font-size: 12px; + color: #aaaaaa; + margin-right: 15px; + + .icon { + width: 13px; + height: 8px; + margin-right: 5px; + } + } + + .btn { + width: 24px; + height: 16px; + background-color: rgba(242, 242, 242, 1); + border-radius: 150px; + + .icon { + width: 18px; + height: 18px; + } + } + } + + .label { + margin-bottom: 10px; + + .item { + font-size: 14px; + color: #555555; + padding: 0 9px; + height: 24px; + line-height: 24px; + background-color: rgba(242, 242, 242, 1); + border-radius: 6px; + + &.icon { + padding: 0; + } + + &:not(:last-child) { + margin-right: 10px; + } + + &.blue { + color: #ffffff; + background-color: #04b0d5; + } + } + } + + .title { + font-weight: 650; + font-size: 20px; + color: #000000; + line-height: 36px; + margin-bottom: 7px; + font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif; + } + + .message { + font-size: 14px; + color: #555555; + white-space: pre-wrap; + margin-bottom: 15px; + } + + .comment { + height: 40px; + background-color: rgba(246, 246, 246, 1); + border-radius: 10px; + padding: 0 10px; + + .icon { + width: 20px; + height: 20px; + border-radius: 50%; + margin-right: 10px; + } + + .text { + font-size: 14px; + color: #7f7f7f; + } + } + + .bottom { + height: 55px; + justify-content: flex-end; + + .bottom-item { + cursor: pointer; + &:not(:last-child) { + margin-right: 60px; + } + + .icon { + width: 20px; + height: 20px; + margin-right: 8px; + } + + .text { + color: #aaaaaa; + font-size: 13px; + } + + &.like { + .icon { + width: 18px; + height: 18px; + } + } + } + } +} diff --git a/img/bi-copper-icon.png b/img/bi-copper-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0dbbef75c4cd6d2294912e9e98c299560c66ab4a GIT binary patch literal 2336 zcmV+*3E%dKP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuEib+I4RCodHn^|%jHxPy;Z?9%f zkjV+moIv9fh&e$f=I7k^Zg7kn!z+?AxBE8 zVpNR*G#b79Xf!ZGd1vQG`F|s@dmHXgr_^(&z8nmBWWW5aQ+ZO zCk@iCaAdCM$&)AZ23~Xc-Me=q^sFBk9-2(o#4#Yey6(1Xbq3(gn>SkZtVa9=M$aBR zcyPQ;Xcpybt9|z|`^c+<{Hmvo@(7n&cO?ywqRtD>}3X%zu= zVb7|+ybZ@KZ?Nka`U`6eTC45Q7y$}7gk?NdIrz7nmoe;j<%HOt&z$X+-8ro`0^Cuj z(6`C~2F$F1+oll-89L3dCtp0~8oh|w6a~N~y^l;B7?b}q&U@QxK)6)Sh$Y4779f#K zEa$c7`&xOO^B5l6!``=6wQQ1Y2D47Di9uhJ%m~1!A*1h&N#`g^4SHu%amD&fq{v-h z%${M;uh_l}>9Ghn3K{8N5lSP2-kIb8&UNTqSH9^i$e4hQ8RRQtXkyTIDgZb`(vTS= zC$W7L^49g0TNt16sLl&faN@>t+9nNbTp{b&n7fbsB&1gWVDdO*qJKdqwS*e1^(1#m z85&&vrfCdyBe|pbBAmsW>m;O=0B|d?A2QLeOf+~JN$y-8)i9=Pk6wUA$0XFl;{F~+ zSqT7E$1?7skF2kx*KmjT_P!9W?`&E-n=82>^sxj0$}Gk6O^xvL!ldWvHT993Q^V3~ zXl8Jg7C8jKIzB8RhFqKE964ij5ONTbFNumjLb~HU>j8wBA-m*b4nX7>Qur?oA+1Pt z&LiMd$x6u;5dJg-3b3s}aJGlrU{Lfm2jJVcZ)s=*hAl!`+rDmj@R}NCM$Ql$^jQ2g0HYRa(4Ls4W_d z76_U@1%#;@T?^Z+;sXnt+m!O4M8^B8b99}>D zSW~UJO+4FBl+}qc$cpN*%hK!xHNnX+^ zz~CQw1cO??I6ZFrF;>Yrn6GYbXAyw&kdfC%YjVi8?km|S(KRJ6moQBk?j-rhU`(%m ze@IyQg(<)wV$Z-JUwT>*fSl+DNi>OXx2cur3du`nzE!5htEgvSj6(LDxw!G+o$7Z;o7Merp@@xsvNf z#Rn4i$`9uN+`W6(0$|TGcCG!EV4elS06KoJKacIO=cn{5hC)*mrJMe`%v?oI#fPG= zyJAvttMJ!9z3YG3bH5PUt7}U47OO3A9~m=sf?N=ihsN02c>!sRwIbn@{$%H4$c#@v z`Flwo0gg~vEfV1<6wtM=)*kgTTi1XvV+H=KnQ*>Ewl9f|*nH}I%y~-@;Ha~F^tzGu z5d{)g^Yup`N=DZzH*dKcXBtWX{Ns>T0YIw+(?!S#qSKJJNxzT}O4Bi}^BZGHfa~Zq zR@O(7l3cdc8fcvF1z3f?K9+4PE~Z$z83_ z&^`z(P;ME9$ zQUqNX!UkmUGe9^r#%`2^&Lfxbv=CvD^R2!eG;RSe*@fDI{zFd->ZNiJMSvu z+?^!JiRFf(we`D1YXGFfy)rLoK2kqY<^b`kZy=oGinKJMSLD_!?`3oXK$9E@Gn!Un z6pJql?hG?NKIs0fgxR@B*VnIK_X+ik$!UXtQ|^Gp zMgS;kaxYaWv|-_i-6gKz(SBY(Wc5YeJs!Rv$Nwe#xR)x00007(yrj literal 0 HcmV?d00001 diff --git a/img/collect-golden.svg b/img/collect-golden.svg new file mode 100644 index 0000000..e26dec7 --- /dev/null +++ b/img/collect-golden.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/img/collect-gray.png b/img/collect-gray.png new file mode 100644 index 0000000000000000000000000000000000000000..8e98585aeee6a25ea4e74d00d6d1592b1a9d90ae GIT binary patch literal 25959 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%0A?L>fL30>fckZBmbA?XDux)H5nNh)zha> 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
7$vq$}~pMHMqW@T#aTYwjsUK(@`irF|X!Wq|{! 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 iqc1}q4}Cnv<^Ka|dCDcQ*R~ literal 0 HcmV?d00001 diff --git a/img/like-icon.png b/img/like-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e8625e2072b98397ac994964b442ea7b8245d2d5 GIT binary patch literal 1254 zcmVn4T&OKPHJcud4`x5A0or~x-OH?5D44^{js zj78-5{QTS}md?fuVC=28x3>|giB`pD5)P}FgpC=%==T}@6Vf>h!+7L5Roq`F6Q2Km zadFX;lG%s>v+h5UCYTlO#K-&c^0LR@JEVIk0aNftx8y0T<4Fu&Z{Cb z$+=>TG2k1qGz?TZ7!VK=FwTdJvnM&^oi{L`)HRp-W_he*fMVU(twQAn&`Fa{zK|v; z(n(I9J}1w8(ump_KoL!f_(__ehyhH1C#iEs?F^s@m(WIW3Z2b)ttT27@ITJMlSN9KTngb@lCoTj7Mg$v0@P73$fRmrPjHv=l6sOSmD=;7+B&dx6EM66F zqXb0@m>Kv)ngH`kU2~~#reNXfviF0ug%VKwBgNaKOUc;@K4X9-B~q#Z6tB9b7M)dO z?#)jYOpr@xqc}qhXiABcW&jITi|xt$F(2|bi|1E*ieO|&kr zs%TCw1CFb){DM%UBRT(LR0ag(3Dgq=AEn81bI2$)kR>o&H+fJN)x3InKdKsZ8iK5vG2GT=c1iqy@37lMf*!f&UwH-Njw%-el+C#Y`T zv^RkI9Ld-Kv1UtP8w_v>Z4~E$HMfY_2881wDQarKh+v}#YUt8nmo(b|3Ni?D)YO20 zkboMZ3D??yMH?W(6s-*?vRhlh?WLW zlN$3jij%oc?F^tEn=nFY?pSAsm_RE7sHIKlNow<>NMHX$G7SJvva#e-aVE$|UyUW7 znuDg@bMkW}17*NiME*p&@=W(_x<4VG!^jzHU3f)J4pE<&iTaI@`l*S>Wn-Vm+CWnu z8;wSb&W~jQ22wW;$^;h^PIy>%o>7mk_oV;^iogiv)>~01Gx&4}P+2 Qc>n+a07*qoM6N<$g40en8~^|S literal 0 HcmV?d00001 diff --git a/img/like-red-icon.png b/img/like-red-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ee031dd480e81baa1aca38de63e36c3207133f25 GIT binary patch literal 965 zcmV;$13LVPP)-k(jC?u&&q`ZY&2t_p5OOg|~ zMq!v0^thi$c@4KPhzAFzm9%~2E(kdi2xZwyx)!E zK0G6AzW~gayS-jShG3W#HWmO0(kvLJ@GGYd0_dAGmKfpOb|@o&$zi}SE0h%A4gws( zs~l?rjH0MbSO>t}h}|SHa<4{Cx{6U4#-!8-xEoPx0oGjytfJNetg{MyirNZLcI;~u z(G6CHEiwSZjPekM-&v`BDnnhTK?J@o0^b?jQYfNN=m8gSE611sD1Ysbr-82tD}~AG z5W|cx3W6&%ZCGir7I<5$wLqz?ZyDxa82?RpMyOl>bp7UNGPx}s_+}`BGk}I+m4dGS z6-`7Hp->zZL|rP$PLkZ9c?82Mqw0q@Knm+4rko?D3<*>wKn)%~Pl{4oN0-_b0_d?j zo=lG6`mjfMN)4XsMpa~cFF=Z(aKLbA90ZXf`V6-Tdm60E+4DM$IKIQtf=aTz7eJTY zdEJ%Ta;dt~DbF$rGYn(w_Tj&S6$XD?q^9*3APjGjulqPI4)ZyZlP-b!3lIco*8_i8 zBqwzi059^=Z2|Dr$z=iVQDyR-6@Y~}($l%K0^sd48gfp_rbrEs_l^tZtj-v-~nFHWwYP!|DI?xp47haea*(J}nurnxPP)yQ&+_nQgVv=Q)Jg n2f03a;+;3$%F}=DUg!J)^fuWj_k@X&00000NkvXXu0mjfl>e(g literal 0 HcmV?d00001 diff --git a/img/logo-icon.png b/img/logo-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cd58d989b4af79a5f287426b80c2f2253d0e1bfc GIT binary patch literal 4537 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 aK9O!{2@~3!UC#Y?HqqBHhBs(A#{C~30DUn4 literal 0 HcmV?d00001 diff --git a/img/recommend-icon.png b/img/recommend-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..48f2bf3c5bb2de57bc7931df9758817da9c627b0 GIT binary patch literal 66979 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

$e0bfzRvObtk%gu6TAc8sD5on^(<`Z4E;7$Q8 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 literal 0 HcmV?d00001 diff --git a/img/sections-left.svg b/img/sections-left.svg new file mode 100644 index 0000000..b531bdd --- /dev/null +++ b/img/sections-left.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/img/share-gray.png b/img/share-gray.png new file mode 100644 index 0000000000000000000000000000000000000000..e7766388643a4c0b58ed7902c9f4e93739687dc8 GIT binary patch literal 1417 zcmV;41$O$0P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91Jpcdz07nyM&Hw-e^GQTORA>e5TH8_MFcc-czFmSl zAXI?2f(;em%<%XGDuAs3_LIj5$pmy^=bACyc?oU7tfEw!^7S@^{=n5 z>B||O2A=lD#>Q#0*&LueS8@^n-~oW20r<&Wtu1am1c2>%0Dyo$=q@z69M)>J-GhUJ zuA$2;u1X7ne|~=MOq@~AdObk^z~94y;gx54Twh-w%-P{X zihTUcb)jViE3K}sb}dB-1U2$o@GZmug>Z?#2psJR|Dn^1BO@V!Y$Zv6^|CAi0l&V! zet&y=i{Mj)g*v2fkeSVzxH#^Bgr-@c)C4eexh4T{15O8~;|rF#I0hhLSJy8k0k^le z4UFzFz(?BA56l}Np$-x_WmZZ>03Cx*7b?_05VPGBcAZ15DGdP#_cM(6xppigf56J$ z1yO^wwY47VjRB!v9r8t5eg0yYdyc{hP%HX9oQ~3*R(fuj66_e;CIGVzA}EG@X6no` z`rx7K+|(6H07G7Fy+hL}v&<2LQ2+L!KBXl~RHcuUOs7i#M?QpS^ zdSPaZxerH>{KR|@7ilM#DWDED4I9Ep`nA8m-*)I{ zQmN5SW-?AO$|VA@C~>r8dc>&3Qkl2xJp$Bk^>+!3ySoMEy=-PCS^2OBV@4tWL%7p@ zdnW+b-LcEd&CShAm)?gC>rV^q5)jHkkDK@X_Keyl>qMc0EVYD zop|hRYoQFeR|0rC1K>JF{S;uEC{MkfDuNL2TVed<4FHUhP|D;r0!oQkI8_lK2w6I@ zih!jXasjxC071yoiB$wF-H;2wRRjn^zMQBpKP506)P~f_25dNXYWlaGpacRMDABTuG{37`ya9GoMf&kvx^X3MIKfefQ z4dXX(O?*QzF$J_WbNqyaPft%V=1c@Jz_W$tv!n+&I>6I||Lv^L?LG^r%Fl{{4`$#m XduHYGRPam}00000NkvXXu0mjf;8AJ_ literal 0 HcmV?d00001 diff --git a/index.html b/index.html index cb646fe..724a809 100644 --- a/index.html +++ b/index.html @@ -1,13 +1,153 @@ - - - - Document - + + + + Document + + + - - -

- + +
+ +
+
+
+ +
话题
+
+
+
{{ ongoingbj.title }}
+
{{ ongoingbj.description }}
+
+
+
{{ ongoingbj.comments }}
+
人正在讨论
+
+
+
+ +
+
+
+
+
+
+ +
{{ item.title }}
+
+
+
+ +
+
+ +
精选
+
+
+
+
+
美国各院校申请时间汇总(一)美国各院校申请时间汇总(一)美国各院校申请时间汇总(一)
+
+
+
+
+ +
+ +
论坛版块
+
+
+
香港
+
香港
+
香港
+
+
+
经济/商科
+
经济/商科
+
经济/商科
+
+
+
香港
+
香港
+
香港
+
+
+
香港
+
香港
+
香港
+
+
+
+ +
+
+ +
小P学姐
+ +
2025-8-11 01:30
+
+ +
+ +
3016
+
+ +
+ +
+ + +
+ +
+ + +
香港
+
香港
+
+ +
【干货】香港留学费用准备
+ +
在即将赴港的时候,很多同学好奇香港一年制硕士下来的整体费用大概是多少,其实主要包括学费,租房费和生活费三部分。学费的话根据不同香港来定,大概在10-30万港币之间,比较固定…
+ +
+ +
在即将赴港的时候,很多同学好奇香港一年制硕士下来的整体费用大概是多少,其实主要包括学费,租房费和生活费三部分。学费的话根据不同香港来定,大概在10-30万港币之间,比较固定…
+
+ +
+ + + + +
+
+
+ + + diff --git a/js/axios.min.js b/js/axios.min.js new file mode 100644 index 0000000..906df9e --- /dev/null +++ b/js/axios.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(e){var r,n;function o(r,n){try{var a=e[r](n),u=a.value,s=u instanceof t;Promise.resolve(s?u.v:u).then((function(t){if(s){var n="return"===r?"return":"next";if(!u.k||t.done)return o(n,t);t=e[n](t).value}i(a.done?"return":"normal",t)}),(function(e){o("throw",e)}))}catch(e){i("throw",e)}}function i(e,t){switch(e){case"return":r.resolve({value:t,done:!0});break;case"throw":r.reject(t);break;default:r.resolve({value:t,done:!1})}(r=r.next)?o(r.key,r.arg):n=null}this._invoke=function(e,t){return new Promise((function(i,a){var u={key:e,arg:t,resolve:i,reject:a,next:null};n?n=n.next=u:(r=n=u,o(e,t))}))},"function"!=typeof e.return&&(this.return=void 0)}function t(e,t){this.v=e,this.k=t}function r(e){var r={},n=!1;function o(r,o){return n=!0,o=new Promise((function(t){t(e[r](o))})),{done:!1,value:new t(o,1)}}return r["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},r.next=function(e){return n?(n=!1,e):o("next",e)},"function"==typeof e.throw&&(r.throw=function(e){if(n)throw n=!1,e;return o("throw",e)}),"function"==typeof e.return&&(r.return=function(e){return n?(n=!1,e):o("return",e)}),r}function n(e){var t,r,n,i=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,n=Symbol.iterator);i--;){if(r&&null!=(t=e[r]))return t.call(e);if(n&&null!=(t=e[n]))return new o(t.call(e));r="@@asyncIterator",n="@@iterator"}throw new TypeError("Object is not async iterable")}function o(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return o=function(e){this.s=e,this.n=e.next},o.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return void 0===r?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return void 0===r?Promise.reject(e):t(r.apply(this.s,arguments))}},new o(e)}function i(e){return new t(e,0)}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function u(e){for(var t=1;t=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),j(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function l(t){return function(){return new e(t.apply(this,arguments))}}function h(e,t,r,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){return void r(e)}u.done?t(s):Promise.resolve(s).then(n,o)}function p(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){h(i,n,o,a,u,"next",e)}function u(e){h(i,n,o,a,u,"throw",e)}a(void 0)}))}}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]?arguments[2]:{},i=o.allOwnKeys,a=void 0!==i&&i;if(null!=e)if("object"!==f(e)&&(e=[e]),N(e))for(r=0,n=e.length;r0;)if(t===(r=n[o]).toLowerCase())return r;return null}var Q="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Z=function(e){return!_(e)&&e!==Q};var ee,te=(ee="undefined"!=typeof Uint8Array&&A(Uint8Array),function(e){return ee&&e instanceof ee}),re=P("HTMLFormElement"),ne=function(e){var t=Object.prototype.hasOwnProperty;return function(e,r){return t.call(e,r)}}(),oe=P("RegExp"),ie=function(e,t){var r=Object.getOwnPropertyDescriptors(e),n={};$(r,(function(r,o){var i;!1!==(i=t(r,o,e))&&(n[o]=i||r)})),Object.defineProperties(e,n)},ae="abcdefghijklmnopqrstuvwxyz",ue="0123456789",se={DIGIT:ue,ALPHA:ae,ALPHA_DIGIT:ae+ae.toUpperCase()+ue};var ce,fe,le,he,pe=P("AsyncFunction"),de=(ce="function"==typeof setImmediate,fe=U(Q.postMessage),ce?setImmediate:fe?(le="axios@".concat(Math.random()),he=[],Q.addEventListener("message",(function(e){var t=e.source,r=e.data;t===Q&&r===le&&he.length&&he.shift()()}),!1),function(e){he.push(e),Q.postMessage(le,"*")}):function(e){return setTimeout(e)}),ve="undefined"!=typeof queueMicrotask?queueMicrotask.bind(Q):"undefined"!=typeof process&&process.nextTick||de,ye={isArray:N,isArrayBuffer:C,isBuffer:function(e){return null!==e&&!_(e)&&null!==e.constructor&&!_(e.constructor)&&U(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||U(e.append)&&("formdata"===(t=j(e))||"object"===t&&U(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&C(e.buffer)},isString:F,isNumber:B,isBoolean:function(e){return!0===e||!1===e},isObject:D,isPlainObject:I,isReadableStream:G,isRequest:K,isResponse:V,isHeaders:X,isUndefined:_,isDate:q,isFile:M,isBlob:z,isRegExp:oe,isFunction:U,isStream:function(e){return D(e)&&U(e.pipe)},isURLSearchParams:J,isTypedArray:te,isFileList:H,forEach:$,merge:function e(){for(var t=Z(this)&&this||{},r=t.caseless,n={},o=function(t,o){var i=r&&Y(n,o)||o;I(n[i])&&I(t)?n[i]=e(n[i],t):I(t)?n[i]=e({},t):N(t)?n[i]=t.slice():n[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=n.allOwnKeys;return $(t,(function(t,n){r&&U(t)?e[n]=R(t,r):e[n]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,r,n){e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:function(e,t,r,n){var o,i,a,u={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],n&&!n(a,e,t)||u[a]||(t[a]=e[a],u[a]=!0);e=!1!==r&&A(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:j,kindOfTest:P,endsWith:function(e,t,r){e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;var n=e.indexOf(t,r);return-1!==n&&n===r},toArray:function(e){if(!e)return null;if(N(e))return e;var t=e.length;if(!B(t))return null;for(var r=new Array(t);t-- >0;)r[t]=e[t];return r},forEachEntry:function(e,t){for(var r,n=(e&&e[Symbol.iterator]).call(e);(r=n.next())&&!r.done;){var o=r.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var r,n=[];null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:re,hasOwnProperty:ne,hasOwnProp:ne,reduceDescriptors:ie,freezeMethods:function(e){ie(e,(function(t,r){if(U(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;var n=e[r];U(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:function(e,t){var r={},n=function(e){e.forEach((function(e){r[e]=!0}))};return N(e)?n(e):n(String(e).split(t)),r},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))},noop:function(){},toFiniteNumber:function(e,t){return null!=e&&Number.isFinite(e=+e)?e:t},findKey:Y,global:Q,isContextDefined:Z,ALPHABET:se,generateString:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:se.ALPHA_DIGIT,r="",n=t.length;e--;)r+=t[Math.random()*n|0];return r},isSpecCompliantForm:function(e){return!!(e&&U(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(r,n){if(D(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[n]=r;var o=N(r)?[]:{};return $(r,(function(t,r){var i=e(t,n+1);!_(i)&&(o[r]=i)})),t[n]=void 0,o}}return r}(e,0)},isAsyncFn:pe,isThenable:function(e){return e&&(D(e)||U(e))&&U(e.then)&&U(e.catch)},setImmediate:de,asap:ve};function me(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o,this.status=o.status?o.status:null)}ye.inherits(me,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:ye.toJSONObject(this.config),code:this.code,status:this.status}}});var be=me.prototype,ge={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){ge[e]={value:e}})),Object.defineProperties(me,ge),Object.defineProperty(be,"isAxiosError",{value:!0}),me.from=function(e,t,r,n,o,i){var a=Object.create(be);return ye.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),me.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function we(e){return ye.isPlainObject(e)||ye.isArray(e)}function Ee(e){return ye.endsWith(e,"[]")?e.slice(0,-2):e}function Oe(e,t,r){return e?e.concat(t).map((function(e,t){return e=Ee(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}var Se=ye.toFlatObject(ye,{},null,(function(e){return/^is[A-Z]/.test(e)}));function xe(e,t,r){if(!ye.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var n=(r=ye.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!ye.isUndefined(t[e])}))).metaTokens,o=r.visitor||c,i=r.dots,a=r.indexes,u=(r.Blob||"undefined"!=typeof Blob&&Blob)&&ye.isSpecCompliantForm(t);if(!ye.isFunction(o))throw new TypeError("visitor must be a function");function s(e){if(null===e)return"";if(ye.isDate(e))return e.toISOString();if(!u&&ye.isBlob(e))throw new me("Blob is not supported. Use a Buffer instead.");return ye.isArrayBuffer(e)||ye.isTypedArray(e)?u&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,r,o){var u=e;if(e&&!o&&"object"===f(e))if(ye.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else if(ye.isArray(e)&&function(e){return ye.isArray(e)&&!e.some(we)}(e)||(ye.isFileList(e)||ye.endsWith(r,"[]"))&&(u=ye.toArray(e)))return r=Ee(r),u.forEach((function(e,n){!ye.isUndefined(e)&&null!==e&&t.append(!0===a?Oe([r],n,i):null===a?r:r+"[]",s(e))})),!1;return!!we(e)||(t.append(Oe(o,r,i),s(e)),!1)}var l=[],h=Object.assign(Se,{defaultVisitor:c,convertValue:s,isVisitable:we});if(!ye.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!ye.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),ye.forEach(r,(function(r,i){!0===(!(ye.isUndefined(r)||null===r)&&o.call(t,r,ye.isString(i)?i.trim():i,n,h))&&e(r,n?n.concat(i):[i])})),l.pop()}}(e),t}function Re(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Te(e,t){this._pairs=[],e&&xe(e,this,t)}var ke=Te.prototype;function Ae(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function je(e,t,r){if(!t)return e;var n,o=r&&r.encode||Ae,i=r&&r.serialize;if(n=i?i(t,r):ye.isURLSearchParams(t)?t.toString():new Te(t,r).toString(o)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}ke.append=function(e,t){this._pairs.push([e,t])},ke.toString=function(e){var t=e?function(t){return e.call(this,t,Re)}:Re;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var Pe=function(){function e(){d(this,e),this.handlers=[]}return y(e,[{key:"use",value:function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){ye.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),Le={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Ne={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Te,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},_e="undefined"!=typeof window&&"undefined"!=typeof document,Ce="object"===("undefined"==typeof navigator?"undefined":f(navigator))&&navigator||void 0,Fe=_e&&(!Ce||["ReactNative","NativeScript","NS"].indexOf(Ce.product)<0),Ue="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Be=_e&&window.location.href||"http://localhost",De=u(u({},Object.freeze({__proto__:null,hasBrowserEnv:_e,hasStandardBrowserWebWorkerEnv:Ue,hasStandardBrowserEnv:Fe,navigator:Ce,origin:Be})),Ne);function Ie(e){function t(e,r,n,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),u=o>=e.length;return i=!i&&ye.isArray(n)?n.length:i,u?(ye.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r,!a):(n[i]&&ye.isObject(n[i])||(n[i]=[]),t(e,r,n[i],o)&&ye.isArray(n[i])&&(n[i]=function(e){var t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=ye.isObject(e);if(i&&ye.isHTMLForm(e)&&(e=new FormData(e)),ye.isFormData(e))return o?JSON.stringify(Ie(e)):e;if(ye.isArrayBuffer(e)||ye.isBuffer(e)||ye.isStream(e)||ye.isFile(e)||ye.isBlob(e)||ye.isReadableStream(e))return e;if(ye.isArrayBufferView(e))return e.buffer;if(ye.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return xe(e,new De.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return De.isNode&&ye.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((r=ye.isFileList(e))||n.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return xe(r?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,r){if(ye.isString(e))try{return(t||JSON.parse)(e),ye.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||qe.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(ye.isResponse(e)||ye.isReadableStream(e))return e;if(e&&ye.isString(e)&&(r&&!this.responseType||n)){var o=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw me.from(e,me.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:De.classes.FormData,Blob:De.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ye.forEach(["delete","get","head","post","put","patch"],(function(e){qe.headers[e]={}}));var Me=qe,ze=ye.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),He=Symbol("internals");function Je(e){return e&&String(e).trim().toLowerCase()}function We(e){return!1===e||null==e?e:ye.isArray(e)?e.map(We):String(e)}function Ge(e,t,r,n,o){return ye.isFunction(n)?n.call(this,t,r):(o&&(t=r),ye.isString(t)?ye.isString(n)?-1!==t.indexOf(n):ye.isRegExp(n)?n.test(t):void 0:void 0)}var Ke=function(e,t){function r(e){d(this,r),e&&this.set(e)}return y(r,[{key:"set",value:function(e,t,r){var n=this;function o(e,t,r){var o=Je(t);if(!o)throw new Error("header name must be a non-empty string");var i=ye.findKey(n,o);(!i||void 0===n[i]||!0===r||void 0===r&&!1!==n[i])&&(n[i||t]=We(e))}var i=function(e,t){return ye.forEach(e,(function(e,r){return o(e,r,t)}))};if(ye.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(ye.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i(function(e){var t,r,n,o={};return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),t=e.substring(0,n).trim().toLowerCase(),r=e.substring(n+1).trim(),!t||o[t]&&ze[t]||("set-cookie"===t?o[t]?o[t].push(r):o[t]=[r]:o[t]=o[t]?o[t]+", "+r:r)})),o}(e),t);else if(ye.isHeaders(e)){var a,u=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=O(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(e.entries());try{for(u.s();!(a=u.n()).done;){var s=b(a.value,2),c=s[0];o(s[1],c,r)}}catch(e){u.e(e)}finally{u.f()}}else null!=e&&o(t,e,r);return this}},{key:"get",value:function(e,t){if(e=Je(e)){var r=ye.findKey(this,e);if(r){var n=this[r];if(!t)return n;if(!0===t)return function(e){for(var t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=n.exec(e);)r[t[1]]=t[2];return r}(n);if(ye.isFunction(t))return t.call(this,n,r);if(ye.isRegExp(t))return t.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=Je(e)){var r=ye.findKey(this,e);return!(!r||void 0===this[r]||t&&!Ge(0,this[r],r,t))}return!1}},{key:"delete",value:function(e,t){var r=this,n=!1;function o(e){if(e=Je(e)){var o=ye.findKey(r,e);!o||t&&!Ge(0,r[o],o,t)||(delete r[o],n=!0)}}return ye.isArray(e)?e.forEach(o):o(e),n}},{key:"clear",value:function(e){for(var t=Object.keys(this),r=t.length,n=!1;r--;){var o=t[r];e&&!Ge(0,this[o],o,e,!0)||(delete this[o],n=!0)}return n}},{key:"normalize",value:function(e){var t=this,r={};return ye.forEach(this,(function(n,o){var i=ye.findKey(r,o);if(i)return t[i]=We(n),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=We(n),r[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,r=new Array(t),n=0;n1?r-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:Date.now();o=i,r=null,n&&(clearTimeout(n),n=null),e.apply(null,t)};return[function(){for(var e=Date.now(),t=e-o,u=arguments.length,s=new Array(u),c=0;c=i?a(s,e):(r=s,n||(n=setTimeout((function(){n=null,a(r)}),i-t)))},function(){return r&&a(r)}]}ye.inherits(Ye,me,{__CANCEL__:!0});var tt=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3,n=0,o=Ze(50,250);return et((function(r){var i=r.loaded,a=r.lengthComputable?r.total:void 0,u=i-n,s=o(u);n=i;var c=m({loaded:i,total:a,progress:a?i/a:void 0,bytes:u,rate:s||void 0,estimated:s&&a&&i<=a?(a-i)/s:void 0,event:r,lengthComputable:null!=a},t?"download":"upload",!0);e(c)}),r)},rt=function(e,t){var r=null!=e;return[function(n){return t[0]({lengthComputable:r,total:e,loaded:n})},t[1]]},nt=function(e){return function(){for(var t=arguments.length,r=new Array(t),n=0;n1?t-1:0),n=1;n1?"since :\n"+u.map(jt).join("\n"):" "+jt(u[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function Nt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ye(null,e)}function _t(e){return Nt(e),e.headers=Ve.from(e.headers),e.data=Xe.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Lt(e.adapter||Me.adapter)(e).then((function(t){return Nt(e),t.data=Xe.call(e,e.transformResponse,t),t.headers=Ve.from(t.headers),t}),(function(t){return $e(t)||(Nt(e),t&&t.response&&(t.response.data=Xe.call(e,e.transformResponse,t.response),t.response.headers=Ve.from(t.response.headers))),Promise.reject(t)}))}var Ct="1.7.7",Ft={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Ft[e]=function(r){return f(r)===e||"a"+(t<1?"n ":" ")+e}}));var Ut={};Ft.transitional=function(e,t,r){function n(e,t){return"[Axios v1.7.7] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,o,i){if(!1===e)throw new me(n(o," has been removed"+(t?" in "+t:"")),me.ERR_DEPRECATED);return t&&!Ut[o]&&(Ut[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}};var Bt={assertOptions:function(e,t,r){if("object"!==f(e))throw new me("options must be an object",me.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),o=n.length;o-- >0;){var i=n[o],a=t[i];if(a){var u=e[i],s=void 0===u||a(u,i,e);if(!0!==s)throw new me("option "+i+" must be "+s,me.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new me("Unknown option "+i,me.ERR_BAD_OPTION)}},validators:Ft},Dt=Bt.validators,It=function(){function e(t){d(this,e),this.defaults=t,this.interceptors={request:new Pe,response:new Pe}}var t;return y(e,[{key:"request",value:(t=p(s().mark((function e(t,r){var n,o;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._request(t,r);case 3:return e.abrupt("return",e.sent);case 6:if(e.prev=6,e.t0=e.catch(0),e.t0 instanceof Error){Error.captureStackTrace?Error.captureStackTrace(n={}):n=new Error,o=n.stack?n.stack.replace(/^.+\n/,""):"";try{e.t0.stack?o&&!String(e.t0.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(e.t0.stack+="\n"+o):e.t0.stack=o}catch(e){}}throw e.t0;case 10:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,r){return t.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var r=t=st(this.defaults,t),n=r.transitional,o=r.paramsSerializer,i=r.headers;void 0!==n&&Bt.assertOptions(n,{silentJSONParsing:Dt.transitional(Dt.boolean),forcedJSONParsing:Dt.transitional(Dt.boolean),clarifyTimeoutError:Dt.transitional(Dt.boolean)},!1),null!=o&&(ye.isFunction(o)?t.paramsSerializer={serialize:o}:Bt.assertOptions(o,{encode:Dt.function,serialize:Dt.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&ye.merge(i.common,i[t.method]);i&&ye.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=Ve.concat(a,i);var u=[],s=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(s=s&&e.synchronous,u.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,h=0;if(!s){var p=[_t.bind(this),void 0];for(p.unshift.apply(p,u),p.push.apply(p,f),l=p.length,c=Promise.resolve(t);h0;)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},t((function(e,t,o){n.reason||(n.reason=new Ye(e,t,o),r(n.reason))}))}return y(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}},{key:"toAbortSignal",value:function(){var e=this,t=new AbortController,r=function(e){t.abort(e)};return this.subscribe(r),t.signal.unsubscribe=function(){return e.unsubscribe(r)},t.signal}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}(),zt=Mt;var Ht={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ht).forEach((function(e){var t=b(e,2),r=t[0],n=t[1];Ht[n]=r}));var Jt=Ht;var Wt=function e(t){var r=new qt(t),n=R(qt.prototype.request,r);return ye.extend(n,qt.prototype,r,{allOwnKeys:!0}),ye.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(st(t,r))},n}(Me);return Wt.Axios=qt,Wt.CanceledError=Ye,Wt.CancelToken=zt,Wt.isCancel=$e,Wt.VERSION=Ct,Wt.toFormData=xe,Wt.AxiosError=me,Wt.Cancel=Wt.CanceledError,Wt.all=function(e){return Promise.all(e)},Wt.spread=function(e){return function(t){return e.apply(null,t)}},Wt.isAxiosError=function(e){return ye.isObject(e)&&!0===e.isAxiosError},Wt.mergeConfig=st,Wt.AxiosHeaders=Ve,Wt.formToJSON=function(e){return Ie(ye.isHTMLForm(e)?new FormData(e):e)},Wt.getAdapter=Lt,Wt.HttpStatusCode=Jt,Wt.default=Wt,Wt})); +//# sourceMappingURL=axios.min.js.map diff --git a/js/index.js b/js/index.js new file mode 100644 index 0000000..e32ce27 --- /dev/null +++ b/js/index.js @@ -0,0 +1,75 @@ +const { createApp, ref, onMounted, nextTick, onUnmounted, computed, watch } = Vue; + +createApp({ + setup() { + let ongoingbj = ref({ + commentUser: [ + { + avatar: "https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC2WFVSEKWOikN42jDKLNjtax7HL4xtfMOJSdU9oWFhY2E~/mini?random=iyHTPLKnfrDC", + }, + { + avatar: "https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC2WFVSEKWOikN42jDKLNjtax7HL4xtfMOJSdU9oWFhY2E~/mini?random=iyHTPLKnfrDC", + }, + ], + comments: 5, + created_at: "2025-08-22 16:01:34", + description: "''", + status: 1, + title: "【征稿】第五届糖尿病与内分泌学国际研讨会(ICDE 2025)", + topicid: 254293, + uniqid: "C840eySXCXSn", + }); + + console.log(ongoingbj); + + let pastList = ref([ + { + comments: 24, + created_at: "2025-04-14 16:08:52", + description: "''", + status: 0, + title: "25年4月美国无预警大量撤销留学生签证,撤销原因是哪些?我们的一些相关建议", + topicid: 253942, + uniqid: "uDqLzLTbK4Of", + }, + { + comments: 24, + created_at: "2025-04-14 16:08:52", + description: "''", + status: 0, + title: "25年4月美国无预警大量撤销留学生签证,撤销原因是哪些?我们的一些相关建议", + topicid: 253942, + uniqid: "uDqLzLTbK4Of", + }, + { + comments: 24, + created_at: "2025-04-14 16:08:52", + description: "''", + status: 0, + title: "25年4月美国无预警大量撤销留学生签证,撤销原因是哪些?我们的一些相关建议", + topicid: 253942, + uniqid: "uDqLzLTbK4Of", + }, + { + comments: 24, + created_at: "2025-04-14 16:08:52", + description: "''", + status: 0, + title: "25年4月美国无预警大量撤销留学生签证,撤销原因是哪些?我们的一些相关建议", + topicid: 253942, + uniqid: "uDqLzLTbK4Of", + }, + { + comments: 24, + created_at: "2025-04-14 16:08:52", + description: "''", + status: 0, + title: "25年4月美国无预警大量撤销留学生签证,撤销原因是哪些?我们的一些相关建议", + topicid: 253942, + uniqid: "uDqLzLTbK4Of", + }, + ]); + + return { ongoingbj, pastList }; + }, +}).mount("#appIndex"); diff --git a/js/sectionIndex.js b/js/sectionIndex.js new file mode 100644 index 0000000..3d9b128 --- /dev/null +++ b/js/sectionIndex.js @@ -0,0 +1,9 @@ +const { createApp, ref, onMounted, nextTick, onUnmounted, computed, watch } = Vue; + +createApp({ + setup() { + + + return { }; + }, +}).mount("#appIndex"); diff --git a/js/vue.global.js b/js/vue.global.js new file mode 100644 index 0000000..f3022d1 --- /dev/null +++ b/js/vue.global.js @@ -0,0 +1,18039 @@ +/** +* vue v3.5.12 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +var Vue = (function (exports) { + 'use strict'; + + /*! #__NO_SIDE_EFFECTS__ */ + // @__NO_SIDE_EFFECTS__ + function makeMap(str) { + const map = /* @__PURE__ */ Object.create(null); + for (const key of str.split(",")) map[key] = 1; + return (val) => val in map; + } + + const EMPTY_OBJ = Object.freeze({}) ; + const EMPTY_ARR = Object.freeze([]) ; + const NOOP = () => { + }; + const NO = () => false; + const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter + (key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); + const isModelListener = (key) => key.startsWith("onUpdate:"); + const extend = Object.assign; + const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } + }; + const hasOwnProperty$1 = Object.prototype.hasOwnProperty; + const hasOwn = (val, key) => hasOwnProperty$1.call(val, key); + const isArray = Array.isArray; + const isMap = (val) => toTypeString(val) === "[object Map]"; + const isSet = (val) => toTypeString(val) === "[object Set]"; + const isDate = (val) => toTypeString(val) === "[object Date]"; + const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; + const isFunction = (val) => typeof val === "function"; + const isString = (val) => typeof val === "string"; + const isSymbol = (val) => typeof val === "symbol"; + const isObject = (val) => val !== null && typeof val === "object"; + const isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); + }; + const objectToString = Object.prototype.toString; + const toTypeString = (value) => objectToString.call(value); + const toRawType = (value) => { + return toTypeString(value).slice(8, -1); + }; + const isPlainObject = (val) => toTypeString(val) === "[object Object]"; + const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; + const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" + ); + const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" + ); + const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; + }; + const camelizeRE = /-(\w)/g; + const camelize = cacheStringFunction( + (str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); + } + ); + const hyphenateRE = /\B([A-Z])/g; + const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() + ); + const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); + }); + const toHandlerKey = cacheStringFunction( + (str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; + } + ); + const hasChanged = (value, oldValue) => !Object.is(value, oldValue); + const invokeArrayFns = (fns, ...arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](...arg); + } + }; + const def = (obj, key, value, writable = false) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + writable, + value + }); + }; + const looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; + }; + const toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; + }; + let _globalThis; + const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); + }; + function genCacheKey(source, options) { + return source + JSON.stringify( + options, + (_, val) => typeof val === "function" ? val.toString() : val + ); + } + + const PatchFlagNames = { + [1]: `TEXT`, + [2]: `CLASS`, + [4]: `STYLE`, + [8]: `PROPS`, + [16]: `FULL_PROPS`, + [32]: `NEED_HYDRATION`, + [64]: `STABLE_FRAGMENT`, + [128]: `KEYED_FRAGMENT`, + [256]: `UNKEYED_FRAGMENT`, + [512]: `NEED_PATCH`, + [1024]: `DYNAMIC_SLOTS`, + [2048]: `DEV_ROOT_FRAGMENT`, + [-1]: `HOISTED`, + [-2]: `BAIL` + }; + + const slotFlagsText = { + [1]: "STABLE", + [2]: "DYNAMIC", + [3]: "FORWARDED" + }; + + const 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"; + const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); + + const range = 2; + function generateCodeFrame(source, start = 0, end = source.length) { + start = Math.max(0, Math.min(start, source.length)); + end = Math.max(0, Math.min(end, source.length)); + if (start > end) return ""; + let lines = source.split(/(\r?\n)/); + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) continue; + const line = j + 1; + res.push( + `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` + ); + const lineLength = lines[j].length; + const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; + if (j === i) { + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max( + 1, + end > count ? lineLength - pad : end - start + ); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join("\n"); + } + + function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } + } + const listDelimiterRE = /;(?![^(]*\))/g; + const propertyDelimiterRE = /:([^]+)/; + const styleCommentRE = /\/\*[^]*?\*\//g; + function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; + } + function stringifyStyle(styles) { + let ret = ""; + if (!styles || isString(styles)) { + return 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; + } + + const 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"; + const 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"; + const 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"; + const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; + const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); + const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); + const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS); + const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); + + const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; + const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); + const isBooleanAttr = /* @__PURE__ */ 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 === ""; + } + const isKnownHtmlAttr = /* @__PURE__ */ 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` + ); + const isKnownSvgAttr = /* @__PURE__ */ 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` + ); + function isRenderableAttrValue(value) { + if (value == null) { + return false; + } + const type = typeof value; + return type === "string" || type === "number" || type === "boolean"; + } + + const cssVarNameEscapeSymbolsRE = /[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g; + function getEscapedCssVarName(key, doubleEscape) { + return key.replace( + cssVarNameEscapeSymbolsRE, + (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)); + } + + const isRef$1 = (val) => { + return !!(val && val["__v_isRef"] === true); + }; + const toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef$1(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val); + }; + const replacer = (_key, val) => { + if (isRef$1(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; + }; + const 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 warn$2(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); + } + + let activeEffectScope; + class EffectScope { + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + 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 { + warn$2(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + activeEffectScope = this; + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + activeEffectScope = this.parent; + } + stop(fromParent) { + if (this._active) { + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + this._active = false; + } + } + } + function 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$2( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } + } + + let activeSub; + const pausedQueueEffects = /* @__PURE__ */ new WeakSet(); + class ReactiveEffect { + constructor(fn) { + this.fn = fn; + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 1 | 4; + /** + * @internal + */ + this.next = void 0; + /** + * @internal + */ + 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 &= ~64; + 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$2( + "Active effect was not restored correctly - this is likely a Vue internal bug." + ); + } + cleanupDeps(this); + activeSub = prevEffect; + shouldTrack = prevShouldTrack; + this.flags &= ~2; + } + } + 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 &= ~1; + } + } + 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); + } + } + let batchDepth = 0; + let batchedSub; + let 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 &= ~8; + e = next; + } + } + let error; + while (batchedSub) { + let e = batchedSub; + batchedSub = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= ~8; + 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(computed) { + if (computed.flags & 4 && !(computed.flags & 16)) { + return; + } + computed.flags &= ~16; + if (computed.globalVersion === globalVersion) { + return; + } + computed.globalVersion = globalVersion; + const dep = computed.dep; + computed.flags |= 2; + if (dep.version > 0 && !computed.isSSR && computed.deps && !isDirty(computed)) { + computed.flags &= ~2; + return; + } + const prevSub = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = computed; + shouldTrack = true; + try { + prepareDeps(computed); + const value = computed.fn(computed._value); + if (dep.version === 0 || hasChanged(value, computed._value)) { + computed._value = value; + dep.version++; + } + } catch (err) { + dep.version++; + throw err; + } finally { + activeSub = prevSub; + shouldTrack = prevShouldTrack; + cleanupDeps(computed); + computed.flags &= ~2; + } + } + 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 &= ~4; + 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(); + } + let shouldTrack = true; + const 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; + } + } + } + + let globalVersion = 0; + class Link { + 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; + } + } + class Dep { + constructor(computed) { + this.computed = computed; + this.version = 0; + /** + * Link between this dep and the current active effect + */ + this.activeLink = void 0; + /** + * Doubly linked list representing the subscribing effects (tail) + */ + this.subs = void 0; + /** + * For object property deps cleanup + */ + this.map = void 0; + this.key = void 0; + /** + * Subscriber counter + */ + this.sc = 0; + { + 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 computed = link.dep.computed; + if (computed && !link.dep.subs) { + computed.flags |= 4 | 16; + for (let l = computed.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; + } + } + const targetMap = /* @__PURE__ */ new WeakMap(); + const ITERATE_KEY = Symbol( + "Object iterate" + ); + const MAP_KEY_ITERATE_KEY = Symbol( + "Map keys iterate" + ); + const ARRAY_ITERATE_KEY = Symbol( + "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; + } + { + dep.track({ + target, + type, + key + }); + } + } + } + function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + globalVersion++; + return; + } + const run = (dep) => { + if (dep) { + { + dep.trigger({ + target, + type, + key, + newValue, + oldValue, + oldTarget + }); + } + } + }; + 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; + } + const arrayInstrumentations = { + __proto__: null, + [Symbol.iterator]() { + return iterator(this, Symbol.iterator, toReactive); + }, + concat(...args) { + return reactiveReadArray(this).concat( + ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x) + ); + }, + entries() { + return iterator(this, "entries", (value) => { + value[1] = toReactive(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(toReactive), arguments); + }, + find(fn, thisArg) { + return apply(this, "find", fn, thisArg, toReactive, arguments); + }, + findIndex(fn, thisArg) { + return apply(this, "findIndex", fn, thisArg, void 0, arguments); + }, + findLast(fn, thisArg) { + return apply(this, "findLast", fn, thisArg, toReactive, 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 optimisation 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", toReactive); + } + }; + function iterator(self, method, wrapValue) { + const arr = shallowReadArray(self); + const iter = arr[method](); + if (arr !== self && !isShallow(self)) { + iter._next = iter.next; + iter.next = () => { + const result = iter._next(); + if (result.value) { + result.value = wrapValue(result.value); + } + return result; + }; + } + return iter; + } + const arrayProto = Array.prototype; + function apply(self, method, fn, thisArg, wrappedRetFn, args) { + const arr = shallowReadArray(self); + const needsWrap = arr !== self && !isShallow(self); + const methodFn = arr[method]; + if (methodFn !== arrayProto[method]) { + const result2 = methodFn.apply(self, args); + return needsWrap ? toReactive(result2) : result2; + } + let wrappedFn = fn; + if (arr !== self) { + if (needsWrap) { + wrappedFn = function(item, index) { + return fn.call(this, toReactive(item), index, self); + }; + } else if (fn.length > 2) { + wrappedFn = function(item, index) { + return fn.call(this, item, index, self); + }; + } + } + const result = methodFn.call(arr, wrappedFn, thisArg); + return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result; + } + function reduce(self, method, fn, args) { + const arr = shallowReadArray(self); + let wrappedFn = fn; + if (arr !== self) { + if (!isShallow(self)) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, toReactive(item), index, self); + }; + } else if (fn.length > 3) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, item, index, self); + }; + } + } + return arr[method](wrappedFn, ...args); + } + function searchProxy(self, method, args) { + const arr = toRaw(self); + 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(self, method, args = []) { + pauseTracking(); + startBatch(); + const res = toRaw(self)[method].apply(self, args); + endBatch(); + resetTracking(); + return res; + } + + const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); + const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) + ); + function hasOwnProperty(key) { + if (!isSymbol(key)) key = String(key); + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); + } + class BaseReactiveHandler { + constructor(_isReadonly = false, _isShallow = false) { + this._isReadonly = _isReadonly; + this._isShallow = _isShallow; + } + get(target, key, receiver) { + const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return isShallow2; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the 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 hasOwnProperty; + } + } + 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 + isRef(target) ? target : receiver + ); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (isShallow2) { + return res; + } + if (isRef(res)) { + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } + } + class MutableReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(false, isShallow2); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + if (isOldValueReadonly) { + return false; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set( + target, + key, + value, + isRef(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); + } + } + class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(true, isShallow2); + } + set(target, key) { + { + warn$2( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + { + warn$2( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + } + const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); + const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); + const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true); + const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); + + const toShallow = (value) => value; + const getProto = (v) => Reflect.getPrototypeOf(v); + function createIterableMethod(method, isReadonly2, isShallow2) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; + } + function createReadonlyMethod(type) { + return function(...args) { + { + const key = args[0] ? `on key "${args[0]}" ` : ``; + warn$2( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; + } + function createInstrumentations(readonly, shallow) { + const instrumentations = { + get(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has } = getProto(rawTarget); + const wrap = shallow ? toShallow : readonly ? 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"]; + !readonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); + }, + has(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + 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 : readonly ? toReadonly : toReactive; + !readonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + } + }; + extend( + instrumentations, + readonly ? { + 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 { + 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 { + 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 = isMap(target) ? new Map(target) : new Set(target) ; + 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, readonly, 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 + ); + }; + } + const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) + }; + const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) + }; + const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) + }; + const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) + }; + function checkIdentityKeys(target, has, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has.call(target, rawKey)) { + const type = toRawType(target); + warn$2( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } + } + + const reactiveMap = /* @__PURE__ */ new WeakMap(); + const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); + const readonlyMap = /* @__PURE__ */ new WeakMap(); + const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); + function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } + } + function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value)); + } + function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); + } + function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); + } + function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); + } + function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); + } + function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + { + warn$2( + `value cannot be made ${isReadonly2 ? "readonly" : "reactive"}: ${String( + target + )}` + ); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? 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; + } + const toReactive = (value) => isObject(value) ? reactive(value) : value; + const toReadonly = (value) => isObject(value) ? readonly(value) : value; + + function isRef(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 (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); + } + class RefImpl { + 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() { + { + this.dep.track({ + target: this, + type: "get", + key: "value" + }); + } + 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); + { + this.dep.trigger({ + target: this, + type: "set", + key: "value", + newValue, + oldValue + }); + } + } + } + } + function triggerRef(ref2) { + if (ref2.dep) { + { + ref2.dep.trigger({ + target: ref2, + type: "set", + key: "value", + newValue: ref2._value + }); + } + } + } + function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; + } + function toValue(source) { + return isFunction(source) ? source() : unref(source); + } + const 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 (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } + }; + function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); + } + class CustomRefImpl { + 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$2(`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; + } + class ObjectRefImpl { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this["__v_isRef"] = true; + this._value = void 0; + } + get value() { + const val = this._object[this._key]; + return this._value = val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } + } + class GetterRefImpl { + 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 (isRef(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) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); + } + + class ComputedRefImpl { + constructor(fn, setter, isSSR) { + this.fn = fn; + this.setter = setter; + /** + * @internal + */ + this._value = void 0; + /** + * @internal + */ + this.dep = new Dep(this); + /** + * @internal + */ + this.__v_isRef = true; + // TODO isolatedDeclarations "__v_isReadonly" + // A computed is also a subscriber that tracks other deps + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 16; + /** + * @internal + */ + this.globalVersion = globalVersion - 1; + /** + * @internal + */ + this.next = void 0; + // for backwards compat + 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; + } + } + get value() { + const link = this.dep.track({ + target: this, + type: "get", + key: "value" + }) ; + refreshComputed(this); + if (link) { + link.version = this.dep.version; + } + return this._value; + } + set value(newValue) { + if (this.setter) { + this.setter(newValue); + } else { + warn$2("Write operation failed: computed value is readonly"); + } + } + } + function computed$1(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; + } + + const TrackOpTypes = { + "GET": "get", + "HAS": "has", + "ITERATE": "iterate" + }; + const TriggerOpTypes = { + "SET": "set", + "ADD": "add", + "DELETE": "delete", + "CLEAR": "clear" + }; + + const INITIAL_WATCHER_VALUE = {}; + const cleanupMap = /* @__PURE__ */ new WeakMap(); + let 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$2( + `onWatcherCleanup() was called when there was no active watcher to associate with.` + ); + } + } + function watch$1(source, cb, options = EMPTY_OBJ) { + const { immediate, deep, once, scheduler, augmentJob, call } = options; + const warnInvalidSource = (s) => { + (options.onWarn || warn$2)( + `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 effect; + let getter; + let cleanup; + let boundCleanup; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => reactiveGetter(source); + forceTrigger = true; + } else if (isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(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 = effect; + 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 = () => { + effect.stop(); + if (scope) { + remove(scope.effects, effect); + } + }; + 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 (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) { + if (cleanup) { + cleanup(); + } + const currentWatcher = activeWatcher; + activeWatcher = effect; + 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 + ]; + call ? call(cb, 3, args) : ( + // @ts-expect-error + cb(...args) + ); + oldValue = newValue; + } finally { + activeWatcher = currentWatcher; + } + } + } else { + effect.run(); + } + }; + if (augmentJob) { + augmentJob(job); + } + effect = new ReactiveEffect(getter); + effect.scheduler = scheduler ? () => scheduler(job, false) : job; + boundCleanup = (fn) => onWatcherCleanup(fn, false, effect); + cleanup = effect.onStop = () => { + const cleanups = cleanupMap.get(effect); + if (cleanups) { + if (call) { + call(cleanups, 4); + } else { + for (const cleanup2 of cleanups) cleanup2(); + } + cleanupMap.delete(effect); + } + }; + { + effect.onTrack = options.onTrack; + effect.onTrigger = options.onTrigger; + } + if (cb) { + if (immediate) { + job(true); + } else { + oldValue = effect.run(); + } + } else if (scheduler) { + scheduler(job.bind(null, true), true); + } else { + effect.run(); + } + watchHandle.pause = effect.pause.bind(effect); + watchHandle.resume = effect.resume.bind(effect); + 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 Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + depth--; + if (isRef(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; + } + + const stack$1 = []; + function pushWarningContext(vnode) { + stack$1.push(vnode); + } + function popWarningContext() { + stack$1.pop(); + } + let isWarning = false; + function warn$1(msg, ...args) { + if (isWarning) return; + isWarning = true; + pauseTracking(); + const instance = stack$1.length ? stack$1[stack$1.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$1[stack$1.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; + } + function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` + `], ...formatTraceEntry(entry)); + }); + return logs; + } + function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; + } + function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; + } + function formatProp(key, value, raw) { + if (isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } + } + function assertNumber(val, type) { + 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.`); + } + } + + const 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" + }; + const 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 { + 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 = ErrorTypeStrings$1[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) { + { + 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); + } + } + } + + const queue = []; + let flushIndex = -1; + const pendingPostFlushCbs = []; + let activePostFlushCbs = null; + let postFlushIndex = 0; + const resolvedPromise = /* @__PURE__ */ Promise.resolve(); + let currentFlushPromise = null; + const RECURSION_LIMIT = 100; + function nextTick(fn) { + const p = currentFlushPromise || resolvedPromise; + return fn ? p.then(this ? fn.bind(this) : fn) : p; + } + 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) { + { + 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 &= ~1; + } + cb(); + if (!(cb.flags & 4)) { + cb.flags &= ~1; + } + } + } + } + function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)].sort( + (a, b) => getId(a) - getId(b) + ); + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + const cb = activePostFlushCbs[postFlushIndex]; + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + if (cb.flags & 4) { + cb.flags &= ~1; + } + if (!(cb.flags & 8)) cb(); + cb.flags &= ~1; + } + activePostFlushCbs = null; + postFlushIndex = 0; + } + } + const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id; + function flushJobs(seen) { + { + seen = seen || /* @__PURE__ */ new Map(); + } + const check = (job) => checkRecursiveUpdates(seen, job) ; + 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 &= ~1; + } + } + 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; + } + + let isHmrUpdating = false; + const hmrDirtyComponents = /* @__PURE__ */ new Map(); + { + getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; + } + const 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; + 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(() => { + 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.` + ); + } + }; + } + + let devtools$1; + let buffer = []; + let 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, version) { + emit$1("app:init" /* APP_INIT */, app, version, { + Fragment, + Text, + Comment, + Static + }); + } + function devtoolsUnmountApp(app) { + emit$1("app:unmount" /* APP_UNMOUNT */, app); + } + const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook("component:added" /* COMPONENT_ADDED */); + const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */); + const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook( + "component:removed" /* COMPONENT_REMOVED */ + ); + const devtoolsComponentRemoved = (component) => { + if (devtools$1 && typeof devtools$1.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !devtools$1.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } + }; + /*! #__NO_SIDE_EFFECTS__ */ + // @__NO_SIDE_EFFECTS__ + function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); + }; + } + const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook("perf:start" /* PERFORMANCE_START */); + const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook("perf:end" /* PERFORMANCE_END */); + function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit$1(hook, component.appContext.app, component.uid, component, type, time); + }; + } + function devtoolsComponentEmit(component, event, params) { + emit$1( + "component:emit" /* COMPONENT_EMIT */, + component.appContext.app, + component, + event, + params + ); + } + + let currentRenderingInstance = null; + let 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; + } + const 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); + } + } + { + 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(); + } + } + } + + const TeleportEndKey = Symbol("_vte"); + const isTeleport = (type) => type.__isTeleport; + const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === ""); + const isTeleportDeferred = (props) => props && (props.defer || props.defer === ""); + const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement; + const isTargetMathML = (target) => typeof MathMLElement === "function" && target instanceof MathMLElement; + const 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; + } + }; + const 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 = createComment("teleport start") ; + const mainAnchor = n2.anchor = createComment("teleport end") ; + insert(placeholder, container, anchor); + insert(mainAnchor, container, anchor); + const mount = (container2, anchor2) => { + if (shapeFlag & 16) { + if (parentComponent && parentComponent.isCE) { + parentComponent.ce._teleportTarget = container2; + } + 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 (!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)) { + queuePostRenderEffect(mountToTarget, parentSuspense); + } else { + mountToTarget(); + } + } else { + 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, true); + } 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 { + 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) { + const target = vnode.target = resolveTarget( + vnode.props, + querySelector + ); + if (target) { + const disabled = isTeleportDisabled(vnode.props); + const targetNode = target._lpa || target.firstChild; + if (vnode.shapeFlag & 16) { + if (disabled) { + vnode.anchor = hydrateChildren( + nextSibling(node), + vnode, + parentNode(node), + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + vnode.targetStart = targetNode; + vnode.targetAnchor = 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); + } + return vnode.anchor && nextSibling(vnode.anchor); + } + const 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; + } + + const leaveCbKey = Symbol("_leaveCb"); + const enterCbKey$1 = 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; + } + const TransitionHookValidator = [Function, Array]; + const 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 + }; + const recursiveGetSubtree = (instance) => { + const subTree = instance.subTree; + return subTree.component ? recursiveGetSubtree(subTree.component) : subTree; + }; + const 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); + } + const oldChild = instance.subTree; + const oldInnerChild = oldChild && getInnerChild$1(oldChild); + if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) { + const 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; + }; + 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; + }; + enterHooks.delayedLeave = delayedLeave; + }; + } + } + 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; + } + } + } + return child; + } + const 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 callHook = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook(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](); + } + callHook(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$1] = (cancelled) => { + if (called) return; + called = true; + if (cancelled) { + callHook(cancelHook, [el]); + } else { + callHook(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el[enterCbKey$1] = void 0; + }; + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove) { + const key2 = String(vnode.key); + if (el[enterCbKey$1]) { + el[enterCbKey$1]( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove(); + } + callHook(onBeforeLeave, [el]); + let called = false; + const done = el[leaveCbKey] = (cancelled) => { + if (called) return; + called = true; + remove(); + if (cancelled) { + callHook(onLeaveCancelled, [el]); + } else { + callHook(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; + } + + /*! #__NO_SIDE_EFFECTS__ */ + // @__NO_SIDE_EFFECTS__ + 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. + /* @__PURE__ */ (() => 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 { + 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]; + } + + const 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 { + warn$1( + `useTemplateRef() is called when there is no active component instance to be associated with.` + ); + } + const ret = readonly(r) ; + { + knownTemplateRefs.add(ret); + } + return ret; + } + + 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) { + return; + } + const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el; + const value = isUnmount ? null : refValue; + const { i: owner, r: ref } = 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 ? () => false : (key) => { + { + if (hasOwn(rawSetupState, key) && !isRef(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); + }; + if (oldRef != null && oldRef !== ref) { + if (isString(oldRef)) { + refs[oldRef] = null; + if (canSetSetupRef(oldRef)) { + setupState[oldRef] = null; + } + } else if (isRef(oldRef)) { + oldRef.value = null; + } + } + if (isFunction(ref)) { + callWithErrorHandling(ref, owner, 12, [value, refs]); + } else { + const _isString = isString(ref); + const _isRef = isRef(ref); + if (_isString || _isRef) { + const doSet = () => { + if (rawRef.f) { + const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value; + if (isUnmount) { + isArray(existing) && remove(existing, refValue); + } else { + if (!isArray(existing)) { + if (_isString) { + refs[ref] = [refValue]; + if (canSetSetupRef(ref)) { + setupState[ref] = refs[ref]; + } + } else { + ref.value = [refValue]; + if (rawRef.k) refs[rawRef.k] = ref.value; + } + } else if (!existing.includes(refValue)) { + existing.push(refValue); + } + } + } else if (_isString) { + refs[ref] = value; + if (canSetSetupRef(ref)) { + setupState[ref] = value; + } + } else if (_isRef) { + ref.value = value; + if (rawRef.k) refs[rawRef.k] = value; + } else { + warn$1("Invalid template ref type:", ref, `(${typeof ref})`); + } + }; + if (value) { + doSet.id = -1; + queuePostRenderEffect(doSet, parentSuspense); + } else { + doSet(); + } + } else { + warn$1("Invalid template ref type:", ref, `(${typeof ref})`); + } + } + } + + let hasLoggedMismatchError = false; + const logMismatchError = () => { + if (hasLoggedMismatchError) { + return; + } + console.error("Hydration completed but contains mismatches."); + hasLoggedMismatchError = true; + }; + const isSVGContainer = (container) => container.namespaceURI.includes("svg") && container.tagName !== "foreignObject"; + const isMathMLContainer = (container) => container.namespaceURI.includes("MathML"); + const getContainerType = (container) => { + if (container.nodeType !== 1) return void 0; + if (isSVGContainer(container)) return "svg"; + if (isMathMLContainer(container)) return "mathml"; + return void 0; + }; + const isComment = (node) => node.nodeType === 8; + function createHydrationFunctions(rendererInternals) { + const { + mt: mountComponent, + p: patch, + o: { + patchProp, + createText, + nextSibling, + parentNode, + remove, + insert, + createComment + } + } = rendererInternals; + const hydrate = (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, shapeFlag, patchFlag } = vnode; + let domType = node.nodeType; + vnode.el = node; + { + 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)) { + 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 { + warn$1("Invalid HostVNode type:", type, `(${typeof type})`); + } + } + if (ref != null) { + setRef(ref, 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 (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) { + 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 hasWarned = false; + while (next) { + if (!isMismatchAllowed(el, 1 /* CHILDREN */)) { + if (!hasWarned) { + warn$1( + `Hydration children mismatch on`, + el, + ` + Server rendered element contains more child nodes than client vdom.` + ); + hasWarned = true; + } + logMismatchError(); + } + const cur = next; + next = next.nextSibling; + remove(cur); + } + } else if (shapeFlag & 8) { + let clientText = vnode.children; + if (clientText[0] === "\n" && (el.tagName === "PRE" || el.tagName === "TEXTAREA")) { + clientText = clientText.slice(1); + } + if (el.textContent !== clientText) { + if (!isMismatchAllowed(el, 0 /* TEXT */)) { + warn$1( + `Hydration text content mismatch on`, + el, + ` + - rendered on server: ${el.textContent} + - expected on client: ${vnode.children}` + ); + logMismatchError(); + } + el.textContent = vnode.children; + } + } + if (props) { + { + 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) { + patchProp(el, key, null, props[key], void 0, parentComponent); + } + } + } + } + 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 hasWarned = 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 (!hasWarned) { + warn$1( + `Hydration children mismatch on`, + container, + ` + Server rendered element contains fewer child nodes than client vdom.` + ); + hasWarned = 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) { + remove(next2); + } else { + break; + } + } + } + const next = nextSibling(node); + const container = parentNode(node); + remove(node); + patch( + null, + vnode, + container, + next, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + 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 [hydrate, hydrateNode]; + } + function propHasMismatch(el, key, clientValue, vnode, instance) { + let mismatchType; + let mismatchKey; + let actual; + let expected; + if (key === "class") { + actual = el.getAttribute("class"); + expected = normalizeClass(clientValue); + if (!isSetEqual(toClassSet(actual || ""), toClassSet(expected))) { + mismatchType = 2 /* CLASS */; + 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 /* STYLE */; + 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 /* ATTRIBUTE */; + 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) { + expectedMap.set( + `--${getEscapedCssVarName(key)}`, + String(cssVars[key]) + ); + } + } + if (vnode === root && instance.parent) { + resolveCssVars(instance.parent, instance.vnode, expectedMap); + } + } + const allowMismatchAttr = "data-allow-mismatch"; + const MismatchTypeString = { + [0 /* TEXT */]: "text", + [1 /* CHILDREN */]: "children", + [2 /* CLASS */]: "class", + [3 /* STYLE */]: "style", + [4 /* ATTRIBUTE */]: "attribute" + }; + function isMismatchAllowed(el, allowedType) { + if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) { + 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 /* TEXT */ && list.includes("children")) { + return true; + } + return allowedAttr.split(",").includes(MismatchTypeString[allowedType]); + } + } + + const requestIdleCallback = getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1)); + const cancelIdleCallback = getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id)); + const hydrateOnIdle = (timeout = 1e4) => (hydrate) => { + const id = requestIdleCallback(hydrate, { 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); + } + const hydrateOnVisible = (opts) => (hydrate, forEach) => { + const ob = new IntersectionObserver((entries) => { + for (const e of entries) { + if (!e.isIntersecting) continue; + ob.disconnect(); + hydrate(); + break; + } + }, opts); + forEach((el) => { + if (!(el instanceof Element)) return; + if (elementIsVisibleInViewport(el)) { + hydrate(); + ob.disconnect(); + return false; + } + ob.observe(el); + }); + return () => ob.disconnect(); + }; + const hydrateOnMediaQuery = (query) => (hydrate) => { + if (query) { + const mql = matchMedia(query); + if (mql.matches) { + hydrate(); + } else { + mql.addEventListener("change", hydrate, { once: true }); + return () => mql.removeEventListener("change", hydrate); + } + } + }; + const hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => { + if (isString(interactions)) interactions = [interactions]; + let hasHydrated = false; + const doHydrate = (e) => { + if (!hasHydrated) { + hasHydrated = true; + teardown(); + hydrate(); + 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); + } + } + + const isAsyncWrapper = (i) => !!i.type.__asyncLoader; + /*! #__NO_SIDE_EFFECTS__ */ + // @__NO_SIDE_EFFECTS__ + 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((resolve, reject) => { + const userRetry = () => resolve(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, hydrate) { + const doHydrate = hydrateStrategy ? () => { + const teardown = hydrateStrategy( + hydrate, + (cb) => forEachElement(el, cb) + ); + if (teardown) { + (instance.bum || (instance.bum = [])).push(teardown); + } + } : hydrate; + 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 || false) { + 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 createVNode(loadingComponent); + } + }; + } + }); + } + 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; + } + + const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; + const 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; + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + { + 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); + { + 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); + { + devtoolsComponentAdded(instance2); + } + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName(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); + } + watch( + () => [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) { + { + 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 &= ~256; + 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; + }; + } + }; + const KeepAlive = KeepAliveImpl; + function matches(pattern, name) { + if (isArray(pattern)) { + return pattern.some((p) => matches(p, 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 &= ~256; + vnode.shapeFlag &= ~512; + } + 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 { + 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.` ) + ); + } + } + const createHook = (lifecycle) => (hook, target = currentInstance) => { + if (!isInSSRComponentSetup || lifecycle === "sp") { + injectHook(lifecycle, (...args) => hook(...args), target); + } + }; + const onBeforeMount = createHook("bm"); + const onMounted = createHook("m"); + const onBeforeUpdate = createHook( + "bu" + ); + const onUpdated = createHook("u"); + const onBeforeUnmount = createHook( + "bum" + ); + const onUnmounted = createHook("um"); + const onServerPrefetch = createHook( + "sp" + ); + const onRenderTriggered = createHook("rtg"); + const onRenderTracked = createHook("rtc"); + function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); + } + + const COMPONENTS = "components"; + const DIRECTIVES = "directives"; + function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; + } + const 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 { + 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; + if (sourceIsReactiveArray) { + needsWrap = !isShallow(source); + source = shallowReadArray(source); + } + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem( + needsWrap ? 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) { + if (name !== "default") props.name = name; + return openBlock(), createBlock( + Fragment, + null, + [createVNode("slot", props, fallback && fallback())], + 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; + } + + const getPublicInstance = (i) => { + if (!i) return null; + if (isStatefulComponent(i)) return getComponentPublicInstance(i); + return getPublicInstance(i.parent); + }; + const publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => shallowReadonly(i.props) , + $attrs: (i) => shallowReadonly(i.attrs) , + $slots: (i) => shallowReadonly(i.slots) , + $refs: (i) => shallowReadonly(i.refs) , + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $host: (i) => i.ce, + $emit: (i) => i.emit, + $options: (i) => resolveMergedOptions(i) , + $forceUpdate: (i) => i.f || (i.f = () => { + queueJob(i.update); + }), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => instanceWatch.bind(i) + }) + ); + const isReservedPrefix = (key) => key === "_" || key === "$"; + const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); + const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + if (key === "__v_skip") { + return true; + } + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key === "__isVue") { + return true; + } + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1 /* SETUP */: + return setupState[key]; + case 2 /* DATA */: + return data[key]; + case 4 /* CONTEXT */: + return ctx[key]; + case 3 /* PROPS */: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1 /* SETUP */; + return setupState[key]; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + accessCache[key] = 2 /* DATA */; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3 /* PROPS */; + return props[key]; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if (shouldCacheAccess) { + accessCache[key] = 0 /* OTHER */; + } + } + 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 /* CONTEXT */; + 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