From a430c4846a73c98270c6783369492727ff514cd1 Mon Sep 17 00:00:00 2001 From: jiangs <373297395@qq.com> Date: Fri, 18 Sep 2026 15:13:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- QYJY/css/icon.css | 1225 + QYJY/css/index.css | 560 + QYJY/css/index2.css | 95 + QYJY/css/public.css | 908 + QYJY/fonts/DIN-Bold.otf | Bin 0 -> 28640 bytes QYJY/fonts/DIN-Light.otf | Bin 0 -> 27580 bytes QYJY/fonts/DIN-Medium.otf | Bin 0 -> 27828 bytes QYJY/images/bg1.jpg | Bin 0 -> 492376 bytes QYJY/images/bg2.jpg | Bin 0 -> 210564 bytes QYJY/images/border_bg.jpg | Bin 0 -> 20837 bytes QYJY/images/title_border_bg.png | Bin 0 -> 2799 bytes QYJY/images/title_left_bg.png | Bin 0 -> 19456 bytes QYJY/images/title_right_bg.png | Bin 0 -> 2895 bytes QYJY/index.html | 497 + QYJY/index2.html | 305 + QYJY/js/echarts.min.js | 45 + TAT/css/element-plus.css | 1 + TAT/css/index.css | 232 + TAT/images/bg2.jpg | Bin 0 -> 210564 bytes TAT/images/border_bg.jpg | Bin 0 -> 20837 bytes TAT/images/title_border_bg.png | Bin 0 -> 2799 bytes TAT/images/title_left_bg.png | Bin 0 -> 19456 bytes TAT/images/title_right_bg.png | Bin 0 -> 2895 bytes TAT/index copy.html | 326 + TAT/index-1.html | 388 + TAT/index.html | 374 + TAT/js/axios.min.js | 5 + TAT/js/dayjs.min.js | 1 + TAT/js/element-plus.js | 59570 ++++++++++++++++++++++++++++++ TAT/js/vue.global.prod.js | 13 + 30 files changed, 64545 insertions(+) create mode 100644 QYJY/css/icon.css create mode 100644 QYJY/css/index.css create mode 100644 QYJY/css/index2.css create mode 100644 QYJY/css/public.css create mode 100644 QYJY/fonts/DIN-Bold.otf create mode 100644 QYJY/fonts/DIN-Light.otf create mode 100644 QYJY/fonts/DIN-Medium.otf create mode 100644 QYJY/images/bg1.jpg create mode 100644 QYJY/images/bg2.jpg create mode 100644 QYJY/images/border_bg.jpg create mode 100644 QYJY/images/title_border_bg.png create mode 100644 QYJY/images/title_left_bg.png create mode 100644 QYJY/images/title_right_bg.png create mode 100644 QYJY/index.html create mode 100644 QYJY/index2.html create mode 100644 QYJY/js/echarts.min.js create mode 100644 TAT/css/element-plus.css create mode 100644 TAT/css/index.css create mode 100644 TAT/images/bg2.jpg create mode 100644 TAT/images/border_bg.jpg create mode 100644 TAT/images/title_border_bg.png create mode 100644 TAT/images/title_left_bg.png create mode 100644 TAT/images/title_right_bg.png create mode 100644 TAT/index copy.html create mode 100644 TAT/index-1.html create mode 100644 TAT/index.html create mode 100644 TAT/js/axios.min.js create mode 100644 TAT/js/dayjs.min.js create mode 100644 TAT/js/element-plus.js create mode 100644 TAT/js/vue.global.prod.js diff --git a/QYJY/css/icon.css b/QYJY/css/icon.css new file mode 100644 index 0000000..eac9f45 --- /dev/null +++ b/QYJY/css/icon.css @@ -0,0 +1,1225 @@ +@keyframes cuIcon-spin { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +.iconfont-spin { + -webkit-animation: cuIcon-spin 2s infinite linear; + animation: cuIcon-spin 2s infinite linear; + display: inline-block; +} + +.iconfont-pulse { + -webkit-animation: cuIcon-spin 1s infinite steps(8); + animation: cuIcon-spin 1s infinite steps(8); + display: inline-block; +} + +[class*="cuIcon-"] { + font-family: "cuIcon"; + font-size: inherit; + font-style: normal; +} + +@font-face { + font-family: "cuIcon"; + src: url('//at.alicdn.com/t/font_533566_yfq2d9wdij.eot?t=1545239985831'); + /* IE9*/ + src: url('//at.alicdn.com/t/font_533566_yfq2d9wdij.eot?t=1545239985831#iefix') format('embedded-opentype'), + /* IE6-IE8 */ + url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'), + url('//at.alicdn.com/t/font_533566_yfq2d9wdij.ttf?t=1545239985831') format('truetype'), + /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ + url('//at.alicdn.com/t/font_533566_yfq2d9wdij.svg?t=1545239985831#iconfont') format('svg'); + /* iOS 4.1- */ +} + +.cuIcon-appreciate:before { + content: "\e644"; +} + +.cuIcon-check:before { + content: "\e645"; +} + +.cuIcon-close:before { + content: "\e646"; +} + +.cuIcon-edit:before { + content: "\e649"; +} + +.cuIcon-emoji:before { + content: "\e64a"; +} + +.cuIcon-favorfill:before { + content: "\e64b"; +} + +.cuIcon-favor:before { + content: "\e64c"; +} + +.cuIcon-loading:before { + content: "\e64f"; +} + +.cuIcon-locationfill:before { + content: "\e650"; +} + +.cuIcon-location:before { + content: "\e651"; +} + +.cuIcon-phone:before { + content: "\e652"; +} + +.cuIcon-roundcheckfill:before { + content: "\e656"; +} + +.cuIcon-roundcheck:before { + content: "\e657"; +} + +.cuIcon-roundclosefill:before { + content: "\e658"; +} + +.cuIcon-roundclose:before { + content: "\e659"; +} + +.cuIcon-roundrightfill:before { + content: "\e65a"; +} + +.cuIcon-roundright:before { + content: "\e65b"; +} + +.cuIcon-search:before { + content: "\e65c"; +} + +.cuIcon-taxi:before { + content: "\e65d"; +} + +.cuIcon-timefill:before { + content: "\e65e"; +} + +.cuIcon-time:before { + content: "\e65f"; +} + +.cuIcon-unfold:before { + content: "\e661"; +} + +.cuIcon-warnfill:before { + content: "\e662"; +} + +.cuIcon-warn:before { + content: "\e663"; +} + +.cuIcon-camerafill:before { + content: "\e664"; +} + +.cuIcon-camera:before { + content: "\e665"; +} + +.cuIcon-commentfill:before { + content: "\e666"; +} + +.cuIcon-comment:before { + content: "\e667"; +} + +.cuIcon-likefill:before { + content: "\e668"; +} + +.cuIcon-like:before { + content: "\e669"; +} + +.cuIcon-notificationfill:before { + content: "\e66a"; +} + +.cuIcon-notification:before { + content: "\e66b"; +} + +.cuIcon-order:before { + content: "\e66c"; +} + +.cuIcon-samefill:before { + content: "\e66d"; +} + +.cuIcon-same:before { + content: "\e66e"; +} + +.cuIcon-deliver:before { + content: "\e671"; +} + +.cuIcon-evaluate:before { + content: "\e672"; +} + +.cuIcon-pay:before { + content: "\e673"; +} + +.cuIcon-send:before { + content: "\e675"; +} + +.cuIcon-shop:before { + content: "\e676"; +} + +.cuIcon-ticket:before { + content: "\e677"; +} + +.cuIcon-back:before { + content: "\e679"; +} + +.cuIcon-cascades:before { + content: "\e67c"; +} + +.cuIcon-discover:before { + content: "\e67e"; +} + +.cuIcon-list:before { + content: "\e682"; +} + +.cuIcon-more:before { + content: "\e684"; +} + +.cuIcon-scan:before { + content: "\e689"; +} + +.cuIcon-settings:before { + content: "\e68a"; +} + +.cuIcon-questionfill:before { + content: "\e690"; +} + +.cuIcon-question:before { + content: "\e691"; +} + +.cuIcon-shopfill:before { + content: "\e697"; +} + +.cuIcon-form:before { + content: "\e699"; +} + +.cuIcon-pic:before { + content: "\e69b"; +} + +.cuIcon-filter:before { + content: "\e69c"; +} + +.cuIcon-footprint:before { + content: "\e69d"; +} + +.cuIcon-top:before { + content: "\e69e"; +} + +.cuIcon-pulldown:before { + content: "\e69f"; +} + +.cuIcon-pullup:before { + content: "\e6a0"; +} + +.cuIcon-right:before { + content: "\e6a3"; +} + +.cuIcon-refresh:before { + content: "\e6a4"; +} + +.cuIcon-moreandroid:before { + content: "\e6a5"; +} + +.cuIcon-deletefill:before { + content: "\e6a6"; +} + +.cuIcon-refund:before { + content: "\e6ac"; +} + +.cuIcon-cart:before { + content: "\e6af"; +} + +.cuIcon-qrcode:before { + content: "\e6b0"; +} + +.cuIcon-remind:before { + content: "\e6b2"; +} + +.cuIcon-delete:before { + content: "\e6b4"; +} + +.cuIcon-profile:before { + content: "\e6b7"; +} + +.cuIcon-home:before { + content: "\e6b8"; +} + +.cuIcon-cartfill:before { + content: "\e6b9"; +} + +.cuIcon-discoverfill:before { + content: "\e6ba"; +} + +.cuIcon-homefill:before { + content: "\e6bb"; +} + +.cuIcon-message:before { + content: "\e6bc"; +} + +.cuIcon-addressbook:before { + content: "\e6bd"; +} + +.cuIcon-link:before { + content: "\e6bf"; +} + +.cuIcon-lock:before { + content: "\e6c0"; +} + +.cuIcon-unlock:before { + content: "\e6c2"; +} + +.cuIcon-vip:before { + content: "\e6c3"; +} + +.cuIcon-weibo:before { + content: "\e6c4"; +} + +.cuIcon-activity:before { + content: "\e6c5"; +} + +.cuIcon-friendaddfill:before { + content: "\e6c9"; +} + +.cuIcon-friendadd:before { + content: "\e6ca"; +} + +.cuIcon-friendfamous:before { + content: "\e6cb"; +} + +.cuIcon-friend:before { + content: "\e6cc"; +} + +.cuIcon-goods:before { + content: "\e6cd"; +} + +.cuIcon-selection:before { + content: "\e6ce"; +} + +.cuIcon-explore:before { + content: "\e6d2"; +} + +.cuIcon-present:before { + content: "\e6d3"; +} + +.cuIcon-squarecheckfill:before { + content: "\e6d4"; +} + +.cuIcon-square:before { + content: "\e6d5"; +} + +.cuIcon-squarecheck:before { + content: "\e6d6"; +} + +.cuIcon-round:before { + content: "\e6d7"; +} + +.cuIcon-roundaddfill:before { + content: "\e6d8"; +} + +.cuIcon-roundadd:before { + content: "\e6d9"; +} + +.cuIcon-add:before { + content: "\e6da"; +} + +.cuIcon-notificationforbidfill:before { + content: "\e6db"; +} + +.cuIcon-explorefill:before { + content: "\e6dd"; +} + +.cuIcon-fold:before { + content: "\e6de"; +} + +.cuIcon-game:before { + content: "\e6df"; +} + +.cuIcon-redpacket:before { + content: "\e6e0"; +} + +.cuIcon-selectionfill:before { + content: "\e6e1"; +} + +.cuIcon-similar:before { + content: "\e6e2"; +} + +.cuIcon-appreciatefill:before { + content: "\e6e3"; +} + +.cuIcon-infofill:before { + content: "\e6e4"; +} + +.cuIcon-info:before { + content: "\e6e5"; +} + +.cuIcon-forwardfill:before { + content: "\e6ea"; +} + +.cuIcon-forward:before { + content: "\e6eb"; +} + +.cuIcon-rechargefill:before { + content: "\e6ec"; +} + +.cuIcon-recharge:before { + content: "\e6ed"; +} + +.cuIcon-vipcard:before { + content: "\e6ee"; +} + +.cuIcon-voice:before { + content: "\e6ef"; +} + +.cuIcon-voicefill:before { + content: "\e6f0"; +} + +.cuIcon-friendfavor:before { + content: "\e6f1"; +} + +.cuIcon-wifi:before { + content: "\e6f2"; +} + +.cuIcon-share:before { + content: "\e6f3"; +} + +.cuIcon-wefill:before { + content: "\e6f4"; +} + +.cuIcon-we:before { + content: "\e6f5"; +} + +.cuIcon-lightauto:before { + content: "\e6f6"; +} + +.cuIcon-lightforbid:before { + content: "\e6f7"; +} + +.cuIcon-lightfill:before { + content: "\e6f8"; +} + +.cuIcon-camerarotate:before { + content: "\e6f9"; +} + +.cuIcon-light:before { + content: "\e6fa"; +} + +.cuIcon-barcode:before { + content: "\e6fb"; +} + +.cuIcon-flashlightclose:before { + content: "\e6fc"; +} + +.cuIcon-flashlightopen:before { + content: "\e6fd"; +} + +.cuIcon-searchlist:before { + content: "\e6fe"; +} + +.cuIcon-service:before { + content: "\e6ff"; +} + +.cuIcon-sort:before { + content: "\e700"; +} + +.cuIcon-down:before { + content: "\e703"; +} + +.cuIcon-mobile:before { + content: "\e704"; +} + +.cuIcon-mobilefill:before { + content: "\e705"; +} + +.cuIcon-copy:before { + content: "\e706"; +} + +.cuIcon-countdownfill:before { + content: "\e707"; +} + +.cuIcon-countdown:before { + content: "\e708"; +} + +.cuIcon-noticefill:before { + content: "\e709"; +} + +.cuIcon-notice:before { + content: "\e70a"; +} + +.cuIcon-upstagefill:before { + content: "\e70e"; +} + +.cuIcon-upstage:before { + content: "\e70f"; +} + +.cuIcon-babyfill:before { + content: "\e710"; +} + +.cuIcon-baby:before { + content: "\e711"; +} + +.cuIcon-brandfill:before { + content: "\e712"; +} + +.cuIcon-brand:before { + content: "\e713"; +} + +.cuIcon-choicenessfill:before { + content: "\e714"; +} + +.cuIcon-choiceness:before { + content: "\e715"; +} + +.cuIcon-clothesfill:before { + content: "\e716"; +} + +.cuIcon-clothes:before { + content: "\e717"; +} + +.cuIcon-creativefill:before { + content: "\e718"; +} + +.cuIcon-creative:before { + content: "\e719"; +} + +.cuIcon-female:before { + content: "\e71a"; +} + +.cuIcon-keyboard:before { + content: "\e71b"; +} + +.cuIcon-male:before { + content: "\e71c"; +} + +.cuIcon-newfill:before { + content: "\e71d"; +} + +.cuIcon-new:before { + content: "\e71e"; +} + +.cuIcon-pullleft:before { + content: "\e71f"; +} + +.cuIcon-pullright:before { + content: "\e720"; +} + +.cuIcon-rankfill:before { + content: "\e721"; +} + +.cuIcon-rank:before { + content: "\e722"; +} + +.cuIcon-bad:before { + content: "\e723"; +} + +.cuIcon-cameraadd:before { + content: "\e724"; +} + +.cuIcon-focus:before { + content: "\e725"; +} + +.cuIcon-friendfill:before { + content: "\e726"; +} + +.cuIcon-cameraaddfill:before { + content: "\e727"; +} + +.cuIcon-apps:before { + content: "\e729"; +} + +.cuIcon-paintfill:before { + content: "\e72a"; +} + +.cuIcon-paint:before { + content: "\e72b"; +} + +.cuIcon-picfill:before { + content: "\e72c"; +} + +.cuIcon-refresharrow:before { + content: "\e72d"; +} + +.cuIcon-colorlens:before { + content: "\e6e6"; +} + +.cuIcon-markfill:before { + content: "\e730"; +} + +.cuIcon-mark:before { + content: "\e731"; +} + +.cuIcon-presentfill:before { + content: "\e732"; +} + +.cuIcon-repeal:before { + content: "\e733"; +} + +.cuIcon-album:before { + content: "\e734"; +} + +.cuIcon-peoplefill:before { + content: "\e735"; +} + +.cuIcon-people:before { + content: "\e736"; +} + +.cuIcon-servicefill:before { + content: "\e737"; +} + +.cuIcon-repair:before { + content: "\e738"; +} + +.cuIcon-file:before { + content: "\e739"; +} + +.cuIcon-repairfill:before { + content: "\e73a"; +} + +.cuIcon-taoxiaopu:before { + content: "\e73b"; +} + +.cuIcon-weixin:before { + content: "\e612"; +} + +.cuIcon-attentionfill:before { + content: "\e73c"; +} + +.cuIcon-attention:before { + content: "\e73d"; +} + +.cuIcon-commandfill:before { + content: "\e73e"; +} + +.cuIcon-command:before { + content: "\e73f"; +} + +.cuIcon-communityfill:before { + content: "\e740"; +} + +.cuIcon-community:before { + content: "\e741"; +} + +.cuIcon-read:before { + content: "\e742"; +} + +.cuIcon-calendar:before { + content: "\e74a"; +} + +.cuIcon-cut:before { + content: "\e74b"; +} + +.cuIcon-magic:before { + content: "\e74c"; +} + +.cuIcon-backwardfill:before { + content: "\e74d"; +} + +.cuIcon-playfill:before { + content: "\e74f"; +} + +.cuIcon-stop:before { + content: "\e750"; +} + +.cuIcon-tagfill:before { + content: "\e751"; +} + +.cuIcon-tag:before { + content: "\e752"; +} + +.cuIcon-group:before { + content: "\e753"; +} + +.cuIcon-all:before { + content: "\e755"; +} + +.cuIcon-backdelete:before { + content: "\e756"; +} + +.cuIcon-hotfill:before { + content: "\e757"; +} + +.cuIcon-hot:before { + content: "\e758"; +} + +.cuIcon-post:before { + content: "\e759"; +} + +.cuIcon-radiobox:before { + content: "\e75b"; +} + +.cuIcon-rounddown:before { + content: "\e75c"; +} + +.cuIcon-upload:before { + content: "\e75d"; +} + +.cuIcon-writefill:before { + content: "\e760"; +} + +.cuIcon-write:before { + content: "\e761"; +} + +.cuIcon-radioboxfill:before { + content: "\e763"; +} + +.cuIcon-punch:before { + content: "\e764"; +} + +.cuIcon-shake:before { + content: "\e765"; +} + +.cuIcon-move:before { + content: "\e768"; +} + +.cuIcon-safe:before { + content: "\e769"; +} + +.cuIcon-activityfill:before { + content: "\e775"; +} + +.cuIcon-crownfill:before { + content: "\e776"; +} + +.cuIcon-crown:before { + content: "\e777"; +} + +.cuIcon-goodsfill:before { + content: "\e778"; +} + +.cuIcon-messagefill:before { + content: "\e779"; +} + +.cuIcon-profilefill:before { + content: "\e77a"; +} + +.cuIcon-sound:before { + content: "\e77b"; +} + +.cuIcon-sponsorfill:before { + content: "\e77c"; +} + +.cuIcon-sponsor:before { + content: "\e77d"; +} + +.cuIcon-upblock:before { + content: "\e77e"; +} + +.cuIcon-weblock:before { + content: "\e77f"; +} + +.cuIcon-weunblock:before { + content: "\e780"; +} + +.cuIcon-my:before { + content: "\e78b"; +} + +.cuIcon-myfill:before { + content: "\e78c"; +} + +.cuIcon-emojifill:before { + content: "\e78d"; +} + +.cuIcon-emojiflashfill:before { + content: "\e78e"; +} + +.cuIcon-flashbuyfill:before { + content: "\e78f"; +} + +.cuIcon-text:before { + content: "\e791"; +} + +.cuIcon-goodsfavor:before { + content: "\e794"; +} + +.cuIcon-musicfill:before { + content: "\e795"; +} + +.cuIcon-musicforbidfill:before { + content: "\e796"; +} + +.cuIcon-card:before { + content: "\e624"; +} + +.cuIcon-triangledownfill:before { + content: "\e79b"; +} + +.cuIcon-triangleupfill:before { + content: "\e79c"; +} + +.cuIcon-roundleftfill-copy:before { + content: "\e79e"; +} + +.cuIcon-font:before { + content: "\e76a"; +} + +.cuIcon-title:before { + content: "\e82f"; +} + +.cuIcon-recordfill:before { + content: "\e7a4"; +} + +.cuIcon-record:before { + content: "\e7a6"; +} + +.cuIcon-cardboardfill:before { + content: "\e7a9"; +} +.cuIcon-cardboard:before { + content: "\e7aa"; +} + +.cuIcon-formfill:before { + content: "\e7ab"; +} + +.cuIcon-coin:before { + content: "\e7ac"; +} + +.cuIcon-cardboardforbid:before { + content: "\e7af"; +} + +.cuIcon-circlefill:before { + content: "\e7b0"; +} + +.cuIcon-circle:before { + content: "\e7b1"; +} + +.cuIcon-attentionforbid:before { + content: "\e7b2"; +} + +.cuIcon-attentionforbidfill:before { + content: "\e7b3"; +} + +.cuIcon-attentionfavorfill:before { + content: "\e7b4"; +} + +.cuIcon-attentionfavor:before { + content: "\e7b5"; +} + +.cuIcon-titles:before { + content: "\e701"; +} + +.cuIcon-icloading:before { + content: "\e67a"; +} + +.cuIcon-full:before { + content: "\e7bc"; +} + +.cuIcon-mail:before { + content: "\e7bd"; +} + +.cuIcon-peoplelist:before { + content: "\e7be"; +} + +.cuIcon-goodsnewfill:before { + content: "\e7bf"; +} + +.cuIcon-goodsnew:before { + content: "\e7c0"; +} + +.cuIcon-medalfill:before { + content: "\e7c1"; +} + +.cuIcon-medal:before { + content: "\e7c2"; +} + +.cuIcon-newsfill:before { + content: "\e7c3"; +} + +.cuIcon-newshotfill:before { + content: "\e7c4"; +} + +.cuIcon-newshot:before { + content: "\e7c5"; +} + +.cuIcon-news:before { + content: "\e7c6"; +} + +.cuIcon-videofill:before { + content: "\e7c7"; +} + +.cuIcon-video:before { + content: "\e7c8"; +} + +.cuIcon-exit:before { + content: "\e7cb"; +} + +.cuIcon-skinfill:before { + content: "\e7cc"; +} + +.cuIcon-skin:before { + content: "\e7cd"; +} + +.cuIcon-moneybagfill:before { + content: "\e7ce"; +} + +.cuIcon-usefullfill:before { + content: "\e7cf"; +} + +.cuIcon-usefull:before { + content: "\e7d0"; +} + +.cuIcon-moneybag:before { + content: "\e7d1"; +} + +.cuIcon-redpacket_fill:before { + content: "\e7d3"; +} + +.cuIcon-subscription:before { + content: "\e7d4"; +} + +.cuIcon-loading1:before { + content: "\e633"; +} + +.cuIcon-github:before { + content: "\e692"; +} + +.cuIcon-global:before { + content: "\e7eb"; +} + +.cuIcon-settingsfill:before { + content: "\e6ab"; +} + +.cuIcon-back_android:before { + content: "\e7ed"; +} + +.cuIcon-expressman:before { + content: "\e7ef"; +} + +.cuIcon-evaluate_fill:before { + content: "\e7f0"; +} + +.cuIcon-group_fill:before { + content: "\e7f5"; +} + +.cuIcon-play_forward_fill:before { + content: "\e7f6"; +} + +.cuIcon-deliver_fill:before { + content: "\e7f7"; +} + +.cuIcon-notice_forbid_fill:before { + content: "\e7f8"; +} + +.cuIcon-fork:before { + content: "\e60c"; +} + +.cuIcon-pick:before { + content: "\e7fa"; +} + +.cuIcon-wenzi:before { + content: "\e6a7"; +} + +.cuIcon-ellipse:before { + content: "\e600"; +} + +.cuIcon-qr_code:before { + content: "\e61b"; +} + +.cuIcon-dianhua:before { + content: "\e64d"; +} + +.cuIcon-icon:before { + content: "\e602"; +} + +.cuIcon-loading2:before { + content: "\e7f1"; +} + +.cuIcon-btn:before { + content: "\e601"; +} diff --git a/QYJY/css/index.css b/QYJY/css/index.css new file mode 100644 index 0000000..4e1829e --- /dev/null +++ b/QYJY/css/index.css @@ -0,0 +1,560 @@ +@charset "UTF-8"; + +/* +基准设计稿:1920 宽 × 1080 高 +宽度相关 px → px / 19.2 = vw +高度相关 px → px / 10.8 = vh' */ +/* CSS Document */ +.bg { + margin: 0 auto; + width: 100vw; + height: 100vh; + background: url(../images/bg1.jpg) no-repeat; + background-size: 100% 100%; + padding: 0vw 1.04vw 0vw 1.56vw; + transform-origin: center center; + overflow: hidden; +} + +.title { + width: 100%; + height: 3.7vh; + font-size: 2vw; + line-height: 8.5vh; + color: #0efdff; + text-align: center; + font-weight: bold; +} + +.container { + display: flex; + height: calc(100vh - 5.56vh); +} + +.border_bg_leftTop { + position: absolute; + left: -0.1vw; + top: -0.93vh; + width: 4.82vw; + height: 1.16vh; + display: block; + background: #01279d url(../images/title_left_bg.png) no-repeat; + background-size: cover; +} + +.border_bg_rightTop { + position: absolute; + right: -0.13vw; + top: -0.23vh; + width: 1.3vw; + height: 2.31vh; + display: block; + background: url(../images/border_bg.jpg) no-repeat; + background-size: cover; +} + +.border_bg_leftBottom { + position: absolute; + left: -0.1vw; + bottom: -0.19vh; + width: 1.3vw; + height: 2.31vh; + display: block; + background: url(../images/border_bg.jpg) no-repeat; + background-size: cover; +} + +.border_bg_rightBottom { + position: absolute; + right: -0.13vw; + bottom: -0.23vh; + width: 1.04vw; + height: 1.85vh; + display: block; + background: url(../images/title_right_bg.png) no-repeat; + background-size: cover; +} + +.leftMain { + width: 68%; + height: 100%; + display: flex; + flex-direction: column; + margin-right: 0.78vw; +} + +.rightMain { + width: 32%; + height: 100%; + padding-top: 3.7vh; +} + +.leftMain_top { + width: 100%; +} + +.leftMain_top ul { + display: flex; + display: -webkit-flex; +} + +.leftMain_top ul li { + width: 26%; + padding-right: 1.3vw; +} + +.leftMain_top ul li:last-child { + padding: 0; +} + +.leftMain_top ul li:first-child { + width: 22%; +} + +.leftMain_top ul li .liIn { + border: 0.1vw solid rgba(14, 253, 255, 0.5); + width: 100%; + min-height: 5.56vh; + position: relative; + padding: 0.3vw 1.04vw; +} + +.leftMain_top ul li .liIn h3 { + font-size: 1.6vw; + font-weight: 700; + color: #fff; +} + +.leftMain_top ul li .liIn .shu { + font-size: 1.6vw; + color: #0efdff; + font-family: dig; + margin-bottom: 0.46vh; +} + +.leftMain_top ul li .liIn .shu i { + font-size: 0.9vw; + margin-left: 0.1vw; + font-style: normal; +} + +.leftMain_top ul li .liIn .zi { + font-size: 0.52vw; + color: #fff; + position: relative; + z-index: 10; +} + +.leftMain_top ul li .liIn .zi .span1 { + margin-right: 1.3vw; +} + +.leftMain_middle { + flex: 1; + width: 100%; + display: flex; + display: -webkit-flex; + margin-top: 1.85vh; + min-height: 0; +} + +.leftMain_middle .leftMain_middle_left { + display: flex; + flex-direction: column; + width: 70%; + margin-right: 0.52vw; +} + +.leftMain_middle .leftMain_middle_left .leftMain_middle_leftIn { + border: 0.1vw solid rgba(14, 253, 255, 0.5); + width: 100%; + height: 49%; + position: relative; + padding: 0.2vw; +} + +.leftMain_middle_leftIn_zhe { + margin-top: 1%; + /* height: 48%; */ +} + +.leftMain_middle .leftMain_middle_left .leftMain_middle_leftIn h3 { + font-size: 1.6vw; + color: #fff; + font-weight: 700; +} + +.leftMain_middle .leftMain_middle_left .leftMain_middle_leftIn .biaoge { + width: 100%; + height: calc(100% - 5vh); +} + +.leftMain_middle .leftMain_middle_right { + width: 30%; + height: calc(100% - 0.46vh); +} + +.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn { + border: 0.1vw solid rgba(14, 253, 255, 0.5); + width: 100%; + height: 100%; + position: relative; + padding: 0.52vw; +} + +.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn h3 { + font-size: 1.6vw; + color: #fff; + font-weight: 700; +} + +/*左边中间部分排行榜*/ +.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai { + width: 100%; + height: calc(100% - 5vh); +} + +.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn { + display: flex; + display: -webkit-flex; + align-items: center; + color: #fff; + font-size: 1.6vw; + font-weight: 700; +} + +.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn .liIn_left { + width: 38%; + position: relative; + line-height: 1; + flex‑shrink: 0; +} + +.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn .liIn_left .bot { + width: 1.04vw; + height: 2vh; + background: #05d1fc; + border-radius: 1000px; + display: block; + position: absolute; + left: 0.26vw; + top: 0; + bottom: 0; + margin: auto 0; +} + + + +.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li { + margin-bottom: 10px; +} + +.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn .liIn_line { + width: 40%; + height: 3.3vh; + background: rgba(255, 255, 255, 0.5); + border-radius: 2000px; + overflow: hidden; + position: relative; +} + +.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn .liIn_line .line_lineIn { + width: 100%; + height: 3.3vh; + background: #05d1fc; + border-radius: 2000px; + -webkit-animation: widthMove1 2s ease-in-out; +} + +.leftMain_middle .line_lineIn_sy { + width: 100%; + height: 3.3vh; + background: #fcae05; + border-radius: 2000px; + -webkit-animation: widthMove2 2s ease-in-out; +} + +.line_lineIn .per { + position: absolute; + top: 0; + left: 20%; + font-size: 1.4vw; + line-height: 3.3vh; +} + +.line_lineIn_sy .per { + position: absolute; + top: 0; + left: 20%; + font-size: 1.4vw; + line-height: 3.3vh; +} + + + +@-webkit-keyframes widthMove1 { + 0% { + width: 0%; + } + + 100% { + width: 98.5%; + } +} + +@-webkit-keyframes widthMove2 { + 0% { + width: 100%; + } + + 100% { + width: 0%; + } +} + + +.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn .num { + width: 22%; + font-family: dig; + padding-left: 0.26vw; +} + +/*左边底部*/ +.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_bi ul { + display: flex; + display: -webkit-flex; + flex-wrap: wrap; + width: 100%; +} + +.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_bi ul li { + width: 33.3%; + text-align: center; + margin-bottom: 1.16vh; +} + +.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_bi ul li .shu { + font-size: 1.82vw; + color: rgba(14, 253, 255, 1); + font-family: dig; + padding: 2.78vh 0 0.46vh; + font-weight: normal; +} + +.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_bi ul li .zi { + font-size: 0.78vw; + color: #fff; +} + +/*右边部分*/ +.rightMain .rightMain_topIn { + border: 0.1vw solid rgba(14, 253, 255, 0.5); + width: 100%; + height: calc(100% - 0.46vh); + position: relative; + padding: 0.52vw; +} + +.proportion { + height: calc(100% - 5vh); + overflow-y: auto; +} + +.proportion ul li .liIn { + display: flex; + display: -webkit-flex; + align-items: center; + color: #fff; + font-size: 1.6vw; + font-weight: 700; + /* height: 5vh; */ + margin-bottom: 10px; +} + +.proportion ul li .liIn .zi { + line-height: 10px; +} + +.proportion ul li .liIn .liIn_left { + width: 60%; + position: relative; +} + +.proportion ul li .liIn .liIn_left .bot { + width: 1.04vw; + height: 1.85vh; + background: #05d1fc; + border-radius: 1000px; + display: block; + position: absolute; + left: 0.26vw; + top: 0; + bottom: 0; + margin: auto 0; +} + +.proportion ul li .liIn .liIn_line { + width: 25%; + height: 3.3vh; + background: rgba(255, 255, 255, 0.5); + border-radius: 2000px; + overflow: hidden; + position: relative; + font-size: 1.4vw; +} + +.proportion ul li .liIn .liIn_line .line_lineIn { + width: 100%; + height: 3.3vh; + background: #05d1fc; + border-radius: 2000px; + -webkit-animation: widthMove1 2s ease-in-out; +} + + +.proportion ul li .liIn .num { + width: 15%; + font-family: dig; + padding-left: 0.26vw; +} + +.rightMain .rightMain_topIn h3 { + font-size: 1.6vw; + color: #fff; + font-weight: 700; + margin-bottom: 10px; +} + +.rightMain .rightMain_topIn .biaoge { + /* min-height: 200px; */ +} + +.rightMain .rightMain_bottom { + width: 100%; +} + +.rightMain .rightMain_bottomIn { + border: 0.1vw solid rgba(14, 253, 255, 0.5); + width: 100%; + min-height: 5.56vh; + position: relative; + padding: 1.85vh 0.65vw; +} + +.rightMain .rightMain_bottomIn h3 { + font-size: 0.94vw; + color: #fff; + margin-bottom: 1.16vh; + font-weight: 700; +} + +/*右下角表格*/ +.rightMain .rightMain_bottomIn .biaoge { + min-height: 18.5vh; +} + +.rightMain .rightMain_bottomIn .biaoge_list { + overflow: hidden; + position: relative; +} + +.rightMain .rightMain_bottomIn .biaoge_list .biaoge_listIn .ul_list { + overflow: hidden; + position: relative; +} + +.rightMain .rightMain_bottomIn .biaoge_list .biaoge_listIn .ul_listIn { + -webkit-animation: 14s gundong linear infinite normal; + animation: 14s gundong linear infinite normal; + position: relative; +} + +@keyframes gundong { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 100% { + -webkit-transform: translate3d(0, -30vh, 0); + transform: translate3d(0, -30vh, 0); + } +} + +.rightMain .rightMain_bottomIn .biaoge_list ul { + display: flex; + display: -webkit-flex; + width: 100%; +} + +.rightMain .rightMain_bottomIn .biaoge_list .ul_title { + background: linear-gradient(left, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.1)); + background: -ms-linear-gradient(left, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.1)); + background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.1)); + background: -moz-linear-gradient(left, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.1)); +} + +.rightMain .rightMain_bottomIn .biaoge_list .ul_con { + border-bottom: 0.1vw solid rgba(14, 253, 255, 0.5); +} + +.rightMain .rightMain_bottomIn .biaoge_list ul li { + width: 20%; + text-align: center; + color: #fff; + font-size: 0.78vw; + height: 4.63vh; + line-height: 4.63vh; +} + +.rightMain .rightMain_bottomIn .biaoge_list ul li:frist-child { + text-align: left; +} + +.title_nums { + font-size: 1.6vw; + font-weight: 700; + color: #fff; + margin: 0.2vh 0 0.3vh; +} + +.nums_box { + display: flex; + display: -webkit-flex; + align-items: center; + justify-content: space-between; +} + +/* 适配你深蓝色科技风的滚动条 */ +/* 整体滚动条容器 */ +::-webkit-scrollbar { + width: 0.52vw; + height: 0.52vw; +} + +/* 滚动条轨道 */ +::-webkit-scrollbar-track { + background: rgba(0, 150, 255, 0.1); + border-radius: 0.21vw; +} + +/* 滚动条滑块 */ +::-webkit-scrollbar-thumb { + background: linear-gradient(to bottom, + #00d4ff, + #0099cc); + border-radius: 0.21vw; + box-shadow: 0 0 0.31vw rgba(0, 212, 255, 0.5); +} + +/* 滑块 hover */ +::-webkit-scrollbar-thumb:hover { + background: linear-gradient(to bottom, + #00f0ff, + #00aadd); + box-shadow: 0 0 0.52vw rgba(0, 240, 255, 0.8); +} + +::-webkit-scrollbar-button { + display: none; +} \ No newline at end of file diff --git a/QYJY/css/index2.css b/QYJY/css/index2.css new file mode 100644 index 0000000..b675a9a --- /dev/null +++ b/QYJY/css/index2.css @@ -0,0 +1,95 @@ + .leftMain { + width: 70%; + height: 100%; + display: flex; + flex-direction: column; + margin-right: 15px; + padding-top: 30px; + } + + .rightMain { + width: 30%; + height: 100%; + padding-top: 30px; + } + + h3 { + font-size: 18px; + font-weight: 700; + color: #fff; + } + + .leftMain_middle { + height: 100%; + display: flex; + flex-direction: column; + margin-top: 0; + } + + .leftMain_middle_leftIn { + position: relative; + border: 2px solid rgba(14, 253, 255, 0.5); + height: 49%; + padding: 5px; + } + + .leftMain_middle_leftIn_zhe { + margin-top: 10px; + } + + .leftMain_middle .biaoge { + height: calc(100% - 70px); + } + + .leftMain_middle_leftIn .left_mideele_top ul { + display: flex; + display: -webkit-flex; + } + + .left_mideele_top ul li { + margin-right: 10px; + } + + .left_mideele_top ul li:last-child { + margin: 0; + } + + .left_mideele_top ul li .liIn { + border: 2px solid rgba(14, 253, 255, 0.5); + display: flex; + align-items: center; + padding: 5px; + } + + .left_mideele_top ul li .liIn h3 { + font-size: 18px; + font-weight: 700; + color: #fff; + margin-right: 10px; + } + + .left_mideele_top ul li .liIn .shu { + font-size: 18px; + color: #0efdff; + font-family: dig; + } + + .left_mideele_top ul li .liIn .shu i { + font-size: 16px; + margin-left: 2px; + font-style: normal; + } + + .left_mideele_top ul li .liIn .zi { + font-size: 10px; + color: #fff; + position: relative; + z-index: 10; + } + + + + .rightMain_topIn { + position: relative; + border: 2px solid rgba(14, 253, 255, 0.5); + } \ No newline at end of file diff --git a/QYJY/css/public.css b/QYJY/css/public.css new file mode 100644 index 0000000..5c772a4 --- /dev/null +++ b/QYJY/css/public.css @@ -0,0 +1,908 @@ +@charset "utf-8"; +/* CSS Document */ +@font-face{ + font-family: 'dig'; + src : url('../fonts/DIN-Bold.otf'); +} +body,p,div,h1,h2,h3,h4,h5,h6,button,input,ol,li,ul,dl,dt,dd,img,table,tr,td,th,select{ + margin:0; + padding:0; +  -webkit-appearance:none; + border:0; + list-style:none; + box-sizing:border-box;} +a,img,button,input,textarea{-webkit-tap-highlight-color:rgba(255,255,255,0); outline-color:#0081ff; background:none;} +button{ + outline:none;} +input::-webkit-input-placeholder { + color:#aaa; + } +input::-webkit-outer-spin-button, +input::-webkit-inner-spin-button{ + -webkit-appearance: none !important; + margin: 0; +} +input[type="number"]{-moz-appearance:textfield;} +body{ + margin:0 auto; + font-size:16px; + color:#121212; + font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif; + position:relative; + } +a{ + text-decoration:none; + color:#f06000;} +.noborder{ + border:0 !important} +#header{ + height:8px; + width:100%; + position:fixed; + top:0; + left:0; + z-index:1000; + } +.header{ + height:8px; + width:100%; + position:fixed; + top:0; + left:0; + z-index:1000; + } +.headerIn{ + width:100%; + height:100%; + position:relative; + background:#0081ff; + display: flex; + align-items: center; + justify-content: space-between; +} +.headerIn .back{ + display: flex; + height: 100%; + align-items: center; + padding-left:3.2px; + font-size:2.24px; + color:#fff; + width:20%; +} +.headerIn .save{ + display: flex; + height:65%; + align-items: center; + font-size:2.24px; + color:#fff; + padding:0 3.2px; + text-align:right; + justify-content:center; + margin-right:1.6px; + border-radius:3px; + border:1px solid #fff; +} +.cuIcon-back:before{ + margin-right:3px; + font-size:2.56px;} +.headerIn h2{ + width:50%; + font-size:2.88px; + color:#fff; + font-weight:normal; + text-align:center; + margin:0 auto; + padding:0; + font-family:"微软雅黑"; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + position:absolute; + left:0; + right:0; + top:0; + margin:auto; + height:100%; + line-height:8px;} +.headerIn .sel{ + position:absolute; + top:0; + right:0; + display:block; + width:30%; + height:100%; + background:url(../images/icon_sel.png) no-repeat 90% center; + background-size:20px auto; + padding-right:25px; + color:#fff; + line-height:45px;} +.headerIn .share{ + position:absolute; + top:0; + right:10px; + display:block; + width:60px; + height:100%; + background:url(../images/icon_share.png) no-repeat 5px center; + background-size:20px auto; + padding-left:25px; + color:#fff; + line-height:45px; + text-align:right; + font-size:14px;} +.zhezhao_new{ + position:fixed; + z-index:100000; + background:rgba(0,0,0,0.5); + width:100%; + height:20000px; + top:0; + left:0;} +.nodate { + background: url(../images/nodate.png) no-repeat top center; + background-size: 65px auto; + padding-top: 75px; + text-align: center; + font-size: 14px; + color: #888; + line-height: 24px; + width: 90%; + margin: 0 auto; +} +.nodate2 { + background: url(../images/nodate8.png) no-repeat top center; + background-size:160px auto; + padding-top:150px; + text-align: center; + font-size: 14px; + color:#888; + line-height:24px; + width: 90%; + margin:150px auto 0; +} +.nodate3 { + background: url(../images/nodate10.png) no-repeat top center; + background-size:160px auto; + padding-top:150px; + text-align: center; + font-size: 14px; + color:#888; + line-height:24px; + width: 90%; + margin:150px auto 0; +} +.nodate3 .goto{ + display:block; + width:120px; + height:40px; + background:none; + border:1px solid #f06000; + border-radius:5px; + color:#f06000; + font-size:16px; + font-family:"微软雅黑"; + text-align:center; + margin:20px auto; + line-height:38px;} +.eggloading{ + background: url(../images/loading2.gif) no-repeat top center; + background-size:60px auto; + padding-top:60px; + text-align: center; + font-size: 14px; + color: #888; + line-height: 24px; + width: 90%; + margin:200px auto 0; +} +.articleDel{ + background: url(../images/nodate9.png) no-repeat top center; + background-size:160px auto; + padding-top:150px; + text-align: center; + font-size: 14px; + color:#888; + line-height:24px; + width: 90%; + margin:150px auto 0; +} +body .spinner-android{ + display:none;} +body .loading{ + background:url(../images/loading2.gif) no-repeat center center; + background-size:60px auto; + width:80px; + height:80px; + padding:10px; +} +/*资讯白色头部*/ +.headerIn2{ + width:100%; + height:100%; + position:relative; + background:#fff; + max-width:640px; + margin:0 auto; + box-shadow:1px 0 3px #aaa; + -webkit-box-shadow: 1px 0 3px #aaa; + -moz-box-shadow: 1px 0 3px #aaa; + } +.headerIn2 .back{ + position:absolute; + top:0; + left:0; + display:block; + width:20%; + height:100%; + background:url(../images/back4.png) no-repeat 10px center; + background-size:12px auto; + padding-left:25px; + color:#555; + line-height:45px; + } +.headerIn2 h2{ + width:80%; + height:100%; + line-height:45px; + font-size:16px; + color:#555; + font-weight:normal; + text-align:center; + margin:0 auto; + padding:0; + font-family:"微软雅黑"; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + font-weight:bold;} +.headerIn2 h2 img{ + height:100%; + } +.headerIn2 .share{ + position:absolute; + top:0; + right:10px; + display:block; + width:60px; + height:100%; + background:url(../images/zixun_icon_share.png) no-repeat right center; + background-size:20px auto; + padding-left:25px; + color:#fff; + line-height:45px; + text-align:right; + font-size:15px;} +.headerIn2 .fabu{ + position:absolute; + top:7px; + right:10px; + height:30px; + line-height:30px; + padding:0 8px; + font-size:15px; + background:#f06000; + color:#fff; + border-radius:3px;} +body { + /* Color 可以自定义相关配色 */ + /* var属性兼容性 --> https://www.caniuse.com/#feat=css-variables */ + /* 标准色 */ + --red: #e54d42; + --orange: #f37b1d; + --yellow: #fbbd08; + --olive: #8dc63f; + --green: #39b54a; + --cyan: #1cbbb4; + --blue: #0081ff; + --purple: #6739b6; + --mauve: #9c26b0; + --pink: #e03997; + --brown: #a5673f; + --grey: #8799a3; + --black: #333333; + --darkGray: #666666; + --gray: #aaaaaa; + --ghostWhite: #f1f1f1; + --white: #ffffff; + /* 浅色 */ + --redLight: #fadbd9; + --orangeLight: #fde6d2; + --yellowLight: #fef2ce; + --oliveLight: #e8f4d9; + --greenLight: #d7f0db; + --cyanLight: #d2f1f0; + --blueLight: #cce6ff; + --purpleLight: #e1d7f0; + --mauveLight: #ebd4ef; + --pinkLight: #f9d7ea; + --brownLight: #ede1d9; + --greyLight: #e7ebed; + /* 渐变色 */ + --gradualRed: linear-gradient(45deg, #f43f3b, #ec008c); + --gradualOrange: linear-gradient(45deg, #ff9700, #ed1c24); + --gradualGreen: linear-gradient(45deg, #39b54a, #8dc63f); + --gradualPurple: linear-gradient(45deg, #9000ff, #5e00ff); + --gradualPink: linear-gradient(45deg, #ec008c, #6739b6); + --gradualBlue: linear-gradient(45deg, #0081ff, #1cbbb4); + /* 阴影透明色 */ + --ShadowSize: 6px 6px 8px; + --redShadow: rgba(204, 69, 59, 0.2); + --orangeShadow: rgba(217, 109, 26, 0.2); + --yellowShadow: rgba(224, 170, 7, 0.2); + --oliveShadow: rgba(124, 173, 55, 0.2); + --greenShadow: rgba(48, 156, 63, 0.2); + --cyanShadow: rgba(28, 187, 180, 0.2); + --blueShadow: rgba(0, 102, 204, 0.2); + --purpleShadow: rgba(88, 48, 156, 0.2); + --mauveShadow: rgba(133, 33, 150, 0.2); + --pinkShadow: rgba(199, 50, 134, 0.2); + --brownShadow: rgba(140, 88, 53, 0.2); + --greyShadow: rgba(114, 130, 138, 0.2); + --grayShadow: rgba(114, 130, 138, 0.2); + --blackShadow: rgba(26, 26, 26, 0.2); + background-color: var(--ghostWhite); + color: var(--black); + font-family: Helvetica Neue, Helvetica, sans-serif; +} +/* -- 阴影 -- */ +.shadow[class*='white'] { + --ShadowSize: 0 1px 6px; +} +.shadow-lg { + --ShadowSize: 0px 6.4px 16px 0px; +} +.shadow-warp { + position: relative; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); +} +.shadow-warp:before, +.shadow-warp:after { + position: absolute; + content: ""; + top: 20px; + bottom: 30px; + left: 20px; + width: 50%; + box-shadow: 0 30px 20px rgba(0, 0, 0, 0.2); + transform: rotate(-3deg); + z-index: -1; +} +.shadow-warp:after { + right: 20px; + left: auto; + transform: rotate(3deg); +} +.shadow-blur { + position: relative; +} +.shadow-blur::before { + content: ""; + display: block; + background: inherit; + filter: blur(1.6px); + position: absolute; + width: 100%; + height: 100%; + top:0.8px; + left:0.8px; + z-index: -1; + opacity: 0.4; + transform-origin: 0 0; + border-radius: inherit; + transform: scale(1, 1); +} +/* ================== + 背景 + ==================== */ +.line-red::after, +.lines-red::after { + border-color: var(--red); +} +.line-orange::after, +.lines-orange::after { + border-color: var(--orange); +} +.line-yellow::after, +.lines-yellow::after { + border-color: var(--yellow); +} +.line-olive::after, +.lines-olive::after { + border-color: var(--olive); +} +.line-green::after, +.lines-green::after { + border-color: var(--green); +} +.line-cyan::after, +.lines-cyan::after { + border-color: var(--cyan); +} +.line-blue::after, +.lines-blue::after { + border-color: var(--blue); +} +.line-purple::after, +.lines-purple::after { + border-color: var(--purple); +} +.line-mauve::after, +.lines-mauve::after { + border-color: var(--mauve); +} +.line-pink::after, +.lines-pink::after { + border-color: var(--pink); +} +.line-brown::after, +.lines-brown::after { + border-color: var(--brown); +} +.line-grey::after, +.lines-grey::after { + border-color: var(--grey); +} +.line-gray::after, +.lines-gray::after { + border-color: var(--gray); +} +.line-black::after, +.lines-black::after { + border-color: var(--black); +} +.line-white::after, +.lines-white::after { + border-color: var(--white); +} +.bg-red { + background-color: var(--red); + color: var(--white); +} +.bg-orange { + background-color: var(--orange); + color: var(--white); +} +.bg-yellow { + background-color: var(--yellow); + color: var(--black); +} +.bg-olive { + background-color: var(--olive); + color: var(--white); +} +.bg-green { + background-color: var(--green); + color: var(--white); +} +.bg-cyan { + background-color: var(--cyan); + color: var(--white); +} +.bg-blue { + background-color: var(--blue); + color: var(--white); +} +.bg-purple { + background-color: var(--purple); + color: var(--white); +} +.bg-mauve { + background-color: var(--mauve); + color: var(--white); +} +.bg-pink { + background-color: var(--pink); + color: var(--white); +} +.bg-brown { + background-color: var(--brown); + color: var(--white); +} +.bg-grey { + background-color: var(--grey); + color: var(--white); +} +.bg-gray { + background-color: #f0f0f0; + color: var(--black); +} +.bg-black { + background-color: var(--black); + color: var(--white); +} +.bg-white { + background-color: var(--white); + color: var(--darkGray); +} +.bg-shadeTop { + background-image: linear-gradient(rgba(0, 0, 0, 1), rgba(0, 0, 0, 0.01)); + color: var(--white); +} +.bg-shadeBottom { + background-image: linear-gradient(rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 1)); + color: var(--white); +} +.bg-red.light { + color: var(--red); + background-color: var(--redLight); +} +.bg-orange.light { + color: var(--orange); + background-color: var(--orangeLight); +} +.bg-yellow.light { + color: var(--yellow); + background-color: var(--yellowLight); +} +.bg-olive.light { + color: var(--olive); + background-color: var(--oliveLight); +} +.bg-green.light { + color: var(--green); + background-color: var(--greenLight); +} +.bg-cyan.light { + color: var(--cyan); + background-color: var(--cyanLight); +} +.bg-blue.light { + color: var(--blue); + background-color: var(--blueLight); +} +.bg-purple.light { + color: var(--purple); + background-color: var(--purpleLight); +} +.bg-mauve.light { + color: var(--mauve); + background-color: var(--mauveLight); +} +.bg-pink.light { + color: var(--pink); + background-color: var(--pinkLight); +} +.bg-brown.light { + color: var(--brown); + background-color: var(--brownLight); +} +.bg-grey.light { + color: var(--grey); + background-color: var(--greyLight); +} +.bg-gradual-red { + background-image: var(--gradualRed); + color: var(--white); +} +.bg-gradual-orange { + background-image: var(--gradualOrange); + color: var(--white); +} +.bg-gradual-green { + background-image: var(--gradualGreen); + color: var(--white); +} +.bg-gradual-purple { + background-image: var(--gradualPurple); + color: var(--white); +} +.bg-gradual-pink { + background-image: var(--gradualPink); + color: var(--white); +} +.bg-gradual-blue { + background-image: var(--gradualBlue); + color: var(--white); +} +.shadow[class*="-red"] { + box-shadow: var(--ShadowSize) var(--redShadow); +} +.shadow[class*="-orange"] { + box-shadow: var(--ShadowSize) var(--orangeShadow); +} +.shadow[class*="-yellow"] { + box-shadow: var(--ShadowSize) var(--yellowShadow); +} +.shadow[class*="-olive"] { + box-shadow: var(--ShadowSize) var(--oliveShadow); +} +.shadow[class*="-green"] { + box-shadow: var(--ShadowSize) var(--greenShadow); +} +.shadow[class*="-cyan"] { + box-shadow: var(--ShadowSize) var(--cyanShadow); +} +.shadow[class*="-blue"] { + box-shadow: var(--ShadowSize) var(--blueShadow); +} +.shadow[class*="-purple"] { + box-shadow: var(--ShadowSize) var(--purpleShadow); +} +.shadow[class*="-mauve"] { + box-shadow: var(--ShadowSize) var(--mauveShadow); +} +.shadow[class*="-pink"] { + box-shadow: var(--ShadowSize) var(--pinkShadow); +} +.shadow[class*="-brown"] { + box-shadow: var(--ShadowSize) var(--brownShadow); +} +.shadow[class*="-grey"] { + box-shadow: var(--ShadowSize) var(--greyShadow); +} +.shadow[class*="-gray"] { + box-shadow: var(--ShadowSize) var(--grayShadow); +} +.shadow[class*="-black"] { + box-shadow: var(--ShadowSize) var(--blackShadow); +} +.shadow[class*="-white"] { + box-shadow: var(--ShadowSize) var(--blackShadow); +} +.text-shadow[class*="-red"] { + text-shadow: var(--ShadowSize) var(--redShadow); +} +.text-shadow[class*="-orange"] { + text-shadow: var(--ShadowSize) var(--orangeShadow); +} +.text-shadow[class*="-yellow"] { + text-shadow: var(--ShadowSize) var(--yellowShadow); +} +.text-shadow[class*="-olive"] { + text-shadow: var(--ShadowSize) var(--oliveShadow); +} +.text-shadow[class*="-green"] { + text-shadow: var(--ShadowSize) var(--greenShadow); +} +.text-shadow[class*="-cyan"] { + text-shadow: var(--ShadowSize) var(--cyanShadow); +} +.text-shadow[class*="-blue"] { + text-shadow: var(--ShadowSize) var(--blueShadow); +} +.text-shadow[class*="-purple"] { + text-shadow: var(--ShadowSize) var(--purpleShadow); +} +.text-shadow[class*="-mauve"] { + text-shadow: var(--ShadowSize) var(--mauveShadow); +} +.text-shadow[class*="-pink"] { + text-shadow: var(--ShadowSize) var(--pinkShadow); +} +.text-shadow[class*="-brown"] { + text-shadow: var(--ShadowSize) var(--brownShadow); +} +.text-shadow[class*="-grey"] { + text-shadow: var(--ShadowSize) var(--greyShadow); +} +.text-shadow[class*="-gray"] { + text-shadow: var(--ShadowSize) var(--grayShadow); +} +.text-shadow[class*="-black"] { + text-shadow: var(--ShadowSize) var(--blackShadow); +} +.bg-img { + background-size: cover; + background-position: center; + background-repeat: no-repeat; +} +.bg-mask { + background-color: var(--black); + position: relative; +} +.bg-mask::after { + content: ""; + border-radius: inherit; + width: 100%; + height: 100%; + display: block; + background-color: rgba(0, 0, 0, 0.4); + position: absolute; + left: 0; + right: 0; + bottom: 0; + top: 0; +} +.bg-mask div, +.bg-mask cover-div { + z-index: 5; + position: relative; +} +.bg-video { + position: relative; +} +.bg-video video { + display: block; + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; + position: absolute; + top: 0; + z-index: 0; + pointer-events: none; +} +/* ================== + 文本 + ==================== */ +.text-Abc { + text-transform: Capitalize; +} +.text-ABC { + text-transform: Uppercase; +} +.text-abc { + text-transform: Lowercase; +} +.text-price::before { + content: "¥"; + font-size: 80%; + margin-right: 4px; +} +.text-cut { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.text-bold { + font-weight: bold; +} +.text-center { + text-align: center; +} +.text-content { + line-height: 1.6; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-red, +.line-red, +.lines-red { + color: var(--red); +} +.text-orange, +.line-orange, +.lines-orange { + color: var(--orange); +} +.text-yellow, +.line-yellow, +.lines-yellow { + color: var(--yellow); +} +.text-olive, +.line-olive, +.lines-olive { + color: var(--olive); +} +.text-green, +.line-green, +.lines-green { + color: var(--green); +} +.text-cyan, +.line-cyan, +.lines-cyan { + color: var(--cyan); +} +.text-blue, +.line-blue, +.lines-blue { + color: var(--blue); +} +.text-purple, +.line-purple, +.lines-purple { + color: var(--purple); +} +.text-mauve, +.line-mauve, +.lines-mauve { + color: var(--mauve); +} +.text-pink, +.line-pink, +.lines-pink { + color: var(--pink); +} +.text-brown, +.line-brown, +.lines-brown { + color: var(--brown); +} +.text-grey, +.line-grey, +.lines-grey { + color: var(--grey); +} +.text-gray, +.line-gray, +.lines-gray { + color: var(--gray); +} +.text-black, +.line-black, +.lines-black { + color: var(--black); +} +.text-white, +.line-white, +.lines-white { + color: var(--white); +} +.bdCon{ + margin-top:8px;} +.anniu_btn{ + width:100%; + padding:3.2px; + } +.anniu_btn button{ + background:#0081ff; + height:6.4px; + border-radius:5px; + color:#fff; + width:50%; + margin:0 auto; + display:block; + font-size:1.92px; + max-width:200px;} +@media only screen and (min-width: 1400px) { +#header{ + height:4.8px; + } +.header{ + height:4.8px; + } +.headerIn .back{ + font-size:1.28px; +} +.headerIn .save{ + font-size:1.28px; +} +.cuIcon-back:before{ + margin-right:3px; + font-size:1.6px;} +.headerIn h2{ + font-size:1.6px; + line-height:4.8px;} +.bdCon{ + margin-top:4.8px;} +.anniu_btn button{ + height:4.16px; + font-size:1.28px; + max-width:400px;} +} +@media screen and (max-width: 641px) { +#header{ + height:16px; + } +.header{ + height:16px; + } +.headerIn .back{ + font-size:4.8px; +} +.headerIn .save{ + font-size:4.8px; +} +.cuIcon-back:before{ + margin-right:3px; + font-size:4.8px;} +.headerIn h2{ + font-size:5.12px; + line-height:16px;} +.bdCon{ + margin-top:16px;} +.anniu_btn{ + padding:3.2px 5%;} +.anniu_btn button{ + height:16px; + font-size:4.8px; + max-width:100%; + width:100%; + } +} \ No newline at end of file diff --git a/QYJY/fonts/DIN-Bold.otf b/QYJY/fonts/DIN-Bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..782e68e87cb6e13104c45c64eebd0f14eea66ad5 GIT binary patch literal 28640 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 DbJ3x` literal 0 HcmV?d00001 diff --git a/QYJY/fonts/DIN-Medium.otf b/QYJY/fonts/DIN-Medium.otf new file mode 100644 index 0000000000000000000000000000000000000000..3296d1ea7b33a481e682017496ac38c26d7df5a4 GIT binary patch literal 27828 zcmd5_2V51$)}Q6FyCdq=XfB!;y%#mM*kkX4f*rd8HV_a{I@lXVjhczQS5#C)6tOo% z#S*({EZ7Z3vDd^|viSV|b1zsD%}c)gUJ=jT+1V*)&YYQ@Ip@sT4qdx;APyvk7>HAI zH#eulM~~eigsdZ^OP!V-J9KHE+V&+O9!`W5xYMCawXbT1RQQ&V;0j3N?Hl3~zGYzS zKBWDL5c_(8{yu(p#uR@}h(E>iI)R8#pV)ijz8UVn2n>lHn!kTtlJ#EW^Ph=d;=TnTcA4Q}QPHo56F1cN9iBT$#NM7rl9aziYxgSc{r!Rl zg%HV(NTiWgh-jZnS_wO?q(LiYua_)fI8(sBBxzizbV1!t4=7?u+oScLE`A0@qY2y>>)G;h9xUy4?`t@s9b?P{%UvN-Vpue9}zhO>pVWH7o z0>i?cT8BpaM~3=D2Ze?D1Y4uUBd19JV1J(|f2SI?-!=)M(6DI#h(SKVL81MFLW81* z1^Y)uSt9}>{e4i7H5~2}86D&k>=)F(f7GCm5Np}tkzsy=e51pIf>2*Tq)%{%5dQ$5 zNFTo-U!P!~a6BGr&D+91INB$)UsSk{uYYjZaR1N%e-IdSumd016PYMPC6wd?XXGaZ zNI_yGg-BuY2`NH~l23_=IFe$dIQfkHgM3a(kdnkqEX0YFBBe=x5 zfCQpX2atj2*ANm)!bmuYAdw^ry*!8vCPTr-Bhcrg$Y?SKV_+=#nv5gk!2{or ziDVL)Oui+Id`G5`sbm_N4$hcKW|7%s4p~Uz$v$$893q)y30XnDCqI!zWGR_T;z$Bn zNtTh-WDQwQHjs^E6WK-fkOSlhIZlp}W8kL~z(+=0jw!6QWJNtCaN@|vh#M4dp? z^+e4eDks#5&~He-#w1?^$#_`fCCWXHyh1Zb6$4TMq0qD@KBVWcQ0pVlFt_9masC7&KApFSm~?!+{oIF=-iF~l*G6e~`O zO(ezklHw96UX~R1CdKEI;+IJA*W|MqBO>ySPm1*ZQ|rWoaz&& za8jxnDYc4}+CfSkA*F7S(v?YR7g9Qelpaq?Cy>&2Nok#wDNf2%C1u=58BbDXHTmK* z@`XDoTac99PRcbVe1f_?}ekMk<~sUk)XeijzuHO7+~zml)klbWB9 znzKl);-uCpQo9kU{gTvKL+Uz`y5Eqx*`!`HsrM_XZz1(tlKMkP{Y|6+M(%Oa(3>=T zMH;OnjYCP}J)}t?(jAI1ePwD~WSDaehTyFvNc%%|9c} zT}kr+r1>(^qCRQSm9!X5TpfsO72;Z*xJDD#$HeU*anni5vZUoi((*iMRhqOKNLsBY zttHahg|rSLtrwBjmq;4}X|tTP#XRwVv};J(%^~gXYCcANuTl49T+*(@O1#V!1D~AT z%cK`pmgh{8uPBT3Kogf#-Cofp)mT|u!n;V9p8ojMpxJ3lOuUO)PSLxlwH@<9M*bO# zmq%`ln->Hek9!S*Im^ z@O(}9?&yQ#>8eSx9;vpS+I?})-L!cN`B>XC5%(ujov7CoZcw>tUgibH^HY5*4=@E! z3!O7~DIL0a+zPgevO^oUpP5N{o16wF*1oU5^LWYw)%D-3nY=oRE*(BQf(26}KQR6@ zA9tE>I4vE@;6*Zc1MzFfUdbIzPt_mWr#3b>ZtqdsQckUX)Z>!*($Ul(EqXQWvZ;Zh z|MaStd`;P|4fHy zqm}PJGV(4H?rNKUlKAH@c&SI*Du|G_`Ln|uZwu$K%(VyyH@|N=A zc}a1M(H(2oZej=MotCG|nM<{7Ro%i`Z}m*}%PdQ_IxLr{CzFj5>GSbJoI6 zZeO=|12yV#*{x!wOWfYTJ8LgYKUc( zK9c7%X?VDK(x$=5bjXIV)dLf$tE(IrwP@7BFgj=G^l%nPb5KFxH{oN4(ve{!Mny%@ zGp=%CV*KjZ4Rl%Z)J<$NHFnExi$Udc!JswL`kQq1h|JZaa{m*uZg7*QaYwnCGEH~H zUAo-A4W6}^b=6%?Mi4O*^UyQ^oAl> zS>=rsy^(rf;f+9%*h`!mc=rw_-a^%>qQ@al=ELtxr}z#7*ZFW!zz*ax>I)b*f~ZCV z@8!sis%}(tBcf|+MYC6%Dk}QMS5M_figCgnZPOj;$TRNy%%BBxFB4B!dC{sFx@^|v zYEAT_7Cl|ni)J<9vYE?wGk8%;*{LQszg}(3ZTxqoTlg_GedDeZ<`bKGxmk=XHoF!G zGXwp`9kY9>Wfk3`7m#&Xwt9UEyGXf1?W=l0v#zkOTqfuR=`&^evCW%~GJ0s2e{)NlAa7^$aOEp? zv2tZopXQckp5Cp^9a;Cpi5F>Ebe-jiJ69Ox`5&L*B}KC`?`xycu#1lk+BYvjDw6V!D&L{pQFA_3az0b+VZw_EUf3mULhfL*szGP zA&jF2CXn=)*K4CcT^qbF>NKP2EF~^6k?!3)>j)Z;Ughj2kB^lOJmVpP(wNZr zCv~rWVIIT=O&U6m@+$nWtV@bsN53uyw;$A%b)tIlTMc+2GcT0+BQIttJK5BSz>DVKKHX>Ux0cG%KU-gl~?NuJ4=;K~VGPe_a#mC;_ zA$KHRmQOTj!+CELyV-NEX9C?Bzj+V40NPf&q*Jp_t2fs3TUfKro;$;+XGqT;tPbXv zhmE<>%#DvOag#+?_!(2XzJ1!8+k5XgW;wcT*HQD)?Y-Jt=IWB(z$<*$x1&%!aCTDlvG+&!y;>BxT)eD*RLbYn^#VqUughzXE>B~JD4O4-Pw%$omcIMWST1hgecXI}N6)4fqaK5C#p_~hz2F56d=TGg z5~Hi27+t)e{>~ke@{LIMix{%+r*qIBy)%Nfk$l)g>DPXInCYSVYNWy+@dvVAOvx#c zQ$p5Cd}xO4D+jDMEAG;t&KR44P%rrN_=)-~51e)>nt zkBif9m~Sj`t8Fp<2=*zIrS*=Lv{#P$g6v*$Ek$2|_cK?O6kbN=>y;F}jNFKiG3jAg zIPi3IOkwtrhdkuo52d@D@XeeUw7Y`mZ}-^ObvfO=baxudpu9l63wm+0o}j$yC8h~p znDmK4{z?}*@#ge=D#R%H4WT2ZVTgOC}7r>q>Xgt>Wz!GGJ2Wq_FUYY zVt7XK(iJoGVt5g=w&7l0cn5yhi0LIM;M+!LTxp8e@$mDYu!%j*h~uTPv?S~I!eWZHPz4*NvdtqC2GHbw-?d^Dsqr{SIN$;Iv({qJb~rv%^(P7+pz;*ufvTq{ z+)w3Cl!t0gPf?R`C;DlMA(rcJDa-VUc@ckkmia@>))yVB8Jmh_{c#M^9e4og1 zg|D%4>wKk}$}20rD(gKqAR>f@4eU3p*9VEY*+$I8Am$aexA&696w}5KZmjuOuf%9m z*8UHOd4ZjZ+kcSm+OzmD%K}9!1O4p}d2+0kW3~!}?u&P(P89v1s&7>|eu+=-gtzT;~-mMxOs|f!QS-^;w#$%t!DesYMa)n&dXp>cbEoZW9e3>^a4160m7_^IAGcjIr%4OFx z)GMXk>ZX6tLr23eGJ266Tb+`EDQEI!q6H}S$>W$6~Pz9O${*QvaY z!Yw~#@xm4imS!H_81dB=K33(`l?$nTn^}I>v?uW<*K~Q;@o&#FUJ%3lFEsK1+q-DX z8hW;c+*~VeV$~+~92Ov!&>cF+7n;d~M@Ehd|Emq<6fIqs#iML3T`yXyIqLQJY5B_X zqbJxi$_v)c)IT@tYx3H>PvxI0{7ZeGJW*pNSFe7}t#eiVIEE&IKc;42{t($LEGhRW9dh8V=xZERfq-60 zpC#)~96yB>-Vei256{74+*HNNoLAFV$;RonygXDiZG))XLD4JfCuO}N$B%=;gL3N1 z`c6R(zEd^Mx4kd4@5HolL*X~HIQf>E<1WZ{TG6lNES0NbGVAJmC%eHNNo@2EI%747 zO-*(Kl~b&R^-$&2Q|peUu(L@|%DyXCRCv;>yRyi2JG;?siPwH&;0v5h*-u5{8Y*{C zUNusIOAXbSs4=aqNpH%}%2gG;nSNIO1xr-!D|36@S2iZ<&CW>LX}y{0jGA*=aYa3G zxjWFGP23Y((5iA7)%f*4$^SfXzod5qCxENNkKGVP6pM_UsM7#}rqBn^)U zo#cl_eJD2cJJ+uM-punW#syeA-@e0J#!6S8@c>jhp3gL~j0rz_q|&hXzKih+?Z$jY z_wP&jZ0xWw_dikgs~dZ78I{IpD%-I*KAxtg&d9`qqpV|%(T%E^tBtyR+j4usr7UyS z{Khpb#%|Ucq%@S>^`y!5lsqsna@?FK5%G<^_xHsKa8eU^WA zQ%ZxhY8a0;?NIp_jh^Tw%(`Qp%6dJE-tB2CUex>(OIf{lFKu%~4hRSt(V5YDz0)!+ zeCSz|K2-T`?UaRcR?tNolUMC#bT``&vB;m!iJm(0I|y?00F3xAF7e`-(nE0OKCPbV z5(HxB)Z``0H=1`SnQB|5a^IFNmd0u)rLlTQ$*G4Gu~ttt&d~!hd5J83_Kt+si#>JV zRFn1{wu;?U|DF97SX=Ks04z|%zczv>M`Zv))N;j z#@V(x1f^>$9Ca@asYwgo(>eut>Z4_?t&N+3Sw;22O_`TQq){KrGPP%r4*{ojj+ts7 zrQfL7O&0B#s3cu&wzbVevytDiwp_aUg!@~`p1swPXQ=Gp$lZP$X~>%1i+eEIig`r! z^P~e)yjHdoOz1fzs6S0r%Zo;#&ZFw3-8O18vgk)e%qjKUo}@HEA8U+p%{!GCv>00r zV{A2eiyAzbmmu*+%QQ~54Lq<$7>E!p#`VoH$9wLf1J--4a%0quc|{BeqCGvww8b`< z)t=XOwR^5WE#|1neYcLn{wbAh|JM`DJ5`{qK~ErB(tS*r2FmA-18mYfSf3Bg0^7wn z*l!yL`W#j3YyZJnpnP6m7_`=!zbP=O|9me-JF^~<5dk#qO{X4F&+OcuW=>*DVpc>` zqwj=F?uh?4rGt-nZ=ltSSHm8y%Z|#kXv3Lux9KBRumrks?dl`u-E7C$#Bh52gxqUO zn?+bVma5aGf`xsR=6!!0y*ge_nYeTiLsxkXYLB7Sb#A|{v{ftl`;KQuUB^HzcsuPE z2n#$}Cjar0l*H#6_)ajdkK#XUd9sDChQQ>KiuYMnaIs!BcNWnTRhR88@0*QlAeAc@ zD_ykBAR`>DLk~RJxMyHzbLT$mFI&K^$OsPaJg?^_f0_`wZTMc%Hz`Z8LxJqHCCC$i z4Xm#=%_N3!emz^(3vm44_3WNAO}>t`gtskGc9cjYDHTPUd`JU{jswCKbCcIV@>>db z;4fvKUwCsisA=3>dt(g%p36UWWA75L9Z{D=k-O9H`Ed3qT^v9(LA5R^*y9L=I~tkL)*cv^S#>*p+QjHnHT{c%Lm?I4^ciJT}v%HHRqGRsOZ2PuFkB4KPC$cfP}S-R8R>;i!OlOJn9vT*8tludT8ZLCXd%pot6CFJmXH5lPdQ%$-Z;%w04!kh%KUN#b%5t`F+}s#CZ_JD#EXdn>6m#FVp%+eEST*cyEbAK zjb1TeE=FbxG&{eDEtcA2j6dgY!cHTTXckZHD%YkJQpZ7@8;`usLo8z*-|Ii6x zjE1qOIbjQEzu4gUSgCYpfkQiXq{rLJ8#gYU5zlBmTQN3%6x}i;aWobQ``Cu1hYzE< zzL;aMzm~AKg;?K5EB#j4#2s>;mU8VdJQsOdu%jEtp&*Noi&c^*4FH)+`#x-fR>g1G4vYwd?T_!1xfQ2Lom25r7r zrKTy+C~*@8rfyPhsdrOSu9)|-xM3?J=?`aRuN0417a_cGs;5`5R8rgH#eY=MPog95 z=dO*v$FjJ-qTjNra>R<6m$~%(5?_H$xpmo`B$mzj6up9eN`|%tKUg-G*SBHq-WWo6 zWtE5AL)EK@n<|Q4*SeI(Zxw-26=kowDpf|ROKL5}s23Il{^k-NmnkLiy#~#c?O@7O z+bNY<*OsGQ=m5RFTnPnTQ>tSZ@l3gcZ3M(uVil9fTgfw%mo49j4xgq6+{qsMlXU(G z_Y#vdUukkqa#Y|bZ`PZ#-V40r0;!9$dqjoa7 zlWkj&6i3fH%kB9RQ!{t>X69z@M=n?{9Qpo&`NEM7*r4l4xf)ahZ~2b?)YuT4ipv-R z+9%pO`-(=6Z?_oxw8dLZybu;zm|n>*m@ZX)xIRpd)`yE|rp3P09W zZh5iFU7Wkh1v`Ckm78gOt%>C^itL3VAADqCrjPscg$gwmB-=uTWtD6j_X6=sceo3N z&m`2bLTf6}Zl&<<;@#I>)mx$kyrq)UR4l%ms>Z!yVdIj;AHS0+#*}5v^H}Ar#HRB1 z+4aYwBuD^TibAo}>5d`2fQP(MpYaf@h~K6_dxSc&w?G&$@);+4UCz}o*Kl#EVX1M><+l0u zxpTL{LMv?>P)C~r)KfJ!dc!<#;u>Y;>PPXoVXoRVm%rX>P8;2Mt3=%g-T7O-cv(tz zvU0^B(D_5m!WT2159|7Tyn+o3*+GsxpDLy;{8spI*qB}RLz?gN|9$oMuToC8-)YqI zbni{3eng*c4ATR$v;}y5ZF#l@ujcLVy}uUZ)Han>x&`!ZZ|>x`?SO^F&yQOYM>Bqw z;}YkJ8FK^pGel)0#z)7Dq>XhVhxZ@iFV+qYx1G5JHEQN%E?bO#JWYFGYR2n8KMFO1 zUPm_iX^z=bOt@`^y9@>Q4Uj}P@!E22MK|fS<(o?8Lpk$HB+V}UgQV5Xu4d}FOAZeo zF>wT=L)gffL*~)&MMGzWGCGijkL}Zk?(QYW$IqX#n9*3ac-+z$x@u(XxHXKfW$|+$ zrbj_`=cN1mm_e(UZD%^C>cc&k=@EmLKf9ADy~_bNvs;%gZWgx#UDD0z2M(lL+#Lf$!vf8Lq47zUq&4wL z=A<=YfgqtCz{^Yghqid{y6WZSr-Ed?1PSexrXb-(#f8^-m!7ut*Yp6BD=#nCS5lD) zSsG-2XR4#r`ckg-P=+j45c)^OsJZeHP|TI&BZOk^GDKHKtp72c7*l8v?afiv9x(6h7B-mARs zb%R!je{bR|)H_{w>jrZx)^D_bADY%fUa=;2&UQwRu8i`ugsG*KYQ4N#T3FEBfy)Nd zm67XW_Ar{l;^(eeLjxc-DQ9A#-wYcQLx&8BnjFli=isFqEE`rV+hxA17nR~^-B<%@o^|%$I=xKeT36l1ACG;UIeAb`^l>0)7u{da|Co4sbS{tZ-BJS~l zLiJRlpZK-ALDjxALZL&h@@{<*k1Mv+e`U26SyeII#Ita=YE-L!*tQn_aT8+@RU`>@8q+K%693>xqQ=lPQJ z(vj=D$qj>6T7!Jx^w)d*Hq(gJzRRqNO~1hr;ndIfYfsjaGPl{Dn|$f2@J)ju`AcJ) zm#tb&H*KE1ho#fHj?DX8pU6l$a^#S4QH(~hp|eIVq>(EpZ)Mvk+css(%9YqvEu9s| zXdH_jw{Rp_>AQZ+8|$f5n}jV_>iN`=z2aRVTRY|v9nhBsZ|}UKE~Eci2%AdOYepqra2T)$Q}Hgl?)$Lbt&tp-Z+&=%xq>oqkQX|3ew7E<{<_ zp$bV>TigEGD!K}?36s|G+6KPs?V<&`mNVPsA5~XxnTzER6mT5_F z+0EfcvYXPsogB6>a1NA2zmeh8nJZ*Cohr!bO7bx|e&qVGVBq&H{y|S&?e`n3|AM4y z71o()S9#6b($(jD01Rj*^U5Y(UuDOKtnpq>H>_B-9&&2#@YOzHNm8U{8@;#%E3fB@ zHeXF&v;DF;nXM99o`s|43}R8#YhZ+rIaq0+CSkw6Wc<7_bpDv>BUmKWtE((x{E$&G zbkvy9-$dfo3902iWiMMlKYkTmy>h{3Y?qC^EPKEsuk(QqBupa&6A32KS5_sX6HD!O zhW0$_whluAif~9%ot1j(c?E_HoGG_i`op^v@rBNDmPY|3pL7)26EI4Y~d$T@9_b{A|oKLifPB{QdW0vyWL(i zF(@VS6r-ouo|TCZEvC#p#%>7FV)scNA;H4rC2?XEukT6C#7PlWc#M3Cak4P zmaLqMMZ_AmDrU(rnh-qIgLS9>LrOd6>>(d`qyJ~+e*xOF58&_@HEGwf&F?H={;mKG zR(a3gDee(u6onr`Ma}cs%n;TKX~->(6=$xN8mpm_Vo3lgu+Z#%k*lk|BXreLuCBV8 zRaadtS697I?82<#$`e((zE@J*u3P!EsuPz_xfZ(fH(-2zd~GeRq=u$8TPPElv>U3-pRZu>-VtmTFzp(oYfB6s_K5;kUjf| z>8$FDSwc)Nun{QFcVpS5m)Cd8EmZEJxMR*aqUy!7EpLnN{Gp=tg<|)J78tnqho198 zqH10tofkX_qg9EIxu_LBXUN`>hk(ml1nMe!xwikz2*k?!t-?#}o? zch|Odw^8q5lL2e3O#Hc6WIR`&<;;8&HvUckf*HQJNiWCC$z1%jJuZXJ zaU*_?w}XzKmlZK(<+t{0=du6d)omNFKWoXxE5fWTZ+rIcPVJ3V+(z4mt-Wo-_NU7& zz%%~J&h96%Q#IrYRl7G=4jlcZ0`8#tfZ(|h;^TIzs@I(Hb4O8}Q`@gxH z=ft{KgArJfQ{3>i==`s_p;*zg|7~-qqLpW8E+6EqT+117YY`aFOb{rK=R~0VS50V& zRxYP)`(Pda4MUDC+WL3c;lF`_x0e5X`O<#_i3}j|K?&9yWbUBnw>|a~9pCX;v7-0> z6IM1w9S>`T|Cm*HsUQA>Wj7Pptm2M86fsen7>rB%W<^ANn|Y2~&5hsj#e%DX=@HMZ39U*qksNk?w* z*3gPn)pnX5G`d{LT&Z!RN|s8O8b2^UxP0k>rLJQSUtbTihu`MCmc5&{q?%JV_v?Y< zEf*)8;tRsNGUKUtbAi#T>IRg0W zWpQ!T>+3~zN4<_2DL&1wN4cU`lX;x|fQSfxb8FbssV9|9@*RedQkzPcf zDC?i_iETCfs07 zXK6`kCumxm{Xq~Xal`S8k1Q1@n|cNY_ci;l(DnX1=*Asu)!0q%6skVfLHHV$y(C_>%=?#AK(H_W;k=^};A zyhR(S&B~H^hb%+(t5K$$71|0}8}Y4NElbYXtK_7rS=Df_YAbT$WE||&=G>OD#~|&M z6qA;!=AT}(Eud}Rt}}~KAG7unG&!2i!j0~2qV1CO8GYK z8@TH@PG>vf9XyZ@3yU5eJd)M|ea68E>oYhb7>X0hF=|dL zG5YS|h>&XB0&?IKl(x%y07`EL3q_a~RuHFu4B&Ve3FDYgA5F)xKwjg~3t>o#9k$Jo z^qcn#N$1%NNr$~LB%S`AA?X;KA?XqrlInfzA@%%-C2GJMOVrp8S)wLcEm5zqEbSo- zji(0#YII`_m_fag;pu@2)>` zWq#b@2QbwC#^J|h+StF_s&!ntb^j;WVDUhVQ+{6i%4$Olp9PZ2SL*G=L~3QvRl4Wf zC&uU6W&YTtFTepeeZDxxX8kFrNsy$&2@S;Q@Ig}!2f^};(Xn`uu85_J;s0xu&MRbh z``{ASrs_K{#PAMTvpAWBI{x+9xhJ6AA4=f=0(UhOc77i+ANz~4ZS5b~%RgMu8@B%o zSQXPsytBi5g9->$1fuf3wvF@Me|ZADsG~;V%;ZC~dQ+yD=>PRua=rr1dv7#( zR=vhoHEY$bQ@39I1`QiEZql@wvrF?9u5K+`wQke4U3>Qq9XoaI(zRRn9v+@vJ$v=; z)AwIh4_~7`{e1oW`v(LD4Hy_40&kAt5pd-gJ!tTdp~I{`97l~F6EpT}IB$gS#)*?A z|F%To#}WU&n=*Bp_0e?v&LCvwtl4v{_x1)yTwB2hr3}B9qv1jEwNyiLk-A7e(oku% zG}G>TyK9Eoh6KYtr%#>!;be9y?NrXGx>EzE7Nts;wkutzbdl2kC~YoXsdTH--lhG^ z9@Fh!zeb5p@C2EJlANW^k~c~kg^~{2W#pDr)Ty{r2`49ON%h~9^vOFV`Jp7qT9Osb zzxgAPR+7C`LQ2KoJ}FH)h`+=5J0hLU{W~XRNLQts*1t?C@9!t+?cW{g4zPINQ)u9S z+*9btzvU_PTCT6q0Qd@B4PT+-;F*)bSLh{p=Zt}m&eQO_xe{JM&%#@1B$)vJp3~qh zbUFGm4*o)~lPq!@{y7uioAX=v*}MmCxkK)fN8~!nO2{v zg5AV?;Q;@xm5CJW6CH}O;5d{J@T7Pm4TM`;#M#opK`*hhhAEzYZB5yT{8OqReJxD_ zzvbB3*^RW@W|w03+|bVOjp3%@j^Stf)%NS;&cfhd*#g_1Myk6yUOlDeP$Lbb!|8l_ zCtu}!q4{>?yPof5*}3#pr5W={k7f(XNZ1(3W}9}olGjdoXa3mDJ zU%Y-vDgY`02taMa?>RrqJu< zsQn;X_Ykdnh}h9+-9xnQA*qELT+pf(05^d9>rB!C&=KKIxOM?_2Y3Q{0;V9(RKRpR zp9Po=NW^^-;3nWP;0fRSt%82Z zqz-zm?(1Ekeg-I?jNTl8o;--29Dtr2fRZ!Oo(E`8CfbvU_GF?xnP^Yu-)N5``d}vd z;1p;-3G{vmdcP#D05?D@Ku17lKv%%GNH-nVS%BGq1l+F$Y(w}ut~UU;0a*ai$4{|} zs04b8zHESNWz?4Zn;uVo)8j5^eG7mqzzxs};Qsn7di^Z0*o9s{3ru#Q=g$J0UFiL@ z;P|4=kHdR&nMtiF+XXj{|QOPbt7OCU^8F~U@Krdp6vka z1ndIr1MCN+0S*8T0_?%}FHu@HTKUq-O9k;>_!Pd_Keh6JGp;U3C+c?th`NIiHv}*p zVNw4!KoO*P0SsRt)eBJd1ya5MC0`)b3#591R4;(h3t;pD7`*^SFM!btVDthQy#Pip zfYA%oOfhou1DpXZUT2}iER^;Tm}Xep?e+Q==CXsB%MQMWziljtc_?rGxe1JJBL7Wb zbQ5LV1V%T}uVRGUME~6cW;cP^O<;BtnB4?sH-XtrV0IIj-2`Sgf!R%9b`y0`{EFP& z0D^8RXahYCzzxt5FdZ-(unkZYnCyKs6N*_-%z(Dq-_Cqu#@i0q0oV!H1=t7J4@d(X z02~B-g3`{Su58qmjgqoaS2o&^jry`tUp7j~Mk(1SB^#w=qm*ovl8sWbQA##S$%beB z7NDdXKu~l#U>0CDU>jgNU9H?U_T%YZ~$-+P~?NHdUr1Wvn|Sp8OFA9`J+{f zJ>F@H@jgq&`|K3v{>9h<{F!|D-;DpfvH#muPTmSf%$R>AwJz3r$Rpy6`A>X;QpWU}mqhE-@ za2GonvVY_KQF+(bGhbJ+kF>@s)_sn6fL)N`?&~V}p29jjpJ^W{V&41rv$(V7dWz)j z$S^5|xZA<=y`48P8`_Wtc9%&DsQ_`88k6pT2GVWP*v>?1N`(=(mNb_faUF>-qL{4l zk+?PmdkgrPrjT-A&TWE`m_Id8D^pG-+l-%NT-xD zI+MZTigr{2-FrySQD-fz%n!YuDe#nHiOJ4F+Sn}s{Uy|U9Qbu4Wu-1wXl2)ul(mZl zfQEJ*h_e9E7j~maIc#%#OZk!K#G8Dr3}uMB{W|pDYf@4AnM48(1Ke|=FRtAH2LaxI zQGj?r7r;h0YT&)mADuQQf z8k*R~0(f{gV1ZqIq%Vs&w99T2@asT4q>Ts*JWaT^0RN%C?FK@Uhw=8NO?l71CXEG; zSou`6RkSnjiZJ-Uqg3v7CV(USxwTx8H;)d27697_??{MsbQ2T4LzMR~1#%+WKZz(( zuiUU5DIoRB4I9XpQfO}2o_vb0w%Gp3#3*TK}a2p{81>)A5ugo+z-RA8`6iOj4p^5UmSA6H;lx+C^;0RMk9|%;e*_7Q|IM! zLMnee@yGKh{EAv@1Mk-O{!x3}`yuxrNak!YRo;thfV4I6U8Opt9%Ng!iS7GJA4*x> z`X#2S_!WO2O7Z&|F_7%aVvdp#_|^_z03&m4SHyh<8Ra|wVhGvLj5xJ=CrSjJbUV8v muWRCiEqBQePDJ{|8Ih81cSJnPeVZCYLdX_}fR2Cg@BaV=A$|@3 literal 0 HcmV?d00001 diff --git a/QYJY/images/bg1.jpg b/QYJY/images/bg1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0759377d0d313ac9b55747cedaf795da9d1b2c90 GIT binary patch literal 492376 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

W$WkPc-A9x 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%0AyubLwcyR4PMzwyI18Oeuy+%{8!JpFy=B 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�)kk0F$JY8nfdmoFS8=H_jSP7 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 bw#=CIIU5b`KGP%ohnn(hC_EDJrvHBc;%w!} literal 0 HcmV?d00001 diff --git a/QYJY/images/bg2.jpg b/QYJY/images/bg2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f8d5ca4d254a70bbe4462f4a59fb9f29f2128e1d GIT binary patch literal 210564 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

Z*W8(~j7yXHZMJ6fP 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 vTIf*j|O literal 0 HcmV?d00001 diff --git a/QYJY/images/border_bg.jpg b/QYJY/images/border_bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53ca0a99a05c3a9a328e50fb9a1be0b09a0a1d3a GIT binary patch literal 20837 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 literal 0 HcmV?d00001 diff --git a/QYJY/images/title_border_bg.png b/QYJY/images/title_border_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..101643688ce8c94d245b8bbf5a020c55ab975e66 GIT binary patch literal 2799 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 BPh$W8 literal 0 HcmV?d00001 diff --git a/QYJY/images/title_left_bg.png b/QYJY/images/title_left_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e7cdea2a7c254c0bbf6e2c5cb76d6829396a9253 GIT binary patch literal 19456 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 M<6TBY2CiZM53#qfMF0Q* literal 0 HcmV?d00001 diff --git a/QYJY/images/title_right_bg.png b/QYJY/images/title_right_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..4edbe84632d9ba70259400a8e64e9acdaa789c9a GIT binary patch literal 2895 zcma);g;x`P8^ynrZXh8wLOKk({2`q(lpHN0B|SoV2uMgM0;46RlyD#=Ok|Yw2th$4 zq(LM`Px{6G;JxSE`#H~f?jLYp80cwHQ?gM40I0R$8i)(Z{xjs#MV3a(b6x=I1-I}4 zfQsRtNkCQ(3jmb5F6!zA2F{+oo<7c=UfkO1>fB!5o{la^2LJ*ma*YDaQ;5t;Geiek zQ?>D}>I`H!;N`5_r%b2@sJ&Zt;QQ%0t%IdGGXh*3&-ZtQ&i4Xl&u%h(5T zCJ$vdxu!}!h6E8dHjaNBH?8EXoD8CdXv4133nncWx`I21C6^B{d1ne?a*)=r9f?d!oXbS76Yiz;TU|ifTi^t^g;#5T|r5HRm}S7kY5< zJ(~>L0#CA3GAmk(B2S;#diYl&5?1i!Y7!pA6~43XsAs1MH;3n?s~-w8z1%i`fi>XO z?M8hqX6YY>uX({P*|6lb zvou9R$yIwG47NOSu~+R9#(4)Ju*?K$*a4VQ8sgFKQF3mJ8 zG;O8a*u=*~c@$MnW&GZR_WdK%kau@YY7G|3px>F_kCt(md@j3PIfw{ABpM7ES{F52 zpGF+nQ`baC-OZ1N7a7|(bg{`_T-WiZIA-@3d#Yok z?o;lFaZGZ|U4Ak^Leo_}yLIPh&b>jNLF&P$B4i@UBGqHA6^<3575_~HO*Bu~ZFp}m zZ>&ua{Je5ia)opE<=o|ne$d9-jfRa;jgx*uf0Vx2uc20<`+fT~tJA|;`|f*1`>;QR zF~Ts{f8x@R+h|s#gslBmKidAc+iMr>@YeIW(yMsq#-tACqG9c#>sZ0f7^el9K$wyv z#`BsTM*5e-l$(OBor~mTaYu3IV)M;`RJSb0#^JhezWx0@!c&-WOz(QaozWb(Jlp1< zO_L|_QExSKI`75Zj_XdJNDszSr0b>=F|SRPOi`x$rav&+V-MGa*WAan?u4k=Z+PHIIdmwP&elWz*e~q4FOx{;M z*xT2y-yiAKv{pPP{iUp0ih#$u4Q%MX!iG@_%IU z=orVTUz;PCHzw}hGudG|i^D&)kyBE1I2v3fQ|eM8eG~L1rukhn?~GzIU+7q9X6WUU zykq$z{AuFfmO0c8^R^y^4M`ix5(zGxExeY@jf{&tll<*v8H#v{&zHomC^4yBfl^y= zd8c@`!gkmX?WLxigtLa3`XISX57>{y`vrA4$F3$s4?$+=LOtId>a6zHLt=^G*e6ip|x`ND-%2~`ZPWQF1T$(EU1Y2Gm#ODPlSjbqQ zgJq*$(`VEuFGX^z8HlmyFO_)caxm;X&yLd9Y%Yv1G^}pG-cv|k&NWRtke!wfQ9p8y z*1zl5B?Z+-2%(Z#lRxq8>Y8ed{lX0WeDYJ|PHIkSP7#9ICB07Qhj_z{27N~%p%m&x z)UtaYdrC|nagp!PXLphb8KpB^REMZEpkdY#D-{Z~WU&my!g25i-=$_8&;A_pQAIEZ zOcp?Ia)~ zN8Y|w7m6^GPAg08#d}olJ@{nLWSjQbgy5PnYH9lH7A(ygs5mMKiJ_-ezx#2WJ z_B}>6Bc>DC?ARMymP4npS^@fhy3}@k=3Vg91%uxOgI}h;49sLcYuJaZ!BIjZaxH!sks|ke#R44R z_p72@jz=6?%?;HEI6~JtdxMAI^fjzNI}sy3-#r!>c_VePHo5KL2webz z1ONz&1mN)ef~x@di39M*1^~I&0Khzxtvl~tbc3}uRE+~C)<>$LVJdVQ!-jg|GBUM1 z_$qccrdQInQBuh%#0BU + + + + + + + + + + 区域检验数据中心 + + + + + +

+ + + + + \ No newline at end of file diff --git a/QYJY/index2.html b/QYJY/index2.html new file mode 100644 index 0000000..ee0816a --- /dev/null +++ b/QYJY/index2.html @@ -0,0 +1,305 @@ + + + + + + + + + + + 区域检验数据中心 + + + + + + + +
+
区域检验数据中心
+
+
+
+ +
+

当月项目类别数量

+
+
    +
    +
    +
    +
    + + + + +
    + +
    +

    当月标本类别数量

    +
    +
      +
      +
      +
      +
      + + + + +
      +
      +
      + +
      +
      +

      委托机构当月项目占比

      +
      +
        +
        + + + + +
        +
        +
        +
        + + + + + \ No newline at end of file diff --git a/QYJY/js/echarts.min.js b/QYJY/js/echarts.min.js new file mode 100644 index 0000000..3e09d31 --- /dev/null +++ b/QYJY/js/echarts.min.js @@ -0,0 +1,45 @@ + +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).echarts={})}(this,(function(t){"use strict"; +/*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},e(t,n)};function n(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}var i=function(){this.firefox=!1,this.ie=!1,this.edge=!1,this.newEdge=!1,this.weChat=!1},r=new function(){this.browser=new i,this.node=!1,this.wxa=!1,this.worker=!1,this.svgSupported=!1,this.touchEventsSupported=!1,this.pointerEventsSupported=!1,this.domSupported=!1,this.transformSupported=!1,this.transform3dSupported=!1,this.hasGlobalWindow="undefined"!=typeof window};"object"==typeof wx&&"function"==typeof wx.getSystemInfoSync?(r.wxa=!0,r.touchEventsSupported=!0):"undefined"==typeof document&&"undefined"!=typeof self?r.worker=!0:"undefined"==typeof navigator?(r.node=!0,r.svgSupported=!0):function(t,e){var n=e.browser,i=t.match(/Firefox\/([\d.]+)/),r=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),o=t.match(/Edge?\/([\d.]+)/),a=/micromessenger/i.test(t);i&&(n.firefox=!0,n.version=i[1]);r&&(n.ie=!0,n.version=r[1]);o&&(n.edge=!0,n.version=o[1],n.newEdge=+o[1].split(".")[0]>18);a&&(n.weChat=!0);e.svgSupported="undefined"!=typeof SVGRect,e.touchEventsSupported="ontouchstart"in window&&!n.ie&&!n.edge,e.pointerEventsSupported="onpointerdown"in window&&(n.edge||n.ie&&+n.version>=11),e.domSupported="undefined"!=typeof document;var s=document.documentElement.style;e.transform3dSupported=(n.ie&&"transition"in s||n.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in s)&&!("OTransition"in s),e.transformSupported=e.transform3dSupported||n.ie&&+n.version>=9}(navigator.userAgent,r);var o="sans-serif",a="12px "+o;var s,l,u=function(t){var e={};if("undefined"==typeof JSON)return e;for(var n=0;n=0)o=r*t.length;else for(var c=0;c>1)%2;a.style.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",i[s]+":0",r[l]+":0",i[1-s]+":auto",r[1-l]+":auto",""].join("!important;"),t.appendChild(a),n.push(a)}return n}(e,a),l=function(t,e,n){for(var i=n?"invTrans":"trans",r=e[i],o=e.srcCoords,a=[],s=[],l=!0,u=0;u<4;u++){var h=t[u].getBoundingClientRect(),c=2*u,p=h.left,d=h.top;a.push(p,d),l=l&&o&&p===o[c]&&d===o[c+1],s.push(t[u].offsetLeft,t[u].offsetTop)}return l&&r?r:(e.srcCoords=a,e[i]=n?$t(s,a):$t(a,s))}(s,a,o);if(l)return l(t,n,i),!0}return!1}function ee(t){return"CANVAS"===t.nodeName.toUpperCase()}var ne=/([&<>"'])/g,ie={"&":"&","<":"<",">":">",'"':""","'":"'"};function re(t){return null==t?"":(t+"").replace(ne,(function(t,e){return ie[e]}))}var oe=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ae=[],se=r.browser.firefox&&+r.browser.version.split(".")[0]<39;function le(t,e,n,i){return n=n||{},i?ue(t,e,n):se&&null!=e.layerX&&e.layerX!==e.offsetX?(n.zrX=e.layerX,n.zrY=e.layerY):null!=e.offsetX?(n.zrX=e.offsetX,n.zrY=e.offsetY):ue(t,e,n),n}function ue(t,e,n){if(r.domSupported&&t.getBoundingClientRect){var i=e.clientX,o=e.clientY;if(ee(t)){var a=t.getBoundingClientRect();return n.zrX=i-a.left,void(n.zrY=o-a.top)}if(te(ae,t,i,o))return n.zrX=ae[0],void(n.zrY=ae[1])}n.zrX=n.zrY=0}function he(t){return t||window.event}function ce(t,e,n){if(null!=(e=he(e)).zrX)return e;var i=e.type;if(i&&i.indexOf("touch")>=0){var r="touchend"!==i?e.targetTouches[0]:e.changedTouches[0];r&&le(t,r,e,n)}else{le(t,e,e,n);var o=function(t){var e=t.wheelDelta;if(e)return e;var n=t.deltaX,i=t.deltaY;if(null==n||null==i)return e;return 3*(0!==i?Math.abs(i):Math.abs(n))*(i>0?-1:i<0?1:n>0?-1:1)}(e);e.zrDelta=o?o/120:-(e.detail||0)/3}var a=e.button;return null==e.which&&void 0!==a&&oe.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function pe(t,e,n,i){t.addEventListener(e,n,i)}var de=function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0};function fe(t){return 2===t.which||3===t.which}var ge=function(){function t(){this._track=[]}return t.prototype.recognize=function(t,e,n){return this._doTrack(t,e,n),this._recognize(t)},t.prototype.clear=function(){return this._track.length=0,this},t.prototype._doTrack=function(t,e,n){var i=t.touches;if(i){for(var r={points:[],touches:[],target:e,event:t},o=0,a=i.length;o1&&r&&r.length>1){var a=ye(r)/ye(o);!isFinite(a)&&(a=1),e.pinchScale=a;var s=[((i=r)[0][0]+i[1][0])/2,(i[0][1]+i[1][1])/2];return e.pinchX=s[0],e.pinchY=s[1],{type:"pinch",target:t[0].target,event:e}}}}};function me(){return[1,0,0,1,0,0]}function xe(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function _e(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function be(t,e,n){var i=e[0]*n[0]+e[2]*n[1],r=e[1]*n[0]+e[3]*n[1],o=e[0]*n[2]+e[2]*n[3],a=e[1]*n[2]+e[3]*n[3],s=e[0]*n[4]+e[2]*n[5]+e[4],l=e[1]*n[4]+e[3]*n[5]+e[5];return t[0]=i,t[1]=r,t[2]=o,t[3]=a,t[4]=s,t[5]=l,t}function we(t,e,n){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+n[0],t[5]=e[5]+n[1],t}function Se(t,e,n){var i=e[0],r=e[2],o=e[4],a=e[1],s=e[3],l=e[5],u=Math.sin(n),h=Math.cos(n);return t[0]=i*h+a*u,t[1]=-i*u+a*h,t[2]=r*h+s*u,t[3]=-r*u+h*s,t[4]=h*o+u*l,t[5]=h*l-u*o,t}function Me(t,e,n){var i=n[0],r=n[1];return t[0]=e[0]*i,t[1]=e[1]*r,t[2]=e[2]*i,t[3]=e[3]*r,t[4]=e[4]*i,t[5]=e[5]*r,t}function Ie(t,e){var n=e[0],i=e[2],r=e[4],o=e[1],a=e[3],s=e[5],l=n*a-o*i;return l?(l=1/l,t[0]=a*l,t[1]=-o*l,t[2]=-i*l,t[3]=n*l,t[4]=(i*s-a*r)*l,t[5]=(o*r-n*s)*l,t):null}function Te(t){var e=[1,0,0,1,0,0];return _e(e,t),e}var Ce=Object.freeze({__proto__:null,create:me,identity:xe,copy:_e,mul:be,translate:we,rotate:Se,scale:Me,invert:Ie,clone:Te}),De=function(){function t(t,e){this.x=t||0,this.y=e||0}return t.prototype.copy=function(t){return this.x=t.x,this.y=t.y,this},t.prototype.clone=function(){return new t(this.x,this.y)},t.prototype.set=function(t,e){return this.x=t,this.y=e,this},t.prototype.equal=function(t){return t.x===this.x&&t.y===this.y},t.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},t.prototype.scale=function(t){this.x*=t,this.y*=t},t.prototype.scaleAndAdd=function(t,e){this.x+=t.x*e,this.y+=t.y*e},t.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this},t.prototype.dot=function(t){return this.x*t.x+this.y*t.y},t.prototype.len=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},t.prototype.lenSquare=function(){return this.x*this.x+this.y*this.y},t.prototype.normalize=function(){var t=this.len();return this.x/=t,this.y/=t,this},t.prototype.distance=function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)},t.prototype.distanceSquare=function(t){var e=this.x-t.x,n=this.y-t.y;return e*e+n*n},t.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},t.prototype.transform=function(t){if(t){var e=this.x,n=this.y;return this.x=t[0]*e+t[2]*n+t[4],this.y=t[1]*e+t[3]*n+t[5],this}},t.prototype.toArray=function(t){return t[0]=this.x,t[1]=this.y,t},t.prototype.fromArray=function(t){this.x=t[0],this.y=t[1]},t.set=function(t,e,n){t.x=e,t.y=n},t.copy=function(t,e){t.x=e.x,t.y=e.y},t.len=function(t){return Math.sqrt(t.x*t.x+t.y*t.y)},t.lenSquare=function(t){return t.x*t.x+t.y*t.y},t.dot=function(t,e){return t.x*e.x+t.y*e.y},t.add=function(t,e,n){t.x=e.x+n.x,t.y=e.y+n.y},t.sub=function(t,e,n){t.x=e.x-n.x,t.y=e.y-n.y},t.scale=function(t,e,n){t.x=e.x*n,t.y=e.y*n},t.scaleAndAdd=function(t,e,n,i){t.x=e.x+n.x*i,t.y=e.y+n.y*i},t.lerp=function(t,e,n,i){var r=1-i;t.x=r*e.x+i*n.x,t.y=r*e.y+i*n.y},t}(),Ae=Math.min,ke=Math.max,Le=new De,Pe=new De,Oe=new De,Re=new De,Ne=new De,Ee=new De,ze=function(){function t(t,e,n,i){n<0&&(t+=n,n=-n),i<0&&(e+=i,i=-i),this.x=t,this.y=e,this.width=n,this.height=i}return t.prototype.union=function(t){var e=Ae(t.x,this.x),n=Ae(t.y,this.y);isFinite(this.x)&&isFinite(this.width)?this.width=ke(t.x+t.width,this.x+this.width)-e:this.width=t.width,isFinite(this.y)&&isFinite(this.height)?this.height=ke(t.y+t.height,this.y+this.height)-n:this.height=t.height,this.x=e,this.y=n},t.prototype.applyTransform=function(e){t.applyTransform(this,this,e)},t.prototype.calculateTransform=function(t){var e=this,n=t.width/e.width,i=t.height/e.height,r=[1,0,0,1,0,0];return we(r,r,[-e.x,-e.y]),Me(r,r,[n,i]),we(r,r,[t.x,t.y]),r},t.prototype.intersect=function(e,n){if(!e)return!1;e instanceof t||(e=t.create(e));var i=this,r=i.x,o=i.x+i.width,a=i.y,s=i.y+i.height,l=e.x,u=e.x+e.width,h=e.y,c=e.y+e.height,p=!(of&&(f=x,gf&&(f=_,v=n.x&&t<=n.x+n.width&&e>=n.y&&e<=n.y+n.height},t.prototype.clone=function(){return new t(this.x,this.y,this.width,this.height)},t.prototype.copy=function(e){t.copy(this,e)},t.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},t.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},t.prototype.isZero=function(){return 0===this.width||0===this.height},t.create=function(e){return new t(e.x,e.y,e.width,e.height)},t.copy=function(t,e){t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height},t.applyTransform=function(e,n,i){if(i){if(i[1]<1e-5&&i[1]>-1e-5&&i[2]<1e-5&&i[2]>-1e-5){var r=i[0],o=i[3],a=i[4],s=i[5];return e.x=n.x*r+a,e.y=n.y*o+s,e.width=n.width*r,e.height=n.height*o,e.width<0&&(e.x+=e.width,e.width=-e.width),void(e.height<0&&(e.y+=e.height,e.height=-e.height))}Le.x=Oe.x=n.x,Le.y=Re.y=n.y,Pe.x=Re.x=n.x+n.width,Pe.y=Oe.y=n.y+n.height,Le.transform(i),Re.transform(i),Pe.transform(i),Oe.transform(i),e.x=Ae(Le.x,Pe.x,Oe.x,Re.x),e.y=Ae(Le.y,Pe.y,Oe.y,Re.y);var l=ke(Le.x,Pe.x,Oe.x,Re.x),u=ke(Le.y,Pe.y,Oe.y,Re.y);e.width=l-e.x,e.height=u-e.y}else e!==n&&t.copy(e,n)},t}(),Ve="silent";function Be(){de(this.event)}var Fe=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.handler=null,e}return n(e,t),e.prototype.dispose=function(){},e.prototype.setCursor=function(){},e}(jt),Ge=function(t,e){this.x=t,this.y=e},We=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],He=new ze(0,0,0,0),Ye=function(t){function e(e,n,i,r,o){var a=t.call(this)||this;return a._hovered=new Ge(0,0),a.storage=e,a.painter=n,a.painterRoot=r,a._pointerSize=o,i=i||new Fe,a.proxy=null,a.setHandlerProxy(i),a._draggingMgr=new Zt(a),a}return n(e,t),e.prototype.setHandlerProxy=function(t){this.proxy&&this.proxy.dispose(),t&&(E(We,(function(e){t.on&&t.on(e,this[e],this)}),this),t.handler=this),this.proxy=t},e.prototype.mousemove=function(t){var e=t.zrX,n=t.zrY,i=Ze(this,e,n),r=this._hovered,o=r.target;o&&!o.__zr&&(o=(r=this.findHover(r.x,r.y)).target);var a=this._hovered=i?new Ge(e,n):this.findHover(e,n),s=a.target,l=this.proxy;l.setCursor&&l.setCursor(s?s.cursor:"default"),o&&s!==o&&this.dispatchToElement(r,"mouseout",t),this.dispatchToElement(a,"mousemove",t),s&&s!==o&&this.dispatchToElement(a,"mouseover",t)},e.prototype.mouseout=function(t){var e=t.zrEventControl;"only_globalout"!==e&&this.dispatchToElement(this._hovered,"mouseout",t),"no_globalout"!==e&&this.trigger("globalout",{type:"globalout",event:t})},e.prototype.resize=function(){this._hovered=new Ge(0,0)},e.prototype.dispatch=function(t,e){var n=this[t];n&&n.call(this,e)},e.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},e.prototype.setCursorStyle=function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},e.prototype.dispatchToElement=function(t,e,n){var i=(t=t||{}).target;if(!i||!i.silent){for(var r="on"+e,o=function(t,e,n){return{type:t,event:n,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:n.zrX,offsetY:n.zrY,gestureEvent:n.gestureEvent,pinchX:n.pinchX,pinchY:n.pinchY,pinchScale:n.pinchScale,wheelDelta:n.zrDelta,zrByTouch:n.zrByTouch,which:n.which,stop:Be}}(e,t,n);i&&(i[r]&&(o.cancelBubble=!!i[r].call(i,o)),i.trigger(e,o),i=i.__hostTarget?i.__hostTarget:i.parent,!o.cancelBubble););o.cancelBubble||(this.trigger(e,o),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer((function(t){"function"==typeof t[r]&&t[r].call(t,o),t.trigger&&t.trigger(e,o)})))}},e.prototype.findHover=function(t,e,n){var i=this.storage.getDisplayList(),r=new Ge(t,e);if(Ue(i,r,t,e,n),this._pointerSize&&!r.target){for(var o=[],a=this._pointerSize,s=a/2,l=new ze(t-s,e-s,a,a),u=i.length-1;u>=0;u--){var h=i[u];h===n||h.ignore||h.ignoreCoarsePointer||h.parent&&h.parent.ignoreCoarsePointer||(He.copy(h.getBoundingRect()),h.transform&&He.applyTransform(h.transform),He.intersect(l)&&o.push(h))}if(o.length)for(var c=Math.PI/12,p=2*Math.PI,d=0;d=0;o--){var a=t[o],s=void 0;if(a!==r&&!a.ignore&&(s=Xe(a,n,i))&&(!e.topTarget&&(e.topTarget=a),s!==Ve)){e.target=a;break}}}function Ze(t,e,n){var i=t.painter;return e<0||e>i.getWidth()||n<0||n>i.getHeight()}E(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],(function(t){Ye.prototype[t]=function(e){var n,i,r=e.zrX,o=e.zrY,a=Ze(this,r,o);if("mouseup"===t&&a||(i=(n=this.findHover(r,o)).target),"mousedown"===t)this._downEl=i,this._downPoint=[e.zrX,e.zrY],this._upEl=i;else if("mouseup"===t)this._upEl=i;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||Vt(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(n,t,e)}}));function je(t,e,n,i){var r=e+1;if(r===n)return 1;if(i(t[r++],t[e])<0){for(;r=0;)r++;return r-e}function qe(t,e,n,i,r){for(i===e&&i++;i>>1])<0?l=o:s=o+1;var u=i-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=a}}function Ke(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])>0){for(s=i-r;l0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}else{for(s=r+1;ls&&(l=s);var u=a;a=r-l,l=r-u}for(a++;a>>1);o(t,e[n+h])>0?a=h+1:l=h}return l}function $e(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])<0){for(s=r+1;ls&&(l=s);var u=a;a=r-l,l=r-u}else{for(s=i-r;l=0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}for(a++;a>>1);o(t,e[n+h])<0?l=h:a=h+1}return l}function Je(t,e){var n,i,r=7,o=0;t.length;var a=[];function s(s){var l=n[s],u=i[s],h=n[s+1],c=i[s+1];i[s]=u+c,s===o-3&&(n[s+1]=n[s+2],i[s+1]=i[s+2]),o--;var p=$e(t[h],t,l,u,0,e);l+=p,0!==(u-=p)&&0!==(c=Ke(t[l+u-1],t,h,c,c-1,e))&&(u<=c?function(n,i,o,s){var l=0;for(l=0;l=7||d>=7);if(f)break;g<0&&(g=0),g+=2}if((r=g)<1&&(r=1),1===i){for(l=0;l=0;l--)t[d+l]=t[p+l];return void(t[c]=a[h])}var f=r;for(;;){var g=0,y=0,v=!1;do{if(e(a[h],t[u])<0){if(t[c--]=t[u--],g++,y=0,0==--i){v=!0;break}}else if(t[c--]=a[h--],y++,g=0,1==--s){v=!0;break}}while((g|y)=0;l--)t[d+l]=t[p+l];if(0===i){v=!0;break}}if(t[c--]=a[h--],1==--s){v=!0;break}if(0!==(y=s-Ke(t[u],a,0,s,s-1,e))){for(s-=y,d=(c-=y)+1,p=(h-=y)+1,l=0;l=7||y>=7);if(v)break;f<0&&(f=0),f+=2}(r=f)<1&&(r=1);if(1===s){for(d=(c-=i)+1,p=(u-=i)+1,l=i-1;l>=0;l--)t[d+l]=t[p+l];t[c]=a[h]}else{if(0===s)throw new Error;for(p=c-(s-1),l=0;l1;){var t=o-2;if(t>=1&&i[t-1]<=i[t]+i[t+1]||t>=2&&i[t-2]<=i[t]+i[t-1])i[t-1]i[t+1])break;s(t)}},forceMergeRuns:function(){for(;o>1;){var t=o-2;t>0&&i[t-1]=32;)e|=1&t,t>>=1;return t+e}(r);do{if((o=je(t,n,i,e))s&&(l=s),qe(t,n,n+l,n+o,e),o=l}a.pushRun(n,o),a.mergeRuns(),r-=o,n+=o}while(0!==r);a.forceMergeRuns()}}}var tn=!1;function en(){tn||(tn=!0,console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))}function nn(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}var rn=function(){function t(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=nn}return t.prototype.traverse=function(t,e){for(var n=0;n0&&(u.__clipPaths=[]),isNaN(u.z)&&(en(),u.z=0),isNaN(u.z2)&&(en(),u.z2=0),isNaN(u.zlevel)&&(en(),u.zlevel=0),this._displayList[this._displayListLen++]=u}var h=t.getDecalElement&&t.getDecalElement();h&&this._updateAndAddDisplayable(h,e,n);var c=t.getTextGuideLine();c&&this._updateAndAddDisplayable(c,e,n);var p=t.getTextContent();p&&this._updateAndAddDisplayable(p,e,n)}},t.prototype.addRoot=function(t){t.__zr&&t.__zr.storage===this||this._roots.push(t)},t.prototype.delRoot=function(t){if(t instanceof Array)for(var e=0,n=t.length;e=0&&this._roots.splice(i,1)}},t.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},t.prototype.getRoots=function(){return this._roots},t.prototype.dispose=function(){this._displayList=null,this._roots=null},t}(),on=r.hasGlobalWindow&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){return setTimeout(t,16)},an={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4))},elasticOut:function(t){var e,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/.4)+1)},elasticInOut:function(t){var e,n=.1,i=.4;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=i*Math.asin(1/n)/(2*Math.PI),(t*=2)<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.5+1)},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-an.bounceOut(1-t)},bounceOut:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return t<.5?.5*an.bounceIn(2*t):.5*an.bounceOut(2*t-1)+.5}},sn=Math.pow,ln=Math.sqrt,un=1e-8,hn=1e-4,cn=ln(3),pn=1/3,dn=Mt(),fn=Mt(),gn=Mt();function yn(t){return t>-1e-8&&tun||t<-1e-8}function mn(t,e,n,i,r){var o=1-r;return o*o*(o*t+3*r*e)+r*r*(r*i+3*o*n)}function xn(t,e,n,i,r){var o=1-r;return 3*(((e-t)*o+2*(n-e)*r)*o+(i-n)*r*r)}function _n(t,e,n,i,r,o){var a=i+3*(e-n)-t,s=3*(n-2*e+t),l=3*(e-t),u=t-r,h=s*s-3*a*l,c=s*l-9*a*u,p=l*l-3*s*u,d=0;if(yn(h)&&yn(c)){if(yn(s))o[0]=0;else(M=-l/s)>=0&&M<=1&&(o[d++]=M)}else{var f=c*c-4*h*p;if(yn(f)){var g=c/h,y=-g/2;(M=-s/a+g)>=0&&M<=1&&(o[d++]=M),y>=0&&y<=1&&(o[d++]=y)}else if(f>0){var v=ln(f),m=h*s+1.5*a*(-c+v),x=h*s+1.5*a*(-c-v);(M=(-s-((m=m<0?-sn(-m,pn):sn(m,pn))+(x=x<0?-sn(-x,pn):sn(x,pn))))/(3*a))>=0&&M<=1&&(o[d++]=M)}else{var _=(2*h*s-3*a*c)/(2*ln(h*h*h)),b=Math.acos(_)/3,w=ln(h),S=Math.cos(b),M=(-s-2*w*S)/(3*a),I=(y=(-s+w*(S+cn*Math.sin(b)))/(3*a),(-s+w*(S-cn*Math.sin(b)))/(3*a));M>=0&&M<=1&&(o[d++]=M),y>=0&&y<=1&&(o[d++]=y),I>=0&&I<=1&&(o[d++]=I)}}return d}function bn(t,e,n,i,r){var o=6*n-12*e+6*t,a=9*e+3*i-3*t-9*n,s=3*e-3*t,l=0;if(yn(a)){if(vn(o))(h=-s/o)>=0&&h<=1&&(r[l++]=h)}else{var u=o*o-4*a*s;if(yn(u))r[0]=-o/(2*a);else if(u>0){var h,c=ln(u),p=(-o-c)/(2*a);(h=(-o+c)/(2*a))>=0&&h<=1&&(r[l++]=h),p>=0&&p<=1&&(r[l++]=p)}}return l}function wn(t,e,n,i,r,o){var a=(e-t)*r+t,s=(n-e)*r+e,l=(i-n)*r+n,u=(s-a)*r+a,h=(l-s)*r+s,c=(h-u)*r+u;o[0]=t,o[1]=a,o[2]=u,o[3]=c,o[4]=c,o[5]=h,o[6]=l,o[7]=i}function Sn(t,e,n,i,r,o,a,s,l,u,h){var c,p,d,f,g,y=.005,v=1/0;dn[0]=l,dn[1]=u;for(var m=0;m<1;m+=.05)fn[0]=mn(t,n,r,a,m),fn[1]=mn(e,i,o,s,m),(f=Ft(dn,fn))=0&&f=0&&y=1?1:_n(0,i,o,1,t,s)&&mn(0,r,a,1,s[0])}}}var On=function(){function t(t){this._inited=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=t.life||1e3,this._delay=t.delay||0,this.loop=t.loop||!1,this.onframe=t.onframe||bt,this.ondestroy=t.ondestroy||bt,this.onrestart=t.onrestart||bt,t.easing&&this.setEasing(t.easing)}return t.prototype.step=function(t,e){if(this._inited||(this._startTime=t+this._delay,this._inited=!0),!this._paused){var n=this._life,i=t-this._startTime-this._pausedTime,r=i/n;r<0&&(r=0),r=Math.min(r,1);var o=this.easingFunc,a=o?o(r):r;if(this.onframe(a),1===r){if(!this.loop)return!0;var s=i%n;this._startTime=t-s,this._pausedTime=0,this.onrestart()}return!1}this._pausedTime+=e},t.prototype.pause=function(){this._paused=!0},t.prototype.resume=function(){this._paused=!1},t.prototype.setEasing=function(t){this.easing=t,this.easingFunc=X(t)?t:an[t]||Pn(t)},t}(),Rn=function(t){this.value=t},Nn=function(){function t(){this._len=0}return t.prototype.insert=function(t){var e=new Rn(t);return this.insertEntry(e),e},t.prototype.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},t.prototype.remove=function(t){var e=t.prev,n=t.next;e?e.next=n:this.head=n,n?n.prev=e:this.tail=e,t.next=t.prev=null,this._len--},t.prototype.len=function(){return this._len},t.prototype.clear=function(){this.head=this.tail=null,this._len=0},t}(),En=function(){function t(t){this._list=new Nn,this._maxSize=10,this._map={},this._maxSize=t}return t.prototype.put=function(t,e){var n=this._list,i=this._map,r=null;if(null==i[t]){var o=n.len(),a=this._lastRemovedEntry;if(o>=this._maxSize&&o>0){var s=n.head;n.remove(s),delete i[s.key],r=s.value,this._lastRemovedEntry=s}a?a.value=e:a=new Rn(e),a.key=t,n.insertEntry(a),i[t]=a}return r},t.prototype.get=function(t){var e=this._map[t],n=this._list;if(null!=e)return e!==n.tail&&(n.remove(e),n.insertEntry(e)),e.value},t.prototype.clear=function(){this._list.clear(),this._map={}},t.prototype.len=function(){return this._list.len()},t}(),zn={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Vn(t){return(t=Math.round(t))<0?0:t>255?255:t}function Bn(t){return t<0?0:t>1?1:t}function Fn(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?Vn(parseFloat(e)/100*255):Vn(parseInt(e,10))}function Gn(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?Bn(parseFloat(e)/100):Bn(parseFloat(e))}function Wn(t,e,n){return n<0?n+=1:n>1&&(n-=1),6*n<1?t+(e-t)*n*6:2*n<1?e:3*n<2?t+(e-t)*(2/3-n)*6:t}function Hn(t,e,n){return t+(e-t)*n}function Yn(t,e,n,i,r){return t[0]=e,t[1]=n,t[2]=i,t[3]=r,t}function Xn(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}var Un=new En(20),Zn=null;function jn(t,e){Zn&&Xn(Zn,e),Zn=Un.put(t,Zn||e.slice())}function qn(t,e){if(t){e=e||[];var n=Un.get(t);if(n)return Xn(e,n);var i=(t+="").replace(/ /g,"").toLowerCase();if(i in zn)return Xn(e,zn[i]),jn(t,e),e;var r,o=i.length;if("#"===i.charAt(0))return 4===o||5===o?(r=parseInt(i.slice(1,4),16))>=0&&r<=4095?(Yn(e,(3840&r)>>4|(3840&r)>>8,240&r|(240&r)>>4,15&r|(15&r)<<4,5===o?parseInt(i.slice(4),16)/15:1),jn(t,e),e):void Yn(e,0,0,0,1):7===o||9===o?(r=parseInt(i.slice(1,7),16))>=0&&r<=16777215?(Yn(e,(16711680&r)>>16,(65280&r)>>8,255&r,9===o?parseInt(i.slice(7),16)/255:1),jn(t,e),e):void Yn(e,0,0,0,1):void 0;var a=i.indexOf("("),s=i.indexOf(")");if(-1!==a&&s+1===o){var l=i.substr(0,a),u=i.substr(a+1,s-(a+1)).split(","),h=1;switch(l){case"rgba":if(4!==u.length)return 3===u.length?Yn(e,+u[0],+u[1],+u[2],1):Yn(e,0,0,0,1);h=Gn(u.pop());case"rgb":return u.length>=3?(Yn(e,Fn(u[0]),Fn(u[1]),Fn(u[2]),3===u.length?h:Gn(u[3])),jn(t,e),e):void Yn(e,0,0,0,1);case"hsla":return 4!==u.length?void Yn(e,0,0,0,1):(u[3]=Gn(u[3]),Kn(u,e),jn(t,e),e);case"hsl":return 3!==u.length?void Yn(e,0,0,0,1):(Kn(u,e),jn(t,e),e);default:return}}Yn(e,0,0,0,1)}}function Kn(t,e){var n=(parseFloat(t[0])%360+360)%360/360,i=Gn(t[1]),r=Gn(t[2]),o=r<=.5?r*(i+1):r+i-r*i,a=2*r-o;return Yn(e=e||[],Vn(255*Wn(a,o,n+1/3)),Vn(255*Wn(a,o,n)),Vn(255*Wn(a,o,n-1/3)),1),4===t.length&&(e[3]=t[3]),e}function $n(t,e){var n=qn(t);if(n){for(var i=0;i<3;i++)n[i]=e<0?n[i]*(1-e)|0:(255-n[i])*e+n[i]|0,n[i]>255?n[i]=255:n[i]<0&&(n[i]=0);return ri(n,4===n.length?"rgba":"rgb")}}function Jn(t,e,n){if(e&&e.length&&t>=0&&t<=1){n=n||[];var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=e[r],s=e[o],l=i-r;return n[0]=Vn(Hn(a[0],s[0],l)),n[1]=Vn(Hn(a[1],s[1],l)),n[2]=Vn(Hn(a[2],s[2],l)),n[3]=Bn(Hn(a[3],s[3],l)),n}}var Qn=Jn;function ti(t,e,n){if(e&&e.length&&t>=0&&t<=1){var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=qn(e[r]),s=qn(e[o]),l=i-r,u=ri([Vn(Hn(a[0],s[0],l)),Vn(Hn(a[1],s[1],l)),Vn(Hn(a[2],s[2],l)),Bn(Hn(a[3],s[3],l))],"rgba");return n?{color:u,leftIndex:r,rightIndex:o,value:i}:u}}var ei=ti;function ni(t,e,n,i){var r=qn(t);if(t)return r=function(t){if(t){var e,n,i=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(i,r,o),s=Math.max(i,r,o),l=s-a,u=(s+a)/2;if(0===l)e=0,n=0;else{n=u<.5?l/(s+a):l/(2-s-a);var h=((s-i)/6+l/2)/l,c=((s-r)/6+l/2)/l,p=((s-o)/6+l/2)/l;i===s?e=p-c:r===s?e=1/3+h-p:o===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var d=[360*e,n,u];return null!=t[3]&&d.push(t[3]),d}}(r),null!=e&&(r[0]=function(t){return(t=Math.round(t))<0?0:t>360?360:t}(e)),null!=n&&(r[1]=Gn(n)),null!=i&&(r[2]=Gn(i)),ri(Kn(r),"rgba")}function ii(t,e){var n=qn(t);if(n&&null!=e)return n[3]=Bn(e),ri(n,"rgba")}function ri(t,e){if(t&&t.length){var n=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(n+=","+t[3]),e+"("+n+")"}}function oi(t,e){var n=qn(t);return n?(.299*n[0]+.587*n[1]+.114*n[2])*n[3]/255+(1-n[3])*e:0}var ai=Object.freeze({__proto__:null,parse:qn,lift:$n,toHex:function(t){var e=qn(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)},fastLerp:Jn,fastMapToColor:Qn,lerp:ti,mapToColor:ei,modifyHSL:ni,modifyAlpha:ii,stringify:ri,lum:oi,random:function(){return ri([Math.round(255*Math.random()),Math.round(255*Math.random()),Math.round(255*Math.random())],"rgb")}}),si=Math.round;function li(t){var e;if(t&&"transparent"!==t){if("string"==typeof t&&t.indexOf("rgba")>-1){var n=qn(t);n&&(t="rgb("+n[0]+","+n[1]+","+n[2]+")",e=n[3])}}else t="none";return{color:t,opacity:null==e?1:e}}var ui=1e-4;function hi(t){return t-1e-4}function ci(t){return si(1e3*t)/1e3}function pi(t){return si(1e4*t)/1e4}var di={left:"start",right:"end",center:"middle",middle:"middle"};function fi(t){return t&&!!t.image}function gi(t){return fi(t)||function(t){return t&&!!t.svgElement}(t)}function yi(t){return"linear"===t.type}function vi(t){return"radial"===t.type}function mi(t){return t&&("linear"===t.type||"radial"===t.type)}function xi(t){return"url(#"+t+")"}function _i(t){var e=t.getGlobalScale(),n=Math.max(e[0],e[1]);return Math.max(Math.ceil(Math.log(n)/Math.log(10)),1)}function bi(t){var e=t.x||0,n=t.y||0,i=(t.rotation||0)*wt,r=rt(t.scaleX,1),o=rt(t.scaleY,1),a=t.skewX||0,s=t.skewY||0,l=[];return(e||n)&&l.push("translate("+e+"px,"+n+"px)"),i&&l.push("rotate("+i+")"),1===r&&1===o||l.push("scale("+r+","+o+")"),(a||s)&&l.push("skew("+si(a*wt)+"deg, "+si(s*wt)+"deg)"),l.join(" ")}var wi=r.hasGlobalWindow&&X(window.btoa)?function(t){return window.btoa(unescape(encodeURIComponent(t)))}:"undefined"!=typeof Buffer?function(t){return Buffer.from(t).toString("base64")}:function(t){return null},Si=Array.prototype.slice;function Mi(t,e,n){return(e-t)*n+t}function Ii(t,e,n,i){for(var r=e.length,o=0;oi?e:t,o=Math.min(n,i),a=r[o-1]||{color:[0,0,0,0],offset:0},s=o;sa)i.length=a;else for(var s=o;s=1},t.prototype.getAdditiveTrack=function(){return this._additiveTrack},t.prototype.addKeyframe=function(t,e,n){this._needsSort=!0;var i=this.keyframes,r=i.length,o=!1,a=6,s=e;if(N(e)){var l=function(t){return N(t&&t[0])?2:1}(e);a=l,(1===l&&!j(e[0])||2===l&&!j(e[0][0]))&&(o=!0)}else if(j(e)&&!nt(e))a=0;else if(U(e))if(isNaN(+e)){var u=qn(e);u&&(s=u,a=3)}else a=0;else if(Q(e)){var h=A({},s);h.colorStops=z(e.colorStops,(function(t){return{offset:t.offset,color:qn(t.color)}})),yi(e)?a=4:vi(e)&&(a=5),s=h}0===r?this.valType=a:a===this.valType&&6!==a||(o=!0),this.discrete=this.discrete||o;var c={time:t,value:s,rawValue:e,percent:0};return n&&(c.easing=n,c.easingFunc=X(n)?n:an[n]||Pn(n)),i.push(c),c},t.prototype.prepare=function(t,e){var n=this.keyframes;this._needsSort&&n.sort((function(t,e){return t.time-e.time}));for(var i=this.valType,r=n.length,o=n[r-1],a=this.discrete,s=Oi(i),l=Pi(i),u=0;u=0&&!(l[n].percent<=e);n--);n=d(n,u-2)}else{for(n=p;ne);n++);n=d(n-1,u-2)}r=l[n+1],i=l[n]}if(i&&r){this._lastFr=n,this._lastFrP=e;var f=r.percent-i.percent,g=0===f?1:d((e-i.percent)/f,1);r.easingFunc&&(g=r.easingFunc(g));var y=o?this._additiveValue:c?Ri:t[h];if(!Oi(s)&&!c||y||(y=this._additiveValue=[]),this.discrete)t[h]=g<1?i.rawValue:r.rawValue;else if(Oi(s))1===s?Ii(y,i[a],r[a],g):function(t,e,n,i){for(var r=e.length,o=r&&e[0].length,a=0;a0&&s.addKeyframe(0,ki(l),i),this._trackKeys.push(a)}s.addKeyframe(t,ki(e[a]),i)}return this._maxTime=Math.max(this._maxTime,t),this},t.prototype.pause=function(){this._clip.pause(),this._paused=!0},t.prototype.resume=function(){this._clip.resume(),this._paused=!1},t.prototype.isPaused=function(){return!!this._paused},t.prototype.duration=function(t){return this._maxTime=t,this._force=!0,this},t.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var t=this._doneCbs;if(t)for(var e=t.length,n=0;n0)){this._started=1;for(var e=this,n=[],i=this._maxTime||0,r=0;r1){var a=o.pop();r.addKeyframe(a.time,t[i]),r.prepare(this._maxTime,r.getAdditiveTrack())}}}},t}();function zi(){return(new Date).getTime()}var Vi,Bi,Fi=function(t){function e(e){var n=t.call(this)||this;return n._running=!1,n._time=0,n._pausedTime=0,n._pauseStart=0,n._paused=!1,e=e||{},n.stage=e.stage||{},n}return n(e,t),e.prototype.addClip=function(t){t.animation&&this.removeClip(t),this._head?(this._tail.next=t,t.prev=this._tail,t.next=null,this._tail=t):this._head=this._tail=t,t.animation=this},e.prototype.addAnimator=function(t){t.animation=this;var e=t.getClip();e&&this.addClip(e)},e.prototype.removeClip=function(t){if(t.animation){var e=t.prev,n=t.next;e?e.next=n:this._head=n,n?n.prev=e:this._tail=e,t.next=t.prev=t.animation=null}},e.prototype.removeAnimator=function(t){var e=t.getClip();e&&this.removeClip(e),t.animation=null},e.prototype.update=function(t){for(var e=zi()-this._pausedTime,n=e-this._time,i=this._head;i;){var r=i.next;i.step(e,n)?(i.ondestroy(),this.removeClip(i),i=r):i=r}this._time=e,t||(this.trigger("frame",n),this.stage.update&&this.stage.update())},e.prototype._startLoop=function(){var t=this;this._running=!0,on((function e(){t._running&&(on(e),!t._paused&&t.update())}))},e.prototype.start=function(){this._running||(this._time=zi(),this._pausedTime=0,this._startLoop())},e.prototype.stop=function(){this._running=!1},e.prototype.pause=function(){this._paused||(this._pauseStart=zi(),this._paused=!0)},e.prototype.resume=function(){this._paused&&(this._pausedTime+=zi()-this._pauseStart,this._paused=!1)},e.prototype.clear=function(){for(var t=this._head;t;){var e=t.next;t.prev=t.next=t.animation=null,t=e}this._head=this._tail=null},e.prototype.isFinished=function(){return null==this._head},e.prototype.animate=function(t,e){e=e||{},this.start();var n=new Ei(t,e.loop);return this.addAnimator(n),n},e}(jt),Gi=r.domSupported,Wi=(Bi={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},{mouse:Vi=["click","dblclick","mousewheel","wheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],touch:["touchstart","touchend","touchmove"],pointer:z(Vi,(function(t){var e=t.replace("mouse","pointer");return Bi.hasOwnProperty(e)?e:t}))}),Hi=["mousemove","mouseup"],Yi=["pointermove","pointerup"],Xi=!1;function Ui(t){var e=t.pointerType;return"pen"===e||"touch"===e}function Zi(t){t&&(t.zrByTouch=!0)}function ji(t,e){for(var n=e,i=!1;n&&9!==n.nodeType&&!(i=n.domBelongToZr||n!==e&&n===t.painterRoot);)n=n.parentNode;return i}var qi=function(t,e){this.stopPropagation=bt,this.stopImmediatePropagation=bt,this.preventDefault=bt,this.type=e.type,this.target=this.currentTarget=t.dom,this.pointerType=e.pointerType,this.clientX=e.clientX,this.clientY=e.clientY},Ki={mousedown:function(t){t=ce(this.dom,t),this.__mayPointerCapture=[t.zrX,t.zrY],this.trigger("mousedown",t)},mousemove:function(t){t=ce(this.dom,t);var e=this.__mayPointerCapture;!e||t.zrX===e[0]&&t.zrY===e[1]||this.__togglePointerCapture(!0),this.trigger("mousemove",t)},mouseup:function(t){t=ce(this.dom,t),this.__togglePointerCapture(!1),this.trigger("mouseup",t)},mouseout:function(t){ji(this,(t=ce(this.dom,t)).toElement||t.relatedTarget)||(this.__pointerCapturing&&(t.zrEventControl="no_globalout"),this.trigger("mouseout",t))},wheel:function(t){Xi=!0,t=ce(this.dom,t),this.trigger("mousewheel",t)},mousewheel:function(t){Xi||(t=ce(this.dom,t),this.trigger("mousewheel",t))},touchstart:function(t){Zi(t=ce(this.dom,t)),this.__lastTouchMoment=new Date,this.handler.processGesture(t,"start"),Ki.mousemove.call(this,t),Ki.mousedown.call(this,t)},touchmove:function(t){Zi(t=ce(this.dom,t)),this.handler.processGesture(t,"change"),Ki.mousemove.call(this,t)},touchend:function(t){Zi(t=ce(this.dom,t)),this.handler.processGesture(t,"end"),Ki.mouseup.call(this,t),+new Date-+this.__lastTouchMoment<300&&Ki.click.call(this,t)},pointerdown:function(t){Ki.mousedown.call(this,t)},pointermove:function(t){Ui(t)||Ki.mousemove.call(this,t)},pointerup:function(t){Ki.mouseup.call(this,t)},pointerout:function(t){Ui(t)||Ki.mouseout.call(this,t)}};E(["click","dblclick","contextmenu"],(function(t){Ki[t]=function(e){e=ce(this.dom,e),this.trigger(t,e)}}));var $i={pointermove:function(t){Ui(t)||$i.mousemove.call(this,t)},pointerup:function(t){$i.mouseup.call(this,t)},mousemove:function(t){this.trigger("mousemove",t)},mouseup:function(t){var e=this.__pointerCapturing;this.__togglePointerCapture(!1),this.trigger("mouseup",t),e&&(t.zrEventControl="only_globalout",this.trigger("mouseout",t))}};function Ji(t,e){var n=e.domHandlers;r.pointerEventsSupported?E(Wi.pointer,(function(i){tr(e,i,(function(e){n[i].call(t,e)}))})):(r.touchEventsSupported&&E(Wi.touch,(function(i){tr(e,i,(function(r){n[i].call(t,r),function(t){t.touching=!0,null!=t.touchTimer&&(clearTimeout(t.touchTimer),t.touchTimer=null),t.touchTimer=setTimeout((function(){t.touching=!1,t.touchTimer=null}),700)}(e)}))})),E(Wi.mouse,(function(i){tr(e,i,(function(r){r=he(r),e.touching||n[i].call(t,r)}))})))}function Qi(t,e){function n(n){tr(e,n,(function(i){i=he(i),ji(t,i.target)||(i=function(t,e){return ce(t.dom,new qi(t,e),!0)}(t,i),e.domHandlers[n].call(t,i))}),{capture:!0})}r.pointerEventsSupported?E(Yi,n):r.touchEventsSupported||E(Hi,n)}function tr(t,e,n,i){t.mounted[e]=n,t.listenerOpts[e]=i,pe(t.domTarget,e,n,i)}function er(t){var e,n,i,r,o=t.mounted;for(var a in o)o.hasOwnProperty(a)&&(e=t.domTarget,n=a,i=o[a],r=t.listenerOpts[a],e.removeEventListener(n,i,r));t.mounted={}}var nr=function(t,e){this.mounted={},this.listenerOpts={},this.touching=!1,this.domTarget=t,this.domHandlers=e},ir=function(t){function e(e,n){var i=t.call(this)||this;return i.__pointerCapturing=!1,i.dom=e,i.painterRoot=n,i._localHandlerScope=new nr(e,Ki),Gi&&(i._globalHandlerScope=new nr(document,$i)),Ji(i,i._localHandlerScope),i}return n(e,t),e.prototype.dispose=function(){er(this._localHandlerScope),Gi&&er(this._globalHandlerScope)},e.prototype.setCursor=function(t){this.dom.style&&(this.dom.style.cursor=t||"default")},e.prototype.__togglePointerCapture=function(t){if(this.__mayPointerCapture=null,Gi&&+this.__pointerCapturing^+t){this.__pointerCapturing=t;var e=this._globalHandlerScope;t?Qi(this,e):er(e)}},e}(jt),rr=1;r.hasGlobalWindow&&(rr=Math.max(window.devicePixelRatio||window.screen&&window.screen.deviceXDPI/window.screen.logicalXDPI||1,1));var or=rr,ar="#333",sr="#ccc",lr=xe,ur=5e-5;function hr(t){return t>ur||t<-5e-5}var cr=[],pr=[],dr=[1,0,0,1,0,0],fr=Math.abs,gr=function(){function t(){}return t.prototype.getLocalTransform=function(e){return t.getLocalTransform(this,e)},t.prototype.setPosition=function(t){this.x=t[0],this.y=t[1]},t.prototype.setScale=function(t){this.scaleX=t[0],this.scaleY=t[1]},t.prototype.setSkew=function(t){this.skewX=t[0],this.skewY=t[1]},t.prototype.setOrigin=function(t){this.originX=t[0],this.originY=t[1]},t.prototype.needLocalTransform=function(){return hr(this.rotation)||hr(this.x)||hr(this.y)||hr(this.scaleX-1)||hr(this.scaleY-1)||hr(this.skewX)||hr(this.skewY)},t.prototype.updateTransform=function(){var t=this.parent&&this.parent.transform,e=this.needLocalTransform(),n=this.transform;e||t?(n=n||[1,0,0,1,0,0],e?this.getLocalTransform(n):lr(n),t&&(e?be(n,t,n):_e(n,t)),this.transform=n,this._resolveGlobalScaleRatio(n)):n&&(lr(n),this.invTransform=null)},t.prototype._resolveGlobalScaleRatio=function(t){var e=this.globalScaleRatio;if(null!=e&&1!==e){this.getGlobalScale(cr);var n=cr[0]<0?-1:1,i=cr[1]<0?-1:1,r=((cr[0]-n)*e+n)/cr[0]||0,o=((cr[1]-i)*e+i)/cr[1]||0;t[0]*=r,t[1]*=r,t[2]*=o,t[3]*=o}this.invTransform=this.invTransform||[1,0,0,1,0,0],Ie(this.invTransform,t)},t.prototype.getComputedTransform=function(){for(var t=this,e=[];t;)e.push(t),t=t.parent;for(;t=e.pop();)t.updateTransform();return this.transform},t.prototype.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],n=t[2]*t[2]+t[3]*t[3],i=Math.atan2(t[1],t[0]),r=Math.PI/2+i-Math.atan2(t[3],t[2]);n=Math.sqrt(n)*Math.cos(r),e=Math.sqrt(e),this.skewX=r,this.skewY=0,this.rotation=-i,this.x=+t[4],this.y=+t[5],this.scaleX=e,this.scaleY=n,this.originX=0,this.originY=0}},t.prototype.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(be(pr,t.invTransform,e),e=pr);var n=this.originX,i=this.originY;(n||i)&&(dr[4]=n,dr[5]=i,be(pr,e,dr),pr[4]-=n,pr[5]-=i,e=pr),this.setLocalTransform(e)}},t.prototype.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},t.prototype.transformCoordToLocal=function(t,e){var n=[t,e],i=this.invTransform;return i&&Wt(n,n,i),n},t.prototype.transformCoordToGlobal=function(t,e){var n=[t,e],i=this.transform;return i&&Wt(n,n,i),n},t.prototype.getLineScale=function(){var t=this.transform;return t&&fr(t[0]-1)>1e-10&&fr(t[3]-1)>1e-10?Math.sqrt(fr(t[0]*t[3]-t[2]*t[1])):1},t.prototype.copyTransform=function(t){vr(this,t)},t.getLocalTransform=function(t,e){e=e||[];var n=t.originX||0,i=t.originY||0,r=t.scaleX,o=t.scaleY,a=t.anchorX,s=t.anchorY,l=t.rotation||0,u=t.x,h=t.y,c=t.skewX?Math.tan(t.skewX):0,p=t.skewY?Math.tan(-t.skewY):0;if(n||i||a||s){var d=n+a,f=i+s;e[4]=-d*r-c*f*o,e[5]=-f*o-p*d*r}else e[4]=e[5]=0;return e[0]=r,e[3]=o,e[1]=p*r,e[2]=c*o,l&&Se(e,e,l),e[4]+=n+u,e[5]+=i+h,e},t.initDefaultProps=function(){var e=t.prototype;e.scaleX=e.scaleY=e.globalScaleRatio=1,e.x=e.y=e.originX=e.originY=e.skewX=e.skewY=e.rotation=e.anchorX=e.anchorY=0}(),t}(),yr=["x","y","originX","originY","anchorX","anchorY","rotation","scaleX","scaleY","skewX","skewY"];function vr(t,e){for(var n=0;n=0?parseFloat(t)/100*e:parseFloat(t):t}function Tr(t,e,n){var i=e.position||"inside",r=null!=e.distance?e.distance:5,o=n.height,a=n.width,s=o/2,l=n.x,u=n.y,h="left",c="top";if(i instanceof Array)l+=Ir(i[0],n.width),u+=Ir(i[1],n.height),h=null,c=null;else switch(i){case"left":l-=r,u+=s,h="right",c="middle";break;case"right":l+=r+a,u+=s,c="middle";break;case"top":l+=a/2,u-=r,h="center",c="bottom";break;case"bottom":l+=a/2,u+=o+r,h="center";break;case"inside":l+=a/2,u+=s,h="center",c="middle";break;case"insideLeft":l+=r,u+=s,c="middle";break;case"insideRight":l+=a-r,u+=s,h="right",c="middle";break;case"insideTop":l+=a/2,u+=r,h="center";break;case"insideBottom":l+=a/2,u+=o-r,h="center",c="bottom";break;case"insideTopLeft":l+=r,u+=r;break;case"insideTopRight":l+=a-r,u+=r,h="right";break;case"insideBottomLeft":l+=r,u+=o-r,c="bottom";break;case"insideBottomRight":l+=a-r,u+=o-r,h="right",c="bottom"}return(t=t||{}).x=l,t.y=u,t.align=h,t.verticalAlign=c,t}var Cr="__zr_normal__",Dr=yr.concat(["ignore"]),Ar=V(yr,(function(t,e){return t[e]=!0,t}),{ignore:!1}),kr={},Lr=new ze(0,0,0,0),Pr=function(){function t(t){this.id=M(),this.animators=[],this.currentStates=[],this.states={},this._init(t)}return t.prototype._init=function(t){this.attr(t)},t.prototype.drift=function(t,e,n){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0}var i=this.transform;i||(i=this.transform=[1,0,0,1,0,0]),i[4]+=t,i[5]+=e,this.decomposeTransform(),this.markRedraw()},t.prototype.beforeUpdate=function(){},t.prototype.afterUpdate=function(){},t.prototype.update=function(){this.updateTransform(),this.__dirty&&this.updateInnerText()},t.prototype.updateInnerText=function(t){var e=this._textContent;if(e&&(!e.ignore||t)){this.textConfig||(this.textConfig={});var n=this.textConfig,i=n.local,r=e.innerTransformable,o=void 0,a=void 0,s=!1;r.parent=i?this:null;var l=!1;if(r.copyTransform(e),null!=n.position){var u=Lr;n.layoutRect?u.copy(n.layoutRect):u.copy(this.getBoundingRect()),i||u.applyTransform(this.transform),this.calculateTextPosition?this.calculateTextPosition(kr,n,u):Tr(kr,n,u),r.x=kr.x,r.y=kr.y,o=kr.align,a=kr.verticalAlign;var h=n.origin;if(h&&null!=n.rotation){var c=void 0,p=void 0;"center"===h?(c=.5*u.width,p=.5*u.height):(c=Ir(h[0],u.width),p=Ir(h[1],u.height)),l=!0,r.originX=-r.x+c+(i?0:u.x),r.originY=-r.y+p+(i?0:u.y)}}null!=n.rotation&&(r.rotation=n.rotation);var d=n.offset;d&&(r.x+=d[0],r.y+=d[1],l||(r.originX=-d[0],r.originY=-d[1]));var f=null==n.inside?"string"==typeof n.position&&n.position.indexOf("inside")>=0:n.inside,g=this._innerTextDefaultStyle||(this._innerTextDefaultStyle={}),y=void 0,v=void 0,m=void 0;f&&this.canBeInsideText()?(y=n.insideFill,v=n.insideStroke,null!=y&&"auto"!==y||(y=this.getInsideTextFill()),null!=v&&"auto"!==v||(v=this.getInsideTextStroke(y),m=!0)):(y=n.outsideFill,v=n.outsideStroke,null!=y&&"auto"!==y||(y=this.getOutsideFill()),null!=v&&"auto"!==v||(v=this.getOutsideStroke(y),m=!0)),(y=y||"#000")===g.fill&&v===g.stroke&&m===g.autoStroke&&o===g.align&&a===g.verticalAlign||(s=!0,g.fill=y,g.stroke=v,g.autoStroke=m,g.align=o,g.verticalAlign=a,e.setDefaultTextStyle(g)),e.__dirty|=1,s&&e.dirtyStyle(!0)}},t.prototype.canBeInsideText=function(){return!0},t.prototype.getInsideTextFill=function(){return"#fff"},t.prototype.getInsideTextStroke=function(t){return"#000"},t.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?sr:ar},t.prototype.getOutsideStroke=function(t){var e=this.__zr&&this.__zr.getBackgroundColor(),n="string"==typeof e&&qn(e);n||(n=[255,255,255,1]);for(var i=n[3],r=this.__zr.isDarkMode(),o=0;o<3;o++)n[o]=n[o]*i+(r?0:255)*(1-i);return n[3]=1,ri(n,"rgba")},t.prototype.traverse=function(t,e){},t.prototype.attrKV=function(t,e){"textConfig"===t?this.setTextConfig(e):"textContent"===t?this.setTextContent(e):"clipPath"===t?this.setClipPath(e):"extra"===t?(this.extra=this.extra||{},A(this.extra,e)):this[t]=e},t.prototype.hide=function(){this.ignore=!0,this.markRedraw()},t.prototype.show=function(){this.ignore=!1,this.markRedraw()},t.prototype.attr=function(t,e){if("string"==typeof t)this.attrKV(t,e);else if(q(t))for(var n=G(t),i=0;i0},t.prototype.getState=function(t){return this.states[t]},t.prototype.ensureState=function(t){var e=this.states;return e[t]||(e[t]={}),e[t]},t.prototype.clearStates=function(t){this.useState(Cr,!1,t)},t.prototype.useState=function(t,e,n,i){var r=t===Cr;if(this.hasState()||!r){var o=this.currentStates,a=this.stateTransition;if(!(P(o,t)>=0)||!e&&1!==o.length){var s;if(this.stateProxy&&!r&&(s=this.stateProxy(t)),s||(s=this.states&&this.states[t]),s||r){r||this.saveCurrentToNormalState(s);var l=!!(s&&s.hoverLayer||i);l&&this._toggleHoverLayerFlag(!0),this._applyStateObj(t,s,this._normalState,e,!n&&!this.__inHover&&a&&a.duration>0,a);var u=this._textContent,h=this._textGuide;return u&&u.useState(t,e,n,l),h&&h.useState(t,e,n,l),r?(this.currentStates=[],this._normalState={}):e?this.currentStates.push(t):this.currentStates=[t],this._updateAnimationTargets(),this.markRedraw(),!l&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=-2),s}I("State "+t+" not exists.")}}},t.prototype.useStates=function(t,e,n){if(t.length){var i=[],r=this.currentStates,o=t.length,a=o===r.length;if(a)for(var s=0;s0,d);var f=this._textContent,g=this._textGuide;f&&f.useStates(t,e,c),g&&g.useStates(t,e,c),this._updateAnimationTargets(),this.currentStates=t.slice(),this.markRedraw(),!c&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=-2)}else this.clearStates()},t.prototype._updateAnimationTargets=function(){for(var t=0;t=0){var n=this.currentStates.slice();n.splice(e,1),this.useStates(n)}},t.prototype.replaceState=function(t,e,n){var i=this.currentStates.slice(),r=P(i,t),o=P(i,e)>=0;r>=0?o?i.splice(r,1):i[r]=e:n&&!o&&i.push(e),this.useStates(i)},t.prototype.toggleState=function(t,e){e?this.useState(t,!0):this.removeState(t)},t.prototype._mergeStates=function(t){for(var e,n={},i=0;i=0&&e.splice(n,1)})),this.animators.push(t),n&&n.animation.addAnimator(t),n&&n.wakeUp()},t.prototype.updateDuringAnimation=function(t){this.markRedraw()},t.prototype.stopAnimation=function(t,e){for(var n=this.animators,i=n.length,r=[],o=0;o0&&n.during&&o[0].during((function(t,e){n.during(e)}));for(var p=0;p0||r.force&&!a.length){var w,S=void 0,M=void 0,I=void 0;if(s){M={},p&&(S={});for(_=0;_=0&&(n.splice(i,0,t),this._doAdd(t))}return this},e.prototype.replace=function(t,e){var n=P(this._children,t);return n>=0&&this.replaceAt(e,n),this},e.prototype.replaceAt=function(t,e){var n=this._children,i=n[e];if(t&&t!==this&&t.parent!==this&&t!==i){n[e]=t,i.parent=null;var r=this.__zr;r&&i.removeSelfFromZr(r),this._doAdd(t)}return this},e.prototype._doAdd=function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__zr;e&&e!==t.__zr&&t.addSelfToZr(e),e&&e.refresh()},e.prototype.remove=function(t){var e=this.__zr,n=this._children,i=P(n,t);return i<0||(n.splice(i,1),t.parent=null,e&&t.removeSelfFromZr(e),e&&e.refresh()),this},e.prototype.removeAll=function(){for(var t=this._children,e=this.__zr,n=0;n0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},t.prototype.setSleepAfterStill=function(t){this._sleepAfterStill=t},t.prototype.wakeUp=function(){this.animation.start(),this._stillFrameAccum=0},t.prototype.refreshHover=function(){this._needsRefreshHover=!0},t.prototype.refreshHoverImmediately=function(){this._needsRefreshHover=!1,this.painter.refreshHover&&"canvas"===this.painter.getType()&&this.painter.refreshHover()},t.prototype.resize=function(t){t=t||{},this.painter.resize(t.width,t.height),this.handler.resize()},t.prototype.clearAnimation=function(){this.animation.clear()},t.prototype.getWidth=function(){return this.painter.getWidth()},t.prototype.getHeight=function(){return this.painter.getHeight()},t.prototype.setCursorStyle=function(t){this.handler.setCursorStyle(t)},t.prototype.findHover=function(t,e){return this.handler.findHover(t,e)},t.prototype.on=function(t,e,n){return this.handler.on(t,e,n),this},t.prototype.off=function(t,e){this.handler.off(t,e)},t.prototype.trigger=function(t,e){this.handler.trigger(t,e)},t.prototype.clear=function(){for(var t=this.storage.getRoots(),e=0;e0){if(t<=r)return a;if(t>=o)return s}else{if(t>=r)return a;if(t<=o)return s}else{if(t===r)return a;if(t===o)return s}return(t-r)/l*u+a}function Ur(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return U(t)?(n=t,n.replace(/^\s+|\s+$/g,"")).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t;var n}function Zr(t,e,n){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),n?t:+t}function jr(t){return t.sort((function(t,e){return t-e})),t}function qr(t){if(t=+t,isNaN(t))return 0;if(t>1e-14)for(var e=1,n=0;n<15;n++,e*=10)if(Math.round(t*e)/e===t)return n;return Kr(t)}function Kr(t){var e=t.toString().toLowerCase(),n=e.indexOf("e"),i=n>0?+e.slice(n+1):0,r=n>0?n:e.length,o=e.indexOf("."),a=o<0?0:r-1-o;return Math.max(0,a-i)}function $r(t,e){var n=Math.log,i=Math.LN10,r=Math.floor(n(t[1]-t[0])/i),o=Math.round(n(Math.abs(e[1]-e[0]))/i),a=Math.min(Math.max(-r+o,0),20);return isFinite(a)?a:20}function Jr(t,e){var n=V(t,(function(t,e){return t+(isNaN(e)?0:e)}),0);if(0===n)return[];for(var i=Math.pow(10,e),r=z(t,(function(t){return(isNaN(t)?0:t)/n*i*100})),o=100*i,a=z(r,(function(t){return Math.floor(t)})),s=V(a,(function(t,e){return t+e}),0),l=z(r,(function(t,e){return t-a[e]}));su&&(u=l[c],h=c);++a[h],l[h]=0,++s}return z(a,(function(t){return t/i}))}function Qr(t,e){var n=Math.max(qr(t),qr(e)),i=t+e;return n>20?i:Zr(i,n)}var to=9007199254740991;function eo(t){var e=2*Math.PI;return(t%e+e)%e}function no(t){return t>-1e-4&&t=10&&e++,e}function so(t,e){var n=ao(t),i=Math.pow(10,n),r=t/i;return t=(e?r<1.5?1:r<2.5?2:r<4?3:r<7?5:10:r<1?1:r<2?2:r<3?3:r<5?5:10)*i,n>=-20?+t.toFixed(n<0?-n:0):t}function lo(t,e){var n=(t.length-1)*e+1,i=Math.floor(n),r=+t[i-1],o=n-i;return o?r+o*(t[i]-r):r}function uo(t){t.sort((function(t,e){return s(t,e,0)?-1:1}));for(var e=-1/0,n=1,i=0;i=0||r&&P(r,s)<0)){var l=n.getShallow(s,e);null!=l&&(o[t[a][0]]=l)}}return o}}var Qo=Jo([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),ta=function(){function t(){}return t.prototype.getAreaStyle=function(t,e){return Qo(this,t,e)},t}(),ea=new En(50);function na(t){if("string"==typeof t){var e=ea.get(t);return e&&e.image}return t}function ia(t,e,n,i,r){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!n)return e;var o=ea.get(t),a={hostEl:n,cb:i,cbPayload:r};return o?!oa(e=o.image)&&o.pending.push(a):((e=h.loadImage(t,ra,ra)).__zrImageSrc=t,ea.put(t,e.__cachedImgObj={image:e,pending:[a]})),e}return t}return e}function ra(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;e=a;l++)s-=a;var u=xr(n,e);return u>s&&(n="",u=0),s=t-u,r.ellipsis=n,r.ellipsisWidth=u,r.contentWidth=s,r.containerWidth=t,r}function ua(t,e){var n=e.containerWidth,i=e.font,r=e.contentWidth;if(!n)return"";var o=xr(t,i);if(o<=n)return t;for(var a=0;;a++){if(o<=r||a>=e.maxIterations){t+=e.ellipsis;break}var s=0===a?ha(t,r,e.ascCharWidth,e.cnCharWidth):o>0?Math.floor(t.length*r/o):0;o=xr(t=t.substr(0,s),i)}return""===t&&(t=e.placeholder),t}function ha(t,e,n,i){for(var r=0,o=0,a=t.length;o0&&f+i.accumWidth>i.width&&(o=e.split("\n"),c=!0),i.accumWidth=f}else{var g=va(e,h,i.width,i.breakAll,i.accumWidth);i.accumWidth=g.accumWidth+d,a=g.linesWidths,o=g.lines}}else o=e.split("\n");for(var y=0;y=32&&e<=591||e>=880&&e<=4351||e>=4608&&e<=5119||e>=7680&&e<=8303}(t)||!!ga[t]}function va(t,e,n,i,r){for(var o=[],a=[],s="",l="",u=0,h=0,c=0;cn:r+h+d>n)?h?(s||l)&&(f?(s||(s=l,l="",h=u=0),o.push(s),a.push(h-u),l+=p,s="",h=u+=d):(l&&(s+=l,l="",u=0),o.push(s),a.push(h),s=p,h=d)):f?(o.push(l),a.push(u),l=p,u=d):(o.push(p),a.push(d)):(h+=d,f?(l+=p,u+=d):(l&&(s+=l,l="",u=0),s+=p))}else l&&(s+=l,h+=u),o.push(s),a.push(h),s="",l="",u=0,h=0}return o.length||s||(s=t,l="",u=0),l&&(s+=l),s&&(o.push(s),a.push(h)),1===o.length&&(h+=r),{accumWidth:h,lines:o,linesWidths:a}}var ma="__zr_style_"+Math.round(10*Math.random()),xa={shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"#000",opacity:1,blend:"source-over"},_a={style:{shadowBlur:!0,shadowOffsetX:!0,shadowOffsetY:!0,shadowColor:!0,opacity:!0}};xa[ma]=!0;var ba=["z","z2","invisible"],wa=["invisible"],Sa=function(t){function e(e){return t.call(this,e)||this}var i;return n(e,t),e.prototype._init=function(e){for(var n=G(e),i=0;i1e-4)return s[0]=t-n,s[1]=e-i,l[0]=t+n,void(l[1]=e+i);if(La[0]=Aa(r)*n+t,La[1]=Da(r)*i+e,Pa[0]=Aa(o)*n+t,Pa[1]=Da(o)*i+e,u(s,La,Pa),h(l,La,Pa),(r%=ka)<0&&(r+=ka),(o%=ka)<0&&(o+=ka),r>o&&!a?o+=ka:rr&&(Oa[0]=Aa(d)*n+t,Oa[1]=Da(d)*i+e,u(s,Oa,s),h(l,Oa,l))}var Ga={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},Wa=[],Ha=[],Ya=[],Xa=[],Ua=[],Za=[],ja=Math.min,qa=Math.max,Ka=Math.cos,$a=Math.sin,Ja=Math.abs,Qa=Math.PI,ts=2*Qa,es="undefined"!=typeof Float32Array,ns=[];function is(t){return Math.round(t/Qa*1e8)/1e8%2*Qa}function rs(t,e){var n=is(t[0]);n<0&&(n+=ts);var i=n-t[0],r=t[1];r+=i,!e&&r-n>=ts?r=n+ts:e&&n-r>=ts?r=n-ts:!e&&n>r?r=n+(ts-is(n-r)):e&&n0&&(this._ux=Ja(n/or/t)||0,this._uy=Ja(n/or/e)||0)},t.prototype.setDPR=function(t){this.dpr=t},t.prototype.setContext=function(t){this._ctx=t},t.prototype.getContext=function(){return this._ctx},t.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},t.prototype.reset=function(){this._saveData&&(this._len=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},t.prototype.moveTo=function(t,e){return this._drawPendingPt(),this.addData(Ga.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},t.prototype.lineTo=function(t,e){var n=Ja(t-this._xi),i=Ja(e-this._yi),r=n>this._ux||i>this._uy;if(this.addData(Ga.L,t,e),this._ctx&&r&&this._ctx.lineTo(t,e),r)this._xi=t,this._yi=e,this._pendingPtDist=0;else{var o=n*n+i*i;o>this._pendingPtDist&&(this._pendingPtX=t,this._pendingPtY=e,this._pendingPtDist=o)}return this},t.prototype.bezierCurveTo=function(t,e,n,i,r,o){return this._drawPendingPt(),this.addData(Ga.C,t,e,n,i,r,o),this._ctx&&this._ctx.bezierCurveTo(t,e,n,i,r,o),this._xi=r,this._yi=o,this},t.prototype.quadraticCurveTo=function(t,e,n,i){return this._drawPendingPt(),this.addData(Ga.Q,t,e,n,i),this._ctx&&this._ctx.quadraticCurveTo(t,e,n,i),this._xi=n,this._yi=i,this},t.prototype.arc=function(t,e,n,i,r,o){this._drawPendingPt(),ns[0]=i,ns[1]=r,rs(ns,o),i=ns[0];var a=(r=ns[1])-i;return this.addData(Ga.A,t,e,n,n,i,a,0,o?0:1),this._ctx&&this._ctx.arc(t,e,n,i,r,o),this._xi=Ka(r)*n+t,this._yi=$a(r)*n+e,this},t.prototype.arcTo=function(t,e,n,i,r){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(t,e,n,i,r),this},t.prototype.rect=function(t,e,n,i){return this._drawPendingPt(),this._ctx&&this._ctx.rect(t,e,n,i),this.addData(Ga.R,t,e,n,i),this},t.prototype.closePath=function(){this._drawPendingPt(),this.addData(Ga.Z);var t=this._ctx,e=this._x0,n=this._y0;return t&&t.closePath(),this._xi=e,this._yi=n,this},t.prototype.fill=function(t){t&&t.fill(),this.toStatic()},t.prototype.stroke=function(t){t&&t.stroke(),this.toStatic()},t.prototype.len=function(){return this._len},t.prototype.setData=function(t){var e=t.length;this.data&&this.data.length===e||!es||(this.data=new Float32Array(e));for(var n=0;nu.length&&(this._expandData(),u=this.data);for(var h=0;h0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},t.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var t=[],e=0;e11&&(this.data=new Float32Array(t)))}},t.prototype.getBoundingRect=function(){Ya[0]=Ya[1]=Ua[0]=Ua[1]=Number.MAX_VALUE,Xa[0]=Xa[1]=Za[0]=Za[1]=-Number.MAX_VALUE;var t,e=this.data,n=0,i=0,r=0,o=0;for(t=0;tn||Ja(y)>i||c===e-1)&&(f=Math.sqrt(A*A+y*y),r=g,o=x);break;case Ga.C:var v=t[c++],m=t[c++],x=(g=t[c++],t[c++]),_=t[c++],b=t[c++];f=Mn(r,o,v,m,g,x,_,b,10),r=_,o=b;break;case Ga.Q:f=kn(r,o,v=t[c++],m=t[c++],g=t[c++],x=t[c++],10),r=g,o=x;break;case Ga.A:var w=t[c++],S=t[c++],M=t[c++],I=t[c++],T=t[c++],C=t[c++],D=C+T;c+=1;t[c++];d&&(a=Ka(T)*M+w,s=$a(T)*I+S),f=qa(M,I)*ja(ts,Math.abs(C)),r=Ka(D)*M+w,o=$a(D)*I+S;break;case Ga.R:a=r=t[c++],s=o=t[c++],f=2*t[c++]+2*t[c++];break;case Ga.Z:var A=a-r;y=s-o;f=Math.sqrt(A*A+y*y),r=a,o=s}f>=0&&(l[h++]=f,u+=f)}return this._pathLen=u,u},t.prototype.rebuildPath=function(t,e){var n,i,r,o,a,s,l,u,h,c,p=this.data,d=this._ux,f=this._uy,g=this._len,y=e<1,v=0,m=0,x=0;if(!y||(this._pathSegLen||this._calculateLength(),l=this._pathSegLen,u=e*this._pathLen))t:for(var _=0;_0&&(t.lineTo(h,c),x=0),b){case Ga.M:n=r=p[_++],i=o=p[_++],t.moveTo(r,o);break;case Ga.L:a=p[_++],s=p[_++];var S=Ja(a-r),M=Ja(s-o);if(S>d||M>f){if(y){if(v+(j=l[m++])>u){var I=(u-v)/j;t.lineTo(r*(1-I)+a*I,o*(1-I)+s*I);break t}v+=j}t.lineTo(a,s),r=a,o=s,x=0}else{var T=S*S+M*M;T>x&&(h=a,c=s,x=T)}break;case Ga.C:var C=p[_++],D=p[_++],A=p[_++],k=p[_++],L=p[_++],P=p[_++];if(y){if(v+(j=l[m++])>u){wn(r,C,A,L,I=(u-v)/j,Wa),wn(o,D,k,P,I,Ha),t.bezierCurveTo(Wa[1],Ha[1],Wa[2],Ha[2],Wa[3],Ha[3]);break t}v+=j}t.bezierCurveTo(C,D,A,k,L,P),r=L,o=P;break;case Ga.Q:C=p[_++],D=p[_++],A=p[_++],k=p[_++];if(y){if(v+(j=l[m++])>u){Dn(r,C,A,I=(u-v)/j,Wa),Dn(o,D,k,I,Ha),t.quadraticCurveTo(Wa[1],Ha[1],Wa[2],Ha[2]);break t}v+=j}t.quadraticCurveTo(C,D,A,k),r=A,o=k;break;case Ga.A:var O=p[_++],R=p[_++],N=p[_++],E=p[_++],z=p[_++],V=p[_++],B=p[_++],F=!p[_++],G=N>E?N:E,W=Ja(N-E)>.001,H=z+V,Y=!1;if(y)v+(j=l[m++])>u&&(H=z+V*(u-v)/j,Y=!0),v+=j;if(W&&t.ellipse?t.ellipse(O,R,N,E,B,z,H,F):t.arc(O,R,G,z,H,F),Y)break t;w&&(n=Ka(z)*N+O,i=$a(z)*E+R),r=Ka(H)*N+O,o=$a(H)*E+R;break;case Ga.R:n=r=p[_],i=o=p[_+1],a=p[_++],s=p[_++];var X=p[_++],U=p[_++];if(y){if(v+(j=l[m++])>u){var Z=u-v;t.moveTo(a,s),t.lineTo(a+ja(Z,X),s),(Z-=X)>0&&t.lineTo(a+X,s+ja(Z,U)),(Z-=U)>0&&t.lineTo(a+qa(X-Z,0),s+U),(Z-=X)>0&&t.lineTo(a,s+qa(U-Z,0));break t}v+=j}t.rect(a,s,X,U);break;case Ga.Z:if(y){var j;if(v+(j=l[m++])>u){I=(u-v)/j;t.lineTo(r*(1-I)+n*I,o*(1-I)+i*I);break t}v+=j}t.closePath(),r=n,o=i}}},t.prototype.clone=function(){var e=new t,n=this.data;return e.data=n.slice?n.slice():Array.prototype.slice.call(n),e._len=this._len,e},t.CMD=Ga,t.initDefaultProps=function(){var e=t.prototype;e._saveData=!0,e._ux=0,e._uy=0,e._pendingPtDist=0,e._version=0}(),t}();function as(t,e,n,i,r,o,a){if(0===r)return!1;var s=r,l=0;if(a>e+s&&a>i+s||at+s&&o>n+s||oe+c&&h>i+c&&h>o+c&&h>s+c||ht+c&&u>n+c&&u>r+c&&u>a+c||ue+u&&l>i+u&&l>o+u||lt+u&&s>n+u&&s>r+u||sn||h+ur&&(r+=cs);var p=Math.atan2(l,s);return p<0&&(p+=cs),p>=i&&p<=r||p+cs>=i&&p+cs<=r}function ds(t,e,n,i,r,o){if(o>e&&o>i||or?s:0}var fs=os.CMD,gs=2*Math.PI;var ys=[-1,-1,-1],vs=[-1,-1];function ms(t,e,n,i,r,o,a,s,l,u){if(u>e&&u>i&&u>o&&u>s||u1&&(h=void 0,h=vs[0],vs[0]=vs[1],vs[1]=h),f=mn(e,i,o,s,vs[0]),d>1&&(g=mn(e,i,o,s,vs[1]))),2===d?ve&&s>i&&s>o||s=0&&h<=1&&(r[l++]=h);else{var u=a*a-4*o*s;if(yn(u))(h=-a/(2*o))>=0&&h<=1&&(r[l++]=h);else if(u>0){var h,c=ln(u),p=(-a-c)/(2*o);(h=(-a+c)/(2*o))>=0&&h<=1&&(r[l++]=h),p>=0&&p<=1&&(r[l++]=p)}}return l}(e,i,o,s,ys);if(0===l)return 0;var u=Cn(e,i,o);if(u>=0&&u<=1){for(var h=0,c=In(e,i,o,u),p=0;pn||s<-n)return 0;var l=Math.sqrt(n*n-s*s);ys[0]=-l,ys[1]=l;var u=Math.abs(i-r);if(u<1e-4)return 0;if(u>=gs-1e-4){i=0,r=gs;var h=o?1:-1;return a>=ys[0]+t&&a<=ys[1]+t?h:0}if(i>r){var c=i;i=r,r=c}i<0&&(i+=gs,r+=gs);for(var p=0,d=0;d<2;d++){var f=ys[d];if(f+t>a){var g=Math.atan2(s,f);h=o?1:-1;g<0&&(g=gs+g),(g>=i&&g<=r||g+gs>=i&&g+gs<=r)&&(g>Math.PI/2&&g<1.5*Math.PI&&(h=-h),p+=h)}}return p}function bs(t,e,n,i,r){for(var o,a,s,l,u=t.data,h=t.len(),c=0,p=0,d=0,f=0,g=0,y=0;y1&&(n||(c+=ds(p,d,f,g,i,r))),m&&(f=p=u[y],g=d=u[y+1]),v){case fs.M:p=f=u[y++],d=g=u[y++];break;case fs.L:if(n){if(as(p,d,u[y],u[y+1],e,i,r))return!0}else c+=ds(p,d,u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case fs.C:if(n){if(ss(p,d,u[y++],u[y++],u[y++],u[y++],u[y],u[y+1],e,i,r))return!0}else c+=ms(p,d,u[y++],u[y++],u[y++],u[y++],u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case fs.Q:if(n){if(ls(p,d,u[y++],u[y++],u[y],u[y+1],e,i,r))return!0}else c+=xs(p,d,u[y++],u[y++],u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case fs.A:var x=u[y++],_=u[y++],b=u[y++],w=u[y++],S=u[y++],M=u[y++];y+=1;var I=!!(1-u[y++]);o=Math.cos(S)*b+x,a=Math.sin(S)*w+_,m?(f=o,g=a):c+=ds(p,d,o,a,i,r);var T=(i-x)*w/b+x;if(n){if(ps(x,_,w,S,S+M,I,e,T,r))return!0}else c+=_s(x,_,w,S,S+M,I,T,r);p=Math.cos(S+M)*b+x,d=Math.sin(S+M)*w+_;break;case fs.R:if(f=p=u[y++],g=d=u[y++],o=f+u[y++],a=g+u[y++],n){if(as(f,g,o,g,e,i,r)||as(o,g,o,a,e,i,r)||as(o,a,f,a,e,i,r)||as(f,a,f,g,e,i,r))return!0}else c+=ds(o,g,o,a,i,r),c+=ds(f,a,f,g,i,r);break;case fs.Z:if(n){if(as(p,d,f,g,e,i,r))return!0}else c+=ds(p,d,f,g,i,r);p=f,d=g}}return n||(s=d,l=g,Math.abs(s-l)<1e-4)||(c+=ds(p,d,f,g,i,r)||0),0!==c}var ws=k({fill:"#000",stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:"butt",miterLimit:10,strokeNoScale:!1,strokeFirst:!1},xa),Ss={style:k({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},_a.style)},Ms=yr.concat(["invisible","culling","z","z2","zlevel","parent"]),Is=function(t){function e(e){return t.call(this,e)||this}var i;return n(e,t),e.prototype.update=function(){var n=this;t.prototype.update.call(this);var i=this.style;if(i.decal){var r=this._decalEl=this._decalEl||new e;r.buildPath===e.prototype.buildPath&&(r.buildPath=function(t){n.buildPath(t,n.shape)}),r.silent=!0;var o=r.style;for(var a in i)o[a]!==i[a]&&(o[a]=i[a]);o.fill=i.fill?i.decal:null,o.decal=null,o.shadowColor=null,i.strokeFirst&&(o.stroke=null);for(var s=0;s.5?ar:e>.2?"#eee":sr}if(t)return sr}return ar},e.prototype.getInsideTextStroke=function(t){var e=this.style.fill;if(U(e)){var n=this.__zr;if(!(!n||!n.isDarkMode())===oi(t,0)<.4)return e}},e.prototype.buildPath=function(t,e,n){},e.prototype.pathUpdated=function(){this.__dirty&=-5},e.prototype.getUpdatedPathProxy=function(t){return!this.path&&this.createPathProxy(),this.path.beginPath(),this.buildPath(this.path,this.shape,t),this.path},e.prototype.createPathProxy=function(){this.path=new os(!1)},e.prototype.hasStroke=function(){var t=this.style,e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth>0))},e.prototype.hasFill=function(){var t=this.style.fill;return null!=t&&"none"!==t},e.prototype.getBoundingRect=function(){var t=this._rect,e=this.style,n=!t;if(n){var i=!1;this.path||(i=!0,this.createPathProxy());var r=this.path;(i||4&this.__dirty)&&(r.beginPath(),this.buildPath(r,this.shape,!1),this.pathUpdated()),t=r.getBoundingRect()}if(this._rect=t,this.hasStroke()&&this.path&&this.path.len()>0){var o=this._rectStroke||(this._rectStroke=t.clone());if(this.__dirty||n){o.copy(t);var a=e.strokeNoScale?this.getLineScale():1,s=e.lineWidth;if(!this.hasFill()){var l=this.strokeContainThreshold;s=Math.max(s,null==l?4:l)}a>1e-10&&(o.width+=s/a,o.height+=s/a,o.x-=s/a/2,o.y-=s/a/2)}return o}return t},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect(),r=this.style;if(t=n[0],e=n[1],i.contain(t,e)){var o=this.path;if(this.hasStroke()){var a=r.lineWidth,s=r.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(this.hasFill()||(a=Math.max(a,this.strokeContainThreshold)),function(t,e,n,i){return bs(t,e,!0,n,i)}(o,a/s,t,e)))return!0}if(this.hasFill())return function(t,e,n){return bs(t,0,!1,e,n)}(o,t,e)}return!1},e.prototype.dirtyShape=function(){this.__dirty|=4,this._rect&&(this._rect=null),this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},e.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},e.prototype.animateShape=function(t){return this.animate("shape",t)},e.prototype.updateDuringAnimation=function(t){"style"===t?this.dirtyStyle():"shape"===t?this.dirtyShape():this.markRedraw()},e.prototype.attrKV=function(e,n){"shape"===e?this.setShape(n):t.prototype.attrKV.call(this,e,n)},e.prototype.setShape=function(t,e){var n=this.shape;return n||(n=this.shape={}),"string"==typeof t?n[t]=e:A(n,t),this.dirtyShape(),this},e.prototype.shapeChanged=function(){return!!(4&this.__dirty)},e.prototype.createStyle=function(t){return mt(ws,t)},e.prototype._innerSaveToNormal=function(e){t.prototype._innerSaveToNormal.call(this,e);var n=this._normalState;e.shape&&!n.shape&&(n.shape=A({},this.shape))},e.prototype._applyStateObj=function(e,n,i,r,o,a){t.prototype._applyStateObj.call(this,e,n,i,r,o,a);var s,l=!(n&&r);if(n&&n.shape?o?r?s=n.shape:(s=A({},i.shape),A(s,n.shape)):(s=A({},r?this.shape:i.shape),A(s,n.shape)):l&&(s=i.shape),s)if(o){this.shape=A({},this.shape);for(var u={},h=G(s),c=0;c0},e.prototype.hasFill=function(){var t=this.style.fill;return null!=t&&"none"!==t},e.prototype.createStyle=function(t){return mt(Ts,t)},e.prototype.setBoundingRect=function(t){this._rect=t},e.prototype.getBoundingRect=function(){var t=this.style;if(!this._rect){var e=t.text;null!=e?e+="":e="";var n=br(e,t.font,t.textAlign,t.textBaseline);if(n.x+=t.x||0,n.y+=t.y||0,this.hasStroke()){var i=t.lineWidth;n.x-=i/2,n.y-=i/2,n.width+=i,n.height+=i}this._rect=n}return this._rect},e.initDefaultProps=void(e.prototype.dirtyRectTolerance=10),e}(Sa);Cs.prototype.type="tspan";var Ds=k({x:0,y:0},xa),As={style:k({x:!0,y:!0,width:!0,height:!0,sx:!0,sy:!0,sWidth:!0,sHeight:!0},_a.style)};var ks=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.createStyle=function(t){return mt(Ds,t)},e.prototype._getSize=function(t){var e=this.style,n=e[t];if(null!=n)return n;var i,r=(i=e.image)&&"string"!=typeof i&&i.width&&i.height?e.image:this.__image;if(!r)return 0;var o="width"===t?"height":"width",a=e[o];return null==a?r[t]:r[t]/r[o]*a},e.prototype.getWidth=function(){return this._getSize("width")},e.prototype.getHeight=function(){return this._getSize("height")},e.prototype.getAnimationStyleProps=function(){return As},e.prototype.getBoundingRect=function(){var t=this.style;return this._rect||(this._rect=new ze(t.x||0,t.y||0,this.getWidth(),this.getHeight())),this._rect},e}(Sa);ks.prototype.type="image";var Ls=Math.round;function Ps(t,e,n){if(e){var i=e.x1,r=e.x2,o=e.y1,a=e.y2;t.x1=i,t.x2=r,t.y1=o,t.y2=a;var s=n&&n.lineWidth;return s?(Ls(2*i)===Ls(2*r)&&(t.x1=t.x2=Rs(i,s,!0)),Ls(2*o)===Ls(2*a)&&(t.y1=t.y2=Rs(o,s,!0)),t):t}}function Os(t,e,n){if(e){var i=e.x,r=e.y,o=e.width,a=e.height;t.x=i,t.y=r,t.width=o,t.height=a;var s=n&&n.lineWidth;return s?(t.x=Rs(i,s,!0),t.y=Rs(r,s,!0),t.width=Math.max(Rs(i+o,s,!1)-t.x,0===o?0:1),t.height=Math.max(Rs(r+a,s,!1)-t.y,0===a?0:1),t):t}}function Rs(t,e,n){if(!e)return t;var i=Ls(2*t);return(i+Ls(e))%2==0?i/2:(i+(n?1:-1))/2}var Ns=function(){this.x=0,this.y=0,this.width=0,this.height=0},Es={},zs=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Ns},e.prototype.buildPath=function(t,e){var n,i,r,o;if(this.subPixelOptimize){var a=Os(Es,e,this.style);n=a.x,i=a.y,r=a.width,o=a.height,a.r=e.r,e=a}else n=e.x,i=e.y,r=e.width,o=e.height;e.r?function(t,e){var n,i,r,o,a,s=e.x,l=e.y,u=e.width,h=e.height,c=e.r;u<0&&(s+=u,u=-u),h<0&&(l+=h,h=-h),"number"==typeof c?n=i=r=o=c:c instanceof Array?1===c.length?n=i=r=o=c[0]:2===c.length?(n=r=c[0],i=o=c[1]):3===c.length?(n=c[0],i=o=c[1],r=c[2]):(n=c[0],i=c[1],r=c[2],o=c[3]):n=i=r=o=0,n+i>u&&(n*=u/(a=n+i),i*=u/a),r+o>u&&(r*=u/(a=r+o),o*=u/a),i+r>h&&(i*=h/(a=i+r),r*=h/a),n+o>h&&(n*=h/(a=n+o),o*=h/a),t.moveTo(s+n,l),t.lineTo(s+u-i,l),0!==i&&t.arc(s+u-i,l+i,i,-Math.PI/2,0),t.lineTo(s+u,l+h-r),0!==r&&t.arc(s+u-r,l+h-r,r,0,Math.PI/2),t.lineTo(s+o,l+h),0!==o&&t.arc(s+o,l+h-o,o,Math.PI/2,Math.PI),t.lineTo(s,l+n),0!==n&&t.arc(s+n,l+n,n,Math.PI,1.5*Math.PI)}(t,e):t.rect(n,i,r,o)},e.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},e}(Is);zs.prototype.type="rect";var Vs={fill:"#000"},Bs={style:k({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},_a.style)},Fs=function(t){function e(e){var n=t.call(this)||this;return n.type="text",n._children=[],n._defaultStyle=Vs,n.attr(e),n}return n(e,t),e.prototype.childrenRef=function(){return this._children},e.prototype.update=function(){t.prototype.update.call(this),this.styleChanged()&&this._updateSubTexts();for(var e=0;ed&&h){var f=Math.floor(d/l);n=n.slice(0,f)}if(t&&a&&null!=c)for(var g=la(c,o,e.ellipsis,{minChar:e.truncateMinChar,placeholder:e.placeholder}),y=0;y0,T=null!=t.width&&("truncate"===t.overflow||"break"===t.overflow||"breakAll"===t.overflow),C=i.calculatedLineHeight,D=0;Dl&&fa(n,t.substring(l,u),e,s),fa(n,i[2],e,s,i[1]),l=aa.lastIndex}lo){b>0?(m.tokens=m.tokens.slice(0,b),y(m,_,x),n.lines=n.lines.slice(0,v+1)):n.lines=n.lines.slice(0,v);break t}var C=w.width,D=null==C||"auto"===C;if("string"==typeof C&&"%"===C.charAt(C.length-1))P.percentWidth=C,h.push(P),P.contentWidth=xr(P.text,I);else{if(D){var A=w.backgroundColor,k=A&&A.image;k&&oa(k=na(k))&&(P.width=Math.max(P.width,k.width*T/k.height))}var L=f&&null!=r?r-_:null;null!=L&&L=0&&"right"===(C=x[T]).align;)this._placeToken(C,t,b,f,I,"right",y),w-=C.width,I-=C.width,T--;for(M+=(n-(M-d)-(g-I)-w)/2;S<=T;)C=x[S],this._placeToken(C,t,b,f,M+C.width/2,"center",y),M+=C.width,S++;f+=b}},e.prototype._placeToken=function(t,e,n,i,r,o,s){var l=e.rich[t.styleName]||{};l.text=t.text;var u=t.verticalAlign,h=i+n/2;"top"===u?h=i+t.height/2:"bottom"===u&&(h=i+n-t.height/2),!t.isLineHolder&&Js(l)&&this._renderBackground(l,e,"right"===o?r-t.width:"center"===o?r-t.width/2:r,h-t.height/2,t.width,t.height);var c=!!l.backgroundColor,p=t.textPadding;p&&(r=Ks(r,o,p),h-=t.height/2-p[0]-t.innerHeight/2);var d=this._getOrCreateChild(Cs),f=d.createStyle();d.useStyle(f);var g=this._defaultStyle,y=!1,v=0,m=qs("fill"in l?l.fill:"fill"in e?e.fill:(y=!0,g.fill)),x=js("stroke"in l?l.stroke:"stroke"in e?e.stroke:c||s||g.autoStroke&&!y?null:(v=2,g.stroke)),_=l.textShadowBlur>0||e.textShadowBlur>0;f.text=t.text,f.x=r,f.y=h,_&&(f.shadowBlur=l.textShadowBlur||e.textShadowBlur||0,f.shadowColor=l.textShadowColor||e.textShadowColor||"transparent",f.shadowOffsetX=l.textShadowOffsetX||e.textShadowOffsetX||0,f.shadowOffsetY=l.textShadowOffsetY||e.textShadowOffsetY||0),f.textAlign=o,f.textBaseline="middle",f.font=t.font||a,f.opacity=ot(l.opacity,e.opacity,1),Xs(f,l),x&&(f.lineWidth=ot(l.lineWidth,e.lineWidth,v),f.lineDash=rt(l.lineDash,e.lineDash),f.lineDashOffset=e.lineDashOffset||0,f.stroke=x),m&&(f.fill=m);var b=t.contentWidth,w=t.contentHeight;d.setBoundingRect(new ze(wr(f.x,b,f.textAlign),Sr(f.y,w,f.textBaseline),b,w))},e.prototype._renderBackground=function(t,e,n,i,r,o){var a,s,l,u=t.backgroundColor,h=t.borderWidth,c=t.borderColor,p=u&&u.image,d=u&&!p,f=t.borderRadius,g=this;if(d||t.lineHeight||h&&c){(a=this._getOrCreateChild(zs)).useStyle(a.createStyle()),a.style.fill=null;var y=a.shape;y.x=n,y.y=i,y.width=r,y.height=o,y.r=f,a.dirtyShape()}if(d)(l=a.style).fill=u||null,l.fillOpacity=rt(t.fillOpacity,1);else if(p){(s=this._getOrCreateChild(ks)).onload=function(){g.dirtyStyle()};var v=s.style;v.image=u.image,v.x=n,v.y=i,v.width=r,v.height=o}h&&c&&((l=a.style).lineWidth=h,l.stroke=c,l.strokeOpacity=rt(t.strokeOpacity,1),l.lineDash=t.borderDash,l.lineDashOffset=t.borderDashOffset||0,a.strokeContainThreshold=0,a.hasFill()&&a.hasStroke()&&(l.strokeFirst=!0,l.lineWidth*=2));var m=(a||s).style;m.shadowBlur=t.shadowBlur||0,m.shadowColor=t.shadowColor||"transparent",m.shadowOffsetX=t.shadowOffsetX||0,m.shadowOffsetY=t.shadowOffsetY||0,m.opacity=ot(t.opacity,e.opacity,1)},e.makeFont=function(t){var e="";return Us(t)&&(e=[t.fontStyle,t.fontWeight,Ys(t.fontSize),t.fontFamily||"sans-serif"].join(" ")),e&&ut(e)||t.textFont||t.font},e}(Sa),Gs={left:!0,right:1,center:1},Ws={top:1,bottom:1,middle:1},Hs=["fontStyle","fontWeight","fontSize","fontFamily"];function Ys(t){return"string"!=typeof t||-1===t.indexOf("px")&&-1===t.indexOf("rem")&&-1===t.indexOf("em")?isNaN(+t)?"12px":t+"px":t}function Xs(t,e){for(var n=0;n=0,o=!1;if(t instanceof Is){var a=il(t),s=r&&a.selectFill||a.normalFill,l=r&&a.selectStroke||a.normalStroke;if(dl(s)||dl(l)){var u=(i=i||{}).style||{};"inherit"===u.fill?(o=!0,i=A({},i),(u=A({},u)).fill=s):!dl(u.fill)&&dl(s)?(o=!0,i=A({},i),(u=A({},u)).fill=gl(s)):!dl(u.stroke)&&dl(l)&&(o||(i=A({},i),u=A({},u)),u.stroke=gl(l)),i.style=u}}if(i&&null==i.z2){o||(i=A({},i));var h=t.z2EmphasisLift;i.z2=t.z2+(null!=h?h:sl)}return i}(this,0,e,n);if("blur"===t)return function(t,e,n){var i=P(t.currentStates,e)>=0,r=t.style.opacity,o=i?null:function(t,e,n,i){for(var r=t.style,o={},a=0;a0){var o={dataIndex:r,seriesIndex:t.seriesIndex};null!=i&&(o.dataType=i),e.push(o)}}))})),e}function Hl(t,e,n){ql(t,!0),Ml(t,Cl),Xl(t,e,n)}function Yl(t,e,n,i){i?function(t){ql(t,!1)}(t):Hl(t,e,n)}function Xl(t,e,n){var i=Qs(t);null!=e?(i.focus=e,i.blurScope=n):i.focus&&(i.focus=null)}var Ul=["emphasis","blur","select"],Zl={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"};function jl(t,e,n,i){n=n||"itemStyle";for(var r=0;r1&&(a*=ru(f),s*=ru(f));var g=(r===o?-1:1)*ru((a*a*(s*s)-a*a*(d*d)-s*s*(p*p))/(a*a*(d*d)+s*s*(p*p)))||0,y=g*a*d/s,v=g*-s*p/a,m=(t+n)/2+au(c)*y-ou(c)*v,x=(e+i)/2+ou(c)*y+au(c)*v,_=hu([1,0],[(p-y)/a,(d-v)/s]),b=[(p-y)/a,(d-v)/s],w=[(-1*p-y)/a,(-1*d-v)/s],S=hu(b,w);if(uu(b,w)<=-1&&(S=su),uu(b,w)>=1&&(S=0),S<0){var M=Math.round(S/su*1e6)/1e6;S=2*su+M%2*su}h.addData(u,m,x,a,s,_,S,c,o)}var pu=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,du=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;var fu=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.applyTransform=function(t){},e}(Is);function gu(t){return null!=t.setData}function yu(t,e){var n=function(t){var e=new os;if(!t)return e;var n,i=0,r=0,o=i,a=r,s=os.CMD,l=t.match(pu);if(!l)return e;for(var u=0;uk*k+L*L&&(M=T,I=C),{cx:M,cy:I,x0:-h,y0:-c,x1:M*(r/b-1),y1:I*(r/b-1)}}function Nu(t,e){var n,i=Lu(e.r,0),r=Lu(e.r0||0,0),o=i>0;if(o||r>0){if(o||(i=r,r=0),r>i){var a=i;i=r,r=a}var s=e.startAngle,l=e.endAngle;if(!isNaN(s)&&!isNaN(l)){var u=e.cx,h=e.cy,c=!!e.clockwise,p=Au(l-s),d=p>Mu&&p%Mu;if(d>Ou&&(p=d),i>Ou)if(p>Mu-Ou)t.moveTo(u+i*Tu(s),h+i*Iu(s)),t.arc(u,h,i,s,l,!c),r>Ou&&(t.moveTo(u+r*Tu(l),h+r*Iu(l)),t.arc(u,h,r,l,s,c));else{var f=void 0,g=void 0,y=void 0,v=void 0,m=void 0,x=void 0,_=void 0,b=void 0,w=void 0,S=void 0,M=void 0,I=void 0,T=void 0,C=void 0,D=void 0,A=void 0,k=i*Tu(s),L=i*Iu(s),P=r*Tu(l),O=r*Iu(l),R=p>Ou;if(R){var N=e.cornerRadius;N&&(n=function(t){var e;if(Y(t)){var n=t.length;if(!n)return t;e=1===n?[t[0],t[0],0,0]:2===n?[t[0],t[0],t[1],t[1]]:3===n?t.concat(t[2]):t}else e=[t,t,t,t];return e}(N),f=n[0],g=n[1],y=n[2],v=n[3]);var E=Au(i-r)/2;if(m=Pu(E,y),x=Pu(E,v),_=Pu(E,f),b=Pu(E,g),M=w=Lu(m,x),I=S=Lu(_,b),(w>Ou||S>Ou)&&(T=i*Tu(l),C=i*Iu(l),D=r*Tu(s),A=r*Iu(s),pOu){var X=Pu(y,M),U=Pu(v,M),Z=Ru(D,A,k,L,i,X,c),j=Ru(T,C,P,O,i,U,c);t.moveTo(u+Z.cx+Z.x0,h+Z.cy+Z.y0),M0&&t.arc(u+Z.cx,h+Z.cy,X,Du(Z.y0,Z.x0),Du(Z.y1,Z.x1),!c),t.arc(u,h,i,Du(Z.cy+Z.y1,Z.cx+Z.x1),Du(j.cy+j.y1,j.cx+j.x1),!c),U>0&&t.arc(u+j.cx,h+j.cy,U,Du(j.y1,j.x1),Du(j.y0,j.x0),!c))}else t.moveTo(u+k,h+L),t.arc(u,h,i,s,l,!c);else t.moveTo(u+k,h+L);if(r>Ou&&R)if(I>Ou){X=Pu(f,I),Z=Ru(P,O,T,C,r,-(U=Pu(g,I)),c),j=Ru(k,L,D,A,r,-X,c);t.lineTo(u+Z.cx+Z.x0,h+Z.cy+Z.y0),I0&&t.arc(u+Z.cx,h+Z.cy,U,Du(Z.y0,Z.x0),Du(Z.y1,Z.x1),!c),t.arc(u,h,r,Du(Z.cy+Z.y1,Z.cx+Z.x1),Du(j.cy+j.y1,j.cx+j.x1),c),X>0&&t.arc(u+j.cx,h+j.cy,X,Du(j.y1,j.x1),Du(j.y0,j.x0),!c))}else t.lineTo(u+P,h+O),t.arc(u,h,r,l,s,c);else t.lineTo(u+P,h+O)}else t.moveTo(u,h);t.closePath()}}}var Eu=function(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0,this.cornerRadius=0},zu=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Eu},e.prototype.buildPath=function(t,e){Nu(t,e)},e.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},e}(Is);zu.prototype.type="sector";var Vu=function(){this.cx=0,this.cy=0,this.r=0,this.r0=0},Bu=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Vu},e.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=2*Math.PI;t.moveTo(n+e.r,i),t.arc(n,i,e.r,0,r,!1),t.moveTo(n+e.r0,i),t.arc(n,i,e.r0,0,r,!0)},e}(Is);function Fu(t,e,n){var i=e.smooth,r=e.points;if(r&&r.length>=2){if(i){var o=function(t,e,n,i){var r,o,a,s,l=[],u=[],h=[],c=[];if(i){a=[1/0,1/0],s=[-1/0,-1/0];for(var p=0,d=t.length;poh[1]){if(a=!1,r)return a;var u=Math.abs(oh[0]-rh[1]),h=Math.abs(rh[0]-oh[1]);Math.min(u,h)>i.len()&&(u0){var c={duration:h.duration,delay:h.delay||0,easing:h.easing,done:o,force:!!o||!!a,setToFinal:!u,scope:t,during:a};l?e.animateFrom(n,c):e.animateTo(n,c)}else e.stopAnimation(),!l&&e.attr(n),a&&a(1),o&&o()}function fh(t,e,n,i,r,o){dh("update",t,e,n,i,r,o)}function gh(t,e,n,i,r,o){dh("enter",t,e,n,i,r,o)}function yh(t){if(!t.__zr)return!0;for(var e=0;eMath.abs(o[1])?o[0]>0?"right":"left":o[1]>0?"bottom":"top"}function Bh(t){return!t.isGroup}function Fh(t,e,n){if(t&&e){var i,r=(i={},t.traverse((function(t){Bh(t)&&t.anid&&(i[t.anid]=t)})),i);e.traverse((function(t){if(Bh(t)&&t.anid){var e=r[t.anid];if(e){var i=o(t);t.attr(o(e)),fh(t,i,n,Qs(t).dataIndex)}}}))}function o(t){var e={x:t.x,y:t.y,rotation:t.rotation};return function(t){return null!=t.shape}(t)&&(e.shape=A({},t.shape)),e}}function Gh(t,e){return z(t,(function(t){var n=t[0];n=bh(n,e.x),n=wh(n,e.x+e.width);var i=t[1];return i=bh(i,e.y),[n,i=wh(i,e.y+e.height)]}))}function Wh(t,e){var n=bh(t.x,e.x),i=wh(t.x+t.width,e.x+e.width),r=bh(t.y,e.y),o=wh(t.y+t.height,e.y+e.height);if(i>=n&&o>=r)return{x:n,y:r,width:i-n,height:o-r}}function Hh(t,e,n){var i=A({rectHover:!0},e),r=i.style={strokeNoScale:!0};if(n=n||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(r.image=t.slice(8),k(r,n),new ks(i)):Ah(t.replace("path://",""),i,n,"center")}function Yh(t,e,n,i,r){for(var o=0,a=r[r.length-1];o=-1e-6)return!1;var f=t-r,g=e-o,y=Uh(f,g,u,h)/d;if(y<0||y>1)return!1;var v=Uh(f,g,c,p)/d;return!(v<0||v>1)}function Uh(t,e,n,i){return t*i-n*e}function Zh(t){var e=t.itemTooltipOption,n=t.componentModel,i=t.itemName,r=U(e)?{formatter:e}:e,o=n.mainType,a=n.componentIndex,s={componentType:o,name:i,$vars:["name"]};s[o+"Index"]=a;var l=t.formatterParamsExtra;l&&E(G(l),(function(t){_t(s,t)||(s[t]=l[t],s.$vars.push(t))}));var u=Qs(t.el);u.componentMainType=o,u.componentIndex=a,u.tooltipConfig={name:i,option:k({content:i,formatterParams:s},r)}}function jh(t,e){var n;t.isGroup&&(n=e(t)),n||t.traverse(e)}function qh(t,e){if(t)if(Y(t))for(var n=0;n-1?Dc:kc;function Rc(t,e){t=t.toUpperCase(),Pc[t]=new Mc(e),Lc[t]=e}function Nc(t){return Pc[t]}Rc(Ac,{time:{month:["January","February","March","April","May","June","July","August","September","October","November","December"],monthAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayOfWeekAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},legend:{selector:{all:"All",inverse:"Inv"}},toolbox:{brush:{title:{rect:"Box Select",polygon:"Lasso Select",lineX:"Horizontally Select",lineY:"Vertically Select",keep:"Keep Selections",clear:"Clear Selections"}},dataView:{title:"Data View",lang:["Data View","Close","Refresh"]},dataZoom:{title:{zoom:"Zoom",back:"Zoom Reset"}},magicType:{title:{line:"Switch to Line Chart",bar:"Switch to Bar Chart",stack:"Stack",tiled:"Tile"}},restore:{title:"Restore"},saveAsImage:{title:"Save as Image",lang:["Right Click to Save Image"]}},series:{typeNames:{pie:"Pie chart",bar:"Bar chart",line:"Line chart",scatter:"Scatter plot",effectScatter:"Ripple scatter plot",radar:"Radar chart",tree:"Tree",treemap:"Treemap",boxplot:"Boxplot",candlestick:"Candlestick",k:"K line chart",heatmap:"Heat map",map:"Map",parallel:"Parallel coordinate map",lines:"Line graph",graph:"Relationship graph",sankey:"Sankey diagram",funnel:"Funnel chart",gauge:"Gauge",pictorialBar:"Pictorial bar",themeRiver:"Theme River Map",sunburst:"Sunburst"}},aria:{general:{withTitle:'This is a chart about "{title}"',withoutTitle:"This is a chart"},series:{single:{prefix:"",withName:" with type {seriesType} named {seriesName}.",withoutName:" with type {seriesType}."},multiple:{prefix:". It consists of {seriesCount} series count.",withName:" The {seriesId} series is a {seriesType} representing {seriesName}.",withoutName:" The {seriesId} series is a {seriesType}.",separator:{middle:"",end:""}}},data:{allData:"The data is as follows: ",partialData:"The first {displayCnt} items are: ",withName:"the data for {name} is {value}",withoutName:"{value}",separator:{middle:", ",end:". "}}}}),Rc(Dc,{time:{month:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthAbbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayOfWeekAbbr:["日","一","二","三","四","五","六"]},legend:{selector:{all:"全选",inverse:"反选"}},toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}});var Ec=1e3,zc=6e4,Vc=36e5,Bc=864e5,Fc=31536e6,Gc={year:"{yyyy}",month:"{MMM}",day:"{d}",hour:"{HH}:{mm}",minute:"{HH}:{mm}",second:"{HH}:{mm}:{ss}",millisecond:"{HH}:{mm}:{ss} {SSS}",none:"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}"},Wc="{yyyy}-{MM}-{dd}",Hc={year:"{yyyy}",month:"{yyyy}-{MM}",day:Wc,hour:Wc+" "+Gc.hour,minute:Wc+" "+Gc.minute,second:Wc+" "+Gc.second,millisecond:Gc.none},Yc=["year","month","day","hour","minute","second","millisecond"],Xc=["year","half-year","quarter","month","week","half-week","day","half-day","quarter-day","hour","minute","second","millisecond"];function Uc(t,e){return"0000".substr(0,e-(t+="").length)+t}function Zc(t){switch(t){case"half-year":case"quarter":return"month";case"week":case"half-week":return"day";case"half-day":case"quarter-day":return"hour";default:return t}}function jc(t){return t===Zc(t)}function qc(t,e,n,i){var r=ro(t),o=r[Jc(n)](),a=r[Qc(n)]()+1,s=Math.floor((a-1)/3)+1,l=r[tp(n)](),u=r["get"+(n?"UTC":"")+"Day"](),h=r[ep(n)](),c=(h-1)%12+1,p=r[np(n)](),d=r[ip(n)](),f=r[rp(n)](),g=(i instanceof Mc?i:Nc(i||Oc)||Pc[kc]).getModel("time"),y=g.get("month"),v=g.get("monthAbbr"),m=g.get("dayOfWeek"),x=g.get("dayOfWeekAbbr");return(e||"").replace(/{yyyy}/g,o+"").replace(/{yy}/g,Uc(o%100+"",2)).replace(/{Q}/g,s+"").replace(/{MMMM}/g,y[a-1]).replace(/{MMM}/g,v[a-1]).replace(/{MM}/g,Uc(a,2)).replace(/{M}/g,a+"").replace(/{dd}/g,Uc(l,2)).replace(/{d}/g,l+"").replace(/{eeee}/g,m[u]).replace(/{ee}/g,x[u]).replace(/{e}/g,u+"").replace(/{HH}/g,Uc(h,2)).replace(/{H}/g,h+"").replace(/{hh}/g,Uc(c+"",2)).replace(/{h}/g,c+"").replace(/{mm}/g,Uc(p,2)).replace(/{m}/g,p+"").replace(/{ss}/g,Uc(d,2)).replace(/{s}/g,d+"").replace(/{SSS}/g,Uc(f,3)).replace(/{S}/g,f+"")}function Kc(t,e){var n=ro(t),i=n[Qc(e)]()+1,r=n[tp(e)](),o=n[ep(e)](),a=n[np(e)](),s=n[ip(e)](),l=0===n[rp(e)](),u=l&&0===s,h=u&&0===a,c=h&&0===o,p=c&&1===r;return p&&1===i?"year":p?"month":c?"day":h?"hour":u?"minute":l?"second":"millisecond"}function $c(t,e,n){var i=j(t)?ro(t):t;switch(e=e||Kc(t,n)){case"year":return i[Jc(n)]();case"half-year":return i[Qc(n)]()>=6?1:0;case"quarter":return Math.floor((i[Qc(n)]()+1)/4);case"month":return i[Qc(n)]();case"day":return i[tp(n)]();case"half-day":return i[ep(n)]()/24;case"hour":return i[ep(n)]();case"minute":return i[np(n)]();case"second":return i[ip(n)]();case"millisecond":return i[rp(n)]()}}function Jc(t){return t?"getUTCFullYear":"getFullYear"}function Qc(t){return t?"getUTCMonth":"getMonth"}function tp(t){return t?"getUTCDate":"getDate"}function ep(t){return t?"getUTCHours":"getHours"}function np(t){return t?"getUTCMinutes":"getMinutes"}function ip(t){return t?"getUTCSeconds":"getSeconds"}function rp(t){return t?"getUTCMilliseconds":"getMilliseconds"}function op(t){return t?"setUTCFullYear":"setFullYear"}function ap(t){return t?"setUTCMonth":"setMonth"}function sp(t){return t?"setUTCDate":"setDate"}function lp(t){return t?"setUTCHours":"setHours"}function up(t){return t?"setUTCMinutes":"setMinutes"}function hp(t){return t?"setUTCSeconds":"setSeconds"}function cp(t){return t?"setUTCMilliseconds":"setMilliseconds"}function pp(t){if(!co(t))return U(t)?t:"-";var e=(t+"").split(".");return e[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(e.length>1?"."+e[1]:"")}function dp(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,(function(t,e){return e.toUpperCase()})),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}var fp=st;function gp(t,e,n){function i(t){return t&&ut(t)?t:"-"}function r(t){return!(null==t||isNaN(t)||!isFinite(t))}var o="time"===e,a=t instanceof Date;if(o||a){var s=o?ro(t):t;if(!isNaN(+s))return qc(s,"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}",n);if(a)return"-"}if("ordinal"===e)return Z(t)?i(t):j(t)&&r(t)?t+"":"-";var l=ho(t);return r(l)?pp(l):Z(t)?i(t):"boolean"==typeof t?t+"":"-"}var yp=["a","b","c","d","e","f","g"],vp=function(t,e){return"{"+t+(null==e?"":e)+"}"};function mp(t,e,n){Y(e)||(e=[e]);var i=e.length;if(!i)return"";for(var r=e[0].$vars||[],o=0;o':'':{renderMode:o,content:"{"+(n.markerId||"markerX")+"|} ",style:"subItem"===r?{width:4,height:4,borderRadius:2,backgroundColor:i}:{width:10,height:10,borderRadius:5,backgroundColor:i}}:""}function _p(t,e){return e=e||"transparent",U(t)?t:q(t)&&t.colorStops&&(t.colorStops[0]||{}).color||e}function bp(t,e){if("_blank"===e||"blank"===e){var n=window.open();n.opener=null,n.location.href=t}else window.open(t,e)}var wp=E,Sp=["left","right","top","bottom","width","height"],Mp=[["width","left","right"],["height","top","bottom"]];function Ip(t,e,n,i,r){var o=0,a=0;null==i&&(i=1/0),null==r&&(r=1/0);var s=0;e.eachChild((function(l,u){var h,c,p=l.getBoundingRect(),d=e.childAt(u+1),f=d&&d.getBoundingRect();if("horizontal"===t){var g=p.width+(f?-f.x+p.x:0);(h=o+g)>i||l.newline?(o=0,h=g,a+=s+n,s=p.height):s=Math.max(s,p.height)}else{var y=p.height+(f?-f.y+p.y:0);(c=a+y)>r||l.newline?(o+=s+n,a=0,c=y,s=p.width):s=Math.max(s,p.width)}l.newline||(l.x=o,l.y=a,l.markRedraw(),"horizontal"===t?o=h+n:a=c+n)}))}var Tp=Ip;H(Ip,"vertical"),H(Ip,"horizontal");function Cp(t,e,n){n=fp(n||0);var i=e.width,r=e.height,o=Ur(t.left,i),a=Ur(t.top,r),s=Ur(t.right,i),l=Ur(t.bottom,r),u=Ur(t.width,i),h=Ur(t.height,r),c=n[2]+n[0],p=n[1]+n[3],d=t.aspect;switch(isNaN(u)&&(u=i-s-p-o),isNaN(h)&&(h=r-l-c-a),null!=d&&(isNaN(u)&&isNaN(h)&&(d>i/r?u=.8*i:h=.8*r),isNaN(u)&&(u=d*h),isNaN(h)&&(h=u/d)),isNaN(o)&&(o=i-s-u-p),isNaN(a)&&(a=r-l-h-c),t.left||t.right){case"center":o=i/2-u/2-n[3];break;case"right":o=i-u-p}switch(t.top||t.bottom){case"middle":case"center":a=r/2-h/2-n[0];break;case"bottom":a=r-h-c}o=o||0,a=a||0,isNaN(u)&&(u=i-p-o-(s||0)),isNaN(h)&&(h=r-c-a-(l||0));var f=new ze(o+n[3],a+n[0],u,h);return f.margin=n,f}function Dp(t,e,n,i,r,o){var a,s=!r||!r.hv||r.hv[0],l=!r||!r.hv||r.hv[1],u=r&&r.boundingMode||"all";if((o=o||t).x=t.x,o.y=t.y,!s&&!l)return!1;if("raw"===u)a="group"===t.type?new ze(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(a=t.getBoundingRect(),t.needLocalTransform()){var h=t.getLocalTransform();(a=a.clone()).applyTransform(h)}var c=Cp(k({width:a.width,height:a.height},e),n,i),p=s?c.x-a.x:0,d=l?c.y-a.y:0;return"raw"===u?(o.x=p,o.y=d):(o.x+=p,o.y+=d),o===t&&t.markRedraw(),!0}function Ap(t){var e=t.layoutMode||t.constructor.layoutMode;return q(e)?e:e?{type:e}:null}function kp(t,e,n){var i=n&&n.ignoreSize;!Y(i)&&(i=[i,i]);var r=a(Mp[0],0),o=a(Mp[1],1);function a(n,r){var o={},a=0,u={},h=0;if(wp(n,(function(e){u[e]=t[e]})),wp(n,(function(t){s(e,t)&&(o[t]=u[t]=e[t]),l(o,t)&&a++,l(u,t)&&h++})),i[r])return l(e,n[1])?u[n[2]]=null:l(e,n[2])&&(u[n[1]]=null),u;if(2!==h&&a){if(a>=2)return o;for(var c=0;c=0;a--)o=C(o,n[a],!0);e.defaultOption=o}return e.defaultOption},e.prototype.getReferringComponents=function(t,e){var n=t+"Index",i=t+"Id";return Bo(this.ecModel,t,{index:this.get(n,!0),id:this.get(i,!0)},e)},e.prototype.getBoxLayoutParams=function(){var t=this;return{left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")}},e.prototype.getZLevelKey=function(){return""},e.prototype.setZLevel=function(t){this.option.zlevel=t},e.protoInitialize=function(){var t=e.prototype;t.type="component",t.id="",t.name="",t.mainType="",t.subType="",t.componentIndex=0}(),e}(Mc);Zo(Rp,Mc),$o(Rp),function(t){var e={};t.registerSubTypeDefaulter=function(t,n){var i=Xo(t);e[i.main]=n},t.determineSubType=function(n,i){var r=i.type;if(!r){var o=Xo(n).main;t.hasSubTypes(n)&&e[o]&&(r=e[o](i))}return r}}(Rp),function(t,e){function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}t.topologicalTravel=function(t,i,r,o){if(t.length){var a=function(t){var i={},r=[];return E(t,(function(o){var a=n(i,o),s=function(t,e){var n=[];return E(t,(function(t){P(e,t)>=0&&n.push(t)})),n}(a.originalDeps=e(o),t);a.entryCount=s.length,0===a.entryCount&&r.push(o),E(s,(function(t){P(a.predecessor,t)<0&&a.predecessor.push(t);var e=n(i,t);P(e.successor,t)<0&&e.successor.push(o)}))})),{graph:i,noEntryList:r}}(i),s=a.graph,l=a.noEntryList,u={};for(E(t,(function(t){u[t]=!0}));l.length;){var h=l.pop(),c=s[h],p=!!u[h];p&&(r.call(o,h,c.originalDeps.slice()),delete u[h]),E(c.successor,p?f:d)}E(u,(function(){var t="";throw new Error(t)}))}function d(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}function f(t){u[t]=!0,d(t)}}}(Rp,(function(t){var e=[];E(Rp.getClassesByMainType(t),(function(t){e=e.concat(t.dependencies||t.prototype.dependencies||[])})),e=z(e,(function(t){return Xo(t).main})),"dataset"!==t&&P(e,"dataset")<=0&&e.unshift("dataset");return e}));var Np="";"undefined"!=typeof navigator&&(Np=navigator.platform||"");var Ep="rgba(0, 0, 0, 0.2)",zp={darkMode:"auto",colorBy:"series",color:["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],gradientColor:["#f6efa6","#d88273","#bf444c"],aria:{decal:{decals:[{color:Ep,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:Ep,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:Ep,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:Ep,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:Ep,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:Ep,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:Np.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,stateAnimation:{duration:300,easing:"cubicOut"},animation:"auto",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicInOut",animationEasingUpdate:"cubicInOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},Vp=yt(["tooltip","label","itemName","itemId","itemGroupId","seriesName"]),Bp="original",Fp="arrayRows",Gp="objectRows",Wp="keyedColumns",Hp="typedArray",Yp="unknown",Xp="column",Up="row",Zp=1,jp=2,qp=3,Kp=Oo();function $p(t,e,n){var i={},r=Qp(e);if(!r||!t)return i;var o,a,s=[],l=[],u=e.ecModel,h=Kp(u).datasetMap,c=r.uid+"_"+n.seriesLayoutBy;E(t=t.slice(),(function(e,n){var r=q(e)?e:t[n]={name:e};"ordinal"===r.type&&null==o&&(o=n,a=f(r)),i[r.name]=[]}));var p=h.get(c)||h.set(c,{categoryWayDim:a,valueWayDim:0});function d(t,e,n){for(var i=0;ie)return t[i];return t[n-1]}(i,a):n;if((h=h||n)&&h.length){var c=h[l];return r&&(u[r]=c),s.paletteIdx=(l+1)%h.length,c}}var cd="\0_ec_inner";var pd=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.init=function(t,e,n,i,r,o){i=i||{},this.option=null,this._theme=new Mc(i),this._locale=new Mc(r),this._optionManager=o},e.prototype.setOption=function(t,e,n){var i=gd(e);this._optionManager.setOption(t,n,i),this._resetOption(null,i)},e.prototype.resetOption=function(t,e){return this._resetOption(t,gd(e))},e.prototype._resetOption=function(t,e){var n=!1,i=this._optionManager;if(!t||"recreate"===t){var r=i.mountOption("recreate"===t);0,this.option&&"recreate"!==t?(this.restoreData(),this._mergeOption(r,e)):od(this,r),n=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(n=!0,this._mergeOption(o,e))}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this);a.length&&E(a,(function(t){n=!0,this._mergeOption(t,e)}),this)}return n},e.prototype.mergeOption=function(t){this._mergeOption(t,null)},e.prototype._mergeOption=function(t,e){var n=this.option,i=this._componentsMap,r=this._componentsCount,o=[],a=yt(),s=e&&e.replaceMergeMainTypeMap;Kp(this).datasetMap=yt(),E(t,(function(t,e){null!=t&&(Rp.hasClass(e)?e&&(o.push(e),a.set(e,!0)):n[e]=null==n[e]?T(t):C(n[e],t,!0))})),s&&s.each((function(t,e){Rp.hasClass(e)&&!a.get(e)&&(o.push(e),a.set(e,!0))})),Rp.topologicalTravel(o,Rp.getAllClassMainTypes(),(function(e){var o=function(t,e,n){var i=nd.get(e);if(!i)return n;var r=i(t);return r?n.concat(r):n}(this,e,bo(t[e])),a=i.get(e),l=a?s&&s.get(e)?"replaceMerge":"normalMerge":"replaceAll",u=To(a,o,l);(function(t,e,n){E(t,(function(t){var i=t.newOption;q(i)&&(t.keyInfo.mainType=e,t.keyInfo.subType=function(t,e,n,i){return e.type?e.type:n?n.subType:i.determineSubType(t,e)}(e,i,t.existing,n))}))})(u,e,Rp),n[e]=null,i.set(e,null),r.set(e,0);var h,c=[],p=[],d=0;E(u,(function(t,n){var i=t.existing,r=t.newOption;if(r){var o="series"===e,a=Rp.getClass(e,t.keyInfo.subType,!o);if(!a)return;if("tooltip"===e){if(h)return void 0;h=!0}if(i&&i.constructor===a)i.name=t.keyInfo.name,i.mergeOption(r,this),i.optionUpdated(r,!1);else{var s=A({componentIndex:n},t.keyInfo);A(i=new a(r,this,this,s),s),t.brandNew&&(i.__requireNewView=!0),i.init(r,this,this),i.optionUpdated(null,!0)}}else i&&(i.mergeOption({},this),i.optionUpdated({},!1));i?(c.push(i.option),p.push(i),d++):(c.push(void 0),p.push(void 0))}),this),n[e]=c,i.set(e,p),r.set(e,d),"series"===e&&id(this)}),this),this._seriesIndices||id(this)},e.prototype.getOption=function(){var t=T(this.option);return E(t,(function(e,n){if(Rp.hasClass(n)){for(var i=bo(e),r=i.length,o=!1,a=r-1;a>=0;a--)i[a]&&!Lo(i[a])?o=!0:(i[a]=null,!o&&r--);i.length=r,t[n]=i}})),delete t[cd],t},e.prototype.getTheme=function(){return this._theme},e.prototype.getLocaleModel=function(){return this._locale},e.prototype.setUpdatePayload=function(t){this._payload=t},e.prototype.getUpdatePayload=function(){return this._payload},e.prototype.getComponent=function(t,e){var n=this._componentsMap.get(t);if(n){var i=n[e||0];if(i)return i;if(null==e)for(var r=0;r=e:"max"===n?t<=e:t===e})(i[a],t,o)||(r=!1)}})),r}var Sd=E,Md=q,Id=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function Td(t){var e=t&&t.itemStyle;if(e)for(var n=0,i=Id.length;n=0;g--){var y=t[g];if(s||(p=y.data.rawIndexOf(y.stackedByDimension,c)),p>=0){var v=y.data.getByRawIndex(y.stackResultDimension,p);if("all"===l||"positive"===l&&v>0||"negative"===l&&v<0||"samesign"===l&&d>=0&&v>0||"samesign"===l&&d<=0&&v<0){d=Qr(d,v),f=v;break}}}return i[0]=d,i[1]=f,i}))}))}var Yd,Xd,Ud,Zd,jd,qd=function(t){this.data=t.data||(t.sourceFormat===Wp?{}:[]),this.sourceFormat=t.sourceFormat||Yp,this.seriesLayoutBy=t.seriesLayoutBy||Xp,this.startIndex=t.startIndex||0,this.dimensionsDetectedCount=t.dimensionsDetectedCount,this.metaRawOption=t.metaRawOption;var e=this.dimensionsDefine=t.dimensionsDefine;if(e)for(var n=0;nu&&(u=d)}s[0]=l,s[1]=u}},i=function(){return this._data?this._data.length/this._dimSize:0};function r(t){for(var e=0;e=0&&(s=o.interpolatedValue[l])}return null!=s?s+"":""})):void 0},t.prototype.getRawValue=function(t,e){return gf(this.getData(e),t)},t.prototype.formatTooltip=function(t,e,n){},t}();function mf(t){var e,n;return q(t)?t.type&&(n=t):e=t,{text:e,frag:n}}function xf(t){return new _f(t)}var _f=function(){function t(t){t=t||{},this._reset=t.reset,this._plan=t.plan,this._count=t.count,this._onDirty=t.onDirty,this._dirty=!0}return t.prototype.perform=function(t){var e,n=this._upstream,i=t&&t.skip;if(this._dirty&&n){var r=this.context;r.data=r.outputData=n.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this),this._plan&&!i&&(e=this._plan(this.context));var o,a=h(this._modBy),s=this._modDataCount||0,l=h(t&&t.modBy),u=t&&t.modDataCount||0;function h(t){return!(t>=1)&&(t=1),t}a===l&&s===u||(e="reset"),(this._dirty||"reset"===e)&&(this._dirty=!1,o=this._doReset(i)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=n?n._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var p=this._dueIndex,d=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!i&&(o||p1&&i>0?s:a}};return o;function a(){return e=t?null:oe},gte:function(t,e){return t>=e}},Tf=function(){function t(t,e){if(!j(e)){var n="";0,vo(n)}this._opFn=If[t],this._rvalFloat=ho(e)}return t.prototype.evaluate=function(t){return j(t)?this._opFn(t,this._rvalFloat):this._opFn(ho(t),this._rvalFloat)},t}(),Cf=function(){function t(t,e){var n="desc"===t;this._resultLT=n?1:-1,null==e&&(e=n?"min":"max"),this._incomparable="min"===e?-1/0:1/0}return t.prototype.evaluate=function(t,e){var n=j(t)?t:ho(t),i=j(e)?e:ho(e),r=isNaN(n),o=isNaN(i);if(r&&(n=this._incomparable),o&&(i=this._incomparable),r&&o){var a=U(t),s=U(e);a&&(n=s?t:0),s&&(i=a?e:0)}return ni?-this._resultLT:0},t}(),Df=function(){function t(t,e){this._rval=e,this._isEQ=t,this._rvalTypeof=typeof e,this._rvalFloat=ho(e)}return t.prototype.evaluate=function(t){var e=t===this._rval;if(!e){var n=typeof t;n===this._rvalTypeof||"number"!==n&&"number"!==this._rvalTypeof||(e=ho(t)===this._rvalFloat)}return this._isEQ?e:!e},t}();function Af(t,e){return"eq"===t||"ne"===t?new Df("eq"===t,e):_t(If,t)?new Tf(t,e):null}var kf=function(){function t(){}return t.prototype.getRawData=function(){throw new Error("not supported")},t.prototype.getRawDataItem=function(t){throw new Error("not supported")},t.prototype.cloneRawData=function(){},t.prototype.getDimensionInfo=function(t){},t.prototype.cloneAllDimensionInfo=function(){},t.prototype.count=function(){},t.prototype.retrieveValue=function(t,e){},t.prototype.retrieveValueFromItem=function(t,e){},t.prototype.convertValue=function(t,e){return wf(t,e)},t}();function Lf(t){var e=t.sourceFormat;if(!zf(e)){var n="";0,vo(n)}return t.data}function Pf(t){var e=t.sourceFormat,n=t.data;if(!zf(e)){var i="";0,vo(i)}if(e===Fp){for(var r=[],o=0,a=n.length;o65535?Ff:Gf}function Uf(t,e,n,i,r){var o=Yf[n||"float"];if(r){var a=t[e],s=a&&a.length;if(s!==i){for(var l=new o(i),u=0;ug[1]&&(g[1]=f)}return this._rawCount=this._count=s,{start:a,end:s}},t.prototype._initDataFromProvider=function(t,e,n){for(var i=this._provider,r=this._chunks,o=this._dimensions,a=o.length,s=this._rawExtent,l=z(o,(function(t){return t.property})),u=0;uy[1]&&(y[1]=g)}}!i.persistent&&i.clean&&i.clean(),this._rawCount=this._count=e,this._extent=[]},t.prototype.count=function(){return this._count},t.prototype.get=function(t,e){if(!(e>=0&&e=0&&e=this._rawCount||t<0)return-1;if(!this._indices)return t;var e=this._indices,n=e[t];if(null!=n&&nt))return o;r=o-1}}return-1},t.prototype.indicesOfNearest=function(t,e,n){var i=this._chunks[t],r=[];if(!i)return r;null==n&&(n=1/0);for(var o=1/0,a=-1,s=0,l=0,u=this.count();l=0&&a<0)&&(o=c,a=h,s=0),h===a&&(r[s++]=l))}return r.length=s,r},t.prototype.getIndices=function(){var t,e=this._indices;if(e){var n=e.constructor,i=this._count;if(n===Array){t=new n(i);for(var r=0;r=u&&x<=h||isNaN(x))&&(a[s++]=d),d++}p=!0}else if(2===r){f=c[i[0]];var y=c[i[1]],v=t[i[1]][0],m=t[i[1]][1];for(g=0;g=u&&x<=h||isNaN(x))&&(_>=v&&_<=m||isNaN(_))&&(a[s++]=d),d++}p=!0}}if(!p)if(1===r)for(g=0;g=u&&x<=h||isNaN(x))&&(a[s++]=b)}else for(g=0;gt[M][1])&&(w=!1)}w&&(a[s++]=e.getRawIndex(g))}return sy[1]&&(y[1]=g)}}}},t.prototype.lttbDownSample=function(t,e){var n,i,r,o=this.clone([t],!0),a=o._chunks[t],s=this.count(),l=0,u=Math.floor(1/e),h=this.getRawIndex(0),c=new(Xf(this._rawCount))(Math.min(2*(Math.ceil(s/u)+2),s));c[l++]=h;for(var p=1;pn&&(n=i,r=I)}M>0&&M<_-x&&(c[l++]=Math.min(S,r),r=Math.max(S,r)),c[l++]=r,h=r}return c[l++]=this.getRawIndex(s-1),o._count=l,o._indices=c,o.getRawIndex=this._getRawIdx,o},t.prototype.downSample=function(t,e,n,i){for(var r=this.clone([t],!0),o=r._chunks,a=[],s=Math.floor(1/e),l=o[t],u=this.count(),h=r._rawExtent[t]=[1/0,-1/0],c=new(Xf(this._rawCount))(Math.ceil(u/s)),p=0,d=0;du-d&&(s=u-d,a.length=s);for(var f=0;fh[1]&&(h[1]=y),c[p++]=v}return r._count=p,r._indices=c,r._updateGetRawIdx(),r},t.prototype.each=function(t,e){if(this._count)for(var n=t.length,i=this._chunks,r=0,o=this.count();ra&&(a=l)}return i=[o,a],this._extent[t]=i,i},t.prototype.getRawDataItem=function(t){var e=this.getRawIndex(t);if(this._provider.persistent)return this._provider.getItem(e);for(var n=[],i=this._chunks,r=0;r=0?this._indices[t]:-1},t.prototype._updateGetRawIdx=function(){this.getRawIndex=this._indices?this._getRawIdx:this._getRawIdxIdentity},t.internalField=function(){function t(t,e,n,i){return wf(t[i],this._dimensions[i])}Vf={arrayRows:t,objectRows:function(t,e,n,i){return wf(t[e],this._dimensions[i])},keyedColumns:t,original:function(t,e,n,i){var r=t&&(null==t.value?t:t.value);return wf(r instanceof Array?r[i]:r,this._dimensions[i])},typedArray:function(t,e,n,i){return t[i]}}}(),t}(),jf=function(){function t(t){this._sourceList=[],this._storeList=[],this._upstreamSignList=[],this._versionSignBase=0,this._dirty=!0,this._sourceHost=t}return t.prototype.dirty=function(){this._setLocalSource([],[]),this._storeList=[],this._dirty=!0},t.prototype._setLocalSource=function(t,e){this._sourceList=t,this._upstreamSignList=e,this._versionSignBase++,this._versionSignBase>9e10&&(this._versionSignBase=0)},t.prototype._getVersionSign=function(){return this._sourceHost.uid+"_"+this._versionSignBase},t.prototype.prepareSource=function(){this._isDirty()&&(this._createSource(),this._dirty=!1)},t.prototype._createSource=function(){this._setLocalSource([],[]);var t,e,n=this._sourceHost,i=this._getUpstreamSourceManagers(),r=!!i.length;if(Kf(n)){var o=n,a=void 0,s=void 0,l=void 0;if(r){var u=i[0];u.prepareSource(),a=(l=u.getSource()).data,s=l.sourceFormat,e=[u._getVersionSign()]}else s=$(a=o.get("data",!0))?Hp:Bp,e=[];var h=this._getSourceMetaRawOption()||{},c=l&&l.metaRawOption||{},p=rt(h.seriesLayoutBy,c.seriesLayoutBy)||null,d=rt(h.sourceHeader,c.sourceHeader),f=rt(h.dimensions,c.dimensions);t=p!==c.seriesLayoutBy||!!d!=!!c.sourceHeader||f?[$d(a,{seriesLayoutBy:p,sourceHeader:d,dimensions:f},s)]:[]}else{var g=n;if(r){var y=this._applyTransform(i);t=y.sourceList,e=y.upstreamSignList}else{t=[$d(g.get("source",!0),this._getSourceMetaRawOption(),null)],e=[]}}this._setLocalSource(t,e)},t.prototype._applyTransform=function(t){var e,n=this._sourceHost,i=n.get("transform",!0),r=n.get("fromTransformResult",!0);if(null!=r){var o="";1!==t.length&&$f(o)}var a,s=[],l=[];return E(t,(function(t){t.prepareSource();var e=t.getSource(r||0),n="";null==r||e||$f(n),s.push(e),l.push(t._getVersionSign())})),i?e=function(t,e,n){var i=bo(t),r=i.length,o="";r||vo(o);for(var a=0,s=r;a1||n>0&&!t.noHeader;return E(t.blocks,(function(t){var n=og(t);n>=e&&(e=n+ +(i&&(!n||ig(t)&&!t.noHeader)))})),e}return 0}function ag(t,e,n,i){var r,o=e.noHeader,a=(r=og(e),{html:tg[r],richText:eg[r]}),s=[],l=e.blocks||[];lt(!l||Y(l)),l=l||[];var u=t.orderMode;if(e.sortBlocks&&u){l=l.slice();var h={valueAsc:"asc",valueDesc:"desc"};if(_t(h,u)){var c=new Cf(h[u],null);l.sort((function(t,e){return c.evaluate(t.sortParam,e.sortParam)}))}else"seriesDesc"===u&&l.reverse()}E(l,(function(n,r){var o=e.valueFormatter,l=rg(n)(o?A(A({},t),{valueFormatter:o}):t,n,r>0?a.html:0,i);null!=l&&s.push(l)}));var p="richText"===t.renderMode?s.join(a.richText):ug(s.join(""),o?n:a.html);if(o)return p;var d=gp(e.header,"ordinal",t.useUTC),f=Qf(i,t.renderMode).nameStyle;return"richText"===t.renderMode?hg(t,d,f)+a.richText+p:ug('
        '+re(d)+"
        "+p,n)}function sg(t,e,n,i){var r=t.renderMode,o=e.noName,a=e.noValue,s=!e.markerType,l=e.name,u=t.useUTC,h=e.valueFormatter||t.valueFormatter||function(t){return z(t=Y(t)?t:[t],(function(t,e){return gp(t,Y(d)?d[e]:d,u)}))};if(!o||!a){var c=s?"":t.markupStyleCreator.makeTooltipMarker(e.markerType,e.markerColor||"#333",r),p=o?"":gp(l,"ordinal",u),d=e.valueType,f=a?[]:h(e.value),g=!s||!o,y=!s&&o,v=Qf(i,r),m=v.nameStyle,x=v.valueStyle;return"richText"===r?(s?"":c)+(o?"":hg(t,p,m))+(a?"":function(t,e,n,i,r){var o=[r],a=i?10:20;return n&&o.push({padding:[0,0,0,a],align:"right"}),t.markupStyleCreator.wrapRichTextStyle(Y(e)?e.join(" "):e,o)}(t,f,g,y,x)):ug((s?"":c)+(o?"":function(t,e,n){return''+re(t)+""}(p,!s,m))+(a?"":function(t,e,n,i){var r=n?"10px":"20px",o=e?"float:right;margin-left:"+r:"";return t=Y(t)?t:[t],''+z(t,(function(t){return re(t)})).join("  ")+""}(f,g,y,x)),n)}}function lg(t,e,n,i,r,o){if(t)return rg(t)({useUTC:r,renderMode:n,orderMode:i,markupStyleCreator:e,valueFormatter:t.valueFormatter},t,0,o)}function ug(t,e){return'
        '+t+'
        '}function hg(t,e,n){return t.markupStyleCreator.wrapRichTextStyle(e,n)}function cg(t,e){return _p(t.getData().getItemVisual(e,"style")[t.visualDrawType])}function pg(t,e){var n=t.get("padding");return null!=n?n:"richText"===e?[8,10]:10}var dg=function(){function t(){this.richTextStyles={},this._nextStyleNameId=po()}return t.prototype._generateStyleName=function(){return"__EC_aUTo_"+this._nextStyleNameId++},t.prototype.makeTooltipMarker=function(t,e,n){var i="richText"===n?this._generateStyleName():null,r=xp({color:e,type:t,renderMode:n,markerId:i});return U(r)?r:(this.richTextStyles[i]=r.style,r.content)},t.prototype.wrapRichTextStyle=function(t,e){var n={};Y(e)?E(e,(function(t){return A(n,t)})):A(n,e);var i=this._generateStyleName();return this.richTextStyles[i]=n,"{"+i+"|"+t+"}"},t}();function fg(t){var e,n,i,r,o=t.series,a=t.dataIndex,s=t.multipleSeries,l=o.getData(),u=l.mapDimensionsAll("defaultedTooltip"),h=u.length,c=o.getRawValue(a),p=Y(c),d=cg(o,a);if(h>1||p&&!h){var f=function(t,e,n,i,r){var o=e.getData(),a=V(t,(function(t,e,n){var i=o.getDimensionInfo(n);return t||i&&!1!==i.tooltip&&null!=i.displayName}),!1),s=[],l=[],u=[];function h(t,e){var n=o.getDimensionInfo(e);n&&!1!==n.otherDims.tooltip&&(a?u.push(ng("nameValue",{markerType:"subItem",markerColor:r,name:n.displayName,value:t,valueType:n.type})):(s.push(t),l.push(n.type)))}return i.length?E(i,(function(t){h(gf(o,n,t),t)})):E(t,h),{inlineValues:s,inlineValueTypes:l,blocks:u}}(c,o,a,u,d);e=f.inlineValues,n=f.inlineValueTypes,i=f.blocks,r=f.inlineValues[0]}else if(h){var g=l.getDimensionInfo(u[0]);r=e=gf(l,a,u[0]),n=g.type}else r=e=p?c[0]:c;var y=ko(o),v=y&&o.name||"",m=l.getName(a),x=s?v:m;return ng("section",{header:v,noHeader:s||!y,sortParam:r,blocks:[ng("nameValue",{markerType:"item",markerColor:d,name:x,noName:!ut(x),value:e,valueType:n})].concat(i||[])})}var gg=Oo();function yg(t,e){return t.getName(e)||t.getId(e)}var vg="__universalTransitionEnabled",mg=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._selectedDataIndicesMap={},e}return n(e,t),e.prototype.init=function(t,e,n){this.seriesIndex=this.componentIndex,this.dataTask=xf({count:_g,reset:bg}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(t,n),(gg(this).sourceManager=new jf(this)).prepareSource();var i=this.getInitialData(t,n);Sg(i,this),this.dataTask.context.data=i,gg(this).dataBeforeProcessed=i,xg(this),this._initSelectedMapFromData(i)},e.prototype.mergeDefaultAndTheme=function(t,e){var n=Ap(this),i=n?Lp(t):{},r=this.subType;Rp.hasClass(r)&&(r+="Series"),C(t,e.getTheme().get(this.subType)),C(t,this.getDefaultOption()),wo(t,"label",["show"]),this.fillDataTextStyle(t.data),n&&kp(t,i,n)},e.prototype.mergeOption=function(t,e){t=C(this.option,t,!0),this.fillDataTextStyle(t.data);var n=Ap(this);n&&kp(this.option,t,n);var i=gg(this).sourceManager;i.dirty(),i.prepareSource();var r=this.getInitialData(t,e);Sg(r,this),this.dataTask.dirty(),this.dataTask.context.data=r,gg(this).dataBeforeProcessed=r,xg(this),this._initSelectedMapFromData(r)},e.prototype.fillDataTextStyle=function(t){if(t&&!$(t))for(var e=["show"],n=0;nthis.getShallow("animationThreshold")&&(e=!1),!!e},e.prototype.restoreData=function(){this.dataTask.dirty()},e.prototype.getColorFromPalette=function(t,e,n){var i=this.ecModel,r=ld.prototype.getColorFromPalette.call(this,t,e,n);return r||(r=i.getColorFromPalette(t,e,n)),r},e.prototype.coordDimToDataDim=function(t){return this.getRawData().mapDimensionsAll(t)},e.prototype.getProgressive=function(){return this.get("progressive")},e.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},e.prototype.select=function(t,e){this._innerSelect(this.getData(e),t)},e.prototype.unselect=function(t,e){var n=this.option.selectedMap;if(n){var i=this.option.selectedMode,r=this.getData(e);if("series"===i||"all"===n)return this.option.selectedMap={},void(this._selectedDataIndicesMap={});for(var o=0;o=0&&n.push(r)}return n},e.prototype.isSelected=function(t,e){var n=this.option.selectedMap;if(!n)return!1;var i=this.getData(e);return("all"===n||n[yg(i,t)])&&!i.getItemModel(t).get(["select","disabled"])},e.prototype.isUniversalTransitionEnabled=function(){if(this[vg])return!0;var t=this.option.universalTransition;return!!t&&(!0===t||t&&t.enabled)},e.prototype._innerSelect=function(t,e){var n,i,r=this.option,o=r.selectedMode,a=e.length;if(o&&a)if("series"===o)r.selectedMap="all";else if("multiple"===o){q(r.selectedMap)||(r.selectedMap={});for(var s=r.selectedMap,l=0;l0&&this._innerSelect(t,e)}},e.registerClass=function(t){return Rp.registerClass(t)},e.protoInitialize=function(){var t=e.prototype;t.type="series.__base__",t.seriesIndex=0,t.ignoreStyleOnData=!1,t.hasSymbolVisual=!1,t.defaultSymbol="circle",t.visualStyleAccessPath="itemStyle",t.visualDrawType="fill"}(),e}(Rp);function xg(t){var e=t.name;ko(t)||(t.name=function(t){var e=t.getRawData(),n=e.mapDimensionsAll("seriesName"),i=[];return E(n,(function(t){var n=e.getDimensionInfo(t);n.displayName&&i.push(n.displayName)})),i.join(" ")}(t)||e)}function _g(t){return t.model.getRawData().count()}function bg(t){var e=t.model;return e.setData(e.getRawData().cloneShallow()),wg}function wg(t,e){e.outputData&&t.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function Sg(t,e){E(vt(t.CHANGABLE_METHODS,t.DOWNSAMPLE_METHODS),(function(n){t.wrapMethod(n,H(Mg,e))}))}function Mg(t,e){var n=Ig(t);return n&&n.setOutputEnd((e||this).count()),e}function Ig(t){var e=(t.ecModel||{}).scheduler,n=e&&e.getPipeline(t.uid);if(n){var i=n.currentTask;if(i){var r=i.agentStubMap;r&&(i=r.get(t.uid))}return i}}R(mg,vf),R(mg,ld),Zo(mg,Rp);var Tg=function(){function t(){this.group=new zr,this.uid=Tc("viewComponent")}return t.prototype.init=function(t,e){},t.prototype.render=function(t,e,n,i){},t.prototype.dispose=function(t,e){},t.prototype.updateView=function(t,e,n,i){},t.prototype.updateLayout=function(t,e,n,i){},t.prototype.updateVisual=function(t,e,n,i){},t.prototype.toggleBlurSeries=function(t,e,n){},t.prototype.eachRendered=function(t){var e=this.group;e&&e.traverse(t)},t}();function Cg(){var t=Oo();return function(e){var n=t(e),i=e.pipelineContext,r=!!n.large,o=!!n.progressiveRender,a=n.large=!(!i||!i.large),s=n.progressiveRender=!(!i||!i.progressiveRender);return!(r===a&&o===s)&&"reset"}}Uo(Tg),$o(Tg);var Dg=Oo(),Ag=Cg(),kg=function(){function t(){this.group=new zr,this.uid=Tc("viewChart"),this.renderTask=xf({plan:Og,reset:Rg}),this.renderTask.context={view:this}}return t.prototype.init=function(t,e){},t.prototype.render=function(t,e,n,i){0},t.prototype.highlight=function(t,e,n,i){var r=t.getData(i&&i.dataType);r&&Pg(r,i,"emphasis")},t.prototype.downplay=function(t,e,n,i){var r=t.getData(i&&i.dataType);r&&Pg(r,i,"normal")},t.prototype.remove=function(t,e){this.group.removeAll()},t.prototype.dispose=function(t,e){},t.prototype.updateView=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.updateLayout=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.updateVisual=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.eachRendered=function(t){qh(this.group,t)},t.markUpdateMethod=function(t,e){Dg(t).updateMethod=e},t.protoInitialize=void(t.prototype.type="chart"),t}();function Lg(t,e,n){t&&Kl(t)&&("emphasis"===e?kl:Ll)(t,n)}function Pg(t,e,n){var i=Po(t,e),r=e&&null!=e.highlightKey?function(t){var e=nl[t];return null==e&&el<=32&&(e=nl[t]=el++),e}(e.highlightKey):null;null!=i?E(bo(i),(function(e){Lg(t.getItemGraphicEl(e),n,r)})):t.eachItemGraphicEl((function(t){Lg(t,n,r)}))}function Og(t){return Ag(t.model)}function Rg(t){var e=t.model,n=t.ecModel,i=t.api,r=t.payload,o=e.pipelineContext.progressiveRender,a=t.view,s=r&&Dg(r).updateMethod,l=o?"incrementalPrepareRender":s&&a[s]?s:"render";return"render"!==l&&a[l](e,n,i,r),Ng[l]}Uo(kg),$o(kg);var Ng={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},Eg="\0__throttleOriginMethod",zg="\0__throttleRate",Vg="\0__throttleType";function Bg(t,e,n){var i,r,o,a,s,l=0,u=0,h=null;function c(){u=(new Date).getTime(),h=null,t.apply(o,a||[])}e=e||0;var p=function(){for(var t=[],p=0;p=0?c():h=setTimeout(c,-r),l=i};return p.clear=function(){h&&(clearTimeout(h),h=null)},p.debounceNextCall=function(t){s=t},p}function Fg(t,e,n,i){var r=t[e];if(r){var o=r[Eg]||r,a=r[Vg];if(r[zg]!==n||a!==i){if(null==n||!i)return t[e]=o;(r=t[e]=Bg(o,n,"debounce"===i))[Eg]=o,r[Vg]=i,r[zg]=n}return r}}function Gg(t,e){var n=t[e];n&&n[Eg]&&(n.clear&&n.clear(),t[e]=n[Eg])}var Wg=Oo(),Hg={itemStyle:Jo(bc,!0),lineStyle:Jo(mc,!0)},Yg={lineStyle:"stroke",itemStyle:"fill"};function Xg(t,e){var n=t.visualStyleMapper||Hg[e];return n||(console.warn("Unknown style type '"+e+"'."),Hg.itemStyle)}function Ug(t,e){var n=t.visualDrawType||Yg[e];return n||(console.warn("Unknown style type '"+e+"'."),"fill")}var Zg={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=t.getModel(i),o=Xg(t,i)(r),a=r.getShallow("decal");a&&(n.setVisual("decal",a),a.dirty=!0);var s=Ug(t,i),l=o[s],u=X(l)?l:null,h="auto"===o.fill||"auto"===o.stroke;if(!o[s]||u||h){var c=t.getColorFromPalette(t.name,null,e.getSeriesCount());o[s]||(o[s]=c,n.setVisual("colorFromPalette",!0)),o.fill="auto"===o.fill||X(o.fill)?c:o.fill,o.stroke="auto"===o.stroke||X(o.stroke)?c:o.stroke}if(n.setVisual("style",o),n.setVisual("drawType",s),!e.isSeriesFiltered(t)&&u)return n.setVisual("colorFromPalette",!1),{dataEach:function(e,n){var i=t.getDataParams(n),r=A({},o);r[s]=u(i),e.setItemVisual(n,"style",r)}}}},jg=new Mc,qg={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){if(!t.ignoreStyleOnData&&!e.isSeriesFiltered(t)){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=Xg(t,i),o=n.getVisual("drawType");return{dataEach:n.hasItemOption?function(t,e){var n=t.getRawDataItem(e);if(n&&n[i]){jg.option=n[i];var a=r(jg);A(t.ensureUniqueItemVisual(e,"style"),a),jg.option.decal&&(t.setItemVisual(e,"decal",jg.option.decal),jg.option.decal.dirty=!0),o in a&&t.setItemVisual(e,"colorFromPalette",!1)}}:null}}}},Kg={performRawSeries:!0,overallReset:function(t){var e=yt();t.eachSeries((function(t){var n=t.getColorBy();if(!t.isColorBySeries()){var i=t.type+"-"+n,r=e.get(i);r||(r={},e.set(i,r)),Wg(t).scope=r}})),t.eachSeries((function(e){if(!e.isColorBySeries()&&!t.isSeriesFiltered(e)){var n=e.getRawData(),i={},r=e.getData(),o=Wg(e).scope,a=e.visualStyleAccessPath||"itemStyle",s=Ug(e,a);r.each((function(t){var e=r.getRawIndex(t);i[e]=t})),n.each((function(t){var a=i[t];if(r.getItemVisual(a,"colorFromPalette")){var l=r.ensureUniqueItemVisual(a,"style"),u=n.getName(t)||t+"",h=n.count();l[s]=e.getColorFromPalette(u,o,h)}}))}}))}},$g=Math.PI;var Jg=function(){function t(t,e,n,i){this._stageTaskMap=yt(),this.ecInstance=t,this.api=e,n=this._dataProcessorHandlers=n.slice(),i=this._visualHandlers=i.slice(),this._allHandlers=n.concat(i)}return t.prototype.restoreData=function(t,e){t.restoreData(e),this._stageTaskMap.each((function(t){var e=t.overallTask;e&&e.dirty()}))},t.prototype.getPerformArgs=function(t,e){if(t.__pipeline){var n=this._pipelineMap.get(t.__pipeline.id),i=n.context,r=!e&&n.progressiveEnabled&&(!i||i.progressiveRender)&&t.__idxInPipeline>n.blockIndex?n.step:null,o=i&&i.modDataCount;return{step:r,modBy:null!=o?Math.ceil(o/r):null,modDataCount:o}}},t.prototype.getPipeline=function(t){return this._pipelineMap.get(t)},t.prototype.updateStreamModes=function(t,e){var n=this._pipelineMap.get(t.uid),i=t.getData().count(),r=n.progressiveEnabled&&e.incrementalPrepareRender&&i>=n.threshold,o=t.get("large")&&i>=t.get("largeThreshold"),a="mod"===t.get("progressiveChunkMode")?i:null;t.pipelineContext=n.context={progressiveRender:r,modDataCount:a,large:o}},t.prototype.restorePipelines=function(t){var e=this,n=e._pipelineMap=yt();t.eachSeries((function(t){var i=t.getProgressive(),r=t.uid;n.set(r,{id:r,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:i&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(i||700),count:0}),e._pipe(t,t.dataTask)}))},t.prototype.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.api.getModel(),n=this.api;E(this._allHandlers,(function(i){var r=t.get(i.uid)||t.set(i.uid,{}),o="";lt(!(i.reset&&i.overallReset),o),i.reset&&this._createSeriesStageTask(i,r,e,n),i.overallReset&&this._createOverallStageTask(i,r,e,n)}),this)},t.prototype.prepareView=function(t,e,n,i){var r=t.renderTask,o=r.context;o.model=e,o.ecModel=n,o.api=i,r.__block=!t.incrementalPrepareRender,this._pipe(e,r)},t.prototype.performDataProcessorTasks=function(t,e){this._performStageTasks(this._dataProcessorHandlers,t,e,{block:!0})},t.prototype.performVisualTasks=function(t,e,n){this._performStageTasks(this._visualHandlers,t,e,n)},t.prototype._performStageTasks=function(t,e,n,i){i=i||{};var r=!1,o=this;function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}E(t,(function(t,s){if(!i.visualType||i.visualType===t.visualType){var l=o._stageTaskMap.get(t.uid),u=l.seriesTaskMap,h=l.overallTask;if(h){var c,p=h.agentStubMap;p.each((function(t){a(i,t)&&(t.dirty(),c=!0)})),c&&h.dirty(),o.updatePayload(h,n);var d=o.getPerformArgs(h,i.block);p.each((function(t){t.perform(d)})),h.perform(d)&&(r=!0)}else u&&u.each((function(s,l){a(i,s)&&s.dirty();var u=o.getPerformArgs(s,i.block);u.skip=!t.performRawSeries&&e.isSeriesFiltered(s.context.model),o.updatePayload(s,n),s.perform(u)&&(r=!0)}))}})),this.unfinished=r||this.unfinished},t.prototype.performSeriesTasks=function(t){var e;t.eachSeries((function(t){e=t.dataTask.perform()||e})),this.unfinished=e||this.unfinished},t.prototype.plan=function(){this._pipelineMap.each((function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)}))},t.prototype.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},t.prototype._createSeriesStageTask=function(t,e,n,i){var r=this,o=e.seriesTaskMap,a=e.seriesTaskMap=yt(),s=t.seriesType,l=t.getTargetSeries;function u(e){var s=e.uid,l=a.set(s,o&&o.get(s)||xf({plan:iy,reset:ry,count:sy}));l.context={model:e,ecModel:n,api:i,useClearVisual:t.isVisual&&!t.isLayout,plan:t.plan,reset:t.reset,scheduler:r},r._pipe(e,l)}t.createOnAllSeries?n.eachRawSeries(u):s?n.eachRawSeriesByType(s,u):l&&l(n,i).each(u)},t.prototype._createOverallStageTask=function(t,e,n,i){var r=this,o=e.overallTask=e.overallTask||xf({reset:Qg});o.context={ecModel:n,api:i,overallReset:t.overallReset,scheduler:r};var a=o.agentStubMap,s=o.agentStubMap=yt(),l=t.seriesType,u=t.getTargetSeries,h=!0,c=!1,p="";function d(t){var e=t.uid,n=s.set(e,a&&a.get(e)||(c=!0,xf({reset:ty,onDirty:ny})));n.context={model:t,overallProgress:h},n.agent=o,n.__block=h,r._pipe(t,n)}lt(!t.createOnAllSeries,p),l?n.eachRawSeriesByType(l,d):u?u(n,i).each(d):(h=!1,E(n.getSeries(),d)),c&&o.dirty()},t.prototype._pipe=function(t,e){var n=t.uid,i=this._pipelineMap.get(n);!i.head&&(i.head=e),i.tail&&i.tail.pipe(e),i.tail=e,e.__idxInPipeline=i.count++,e.__pipeline=i},t.wrapStageHandler=function(t,e){return X(t)&&(t={overallReset:t,seriesType:ly(t)}),t.uid=Tc("stageHandler"),e&&(t.visualType=e),t},t}();function Qg(t){t.overallReset(t.ecModel,t.api,t.payload)}function ty(t){return t.overallProgress&&ey}function ey(){this.agent.dirty(),this.getDownstream().dirty()}function ny(){this.agent&&this.agent.dirty()}function iy(t){return t.plan?t.plan(t.model,t.ecModel,t.api,t.payload):null}function ry(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=bo(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?z(e,(function(t,e){return ay(e)})):oy}var oy=ay(0);function ay(t){return function(e,n){var i=n.data,r=n.resetDefines[t];if(r&&r.dataEach)for(var o=e.start;o0&&h===r.length-u.length){var c=r.slice(0,h);"data"!==c&&(e.mainType=c,e[u.toLowerCase()]=t,s=!0)}}a.hasOwnProperty(r)&&(n[r]=t,s=!0),s||(i[r]=t)}))}return{cptQuery:e,dataQuery:n,otherQuery:i}},t.prototype.filter=function(t,e){var n=this.eventInfo;if(!n)return!0;var i=n.targetEl,r=n.packedEvent,o=n.model,a=n.view;if(!o||!a)return!0;var s=e.cptQuery,l=e.dataQuery;return u(s,o,"mainType")&&u(s,o,"subType")&&u(s,o,"index","componentIndex")&&u(s,o,"name")&&u(s,o,"id")&&u(l,r,"name")&&u(l,r,"dataIndex")&&u(l,r,"dataType")&&(!a.filterForExposedEvent||a.filterForExposedEvent(t,e.otherQuery,i,r));function u(t,e,n,i){return null==t[n]||e[i||n]===t[n]}},t.prototype.afterTrigger=function(){this.eventInfo=null},t}(),by=["symbol","symbolSize","symbolRotate","symbolOffset"],wy=by.concat(["symbolKeepAspect"]),Sy={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData();if(t.legendIcon&&n.setVisual("legendIcon",t.legendIcon),t.hasSymbolVisual){for(var i={},r={},o=!1,a=0;a=0&&Xy(l)?l:.5,t.createRadialGradient(a,s,0,a,s,l)}(t,e,n):function(t,e,n){var i=null==e.x?0:e.x,r=null==e.x2?1:e.x2,o=null==e.y?0:e.y,a=null==e.y2?0:e.y2;return e.global||(i=i*n.width+n.x,r=r*n.width+n.x,o=o*n.height+n.y,a=a*n.height+n.y),i=Xy(i)?i:0,r=Xy(r)?r:1,o=Xy(o)?o:0,a=Xy(a)?a:0,t.createLinearGradient(i,o,r,a)}(t,e,n),r=e.colorStops,o=0;o0&&(e=i.lineDash,n=i.lineWidth,e&&"solid"!==e&&n>0?"dashed"===e?[4*n,2*n]:"dotted"===e?[n]:j(e)?[e]:Y(e)?e:null:null),o=i.lineDashOffset;if(r){var a=i.strokeNoScale&&t.getLineScale?t.getLineScale():1;a&&1!==a&&(r=z(r,(function(t){return t/a})),o/=a)}return[r,o]}var Ky=new os(!0);function $y(t){var e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth>0))}function Jy(t){return"string"==typeof t&&"none"!==t}function Qy(t){var e=t.fill;return null!=e&&"none"!==e}function tv(t,e){if(null!=e.fillOpacity&&1!==e.fillOpacity){var n=t.globalAlpha;t.globalAlpha=e.fillOpacity*e.opacity,t.fill(),t.globalAlpha=n}else t.fill()}function ev(t,e){if(null!=e.strokeOpacity&&1!==e.strokeOpacity){var n=t.globalAlpha;t.globalAlpha=e.strokeOpacity*e.opacity,t.stroke(),t.globalAlpha=n}else t.stroke()}function nv(t,e,n){var i=ia(e.image,e.__image,n);if(oa(i)){var r=t.createPattern(i,e.repeat||"repeat");if("function"==typeof DOMMatrix&&r&&r.setTransform){var o=new DOMMatrix;o.translateSelf(e.x||0,e.y||0),o.rotateSelf(0,0,(e.rotation||0)*wt),o.scaleSelf(e.scaleX||1,e.scaleY||1),r.setTransform(o)}return r}}var iv=["shadowBlur","shadowOffsetX","shadowOffsetY"],rv=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]];function ov(t,e,n,i,r){var o=!1;if(!i&&e===(n=n||{}))return!1;if(i||e.opacity!==n.opacity){lv(t,r),o=!0;var a=Math.max(Math.min(e.opacity,1),0);t.globalAlpha=isNaN(a)?xa.opacity:a}(i||e.blend!==n.blend)&&(o||(lv(t,r),o=!0),t.globalCompositeOperation=e.blend||xa.blend);for(var s=0;s0&&t.unfinished);t.unfinished||this._zr.flush()}}},e.prototype.getDom=function(){return this._dom},e.prototype.getId=function(){return this.id},e.prototype.getZr=function(){return this._zr},e.prototype.isSSR=function(){return this._ssr},e.prototype.setOption=function(t,e,n){if(!this[Iv])if(this._disposed)nm(this.id);else{var i,r,o;if(q(e)&&(n=e.lazyUpdate,i=e.silent,r=e.replaceMerge,o=e.transition,e=e.notMerge),this[Iv]=!0,!this._model||e){var a=new bd(this._api),s=this._theme,l=this._model=new pd;l.scheduler=this._scheduler,l.ssr=this._ssr,l.init(null,null,null,s,this._locale,a)}this._model.setOption(t,{replaceMerge:r},am);var u={seriesTransition:o,optionChanged:!0};if(n)this[Tv]={silent:i,updateParams:u},this[Iv]=!1,this.getZr().wakeUp();else{try{Ov(this),Ev.update.call(this,null,u)}catch(t){throw this[Tv]=null,this[Iv]=!1,t}this._ssr||this._zr.flush(),this[Tv]=null,this[Iv]=!1,Fv.call(this,i),Gv.call(this,i)}}},e.prototype.setTheme=function(){yo()},e.prototype.getModel=function(){return this._model},e.prototype.getOption=function(){return this._model&&this._model.getOption()},e.prototype.getWidth=function(){return this._zr.getWidth()},e.prototype.getHeight=function(){return this._zr.getHeight()},e.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||r.hasGlobalWindow&&window.devicePixelRatio||1},e.prototype.getRenderedCanvas=function(t){return this.renderToCanvas(t)},e.prototype.renderToCanvas=function(t){t=t||{};var e=this._zr.painter;return e.getRenderedCanvas({backgroundColor:t.backgroundColor||this._model.get("backgroundColor"),pixelRatio:t.pixelRatio||this.getDevicePixelRatio()})},e.prototype.renderToSVGString=function(t){t=t||{};var e=this._zr.painter;return e.renderToString({useViewBox:t.useViewBox})},e.prototype.getSvgDataURL=function(){if(r.svgSupported){var t=this._zr;return E(t.storage.getDisplayList(),(function(t){t.stopAnimation(null,!0)})),t.painter.toDataURL()}},e.prototype.getDataURL=function(t){if(!this._disposed){var e=(t=t||{}).excludeComponents,n=this._model,i=[],r=this;E(e,(function(t){n.eachComponent({mainType:t},(function(t){var e=r._componentsMap[t.__viewId];e.group.ignore||(i.push(e),e.group.ignore=!0)}))}));var o="svg"===this._zr.painter.getType()?this.getSvgDataURL():this.renderToCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return E(i,(function(t){t.group.ignore=!1})),o}nm(this.id)},e.prototype.getConnectedDataURL=function(t){if(!this._disposed){var e="svg"===t.type,n=this.group,i=Math.min,r=Math.max,o=1/0;if(cm[n]){var a=o,s=o,l=-1/0,u=-1/0,c=[],p=t&&t.pixelRatio||this.getDevicePixelRatio();E(hm,(function(o,h){if(o.group===n){var p=e?o.getZr().painter.getSvgDom().innerHTML:o.renderToCanvas(T(t)),d=o.getDom().getBoundingClientRect();a=i(d.left,a),s=i(d.top,s),l=r(d.right,l),u=r(d.bottom,u),c.push({dom:p,left:d.left,top:d.top})}}));var d=(l*=p)-(a*=p),f=(u*=p)-(s*=p),g=h.createCanvas(),y=Gr(g,{renderer:e?"svg":"canvas"});if(y.resize({width:d,height:f}),e){var v="";return E(c,(function(t){var e=t.left-a,n=t.top-s;v+=''+t.dom+""})),y.painter.getSvgRoot().innerHTML=v,t.connectedBackgroundColor&&y.painter.setBackgroundColor(t.connectedBackgroundColor),y.refreshImmediately(),y.painter.toDataURL()}return t.connectedBackgroundColor&&y.add(new zs({shape:{x:0,y:0,width:d,height:f},style:{fill:t.connectedBackgroundColor}})),E(c,(function(t){var e=new ks({style:{x:t.left*p-a,y:t.top*p-s,image:t.dom}});y.add(e)})),y.refreshImmediately(),g.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}nm(this.id)},e.prototype.convertToPixel=function(t,e){return zv(this,"convertToPixel",t,e)},e.prototype.convertFromPixel=function(t,e){return zv(this,"convertFromPixel",t,e)},e.prototype.containPixel=function(t,e){var n;if(!this._disposed)return E(No(this._model,t),(function(t,i){i.indexOf("Models")>=0&&E(t,(function(t){var r=t.coordinateSystem;if(r&&r.containPoint)n=n||!!r.containPoint(e);else if("seriesModels"===i){var o=this._chartsMap[t.__viewId];o&&o.containPoint&&(n=n||o.containPoint(e,t))}else 0}),this)}),this),!!n;nm(this.id)},e.prototype.getVisual=function(t,e){var n=No(this._model,t,{defaultMainType:"series"}),i=n.seriesModel;var r=i.getData(),o=n.hasOwnProperty("dataIndexInside")?n.dataIndexInside:n.hasOwnProperty("dataIndex")?r.indexOfRawIndex(n.dataIndex):null;return null!=o?Iy(r,o,e):Ty(r,e)},e.prototype.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},e.prototype.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]},e.prototype._initEvents=function(){var t,e,n,i=this;E(em,(function(t){var e=function(e){var n,r=i.getModel(),o=e.target,a="globalout"===t;if(a?n={}:o&&ky(o,(function(t){var e=Qs(t);if(e&&null!=e.dataIndex){var i=e.dataModel||r.getSeriesByIndex(e.seriesIndex);return n=i&&i.getDataParams(e.dataIndex,e.dataType,o)||{},!0}if(e.eventData)return n=A({},e.eventData),!0}),!0),n){var s=n.componentType,l=n.componentIndex;"markLine"!==s&&"markPoint"!==s&&"markArea"!==s||(s="series",l=n.seriesIndex);var u=s&&null!=l&&r.getComponent(s,l),h=u&&i["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];0,n.event=e,n.type=t,i._$eventProcessor.eventInfo={targetEl:o,packedEvent:n,model:u,view:h},i.trigger(t,n)}};e.zrEventfulCallAtLast=!0,i._zr.on(t,e,i)})),E(rm,(function(t,e){i._messageCenter.on(e,(function(t){this.trigger(e,t)}),i)})),E(["selectchanged"],(function(t){i._messageCenter.on(t,(function(e){this.trigger(t,e)}),i)})),t=this._messageCenter,e=this,n=this._api,t.on("selectchanged",(function(t){var i=n.getModel();t.isFromClick?(Ay("map","selectchanged",e,i,t),Ay("pie","selectchanged",e,i,t)):"select"===t.fromAction?(Ay("map","selected",e,i,t),Ay("pie","selected",e,i,t)):"unselect"===t.fromAction&&(Ay("map","unselected",e,i,t),Ay("pie","unselected",e,i,t))}))},e.prototype.isDisposed=function(){return this._disposed},e.prototype.clear=function(){this._disposed?nm(this.id):this.setOption({series:[]},!0)},e.prototype.dispose=function(){if(this._disposed)nm(this.id);else{this._disposed=!0,this.getDom()&&Fo(this.getDom(),fm,"");var t=this,e=t._api,n=t._model;E(t._componentsViews,(function(t){t.dispose(n,e)})),E(t._chartsViews,(function(t){t.dispose(n,e)})),t._zr.dispose(),t._dom=t._model=t._chartsMap=t._componentsMap=t._chartsViews=t._componentsViews=t._scheduler=t._api=t._zr=t._throttledZrFlush=t._theme=t._coordSysMgr=t._messageCenter=null,delete hm[t.id]}},e.prototype.resize=function(t){if(!this[Iv])if(this._disposed)nm(this.id);else{this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var n=e.resetOption("media"),i=t&&t.silent;this[Tv]&&(null==i&&(i=this[Tv].silent),n=!0,this[Tv]=null),this[Iv]=!0;try{n&&Ov(this),Ev.update.call(this,{type:"resize",animation:A({duration:0},t&&t.animation)})}catch(t){throw this[Iv]=!1,t}this[Iv]=!1,Fv.call(this,i),Gv.call(this,i)}}},e.prototype.showLoading=function(t,e){if(this._disposed)nm(this.id);else if(q(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),um[t]){var n=um[t](this._api,e),i=this._zr;this._loadingFX=n,i.add(n)}},e.prototype.hideLoading=function(){this._disposed?nm(this.id):(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},e.prototype.makeActionFromEvent=function(t){var e=A({},t);return e.type=rm[t.type],e},e.prototype.dispatchAction=function(t,e){if(this._disposed)nm(this.id);else if(q(e)||(e={silent:!!e}),im[t.type]&&this._model)if(this[Iv])this._pendingActions.push(t);else{var n=e.silent;Bv.call(this,t,n);var i=e.flush;i?this._zr.flush():!1!==i&&r.browser.weChat&&this._throttledZrFlush(),Fv.call(this,n),Gv.call(this,n)}},e.prototype.updateLabelLayout=function(){xv.trigger("series:layoutlabels",this._model,this._api,{updatedSeries:[]})},e.prototype.appendData=function(t){if(this._disposed)nm(this.id);else{var e=t.seriesIndex,n=this.getModel().getSeriesByIndex(e);0,n.appendData(t),this._scheduler.unfinished=!0,this.getZr().wakeUp()}},e.internalField=function(){function t(t){t.clearColorPalette(),t.eachSeries((function(t){t.clearColorPalette()}))}function e(t){for(var e=[],n=t.currentStates,i=0;i0?{duration:o,delay:i.get("delay"),easing:i.get("easing")}:null;n.eachRendered((function(t){if(t.states&&t.states.emphasis){if(yh(t))return;if(t instanceof Is&&function(t){var e=il(t);e.normalFill=t.style.fill,e.normalStroke=t.style.stroke;var n=t.states.select||{};e.selectFill=n.style&&n.style.fill||null,e.selectStroke=n.style&&n.style.stroke||null}(t),t.__dirty){var n=t.prevStates;n&&t.useStates(n)}if(r){t.stateTransition=a;var i=t.getTextContent(),o=t.getTextGuideLine();i&&(i.stateTransition=a),o&&(o.stateTransition=a)}t.__dirty&&e(t)}}))}Ov=function(t){var e=t._scheduler;e.restorePipelines(t._model),e.prepareStageTasks(),Rv(t,!0),Rv(t,!1),e.plan()},Rv=function(t,e){for(var n=t._model,i=t._scheduler,r=e?t._componentsViews:t._chartsViews,o=e?t._componentsMap:t._chartsMap,a=t._zr,s=t._api,l=0;le.get("hoverLayerThreshold")&&!r.node&&!r.worker&&e.eachSeries((function(e){if(!e.preventUsingHoverLayer){var n=t._chartsMap[e.__viewId];n.__alive&&n.eachRendered((function(t){t.states.emphasis&&(t.states.emphasis.hoverLayer=!0)}))}}))}(t,e),xv.trigger("series:afterupdate",e,n,l)},qv=function(t){t[Cv]=!0,t.getZr().wakeUp()},Kv=function(t){t[Cv]&&(t.getZr().storage.traverse((function(t){yh(t)||e(t)})),t[Cv]=!1)},Zv=function(t){return new(function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return n(i,e),i.prototype.getCoordinateSystems=function(){return t._coordSysMgr.getCoordinateSystems()},i.prototype.getComponentByElement=function(e){for(;e;){var n=e.__ecComponentInfo;if(null!=n)return t._model.getComponent(n.mainType,n.index);e=e.parent}},i.prototype.enterEmphasis=function(e,n){kl(e,n),qv(t)},i.prototype.leaveEmphasis=function(e,n){Ll(e,n),qv(t)},i.prototype.enterBlur=function(e){Pl(e),qv(t)},i.prototype.leaveBlur=function(e){Ol(e),qv(t)},i.prototype.enterSelect=function(e){Rl(e),qv(t)},i.prototype.leaveSelect=function(e){Nl(e),qv(t)},i.prototype.getModel=function(){return t.getModel()},i.prototype.getViewOfComponentModel=function(e){return t.getViewOfComponentModel(e)},i.prototype.getViewOfSeriesModel=function(e){return t.getViewOfSeriesModel(e)},i}(vd))(t)},jv=function(t){function e(t,e){for(var n=0;n=0)){Dm.push(n);var o=Jg.wrapStageHandler(n,r);o.__prio=e,o.__raw=n,t.push(o)}}function km(t,e){um[t]=e}function Lm(t,e,n){var i=bv("registerMap");i&&i(t,e,n)}var Pm=function(t){var e=(t=T(t)).type,n="";e||vo(n);var i=e.split(":");2!==i.length&&vo(n);var r=!1;"echarts"===i[0]&&(e=i[1],r=!0),t.__isBuiltIn=r,Nf.set(e,t)};Cm(wv,Zg),Cm(Sv,qg),Cm(Sv,Kg),Cm(wv,Sy),Cm(Sv,My),Cm(7e3,(function(t,e){t.eachRawSeries((function(n){if(!t.isSeriesFiltered(n)){var i=n.getData();i.hasItemVisual()&&i.each((function(t){var n=i.getItemVisual(t,"decal");n&&(i.ensureUniqueItemVisual(t,"style").decal=gv(n,e))}));var r=i.getVisual("decal");if(r)i.getVisual("style").decal=gv(r,e)}}))})),xm(Wd),_m(900,(function(t){var e=yt();t.eachSeries((function(t){var n=t.get("stack");if(n){var i=e.get(n)||e.set(n,[]),r=t.getData(),o={stackResultDimension:r.getCalculationInfo("stackResultDimension"),stackedOverDimension:r.getCalculationInfo("stackedOverDimension"),stackedDimension:r.getCalculationInfo("stackedDimension"),stackedByDimension:r.getCalculationInfo("stackedByDimension"),isStackedByIndex:r.getCalculationInfo("isStackedByIndex"),data:r,seriesModel:t};if(!o.stackedDimension||!o.isStackedByIndex&&!o.stackedByDimension)return;i.length&&r.setCalculationInfo("stackedOnSeries",i[i.length-1].seriesModel),i.push(o)}})),e.each(Hd)})),km("default",(function(t,e){k(e=e||{},{text:"loading",textColor:"#000",fontSize:12,fontWeight:"normal",fontStyle:"normal",fontFamily:"sans-serif",maskColor:"rgba(255, 255, 255, 0.8)",showSpinner:!0,color:"#5470c6",spinnerRadius:10,lineWidth:5,zlevel:0});var n=new zr,i=new zs({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4});n.add(i);var r,o=new Fs({style:{text:e.text,fill:e.textColor,fontSize:e.fontSize,fontWeight:e.fontWeight,fontStyle:e.fontStyle,fontFamily:e.fontFamily},zlevel:e.zlevel,z:10001}),a=new zs({style:{fill:"none"},textContent:o,textConfig:{position:"right",distance:10},zlevel:e.zlevel,z:10001});return n.add(a),e.showSpinner&&((r=new Qu({shape:{startAngle:-$g/2,endAngle:-$g/2+.1,r:e.spinnerRadius},style:{stroke:e.color,lineCap:"round",lineWidth:e.lineWidth},zlevel:e.zlevel,z:10001})).animateShape(!0).when(1e3,{endAngle:3*$g/2}).start("circularInOut"),r.animateShape(!0).when(1e3,{startAngle:3*$g/2}).delay(300).start("circularInOut"),n.add(r)),n.resize=function(){var n=o.getBoundingRect().width,s=e.showSpinner?e.spinnerRadius:0,l=(t.getWidth()-2*s-(e.showSpinner&&n?10:0)-n)/2-(e.showSpinner&&n?0:5+n/2)+(e.showSpinner?0:n/2)+(n?0:s),u=t.getHeight()/2;e.showSpinner&&r.setShape({cx:l,cy:u}),a.setShape({x:l-s,y:u-s,width:2*s,height:2*s}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},n.resize(),n})),Mm({type:ll,event:ll,update:ll},bt),Mm({type:ul,event:ul,update:ul},bt),Mm({type:hl,event:hl,update:hl},bt),Mm({type:cl,event:cl,update:cl},bt),Mm({type:pl,event:pl,update:pl},bt),mm("light",fy),mm("dark",xy);var Om=[],Rm={registerPreprocessor:xm,registerProcessor:_m,registerPostInit:bm,registerPostUpdate:wm,registerUpdateLifecycle:Sm,registerAction:Mm,registerCoordinateSystem:Im,registerLayout:Tm,registerVisual:Cm,registerTransform:Pm,registerLoading:km,registerMap:Lm,registerImpl:function(t,e){_v[t]=e},PRIORITY:Mv,ComponentModel:Rp,ComponentView:Tg,SeriesModel:mg,ChartView:kg,registerComponentModel:function(t){Rp.registerClass(t)},registerComponentView:function(t){Tg.registerClass(t)},registerSeriesModel:function(t){mg.registerClass(t)},registerChartView:function(t){kg.registerClass(t)},registerSubTypeDefaulter:function(t,e){Rp.registerSubTypeDefaulter(t,e)},registerPainter:function(t,e){Wr(t,e)}};function Nm(t){Y(t)?E(t,(function(t){Nm(t)})):P(Om,t)>=0||(Om.push(t),X(t)&&(t={install:t}),t.install(Rm))}function Em(t){return null==t?0:t.length||1}function zm(t){return t}var Vm=function(){function t(t,e,n,i,r,o){this._old=t,this._new=e,this._oldKeyGetter=n||zm,this._newKeyGetter=i||zm,this.context=r,this._diffModeMultiple="multiple"===o}return t.prototype.add=function(t){return this._add=t,this},t.prototype.update=function(t){return this._update=t,this},t.prototype.updateManyToOne=function(t){return this._updateManyToOne=t,this},t.prototype.updateOneToMany=function(t){return this._updateOneToMany=t,this},t.prototype.updateManyToMany=function(t){return this._updateManyToMany=t,this},t.prototype.remove=function(t){return this._remove=t,this},t.prototype.execute=function(){this[this._diffModeMultiple?"_executeMultiple":"_executeOneToOne"]()},t.prototype._executeOneToOne=function(){var t=this._old,e=this._new,n={},i=new Array(t.length),r=new Array(e.length);this._initIndexMap(t,null,i,"_oldKeyGetter"),this._initIndexMap(e,n,r,"_newKeyGetter");for(var o=0;o1){var u=s.shift();1===s.length&&(n[a]=s[0]),this._update&&this._update(u,o)}else 1===l?(n[a]=null,this._update&&this._update(s,o)):this._remove&&this._remove(o)}this._performRestAdd(r,n)},t.prototype._executeMultiple=function(){var t=this._old,e=this._new,n={},i={},r=[],o=[];this._initIndexMap(t,n,r,"_oldKeyGetter"),this._initIndexMap(e,i,o,"_newKeyGetter");for(var a=0;a1&&1===c)this._updateManyToOne&&this._updateManyToOne(u,l),i[s]=null;else if(1===h&&c>1)this._updateOneToMany&&this._updateOneToMany(u,l),i[s]=null;else if(1===h&&1===c)this._update&&this._update(u,l),i[s]=null;else if(h>1&&c>1)this._updateManyToMany&&this._updateManyToMany(u,l),i[s]=null;else if(h>1)for(var p=0;p1)for(var a=0;a30}var Km,$m,Jm,Qm,tx,ex,nx,ix=q,rx=z,ox="undefined"==typeof Int32Array?Array:Int32Array,ax=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_dimSummary","userOutput","_rawData","_dimValueGetter","_nameDimIdx","_idDimIdx","_nameRepeatCount"],sx=["_approximateExtent"],lx=function(){function t(t,e){var n;this.type="list",this._dimOmitted=!1,this._nameList=[],this._idList=[],this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._approximateExtent={},this._calculationInfo={},this.hasItemOption=!1,this.TRANSFERABLE_METHODS=["cloneShallow","downSample","lttbDownSample","map"],this.CHANGABLE_METHODS=["filterSelf","selectRange"],this.DOWNSAMPLE_METHODS=["downSample","lttbDownSample"];var i=!1;Um(t)?(n=t.dimensions,this._dimOmitted=t.isDimensionOmitted(),this._schema=t):(i=!0,n=t),n=n||["x","y"];for(var r={},o=[],a={},s=!1,l={},u=0;u=e)){var n=this._store.getProvider();this._updateOrdinalMeta();var i=this._nameList,r=this._idList;if(n.getSource().sourceFormat===Bp&&!n.pure)for(var o=[],a=t;a0},t.prototype.ensureUniqueItemVisual=function(t,e){var n=this._itemVisuals,i=n[t];i||(i=n[t]={});var r=i[e];return null==r&&(Y(r=this.getVisual(e))?r=r.slice():ix(r)&&(r=A({},r)),i[e]=r),r},t.prototype.setItemVisual=function(t,e,n){var i=this._itemVisuals[t]||{};this._itemVisuals[t]=i,ix(e)?A(i,e):i[e]=n},t.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},t.prototype.setLayout=function(t,e){ix(t)?A(this._layout,t):this._layout[t]=e},t.prototype.getLayout=function(t){return this._layout[t]},t.prototype.getItemLayout=function(t){return this._itemLayouts[t]},t.prototype.setItemLayout=function(t,e,n){this._itemLayouts[t]=n?A(this._itemLayouts[t]||{},e):e},t.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},t.prototype.setItemGraphicEl=function(t,e){var n=this.hostModel&&this.hostModel.seriesIndex;tl(n,this.dataType,t,e),this._graphicEls[t]=e},t.prototype.getItemGraphicEl=function(t){return this._graphicEls[t]},t.prototype.eachItemGraphicEl=function(t,e){E(this._graphicEls,(function(n,i){n&&t&&t.call(e,n,i)}))},t.prototype.cloneShallow=function(e){return e||(e=new t(this._schema?this._schema:rx(this.dimensions,this._getDimInfo,this),this.hostModel)),tx(e,this),e._store=this._store,e},t.prototype.wrapMethod=function(t,e){var n=this[t];X(n)&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=n.apply(this,arguments);return e.apply(this,[t].concat(at(arguments)))})},t.internalField=(Km=function(t){var e=t._invertedIndicesMap;E(e,(function(n,i){var r=t._dimInfos[i],o=r.ordinalMeta,a=t._store;if(o){n=e[i]=new ox(o.categories.length);for(var s=0;s1&&(s+="__ec__"+u),i[e]=s}})),t}();function ux(t,e){Kd(t)||(t=Jd(t));var n=(e=e||{}).coordDimensions||[],i=e.dimensionsDefine||t.dimensionsDefine||[],r=yt(),o=[],a=function(t,e,n,i){var r=Math.max(t.dimensionsDetectedCount||1,e.length,n.length,i||0);return E(e,(function(t){var e;q(t)&&(e=t.dimsDef)&&(r=Math.max(r,e.length))})),r}(t,n,i,e.dimensionsCount),s=e.canOmitUnusedDimensions&&qm(a),l=i===t.dimensionsDefine,u=l?jm(t):Zm(i),h=e.encodeDefine;!h&&e.encodeDefaulter&&(h=e.encodeDefaulter(t,a));for(var c=yt(h),p=new Wf(a),d=0;d0&&(i.name=r+(o-1)),o++,e.set(r,o)}}(o),new Xm({source:t,dimensions:o,fullDimensionCount:a,dimensionOmitted:s})}function hx(t,e,n){if(n||e.hasKey(t)){for(var i=0;e.hasKey(t+i);)i++;t+=i}return e.set(t,!0),t}var cx=function(t){this.coordSysDims=[],this.axisMap=yt(),this.categoryAxisMap=yt(),this.coordSysName=t};var px={cartesian2d:function(t,e,n,i){var r=t.getReferringComponents("xAxis",zo).models[0],o=t.getReferringComponents("yAxis",zo).models[0];e.coordSysDims=["x","y"],n.set("x",r),n.set("y",o),dx(r)&&(i.set("x",r),e.firstCategoryDimIndex=0),dx(o)&&(i.set("y",o),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=1))},singleAxis:function(t,e,n,i){var r=t.getReferringComponents("singleAxis",zo).models[0];e.coordSysDims=["single"],n.set("single",r),dx(r)&&(i.set("single",r),e.firstCategoryDimIndex=0)},polar:function(t,e,n,i){var r=t.getReferringComponents("polar",zo).models[0],o=r.findAxisModel("radiusAxis"),a=r.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],n.set("radius",o),n.set("angle",a),dx(o)&&(i.set("radius",o),e.firstCategoryDimIndex=0),dx(a)&&(i.set("angle",a),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=1))},geo:function(t,e,n,i){e.coordSysDims=["lng","lat"]},parallel:function(t,e,n,i){var r=t.ecModel,o=r.getComponent("parallel",t.get("parallelIndex")),a=e.coordSysDims=o.dimensions.slice();E(o.parallelAxisIndex,(function(t,o){var s=r.getComponent("parallelAxis",t),l=a[o];n.set(l,s),dx(s)&&(i.set(l,s),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=o))}))}};function dx(t){return"category"===t.get("type")}function fx(t,e,n){var i,r,o,a=(n=n||{}).byIndex,s=n.stackedCoordDimension;!function(t){return!Um(t.schema)}(e)?(r=e.schema,i=r.dimensions,o=e.store):i=e;var l,u,h,c,p=!(!t||!t.get("stack"));if(E(i,(function(t,e){U(t)&&(i[e]=t={name:t}),p&&!t.isExtraCoord&&(a||l||!t.ordinalMeta||(l=t),u||"ordinal"===t.type||"time"===t.type||s&&s!==t.coordDim||(u=t))})),!u||a||l||(a=!0),u){h="__\0ecstackresult_"+t.id,c="__\0ecstackedover_"+t.id,l&&(l.createInvertedIndices=!0);var d=u.coordDim,f=u.type,g=0;E(i,(function(t){t.coordDim===d&&g++}));var y={name:h,coordDim:d,coordDimIndex:g,type:f,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:i.length},v={name:c,coordDim:c,coordDimIndex:g+1,type:f,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:i.length+1};r?(o&&(y.storeDimIndex=o.ensureCalculationDimension(c,f),v.storeDimIndex=o.ensureCalculationDimension(h,f)),r.appendCalculationDimension(y),r.appendCalculationDimension(v)):(i.push(y),i.push(v))}return{stackedDimension:u&&u.name,stackedByDimension:l&&l.name,isStackedByIndex:a,stackedOverDimension:c,stackResultDimension:h}}function gx(t,e){return!!e&&e===t.getCalculationInfo("stackedDimension")}function yx(t,e){return gx(t,e)?t.getCalculationInfo("stackResultDimension"):e}function vx(t,e,n){n=n||{};var i,r=e.getSourceManager(),o=!1;t?(o=!0,i=Jd(t)):o=(i=r.getSource()).sourceFormat===Bp;var a=function(t){var e=t.get("coordinateSystem"),n=new cx(e),i=px[e];if(i)return i(t,n,n.axisMap,n.categoryAxisMap),n}(e),s=function(t,e){var n,i=t.get("coordinateSystem"),r=xd.get(i);return e&&e.coordSysDims&&(n=z(e.coordSysDims,(function(t){var n={name:t},i=e.axisMap.get(t);if(i){var r=i.get("type");n.type=Gm(r)}return n}))),n||(n=r&&(r.getDimensionsInfo?r.getDimensionsInfo():r.dimensions.slice())||["x","y"]),n}(e,a),l=n.useEncodeDefaulter,u=X(l)?l:l?H($p,s,e):null,h=ux(i,{coordDimensions:s,generateCoord:n.generateCoord,encodeDefine:e.getEncode(),encodeDefaulter:u,canOmitUnusedDimensions:!o}),c=function(t,e,n){var i,r;return n&&E(t,(function(t,o){var a=t.coordDim,s=n.categoryAxisMap.get(a);s&&(null==i&&(i=o),t.ordinalMeta=s.getOrdinalMeta(),e&&(t.createInvertedIndices=!0)),null!=t.otherDims.itemName&&(r=!0)})),r||null==i||(t[i].otherDims.itemName=0),i}(h.dimensions,n.createInvertedIndices,a),p=o?null:r.getSharedDataStore(h),d=fx(e,{schema:h,store:p}),f=new lx(h,e);f.setCalculationInfo(d);var g=null!=c&&function(t){if(t.sourceFormat===Bp){var e=function(t){var e=0;for(;ee[1]&&(e[1]=t[1])},t.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},t.prototype.getExtent=function(){return this._extent.slice()},t.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=t),isNaN(e)||(n[1]=e)},t.prototype.isInExtentRange=function(t){return this._extent[0]<=t&&this._extent[1]>=t},t.prototype.isBlank=function(){return this._isBlank},t.prototype.setBlank=function(t){this._isBlank=t},t}();$o(mx);var xx=0,_x=function(){function t(t){this.categories=t.categories||[],this._needCollect=t.needCollect,this._deduplication=t.deduplication,this.uid=++xx}return t.createByAxisModel=function(e){var n=e.option,i=n.data,r=i&&z(i,bx);return new t({categories:r,needCollect:!r,deduplication:!1!==n.dedplication})},t.prototype.getOrdinal=function(t){return this._getOrCreateMap().get(t)},t.prototype.parseAndCollect=function(t){var e,n=this._needCollect;if(!U(t)&&!n)return t;if(n&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var i=this._getOrCreateMap();return null==(e=i.get(t))&&(n?(e=this.categories.length,this.categories[e]=t,i.set(t,e)):e=NaN),e},t.prototype._getOrCreateMap=function(){return this._map||(this._map=yt(this.categories))},t}();function bx(t){return q(t)&&null!=t.value?t.value:t+""}function Sx(t){return"interval"===t.type||"log"===t.type}function Mx(t,e,n,i){var r={},o=t[1]-t[0],a=r.interval=so(o/e,!0);null!=n&&ai&&(a=r.interval=i);var s=r.intervalPrecision=Tx(a);return function(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),Cx(t,0,e),Cx(t,1,e),t[0]>t[1]&&(t[0]=t[1])}(r.niceTickExtent=[Zr(Math.ceil(t[0]/a)*a,s),Zr(Math.floor(t[1]/a)*a,s)],t),r}function Ix(t){var e=Math.pow(10,ao(t)),n=t/e;return n?2===n?n=3:3===n?n=5:n*=2:n=1,Zr(n*e)}function Tx(t){return qr(t)+2}function Cx(t,e,n){t[e]=Math.max(Math.min(t[e],n[1]),n[0])}function Dx(t,e){return t>=e[0]&&t<=e[1]}function Ax(t,e){return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])}function kx(t,e){return t*(e[1]-e[0])+e[0]}var Lx=function(t){function e(e){var n=t.call(this,e)||this;n.type="ordinal";var i=n.getSetting("ordinalMeta");return i||(i=new _x({})),Y(i)&&(i=new _x({categories:z(i,(function(t){return q(t)?t.value:t}))})),n._ordinalMeta=i,n._extent=n.getSetting("extent")||[0,i.categories.length-1],n}return n(e,t),e.prototype.parse=function(t){return null==t?NaN:U(t)?this._ordinalMeta.getOrdinal(t):Math.round(t)},e.prototype.contain=function(t){return Dx(t=this.parse(t),this._extent)&&null!=this._ordinalMeta.categories[t]},e.prototype.normalize=function(t){return Ax(t=this._getTickNumber(this.parse(t)),this._extent)},e.prototype.scale=function(t){return t=Math.round(kx(t,this._extent)),this.getRawOrdinalNumber(t)},e.prototype.getTicks=function(){for(var t=[],e=this._extent,n=e[0];n<=e[1];)t.push({value:n}),n++;return t},e.prototype.getMinorTicks=function(t){},e.prototype.setSortInfo=function(t){if(null!=t){for(var e=t.ordinalNumbers,n=this._ordinalNumbersByTick=[],i=this._ticksByOrdinalNumber=[],r=0,o=this._ordinalMeta.categories.length,a=Math.min(o,e.length);r=0&&t=0&&t=t},e.prototype.getOrdinalMeta=function(){return this._ordinalMeta},e.prototype.calcNiceTicks=function(){},e.prototype.calcNiceExtent=function(){},e.type="ordinal",e}(mx);mx.registerClass(Lx);var Px=Zr,Ox=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="interval",e._interval=0,e._intervalPrecision=2,e}return n(e,t),e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return Dx(t,this._extent)},e.prototype.normalize=function(t){return Ax(t,this._extent)},e.prototype.scale=function(t){return kx(t,this._extent)},e.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=parseFloat(t)),isNaN(e)||(n[1]=parseFloat(e))},e.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),this.setExtent(e[0],e[1])},e.prototype.getInterval=function(){return this._interval},e.prototype.setInterval=function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=Tx(t)},e.prototype.getTicks=function(t){var e=this._interval,n=this._extent,i=this._niceExtent,r=this._intervalPrecision,o=[];if(!e)return o;n[0]1e4)return[];var s=o.length?o[o.length-1].value:i[1];return n[1]>s&&(t?o.push({value:Px(s+e,r)}):o.push({value:n[1]})),o},e.prototype.getMinorTicks=function(t){for(var e=this.getTicks(!0),n=[],i=this.getExtent(),r=1;ri[0]&&h0&&(o=null===o?s:Math.min(o,s))}n[i]=o}}return n}(t),n=[];return E(t,(function(t){var i,r=t.coordinateSystem.getBaseAxis(),o=r.getExtent();if("category"===r.type)i=r.getBandWidth();else if("value"===r.type||"time"===r.type){var a=r.dim+"_"+r.index,s=e[a],l=Math.abs(o[1]-o[0]),u=r.scale.getExtent(),h=Math.abs(u[1]-u[0]);i=s?l/h*s:l}else{var c=t.getData();i=Math.abs(o[1]-o[0])/c.count()}var p=Ur(t.get("barWidth"),i),d=Ur(t.get("barMaxWidth"),i),f=Ur(t.get("barMinWidth")||(Ux(t)?.5:1),i),g=t.get("barGap"),y=t.get("barCategoryGap");n.push({bandWidth:i,barWidth:p,barMaxWidth:d,barMinWidth:f,barGap:g,barCategoryGap:y,axisKey:Bx(r),stackId:Vx(t)})})),Wx(n)}function Wx(t){var e={};E(t,(function(t,n){var i=t.axisKey,r=t.bandWidth,o=e[i]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:null,gap:"20%",stacks:{}},a=o.stacks;e[i]=o;var s=t.stackId;a[s]||o.autoWidthCount++,a[s]=a[s]||{width:0,maxWidth:0};var l=t.barWidth;l&&!a[s].width&&(a[s].width=l,l=Math.min(o.remainedWidth,l),o.remainedWidth-=l);var u=t.barMaxWidth;u&&(a[s].maxWidth=u);var h=t.barMinWidth;h&&(a[s].minWidth=h);var c=t.barGap;null!=c&&(o.gap=c);var p=t.barCategoryGap;null!=p&&(o.categoryGap=p)}));var n={};return E(e,(function(t,e){n[e]={};var i=t.stacks,r=t.bandWidth,o=t.categoryGap;if(null==o){var a=G(i).length;o=Math.max(35-4*a,15)+"%"}var s=Ur(o,r),l=Ur(t.gap,1),u=t.remainedWidth,h=t.autoWidthCount,c=(u-s)/(h+(h-1)*l);c=Math.max(c,0),E(i,(function(t){var e=t.maxWidth,n=t.minWidth;if(t.width){i=t.width;e&&(i=Math.min(i,e)),n&&(i=Math.max(i,n)),t.width=i,u-=i+l*i,h--}else{var i=c;e&&ei&&(i=n),i!==c&&(t.width=i,u-=i+l*i,h--)}})),c=(u-s)/(h+(h-1)*l),c=Math.max(c,0);var p,d=0;E(i,(function(t,e){t.width||(t.width=c),p=t,d+=t.width*(1+l)})),p&&(d-=p.width*l);var f=-d/2;E(i,(function(t,i){n[e][i]=n[e][i]||{bandWidth:r,offset:f,width:t.width},f+=t.width*(1+l)}))})),n}function Hx(t,e){var n=Fx(t,e),i=Gx(n);E(n,(function(t){var e=t.getData(),n=t.coordinateSystem.getBaseAxis(),r=Vx(t),o=i[Bx(n)][r],a=o.offset,s=o.width;e.setLayout({bandWidth:o.bandWidth,offset:a,size:s})}))}function Yx(t){return{seriesType:t,plan:Cg(),reset:function(t){if(Xx(t)){var e=t.getData(),n=t.coordinateSystem,i=n.getBaseAxis(),r=n.getOtherAxis(i),o=e.getDimensionIndex(e.mapDimension(r.dim)),a=e.getDimensionIndex(e.mapDimension(i.dim)),s=t.get("showBackground",!0),l=e.mapDimension(r.dim),u=e.getCalculationInfo("stackResultDimension"),h=gx(e,l)&&!!e.getCalculationInfo("stackedOnSeries"),c=r.isHorizontal(),p=function(t,e){return e.toGlobalCoord(e.dataToCoord("log"===e.type?1:0))}(0,r),d=Ux(t),f=t.get("barMinHeight")||0,g=u&&e.getDimensionIndex(u),y=e.getLayout("size"),v=e.getLayout("offset");return{progress:function(t,e){for(var i,r=t.count,l=d&&Ex(3*r),u=d&&s&&Ex(3*r),m=d&&Ex(r),x=n.master.getRect(),_=c?x.width:x.height,b=e.getStore(),w=0;null!=(i=t.next());){var S=b.get(h?g:o,i),M=b.get(a,i),I=p,T=void 0;h&&(T=+S-b.get(o,i));var C=void 0,D=void 0,A=void 0,k=void 0;if(c){var L=n.dataToPoint([S,M]);if(h)I=n.dataToPoint([T,M])[0];C=I,D=L[1]+v,A=L[0]-I,k=y,Math.abs(A)0)for(var s=0;s=0;--s)if(l[u]){o=l[u];break}o=o||a.none}if(Y(o)){var h=null==t.level?0:t.level>=0?t.level:o.length+t.level;o=o[h=Math.min(h,o.length-1)]}}return qc(new Date(t.value),o,r,i)}(t,e,n,this.getSetting("locale"),i)},e.prototype.getTicks=function(){var t=this._interval,e=this._extent,n=[];if(!t)return n;n.push({value:e[0],level:0});var i=this.getSetting("useUTC"),r=function(t,e,n,i){var r=1e4,o=Xc,a=0;function s(t,e,n,r,o,a,s){for(var l=new Date(e),u=e,h=l[r]();u1&&0===u&&o.unshift({value:o[0].value-p})}}for(u=0;u=i[0]&&v<=i[1]&&c++)}var m=(i[1]-i[0])/e;if(c>1.5*m&&p>m/1.5)break;if(u.push(g),c>m||t===o[d])break}h=[]}}0;var x=B(z(u,(function(t){return B(t,(function(t){return t.value>=i[0]&&t.value<=i[1]&&!t.notAdd}))})),(function(t){return t.length>0})),_=[],b=x.length-1;for(d=0;dn&&(this._approxInterval=n);var o=jx.length,a=Math.min(function(t,e,n,i){for(;n>>1;t[r][1]16?16:t>7.5?7:t>3.5?4:t>1.5?2:1}function Kx(t){return(t/=2592e6)>6?6:t>3?3:t>2?2:1}function $x(t){return(t/=Vc)>12?12:t>6?6:t>3.5?4:t>2?2:1}function Jx(t,e){return(t/=e?zc:Ec)>30?30:t>20?20:t>15?15:t>10?10:t>5?5:t>2?2:1}function Qx(t){return so(t,!0)}function t_(t,e,n){var i=new Date(t);switch(Zc(e)){case"year":case"month":i[ap(n)](0);case"day":i[sp(n)](1);case"hour":i[lp(n)](0);case"minute":i[up(n)](0);case"second":i[hp(n)](0),i[cp(n)](0)}return i.getTime()}mx.registerClass(Zx);var e_=mx.prototype,n_=Ox.prototype,i_=Zr,r_=Math.floor,o_=Math.ceil,a_=Math.pow,s_=Math.log,l_=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="log",e.base=10,e._originalScale=new Ox,e._interval=0,e}return n(e,t),e.prototype.getTicks=function(t){var e=this._originalScale,n=this._extent,i=e.getExtent();return z(n_.getTicks.call(this,t),(function(t){var e=t.value,r=Zr(a_(this.base,e));return r=e===n[0]&&this._fixMin?h_(r,i[0]):r,{value:r=e===n[1]&&this._fixMax?h_(r,i[1]):r}}),this)},e.prototype.setExtent=function(t,e){var n=s_(this.base);t=s_(Math.max(0,t))/n,e=s_(Math.max(0,e))/n,n_.setExtent.call(this,t,e)},e.prototype.getExtent=function(){var t=this.base,e=e_.getExtent.call(this);e[0]=a_(t,e[0]),e[1]=a_(t,e[1]);var n=this._originalScale.getExtent();return this._fixMin&&(e[0]=h_(e[0],n[0])),this._fixMax&&(e[1]=h_(e[1],n[1])),e},e.prototype.unionExtent=function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=s_(t[0])/s_(e),t[1]=s_(t[1])/s_(e),e_.unionExtent.call(this,t)},e.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},e.prototype.calcNiceTicks=function(t){t=t||10;var e=this._extent,n=e[1]-e[0];if(!(n===1/0||n<=0)){var i=oo(n);for(t/n*i<=.5&&(i*=10);!isNaN(i)&&Math.abs(i)<1&&Math.abs(i)>0;)i*=10;var r=[Zr(o_(e[0]/i)*i),Zr(r_(e[1]/i)*i)];this._interval=i,this._niceExtent=r}},e.prototype.calcNiceExtent=function(t){n_.calcNiceExtent.call(this,t),this._fixMin=t.fixMin,this._fixMax=t.fixMax},e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return Dx(t=s_(t)/s_(this.base),this._extent)},e.prototype.normalize=function(t){return Ax(t=s_(t)/s_(this.base),this._extent)},e.prototype.scale=function(t){return t=kx(t,this._extent),a_(this.base,t)},e.type="log",e}(mx),u_=l_.prototype;function h_(t,e){return i_(t,qr(e))}u_.getMinorTicks=n_.getMinorTicks,u_.getLabel=n_.getLabel,mx.registerClass(l_);var c_=function(){function t(t,e,n){this._prepareParams(t,e,n)}return t.prototype._prepareParams=function(t,e,n){n[1]0&&s>0&&!l&&(a=0),a<0&&s<0&&!u&&(s=0));var c=this._determinedMin,p=this._determinedMax;return null!=c&&(a=c,l=!0),null!=p&&(s=p,u=!0),{min:a,max:s,minFixed:l,maxFixed:u,isBlank:h}},t.prototype.modifyDataMinMax=function(t,e){this[d_[t]]=e},t.prototype.setDeterminedMinMax=function(t,e){var n=p_[t];this[n]=e},t.prototype.freeze=function(){this.frozen=!0},t}(),p_={min:"_determinedMin",max:"_determinedMax"},d_={min:"_dataMin",max:"_dataMax"};function f_(t,e,n){var i=t.rawExtentInfo;return i||(i=new c_(t,e,n),t.rawExtentInfo=i,i)}function g_(t,e){return null==e?null:nt(e)?NaN:t.parse(e)}function y_(t,e){var n=t.type,i=f_(t,e,t.getExtent()).calculate();t.setBlank(i.isBlank);var r=i.min,o=i.max,a=e.ecModel;if(a&&"time"===n){var s=Fx("bar",a),l=!1;if(E(s,(function(t){l=l||t.getBaseAxis()===e.axis})),l){var u=Gx(s),h=function(t,e,n,i){var r=n.axis.getExtent(),o=r[1]-r[0],a=function(t,e,n){if(t&&e){var i=t[Bx(e)];return null!=i&&null!=n?i[Vx(n)]:i}}(i,n.axis);if(void 0===a)return{min:t,max:e};var s=1/0;E(a,(function(t){s=Math.min(t.offset,s)}));var l=-1/0;E(a,(function(t){l=Math.max(t.offset+t.width,l)})),s=Math.abs(s),l=Math.abs(l);var u=s+l,h=e-t,c=h/(1-(s+l)/o)-h;return e+=c*(l/u),t-=c*(s/u),{min:t,max:e}}(r,o,e,u);r=h.min,o=h.max}}return{extent:[r,o],fixMin:i.minFixed,fixMax:i.maxFixed}}function v_(t,e){var n=e,i=y_(t,n),r=i.extent,o=n.get("splitNumber");t instanceof l_&&(t.base=n.get("logBase"));var a=t.type,s=n.get("interval"),l="interval"===a||"time"===a;t.setExtent(r[0],r[1]),t.calcNiceExtent({splitNumber:o,fixMin:i.fixMin,fixMax:i.fixMax,minInterval:l?n.get("minInterval"):null,maxInterval:l?n.get("maxInterval"):null}),null!=s&&t.setInterval&&t.setInterval(s)}function m_(t,e){if(e=e||t.get("type"))switch(e){case"category":return new Lx({ordinalMeta:t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),extent:[1/0,-1/0]});case"time":return new Zx({locale:t.ecModel.getLocaleModel(),useUTC:t.ecModel.get("useUTC")});default:return new(mx.getClass(e)||Ox)}}function x_(t){var e,n,i=t.getLabelModel().get("formatter"),r="category"===t.type?t.scale.getExtent()[0]:null;return"time"===t.scale.type?(n=i,function(e,i){return t.scale.getFormattedLabel(e,i,n)}):U(i)?function(e){return function(n){var i=t.scale.getLabel(n);return e.replace("{value}",null!=i?i:"")}}(i):X(i)?(e=i,function(n,i){return null!=r&&(i=n.value-r),e(__(t,n),i,null!=n.level?{level:n.level}:null)}):function(e){return t.scale.getLabel(e)}}function __(t,e){return"category"===t.type?t.scale.getLabel(e):e.value}function b_(t,e){var n=e*Math.PI/180,i=t.width,r=t.height,o=i*Math.abs(Math.cos(n))+Math.abs(r*Math.sin(n)),a=i*Math.abs(Math.sin(n))+Math.abs(r*Math.cos(n));return new ze(t.x,t.y,o,a)}function w_(t){var e=t.get("interval");return null==e?"auto":e}function S_(t){return"category"===t.type&&0===w_(t.getLabelModel())}function M_(t,e){var n={};return E(t.mapDimensionsAll(e),(function(e){n[yx(t,e)]=!0})),G(n)}var I_=function(){function t(){}return t.prototype.getNeedCrossZero=function(){return!this.option.scale},t.prototype.getCoordSysModel=function(){},t}();var T_={isDimensionStacked:gx,enableDataStack:fx,getStackedDimension:yx};var C_=Object.freeze({__proto__:null,createList:function(t){return vx(null,t)},getLayoutRect:Cp,dataStack:T_,createScale:function(t,e){var n=e;e instanceof Mc||(n=new Mc(e));var i=m_(n);return i.setExtent(t[0],t[1]),v_(i,n),i},mixinAxisModelCommonMethods:function(t){R(t,I_)},getECData:Qs,createTextStyle:function(t,e){return nc(t,null,null,"normal"!==(e=e||{}).state)},createDimensions:function(t,e){return ux(t,e).dimensions},createSymbol:Wy,enableHoverEmphasis:Hl});function D_(t,e){return Math.abs(t-e)<1e-8}function A_(t,e,n){var i=0,r=t[0];if(!r)return!1;for(var o=1;on&&(t=r,n=a)}if(t)return function(t){for(var e=0,n=0,i=0,r=t.length,o=t[r-1][0],a=t[r-1][1],s=0;s>1^-(1&s),l=l>>1^-(1&l),r=s+=r,o=l+=o,i.push([s/n,l/n])}return i}function F_(t,e){return z(B((t=function(t){if(!t.UTF8Encoding)return t;var e=t,n=e.UTF8Scale;return null==n&&(n=1024),E(e.features,(function(t){var e=t.geometry,i=e.encodeOffsets,r=e.coordinates;if(i)switch(e.type){case"LineString":e.coordinates=B_(r,i,n);break;case"Polygon":case"MultiLineString":V_(r,i,n);break;case"MultiPolygon":E(r,(function(t,e){return V_(t,i[e],n)}))}})),e.UTF8Encoding=!1,e}(t)).features,(function(t){return t.geometry&&t.properties&&t.geometry.coordinates.length>0})),(function(t){var n=t.properties,i=t.geometry,r=[];switch(i.type){case"Polygon":var o=i.coordinates;r.push(new R_(o[0],o.slice(1)));break;case"MultiPolygon":E(i.coordinates,(function(t){t[0]&&r.push(new R_(t[0],t.slice(1)))}));break;case"LineString":r.push(new N_([i.coordinates]));break;case"MultiLineString":r.push(new N_(i.coordinates))}var a=new E_(n[e||"name"],r,n.cp);return a.properties=n,a}))}var G_=Object.freeze({__proto__:null,linearMap:Xr,round:Zr,asc:jr,getPrecision:qr,getPrecisionSafe:Kr,getPixelPrecision:$r,getPercentWithPrecision:function(t,e,n){return t[e]&&Jr(t,n)[e]||0},MAX_SAFE_INTEGER:to,remRadian:eo,isRadianAroundZero:no,parseDate:ro,quantity:oo,quantityExponent:ao,nice:so,quantile:lo,reformIntervals:uo,isNumeric:co,numericToNumber:ho}),W_=Object.freeze({__proto__:null,parse:ro,format:qc}),H_=Object.freeze({__proto__:null,extendShape:Mh,extendPath:Th,makePath:Ah,makeImage:kh,mergePath:Ph,resizePath:Oh,createIcon:Hh,updateProps:fh,initProps:gh,getTransform:Eh,clipPointsByRect:Gh,clipRectByRect:Wh,registerShape:Ch,getShapeClass:Dh,Group:zr,Image:ks,Text:Fs,Circle:_u,Ellipse:wu,Sector:zu,Ring:Bu,Polygon:Wu,Polyline:Yu,Rect:zs,Line:Zu,BezierCurve:$u,Arc:Qu,IncrementalDisplayable:hh,CompoundPath:th,LinearGradient:nh,RadialGradient:ih,BoundingRect:ze}),Y_=Object.freeze({__proto__:null,addCommas:pp,toCamelCase:dp,normalizeCssArray:fp,encodeHTML:re,formatTpl:mp,getTooltipMarker:xp,formatTime:function(t,e,n){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var i=ro(e),r=n?"getUTC":"get",o=i[r+"FullYear"](),a=i[r+"Month"]()+1,s=i[r+"Date"](),l=i[r+"Hours"](),u=i[r+"Minutes"](),h=i[r+"Seconds"](),c=i[r+"Milliseconds"]();return t=t.replace("MM",Uc(a,2)).replace("M",a).replace("yyyy",o).replace("yy",Uc(o%100+"",2)).replace("dd",Uc(s,2)).replace("d",s).replace("hh",Uc(l,2)).replace("h",l).replace("mm",Uc(u,2)).replace("m",u).replace("ss",Uc(h,2)).replace("s",h).replace("SSS",Uc(c,3))},capitalFirst:function(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t},truncateText:sa,getTextRect:function(t,e,n,i,r,o,a,s){return new Fs({style:{text:t,font:e,align:n,verticalAlign:i,padding:r,rich:o,overflow:a?"truncate":null,lineHeight:s}}).getBoundingRect()}}),X_=Object.freeze({__proto__:null,map:z,each:E,indexOf:P,inherits:O,reduce:V,filter:B,bind:W,curry:H,isArray:Y,isString:U,isObject:q,isFunction:X,extend:A,defaults:k,clone:T,merge:C}),U_=Oo();function Z_(t){return"category"===t.type?function(t){var e=t.getLabelModel(),n=q_(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:n.labelCategoryInterval}:n}(t):function(t){var e=t.scale.getTicks(),n=x_(t);return{labels:z(e,(function(e,i){return{level:e.level,formattedLabel:n(e,i),rawLabel:t.scale.getLabel(e),tickValue:e.value}}))}}(t)}function j_(t,e){return"category"===t.type?function(t,e){var n,i,r=K_(t,"ticks"),o=w_(e),a=$_(r,o);if(a)return a;e.get("show")&&!t.scale.isBlank()||(n=[]);if(X(o))n=tb(t,o,!0);else if("auto"===o){var s=q_(t,t.getLabelModel());i=s.labelCategoryInterval,n=z(s.labels,(function(t){return t.tickValue}))}else n=Q_(t,i=o,!0);return J_(r,o,{ticks:n,tickCategoryInterval:i})}(t,e):{ticks:z(t.scale.getTicks(),(function(t){return t.value}))}}function q_(t,e){var n,i,r=K_(t,"labels"),o=w_(e),a=$_(r,o);return a||(X(o)?n=tb(t,o):(i="auto"===o?function(t){var e=U_(t).autoInterval;return null!=e?e:U_(t).autoInterval=t.calculateCategoryInterval()}(t):o,n=Q_(t,i)),J_(r,o,{labels:n,labelCategoryInterval:i}))}function K_(t,e){return U_(t)[e]||(U_(t)[e]=[])}function $_(t,e){for(var n=0;n1&&h/l>2&&(u=Math.round(Math.ceil(u/l)*l));var c=S_(t),p=a.get("showMinLabel")||c,d=a.get("showMaxLabel")||c;p&&u!==o[0]&&g(o[0]);for(var f=u;f<=o[1];f+=l)g(f);function g(t){var e={value:t};s.push(n?t:{formattedLabel:i(e),rawLabel:r.getLabel(e),tickValue:t})}return d&&f-l!==o[1]&&g(o[1]),s}function tb(t,e,n){var i=t.scale,r=x_(t),o=[];return E(i.getTicks(),(function(t){var a=i.getLabel(t),s=t.value;e(t.value,a)&&o.push(n?s:{formattedLabel:r(t),rawLabel:a,tickValue:s})})),o}var eb=[0,1],nb=function(){function t(t,e,n){this.onBand=!1,this.inverse=!1,this.dim=t,this.scale=e,this._extent=n||[0,0]}return t.prototype.contain=function(t){var e=this._extent,n=Math.min(e[0],e[1]),i=Math.max(e[0],e[1]);return t>=n&&t<=i},t.prototype.containData=function(t){return this.scale.contain(t)},t.prototype.getExtent=function(){return this._extent.slice()},t.prototype.getPixelPrecision=function(t){return $r(t||this.scale.getExtent(),this._extent)},t.prototype.setExtent=function(t,e){var n=this._extent;n[0]=t,n[1]=e},t.prototype.dataToCoord=function(t,e){var n=this._extent,i=this.scale;return t=i.normalize(t),this.onBand&&"ordinal"===i.type&&ib(n=n.slice(),i.count()),Xr(t,eb,n,e)},t.prototype.coordToData=function(t,e){var n=this._extent,i=this.scale;this.onBand&&"ordinal"===i.type&&ib(n=n.slice(),i.count());var r=Xr(t,n,eb,e);return this.scale.scale(r)},t.prototype.pointToData=function(t,e){},t.prototype.getTicksCoords=function(t){var e=(t=t||{}).tickModel||this.getTickModel(),n=z(j_(this,e).ticks,(function(t){return{coord:this.dataToCoord("ordinal"===this.scale.type?this.scale.getRawOrdinalNumber(t):t),tickValue:t}}),this);return function(t,e,n,i){var r=e.length;if(!t.onBand||n||!r)return;var o,a,s=t.getExtent();if(1===r)e[0].coord=s[0],o=e[1]={coord:s[1]};else{var l=e[r-1].tickValue-e[0].tickValue,u=(e[r-1].coord-e[0].coord)/l;E(e,(function(t){t.coord-=u/2})),a=1+t.scale.getExtent()[1]-e[r-1].tickValue,o={coord:e[r-1].coord+u*a},e.push(o)}var h=s[0]>s[1];c(e[0].coord,s[0])&&(i?e[0].coord=s[0]:e.shift());i&&c(s[0],e[0].coord)&&e.unshift({coord:s[0]});c(s[1],o.coord)&&(i?o.coord=s[1]:e.pop());i&&c(o.coord,s[1])&&e.push({coord:s[1]});function c(t,e){return t=Zr(t),e=Zr(e),h?t>e:t0&&t<100||(t=5),z(this.scale.getMinorTicks(t),(function(t){return z(t,(function(t){return{coord:this.dataToCoord(t),tickValue:t}}),this)}),this)},t.prototype.getViewLabels=function(){return Z_(this).labels},t.prototype.getLabelModel=function(){return this.model.getModel("axisLabel")},t.prototype.getTickModel=function(){return this.model.getModel("axisTick")},t.prototype.getBandWidth=function(){var t=this._extent,e=this.scale.getExtent(),n=e[1]-e[0]+(this.onBand?1:0);0===n&&(n=1);var i=Math.abs(t[1]-t[0]);return Math.abs(i)/n},t.prototype.calculateCategoryInterval=function(){return function(t){var e=function(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}(t),n=x_(t),i=(e.axisRotate-e.labelRotate)/180*Math.PI,r=t.scale,o=r.getExtent(),a=r.count();if(o[1]-o[0]<1)return 0;var s=1;a>40&&(s=Math.max(1,Math.floor(a/40)));for(var l=o[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(i)),c=Math.abs(u*Math.sin(i)),p=0,d=0;l<=o[1];l+=s){var f,g,y=br(n({value:l}),e.font,"center","top");f=1.3*y.width,g=1.3*y.height,p=Math.max(p,f,7),d=Math.max(d,g,7)}var v=p/h,m=d/c;isNaN(v)&&(v=1/0),isNaN(m)&&(m=1/0);var x=Math.max(0,Math.floor(Math.min(v,m))),_=U_(t.model),b=t.getExtent(),w=_.lastAutoInterval,S=_.lastTickCount;return null!=w&&null!=S&&Math.abs(w-x)<=1&&Math.abs(S-a)<=1&&w>x&&_.axisExtent0===b[0]&&_.axisExtent1===b[1]?x=w:(_.lastTickCount=a,_.lastAutoInterval=x,_.axisExtent0=b[0],_.axisExtent1=b[1]),x}(this)},t}();function ib(t,e){var n=(t[1]-t[0])/e/2;t[0]+=n,t[1]-=n}var rb=2*Math.PI,ob=os.CMD,ab=["top","right","bottom","left"];function sb(t,e,n,i,r){var o=n.width,a=n.height;switch(t){case"top":i.set(n.x+o/2,n.y-e),r.set(0,-1);break;case"bottom":i.set(n.x+o/2,n.y+a+e),r.set(0,1);break;case"left":i.set(n.x-e,n.y+a/2),r.set(-1,0);break;case"right":i.set(n.x+o+e,n.y+a/2),r.set(1,0)}}function lb(t,e,n,i,r,o,a,s,l){a-=t,s-=e;var u=Math.sqrt(a*a+s*s),h=(a/=u)*n+t,c=(s/=u)*n+e;if(Math.abs(i-r)%rb<1e-4)return l[0]=h,l[1]=c,u-n;if(o){var p=i;i=hs(r),r=hs(p)}else i=hs(i),r=hs(r);i>r&&(r+=rb);var d=Math.atan2(s,a);if(d<0&&(d+=rb),d>=i&&d<=r||d+rb>=i&&d+rb<=r)return l[0]=h,l[1]=c,u-n;var f=n*Math.cos(i)+t,g=n*Math.sin(i)+e,y=n*Math.cos(r)+t,v=n*Math.sin(r)+e,m=(f-a)*(f-a)+(g-s)*(g-s),x=(y-a)*(y-a)+(v-s)*(v-s);return m0){e=e/180*Math.PI,fb.fromArray(t[0]),gb.fromArray(t[1]),yb.fromArray(t[2]),De.sub(vb,fb,gb),De.sub(mb,yb,gb);var n=vb.len(),i=mb.len();if(!(n<.001||i<.001)){vb.scale(1/n),mb.scale(1/i);var r=vb.dot(mb);if(Math.cos(e)1&&De.copy(bb,yb),bb.toArray(t[1])}}}}function Sb(t,e,n){if(n<=180&&n>0){n=n/180*Math.PI,fb.fromArray(t[0]),gb.fromArray(t[1]),yb.fromArray(t[2]),De.sub(vb,gb,fb),De.sub(mb,yb,gb);var i=vb.len(),r=mb.len();if(!(i<.001||r<.001))if(vb.scale(1/i),mb.scale(1/r),vb.dot(e)=a)De.copy(bb,yb);else{bb.scaleAndAdd(mb,o/Math.tan(Math.PI/2-s));var l=yb.x!==gb.x?(bb.x-gb.x)/(yb.x-gb.x):(bb.y-gb.y)/(yb.y-gb.y);if(isNaN(l))return;l<0?De.copy(bb,gb):l>1&&De.copy(bb,yb)}bb.toArray(t[1])}}}function Mb(t,e,n,i){var r="normal"===n,o=r?t:t.ensureState(n);o.ignore=e;var a=i.get("smooth");a&&!0===a&&(a=.3),o.shape=o.shape||{},a>0&&(o.shape.smooth=a);var s=i.getModel("lineStyle").getLineStyle();r?t.useStyle(s):o.style=s}function Ib(t,e){var n=e.smooth,i=e.points;if(i)if(t.moveTo(i[0][0],i[0][1]),n>0&&i.length>=3){var r=Vt(i[0],i[1]),o=Vt(i[1],i[2]);if(!r||!o)return t.lineTo(i[1][0],i[1][1]),void t.lineTo(i[2][0],i[2][1]);var a=Math.min(r,o)*n,s=Gt([],i[1],i[0],a/r),l=Gt([],i[1],i[2],a/o),u=Gt([],s,l,.5);t.bezierCurveTo(s[0],s[1],s[0],s[1],u[0],u[1]),t.bezierCurveTo(l[0],l[1],l[0],l[1],i[2][0],i[2][1])}else for(var h=1;h0&&o&&_(-h/a,0,a);var f,g,y=t[0],v=t[a-1];return m(),f<0&&b(-f,.8),g<0&&b(g,.8),m(),x(f,g,1),x(g,f,-1),m(),f<0&&w(-f),g<0&&w(g),u}function m(){f=y.rect[e]-i,g=r-v.rect[e]-v.rect[n]}function x(t,e,n){if(t<0){var i=Math.min(e,-t);if(i>0){_(i*n,0,a);var r=i+t;r<0&&b(-r*n,1)}else b(-t*n,1)}}function _(n,i,r){0!==n&&(u=!0);for(var o=i;o0)for(l=0;l0;l--){_(-(o[l-1]*c),l,a)}}}function w(t){var e=t<0?-1:1;t=Math.abs(t);for(var n=Math.ceil(t/(a-1)),i=0;i0?_(n,0,i+1):_(-n,a-i-1,a),(t-=n)<=0)return}}function kb(t,e,n,i){return Ab(t,"y","height",e,n,i)}function Lb(t){var e=[];t.sort((function(t,e){return e.priority-t.priority}));var n=new ze(0,0,0,0);function i(t){if(!t.ignore){var e=t.ensureState("emphasis");null==e.ignore&&(e.ignore=!1)}t.ignore=!0}for(var r=0;r=0&&n.attr(d.oldLayoutSelect),P(u,"emphasis")>=0&&n.attr(d.oldLayoutEmphasis)),fh(n,s,e,a)}else if(n.attr(s),!uc(n).valueAnimation){var h=rt(n.style.opacity,1);n.style.opacity=0,gh(n,{style:{opacity:h}},e,a)}if(d.oldLayout=s,n.states.select){var c=d.oldLayoutSelect={};Vb(c,s,Bb),Vb(c,n.states.select,Bb)}if(n.states.emphasis){var p=d.oldLayoutEmphasis={};Vb(p,s,Bb),Vb(p,n.states.emphasis,Bb)}cc(n,a,l,e,e)}if(i&&!i.ignore&&!i.invisible){r=(d=zb(i)).oldLayout;var d,f={points:i.shape.points};r?(i.attr({shape:r}),fh(i,{shape:f},e)):(i.setShape(f),i.style.strokePercent=0,gh(i,{style:{strokePercent:1}},e)),d.oldLayout=f}},t}(),Gb=Oo();var Wb=Math.sin,Hb=Math.cos,Yb=Math.PI,Xb=2*Math.PI,Ub=180/Yb,Zb=function(){function t(){}return t.prototype.reset=function(t){this._start=!0,this._d=[],this._str="",this._p=Math.pow(10,t||4)},t.prototype.moveTo=function(t,e){this._add("M",t,e)},t.prototype.lineTo=function(t,e){this._add("L",t,e)},t.prototype.bezierCurveTo=function(t,e,n,i,r,o){this._add("C",t,e,n,i,r,o)},t.prototype.quadraticCurveTo=function(t,e,n,i){this._add("Q",t,e,n,i)},t.prototype.arc=function(t,e,n,i,r,o){this.ellipse(t,e,n,n,0,i,r,o)},t.prototype.ellipse=function(t,e,n,i,r,o,a,s){var l=a-o,u=!s,h=Math.abs(l),c=hi(h-Xb)||(u?l>=Xb:-l>=Xb),p=l>0?l%Xb:l%Xb+Xb,d=!1;d=!!c||!hi(h)&&p>=Yb==!!u;var f=t+n*Hb(o),g=e+i*Wb(o);this._start&&this._add("M",f,g);var y=Math.round(r*Ub);if(c){var v=1/this._p,m=(u?1:-1)*(Xb-v);this._add("A",n,i,y,1,+u,t+n*Hb(o+m),e+i*Wb(o+m)),v>.01&&this._add("A",n,i,y,0,+u,f,g)}else{var x=t+n*Hb(a),_=e+i*Wb(a);this._add("A",n,i,y,+d,+u,x,_)}},t.prototype.rect=function(t,e,n,i){this._add("M",t,e),this._add("l",n,0),this._add("l",0,i),this._add("l",-n,0),this._add("Z")},t.prototype.closePath=function(){this._d.length>0&&this._add("Z")},t.prototype._add=function(t,e,n,i,r,o,a,s,l){for(var u=[],h=this._p,c=1;c"}(r,o)+("style"!==r?re(a):a||"")+(i?""+n+z(i,(function(e){return t(e)})).join(n)+n:"")+("")}(t)}function rw(t){return{zrId:t,shadowCache:{},patternCache:{},gradientCache:{},clipPathCache:{},defs:{},cssNodes:{},cssAnims:{},cssClassIdx:0,cssAnimIdx:0,shadowIdx:0,gradientIdx:0,patternIdx:0,clipPathIdx:0}}function ow(t,e,n,i){return nw("svg","root",{width:t,height:e,xmlns:Qb,"xmlns:xlink":tw,version:"1.1",baseProfile:"full",viewBox:!!i&&"0 0 "+t+" "+e},n)}var aw={cubicIn:"0.32,0,0.67,0",cubicOut:"0.33,1,0.68,1",cubicInOut:"0.65,0,0.35,1",quadraticIn:"0.11,0,0.5,0",quadraticOut:"0.5,1,0.89,1",quadraticInOut:"0.45,0,0.55,1",quarticIn:"0.5,0,0.75,0",quarticOut:"0.25,1,0.5,1",quarticInOut:"0.76,0,0.24,1",quinticIn:"0.64,0,0.78,0",quinticOut:"0.22,1,0.36,1",quinticInOut:"0.83,0,0.17,1",sinusoidalIn:"0.12,0,0.39,0",sinusoidalOut:"0.61,1,0.88,1",sinusoidalInOut:"0.37,0,0.63,1",exponentialIn:"0.7,0,0.84,0",exponentialOut:"0.16,1,0.3,1",exponentialInOut:"0.87,0,0.13,1",circularIn:"0.55,0,1,0.45",circularOut:"0,0.55,0.45,1",circularInOut:"0.85,0,0.15,1"},sw="transform-origin";function lw(t,e,n){var i=A({},t.shape);A(i,e),t.buildPath(n,i);var r=new Zb;return r.reset(_i(t)),n.rebuildPath(r,1),r.generateStr(),r.getStr()}function uw(t,e){var n=e.originX,i=e.originY;(n||i)&&(t[sw]=n+"px "+i+"px")}var hw={fill:"fill",opacity:"opacity",lineWidth:"stroke-width",lineDashOffset:"stroke-dashoffset"};function cw(t,e){var n=e.zrId+"-ani-"+e.cssAnimIdx++;return e.cssAnims[n]=t,n}function pw(t){return U(t)?aw[t]?"cubic-bezier("+aw[t]+")":Pn(t)?t:"":""}function dw(t,e,n,i){var r=t.animators,o=r.length,a=[];if(t instanceof th){var s=function(t,e,n){var i,r,o=t.shape.paths,a={};if(E(o,(function(t){var e=rw(n.zrId);e.animation=!0,dw(t,{},e,!0);var o=e.cssAnims,s=e.cssNodes,l=G(o),u=l.length;if(u){var h=o[r=l[u-1]];for(var c in h){var p=h[c];a[c]=a[c]||{d:""},a[c].d+=p.d||""}for(var d in s){var f=s[d].animation;f.indexOf(r)>=0&&(i=f)}}})),i){e.d=!1;var s=cw(a,n);return i.replace(r,s)}}(t,e,n);if(s)a.push(s);else if(!o)return}else if(!o)return;for(var l={},u=0;u0})).length)return cw(h,n)+" "+r[0]+" both"}for(var y in l){(s=g(l[y]))&&a.push(s)}if(a.length){var v=n.zrId+"-cls-"+n.cssClassIdx++;n.cssNodes["."+v]={animation:a.join(",")},e.class=v}}var fw=Math.round;function gw(t){return t&&U(t.src)}function yw(t){return t&&X(t.toDataURL)}function vw(t,e,n,i){Jb((function(r,o){var a="fill"===r||"stroke"===r;a&&mi(o)?Cw(e,t,r,i):a&&gi(o)?Dw(n,t,r,i):t[r]=o}),e,n,!1),function(t,e,n){var i=t.style;if(function(t){return t&&(t.shadowBlur||t.shadowOffsetX||t.shadowOffsetY)}(i)){var r=function(t){var e=t.style,n=t.getGlobalScale();return[e.shadowColor,(e.shadowBlur||0).toFixed(2),(e.shadowOffsetX||0).toFixed(2),(e.shadowOffsetY||0).toFixed(2),n[0],n[1]].join(",")}(t),o=n.shadowCache,a=o[r];if(!a){var s=t.getGlobalScale(),l=s[0],u=s[1];if(!l||!u)return;var h=i.shadowOffsetX||0,c=i.shadowOffsetY||0,p=i.shadowBlur,d=li(i.shadowColor),f=d.opacity,g=d.color,y=p/2/l+" "+p/2/u;a=n.zrId+"-s"+n.shadowIdx++,n.defs[a]=nw("filter",a,{id:a,x:"-100%",y:"-100%",width:"300%",height:"300%"},[nw("feDropShadow","",{dx:h/l,dy:c/u,stdDeviation:y,"flood-color":g,"flood-opacity":f})]),o[r]=a}e.filter=xi(a)}}(n,t,i)}function mw(t){return hi(t[0]-1)&&hi(t[1])&&hi(t[2])&&hi(t[3]-1)}function xw(t,e,n){if(e&&(!function(t){return hi(t[4])&&hi(t[5])}(e)||!mw(e))){var i=n?10:1e4;t.transform=mw(e)?"translate("+fw(e[4]*i)/i+" "+fw(e[5]*i)/i+")":function(t){return"matrix("+ci(t[0])+","+ci(t[1])+","+ci(t[2])+","+ci(t[3])+","+pi(t[4])+","+pi(t[5])+")"}(e)}}function _w(t,e,n){for(var i=t.points,r=[],o=0;ol?Hw(t,null==n[c+1]?null:n[c+1].elm,n,s,c):Yw(t,e,a,l))}(n,i,r):Bw(r)?(Bw(t.text)&&Ew(n,""),Hw(n,null,r,0,r.length-1)):Bw(i)?Yw(n,i,0,i.length-1):Bw(t.text)&&Ew(n,""):t.text!==e.text&&(Bw(i)&&Yw(n,i,0,i.length-1),Ew(n,e.text)))}var Zw=0,jw=function(){function t(t,e,n){if(this.type="svg",this.refreshHover=qw("refreshHover"),this.configLayer=qw("configLayer"),this.storage=e,this._opts=n=A({},n),this.root=t,this._id="zr"+Zw++,this._oldVNode=ow(n.width,n.height),t&&!n.ssr){var i=this._viewport=document.createElement("div");i.style.cssText="position:relative;overflow:hidden";var r=this._svgDom=this._oldVNode.elm=ew("svg");Xw(null,this._oldVNode),i.appendChild(r),t.appendChild(i)}this.resize(n.width,n.height)}return t.prototype.getType=function(){return this.type},t.prototype.getViewportRoot=function(){return this._viewport},t.prototype.getViewportRootOffset=function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},t.prototype.getSvgDom=function(){return this._svgDom},t.prototype.refresh=function(){if(this.root){var t=this.renderToVNode({willUpdate:!0});t.attrs.style="position:absolute;left:0;top:0;user-select:none",function(t,e){if(Gw(t,e))Uw(t,e);else{var n=t.elm,i=Rw(n);Ww(e),null!==i&&(Lw(i,e.elm,Nw(n)),Yw(i,[t],0,0))}}(this._oldVNode,t),this._oldVNode=t}},t.prototype.renderOneToVNode=function(t){return Tw(t,rw(this._id))},t.prototype.renderToVNode=function(t){t=t||{};var e=this.storage.getDisplayList(!0),n=this._width,i=this._height,r=rw(this._id);r.animation=t.animation,r.willUpdate=t.willUpdate,r.compress=t.compress;var o=[],a=this._bgVNode=function(t,e,n,i){var r;if(n&&"none"!==n)if(r=nw("rect","bg",{width:t,height:e,x:"0",y:"0",id:"0"}),mi(n))Cw({fill:n},r.attrs,"fill",i);else if(gi(n))Dw({style:{fill:n},dirty:bt,getBoundingRect:function(){return{width:t,height:e}}},r.attrs,"fill",i);else{var o=li(n),a=o.color,s=o.opacity;r.attrs.fill=a,s<1&&(r.attrs["fill-opacity"]=s)}return r}(n,i,this._backgroundColor,r);a&&o.push(a);var s=t.compress?null:this._mainVNode=nw("g","main",{},[]);this._paintList(e,r,s?s.children:o),s&&o.push(s);var l=z(G(r.defs),(function(t){return r.defs[t]}));if(l.length&&o.push(nw("defs","defs",{},l)),t.animation){var u=function(t,e,n){var i=(n=n||{}).newline?"\n":"",r=" {"+i,o=i+"}",a=z(G(t),(function(e){return e+r+z(G(t[e]),(function(n){return n+":"+t[e][n]+";"})).join(i)+o})).join(i),s=z(G(e),(function(t){return"@keyframes "+t+r+z(G(e[t]),(function(n){return n+r+z(G(e[t][n]),(function(i){var r=e[t][n][i];return"d"===i&&(r='path("'+r+'")'),i+":"+r+";"})).join(i)+o})).join(i)+o})).join(i);return a||s?[""].join(i):""}(r.cssNodes,r.cssAnims,{newline:!0});if(u){var h=nw("style","stl",{},[],u);o.push(h)}}return ow(n,i,o,t.useViewBox)},t.prototype.renderToString=function(t){return t=t||{},iw(this.renderToVNode({animation:rt(t.cssAnimation,!0),willUpdate:!1,compress:!0,useViewBox:rt(t.useViewBox,!0)}),{newline:!0})},t.prototype.setBackgroundColor=function(t){this._backgroundColor=t},t.prototype.getSvgRoot=function(){return this._mainVNode&&this._mainVNode.elm},t.prototype._paintList=function(t,e,n){for(var i,r,o=t.length,a=[],s=0,l=0,u=0;u=0&&(!c||!r||c[f]!==r[f]);f--);for(var g=d-1;g>f;g--)i=a[--s-1];for(var y=f+1;y=a)}}for(var h=this.__startIndex;h15)break}n.prevElClipPaths&&u.restore()};if(p)if(0===p.length)s=l.__endIndex;else for(var _=d.dpr,b=0;b0&&t>i[0]){for(s=0;st);s++);a=n[i[s]]}if(i.splice(s+1,0,t),n[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?o.insertBefore(e.dom,l.nextSibling):o.appendChild(e.dom)}else o.firstChild?o.insertBefore(e.dom,o.firstChild):o.appendChild(e.dom);e.__painter=this}},t.prototype.eachLayer=function(t,e){for(var n=this._zlevelList,i=0;i0?tS:0),this._needsManuallyCompositing),u.__builtin__||I("ZLevel "+l+" has been used by unkown layer "+u.id),u!==o&&(u.__used=!0,u.__startIndex!==r&&(u.__dirty=!0),u.__startIndex=r,u.incremental?u.__drawIndex=-1:u.__drawIndex=r,e(r),o=u),1&s.__dirty&&!s.__inHover&&(u.__dirty=!0,u.incremental&&u.__drawIndex<0&&(u.__drawIndex=r))}e(r),this.eachBuiltinLayer((function(t,e){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)}))},t.prototype.clear=function(){return this.eachBuiltinLayer(this._clearLayer),this},t.prototype._clearLayer=function(t){t.clear()},t.prototype.setBackgroundColor=function(t){this._backgroundColor=t,E(this._layers,(function(t){t.setUnpainted()}))},t.prototype.configLayer=function(t,e){if(e){var n=this._layerConfig;n[t]?C(n[t],e,!0):n[t]=e;for(var i=0;i-1&&(s.style.stroke=s.style.fill,s.style.fill="#fff",s.style.lineWidth=2),e},e.type="series.line",e.dependencies=["grid","polar"],e.defaultOption={z:3,coordinateSystem:"cartesian2d",legendHoverLink:!0,clip:!0,label:{position:"top"},endLabel:{show:!1,valueAnimation:!0,distance:8},lineStyle:{width:2,type:"solid"},emphasis:{scale:!0},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0,universalTransition:{divideShape:"clone"},triggerLineEvent:!1},e}(mg);function iS(t,e){var n=t.mapDimensionsAll("defaultedLabel"),i=n.length;if(1===i){var r=gf(t,e,n[0]);return null!=r?r+"":null}if(i){for(var o=[],a=0;a=0&&i.push(e[o])}return i.join(" ")}var oS=function(t){function e(e,n,i,r){var o=t.call(this)||this;return o.updateData(e,n,i,r),o}return n(e,t),e.prototype._createSymbol=function(t,e,n,i,r){this.removeAll();var o=Wy(t,-1,-1,2,2,null,r);o.attr({z2:100,culling:!0,scaleX:i[0]/2,scaleY:i[1]/2}),o.drift=aS,this._symbolType=t,this.add(o)},e.prototype.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(null,t)},e.prototype.getSymbolType=function(){return this._symbolType},e.prototype.getSymbolPath=function(){return this.childAt(0)},e.prototype.highlight=function(){kl(this.childAt(0))},e.prototype.downplay=function(){Ll(this.childAt(0))},e.prototype.setZ=function(t,e){var n=this.childAt(0);n.zlevel=t,n.z=e},e.prototype.setDraggable=function(t,e){var n=this.childAt(0);n.draggable=t,n.cursor=!e&&t?"move":n.cursor},e.prototype.updateData=function(t,n,i,r){this.silent=!1;var o=t.getItemVisual(n,"symbol")||"circle",a=t.hostModel,s=e.getSymbolSize(t,n),l=o!==this._symbolType,u=r&&r.disableAnimation;if(l){var h=t.getItemVisual(n,"symbolKeepAspect");this._createSymbol(o,t,n,s,h)}else{(p=this.childAt(0)).silent=!1;var c={scaleX:s[0]/2,scaleY:s[1]/2};u?p.attr(c):fh(p,c,a,n),_h(p)}if(this._updateCommon(t,n,s,i,r),l){var p=this.childAt(0);if(!u){c={scaleX:this._sizeX,scaleY:this._sizeY,style:{opacity:p.style.opacity}};p.scaleX=p.scaleY=0,p.style.opacity=0,gh(p,c,a,n)}}u&&this.childAt(0).stopAnimation("leave")},e.prototype._updateCommon=function(t,e,n,i,r){var o,a,s,l,u,h,c,p,d,f=this.childAt(0),g=t.hostModel;if(i&&(o=i.emphasisItemStyle,a=i.blurItemStyle,s=i.selectItemStyle,l=i.focus,u=i.blurScope,c=i.labelStatesModels,p=i.hoverScale,d=i.cursorStyle,h=i.emphasisDisabled),!i||t.hasItemOption){var y=i&&i.itemModel?i.itemModel:t.getItemModel(e),v=y.getModel("emphasis");o=v.getModel("itemStyle").getItemStyle(),s=y.getModel(["select","itemStyle"]).getItemStyle(),a=y.getModel(["blur","itemStyle"]).getItemStyle(),l=v.get("focus"),u=v.get("blurScope"),h=v.get("disabled"),c=ec(y),p=v.getShallow("scale"),d=y.getShallow("cursor")}var m=t.getItemVisual(e,"symbolRotate");f.attr("rotation",(m||0)*Math.PI/180||0);var x=Yy(t.getItemVisual(e,"symbolOffset"),n);x&&(f.x=x[0],f.y=x[1]),d&&f.attr("cursor",d);var _=t.getItemVisual(e,"style"),b=_.fill;if(f instanceof ks){var w=f.style;f.useStyle(A({image:w.image,x:w.x,y:w.y,width:w.width,height:w.height},_))}else f.__isEmptyBrush?f.useStyle(A({},_)):f.useStyle(_),f.style.decal=null,f.setColor(b,r&&r.symbolInnerColor),f.style.strokeNoScale=!0;var S=t.getItemVisual(e,"liftZ"),M=this._z2;null!=S?null==M&&(this._z2=f.z2,f.z2+=S):null!=M&&(f.z2=M,this._z2=null);var I=r&&r.useNameLabel;tc(f,c,{labelFetcher:g,labelDataIndex:e,defaultText:function(e){return I?t.getName(e):iS(t,e)},inheritColor:b,defaultOpacity:_.opacity}),this._sizeX=n[0]/2,this._sizeY=n[1]/2;var T=f.ensureState("emphasis");T.style=o,f.ensureState("select").style=s,f.ensureState("blur").style=a;var C=null==p||!0===p?Math.max(1.1,3/this._sizeY):isFinite(p)&&p>0?+p:1;T.scaleX=this._sizeX*C,T.scaleY=this._sizeY*C,this.setSymbolScale(1),Yl(this,l,u,h)},e.prototype.setSymbolScale=function(t){this.scaleX=this.scaleY=t},e.prototype.fadeOut=function(t,e,n){var i=this.childAt(0),r=Qs(this).dataIndex,o=n&&n.animation;if(this.silent=i.silent=!0,n&&n.fadeLabel){var a=i.getTextContent();a&&vh(a,{style:{opacity:0}},e,{dataIndex:r,removeOpt:o,cb:function(){i.removeTextContent()}})}else i.removeTextContent();vh(i,{style:{opacity:0},scaleX:0,scaleY:0},e,{dataIndex:r,cb:t,removeOpt:o})},e.getSymbolSize=function(t,e){return Hy(t.getItemVisual(e,"symbolSize"))},e}(zr);function aS(t,e){this.parent.drift(t,e)}function sS(t,e,n,i){return e&&!isNaN(e[0])&&!isNaN(e[1])&&!(i.isIgnore&&i.isIgnore(n))&&!(i.clipShape&&!i.clipShape.contain(e[0],e[1]))&&"none"!==t.getItemVisual(n,"symbol")}function lS(t){return null==t||q(t)||(t={isIgnore:t}),t||{}}function uS(t){var e=t.hostModel,n=e.getModel("emphasis");return{emphasisItemStyle:n.getModel("itemStyle").getItemStyle(),blurItemStyle:e.getModel(["blur","itemStyle"]).getItemStyle(),selectItemStyle:e.getModel(["select","itemStyle"]).getItemStyle(),focus:n.get("focus"),blurScope:n.get("blurScope"),emphasisDisabled:n.get("disabled"),hoverScale:n.get("scale"),labelStatesModels:ec(e),cursorStyle:e.get("cursor")}}var hS=function(){function t(t){this.group=new zr,this._SymbolCtor=t||oS}return t.prototype.updateData=function(t,e){this._progressiveEls=null,e=lS(e);var n=this.group,i=t.hostModel,r=this._data,o=this._SymbolCtor,a=e.disableAnimation,s=uS(t),l={disableAnimation:a},u=e.getSymbolPoint||function(e){return t.getItemLayout(e)};r||n.removeAll(),t.diff(r).add((function(i){var r=u(i);if(sS(t,r,i,e)){var a=new o(t,i,s,l);a.setPosition(r),t.setItemGraphicEl(i,a),n.add(a)}})).update((function(h,c){var p=r.getItemGraphicEl(c),d=u(h);if(sS(t,d,h,e)){var f=t.getItemVisual(h,"symbol")||"circle",g=p&&p.getSymbolType&&p.getSymbolType();if(!p||g&&g!==f)n.remove(p),(p=new o(t,h,s,l)).setPosition(d);else{p.updateData(t,h,s,l);var y={x:d[0],y:d[1]};a?p.attr(y):fh(p,y,i)}n.add(p),t.setItemGraphicEl(h,p)}else n.remove(p)})).remove((function(t){var e=r.getItemGraphicEl(t);e&&e.fadeOut((function(){n.remove(e)}),i)})).execute(),this._getSymbolPoint=u,this._data=t},t.prototype.updateLayout=function(){var t=this,e=this._data;e&&e.eachItemGraphicEl((function(e,n){var i=t._getSymbolPoint(n);e.setPosition(i),e.markRedraw()}))},t.prototype.incrementalPrepareUpdate=function(t){this._seriesScope=uS(t),this._data=null,this.group.removeAll()},t.prototype.incrementalUpdate=function(t,e,n){function i(t){t.isGroup||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}this._progressiveEls=[],n=lS(n);for(var r=t.start;r0?n=i[0]:i[1]<0&&(n=i[1]);return n}(r,n),a=i.dim,s=r.dim,l=e.mapDimension(s),u=e.mapDimension(a),h="x"===s||"radius"===s?1:0,c=z(t.dimensions,(function(t){return e.mapDimension(t)})),p=!1,d=e.getCalculationInfo("stackResultDimension");return gx(e,c[0])&&(p=!0,c[0]=d),gx(e,c[1])&&(p=!0,c[1]=d),{dataDimsForPoint:c,valueStart:o,valueAxisDim:s,baseAxisDim:a,stacked:!!p,valueDim:l,baseDim:u,baseDataOffset:h,stackedOverDimension:e.getCalculationInfo("stackedOverDimension")}}function pS(t,e,n,i){var r=NaN;t.stacked&&(r=n.get(n.getCalculationInfo("stackedOverDimension"),i)),isNaN(r)&&(r=t.valueStart);var o=t.baseDataOffset,a=[];return a[o]=n.get(t.baseDim,i),a[1-o]=r,e.dataToPoint(a)}var dS=Math.min,fS=Math.max;function gS(t,e){return isNaN(t)||isNaN(e)}function yS(t,e,n,i,r,o,a,s,l){for(var u,h,c,p,d,f,g=n,y=0;y=r||g<0)break;if(gS(v,m)){if(l){g+=o;continue}break}if(g===n)t[o>0?"moveTo":"lineTo"](v,m),c=v,p=m;else{var x=v-u,_=m-h;if(x*x+_*_<.5){g+=o;continue}if(a>0){for(var b=g+o,w=e[2*b],S=e[2*b+1];w===v&&S===m&&y=i||gS(w,S))d=v,f=m;else{T=w-u,C=S-h;var k=v-u,L=w-v,P=m-h,O=S-m,R=void 0,N=void 0;if("x"===s){var E=T>0?1:-1;d=v-E*(R=Math.abs(k))*a,f=m,D=v+E*(N=Math.abs(L))*a,A=m}else if("y"===s){var z=C>0?1:-1;d=v,f=m-z*(R=Math.abs(P))*a,D=v,A=m+z*(N=Math.abs(O))*a}else R=Math.sqrt(k*k+P*P),d=v-T*a*(1-(I=(N=Math.sqrt(L*L+O*O))/(N+R))),f=m-C*a*(1-I),A=m+C*a*I,D=dS(D=v+T*a*I,fS(w,v)),A=dS(A,fS(S,m)),D=fS(D,dS(w,v)),f=m-(C=(A=fS(A,dS(S,m)))-m)*R/N,d=dS(d=v-(T=D-v)*R/N,fS(u,v)),f=dS(f,fS(h,m)),D=v+(T=v-(d=fS(d,dS(u,v))))*N/R,A=m+(C=m-(f=fS(f,dS(h,m))))*N/R}t.bezierCurveTo(c,p,d,f,v,m),c=D,p=A}else t.lineTo(v,m)}u=v,h=m,g+=o}return y}var vS=function(){this.smooth=0,this.smoothConstraint=!0},mS=function(t){function e(e){var n=t.call(this,e)||this;return n.type="ec-polyline",n}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new vS},e.prototype.buildPath=function(t,e){var n=e.points,i=0,r=n.length/2;if(e.connectNulls){for(;r>0&&gS(n[2*r-2],n[2*r-1]);r--);for(;i=0){var y=a?(h-i)*g+i:(u-n)*g+n;return a?[t,y]:[y,t]}n=u,i=h;break;case o.C:u=r[l++],h=r[l++],c=r[l++],p=r[l++],d=r[l++],f=r[l++];var v=a?_n(n,u,c,d,t,s):_n(i,h,p,f,t,s);if(v>0)for(var m=0;m=0){y=a?mn(i,h,p,f,x):mn(n,u,c,d,x);return a?[t,y]:[y,t]}}n=d,i=f}}},e}(Is),xS=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(vS),_S=function(t){function e(e){var n=t.call(this,e)||this;return n.type="ec-polygon",n}return n(e,t),e.prototype.getDefaultShape=function(){return new xS},e.prototype.buildPath=function(t,e){var n=e.points,i=e.stackedOnPoints,r=0,o=n.length/2,a=e.smoothMonotone;if(e.connectNulls){for(;o>0&&gS(n[2*o-2],n[2*o-1]);o--);for(;r=0;a--){var s=t.getDimensionInfo(i[a].dimension);if("x"===(r=s&&s.coordDim)||"y"===r){o=i[a];break}}if(o){var l=e.getAxis(r),u=z(o.stops,(function(t){return{coord:l.toGlobalCoord(l.dataToCoord(t.value)),color:t.color}})),h=u.length,c=o.outerColors.slice();h&&u[0].coord>u[h-1].coord&&(u.reverse(),c.reverse());var p=function(t,e){var n,i,r=[],o=t.length;function a(t,e,n){var i=t.coord;return{coord:n,color:ti((n-i)/(e.coord-i),[t.color,e.color])}}for(var s=0;se){i?r.push(a(i,l,e)):n&&r.push(a(n,l,0),a(n,l,e));break}n&&(r.push(a(n,l,0)),n=null),r.push(l),i=l}}return r}(u,"x"===r?n.getWidth():n.getHeight()),d=p.length;if(!d&&h)return u[0].coord<0?c[1]?c[1]:u[h-1].color:c[0]?c[0]:u[0].color;var f=p[0].coord-10,g=p[d-1].coord+10,y=g-f;if(y<.001)return"transparent";E(p,(function(t){t.offset=(t.coord-f)/y})),p.push({offset:d?p[d-1].offset:.5,color:c[1]||"transparent"}),p.unshift({offset:d?p[0].offset:.5,color:c[0]||"transparent"});var v=new nh(0,0,0,0,p,!0);return v[r]=f,v[r+"2"]=g,v}}}function LS(t,e,n){var i=t.get("showAllSymbol"),r="auto"===i;if(!i||r){var o=n.getAxesByScale("ordinal")[0];if(o&&(!r||!function(t,e){var n=t.getExtent(),i=Math.abs(n[1]-n[0])/t.scale.count();isNaN(i)&&(i=0);for(var r=e.count(),o=Math.max(1,Math.round(r/5)),a=0;ai)return!1;return!0}(o,e))){var a=e.mapDimension(o.dim),s={};return E(o.getViewLabels(),(function(t){var e=o.scale.getRawOrdinalNumber(t.tickValue);s[e]=1})),function(t){return!s.hasOwnProperty(e.get(a,t))}}}}function PS(t,e){return[t[2*e],t[2*e+1]]}function OS(t){if(t.get(["endLabel","show"]))return!0;for(var e=0;e0&&"bolder"===t.get(["emphasis","lineStyle","width"]))&&(d.getState("emphasis").style.lineWidth=+d.style.lineWidth+1);Qs(d).seriesIndex=t.seriesIndex,Yl(d,L,P,O);var R=DS(t.get("smooth")),N=t.get("smoothMonotone");if(d.setShape({smooth:R,smoothMonotone:N,connectNulls:w}),f){var E=a.getCalculationInfo("stackedOnSeries"),z=0;f.useStyle(k(l.getAreaStyle(),{fill:C,opacity:.7,lineJoin:"bevel",decal:a.getVisual("style").decal})),E&&(z=DS(E.get("smooth"))),f.setShape({smooth:R,stackedOnSmooth:z,smoothMonotone:N,connectNulls:w}),jl(f,t,"areaStyle"),Qs(f).seriesIndex=t.seriesIndex,Yl(f,L,P,O)}var V=function(t){i._changePolyState(t)};a.eachItemGraphicEl((function(t){t&&(t.onHoverStateChange=V)})),this._polyline.onHoverStateChange=V,this._data=a,this._coordSys=r,this._stackedOnPoints=_,this._points=u,this._step=T,this._valueOrigin=m,t.get("triggerLineEvent")&&(this.packEventData(t,d),f&&this.packEventData(t,f))},e.prototype.packEventData=function(t,e){Qs(e).eventData={componentType:"series",componentSubType:"line",componentIndex:t.componentIndex,seriesIndex:t.seriesIndex,seriesName:t.name,seriesType:"line"}},e.prototype.highlight=function(t,e,n,i){var r=t.getData(),o=Po(r,i);if(this._changePolyState("emphasis"),!(o instanceof Array)&&null!=o&&o>=0){var a=r.getLayout("points"),s=r.getItemGraphicEl(o);if(!s){var l=a[2*o],u=a[2*o+1];if(isNaN(l)||isNaN(u))return;if(this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(l,u))return;var h=t.get("zlevel")||0,c=t.get("z")||0;(s=new oS(r,o)).x=l,s.y=u,s.setZ(h,c);var p=s.getSymbolPath().getTextContent();p&&(p.zlevel=h,p.z=c,p.z2=this._polyline.z2+1),s.__temp=!0,r.setItemGraphicEl(o,s),s.stopSymbolAnimation(!0),this.group.add(s)}s.highlight()}else kg.prototype.highlight.call(this,t,e,n,i)},e.prototype.downplay=function(t,e,n,i){var r=t.getData(),o=Po(r,i);if(this._changePolyState("normal"),null!=o&&o>=0){var a=r.getItemGraphicEl(o);a&&(a.__temp?(r.setItemGraphicEl(o,null),this.group.remove(a)):a.downplay())}else kg.prototype.downplay.call(this,t,e,n,i)},e.prototype._changePolyState=function(t){var e=this._polygon;Il(this._polyline,t),e&&Il(e,t)},e.prototype._newPolyline=function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new mS({shape:{points:t},segmentIgnoreThreshold:2,z2:10}),this._lineGroup.add(e),this._polyline=e,e},e.prototype._newPolygon=function(t,e){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new _S({shape:{points:t,stackedOnPoints:e},segmentIgnoreThreshold:2}),this._lineGroup.add(n),this._polygon=n,n},e.prototype._initSymbolLabelAnimation=function(t,e,n){var i,r,o=e.getBaseAxis(),a=o.inverse;"cartesian2d"===e.type?(i=o.isHorizontal(),r=!1):"polar"===e.type&&(i="angle"===o.dim,r=!0);var s=t.hostModel,l=s.get("animationDuration");X(l)&&(l=l(null));var u=s.get("animationDelay")||0,h=X(u)?u(null):u;t.eachItemGraphicEl((function(t,o){var s=t;if(s){var c=[t.x,t.y],p=void 0,d=void 0,f=void 0;if(n)if(r){var g=n,y=e.pointToCoord(c);i?(p=g.startAngle,d=g.endAngle,f=-y[1]/180*Math.PI):(p=g.r0,d=g.r,f=y[0])}else{var v=n;i?(p=v.x,d=v.x+v.width,f=t.x):(p=v.y+v.height,d=v.y,f=t.y)}var m=d===p?0:(f-p)/(d-p);a&&(m=1-m);var x=X(u)?u(o):l*m+h,_=s.getSymbolPath(),b=_.getTextContent();s.attr({scaleX:0,scaleY:0}),s.animateTo({scaleX:1,scaleY:1},{duration:200,setToFinal:!0,delay:x}),b&&b.animateFrom({style:{opacity:0}},{duration:300,delay:x}),_.disableLabelAnimation=!0}}))},e.prototype._initOrUpdateEndLabel=function(t,e,n){var i=t.getModel("endLabel");if(OS(t)){var r=t.getData(),o=this._polyline,a=r.getLayout("points");if(!a)return o.removeTextContent(),void(this._endLabel=null);var s=this._endLabel;s||((s=this._endLabel=new Fs({z2:200})).ignoreClip=!0,o.setTextContent(this._endLabel),o.disableLabelAnimation=!0);var l=function(t){for(var e,n,i=t.length/2;i>0&&(e=t[2*i-2],n=t[2*i-1],isNaN(e)||isNaN(n));i--);return i-1}(a);l>=0&&(tc(o,ec(t,"endLabel"),{inheritColor:n,labelFetcher:t,labelDataIndex:l,defaultText:function(t,e,n){return null!=n?rS(r,n):iS(r,t)},enableTextSetter:!0},function(t,e){var n=e.getBaseAxis(),i=n.isHorizontal(),r=n.inverse,o=i?r?"right":"left":"center",a=i?"middle":r?"top":"bottom";return{normal:{align:t.get("align")||o,verticalAlign:t.get("verticalAlign")||a}}}(i,e)),o.textConfig.position=null)}else this._endLabel&&(this._polyline.removeTextContent(),this._endLabel=null)},e.prototype._endLabelOnDuring=function(t,e,n,i,r,o,a){var s=this._endLabel,l=this._polyline;if(s){t<1&&null==i.originalX&&(i.originalX=s.x,i.originalY=s.y);var u=n.getLayout("points"),h=n.hostModel,c=h.get("connectNulls"),p=o.get("precision"),d=o.get("distance")||0,f=a.getBaseAxis(),g=f.isHorizontal(),y=f.inverse,v=e.shape,m=y?g?v.x:v.y+v.height:g?v.x+v.width:v.y,x=(g?d:0)*(y?-1:1),_=(g?0:-d)*(y?-1:1),b=g?"x":"y",w=function(t,e,n){for(var i,r,o=t.length/2,a="x"===n?0:1,s=0,l=-1,u=0;u=e||i>=e&&r<=e){l=u;break}s=u,i=r}else i=r;return{range:[s,l],t:(e-i)/(r-i)}}(u,m,b),S=w.range,M=S[1]-S[0],I=void 0;if(M>=1){if(M>1&&!c){var T=PS(u,S[0]);s.attr({x:T[0]+x,y:T[1]+_}),r&&(I=h.getRawValue(S[0]))}else{(T=l.getPointOn(m,b))&&s.attr({x:T[0]+x,y:T[1]+_});var C=h.getRawValue(S[0]),D=h.getRawValue(S[1]);r&&(I=Wo(n,p,C,D,w.t))}i.lastFrameIndex=S[0]}else{var A=1===t||i.lastFrameIndex>0?S[0]:0;T=PS(u,A);r&&(I=h.getRawValue(A)),s.attr({x:T[0]+x,y:T[1]+_})}if(r){var k=uc(s);"function"==typeof k.setLabelText&&k.setLabelText(I)}}},e.prototype._doUpdateAnimation=function(t,e,n,i,r,o,a){var s=this._polyline,l=this._polygon,u=t.hostModel,h=function(t,e,n,i,r,o,a,s){for(var l=function(t,e){var n=[];return e.diff(t).add((function(t){n.push({cmd:"+",idx:t})})).update((function(t,e){n.push({cmd:"=",idx:e,idx1:t})})).remove((function(t){n.push({cmd:"-",idx:t})})).execute(),n}(t,e),u=[],h=[],c=[],p=[],d=[],f=[],g=[],y=cS(r,e,a),v=t.getLayout("points")||[],m=e.getLayout("points")||[],x=0;x3e3||l&&CS(p,f)>3e3)return s.stopAnimation(),s.setShape({points:d}),void(l&&(l.stopAnimation(),l.setShape({points:d,stackedOnPoints:f})));s.shape.__points=h.current,s.shape.points=c;var g={shape:{points:d}};h.current!==c&&(g.shape.__points=h.next),s.stopAnimation(),fh(s,g,u),l&&(l.setShape({points:c,stackedOnPoints:p}),l.stopAnimation(),fh(l,{shape:{stackedOnPoints:f}},u),s.shape.points!==l.shape.points&&(l.shape.points=s.shape.points));for(var y=[],v=h.status,m=0;me&&(e=t[n]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,n=0;n10&&"cartesian2d"===o.type&&r){var s=o.getBaseAxis(),l=o.getOtherAxis(s),u=s.getExtent(),h=n.getDevicePixelRatio(),c=Math.abs(u[1]-u[0])*(h||1),p=Math.round(a/c);if(isFinite(p)&&p>1){"lttb"===r&&t.setData(i.lttbDownSample(i.mapDimension(l.dim),1/p));var d=void 0;U(r)?d=zS[r]:X(r)&&(d=r),d&&t.setData(i.downSample(i.mapDimension(l.dim),1/p,d,VS))}}}}}var FS=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(t,e){return vx(null,this,{useEncodeDefaulter:!0})},e.prototype.getMarkerPosition=function(t,e,n){var i=this.coordinateSystem;if(i&&i.clampData){var r=i.clampData(t),o=i.dataToPoint(r);if(n)E(i.getAxes(),(function(t,n){if("category"===t.type&&null!=e){var i=t.getTicksCoords(),a=r[n],s="x1"===e[n]||"y1"===e[n];if(s&&(a+=1),i.length<2)return;if(2===i.length)return void(o[n]=t.toGlobalCoord(t.getExtent()[s?1:0]));for(var l=void 0,u=void 0,h=1,c=0;ca){u=(p+l)/2;break}1===c&&(h=d-i[0].tickValue)}null==u&&(l?l&&(u=i[i.length-1].coord):u=i[0].coord),o[n]=t.toGlobalCoord(u)}}));else{var a=this.getData(),s=a.getLayout("offset"),l=a.getLayout("size"),u=i.getBaseAxis().isHorizontal()?0:1;o[u]+=s+l/2}return o}return[NaN,NaN]},e.type="series.__base_bar__",e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod"},e}(mg);mg.registerClass(FS);var GS=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(){return vx(null,this,{useEncodeDefaulter:!0,createInvertedIndices:!!this.get("realtimeSort",!0)||null})},e.prototype.getProgressive=function(){return!!this.get("large")&&this.get("progressive")},e.prototype.getProgressiveThreshold=function(){var t=this.get("progressiveThreshold"),e=this.get("largeThreshold");return e>t&&(t=e),t},e.prototype.brushSelector=function(t,e,n){return n.rect(e.getItemLayout(t))},e.type="series.bar",e.dependencies=["grid","polar"],e.defaultOption=Cc(FS.defaultOption,{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1},select:{itemStyle:{borderColor:"#212121"}},realtimeSort:!1}),e}(FS),WS=function(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0},HS=function(t){function e(e){var n=t.call(this,e)||this;return n.type="sausage",n}return n(e,t),e.prototype.getDefaultShape=function(){return new WS},e.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r0||0,0),o=Math.max(e.r,0),a=.5*(o-r),s=r+a,l=e.startAngle,u=e.endAngle,h=e.clockwise,c=2*Math.PI,p=h?u-lo)return!0;o=u}return!1},e.prototype._isOrderDifferentInView=function(t,e){for(var n=e.scale,i=n.getExtent(),r=Math.max(0,i[0]),o=Math.min(i[1],n.getOrdinalMeta().categories.length-1);r<=o;++r)if(t.ordinalNumbers[r]!==n.getRawOrdinalNumber(r))return!0},e.prototype._updateSortWithinSameData=function(t,e,n,i){if(this._isOrderChangedWithinSameData(t,e,n)){var r=this._dataSort(t,n,e);this._isOrderDifferentInView(r,n)&&(this._removeOnRenderedListener(i),i.dispatchAction({type:"changeAxisOrder",componentType:n.dim+"Axis",axisId:n.index,sortInfo:r}))}},e.prototype._dispatchInitSort=function(t,e,n){var i=e.baseAxis,r=this._dataSort(t,i,(function(n){return t.get(t.mapDimension(e.otherAxis.dim),n)}));n.dispatchAction({type:"changeAxisOrder",componentType:i.dim+"Axis",isInitSort:!0,axisId:i.index,sortInfo:r})},e.prototype.remove=function(t,e){this._clear(this._model),this._removeOnRenderedListener(e)},e.prototype.dispose=function(t,e){this._removeOnRenderedListener(e)},e.prototype._removeOnRenderedListener=function(t){this._onRendered&&(t.getZr().off("rendered",this._onRendered),this._onRendered=null)},e.prototype._clear=function(t){var e=this.group,n=this._data;t&&t.isAnimationEnabled()&&n&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],n.eachItemGraphicEl((function(e){xh(e,t,Qs(e).dataIndex)}))):e.removeAll(),this._data=null,this._isFirstFrame=!0},e.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},e.type="bar",e}(kg),KS={cartesian2d:function(t,e){var n=e.width<0?-1:1,i=e.height<0?-1:1;n<0&&(e.x+=e.width,e.width=-e.width),i<0&&(e.y+=e.height,e.height=-e.height);var r=t.x+t.width,o=t.y+t.height,a=ZS(e.x,t.x),s=jS(e.x+e.width,r),l=ZS(e.y,t.y),u=jS(e.y+e.height,o),h=sr?s:a,e.y=c&&l>o?u:l,e.width=h?0:s-a,e.height=c?0:u-l,n<0&&(e.x+=e.width,e.width=-e.width),i<0&&(e.y+=e.height,e.height=-e.height),h||c},polar:function(t,e){var n=e.r0<=e.r?1:-1;if(n<0){var i=e.r;e.r=e.r0,e.r0=i}var r=jS(e.r,t.r),o=ZS(e.r0,t.r0);e.r=r,e.r0=o;var a=r-o<0;if(n<0){i=e.r;e.r=e.r0,e.r0=i}return a}},$S={cartesian2d:function(t,e,n,i,r,o,a,s,l){var u=new zs({shape:A({},i),z2:1});(u.__dataIndex=n,u.name="item",o)&&(u.shape[r?"height":"width"]=0);return u},polar:function(t,e,n,i,r,o,a,s,l){var u=!r&&l?HS:zu,h=new u({shape:i,z2:1});h.name="item";var c,p,d=rM(r);if(h.calculateTextPosition=(c=d,p=({isRoundCap:u===HS}||{}).isRoundCap,function(t,e,n){var i=e.position;if(!i||i instanceof Array)return Tr(t,e,n);var r=c(i),o=null!=e.distance?e.distance:5,a=this.shape,s=a.cx,l=a.cy,u=a.r,h=a.r0,d=(u+h)/2,f=a.startAngle,g=a.endAngle,y=(f+g)/2,v=p?Math.abs(u-h)/2:0,m=Math.cos,x=Math.sin,_=s+u*m(f),b=l+u*x(f),w="left",S="top";switch(r){case"startArc":_=s+(h-o)*m(y),b=l+(h-o)*x(y),w="center",S="top";break;case"insideStartArc":_=s+(h+o)*m(y),b=l+(h+o)*x(y),w="center",S="bottom";break;case"startAngle":_=s+d*m(f)+YS(f,o+v,!1),b=l+d*x(f)+XS(f,o+v,!1),w="right",S="middle";break;case"insideStartAngle":_=s+d*m(f)+YS(f,-o+v,!1),b=l+d*x(f)+XS(f,-o+v,!1),w="left",S="middle";break;case"middle":_=s+d*m(y),b=l+d*x(y),w="center",S="middle";break;case"endArc":_=s+(u+o)*m(y),b=l+(u+o)*x(y),w="center",S="bottom";break;case"insideEndArc":_=s+(u-o)*m(y),b=l+(u-o)*x(y),w="center",S="top";break;case"endAngle":_=s+d*m(g)+YS(g,o+v,!0),b=l+d*x(g)+XS(g,o+v,!0),w="left",S="middle";break;case"insideEndAngle":_=s+d*m(g)+YS(g,-o+v,!0),b=l+d*x(g)+XS(g,-o+v,!0),w="right",S="middle";break;default:return Tr(t,e,n)}return(t=t||{}).x=_,t.y=b,t.align=w,t.verticalAlign=S,t}),o){var f=r?"r":"endAngle",g={};h.shape[f]=r?i.r0:i.startAngle,g[f]=i[f],(s?fh:gh)(h,{shape:g},o)}return h}};function JS(t,e,n,i,r,o,a,s){var l,u;o?(u={x:i.x,width:i.width},l={y:i.y,height:i.height}):(u={y:i.y,height:i.height},l={x:i.x,width:i.width}),s||(a?fh:gh)(n,{shape:l},e,r,null),(a?fh:gh)(n,{shape:u},e?t.baseAxis.model:null,r)}function QS(t,e){for(var n=0;n0?1:-1,a=i.height>0?1:-1;return{x:i.x+o*r/2,y:i.y+a*r/2,width:i.width-o*r,height:i.height-a*r}},polar:function(t,e,n){var i=t.getItemLayout(e);return{cx:i.cx,cy:i.cy,r0:i.r0,r:i.r,startAngle:i.startAngle,endAngle:i.endAngle,clockwise:i.clockwise}}};function rM(t){return function(t){var e=t?"Arc":"Angle";return function(t){switch(t){case"start":case"insideStart":case"end":case"insideEnd":return t+e;default:return t}}}(t)}function oM(t,e,n,i,r,o,a,s){var l=e.getItemVisual(n,"style");if(s){if(!o.get("roundCap")){var u=t.shape;A(u,US(i.getModel("itemStyle"),u,!0)),t.setShape(u)}}else{var h=i.get(["itemStyle","borderRadius"])||0;t.setShape("r",h)}t.useStyle(l);var c=i.getShallow("cursor");c&&t.attr("cursor",c);var p=s?a?r.r>=r.r0?"endArc":"startArc":r.endAngle>=r.startAngle?"endAngle":"startAngle":a?r.height>=0?"bottom":"top":r.width>=0?"right":"left",d=ec(i);tc(t,d,{labelFetcher:o,labelDataIndex:n,defaultText:iS(o.getData(),n),inheritColor:l.fill,defaultOpacity:l.opacity,defaultOutsidePosition:p});var f=t.getTextContent();if(s&&f){var g=i.get(["label","position"]);t.textConfig.inside="middle"===g||null,function(t,e,n,i){if(j(i))t.setTextConfig({rotation:i});else if(Y(e))t.setTextConfig({rotation:0});else{var r,o=t.shape,a=o.clockwise?o.startAngle:o.endAngle,s=o.clockwise?o.endAngle:o.startAngle,l=(a+s)/2,u=n(e);switch(u){case"startArc":case"insideStartArc":case"middle":case"insideEndArc":case"endArc":r=l;break;case"startAngle":case"insideStartAngle":r=a;break;case"endAngle":case"insideEndAngle":r=s;break;default:return void t.setTextConfig({rotation:0})}var h=1.5*Math.PI-r;"middle"===u&&h>Math.PI/2&&h<1.5*Math.PI&&(h-=Math.PI),t.setTextConfig({rotation:h})}}(t,"outside"===g?p:g,rM(a),i.get(["label","rotate"]))}hc(f,d,o.getRawValue(n),(function(t){return rS(e,t)}));var y=i.getModel(["emphasis"]);Yl(t,y.get("focus"),y.get("blurScope"),y.get("disabled")),jl(t,i),function(t){return null!=t.startAngle&&null!=t.endAngle&&t.startAngle===t.endAngle}(r)&&(t.style.fill="none",t.style.stroke="none",E(t.states,(function(t){t.style&&(t.style.fill=t.style.stroke="none")})))}var aM=function(){},sM=function(t){function e(e){var n=t.call(this,e)||this;return n.type="largeBar",n}return n(e,t),e.prototype.getDefaultShape=function(){return new aM},e.prototype.buildPath=function(t,e){for(var n=e.points,i=this.baseDimIdx,r=1-this.baseDimIdx,o=[],a=[],s=this.barWidth,l=0;l=s[0]&&e<=s[0]+l[0]&&n>=s[1]&&n<=s[1]+l[1])return a[h]}return-1}(this,t.offsetX,t.offsetY);Qs(this).dataIndex=e>=0?e:null}),30,!1);function hM(t,e,n){if(MS(n,"cartesian2d")){var i=e,r=n.getArea();return{x:t?i.x:r.x,y:t?r.y:i.y,width:t?i.width:r.width,height:t?r.height:i.height}}var o=e;return{cx:(r=n.getArea()).cx,cy:r.cy,r0:t?r.r0:o.r0,r:t?r.r:o.r,startAngle:t?o.startAngle:0,endAngle:t?o.endAngle:2*Math.PI}}var cM=2*Math.PI,pM=Math.PI/180;function dM(t,e){return Cp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function fM(t,e){var n=dM(t,e),i=t.get("center"),r=t.get("radius");Y(r)||(r=[0,r]);var o,a,s=Ur(n.width,e.getWidth()),l=Ur(n.height,e.getHeight()),u=Math.min(s,l),h=Ur(r[0],u/2),c=Ur(r[1],u/2),p=t.coordinateSystem;if(p){var d=p.dataToPoint(i);o=d[0]||0,a=d[1]||0}else Y(i)||(i=[i,i]),o=Ur(i[0],s)+n.x,a=Ur(i[1],l)+n.y;return{cx:o,cy:a,r0:h,r:c}}function gM(t,e,n){e.eachSeriesByType(t,(function(t){var e=t.getData(),i=e.mapDimension("value"),r=dM(t,n),o=fM(t,n),a=o.cx,s=o.cy,l=o.r,u=o.r0,h=-t.get("startAngle")*pM,c=t.get("minAngle")*pM,p=0;e.each(i,(function(t){!isNaN(t)&&p++}));var d=e.getSum(i),f=Math.PI/(d||p)*2,g=t.get("clockwise"),y=t.get("roseType"),v=t.get("stillShowZeroSum"),m=e.getDataExtent(i);m[0]=0;var x=cM,_=0,b=h,w=g?1:-1;if(e.setLayout({viewRect:r,r:l}),e.each(i,(function(t,n){var i;if(isNaN(t))e.setItemLayout(n,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:g,cx:a,cy:s,r0:u,r:y?NaN:l});else{(i="area"!==y?0===d&&v?f:t*f:cM/p)n?a:o,h=Math.abs(l.label.y-n);if(h>=u.maxY){var c=l.label.x-e-l.len2*r,p=i+l.len,f=Math.abs(c)t.unconstrainedWidth?null:d:null;i.setStyle("width",f)}var g=i.getBoundingRect();o.width=g.width;var y=(i.style.margin||0)+2.1;o.height=g.height+y,o.y-=(o.height-c)/2}}}function _M(t){return"center"===t.position}function bM(t){var e,n,i=t.getData(),r=[],o=!1,a=(t.get("minShowLabelAngle")||0)*vM,s=i.getLayout("viewRect"),l=i.getLayout("r"),u=s.width,h=s.x,c=s.y,p=s.height;function d(t){t.ignore=!0}i.each((function(t){var s=i.getItemGraphicEl(t),c=s.shape,p=s.getTextContent(),f=s.getTextGuideLine(),g=i.getItemModel(t),y=g.getModel("label"),v=y.get("position")||g.get(["emphasis","label","position"]),m=y.get("distanceToLabelLine"),x=y.get("alignTo"),_=Ur(y.get("edgeDistance"),u),b=y.get("bleedMargin"),w=g.getModel("labelLine"),S=w.get("length");S=Ur(S,u);var M=w.get("length2");if(M=Ur(M,u),Math.abs(c.endAngle-c.startAngle)0?"right":"left":k>0?"left":"right"}var B=Math.PI,F=0,G=y.get("rotate");if(j(G))F=G*(B/180);else if("center"===v)F=0;else if("radial"===G||!0===G){F=k<0?-A+B:-A}else if("tangential"===G&&"outside"!==v&&"outer"!==v){var W=Math.atan2(k,L);W<0&&(W=2*B+W),L>0&&(W=B+W),F=W-B}if(o=!!F,p.x=I,p.y=T,p.rotation=F,p.setStyle({verticalAlign:"middle"}),P){p.setStyle({align:D});var H=p.states.select;H&&(H.x+=p.x,H.y+=p.y)}else{var Y=p.getBoundingRect().clone();Y.applyTransform(p.getComputedTransform());var X=(p.style.margin||0)+2.1;Y.y-=X/2,Y.height+=X,r.push({label:p,labelLine:f,position:v,len:S,len2:M,minTurnAngle:w.get("minTurnAngle"),maxSurfaceAngle:w.get("maxSurfaceAngle"),surfaceNormal:new De(k,L),linePoints:C,textAlign:D,labelDistance:m,labelAlignTo:x,edgeDistance:_,bleedMargin:b,rect:Y,unconstrainedWidth:Y.width,labelStyleWidth:p.style.width})}s.setTextConfig({inside:P})}})),!o&&t.get("avoidLabelOverlap")&&function(t,e,n,i,r,o,a,s){for(var l=[],u=[],h=Number.MAX_VALUE,c=-Number.MAX_VALUE,p=0;p0){for(var l=o.getItemLayout(0),u=1;isNaN(l&&l.startAngle)&&u=n.r0}},e.type="pie",e}(kg);function MM(t,e,n){e=Y(e)&&{coordDimensions:e}||A({encodeDefine:t.getEncode()},e);var i=t.getSource(),r=ux(i,e).dimensions,o=new lx(r,t);return o.initData(i,n),o}var IM=function(){function t(t,e){this._getDataWithEncodedVisual=t,this._getRawData=e}return t.prototype.getAllNames=function(){var t=this._getRawData();return t.mapArray(t.getName)},t.prototype.containName=function(t){return this._getRawData().indexOfName(t)>=0},t.prototype.indexOfName=function(t){return this._getDataWithEncodedVisual().indexOfName(t)},t.prototype.getItemVisual=function(t,e){return this._getDataWithEncodedVisual().getItemVisual(t,e)},t}(),TM=Oo(),CM=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new IM(W(this.getData,this),W(this.getRawData,this)),this._defaultLabelLine(e)},e.prototype.mergeOption=function(){t.prototype.mergeOption.apply(this,arguments)},e.prototype.getInitialData=function(){return MM(this,{coordDimensions:["value"],encodeDefaulter:H(Jp,this)})},e.prototype.getDataParams=function(e){var n=this.getData(),i=TM(n),r=i.seats;if(!r){var o=[];n.each(n.mapDimension("value"),(function(t){o.push(t)})),r=i.seats=Jr(o,n.hostModel.get("percentPrecision"))}var a=t.prototype.getDataParams.call(this,e);return a.percent=r[e]||0,a.$vars.push("percent"),a},e.prototype._defaultLabelLine=function(t){wo(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.type="series.pie",e.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,minShowLabelAngle:0,selectedOffset:10,percentPrecision:2,stillShowZeroSum:!0,left:0,top:0,right:0,bottom:0,width:null,height:null,label:{rotate:0,show:!0,overflow:"truncate",position:"outer",alignTo:"none",edgeDistance:"25%",bleedMargin:10,distanceToLabelLine:5},labelLine:{show:!0,length:15,length2:15,smooth:!1,minTurnAngle:90,maxSurfaceAngle:90,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1,borderJoin:"round"},showEmptyCircle:!0,emptyCircleStyle:{color:"lightgray",opacity:1},labelLayout:{hideOverlap:!0},emphasis:{scale:!0,scaleSize:5},avoidLabelOverlap:!0,animationType:"expansion",animationDuration:1e3,animationTypeUpdate:"transition",animationEasingUpdate:"cubicInOut",animationDurationUpdate:500,animationEasing:"cubicInOut"},e}(mg);var DM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){return vx(null,this,{useEncodeDefaulter:!0})},e.prototype.getProgressive=function(){var t=this.option.progressive;return null==t?this.option.large?5e3:this.get("progressive"):t},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?1e4:this.get("progressiveThreshold"):t},e.prototype.brushSelector=function(t,e,n){return n.point(e.getItemLayout(t))},e.prototype.getZLevelKey=function(){return this.getData().count()>this.getProgressiveThreshold()?this.id:""},e.type="series.scatter",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},emphasis:{scale:!0},clip:!0,select:{itemStyle:{borderColor:"#212121"}},universalTransition:{divideShape:"clone"}},e}(mg),AM=function(){},kM=function(t){function e(e){var n=t.call(this,e)||this;return n._off=0,n.hoverDataIdx=-1,n}return n(e,t),e.prototype.getDefaultShape=function(){return new AM},e.prototype.reset=function(){this.notClear=!1,this._off=0},e.prototype.buildPath=function(t,e){var n,i=e.points,r=e.size,o=this.symbolProxy,a=o.shape,s=t.getContext?t.getContext():t,l=s&&r[0]<4,u=this.softClipShape;if(l)this._ctx=s;else{for(this._ctx=null,n=this._off;n=0;s--){var l=2*s,u=i[l]-o/2,h=i[l+1]-a/2;if(t>=u&&e>=h&&t<=u+o&&e<=h+a)return s}return-1},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect();return t=n[0],e=n[1],i.contain(t,e)?(this.hoverDataIdx=this.findDataIndex(t,e))>=0:(this.hoverDataIdx=-1,!1)},e.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var e=this.shape,n=e.points,i=e.size,r=i[0],o=i[1],a=1/0,s=1/0,l=-1/0,u=-1/0,h=0;h=0&&(l.dataIndex=n+(t.startIndex||0))}))},t.prototype.remove=function(){this._clear()},t.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},t}(),PM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).updateData(i,{clipShape:this._getClipShape(t)}),this._finished=!0},e.prototype.incrementalPrepareRender=function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).incrementalPrepareUpdate(i),this._finished=!1},e.prototype.incrementalRender=function(t,e,n){this._symbolDraw.incrementalUpdate(t,e.getData(),{clipShape:this._getClipShape(e)}),this._finished=t.end===e.getData().count()},e.prototype.updateTransform=function(t,e,n){var i=t.getData();if(this.group.dirty(),!this._finished||i.count()>1e4)return{update:!0};var r=ES("").reset(t,e,n);r.progress&&r.progress({start:0,end:i.count(),count:i.count()},i),this._symbolDraw.updateLayout(i)},e.prototype.eachRendered=function(t){this._symbolDraw&&this._symbolDraw.eachRendered(t)},e.prototype._getClipShape=function(t){var e=t.coordinateSystem,n=e&&e.getArea&&e.getArea();return t.get("clip",!0)?n:null},e.prototype._updateSymbolDraw=function(t,e){var n=this._symbolDraw,i=e.pipelineContext.large;return n&&i===this._isLargeDraw||(n&&n.remove(),n=this._symbolDraw=i?new LM:new hS,this._isLargeDraw=i,this.group.removeAll()),this.group.add(n.group),n},e.prototype.remove=function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},e.prototype.dispose=function(){},e.type="scatter",e}(kg),OM=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.type="grid",e.dependencies=["xAxis","yAxis"],e.layoutMode="box",e.defaultOption={show:!1,z:0,left:"10%",top:60,right:"10%",bottom:70,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"},e}(Rp),RM=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getCoordSysModel=function(){return this.getReferringComponents("grid",zo).models[0]},e.type="cartesian2dAxis",e}(Rp);R(RM,I_);var NM={show:!0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#6E7079",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#E0E6F1"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.2)","rgba(210,219,238,0.2)"]}}},EM=C({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},NM),zM=C({boundaryGap:[0,0],axisLine:{show:"auto"},axisTick:{show:"auto"},splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:"#F4F7FD",width:1}}},NM),VM={category:EM,value:zM,time:C({splitNumber:6,axisLabel:{showMinLabel:!1,showMaxLabel:!1,rich:{primary:{fontWeight:"bold"}}},splitLine:{show:!1}},zM),log:k({logBase:10},zM)},BM={value:1,category:1,time:1,log:1};function FM(t,e,i,r){E(BM,(function(o,a){var s=C(C({},VM[a],!0),r,!0),l=function(t){function i(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e+"Axis."+a,n}return n(i,t),i.prototype.mergeDefaultAndTheme=function(t,e){var n=Ap(this),i=n?Lp(t):{};C(t,e.getTheme().get(a+"Axis")),C(t,this.getDefaultOption()),t.type=GM(t),n&&kp(t,i,n)},i.prototype.optionUpdated=function(){"category"===this.option.type&&(this.__ordinalMeta=_x.createByAxisModel(this))},i.prototype.getCategories=function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},i.prototype.getOrdinalMeta=function(){return this.__ordinalMeta},i.type=e+"Axis."+a,i.defaultOption=s,i}(i);t.registerComponentModel(l)})),t.registerSubTypeDefaulter(e+"Axis",GM)}function GM(t){return t.type||(t.data?"category":"value")}var WM=function(){function t(t){this.type="cartesian",this._dimList=[],this._axes={},this.name=t||""}return t.prototype.getAxis=function(t){return this._axes[t]},t.prototype.getAxes=function(){return z(this._dimList,(function(t){return this._axes[t]}),this)},t.prototype.getAxesByScale=function(t){return t=t.toLowerCase(),B(this.getAxes(),(function(e){return e.scale.type===t}))},t.prototype.addAxis=function(t){var e=t.dim;this._axes[e]=t,this._dimList.push(e)},t}(),HM=["x","y"];function YM(t){return"interval"===t.type||"time"===t.type}var XM=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="cartesian2d",e.dimensions=HM,e}return n(e,t),e.prototype.calcAffineTransform=function(){this._transform=this._invTransform=null;var t=this.getAxis("x").scale,e=this.getAxis("y").scale;if(YM(t)&&YM(e)){var n=t.getExtent(),i=e.getExtent(),r=this.dataToPoint([n[0],i[0]]),o=this.dataToPoint([n[1],i[1]]),a=n[1]-n[0],s=i[1]-i[0];if(a&&s){var l=(o[0]-r[0])/a,u=(o[1]-r[1])/s,h=r[0]-n[0]*l,c=r[1]-i[0]*u,p=this._transform=[l,0,0,u,h,c];this._invTransform=Ie([],p)}}},e.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAxis("x")},e.prototype.containPoint=function(t){var e=this.getAxis("x"),n=this.getAxis("y");return e.contain(e.toLocalCoord(t[0]))&&n.contain(n.toLocalCoord(t[1]))},e.prototype.containData=function(t){return this.getAxis("x").containData(t[0])&&this.getAxis("y").containData(t[1])},e.prototype.containZone=function(t,e){var n=this.dataToPoint(t),i=this.dataToPoint(e),r=this.getArea(),o=new ze(n[0],n[1],i[0]-n[0],i[1]-n[1]);return r.intersect(o)},e.prototype.dataToPoint=function(t,e,n){n=n||[];var i=t[0],r=t[1];if(this._transform&&null!=i&&isFinite(i)&&null!=r&&isFinite(r))return Wt(n,t,this._transform);var o=this.getAxis("x"),a=this.getAxis("y");return n[0]=o.toGlobalCoord(o.dataToCoord(i,e)),n[1]=a.toGlobalCoord(a.dataToCoord(r,e)),n},e.prototype.clampData=function(t,e){var n=this.getAxis("x").scale,i=this.getAxis("y").scale,r=n.getExtent(),o=i.getExtent(),a=n.parse(t[0]),s=i.parse(t[1]);return(e=e||[])[0]=Math.min(Math.max(Math.min(r[0],r[1]),a),Math.max(r[0],r[1])),e[1]=Math.min(Math.max(Math.min(o[0],o[1]),s),Math.max(o[0],o[1])),e},e.prototype.pointToData=function(t,e){var n=[];if(this._invTransform)return Wt(n,t,this._invTransform);var i=this.getAxis("x"),r=this.getAxis("y");return n[0]=i.coordToData(i.toLocalCoord(t[0]),e),n[1]=r.coordToData(r.toLocalCoord(t[1]),e),n},e.prototype.getOtherAxis=function(t){return this.getAxis("x"===t.dim?"y":"x")},e.prototype.getArea=function(){var t=this.getAxis("x").getGlobalExtent(),e=this.getAxis("y").getGlobalExtent(),n=Math.min(t[0],t[1]),i=Math.min(e[0],e[1]),r=Math.max(t[0],t[1])-n,o=Math.max(e[0],e[1])-i;return new ze(n,i,r,o)},e}(WM),UM=function(t){function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.index=0,a.type=r||"value",a.position=o||"bottom",a}return n(e,t),e.prototype.isHorizontal=function(){var t=this.position;return"top"===t||"bottom"===t},e.prototype.getGlobalExtent=function(t){var e=this.getExtent();return e[0]=this.toGlobalCoord(e[0]),e[1]=this.toGlobalCoord(e[1]),t&&e[0]>e[1]&&e.reverse(),e},e.prototype.pointToData=function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},e.prototype.setCategorySortInfo=function(t){if("category"!==this.type)return!1;this.model.option.categorySortInfo=t,this.scale.setSortInfo(t)},e}(nb);function ZM(t,e,n){n=n||{};var i=t.coordinateSystem,r=e.axis,o={},a=r.getAxesOnZeroOf()[0],s=r.position,l=a?"onZero":s,u=r.dim,h=i.getRect(),c=[h.x,h.x+h.width,h.y,h.y+h.height],p={left:0,right:1,top:0,bottom:1,onZero:2},d=e.get("offset")||0,f="x"===u?[c[2]-d,c[3]+d]:[c[0]-d,c[1]+d];if(a){var g=a.toGlobalCoord(a.dataToCoord(0));f[p.onZero]=Math.max(Math.min(g,f[1]),f[0])}o.position=["y"===u?f[p[l]]:c[0],"x"===u?f[p[l]]:c[3]],o.rotation=Math.PI/2*("x"===u?0:1);o.labelDirection=o.tickDirection=o.nameDirection={top:-1,bottom:1,left:-1,right:1}[s],o.labelOffset=a?f[p[s]]-f[p.onZero]:0,e.get(["axisTick","inside"])&&(o.tickDirection=-o.tickDirection),it(n.labelInside,e.get(["axisLabel","inside"]))&&(o.labelDirection=-o.labelDirection);var y=e.get(["axisLabel","rotate"]);return o.labelRotate="top"===l?-y:y,o.z2=1,o}function jM(t){return"cartesian2d"===t.get("coordinateSystem")}function qM(t){var e={xAxisModel:null,yAxisModel:null};return E(e,(function(n,i){var r=i.replace(/Model$/,""),o=t.getReferringComponents(r,zo).models[0];e[i]=o})),e}var KM=Math.log;function $M(t,e,n){var i=Ox.prototype,r=i.getTicks.call(n),o=i.getTicks.call(n,!0),a=r.length-1,s=i.getInterval.call(n),l=y_(t,e),u=l.extent,h=l.fixMin,c=l.fixMax;if("log"===t.type){var p=KM(t.base);u=[KM(u[0])/p,KM(u[1])/p]}t.setExtent(u[0],u[1]),t.calcNiceExtent({splitNumber:a,fixMin:h,fixMax:c});var d=i.getExtent.call(t);h&&(u[0]=d[0]),c&&(u[1]=d[1]);var f=i.getInterval.call(t),g=u[0],y=u[1];if(h&&c)f=(y-g)/a;else if(h)for(y=u[0]+f*a;yu[0]&&isFinite(g)&&isFinite(u[0]);)f=Ix(f),g=u[1]-f*a;else{t.getTicks().length-1>a&&(f=Ix(f));var v=f*a;(g=Zr((y=Math.ceil(u[1]/f)*f)-v))<0&&u[0]>=0?(g=0,y=Zr(v)):y>0&&u[1]<=0&&(y=0,g=-Zr(v))}var m=(r[0].value-o[0].value)/s,x=(r[a].value-o[a].value)/s;i.setExtent.call(t,g+f*m,y+f*x),i.setInterval.call(t,f),(m||x)&&i.setNiceExtent.call(t,g+f,y-f)}var JM=function(){function t(t,e,n){this.type="grid",this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=HM,this._initCartesian(t,e,n),this.model=t}return t.prototype.getRect=function(){return this._rect},t.prototype.update=function(t,e){var n=this._axesMap;function i(t){var e,n=G(t),i=n.length;if(i){for(var r=[],o=i-1;o>=0;o--){var a=t[+n[o]],s=a.model,l=a.scale;Sx(l)&&s.get("alignTicks")&&null==s.get("interval")?r.push(a):(v_(l,s),Sx(l)&&(e=a))}r.length&&(e||v_((e=r.pop()).scale,e.model),E(r,(function(t){$M(t.scale,t.model,e.scale)})))}}this._updateScale(t,this.model),i(n.x),i(n.y);var r={};E(n.x,(function(t){tI(n,"y",t,r)})),E(n.y,(function(t){tI(n,"x",t,r)})),this.resize(this.model,e)},t.prototype.resize=function(t,e,n){var i=t.getBoxLayoutParams(),r=!n&&t.get("containLabel"),o=Cp(i,{width:e.getWidth(),height:e.getHeight()});this._rect=o;var a=this._axesList;function s(){E(a,(function(t){var e=t.isHorizontal(),n=e?[0,o.width]:[0,o.height],i=t.inverse?1:0;t.setExtent(n[i],n[1-i]),function(t,e){var n=t.getExtent(),i=n[0]+n[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return i-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return i-t+e}}(t,e?o.x:o.y)}))}s(),r&&(E(a,(function(t){if(!t.model.get(["axisLabel","inside"])){var e=function(t){var e=t.model,n=t.scale;if(e.get(["axisLabel","show"])&&!n.isBlank()){var i,r,o=n.getExtent();r=n instanceof Lx?n.count():(i=n.getTicks()).length;var a,s=t.getLabelModel(),l=x_(t),u=1;r>40&&(u=Math.ceil(r/40));for(var h=0;h0&&i>0||n<0&&i<0)}(t)}var nI=Math.PI,iI=function(){function t(t,e){this.group=new zr,this.opt=e,this.axisModel=t,k(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0,handleAutoShown:function(){return!0}});var n=new zr({x:e.position[0],y:e.position[1],rotation:e.rotation});n.updateTransform(),this._transformGroup=n}return t.prototype.hasBuilder=function(t){return!!rI[t]},t.prototype.add=function(t){rI[t](this.opt,this.axisModel,this.group,this._transformGroup)},t.prototype.getGroup=function(){return this.group},t.innerTextLayout=function(t,e,n){var i,r,o=eo(e-t);return no(o)?(r=n>0?"top":"bottom",i="center"):no(o-nI)?(r=n>0?"bottom":"top",i="center"):(r="middle",i=o>0&&o0?"right":"left":n>0?"left":"right"),{rotation:o,textAlign:i,textVerticalAlign:r}},t.makeAxisEventDataBase=function(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e},t.isLabelSilent=function(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)},t}(),rI={axisLine:function(t,e,n,i){var r=e.get(["axisLine","show"]);if("auto"===r&&t.handleAutoShown&&(r=t.handleAutoShown("axisLine")),r){var o=e.axis.getExtent(),a=i.transform,s=[o[0],0],l=[o[1],0],u=s[0]>l[0];a&&(Wt(s,s,a),Wt(l,l,a));var h=A({lineCap:"round"},e.getModel(["axisLine","lineStyle"]).getLineStyle()),c=new Zu({shape:{x1:s[0],y1:s[1],x2:l[0],y2:l[1]},style:h,strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1});Rh(c.shape,c.style.lineWidth),c.anid="line",n.add(c);var p=e.get(["axisLine","symbol"]);if(null!=p){var d=e.get(["axisLine","symbolSize"]);U(p)&&(p=[p,p]),(U(d)||j(d))&&(d=[d,d]);var f=Yy(e.get(["axisLine","symbolOffset"])||0,d),g=d[0],y=d[1];E([{rotate:t.rotation+Math.PI/2,offset:f[0],r:0},{rotate:t.rotation-Math.PI/2,offset:f[1],r:Math.sqrt((s[0]-l[0])*(s[0]-l[0])+(s[1]-l[1])*(s[1]-l[1]))}],(function(e,i){if("none"!==p[i]&&null!=p[i]){var r=Wy(p[i],-g/2,-y/2,g,y,h.stroke,!0),o=e.r+e.offset,a=u?l:s;r.attr({rotation:e.rotate,x:a[0]+o*Math.cos(t.rotation),y:a[1]-o*Math.sin(t.rotation),silent:!0,z2:11}),n.add(r)}}))}}},axisTickLabel:function(t,e,n,i){var r=function(t,e,n,i){var r=n.axis,o=n.getModel("axisTick"),a=o.get("show");"auto"===a&&i.handleAutoShown&&(a=i.handleAutoShown("axisTick"));if(!a||r.scale.isBlank())return;for(var s=o.getModel("lineStyle"),l=i.tickDirection*o.get("length"),u=lI(r.getTicksCoords(),e.transform,l,k(s.getLineStyle(),{stroke:n.get(["axisLine","lineStyle","color"])}),"ticks"),h=0;hc[1]?-1:1,d=["start"===s?c[0]-p*h:"end"===s?c[1]+p*h:(c[0]+c[1])/2,sI(s)?t.labelOffset+l*h:0],f=e.get("nameRotate");null!=f&&(f=f*nI/180),sI(s)?o=iI.innerTextLayout(t.rotation,null!=f?f:t.rotation,l):(o=function(t,e,n,i){var r,o,a=eo(n-t),s=i[0]>i[1],l="start"===e&&!s||"start"!==e&&s;no(a-nI/2)?(o=l?"bottom":"top",r="center"):no(a-1.5*nI)?(o=l?"top":"bottom",r="center"):(o="middle",r=a<1.5*nI&&a>nI/2?l?"left":"right":l?"right":"left");return{rotation:a,textAlign:r,textVerticalAlign:o}}(t.rotation,s,f||0,c),null!=(a=t.axisNameAvailableWidth)&&(a=Math.abs(a/Math.sin(o.rotation)),!isFinite(a)&&(a=null)));var g=u.getFont(),y=e.get("nameTruncate",!0)||{},v=y.ellipsis,m=it(t.nameTruncateMaxWidth,y.maxWidth,a),x=new Fs({x:d[0],y:d[1],rotation:o.rotation,silent:iI.isLabelSilent(e),style:nc(u,{text:r,font:g,overflow:"truncate",width:m,ellipsis:v,fill:u.getTextColor()||e.get(["axisLine","lineStyle","color"]),align:u.get("align")||o.textAlign,verticalAlign:u.get("verticalAlign")||o.textVerticalAlign}),z2:1});if(Zh({el:x,componentModel:e,itemName:r}),x.__fullText=r,x.anid="name",e.get("triggerEvent")){var _=iI.makeAxisEventDataBase(e);_.targetType="axisName",_.name=r,Qs(x).eventData=_}i.add(x),x.updateTransform(),n.add(x),x.decomposeTransform()}}};function oI(t){t&&(t.ignore=!0)}function aI(t,e){var n=t&&t.getBoundingRect().clone(),i=e&&e.getBoundingRect().clone();if(n&&i){var r=xe([]);return Se(r,r,-t.rotation),n.applyTransform(be([],r,t.getLocalTransform())),i.applyTransform(be([],r,e.getLocalTransform())),n.intersect(i)}}function sI(t){return"middle"===t||"center"===t}function lI(t,e,n,i,r){for(var o=[],a=[],s=[],l=0;l=0||t===e}function cI(t){var e=pI(t);if(e){var n=e.axisPointerModel,i=e.axis.scale,r=n.option,o=n.get("status"),a=n.get("value");null!=a&&(a=i.parse(a));var s=dI(n);null==o&&(r.status=s?"show":"hide");var l=i.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==a||a>l[1])&&(a=l[1]),a0&&!c.min?c.min=0:null!=c.min&&c.min<0&&!c.max&&(c.max=0);var p=a;null!=c.color&&(p=k({color:c.color},a));var d=C(T(c),{boundaryGap:t,splitNumber:e,scale:n,axisLine:i,axisTick:r,axisLabel:o,name:c.text,showName:s,nameLocation:"end",nameGap:u,nameTextStyle:p,triggerEvent:h},!1);if(U(l)){var f=d.name;d.name=l.replace("{value}",null!=f?f:"")}else X(l)&&(d.name=l(d.name,d));var g=new Mc(d,null,this.ecModel);return R(g,I_.prototype),g.mainType="radar",g.componentIndex=this.componentIndex,g}),this);this._indicatorModels=c},e.prototype.getIndicatorModels=function(){return this._indicatorModels},e.type="radar",e.defaultOption={z:0,center:["50%","50%"],radius:"75%",startAngle:90,axisName:{show:!0},boundaryGap:[0,0],splitNumber:5,axisNameGap:15,scale:!1,shape:"polygon",axisLine:C({lineStyle:{color:"#bbb"}},NI.axisLine),axisLabel:EI(NI.axisLabel,!1),axisTick:EI(NI.axisTick,!1),splitLine:EI(NI.splitLine,!0),splitArea:EI(NI.splitArea,!0),indicator:[]},e}(Rp),VI=["axisLine","axisTickLabel","axisName"],BI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},e.prototype._buildAxes=function(t){var e=t.coordinateSystem;E(z(e.getIndicatorAxes(),(function(t){var n=t.model.get("showName")?t.name:"";return new iI(t.model,{axisName:n,position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})})),(function(t){E(VI,t.add,t),this.group.add(t.getGroup())}),this)},e.prototype._buildSplitLineAndArea=function(t){var e=t.coordinateSystem,n=e.getIndicatorAxes();if(n.length){var i=t.get("shape"),r=t.getModel("splitLine"),o=t.getModel("splitArea"),a=r.getModel("lineStyle"),s=o.getModel("areaStyle"),l=r.get("show"),u=o.get("show"),h=a.get("color"),c=s.get("color"),p=Y(h)?h:[h],d=Y(c)?c:[c],f=[],g=[];if("circle"===i)for(var y=n[0].getTicksCoords(),v=e.cx,m=e.cy,x=0;x3?1.4:r>1?1.2:1.1;ZI(this,"zoom","zoomOnMouseWheel",t,{scale:i>0?s:1/s,originX:o,originY:a,isAvailableBehavior:null})}if(n){var l=Math.abs(i);ZI(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(i>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:o,originY:a,isAvailableBehavior:null})}}},e.prototype._pinchHandler=function(t){YI(this._zr,"globalPan")||ZI(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY,isAvailableBehavior:null})},e}(jt);function ZI(t,e,n,i,r){t.pointerChecker&&t.pointerChecker(i,r.originX,r.originY)&&(de(i.event),jI(t,e,n,i,r))}function jI(t,e,n,i,r){r.isAvailableBehavior=W(qI,null,n,i),t.trigger(e,r)}function qI(t,e,n){var i=n[t];return!t||i&&(!U(i)||e.event[i+"Key"])}function KI(t,e,n){var i=t.target;i.x+=e,i.y+=n,i.dirty()}function $I(t,e,n,i){var r=t.target,o=t.zoomLimit,a=t.zoom=t.zoom||1;if(a*=e,o){var s=o.min||0,l=o.max||1/0;a=Math.max(Math.min(l,a),s)}var u=a/t.zoom;t.zoom=a,r.x-=(n-r.x)*(u-1),r.y-=(i-r.y)*(u-1),r.scaleX*=u,r.scaleY*=u,r.dirty()}var JI,QI={axisPointer:1,tooltip:1,brush:1};function tT(t,e,n){var i=e.getComponentByElement(t.topTarget),r=i&&i.coordinateSystem;return i&&i!==n&&!QI.hasOwnProperty(i.mainType)&&r&&r.model!==n}function eT(t){U(t)&&(t=(new DOMParser).parseFromString(t,"text/xml"));var e=t;for(9===e.nodeType&&(e=e.firstChild);"svg"!==e.nodeName.toLowerCase()||1!==e.nodeType;)e=e.nextSibling;return e}var nT={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-anchor":"textAlign",visibility:"visibility",display:"display"},iT=G(nT),rT={"alignment-baseline":"textBaseline","stop-color":"stopColor"},oT=G(rT),aT=function(){function t(){this._defs={},this._root=null}return t.prototype.parse=function(t,e){e=e||{};var n=eT(t);this._defsUsePending=[];var i=new zr;this._root=i;var r=[],o=n.getAttribute("viewBox")||"",a=parseFloat(n.getAttribute("width")||e.width),s=parseFloat(n.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(s)&&(s=null),pT(n,i,null,!0,!1);for(var l,u,h=n.firstChild;h;)this._parseNode(h,i,r,null,!1,!1),h=h.nextSibling;if(function(t,e){for(var n=0;n=4&&(l={x:parseFloat(c[0]||0),y:parseFloat(c[1]||0),width:parseFloat(c[2]),height:parseFloat(c[3])})}if(l&&null!=a&&null!=s&&(u=bT(l,{x:0,y:0,width:a,height:s}),!e.ignoreViewBox)){var p=i;(i=new zr).add(p),p.scaleX=p.scaleY=u.scale,p.x=u.x,p.y=u.y}return e.ignoreRootClip||null==a||null==s||i.setClipPath(new zs({shape:{x:0,y:0,width:a,height:s}})),{root:i,width:a,height:s,viewBoxRect:l,viewBoxTransform:u,named:r}},t.prototype._parseNode=function(t,e,n,i,r,o){var a,s=t.nodeName.toLowerCase(),l=i;if("defs"===s&&(r=!0),"text"===s&&(o=!0),"defs"===s||"switch"===s)a=e;else{if(!r){var u=JI[s];if(u&&_t(JI,s)){a=u.call(this,t,e);var h=t.getAttribute("name");if(h){var c={name:h,namedFrom:null,svgNodeTagLower:s,el:a};n.push(c),"g"===s&&(l=c)}else i&&n.push({name:i.name,namedFrom:i,svgNodeTagLower:s,el:a});e.add(a)}}var p=sT[s];if(p&&_t(sT,s)){var d=p.call(this,t),f=t.getAttribute("id");f&&(this._defs[f]=d)}}if(a&&a.isGroup)for(var g=t.firstChild;g;)1===g.nodeType?this._parseNode(g,a,n,l,r,o):3===g.nodeType&&o&&this._parseText(g,a),g=g.nextSibling},t.prototype._parseText=function(t,e){var n=new Cs({style:{text:t.textContent},silent:!0,x:this._textX||0,y:this._textY||0});hT(e,n),pT(t,n,this._defsUsePending,!1,!1),function(t,e){var n=e.__selfStyle;if(n){var i=n.textBaseline,r=i;i&&"auto"!==i?"baseline"===i?r="alphabetic":"before-edge"===i||"text-before-edge"===i?r="top":"after-edge"===i||"text-after-edge"===i?r="bottom":"central"!==i&&"mathematical"!==i||(r="middle"):r="alphabetic",t.style.textBaseline=r}var o=e.__inheritedStyle;if(o){var a=o.textAlign,s=a;a&&("middle"===a&&(s="center"),t.style.textAlign=s)}}(n,e);var i=n.style,r=i.fontSize;r&&r<9&&(i.fontSize=9,n.scaleX*=r/9,n.scaleY*=r/9);var o=(i.fontSize||i.fontFamily)&&[i.fontStyle,i.fontWeight,(i.fontSize||12)+"px",i.fontFamily||"sans-serif"].join(" ");i.font=o;var a=n.getBoundingRect();return this._textX+=a.width,e.add(n),n},t.internalField=void(JI={g:function(t,e){var n=new zr;return hT(e,n),pT(t,n,this._defsUsePending,!1,!1),n},rect:function(t,e){var n=new zs;return hT(e,n),pT(t,n,this._defsUsePending,!1,!1),n.setShape({x:parseFloat(t.getAttribute("x")||"0"),y:parseFloat(t.getAttribute("y")||"0"),width:parseFloat(t.getAttribute("width")||"0"),height:parseFloat(t.getAttribute("height")||"0")}),n.silent=!0,n},circle:function(t,e){var n=new _u;return hT(e,n),pT(t,n,this._defsUsePending,!1,!1),n.setShape({cx:parseFloat(t.getAttribute("cx")||"0"),cy:parseFloat(t.getAttribute("cy")||"0"),r:parseFloat(t.getAttribute("r")||"0")}),n.silent=!0,n},line:function(t,e){var n=new Zu;return hT(e,n),pT(t,n,this._defsUsePending,!1,!1),n.setShape({x1:parseFloat(t.getAttribute("x1")||"0"),y1:parseFloat(t.getAttribute("y1")||"0"),x2:parseFloat(t.getAttribute("x2")||"0"),y2:parseFloat(t.getAttribute("y2")||"0")}),n.silent=!0,n},ellipse:function(t,e){var n=new wu;return hT(e,n),pT(t,n,this._defsUsePending,!1,!1),n.setShape({cx:parseFloat(t.getAttribute("cx")||"0"),cy:parseFloat(t.getAttribute("cy")||"0"),rx:parseFloat(t.getAttribute("rx")||"0"),ry:parseFloat(t.getAttribute("ry")||"0")}),n.silent=!0,n},polygon:function(t,e){var n,i=t.getAttribute("points");i&&(n=cT(i));var r=new Wu({shape:{points:n||[]},silent:!0});return hT(e,r),pT(t,r,this._defsUsePending,!1,!1),r},polyline:function(t,e){var n,i=t.getAttribute("points");i&&(n=cT(i));var r=new Yu({shape:{points:n||[]},silent:!0});return hT(e,r),pT(t,r,this._defsUsePending,!1,!1),r},image:function(t,e){var n=new ks;return hT(e,n),pT(t,n,this._defsUsePending,!1,!1),n.setStyle({image:t.getAttribute("xlink:href")||t.getAttribute("href"),x:+t.getAttribute("x"),y:+t.getAttribute("y"),width:+t.getAttribute("width"),height:+t.getAttribute("height")}),n.silent=!0,n},text:function(t,e){var n=t.getAttribute("x")||"0",i=t.getAttribute("y")||"0",r=t.getAttribute("dx")||"0",o=t.getAttribute("dy")||"0";this._textX=parseFloat(n)+parseFloat(r),this._textY=parseFloat(i)+parseFloat(o);var a=new zr;return hT(e,a),pT(t,a,this._defsUsePending,!1,!0),a},tspan:function(t,e){var n=t.getAttribute("x"),i=t.getAttribute("y");null!=n&&(this._textX=parseFloat(n)),null!=i&&(this._textY=parseFloat(i));var r=t.getAttribute("dx")||"0",o=t.getAttribute("dy")||"0",a=new zr;return hT(e,a),pT(t,a,this._defsUsePending,!1,!0),this._textX+=parseFloat(r),this._textY+=parseFloat(o),a},path:function(t,e){var n=vu(t.getAttribute("d")||"");return hT(e,n),pT(t,n,this._defsUsePending,!1,!1),n.silent=!0,n}}),t}(),sT={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||"0",10),n=parseInt(t.getAttribute("y1")||"0",10),i=parseInt(t.getAttribute("x2")||"10",10),r=parseInt(t.getAttribute("y2")||"0",10),o=new nh(e,n,i,r);return lT(t,o),uT(t,o),o},radialgradient:function(t){var e=parseInt(t.getAttribute("cx")||"0",10),n=parseInt(t.getAttribute("cy")||"0",10),i=parseInt(t.getAttribute("r")||"0",10),r=new ih(e,n,i);return lT(t,r),uT(t,r),r}};function lT(t,e){"userSpaceOnUse"===t.getAttribute("gradientUnits")&&(e.global=!0)}function uT(t,e){for(var n=t.firstChild;n;){if(1===n.nodeType&&"stop"===n.nodeName.toLocaleLowerCase()){var i=n.getAttribute("offset"),r=void 0;r=i&&i.indexOf("%")>0?parseInt(i,10)/100:i?parseFloat(i):0;var o={};_T(n,o,o);var a=o.stopColor||n.getAttribute("stop-color")||"#000000";e.colorStops.push({offset:r,color:a})}n=n.nextSibling}}function hT(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),k(e.__inheritedStyle,t.__inheritedStyle))}function cT(t){for(var e=yT(t),n=[],i=0;i0;o-=2){var a=i[o],s=i[o-1],l=yT(a);switch(r=r||[1,0,0,1,0,0],s){case"translate":we(r,r,[parseFloat(l[0]),parseFloat(l[1]||"0")]);break;case"scale":Me(r,r,[parseFloat(l[0]),parseFloat(l[1]||l[0])]);break;case"rotate":Se(r,r,-parseFloat(l[0])*mT);break;case"skewX":be(r,[1,0,Math.tan(parseFloat(l[0])*mT),1,0,0],r);break;case"skewY":be(r,[1,Math.tan(parseFloat(l[0])*mT),0,1,0,0],r);break;case"matrix":r[0]=parseFloat(l[0]),r[1]=parseFloat(l[1]),r[2]=parseFloat(l[2]),r[3]=parseFloat(l[3]),r[4]=parseFloat(l[4]),r[5]=parseFloat(l[5])}}e.setLocalTransform(r)}}(t,e),_T(t,a,s),i||function(t,e,n){for(var i=0;i0,f={api:n,geo:s,mapOrGeoModel:t,data:a,isVisualEncodedByVisualMap:d,isGeo:o,transformInfoRaw:c};"geoJSON"===s.resourceType?this._buildGeoJSON(f):"geoSVG"===s.resourceType&&this._buildSVG(f),this._updateController(t,e,n),this._updateMapSelectHandler(t,l,n,i)},t.prototype._buildGeoJSON=function(t){var e=this._regionsGroupByName=yt(),n=yt(),i=this._regionsGroup,r=t.transformInfoRaw,o=t.mapOrGeoModel,a=t.data,s=t.geo.projection,l=s&&s.stream;function u(t,e){return e&&(t=e(t)),t&&[t[0]*r.scaleX+r.x,t[1]*r.scaleY+r.y]}function h(t){for(var e=[],n=!l&&s&&s.project,i=0;i=0)&&(p=r);var d=a?{normal:{align:"center",verticalAlign:"middle"}}:null;tc(e,ec(i),{labelFetcher:p,labelDataIndex:c,defaultText:n},d);var f=e.getTextContent();if(f&&(WT(f).ignore=f.ignore,e.textConfig&&a)){var g=e.getBoundingRect().clone();e.textConfig.layoutRect=g,e.textConfig.position=[(a[0]-g.x)/g.width*100+"%",(a[1]-g.y)/g.height*100+"%"]}e.disableLabelAnimation=!0}else e.removeTextContent(),e.removeTextConfig(),e.disableLabelAnimation=null}function jT(t,e,n,i,r,o){t.data?t.data.setItemGraphicEl(o,e):Qs(e).eventData={componentType:"geo",componentIndex:r.componentIndex,geoIndex:r.componentIndex,name:n,region:i&&i.option||{}}}function qT(t,e,n,i,r){t.data||Zh({el:e,componentModel:r,itemName:n,itemTooltipOption:i.get("tooltip")})}function KT(t,e,n,i,r){e.highDownSilentOnTouch=!!r.get("selectedMode");var o=i.getModel("emphasis"),a=o.get("focus");return Yl(e,a,o.get("blurScope"),o.get("disabled")),t.isGeo&&function(t,e,n){var i=Qs(t);i.componentMainType=e.mainType,i.componentIndex=e.componentIndex,i.componentHighDownName=n}(e,r,n),a}function $T(t,e,n){var i,r=[];function o(){i=[]}function a(){i.length&&(r.push(i),i=[])}var s=e({polygonStart:o,polygonEnd:a,lineStart:o,lineEnd:a,point:function(t,e){isFinite(t)&&isFinite(e)&&i.push([t,e])},sphere:function(){}});return!n&&s.polygonStart(),E(t,(function(t){s.lineStart();for(var e=0;e-1&&(n.style.stroke=n.style.fill,n.style.fill="#fff",n.style.lineWidth=2),n},e.type="series.map",e.dependencies=["geo"],e.layoutMode="box",e.defaultOption={z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:null,showLegendSymbol:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,selectedMode:!0,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}},select:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},nameProperty:"name"},e}(mg);function tC(t){var e={};t.eachSeriesByType("map",(function(t){var n=t.getHostGeoModel(),i=n?"o"+n.id:"i"+t.getMapType();(e[i]=e[i]||[]).push(t)})),E(e,(function(t,e){for(var n,i,r,o=(n=z(t,(function(t){return t.getData()})),i=t[0].get("mapValueCalculation"),r={},E(n,(function(t){t.each(t.mapDimension("value"),(function(e,n){var i="ec-"+t.getName(n);r[i]=r[i]||[],isNaN(e)||r[i].push(e)}))})),n[0].map(n[0].mapDimension("value"),(function(t,e){for(var o="ec-"+n[0].getName(e),a=0,s=1/0,l=-1/0,u=r[o].length,h=0;h1?(d.width=p,d.height=p/x):(d.height=p,d.width=p*x),d.y=c[1]-d.height/2,d.x=c[0]-d.width/2;else{var b=t.getBoxLayoutParams();b.aspect=x,d=Cp(b,{width:v,height:m})}this.setViewRect(d.x,d.y,d.width,d.height),this.setCenter(t.get("center"),e),this.setZoom(t.get("zoom"))}R(sC,iC);var hC=function(){function t(){this.dimensions=aC}return t.prototype.create=function(t,e){var n=[];function i(t){return{nameProperty:t.get("nameProperty"),aspectScale:t.get("aspectScale"),projection:t.get("projection")}}t.eachComponent("geo",(function(t,r){var o=t.get("map"),a=new sC(o+r,o,A({nameMap:t.get("nameMap")},i(t)));a.zoomLimit=t.get("scaleLimit"),n.push(a),t.coordinateSystem=a,a.model=t,a.resize=uC,a.resize(t,e)})),t.eachSeries((function(t){if("geo"===t.get("coordinateSystem")){var e=t.get("geoIndex")||0;t.coordinateSystem=n[e]}}));var r={};return t.eachSeriesByType("map",(function(t){if(!t.getHostGeoModel()){var e=t.getMapType();r[e]=r[e]||[],r[e].push(t)}})),E(r,(function(t,r){var o=z(t,(function(t){return t.get("nameMap")})),a=new sC(r,r,A({nameMap:D(o)},i(t[0])));a.zoomLimit=it.apply(null,z(t,(function(t){return t.get("scaleLimit")}))),n.push(a),a.resize=uC,a.resize(t[0],e),E(t,(function(t){t.coordinateSystem=a,function(t,e){E(e.get("geoCoord"),(function(e,n){t.addGeoCoord(n,e)}))}(a,t)}))})),n},t.prototype.getFilledRegions=function(t,e,n,i){for(var r=(t||[]).slice(),o=yt(),a=0;a=0;){var o=e[n];o.hierNode.prelim+=i,o.hierNode.modifier+=i,r+=o.hierNode.change,i+=o.hierNode.shift+r}}(t);var o=(n[0].hierNode.prelim+n[n.length-1].hierNode.prelim)/2;r?(t.hierNode.prelim=r.hierNode.prelim+e(t,r),t.hierNode.modifier=t.hierNode.prelim-o):t.hierNode.prelim=o}else r&&(t.hierNode.prelim=r.hierNode.prelim+e(t,r));t.parentNode.hierNode.defaultAncestor=function(t,e,n,i){if(e){for(var r=t,o=t,a=o.parentNode.children[0],s=e,l=r.hierNode.modifier,u=o.hierNode.modifier,h=a.hierNode.modifier,c=s.hierNode.modifier;s=wC(s),o=SC(o),s&&o;){r=wC(r),a=SC(a),r.hierNode.ancestor=t;var p=s.hierNode.prelim+c-o.hierNode.prelim-u+i(s,o);p>0&&(IC(MC(s,t,n),t,p),u+=p,l+=p),c+=s.hierNode.modifier,u+=o.hierNode.modifier,l+=r.hierNode.modifier,h+=a.hierNode.modifier}s&&!wC(r)&&(r.hierNode.thread=s,r.hierNode.modifier+=c-l),o&&!SC(a)&&(a.hierNode.thread=o,a.hierNode.modifier+=u-h,n=t)}return n}(t,r,t.parentNode.hierNode.defaultAncestor||i[0],e)}function xC(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function _C(t){return arguments.length?t:TC}function bC(t,e){return t-=Math.PI/2,{x:e*Math.cos(t),y:e*Math.sin(t)}}function wC(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function SC(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function MC(t,e,n){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:n}function IC(t,e,n){var i=n/(e.hierNode.i-t.hierNode.i);e.hierNode.change-=i,e.hierNode.shift+=n,e.hierNode.modifier+=n,e.hierNode.prelim+=n,t.hierNode.change+=i}function TC(t,e){return t.parentNode===e.parentNode?1:2}var CC=function(){this.parentPoint=[],this.childPoints=[]},DC=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new CC},e.prototype.buildPath=function(t,e){var n=e.childPoints,i=n.length,r=e.parentPoint,o=n[0],a=n[i-1];if(1===i)return t.moveTo(r[0],r[1]),void t.lineTo(o[0],o[1]);var s=e.orient,l="TB"===s||"BT"===s?0:1,u=1-l,h=Ur(e.forkPosition,1),c=[];c[l]=r[l],c[u]=r[u]+(a[u]-r[u])*h,t.moveTo(r[0],r[1]),t.lineTo(c[0],c[1]),t.moveTo(o[0],o[1]),c[l]=o[l],t.lineTo(c[0],c[1]),c[l]=a[l],t.lineTo(c[0],c[1]),t.lineTo(a[0],a[1]);for(var p=1;pm.x)||(_-=Math.PI);var S=b?"left":"right",M=s.getModel("label"),I=M.get("rotate"),T=I*(Math.PI/180),C=y.getTextContent();C&&(y.setTextConfig({position:M.get("position")||S,rotation:null==I?-_:T,origin:"center"}),C.setStyle("verticalAlign","middle"))}var D=s.get(["emphasis","focus"]),A="relative"===D?vt(a.getAncestorsIndices(),a.getDescendantIndices()):"ancestor"===D?a.getAncestorsIndices():"descendant"===D?a.getDescendantIndices():null;A&&(Qs(n).focus=A),function(t,e,n,i,r,o,a,s){var l=e.getModel(),u=t.get("edgeShape"),h=t.get("layout"),c=t.getOrient(),p=t.get(["lineStyle","curveness"]),d=t.get("edgeForkPosition"),f=l.getModel("lineStyle").getLineStyle(),g=i.__edge;if("curve"===u)e.parentNode&&e.parentNode!==n&&(g||(g=i.__edge=new $u({shape:NC(h,c,p,r,r)})),fh(g,{shape:NC(h,c,p,o,a)},t));else if("polyline"===u)if("orthogonal"===h){if(e!==n&&e.children&&0!==e.children.length&&!0===e.isExpand){for(var y=e.children,v=[],m=0;me&&(e=i.height)}this.height=e+1},t.prototype.getNodeById=function(t){if(this.getId()===t)return this;for(var e=0,n=this.children,i=n.length;e=0&&this.hostTree.data.setItemLayout(this.dataIndex,t,e)},t.prototype.getLayout=function(){return this.hostTree.data.getItemLayout(this.dataIndex)},t.prototype.getModel=function(t){if(!(this.dataIndex<0))return this.hostTree.data.getItemModel(this.dataIndex).getModel(t)},t.prototype.getLevelModel=function(){return(this.hostTree.levelModels||[])[this.depth]},t.prototype.setVisual=function(t,e){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,t,e)},t.prototype.getVisual=function(t){return this.hostTree.data.getItemVisual(this.dataIndex,t)},t.prototype.getRawIndex=function(){return this.hostTree.data.getRawIndex(this.dataIndex)},t.prototype.getId=function(){return this.hostTree.data.getId(this.dataIndex)},t.prototype.getChildIndex=function(){if(this.parentNode){for(var t=this.parentNode.children,e=0;e=0){var i=n.getData().tree.root,r=t.targetNode;if(U(r)&&(r=i.getNodeById(r)),r&&i.contains(r))return{node:r};var o=t.targetNodeId;if(null!=o&&(r=i.getNodeById(o)))return{node:r}}}function jC(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function qC(t,e){return P(jC(t),e)>=0}function KC(t,e){for(var n=[];t;){var i=t.dataIndex;n.push({name:t.name,dataIndex:i,value:e.getRawValue(i)}),t=t.parentNode}return n.reverse(),n}var $C=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.hasSymbolVisual=!0,e.ignoreStyleOnData=!0,e}return n(e,t),e.prototype.getInitialData=function(t){var e={name:t.name,children:t.data},n=t.leaves||{},i=new Mc(n,this,this.ecModel),r=UC.createTree(e,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=r.getNodeByDataIndex(e);return n&&n.children.length&&n.isExpand||(t.parentModel=i),t}))}));var o=0;r.eachNode("preorder",(function(t){t.depth>o&&(o=t.depth)}));var a=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:o;return r.root.eachNode("preorder",(function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=a})),r.data},e.prototype.getOrient=function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.formatTooltip=function(t,e,n){for(var i=this.getData().tree,r=i.root.children[0],o=i.getNodeByDataIndex(t),a=o.getValue(),s=o.name;o&&o!==r;)s=o.parentNode.name+"."+s,o=o.parentNode;return ng("nameValue",{name:s,value:a,noValue:isNaN(a)||null==a})},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treeAncestors=KC(i,this),n.collapsed=!i.isExpand,n},e.type="series.tree",e.layoutMode="box",e.defaultOption={z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",edgeShape:"curve",edgeForkPosition:"50%",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderWidth:1.5},label:{show:!0},animationEasing:"linear",animationDuration:700,animationDurationUpdate:500},e}(mg);function JC(t,e){for(var n,i=[t];n=i.pop();)if(e(n),n.isExpand){var r=n.children;if(r.length)for(var o=r.length-1;o>=0;o--)i.push(r[o])}}function QC(t,e){t.eachSeriesByType("tree",(function(t){!function(t,e){var n=function(t,e){return Cp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e);t.layoutInfo=n;var i=t.get("layout"),r=0,o=0,a=null;"radial"===i?(r=2*Math.PI,o=Math.min(n.height,n.width)/2,a=_C((function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth}))):(r=n.width,o=n.height,a=_C());var s=t.getData().tree.root,l=s.children[0];if(l){!function(t){var e=t;e.hierNode={defaultAncestor:null,ancestor:e,prelim:0,modifier:0,change:0,shift:0,i:0,thread:null};for(var n,i,r=[e];n=r.pop();)if(i=n.children,n.isExpand&&i.length)for(var o=i.length-1;o>=0;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},r.push(a)}}(s),function(t,e,n){for(var i,r=[t],o=[];i=r.pop();)if(o.push(i),i.isExpand){var a=i.children;if(a.length)for(var s=0;sh.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)}));var p=u===h?1:a(u,h)/2,d=p-u.getLayout().x,f=0,g=0,y=0,v=0;if("radial"===i)f=r/(h.getLayout().x+p+d),g=o/(c.depth-1||1),JC(l,(function(t){y=(t.getLayout().x+d)*f,v=(t.depth-1)*g;var e=bC(y,v);t.setLayout({x:e.x,y:e.y,rawX:y,rawY:v},!0)}));else{var m=t.getOrient();"RL"===m||"LR"===m?(g=o/(h.getLayout().x+p+d),f=r/(c.depth-1||1),JC(l,(function(t){v=(t.getLayout().x+d)*g,y="LR"===m?(t.depth-1)*f:r-(t.depth-1)*f,t.setLayout({x:y,y:v},!0)}))):"TB"!==m&&"BT"!==m||(f=r/(h.getLayout().x+p+d),g=o/(c.depth-1||1),JC(l,(function(t){y=(t.getLayout().x+d)*f,v="TB"===m?(t.depth-1)*g:o-(t.depth-1)*g,t.setLayout({x:y,y:v},!0)})))}}}(t,e)}))}function tD(t){t.eachSeriesByType("tree",(function(t){var e=t.getData();e.tree.eachNode((function(t){var n=t.getModel().getModel("itemStyle").getItemStyle();A(e.ensureUniqueItemVisual(t.dataIndex,"style"),n)}))}))}var eD=["treemapZoomToNode","treemapRender","treemapMove"];function nD(t){var e=t.getData().tree,n={};e.eachNode((function(e){for(var i=e;i&&i.depth>1;)i=i.parentNode;var r=ud(t.ecModel,i.name||i.dataIndex+"",n);e.setVisual("decal",r)}))}var iD=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.preventUsingHoverLayer=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){var n={name:t.name,children:t.data};rD(n);var i=t.levels||[],r=this.designatedVisualItemStyle={},o=new Mc({itemStyle:r},this,e);i=t.levels=function(t,e){var n,i,r=bo(e.get("color")),o=bo(e.get(["aria","decal","decals"]));if(!r)return;t=t||[],E(t,(function(t){var e=new Mc(t),r=e.get("color"),o=e.get("decal");(e.get(["itemStyle","color"])||r&&"none"!==r)&&(n=!0),(e.get(["itemStyle","decal"])||o&&"none"!==o)&&(i=!0)}));var a=t[0]||(t[0]={});n||(a.color=r.slice());!i&&o&&(a.decal=o.slice());return t}(i,e);var a=z(i||[],(function(t){return new Mc(t,o,e)}),this),s=UC.createTree(n,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=s.getNodeByDataIndex(e),i=n?a[n.depth]:null;return t.parentModel=i||o,t}))}));return s.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.formatTooltip=function(t,e,n){var i=this.getData(),r=this.getRawValue(t);return ng("nameValue",{name:i.getName(t),value:r})},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treeAncestors=KC(i,this),n.treePathInfo=n.treeAncestors,n},e.prototype.setLayoutInfo=function(t){this.layoutInfo=this.layoutInfo||{},A(this.layoutInfo,t)},e.prototype.mapIdToIndex=function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=yt(),this._idIndexMapCount=0);var n=e.get(t);return null==n&&e.set(t,n=this._idIndexMapCount++),n},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)},e.prototype.enableAriaDecal=function(){nD(this)},e.type="series.treemap",e.layoutMode="box",e.defaultOption={progressive:0,left:"center",top:"middle",width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",textStyle:{color:"#fff"}},emphasis:{itemStyle:{color:"rgba(0,0,0,0.9)"}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",overflow:"truncate"},upperLabel:{show:!1,position:[0,"50%"],height:20,overflow:"truncate",verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],overflow:"truncate",verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},e}(mg);function rD(t){var e=0;E(t.children,(function(t){rD(t);var n=t.value;Y(n)&&(n=n[0]),e+=n}));var n=t.value;Y(n)&&(n=n[0]),(null==n||isNaN(n))&&(n=e),n<0&&(n=0),Y(t.value)?t.value[0]=n:t.value=n}var oD=function(){function t(t){this.group=new zr,t.add(this.group)}return t.prototype.render=function(t,e,n,i){var r=t.getModel("breadcrumb"),o=this.group;if(o.removeAll(),r.get("show")&&n){var a=r.getModel("itemStyle"),s=r.getModel("emphasis"),l=a.getModel("textStyle"),u=s.getModel(["itemStyle","textStyle"]),h={pos:{left:r.get("left"),right:r.get("right"),top:r.get("top"),bottom:r.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:r.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(n,h,l),this._renderContent(t,h,a,s,l,u,i),Dp(o,h.pos,h.box)}},t.prototype._prepare=function(t,e,n){for(var i=t;i;i=i.parentNode){var r=Ao(i.getModel().get("name"),""),o=n.getTextRect(r),a=Math.max(o.width+16,e.emptyItemWidth);e.totalWidth+=a+8,e.renderList.push({node:i,text:r,width:a})}},t.prototype._renderContent=function(t,e,n,i,r,o,a){for(var s,l,u,h,c,p,d,f,g,y=0,v=e.emptyItemWidth,m=t.get(["breadcrumb","height"]),x=(s=e.pos,l=e.box,h=l.width,c=l.height,p=Ur(s.left,h),d=Ur(s.top,c),f=Ur(s.right,h),g=Ur(s.bottom,c),(isNaN(p)||isNaN(parseFloat(s.left)))&&(p=0),(isNaN(f)||isNaN(parseFloat(s.right)))&&(f=h),(isNaN(d)||isNaN(parseFloat(s.top)))&&(d=0),(isNaN(g)||isNaN(parseFloat(s.bottom)))&&(g=c),u=fp(u||0),{width:Math.max(f-p-u[1]-u[3],0),height:Math.max(g-d-u[0]-u[2],0)}),_=e.totalWidth,b=e.renderList,w=i.getModel("itemStyle").getItemStyle(),S=b.length-1;S>=0;S--){var M=b[S],I=M.node,T=M.width,C=M.text;_>x.width&&(_-=T-v,T=v,C=null);var D=new Wu({shape:{points:aD(y,0,T,m,S===b.length-1,0===S)},style:k(n.getItemStyle(),{lineJoin:"bevel"}),textContent:new Fs({style:nc(r,{text:C})}),textConfig:{position:"inside"},z2:1e5,onclick:H(a,I)});D.disableLabelAnimation=!0,D.getTextContent().ensureState("emphasis").style=nc(o,{text:C}),D.ensureState("emphasis").style=w,Yl(D,i.get("focus"),i.get("blurScope"),i.get("disabled")),this.group.add(D),sD(D,t,I),y+=T+8}},t.prototype.remove=function(){this.group.removeAll()},t}();function aD(t,e,n,i,r,o){var a=[[r?t:t-5,e],[t+n,e],[t+n,e+i],[r?t:t-5,e+i]];return!o&&a.splice(2,0,[t+n+5,e+i/2]),!r&&a.push([t,e+i/2]),a}function sD(t,e,n){Qs(t).eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.seriesIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:n&&n.dataIndex,name:n&&n.name},treePathInfo:n&&KC(n,e)}}var lD=function(){function t(){this._storage=[],this._elExistsMap={}}return t.prototype.add=function(t,e,n,i,r){return!this._elExistsMap[t.id]&&(this._elExistsMap[t.id]=!0,this._storage.push({el:t,target:e,duration:n,delay:i,easing:r}),!0)},t.prototype.finished=function(t){return this._finishedCallback=t,this},t.prototype.start=function(){for(var t=this,e=this._storage.length,n=function(){--e<=0&&(t._storage.length=0,t._elExistsMap={},t._finishedCallback&&t._finishedCallback())},i=0,r=this._storage.length;i3||Math.abs(t.dy)>3)){var e=this.seriesModel.getData().tree.root;if(!e)return;var n=e.getLayout();if(!n)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:n.x+t.dx,y:n.y+t.dy,width:n.width,height:n.height}})}},e.prototype._onZoom=function(t){var e=t.originX,n=t.originY;if("animating"!==this._state){var i=this.seriesModel.getData().tree.root;if(!i)return;var r=i.getLayout();if(!r)return;var o=new ze(r.x,r.y,r.width,r.height),a=this.seriesModel.layoutInfo,s=[1,0,0,1,0,0];we(s,s,[-(e-=a.x),-(n-=a.y)]),Me(s,s,[t.scale,t.scale]),we(s,s,[e,n]),o.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:o.x,y:o.y,width:o.width,height:o.height}})}},e.prototype._initEvents=function(t){var e=this;t.on("click",(function(t){if("ready"===e._state){var n=e.seriesModel.get("nodeClick",!0);if(n){var i=e.findTarget(t.offsetX,t.offsetY);if(i){var r=i.node;if(r.getLayout().isLeafRoot)e._rootToNode(i);else if("zoomToNode"===n)e._zoomToNode(i);else if("link"===n){var o=r.hostTree.data.getItemModel(r.dataIndex),a=o.get("link",!0),s=o.get("target",!0)||"blank";a&&bp(a,s)}}}}}),this)},e.prototype._renderBreadcrumb=function(t,e,n){var i=this;n||(n=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(n={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new oD(this.group))).render(t,e,n.node,(function(e){"animating"!==i._state&&(qC(t.getViewRoot(),e)?i._rootToNode({node:e}):i._zoomToNode({node:e}))}))},e.prototype.remove=function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},e.prototype.dispose=function(){this._clearController()},e.prototype._zoomToNode=function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype._rootToNode=function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype.findTarget=function(t,e){var n;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},(function(i){var r=this._storage.background[i.getRawIndex()];if(r){var o=r.transformCoordToLocal(t,e),a=r.shape;if(!(a.x<=o[0]&&o[0]<=a.x+a.width&&a.y<=o[1]&&o[1]<=a.y+a.height))return!1;n={node:i,offsetX:o[0],offsetY:o[1]}}}),this),n},e.type="treemap",e}(kg);var vD=E,mD=q,xD=-1,_D=function(){function t(e){var n=e.mappingMethod,i=e.type,r=this.option=T(e);this.type=i,this.mappingMethod=n,this._normalizeData=kD[n];var o=t.visualHandlers[i];this.applyVisual=o.applyVisual,this.getColorMapper=o.getColorMapper,this._normalizedToVisual=o._normalizedToVisual[n],"piecewise"===n?(bD(r),function(t){var e=t.pieceList;t.hasSpecialVisual=!1,E(e,(function(e,n){e.originIndex=n,null!=e.visual&&(t.hasSpecialVisual=!0)}))}(r)):"category"===n?r.categories?function(t){var e=t.categories,n=t.categoryMap={},i=t.visual;if(vD(e,(function(t,e){n[t]=e})),!Y(i)){var r=[];q(i)?vD(i,(function(t,e){var i=n[e];r[null!=i?i:xD]=t})):r[-1]=i,i=AD(t,r)}for(var o=e.length-1;o>=0;o--)null==i[o]&&(delete n[e[o]],e.pop())}(r):bD(r,!0):(lt("linear"!==n||r.dataExtent),bD(r))}return t.prototype.mapValueToVisual=function(t){var e=this._normalizeData(t);return this._normalizedToVisual(e,t)},t.prototype.getNormalizer=function(){return W(this._normalizeData,this)},t.listVisualTypes=function(){return G(t.visualHandlers)},t.isValidType=function(e){return t.visualHandlers.hasOwnProperty(e)},t.eachVisual=function(t,e,n){q(t)?E(t,e,n):e.call(n,t)},t.mapVisual=function(e,n,i){var r,o=Y(e)?[]:q(e)?{}:(r=!0,null);return t.eachVisual(e,(function(t,e){var a=n.call(i,t,e);r?o=a:o[e]=a})),o},t.retrieveVisuals=function(e){var n,i={};return e&&vD(t.visualHandlers,(function(t,r){e.hasOwnProperty(r)&&(i[r]=e[r],n=!0)})),n?i:null},t.prepareVisualTypes=function(t){if(Y(t))t=t.slice();else{if(!mD(t))return[];var e=[];vD(t,(function(t,n){e.push(n)})),t=e}return t.sort((function(t,e){return"color"===e&&"color"!==t&&0===t.indexOf("color")?1:-1})),t},t.dependsOn=function(t,e){return"color"===e?!(!t||0!==t.indexOf(e)):t===e},t.findPieceIndex=function(t,e,n){for(var i,r=1/0,o=0,a=e.length;ou[1]&&(u[1]=l);var h=e.get("colorMappingBy"),c={type:a.name,dataExtent:u,visual:a.range};"color"!==c.type||"index"!==h&&"id"!==h?c.mappingMethod="linear":(c.mappingMethod="category",c.loop=!0);var p=new _D(c);return PD(p).drColorMappingBy=h,p}(0,r,o,0,u,d);E(d,(function(t,e){if(t.depth>=n.length||t===n[t.depth]){var o=function(t,e,n,i,r,o){var a=A({},e);if(r){var s=r.type,l="color"===s&&PD(r).drColorMappingBy,u="index"===l?i:"id"===l?o.mapIdToIndex(n.getId()):n.getValue(t.get("visualDimension"));a[s]=r.mapValueToVisual(u)}return a}(r,u,t,e,f,i);RD(t,o,n,i)}}))}else s=ND(u),h.fill=s}}function ND(t){var e=ED(t,"color");if(e){var n=ED(t,"colorAlpha"),i=ED(t,"colorSaturation");return i&&(e=ni(e,null,null,i)),n&&(e=ii(e,n)),e}}function ED(t,e){var n=t[e];if(null!=n&&"none"!==n)return n}function zD(t,e){var n=t.get(e);return Y(n)&&n.length?{name:e,range:n}:null}var VD=Math.max,BD=Math.min,FD=it,GD=E,WD=["itemStyle","borderWidth"],HD=["itemStyle","gapWidth"],YD=["upperLabel","show"],XD=["upperLabel","height"],UD={seriesType:"treemap",reset:function(t,e,n,i){var r=n.getWidth(),o=n.getHeight(),a=t.option,s=Cp(t.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()}),l=a.size||[],u=Ur(FD(s.width,l[0]),r),h=Ur(FD(s.height,l[1]),o),c=i&&i.type,p=ZC(i,["treemapZoomToNode","treemapRootToNode"],t),d="treemapRender"===c||"treemapMove"===c?i.rootRect:null,f=t.getViewRoot(),g=jC(f);if("treemapMove"!==c){var y="treemapZoomToNode"===c?function(t,e,n,i,r){var o,a=(e||{}).node,s=[i,r];if(!a||a===n)return s;var l=i*r,u=l*t.option.zoomToNodeRatio;for(;o=a.parentNode;){for(var h=0,c=o.children,p=0,d=c.length;pto&&(u=to),a=o}ua[1]&&(a[1]=e)}))):a=[NaN,NaN];return{sum:i,dataExtent:a}}(e,a,s);if(0===u.sum)return t.viewChildren=[];if(u.sum=function(t,e,n,i,r){if(!i)return n;for(var o=t.get("visibleMin"),a=r.length,s=a,l=a-1;l>=0;l--){var u=r["asc"===i?a-l-1:l].getValue();u/n*ei&&(i=a));var l=t.area*t.area,u=e*e*n;return l?VD(u*i/l,l/(u*r)):1/0}function qD(t,e,n,i,r){var o=e===n.width?0:1,a=1-o,s=["x","y"],l=["width","height"],u=n[s[o]],h=e?t.area/e:0;(r||h>n[l[a]])&&(h=n[l[a]]);for(var c=0,p=t.length;ci&&(i=e);var o=i%2?i+2:i+3;r=[];for(var a=0;a0&&(m[0]=-m[0],m[1]=-m[1]);var _=v[0]<0?-1:1;if("start"!==i.__position&&"end"!==i.__position){var b=-Math.atan2(v[1],v[0]);u[0].8?"left":h[0]<-.8?"right":"center",p=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";break;case"start":i.x=-h[0]*f+l[0],i.y=-h[1]*g+l[1],c=h[0]>.8?"right":h[0]<-.8?"left":"center",p=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";break;case"insideStartTop":case"insideStart":case"insideStartBottom":i.x=f*_+l[0],i.y=l[1]+w,c=v[0]<0?"right":"left",i.originX=-f*_,i.originY=-w;break;case"insideMiddleTop":case"insideMiddle":case"insideMiddleBottom":case"middle":i.x=x[0],i.y=x[1]+w,c="center",i.originY=-w;break;case"insideEndTop":case"insideEnd":case"insideEndBottom":i.x=-f*_+u[0],i.y=u[1]+w,c=v[0]>=0?"right":"left",i.originX=f*_,i.originY=-w}i.scaleX=i.scaleY=r,i.setStyle({verticalAlign:i.__verticalAlign||p,align:i.__align||c})}}}function S(t,e){var n=t.__specifiedRotation;if(null==n){var i=a.tangentAt(e);t.attr("rotation",(1===e?-1:1)*Math.PI/2-Math.atan2(i[1],i[0]))}else t.attr("rotation",n)}},e}(zr),RA=function(){function t(t){this.group=new zr,this._LineCtor=t||OA}return t.prototype.updateData=function(t){var e=this;this._progressiveEls=null;var n=this,i=n.group,r=n._lineData;n._lineData=t,r||i.removeAll();var o=NA(t);t.diff(r).add((function(n){e._doAdd(t,n,o)})).update((function(n,i){e._doUpdate(r,t,i,n,o)})).remove((function(t){i.remove(r.getItemGraphicEl(t))})).execute()},t.prototype.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl((function(e,n){e.updateLayout(t,n)}),this)},t.prototype.incrementalPrepareUpdate=function(t){this._seriesScope=NA(t),this._lineData=null,this.group.removeAll()},t.prototype.incrementalUpdate=function(t,e){function n(t){t.isGroup||function(t){return t.animators&&t.animators.length>0}(t)||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}this._progressiveEls=[];for(var i=t.start;i=0?i+=u:i-=u:f>=0?i-=u:i+=u}return i}function XA(t,e){var n=[],i=Dn,r=[[],[],[]],o=[[],[]],a=[];e/=2,t.eachEdge((function(t,s){var l=t.getLayout(),u=t.getVisual("fromSymbol"),h=t.getVisual("toSymbol");l.__original||(l.__original=[Tt(l[0]),Tt(l[1])],l[2]&&l.__original.push(Tt(l[2])));var c=l.__original;if(null!=l[2]){if(It(r[0],c[0]),It(r[1],c[2]),It(r[2],c[1]),u&&"none"!==u){var p=dA(t.node1),d=YA(r,c[0],p*e);i(r[0][0],r[1][0],r[2][0],d,n),r[0][0]=n[3],r[1][0]=n[4],i(r[0][1],r[1][1],r[2][1],d,n),r[0][1]=n[3],r[1][1]=n[4]}if(h&&"none"!==h){p=dA(t.node2),d=YA(r,c[1],p*e);i(r[0][0],r[1][0],r[2][0],d,n),r[1][0]=n[1],r[2][0]=n[2],i(r[0][1],r[1][1],r[2][1],d,n),r[1][1]=n[1],r[2][1]=n[2]}It(l[0],r[0]),It(l[1],r[2]),It(l[2],r[1])}else{if(It(o[0],c[0]),It(o[1],c[1]),kt(a,o[1],o[0]),Et(a,a),u&&"none"!==u){p=dA(t.node1);At(o[0],o[0],a,p*e)}if(h&&"none"!==h){p=dA(t.node2);At(o[1],o[1],a,-p*e)}It(l[0],o[0]),It(l[1],o[1])}}))}function UA(t){return"view"===t.type}var ZA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){var n=new hS,i=new RA,r=this.group;this._controller=new UI(e.getZr()),this._controllerHost={target:r},r.add(n.group),r.add(i.group),this._symbolDraw=n,this._lineDraw=i,this._firstRender=!0},e.prototype.render=function(t,e,n){var i=this,r=t.coordinateSystem;this._model=t;var o=this._symbolDraw,a=this._lineDraw,s=this.group;if(UA(r)){var l={x:r.x,y:r.y,scaleX:r.scaleX,scaleY:r.scaleY};this._firstRender?s.attr(l):fh(s,l,t)}XA(t.getGraph(),pA(t));var u=t.getData();o.updateData(u);var h=t.getEdgeData();a.updateData(h),this._updateNodeAndLinkScale(),this._updateController(t,e,n),clearTimeout(this._layoutTimeout);var c=t.forceLayout,p=t.get(["force","layoutAnimation"]);c&&this._startForceLayoutIteration(c,p);var d=t.get("layout");u.graph.eachNode((function(e){var n=e.dataIndex,r=e.getGraphicEl(),o=e.getModel();if(r){r.off("drag").off("dragend");var a=o.get("draggable");a&&r.on("drag",(function(o){switch(d){case"force":c.warmUp(),!i._layouting&&i._startForceLayoutIteration(c,p),c.setFixed(n),u.setItemLayout(n,[r.x,r.y]);break;case"circular":u.setItemLayout(n,[r.x,r.y]),e.setLayout({fixed:!0},!0),yA(t,"symbolSize",e,[o.offsetX,o.offsetY]),i.updateLayout(t);break;default:u.setItemLayout(n,[r.x,r.y]),hA(t.getGraph(),t),i.updateLayout(t)}})).on("dragend",(function(){c&&c.setUnfixed(n)})),r.setDraggable(a,!!o.get("cursor")),"adjacency"===o.get(["emphasis","focus"])&&(Qs(r).focus=e.getAdjacentDataIndices())}})),u.graph.eachEdge((function(t){var e=t.getGraphicEl(),n=t.getModel().get(["emphasis","focus"]);e&&"adjacency"===n&&(Qs(e).focus={edge:[t.dataIndex],node:[t.node1.dataIndex,t.node2.dataIndex]})}));var f="circular"===t.get("layout")&&t.get(["circular","rotateLabel"]),g=u.getLayout("cx"),y=u.getLayout("cy");u.graph.eachNode((function(t){mA(t,f,g,y)})),this._firstRender=!1},e.prototype.dispose=function(){this._controller&&this._controller.dispose(),this._controllerHost=null},e.prototype._startForceLayoutIteration=function(t,e){var n=this;!function i(){t.step((function(t){n.updateLayout(n._model),(n._layouting=!t)&&(e?n._layoutTimeout=setTimeout(i,16):i())}))}()},e.prototype._updateController=function(t,e,n){var i=this,r=this._controller,o=this._controllerHost,a=this.group;r.setPointerChecker((function(e,i,r){var o=a.getBoundingRect();return o.applyTransform(a.transform),o.contain(i,r)&&!tT(e,n,t)})),UA(t.coordinateSystem)?(r.enable(t.get("roam")),o.zoomLimit=t.get("scaleLimit"),o.zoom=t.coordinateSystem.getZoom(),r.off("pan").off("zoom").on("pan",(function(e){KI(o,e.dx,e.dy),n.dispatchAction({seriesId:t.id,type:"graphRoam",dx:e.dx,dy:e.dy})})).on("zoom",(function(e){$I(o,e.scale,e.originX,e.originY),n.dispatchAction({seriesId:t.id,type:"graphRoam",zoom:e.scale,originX:e.originX,originY:e.originY}),i._updateNodeAndLinkScale(),XA(t.getGraph(),pA(t)),i._lineDraw.updateLayout(),n.updateLabelLayout()}))):r.disable()},e.prototype._updateNodeAndLinkScale=function(){var t=this._model,e=t.getData(),n=pA(t);e.eachItemGraphicEl((function(t,e){t&&t.setSymbolScale(n)}))},e.prototype.updateLayout=function(t){XA(t.getGraph(),pA(t)),this._symbolDraw.updateLayout(),this._lineDraw.updateLayout()},e.prototype.remove=function(t,e){this._symbolDraw&&this._symbolDraw.remove(),this._lineDraw&&this._lineDraw.remove()},e.type="graph",e}(kg);function jA(t){return"_EC_"+t}var qA=function(){function t(t){this.type="graph",this.nodes=[],this.edges=[],this._nodesMap={},this._edgesMap={},this._directed=t||!1}return t.prototype.isDirected=function(){return this._directed},t.prototype.addNode=function(t,e){t=null==t?""+e:""+t;var n=this._nodesMap;if(!n[jA(t)]){var i=new KA(t,e);return i.hostGraph=this,this.nodes.push(i),n[jA(t)]=i,i}},t.prototype.getNodeByIndex=function(t){var e=this.data.getRawIndex(t);return this.nodes[e]},t.prototype.getNodeById=function(t){return this._nodesMap[jA(t)]},t.prototype.addEdge=function(t,e,n){var i=this._nodesMap,r=this._edgesMap;if(j(t)&&(t=this.nodes[t]),j(e)&&(e=this.nodes[e]),t instanceof KA||(t=i[jA(t)]),e instanceof KA||(e=i[jA(e)]),t&&e){var o=t.id+"-"+e.id,a=new $A(t,e,n);return a.hostGraph=this,this._directed&&(t.outEdges.push(a),e.inEdges.push(a)),t.edges.push(a),t!==e&&e.edges.push(a),this.edges.push(a),r[o]=a,a}},t.prototype.getEdgeByIndex=function(t){var e=this.edgeData.getRawIndex(t);return this.edges[e]},t.prototype.getEdge=function(t,e){t instanceof KA&&(t=t.id),e instanceof KA&&(e=e.id);var n=this._edgesMap;return this._directed?n[t+"-"+e]:n[t+"-"+e]||n[e+"-"+t]},t.prototype.eachNode=function(t,e){for(var n=this.nodes,i=n.length,r=0;r=0&&t.call(e,n[r],r)},t.prototype.eachEdge=function(t,e){for(var n=this.edges,i=n.length,r=0;r=0&&n[r].node1.dataIndex>=0&&n[r].node2.dataIndex>=0&&t.call(e,n[r],r)},t.prototype.breadthFirstTraverse=function(t,e,n,i){if(e instanceof KA||(e=this._nodesMap[jA(e)]),e){for(var r="out"===n?"outEdges":"in"===n?"inEdges":"edges",o=0;o=0&&n.node2.dataIndex>=0}));for(r=0,o=i.length;r=0&&this[t][e].setItemVisual(this.dataIndex,n,i)},getVisual:function(n){return this[t][e].getItemVisual(this.dataIndex,n)},setLayout:function(n,i){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,n,i)},getLayout:function(){return this[t][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[t][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[t][e].getRawIndex(this.dataIndex)}}}function QA(t,e,n,i,r){for(var o=new qA(i),a=0;a "+p)),u++)}var d,f=n.get("coordinateSystem");if("cartesian2d"===f||"polar"===f)d=vx(t,n);else{var g=xd.get(f),y=g&&g.dimensions||[];P(y,"value")<0&&y.concat(["value"]);var v=ux(t,{coordDimensions:y,encodeDefine:n.getEncode()}).dimensions;(d=new lx(v,n)).initData(t)}var m=new lx(["value"],n);return m.initData(l,s),r&&r(d,m),zC({mainData:d,struct:o,structAttr:"graph",datas:{node:d,edge:m},datasAttr:{node:"data",edge:"edgeData"}}),o.update(),o}R(KA,JA("hostGraph","data")),R($A,JA("hostGraph","edgeData"));var tk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments);var n=this;function i(){return n._categoriesData}this.legendVisualProvider=new IM(i,i),this.fillDataTextStyle(e.edges||e.links),this._updateCategoriesData()},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),this.fillDataTextStyle(e.edges||e.links),this._updateCategoriesData()},e.prototype.mergeDefaultAndTheme=function(e){t.prototype.mergeDefaultAndTheme.apply(this,arguments),wo(e,"edgeLabel",["show"])},e.prototype.getInitialData=function(t,e){var n,i=t.edges||t.links||[],r=t.data||t.nodes||[],o=this;if(r&&i){iA(n=this)&&(n.__curvenessList=[],n.__edgeMap={},rA(n));var a=QA(r,i,this,!0,(function(t,e){t.wrapMethod("getItemModel",(function(t){var e=o._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t}));var n=Mc.prototype.getModel;function i(t,e){var i=n.call(this,t,e);return i.resolveParentPath=r,i}function r(t){if(t&&("label"===t[0]||"label"===t[1])){var e=t.slice();return"label"===t[0]?e[0]="edgeLabel":"label"===t[1]&&(e[1]="edgeLabel"),e}return t}e.wrapMethod("getItemModel",(function(t){return t.resolveParentPath=r,t.getModel=i,t}))}));return E(a.edges,(function(t){!function(t,e,n,i){if(iA(n)){var r=oA(t,e,n),o=n.__edgeMap,a=o[aA(r)];o[r]&&!a?o[r].isForward=!0:a&&o[r]&&(a.isForward=!0,o[r].isForward=!1),o[r]=o[r]||[],o[r].push(i)}}(t.node1,t.node2,this,t.dataIndex)}),this),a.data}},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.getCategoriesData=function(){return this._categoriesData},e.prototype.formatTooltip=function(t,e,n){if("edge"===n){var i=this.getData(),r=this.getDataParams(t,n),o=i.graph.getEdgeByIndex(t),a=i.getName(o.node1.dataIndex),s=i.getName(o.node2.dataIndex),l=[];return null!=a&&l.push(a),null!=s&&l.push(s),ng("nameValue",{name:l.join(" > "),value:r.value,noValue:null==r.value})}return fg({series:this,dataIndex:t,multipleSeries:e})},e.prototype._updateCategoriesData=function(){var t=z(this.option.categories||[],(function(t){return null!=t.value?t:A({value:0},t)})),e=new lx(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray((function(t){return e.getItemModel(t)}))},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.isAnimationEnabled=function(){return t.prototype.isAnimationEnabled.call(this)&&!("force"===this.get("layout")&&this.get(["force","layoutAnimation"]))},e.type="series.graph",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={z:2,coordinateSystem:"view",legendHoverLink:!0,layout:null,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle",distance:5},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,opacity:.5},emphasis:{scale:!0,label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(mg),ek={type:"graphRoam",event:"graphRoam",update:"none"};var nk=function(){this.angle=0,this.width=10,this.r=10,this.x=0,this.y=0},ik=function(t){function e(e){var n=t.call(this,e)||this;return n.type="pointer",n}return n(e,t),e.prototype.getDefaultShape=function(){return new nk},e.prototype.buildPath=function(t,e){var n=Math.cos,i=Math.sin,r=e.r,o=e.width,a=e.angle,s=e.x-n(a)*o*(o>=r/3?1:2),l=e.y-i(a)*o*(o>=r/3?1:2);a=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+n(a)*o,e.y+i(a)*o),t.lineTo(e.x+n(e.angle)*r,e.y+i(e.angle)*r),t.lineTo(e.x-n(a)*o,e.y-i(a)*o),t.lineTo(s,l)},e}(Is);function rk(t,e){var n=null==t?"":t+"";return e&&(U(e)?n=e.replace("{value}",n):X(e)&&(n=e(t))),n}var ok=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeAll();var i=t.get(["axisLine","lineStyle","color"]),r=function(t,e){var n=t.get("center"),i=e.getWidth(),r=e.getHeight(),o=Math.min(i,r);return{cx:Ur(n[0],e.getWidth()),cy:Ur(n[1],e.getHeight()),r:Ur(t.get("radius"),o/2)}}(t,n);this._renderMain(t,e,n,i,r),this._data=t.getData()},e.prototype.dispose=function(){},e.prototype._renderMain=function(t,e,n,i,r){var o=this.group,a=t.get("clockwise"),s=-t.get("startAngle")/180*Math.PI,l=-t.get("endAngle")/180*Math.PI,u=t.getModel("axisLine"),h=u.get("roundCap")?HS:zu,c=u.get("show"),p=u.getModel("lineStyle"),d=p.get("width"),f=[s,l];rs(f,!a);for(var g=(l=f[1])-(s=f[0]),y=s,v=[],m=0;c&&m=t&&(0===e?0:i[e-1][0])Math.PI/2&&(V+=Math.PI):"tangential"===z?V=-M-Math.PI/2:j(z)&&(V=z*Math.PI/180),0===V?c.add(new Fs({style:nc(x,{text:O,x:N,y:E,verticalAlign:h<-.8?"top":h>.8?"bottom":"middle",align:u<-.4?"left":u>.4?"right":"center"},{inheritColor:R}),silent:!0})):c.add(new Fs({style:nc(x,{text:O,x:N,y:E,verticalAlign:"middle",align:"center"},{inheritColor:R}),silent:!0,originX:N,originY:E,rotation:V}))}if(m.get("show")&&k!==_){P=(P=m.get("distance"))?P+l:l;for(var B=0;B<=b;B++){u=Math.cos(M),h=Math.sin(M);var F=new Zu({shape:{x1:u*(f-P)+p,y1:h*(f-P)+d,x2:u*(f-S-P)+p,y2:h*(f-S-P)+d},silent:!0,style:D});"auto"===D.stroke&&F.setStyle({stroke:i((k+B/b)/_)}),c.add(F),M+=T}M-=T}else M+=I}},e.prototype._renderPointer=function(t,e,n,i,r,o,a,s,l){var u=this.group,h=this._data,c=this._progressEls,p=[],d=t.get(["pointer","show"]),f=t.getModel("progress"),g=f.get("show"),y=t.getData(),v=y.mapDimension("value"),m=+t.get("min"),x=+t.get("max"),_=[m,x],b=[o,a];function w(e,n){var i,o=y.getItemModel(e).getModel("pointer"),a=Ur(o.get("width"),r.r),s=Ur(o.get("length"),r.r),l=t.get(["pointer","icon"]),u=o.get("offsetCenter"),h=Ur(u[0],r.r),c=Ur(u[1],r.r),p=o.get("keepAspect");return(i=l?Wy(l,h-a/2,c-s,a,s,null,p):new ik({shape:{angle:-Math.PI/2,width:a,r:s,x:h,y:c}})).rotation=-(n+Math.PI/2),i.x=r.cx,i.y=r.cy,i}function S(t,e){var n=f.get("roundCap")?HS:zu,i=f.get("overlap"),a=i?f.get("width"):l/y.count(),u=i?r.r-a:r.r-(t+1)*a,h=i?r.r:r.r-t*a,c=new n({shape:{startAngle:o,endAngle:e,cx:r.cx,cy:r.cy,clockwise:s,r0:u,r:h}});return i&&(c.z2=x-y.get(v,t)%x),c}(g||d)&&(y.diff(h).add((function(e){var n=y.get(v,e);if(d){var i=w(e,o);gh(i,{rotation:-((isNaN(+n)?b[0]:Xr(n,_,b,!0))+Math.PI/2)},t),u.add(i),y.setItemGraphicEl(e,i)}if(g){var r=S(e,o),a=f.get("clip");gh(r,{shape:{endAngle:Xr(n,_,b,a)}},t),u.add(r),tl(t.seriesIndex,y.dataType,e,r),p[e]=r}})).update((function(e,n){var i=y.get(v,e);if(d){var r=h.getItemGraphicEl(n),a=r?r.rotation:o,s=w(e,a);s.rotation=a,fh(s,{rotation:-((isNaN(+i)?b[0]:Xr(i,_,b,!0))+Math.PI/2)},t),u.add(s),y.setItemGraphicEl(e,s)}if(g){var l=c[n],m=S(e,l?l.shape.endAngle:o),x=f.get("clip");fh(m,{shape:{endAngle:Xr(i,_,b,x)}},t),u.add(m),tl(t.seriesIndex,y.dataType,e,m),p[e]=m}})).execute(),y.each((function(t){var e=y.getItemModel(t),n=e.getModel("emphasis"),r=n.get("focus"),o=n.get("blurScope"),a=n.get("disabled");if(d){var s=y.getItemGraphicEl(t),l=y.getItemVisual(t,"style"),u=l.fill;if(s instanceof ks){var h=s.style;s.useStyle(A({image:h.image,x:h.x,y:h.y,width:h.width,height:h.height},l))}else s.useStyle(l),"pointer"!==s.type&&s.setColor(u);s.setStyle(e.getModel(["pointer","itemStyle"]).getItemStyle()),"auto"===s.style.fill&&s.setStyle("fill",i(Xr(y.get(v,t),_,[0,1],!0))),s.z2EmphasisLift=0,jl(s,e),Yl(s,r,o,a)}if(g){var c=p[t];c.useStyle(y.getItemVisual(t,"style")),c.setStyle(e.getModel(["progress","itemStyle"]).getItemStyle()),c.z2EmphasisLift=0,jl(c,e),Yl(c,r,o,a)}})),this._progressEls=p)},e.prototype._renderAnchor=function(t,e){var n=t.getModel("anchor");if(n.get("show")){var i=n.get("size"),r=n.get("icon"),o=n.get("offsetCenter"),a=n.get("keepAspect"),s=Wy(r,e.cx-i/2+Ur(o[0],e.r),e.cy-i/2+Ur(o[1],e.r),i,i,null,a);s.z2=n.get("showAbove")?1:0,s.setStyle(n.getModel("itemStyle").getItemStyle()),this.group.add(s)}},e.prototype._renderTitleAndDetail=function(t,e,n,i,r){var o=this,a=t.getData(),s=a.mapDimension("value"),l=+t.get("min"),u=+t.get("max"),h=new zr,c=[],p=[],d=t.isAnimationEnabled(),f=t.get(["pointer","showAbove"]);a.diff(this._data).add((function(t){c[t]=new Fs({silent:!0}),p[t]=new Fs({silent:!0})})).update((function(t,e){c[t]=o._titleEls[e],p[t]=o._detailEls[e]})).execute(),a.each((function(e){var n=a.getItemModel(e),o=a.get(s,e),g=new zr,y=i(Xr(o,[l,u],[0,1],!0)),v=n.getModel("title");if(v.get("show")){var m=v.get("offsetCenter"),x=r.cx+Ur(m[0],r.r),_=r.cy+Ur(m[1],r.r);(D=c[e]).attr({z2:f?0:2,style:nc(v,{x:x,y:_,text:a.getName(e),align:"center",verticalAlign:"middle"},{inheritColor:y})}),g.add(D)}var b=n.getModel("detail");if(b.get("show")){var w=b.get("offsetCenter"),S=r.cx+Ur(w[0],r.r),M=r.cy+Ur(w[1],r.r),I=Ur(b.get("width"),r.r),T=Ur(b.get("height"),r.r),C=t.get(["progress","show"])?a.getItemVisual(e,"style").fill:y,D=p[e],A=b.get("formatter");D.attr({z2:f?0:2,style:nc(b,{x:S,y:M,text:rk(o,A),width:isNaN(I)?null:I,height:isNaN(T)?null:T,align:"center",verticalAlign:"middle"},{inheritColor:C})}),hc(D,{normal:b},o,(function(t){return rk(t,A)})),d&&cc(D,e,a,t,{getFormattedLabel:function(t,e,n,i,r,a){return rk(a?a.interpolatedValue:o,A)}}),g.add(D)}h.add(g)})),this.group.add(h),this._titleEls=c,this._detailEls=p},e.type="gauge",e}(kg),ak=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.visualStyleAccessPath="itemStyle",n}return n(e,t),e.prototype.getInitialData=function(t,e){return MM(this,["value"])},e.type="series.gauge",e.defaultOption={z:2,colorBy:"data",center:["50%","50%"],legendHoverLink:!0,radius:"75%",startAngle:225,endAngle:-45,clockwise:!0,min:0,max:100,splitNumber:10,axisLine:{show:!0,roundCap:!1,lineStyle:{color:[[1,"#E6EBF8"]],width:10}},progress:{show:!1,overlap:!0,width:10,roundCap:!1,clip:!0},splitLine:{show:!0,length:10,distance:10,lineStyle:{color:"#63677A",width:3,type:"solid"}},axisTick:{show:!0,splitNumber:5,length:6,distance:10,lineStyle:{color:"#63677A",width:1,type:"solid"}},axisLabel:{show:!0,distance:15,color:"#464646",fontSize:12,rotate:0},pointer:{icon:null,offsetCenter:[0,0],show:!0,showAbove:!0,length:"60%",width:6,keepAspect:!1},anchor:{show:!1,showAbove:!1,size:6,icon:"circle",offsetCenter:[0,0],keepAspect:!1,itemStyle:{color:"#fff",borderWidth:0,borderColor:"#5470c6"}},title:{show:!0,offsetCenter:[0,"20%"],color:"#464646",fontSize:16,valueAnimation:!1},detail:{show:!0,backgroundColor:"rgba(0,0,0,0)",borderWidth:0,borderColor:"#ccc",width:100,height:null,padding:[5,10],offsetCenter:[0,"40%"],color:"#464646",fontSize:30,fontWeight:"bold",lineHeight:30,valueAnimation:!1}},e}(mg);var sk=["itemStyle","opacity"],lk=function(t){function e(e,n){var i=t.call(this)||this,r=i,o=new Yu,a=new Fs;return r.setTextContent(a),i.setTextGuideLine(o),i.updateData(e,n,!0),i}return n(e,t),e.prototype.updateData=function(t,e,n){var i=this,r=t.hostModel,o=t.getItemModel(e),a=t.getItemLayout(e),s=o.getModel("emphasis"),l=o.get(sk);l=null==l?1:l,n||_h(i),i.useStyle(t.getItemVisual(e,"style")),i.style.lineJoin="round",n?(i.setShape({points:a.points}),i.style.opacity=0,gh(i,{style:{opacity:l}},r,e)):fh(i,{style:{opacity:l},shape:{points:a.points}},r,e),jl(i,o),this._updateLabel(t,e),Yl(this,s.get("focus"),s.get("blurScope"),s.get("disabled"))},e.prototype._updateLabel=function(t,e){var n=this,i=this.getTextGuideLine(),r=n.getTextContent(),o=t.hostModel,a=t.getItemModel(e),s=t.getItemLayout(e).label,l=t.getItemVisual(e,"style"),u=l.fill;tc(r,ec(a),{labelFetcher:t.hostModel,labelDataIndex:e,defaultOpacity:l.opacity,defaultText:t.getName(e)},{normal:{align:s.textAlign,verticalAlign:s.verticalAlign}}),n.setTextConfig({local:!0,inside:!!s.inside,insideStroke:u,outsideFill:u});var h=s.linePoints;i.setShape({points:h}),n.textGuideLineConfig={anchor:h?new De(h[0][0],h[0][1]):null},fh(r,{style:{x:s.x,y:s.y}},o,e),r.attr({rotation:s.rotation,originX:s.x,originY:s.y,z2:10}),Tb(n,Cb(a),{stroke:u})},e}(Wu),uk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.ignoreLabelLineUpdate=!0,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this._data,o=this.group;i.diff(r).add((function(t){var e=new lk(i,t);i.setItemGraphicEl(t,e),o.add(e)})).update((function(t,e){var n=r.getItemGraphicEl(e);n.updateData(i,t),o.add(n),i.setItemGraphicEl(t,n)})).remove((function(e){xh(r.getItemGraphicEl(e),t,e)})).execute(),this._data=i},e.prototype.remove=function(){this.group.removeAll(),this._data=null},e.prototype.dispose=function(){},e.type="funnel",e}(kg),hk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new IM(W(this.getData,this),W(this.getRawData,this)),this._defaultLabelLine(e)},e.prototype.getInitialData=function(t,e){return MM(this,{coordDimensions:["value"],encodeDefaulter:H(Jp,this)})},e.prototype._defaultLabelLine=function(t){wo(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.prototype.getDataParams=function(e){var n=this.getData(),i=t.prototype.getDataParams.call(this,e),r=n.mapDimension("value"),o=n.getSum(r);return i.percent=o?+(n.get(r,e)/o*100).toFixed(2):0,i.$vars.push("percent"),i},e.type="series.funnel",e.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",orient:"vertical",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(mg);function ck(t,e){t.eachSeriesByType("funnel",(function(t){var n=t.getData(),i=n.mapDimension("value"),r=t.get("sort"),o=function(t,e){return Cp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e),a=t.get("orient"),s=o.width,l=o.height,u=function(t,e){for(var n=t.mapDimension("value"),i=t.mapArray(n,(function(t){return t})),r=[],o="ascending"===e,a=0,s=t.count();a5)return;var i=this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]);"none"!==i.behavior&&this._dispatchExpand({axisExpandWindow:i.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(t){if(!this._mouseDownPoint&&Mk(this,"mousemove")){var e=this._model,n=e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]),i=n.behavior;"jump"===i&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===i?null:{axisExpandWindow:n.axisExpandWindow,animation:"jump"===i?null:{duration:0}})}}};function Mk(t,e){var n=t._model;return n.get("axisExpandable")&&n.get("axisExpandTriggerOn")===e}var Ik=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){t.prototype.init.apply(this,arguments),this.mergeOption({})},e.prototype.mergeOption=function(t){var e=this.option;t&&C(e,t,!0),this._initDimensions()},e.prototype.contains=function(t,e){var n=t.get("parallelIndex");return null!=n&&e.getComponent("parallel",n)===this},e.prototype.setAxisExpand=function(t){E(["axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth","axisExpandWindow"],(function(e){t.hasOwnProperty(e)&&(this.option[e]=t[e])}),this)},e.prototype._initDimensions=function(){var t=this.dimensions=[],e=this.parallelAxisIndex=[];E(B(this.ecModel.queryComponents({mainType:"parallelAxis"}),(function(t){return(t.get("parallelIndex")||0)===this.componentIndex}),this),(function(n){t.push("dim"+n.get("dim")),e.push(n.componentIndex)}))},e.type="parallel",e.dependencies=["parallelAxis"],e.layoutMode="box",e.defaultOption={z:0,left:80,top:60,right:80,bottom:60,layout:"horizontal",axisExpandable:!1,axisExpandCenter:null,axisExpandCount:0,axisExpandWidth:50,axisExpandRate:17,axisExpandDebounce:50,axisExpandSlideTriggerArea:[-.15,.05,.4],axisExpandTriggerOn:"click",parallelAxisDefault:null},e}(Rp),Tk=function(t){function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.type=r||"value",a.axisIndex=o,a}return n(e,t),e.prototype.isHorizontal=function(){return"horizontal"!==this.coordinateSystem.getModel().get("layout")},e}(nb);function Ck(t,e,n,i,r,o){t=t||0;var a=n[1]-n[0];if(null!=r&&(r=Ak(r,[0,a])),null!=o&&(o=Math.max(o,null!=r?r:0)),"all"===i){var s=Math.abs(e[1]-e[0]);s=Ak(s,[0,a]),r=o=Ak(s,[r,o]),i=0}e[0]=Ak(e[0],n),e[1]=Ak(e[1],n);var l=Dk(e,i);e[i]+=t;var u,h=r||0,c=n.slice();return l.sign<0?c[0]+=h:c[1]-=h,e[i]=Ak(e[i],c),u=Dk(e,i),null!=r&&(u.sign!==l.sign||u.spano&&(e[1-i]=e[i]+u.sign*o),e}function Dk(t,e){var n=t[e]-t[1-e];return{span:Math.abs(n),sign:n>0?-1:n<0?1:e?-1:1}}function Ak(t,e){return Math.min(null!=e[1]?e[1]:1/0,Math.max(null!=e[0]?e[0]:-1/0,t))}var kk=E,Lk=Math.min,Pk=Math.max,Ok=Math.floor,Rk=Math.ceil,Nk=Zr,Ek=Math.PI,zk=function(){function t(t,e,n){this.type="parallel",this._axesMap=yt(),this._axesLayout={},this.dimensions=t.dimensions,this._model=t,this._init(t,e,n)}return t.prototype._init=function(t,e,n){var i=t.dimensions,r=t.parallelAxisIndex;kk(i,(function(t,n){var i=r[n],o=e.getComponent("parallelAxis",i),a=this._axesMap.set(t,new Tk(t,m_(o),[0,0],o.get("type"),i)),s="category"===a.type;a.onBand=s&&o.get("boundaryGap"),a.inverse=o.get("inverse"),o.axis=a,a.model=o,a.coordinateSystem=o.coordinateSystem=this}),this)},t.prototype.update=function(t,e){this._updateAxesFromSeries(this._model,t)},t.prototype.containPoint=function(t){var e=this._makeLayoutInfo(),n=e.axisBase,i=e.layoutBase,r=e.pixelDimIndex,o=t[1-r],a=t[r];return o>=n&&o<=n+e.axisLength&&a>=i&&a<=i+e.layoutLength},t.prototype.getModel=function(){return this._model},t.prototype._updateAxesFromSeries=function(t,e){e.eachSeries((function(n){if(t.contains(n,e)){var i=n.getData();kk(this.dimensions,(function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(i,i.mapDimension(t)),v_(e.scale,e.model)}),this)}}),this)},t.prototype.resize=function(t,e){this._rect=Cp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},t.prototype.getRect=function(){return this._rect},t.prototype._makeLayoutInfo=function(){var t,e=this._model,n=this._rect,i=["x","y"],r=["width","height"],o=e.get("layout"),a="horizontal"===o?0:1,s=n[r[a]],l=[0,s],u=this.dimensions.length,h=Vk(e.get("axisExpandWidth"),l),c=Vk(e.get("axisExpandCount")||0,[0,u]),p=e.get("axisExpandable")&&u>3&&u>c&&c>1&&h>0&&s>0,d=e.get("axisExpandWindow");d?(t=Vk(d[1]-d[0],l),d[1]=d[0]+t):(t=Vk(h*(c-1),l),(d=[h*(e.get("axisExpandCenter")||Ok(u/2))-t/2])[1]=d[0]+t);var f=(s-t)/(u-c);f<3&&(f=0);var g=[Ok(Nk(d[0]/h,1))+1,Rk(Nk(d[1]/h,1))-1],y=f/h*d[0];return{layout:o,pixelDimIndex:a,layoutBase:n[i[a]],layoutLength:s,axisBase:n[i[1-a]],axisLength:n[r[1-a]],axisExpandable:p,axisExpandWidth:h,axisCollapseWidth:f,axisExpandWindow:d,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:y}},t.prototype._layoutAxes=function(){var t=this._rect,e=this._axesMap,n=this.dimensions,i=this._makeLayoutInfo(),r=i.layout;e.each((function(t){var e=[0,i.axisLength],n=t.inverse?1:0;t.setExtent(e[n],e[1-n])})),kk(n,(function(e,n){var o=(i.axisExpandable?Fk:Bk)(n,i),a={horizontal:{x:o.position,y:i.axisLength},vertical:{x:0,y:o.position}},s={horizontal:Ek/2,vertical:0},l=[a[r].x+t.x,a[r].y+t.y],u=s[r],h=[1,0,0,1,0,0];Se(h,h,u),we(h,h,l),this._axesLayout[e]={position:l,rotation:u,transform:h,axisNameAvailableWidth:o.axisNameAvailableWidth,axisLabelShow:o.axisLabelShow,nameTruncateMaxWidth:o.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}}),this)},t.prototype.getAxis=function(t){return this._axesMap.get(t)},t.prototype.dataToPoint=function(t,e){return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t),e)},t.prototype.eachActiveState=function(t,e,n,i){null==n&&(n=0),null==i&&(i=t.count());var r=this._axesMap,o=this.dimensions,a=[],s=[];E(o,(function(e){a.push(t.mapDimension(e)),s.push(r.get(e).model)}));for(var l=this.hasAxisBrushed(),u=n;ur*(1-h[0])?(l="jump",a=s-r*(1-h[2])):(a=s-r*h[1])>=0&&(a=s-r*(1-h[1]))<=0&&(a=0),(a*=e.axisExpandWidth/u)?Ck(a,i,o,"all"):l="none";else{var p=i[1]-i[0];(i=[Pk(0,o[1]*s/p-p/2)])[1]=Lk(o[1],i[0]+p),i[0]=i[1]-p}return{axisExpandWindow:i,behavior:l}},t}();function Vk(t,e){return Lk(Pk(t,e[0]),e[1])}function Bk(t,e){var n=e.layoutLength/(e.axisCount-1);return{position:n*t,axisNameAvailableWidth:n,axisLabelShow:!0}}function Fk(t,e){var n,i,r=e.layoutLength,o=e.axisExpandWidth,a=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;return t=0;n--)jr(e[n])},e.prototype.getActiveState=function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(+t))return"inactive";if(1===e.length){var n=e[0];if(n[0]<=t&&t<=n[1])return"active"}else for(var i=0,r=e.length;i6}(t)||o){if(a&&!o){"single"===s.brushMode&&sL(t);var l=T(s);l.brushType=ML(l.brushType,a),l.panelId=a===Hk?null:a.panelId,o=t._creatingCover=Qk(t,l),t._covers.push(o)}if(o){var u=CL[ML(t._brushType,a)];o.__brushOption.range=u.getCreatingRange(_L(t,o,t._track)),i&&(tL(t,o),u.updateCommon(t,o)),eL(t,o),r={isEnd:i}}}else i&&"single"===s.brushMode&&s.removeOnClick&&oL(t,e,n)&&sL(t)&&(r={isEnd:i,removeOnClick:!0});return r}function ML(t,e){return"auto"===t?e.defaultBrushType:t}var IL={mousedown:function(t){if(this._dragging)TL(this,t);else if(!t.target||!t.target.draggable){bL(t);var e=this.group.transformCoordToLocal(t.offsetX,t.offsetY);this._creatingCover=null,(this._creatingPanel=oL(this,t,e))&&(this._dragging=!0,this._track=[e.slice()])}},mousemove:function(t){var e=t.offsetX,n=t.offsetY,i=this.group.transformCoordToLocal(e,n);if(function(t,e,n){if(t._brushType&&!function(t,e,n){var i=t._zr;return e<0||e>i.getWidth()||n<0||n>i.getHeight()}(t,e.offsetX,e.offsetY)){var i=t._zr,r=t._covers,o=oL(t,e,n);if(!t._dragging)for(var a=0;a=0&&(o[r[a].depth]=new Mc(r[a],this,e));if(i&&n){var s=QA(i,n,this,!0,(function(t,e){t.wrapMethod("getItemModel",(function(t,e){var n=t.parentModel,i=n.getData().getItemLayout(e);if(i){var r=i.depth,o=n.levelModels[r];o&&(t.parentModel=o)}return t})),e.wrapMethod("getItemModel",(function(t,e){var n=t.parentModel,i=n.getGraph().getEdgeByIndex(e).node1.getLayout();if(i){var r=i.depth,o=n.levelModels[r];o&&(t.parentModel=o)}return t}))}));return s.data}},e.prototype.setNodePosition=function(t,e){var n=(this.option.data||this.option.nodes)[t];n.localX=e[0],n.localY=e[1]},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.formatTooltip=function(t,e,n){function i(t){return isNaN(t)||null==t}if("edge"===n){var r=this.getDataParams(t,n),o=r.data,a=r.value;return ng("nameValue",{name:o.source+" -- "+o.target,value:a,noValue:i(a)})}var s=this.getGraph().getNodeByIndex(t).getLayout().value,l=this.getDataParams(t,n).data.name;return ng("nameValue",{name:null!=l?l+"":null,value:s,noValue:i(s)})},e.prototype.optionUpdated=function(){},e.prototype.getDataParams=function(e,n){var i=t.prototype.getDataParams.call(this,e,n);if(null==i.value&&"node"===n){var r=this.getGraph().getNodeByIndex(e).getLayout().value;i.value=r}return i},e.type="series.sankey",e.defaultOption={z:2,coordinateSystem:"view",left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,layoutIterations:32,label:{show:!0,position:"right",fontSize:12},edgeLabel:{show:!1,fontSize:12},levels:[],nodeAlign:"justify",lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},select:{itemStyle:{borderColor:"#212121"}},animationEasing:"linear",animationDuration:1e3},e}(mg);function HL(t,e){t.eachSeriesByType("sankey",(function(t){var n=t.get("nodeWidth"),i=t.get("nodeGap"),r=function(t,e){return Cp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e);t.layoutInfo=r;var o=r.width,a=r.height,s=t.getGraph(),l=s.nodes,u=s.edges;!function(t){E(t,(function(t){var e=QL(t.outEdges,JL),n=QL(t.inEdges,JL),i=t.getValue()||0,r=Math.max(e,n,i);t.setLayout({value:r},!0)}))}(l),function(t,e,n,i,r,o,a,s,l){(function(t,e,n,i,r,o,a){for(var s=[],l=[],u=[],h=[],c=0,p=0;p=0;v&&y.depth>d&&(d=y.depth),g.setLayout({depth:v?y.depth:c},!0),"vertical"===o?g.setLayout({dy:n},!0):g.setLayout({dx:n},!0);for(var m=0;mc-1?d:c-1;a&&"left"!==a&&function(t,e,n,i){if("right"===e){for(var r=[],o=t,a=0;o.length;){for(var s=0;s0;o--)UL(s,l*=.99,a),XL(s,r,n,i,a),tP(s,l,a),XL(s,r,n,i,a)}(t,e,o,r,i,a,s),function(t,e){var n="vertical"===e?"x":"y";E(t,(function(t){t.outEdges.sort((function(t,e){return t.node2.getLayout()[n]-e.node2.getLayout()[n]})),t.inEdges.sort((function(t,e){return t.node1.getLayout()[n]-e.node1.getLayout()[n]}))})),E(t,(function(t){var e=0,n=0;E(t.outEdges,(function(t){t.setLayout({sy:e},!0),e+=t.getLayout().dy})),E(t.inEdges,(function(t){t.setLayout({ty:n},!0),n+=t.getLayout().dy}))}))}(t,s)}(l,u,n,i,o,a,0!==B(l,(function(t){return 0===t.getLayout().value})).length?0:t.get("layoutIterations"),t.get("orient"),t.get("nodeAlign"))}))}function YL(t){var e=t.hostGraph.data.getRawDataItem(t.dataIndex);return null!=e.depth&&e.depth>=0}function XL(t,e,n,i,r){var o="vertical"===r?"x":"y";E(t,(function(t){var a,s,l;t.sort((function(t,e){return t.getLayout()[o]-e.getLayout()[o]}));for(var u=0,h=t.length,c="vertical"===r?"dx":"dy",p=0;p0&&(a=s.getLayout()[o]+l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0)),u=s.getLayout()[o]+s.getLayout()[c]+e;if((l=u-e-("vertical"===r?i:n))>0){a=s.getLayout()[o]-l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0),u=a;for(p=h-2;p>=0;--p)(l=(s=t[p]).getLayout()[o]+s.getLayout()[c]+e-u)>0&&(a=s.getLayout()[o]-l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0)),u=s.getLayout()[o]}}))}function UL(t,e,n){E(t.slice().reverse(),(function(t){E(t,(function(t){if(t.outEdges.length){var i=QL(t.outEdges,ZL,n)/QL(t.outEdges,JL);if(isNaN(i)){var r=t.outEdges.length;i=r?QL(t.outEdges,jL,n)/r:0}if("vertical"===n){var o=t.getLayout().x+(i-$L(t,n))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(i-$L(t,n))*e;t.setLayout({y:a},!0)}}}))}))}function ZL(t,e){return $L(t.node2,e)*t.getValue()}function jL(t,e){return $L(t.node2,e)}function qL(t,e){return $L(t.node1,e)*t.getValue()}function KL(t,e){return $L(t.node1,e)}function $L(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function JL(t){return t.getValue()}function QL(t,e,n){for(var i=0,r=t.length,o=-1;++oo&&(o=e)})),E(n,(function(e){var n=new _D({type:"color",mappingMethod:"linear",dataExtent:[r,o],visual:t.get("color")}).mapValueToVisual(e.getLayout().value),i=e.getModel().get(["itemStyle","color"]);null!=i?(e.setVisual("color",i),e.setVisual("style",{fill:i})):(e.setVisual("color",n),e.setVisual("style",{fill:n}))}))}i.length&&E(i,(function(t){var e=t.getModel().get("lineStyle");t.setVisual("style",e)}))}))}var nP=function(){function t(){}return t.prototype.getInitialData=function(t,e){var n,i,r=e.getComponent("xAxis",this.get("xAxisIndex")),o=e.getComponent("yAxis",this.get("yAxisIndex")),a=r.get("type"),s=o.get("type");"category"===a?(t.layout="horizontal",n=r.getOrdinalMeta(),i=!0):"category"===s?(t.layout="vertical",n=o.getOrdinalMeta(),i=!0):t.layout=t.layout||"horizontal";var l=["x","y"],u="horizontal"===t.layout?0:1,h=this._baseAxisDim=l[u],c=l[1-u],p=[r,o],d=p[u].get("type"),f=p[1-u].get("type"),g=t.data;if(g&&i){var y=[];E(g,(function(t,e){var n;Y(t)?(n=t.slice(),t.unshift(e)):Y(t.value)?((n=A({},t)).value=n.value.slice(),t.value.unshift(e)):n=t,y.push(n)})),t.data=y}var v=this.defaultValueDimensions,m=[{name:h,type:Gm(d),ordinalMeta:n,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:Gm(f),dimsDef:v.slice()}];return MM(this,{coordDimensions:m,dimensionsCount:v.length+1,encodeDefaulter:H($p,m,this)})},t.prototype.getBaseAxis=function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis},t}(),iP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.defaultValueDimensions=[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],n.visualDrawType="stroke",n}return n(e,t),e.type="series.boxplot",e.dependencies=["xAxis","yAxis","grid"],e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0,0,0,0.2)"}},animationDuration:800},e}(mg);R(iP,nP,!0);var rP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this.group,o=this._data;this._data||r.removeAll();var a="horizontal"===t.get("layout")?1:0;i.diff(o).add((function(t){if(i.hasValue(t)){var e=sP(i.getItemLayout(t),i,t,a,!0);i.setItemGraphicEl(t,e),r.add(e)}})).update((function(t,e){var n=o.getItemGraphicEl(e);if(i.hasValue(t)){var s=i.getItemLayout(t);n?(_h(n),lP(s,n,i,t)):n=sP(s,i,t,a),r.add(n),i.setItemGraphicEl(t,n)}else r.remove(n)})).remove((function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)})).execute(),this._data=i},e.prototype.remove=function(t){var e=this.group,n=this._data;this._data=null,n&&n.eachItemGraphicEl((function(t){t&&e.remove(t)}))},e.type="boxplot",e}(kg),oP=function(){},aP=function(t){function e(e){var n=t.call(this,e)||this;return n.type="boxplotBoxPath",n}return n(e,t),e.prototype.getDefaultShape=function(){return new oP},e.prototype.buildPath=function(t,e){var n=e.points,i=0;for(t.moveTo(n[i][0],n[i][1]),i++;i<4;i++)t.lineTo(n[i][0],n[i][1]);for(t.closePath();ig){var _=[v,x];i.push(_)}}}return{boxData:n,outliers:i}}(e.getRawData(),t.config);return[{dimensions:["ItemName","Low","Q1","Q2","Q3","High"],data:i.boxData},{data:i.outliers}]}};var dP=["color","borderColor"],fP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeClipPath(),this._progressiveEls=null,this._updateDrawMode(t),this._isLargeDraw?this._renderLarge(t):this._renderNormal(t)},e.prototype.incrementalPrepareRender=function(t,e,n){this._clear(),this._updateDrawMode(t)},e.prototype.incrementalRender=function(t,e,n,i){this._progressiveEls=[],this._isLargeDraw?this._incrementalRenderLarge(t,e):this._incrementalRenderNormal(t,e)},e.prototype.eachRendered=function(t){qh(this._progressiveEls||this.group,t)},e.prototype._updateDrawMode=function(t){var e=t.pipelineContext.large;null!=this._isLargeDraw&&e===this._isLargeDraw||(this._isLargeDraw=e,this._clear())},e.prototype._renderNormal=function(t){var e=t.getData(),n=this._data,i=this.group,r=e.getLayout("isSimpleBox"),o=t.get("clip",!0),a=t.coordinateSystem,s=a.getArea&&a.getArea();this._data||i.removeAll(),e.diff(n).add((function(n){if(e.hasValue(n)){var a=e.getItemLayout(n);if(o&&mP(s,a))return;var l=vP(a,n,!0);gh(l,{shape:{points:a.ends}},t,n),xP(l,e,n,r),i.add(l),e.setItemGraphicEl(n,l)}})).update((function(a,l){var u=n.getItemGraphicEl(l);if(e.hasValue(a)){var h=e.getItemLayout(a);o&&mP(s,h)?i.remove(u):(u?(fh(u,{shape:{points:h.ends}},t,a),_h(u)):u=vP(h),xP(u,e,a,r),i.add(u),e.setItemGraphicEl(a,u))}else i.remove(u)})).remove((function(t){var e=n.getItemGraphicEl(t);e&&i.remove(e)})).execute(),this._data=e},e.prototype._renderLarge=function(t){this._clear(),SP(t,this.group);var e=t.get("clip",!0)?SS(t.coordinateSystem,!1,t):null;e?this.group.setClipPath(e):this.group.removeClipPath()},e.prototype._incrementalRenderNormal=function(t,e){for(var n,i=e.getData(),r=i.getLayout("isSimpleBox");null!=(n=t.next());){var o=vP(i.getItemLayout(n));xP(o,i,n,r),o.incremental=!0,this.group.add(o),this._progressiveEls.push(o)}},e.prototype._incrementalRenderLarge=function(t,e){SP(e,this.group,this._progressiveEls,!0)},e.prototype.remove=function(t){this._clear()},e.prototype._clear=function(){this.group.removeAll(),this._data=null},e.type="candlestick",e}(kg),gP=function(){},yP=function(t){function e(e){var n=t.call(this,e)||this;return n.type="normalCandlestickBox",n}return n(e,t),e.prototype.getDefaultShape=function(){return new gP},e.prototype.buildPath=function(t,e){var n=e.points;this.__simpleBox?(t.moveTo(n[4][0],n[4][1]),t.lineTo(n[6][0],n[6][1])):(t.moveTo(n[0][0],n[0][1]),t.lineTo(n[1][0],n[1][1]),t.lineTo(n[2][0],n[2][1]),t.lineTo(n[3][0],n[3][1]),t.closePath(),t.moveTo(n[4][0],n[4][1]),t.lineTo(n[5][0],n[5][1]),t.moveTo(n[6][0],n[6][1]),t.lineTo(n[7][0],n[7][1]))},e}(Is);function vP(t,e,n){var i=t.ends;return new yP({shape:{points:n?_P(i,t):i},z2:100})}function mP(t,e){for(var n=!0,i=0;i0?"borderColor":"borderColor0"])||n.get(["itemStyle",t>0?"color":"color0"]);0===t&&(r=n.get(["itemStyle","borderColorDoji"]));var o=n.getModel("itemStyle").getItemStyle(dP);e.useStyle(o),e.style.fill=null,e.style.stroke=r}var IP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.defaultValueDimensions=[{name:"open",defaultTooltip:!0},{name:"close",defaultTooltip:!0},{name:"lowest",defaultTooltip:!0},{name:"highest",defaultTooltip:!0}],n}return n(e,t),e.prototype.getShadowDim=function(){return"open"},e.prototype.brushSelector=function(t,e,n){var i=e.getItemLayout(t);return i&&n.rect(i.brushRect)},e.type="series.candlestick",e.dependencies=["xAxis","yAxis","grid"],e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,clip:!0,itemStyle:{color:"#eb5454",color0:"#47b262",borderColor:"#eb5454",borderColor0:"#47b262",borderColorDoji:null,borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2}},barMaxWidth:null,barMinWidth:null,barWidth:null,large:!0,largeThreshold:600,progressive:3e3,progressiveThreshold:1e4,progressiveChunkMode:"mod",animationEasing:"linear",animationDuration:300},e}(mg);function TP(t){t&&Y(t.series)&&E(t.series,(function(t){q(t)&&"k"===t.type&&(t.type="candlestick")}))}R(IP,nP,!0);var CP=["itemStyle","borderColor"],DP=["itemStyle","borderColor0"],AP=["itemStyle","borderColorDoji"],kP=["itemStyle","color"],LP=["itemStyle","color0"],PP={seriesType:"candlestick",plan:Cg(),performRawSeries:!0,reset:function(t,e){function n(t,e){return e.get(t>0?kP:LP)}function i(t,e){return e.get(0===t?AP:t>0?CP:DP)}if(!e.isSeriesFiltered(t))return!t.pipelineContext.large&&{progress:function(t,e){for(var r;null!=(r=t.next());){var o=e.getItemModel(r),a=e.getItemLayout(r).sign,s=o.getItemStyle();s.fill=n(a,o),s.stroke=i(a,o)||s.fill,A(e.ensureUniqueItemVisual(r,"style"),s)}}}}},OP={seriesType:"candlestick",plan:Cg(),reset:function(t){var e=t.coordinateSystem,n=t.getData(),i=function(t,e){var n,i=t.getBaseAxis(),r="category"===i.type?i.getBandWidth():(n=i.getExtent(),Math.abs(n[1]-n[0])/e.count()),o=Ur(rt(t.get("barMaxWidth"),r),r),a=Ur(rt(t.get("barMinWidth"),1),r),s=t.get("barWidth");return null!=s?Ur(s,r):Math.max(Math.min(r/2,o),a)}(t,n),r=["x","y"],o=n.getDimensionIndex(n.mapDimension(r[0])),a=z(n.mapDimensionsAll(r[1]),n.getDimensionIndex,n),s=a[0],l=a[1],u=a[2],h=a[3];if(n.setLayout({candleWidth:i,isSimpleBox:i<=1.3}),!(o<0||a.length<4))return{progress:t.pipelineContext.large?function(n,i){var r,a,c=Ex(4*n.count),p=0,d=[],f=[],g=i.getStore(),y=!!t.get(["itemStyle","borderColorDoji"]);for(;null!=(a=n.next());){var v=g.get(o,a),m=g.get(s,a),x=g.get(l,a),_=g.get(u,a),b=g.get(h,a);isNaN(v)||isNaN(_)||isNaN(b)?(c[p++]=NaN,p+=3):(c[p++]=RP(g,a,m,x,l,y),d[0]=v,d[1]=_,r=e.dataToPoint(d,null,f),c[p++]=r?r[0]:NaN,c[p++]=r?r[1]:NaN,d[1]=b,r=e.dataToPoint(d,null,f),c[p++]=r?r[1]:NaN)}i.setLayout("largePoints",c)}:function(t,n){var r,a=n.getStore();for(;null!=(r=t.next());){var c=a.get(o,r),p=a.get(s,r),d=a.get(l,r),f=a.get(u,r),g=a.get(h,r),y=Math.min(p,d),v=Math.max(p,d),m=M(y,c),x=M(v,c),_=M(f,c),b=M(g,c),w=[];I(w,x,0),I(w,m,1),w.push(C(b),C(x),C(_),C(m));var S=!!n.getItemModel(r).get(["itemStyle","borderColorDoji"]);n.setItemLayout(r,{sign:RP(a,r,p,d,l,S),initBaseline:p>d?x[1]:m[1],ends:w,brushRect:T(f,g,c)})}function M(t,n){var i=[];return i[0]=n,i[1]=t,isNaN(n)||isNaN(t)?[NaN,NaN]:e.dataToPoint(i)}function I(t,e,n){var r=e.slice(),o=e.slice();r[0]=Nh(r[0]+i/2,1,!1),o[0]=Nh(o[0]-i/2,1,!0),n?t.push(r,o):t.push(o,r)}function T(t,e,n){var r=M(t,n),o=M(e,n);return r[0]-=i/2,o[0]-=i/2,{x:r[0],y:r[1],width:i,height:o[1]-r[1]}}function C(t){return t[0]=Nh(t[0],1),t}}}}};function RP(t,e,n,i,r,o){return n>i?-1:n0?t.get(r,e-1)<=i?1:-1:1}function NP(t,e){var n=e.rippleEffectColor||e.color;t.eachChild((function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?n:null,fill:"fill"===e.brushType?n:null}})}))}var EP=function(t){function e(e,n){var i=t.call(this)||this,r=new oS(e,n),o=new zr;return i.add(r),i.add(o),i.updateData(e,n),i}return n(e,t),e.prototype.stopEffectAnimation=function(){this.childAt(1).removeAll()},e.prototype.startEffectAnimation=function(t){for(var e=t.symbolType,n=t.color,i=t.rippleNumber,r=this.childAt(1),o=0;o0&&(o=this._getLineLength(i)/l*1e3),o!==this._period||a!==this._loop||s!==this._roundTrip){i.stopAnimation();var h=void 0;h=X(u)?u(n):u,i.__t>0&&(h=-o*i.__t),this._animateSymbol(i,o,h,a,s)}this._period=o,this._loop=a,this._roundTrip=s}},e.prototype._animateSymbol=function(t,e,n,i,r){if(e>0){t.__t=0;var o=this,a=t.animate("",i).when(r?2*e:e,{__t:r?2:1}).delay(n).during((function(){o._updateSymbolPosition(t)}));i||a.done((function(){o.remove(t)})),a.start()}},e.prototype._getLineLength=function(t){return Vt(t.__p1,t.__cp1)+Vt(t.__cp1,t.__p2)},e.prototype._updateAnimationPoints=function(t,e){t.__p1=e[0],t.__p2=e[1],t.__cp1=e[2]||[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]},e.prototype.updateData=function(t,e,n){this.childAt(0).updateData(t,e,n),this._updateEffectSymbol(t,e)},e.prototype._updateSymbolPosition=function(t){var e=t.__p1,n=t.__p2,i=t.__cp1,r=t.__t<1?t.__t:2-t.__t,o=[t.x,t.y],a=o.slice(),s=In,l=Tn;o[0]=s(e[0],i[0],n[0],r),o[1]=s(e[1],i[1],n[1],r);var u=t.__t<1?l(e[0],i[0],n[0],r):l(n[0],i[0],e[0],1-r),h=t.__t<1?l(e[1],i[1],n[1],r):l(n[1],i[1],e[1],1-r);t.rotation=-Math.atan2(h,u)-Math.PI/2,"line"!==this._symbolType&&"rect"!==this._symbolType&&"roundRect"!==this._symbolType||(void 0!==t.__lastT&&t.__lastT=0&&!(i[o]<=e);o--);o=Math.min(o,r-2)}else{for(o=a;oe);o++);o=Math.min(o-1,r-2)}var s=(e-i[o])/(i[o+1]-i[o]),l=n[o],u=n[o+1];t.x=l[0]*(1-s)+s*u[0],t.y=l[1]*(1-s)+s*u[1];var h=t.__t<1?u[0]-l[0]:l[0]-u[0],c=t.__t<1?u[1]-l[1]:l[1]-u[1];t.rotation=-Math.atan2(c,h)-Math.PI/2,this._lastFrame=o,this._lastFramePercent=e,t.ignore=!1}},e}(BP),WP=function(){this.polyline=!1,this.curveness=0,this.segs=[]},HP=function(t){function e(e){var n=t.call(this,e)||this;return n._off=0,n.hoverDataIdx=-1,n}return n(e,t),e.prototype.reset=function(){this.notClear=!1,this._off=0},e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new WP},e.prototype.buildPath=function(t,e){var n,i=e.segs,r=e.curveness;if(e.polyline)for(n=this._off;n0){t.moveTo(i[n++],i[n++]);for(var a=1;a0){var c=(s+u)/2-(l-h)*r,p=(l+h)/2-(u-s)*r;t.quadraticCurveTo(c,p,u,h)}else t.lineTo(u,h)}this.incremental&&(this._off=n,this.notClear=!0)},e.prototype.findDataIndex=function(t,e){var n=this.shape,i=n.segs,r=n.curveness,o=this.style.lineWidth;if(n.polyline)for(var a=0,s=0;s0)for(var u=i[s++],h=i[s++],c=1;c0){if(ls(u,h,(u+p)/2-(h-d)*r,(h+d)/2-(p-u)*r,p,d,o,t,e))return a}else if(as(u,h,p,d,o,t,e))return a;a++}return-1},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect();return t=n[0],e=n[1],i.contain(t,e)?(this.hoverDataIdx=this.findDataIndex(t,e))>=0:(this.hoverDataIdx=-1,!1)},e.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var e=this.shape.segs,n=1/0,i=1/0,r=-1/0,o=-1/0,a=0;a0&&(o.dataIndex=n+t.__startIndex)}))},t.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},t}(),XP={seriesType:"lines",plan:Cg(),reset:function(t){var e=t.coordinateSystem;if(e){var n=t.get("polyline"),i=t.pipelineContext.large;return{progress:function(r,o){var a=[];if(i){var s=void 0,l=r.end-r.start;if(n){for(var u=0,h=r.start;h0&&(l||s.configLayer(o,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(a/10+.9,1),0)})),r.updateData(i);var u=t.get("clip",!0)&&SS(t.coordinateSystem,!1,t);u?this.group.setClipPath(u):this.group.removeClipPath(),this._lastZlevel=o,this._finished=!0},e.prototype.incrementalPrepareRender=function(t,e,n){var i=t.getData();this._updateLineDraw(i,t).incrementalPrepareUpdate(i),this._clearLayer(n),this._finished=!1},e.prototype.incrementalRender=function(t,e,n){this._lineDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},e.prototype.eachRendered=function(t){this._lineDraw&&this._lineDraw.eachRendered(t)},e.prototype.updateTransform=function(t,e,n){var i=t.getData(),r=t.pipelineContext;if(!this._finished||r.large||r.progressiveRender)return{update:!0};var o=XP.reset(t,e,n);o.progress&&o.progress({start:0,end:i.count(),count:i.count()},i),this._lineDraw.updateLayout(),this._clearLayer(n)},e.prototype._updateLineDraw=function(t,e){var n=this._lineDraw,i=this._showEffect(e),r=!!e.get("polyline"),o=e.pipelineContext.large;return n&&i===this._hasEffet&&r===this._isPolyline&&o===this._isLargeDraw||(n&&n.remove(),n=this._lineDraw=o?new YP:new RA(r?i?GP:FP:i?BP:OA),this._hasEffet=i,this._isPolyline=r,this._isLargeDraw=o),this.group.add(n.group),n},e.prototype._showEffect=function(t){return!!t.get(["effect","show"])},e.prototype._clearLayer=function(t){var e=t.getZr();"svg"===e.painter.getType()||null==this._lastZlevel||e.painter.getLayer(this._lastZlevel).clear(!0)},e.prototype.remove=function(t,e){this._lineDraw&&this._lineDraw.remove(),this._lineDraw=null,this._clearLayer(e)},e.prototype.dispose=function(t,e){this.remove(t,e)},e.type="lines",e}(kg),ZP="undefined"==typeof Uint32Array?Array:Uint32Array,jP="undefined"==typeof Float64Array?Array:Float64Array;function qP(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=z(e,(function(t){var e={coords:[t[0].coord,t[1].coord]};return t[0].name&&(e.fromName=t[0].name),t[1].name&&(e.toName=t[1].name),D([e,t[0],t[1]])})))}var KP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.visualStyleAccessPath="lineStyle",n.visualDrawType="stroke",n}return n(e,t),e.prototype.init=function(e){e.data=e.data||[],qP(e);var n=this._processFlatCoordsArray(e.data);this._flatCoords=n.flatCoords,this._flatCoordsOffset=n.flatCoordsOffset,n.flatCoords&&(e.data=new Float32Array(n.count)),t.prototype.init.apply(this,arguments)},e.prototype.mergeOption=function(e){if(qP(e),e.data){var n=this._processFlatCoordsArray(e.data);this._flatCoords=n.flatCoords,this._flatCoordsOffset=n.flatCoordsOffset,n.flatCoords&&(e.data=new Float32Array(n.count))}t.prototype.mergeOption.apply(this,arguments)},e.prototype.appendData=function(t){var e=this._processFlatCoordsArray(t.data);e.flatCoords&&(this._flatCoords?(this._flatCoords=vt(this._flatCoords,e.flatCoords),this._flatCoordsOffset=vt(this._flatCoordsOffset,e.flatCoordsOffset)):(this._flatCoords=e.flatCoords,this._flatCoordsOffset=e.flatCoordsOffset),t.data=new Float32Array(e.count)),this.getRawData().appendData(t.data)},e.prototype._getCoordsFromItemModel=function(t){var e=this.getData().getItemModel(t),n=e.option instanceof Array?e.option:e.getShallow("coords");return n},e.prototype.getLineCoordsCount=function(t){return this._flatCoordsOffset?this._flatCoordsOffset[2*t+1]:this._getCoordsFromItemModel(t).length},e.prototype.getLineCoords=function(t,e){if(this._flatCoordsOffset){for(var n=this._flatCoordsOffset[2*t],i=this._flatCoordsOffset[2*t+1],r=0;r ")})},e.prototype.preventIncremental=function(){return!!this.get(["effect","show"])},e.prototype.getProgressive=function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},e.prototype.getZLevelKey=function(){var t=this.getModel("effect"),e=t.get("trailLength");return this.getData().count()>this.getProgressiveThreshold()?this.id:t.get("show")&&e>0?e+"":""},e.type="series.lines",e.dependencies=["grid","polar","geo","calendar"],e.defaultOption={coordinateSystem:"geo",z:2,legendHoverLink:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:"end"},lineStyle:{opacity:.5}},e}(mg);function $P(t){return t instanceof Array||(t=[t,t]),t}var JP={seriesType:"lines",reset:function(t){var e=$P(t.get("symbol")),n=$P(t.get("symbolSize")),i=t.getData();return i.setVisual("fromSymbol",e&&e[0]),i.setVisual("toSymbol",e&&e[1]),i.setVisual("fromSymbolSize",n&&n[0]),i.setVisual("toSymbolSize",n&&n[1]),{dataEach:i.hasItemOption?function(t,e){var n=t.getItemModel(e),i=$P(n.getShallow("symbol",!0)),r=$P(n.getShallow("symbolSize",!0));i[0]&&t.setItemVisual(e,"fromSymbol",i[0]),i[1]&&t.setItemVisual(e,"toSymbol",i[1]),r[0]&&t.setItemVisual(e,"fromSymbolSize",r[0]),r[1]&&t.setItemVisual(e,"toSymbolSize",r[1])}:null}}};var QP=function(){function t(){this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={inRange:null,outOfRange:null};var t=h.createCanvas();this.canvas=t}return t.prototype.update=function(t,e,n,i,r,o){var a=this._getBrush(),s=this._getGradient(r,"inRange"),l=this._getGradient(r,"outOfRange"),u=this.pointSize+this.blurSize,h=this.canvas,c=h.getContext("2d"),p=t.length;h.width=e,h.height=n;for(var d=0;d0){var I=o(v)?s:l;v>0&&(v=v*S+w),x[_++]=I[M],x[_++]=I[M+1],x[_++]=I[M+2],x[_++]=I[M+3]*v*256}else _+=4}return c.putImageData(m,0,0),h},t.prototype._getBrush=function(){var t=this._brushCanvas||(this._brushCanvas=h.createCanvas()),e=this.pointSize+this.blurSize,n=2*e;t.width=n,t.height=n;var i=t.getContext("2d");return i.clearRect(0,0,n,n),i.shadowOffsetX=n,i.shadowBlur=this.blurSize,i.shadowColor="#000",i.beginPath(),i.arc(-e,e,this.pointSize,0,2*Math.PI,!0),i.closePath(),i.fill(),t},t.prototype._getGradient=function(t,e){for(var n=this._gradientPixels,i=n[e]||(n[e]=new Uint8ClampedArray(1024)),r=[0,0,0,0],o=0,a=0;a<256;a++)t[e](a/255,!0,r),i[o++]=r[0],i[o++]=r[1],i[o++]=r[2],i[o++]=r[3];return i},t}();function tO(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}var eO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i;e.eachComponent("visualMap",(function(e){e.eachTargetSeries((function(n){n===t&&(i=e)}))})),this._progressiveEls=null,this.group.removeAll();var r=t.coordinateSystem;"cartesian2d"===r.type||"calendar"===r.type?this._renderOnCartesianAndCalendar(t,n,0,t.getData().count()):tO(r)&&this._renderOnGeo(r,t,i,n)},e.prototype.incrementalPrepareRender=function(t,e,n){this.group.removeAll()},e.prototype.incrementalRender=function(t,e,n,i){var r=e.coordinateSystem;r&&(tO(r)?this.render(e,n,i):(this._progressiveEls=[],this._renderOnCartesianAndCalendar(e,i,t.start,t.end,!0)))},e.prototype.eachRendered=function(t){qh(this._progressiveEls||this.group,t)},e.prototype._renderOnCartesianAndCalendar=function(t,e,n,i,r){var o,a,s,l,u=t.coordinateSystem,h=MS(u,"cartesian2d");if(h){var c=u.getAxis("x"),p=u.getAxis("y");0,o=c.getBandWidth()+.5,a=p.getBandWidth()+.5,s=c.scale.getExtent(),l=p.scale.getExtent()}for(var d=this.group,f=t.getData(),g=t.getModel(["emphasis","itemStyle"]).getItemStyle(),y=t.getModel(["blur","itemStyle"]).getItemStyle(),v=t.getModel(["select","itemStyle"]).getItemStyle(),m=t.get(["itemStyle","borderRadius"]),x=ec(t),_=t.getModel("emphasis"),b=_.get("focus"),w=_.get("blurScope"),S=_.get("disabled"),M=h?[f.mapDimension("x"),f.mapDimension("y"),f.mapDimension("value")]:[f.mapDimension("time"),f.mapDimension("value")],I=n;Is[1]||Al[1])continue;var k=u.dataToPoint([D,A]);T=new zs({shape:{x:k[0]-o/2,y:k[1]-a/2,width:o,height:a},style:C})}else{if(isNaN(f.get(M[1],I)))continue;T=new zs({z2:1,shape:u.dataToRect([f.get(M[0],I)]).contentShape,style:C})}if(f.hasItemOption){var L=f.getItemModel(I),P=L.getModel("emphasis");g=P.getModel("itemStyle").getItemStyle(),y=L.getModel(["blur","itemStyle"]).getItemStyle(),v=L.getModel(["select","itemStyle"]).getItemStyle(),m=L.get(["itemStyle","borderRadius"]),b=P.get("focus"),w=P.get("blurScope"),S=P.get("disabled"),x=ec(L)}T.shape.r=m;var O=t.getRawValue(I),R="-";O&&null!=O[2]&&(R=O[2]+""),tc(T,x,{labelFetcher:t,labelDataIndex:I,defaultOpacity:C.opacity,defaultText:R}),T.ensureState("emphasis").style=g,T.ensureState("blur").style=y,T.ensureState("select").style=v,Yl(T,b,w,S),T.incremental=r,r&&(T.states.emphasis.hoverLayer=!0),d.add(T),f.setItemGraphicEl(I,T),this._progressiveEls&&this._progressiveEls.push(T)}},e.prototype._renderOnGeo=function(t,e,n,i){var r=n.targetVisuals.inRange,o=n.targetVisuals.outOfRange,a=e.getData(),s=this._hmLayer||this._hmLayer||new QP;s.blurSize=e.get("blurSize"),s.pointSize=e.get("pointSize"),s.minOpacity=e.get("minOpacity"),s.maxOpacity=e.get("maxOpacity");var l=t.getViewRect().clone(),u=t.getRoamTransform();l.applyTransform(u);var h=Math.max(l.x,0),c=Math.max(l.y,0),p=Math.min(l.width+l.x,i.getWidth()),d=Math.min(l.height+l.y,i.getHeight()),f=p-h,g=d-c,y=[a.mapDimension("lng"),a.mapDimension("lat"),a.mapDimension("value")],v=a.mapArray(y,(function(e,n,i){var r=t.dataToPoint([e,n]);return r[0]-=h,r[1]-=c,r.push(i),r})),m=n.getExtent(),x="visualMap.continuous"===n.type?function(t,e){var n=t[1]-t[0];return e=[(e[0]-t[0])/n,(e[1]-t[0])/n],function(t){return t>=e[0]&&t<=e[1]}}(m,n.option.range):function(t,e,n){var i=t[1]-t[0],r=(e=z(e,(function(e){return{interval:[(e.interval[0]-t[0])/i,(e.interval[1]-t[0])/i]}}))).length,o=0;return function(t){var i;for(i=o;i=0;i--){var a;if((a=e[i].interval)[0]<=t&&t<=a[1]){o=i;break}}return i>=0&&i0?1:-1}(n,o,r,i,c),function(t,e,n,i,r,o,a,s,l,u){var h,c=l.valueDim,p=l.categoryDim,d=Math.abs(n[p.wh]),f=t.getItemVisual(e,"symbolSize");h=Y(f)?f.slice():null==f?["100%","100%"]:[f,f];h[p.index]=Ur(h[p.index],d),h[c.index]=Ur(h[c.index],i?d:Math.abs(o)),u.symbolSize=h;var g=u.symbolScale=[h[0]/s,h[1]/s];g[c.index]*=(l.isHorizontal?-1:1)*a}(t,e,r,o,0,c.boundingLength,c.pxSign,u,i,c),function(t,e,n,i,r){var o=t.get(iO)||0;o&&(oO.attr({scaleX:e[0],scaleY:e[1],rotation:n}),oO.updateTransform(),o/=oO.getLineScale(),o*=e[i.valueDim.index]);r.valueLineWidth=o||0}(n,c.symbolScale,l,i,c);var p=c.symbolSize,d=Yy(n.get("symbolOffset"),p);return function(t,e,n,i,r,o,a,s,l,u,h,c){var p=h.categoryDim,d=h.valueDim,f=c.pxSign,g=Math.max(e[d.index]+s,0),y=g;if(i){var v=Math.abs(l),m=it(t.get("symbolMargin"),"15%")+"",x=!1;m.lastIndexOf("!")===m.length-1&&(x=!0,m=m.slice(0,m.length-1));var _=Ur(m,e[d.index]),b=Math.max(g+2*_,0),w=x?0:2*_,S=co(i),M=S?i:SO((v+w)/b);b=g+2*(_=(v-M*g)/2/(x?M:Math.max(M-1,1))),w=x?0:2*_,S||"fixed"===i||(M=u?SO((Math.abs(u)+w)/b):0),y=M*b-w,c.repeatTimes=M,c.symbolMargin=_}var I=f*(y/2),T=c.pathPosition=[];T[p.index]=n[p.wh]/2,T[d.index]="start"===a?I:"end"===a?l-I:l/2,o&&(T[0]+=o[0],T[1]+=o[1]);var C=c.bundlePosition=[];C[p.index]=n[p.xy],C[d.index]=n[d.xy];var D=c.barRectShape=A({},n);D[d.wh]=f*Math.max(Math.abs(n[d.wh]),Math.abs(T[d.index]+I)),D[p.wh]=n[p.wh];var k=c.clipShape={};k[p.xy]=-n[p.xy],k[p.wh]=h.ecSize[p.wh],k[d.xy]=0,k[d.wh]=n[d.wh]}(n,p,r,o,0,d,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,i,c),c}function lO(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function uO(t){var e=t.symbolPatternSize,n=Wy(t.symbolType,-e/2,-e/2,e,e);return n.attr({culling:!0}),"image"!==n.type&&n.setStyle({strokeNoScale:!0}),n}function hO(t,e,n,i){var r=t.__pictorialBundle,o=n.symbolSize,a=n.valueLineWidth,s=n.pathPosition,l=e.valueDim,u=n.repeatTimes||0,h=0,c=o[e.valueDim.index]+a+2*n.symbolMargin;for(_O(t,(function(t){t.__pictorialAnimationIndex=h,t.__pictorialRepeatTimes=u,h0:i<0)&&(r=u-1-t),e[l.index]=c*(r-u/2+.5)+s[l.index],{x:e[0],y:e[1],scaleX:n.symbolScale[0],scaleY:n.symbolScale[1],rotation:n.rotation}}}function cO(t,e,n,i){var r=t.__pictorialBundle,o=t.__pictorialMainPath;o?bO(o,null,{x:n.pathPosition[0],y:n.pathPosition[1],scaleX:n.symbolScale[0],scaleY:n.symbolScale[1],rotation:n.rotation},n,i):(o=t.__pictorialMainPath=uO(n),r.add(o),bO(o,{x:n.pathPosition[0],y:n.pathPosition[1],scaleX:0,scaleY:0,rotation:n.rotation},{scaleX:n.symbolScale[0],scaleY:n.symbolScale[1]},n,i))}function pO(t,e,n){var i=A({},e.barRectShape),r=t.__pictorialBarRect;r?bO(r,null,{shape:i},e,n):((r=t.__pictorialBarRect=new zs({z2:2,shape:i,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}})).disableMorphing=!0,t.add(r))}function dO(t,e,n,i){if(n.symbolClip){var r=t.__pictorialClipPath,o=A({},n.clipShape),a=e.valueDim,s=n.animationModel,l=n.dataIndex;if(r)fh(r,{shape:o},s,l);else{o[a.wh]=0,r=new zs({shape:o}),t.__pictorialBundle.setClipPath(r),t.__pictorialClipPath=r;var u={};u[a.wh]=n.clipShape[a.wh],Kh[i?"updateProps":"initProps"](r,{shape:u},s,l)}}}function fO(t,e){var n=t.getItemModel(e);return n.getAnimationDelayParams=gO,n.isAnimationEnabled=yO,n}function gO(t){return{index:t.__pictorialAnimationIndex,count:t.__pictorialRepeatTimes}}function yO(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function vO(t,e,n,i){var r=new zr,o=new zr;return r.add(o),r.__pictorialBundle=o,o.x=n.bundlePosition[0],o.y=n.bundlePosition[1],n.symbolRepeat?hO(r,e,n):cO(r,0,n),pO(r,n,i),dO(r,e,n,i),r.__pictorialShapeStr=xO(t,n),r.__pictorialSymbolMeta=n,r}function mO(t,e,n,i){var r=i.__pictorialBarRect;r&&r.removeTextContent();var o=[];_O(i,(function(t){o.push(t)})),i.__pictorialMainPath&&o.push(i.__pictorialMainPath),i.__pictorialClipPath&&(n=null),E(o,(function(t){vh(t,{scaleX:0,scaleY:0},n,e,(function(){i.parent&&i.parent.remove(i)}))})),t.setItemGraphicEl(e,null)}function xO(t,e){return[t.getItemVisual(e.dataIndex,"symbol")||"none",!!e.symbolRepeat,!!e.symbolClip].join(":")}function _O(t,e,n){E(t.__pictorialBundle.children(),(function(i){i!==t.__pictorialBarRect&&e.call(n,i)}))}function bO(t,e,n,i,r,o){e&&t.attr(e),i.symbolClip&&!r?n&&t.attr(n):n&&Kh[r?"updateProps":"initProps"](t,n,i.animationModel,i.dataIndex,o)}function wO(t,e,n){var i=n.dataIndex,r=n.itemModel,o=r.getModel("emphasis"),a=o.getModel("itemStyle").getItemStyle(),s=r.getModel(["blur","itemStyle"]).getItemStyle(),l=r.getModel(["select","itemStyle"]).getItemStyle(),u=r.getShallow("cursor"),h=o.get("focus"),c=o.get("blurScope"),p=o.get("scale");_O(t,(function(t){if(t instanceof ks){var e=t.style;t.useStyle(A({image:e.image,x:e.x,y:e.y,width:e.width,height:e.height},n.style))}else t.useStyle(n.style);var i=t.ensureState("emphasis");i.style=a,p&&(i.scaleX=1.1*t.scaleX,i.scaleY=1.1*t.scaleY),t.ensureState("blur").style=s,t.ensureState("select").style=l,u&&(t.cursor=u),t.z2=n.z2}));var d=e.valueDim.posDesc[+(n.boundingLength>0)];tc(t.__pictorialBarRect,ec(r),{labelFetcher:e.seriesModel,labelDataIndex:i,defaultText:iS(e.seriesModel.getData(),i),inheritColor:n.style.fill,defaultOpacity:n.style.opacity,defaultOutsidePosition:d}),Yl(t,h,c,o.get("disabled"))}function SO(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}var MO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n.defaultSymbol="roundRect",n}return n(e,t),e.prototype.getInitialData=function(e){return e.stack=null,t.prototype.getInitialData.apply(this,arguments)},e.type="series.pictorialBar",e.dependencies=["grid"],e.defaultOption=Cc(FS.defaultOption,{symbol:"circle",symbolSize:null,symbolRotate:null,symbolPosition:null,symbolOffset:null,symbolMargin:null,symbolRepeat:!1,symbolRepeatDirection:"end",symbolClip:!1,symbolBoundingData:null,symbolPatternSize:400,barGap:"-100%",progressive:0,emphasis:{scale:!1},select:{itemStyle:{borderColor:"#212121"}}}),e}(FS);var IO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._layers=[],n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this,o=this.group,a=t.getLayerSeries(),s=i.getLayout("layoutInfo"),l=s.rect,u=s.boundaryGap;function h(t){return t.name}o.x=0,o.y=l.y+u[0];var c=new Vm(this._layersSeries||[],a,h,h),p=[];function d(e,n,s){var l=r._layers;if("remove"!==e){for(var u,h,c=[],d=[],f=a[n].indices,g=0;go&&(o=s),i.push(s)}for(var u=0;uo&&(o=c)}return{y0:r,max:o}}(l),h=u.y0,c=n/u.max,p=o.length,d=o[0].indices.length,f=0;fMath.PI/2?"right":"left"):S&&"center"!==S?"left"===S?(m=r.r0+w,a>Math.PI/2&&(S="right")):"right"===S&&(m=r.r-w,a>Math.PI/2&&(S="left")):(m=o===2*Math.PI&&0===r.r0?0:(r.r+r.r0)/2,S="center"),g.style.align=S,g.style.verticalAlign=f(p,"verticalAlign")||"middle",g.x=m*s+r.cx,g.y=m*l+r.cy;var M=f(p,"rotate"),I=0;"radial"===M?(I=hs(-a))>Math.PI/2&&I<1.5*Math.PI&&(I+=Math.PI):"tangential"===M?(I=Math.PI/2-a)>Math.PI/2?I-=Math.PI:I<-Math.PI/2&&(I+=Math.PI):j(M)&&(I=M*Math.PI/180),g.rotation=hs(I)})),h.dirtyStyle()},e}(zu),kO="sunburstRootToNode",LO="sunburstHighlight";var PO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){var r=this;this.seriesModel=t,this.api=n,this.ecModel=e;var o=t.getData(),a=o.tree.root,s=t.getViewRoot(),l=this.group,u=t.get("renderLabelForZeroData"),h=[];s.eachNode((function(t){h.push(t)}));var c=this._oldChildren||[];!function(i,r){if(0===i.length&&0===r.length)return;function s(t){return t.getId()}function h(s,h){!function(i,r){u||!i||i.getValue()||(i=null);if(i!==a&&r!==a)if(r&&r.piece)i?(r.piece.updateData(!1,i,t,e,n),o.setItemGraphicEl(i.dataIndex,r.piece)):function(t){if(!t)return;t.piece&&(l.remove(t.piece),t.piece=null)}(r);else if(i){var s=new AO(i,t,e,n);l.add(s),o.setItemGraphicEl(i.dataIndex,s)}}(null==s?null:i[s],null==h?null:r[h])}new Vm(r,i,s,s).add(h).update(h).remove(H(h,null)).execute()}(h,c),function(i,o){o.depth>0?(r.virtualPiece?r.virtualPiece.updateData(!1,i,t,e,n):(r.virtualPiece=new AO(i,t,e,n),l.add(r.virtualPiece)),o.piece.off("click"),r.virtualPiece.on("click",(function(t){r._rootToNode(o.parentNode)}))):r.virtualPiece&&(l.remove(r.virtualPiece),r.virtualPiece=null)}(a,s),this._initEvents(),this._oldChildren=h},e.prototype._initEvents=function(){var t=this;this.group.off("click"),this.group.on("click",(function(e){var n=!1;t.seriesModel.getViewRoot().eachNode((function(i){if(!n&&i.piece&&i.piece===e.target){var r=i.getModel().get("nodeClick");if("rootToNode"===r)t._rootToNode(i);else if("link"===r){var o=i.getModel(),a=o.get("link");if(a)bp(a,o.get("target",!0)||"_blank")}n=!0}}))}))},e.prototype._rootToNode=function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:kO,from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},e.prototype.containPoint=function(t,e){var n=e.getData().getItemLayout(0);if(n){var i=t[0]-n.cx,r=t[1]-n.cy,o=Math.sqrt(i*i+r*r);return o<=n.r&&o>=n.r0}},e.type="sunburst",e}(kg),OO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.ignoreStyleOnData=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){var n={name:t.name,children:t.data};RO(n);var i=this._levelModels=z(t.levels||[],(function(t){return new Mc(t,this,e)}),this),r=UC.createTree(n,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=r.getNodeByDataIndex(e),o=i[n.depth];return o&&(t.parentModel=o),t}))}));return r.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treePathInfo=KC(i,this),n},e.prototype.getLevelModel=function(t){return this._levelModels&&this._levelModels[t.depth]},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)},e.prototype.enableAriaDecal=function(){nD(this)},e.type="series.sunburst",e.defaultOption={z:2,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,stillShowZeroSum:!0,nodeClick:"rootToNode",renderLabelForZeroData:!1,label:{rotate:"radial",show:!0,opacity:1,align:"center",position:"inside",distance:5,silent:!0},itemStyle:{borderWidth:1,borderColor:"white",borderType:"solid",shadowBlur:0,shadowColor:"rgba(0, 0, 0, 0.2)",shadowOffsetX:0,shadowOffsetY:0,opacity:1},emphasis:{focus:"descendant"},blur:{itemStyle:{opacity:.2},label:{opacity:.1}},animationType:"expansion",animationDuration:1e3,animationDurationUpdate:500,data:[],sort:"desc"},e}(mg);function RO(t){var e=0;E(t.children,(function(t){RO(t);var n=t.value;Y(n)&&(n=n[0]),e+=n}));var n=t.value;Y(n)&&(n=n[0]),(null==n||isNaN(n))&&(n=e),n<0&&(n=0),Y(t.value)?t.value[0]=n:t.value=n}var NO=Math.PI/180;function EO(t,e,n){e.eachSeriesByType(t,(function(t){var e=t.get("center"),i=t.get("radius");Y(i)||(i=[0,i]),Y(e)||(e=[e,e]);var r=n.getWidth(),o=n.getHeight(),a=Math.min(r,o),s=Ur(e[0],r),l=Ur(e[1],o),u=Ur(i[0],a/2),h=Ur(i[1],a/2),c=-t.get("startAngle")*NO,p=t.get("minAngle")*NO,d=t.getData().tree.root,f=t.getViewRoot(),g=f.depth,y=t.get("sort");null!=y&&zO(f,y);var v=0;E(f.children,(function(t){!isNaN(t.getValue())&&v++}));var m=f.getValue(),x=Math.PI/(m||v)*2,_=f.depth>0,b=f.height-(_?-1:1),w=(h-u)/(b||1),S=t.get("clockwise"),M=t.get("stillShowZeroSum"),I=S?1:-1,T=function(e,n){if(e){var i=n;if(e!==d){var r=e.getValue(),o=0===m&&M?x:r*x;o1;)r=r.parentNode;var o=n.getColorFromPalette(r.name||r.dataIndex+"",e);return t.depth>1&&U(o)&&(o=$n(o,(t.depth-1)/(i-1)*.5)),o}(r,t,i.root.height)),A(n.ensureUniqueItemVisual(r.dataIndex,"style"),o)}))}))}var BO={color:"fill",borderColor:"stroke"},FO={symbol:1,symbolSize:1,symbolKeepAspect:1,legendIcon:1,visualMeta:1,liftZ:1,decal:1},GO=Oo(),WO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(){this.currentZLevel=this.get("zlevel",!0),this.currentZ=this.get("z",!0)},e.prototype.getInitialData=function(t,e){return vx(null,this)},e.prototype.getDataParams=function(e,n,i){var r=t.prototype.getDataParams.call(this,e,n);return i&&(r.info=GO(i).info),r},e.type="series.custom",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,clip:!1},e}(mg);function HO(t,e){return e=e||[0,0],z(["x","y"],(function(n,i){var r=this.getAxis(n),o=e[i],a=t[i]/2;return"category"===r.type?r.getBandWidth():Math.abs(r.dataToCoord(o-a)-r.dataToCoord(o+a))}),this)}function YO(t,e){return e=e||[0,0],z([0,1],(function(n){var i=e[n],r=t[n]/2,o=[],a=[];return o[n]=i-r,a[n]=i+r,o[1-n]=a[1-n]=e[1-n],Math.abs(this.dataToPoint(o)[n]-this.dataToPoint(a)[n])}),this)}function XO(t,e){var n=this.getAxis(),i=e instanceof Array?e[0]:e,r=(t instanceof Array?t[0]:t)/2;return"category"===n.type?n.getBandWidth():Math.abs(n.dataToCoord(i-r)-n.dataToCoord(i+r))}function UO(t,e){return e=e||[0,0],z(["Radius","Angle"],(function(n,i){var r=this["get"+n+"Axis"](),o=e[i],a=t[i]/2,s="category"===r.type?r.getBandWidth():Math.abs(r.dataToCoord(o-a)-r.dataToCoord(o+a));return"Angle"===n&&(s=s*Math.PI/180),s}),this)}function ZO(t,e,n,i){return t&&(t.legacy||!1!==t.legacy&&!n&&!i&&"tspan"!==e&&("text"===e||_t(t,"text")))}function jO(t,e,n){var i,r,o,a=t;if("text"===e)o=a;else{o={},_t(a,"text")&&(o.text=a.text),_t(a,"rich")&&(o.rich=a.rich),_t(a,"textFill")&&(o.fill=a.textFill),_t(a,"textStroke")&&(o.stroke=a.textStroke),_t(a,"fontFamily")&&(o.fontFamily=a.fontFamily),_t(a,"fontSize")&&(o.fontSize=a.fontSize),_t(a,"fontStyle")&&(o.fontStyle=a.fontStyle),_t(a,"fontWeight")&&(o.fontWeight=a.fontWeight),r={type:"text",style:o,silent:!0},i={};var s=_t(a,"textPosition");n?i.position=s?a.textPosition:"inside":s&&(i.position=a.textPosition),_t(a,"textPosition")&&(i.position=a.textPosition),_t(a,"textOffset")&&(i.offset=a.textOffset),_t(a,"textRotation")&&(i.rotation=a.textRotation),_t(a,"textDistance")&&(i.distance=a.textDistance)}return qO(o,t),E(o.rich,(function(t){qO(t,t)})),{textConfig:i,textContent:r}}function qO(t,e){e&&(e.font=e.textFont||e.font,_t(e,"textStrokeWidth")&&(t.lineWidth=e.textStrokeWidth),_t(e,"textAlign")&&(t.align=e.textAlign),_t(e,"textVerticalAlign")&&(t.verticalAlign=e.textVerticalAlign),_t(e,"textLineHeight")&&(t.lineHeight=e.textLineHeight),_t(e,"textWidth")&&(t.width=e.textWidth),_t(e,"textHeight")&&(t.height=e.textHeight),_t(e,"textBackgroundColor")&&(t.backgroundColor=e.textBackgroundColor),_t(e,"textPadding")&&(t.padding=e.textPadding),_t(e,"textBorderColor")&&(t.borderColor=e.textBorderColor),_t(e,"textBorderWidth")&&(t.borderWidth=e.textBorderWidth),_t(e,"textBorderRadius")&&(t.borderRadius=e.textBorderRadius),_t(e,"textBoxShadowColor")&&(t.shadowColor=e.textBoxShadowColor),_t(e,"textBoxShadowBlur")&&(t.shadowBlur=e.textBoxShadowBlur),_t(e,"textBoxShadowOffsetX")&&(t.shadowOffsetX=e.textBoxShadowOffsetX),_t(e,"textBoxShadowOffsetY")&&(t.shadowOffsetY=e.textBoxShadowOffsetY))}function KO(t,e,n){var i=t;i.textPosition=i.textPosition||n.position||"inside",null!=n.offset&&(i.textOffset=n.offset),null!=n.rotation&&(i.textRotation=n.rotation),null!=n.distance&&(i.textDistance=n.distance);var r=i.textPosition.indexOf("inside")>=0,o=t.fill||"#000";$O(i,e);var a=null==i.textFill;return r?a&&(i.textFill=n.insideFill||"#fff",!i.textStroke&&n.insideStroke&&(i.textStroke=n.insideStroke),!i.textStroke&&(i.textStroke=o),null==i.textStrokeWidth&&(i.textStrokeWidth=2)):(a&&(i.textFill=t.fill||n.outsideFill||"#000"),!i.textStroke&&n.outsideStroke&&(i.textStroke=n.outsideStroke)),i.text=e.text,i.rich=e.rich,E(e.rich,(function(t){$O(t,t)})),i}function $O(t,e){e&&(_t(e,"fill")&&(t.textFill=e.fill),_t(e,"stroke")&&(t.textStroke=e.fill),_t(e,"lineWidth")&&(t.textStrokeWidth=e.lineWidth),_t(e,"font")&&(t.font=e.font),_t(e,"fontStyle")&&(t.fontStyle=e.fontStyle),_t(e,"fontWeight")&&(t.fontWeight=e.fontWeight),_t(e,"fontSize")&&(t.fontSize=e.fontSize),_t(e,"fontFamily")&&(t.fontFamily=e.fontFamily),_t(e,"align")&&(t.textAlign=e.align),_t(e,"verticalAlign")&&(t.textVerticalAlign=e.verticalAlign),_t(e,"lineHeight")&&(t.textLineHeight=e.lineHeight),_t(e,"width")&&(t.textWidth=e.width),_t(e,"height")&&(t.textHeight=e.height),_t(e,"backgroundColor")&&(t.textBackgroundColor=e.backgroundColor),_t(e,"padding")&&(t.textPadding=e.padding),_t(e,"borderColor")&&(t.textBorderColor=e.borderColor),_t(e,"borderWidth")&&(t.textBorderWidth=e.borderWidth),_t(e,"borderRadius")&&(t.textBorderRadius=e.borderRadius),_t(e,"shadowColor")&&(t.textBoxShadowColor=e.shadowColor),_t(e,"shadowBlur")&&(t.textBoxShadowBlur=e.shadowBlur),_t(e,"shadowOffsetX")&&(t.textBoxShadowOffsetX=e.shadowOffsetX),_t(e,"shadowOffsetY")&&(t.textBoxShadowOffsetY=e.shadowOffsetY),_t(e,"textShadowColor")&&(t.textShadowColor=e.textShadowColor),_t(e,"textShadowBlur")&&(t.textShadowBlur=e.textShadowBlur),_t(e,"textShadowOffsetX")&&(t.textShadowOffsetX=e.textShadowOffsetX),_t(e,"textShadowOffsetY")&&(t.textShadowOffsetY=e.textShadowOffsetY))}var JO={position:["x","y"],scale:["scaleX","scaleY"],origin:["originX","originY"]},QO=G(JO),tR=(V(yr,(function(t,e){return t[e]=1,t}),{}),yr.join(", "),["","style","shape","extra"]),eR=Oo();function nR(t,e,n,i,r){var o=t+"Animation",a=ph(t,i,r)||{},s=eR(e).userDuring;return a.duration>0&&(a.during=s?W(uR,{el:e,userDuring:s}):null,a.setToFinal=!0,a.scope=t),A(a,n[o]),a}function iR(t,e,n,i){var r=(i=i||{}).dataIndex,o=i.isInit,a=i.clearStyle,s=n.isAnimationEnabled(),l=eR(t),u=e.style;l.userDuring=e.during;var h={},c={};if(function(t,e,n){for(var i=0;i=0)){var c=t.getAnimationStyleProps(),p=c?c.style:null;if(p){!r&&(r=i.style={});var d=G(n);for(u=0;u0&&t.animateFrom(p,d)}else!function(t,e,n,i,r){if(r){var o=nR("update",t,e,i,n);o.duration>0&&t.animateFrom(r,o)}}(t,e,r||0,n,h);rR(t,e),u?t.dirty():t.markRedraw()}function rR(t,e){for(var n=eR(t).leaveToProps,i=0;i=0){!o&&(o=i[t]={});var p=G(a);for(h=0;hi[1]&&i.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:i[1],r0:i[0]},api:{coord:function(i){var r=e.dataToRadius(i[0]),o=n.dataToAngle(i[1]),a=t.coordToPoint([r,o]);return a.push(r,o*Math.PI/180),a},size:W(UO,t)}}},calendar:function(t){var e=t.getRect(),n=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:n.start,end:n.end,weeks:n.weeks,dayCount:n.allDay}},api:{coord:function(e,n){return t.dataToPoint(e,n)}}}}};function CR(t){return t instanceof Is}function DR(t){return t instanceof Sa}var AR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){this._progressiveEls=null;var r=this._data,o=t.getData(),a=this.group,s=RR(t,o,e,n);r||a.removeAll(),o.diff(r).add((function(e){ER(n,null,e,s(e,i),t,a,o)})).remove((function(e){var n=r.getItemGraphicEl(e);n&&oR(n,GO(n).option,t)})).update((function(e,l){var u=r.getItemGraphicEl(l);ER(n,u,e,s(e,i),t,a,o)})).execute();var l=t.get("clip",!0)?SS(t.coordinateSystem,!1,t):null;l?a.setClipPath(l):a.removeClipPath(),this._data=o},e.prototype.incrementalPrepareRender=function(t,e,n){this.group.removeAll(),this._data=null},e.prototype.incrementalRender=function(t,e,n,i,r){var o=e.getData(),a=RR(e,o,n,i),s=this._progressiveEls=[];function l(t){t.isGroup||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}for(var u=t.start;u=0?e.getStore().get(r,n):void 0}var o=e.get(i.name,n),a=i&&i.ordinalMeta;return a?a.categories[o]:o},styleEmphasis:function(n,i){0;null==i&&(i=s);var r=m(i,vR).getItemStyle(),o=x(i,vR),a=nc(o,null,null,!0,!0);a.text=o.getShallow("show")?ot(t.getFormattedLabel(i,vR),t.getFormattedLabel(i,mR),iS(e,i)):null;var l=ic(o,null,!0);return b(n,r),r=KO(r,a,l),n&&_(r,n),r.legacy=!0,r},visual:function(t,n){if(null==n&&(n=s),_t(BO,t)){var i=e.getItemVisual(n,"style");return i?i[BO[t]]:null}if(_t(FO,t))return e.getItemVisual(n,t)},barLayout:function(t){if("cartesian2d"===o.type){return function(t){var e=[],n=t.axis,i="axis0";if("category"===n.type){for(var r=n.getBandWidth(),o=0;o=c;f--){var g=e.childAt(f);WR(e,g,r)}}(t,c,n,i,r),a>=0?o.replaceAt(c,a):o.add(c),c}function VR(t,e,n){var i,r=GO(t),o=e.type,a=e.shape,s=e.style;return n.isUniversalTransitionEnabled()||null!=o&&o!==r.customGraphicType||"path"===o&&((i=a)&&(_t(i,"pathData")||_t(i,"d")))&&UR(a)!==r.customPathData||"image"===o&&_t(s,"image")&&s.image!==r.customImagePath}function BR(t,e,n){var i=e?FR(t,e):t,r=e?GR(t,i,vR):t.style,o=t.type,a=i?i.textConfig:null,s=t.textContent,l=s?e?FR(s,e):s:null;if(r&&(n.isLegacy||ZO(r,o,!!a,!!l))){n.isLegacy=!0;var u=jO(r,o,!e);!a&&u.textConfig&&(a=u.textConfig),!l&&u.textContent&&(l=u.textContent)}if(!e&&l){var h=l;!h.type&&(h.type="text")}var c=e?n[e]:n.normal;c.cfg=a,c.conOpt=l}function FR(t,e){return e?t?t[e]:null:t}function GR(t,e,n){var i=e&&e.style;return null==i&&n===vR&&t&&(i=t.styleEmphasis),i}function WR(t,e,n){e&&oR(e,GO(t).option,n)}function HR(t,e){var n=t&&t.name;return null!=n?n:"e\0\0"+e}function YR(t,e){var n=this.context,i=null!=t?n.newChildren[t]:null,r=null!=e?n.oldChildren[e]:null;zR(n.api,r,n.dataIndex,i,n.seriesModel,n.group)}function XR(t){var e=this.context,n=e.oldChildren[t];n&&oR(n,GO(n).option,e.seriesModel)}function UR(t){return t&&(t.pathData||t.d)}var ZR=Oo(),jR=T,qR=W,KR=function(){function t(){this._dragging=!1,this.animationThreshold=15}return t.prototype.render=function(t,e,n,i){var r=e.get("value"),o=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=n,i||this._lastValue!==r||this._lastStatus!==o){this._lastValue=r,this._lastStatus=o;var a=this._group,s=this._handle;if(!o||"hide"===o)return a&&a.hide(),void(s&&s.hide());a&&a.show(),s&&s.show();var l={};this.makeElOption(l,r,t,e,n);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(n),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(a){var c=H($R,e,h);this.updatePointerEl(a,l,c),this.updateLabelEl(a,l,c,e)}else a=this._group=new zr,this.createPointerEl(a,l,t,e),this.createLabelEl(a,l,t,e),n.getZr().add(a);eN(a,e,!0),this._renderHandle(r)}},t.prototype.remove=function(t){this.clear(t)},t.prototype.dispose=function(t){this.clear(t)},t.prototype.determineAnimation=function(t,e){var n=e.get("animation"),i=t.axis,r="category"===i.type,o=e.get("snap");if(!o&&!r)return!1;if("auto"===n||null==n){var a=this.animationThreshold;if(r&&i.getBandWidth()>a)return!0;if(o){var s=pI(t).seriesDataCount,l=i.getExtent();return Math.abs(l[0]-l[1])/s>a}return!1}return!0===n},t.prototype.makeElOption=function(t,e,n,i,r){},t.prototype.createPointerEl=function(t,e,n,i){var r=e.pointer;if(r){var o=ZR(t).pointerEl=new Kh[r.type](jR(e.pointer));t.add(o)}},t.prototype.createLabelEl=function(t,e,n,i){if(e.label){var r=ZR(t).labelEl=new Fs(jR(e.label));t.add(r),QR(r,i)}},t.prototype.updatePointerEl=function(t,e,n){var i=ZR(t).pointerEl;i&&e.pointer&&(i.setStyle(e.pointer.style),n(i,{shape:e.pointer.shape}))},t.prototype.updateLabelEl=function(t,e,n,i){var r=ZR(t).labelEl;r&&(r.setStyle(e.label.style),n(r,{x:e.label.x,y:e.label.y}),QR(r,i))},t.prototype._renderHandle=function(t){if(!this._dragging&&this.updateHandleTransform){var e,n=this._axisPointerModel,i=this._api.getZr(),r=this._handle,o=n.getModel("handle"),a=n.get("status");if(!o.get("show")||!a||"hide"===a)return r&&i.remove(r),void(this._handle=null);this._handle||(e=!0,r=this._handle=Hh(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){de(t.event)},onmousedown:qR(this._onHandleDragMove,this,0,0),drift:qR(this._onHandleDragMove,this),ondragend:qR(this._onHandleDragEnd,this)}),i.add(r)),eN(r,n,!1),r.setStyle(o.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var s=o.get("size");Y(s)||(s=[s,s]),r.scaleX=s[0]/2,r.scaleY=s[1]/2,Fg(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,e)}},t.prototype._moveHandleToValue=function(t,e){$R(this._axisPointerModel,!e&&this._moveAnimation,this._handle,tN(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},t.prototype._onHandleDragMove=function(t,e){var n=this._handle;if(n){this._dragging=!0;var i=this.updateHandleTransform(tN(n),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=i,n.stopAnimation(),n.attr(tN(i)),ZR(n).lastProp=null,this._doDispatchAxisPointer()}},t.prototype._doDispatchAxisPointer=function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},t.prototype._onHandleDragEnd=function(){if(this._dragging=!1,this._handle){var t=this._axisPointerModel.get("value");this._moveHandleToValue(t),this._api.dispatchAction({type:"hideTip"})}},t.prototype.clear=function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),n=this._group,i=this._handle;e&&n&&(this._lastGraphicKey=null,n&&e.remove(n),i&&e.remove(i),this._group=null,this._handle=null,this._payloadInfo=null),Gg(this,"_doDispatchAxisPointer")},t.prototype.doClear=function(){},t.prototype.buildLabel=function(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}},t}();function $R(t,e,n,i){JR(ZR(n).lastProp,i)||(ZR(n).lastProp=i,e?fh(n,i,t):(n.stopAnimation(),n.attr(i)))}function JR(t,e){if(q(t)&&q(e)){var n=!0;return E(e,(function(e,i){n=n&&JR(t[i],e)})),!!n}return t===e}function QR(t,e){t[e.get(["label","show"])?"show":"hide"]()}function tN(t){return{x:t.x||0,y:t.y||0,rotation:t.rotation||0}}function eN(t,e,n){var i=e.get("z"),r=e.get("zlevel");t&&t.traverse((function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=r&&(t.zlevel=r),t.silent=n)}))}function nN(t){var e,n=t.get("type"),i=t.getModel(n+"Style");return"line"===n?(e=i.getLineStyle()).fill=null:"shadow"===n&&((e=i.getAreaStyle()).stroke=null),e}function iN(t,e,n,i,r){var o=rN(n.get("value"),e.axis,e.ecModel,n.get("seriesDataIndices"),{precision:n.get(["label","precision"]),formatter:n.get(["label","formatter"])}),a=n.getModel("label"),s=fp(a.get("padding")||0),l=a.getFont(),u=br(o,l),h=r.position,c=u.width+s[1]+s[3],p=u.height+s[0]+s[2],d=r.align;"right"===d&&(h[0]-=c),"center"===d&&(h[0]-=c/2);var f=r.verticalAlign;"bottom"===f&&(h[1]-=p),"middle"===f&&(h[1]-=p/2),function(t,e,n,i){var r=i.getWidth(),o=i.getHeight();t[0]=Math.min(t[0]+e,r)-e,t[1]=Math.min(t[1]+n,o)-n,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}(h,c,p,i);var g=a.get("backgroundColor");g&&"auto"!==g||(g=e.get(["axisLine","lineStyle","color"])),t.label={x:h[0],y:h[1],style:nc(a,{text:o,font:l,fill:a.getTextColor(),padding:s,backgroundColor:g}),z2:10}}function rN(t,e,n,i,r){t=e.scale.parse(t);var o=e.scale.getLabel({value:t},{precision:r.precision}),a=r.formatter;if(a){var s={value:__(e,{value:t}),axisDimension:e.dim,axisIndex:e.index,seriesData:[]};E(i,(function(t){var e=n.getSeriesByIndex(t.seriesIndex),i=t.dataIndexInside,r=e&&e.getDataParams(i);r&&s.seriesData.push(r)})),U(a)?o=a.replace("{value}",o):X(a)&&(o=a(s))}return o}function oN(t,e,n){var i=[1,0,0,1,0,0];return Se(i,i,n.rotation),we(i,i,n.position),zh([t.dataToCoord(e),(n.labelOffset||0)+(n.labelDirection||1)*(n.labelMargin||0)],i)}function aN(t,e,n,i,r,o){var a=iI.innerTextLayout(n.rotation,0,n.labelDirection);n.labelMargin=r.get(["label","margin"]),iN(e,i,r,o,{position:oN(i.axis,t,n),align:a.textAlign,verticalAlign:a.textVerticalAlign})}function sN(t,e,n){return{x1:t[n=n||0],y1:t[1-n],x2:e[n],y2:e[1-n]}}function lN(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}}function uN(t,e,n,i,r,o){return{cx:t,cy:e,r0:n,r:i,startAngle:r,endAngle:o,clockwise:!0}}var hN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis,a=o.grid,s=i.get("type"),l=cN(a,o).getOtherAxis(o).getGlobalExtent(),u=o.toGlobalCoord(o.dataToCoord(e,!0));if(s&&"none"!==s){var h=nN(i),c=pN[s](o,u,l);c.style=h,t.graphicKey=c.type,t.pointer=c}aN(e,t,ZM(a.model,n),n,i,r)},e.prototype.getHandleTransform=function(t,e,n){var i=ZM(e.axis.grid.model,e,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var r=oN(e.axis,t,i);return{x:r[0],y:r[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,e,n,i){var r=n.axis,o=r.grid,a=r.getGlobalExtent(!0),s=cN(o,r).getOtherAxis(r).getGlobalExtent(),l="x"===r.dim?0:1,u=[t.x,t.y];u[l]+=e[l],u[l]=Math.min(a[1],u[l]),u[l]=Math.max(a[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];return{x:u[0],y:u[1],rotation:t.rotation,cursorPoint:c,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][l]}},e}(KR);function cN(t,e){var n={};return n[e.dim+"AxisIndex"]=e.index,t.getCartesian(n)}var pN={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:sN([e,n[0]],[e,n[1]],dN(t))}},shadow:function(t,e,n){var i=Math.max(1,t.getBandWidth()),r=n[1]-n[0];return{type:"Rect",shape:lN([e-i/2,n[0]],[i,r],dN(t))}}};function dN(t){return"x"===t.dim?0:1}var fN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="axisPointer",e.defaultOption={show:"auto",z:50,type:"line",snap:!1,triggerTooltip:!0,triggerEmphasis:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#B9BEC9",width:1,type:"dashed"},shadowStyle:{color:"rgba(210,219,238,0.2)"},label:{show:!0,formatter:null,precision:"auto",margin:3,color:"#fff",padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,borderRadius:3},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}},e}(Rp),gN=Oo(),yN=E;function vN(t,e,n){if(!r.node){var i=e.getZr();gN(i).records||(gN(i).records={}),function(t,e){if(gN(t).initialized)return;function n(n,i){t.on(n,(function(n){var r=function(t){var e={showTip:[],hideTip:[]},n=function(i){var r=e[i.type];r?r.push(i):(i.dispatchAction=n,t.dispatchAction(i))};return{dispatchAction:n,pendings:e}}(e);yN(gN(t).records,(function(t){t&&i(t,n,r.dispatchAction)})),function(t,e){var n,i=t.showTip.length,r=t.hideTip.length;i?n=t.showTip[i-1]:r&&(n=t.hideTip[r-1]);n&&(n.dispatchAction=null,e.dispatchAction(n))}(r.pendings,e)}))}gN(t).initialized=!0,n("click",H(xN,"click")),n("mousemove",H(xN,"mousemove")),n("globalout",mN)}(i,e),(gN(i).records[t]||(gN(i).records[t]={})).handler=n}}function mN(t,e,n){t.handler("leave",null,n)}function xN(t,e,n,i){e.handler(t,n,i)}function _N(t,e){if(!r.node){var n=e.getZr();(gN(n).records||{})[t]&&(gN(n).records[t]=null)}}var bN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=e.getComponent("tooltip"),r=t.get("triggerOn")||i&&i.get("triggerOn")||"mousemove|click";vN("axisPointer",n,(function(t,e,n){"none"!==r&&("leave"===t||r.indexOf(t)>=0)&&n({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})}))},e.prototype.remove=function(t,e){_N("axisPointer",e)},e.prototype.dispose=function(t,e){_N("axisPointer",e)},e.type="axisPointer",e}(Tg);function wN(t,e){var n,i=[],r=t.seriesIndex;if(null==r||!(n=e.getSeriesByIndex(r)))return{point:[]};var o=n.getData(),a=Po(o,t);if(null==a||a<0||Y(a))return{point:[]};var s=o.getItemGraphicEl(a),l=n.coordinateSystem;if(n.getTooltipPosition)i=n.getTooltipPosition(a)||[];else if(l&&l.dataToPoint)if(t.isStacked){var u=l.getBaseAxis(),h=l.getOtherAxis(u).dim,c=u.dim,p="x"===h||"radius"===h?1:0,d=o.mapDimension(c),f=[];f[p]=o.get(d,a),f[1-p]=o.get(o.getCalculationInfo("stackResultDimension"),a),i=l.dataToPoint(f)||[]}else i=l.dataToPoint(o.getValues(z(l.dimensions,(function(t){return o.mapDimension(t)})),a))||[];else if(s){var g=s.getBoundingRect().clone();g.applyTransform(s.transform),i=[g.x+g.width/2,g.y+g.height/2]}return{point:i,el:s}}var SN=Oo();function MN(t,e,n){var i=t.currTrigger,r=[t.x,t.y],o=t,a=t.dispatchAction||W(n.dispatchAction,n),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){AN(r)&&(r=wN({seriesIndex:o.seriesIndex,dataIndex:o.dataIndex},e).point);var l=AN(r),u=o.axesInfo,h=s.axesInfo,c="leave"===i||AN(r),p={},d={},f={list:[],map:{}},g={showPointer:H(TN,d),showTooltip:H(CN,f)};E(s.coordSysMap,(function(t,e){var n=l||t.containPoint(r);E(s.coordSysAxesInfo[e],(function(t,e){var i=t.axis,o=function(t,e){for(var n=0;n<(t||[]).length;n++){var i=t[n];if(e.axis.dim===i.axisDim&&e.axis.model.componentIndex===i.axisIndex)return i}}(u,t);if(!c&&n&&(!u||o)){var a=o&&o.value;null!=a||l||(a=i.pointToData(r)),null!=a&&IN(t,a,g,!1,p)}}))}));var y={};return E(h,(function(t,e){var n=t.linkGroup;n&&!d[e]&&E(n.axesInfo,(function(e,i){var r=d[i];if(e!==t&&r){var o=r.value;n.mapper&&(o=t.axis.scale.parse(n.mapper(o,DN(e),DN(t)))),y[t.key]=o}}))})),E(y,(function(t,e){IN(h[e],t,g,!0,p)})),function(t,e,n){var i=n.axesInfo=[];E(e,(function(e,n){var r=e.axisPointerModel.option,o=t[n];o?(!e.useHandle&&(r.status="show"),r.value=o.value,r.seriesDataIndices=(o.payloadBatch||[]).slice()):!e.useHandle&&(r.status="hide"),"show"===r.status&&i.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:r.value})}))}(d,h,p),function(t,e,n,i){if(AN(e)||!t.list.length)return void i({type:"hideTip"});var r=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};i({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:n.tooltipOption,position:n.position,dataIndexInside:r.dataIndexInside,dataIndex:r.dataIndex,seriesIndex:r.seriesIndex,dataByCoordSys:t.list})}(f,r,t,a),function(t,e,n){var i=n.getZr(),r="axisPointerLastHighlights",o=SN(i)[r]||{},a=SN(i)[r]={};E(t,(function(t,e){var n=t.axisPointerModel.option;"show"===n.status&&t.triggerEmphasis&&E(n.seriesDataIndices,(function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t}))}));var s=[],l=[];E(o,(function(t,e){!a[e]&&l.push(t)})),E(a,(function(t,e){!o[e]&&s.push(t)})),l.length&&n.dispatchAction({type:"downplay",escapeConnect:!0,notBlur:!0,batch:l}),s.length&&n.dispatchAction({type:"highlight",escapeConnect:!0,notBlur:!0,batch:s})}(h,0,n),p}}function IN(t,e,n,i,r){var o=t.axis;if(!o.scale.isBlank()&&o.containData(e))if(t.involveSeries){var a=function(t,e){var n=e.axis,i=n.dim,r=t,o=[],a=Number.MAX_VALUE,s=-1;return E(e.seriesModels,(function(e,l){var u,h,c=e.getData().mapDimensionsAll(i);if(e.getAxisTooltipData){var p=e.getAxisTooltipData(c,t,n);h=p.dataIndices,u=p.nestestValue}else{if(!(h=e.getData().indicesOfNearest(c[0],t,"category"===n.type?.5:null)).length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var d=t-u,f=Math.abs(d);f<=a&&((f=0&&s<0)&&(a=f,s=d,r=u,o.length=0),E(h,(function(t){o.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})})))}})),{payloadBatch:o,snapToValue:r}}(e,t),s=a.payloadBatch,l=a.snapToValue;s[0]&&null==r.seriesIndex&&A(r,s[0]),!i&&t.snap&&o.containData(l)&&null!=l&&(e=l),n.showPointer(t,e,s),n.showTooltip(t,a,l)}else n.showPointer(t,e)}function TN(t,e,n,i){t[e.key]={value:n,payloadBatch:i}}function CN(t,e,n,i){var r=n.payloadBatch,o=e.axis,a=o.model,s=e.axisPointerModel;if(e.triggerTooltip&&r.length){var l=e.coordSys.model,u=fI(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:o.dim,axisIndex:a.componentIndex,axisType:a.type,axisId:a.id,value:i,valueLabelOpt:{precision:s.get(["label","precision"]),formatter:s.get(["label","formatter"])},seriesDataIndices:r.slice()})}}function DN(t){var e=t.axis.model,n={},i=n.axisDim=t.axis.dim;return n.axisIndex=n[i+"AxisIndex"]=e.componentIndex,n.axisName=n[i+"AxisName"]=e.name,n.axisId=n[i+"AxisId"]=e.id,n}function AN(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function kN(t){yI.registerAxisPointerClass("CartesianAxisPointer",hN),t.registerComponentModel(fN),t.registerComponentView(bN),t.registerPreprocessor((function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!Y(e)&&(t.axisPointer.link=[e])}})),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,(function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=uI(t,e)})),t.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},MN)}var LN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis;"angle"===o.dim&&(this.animationThreshold=Math.PI/18);var a=o.polar,s=a.getOtherAxis(o).getExtent(),l=o.dataToCoord(e),u=i.get("type");if(u&&"none"!==u){var h=nN(i),c=PN[u](o,a,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}var p=function(t,e,n,i,r){var o=e.axis,a=o.dataToCoord(t),s=i.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=i.getRadiusAxis().getExtent();if("radius"===o.dim){var p=[1,0,0,1,0,0];Se(p,p,s),we(p,p,[i.cx,i.cy]),l=zh([a,-r],p);var d=e.getModel("axisLabel").get("rotate")||0,f=iI.innerTextLayout(s,d*Math.PI/180,-1);u=f.textAlign,h=f.textVerticalAlign}else{var g=c[1];l=i.coordToPoint([g+r,a]);var y=i.cx,v=i.cy;u=Math.abs(l[0]-y)/g<.3?"center":l[0]>y?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}(e,n,0,a,i.get(["label","margin"]));iN(t,n,i,r,p)},e}(KR);var PN={line:function(t,e,n,i){return"angle"===t.dim?{type:"Line",shape:sN(e.coordToPoint([i[0],n]),e.coordToPoint([i[1],n]))}:{type:"Circle",shape:{cx:e.cx,cy:e.cy,r:n}}},shadow:function(t,e,n,i){var r=Math.max(1,t.getBandWidth()),o=Math.PI/180;return"angle"===t.dim?{type:"Sector",shape:uN(e.cx,e.cy,i[0],i[1],(-n-r/2)*o,(r/2-n)*o)}:{type:"Sector",shape:uN(e.cx,e.cy,n-r/2,n+r/2,0,2*Math.PI)}}},ON=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.findAxisModel=function(t){var e;return this.ecModel.eachComponent(t,(function(t){t.getCoordSysModel()===this&&(e=t)}),this),e},e.type="polar",e.dependencies=["radiusAxis","angleAxis"],e.defaultOption={z:0,center:["50%","50%"],radius:"80%"},e}(Rp),RN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getCoordSysModel=function(){return this.getReferringComponents("polar",zo).models[0]},e.type="polarAxis",e}(Rp);R(RN,I_);var NN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="angleAxis",e}(RN),EN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="radiusAxis",e}(RN),zN=function(t){function e(e,n){return t.call(this,"radius",e,n)||this}return n(e,t),e.prototype.pointToData=function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},e}(nb);zN.prototype.dataToRadius=nb.prototype.dataToCoord,zN.prototype.radiusToData=nb.prototype.coordToData;var VN=Oo(),BN=function(t){function e(e,n){return t.call(this,"angle",e,n||[0,360])||this}return n(e,t),e.prototype.pointToData=function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},e.prototype.calculateCategoryInterval=function(){var t=this,e=t.getLabelModel(),n=t.scale,i=n.getExtent(),r=n.count();if(i[1]-i[0]<1)return 0;var o=i[0],a=t.dataToCoord(o+1)-t.dataToCoord(o),s=Math.abs(a),l=br(null==o?"":o+"",e.getFont(),"center","top"),u=Math.max(l.height,7)/s;isNaN(u)&&(u=1/0);var h=Math.max(0,Math.floor(u)),c=VN(t.model),p=c.lastAutoInterval,d=c.lastTickCount;return null!=p&&null!=d&&Math.abs(p-h)<=1&&Math.abs(d-r)<=1&&p>h?h=p:(c.lastTickCount=r,c.lastAutoInterval=h),h},e}(nb);BN.prototype.dataToAngle=nb.prototype.dataToCoord,BN.prototype.angleToData=nb.prototype.coordToData;var FN=["radius","angle"],GN=function(){function t(t){this.dimensions=FN,this.type="polar",this.cx=0,this.cy=0,this._radiusAxis=new zN,this._angleAxis=new BN,this.axisPointerEnabled=!0,this.name=t||"",this._radiusAxis.polar=this._angleAxis.polar=this}return t.prototype.containPoint=function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},t.prototype.containData=function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},t.prototype.getAxis=function(t){return this["_"+t+"Axis"]},t.prototype.getAxes=function(){return[this._radiusAxis,this._angleAxis]},t.prototype.getAxesByScale=function(t){var e=[],n=this._angleAxis,i=this._radiusAxis;return n.scale.type===t&&e.push(n),i.scale.type===t&&e.push(i),e},t.prototype.getAngleAxis=function(){return this._angleAxis},t.prototype.getRadiusAxis=function(){return this._radiusAxis},t.prototype.getOtherAxis=function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},t.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},t.prototype.getTooltipAxes=function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},t.prototype.dataToPoint=function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},t.prototype.pointToData=function(t,e){var n=this.pointToCoord(t);return[this._radiusAxis.radiusToData(n[0],e),this._angleAxis.angleToData(n[1],e)]},t.prototype.pointToCoord=function(t){var e=t[0]-this.cx,n=t[1]-this.cy,i=this.getAngleAxis(),r=i.getExtent(),o=Math.min(r[0],r[1]),a=Math.max(r[0],r[1]);i.inverse?o=a-360:a=o+360;var s=Math.sqrt(e*e+n*n);e/=s,n/=s;for(var l=Math.atan2(-n,e)/Math.PI*180,u=la;)l+=360*u;return[s,l]},t.prototype.coordToPoint=function(t){var e=t[0],n=t[1]/180*Math.PI;return[Math.cos(n)*e+this.cx,-Math.sin(n)*e+this.cy]},t.prototype.getArea=function(){var t=this.getAngleAxis(),e=this.getRadiusAxis().getExtent().slice();e[0]>e[1]&&e.reverse();var n=t.getExtent(),i=Math.PI/180;return{cx:this.cx,cy:this.cy,r0:e[0],r:e[1],startAngle:-n[0]*i,endAngle:-n[1]*i,clockwise:t.inverse,contain:function(t,e){var n=t-this.cx,i=e-this.cy,r=n*n+i*i-1e-4,o=this.r,a=this.r0;return r<=o*o&&r>=a*a}}},t.prototype.convertToPixel=function(t,e,n){return WN(e)===this?this.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){return WN(e)===this?this.pointToData(n):null},t}();function WN(t){var e=t.seriesModel,n=t.polarModel;return n&&n.coordinateSystem||e&&e.coordinateSystem}function HN(t,e){var n=this,i=n.getAngleAxis(),r=n.getRadiusAxis();if(i.scale.setExtent(1/0,-1/0),r.scale.setExtent(1/0,-1/0),t.eachSeries((function(t){if(t.coordinateSystem===n){var e=t.getData();E(M_(e,"radius"),(function(t){r.scale.unionExtentFromData(e,t)})),E(M_(e,"angle"),(function(t){i.scale.unionExtentFromData(e,t)}))}})),v_(i.scale,i.model),v_(r.scale,r.model),"category"===i.type&&!i.onBand){var o=i.getExtent(),a=360/i.scale.count();i.inverse?o[1]+=a:o[1]-=a,i.setExtent(o[0],o[1])}}function YN(t,e){if(t.type=e.get("type"),t.scale=m_(e),t.onBand=e.get("boundaryGap")&&"category"===t.type,t.inverse=e.get("inverse"),function(t){return"angleAxis"===t.mainType}(e)){t.inverse=t.inverse!==e.get("clockwise");var n=e.get("startAngle");t.setExtent(n,n+(t.inverse?-360:360))}e.axis=t,t.model=e}var XN={dimensions:FN,create:function(t,e){var n=[];return t.eachComponent("polar",(function(t,i){var r=new GN(i+"");r.update=HN;var o=r.getRadiusAxis(),a=r.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");YN(o,s),YN(a,l),function(t,e,n){var i=e.get("center"),r=n.getWidth(),o=n.getHeight();t.cx=Ur(i[0],r),t.cy=Ur(i[1],o);var a=t.getRadiusAxis(),s=Math.min(r,o)/2,l=e.get("radius");null==l?l=[0,"100%"]:Y(l)||(l=[0,l]);var u=[Ur(l[0],s),Ur(l[1],s)];a.inverse?a.setExtent(u[1],u[0]):a.setExtent(u[0],u[1])}(r,t,e),n.push(r),t.coordinateSystem=r,r.model=t})),t.eachSeries((function(t){if("polar"===t.get("coordinateSystem")){var e=t.getReferringComponents("polar",zo).models[0];0,t.coordinateSystem=e.coordinateSystem}})),n}},UN=["axisLine","axisLabel","axisTick","minorTick","splitLine","minorSplitLine","splitArea"];function ZN(t,e,n){e[1]>e[0]&&(e=e.slice().reverse());var i=t.coordToPoint([e[0],n]),r=t.coordToPoint([e[1],n]);return{x1:i[0],y1:i[1],x2:r[0],y2:r[1]}}function jN(t){return t.getRadiusAxis().inverse?0:1}function qN(t){var e=t[0],n=t[t.length-1];e&&n&&Math.abs(Math.abs(e.coord-n.coord)-360)<1e-4&&t.pop()}var KN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.axisPointerClass="PolarAxisPointer",n}return n(e,t),e.prototype.render=function(t,e){if(this.group.removeAll(),t.get("show")){var n=t.axis,i=n.polar,r=i.getRadiusAxis().getExtent(),o=n.getTicksCoords(),a=n.getMinorTicksCoords(),s=z(n.getViewLabels(),(function(t){t=T(t);var e=n.scale,i="ordinal"===e.type?e.getRawOrdinalNumber(t.tickValue):t.tickValue;return t.coord=n.dataToCoord(i),t}));qN(s),qN(o),E(UN,(function(e){!t.get([e,"show"])||n.scale.isBlank()&&"axisLine"!==e||$N[e](this.group,t,i,o,a,r,s)}),this)}},e.type="angleAxis",e}(yI),$N={axisLine:function(t,e,n,i,r,o){var a,s=e.getModel(["axisLine","lineStyle"]),l=jN(n),u=l?0:1;(a=0===o[u]?new _u({shape:{cx:n.cx,cy:n.cy,r:o[l]},style:s.getLineStyle(),z2:1,silent:!0}):new Bu({shape:{cx:n.cx,cy:n.cy,r:o[l],r0:o[u]},style:s.getLineStyle(),z2:1,silent:!0})).style.fill=null,t.add(a)},axisTick:function(t,e,n,i,r,o){var a=e.getModel("axisTick"),s=(a.get("inside")?-1:1)*a.get("length"),l=o[jN(n)],u=z(i,(function(t){return new Zu({shape:ZN(n,[l,l+s],t.coord)})}));t.add(Ph(u,{style:k(a.getModel("lineStyle").getLineStyle(),{stroke:e.get(["axisLine","lineStyle","color"])})}))},minorTick:function(t,e,n,i,r,o){if(r.length){for(var a=e.getModel("axisTick"),s=e.getModel("minorTick"),l=(a.get("inside")?-1:1)*s.get("length"),u=o[jN(n)],h=[],c=0;cf?"left":"right",v=Math.abs(d[1]-g)/p<.3?"middle":d[1]>g?"top":"bottom";if(s&&s[c]){var m=s[c];q(m)&&m.textStyle&&(a=new Mc(m.textStyle,l,l.ecModel))}var x=new Fs({silent:iI.isLabelSilent(e),style:nc(a,{x:d[0],y:d[1],fill:a.getTextColor()||e.get(["axisLine","lineStyle","color"]),text:i.formattedLabel,align:y,verticalAlign:v})});if(t.add(x),h){var _=iI.makeAxisEventDataBase(e);_.targetType="axisLabel",_.value=i.rawLabel,Qs(x).eventData=_}}),this)},splitLine:function(t,e,n,i,r,o){var a=e.getModel("splitLine").getModel("lineStyle"),s=a.get("color"),l=0;s=s instanceof Array?s:[s];for(var u=[],h=0;h=0?"p":"n",T=_;m&&(i[s][M]||(i[s][M]={p:_,n:_}),T=i[s][M][I]);var C=void 0,D=void 0,A=void 0,k=void 0;if("radius"===c.dim){var L=c.dataToCoord(S)-_,P=o.dataToCoord(M);Math.abs(L)=k})}}}))}var oE={startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:0}},aE={splitNumber:5},sE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="polar",e}(Tg);function lE(t,e){e=e||{};var n=t.coordinateSystem,i=t.axis,r={},o=i.position,a=i.orient,s=n.getRect(),l=[s.x,s.x+s.width,s.y,s.y+s.height],u={horizontal:{top:l[2],bottom:l[3]},vertical:{left:l[0],right:l[1]}};r.position=["vertical"===a?u.vertical[o]:l[0],"horizontal"===a?u.horizontal[o]:l[3]];r.rotation=Math.PI/2*{horizontal:0,vertical:1}[a];r.labelDirection=r.tickDirection=r.nameDirection={top:-1,bottom:1,right:1,left:-1}[o],t.get(["axisTick","inside"])&&(r.tickDirection=-r.tickDirection),it(e.labelInside,t.get(["axisLabel","inside"]))&&(r.labelDirection=-r.labelDirection);var h=e.rotate;return null==h&&(h=t.get(["axisLabel","rotate"])),r.labelRotation="top"===o?-h:h,r.z2=1,r}var uE=["axisLine","axisTickLabel","axisName"],hE=["splitArea","splitLine"],cE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.axisPointerClass="SingleAxisPointer",n}return n(e,t),e.prototype.render=function(e,n,i,r){var o=this.group;o.removeAll();var a=this._axisGroup;this._axisGroup=new zr;var s=lE(e),l=new iI(e,s);E(uE,l.add,l),o.add(this._axisGroup),o.add(l.getGroup()),E(hE,(function(t){e.get([t,"show"])&&pE[t](this,this.group,this._axisGroup,e)}),this),Fh(a,this._axisGroup,e),t.prototype.render.call(this,e,n,i,r)},e.prototype.remove=function(){xI(this)},e.type="singleAxis",e}(yI),pE={splitLine:function(t,e,n,i){var r=i.axis;if(!r.scale.isBlank()){var o=i.getModel("splitLine"),a=o.getModel("lineStyle"),s=a.get("color");s=s instanceof Array?s:[s];for(var l=a.get("width"),u=i.coordinateSystem.getRect(),h=r.isHorizontal(),c=[],p=0,d=r.getTicksCoords({tickModel:o}),f=[],g=[],y=0;y=e.y&&t[1]<=e.y+e.height:n.contain(n.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},t.prototype.pointToData=function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},t.prototype.dataToPoint=function(t){var e=this.getAxis(),n=this.getRect(),i=[],r="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),i[r]=e.toGlobalCoord(e.dataToCoord(+t)),i[1-r]=0===r?n.y+n.height/2:n.x+n.width/2,i},t.prototype.convertToPixel=function(t,e,n){return vE(e)===this?this.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){return vE(e)===this?this.pointToData(n):null},t}();function vE(t){var e=t.seriesModel,n=t.singleAxisModel;return n&&n.coordinateSystem||e&&e.coordinateSystem}var mE={create:function(t,e){var n=[];return t.eachComponent("singleAxis",(function(i,r){var o=new yE(i,t,e);o.name="single_"+r,o.resize(i,e),i.coordinateSystem=o,n.push(o)})),t.eachSeries((function(t){if("singleAxis"===t.get("coordinateSystem")){var e=t.getReferringComponents("singleAxis",zo).models[0];t.coordinateSystem=e&&e.coordinateSystem}})),n},dimensions:gE},xE=["x","y"],_E=["width","height"],bE=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis,a=o.coordinateSystem,s=ME(a,1-SE(o)),l=a.dataToPoint(e)[0],u=i.get("type");if(u&&"none"!==u){var h=nN(i),c=wE[u](o,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}aN(e,t,lE(n),n,i,r)},e.prototype.getHandleTransform=function(t,e,n){var i=lE(e,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var r=oN(e.axis,t,i);return{x:r[0],y:r[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,e,n,i){var r=n.axis,o=r.coordinateSystem,a=SE(r),s=ME(o,a),l=[t.x,t.y];l[a]+=e[a],l[a]=Math.min(s[1],l[a]),l[a]=Math.max(s[0],l[a]);var u=ME(o,1-a),h=(u[1]+u[0])/2,c=[h,h];return c[a]=l[a],{x:l[0],y:l[1],rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}},e}(KR),wE={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:sN([e,n[0]],[e,n[1]],SE(t))}},shadow:function(t,e,n){var i=t.getBandWidth(),r=n[1]-n[0];return{type:"Rect",shape:lN([e-i/2,n[0]],[i,r],SE(t))}}};function SE(t){return t.isHorizontal()?0:1}function ME(t,e){var n=t.getRect();return[n[xE[e]],n[xE[e]]+n[_E[e]]]}var IE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="single",e}(Tg);var TE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(e,n,i){var r=Lp(e);t.prototype.init.apply(this,arguments),CE(e,r)},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),CE(this.option,e)},e.prototype.getCellSize=function(){return this.option.cellSize},e.type="calendar",e.defaultOption={z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},e}(Rp);function CE(t,e){var n,i=t.cellSize;1===(n=Y(i)?i:t.cellSize=[i,i]).length&&(n[1]=n[0]);var r=z([0,1],(function(t){return function(t,e){return null!=t[Mp[e][0]]||null!=t[Mp[e][1]]&&null!=t[Mp[e][2]]}(e,t)&&(n[t]="auto"),null!=n[t]&&"auto"!==n[t]}));kp(t,e,{type:"box",ignoreSize:r})}var DE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=this.group;i.removeAll();var r=t.coordinateSystem,o=r.getRangeInfo(),a=r.getOrient(),s=e.getLocaleModel();this._renderDayRect(t,o,i),this._renderLines(t,o,a,i),this._renderYearText(t,o,a,i),this._renderMonthText(t,s,a,i),this._renderWeekText(t,s,o,a,i)},e.prototype._renderDayRect=function(t,e,n){for(var i=t.coordinateSystem,r=t.getModel("itemStyle").getItemStyle(),o=i.getCellWidth(),a=i.getCellHeight(),s=e.start.time;s<=e.end.time;s=i.getNextNDay(s,1).time){var l=i.dataToRect([s],!1).tl,u=new zs({shape:{x:l[0],y:l[1],width:o,height:a},cursor:"default",style:r});n.add(u)}},e.prototype._renderLines=function(t,e,n,i){var r=this,o=t.coordinateSystem,a=t.getModel(["splitLine","lineStyle"]).getLineStyle(),s=t.get(["splitLine","show"]),l=a.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var u=e.start,h=0;u.time<=e.end.time;h++){p(u.formatedDate),0===h&&(u=o.getDateInfo(e.start.y+"-"+e.start.m));var c=u.date;c.setMonth(c.getMonth()+1),u=o.getDateInfo(c)}function p(e){r._firstDayOfMonth.push(o.getDateInfo(e)),r._firstDayPoints.push(o.dataToRect([e],!1).tl);var l=r._getLinePointsOfOneWeek(t,e,n);r._tlpoints.push(l[0]),r._blpoints.push(l[l.length-1]),s&&r._drawSplitline(l,a,i)}p(o.getNextNDay(e.end.time,1).formatedDate),s&&this._drawSplitline(r._getEdgesPoints(r._tlpoints,l,n),a,i),s&&this._drawSplitline(r._getEdgesPoints(r._blpoints,l,n),a,i)},e.prototype._getEdgesPoints=function(t,e,n){var i=[t[0].slice(),t[t.length-1].slice()],r="horizontal"===n?0:1;return i[0][r]=i[0][r]-e/2,i[1][r]=i[1][r]+e/2,i},e.prototype._drawSplitline=function(t,e,n){var i=new Yu({z2:20,shape:{points:t},style:e});n.add(i)},e.prototype._getLinePointsOfOneWeek=function(t,e,n){for(var i=t.coordinateSystem,r=i.getDateInfo(e),o=[],a=0;a<7;a++){var s=i.getNextNDay(r.time,a),l=i.dataToRect([s.time],!1);o[2*s.day]=l.tl,o[2*s.day+1]=l["horizontal"===n?"bl":"tr"]}return o},e.prototype._formatterLabel=function(t,e){return U(t)&&t?(n=t,E(e,(function(t,e){n=n.replace("{"+e+"}",i?re(t):t)})),n):X(t)?t(e):e.nameMap;var n,i},e.prototype._yearTextPositionControl=function(t,e,n,i,r){var o=e[0],a=e[1],s=["center","bottom"];"bottom"===i?(a+=r,s=["center","top"]):"left"===i?o-=r:"right"===i?(o+=r,s=["center","top"]):a-=r;var l=0;return"left"!==i&&"right"!==i||(l=Math.PI/2),{rotation:l,x:o,y:a,style:{align:s[0],verticalAlign:s[1]}}},e.prototype._renderYearText=function(t,e,n,i){var r=t.getModel("yearLabel");if(r.get("show")){var o=r.get("margin"),a=r.get("position");a||(a="horizontal"!==n?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===n?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},p=e.start.y;+e.end.y>+e.start.y&&(p=p+"-"+e.end.y);var d=r.get("formatter"),f={start:e.start.y,end:e.end.y,nameMap:p},g=this._formatterLabel(d,f),y=new Fs({z2:30,style:nc(r,{text:g})});y.attr(this._yearTextPositionControl(y,c[a],n,a,o)),i.add(y)}},e.prototype._monthTextPositionControl=function(t,e,n,i,r){var o="left",a="top",s=t[0],l=t[1];return"horizontal"===n?(l+=r,e&&(o="center"),"start"===i&&(a="bottom")):(s+=r,e&&(a="middle"),"start"===i&&(o="right")),{x:s,y:l,align:o,verticalAlign:a}},e.prototype._renderMonthText=function(t,e,n,i){var r=t.getModel("monthLabel");if(r.get("show")){var o=r.get("nameMap"),a=r.get("margin"),s=r.get("position"),l=r.get("align"),u=[this._tlpoints,this._blpoints];o&&!U(o)||(o&&(e=Nc(o)||e),o=e.get(["time","monthAbbr"])||[]);var h="start"===s?0:1,c="horizontal"===n?0:1;a="start"===s?-a:a;for(var p="center"===l,d=0;d=i.start.time&&n.timea.end.time&&t.reverse(),t},t.prototype._getRangeInfo=function(t){var e,n=[this.getDateInfo(t[0]),this.getDateInfo(t[1])];n[0].time>n[1].time&&(e=!0,n.reverse());var i=Math.floor(n[1].time/AE)-Math.floor(n[0].time/AE)+1,r=new Date(n[0].time),o=r.getDate(),a=n[1].date.getDate();r.setDate(o+i-1);var s=r.getDate();if(s!==a)for(var l=r.getTime()-n[1].time>0?1:-1;(s=r.getDate())!==a&&(r.getTime()-n[1].time)*l>0;)i-=l,r.setDate(s-l);var u=Math.floor((i+n[0].day+6)/7),h=e?1-u:u-1;return e&&n.reverse(),{range:[n[0].formatedDate,n[1].formatedDate],start:n[0],end:n[1],allDay:i,weeks:u,nthWeek:h,fweek:n[0].day,lweek:n[1].day}},t.prototype._getDateByWeeksAndDay=function(t,e,n){var i=this._getRangeInfo(n);if(t>i.weeks||0===t&&ei.lweek)return null;var r=7*(t-1)-i.fweek+e,o=new Date(i.start.time);return o.setDate(+i.start.d+r),this.getDateInfo(o)},t.create=function(e,n){var i=[];return e.eachComponent("calendar",(function(r){var o=new t(r,e,n);i.push(o),r.coordinateSystem=o})),e.eachSeries((function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])})),i},t.dimensions=["time","value"],t}();function LE(t){var e=t.calendarModel,n=t.seriesModel;return e?e.coordinateSystem:n?n.coordinateSystem:null}function PE(t,e){var n;return E(e,(function(e){null!=t[e]&&"auto"!==t[e]&&(n=!0)})),n}var OE=["transition","enterFrom","leaveTo"],RE=OE.concat(["enterAnimation","updateAnimation","leaveAnimation"]);function NE(t,e,n){if(n&&(!t[n]&&e[n]&&(t[n]={}),t=t[n],e=e[n]),t&&e)for(var i=n?OE:RE,r=0;r=0;l--){var p,d,f;if(f=null!=(d=Ao((p=n[l]).id,null))?r.get(d):null){var g=f.parent,y=(c=VE(g),{}),v=Dp(f,p,g===i?{width:o,height:a}:{width:c.width,height:c.height},null,{hv:p.hv,boundingMode:p.bounding},y);if(!VE(f).isNew&&v){for(var m=p.transition,x={},_=0;_=0)?x[b]=w:f[b]=w}fh(f,x,t,0)}else f.attr(y)}}},e.prototype._clear=function(){var t=this,e=this._elMap;e.each((function(n){WE(n,VE(n).option,e,t._lastGraphicModel)})),this._elMap=yt()},e.prototype.dispose=function(){this._clear()},e.type="graphic",e}(Tg);function FE(t){var e=_t(zE,t)?zE[t]:Dh(t);var n=new e({});return VE(n).type=t,n}function GE(t,e,n,i){var r=FE(n);return e.add(r),i.set(t,r),VE(r).id=t,VE(r).isNew=!0,r}function WE(t,e,n,i){t&&t.parent&&("group"===t.type&&t.traverse((function(t){WE(t,e,n,i)})),oR(t,e,i),n.removeKey(VE(t).id))}function HE(t,e,n,i){t.isGroup||E([["cursor",Sa.prototype.cursor],["zlevel",i||0],["z",n||0],["z2",0]],(function(n){var i=n[0];_t(e,i)?t[i]=rt(e[i],n[1]):null==t[i]&&(t[i]=n[1])})),E(G(e),(function(n){if(0===n.indexOf("on")){var i=e[n];t[n]=X(i)?i:null}})),_t(e,"draggable")&&(t.draggable=e.draggable),null!=e.name&&(t.name=e.name),null!=e.id&&(t.id=e.id)}var YE=["x","y","radius","angle","single"],XE=["cartesian2d","polar","singleAxis"];function UE(t){return t+"Axis"}function ZE(t,e){var n,i=yt(),r=[],o=yt();t.eachComponent({mainType:"dataZoom",query:e},(function(t){o.get(t.uid)||s(t)}));do{n=!1,t.eachComponent("dataZoom",a)}while(n);function a(t){!o.get(t.uid)&&function(t){var e=!1;return t.eachTargetAxis((function(t,n){var r=i.get(t);r&&r[n]&&(e=!0)})),e}(t)&&(s(t),n=!0)}function s(t){o.set(t.uid,!0),r.push(t),t.eachTargetAxis((function(t,e){(i.get(t)||i.set(t,[]))[e]=!0}))}return r}function jE(t){var e=t.ecModel,n={infoList:[],infoMap:yt()};return t.eachTargetAxis((function(t,i){var r=e.getComponent(UE(t),i);if(r){var o=r.getCoordSysModel();if(o){var a=o.uid,s=n.infoMap.get(a);s||(s={model:o,axisModels:[]},n.infoList.push(s),n.infoMap.set(a,s)),s.axisModels.push(r)}}})),n}var qE=function(){function t(){this.indexList=[],this.indexMap=[]}return t.prototype.add=function(t){this.indexMap[t]||(this.indexList.push(t),this.indexMap[t]=!0)},t}(),KE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._autoThrottle=!0,n._noTarget=!0,n._rangePropMode=["percent","percent"],n}return n(e,t),e.prototype.init=function(t,e,n){var i=$E(t);this.settledOption=i,this.mergeDefaultAndTheme(t,n),this._doInit(i)},e.prototype.mergeOption=function(t){var e=$E(t);C(this.option,t,!0),C(this.settledOption,e,!0),this._doInit(e)},e.prototype._doInit=function(t){var e=this.option;this._setDefaultThrottle(t),this._updateRangeUse(t);var n=this.settledOption;E([["start","startValue"],["end","endValue"]],(function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=n[t[0]]=null)}),this),this._resetTarget()},e.prototype._resetTarget=function(){var t=this.get("orient",!0),e=this._targetAxisInfoMap=yt();this._fillSpecifiedTargetAxis(e)?this._orient=t||this._makeAutoOrientByTargetAxis():(this._orient=t||"horizontal",this._fillAutoTargetAxisByOrient(e,this._orient)),this._noTarget=!0,e.each((function(t){t.indexList.length&&(this._noTarget=!1)}),this)},e.prototype._fillSpecifiedTargetAxis=function(t){var e=!1;return E(YE,(function(n){var i=this.getReferringComponents(UE(n),Vo);if(i.specified){e=!0;var r=new qE;E(i.models,(function(t){r.add(t.componentIndex)})),t.set(n,r)}}),this),e},e.prototype._fillAutoTargetAxisByOrient=function(t,e){var n=this.ecModel,i=!0;if(i){var r="vertical"===e?"y":"x";o(n.findComponents({mainType:r+"Axis"}),r)}i&&o(n.findComponents({mainType:"singleAxis",filter:function(t){return t.get("orient",!0)===e}}),"single");function o(e,n){var r=e[0];if(r){var o=new qE;if(o.add(r.componentIndex),t.set(n,o),i=!1,"x"===n||"y"===n){var a=r.getReferringComponents("grid",zo).models[0];a&&E(e,(function(t){r.componentIndex!==t.componentIndex&&a===t.getReferringComponents("grid",zo).models[0]&&o.add(t.componentIndex)}))}}}i&&E(YE,(function(e){if(i){var r=n.findComponents({mainType:UE(e),filter:function(t){return"category"===t.get("type",!0)}});if(r[0]){var o=new qE;o.add(r[0].componentIndex),t.set(e,o),i=!1}}}),this)},e.prototype._makeAutoOrientByTargetAxis=function(){var t;return this.eachTargetAxis((function(e){!t&&(t=e)}),this),"y"===t?"vertical":"horizontal"},e.prototype._setDefaultThrottle=function(t){if(t.hasOwnProperty("throttle")&&(this._autoThrottle=!1),this._autoThrottle){var e=this.ecModel.option;this.option.throttle=e.animation&&e.animationDurationUpdate>0?100:20}},e.prototype._updateRangeUse=function(t){var e=this._rangePropMode,n=this.get("rangeMode");E([["start","startValue"],["end","endValue"]],(function(i,r){var o=null!=t[i[0]],a=null!=t[i[1]];o&&!a?e[r]="percent":!o&&a?e[r]="value":n?e[r]=n[r]:o&&(e[r]="percent")}))},e.prototype.noTarget=function(){return this._noTarget},e.prototype.getFirstTargetAxisModel=function(){var t;return this.eachTargetAxis((function(e,n){null==t&&(t=this.ecModel.getComponent(UE(e),n))}),this),t},e.prototype.eachTargetAxis=function(t,e){this._targetAxisInfoMap.each((function(n,i){E(n.indexList,(function(n){t.call(e,i,n)}))}))},e.prototype.getAxisProxy=function(t,e){var n=this.getAxisModel(t,e);if(n)return n.__dzAxisProxy},e.prototype.getAxisModel=function(t,e){var n=this._targetAxisInfoMap.get(t);if(n&&n.indexMap[e])return this.ecModel.getComponent(UE(t),e)},e.prototype.setRawRange=function(t){var e=this.option,n=this.settledOption;E([["start","startValue"],["end","endValue"]],(function(i){null==t[i[0]]&&null==t[i[1]]||(e[i[0]]=n[i[0]]=t[i[0]],e[i[1]]=n[i[1]]=t[i[1]])}),this),this._updateRangeUse(t)},e.prototype.setCalculatedRange=function(t){var e=this.option;E(["start","startValue","end","endValue"],(function(n){e[n]=t[n]}))},e.prototype.getPercentRange=function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},e.prototype.getValueRange=function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var n=this.findRepresentativeAxisProxy();return n?n.getDataValueWindow():void 0},e.prototype.findRepresentativeAxisProxy=function(t){if(t)return t.__dzAxisProxy;for(var e,n=this._targetAxisInfoMap.keys(),i=0;i=0}(e)){var n=UE(this._dimName),i=e.getReferringComponents(n,zo).models[0];i&&this._axisIndex===i.componentIndex&&t.push(e)}}),this),t},t.prototype.getAxisModel=function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},t.prototype.getMinMaxSpan=function(){return T(this._minMaxSpan)},t.prototype.calculateDataWindow=function(t){var e,n=this._dataExtent,i=this.getAxisModel().axis.scale,r=this._dataZoomModel.getRangePropMode(),o=[0,100],a=[],s=[];ez(["start","end"],(function(l,u){var h=t[l],c=t[l+"Value"];"percent"===r[u]?(null==h&&(h=o[u]),c=i.parse(Xr(h,o,n))):(e=!0,h=Xr(c=null==c?n[u]:i.parse(c),n,o)),s[u]=null==c||isNaN(c)?n[u]:c,a[u]=null==h||isNaN(h)?o[u]:h})),nz(s),nz(a);var l=this._minMaxSpan;function u(t,e,n,r,o){var a=o?"Span":"ValueSpan";Ck(0,t,n,"all",l["min"+a],l["max"+a]);for(var s=0;s<2;s++)e[s]=Xr(t[s],n,r,!0),o&&(e[s]=i.parse(e[s]))}return e?u(s,a,n,o,!1):u(a,s,o,n,!0),{valueWindow:s,percentWindow:a}},t.prototype.reset=function(t){if(t===this._dataZoomModel){var e=this.getTargetSeriesModels();this._dataExtent=function(t,e,n){var i=[1/0,-1/0];ez(n,(function(t){!function(t,e,n){e&&E(M_(e,n),(function(n){var i=e.getApproximateExtent(n);i[0]t[1]&&(t[1]=i[1])}))}(i,t.getData(),e)}));var r=t.getAxisModel(),o=f_(r.axis.scale,r,i).calculate();return[o.min,o.max]}(this,this._dimName,e),this._updateMinMaxSpan();var n=this.calculateDataWindow(t.settledOption);this._valueWindow=n.valueWindow,this._percentWindow=n.percentWindow,this._setAxisModel()}},t.prototype.filterData=function(t,e){if(t===this._dataZoomModel){var n=this._dimName,i=this.getTargetSeriesModels(),r=t.get("filterMode"),o=this._valueWindow;"none"!==r&&ez(i,(function(t){var e=t.getData(),i=e.mapDimensionsAll(n);if(i.length){if("weakFilter"===r){var a=e.getStore(),s=z(i,(function(t){return e.getDimensionIndex(t)}),e);e.filterSelf((function(t){for(var e,n,r,l=0;lo[1];if(h&&!c&&!p)return!0;h&&(r=!0),c&&(e=!0),p&&(n=!0)}return r&&e&&n}))}else ez(i,(function(n){if("empty"===r)t.setData(e=e.map(n,(function(t){return function(t){return t>=o[0]&&t<=o[1]}(t)?t:NaN})));else{var i={};i[n]=o,e.selectRange(i)}}));ez(i,(function(t){e.setApproximateExtent(o,t)}))}}))}},t.prototype._updateMinMaxSpan=function(){var t=this._minMaxSpan={},e=this._dataZoomModel,n=this._dataExtent;ez(["min","max"],(function(i){var r=e.get(i+"Span"),o=e.get(i+"ValueSpan");null!=o&&(o=this.getAxisModel().axis.scale.parse(o)),null!=o?r=Xr(n[0]+o,n,[0,100],!0):null!=r&&(o=Xr(r,[0,100],n,!0)-n[0]),t[i+"Span"]=r,t[i+"ValueSpan"]=o}),this)},t.prototype._setAxisModel=function(){var t=this.getAxisModel(),e=this._percentWindow,n=this._valueWindow;if(e){var i=$r(n,[0,500]);i=Math.min(i,20);var r=t.axis.scale.rawExtentInfo;0!==e[0]&&r.setDeterminedMinMax("min",+n[0].toFixed(i)),100!==e[1]&&r.setDeterminedMinMax("max",+n[1].toFixed(i)),r.freeze()}},t}();var rz={getTargetSeries:function(t){function e(e){t.eachComponent("dataZoom",(function(n){n.eachTargetAxis((function(i,r){var o=t.getComponent(UE(i),r);e(i,r,o,n)}))}))}e((function(t,e,n,i){n.__dzAxisProxy=null}));var n=[];e((function(e,i,r,o){r.__dzAxisProxy||(r.__dzAxisProxy=new iz(e,i,o,t),n.push(r.__dzAxisProxy))}));var i=yt();return E(n,(function(t){E(t.getTargetSeriesModels(),(function(t){i.set(t.uid,t)}))})),i},overallReset:function(t,e){t.eachComponent("dataZoom",(function(t){t.eachTargetAxis((function(e,n){t.getAxisProxy(e,n).reset(t)})),t.eachTargetAxis((function(n,i){t.getAxisProxy(n,i).filterData(t,e)}))})),t.eachComponent("dataZoom",(function(t){var e=t.findRepresentativeAxisProxy();if(e){var n=e.getDataPercentWindow(),i=e.getDataValueWindow();t.setCalculatedRange({start:n[0],end:n[1],startValue:i[0],endValue:i[1]})}}))}};var oz=!1;function az(t){oz||(oz=!0,t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,rz),function(t){t.registerAction("dataZoom",(function(t,e){E(ZE(e,t),(function(e){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})}))}))}(t),t.registerSubTypeDefaulter("dataZoom",(function(){return"slider"})))}function sz(t){t.registerComponentModel(JE),t.registerComponentView(tz),az(t)}var lz=function(){},uz={};function hz(t,e){uz[t]=e}function cz(t){return uz[t]}var pz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(){t.prototype.optionUpdated.apply(this,arguments);var e=this.ecModel;E(this.option.feature,(function(t,n){var i=cz(n);i&&(i.getDefaultOption&&(i.defaultOption=i.getDefaultOption(e)),C(t,i.defaultOption))}))},e.type="toolbox",e.layoutMode={type:"box",ignoreSize:!0},e.defaultOption={show:!0,z:6,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1,position:"bottom"}},e}(Rp);function dz(t,e){var n=fp(e.get("padding")),i=e.getItemStyle(["color","opacity"]);return i.fill=e.get("backgroundColor"),t=new zs({shape:{x:t.x-n[3],y:t.y-n[0],width:t.width+n[1]+n[3],height:t.height+n[0]+n[2],r:e.get("borderRadius")},style:i,silent:!0,z2:-1})}var fz=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n,i){var r=this.group;if(r.removeAll(),t.get("show")){var o=+t.get("itemSize"),a="vertical"===t.get("orient"),s=t.get("feature")||{},l=this._features||(this._features={}),u=[];E(s,(function(t,e){u.push(e)})),new Vm(this._featureNames||[],u).add(h).update(h).remove(H(h,null)).execute(),this._featureNames=u,function(t,e,n){var i=e.getBoxLayoutParams(),r=e.get("padding"),o={width:n.getWidth(),height:n.getHeight()},a=Cp(i,o,r);Tp(e.get("orient"),t,e.get("itemGap"),a.width,a.height),Dp(t,i,o,r)}(r,t,n),r.add(dz(r.getBoundingRect(),t)),a||r.eachChild((function(t){var e=t.__title,i=t.ensureState("emphasis"),a=i.textConfig||(i.textConfig={}),s=t.getTextContent(),l=s&&s.ensureState("emphasis");if(l&&!X(l)&&e){var u=l.style||(l.style={}),h=br(e,Fs.makeFont(u)),c=t.x+r.x,p=!1;t.y+r.y+o+h.height>n.getHeight()&&(a.position="top",p=!0);var d=p?-5-h.height:o+10;c+h.width/2>n.getWidth()?(a.position=["100%",d],u.align="right"):c-h.width/2<0&&(a.position=[0,d],u.align="left")}}))}function h(h,c){var p,d=u[h],f=u[c],g=s[d],y=new Mc(g,t,t.ecModel);if(i&&null!=i.newTitle&&i.featureName===d&&(g.title=i.newTitle),d&&!f){if(function(t){return 0===t.indexOf("my")}(d))p={onclick:y.option.onclick,featureName:d};else{var v=cz(d);if(!v)return;p=new v}l[d]=p}else if(!(p=l[f]))return;p.uid=Tc("toolbox-feature"),p.model=y,p.ecModel=e,p.api=n;var m=p instanceof lz;d||!f?!y.get("show")||m&&p.unusable?m&&p.remove&&p.remove(e,n):(!function(i,s,l){var u,h,c=i.getModel("iconStyle"),p=i.getModel(["emphasis","iconStyle"]),d=s instanceof lz&&s.getIcons?s.getIcons():i.get("icon"),f=i.get("title")||{};U(d)?(u={})[l]=d:u=d;U(f)?(h={})[l]=f:h=f;var g=i.iconPaths={};E(u,(function(l,u){var d=Hh(l,{},{x:-o/2,y:-o/2,width:o,height:o});d.setStyle(c.getItemStyle()),d.ensureState("emphasis").style=p.getItemStyle();var f=new Fs({style:{text:h[u],align:p.get("textAlign"),borderRadius:p.get("textBorderRadius"),padding:p.get("textPadding"),fill:null},ignore:!0});d.setTextContent(f),Zh({el:d,componentModel:t,itemName:u,formatterParamsExtra:{title:h[u]}}),d.__title=h[u],d.on("mouseover",(function(){var e=p.getItemStyle(),i=a?null==t.get("right")&&"right"!==t.get("left")?"right":"left":null==t.get("bottom")&&"bottom"!==t.get("top")?"bottom":"top";f.setStyle({fill:p.get("textFill")||e.fill||e.stroke||"#000",backgroundColor:p.get("textBackgroundColor")}),d.setTextConfig({position:p.get("textPosition")||i}),f.ignore=!t.get("showTitle"),n.enterEmphasis(this)})).on("mouseout",(function(){"emphasis"!==i.get(["iconStatus",u])&&n.leaveEmphasis(this),f.hide()})),("emphasis"===i.get(["iconStatus",u])?kl:Ll)(d),r.add(d),d.on("click",W(s.onclick,s,e,n,u)),g[u]=d}))}(y,p,d),y.setIconStatus=function(t,e){var n=this.option,i=this.iconPaths;n.iconStatus=n.iconStatus||{},n.iconStatus[t]=e,i[t]&&("emphasis"===e?kl:Ll)(i[t])},p instanceof lz&&p.render&&p.render(y,e,n,i)):m&&p.dispose&&p.dispose(e,n)}},e.prototype.updateView=function(t,e,n,i){E(this._features,(function(t){t instanceof lz&&t.updateView&&t.updateView(t.model,e,n,i)}))},e.prototype.remove=function(t,e){E(this._features,(function(n){n instanceof lz&&n.remove&&n.remove(t,e)})),this.group.removeAll()},e.prototype.dispose=function(t,e){E(this._features,(function(n){n instanceof lz&&n.dispose&&n.dispose(t,e)}))},e.type="toolbox",e}(Tg);var gz=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.onclick=function(t,e){var n=this.model,i=n.get("name")||t.get("title.0.text")||"echarts",o="svg"===e.getZr().painter.getType(),a=o?"svg":n.get("type",!0)||"png",s=e.getConnectedDataURL({type:a,backgroundColor:n.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",connectedBackgroundColor:n.get("connectedBackgroundColor"),excludeComponents:n.get("excludeComponents"),pixelRatio:n.get("pixelRatio")}),l=r.browser;if(X(MouseEvent)&&(l.newEdge||!l.ie&&!l.edge)){var u=document.createElement("a");u.download=i+"."+a,u.target="_blank",u.href=s;var h=new MouseEvent("click",{view:document.defaultView,bubbles:!0,cancelable:!1});u.dispatchEvent(h)}else if(window.navigator.msSaveOrOpenBlob||o){var c=s.split(","),p=c[0].indexOf("base64")>-1,d=o?decodeURIComponent(c[1]):c[1];p&&(d=window.atob(d));var f=i+"."+a;if(window.navigator.msSaveOrOpenBlob){for(var g=d.length,y=new Uint8Array(g);g--;)y[g]=d.charCodeAt(g);var v=new Blob([y]);window.navigator.msSaveOrOpenBlob(v,f)}else{var m=document.createElement("iframe");document.body.appendChild(m);var x=m.contentWindow,_=x.document;_.open("image/svg+xml","replace"),_.write(d),_.close(),x.focus(),_.execCommand("SaveAs",!0,f),document.body.removeChild(m)}}else{var b=n.get("lang"),w='',S=window.open();S.document.write(w),S.document.title=i}},e.getDefaultOption=function(t){return{show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:t.getLocaleModel().get(["toolbox","saveAsImage","title"]),type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],lang:t.getLocaleModel().get(["toolbox","saveAsImage","lang"])}},e}(lz),yz="__ec_magicType_stack__",vz=[["line","bar"],["stack"]],mz=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getIcons=function(){var t=this.model,e=t.get("icon"),n={};return E(t.get("type"),(function(t){e[t]&&(n[t]=e[t])})),n},e.getDefaultOption=function(t){return{show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"},title:t.getLocaleModel().get(["toolbox","magicType","title"]),option:{},seriesIndex:{}}},e.prototype.onclick=function(t,e,n){var i=this.model,r=i.get(["seriesIndex",n]);if(xz[n]){var o,a={series:[]};E(vz,(function(t){P(t,n)>=0&&E(t,(function(t){i.setIconStatus(t,"normal")}))})),i.setIconStatus(n,"emphasis"),t.eachComponent({mainType:"series",query:null==r?null:{seriesIndex:r}},(function(t){var e=t.subType,r=t.id,o=xz[n](e,r,t,i);o&&(k(o,t.option),a.series.push(o));var s=t.coordinateSystem;if(s&&"cartesian2d"===s.type&&("line"===n||"bar"===n)){var l=s.getAxesByScale("ordinal")[0];if(l){var u=l.dim+"Axis",h=t.getReferringComponents(u,zo).models[0].componentIndex;a[u]=a[u]||[];for(var c=0;c<=h;c++)a[u][h]=a[u][h]||{};a[u][h].boundaryGap="bar"===n}}}));var s=n;"stack"===n&&(o=C({stack:i.option.title.tiled,tiled:i.option.title.stack},i.option.title),"emphasis"!==i.get(["iconStatus",n])&&(s="tiled")),e.dispatchAction({type:"changeMagicType",currentType:s,newOption:a,newTitle:o,featureName:"magicType"})}},e}(lz),xz={line:function(t,e,n,i){if("bar"===t)return C({id:e,type:"line",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get(["option","line"])||{},!0)},bar:function(t,e,n,i){if("line"===t)return C({id:e,type:"bar",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get(["option","bar"])||{},!0)},stack:function(t,e,n,i){var r=n.get("stack")===yz;if("line"===t||"bar"===t)return i.setIconStatus("stack",r?"normal":"emphasis"),C({id:e,stack:r?"":yz},i.get(["option","stack"])||{},!0)}};Mm({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},(function(t,e){e.mergeOption(t.newOption)}));var _z=new Array(60).join("-"),bz="\t";function wz(t){return t.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}var Sz=new RegExp("[\t]+","g");function Mz(t,e){var n=t.split(new RegExp("\n*"+_z+"\n*","g")),i={series:[]};return E(n,(function(t,n){if(function(t){if(t.slice(0,t.indexOf("\n")).indexOf(bz)>=0)return!0}(t)){var r=function(t){for(var e=t.split(/\n+/g),n=[],i=z(wz(e.shift()).split(Sz),(function(t){return{name:t,data:[]}})),r=0;r=0)&&t(r,i._targetInfoList)}))}return t.prototype.setOutputRanges=function(t,e){return this.matchOutputRanges(t,e,(function(t,e,n){if((t.coordRanges||(t.coordRanges=[])).push(e),!t.coordRange){t.coordRange=e;var i=Vz[t.brushType](0,n,e);t.__rangeOffset={offset:Fz[t.brushType](i.values,t.range,[1,1]),xyMinMax:i.xyMinMax}}})),t},t.prototype.matchOutputRanges=function(t,e,n){E(t,(function(t){var i=this.findTargetInfo(t,e);i&&!0!==i&&E(i.coordSyses,(function(i){var r=Vz[t.brushType](1,i,t.range,!0);n(t,r.values,i,e)}))}),this)},t.prototype.setInputRanges=function(t,e){E(t,(function(t){var n,i,r,o,a,s=this.findTargetInfo(t,e);if(t.range=t.range||[],s&&!0!==s){t.panelId=s.panelId;var l=Vz[t.brushType](0,s.coordSys,t.coordRange),u=t.__rangeOffset;t.range=u?Fz[t.brushType](l.values,u.offset,(n=l.xyMinMax,i=u.xyMinMax,r=Wz(n),o=Wz(i),a=[r[0]/o[0],r[1]/o[1]],isNaN(a[0])&&(a[0]=1),isNaN(a[1])&&(a[1]=1),a)):l.values}}),this)},t.prototype.makePanelOpts=function(t,e){return z(this._targetInfoList,(function(n){var i=n.getPanelRect();return{panelId:n.panelId,defaultBrushType:e?e(n):null,clipPath:AL(i),isTargetByCursor:LL(i,t,n.coordSysModel),getLinearBrushOtherExtent:kL(i)}}))},t.prototype.controlSeries=function(t,e,n){var i=this.findTargetInfo(t,n);return!0===i||i&&P(i.coordSyses,e.coordinateSystem)>=0},t.prototype.findTargetInfo=function(t,e){for(var n=this._targetInfoList,i=Rz(e,t),r=0;rt[1]&&t.reverse(),t}function Rz(t,e){return No(t,e,{includeMainTypes:Lz})}var Nz={grid:function(t,e){var n=t.xAxisModels,i=t.yAxisModels,r=t.gridModels,o=yt(),a={},s={};(n||i||r)&&(E(n,(function(t){var e=t.axis.grid.model;o.set(e.id,e),a[e.id]=!0})),E(i,(function(t){var e=t.axis.grid.model;o.set(e.id,e),s[e.id]=!0})),E(r,(function(t){o.set(t.id,t),a[t.id]=!0,s[t.id]=!0})),o.each((function(t){var r=t.coordinateSystem,o=[];E(r.getCartesians(),(function(t,e){(P(n,t.getAxis("x").model)>=0||P(i,t.getAxis("y").model)>=0)&&o.push(t)})),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:o[0],coordSyses:o,getPanelRect:zz.grid,xAxisDeclared:a[t.id],yAxisDeclared:s[t.id]})})))},geo:function(t,e){E(t.geoModels,(function(t){var n=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:n,coordSyses:[n],getPanelRect:zz.geo})}))}},Ez=[function(t,e){var n=t.xAxisModel,i=t.yAxisModel,r=t.gridModel;return!r&&n&&(r=n.axis.grid.model),!r&&i&&(r=i.axis.grid.model),r&&r===e.gridModel},function(t,e){var n=t.geoModel;return n&&n===e.geoModel}],zz={grid:function(){return this.coordSys.master.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Eh(t)),e}},Vz={lineX:H(Bz,0),lineY:H(Bz,1),rect:function(t,e,n,i){var r=t?e.pointToData([n[0][0],n[1][0]],i):e.dataToPoint([n[0][0],n[1][0]],i),o=t?e.pointToData([n[0][1],n[1][1]],i):e.dataToPoint([n[0][1],n[1][1]],i),a=[Oz([r[0],o[0]]),Oz([r[1],o[1]])];return{values:a,xyMinMax:a}},polygon:function(t,e,n,i){var r=[[1/0,-1/0],[1/0,-1/0]];return{values:z(n,(function(n){var o=t?e.pointToData(n,i):e.dataToPoint(n,i);return r[0][0]=Math.min(r[0][0],o[0]),r[1][0]=Math.min(r[1][0],o[1]),r[0][1]=Math.max(r[0][1],o[0]),r[1][1]=Math.max(r[1][1],o[1]),o})),xyMinMax:r}}};function Bz(t,e,n,i){var r=n.getAxis(["x","y"][t]),o=Oz(z([0,1],(function(t){return e?r.coordToData(r.toLocalCoord(i[t]),!0):r.toGlobalCoord(r.dataToCoord(i[t]))}))),a=[];return a[t]=o,a[1-t]=[NaN,NaN],{values:o,xyMinMax:a}}var Fz={lineX:H(Gz,0),lineY:H(Gz,1),rect:function(t,e,n){return[[t[0][0]-n[0]*e[0][0],t[0][1]-n[0]*e[0][1]],[t[1][0]-n[1]*e[1][0],t[1][1]-n[1]*e[1][1]]]},polygon:function(t,e,n){return z(t,(function(t,i){return[t[0]-n[0]*e[i][0],t[1]-n[1]*e[i][1]]}))}};function Gz(t,e,n,i){return[e[0]-i[t]*n[0],e[1]-i[t]*n[1]]}function Wz(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}var Hz,Yz,Xz=E,Uz=_o+"toolbox-dataZoom_",Zz=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n,i){this._brushController||(this._brushController=new Jk(n.getZr()),this._brushController.on("brush",W(this._onBrush,this)).mount()),function(t,e,n,i,r){var o=n._isZoomActive;i&&"takeGlobalCursor"===i.type&&(o="dataZoomSelect"===i.key&&i.dataZoomSelectActive);n._isZoomActive=o,t.setIconStatus("zoom",o?"emphasis":"normal");var a=new Pz(qz(t),e,{include:["grid"]}),s=a.makePanelOpts(r,(function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"}));n._brushController.setPanels(s).enableBrush(!(!o||!s.length)&&{brushType:"auto",brushStyle:t.getModel("brushStyle").getItemStyle()})}(t,e,this,i,n),function(t,e){t.setIconStatus("back",function(t){return Az(t).length}(e)>1?"emphasis":"normal")}(t,e)},e.prototype.onclick=function(t,e,n){jz[n].call(this)},e.prototype.remove=function(t,e){this._brushController&&this._brushController.unmount()},e.prototype.dispose=function(t,e){this._brushController&&this._brushController.dispose()},e.prototype._onBrush=function(t){var e=t.areas;if(t.isEnd&&e.length){var n={},i=this.ecModel;this._brushController.updateCovers([]),new Pz(qz(this.model),i,{include:["grid"]}).matchOutputRanges(e,i,(function(t,e,n){if("cartesian2d"===n.type){var i=t.brushType;"rect"===i?(r("x",n,e[0]),r("y",n,e[1])):r({lineX:"x",lineY:"y"}[i],n,e)}})),function(t,e){var n=Az(t);Cz(e,(function(e,i){for(var r=n.length-1;r>=0&&!n[r][i];r--);if(r<0){var o=t.queryComponents({mainType:"dataZoom",subType:"select",id:i})[0];if(o){var a=o.getPercentRange();n[0][i]={dataZoomId:i,start:a[0],end:a[1]}}}})),n.push(e)}(i,n),this._dispatchZoomAction(n)}function r(t,e,r){var o=e.getAxis(t),a=o.model,s=function(t,e,n){var i;return n.eachComponent({mainType:"dataZoom",subType:"select"},(function(n){n.getAxisModel(t,e.componentIndex)&&(i=n)})),i}(t,a,i),l=s.findRepresentativeAxisProxy(a).getMinMaxSpan();null==l.minValueSpan&&null==l.maxValueSpan||(r=Ck(0,r.slice(),o.scale.getExtent(),0,l.minValueSpan,l.maxValueSpan)),s&&(n[s.id]={dataZoomId:s.id,startValue:r[0],endValue:r[1]})}},e.prototype._dispatchZoomAction=function(t){var e=[];Xz(t,(function(t,n){e.push(T(t))})),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},e.getDefaultOption=function(t){return{show:!0,filterMode:"filter",icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:t.getLocaleModel().get(["toolbox","dataZoom","title"]),brushStyle:{borderWidth:0,color:"rgba(210,219,238,0.2)"}}},e}(lz),jz={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(function(t){var e=Az(t),n=e[e.length-1];e.length>1&&e.pop();var i={};return Cz(n,(function(t,n){for(var r=e.length-1;r>=0;r--)if(t=e[r][n]){i[n]=t;break}})),i}(this.ecModel))}};function qz(t){var e={xAxisIndex:t.get("xAxisIndex",!0),yAxisIndex:t.get("yAxisIndex",!0),xAxisId:t.get("xAxisId",!0),yAxisId:t.get("yAxisId",!0)};return null==e.xAxisIndex&&null==e.xAxisId&&(e.xAxisIndex="all"),null==e.yAxisIndex&&null==e.yAxisId&&(e.yAxisIndex="all"),e}Hz="dataZoom",Yz=function(t){var e=t.getComponent("toolbox",0),n=["feature","dataZoom"];if(e&&null!=e.get(n)){var i=e.getModel(n),r=[],o=No(t,qz(i));return Xz(o.xAxisModels,(function(t){return a(t,"xAxis","xAxisIndex")})),Xz(o.yAxisModels,(function(t){return a(t,"yAxis","yAxisIndex")})),r}function a(t,e,n){var o=t.componentIndex,a={type:"select",$fromToolbox:!0,filterMode:i.get("filterMode",!0)||"filter",id:Uz+e+o};a[n]=o,r.push(a)}},lt(null==nd.get(Hz)&&Yz),nd.set(Hz,Yz);var Kz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="tooltip",e.dependencies=["axisPointer"],e.defaultOption={z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:null,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"#fff",shadowBlur:10,shadowColor:"rgba(0, 0, 0, .2)",shadowOffsetX:1,shadowOffsetY:2,borderRadius:4,borderWidth:1,padding:null,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#666",fontSize:14}},e}(Rp);function $z(t){var e=t.get("confine");return null!=e?!!e:"richText"===t.get("renderMode")}function Jz(t){if(r.domSupported)for(var e=document.documentElement.style,n=0,i=t.length;n-1?(u+="top:50%",h+="translateY(-50%) rotate("+(a="left"===s?-225:-45)+"deg)"):(u+="left:50%",h+="translateX(-50%) rotate("+(a="top"===s?225:45)+"deg)");var c=a*Math.PI/180,p=l+r,d=p*Math.abs(Math.cos(c))+p*Math.abs(Math.sin(c)),f=e+" solid "+r+"px;";return'
        '}(n,i,r)),U(t))o.innerHTML=t+a;else if(t){o.innerHTML="",Y(t)||(t=[t]);for(var s=0;s=0?this._tryShow(n,i):"leave"===e&&this._hide(i))}),this))},e.prototype._keepShow=function(){var t=this._tooltipModel,e=this._ecModel,n=this._api,i=t.get("triggerOn");if(null!=this._lastX&&null!=this._lastY&&"none"!==i&&"click"!==i){var r=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout((function(){!n.isDisposed()&&r.manuallyShowTip(t,e,n,{x:r._lastX,y:r._lastY,dataByCoordSys:r._lastDataByCoordSys})}))}},e.prototype.manuallyShowTip=function(t,e,n,i){if(i.from!==this.uid&&!r.node&&n.getDom()){var o=gV(i,n);this._ticket="";var a=i.dataByCoordSys,s=function(t,e,n){var i=Eo(t).queryOptionMap,r=i.keys()[0];if(!r||"series"===r)return;var o=Bo(e,r,i.get(r),{useDefault:!1,enableAll:!1,enableNone:!1}),a=o.models[0];if(!a)return;var s,l=n.getViewOfComponentModel(a);if(l.group.traverse((function(e){var n=Qs(e).tooltipConfig;if(n&&n.name===t.name)return s=e,!0})),s)return{componentMainType:r,componentIndex:a.componentIndex,el:s}}(i,e,n);if(s){var l=s.el.getBoundingRect().clone();l.applyTransform(s.el.transform),this._tryShow({offsetX:l.x+l.width/2,offsetY:l.y+l.height/2,target:s.el,position:i.position,positionDefault:"bottom"},o)}else if(i.tooltip&&null!=i.x&&null!=i.y){var u=pV;u.x=i.x,u.y=i.y,u.update(),Qs(u).tooltipConfig={name:null,option:i.tooltip},this._tryShow({offsetX:i.x,offsetY:i.y,target:u},o)}else if(a)this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,dataByCoordSys:a,tooltipOption:i.tooltipOption},o);else if(null!=i.seriesIndex){if(this._manuallyAxisShowTip(t,e,n,i))return;var h=wN(i,e),c=h.point[0],p=h.point[1];null!=c&&null!=p&&this._tryShow({offsetX:c,offsetY:p,target:h.el,position:i.position,positionDefault:"bottom"},o)}else null!=i.x&&null!=i.y&&(n.dispatchAction({type:"updateAxisPointer",x:i.x,y:i.y}),this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,target:n.getZr().findHover(i.x,i.y).target},o))}},e.prototype.manuallyHideTip=function(t,e,n,i){var r=this._tooltipContent;this._tooltipModel&&r.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=this._lastDataByCoordSys=null,i.from!==this.uid&&this._hide(gV(i,n))},e.prototype._manuallyAxisShowTip=function(t,e,n,i){var r=i.seriesIndex,o=i.dataIndex,a=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=r&&null!=o&&null!=a){var s=e.getSeriesByIndex(r);if(s)if("axis"===fV([s.getData().getItemModel(o),s,(s.coordinateSystem||{}).model],this._tooltipModel).get("trigger"))return n.dispatchAction({type:"updateAxisPointer",seriesIndex:r,dataIndex:o,position:i.position}),!0}},e.prototype._tryShow=function(t,e){var n=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var i=t.dataByCoordSys;if(i&&i.length)this._showAxisTooltip(i,t);else if(n){var r,o;this._lastDataByCoordSys=null,ky(n,(function(t){return null!=Qs(t).dataIndex?(r=t,!0):null!=Qs(t).tooltipConfig?(o=t,!0):void 0}),!0),r?this._showSeriesItemTooltip(t,r,e):o?this._showComponentItemTooltip(t,o,e):this._hide(e)}else this._lastDataByCoordSys=null,this._hide(e)}},e.prototype._showOrMove=function(t,e){var n=t.get("showDelay");e=W(e,this),clearTimeout(this._showTimout),n>0?this._showTimout=setTimeout(e,n):e()},e.prototype._showAxisTooltip=function(t,e){var n=this._ecModel,i=this._tooltipModel,r=[e.offsetX,e.offsetY],o=fV([e.tooltipOption],i),a=this._renderMode,s=[],l=ng("section",{blocks:[],noHeader:!0}),u=[],h=new dg;E(t,(function(t){E(t.dataByAxis,(function(t){var e=n.getComponent(t.axisDim+"Axis",t.axisIndex),r=t.value;if(e&&null!=r){var o=rN(r,e.axis,n,t.seriesDataIndices,t.valueLabelOpt),c=ng("section",{header:o,noHeader:!ut(o),sortBlocks:!0,blocks:[]});l.blocks.push(c),E(t.seriesDataIndices,(function(l){var p=n.getSeriesByIndex(l.seriesIndex),d=l.dataIndexInside,f=p.getDataParams(d);if(!(f.dataIndex<0)){f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=__(e.axis,{value:r}),f.axisValueLabel=o,f.marker=h.makeTooltipMarker("item",_p(f.color),a);var g=mf(p.formatTooltip(d,!0,null)),y=g.frag;if(y){var v=fV([p],i).get("valueFormatter");c.blocks.push(v?A({valueFormatter:v},y):y)}g.text&&u.push(g.text),s.push(f)}}))}}))})),l.blocks.reverse(),u.reverse();var c=e.position,p=o.get("order"),d=lg(l,h,a,p,n.get("useUTC"),o.get("textStyle"));d&&u.unshift(d);var f="richText"===a?"\n\n":"
        ",g=u.join(f);this._showOrMove(o,(function(){this._updateContentNotChangedOnAxis(t,s)?this._updatePosition(o,c,r[0],r[1],this._tooltipContent,s):this._showTooltipContent(o,g,s,Math.random()+"",r[0],r[1],c,null,h)}))},e.prototype._showSeriesItemTooltip=function(t,e,n){var i=this._ecModel,r=Qs(e),o=r.seriesIndex,a=i.getSeriesByIndex(o),s=r.dataModel||a,l=r.dataIndex,u=r.dataType,h=s.getData(u),c=this._renderMode,p=t.positionDefault,d=fV([h.getItemModel(l),s,a&&(a.coordinateSystem||{}).model],this._tooltipModel,p?{position:p}:null),f=d.get("trigger");if(null==f||"item"===f){var g=s.getDataParams(l,u),y=new dg;g.marker=y.makeTooltipMarker("item",_p(g.color),c);var v=mf(s.formatTooltip(l,!1,u)),m=d.get("order"),x=d.get("valueFormatter"),_=v.frag,b=_?lg(x?A({valueFormatter:x},_):_,y,c,m,i.get("useUTC"),d.get("textStyle")):v.text,w="item_"+s.name+"_"+l;this._showOrMove(d,(function(){this._showTooltipContent(d,b,g,w,t.offsetX,t.offsetY,t.position,t.target,y)})),n({type:"showTip",dataIndexInside:l,dataIndex:h.getRawIndex(l),seriesIndex:o,from:this.uid})}},e.prototype._showComponentItemTooltip=function(t,e,n){var i=Qs(e),r=i.tooltipConfig.option||{};if(U(r)){r={content:r,formatter:r}}var o=[r],a=this._ecModel.getComponent(i.componentMainType,i.componentIndex);a&&o.push(a),o.push({formatter:r.content});var s=t.positionDefault,l=fV(o,this._tooltipModel,s?{position:s}:null),u=l.get("content"),h=Math.random()+"",c=new dg;this._showOrMove(l,(function(){var n=T(l.get("formatterParams")||{});this._showTooltipContent(l,u,n,h,t.offsetX,t.offsetY,t.position,e,c)})),n({type:"showTip",from:this.uid})},e.prototype._showTooltipContent=function(t,e,n,i,r,o,a,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent;u.setEnterable(t.get("enterable"));var h=t.get("formatter");a=a||t.get("position");var c=e,p=this._getNearestPoint([r,o],n,t.get("trigger"),t.get("borderColor")).color;if(h)if(U(h)){var d=t.ecModel.get("useUTC"),f=Y(n)?n[0]:n;c=h,f&&f.axisType&&f.axisType.indexOf("time")>=0&&(c=qc(f.axisValue,c,d)),c=mp(c,n,!0)}else if(X(h)){var g=W((function(e,i){e===this._ticket&&(u.setContent(i,l,t,p,a),this._updatePosition(t,a,r,o,u,n,s))}),this);this._ticket=i,c=h(n,i,g)}else c=h;u.setContent(c,l,t,p,a),u.show(t,p),this._updatePosition(t,a,r,o,u,n,s)}},e.prototype._getNearestPoint=function(t,e,n,i){return"axis"===n||Y(e)?{color:i||("html"===this._renderMode?"#fff":"none")}:Y(e)?void 0:{color:i||e.color||e.borderColor}},e.prototype._updatePosition=function(t,e,n,i,r,o,a){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=r.getSize(),h=t.get("align"),c=t.get("verticalAlign"),p=a&&a.getBoundingRect().clone();if(a&&p.applyTransform(a.transform),X(e)&&(e=e([n,i],o,r.el,p,{viewSize:[s,l],contentSize:u.slice()})),Y(e))n=Ur(e[0],s),i=Ur(e[1],l);else if(q(e)){var d=e;d.width=u[0],d.height=u[1];var f=Cp(d,{width:s,height:l});n=f.x,i=f.y,h=null,c=null}else if(U(e)&&a){var g=function(t,e,n,i){var r=n[0],o=n[1],a=Math.ceil(Math.SQRT2*i)+8,s=0,l=0,u=e.width,h=e.height;switch(t){case"inside":s=e.x+u/2-r/2,l=e.y+h/2-o/2;break;case"top":s=e.x+u/2-r/2,l=e.y-o-a;break;case"bottom":s=e.x+u/2-r/2,l=e.y+h+a;break;case"left":s=e.x-r-a,l=e.y+h/2-o/2;break;case"right":s=e.x+u+a,l=e.y+h/2-o/2}return[s,l]}(e,p,u,t.get("borderWidth"));n=g[0],i=g[1]}else{g=function(t,e,n,i,r,o,a){var s=n.getSize(),l=s[0],u=s[1];null!=o&&(t+l+o+2>i?t-=l+o:t+=o);null!=a&&(e+u+a>r?e-=u+a:e+=a);return[t,e]}(n,i,r,s,l,h?null:20,c?null:20);n=g[0],i=g[1]}if(h&&(n-=yV(h)?u[0]/2:"right"===h?u[0]:0),c&&(i-=yV(c)?u[1]/2:"bottom"===c?u[1]:0),$z(t)){g=function(t,e,n,i,r){var o=n.getSize(),a=o[0],s=o[1];return t=Math.min(t+a,i)-a,e=Math.min(e+s,r)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}(n,i,r,s,l);n=g[0],i=g[1]}r.moveTo(n,i)},e.prototype._updateContentNotChangedOnAxis=function(t,e){var n=this._lastDataByCoordSys,i=this._cbParamsList,r=!!n&&n.length===t.length;return r&&E(n,(function(n,o){var a=n.dataByAxis||[],s=(t[o]||{}).dataByAxis||[];(r=r&&a.length===s.length)&&E(a,(function(t,n){var o=s[n]||{},a=t.seriesDataIndices||[],l=o.seriesDataIndices||[];(r=r&&t.value===o.value&&t.axisType===o.axisType&&t.axisId===o.axisId&&a.length===l.length)&&E(a,(function(t,e){var n=l[e];r=r&&t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})),i&&E(t.seriesDataIndices,(function(t){var n=t.seriesIndex,o=e[n],a=i[n];o&&a&&a.data!==o.data&&(r=!1)}))}))})),this._lastDataByCoordSys=t,this._cbParamsList=e,!!r},e.prototype._hide=function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},e.prototype.dispose=function(t,e){!r.node&&e.getDom()&&(Gg(this,"_updatePosition"),this._tooltipContent.dispose(),_N("itemTooltip",e))},e.type="tooltip",e}(Tg);function fV(t,e,n){var i,r=e.ecModel;n?(i=new Mc(n,r,r),i=new Mc(e.option,i,r)):i=e;for(var o=t.length-1;o>=0;o--){var a=t[o];a&&(a instanceof Mc&&(a=a.get("tooltip",!0)),U(a)&&(a={formatter:a}),a&&(i=new Mc(a,i,r)))}return i}function gV(t,e){return t.dispatchAction||W(e.dispatchAction,e)}function yV(t){return"center"===t||"middle"===t}var vV=["rect","polygon","keep","clear"];function mV(t,e){var n=bo(t?t.brush:[]);if(n.length){var i=[];E(n,(function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(i=i.concat(e))}));var r=t&&t.toolbox;Y(r)&&(r=r[0]),r||(r={feature:{}},t.toolbox=[r]);var o=r.feature||(r.feature={}),a=o.brush||(o.brush={}),s=a.type||(a.type=[]);s.push.apply(s,i),function(t){var e={};E(t,(function(t){e[t]=1})),t.length=0,E(e,(function(e,n){t.push(n)}))}(s),e&&!s.length&&s.push.apply(s,vV)}}var xV=E;function _V(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function bV(t,e,n){var i={};return xV(e,(function(e){var r,o=i[e]=((r=function(){}).prototype.__hidden=r.prototype,new r);xV(t[e],(function(t,i){if(_D.isValidType(i)){var r={type:i,visual:t};n&&n(r,e),o[i]=new _D(r),"opacity"===i&&((r=T(r)).type="colorAlpha",o.__hidden.__alphaForOpacity=new _D(r))}}))})),i}function wV(t,e,n){var i;E(n,(function(t){e.hasOwnProperty(t)&&_V(e[t])&&(i=!0)})),i&&E(n,(function(n){e.hasOwnProperty(n)&&_V(e[n])?t[n]=T(e[n]):delete t[n]}))}var SV={lineX:MV(0),lineY:MV(1),rect:{point:function(t,e,n){return t&&n.boundingRect.contain(t[0],t[1])},rect:function(t,e,n){return t&&n.boundingRect.intersect(t)}},polygon:{point:function(t,e,n){return t&&n.boundingRect.contain(t[0],t[1])&&A_(n.range,t[0],t[1])},rect:function(t,e,n){var i=n.range;if(!t||i.length<=1)return!1;var r=t.x,o=t.y,a=t.width,s=t.height,l=i[0];return!!(A_(i,r,o)||A_(i,r+a,o)||A_(i,r,o+s)||A_(i,r+a,o+s)||ze.create(t).contain(l[0],l[1])||Yh(r,o,r+a,o,i)||Yh(r,o,r,o+s,i)||Yh(r+a,o,r+a,o+s,i)||Yh(r,o+s,r+a,o+s,i))||void 0}}};function MV(t){var e=["x","y"],n=["width","height"];return{point:function(e,n,i){if(e){var r=i.range;return IV(e[t],r)}},rect:function(i,r,o){if(i){var a=o.range,s=[i[e[t]],i[e[t]]+i[n[t]]];return s[1]e[0][1]&&(e[0][1]=o[0]),o[1]e[1][1]&&(e[1][1]=o[1])}return e&&RV(e)}};function RV(t){return new ze(t[0][0],t[1][0],t[0][1]-t[0][0],t[1][1]-t[1][0])}var NV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new Jk(e.getZr())).on("brush",W(this._onBrush,this)).mount()},e.prototype.render=function(t,e,n,i){this.model=t,this._updateController(t,e,n,i)},e.prototype.updateTransform=function(t,e,n,i){AV(e),this._updateController(t,e,n,i)},e.prototype.updateVisual=function(t,e,n,i){this.updateTransform(t,e,n,i)},e.prototype.updateView=function(t,e,n,i){this._updateController(t,e,n,i)},e.prototype._updateController=function(t,e,n,i){(!i||i.$from!==t.id)&&this._brushController.setPanels(t.brushTargetManager.makePanelOpts(n)).enableBrush(t.brushOption).updateCovers(t.areas.slice())},e.prototype.dispose=function(){this._brushController.dispose()},e.prototype._onBrush=function(t){var e=this.model.id,n=this.model.brushTargetManager.setOutputRanges(t.areas,this.ecModel);(!t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:e,areas:T(n),$from:e}),t.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:e,areas:T(n),$from:e})},e.type="brush",e}(Tg),EV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.areas=[],n.brushOption={},n}return n(e,t),e.prototype.optionUpdated=function(t,e){var n=this.option;!e&&wV(n,t,["inBrush","outOfBrush"]);var i=n.inBrush=n.inBrush||{};n.outOfBrush=n.outOfBrush||{color:"#ddd"},i.hasOwnProperty("liftZ")||(i.liftZ=5)},e.prototype.setAreas=function(t){t&&(this.areas=z(t,(function(t){return zV(this.option,t)}),this))},e.prototype.setBrushOption=function(t){this.brushOption=zV(this.option,t),this.brushType=this.brushOption.brushType},e.type="brush",e.dependencies=["geo","grid","xAxis","yAxis","parallel","series"],e.defaultOption={seriesIndex:"all",brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(210,219,238,0.3)",borderColor:"#D2DBEE"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},e}(Rp);function zV(t,e){return C({brushType:t.brushType,brushMode:t.brushMode,transformable:t.transformable,brushStyle:new Mc(t.brushStyle).getItemStyle(),removeOnClick:t.removeOnClick,z:t.z},e,!0)}var VV=["rect","polygon","lineX","lineY","keep","clear"],BV=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n){var i,r,o;e.eachComponent({mainType:"brush"},(function(t){i=t.brushType,r=t.brushOption.brushMode||"single",o=o||!!t.areas.length})),this._brushType=i,this._brushMode=r,E(t.get("type",!0),(function(e){t.setIconStatus(e,("keep"===e?"multiple"===r:"clear"===e?o:e===i)?"emphasis":"normal")}))},e.prototype.updateView=function(t,e,n){this.render(t,e,n)},e.prototype.getIcons=function(){var t=this.model,e=t.get("icon",!0),n={};return E(t.get("type",!0),(function(t){e[t]&&(n[t]=e[t])})),n},e.prototype.onclick=function(t,e,n){var i=this._brushType,r=this._brushMode;"clear"===n?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===n?i:i!==n&&n,brushMode:"keep"===n?"multiple"===r?"single":"multiple":r}})},e.getDefaultOption=function(t){return{show:!0,type:VV.slice(),icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:t.getLocaleModel().get(["toolbox","brush","title"])}},e}(lz);var FV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode={type:"box",ignoreSize:!0},n}return n(e,t),e.type="title",e.defaultOption={z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bold",color:"#464646"},subtextStyle:{fontSize:12,color:"#6E7079"}},e}(Rp),GV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){if(this.group.removeAll(),t.get("show")){var i=this.group,r=t.getModel("textStyle"),o=t.getModel("subtextStyle"),a=t.get("textAlign"),s=rt(t.get("textBaseline"),t.get("textVerticalAlign")),l=new Fs({style:nc(r,{text:t.get("text"),fill:r.getTextColor()},{disableBox:!0}),z2:10}),u=l.getBoundingRect(),h=t.get("subtext"),c=new Fs({style:nc(o,{text:h,fill:o.getTextColor(),y:u.height+t.get("itemGap"),verticalAlign:"top"},{disableBox:!0}),z2:10}),p=t.get("link"),d=t.get("sublink"),f=t.get("triggerEvent",!0);l.silent=!p&&!f,c.silent=!d&&!f,p&&l.on("click",(function(){bp(p,"_"+t.get("target"))})),d&&c.on("click",(function(){bp(d,"_"+t.get("subtarget"))})),Qs(l).eventData=Qs(c).eventData=f?{componentType:"title",componentIndex:t.componentIndex}:null,i.add(l),h&&i.add(c);var g=i.getBoundingRect(),y=t.getBoxLayoutParams();y.width=g.width,y.height=g.height;var v=Cp(y,{width:n.getWidth(),height:n.getHeight()},t.get("padding"));a||("middle"===(a=t.get("left")||t.get("right"))&&(a="center"),"right"===a?v.x+=v.width:"center"===a&&(v.x+=v.width/2)),s||("center"===(s=t.get("top")||t.get("bottom"))&&(s="middle"),"bottom"===s?v.y+=v.height:"middle"===s&&(v.y+=v.height/2),s=s||"top"),i.x=v.x,i.y=v.y,i.markRedraw();var m={align:a,verticalAlign:s};l.setStyle(m),c.setStyle(m),g=i.getBoundingRect();var x=v.margin,_=t.getItemStyle(["color","opacity"]);_.fill=t.get("backgroundColor");var b=new zs({shape:{x:g.x-x[3],y:g.y-x[0],width:g.width+x[1]+x[3],height:g.height+x[0]+x[2],r:t.get("borderRadius")},style:_,subPixelOptimize:!0,silent:!0});i.add(b)}},e.type="title",e}(Tg);var WV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode="box",n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n),this._initData()},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),this._initData()},e.prototype.setCurrentIndex=function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(t>=e&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},e.prototype.getCurrentIndex=function(){return this.option.currentIndex},e.prototype.isIndexMax=function(){return this.getCurrentIndex()>=this._data.count()-1},e.prototype.setPlayState=function(t){this.option.autoPlay=!!t},e.prototype.getPlayState=function(){return!!this.option.autoPlay},e.prototype._initData=function(){var t,e=this.option,n=e.data||[],i=e.axisType,r=this._names=[];"category"===i?(t=[],E(n,(function(e,n){var i,o=Ao(Mo(e),"");q(e)?(i=T(e)).value=n:i=n,t.push(i),r.push(o)}))):t=n;var o={category:"ordinal",time:"time",value:"number"}[i]||"number";(this._data=new lx([{name:"value",type:o}],this)).initData(t,r)},e.prototype.getData=function(){return this._data},e.prototype.getCategories=function(){if("category"===this.get("axisType"))return this._names.slice()},e.type="timeline",e.defaultOption={z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},e}(Rp),HV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="timeline.slider",e.defaultOption=Cc(WV.defaultOption,{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"circle",symbolSize:12,lineStyle:{show:!0,width:2,color:"#DAE1F5"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#A4B1D7"},itemStyle:{color:"#A4B1D7",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:15,color:"#316bf3",borderColor:"#fff",borderWidth:2,shadowBlur:2,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0, 0, 0, 0.3)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:24,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z",prevIcon:"M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z",prevBtnSize:18,nextBtnSize:18,color:"#A4B1D7",borderColor:"#A4B1D7",borderWidth:1},emphasis:{label:{show:!0,color:"#6f778d"},itemStyle:{color:"#316BF3"},controlStyle:{color:"#316BF3",borderColor:"#316BF3",borderWidth:2}},progress:{lineStyle:{color:"#316BF3"},itemStyle:{color:"#316BF3"},label:{color:"#6f778d"}},data:[]}),e}(WV);R(HV,vf.prototype);var YV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="timeline",e}(Tg),XV=function(t){function e(e,n,i,r){var o=t.call(this,e,n,i)||this;return o.type=r||"value",o}return n(e,t),e.prototype.getLabelModel=function(){return this.model.getModel("label")},e.prototype.isHorizontal=function(){return"horizontal"===this.model.get("orient")},e}(nb),UV=Math.PI,ZV=Oo(),jV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){this.api=e},e.prototype.render=function(t,e,n){if(this.model=t,this.api=n,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var i=this._layout(t,n),r=this._createGroup("_mainGroup"),o=this._createGroup("_labelGroup"),a=this._axis=this._createAxis(i,t);t.formatTooltip=function(t){return ng("nameValue",{noName:!0,value:a.scale.getLabel({value:t})})},E(["AxisLine","AxisTick","Control","CurrentPointer"],(function(e){this["_render"+e](i,r,a,t)}),this),this._renderAxisLabel(i,o,a,t),this._position(i,t)}this._doPlayStop(),this._updateTicksStatus()},e.prototype.remove=function(){this._clearTimer(),this.group.removeAll()},e.prototype.dispose=function(){this._clearTimer()},e.prototype._layout=function(t,e){var n,i,r,o,a=t.get(["label","position"]),s=t.get("orient"),l=function(t,e){return Cp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()},t.get("padding"))}(t,e),u={horizontal:"center",vertical:(n=null==a||"auto"===a?"horizontal"===s?l.y+l.height/2=0||"+"===n?"left":"right"},h={horizontal:n>=0||"+"===n?"top":"bottom",vertical:"middle"},c={horizontal:0,vertical:UV/2},p="vertical"===s?l.height:l.width,d=t.getModel("controlStyle"),f=d.get("show",!0),g=f?d.get("itemSize"):0,y=f?d.get("itemGap"):0,v=g+y,m=t.get(["label","rotate"])||0;m=m*UV/180;var x=d.get("position",!0),_=f&&d.get("showPlayBtn",!0),b=f&&d.get("showPrevBtn",!0),w=f&&d.get("showNextBtn",!0),S=0,M=p;"left"===x||"bottom"===x?(_&&(i=[0,0],S+=v),b&&(r=[S,0],S+=v),w&&(o=[M-g,0],M-=v)):(_&&(i=[M-g,0],M-=v),b&&(r=[0,0],S+=v),w&&(o=[M-g,0],M-=v));var I=[S,M];return t.get("inverse")&&I.reverse(),{viewRect:l,mainLength:p,orient:s,rotation:c[s],labelRotation:m,labelPosOpt:n,labelAlign:t.get(["label","align"])||u[s],labelBaseline:t.get(["label","verticalAlign"])||t.get(["label","baseline"])||h[s],playPosition:i,prevBtnPosition:r,nextBtnPosition:o,axisExtent:I,controlSize:g,controlGap:y}},e.prototype._position=function(t,e){var n=this._mainGroup,i=this._labelGroup,r=t.viewRect;if("vertical"===t.orient){var o=[1,0,0,1,0,0],a=r.x,s=r.y+r.height;we(o,o,[-a,-s]),Se(o,o,-UV/2),we(o,o,[a,s]),(r=r.clone()).applyTransform(o)}var l=y(r),u=y(n.getBoundingRect()),h=y(i.getBoundingRect()),c=[n.x,n.y],p=[i.x,i.y];p[0]=c[0]=l[0][0];var d,f=t.labelPosOpt;null==f||U(f)?(v(c,u,l,1,d="+"===f?0:1),v(p,h,l,1,1-d)):(v(c,u,l,1,d=f>=0?0:1),p[1]=c[1]+f);function g(t){t.originX=l[0][0]-t.x,t.originY=l[1][0]-t.y}function y(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function v(t,e,n,i,r){t[i]+=n[i][r]-e[i][r]}n.setPosition(c),i.setPosition(p),n.rotation=i.rotation=t.rotation,g(n),g(i)},e.prototype._createAxis=function(t,e){var n=e.getData(),i=e.get("axisType"),r=function(t,e){if(e=e||t.get("type"),e)switch(e){case"category":return new Lx({ordinalMeta:t.getCategories(),extent:[1/0,-1/0]});case"time":return new Zx({locale:t.ecModel.getLocaleModel(),useUTC:t.ecModel.get("useUTC")});default:return new Ox}}(e,i);r.getTicks=function(){return n.mapArray(["value"],(function(t){return{value:t}}))};var o=n.getDataExtent("value");r.setExtent(o[0],o[1]),r.calcNiceTicks();var a=new XV("value",r,t.axisExtent,i);return a.model=e,a},e.prototype._createGroup=function(t){var e=this[t]=new zr;return this.group.add(e),e},e.prototype._renderAxisLine=function(t,e,n,i){var r=n.getExtent();if(i.get(["lineStyle","show"])){var o=new Zu({shape:{x1:r[0],y1:0,x2:r[1],y2:0},style:A({lineCap:"round"},i.getModel("lineStyle").getLineStyle()),silent:!0,z2:1});e.add(o);var a=this._progressLine=new Zu({shape:{x1:r[0],x2:this._currentPointer?this._currentPointer.x:r[0],y1:0,y2:0},style:k({lineCap:"round",lineWidth:o.style.lineWidth},i.getModel(["progress","lineStyle"]).getLineStyle()),silent:!0,z2:1});e.add(a)}},e.prototype._renderAxisTick=function(t,e,n,i){var r=this,o=i.getData(),a=n.scale.getTicks();this._tickSymbols=[],E(a,(function(t){var a=n.dataToCoord(t.value),s=o.getItemModel(t.value),l=s.getModel("itemStyle"),u=s.getModel(["emphasis","itemStyle"]),h=s.getModel(["progress","itemStyle"]),c={x:a,y:0,onclick:W(r._changeTimeline,r,t.value)},p=qV(s,l,e,c);p.ensureState("emphasis").style=u.getItemStyle(),p.ensureState("progress").style=h.getItemStyle(),Hl(p);var d=Qs(p);s.get("tooltip")?(d.dataIndex=t.value,d.dataModel=i):d.dataIndex=d.dataModel=null,r._tickSymbols.push(p)}))},e.prototype._renderAxisLabel=function(t,e,n,i){var r=this;if(n.getLabelModel().get("show")){var o=i.getData(),a=n.getViewLabels();this._tickLabels=[],E(a,(function(i){var a=i.tickValue,s=o.getItemModel(a),l=s.getModel("label"),u=s.getModel(["emphasis","label"]),h=s.getModel(["progress","label"]),c=n.dataToCoord(i.tickValue),p=new Fs({x:c,y:0,rotation:t.labelRotation-t.rotation,onclick:W(r._changeTimeline,r,a),silent:!1,style:nc(l,{text:i.formattedLabel,align:t.labelAlign,verticalAlign:t.labelBaseline})});p.ensureState("emphasis").style=nc(u),p.ensureState("progress").style=nc(h),e.add(p),Hl(p),ZV(p).dataIndex=a,r._tickLabels.push(p)}))}},e.prototype._renderControl=function(t,e,n,i){var r=t.controlSize,o=t.rotation,a=i.getModel("controlStyle").getItemStyle(),s=i.getModel(["emphasis","controlStyle"]).getItemStyle(),l=i.getPlayState(),u=i.get("inverse",!0);function h(t,n,l,u){if(t){var h=Ir(rt(i.get(["controlStyle",n+"BtnSize"]),r),r),c=function(t,e,n,i){var r=i.style,o=Hh(t.get(["controlStyle",e]),i||{},new ze(n[0],n[1],n[2],n[3]));r&&o.setStyle(r);return o}(i,n+"Icon",[0,-h/2,h,h],{x:t[0],y:t[1],originX:r/2,originY:0,rotation:u?-o:0,rectHover:!0,style:a,onclick:l});c.ensureState("emphasis").style=s,e.add(c),Hl(c)}}h(t.nextBtnPosition,"next",W(this._changeTimeline,this,u?"-":"+")),h(t.prevBtnPosition,"prev",W(this._changeTimeline,this,u?"+":"-")),h(t.playPosition,l?"stop":"play",W(this._handlePlayClick,this,!l),!0)},e.prototype._renderCurrentPointer=function(t,e,n,i){var r=i.getData(),o=i.getCurrentIndex(),a=r.getItemModel(o).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=W(s._handlePointerDrag,s),t.ondragend=W(s._handlePointerDragend,s),KV(t,s._progressLine,o,n,i,!0)},onUpdate:function(t){KV(t,s._progressLine,o,n,i)}};this._currentPointer=qV(a,a,this._mainGroup,{},this._currentPointer,l)},e.prototype._handlePlayClick=function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},e.prototype._handlePointerDrag=function(t,e,n){this._clearTimer(),this._pointerChangeTimeline([n.offsetX,n.offsetY])},e.prototype._handlePointerDragend=function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},e.prototype._pointerChangeTimeline=function(t,e){var n=this._toAxisCoord(t)[0],i=jr(this._axis.getExtent().slice());n>i[1]&&(n=i[1]),n=0&&(a[o]=+a[o].toFixed(c)),[a,h]}var sB={min:H(aB,"min"),max:H(aB,"max"),average:H(aB,"average"),median:H(aB,"median")};function lB(t,e){if(e){var n=t.getData(),i=t.coordinateSystem,r=i&&i.dimensions;if(!function(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}(e)&&!Y(e.coord)&&Y(r)){var o=uB(e,n,i,t);if((e=T(e)).type&&sB[e.type]&&o.baseAxis&&o.valueAxis){var a=P(r,o.baseAxis.dim),s=P(r,o.valueAxis.dim),l=sB[e.type](n,o.baseDataDim,o.valueDataDim,a,s);e.coord=l[0],e.value=l[1]}else e.coord=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis]}if(null!=e.coord&&Y(r))for(var u=e.coord,h=0;h<2;h++)sB[u[h]]&&(u[h]=pB(n,n.mapDimension(r[h]),u[h]));else e.coord=[];return e}}function uB(t,e,n,i){var r={};return null!=t.valueIndex||null!=t.valueDim?(r.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,r.valueAxis=n.getAxis(function(t,e){var n=t.getData().getDimensionInfo(e);return n&&n.coordDim}(i,r.valueDataDim)),r.baseAxis=n.getOtherAxis(r.valueAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim)):(r.baseAxis=i.getBaseAxis(),r.valueAxis=n.getOtherAxis(r.baseAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim),r.valueDataDim=e.mapDimension(r.valueAxis.dim)),r}function hB(t,e){return!(t&&t.containData&&e.coord&&!oB(e))||t.containData(e.coord)}function cB(t,e){return t?function(t,n,i,r){return wf(r<2?t.coord&&t.coord[r]:t.value,e[r])}:function(t,n,i,r){return wf(t.value,e[r])}}function pB(t,e,n){if("average"===n){var i=0,r=0;return t.each(e,(function(t,e){isNaN(t)||(i+=t,r++)})),i/r}return"median"===n?t.getMedian(e):t.getDataExtent(e)["max"===n?1:0]}var dB=Oo(),fB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){this.markerGroupMap=yt()},e.prototype.render=function(t,e,n){var i=this,r=this.markerGroupMap;r.each((function(t){dB(t).keep=!1})),e.eachSeries((function(t){var r=iB.getMarkerModelFromSeries(t,i.type);r&&i.renderSeries(t,r,e,n)})),r.each((function(t){!dB(t).keep&&i.group.remove(t.group)}))},e.prototype.markKeep=function(t){dB(t).keep=!0},e.prototype.toggleBlurSeries=function(t,e){var n=this;E(t,(function(t){var i=iB.getMarkerModelFromSeries(t,n.type);i&&i.getData().eachItemGraphicEl((function(t){t&&(e?Pl(t):Ol(t))}))}))},e.type="marker",e}(Tg);function gB(t,e,n){var i=e.coordinateSystem;t.each((function(r){var o,a=t.getItemModel(r),s=Ur(a.get("x"),n.getWidth()),l=Ur(a.get("y"),n.getHeight());if(isNaN(s)||isNaN(l)){if(e.getMarkerPosition)o=e.getMarkerPosition(t.getValues(t.dimensions,r));else if(i){var u=t.get(i.dimensions[0],r),h=t.get(i.dimensions[1],r);o=i.dataToPoint([u,h])}}else o=[s,l];isNaN(s)||(o[0]=s),isNaN(l)||(o[1]=l),t.setItemLayout(r,o)}))}var yB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=iB.getMarkerModelFromSeries(t,"markPoint");e&&(gB(e.getData(),t,n),this.markerGroupMap.get(t.id).updateLayout())}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,new hS),u=function(t,e,n){var i;i=t?z(t&&t.dimensions,(function(t){return A(A({},e.getData().getDimensionInfo(e.getData().mapDimension(t))||{}),{name:t,ordinalMeta:null})})):[{name:"value",type:"float"}];var r=new lx(i,n),o=z(n.get("data"),H(lB,e));t&&(o=B(o,H(hB,t)));var a=cB(!!t,i);return r.initData(o,null,a),r}(r,t,e);e.setData(u),gB(e.getData(),t,i),u.each((function(t){var n=u.getItemModel(t),i=n.getShallow("symbol"),r=n.getShallow("symbolSize"),o=n.getShallow("symbolRotate"),s=n.getShallow("symbolOffset"),l=n.getShallow("symbolKeepAspect");if(X(i)||X(r)||X(o)||X(s)){var h=e.getRawValue(t),c=e.getDataParams(t);X(i)&&(i=i(h,c)),X(r)&&(r=r(h,c)),X(o)&&(o=o(h,c)),X(s)&&(s=s(h,c))}var p=n.getModel("itemStyle").getItemStyle(),d=Ty(a,"color");p.fill||(p.fill=d),u.setItemVisual(t,{symbol:i,symbolSize:r,symbolRotate:o,symbolOffset:s,symbolKeepAspect:l,style:p})})),l.updateData(u),this.group.add(l.group),u.eachItemGraphicEl((function(t){t.traverse((function(t){Qs(t).dataModel=e}))})),this.markKeep(l),l.group.silent=e.get("silent")||t.get("silent")},e.type="markPoint",e}(fB);var vB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.createMarkerModelFromSeries=function(t,n,i){return new e(t,n,i)},e.type="markLine",e.defaultOption={z:5,symbol:["circle","arrow"],symbolSize:[8,16],symbolOffset:0,precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end",distance:5},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"},e}(iB),mB=Oo(),xB=function(t,e,n,i){var r,o=t.getData();if(Y(i))r=i;else{var a=i.type;if("min"===a||"max"===a||"average"===a||"median"===a||null!=i.xAxis||null!=i.yAxis){var s=void 0,l=void 0;if(null!=i.yAxis||null!=i.xAxis)s=e.getAxis(null!=i.yAxis?"y":"x"),l=it(i.yAxis,i.xAxis);else{var u=uB(i,o,e,t);s=u.valueAxis,l=pB(o,yx(o,u.valueDataDim),a)}var h="x"===s.dim?0:1,c=1-h,p=T(i),d={coord:[]};p.type=null,p.coord=[],p.coord[c]=-1/0,d.coord[c]=1/0;var f=n.get("precision");f>=0&&j(l)&&(l=+l.toFixed(Math.min(f,20))),p.coord[h]=d.coord[h]=l,r=[p,d,{type:a,valueIndex:i.valueIndex,value:l}]}else r=[]}var g=[lB(t,r[0]),lB(t,r[1]),A({},r[2])];return g[2].type=g[2].type||null,C(g[2],g[0]),C(g[2],g[1]),g};function _B(t){return!isNaN(t)&&!isFinite(t)}function bB(t,e,n,i){var r=1-t,o=i.dimensions[t];return _B(e[r])&&_B(n[r])&&e[t]===n[t]&&i.getAxis(o).containData(e[t])}function wB(t,e){if("cartesian2d"===t.type){var n=e[0].coord,i=e[1].coord;if(n&&i&&(bB(1,n,i,t)||bB(0,n,i,t)))return!0}return hB(t,e[0])&&hB(t,e[1])}function SB(t,e,n,i,r){var o,a=i.coordinateSystem,s=t.getItemModel(e),l=Ur(s.get("x"),r.getWidth()),u=Ur(s.get("y"),r.getHeight());if(isNaN(l)||isNaN(u)){if(i.getMarkerPosition)o=i.getMarkerPosition(t.getValues(t.dimensions,e));else{var h=a.dimensions,c=t.get(h[0],e),p=t.get(h[1],e);o=a.dataToPoint([c,p])}if(MS(a,"cartesian2d")){var d=a.getAxis("x"),f=a.getAxis("y");h=a.dimensions;_B(t.get(h[0],e))?o[0]=d.toGlobalCoord(d.getExtent()[n?0:1]):_B(t.get(h[1],e))&&(o[1]=f.toGlobalCoord(f.getExtent()[n?0:1]))}isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u)}else o=[l,u];t.setItemLayout(e,o)}var MB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=iB.getMarkerModelFromSeries(t,"markLine");if(e){var i=e.getData(),r=mB(e).from,o=mB(e).to;r.each((function(e){SB(r,e,!0,t,n),SB(o,e,!1,t,n)})),i.each((function(t){i.setItemLayout(t,[r.getItemLayout(t),o.getItemLayout(t)])})),this.markerGroupMap.get(t.id).updateLayout()}}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,new RA);this.group.add(l.group);var u=function(t,e,n){var i;i=t?z(t&&t.dimensions,(function(t){return A(A({},e.getData().getDimensionInfo(e.getData().mapDimension(t))||{}),{name:t,ordinalMeta:null})})):[{name:"value",type:"float"}];var r=new lx(i,n),o=new lx(i,n),a=new lx([],n),s=z(n.get("data"),H(xB,e,t,n));t&&(s=B(s,H(wB,t)));var l=cB(!!t,i);return r.initData(z(s,(function(t){return t[0]})),null,l),o.initData(z(s,(function(t){return t[1]})),null,l),a.initData(z(s,(function(t){return t[2]}))),a.hasItemOption=!0,{from:r,to:o,line:a}}(r,t,e),h=u.from,c=u.to,p=u.line;mB(e).from=h,mB(e).to=c,e.setData(p);var d=e.get("symbol"),f=e.get("symbolSize"),g=e.get("symbolRotate"),y=e.get("symbolOffset");function v(e,n,r){var o=e.getItemModel(n);SB(e,n,r,t,i);var s=o.getModel("itemStyle").getItemStyle();null==s.fill&&(s.fill=Ty(a,"color")),e.setItemVisual(n,{symbolKeepAspect:o.get("symbolKeepAspect"),symbolOffset:rt(o.get("symbolOffset",!0),y[r?0:1]),symbolRotate:rt(o.get("symbolRotate",!0),g[r?0:1]),symbolSize:rt(o.get("symbolSize"),f[r?0:1]),symbol:rt(o.get("symbol",!0),d[r?0:1]),style:s})}Y(d)||(d=[d,d]),Y(f)||(f=[f,f]),Y(g)||(g=[g,g]),Y(y)||(y=[y,y]),u.from.each((function(t){v(h,t,!0),v(c,t,!1)})),p.each((function(t){var e=p.getItemModel(t).getModel("lineStyle").getLineStyle();p.setItemLayout(t,[h.getItemLayout(t),c.getItemLayout(t)]),null==e.stroke&&(e.stroke=h.getItemVisual(t,"style").fill),p.setItemVisual(t,{fromSymbolKeepAspect:h.getItemVisual(t,"symbolKeepAspect"),fromSymbolOffset:h.getItemVisual(t,"symbolOffset"),fromSymbolRotate:h.getItemVisual(t,"symbolRotate"),fromSymbolSize:h.getItemVisual(t,"symbolSize"),fromSymbol:h.getItemVisual(t,"symbol"),toSymbolKeepAspect:c.getItemVisual(t,"symbolKeepAspect"),toSymbolOffset:c.getItemVisual(t,"symbolOffset"),toSymbolRotate:c.getItemVisual(t,"symbolRotate"),toSymbolSize:c.getItemVisual(t,"symbolSize"),toSymbol:c.getItemVisual(t,"symbol"),style:e})})),l.updateData(p),u.line.eachItemGraphicEl((function(t){Qs(t).dataModel=e,t.traverse((function(t){Qs(t).dataModel=e}))})),this.markKeep(l),l.group.silent=e.get("silent")||t.get("silent")},e.type="markLine",e}(fB);var IB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.createMarkerModelFromSeries=function(t,n,i){return new e(t,n,i)},e.type="markArea",e.defaultOption={z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}},e}(iB),TB=Oo(),CB=function(t,e,n,i){var r=i[0],o=i[1];if(r&&o){var a=lB(t,r),s=lB(t,o),l=a.coord,u=s.coord;l[0]=it(l[0],-1/0),l[1]=it(l[1],-1/0),u[0]=it(u[0],1/0),u[1]=it(u[1],1/0);var h=D([{},a,s]);return h.coord=[a.coord,s.coord],h.x0=a.x,h.y0=a.y,h.x1=s.x,h.y1=s.y,h}};function DB(t){return!isNaN(t)&&!isFinite(t)}function AB(t,e,n,i){var r=1-t;return DB(e[r])&&DB(n[r])}function kB(t,e){var n=e.coord[0],i=e.coord[1],r={coord:n,x:e.x0,y:e.y0},o={coord:i,x:e.x1,y:e.y1};return MS(t,"cartesian2d")?!(!n||!i||!AB(1,n,i)&&!AB(0,n,i))||function(t,e,n){return!(t&&t.containZone&&e.coord&&n.coord&&!oB(e)&&!oB(n))||t.containZone(e.coord,n.coord)}(t,r,o):hB(t,r)||hB(t,o)}function LB(t,e,n,i,r){var o,a=i.coordinateSystem,s=t.getItemModel(e),l=Ur(s.get(n[0]),r.getWidth()),u=Ur(s.get(n[1]),r.getHeight());if(isNaN(l)||isNaN(u)){if(i.getMarkerPosition){var h=t.getValues(["x0","y0"],e),c=t.getValues(["x1","y1"],e),p=a.clampData(h),d=a.clampData(c),f=[];"x0"===n[0]?f[0]=p[0]>d[0]?c[0]:h[0]:f[0]=p[0]>d[0]?h[0]:c[0],"y0"===n[1]?f[1]=p[1]>d[1]?c[1]:h[1]:f[1]=p[1]>d[1]?h[1]:c[1],o=i.getMarkerPosition(f,n,!0)}else{var g=[m=t.get(n[0],e),x=t.get(n[1],e)];a.clampData&&a.clampData(g,g),o=a.dataToPoint(g,!0)}if(MS(a,"cartesian2d")){var y=a.getAxis("x"),v=a.getAxis("y"),m=t.get(n[0],e),x=t.get(n[1],e);DB(m)?o[0]=y.toGlobalCoord(y.getExtent()["x0"===n[0]?0:1]):DB(x)&&(o[1]=v.toGlobalCoord(v.getExtent()["y0"===n[1]?0:1]))}isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u)}else o=[l,u];return o}var PB=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]],OB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=iB.getMarkerModelFromSeries(t,"markArea");if(e){var i=e.getData();i.each((function(e){var r=z(PB,(function(r){return LB(i,e,r,t,n)}));i.setItemLayout(e,r),i.getItemGraphicEl(e).setShape("points",r)}))}}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,{group:new zr});this.group.add(l.group),this.markKeep(l);var u=function(t,e,n){var i,r,o=["x0","y0","x1","y1"];if(t){var a=z(t&&t.dimensions,(function(t){var n=e.getData();return A(A({},n.getDimensionInfo(n.mapDimension(t))||{}),{name:t,ordinalMeta:null})}));r=z(o,(function(t,e){return{name:t,type:a[e%2].type}})),i=new lx(r,n)}else i=new lx(r=[{name:"value",type:"float"}],n);var s=z(n.get("data"),H(CB,e,t,n));t&&(s=B(s,H(kB,t)));var l=t?function(t,e,n,i){return wf(t.coord[Math.floor(i/2)][i%2],r[i])}:function(t,e,n,i){return wf(t.value,r[i])};return i.initData(s,null,l),i.hasItemOption=!0,i}(r,t,e);e.setData(u),u.each((function(e){var n=z(PB,(function(n){return LB(u,e,n,t,i)})),o=r.getAxis("x").scale,s=r.getAxis("y").scale,l=o.getExtent(),h=s.getExtent(),c=[o.parse(u.get("x0",e)),o.parse(u.get("x1",e))],p=[s.parse(u.get("y0",e)),s.parse(u.get("y1",e))];jr(c),jr(p);var d=!!(l[0]>c[1]||l[1]p[1]||h[1]=0},e.prototype.getOrient=function(){return"vertical"===this.get("orient")?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},e.type="legend.plain",e.dependencies=["series"],e.defaultOption={z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,symbolRotate:"inherit",symbolKeepAspect:!0,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:"#ccc",inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit"},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:"sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}},e}(Rp),NB=H,EB=E,zB=zr,VB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.newlineDisabled=!1,n}return n(e,t),e.prototype.init=function(){this.group.add(this._contentGroup=new zB),this.group.add(this._selectorGroup=new zB),this._isFirstRender=!0},e.prototype.getContentGroup=function(){return this._contentGroup},e.prototype.getSelectorGroup=function(){return this._selectorGroup},e.prototype.render=function(t,e,n){var i=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var r=t.get("align"),o=t.get("orient");r&&"auto"!==r||(r="right"===t.get("left")&&"vertical"===o?"right":"left");var a=t.get("selector",!0),s=t.get("selectorPosition",!0);!a||s&&"auto"!==s||(s="horizontal"===o?"end":"start"),this.renderInner(r,t,e,n,a,o,s);var l=t.getBoxLayoutParams(),u={width:n.getWidth(),height:n.getHeight()},h=t.get("padding"),c=Cp(l,u,h),p=this.layoutInner(t,r,c,i,a,s),d=Cp(k({width:p.width,height:p.height},l),u,h);this.group.x=d.x-p.x,this.group.y=d.y-p.y,this.group.markRedraw(),this.group.add(this._backgroundEl=dz(p,t))}},e.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},e.prototype.renderInner=function(t,e,n,i,r,o,a){var s=this.getContentGroup(),l=yt(),u=e.get("selectedMode"),h=[];n.eachRawSeries((function(t){!t.get("legendHoverLink")&&h.push(t.id)})),EB(e.getData(),(function(r,o){var a=r.get("name");if(!this.newlineDisabled&&(""===a||"\n"===a)){var c=new zB;return c.newline=!0,void s.add(c)}var p=n.getSeriesByName(a)[0];if(!l.get(a)){if(p){var d=p.getData(),f=d.getVisual("legendLineStyle")||{},g=d.getVisual("legendIcon"),y=d.getVisual("style");this._createItem(p,a,o,r,e,t,f,y,g,u,i).on("click",NB(BB,a,null,i,h)).on("mouseover",NB(GB,p.name,null,i,h)).on("mouseout",NB(WB,p.name,null,i,h)),l.set(a,!0)}else n.eachRawSeries((function(n){if(!l.get(a)&&n.legendVisualProvider){var s=n.legendVisualProvider;if(!s.containName(a))return;var c=s.indexOfName(a),p=s.getItemVisual(c,"style"),d=s.getItemVisual(c,"legendIcon"),f=qn(p.fill);f&&0===f[3]&&(f[3]=.2,p=A(A({},p),{fill:ri(f,"rgba")})),this._createItem(n,a,o,r,e,t,{},p,d,u,i).on("click",NB(BB,null,a,i,h)).on("mouseover",NB(GB,null,a,i,h)).on("mouseout",NB(WB,null,a,i,h)),l.set(a,!0)}}),this);0}}),this),r&&this._createSelector(r,e,i,o,a)},e.prototype._createSelector=function(t,e,n,i,r){var o=this.getSelectorGroup();EB(t,(function(t){var i=t.type,r=new Fs({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){n.dispatchAction({type:"all"===i?"legendAllSelect":"legendInverseSelect"})}});o.add(r),tc(r,{normal:e.getModel("selectorLabel"),emphasis:e.getModel(["emphasis","selectorLabel"])},{defaultText:t.title}),Hl(r)}))},e.prototype._createItem=function(t,e,n,i,r,o,a,s,l,u,h){var c=t.visualDrawType,p=r.get("itemWidth"),d=r.get("itemHeight"),f=r.isSelected(e),g=i.get("symbolRotate"),y=i.get("symbolKeepAspect"),v=i.get("icon"),m=function(t,e,n,i,r,o,a){function s(t,e){"auto"===t.lineWidth&&(t.lineWidth=e.lineWidth>0?2:0),EB(t,(function(n,i){"inherit"===t[i]&&(t[i]=e[i])}))}var l=e.getModel("itemStyle"),u=l.getItemStyle(),h=0===t.lastIndexOf("empty",0)?"fill":"stroke",c=l.getShallow("decal");u.decal=c&&"inherit"!==c?gv(c,a):i.decal,"inherit"===u.fill&&(u.fill=i[r]);"inherit"===u.stroke&&(u.stroke=i[h]);"inherit"===u.opacity&&(u.opacity=("fill"===r?i:n).opacity);s(u,i);var p=e.getModel("lineStyle"),d=p.getLineStyle();if(s(d,n),"auto"===u.fill&&(u.fill=i.fill),"auto"===u.stroke&&(u.stroke=i.fill),"auto"===d.stroke&&(d.stroke=i.fill),!o){var f=e.get("inactiveBorderWidth"),g=u[h];u.lineWidth="auto"===f?i.lineWidth>0&&g?2:0:u.lineWidth,u.fill=e.get("inactiveColor"),u.stroke=e.get("inactiveBorderColor"),d.stroke=p.get("inactiveColor"),d.lineWidth=p.get("inactiveWidth")}return{itemStyle:u,lineStyle:d}}(l=v||l||"roundRect",i,a,s,c,f,h),x=new zB,_=i.getModel("textStyle");if(!X(t.getLegendIcon)||v&&"inherit"!==v){var b="inherit"===v&&t.getData().getVisual("symbol")?"inherit"===g?t.getData().getVisual("symbolRotate"):g:0;x.add(function(t){var e=t.icon||"roundRect",n=Wy(e,0,0,t.itemWidth,t.itemHeight,t.itemStyle.fill,t.symbolKeepAspect);n.setStyle(t.itemStyle),n.rotation=(t.iconRotate||0)*Math.PI/180,n.setOrigin([t.itemWidth/2,t.itemHeight/2]),e.indexOf("empty")>-1&&(n.style.stroke=n.style.fill,n.style.fill="#fff",n.style.lineWidth=2);return n}({itemWidth:p,itemHeight:d,icon:l,iconRotate:b,itemStyle:m.itemStyle,lineStyle:m.lineStyle,symbolKeepAspect:y}))}else x.add(t.getLegendIcon({itemWidth:p,itemHeight:d,icon:l,iconRotate:g,itemStyle:m.itemStyle,lineStyle:m.lineStyle,symbolKeepAspect:y}));var w="left"===o?p+5:-5,S=o,M=r.get("formatter"),I=e;U(M)&&M?I=M.replace("{name}",null!=e?e:""):X(M)&&(I=M(e));var T=f?_.getTextColor():i.get("inactiveColor");x.add(new Fs({style:nc(_,{text:I,x:w,y:d/2,fill:T,align:S,verticalAlign:"middle"},{inheritColor:T})}));var C=new zs({shape:x.getBoundingRect(),invisible:!0}),D=i.getModel("tooltip");return D.get("show")&&Zh({el:C,componentModel:r,itemName:e,itemTooltipOption:D.option}),x.add(C),x.eachChild((function(t){t.silent=!0})),C.silent=!u,this.getContentGroup().add(x),Hl(x),x.__legendDataIndex=n,x},e.prototype.layoutInner=function(t,e,n,i,r,o){var a=this.getContentGroup(),s=this.getSelectorGroup();Tp(t.get("orient"),a,t.get("itemGap"),n.width,n.height);var l=a.getBoundingRect(),u=[-l.x,-l.y];if(s.markRedraw(),a.markRedraw(),r){Tp("horizontal",s,t.get("selectorItemGap",!0));var h=s.getBoundingRect(),c=[-h.x,-h.y],p=t.get("selectorButtonGap",!0),d=t.getOrient().index,f=0===d?"width":"height",g=0===d?"height":"width",y=0===d?"y":"x";"end"===o?c[d]+=l[f]+p:u[d]+=h[f]+p,c[1-d]+=l[g]/2-h[g]/2,s.x=c[0],s.y=c[1],a.x=u[0],a.y=u[1];var v={x:0,y:0};return v[f]=l[f]+p+h[f],v[g]=Math.max(l[g],h[g]),v[y]=Math.min(0,h[y]+c[1-d]),v}return a.x=u[0],a.y=u[1],this.group.getBoundingRect()},e.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},e.type="legend.plain",e}(Tg);function BB(t,e,n,i){WB(t,e,n,i),n.dispatchAction({type:"legendToggleSelect",name:null!=t?t:e}),GB(t,e,n,i)}function FB(t){for(var e,n=t.getZr().storage.getDisplayList(),i=0,r=n.length;in[r],f=[-c.x,-c.y];e||(f[i]=l[s]);var g=[0,0],y=[-p.x,-p.y],v=rt(t.get("pageButtonGap",!0),t.get("itemGap",!0));d&&("end"===t.get("pageButtonPosition",!0)?y[i]+=n[r]-p[r]:g[i]+=p[r]+v);y[1-i]+=c[o]/2-p[o]/2,l.setPosition(f),u.setPosition(g),h.setPosition(y);var m={x:0,y:0};if(m[r]=d?n[r]:c[r],m[o]=Math.max(c[o],p[o]),m[a]=Math.min(0,p[a]+y[1-i]),u.__rectSize=n[r],d){var x={x:0,y:0};x[r]=Math.max(n[r]-p[r]-v,0),x[o]=m[o],u.setClipPath(new zs({shape:x})),u.__rectSize=x[r]}else h.eachChild((function(t){t.attr({invisible:!0,silent:!0})}));var _=this._getPageInfo(t);return null!=_.pageIndex&&fh(l,{x:_.contentPosition[0],y:_.contentPosition[1]},d?t:null),this._updatePageInfoView(t,_),m},e.prototype._pageGo=function(t,e,n){var i=this._getPageInfo(e)[t];null!=i&&n.dispatchAction({type:"legendScroll",scrollDataIndex:i,legendId:e.id})},e.prototype._updatePageInfoView=function(t,e){var n=this._controllerGroup;E(["pagePrev","pageNext"],(function(i){var r=null!=e[i+"DataIndex"],o=n.childOfName(i);o&&(o.setStyle("fill",r?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),o.cursor=r?"pointer":"default")}));var i=n.childOfName("pageText"),r=t.get("pageFormatter"),o=e.pageIndex,a=null!=o?o+1:0,s=e.pageCount;i&&r&&i.setStyle("text",U(r)?r.replace("{current}",null==a?"":a+"").replace("{total}",null==s?"":s+""):r({current:a,total:s}))},e.prototype._getPageInfo=function(t){var e=t.get("scrollDataIndex",!0),n=this.getContentGroup(),i=this._containerGroup.__rectSize,r=t.getOrient().index,o=qB[r],a=KB[r],s=this._findTargetItemIndex(e),l=n.children(),u=l[s],h=l.length,c=h?1:0,p={contentPosition:[n.x,n.y],pageCount:c,pageIndex:c-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!u)return p;var d=m(u);p.contentPosition[r]=-d.s;for(var f=s+1,g=d,y=d,v=null;f<=h;++f)(!(v=m(l[f]))&&y.e>g.s+i||v&&!x(v,g.s))&&(g=y.i>g.i?y:v)&&(null==p.pageNextDataIndex&&(p.pageNextDataIndex=g.i),++p.pageCount),y=v;for(f=s-1,g=d,y=d,v=null;f>=-1;--f)(v=m(l[f]))&&x(y,v.s)||!(g.i=e&&t.s<=e+i}},e.prototype._findTargetItemIndex=function(t){return this._showController?(this.getContentGroup().eachChild((function(i,r){var o=i.__legendDataIndex;null==n&&null!=o&&(n=r),o===t&&(e=r)})),null!=e?e:n):0;var e,n},e.type="legend.scroll",e}(VB);function JB(t){Nm(XB),t.registerComponentModel(UB),t.registerComponentView($B),function(t){t.registerAction("legendScroll","legendscroll",(function(t,e){var n=t.scrollDataIndex;null!=n&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},(function(t){t.setScrollDataIndex(n)}))}))}(t)}var QB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.inside",e.defaultOption=Cc(KE.defaultOption,{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),e}(KE),tF=Oo();function eF(t,e,n){tF(t).coordSysRecordMap.each((function(t){var i=t.dataZoomInfoMap.get(e.uid);i&&(i.getRange=n)}))}function nF(t,e){if(e){t.removeKey(e.model.uid);var n=e.controller;n&&n.dispose()}}function iF(t,e){t.isDisposed()||t.dispatchAction({type:"dataZoom",animation:{easing:"cubicOut",duration:100},batch:e})}function rF(t,e,n,i){return t.coordinateSystem.containPoint([n,i])}function oF(t){t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,(function(t,e){var n=tF(e),i=n.coordSysRecordMap||(n.coordSysRecordMap=yt());i.each((function(t){t.dataZoomInfoMap=null})),t.eachComponent({mainType:"dataZoom",subType:"inside"},(function(t){E(jE(t).infoList,(function(n){var r=n.model.uid,o=i.get(r)||i.set(r,function(t,e){var n={model:e,containsPoint:H(rF,e),dispatchAction:H(iF,t),dataZoomInfoMap:null,controller:null},i=n.controller=new UI(t.getZr());return E(["pan","zoom","scrollMove"],(function(t){i.on(t,(function(e){var i=[];n.dataZoomInfoMap.each((function(r){if(e.isAvailableBehavior(r.model.option)){var o=(r.getRange||{})[t],a=o&&o(r.dzReferCoordSysInfo,n.model.mainType,n.controller,e);!r.model.get("disabled",!0)&&a&&i.push({dataZoomId:r.model.id,start:a[0],end:a[1]})}})),i.length&&n.dispatchAction(i)}))})),n}(e,n.model));(o.dataZoomInfoMap||(o.dataZoomInfoMap=yt())).set(t.uid,{dzReferCoordSysInfo:n,model:t,getRange:null})}))})),i.each((function(t){var e,n=t.controller,r=t.dataZoomInfoMap;if(r){var o=r.keys()[0];null!=o&&(e=r.get(o))}if(e){var a=function(t){var e,n="type_",i={type_true:2,type_move:1,type_false:0,type_undefined:-1},r=!0;return t.each((function(t){var o=t.model,a=!o.get("disabled",!0)&&(!o.get("zoomLock",!0)||"move");i[n+a]>i[n+e]&&(e=a),r=r&&o.get("preventDefaultMouseMove",!0)})),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!r}}}(r);n.enable(a.controlType,a.opt),n.setPointerChecker(t.containsPoint),Fg(t,"dispatchAction",e.model.get("throttle",!0),"fixRate")}else nF(i,t)}))}))}var aF=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dataZoom.inside",e}return n(e,t),e.prototype.render=function(e,n,i){t.prototype.render.apply(this,arguments),e.noTarget()?this._clear():(this.range=e.getPercentRange(),eF(i,e,{pan:W(sF.pan,this),zoom:W(sF.zoom,this),scrollMove:W(sF.scrollMove,this)}))},e.prototype.dispose=function(){this._clear(),t.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){!function(t,e){for(var n=tF(t).coordSysRecordMap,i=n.keys(),r=0;r0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(o[1]-o[0])+o[0],u=Math.max(1/i.scale,0);o[0]=(o[0]-l)*u+l,o[1]=(o[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return Ck(0,o,[0,100],0,h.minSpan,h.maxSpan),this.range=o,r[0]!==o[0]||r[1]!==o[1]?o:void 0}},pan:lF((function(t,e,n,i,r,o){var a=uF[i]([o.oldX,o.oldY],[o.newX,o.newY],e,r,n);return a.signal*(t[1]-t[0])*a.pixel/a.pixelLength})),scrollMove:lF((function(t,e,n,i,r,o){return uF[i]([0,0],[o.scrollDelta,o.scrollDelta],e,r,n).signal*(t[1]-t[0])*o.scrollDelta}))};function lF(t){return function(e,n,i,r){var o=this.range,a=o.slice(),s=e.axisModels[0];if(s)return Ck(t(a,s,e,n,i,r),a,[0,100],"all"),this.range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}}var uF={grid:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem.getRect();return t=t||[0,0],"x"===o.dim?(a.pixel=e[0]-t[0],a.pixelLength=s.width,a.pixelStart=s.x,a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=s.height,a.pixelStart=s.y,a.signal=o.inverse?-1:1),a},polar:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===n.mainType?(a.pixel=e[0]-t[0],a.pixelLength=l[1]-l[0],a.pixelStart=l[0],a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=u[1]-u[0],a.pixelStart=u[0],a.signal=o.inverse?-1:1),a},singleAxis:function(t,e,n,i,r){var o=n.axis,a=r.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===o.orient?(s.pixel=e[0]-t[0],s.pixelLength=a.width,s.pixelStart=a.x,s.signal=o.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=a.height,s.pixelStart=a.y,s.signal=o.inverse?-1:1),s}};function hF(t){az(t),t.registerComponentModel(QB),t.registerComponentView(aF),oF(t)}var cF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.slider",e.layoutMode="box",e.defaultOption=Cc(KE.defaultOption,{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,borderColor:"#d2dbee",borderRadius:3,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#d2dbee",width:.5},areaStyle:{color:"#d2dbee",opacity:.2}},selectedDataBackground:{lineStyle:{color:"#8fb0f7",width:.5},areaStyle:{color:"#8fb0f7",opacity:.2}},fillerColor:"rgba(135,175,274,0.2)",handleIcon:"path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",handleSize:"100%",handleStyle:{color:"#fff",borderColor:"#ACB8D1"},moveHandleSize:7,moveHandleIcon:"path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",moveHandleStyle:{color:"#D2DBEE",opacity:.7},showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#6E7079"},brushSelect:!0,brushStyle:{color:"rgba(135,175,274,0.15)"},emphasis:{handleStyle:{borderColor:"#8FB0F7"},moveHandleStyle:{color:"#8FB0F7"}}}),e}(KE),pF=zs,dF="horizontal",fF="vertical",gF=["line","bar","candlestick","scatter"],yF={easing:"cubicOut",duration:100,delay:0},vF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._displayables={},n}return n(e,t),e.prototype.init=function(t,e){this.api=e,this._onBrush=W(this._onBrush,this),this._onBrushEnd=W(this._onBrushEnd,this)},e.prototype.render=function(e,n,i,r){if(t.prototype.render.apply(this,arguments),Fg(this,"_dispatchZoomAction",e.get("throttle"),"fixRate"),this._orient=e.getOrient(),!1!==e.get("show")){if(e.noTarget())return this._clear(),void this.group.removeAll();r&&"dataZoom"===r.type&&r.from===this.uid||this._buildView(),this._updateView()}else this.group.removeAll()},e.prototype.dispose=function(){this._clear(),t.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){Gg(this,"_dispatchZoomAction");var t=this.api.getZr();t.off("mousemove",this._onBrush),t.off("mouseup",this._onBrushEnd)},e.prototype._buildView=function(){var t=this.group;t.removeAll(),this._brushing=!1,this._displayables.brushRect=null,this._resetLocation(),this._resetInterval();var e=this._displayables.sliderGroup=new zr;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(e),this._positionGroup()},e.prototype._resetLocation=function(){var t=this.dataZoomModel,e=this.api,n=t.get("brushSelect")?7:0,i=this._findCoordRect(),r={width:e.getWidth(),height:e.getHeight()},o=this._orient===dF?{right:r.width-i.x-i.width,top:r.height-30-7-n,width:i.width,height:30}:{right:7,top:i.y,width:30,height:i.height},a=Lp(t.option);E(["right","top","width","height"],(function(t){"ph"===a[t]&&(a[t]=o[t])}));var s=Cp(a,r);this._location={x:s.x,y:s.y},this._size=[s.width,s.height],this._orient===fF&&this._size.reverse()},e.prototype._positionGroup=function(){var t=this.group,e=this._location,n=this._orient,i=this.dataZoomModel.getFirstTargetAxisModel(),r=i&&i.get("inverse"),o=this._displayables.sliderGroup,a=(this._dataShadowInfo||{}).otherAxisInverse;o.attr(n!==dF||r?n===dF&&r?{scaleY:a?1:-1,scaleX:-1}:n!==fF||r?{scaleY:a?-1:1,scaleX:-1,rotation:Math.PI/2}:{scaleY:a?-1:1,scaleX:1,rotation:Math.PI/2}:{scaleY:a?1:-1,scaleX:1});var s=t.getBoundingRect([o]);t.x=e.x-s.x,t.y=e.y-s.y,t.markRedraw()},e.prototype._getViewExtent=function(){return[0,this._size[0]]},e.prototype._renderBackground=function(){var t=this.dataZoomModel,e=this._size,n=this._displayables.sliderGroup,i=t.get("brushSelect");n.add(new pF({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40}));var r=new pF({shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:"transparent"},z2:0,onclick:W(this._onClickPanel,this)}),o=this.api.getZr();i?(r.on("mousedown",this._onBrushStart,this),r.cursor="crosshair",o.on("mousemove",this._onBrush),o.on("mouseup",this._onBrushEnd)):(o.off("mousemove",this._onBrush),o.off("mouseup",this._onBrushEnd)),n.add(r)},e.prototype._renderDataShadow=function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(this._displayables.dataShadowSegs=[],t){var e=this._size,n=this._shadowSize||[],i=t.series,r=i.getRawData(),o=i.getShadowDim&&i.getShadowDim(),a=o&&r.getDimensionInfo(o)?i.getShadowDim():t.otherDim;if(null!=a){var s=this._shadowPolygonPts,l=this._shadowPolylinePts;if(r!==this._shadowData||a!==this._shadowDim||e[0]!==n[0]||e[1]!==n[1]){var u=r.getDataExtent(a),h=.3*(u[1]-u[0]);u=[u[0]-h,u[1]+h];var c,p=[0,e[1]],d=[0,e[0]],f=[[e[0],0],[0,0]],g=[],y=d[1]/(r.count()-1),v=0,m=Math.round(r.count()/e[0]);r.each([a],(function(t,e){if(m>0&&e%m)v+=y;else{var n=null==t||isNaN(t)||""===t,i=n?0:Xr(t,u,p,!0);n&&!c&&e?(f.push([f[f.length-1][0],0]),g.push([g[g.length-1][0],0])):!n&&c&&(f.push([v,0]),g.push([v,0])),f.push([v,i]),g.push([v,i]),v+=y,c=n}})),s=this._shadowPolygonPts=f,l=this._shadowPolylinePts=g}this._shadowData=r,this._shadowDim=a,this._shadowSize=[e[0],e[1]];for(var x=this.dataZoomModel,_=0;_<3;_++){var b=w(1===_);this._displayables.sliderGroup.add(b),this._displayables.dataShadowSegs.push(b)}}}function w(t){var e=x.getModel(t?"selectedDataBackground":"dataBackground"),n=new zr,i=new Wu({shape:{points:s},segmentIgnoreThreshold:1,style:e.getModel("areaStyle").getAreaStyle(),silent:!0,z2:-20}),r=new Yu({shape:{points:l},segmentIgnoreThreshold:1,style:e.getModel("lineStyle").getLineStyle(),silent:!0,z2:-19});return n.add(i),n.add(r),n}},e.prototype._prepareDataShadowInfo=function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var n,i=this.ecModel;return t.eachTargetAxis((function(r,o){E(t.getAxisProxy(r,o).getTargetSeriesModels(),(function(t){if(!(n||!0!==e&&P(gF,t.get("type"))<0)){var a,s=i.getComponent(UE(r),o).axis,l=function(t){var e={x:"y",y:"x",radius:"angle",angle:"radius"};return e[t]}(r),u=t.coordinateSystem;null!=l&&u.getOtherAxis&&(a=u.getOtherAxis(s).inverse),l=t.getData().mapDimension(l),n={thisAxis:s,series:t,thisDim:r,otherDim:l,otherAxisInverse:a}}}),this)}),this),n}},e.prototype._renderHandle=function(){var t=this.group,e=this._displayables,n=e.handles=[null,null],i=e.handleLabels=[null,null],r=this._displayables.sliderGroup,o=this._size,a=this.dataZoomModel,s=this.api,l=a.get("borderRadius")||0,u=a.get("brushSelect"),h=e.filler=new pF({silent:u,style:{fill:a.get("fillerColor")},textConfig:{position:"inside"}});r.add(h),r.add(new pF({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:o[0],height:o[1],r:l},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}})),E([0,1],(function(e){var o=a.get("handleIcon");!By[o]&&o.indexOf("path://")<0&&o.indexOf("image://")<0&&(o="path://"+o);var s=Wy(o,-1,0,2,2,null,!0);s.attr({cursor:mF(this._orient),draggable:!0,drift:W(this._onDragMove,this,e),ondragend:W(this._onDragEnd,this),onmouseover:W(this._showDataInfo,this,!0),onmouseout:W(this._showDataInfo,this,!1),z2:5});var l=s.getBoundingRect(),u=a.get("handleSize");this._handleHeight=Ur(u,this._size[1]),this._handleWidth=l.width/l.height*this._handleHeight,s.setStyle(a.getModel("handleStyle").getItemStyle()),s.style.strokeNoScale=!0,s.rectHover=!0,s.ensureState("emphasis").style=a.getModel(["emphasis","handleStyle"]).getItemStyle(),Hl(s);var h=a.get("handleColor");null!=h&&(s.style.fill=h),r.add(n[e]=s);var c=a.getModel("textStyle");t.add(i[e]=new Fs({silent:!0,invisible:!0,style:nc(c,{x:0,y:0,text:"",verticalAlign:"middle",align:"center",fill:c.getTextColor(),font:c.getFont()}),z2:10}))}),this);var c=h;if(u){var p=Ur(a.get("moveHandleSize"),o[1]),d=e.moveHandle=new zs({style:a.getModel("moveHandleStyle").getItemStyle(),silent:!0,shape:{r:[0,0,2,2],y:o[1]-.5,height:p}}),f=.8*p,g=e.moveHandleIcon=Wy(a.get("moveHandleIcon"),-f/2,-f/2,f,f,"#fff",!0);g.silent=!0,g.y=o[1]+p/2-.5,d.ensureState("emphasis").style=a.getModel(["emphasis","moveHandleStyle"]).getItemStyle();var y=Math.min(o[1]/2,Math.max(p,10));(c=e.moveZone=new zs({invisible:!0,shape:{y:o[1]-y,height:p+y}})).on("mouseover",(function(){s.enterEmphasis(d)})).on("mouseout",(function(){s.leaveEmphasis(d)})),r.add(d),r.add(g),r.add(c)}c.attr({draggable:!0,cursor:mF(this._orient),drift:W(this._onDragMove,this,"all"),ondragstart:W(this._showDataInfo,this,!0),ondragend:W(this._onDragEnd,this),onmouseover:W(this._showDataInfo,this,!0),onmouseout:W(this._showDataInfo,this,!1)})},e.prototype._resetInterval=function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[Xr(t[0],[0,100],e,!0),Xr(t[1],[0,100],e,!0)]},e.prototype._updateInterval=function(t,e){var n=this.dataZoomModel,i=this._handleEnds,r=this._getViewExtent(),o=n.findRepresentativeAxisProxy().getMinMaxSpan(),a=[0,100];Ck(e,i,r,n.get("zoomLock")?"all":t,null!=o.minSpan?Xr(o.minSpan,a,r,!0):null,null!=o.maxSpan?Xr(o.maxSpan,a,r,!0):null);var s=this._range,l=this._range=jr([Xr(i[0],r,a,!0),Xr(i[1],r,a,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},e.prototype._updateView=function(t){var e=this._displayables,n=this._handleEnds,i=jr(n.slice()),r=this._size;E([0,1],(function(t){var i=e.handles[t],o=this._handleHeight;i.attr({scaleX:o/2,scaleY:o/2,x:n[t]+(t?-1:1),y:r[1]/2-o/2})}),this),e.filler.setShape({x:i[0],y:0,width:i[1]-i[0],height:r[1]});var o={x:i[0],width:i[1]-i[0]};e.moveHandle&&(e.moveHandle.setShape(o),e.moveZone.setShape(o),e.moveZone.getBoundingRect(),e.moveHandleIcon&&e.moveHandleIcon.attr("x",o.x+o.width/2));for(var a=e.dataShadowSegs,s=[0,i[0],i[1],r[0]],l=0;le[0]||n[1]<0||n[1]>e[1])){var i=this._handleEnds,r=(i[0]+i[1])/2,o=this._updateInterval("all",n[0]-r);this._updateView(),o&&this._dispatchZoomAction(!1)}},e.prototype._onBrushStart=function(t){var e=t.offsetX,n=t.offsetY;this._brushStart=new De(e,n),this._brushing=!0,this._brushStartTime=+new Date},e.prototype._onBrushEnd=function(t){if(this._brushing){var e=this._displayables.brushRect;if(this._brushing=!1,e){e.attr("ignore",!0);var n=e.shape;if(!(+new Date-this._brushStartTime<200&&Math.abs(n.width)<5)){var i=this._getViewExtent(),r=[0,100];this._range=jr([Xr(n.x,i,r,!0),Xr(n.x+n.width,i,r,!0)]),this._handleEnds=[n.x,n.x+n.width],this._updateView(),this._dispatchZoomAction(!1)}}}},e.prototype._onBrush=function(t){this._brushing&&(de(t.event),this._updateBrushRect(t.offsetX,t.offsetY))},e.prototype._updateBrushRect=function(t,e){var n=this._displayables,i=this.dataZoomModel,r=n.brushRect;r||(r=n.brushRect=new pF({silent:!0,style:i.getModel("brushStyle").getItemStyle()}),n.sliderGroup.add(r)),r.attr("ignore",!1);var o=this._brushStart,a=this._displayables.sliderGroup,s=a.transformCoordToLocal(t,e),l=a.transformCoordToLocal(o.x,o.y),u=this._size;s[0]=Math.max(Math.min(u[0],s[0]),0),r.setShape({x:l[0],y:0,width:s[0]-l[0],height:u[1]})},e.prototype._dispatchZoomAction=function(t){var e=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,animation:t?yF:null,start:e[0],end:e[1]})},e.prototype._findCoordRect=function(){var t,e=jE(this.dataZoomModel).infoList;if(!t&&e.length){var n=e[0].model.coordinateSystem;t=n.getRect&&n.getRect()}if(!t){var i=this.api.getWidth(),r=this.api.getHeight();t={x:.2*i,y:.2*r,width:.6*i,height:.6*r}}return t},e.type="dataZoom.slider",e}(QE);function mF(t){return"vertical"===t?"ns-resize":"ew-resize"}function xF(t){t.registerComponentModel(cF),t.registerComponentView(vF),az(t)}var _F=function(t,e,n){var i=T((bF[t]||{})[e]);return n&&Y(i)?i[i.length-1]:i},bF={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},wF=_D.mapVisual,SF=_D.eachVisual,MF=Y,IF=E,TF=jr,CF=Xr,DF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.stateList=["inRange","outOfRange"],n.replacableOptionKeys=["inRange","outOfRange","target","controller","color"],n.layoutMode={type:"box",ignoreSize:!0},n.dataBound=[-1/0,1/0],n.targetVisuals={},n.controllerVisuals={},n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n)},e.prototype.optionUpdated=function(t,e){var n=this.option;!e&&wV(n,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},e.prototype.resetVisual=function(t){var e=this.stateList;t=W(t,this),this.controllerVisuals=bV(this.option.controller,e,t),this.targetVisuals=bV(this.option.target,e,t)},e.prototype.getItemSymbol=function(){return null},e.prototype.getTargetSeriesIndices=function(){var t=this.option.seriesIndex,e=[];return null==t||"all"===t?this.ecModel.eachSeries((function(t,n){e.push(n)})):e=bo(t),e},e.prototype.eachTargetSeries=function(t,e){E(this.getTargetSeriesIndices(),(function(n){var i=this.ecModel.getSeriesByIndex(n);i&&t.call(e,i)}),this)},e.prototype.isTargetSeries=function(t){var e=!1;return this.eachTargetSeries((function(n){n===t&&(e=!0)})),e},e.prototype.formatValueText=function(t,e,n){var i,r=this.option,o=r.precision,a=this.dataBound,s=r.formatter;n=n||["<",">"],Y(t)&&(t=t.slice(),i=!0);var l=e?t:i?[u(t[0]),u(t[1])]:u(t);return U(s)?s.replace("{value}",i?l[0]:l).replace("{value2}",i?l[1]:l):X(s)?i?s(t[0],t[1]):s(t):i?t[0]===a[0]?n[0]+" "+l[1]:t[1]===a[1]?n[1]+" "+l[0]:l[0]+" - "+l[1]:l;function u(t){return t===a[0]?"min":t===a[1]?"max":(+t).toFixed(Math.min(o,20))}},e.prototype.resetExtent=function(){var t=this.option,e=TF([t.min,t.max]);this._dataExtent=e},e.prototype.getDataDimensionIndex=function(t){var e=this.option.dimension;if(null!=e)return t.getDimensionIndex(e);for(var n=t.dimensions,i=n.length-1;i>=0;i--){var r=n[i],o=t.getDimensionInfo(r);if(!o.isCalculationCoord)return o.storeDimIndex}},e.prototype.getExtent=function(){return this._dataExtent.slice()},e.prototype.completeVisualOption=function(){var t=this.ecModel,e=this.option,n={inRange:e.inRange,outOfRange:e.outOfRange},i=e.target||(e.target={}),r=e.controller||(e.controller={});C(i,n),C(r,n);var o=this.isCategory();function a(n){MF(e.color)&&!n.inRange&&(n.inRange={color:e.color.slice().reverse()}),n.inRange=n.inRange||{color:t.get("gradientColor")}}a.call(this,i),a.call(this,r),function(t,e,n){var i=t[e],r=t[n];i&&!r&&(r=t[n]={},IF(i,(function(t,e){if(_D.isValidType(e)){var n=_F(e,"inactive",o);null!=n&&(r[e]=n,"color"!==e||r.hasOwnProperty("opacity")||r.hasOwnProperty("colorAlpha")||(r.opacity=[0,0]))}})))}.call(this,i,"inRange","outOfRange"),function(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,n=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,i=this.get("inactiveColor"),r=this.getItemSymbol()||"roundRect";IF(this.stateList,(function(a){var s=this.itemSize,l=t[a];l||(l=t[a]={color:o?i:[i]}),null==l.symbol&&(l.symbol=e&&T(e)||(o?r:[r])),null==l.symbolSize&&(l.symbolSize=n&&T(n)||(o?s[0]:[s[0],s[0]])),l.symbol=wF(l.symbol,(function(t){return"none"===t?r:t}));var u=l.symbolSize;if(null!=u){var h=-1/0;SF(u,(function(t){t>h&&(h=t)})),l.symbolSize=wF(u,(function(t){return CF(t,[0,h],[0,s[0]],!0)}))}}),this)}.call(this,r)},e.prototype.resetItemSize=function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},e.prototype.isCategory=function(){return!!this.option.categories},e.prototype.setSelected=function(t){},e.prototype.getSelected=function(){return null},e.prototype.getValueState=function(t){return null},e.prototype.getVisualMeta=function(t){return null},e.type="visualMap",e.dependencies=["series"],e.defaultOption={show:!0,z:4,seriesIndex:"all",min:0,max:200,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,textStyle:{color:"#333"}},e}(Rp),AF=[20,140],kF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(e,n){t.prototype.optionUpdated.apply(this,arguments),this.resetExtent(),this.resetVisual((function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()})),this._resetRange()},e.prototype.resetItemSize=function(){t.prototype.resetItemSize.apply(this,arguments);var e=this.itemSize;(null==e[0]||isNaN(e[0]))&&(e[0]=AF[0]),(null==e[1]||isNaN(e[1]))&&(e[1]=AF[1])},e.prototype._resetRange=function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):Y(e)&&(e[0]>e[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},e.prototype.completeVisualOption=function(){t.prototype.completeVisualOption.apply(this,arguments),E(this.stateList,(function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=e[1]/3)}),this)},e.prototype.setSelected=function(t){this.option.range=t.slice(),this._resetRange()},e.prototype.getSelected=function(){var t=this.getExtent(),e=jr((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=n[1]||t<=e[1])?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var e=[];return this.eachTargetSeries((function(n){var i=[],r=n.getData();r.each(this.getDataDimensionIndex(r),(function(e,n){t[0]<=e&&e<=t[1]&&i.push(n)}),this),e.push({seriesId:n.id,dataIndex:i})}),this),e},e.prototype.getVisualMeta=function(t){var e=LF(this,"outOfRange",this.getExtent()),n=LF(this,"inRange",this.option.range.slice()),i=[];function r(e,n){i.push({value:e,color:t(e,n)})}for(var o=0,a=0,s=n.length,l=e.length;at[1])break;n.push({color:this.getControllerVisual(o,"color",e),offset:r/100})}return n.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),n},e.prototype._createBarPoints=function(t,e){var n=this.visualMapModel.itemSize;return[[n[0]-e[0],t[0]],[n[0],t[0]],[n[0],t[1]],[n[0]-e[1],t[1]]]},e.prototype._createBarGroup=function(t){var e=this._orient,n=this.visualMapModel.get("inverse");return new zr("horizontal"!==e||n?"horizontal"===e&&n?{scaleX:"bottom"===t?-1:1,rotation:-Math.PI/2}:"vertical"!==e||n?{scaleX:"left"===t?1:-1}:{scaleX:"left"===t?1:-1,scaleY:-1}:{scaleX:"bottom"===t?1:-1,rotation:Math.PI/2})},e.prototype._updateHandle=function(t,e){if(this._useHandle){var n=this._shapes,i=this.visualMapModel,r=n.handleThumbs,o=n.handleLabels,a=i.itemSize,s=i.getExtent();zF([0,1],(function(l){var u=r[l];u.setStyle("fill",e.handlesColor[l]),u.y=t[l];var h=EF(t[l],[0,a[1]],s,!0),c=this.getControllerVisual(h,"symbolSize");u.scaleX=u.scaleY=c/a[0],u.x=a[0]-c/2;var p=zh(n.handleLabelPoints[l],Eh(u,this.group));o[l].setStyle({x:p[0],y:p[1],text:i.formatValueText(this._dataInterval[l]),verticalAlign:"middle",align:"vertical"===this._orient?this._applyTransform("left",n.mainGroup):"center"})}),this)}},e.prototype._showIndicator=function(t,e,n,i){var r=this.visualMapModel,o=r.getExtent(),a=r.itemSize,s=[0,a[1]],l=this._shapes,u=l.indicator;if(u){u.attr("invisible",!1);var h=this.getControllerVisual(t,"color",{convertOpacityToAlpha:!0}),c=this.getControllerVisual(t,"symbolSize"),p=EF(t,o,s,!0),d=a[0]-c/2,f={x:u.x,y:u.y};u.y=p,u.x=d;var g=zh(l.indicatorLabelPoint,Eh(u,this.group)),y=l.indicatorLabel;y.attr("invisible",!1);var v=this._applyTransform("left",l.mainGroup),m="horizontal"===this._orient;y.setStyle({text:(n||"")+r.formatValueText(e),verticalAlign:m?v:"middle",align:m?"center":v});var x={x:d,y:p,style:{fill:h}},_={style:{x:g[0],y:g[1]}};if(r.ecModel.isAnimationEnabled()&&!this._firstShowIndicator){var b={duration:100,easing:"cubicInOut",additive:!0};u.x=f.x,u.y=f.y,u.animateTo(x,b),y.animateTo(_,b)}else u.attr(x),y.attr(_);this._firstShowIndicator=!1;var w=this._shapes.handleLabels;if(w)for(var S=0;Sr[1]&&(u[1]=1/0),e&&(u[0]===-1/0?this._showIndicator(l,u[1],"< ",a):u[1]===1/0?this._showIndicator(l,u[0],"> ",a):this._showIndicator(l,l,"≈ ",a));var h=this._hoverLinkDataIndices,c=[];(e||WF(n))&&(c=this._hoverLinkDataIndices=n.findTargetDataIndices(u));var p=function(t,e){var n={},i={};return r(t||[],n),r(e||[],i,n),[o(n),o(i)];function r(t,e,n){for(var i=0,r=t.length;i=0&&(r.dimension=o,i.push(r))}})),t.getData().setVisual("visualMeta",i)}}];function ZF(t,e,n,i){for(var r=e.targetVisuals[i],o=_D.prepareVisualTypes(r),a={color:Ty(t.getData(),"color")},s=0,l=o.length;s0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"})),t.registerAction(YF,XF),E(UF,(function(e){t.registerVisual(t.PRIORITY.VISUAL.COMPONENT,e)})),t.registerPreprocessor(qF))}function QF(t){t.registerComponentModel(kF),t.registerComponentView(FF),JF(t)}var tG=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._pieceList=[],n}return n(e,t),e.prototype.optionUpdated=function(e,n){t.prototype.optionUpdated.apply(this,arguments),this.resetExtent();var i=this._mode=this._determineMode();this._pieceList=[],eG[this._mode].call(this,this._pieceList),this._resetSelected(e,n);var r=this.option.categories;this.resetVisual((function(t,e){"categories"===i?(t.mappingMethod="category",t.categories=T(r)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=z(this._pieceList,(function(t){return t=T(t),"inRange"!==e&&(t.visual=null),t})))}))},e.prototype.completeVisualOption=function(){var e=this.option,n={},i=_D.listVisualTypes(),r=this.isCategory();function o(t,e,n){return t&&t[e]&&t[e].hasOwnProperty(n)}E(e.pieces,(function(t){E(i,(function(e){t.hasOwnProperty(e)&&(n[e]=1)}))})),E(n,(function(t,n){var i=!1;E(this.stateList,(function(t){i=i||o(e,t,n)||o(e.target,t,n)}),this),!i&&E(this.stateList,(function(t){(e[t]||(e[t]={}))[n]=_F(n,"inRange"===t?"active":"inactive",r)}))}),this),t.prototype.completeVisualOption.apply(this,arguments)},e.prototype._resetSelected=function(t,e){var n=this.option,i=this._pieceList,r=(e?n:t).selected||{};if(n.selected=r,E(i,(function(t,e){var n=this.getSelectedMapKey(t);r.hasOwnProperty(n)||(r[n]=!0)}),this),"single"===n.selectedMode){var o=!1;E(i,(function(t,e){var n=this.getSelectedMapKey(t);r[n]&&(o?r[n]=!1:o=!0)}),this)}},e.prototype.getItemSymbol=function(){return this.get("itemSymbol")},e.prototype.getSelectedMapKey=function(t){return"categories"===this._mode?t.value+"":t.index+""},e.prototype.getPieceList=function(){return this._pieceList},e.prototype._determineMode=function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},e.prototype.setSelected=function(t){this.option.selected=T(t)},e.prototype.getValueState=function(t){var e=_D.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var e=[],n=this._pieceList;return this.eachTargetSeries((function(i){var r=[],o=i.getData();o.each(this.getDataDimensionIndex(o),(function(e,i){_D.findPieceIndex(e,n)===t&&r.push(i)}),this),e.push({seriesId:i.id,dataIndex:r})}),this),e},e.prototype.getRepresentValue=function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var n=t.interval||[];e=n[0]===-1/0&&n[1]===1/0?0:(n[0]+n[1])/2}return e},e.prototype.getVisualMeta=function(t){if(!this.isCategory()){var e=[],n=["",""],i=this,r=this._pieceList.slice();if(r.length){var o=r[0].interval[0];o!==-1/0&&r.unshift({interval:[-1/0,o]}),(o=r[r.length-1].interval[1])!==1/0&&r.push({interval:[o,1/0]})}else r.push({interval:[-1/0,1/0]});var a=-1/0;return E(r,(function(t){var e=t.interval;e&&(e[0]>a&&s([a,e[0]],"outOfRange"),s(e.slice()),a=e[1])}),this),{stops:e,outerColors:n}}function s(r,o){var a=i.getRepresentValue({interval:r});o||(o=i.getValueState(a));var s=t(a,o);r[0]===-1/0?n[0]=s:r[1]===1/0?n[1]=s:e.push({value:r[0],color:s},{value:r[1],color:s})}},e.type="visualMap.piecewise",e.defaultOption=Cc(DF.defaultOption,{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieces:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0}),e}(DF),eG={splitNumber:function(t){var e=this.option,n=Math.min(e.precision,20),i=this.getExtent(),r=e.splitNumber;r=Math.max(parseInt(r,10),1),e.splitNumber=r;for(var o=(i[1]-i[0])/r;+o.toFixed(n)!==o&&n<5;)n++;e.precision=n,o=+o.toFixed(n),e.minOpen&&t.push({interval:[-1/0,i[0]],close:[0,0]});for(var a=0,s=i[0];a","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,n)}),this)}};function nG(t,e){var n=t.inverse;("vertical"===t.orient?!n:n)&&e.reverse()}var iG=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.doRender=function(){var t=this.group;t.removeAll();var e=this.visualMapModel,n=e.get("textGap"),i=e.textStyleModel,r=i.getFont(),o=i.getTextColor(),a=this._getItemAlign(),s=e.itemSize,l=this._getViewData(),u=l.endsText,h=it(e.get("showLabel",!0),!u);u&&this._renderEndsText(t,u[0],s,h,a),E(l.viewPieceList,(function(i){var l=i.piece,u=new zr;u.onclick=W(this._onItemClick,this,l),this._enableHoverLink(u,i.indexInModelPieceList);var c=e.getRepresentValue(l);if(this._createItemSymbol(u,c,[0,0,s[0],s[1]]),h){var p=this.visualMapModel.getValueState(c);u.add(new Fs({style:{x:"right"===a?-n:s[0]+n,y:s[1]/2,text:l.text,verticalAlign:"middle",align:a,font:r,fill:o,opacity:"outOfRange"===p?.5:1}}))}t.add(u)}),this),u&&this._renderEndsText(t,u[1],s,h,a),Tp(e.get("orient"),t,e.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},e.prototype._enableHoverLink=function(t,e){var n=this;t.on("mouseover",(function(){return i("highlight")})).on("mouseout",(function(){return i("downplay")}));var i=function(t){var i=n.visualMapModel;i.option.hoverLink&&n.api.dispatchAction({type:t,batch:NF(i.findTargetDataIndices(e),i)})}},e.prototype._getItemAlign=function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return RF(t,this.api,t.itemSize);var n=e.align;return n&&"auto"!==n||(n="left"),n},e.prototype._renderEndsText=function(t,e,n,i,r){if(e){var o=new zr,a=this.visualMapModel.textStyleModel;o.add(new Fs({style:nc(a,{x:i?"right"===r?n[0]:0:n[0]/2,y:n[1]/2,verticalAlign:"middle",align:i?r:"center",text:e})})),t.add(o)}},e.prototype._getViewData=function(){var t=this.visualMapModel,e=z(t.getPieceList(),(function(t,e){return{piece:t,indexInModelPieceList:e}})),n=t.get("text"),i=t.get("orient"),r=t.get("inverse");return("horizontal"===i?r:!r)?e.reverse():n&&(n=n.slice().reverse()),{viewPieceList:e,endsText:n}},e.prototype._createItemSymbol=function(t,e,n){t.add(Wy(this.getControllerVisual(e,"symbol"),n[0],n[1],n[2],n[3],this.getControllerVisual(e,"color")))},e.prototype._onItemClick=function(t){var e=this.visualMapModel,n=e.option,i=n.selectedMode;if(i){var r=T(n.selected),o=e.getSelectedMapKey(t);"single"===i||!0===i?(r[o]=!0,E(r,(function(t,e){r[e]=e===o}))):r[o]=!r[o],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:r})}},e.type="visualMap.piecewise",e}(PF);function rG(t){t.registerComponentModel(tG),t.registerComponentView(iG),JF(t)}var oG={label:{enabled:!0},decal:{show:!1}},aG=Oo(),sG={};function lG(t,e){var n=t.getModel("aria");if(n.get("enabled")){var i=T(oG);C(i.label,t.getLocaleModel().get("aria"),!1),C(n.option,i,!1),function(){if(n.getModel("decal").get("show")){var e=yt();t.eachSeries((function(t){if(!t.isColorBySeries()){var n=e.get(t.type);n||(n={},e.set(t.type,n)),aG(t).scope=n}})),t.eachRawSeries((function(e){if(!t.isSeriesFiltered(e))if(X(e.enableAriaDecal))e.enableAriaDecal();else{var n=e.getData();if(e.isColorBySeries()){var i=ud(e.ecModel,e.name,sG,t.getSeriesCount()),r=n.getVisual("decal");n.setVisual("decal",u(r,i))}else{var o=e.getRawData(),a={},s=aG(e).scope;n.each((function(t){var e=n.getRawIndex(t);a[e]=t}));var l=o.count();o.each((function(t){var i=a[t],r=o.getName(t)||t+"",h=ud(e.ecModel,r,s,l),c=n.getItemVisual(i,"decal");n.setItemVisual(i,"decal",u(c,h))}))}}function u(t,e){var n=t?A(A({},e),t):e;return n.dirty=!0,n}}))}}(),function(){var i=t.getLocaleModel().get("aria"),o=n.getModel("label");if(o.option=k(o.option,i),!o.get("enabled"))return;var a=e.getZr().dom;if(o.get("description"))return void a.setAttribute("aria-label",o.get("description"));var s,l=t.getSeriesCount(),u=o.get(["data","maxCount"])||10,h=o.get(["series","maxCount"])||10,c=Math.min(l,h);if(l<1)return;var p=function(){var e=t.get("title");e&&e.length&&(e=e[0]);return e&&e.text}();s=p?r(o.get(["general","withTitle"]),{title:p}):o.get(["general","withoutTitle"]);var d=[];s+=r(l>1?o.get(["series","multiple","prefix"]):o.get(["series","single","prefix"]),{seriesCount:l}),t.eachSeries((function(e,n){if(n1?o.get(["series","multiple",a]):o.get(["series","single",a]),{seriesId:e.seriesIndex,seriesName:e.get("name"),seriesType:(x=e.subType,t.getLocaleModel().get(["series","typeNames"])[x]||"自定义图")});var s=e.getData();if(s.count()>u)i+=r(o.get(["data","partialData"]),{displayCnt:u});else i+=o.get(["data","allData"]);for(var h=o.get(["data","separator","middle"]),p=o.get(["data","separator","end"]),f=[],g=0;g":"gt",">=":"gte","=":"eq","!=":"ne","<>":"ne"},cG=function(){function t(t){if(null==(this._condVal=U(t)?new RegExp(t):et(t)?t:null)){var e="";0,vo(e)}}return t.prototype.evaluate=function(t){var e=typeof t;return U(e)?this._condVal.test(t):!!j(e)&&this._condVal.test(t+"")},t}(),pG=function(){function t(){}return t.prototype.evaluate=function(){return this.value},t}(),dG=function(){function t(){}return t.prototype.evaluate=function(){for(var t=this.children,e=0;e2&&l.push(e),e=[t,n]}function f(t,n,i,r){TG(t,i)&&TG(n,r)||e.push(t,n,i,r,i,r)}function g(t,n,i,r,o,a){var s=Math.abs(n-t),l=4*Math.tan(s/4)/3,u=nM:C2&&l.push(e),l}function DG(t,e,n,i,r,o,a,s,l,u){if(TG(t,n)&&TG(e,i)&&TG(r,a)&&TG(o,s))l.push(a,s);else{var h=2/u,c=h*h,p=a-t,d=s-e,f=Math.sqrt(p*p+d*d);p/=f,d/=f;var g=n-t,y=i-e,v=r-a,m=o-s,x=g*g+y*y,_=v*v+m*m;if(x=0&&_-w*w=0)l.push(a,s);else{var S=[],M=[];wn(t,n,r,a,.5,S),wn(e,i,o,s,.5,M),DG(S[0],M[0],S[1],M[1],S[2],M[2],S[3],M[3],l,u),DG(S[4],M[4],S[5],M[5],S[6],M[6],S[7],M[7],l,u)}}}}function AG(t,e,n){var i=t[e],r=t[1-e],o=Math.abs(i/r),a=Math.ceil(Math.sqrt(o*n)),s=Math.floor(n/a);0===s&&(s=1,a=n);for(var l=[],u=0;u0)for(u=0;uMath.abs(u),c=AG([l,u],h?0:1,e),p=(h?s:u)/c.length,d=0;d1?null:new De(d*l+t,d*u+e)}function OG(t,e,n){var i=new De;De.sub(i,n,e),i.normalize();var r=new De;return De.sub(r,t,e),r.dot(i)}function RG(t,e){var n=t[t.length-1];n&&n[0]===e[0]&&n[1]===e[1]||t.push(e)}function NG(t){var e=t.points,n=[],i=[];Ra(e,n,i);var r=new ze(n[0],n[1],i[0]-n[0],i[1]-n[1]),o=r.width,a=r.height,s=r.x,l=r.y,u=new De,h=new De;return o>a?(u.x=h.x=s+o/2,u.y=l,h.y=l+a):(u.y=h.y=l+a/2,u.x=s,h.x=s+o),function(t,e,n){for(var i=t.length,r=[],o=0;or,a=AG([i,r],o?0:1,e),s=o?"width":"height",l=o?"height":"width",u=o?"x":"y",h=o?"y":"x",c=t[s]/a.length,p=0;p0)for(var b=i/n,w=-i/2;w<=i/2;w+=b){var S=Math.sin(w),M=Math.cos(w),I=0;for(x=0;x0;l/=2){var u=0,h=0;(t&l)>0&&(u=1),(e&l)>0&&(h=1),s+=l*l*(3*u^h),0===h&&(1===u&&(t=l-1-t,e=l-1-e),a=t,t=e,e=a)}return s}function JG(t){var e=1/0,n=1/0,i=-1/0,r=-1/0,o=z(t,(function(t){var o=t.getBoundingRect(),a=t.getComputedTransform(),s=o.x+o.width/2+(a?a[4]:0),l=o.y+o.height/2+(a?a[5]:0);return e=Math.min(s,e),n=Math.min(l,n),i=Math.max(s,i),r=Math.max(l,r),[s,l]}));return z(o,(function(o,a){return{cp:o,z:$G(o[0],o[1],e,n,i,r),path:t[a]}})).sort((function(t,e){return t.z-e.z})).map((function(t){return t.path}))}function QG(t){return VG(t.path,t.count)}function tW(t){return Y(t[0])}function eW(t,e){for(var n=[],i=t.length,r=0;r=0;r--)if(!n[r].many.length){var l=n[s].many;if(l.length<=1){if(!s)return n;s=0}o=l.length;var u=Math.ceil(o/2);n[r].many=l.slice(u,o),n[s].many=l.slice(0,u),s++}return n}var nW={clone:function(t){for(var e=[],n=1-Math.pow(1-t.path.style.opacity,1/t.count),i=0;i0){var s,l,u=i.getModel("universalTransition").get("delay"),h=Object.assign({setToFinal:!0},a);tW(t)&&(s=t,l=e),tW(e)&&(s=e,l=t);for(var c=s?s===t:t.length>e.length,p=s?eW(l,s):eW(c?e:t,[c?t:e]),d=0,f=0;f1e4))for(var i=n.getIndices(),r=function(t){for(var e=t.dimensions,n=0;n0&&i.group.traverse((function(t){t instanceof Is&&!t.animators.length&&t.animateFrom({style:{opacity:0}},r)}))}))}function pW(t){var e=t.getModel("universalTransition").get("seriesKey");return e||t.id}function dW(t){return Y(t)?t.sort().join(","):t}function fW(t){if(t.hostModel)return t.hostModel.getModel("universalTransition").get("divideShape")}function gW(t,e){for(var n=0;n=0&&r.push({dataGroupId:e.oldDataGroupIds[n],data:e.oldData[n],divide:fW(e.oldData[n]),dim:t.dimension})})),E(bo(t.to),(function(t){var i=gW(n.updatedSeries,t);if(i>=0){var r=n.updatedSeries[i].getData();o.push({dataGroupId:e.oldDataGroupIds[i],data:r,divide:fW(r),dim:t.dimension})}})),r.length>0&&o.length>0&&cW(r,o,i)}(t,i,n,e)}));else{var o=function(t,e){var n=yt(),i=yt(),r=yt();return E(t.oldSeries,(function(e,n){var o=t.oldDataGroupIds[n],a=t.oldData[n],s=pW(e),l=dW(s);i.set(l,{dataGroupId:o,data:a}),Y(s)&&E(s,(function(t){r.set(t,{key:l,dataGroupId:o,data:a})}))})),E(e.updatedSeries,(function(t){if(t.isUniversalTransitionEnabled()&&t.isAnimationEnabled()){var e=t.get("dataGroupId"),o=t.getData(),a=pW(t),s=dW(a),l=i.get(s);if(l)n.set(s,{oldSeries:[{dataGroupId:l.dataGroupId,divide:fW(l.data),data:l.data}],newSeries:[{dataGroupId:e,divide:fW(o),data:o}]});else if(Y(a)){var u=[];E(a,(function(t){var e=i.get(t);e.data&&u.push({dataGroupId:e.dataGroupId,divide:fW(e.data),data:e.data})})),u.length&&n.set(s,{oldSeries:u,newSeries:[{dataGroupId:e,data:o,divide:fW(o)}]})}else{var h=r.get(a);if(h){var c=n.get(h.key);c||(c={oldSeries:[{dataGroupId:h.dataGroupId,data:h.data,divide:fW(h.data)}],newSeries:[]},n.set(h.key,c)),c.newSeries.push({dataGroupId:e,data:o,divide:fW(o)})}}}})),n}(i,n);E(o.keys(),(function(t){var n=o.get(t);cW(n.oldSeries,n.newSeries,e)}))}E(n.updatedSeries,(function(t){t[vg]&&(t[vg]=!1)}))}for(var a=t.getSeries(),s=i.oldSeries=[],l=i.oldDataGroupIds=[],u=i.oldData=[],h=0;himg{width:100%;height:100%;display:block}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}.el-avatar-group{--el-avatar-group-item-gap:-8px;--el-avatar-group-collapse-item-gap:4px;display:inline-flex}.el-avatar-group .el-avatar{border:1px solid var(--el-border-color-extra-light)}.el-avatar-group .el-avatar:not(:first-child){margin-left:var(--el-avatar-group-item-gap)}.el-avatar-group__collapse-avatars{--el-avatar-group-item-gap:-8px;--el-avatar-group-collapse-item-gap:4px}.el-avatar-group__collapse-avatars .el-avatar:not(:first-child){margin-left:var(--el-avatar-group-collapse-item-gap)}.el-backtop{--el-backtop-bg-color:var(--el-bg-color-overlay);--el-backtop-text-color:var(--el-color-primary);--el-backtop-hover-bg-color:var(--el-border-color-extra-light);background-color:var(--el-backtop-bg-color);width:40px;height:40px;color:var(--el-backtop-text-color);box-shadow:var(--el-box-shadow-lighter);cursor:pointer;z-index:5;border-radius:50%;justify-content:center;align-items:center;font-size:20px;display:flex;position:fixed}.el-backtop:hover{background-color:var(--el-backtop-hover-bg-color)}.el-backtop__icon{font-size:20px}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;vertical-align:middle;width:-moz-fit-content;width:fit-content;display:inline-block;position:relative}.el-badge__content{background-color:var(--el-badge-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);font-size:var(--el-badge-font-size);height:var(--el-badge-size);padding:0 var(--el-badge-padding);white-space:nowrap;border:1px solid var(--el-bg-color);justify-content:center;align-items:center;display:inline-flex}.el-badge__content.is-fixed{top:0;right:calc(1px + var(--el-badge-size) / 2);z-index:var(--el-index-normal);position:absolute;transform:translateY(-50%)translate(100%)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;width:8px;height:8px;padding:0;right:0}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);margin:0 9px;font-weight:700}.el-breadcrumb__separator.el-icon{margin:0 6px;font-weight:400}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{float:left;align-items:center;display:inline-flex}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner.is-link,.el-breadcrumb__inner a{transition:var(--el-transition-color);color:var(--el-text-color-primary);font-weight:700;text-decoration:none}.el-breadcrumb__inner.is-link:hover,.el-breadcrumb__inner a:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:before,.el-breadcrumb:after{content:"";display:table}.el-breadcrumb:after{clear:both}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-bottom-left-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:hover,.el-button-group>.el-button:focus,.el-button-group>.el-button:active,.el-button-group>.el-button.is-active{z-index:1}.el-button-group--horizontal{vertical-align:middle;display:inline-block}.el-button-group--horizontal:before,.el-button-group--horizontal:after{content:"";display:table}.el-button-group--horizontal:after{clear:both}.el-button-group--horizontal>.el-button{float:left;position:relative}.el-button-group--horizontal>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group--horizontal>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group--horizontal>.el-button:not(:last-child){margin-right:-1px}.el-button-group--horizontal .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal>.el-dropdown>.el-button{border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group--vertical{flex-direction:column;align-items:stretch;display:inline-flex}.el-button-group--vertical>.el-button{margin-top:-1px}.el-button-group--vertical>.el-button:first-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.el-button-group--vertical>.el-button:last-child{border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical>.el-dropdown{margin-top:-1px}.el-button-group--vertical>.el-dropdown>.el-button{border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical .el-button--primary:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:#ffffff80;--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-text-color-secondary);--el-button-active-color:var(--el-text-color-primary);white-space:nowrap;cursor:pointer;height:32px;color:var(--el-button-text-color);text-align:center;box-sizing:border-box;line-height:1;font-weight:var(--el-button-font-weight);-webkit-user-select:none;user-select:none;vertical-align:middle;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);outline:none;justify-content:center;align-items:center;transition:all .1s;display:inline-flex}.el-button:hover{color:var(--el-button-hover-text-color);border-color:var(--el-button-hover-border-color);background-color:var(--el-button-hover-bg-color);outline:none}.el-button:active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset,outline}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base);padding:8px 15px}.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{color:var(--el-button-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color);border-color:var(--el-button-disabled-border-color)}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{z-index:1;pointer-events:none;content:"";border-radius:inherit;background-color:var(--el-mask-color-extra-light);position:absolute;top:-1px;bottom:-1px;left:-1px;right:-1px}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-dashed{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary);border-style:dashed}.el-button.is-circle{border-radius:50%;width:32px;padding:8px}.el-button.is-text{color:var(--el-button-text-color);background-color:#0000;border:0 solid #0000}.el-button.is-text.is-disabled{color:var(--el-button-disabled-text-color);background-color:#0000!important}.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset,outline}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{color:var(--el-button-text-color);background:0 0;border-color:#0000;height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{color:var(--el-button-disabled-text-color);background-color:#0000!important;border-color:#0000!important}.el-button.is-link:not(.is-disabled):hover{background-color:#0000;border-color:#0000}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color);background-color:#0000;border-color:#0000}.el-button--text{color:var(--el-color-primary);background:0 0;border-color:#0000;padding-left:0;padding-right:0}.el-button--text.is-disabled{color:var(--el-button-disabled-text-color);background-color:#0000!important;border-color:#0000!important}.el-button--text:not(.is-disabled):hover{color:var(--el-color-primary-light-3);background-color:#0000;border-color:#0000}.el-button--text:not(.is-disabled):active{color:var(--el-color-primary-dark-2);background-color:#0000;border-color:#0000}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-plain,.el-button--primary.is-text,.el-button--primary.is-link{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:hover,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:active{color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8)}.el-button--primary.is-dashed{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-text-color:var(--el-color-primary-dark-2);--el-button-active-bg-color:var(--el-color-primary-light-9);--el-button-active-border-color:var(--el-color-primary-dark-2)}.el-button--primary.is-dashed.is-disabled,.el-button--primary.is-dashed.is-disabled:hover,.el-button--primary.is-dashed.is-disabled:focus,.el-button--primary.is-dashed.is-disabled:active{color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-plain,.el-button--success.is-text,.el-button--success.is-link{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:hover,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:active,.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:active{color:var(--el-color-success-light-5);background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8)}.el-button--success.is-dashed{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-success);--el-button-hover-bg-color:var(--el-color-success-light-9);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-text-color:var(--el-color-success-dark-2);--el-button-active-bg-color:var(--el-color-success-light-9);--el-button-active-border-color:var(--el-color-success-dark-2)}.el-button--success.is-dashed.is-disabled,.el-button--success.is-dashed.is-disabled:hover,.el-button--success.is-dashed.is-disabled:focus,.el-button--success.is-dashed.is-disabled:active{color:var(--el-color-success-light-5);background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-plain,.el-button--warning.is-text,.el-button--warning.is-link{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:hover,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:active{color:var(--el-color-warning-light-5);background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8)}.el-button--warning.is-dashed{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-warning);--el-button-hover-bg-color:var(--el-color-warning-light-9);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-text-color:var(--el-color-warning-dark-2);--el-button-active-bg-color:var(--el-color-warning-light-9);--el-button-active-border-color:var(--el-color-warning-dark-2)}.el-button--warning.is-dashed.is-disabled,.el-button--warning.is-dashed.is-disabled:hover,.el-button--warning.is-dashed.is-disabled:focus,.el-button--warning.is-dashed.is-disabled:active{color:var(--el-color-warning-light-5);background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-plain,.el-button--danger.is-text,.el-button--danger.is-link{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:hover,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:active{color:var(--el-color-danger-light-5);background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8)}.el-button--danger.is-dashed{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-danger);--el-button-hover-bg-color:var(--el-color-danger-light-9);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-text-color:var(--el-color-danger-dark-2);--el-button-active-bg-color:var(--el-color-danger-light-9);--el-button-active-border-color:var(--el-color-danger-dark-2)}.el-button--danger.is-dashed.is-disabled,.el-button--danger.is-dashed.is-disabled:hover,.el-button--danger.is-dashed.is-disabled:focus,.el-button--danger.is-dashed.is-disabled:active{color:var(--el-color-danger-light-5);background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-plain,.el-button--info.is-text,.el-button--info.is-link{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:hover,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:active,.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:active{color:var(--el-color-info-light-5);background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8)}.el-button--info.is-dashed{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-info);--el-button-hover-bg-color:var(--el-color-info-light-9);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-text-color:var(--el-color-info-dark-2);--el-button-active-bg-color:var(--el-color-info-light-9);--el-button-active-border-color:var(--el-color-info-dark-2)}.el-button--info.is-dashed.is-disabled,.el-button--info.is-dashed.is-disabled:hover,.el-button--info.is-dashed.is-disabled:focus,.el-button--info.is-dashed.is-disabled:active{color:var(--el-color-info-light-5);background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8)}.el-button--large{--el-button-size:40px;height:var(--el-button-size)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large{font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{width:var(--el-button-size);padding:12px}.el-button--small{--el-button-size:24px;height:var(--el-button-size)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:5px 11px;font-size:12px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{width:var(--el-button-size);padding:5px}.el-calendar{--el-calendar-border:var(--el-table-border,1px solid var(--el-border-color-lighter));--el-calendar-header-border-bottom:var(--el-calendar-border);--el-calendar-selected-bg-color:var(--el-color-primary-light-9);--el-calendar-cell-width:85px;background-color:var(--el-fill-color-blank)}.el-calendar__header{border-bottom:var(--el-calendar-header-border-bottom);justify-content:space-between;padding:12px 20px;display:flex}.el-calendar__title{color:var(--el-text-color);align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar__select-controller .el-select{margin-right:8px}.el-calendar__select-controller .el-calendar-select__year{width:120px}.el-calendar__select-controller .el-calendar-select__month{width:60px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{color:var(--el-text-color-regular);padding:12px 0;font-weight:400}.el-calendar-table:not(.is-range) td.prev,.el-calendar-table:not(.is-range) td.next{color:var(--el-text-color-placeholder)}.el-calendar-table td{border-bottom:var(--el-calendar-border);border-right:var(--el-calendar-border);vertical-align:top;transition:background-color var(--el-transition-duration-fast) ease}.el-calendar-table td.is-selected{background-color:var(--el-calendar-selected-bg-color)}.el-calendar-table td.is-today{color:var(--el-color-primary)}.el-calendar-table tr:first-child td{border-top:var(--el-calendar-border)}.el-calendar-table tr td:first-child{border-left:var(--el-calendar-border)}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;height:var(--el-calendar-cell-width);padding:8px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:var(--el-calendar-selected-bg-color)}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);border-radius:var(--el-card-border-radius);border:1px solid var(--el-card-border-color);background-color:var(--el-card-bg-color);color:var(--el-text-color-primary);transition:var(--el-transition-duration);flex-direction:column;display:flex;overflow:hidden}.el-card.is-always-shadow,.el-card.is-hover-shadow:hover,.el-card.is-hover-shadow:focus{box-shadow:var(--el-box-shadow-light)}.el-card__header{padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding);border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box}.el-card__body{padding:var(--el-card-padding);flex-grow:1;overflow:auto}.el-card__footer{padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding);border-top:1px solid var(--el-card-border-color);box-sizing:border-box}.el-carousel__item{width:100%;height:100%;z-index:calc(var(--el-index-normal) - 1);display:inline-block;position:absolute;top:0;left:0;overflow:hidden}.el-carousel__item.is-active{z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%;transition:transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:var(--el-index-normal)}.el-carousel__item--card.is-in-stage:hover .el-carousel__mask,.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:calc(var(--el-index-normal) + 1)}.el-carousel__item--card-vertical{width:100%;height:50%}.el-carousel__mask{background-color:var(--el-color-white);opacity:.24;width:100%;height:100%;transition:var(--el-transition-duration-fast);position:absolute;top:0;left:0}.el-carousel{--el-carousel-arrow-font-size:12px;--el-carousel-arrow-size:36px;--el-carousel-arrow-background:#1f2d3d1c;--el-carousel-arrow-hover-background:#1f2d3d3b;--el-carousel-indicator-width:30px;--el-carousel-indicator-height:2px;--el-carousel-indicator-padding-horizontal:4px;--el-carousel-indicator-padding-vertical:12px;--el-carousel-indicator-out-color:var(--el-border-color-hover);position:relative}.el-carousel--horizontal,.el-carousel--vertical{overflow:hidden}.el-carousel.is-vertical-outside{flex-direction:row;align-items:center;display:flex}.el-carousel.is-vertical-outside .el-carousel__container{flex:1}.el-carousel__container{height:300px;position:relative}.el-carousel__arrow{height:var(--el-carousel-arrow-size);width:var(--el-carousel-arrow-size);cursor:pointer;transition:var(--el-transition-duration);background-color:var(--el-carousel-arrow-background);color:#fff;z-index:10;text-align:center;font-size:var(--el-carousel-arrow-font-size);border:none;border-radius:50%;outline:none;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:var(--el-carousel-arrow-hover-background)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{z-index:calc(var(--el-index-normal) + 1);margin:0;padding:0;list-style:none;position:absolute}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translate(-50%)}.el-carousel__indicators--vertical{top:50%;right:0;transform:translateY(-50%)}.el-carousel__indicators--outside{text-align:center;position:static;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:var(--el-carousel-indicator-out-color);opacity:.24}.el-carousel__indicators--right{right:0}.el-carousel__indicators--labels .el-carousel__button{color:#000;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{cursor:pointer;background-color:#0000}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{padding:var(--el-carousel-indicator-padding-vertical) var(--el-carousel-indicator-padding-horizontal);display:inline-block}.el-carousel__indicator--vertical{padding:var(--el-carousel-indicator-padding-horizontal) var(--el-carousel-indicator-padding-vertical)}.el-carousel__indicator--vertical .el-carousel__button{width:var(--el-carousel-indicator-height);height:calc(var(--el-carousel-indicator-width) / 2)}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{opacity:.48;width:var(--el-carousel-indicator-width);height:var(--el-carousel-indicator-height);cursor:pointer;transition:var(--el-transition-duration);background-color:#fff;border:none;outline:none;margin:0;padding:0;display:block}.el-carousel__indicators--labels .el-carousel__button{width:auto;height:auto}.carousel-arrow-left-enter-from,.carousel-arrow-left-leave-active{opacity:0;transform:translateY(-50%)translate(-10px)}.carousel-arrow-right-enter-from,.carousel-arrow-right-leave-active{opacity:0;transform:translateY(-50%)translate(10px)}.el-transitioning{filter:url(#elCarouselHorizontal)}.el-transitioning-vertical{filter:url(#elCarouselVertical)}.el-cascader-panel{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);border-radius:var(--el-cascader-menu-radius);width:-moz-fit-content;width:fit-content;font-size:var(--el-cascader-menu-font-size);display:flex}.el-cascader-panel.is-bordered{border:var(--el-cascader-menu-border);border-radius:var(--el-cascader-menu-radius)}.el-cascader-menu{box-sizing:border-box;min-width:180px;color:var(--el-cascader-menu-text-color);border-right:var(--el-cascader-menu-border)}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap.el-scrollbar__wrap{height:204px}.el-cascader-menu__list{box-sizing:border-box;min-height:100%;margin:0;padding:6px 0;list-style:none;position:relative}.el-cascader-menu__list.el-vl__window{margin:6px 0;padding:0}.el-cascader-menu__list.el-vl__window ul{margin:0;padding:0}.el-cascader-menu__hover-zone{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.el-cascader-menu__empty-text{color:var(--el-cascader-color-empty);align-items:center;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.el-cascader-menu__empty-text .is-loading{margin-right:2px}.el-cascader-node{box-sizing:border-box;outline:none;align-items:center;height:34px;padding:0 30px 0 20px;line-height:34px;display:flex;position:relative}.el-cascader-node.is-selectable.in-active-path{color:var(--el-cascader-menu-text-color)}.el-cascader-node.in-active-path,.el-cascader-node.is-selectable.in-checked-path,.el-cascader-node.is-active{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):hover,.el-cascader-node:not(.is-disabled):focus{background:var(--el-cascader-node-background-hover)}.el-cascader-node.is-disabled{color:var(--el-cascader-node-color-disabled);cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{text-align:left;white-space:nowrap;text-overflow:ellipsis;flex:1;padding:0 8px;overflow:hidden}.el-cascader-node>.el-checkbox,.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-cascader{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);vertical-align:middle;font-size:var(--el-font-size-base);outline:none;line-height:32px;display:inline-block;position:relative}.el-cascader:not(.is-disabled):hover .el-input__wrapper{cursor:pointer;box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-cascader .el-input{cursor:pointer;display:flex}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-input__inner:read-only{cursor:pointer}.el-cascader .el-input .el-input__inner:disabled{cursor:not-allowed}.el-cascader .el-input .el-input__suffix-inner .el-icon svg{vertical-align:middle}.el-cascader .el-input .icon-arrow-down{transition:transform var(--el-transition-duration);font-size:14px}.el-cascader .el-input .icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .icon-circle-close:hover{color:var(--el-input-clear-hover-color,var(--el-text-color-secondary))}.el-cascader .el-input.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-cascader--large{font-size:14px;line-height:40px}.el-cascader--large .el-cascader__tags{gap:6px;padding:8px}.el-cascader--large .el-cascader__search-input{height:24px;margin-left:7px}.el-cascader--small{font-size:12px;line-height:24px}.el-cascader--small .el-cascader__tags{gap:4px;padding:2px}.el-cascader--small .el-cascader__search-input{height:20px;margin-left:5px}.el-cascader.is-disabled .el-cascader__label{z-index:calc(var(--el-index-normal) + 1);color:var(--el-disabled-text-color)}.el-cascader__dropdown{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);font-size:var(--el-cascader-menu-font-size);border-radius:var(--el-cascader-menu-radius)}.el-cascader__dropdown.el-popper{background:var(--el-cascader-menu-fill);border:var(--el-cascader-menu-border);box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__dropdown.el-popper .el-popper__arrow:before{border:var(--el-cascader-menu-border)}.el-cascader__dropdown.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-cascader__dropdown.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-cascader__dropdown.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-cascader__dropdown.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-cascader__dropdown.el-popper{box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__header{border-bottom:1px solid var(--el-border-color-light);padding:10px}.el-cascader__footer{border-top:1px solid var(--el-border-color-light);padding:10px}.el-cascader__tags{text-align:left;box-sizing:border-box;flex-wrap:wrap;gap:6px;padding:4px;line-height:normal;display:flex;position:absolute;top:50%;left:0;right:30px;transform:translateY(-50%)}.el-cascader__tags .el-tag{text-overflow:ellipsis;background:var(--el-cascader-tag-background);align-items:center;max-width:100%;display:inline-flex}.el-cascader__tags .el-tag.el-tag--dark,.el-cascader__tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__tags .el-tag:not(.is-hit){border-color:#0000}.el-cascader__tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__tags .el-tag>span{text-overflow:ellipsis;flex:1;line-height:normal;overflow:hidden}.el-cascader__tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__tags .el-tag+input{margin-left:0}.el-cascader__tags.is-validate{right:55px}.el-cascader__collapse-tags{white-space:normal;z-index:var(--el-index-normal)}.el-cascader__collapse-tags .el-tag{text-overflow:ellipsis;background:var(--el-fill-color);align-items:center;max-width:100%;display:inline-flex}.el-cascader__collapse-tags .el-tag.el-tag--dark,.el-cascader__collapse-tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__collapse-tags .el-tag:not(.is-hit){border-color:#0000}.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__collapse-tags .el-tag>span{text-overflow:ellipsis;flex:1;line-height:normal;overflow:hidden}.el-cascader__collapse-tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__collapse-tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__collapse-tags .el-tag+input{margin-left:0}.el-cascader__collapse-tags .el-tag{margin:2px 0}.el-cascader__suggestion-panel{border-radius:var(--el-cascader-menu-radius)}.el-cascader__suggestion-wrap{max-height:204px}.el-cascader__suggestion-list{font-size:var(--el-font-size-base);color:var(--el-cascader-menu-text-color);text-align:center;margin:0;padding:6px 0;list-style:none}.el-cascader__suggestion-list.el-vl__window{margin:6px 0;padding:0}.el-cascader__suggestion-list.el-vl__window ul{margin:0;padding:0}.el-cascader__suggestion-item{text-align:left;cursor:pointer;box-sizing:border-box;outline:none;justify-content:space-between;align-items:center;height:34px;padding:0 15px;display:flex}.el-cascader__suggestion-item:hover,.el-cascader__suggestion-item:focus{background:var(--el-cascader-node-background-hover)}.el-cascader__suggestion-item.is-checked{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader__suggestion-item>:not(.el-icon){white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__suggestion-item .el-icon{flex-shrink:0}.el-cascader__empty-text{color:var(--el-cascader-color-empty);margin:10px 0}.el-cascader__search-input{min-width:60px;height:24px;color:var(--el-cascader-menu-text-color);box-sizing:border-box;background:0 0;border:none;outline:none;flex:1;margin-left:7px;padding:0}.el-cascader__search-input::placeholder{color:#0000}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;font-size:var(--el-font-size-base);line-height:var(--el-font-size-base);transition:var(--el-transition-all);padding:7px 15px;font-weight:700;display:inline-block}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--primary.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary)}.el-check-tag.el-check-tag--primary.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-check-tag.el-check-tag--primary.is-checked.is-disabled{background-color:var(--el-color-primary-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-checked.is-disabled:hover{background-color:var(--el-color-primary-light-8)}.el-check-tag.el-check-tag--primary.is-disabled{background-color:var(--el-color-info-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-check-tag.el-check-tag--success.is-checked{background-color:var(--el-color-success-light-8);color:var(--el-color-success)}.el-check-tag.el-check-tag--success.is-checked:hover{background-color:var(--el-color-success-light-7)}.el-check-tag.el-check-tag--success.is-checked.is-disabled{background-color:var(--el-color-success-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-checked.is-disabled:hover{background-color:var(--el-color-success-light-8)}.el-check-tag.el-check-tag--success.is-disabled{background-color:var(--el-color-success-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-disabled:hover{background-color:var(--el-color-success-light-9)}.el-check-tag.el-check-tag--warning.is-checked{background-color:var(--el-color-warning-light-8);color:var(--el-color-warning)}.el-check-tag.el-check-tag--warning.is-checked:hover{background-color:var(--el-color-warning-light-7)}.el-check-tag.el-check-tag--warning.is-checked.is-disabled{background-color:var(--el-color-warning-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-checked.is-disabled:hover{background-color:var(--el-color-warning-light-8)}.el-check-tag.el-check-tag--warning.is-disabled{background-color:var(--el-color-warning-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-disabled:hover{background-color:var(--el-color-warning-light-9)}.el-check-tag.el-check-tag--danger.is-checked{background-color:var(--el-color-danger-light-8);color:var(--el-color-danger)}.el-check-tag.el-check-tag--danger.is-checked:hover{background-color:var(--el-color-danger-light-7)}.el-check-tag.el-check-tag--danger.is-checked.is-disabled{background-color:var(--el-color-danger-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-checked.is-disabled:hover{background-color:var(--el-color-danger-light-8)}.el-check-tag.el-check-tag--danger.is-disabled{background-color:var(--el-color-danger-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-disabled:hover{background-color:var(--el-color-danger-light-9)}.el-check-tag.el-check-tag--error.is-checked{background-color:var(--el-color-error-light-8);color:var(--el-color-error)}.el-check-tag.el-check-tag--error.is-checked:hover{background-color:var(--el-color-error-light-7)}.el-check-tag.el-check-tag--error.is-checked.is-disabled{background-color:var(--el-color-error-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-checked.is-disabled:hover{background-color:var(--el-color-error-light-8)}.el-check-tag.el-check-tag--error.is-disabled{background-color:var(--el-color-error-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-disabled:hover{background-color:var(--el-color-error-light-9)}.el-check-tag.el-check-tag--info.is-checked{background-color:var(--el-color-info-light-8);color:var(--el-color-info)}.el-check-tag.el-check-tag--info.is-checked:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--info.is-checked.is-disabled{background-color:var(--el-color-info-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-checked.is-disabled:hover{background-color:var(--el-color-info-light-8)}.el-check-tag.el-check-tag--info.is-disabled{background-color:var(--el-color-info-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-checkbox-button{--el-checkbox-button-checked-bg-color:var(--el-color-primary);--el-checkbox-button-checked-text-color:var(--el-color-white);--el-checkbox-button-checked-border-color:var(--el-color-primary);--el-checkbox-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;position:relative}.el-checkbox-button__inner{line-height:1;font-weight:var(--el-checkbox-font-weight);white-space:nowrap;vertical-align:middle;cursor:pointer;background:var(--el-button-bg-color,var(--el-fill-color-blank));outline:var(--el-border);color:var(--el-button-text-color,var(--el-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;font-size:var(--el-font-size-base);border-radius:0;margin:0;padding:8px 15px;display:inline-block;position:relative}.el-checkbox-button__inner.is-round{padding:8px 15px}.el-checkbox-button__inner:hover{color:var(--el-color-primary)}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;z-index:-1;outline:none;margin:0;position:absolute}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:var(--el-checkbox-button-checked-text-color);background-color:var(--el-checkbox-button-checked-bg-color);border-color:var(--el-checkbox-button-checked-border-color);box-shadow:-1px 0 0 0 var(--el-color-primary-light-7)}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:var(--el-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:var(--el-button-disabled-border-color,var(--el-border-color-light))}.el-checkbox-button.is-disabled.is-checked .el-checkbox-button__inner{background-color:var(--el-checkbox-button-disabled-checked-fill)}.el-checkbox-button:first-child .el-checkbox-button__inner{border-top-left-radius:var(--el-border-radius-base);border-bottom-left-radius:var(--el-border-radius-base);box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button:last-child .el-checkbox-button__inner{border-top-right-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base)}.el-checkbox-button--large .el-checkbox-button__inner{font-size:var(--el-font-size-base);border-radius:0;padding:12px 19px}.el-checkbox-button--large .el-checkbox-button__inner.is-round{padding:12px 19px}.el-checkbox-button--small .el-checkbox-button__inner{border-radius:0;padding:5px 11px;font-size:12px}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:5px 11px}.el-checkbox-group{font-size:0;line-height:0}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary);color:var(--el-checkbox-text-color);font-weight:var(--el-checkbox-font-weight);font-size:var(--el-font-size-base);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;height:var(--el-checkbox-height,32px);align-items:center;margin-right:30px;display:inline-flex;position:relative}.el-checkbox.is-disabled{cursor:not-allowed}.el-checkbox.is-bordered{border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box;padding:0 15px 0 9px}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter)}.el-checkbox.is-bordered.el-checkbox--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{width:14px;height:14px}.el-checkbox.is-bordered.el-checkbox--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:0 11px 0 7px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{width:12px;height:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{width:2px;height:6px}.el-checkbox input:focus-visible+.el-checkbox__inner{outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px;border-radius:var(--el-checkbox-border-radius)}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:none;display:inline-flex;position:relative}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:var(--el-checkbox-disabled-icon-color);will-change:transform}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-checked-icon-color);transform:translate(-45%,-60%)rotate(45deg)scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:"";background-color:var(--el-checkbox-checked-icon-color);height:2px;display:block;position:absolute;top:5px;left:0;right:0;transform:scale(.5)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;width:var(--el-checkbox-input-width);height:var(--el-checkbox-input-height);background-color:var(--el-checkbox-bg-color);z-index:var(--el-index-normal);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46),outline .25s cubic-bezier(.71,-.46,.29,1.46);display:inline-block;position:relative}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{box-sizing:content-box;content:"";transform-origin:50%;border:1px solid #0000;border-top:0;border-left:0;width:3px;height:7px;transition:transform .15s ease-in 50ms;position:absolute;top:50%;left:50%;transform:translate(-45%,-60%)rotate(45deg)scaleY(0)}.el-checkbox__original{opacity:0;z-index:-1;outline:none;width:0;height:0;margin:0;position:absolute}.el-checkbox__label{line-height:1;font-size:var(--el-checkbox-font-size);padding-left:8px;display:inline-block}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{width:14px;height:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{width:12px;height:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{width:2px;height:6px}.el-checkbox:last-of-type{margin-right:0}[class*=el-col-]{box-sizing:border-box}[class*=el-col-].is-guttered{min-height:1px;display:block}.el-col-0{flex:0 0;max-width:0%;display:none}.el-col-0.is-guttered{display:none}.el-col-offset-0{margin-left:0%}.el-col-pull-0{position:relative;right:0%}.el-col-push-0{position:relative;left:0%}.el-col-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-1.is-guttered{display:block}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{position:relative;right:4.16667%}.el-col-push-1{position:relative;left:4.16667%}.el-col-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-2.is-guttered{display:block}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{position:relative;right:8.33333%}.el-col-push-2{position:relative;left:8.33333%}.el-col-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-3.is-guttered{display:block}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{position:relative;left:12.5%}.el-col-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-4.is-guttered{display:block}.el-col-offset-4{margin-left:16.6667%}.el-col-pull-4{position:relative;right:16.6667%}.el-col-push-4{position:relative;left:16.6667%}.el-col-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-5.is-guttered{display:block}.el-col-offset-5{margin-left:20.8333%}.el-col-pull-5{position:relative;right:20.8333%}.el-col-push-5{position:relative;left:20.8333%}.el-col-6{flex:0 0 25%;max-width:25%;display:block}.el-col-6.is-guttered{display:block}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{position:relative;left:25%}.el-col-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-7.is-guttered{display:block}.el-col-offset-7{margin-left:29.1667%}.el-col-pull-7{position:relative;right:29.1667%}.el-col-push-7{position:relative;left:29.1667%}.el-col-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-8.is-guttered{display:block}.el-col-offset-8{margin-left:33.3333%}.el-col-pull-8{position:relative;right:33.3333%}.el-col-push-8{position:relative;left:33.3333%}.el-col-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-9.is-guttered{display:block}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{position:relative;left:37.5%}.el-col-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-10.is-guttered{display:block}.el-col-offset-10{margin-left:41.6667%}.el-col-pull-10{position:relative;right:41.6667%}.el-col-push-10{position:relative;left:41.6667%}.el-col-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-11.is-guttered{display:block}.el-col-offset-11{margin-left:45.8333%}.el-col-pull-11{position:relative;right:45.8333%}.el-col-push-11{position:relative;left:45.8333%}.el-col-12{flex:0 0 50%;max-width:50%;display:block}.el-col-12.is-guttered{display:block}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{position:relative;left:50%}.el-col-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-13.is-guttered{display:block}.el-col-offset-13{margin-left:54.1667%}.el-col-pull-13{position:relative;right:54.1667%}.el-col-push-13{position:relative;left:54.1667%}.el-col-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-14.is-guttered{display:block}.el-col-offset-14{margin-left:58.3333%}.el-col-pull-14{position:relative;right:58.3333%}.el-col-push-14{position:relative;left:58.3333%}.el-col-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-15.is-guttered{display:block}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{position:relative;left:62.5%}.el-col-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-16.is-guttered{display:block}.el-col-offset-16{margin-left:66.6667%}.el-col-pull-16{position:relative;right:66.6667%}.el-col-push-16{position:relative;left:66.6667%}.el-col-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-17.is-guttered{display:block}.el-col-offset-17{margin-left:70.8333%}.el-col-pull-17{position:relative;right:70.8333%}.el-col-push-17{position:relative;left:70.8333%}.el-col-18{flex:0 0 75%;max-width:75%;display:block}.el-col-18.is-guttered{display:block}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{position:relative;left:75%}.el-col-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-19.is-guttered{display:block}.el-col-offset-19{margin-left:79.1667%}.el-col-pull-19{position:relative;right:79.1667%}.el-col-push-19{position:relative;left:79.1667%}.el-col-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-20.is-guttered{display:block}.el-col-offset-20{margin-left:83.3333%}.el-col-pull-20{position:relative;right:83.3333%}.el-col-push-20{position:relative;left:83.3333%}.el-col-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-21.is-guttered{display:block}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{position:relative;left:87.5%}.el-col-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-22.is-guttered{display:block}.el-col-offset-22{margin-left:91.6667%}.el-col-pull-22{position:relative;right:91.6667%}.el-col-push-22{position:relative;left:91.6667%}.el-col-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-23.is-guttered{display:block}.el-col-offset-23{margin-left:95.8333%}.el-col-pull-23{position:relative;right:95.8333%}.el-col-push-23{position:relative;left:95.8333%}.el-col-24{flex:0 0 100%;max-width:100%;display:block}.el-col-24.is-guttered{display:block}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{position:relative;left:100%}@media only screen and (max-width:767px){.el-col-xs-0{flex:0 0;max-width:0%;display:none}.el-col-xs-0.is-guttered{display:none}.el-col-xs-offset-0{margin-left:0%}.el-col-xs-pull-0{position:relative;right:0%}.el-col-xs-push-0{position:relative;left:0%}.el-col-xs-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-xs-1.is-guttered{display:block}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-xs-2.is-guttered{display:block}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-xs-3.is-guttered{display:block}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-xs-4.is-guttered{display:block}.el-col-xs-offset-4{margin-left:16.6667%}.el-col-xs-pull-4{position:relative;right:16.6667%}.el-col-xs-push-4{position:relative;left:16.6667%}.el-col-xs-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-xs-5.is-guttered{display:block}.el-col-xs-offset-5{margin-left:20.8333%}.el-col-xs-pull-5{position:relative;right:20.8333%}.el-col-xs-push-5{position:relative;left:20.8333%}.el-col-xs-6{flex:0 0 25%;max-width:25%;display:block}.el-col-xs-6.is-guttered{display:block}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-xs-7.is-guttered{display:block}.el-col-xs-offset-7{margin-left:29.1667%}.el-col-xs-pull-7{position:relative;right:29.1667%}.el-col-xs-push-7{position:relative;left:29.1667%}.el-col-xs-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-xs-8.is-guttered{display:block}.el-col-xs-offset-8{margin-left:33.3333%}.el-col-xs-pull-8{position:relative;right:33.3333%}.el-col-xs-push-8{position:relative;left:33.3333%}.el-col-xs-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-xs-9.is-guttered{display:block}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-xs-10.is-guttered{display:block}.el-col-xs-offset-10{margin-left:41.6667%}.el-col-xs-pull-10{position:relative;right:41.6667%}.el-col-xs-push-10{position:relative;left:41.6667%}.el-col-xs-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-xs-11.is-guttered{display:block}.el-col-xs-offset-11{margin-left:45.8333%}.el-col-xs-pull-11{position:relative;right:45.8333%}.el-col-xs-push-11{position:relative;left:45.8333%}.el-col-xs-12{flex:0 0 50%;max-width:50%;display:block}.el-col-xs-12.is-guttered{display:block}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-xs-13.is-guttered{display:block}.el-col-xs-offset-13{margin-left:54.1667%}.el-col-xs-pull-13{position:relative;right:54.1667%}.el-col-xs-push-13{position:relative;left:54.1667%}.el-col-xs-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-xs-14.is-guttered{display:block}.el-col-xs-offset-14{margin-left:58.3333%}.el-col-xs-pull-14{position:relative;right:58.3333%}.el-col-xs-push-14{position:relative;left:58.3333%}.el-col-xs-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-xs-15.is-guttered{display:block}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-xs-16.is-guttered{display:block}.el-col-xs-offset-16{margin-left:66.6667%}.el-col-xs-pull-16{position:relative;right:66.6667%}.el-col-xs-push-16{position:relative;left:66.6667%}.el-col-xs-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-xs-17.is-guttered{display:block}.el-col-xs-offset-17{margin-left:70.8333%}.el-col-xs-pull-17{position:relative;right:70.8333%}.el-col-xs-push-17{position:relative;left:70.8333%}.el-col-xs-18{flex:0 0 75%;max-width:75%;display:block}.el-col-xs-18.is-guttered{display:block}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-xs-19.is-guttered{display:block}.el-col-xs-offset-19{margin-left:79.1667%}.el-col-xs-pull-19{position:relative;right:79.1667%}.el-col-xs-push-19{position:relative;left:79.1667%}.el-col-xs-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-xs-20.is-guttered{display:block}.el-col-xs-offset-20{margin-left:83.3333%}.el-col-xs-pull-20{position:relative;right:83.3333%}.el-col-xs-push-20{position:relative;left:83.3333%}.el-col-xs-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-xs-21.is-guttered{display:block}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-xs-22.is-guttered{display:block}.el-col-xs-offset-22{margin-left:91.6667%}.el-col-xs-pull-22{position:relative;right:91.6667%}.el-col-xs-push-22{position:relative;left:91.6667%}.el-col-xs-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-xs-23.is-guttered{display:block}.el-col-xs-offset-23{margin-left:95.8333%}.el-col-xs-pull-23{position:relative;right:95.8333%}.el-col-xs-push-23{position:relative;left:95.8333%}.el-col-xs-24{flex:0 0 100%;max-width:100%;display:block}.el-col-xs-24.is-guttered{display:block}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{flex:0 0;max-width:0%;display:none}.el-col-sm-0.is-guttered{display:none}.el-col-sm-offset-0{margin-left:0%}.el-col-sm-pull-0{position:relative;right:0%}.el-col-sm-push-0{position:relative;left:0%}.el-col-sm-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-sm-1.is-guttered{display:block}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-sm-2.is-guttered{display:block}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-sm-3.is-guttered{display:block}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-sm-4.is-guttered{display:block}.el-col-sm-offset-4{margin-left:16.6667%}.el-col-sm-pull-4{position:relative;right:16.6667%}.el-col-sm-push-4{position:relative;left:16.6667%}.el-col-sm-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-sm-5.is-guttered{display:block}.el-col-sm-offset-5{margin-left:20.8333%}.el-col-sm-pull-5{position:relative;right:20.8333%}.el-col-sm-push-5{position:relative;left:20.8333%}.el-col-sm-6{flex:0 0 25%;max-width:25%;display:block}.el-col-sm-6.is-guttered{display:block}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-sm-7.is-guttered{display:block}.el-col-sm-offset-7{margin-left:29.1667%}.el-col-sm-pull-7{position:relative;right:29.1667%}.el-col-sm-push-7{position:relative;left:29.1667%}.el-col-sm-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-sm-8.is-guttered{display:block}.el-col-sm-offset-8{margin-left:33.3333%}.el-col-sm-pull-8{position:relative;right:33.3333%}.el-col-sm-push-8{position:relative;left:33.3333%}.el-col-sm-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-sm-9.is-guttered{display:block}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-sm-10.is-guttered{display:block}.el-col-sm-offset-10{margin-left:41.6667%}.el-col-sm-pull-10{position:relative;right:41.6667%}.el-col-sm-push-10{position:relative;left:41.6667%}.el-col-sm-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-sm-11.is-guttered{display:block}.el-col-sm-offset-11{margin-left:45.8333%}.el-col-sm-pull-11{position:relative;right:45.8333%}.el-col-sm-push-11{position:relative;left:45.8333%}.el-col-sm-12{flex:0 0 50%;max-width:50%;display:block}.el-col-sm-12.is-guttered{display:block}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-sm-13.is-guttered{display:block}.el-col-sm-offset-13{margin-left:54.1667%}.el-col-sm-pull-13{position:relative;right:54.1667%}.el-col-sm-push-13{position:relative;left:54.1667%}.el-col-sm-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-sm-14.is-guttered{display:block}.el-col-sm-offset-14{margin-left:58.3333%}.el-col-sm-pull-14{position:relative;right:58.3333%}.el-col-sm-push-14{position:relative;left:58.3333%}.el-col-sm-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-sm-15.is-guttered{display:block}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-sm-16.is-guttered{display:block}.el-col-sm-offset-16{margin-left:66.6667%}.el-col-sm-pull-16{position:relative;right:66.6667%}.el-col-sm-push-16{position:relative;left:66.6667%}.el-col-sm-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-sm-17.is-guttered{display:block}.el-col-sm-offset-17{margin-left:70.8333%}.el-col-sm-pull-17{position:relative;right:70.8333%}.el-col-sm-push-17{position:relative;left:70.8333%}.el-col-sm-18{flex:0 0 75%;max-width:75%;display:block}.el-col-sm-18.is-guttered{display:block}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-sm-19.is-guttered{display:block}.el-col-sm-offset-19{margin-left:79.1667%}.el-col-sm-pull-19{position:relative;right:79.1667%}.el-col-sm-push-19{position:relative;left:79.1667%}.el-col-sm-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-sm-20.is-guttered{display:block}.el-col-sm-offset-20{margin-left:83.3333%}.el-col-sm-pull-20{position:relative;right:83.3333%}.el-col-sm-push-20{position:relative;left:83.3333%}.el-col-sm-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-sm-21.is-guttered{display:block}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-sm-22.is-guttered{display:block}.el-col-sm-offset-22{margin-left:91.6667%}.el-col-sm-pull-22{position:relative;right:91.6667%}.el-col-sm-push-22{position:relative;left:91.6667%}.el-col-sm-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-sm-23.is-guttered{display:block}.el-col-sm-offset-23{margin-left:95.8333%}.el-col-sm-pull-23{position:relative;right:95.8333%}.el-col-sm-push-23{position:relative;left:95.8333%}.el-col-sm-24{flex:0 0 100%;max-width:100%;display:block}.el-col-sm-24.is-guttered{display:block}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{flex:0 0;max-width:0%;display:none}.el-col-md-0.is-guttered{display:none}.el-col-md-offset-0{margin-left:0%}.el-col-md-pull-0{position:relative;right:0%}.el-col-md-push-0{position:relative;left:0%}.el-col-md-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-md-1.is-guttered{display:block}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-md-2.is-guttered{display:block}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-md-3.is-guttered{display:block}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-md-4.is-guttered{display:block}.el-col-md-offset-4{margin-left:16.6667%}.el-col-md-pull-4{position:relative;right:16.6667%}.el-col-md-push-4{position:relative;left:16.6667%}.el-col-md-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-md-5.is-guttered{display:block}.el-col-md-offset-5{margin-left:20.8333%}.el-col-md-pull-5{position:relative;right:20.8333%}.el-col-md-push-5{position:relative;left:20.8333%}.el-col-md-6{flex:0 0 25%;max-width:25%;display:block}.el-col-md-6.is-guttered{display:block}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-md-7.is-guttered{display:block}.el-col-md-offset-7{margin-left:29.1667%}.el-col-md-pull-7{position:relative;right:29.1667%}.el-col-md-push-7{position:relative;left:29.1667%}.el-col-md-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-md-8.is-guttered{display:block}.el-col-md-offset-8{margin-left:33.3333%}.el-col-md-pull-8{position:relative;right:33.3333%}.el-col-md-push-8{position:relative;left:33.3333%}.el-col-md-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-md-9.is-guttered{display:block}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-md-10.is-guttered{display:block}.el-col-md-offset-10{margin-left:41.6667%}.el-col-md-pull-10{position:relative;right:41.6667%}.el-col-md-push-10{position:relative;left:41.6667%}.el-col-md-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-md-11.is-guttered{display:block}.el-col-md-offset-11{margin-left:45.8333%}.el-col-md-pull-11{position:relative;right:45.8333%}.el-col-md-push-11{position:relative;left:45.8333%}.el-col-md-12{flex:0 0 50%;max-width:50%;display:block}.el-col-md-12.is-guttered{display:block}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-md-13.is-guttered{display:block}.el-col-md-offset-13{margin-left:54.1667%}.el-col-md-pull-13{position:relative;right:54.1667%}.el-col-md-push-13{position:relative;left:54.1667%}.el-col-md-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-md-14.is-guttered{display:block}.el-col-md-offset-14{margin-left:58.3333%}.el-col-md-pull-14{position:relative;right:58.3333%}.el-col-md-push-14{position:relative;left:58.3333%}.el-col-md-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-md-15.is-guttered{display:block}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-md-16.is-guttered{display:block}.el-col-md-offset-16{margin-left:66.6667%}.el-col-md-pull-16{position:relative;right:66.6667%}.el-col-md-push-16{position:relative;left:66.6667%}.el-col-md-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-md-17.is-guttered{display:block}.el-col-md-offset-17{margin-left:70.8333%}.el-col-md-pull-17{position:relative;right:70.8333%}.el-col-md-push-17{position:relative;left:70.8333%}.el-col-md-18{flex:0 0 75%;max-width:75%;display:block}.el-col-md-18.is-guttered{display:block}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-md-19.is-guttered{display:block}.el-col-md-offset-19{margin-left:79.1667%}.el-col-md-pull-19{position:relative;right:79.1667%}.el-col-md-push-19{position:relative;left:79.1667%}.el-col-md-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-md-20.is-guttered{display:block}.el-col-md-offset-20{margin-left:83.3333%}.el-col-md-pull-20{position:relative;right:83.3333%}.el-col-md-push-20{position:relative;left:83.3333%}.el-col-md-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-md-21.is-guttered{display:block}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-md-22.is-guttered{display:block}.el-col-md-offset-22{margin-left:91.6667%}.el-col-md-pull-22{position:relative;right:91.6667%}.el-col-md-push-22{position:relative;left:91.6667%}.el-col-md-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-md-23.is-guttered{display:block}.el-col-md-offset-23{margin-left:95.8333%}.el-col-md-pull-23{position:relative;right:95.8333%}.el-col-md-push-23{position:relative;left:95.8333%}.el-col-md-24{flex:0 0 100%;max-width:100%;display:block}.el-col-md-24.is-guttered{display:block}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{flex:0 0;max-width:0%;display:none}.el-col-lg-0.is-guttered{display:none}.el-col-lg-offset-0{margin-left:0%}.el-col-lg-pull-0{position:relative;right:0%}.el-col-lg-push-0{position:relative;left:0%}.el-col-lg-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-lg-1.is-guttered{display:block}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-lg-2.is-guttered{display:block}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-lg-3.is-guttered{display:block}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-lg-4.is-guttered{display:block}.el-col-lg-offset-4{margin-left:16.6667%}.el-col-lg-pull-4{position:relative;right:16.6667%}.el-col-lg-push-4{position:relative;left:16.6667%}.el-col-lg-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-lg-5.is-guttered{display:block}.el-col-lg-offset-5{margin-left:20.8333%}.el-col-lg-pull-5{position:relative;right:20.8333%}.el-col-lg-push-5{position:relative;left:20.8333%}.el-col-lg-6{flex:0 0 25%;max-width:25%;display:block}.el-col-lg-6.is-guttered{display:block}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-lg-7.is-guttered{display:block}.el-col-lg-offset-7{margin-left:29.1667%}.el-col-lg-pull-7{position:relative;right:29.1667%}.el-col-lg-push-7{position:relative;left:29.1667%}.el-col-lg-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-lg-8.is-guttered{display:block}.el-col-lg-offset-8{margin-left:33.3333%}.el-col-lg-pull-8{position:relative;right:33.3333%}.el-col-lg-push-8{position:relative;left:33.3333%}.el-col-lg-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-lg-9.is-guttered{display:block}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-lg-10.is-guttered{display:block}.el-col-lg-offset-10{margin-left:41.6667%}.el-col-lg-pull-10{position:relative;right:41.6667%}.el-col-lg-push-10{position:relative;left:41.6667%}.el-col-lg-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-lg-11.is-guttered{display:block}.el-col-lg-offset-11{margin-left:45.8333%}.el-col-lg-pull-11{position:relative;right:45.8333%}.el-col-lg-push-11{position:relative;left:45.8333%}.el-col-lg-12{flex:0 0 50%;max-width:50%;display:block}.el-col-lg-12.is-guttered{display:block}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-lg-13.is-guttered{display:block}.el-col-lg-offset-13{margin-left:54.1667%}.el-col-lg-pull-13{position:relative;right:54.1667%}.el-col-lg-push-13{position:relative;left:54.1667%}.el-col-lg-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-lg-14.is-guttered{display:block}.el-col-lg-offset-14{margin-left:58.3333%}.el-col-lg-pull-14{position:relative;right:58.3333%}.el-col-lg-push-14{position:relative;left:58.3333%}.el-col-lg-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-lg-15.is-guttered{display:block}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-lg-16.is-guttered{display:block}.el-col-lg-offset-16{margin-left:66.6667%}.el-col-lg-pull-16{position:relative;right:66.6667%}.el-col-lg-push-16{position:relative;left:66.6667%}.el-col-lg-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-lg-17.is-guttered{display:block}.el-col-lg-offset-17{margin-left:70.8333%}.el-col-lg-pull-17{position:relative;right:70.8333%}.el-col-lg-push-17{position:relative;left:70.8333%}.el-col-lg-18{flex:0 0 75%;max-width:75%;display:block}.el-col-lg-18.is-guttered{display:block}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-lg-19.is-guttered{display:block}.el-col-lg-offset-19{margin-left:79.1667%}.el-col-lg-pull-19{position:relative;right:79.1667%}.el-col-lg-push-19{position:relative;left:79.1667%}.el-col-lg-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-lg-20.is-guttered{display:block}.el-col-lg-offset-20{margin-left:83.3333%}.el-col-lg-pull-20{position:relative;right:83.3333%}.el-col-lg-push-20{position:relative;left:83.3333%}.el-col-lg-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-lg-21.is-guttered{display:block}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-lg-22.is-guttered{display:block}.el-col-lg-offset-22{margin-left:91.6667%}.el-col-lg-pull-22{position:relative;right:91.6667%}.el-col-lg-push-22{position:relative;left:91.6667%}.el-col-lg-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-lg-23.is-guttered{display:block}.el-col-lg-offset-23{margin-left:95.8333%}.el-col-lg-pull-23{position:relative;right:95.8333%}.el-col-lg-push-23{position:relative;left:95.8333%}.el-col-lg-24{flex:0 0 100%;max-width:100%;display:block}.el-col-lg-24.is-guttered{display:block}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{flex:0 0;max-width:0%;display:none}.el-col-xl-0.is-guttered{display:none}.el-col-xl-offset-0{margin-left:0%}.el-col-xl-pull-0{position:relative;right:0%}.el-col-xl-push-0{position:relative;left:0%}.el-col-xl-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-xl-1.is-guttered{display:block}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-xl-2.is-guttered{display:block}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-xl-3.is-guttered{display:block}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-xl-4.is-guttered{display:block}.el-col-xl-offset-4{margin-left:16.6667%}.el-col-xl-pull-4{position:relative;right:16.6667%}.el-col-xl-push-4{position:relative;left:16.6667%}.el-col-xl-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-xl-5.is-guttered{display:block}.el-col-xl-offset-5{margin-left:20.8333%}.el-col-xl-pull-5{position:relative;right:20.8333%}.el-col-xl-push-5{position:relative;left:20.8333%}.el-col-xl-6{flex:0 0 25%;max-width:25%;display:block}.el-col-xl-6.is-guttered{display:block}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-xl-7.is-guttered{display:block}.el-col-xl-offset-7{margin-left:29.1667%}.el-col-xl-pull-7{position:relative;right:29.1667%}.el-col-xl-push-7{position:relative;left:29.1667%}.el-col-xl-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-xl-8.is-guttered{display:block}.el-col-xl-offset-8{margin-left:33.3333%}.el-col-xl-pull-8{position:relative;right:33.3333%}.el-col-xl-push-8{position:relative;left:33.3333%}.el-col-xl-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-xl-9.is-guttered{display:block}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-xl-10.is-guttered{display:block}.el-col-xl-offset-10{margin-left:41.6667%}.el-col-xl-pull-10{position:relative;right:41.6667%}.el-col-xl-push-10{position:relative;left:41.6667%}.el-col-xl-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-xl-11.is-guttered{display:block}.el-col-xl-offset-11{margin-left:45.8333%}.el-col-xl-pull-11{position:relative;right:45.8333%}.el-col-xl-push-11{position:relative;left:45.8333%}.el-col-xl-12{flex:0 0 50%;max-width:50%;display:block}.el-col-xl-12.is-guttered{display:block}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-xl-13.is-guttered{display:block}.el-col-xl-offset-13{margin-left:54.1667%}.el-col-xl-pull-13{position:relative;right:54.1667%}.el-col-xl-push-13{position:relative;left:54.1667%}.el-col-xl-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-xl-14.is-guttered{display:block}.el-col-xl-offset-14{margin-left:58.3333%}.el-col-xl-pull-14{position:relative;right:58.3333%}.el-col-xl-push-14{position:relative;left:58.3333%}.el-col-xl-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-xl-15.is-guttered{display:block}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-xl-16.is-guttered{display:block}.el-col-xl-offset-16{margin-left:66.6667%}.el-col-xl-pull-16{position:relative;right:66.6667%}.el-col-xl-push-16{position:relative;left:66.6667%}.el-col-xl-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-xl-17.is-guttered{display:block}.el-col-xl-offset-17{margin-left:70.8333%}.el-col-xl-pull-17{position:relative;right:70.8333%}.el-col-xl-push-17{position:relative;left:70.8333%}.el-col-xl-18{flex:0 0 75%;max-width:75%;display:block}.el-col-xl-18.is-guttered{display:block}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-xl-19.is-guttered{display:block}.el-col-xl-offset-19{margin-left:79.1667%}.el-col-xl-pull-19{position:relative;right:79.1667%}.el-col-xl-push-19{position:relative;left:79.1667%}.el-col-xl-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-xl-20.is-guttered{display:block}.el-col-xl-offset-20{margin-left:83.3333%}.el-col-xl-pull-20{position:relative;right:83.3333%}.el-col-xl-push-20{position:relative;left:83.3333%}.el-col-xl-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-xl-21.is-guttered{display:block}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-xl-22.is-guttered{display:block}.el-col-xl-offset-22{margin-left:91.6667%}.el-col-xl-pull-22{position:relative;right:91.6667%}.el-col-xl-push-22{position:relative;left:91.6667%}.el-col-xl-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-xl-23.is-guttered{display:block}.el-col-xl-offset-23{margin-left:95.8333%}.el-col-xl-pull-23{position:relative;right:95.8333%}.el-col-xl-push-23{position:relative;left:95.8333%}.el-col-xl-24{flex:0 0 100%;max-width:100%;display:block}.el-col-xl-24.is-guttered{display:block}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{width:100%;min-height:var(--el-collapse-header-height);line-height:var(--el-collapse-header-height);background-color:var(--el-collapse-header-bg-color);color:var(--el-collapse-header-text-color);cursor:pointer;border:none;border-bottom:1px solid var(--el-collapse-border-color);font-size:var(--el-collapse-header-font-size);transition:border-bottom-color var(--el-transition-duration);box-sizing:border-box;outline:none;align-items:center;padding:0;font-weight:500;display:flex}.el-collapse-item__arrow{transition:transform var(--el-transition-duration);font-weight:300}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__title{text-align:left;flex:auto}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:#0000}.el-collapse-item__wrap{will-change:height;background-color:var(--el-collapse-content-bg-color);box-sizing:border-box;border-bottom:1px solid var(--el-collapse-border-color);overflow:hidden}.el-collapse-item__content{font-size:var(--el-collapse-content-font-size);color:var(--el-collapse-content-text-color);padding-bottom:25px;line-height:1.76923}.el-collapse-item:last-child{margin-bottom:-1px}.el-collapse{--el-collapse-border-color:var(--el-border-color-lighter);--el-collapse-header-height:48px;--el-collapse-header-bg-color:var(--el-fill-color-blank);--el-collapse-header-text-color:var(--el-text-color-primary);--el-collapse-header-font-size:13px;--el-collapse-content-bg-color:var(--el-fill-color-blank);--el-collapse-content-font-size:13px;--el-collapse-content-text-color:var(--el-text-color-primary);border-top:1px solid var(--el-collapse-border-color);border-bottom:1px solid var(--el-collapse-border-color)}.el-collapse-icon-position-left .el-collapse-item__header{gap:8px}.el-collapse-icon-position-left .el-collapse-item__title{order:1}.el-collapse-icon-position-right .el-collapse-item__header{padding-right:8px}.el-color-picker-panel{--el-colorpicker-bg-color:var(--el-bg-color-overlay);--el-fill-color-blank:var(--el-colorpicker-bg-color);box-sizing:content-box;background:var(--el-colorpicker-bg-color);width:300px;padding:12px}.el-color-picker-panel.is-border{border:solid 1px var(--el-border-color-lighter);border-radius:4px}.el-color-picker-panel__wrapper{margin-bottom:6px}.el-color-picker-panel__footer{text-align:right;justify-content:space-between;margin-top:12px;display:flex}.el-color-picker-panel__footer .el-input{color:#000;width:160px;font-size:12px;line-height:26px}.el-color-picker-panel.is-disabled .el-color-svpanel,.el-color-picker-panel.is-disabled .el-color-hue-slider{cursor:not-allowed;opacity:.3}.el-color-picker-panel.is-disabled .el-color-hue-slider__thumb{cursor:not-allowed}.el-color-picker-panel.is-disabled .el-color-alpha-slider,.el-color-picker-panel.is-disabled .el-color-predefine .el-color-predefine__color-selector{cursor:not-allowed;opacity:.3}.el-color-predefine{width:280px;margin-top:8px;font-size:12px;display:flex}.el-color-predefine__colors{flex-wrap:wrap;flex:1;gap:8px;display:flex}.el-color-predefine__color-selector{border-radius:var(--el-border-radius-base);cursor:pointer;border:none;outline:none;width:20px;height:20px;padding:0;overflow:hidden}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--el-color-primary)}.el-color-predefine__color-selector:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-color-predefine__color-selector>div{height:100%;display:flex}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{box-sizing:border-box;float:right;background-color:red;width:280px;height:12px;padding:0 2px;position:relative}.el-color-hue-slider__bar{background:linear-gradient(90deg,red 0%,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%;position:relative}.el-color-hue-slider__thumb{cursor:pointer;box-sizing:border-box;border:1px solid var(--el-border-color-lighter);z-index:1;background:#fff;border-radius:1px;width:4px;height:100%;position:absolute;top:0;left:0;box-shadow:0 0 2px #0009}.el-color-hue-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(red 0%,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{width:100%;height:4px;top:0;left:0}.el-color-svpanel{background-image:linear-gradient(#0000,#000),linear-gradient(90deg,#fff,#fff0);width:280px;height:180px;position:relative}.el-color-svpanel__cursor{cursor:pointer;border-radius:50%;width:4px;height:4px;position:absolute;transform:translate(-2px,-2px);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006}.el-color-svpanel__cursor:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-color-alpha-slider{box-sizing:border-box;background-image:linear-gradient(45deg, var(--el-color-picker-alpha-bg-a) 25%, var(--el-color-picker-alpha-bg-b) 25%), linear-gradient(135deg, var(--el-color-picker-alpha-bg-a) 25%, var(--el-color-picker-alpha-bg-b) 25%), linear-gradient(45deg, var(--el-color-picker-alpha-bg-b) 75%, var(--el-color-picker-alpha-bg-a) 75%), linear-gradient(135deg, var(--el-color-picker-alpha-bg-b) 75%, var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px;width:280px;height:12px;position:relative}.el-color-alpha-slider.is-disabled .el-color-alpha-slider__thumb{cursor:not-allowed}.el-color-alpha-slider__bar{background:linear-gradient(to right, #fff0 0%, var(--el-bg-color) 100%);height:100%;position:relative}.el-color-alpha-slider__thumb{cursor:pointer;box-sizing:border-box;border:1px solid var(--el-border-color-lighter);z-index:1;background:#fff;border-radius:1px;width:4px;height:100%;position:absolute;top:0;left:0;box-shadow:0 0 2px #0009}.el-color-alpha-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(#fff0 0%,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{width:100%;height:4px;top:0;left:0}.el-color-picker-panel{--el-color-picker-alpha-bg-a:#ccc;--el-color-picker-alpha-bg-b:transparent}.dark .el-color-picker-panel{--el-color-picker-alpha-bg-a:#333}.el-color-picker{outline:none;width:32px;height:32px;line-height:normal;display:inline-block;position:relative}.el-color-picker:hover:not(:-webkit-any(.is-disabled,.is-focused)) .el-color-picker__trigger{border-color:var(--el-border-color-hover)}.el-color-picker:hover:not(:is(.is-disabled,.is-focused)) .el-color-picker__trigger{border-color:var(--el-border-color-hover)}.el-color-picker:focus-visible:not(.is-disabled) .el-color-picker__trigger{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-picker.is-focused .el-color-picker__trigger{border-color:var(--el-color-primary)}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed;background-color:var(--el-fill-color-light)}.el-color-picker.is-disabled .el-color-picker__color{opacity:.3}.el-color-picker--large{width:40px;height:40px}.el-color-picker--small{width:24px;height:24px}.el-color-picker--small .el-color-picker__icon,.el-color-picker--small .el-color-picker__empty{transform:scale(.8)}.el-color-picker__trigger{box-sizing:border-box;border:1px solid var(--el-border-color);cursor:pointer;border-radius:4px;justify-content:center;align-items:center;width:100%;height:100%;padding:4px;font-size:0;display:inline-flex;position:relative}.el-color-picker__color{box-sizing:border-box;border:1px solid var(--el-text-color-secondary);border-radius:var(--el-border-radius-small);text-align:center;width:100%;height:100%;display:block;position:relative}.el-color-picker__color.is-alpha{background-image:linear-gradient(45deg, var(--el-color-picker-alpha-bg-a) 25%, var(--el-color-picker-alpha-bg-b) 25%), linear-gradient(135deg, var(--el-color-picker-alpha-bg-a) 25%, var(--el-color-picker-alpha-bg-b) 25%), linear-gradient(45deg, var(--el-color-picker-alpha-bg-b) 75%, var(--el-color-picker-alpha-bg-a) 75%), linear-gradient(135deg, var(--el-color-picker-alpha-bg-b) 75%, var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px}.el-color-picker__color-inner{justify-content:center;align-items:center;width:100%;height:100%;display:inline-flex}.el-color-picker .el-color-picker__empty{color:var(--el-text-color-secondary);font-size:12px}.el-color-picker .el-color-picker__icon{color:#fff;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.el-color-picker__panel{border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light);background-color:#fff}.el-color-picker__panel.el-popper{border:1px solid var(--el-border-color-lighter)}.el-color-picker,.el-color-picker__panel{--el-color-picker-alpha-bg-a:#ccc;--el-color-picker-alpha-bg-b:transparent}.dark .el-color-picker,.dark .el-color-picker__panel{--el-color-picker-alpha-bg-a:#333}.el-container{box-sizing:border-box;flex-direction:row;flex:auto;min-width:0;display:flex}.el-container.is-vertical{flex-direction:column}.el-date-table{-webkit-user-select:none;user-select:none;font-size:12px}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{border-top-left-radius:15px;border-bottom-left-radius:15px;margin-left:5px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{border-top-right-radius:15px;border-bottom-right-radius:15px;margin-right:5px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{box-sizing:border-box;text-align:center;cursor:pointer;width:32px;height:30px;padding:4px 0;position:relative}.el-date-table td .el-date-table-cell{box-sizing:border-box;height:30px;padding:3px 0}.el-date-table td .el-date-table-cell .el-date-table-cell__text{border-radius:50%;width:24px;height:24px;margin:0 auto;line-height:24px;display:block;position:absolute;left:50%;transform:translate(-50%)}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.start-date .el-date-table-cell__text,.el-date-table td.today.end-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-date-table td.current:not(.disabled):focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-date-table td.start-date .el-date-table-cell,.el-date-table td.end-date .el-date-table-cell{color:#fff}.el-date-table td.start-date .el-date-table-cell__text,.el-date-table td.end-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{border-top-left-radius:15px;border-bottom-left-radius:15px;margin-left:5px}.el-date-table td.end-date .el-date-table-cell{border-top-right-radius:15px;border-bottom-right-radius:15px;margin-right:5px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);opacity:1;cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-date-table td.selected .el-date-table-cell{border-radius:15px;margin-left:5px;margin-right:5px}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff;border-radius:15px}.el-date-table td.week{color:var(--el-datepicker-off-text-color);cursor:default;font-size:80%}.el-date-table td:focus{outline:none}.el-date-table th{color:var(--el-datepicker-header-text-color);border-bottom:solid 1px var(--el-border-color-lighter);padding:5px;font-weight:400}.el-date-table th.el-date-table__week-header{width:24px;padding:0}.el-month-table{border-collapse:collapse;margin:-1px;font-size:12px}.el-month-table td{text-align:center;cursor:pointer;width:68px;padding:8px 0;position:relative}.el-month-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-month-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.start-date .el-date-table-cell__text,.el-month-table td.today.end-date .el-date-table-cell__text{color:#fff}.el-month-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-month-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-month-table td .el-date-table-cell__text{width:54px;height:36px;color:var(--el-datepicker-text-color);border-radius:18px;margin:0 auto;line-height:36px;display:block;position:absolute;left:50%;transform:translate(-50%)}.el-month-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.start-date .el-date-table-cell,.el-month-table td.end-date .el-date-table-cell{color:#fff}.el-month-table td.start-date .el-date-table-cell__text,.el-month-table td.end-date .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-month-table td.start-date .el-date-table-cell{border-top-left-radius:24px;border-bottom-left-radius:24px;margin-left:3px}.el-month-table td.end-date .el-date-table-cell{border-top-right-radius:24px;border-bottom-right-radius:24px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell{border-radius:24px;margin-left:3px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-month-table td:focus-visible{outline:none}.el-month-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-year-table{border-collapse:collapse;margin:-1px;font-size:12px}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{text-align:center;cursor:pointer;width:68px;padding:8px 0;position:relative}.el-year-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-year-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-year-table td.today.start-date .el-date-table-cell__text,.el-year-table td.today.end-date .el-date-table-cell__text{color:#fff}.el-year-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-year-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-year-table td .el-date-table-cell__text{width:60px;height:36px;color:var(--el-datepicker-text-color);border-radius:18px;margin:0 auto;line-height:36px;display:block;position:absolute;left:50%;transform:translate(-50%)}.el-year-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-year-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-year-table td.start-date .el-date-table-cell,.el-year-table td.end-date .el-date-table-cell{color:#fff}.el-year-table td.start-date .el-date-table-cell__text,.el-year-table td.end-date .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-year-table td.start-date .el-date-table-cell{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-year-table td.end-date .el-date-table-cell{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-year-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-year-table td:focus-visible{outline:none}.el-year-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{vertical-align:top;width:50%;max-height:192px;display:inline-block;position:relative;overflow:auto}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{color:var(--el-text-color-secondary);width:100%;z-index:var(--el-index-normal);text-align:center;cursor:pointer;height:30px;font-size:12px;line-height:30px;position:absolute;left:0}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner{text-align:center;padding:0}.el-time-spinner__list{text-align:center;margin:0;padding:0;list-style:none}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";width:100%;height:80px;display:block}.el-time-spinner__item{height:32px;color:var(--el-text-color-regular);font-size:12px;line-height:32px}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;text-align:left;vertical-align:middle;position:relative}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{width:var(--el-date-editor-width);height:var(--el-input-height,var(--el-component-size))}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .close-icon,.el-date-editor .clear-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__icon{height:inherit;color:var(--el-text-color-placeholder);float:left;font-size:14px}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:center;width:39%;height:30px;line-height:30px;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);background-color:#0000;border:none;outline:none;margin:0;padding:0;display:inline-block}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{overflow-wrap:break-word;height:100%;color:var(--el-text-color-primary);flex:1;justify-content:center;align-items:center;margin:0;padding:0 5px;font-size:14px;display:inline-flex}.el-date-editor .el-range__close-icon{color:var(--el-text-color-placeholder);height:inherit;width:unset;cursor:pointer;font-size:14px}.el-date-editor .el-range__close-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{vertical-align:middle;align-items:center;padding:0 10px;display:inline-flex}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{font-size:14px;line-height:40px}.el-range-editor--large .el-range-input{height:38px;font-size:14px;line-height:38px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{font-size:12px;line-height:24px}.el-range-editor--small .el-range-input{height:22px;font-size:12px;line-height:22px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled:hover,.el-range-editor.is-disabled:focus{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{color:var(--el-text-color-regular);background:var(--el-datepicker-bg-color);border-radius:var(--el-popper-border-radius,var(--el-border-radius-base));line-height:30px}.el-picker-panel .el-time-panel{border:solid 1px var(--el-datepicker-border-color);background-color:var(--el-datepicker-bg-color);box-shadow:var(--el-box-shadow-light);margin:5px 0}.el-picker-panel__body:after,.el-picker-panel__body-wrapper:after{content:"";clear:both;display:table}.el-picker-panel__content{margin:15px;position:relative}.el-picker-panel__footer{border-top:1px solid var(--el-datepicker-inner-border-color);text-align:right;background-color:var(--el-datepicker-bg-color);padding:4px 12px;font-size:0;position:relative}.el-picker-panel__shortcut{width:100%;color:var(--el-datepicker-text-color);text-align:left;cursor:pointer;background-color:#0000;border:0;outline:none;padding-left:12px;font-size:14px;line-height:28px;display:block}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{color:var(--el-datepicker-active-color);background-color:#e6f1fe}.el-picker-panel__btn{border:1px solid var(--el-fill-color-darker);color:var(--el-text-color-primary);cursor:pointer;background-color:#0000;border-radius:2px;outline:none;padding:0 20px;font-size:12px;line-height:24px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{color:var(--el-datepicker-icon-color);cursor:pointer;background:0 0;border:0;outline:none;margin-top:8px;padding:1px 6px;font-size:12px;line-height:1}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn.is-disabled .el-icon{cursor:inherit}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel.is-disabled .el-picker-panel__prev-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__prev-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__prev-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__next-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__next-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__next-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__icon-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__icon-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__icon-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__shortcut{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__shortcut:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__shortcut .el-icon{cursor:inherit}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:110px;padding-top:6px;position:absolute;top:0;bottom:0;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);--el-datepicker-bg-color:var(--el-bg-color-overlay);--el-fill-color-blank:var(--el-datepicker-bg-color);width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{padding:0 5px;display:table-cell;position:relative}.el-date-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:100%;padding:8px 5px 5px;font-size:12px;display:table;position:relative}.el-date-picker__header{text-align:center;padding:12px 12px 0}.el-date-picker__header--bordered{border-bottom:solid 1px var(--el-border-color-lighter);margin-bottom:0;padding-bottom:12px}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{text-align:center;cursor:pointer;color:var(--el-text-color-regular);padding:0 5px;font-size:16px;font-weight:500;line-height:22px}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{text-align:center;padding:10px}.el-date-picker__time-label{float:left;cursor:pointer;margin-left:10px;line-height:30px}.el-date-picker .el-time-panel{position:absolute}.el-date-picker.is-disabled .el-date-picker__header-label{color:var(--el-text-color-disabled)}.el-date-picker.is-disabled .el-date-picker__header-label:hover{cursor:not-allowed}.el-date-picker.is-disabled .el-date-picker__header-label .el-icon{cursor:inherit}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);--el-datepicker-bg-color:var(--el-bg-color-overlay);width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker.single-panel{width:322px}.el-date-range-picker.single-panel .el-picker-panel__body{min-width:322px}.el-date-range-picker.single-panel.has-sidebar.has-time{width:434px}.el-date-range-picker.single-panel.has-sidebar{width:438px}.el-date-range-picker.single-panel .el-picker-panel__content{width:292px;margin:15px;padding:0;display:block;position:relative}.el-date-range-picker__header{text-align:center;height:28px;position:relative}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{margin-right:50px;font-size:16px;font-weight:500}.el-date-range-picker__header-label{text-align:center;cursor:pointer;color:var(--el-text-color-regular);padding:0 5px;font-size:16px;font-weight:500;line-height:22px}.el-date-range-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-range-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-range-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-range-picker__content{box-sizing:border-box;width:50%;margin:0;padding:16px;display:table-cell}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:100%;padding:8px 5px 5px;font-size:12px;display:table;position:relative}.el-date-range-picker__time-header>.el-icon-arrow-right{vertical-align:middle;color:var(--el-datepicker-icon-color);font-size:20px;display:table-cell}.el-date-range-picker__time-picker-wrap{padding:0 5px;display:table-cell;position:relative}.el-date-range-picker__time-picker-wrap .el-picker-panel{z-index:1;background:#fff;position:absolute;top:13px;right:0}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-date-range-picker.is-disabled .el-date-range-picker__header-label{color:var(--el-text-color-disabled)}.el-date-range-picker.is-disabled .el-date-range-picker__header-label:hover{cursor:not-allowed}.el-date-range-picker.is-disabled .el-date-range-picker__header-label .el-icon{cursor:inherit}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{text-align:center;z-index:1;padding:10px;position:relative}.el-time-range-picker__cell{box-sizing:border-box;width:50%;margin:0;padding:4px 7px 7px;display:inline-block}.el-time-range-picker__header{text-align:center;margin-bottom:5px;font-size:14px}.el-time-range-picker__body{border:1px solid var(--el-datepicker-border-color);border-radius:2px}.el-time-panel{width:180px;z-index:var(--el-index-top);-webkit-user-select:none;user-select:none;box-sizing:content-box;border-radius:2px;position:relative;left:0}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:"";z-index:-1;box-sizing:border-box;text-align:left;height:32px;margin-top:-16px;padding-top:6px;position:absolute;top:50%;left:0;right:0}.el-time-panel__content:after{margin-left:12%;margin-right:12%;left:50%}.el-time-panel__content:before{border-top:1px solid var(--el-border-color-light);border-bottom:1px solid var(--el-border-color-light);margin-left:12%;margin-right:12%;padding-left:50%}.el-time-panel__content.has-seconds:after{left:66.6667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));text-align:right;box-sizing:border-box;height:36px;padding:4px;line-height:25px}.el-time-panel__btn{cursor:pointer;color:var(--el-text-color-primary);background-color:#0000;border:none;outline:none;margin:0 5px;padding:0 5px;font-size:12px;line-height:28px}.el-time-panel__btn.confirm{color:var(--el-timepicker-active-color,var(--el-color-primary));font-weight:800}.el-picker-panel.is-border{border:solid 1px var(--el-border-color-lighter)}.el-picker-panel.is-border .el-picker-panel__body-wrapper{position:relative}.el-picker-panel.is-border.el-picker-panel [slot=sidebar],.el-picker-panel.is-border.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:110px;height:100%;padding-top:6px;position:absolute;top:0;overflow:auto}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;font-size:var(--el-font-size-base);color:var(--el-text-color-primary)}.el-descriptions__header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;text-align:left;font-size:14px;line-height:23px}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{color:var(--el-text-color-regular);background:var(--el-descriptions-item-bordered-label-background);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{width:100%;height:100%;opacity:var(--el-popup-modal-opacity);background:var(--el-popup-modal-bg-color);position:fixed;top:0;left:0}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);margin:var(--el-dialog-margin-top,15vh) auto 50px;background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;padding:var(--el-dialog-padding-primary);width:var(--el-dialog-width,50%);overflow-wrap:break-word;position:relative}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{margin:0;position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size,16px))}.el-dialog__headerbtn{cursor:pointer;width:48px;height:48px;font-size:var(--el-message-close-size,16px);background:0 0;border:none;outline:none;padding:0;position:absolute;top:0;right:0}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{line-height:var(--el-dialog-font-line-height);font-size:var(--el-dialog-title-font-size);color:var(--el-text-color-primary)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{padding-top:var(--el-dialog-padding-primary);text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.el-overlay-dialog.is-closing .el-dialog{pointer-events:none}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translate(0,0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translate(0,0)}to{opacity:0;transform:translateY(-20px)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);width:100%;height:1px;margin:24px 0;display:block}.el-divider--vertical{vertical-align:middle;border-left:1px var(--el-border-color) var(--el-border-style);width:1px;height:1em;margin:0 8px;display:inline-block;position:relative}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);padding:0 20px;font-size:14px;font-weight:500;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%)translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-overlay.is-drawer{overflow:hidden}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);--el-drawer-dragger-size:8px;box-sizing:border-box;background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);transition:all var(--el-transition-duration);flex-direction:column;display:flex;position:absolute}.el-drawer .rtl,.el-drawer .ltr,.el-drawer .ttb,.el-drawer .btt{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{color:var(--el-text-color-primary);padding:var(--el-drawer-padding-primary);align-items:center;margin-bottom:32px;padding-bottom:0;display:flex;overflow:hidden}.el-drawer__header>:first-child{flex:1}.el-drawer__title{line-height:inherit;flex:1;margin:0;font-size:16px}.el-drawer__footer{padding:var(--el-drawer-padding-primary);text-align:right;padding-top:10px;overflow:hidden}.el-drawer__close-btn{cursor:pointer;font-size:var(--el-font-size-extra-large);color:inherit;background-color:#0000;border:none;outline:none;display:inline-flex}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{padding:var(--el-drawer-padding-primary);flex:1;overflow:auto}.el-drawer__body>*{box-sizing:border-box}.el-drawer.is-dragging{transition:none}.el-drawer__dragger{-webkit-user-select:none;user-select:none;background-color:#0000;transition:all .2s;position:absolute}.el-drawer__dragger:before{content:"";background-color:#0000;transition:all .2s;position:absolute}.el-drawer__dragger:hover:before{background-color:var(--el-color-primary)}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.ltr>.el-drawer__dragger,.el-drawer.rtl>.el-drawer__dragger{height:100%;width:var(--el-drawer-dragger-size);cursor:ew-resize;top:0;bottom:0}.el-drawer.ltr>.el-drawer__dragger:before,.el-drawer.rtl>.el-drawer__dragger:before{width:3px;top:0;bottom:0}.el-drawer.ttb,.el-drawer.btt{width:100%;left:0;right:0}.el-drawer.ttb>.el-drawer__dragger,.el-drawer.btt>.el-drawer__dragger{width:100%;height:var(--el-drawer-dragger-size);cursor:ns-resize;left:0;right:0}.el-drawer.ttb>.el-drawer__dragger:before,.el-drawer.btt>.el-drawer__dragger:before{height:3px;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.ltr>.el-drawer__dragger{right:0}.el-drawer.ltr>.el-drawer__dragger:before{right:-2px}.el-drawer.rtl{right:0}.el-drawer.rtl>.el-drawer__dragger{left:0}.el-drawer.rtl>.el-drawer__dragger:before{left:-2px}.el-drawer.ttb{top:0}.el-drawer.ttb>.el-drawer__dragger{bottom:0}.el-drawer.ttb>.el-drawer__dragger:before{bottom:-2px}.el-drawer.btt{bottom:0}.el-drawer.btt>.el-drawer__dragger{top:0}.el-drawer.btt>.el-drawer__dragger:before{top:-2px}.el-modal-drawer.is-penetrable{pointer-events:none}.el-modal-drawer.is-penetrable .el-drawer{pointer-events:auto}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-from,.el-drawer-fade-enter-active,.el-drawer-fade-enter-to,.el-drawer-fade-leave-from,.el-drawer-fade-leave-active,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:#0000!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;color:var(--el-text-color-regular);font-size:var(--el-font-size-base);vertical-align:top;line-height:1;display:inline-flex;position:relative}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:none}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{box-sizing:border-box;margin:0;padding:0;list-style:none}.el-dropdown .el-dropdown__caret-button{border-left:none;justify-content:center;align-items:center;width:32px;padding-left:0;padding-right:0;display:inline-flex}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{content:"";background:var(--el-overlay-color-lighter);width:1px;display:block;position:absolute;top:-1px;bottom:-1px;left:0}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:none}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{z-index:var(--el-dropdown-menu-index);background-color:var(--el-bg-color-overlay);border-radius:var(--el-border-radius-base);box-shadow:none;border:none;margin:0;padding:5px 0;list-style:none;position:relative;top:0;left:0}.el-dropdown-menu__item{white-space:nowrap;line-height:22px;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);cursor:pointer;outline:none;align-items:center;margin:0;padding:5px 16px;list-style:none;display:flex}.el-dropdown-menu__item:not(.is-disabled):hover,.el-dropdown-menu__item:not(.is-disabled):focus{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{border-top:1px solid var(--el-border-color-lighter);margin:6px 0}.el-dropdown-menu__item.is-disabled{cursor:not-allowed;color:var(--el-text-color-disabled)}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{padding:7px 20px;font-size:14px;line-height:22px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{padding:2px 12px;font-size:12px;line-height:20px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-empty-fill-color-9:#d5d7de;text-align:center;box-sizing:border-box;padding:var(--el-empty-padding);flex-direction:column;justify-content:center;align-items:center;display:flex}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{-webkit-user-select:none;user-select:none;vertical-align:top;object-fit:contain;width:100%;height:100%}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;vertical-align:top;width:100%;height:100%}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{font-size:var(--el-font-size-base);color:var(--el-text-color-secondary);margin:0}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;padding:var(--el-footer-padding);box-sizing:border-box;height:var(--el-footer-height);flex-shrink:0}.el-form-item{--font-size:14px;margin-bottom:18px;display:flex}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{text-align:left;justify-content:flex-start}.el-form-item--label-right .el-form-item__label{text-align:right;justify-content:flex-end}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{text-align:left;width:-moz-fit-content;width:fit-content;height:auto;margin-bottom:8px;padding-right:0;line-height:22px;display:block}.el-form-item__label-wrap{display:flex}.el-form-item__label{font-size:var(--el-form-label-font-size);color:var(--el-text-color-regular);box-sizing:border-box;flex:none;align-items:flex-start;height:32px;padding:0 12px 0 0;line-height:32px;display:inline-flex}.el-form-item__content{line-height:32px;font-size:var(--font-size);flex-wrap:wrap;flex:1;align-items:center;min-width:0;display:flex;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);padding-top:2px;font-size:12px;line-height:1;position:absolute;top:100%;left:0}.el-form-item__error--inline{margin-left:10px;display:inline-block;position:relative;top:auto;left:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before{content:"*";color:var(--el-color-danger);margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after{content:"*";color:var(--el-color-danger);margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content :not(.el-input-otp--underlined) .el-input-otp__input-field,.el-form-item.is-error .el-form-item__content :not(.el-input-otp--underlined) .el-input-otp__input-field:hover,.el-form-item.is-error .el-form-item__content :not(.el-input-otp--underlined) .el-input-otp__input-field:focus,.el-form-item.is-error .el-form-item__content :not(.el-input-otp--underlined) .el-input-otp__input-field.is-focus,.el-form-item.is-error .el-form-item__content .el-input-otp--underlined .el-input-otp__input-field:after,.el-form-item.is-error .el-form-item__content .el-input-otp--underlined .el-input-otp__input-field:hover:after,.el-form-item.is-error .el-form-item__content .el-input-otp--underlined .el-input-otp__input-field:focus:after,.el-form-item.is-error .el-form-item__content .el-input-otp--underlined .el-input-otp__input-field.is-focus:after{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px #0000}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{vertical-align:middle;margin-right:32px;display:inline-flex}.el-form--inline .el-form-item:last-child{margin-right:0}.el-form--inline.el-form--label-top{flex-wrap:wrap;display:flex}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-header{--el-header-padding:0 20px;--el-header-height:60px;padding:var(--el-header-padding);box-sizing:border-box;height:var(--el-header-height);flex-shrink:0}.el-image-viewer__wrapper{position:fixed;top:0;bottom:0;left:0;right:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{z-index:1;opacity:.8;cursor:pointer;box-sizing:border-box;-webkit-user-select:none;user-select:none;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{width:40px;height:40px;font-size:40px;top:40px;right:40px}.el-image-viewer__canvas{-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:static}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;height:44px;padding:0 23px;bottom:30px;left:50%;transform:translate(-50%)}.el-image-viewer__actions__inner{cursor:default;color:#fff;justify-content:space-around;align-items:center;gap:22px;width:100%;height:100%;padding:0 6px;font-size:23px;display:flex}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{cursor:default;color:#fff;bottom:90px;left:50%;transform:translate(-50%)}.el-image-viewer__prev{color:#fff;background-color:var(--el-text-color-regular);border-color:#fff;width:44px;height:44px;font-size:24px;top:50%;left:40px;transform:translateY(-50%)}.el-image-viewer__next{text-indent:2px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff;width:44px;height:44px;font-size:24px;top:50%;right:40px;transform:translateY(-50%)}.el-image-viewer__close{color:#fff;background-color:var(--el-text-color-regular);border-color:#fff;width:44px;height:44px;font-size:24px}.el-image-viewer__mask{opacity:.5;background:#000;width:100%;height:100%;position:absolute;top:0;left:0}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translate(0,0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translate(0,0)}to{opacity:0;transform:translateY(-20px)}}.el-image__error,.el-image__placeholder,.el-image__wrapper,.el-image__inner{width:100%;height:100%}.el-image{display:inline-block;position:relative;overflow:hidden}.el-image__inner{vertical-align:top;opacity:1}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{position:absolute;top:0;left:0}.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{background:var(--el-fill-color-light);color:var(--el-text-color-placeholder);vertical-align:middle;justify-content:center;align-items:center;font-size:14px;display:flex}.el-image__preview{cursor:pointer}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;vertical-align:bottom;width:100%;font-size:var(--el-font-size-base);display:inline-block;position:relative}.el-textarea__inner{resize:vertical;box-sizing:border-box;width:100%;line-height:1.5;font-size:inherit;color:var(--el-input-text-color,var(--el-text-color-regular));background-color:var(--el-input-bg-color,var(--el-fill-color-blank));-webkit-appearance:none;box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));transition:var(--el-transition-box-shadow);background-image:none;border:none;padding:5px 11px;font-family:inherit;display:block;position:relative}.el-textarea__inner.is-clearable{padding:5px 26px 5px 11px}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:none}.el-textarea__clear{color:var(--el-input-icon-color);cursor:pointer;font-size:14px;position:absolute;top:15px;right:11px;transform:translateY(-50%)}.el-textarea__clear:hover{color:var(--el-input-clear-hover-color)}.el-textarea .el-input__count{color:var(--el-color-info);background:var(--el-fill-color-blank);font-size:12px;line-height:14px;position:absolute;bottom:5px;right:10px}.el-textarea .el-input__count.is-outside{top:100%;right:0;bottom:unset;background:0 0;padding-top:2px;line-height:1;position:absolute}.el-textarea.is-disabled .el-textarea__inner{box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);font-size:var(--el-font-size-base);width:var(--el-input-width);line-height:var(--el-input-height);box-sizing:border-box;vertical-align:middle;display:inline-flex;position:relative}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{height:100%;color:var(--el-color-info);align-items:center;font-size:12px;display:inline-flex}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);line-height:initial;padding-left:8px;display:inline-block}.el-input .el-input__count.is-outside{height:unset;padding-top:2px;position:absolute;top:100%;right:0}.el-input .el-input__count.is-outside .el-input__count-inner{background:0 0;padding-left:0;line-height:1}.el-input__wrapper{background-color:var(--el-input-bg-color,var(--el-fill-color-blank));border-radius:var(--el-input-border-radius,var(--el-border-radius-base));cursor:text;transition:var(--el-transition-box-shadow);box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;background-image:none;flex-grow:1;justify-content:center;align-items:center;padding:1px 11px;display:inline-flex;transform:translate(0,0)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input{--el-input-inner-height:calc(var(--el-input-height,32px) - 2px)}.el-input__inner{-webkit-appearance:none;width:100%;color:var(--el-input-text-color,var(--el-text-color-regular));font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);box-sizing:border-box;background:0 0;border:none;outline:none;flex-grow:1;padding:0}.el-input__inner:focus{outline:none}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__inner[type=number]{line-height:1}.el-input__prefix{white-space:nowrap;height:100%;line-height:var(--el-input-inner-height);text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none;flex-wrap:nowrap;flex-shrink:0;display:inline-flex}.el-input__prefix-inner{pointer-events:all;justify-content:center;align-items:center;display:inline-flex}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{white-space:nowrap;height:100%;line-height:var(--el-input-inner-height);text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none;flex-wrap:nowrap;flex-shrink:0;display:inline-flex}.el-input__suffix-inner{pointer-events:all;justify-content:center;align-items:center;display:inline-flex}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{height:inherit;line-height:inherit;transition:all var(--el-transition-duration);justify-content:center;align-items:center;margin-left:8px;display:flex}.el-input .el-input__clear{transition:color var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color, ) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);cursor:not-allowed;box-shadow:0 0 0 1px var(--el-disabled-border-color) inset}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-disabled .el-input__prefix-inner,.el-input.is-disabled .el-input__suffix-inner{pointer-events:none}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large{--el-input-inner-height:calc(var(--el-input-height,40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small{--el-input-inner-height:calc(var(--el-input-height,24px) - 2px)}.el-input-group{align-items:stretch;width:100%;display:inline-flex}.el-input-group__append,.el-input-group__prepend{background-color:var(--el-fill-color-light);color:var(--el-color-info);border-radius:var(--el-input-border-radius);white-space:nowrap;justify-content:center;align-items:center;min-height:100%;padding:0 20px;display:inline-flex;position:relative}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-select,.el-input-group__append .el-button,.el-input-group__prepend .el-select,.el-input-group__prepend .el-button{flex:1;margin:0 -20px;display:inline-block}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-select__wrapper,.el-input-group__append div.el-select:hover .el-select__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-select__wrapper,.el-input-group__prepend div.el-select:hover .el-select__wrapper{color:inherit;background-color:#0000;border-color:#0000}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{box-shadow:1px 0 0 0 var(--el-input-border-color) inset, 0 1px 0 0 var(--el-input-border-color) inset, 0 -1px 0 0 var(--el-input-border-color) inset;border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{box-shadow:0 1px 0 0 var(--el-input-border-color) inset, 0 -1px 0 0 var(--el-input-border-color) inset, -1px 0 0 0 var(--el-input-border-color) inset;border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend>.el-input__wrapper{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{box-shadow:1px 0 0 0 var(--el-input-border-color) inset, 0 1px 0 0 var(--el-input-border-color) inset, 0 -1px 0 0 var(--el-input-border-color) inset;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append>.el-input__wrapper{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{box-shadow:0 1px 0 0 var(--el-input-border-color) inset, 0 -1px 0 0 var(--el-input-border-color) inset, -1px 0 0 0 var(--el-input-border-color) inset;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-hidden{display:none!important}.el-input-number{vertical-align:middle;width:150px;line-height:30px;display:inline-flex;position:relative}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;text-align:center;line-height:1}.el-input-number .el-input__inner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__increase,.el-input-number__decrease{z-index:1;background:var(--el-fill-color-light);width:32px;height:auto;color:var(--el-text-color-regular);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:13px;display:flex;position:absolute;top:1px;bottom:1px}.el-input-number__increase:hover,.el-input-number__decrease:hover{color:var(--el-color-primary)}.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__increase.is-disabled,.el-input-number__decrease.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;border-left:var(--el-border);right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__increase,.el-input-number.is-disabled .el-input-number__decrease{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__increase:hover,.el-input-number.is-disabled .el-input-number__decrease:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{width:180px;line-height:38px}.el-input-number--large .el-input-number__increase,.el-input-number--large .el-input-number__decrease{width:40px;font-size:14px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{width:120px;line-height:22px}.el-input-number--small .el-input-number__increase,.el-input-number--small .el-input-number__decrease{width:24px;font-size:12px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__increase [class*=el-icon],.el-input-number--small .el-input-number__decrease [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__increase,.el-input-number.is-controls-right .el-input-number__decrease{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon],.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 var(--el-border-radius-base) 0 0;border-bottom:var(--el-border);bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-right:none;border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;top:auto;left:auto;right:1px}.el-input-number.is-controls-right[class*=large] [class*=increase],.el-input-number.is-controls-right[class*=large] [class*=decrease]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=increase],.el-input-number.is-controls-right[class*=small] [class*=decrease]{--el-input-number-controls-height:11px}.el-input-tag{--el-input-tag-border-color-hover:var(--el-border-color-hover);--el-input-tag-placeholder-color:var(--el-text-color-placeholder);--el-input-tag-disabled-color:var(--el-disabled-text-color);--el-input-tag-disabled-border:var(--el-disabled-border-color);--el-input-tag-font-size:var(--el-font-size-base);--el-input-tag-close-hover-color:var(--el-text-color-secondary);--el-input-tag-text-color:var(--el-text-color-regular);--el-input-tag-input-focus-border-color:var(--el-color-primary);--el-input-tag-width:100%;--el-input-tag-mini-height:var(--el-component-size);--el-input-tag-gap:6px;--el-input-tag-padding:4px;--el-input-tag-inner-padding:8px;--el-input-tag-line-height:24px;box-sizing:border-box;cursor:pointer;font-size:var(--el-input-tag-font-size);padding:var(--el-input-tag-padding);width:var(--el-input-tag-width);min-height:var(--el-input-tag-mini-height);line-height:var(--el-input-tag-line-height);border-radius:var(--el-border-radius-base);background-color:var(--el-fill-color-blank);transition:var(--el-transition-duration);box-shadow:0 0 0 1px var(--el-border-color) inset;align-items:center;display:flex;transform:translate(0,0)}.el-input-tag.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-input-tag.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-input-tag.is-disabled{cursor:not-allowed;background-color:var(--el-fill-color-light);box-shadow:0 0 0 1px var(--el-input-tag-disabled-border) inset}.el-input-tag.is-disabled:hover{box-shadow:0 0 0 1px var(--el-input-tag-disabled-border) inset}.el-input-tag.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input-tag.is-disabled .el-input-tag__inner .el-input-tag__input,.el-input-tag.is-disabled .el-input-tag__inner .el-tag{cursor:not-allowed}.el-input-tag__prefix{padding:0 var(--el-input-tag-inner-padding);color:var(--el-input-icon-color,var(--el-text-color-placeholder));flex-shrink:0;align-items:center;display:flex}.el-input-tag__suffix{padding:0 var(--el-input-tag-inner-padding);color:var(--el-input-icon-color,var(--el-text-color-placeholder));flex-shrink:0;align-items:center;gap:8px;display:flex}.el-input-tag__collapse-tag{line-height:1}.el-input-tag__input-tag-list{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex;position:relative}.el-input-tag__input-tag-list.is-near{margin-left:-8px}.el-input-tag__input-tag-list .el-tag{cursor:pointer;border-color:#0000}.el-input-tag__input-tag-list .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-input-tag__input-tag-list .el-tag .el-tag__content{min-width:0}.el-input-tag__inner{align-items:center;gap:var(--el-input-tag-gap);flex-wrap:wrap;flex:1;min-width:0;max-width:100%;display:flex;position:relative}.el-input-tag__inner.is-left-space{margin-left:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-right-space{margin-right:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-draggable .el-tag{cursor:move;-webkit-user-select:none;user-select:none}.el-input-tag__drop-indicator{width:1px;height:var(--el-input-tag-line-height);background-color:var(--el-color-primary);position:absolute;top:0}.el-input-tag__inner .el-tag{cursor:pointer;border-color:#0000;max-width:100%}.el-input-tag__inner .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-input-tag__inner .el-tag .el-tag__content{text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:normal;overflow:hidden}.el-input-tag__input-wrapper{flex:1}.el-input-tag__input{color:var(--el-input-tag-text-color);font-size:inherit;font-family:inherit;line-height:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;outline:none;width:100%;padding:0}.el-input-tag__input::placeholder{color:var(--el-input-tag-placeholder-color)}.el-input-tag__input-calculator{visibility:hidden;white-space:pre;max-width:100%;position:absolute;top:0;left:0;overflow:hidden}.el-input-tag--large{--el-input-tag-gap:6px;--el-input-tag-padding:8px;--el-input-tag-padding-left:8px;--el-input-tag-font-size:14px}.el-input-tag--small{--el-input-tag-gap:4px;--el-input-tag-padding:2px;--el-input-tag-padding-left:6px;--el-input-tag-font-size:12px;--el-input-tag-line-height:20px;--el-input-tag-mini-height:var(--el-component-size-small)}.el-input-otp{--el-input-otp-text-color:var(--el-text-color-regular);--el-input-otp-field-width:calc(var(--el-input-otp-size) - 4px);--el-input-otp-gap:8px;--el-input-otp-font-size:14px;--el-input-otp-size:32px}.el-input-otp--large{--el-input-otp-gap:12px;--el-input-otp-font-size:14px;--el-input-otp-size:40px}.el-input-otp--small{--el-input-otp-gap:6px;--el-input-otp-font-size:12px;--el-input-otp-size:24px}.el-input-otp{align-items:center;column-gap:var(--el-input-otp-gap);font-size:var(--el-input-otp-font-size);height:var(--el-input-otp-size);flex-wrap:nowrap;display:inline-flex}.el-input-otp.is-disabled,.el-input-otp.is-disabled .el-input-otp__input{cursor:not-allowed}.el-input-otp__input-field{width:var(--el-input-otp-field-width,calc(var(--el-input-otp-size) - 4px));border-radius:var(--el-border-radius-base);height:100%;position:relative}.el-input-otp__input{text-align:center;width:100%;height:100%;line-height:1;font-size:inherit;color:var(--el-input-otp-text-color,var(--el-text-color-regular));background-color:#0000;border:none;outline:none;padding:0}.el-input-otp.is-disabled .el-input-otp__input{color:var(--el-text-color-disabled)}.el-input-otp--outlined .el-input-otp__input-field{box-shadow:0 0 0 1px var(--el-border-color) inset}.el-input-otp--outlined .el-input-otp__input-field:hover{box-shadow:0 0 0 1px var(--el-color-primary-light-5) inset}.el-input-otp--outlined .el-input-otp__input-field:focus-within{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-input-otp--outlined.is-disabled .el-input-otp__input-field{background-color:var(--el-fill-color-light)}.el-input-otp--outlined.is-disabled .el-input-otp__input-field:hover{box-shadow:0 0 0 1px var(--el-border-color) inset}.el-input-otp--filled .el-input-otp__input-field{background-color:var(--el-fill-color)}.el-input-otp--filled .el-input-otp__input-field:hover{background-color:var(--el-fill-color-dark)}.el-input-otp--filled .el-input-otp__input-field:focus-within{background-color:var(--el-fill-color-blank);box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-input-otp--filled.is-disabled .el-input-otp__input-field,.el-input-otp--filled.is-disabled .el-input-otp__input-field:hover{background-color:var(--el-fill-color-light)}.el-input-otp--underlined .el-input-otp__input-field:after{content:"";background-color:var(--el-border-color);width:100%;height:1px;display:block;position:absolute;bottom:0;left:0}.el-input-otp--underlined .el-input-otp__input-field:hover:after{background-color:var(--el-color-primary-light-5)}.el-input-otp--underlined .el-input-otp__input-field:focus-within:after{background-color:var(--el-color-primary)}.el-input-otp--underlined.is-disabled .el-input-otp__input-field:hover:after{background-color:var(--el-border-color)}.el-link{--el-link-font-size:var(--el-font-size-base);--el-link-font-weight:var(--el-font-weight-primary);--el-link-text-color:var(--el-text-color-regular);--el-link-hover-text-color:var(--el-color-primary);--el-link-disabled-text-color:var(--el-text-color-placeholder);vertical-align:middle;cursor:pointer;font-size:var(--el-link-font-size);font-weight:var(--el-link-font-weight);color:var(--el-link-text-color);outline:none;flex-direction:row;justify-content:center;align-items:center;padding:0;text-decoration:none;display:inline-flex;position:relative}.el-link.is-hover-underline:hover:after{content:"";border-bottom:1px solid var(--el-link-hover-text-color);height:0;position:absolute;bottom:0;left:0;right:0}.el-link.is-underline:after{content:"";border-bottom:1px solid var(--el-link-text-color);height:0;position:absolute;bottom:0;left:0;right:0}.el-link:hover{color:var(--el-link-hover-text-color)}.el-link:hover:after{border-color:var(--el-link-hover-text-color)}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link__inner{justify-content:center;align-items:center;display:inline-flex}.el-link.el-link--primary{--el-link-text-color:var(--el-color-primary);--el-link-hover-text-color:var(--el-color-primary-light-3);--el-link-disabled-text-color:var(--el-color-primary-light-5)}.el-link.el-link--success{--el-link-text-color:var(--el-color-success);--el-link-hover-text-color:var(--el-color-success-light-3);--el-link-disabled-text-color:var(--el-color-success-light-5)}.el-link.el-link--warning{--el-link-text-color:var(--el-color-warning);--el-link-hover-text-color:var(--el-color-warning-light-3);--el-link-disabled-text-color:var(--el-color-warning-light-5)}.el-link.el-link--danger{--el-link-text-color:var(--el-color-danger);--el-link-hover-text-color:var(--el-color-danger-light-3);--el-link-disabled-text-color:var(--el-color-danger-light-5)}.el-link.el-link--error{--el-link-text-color:var(--el-color-error);--el-link-hover-text-color:var(--el-color-error-light-3);--el-link-disabled-text-color:var(--el-color-error-light-5)}.el-link.el-link--info{--el-link-text-color:var(--el-color-info);--el-link-hover-text-color:var(--el-color-info-light-3);--el-link-disabled-text-color:var(--el-color-info-light-5)}.el-link.is-disabled{color:var(--el-link-disabled-text-color);cursor:not-allowed}.el-link.is-disabled:after{border-color:var(--el-link-disabled-text-color)}:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{z-index:2000;background-color:var(--el-mask-color);transition:opacity var(--el-transition-duration);margin:0;position:absolute;top:0;bottom:0;left:0;right:0}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size)) / 2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{margin-top:calc((0px - var(--el-loading-spinner-size)) / 2);text-align:center;width:100%;position:absolute;top:50%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size);animation:2s linear infinite loading-rotate;display:inline}.el-loading-spinner .path{stroke-dasharray:90 150;stroke-dashoffset:0;stroke-width:2px;stroke:var(--el-color-primary);stroke-linecap:round;animation:1.5s ease-in-out infinite loading-dash}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(360deg)}}@keyframes loading-dash{0%{stroke-dasharray:1 200;stroke-dashoffset:0}50%{stroke-dasharray:90 150;stroke-dashoffset:-40px}to{stroke-dasharray:90 150;stroke-dashoffset:-120px}}.el-main{--el-main-padding:20px;box-sizing:border-box;padding:var(--el-main-padding);flex:auto;display:block;overflow:auto}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-height:60px;--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{border-right:solid 1px var(--el-menu-border-color);background-color:var(--el-menu-bg-color);box-sizing:border-box;margin:0;padding-left:0;list-style:none;position:relative}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title{white-space:nowrap;padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level) * var(--el-menu-level-padding))}.el-menu:not(.el-menu--collapse) .el-sub-menu__title{padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-menu--horizontal{height:var(--el-menu-horizontal-height);border-right:none;flex-wrap:nowrap;display:flex}.el-menu--horizontal.el-menu--popup-container{height:unset}.el-menu--horizontal.el-menu{border-bottom:solid 1px var(--el-menu-border-color)}.el-menu--horizontal>.el-menu-item{height:100%;color:var(--el-menu-text-color);border-bottom:2px solid #0000;justify-content:center;align-items:center;margin:0;display:inline-flex}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:none}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{height:100%;color:var(--el-menu-text-color);border-bottom:2px solid #0000}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-menu-bg-color)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{background-color:var(--el-menu-bg-color);height:var(--el-menu-horizontal-sub-item-height);line-height:var(--el-menu-horizontal-sub-item-height);color:var(--el-menu-text-color);align-items:center;padding:0 10px;display:flex}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-menu-item.is-active:hover,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title:hover{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):hover,.el-menu--horizontal .el-menu-item:not(.is-disabled):focus{color:var(--el-menu-active-color,var(--el-menu-hover-text-color));background-color:var(--el-menu-hover-bg-color);outline:none}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding) * 2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{vertical-align:middle;width:var(--el-menu-icon-width);text-align:center;margin:0}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span{visibility:hidden;width:0;height:0;display:inline-block;overflow:hidden}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{z-index:100;border-radius:var(--el-border-radius-small);min-width:200px;box-shadow:var(--el-box-shadow-light);border:none;padding:5px 0}.el-menu .el-icon{flex-shrink:0}.el-menu-item{height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);cursor:pointer;transition:border-color var(--el-transition-duration), background-color var(--el-transition-duration), color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap;align-items:center;list-style:none;display:flex;position:relative}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:hover,.el-menu-item:focus{outline:none}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon]{width:var(--el-menu-icon-width);text-align:center;vertical-align:middle;margin-right:5px;font-size:18px}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{box-sizing:border-box;width:100%;height:100%;padding:0 var(--el-menu-base-level-padding);align-items:center;display:inline-flex;position:absolute;top:0;left:0}.el-sub-menu{margin:0;padding-left:0;list-style:none}.el-sub-menu__title{height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);cursor:pointer;transition:border-color var(--el-transition-duration), background-color var(--el-transition-duration), color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap;align-items:center;list-style:none;display:flex;position:relative}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:hover,.el-sub-menu__title:focus{outline:none}.el-sub-menu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu.el-sub-menu__hide-arrow .el-sub-menu__title{padding-right:var(--el-menu-base-level-padding)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-sub-menu__title,.el-sub-menu.is-disabled .el-menu-item{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu .el-icon{vertical-align:middle;width:var(--el-menu-icon-width);text-align:center;margin-right:5px;font-size:18px}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{top:50%;right:var(--el-menu-base-level-padding);transition:transform var(--el-transition-duration);width:inherit;margin-top:-6px;margin-right:0;font-size:12px;position:absolute}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px var(--el-menu-base-level-padding);color:var(--el-text-color-secondary);font-size:12px;line-height:normal}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{transition:var(--el-transition-duration-fast);opacity:0}.el-popper,.el-menu--popup-container,.el-menu{outline:none}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-box-shadow:var(--el-box-shadow);--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:12px;--el-messagebox-font-line-height:var(--el-font-line-height-primary);max-width:var(--el-messagebox-width);width:100%;padding:var(--el-messagebox-padding-primary);vertical-align:middle;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);font-size:var(--el-messagebox-font-size);box-shadow:var(--el-messagebox-box-shadow);text-align:left;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;overflow-wrap:break-word;display:inline-block;position:relative;overflow:hidden}.el-message-box:focus{outline:none!important}.is-message-box .el-overlay-message-box{text-align:center;padding:16px;position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.is-message-box .el-overlay-message-box:after{content:"";vertical-align:middle;width:0;height:100%;display:inline-block}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;user-select:none}.el-message-box__header{padding-bottom:var(--el-messagebox-padding-primary)}.el-message-box__header.show-close{padding-right:calc(var(--el-messagebox-padding-primary) + var(--el-message-close-size,16px))}.el-message-box__title{font-size:var(--el-messagebox-font-size);line-height:var(--el-messagebox-font-line-height);color:var(--el-messagebox-title-color)}.el-message-box__headerbtn{width:40px;height:40px;font-size:var(--el-message-close-size,16px);cursor:pointer;background:0 0;border:none;outline:none;padding:0;position:absolute;top:0;right:0}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{align-items:center;gap:12px;display:flex}.el-message-box__input{padding-top:12px}.el-message-box__input div.invalid>input,.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{font-size:24px}.el-message-box__status.el-message-box-icon--primary{--el-messagebox-color:var(--el-color-primary);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{min-width:0;margin:0}.el-message-box__message p{line-height:var(--el-messagebox-font-line-height);margin:0}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__btns{padding-top:var(--el-messagebox-padding-primary);flex-wrap:wrap;justify-content:flex-end;align-items:center;display:flex}.el-message-box--center .el-message-box__title{justify-content:center;align-items:center;gap:6px;display:flex}.el-message-box--center .el-message-box__status{font-size:inherit}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__container{justify-content:center}.el-message-box-parent--hidden{overflow:hidden}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translate(0,0)}}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);box-sizing:border-box;border-radius:var(--el-border-radius-base);border-width:var(--el-border-width);border-style:var(--el-border-style);border-color:var(--el-message-border-color);background-color:var(--el-message-bg-color);width:max-content;max-width:calc(100% - 32px);transition:opacity var(--el-transition-duration), transform .4s, top .4s, bottom .4s;padding:var(--el-message-padding);align-items:center;gap:8px;display:flex;position:fixed}.el-message.is-left{left:16px}.el-message.is-right{right:16px}.el-message.is-center{left:50%;transform:translate(-50%)}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;top:-8px;right:-8px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{cursor:pointer;color:var(--el-message-close-icon-color);font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0}.el-message-fade-enter-from.is-left,.el-message-fade-enter-from.is-right,.el-message-fade-leave-to.is-left,.el-message-fade-leave-to.is-right{transform:translateY(-100%)}.el-message-fade-enter-from.is-left.is-bottom,.el-message-fade-enter-from.is-right.is-bottom,.el-message-fade-leave-to.is-left.is-bottom,.el-message-fade-leave-to.is-right.is-bottom{transform:translateY(100%)}.el-message-fade-enter-from.is-center,.el-message-fade-leave-to.is-center{transform:translate(-50%,-100%)}.el-message-fade-enter-from.is-center.is-bottom,.el-message-fade-leave-to.is-center.is-bottom{transform:translate(-50%,100%)}.el-notification{--el-notification-width:330px;--el-notification-padding:14px 26px 14px 13px;--el-notification-radius:8px;--el-notification-shadow:var(--el-box-shadow-light);--el-notification-border-color:var(--el-border-color-lighter);--el-notification-icon-size:24px;--el-notification-close-font-size:var(--el-message-close-size,16px);--el-notification-group-margin-left:13px;--el-notification-group-margin-right:8px;--el-notification-content-font-size:var(--el-font-size-base);--el-notification-content-color:var(--el-text-color-regular);--el-notification-title-font-size:16px;--el-notification-title-color:var(--el-text-color-primary);--el-notification-close-color:var(--el-text-color-secondary);--el-notification-close-hover-color:var(--el-text-color-regular);width:var(--el-notification-width);padding:var(--el-notification-padding);border-radius:var(--el-notification-radius);box-sizing:border-box;border:1px solid var(--el-notification-border-color);background-color:var(--el-bg-color-overlay);box-shadow:var(--el-notification-shadow);transition:opacity var(--el-transition-duration), transform var(--el-transition-duration), left var(--el-transition-duration), right var(--el-transition-duration), top .4s, bottom var(--el-transition-duration);overflow-wrap:break-word;z-index:9999;display:flex;position:fixed;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{min-width:0;margin-left:var(--el-notification-group-margin-left);margin-right:var(--el-notification-group-margin-right);flex:1}.el-notification__title{font-weight:700;font-size:var(--el-notification-title-font-size);line-height:var(--el-notification-icon-size);color:var(--el-notification-title-color);margin:0}.el-notification__content{font-size:var(--el-notification-content-font-size);color:var(--el-notification-content-color);margin:6px 0 0;line-height:24px}.el-notification__content p{margin:0}.el-notification .el-notification__icon{height:var(--el-notification-icon-size);width:var(--el-notification-icon-size);font-size:var(--el-notification-icon-size);flex-shrink:0}.el-notification .el-notification__closeBtn{cursor:pointer;color:var(--el-notification-close-color);font-size:var(--el-notification-close-font-size);position:absolute;top:18px;right:15px}.el-notification .el-notification__closeBtn:hover{color:var(--el-notification-close-hover-color)}.el-notification .el-notification--primary{--el-notification-icon-color:var(--el-color-primary);color:var(--el-notification-icon-color)}.el-notification .el-notification--success{--el-notification-icon-color:var(--el-color-success);color:var(--el-notification-icon-color)}.el-notification .el-notification--info{--el-notification-icon-color:var(--el-color-info);color:var(--el-notification-icon-color)}.el-notification .el-notification--warning{--el-notification-icon-color:var(--el-color-warning);color:var(--el-notification-icon-color)}.el-notification .el-notification--error{--el-notification-icon-color:var(--el-color-error);color:var(--el-notification-icon-color)}.el-notification-fade-enter-from.right{right:0;transform:translate(100%)}.el-notification-fade-enter-from.left{left:0;transform:translate(-100%)}.el-notification-fade-leave-to{opacity:0}.el-overlay{z-index:2000;background-color:var(--el-overlay-color-lighter);height:100%;position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.el-overlay .el-overlay-root{height:0}.el-page-header.is-contentful .el-page-header__main{border-top:1px solid var(--el-border-color-light);margin-top:16px}.el-page-header__header{justify-content:space-between;align-items:center;line-height:24px;display:flex}.el-page-header__left{align-items:center;margin-right:40px;display:flex;position:relative}.el-page-header__back{cursor:pointer;align-items:center;display:flex}.el-page-header__left .el-divider--vertical{margin:0 16px}.el-page-header__icon{align-items:center;margin-right:10px;font-size:16px;display:flex}.el-page-header__icon .el-icon{font-size:inherit}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{color:var(--el-text-color-primary);font-size:18px}.el-page-header__breadcrumb{margin-bottom:16px}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;white-space:nowrap;color:var(--el-pagination-text-color);font-size:var(--el-pagination-font-size);align-items:center;font-weight:400;display:flex}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield}.el-pagination .el-select{width:128px}.el-pagination .btn-prev,.el-pagination .btn-next{font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);color:var(--el-pagination-button-color);background:var(--el-pagination-bg-color);border-radius:var(--el-pagination-border-radius);cursor:pointer;text-align:center;box-sizing:border-box;border:none;justify-content:center;align-items:center;padding:0 4px;display:flex}.el-pagination .btn-prev *,.el-pagination .btn-next *{pointer-events:none}.el-pagination .btn-prev:focus,.el-pagination .btn-next:focus{outline:none}.el-pagination .btn-prev:hover,.el-pagination .btn-next:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-prev.is-active,.el-pagination .btn-next.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-prev.is-active.is-disabled,.el-pagination .btn-next.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-prev:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-next.is-disabled{color:var(--el-pagination-button-disabled-color);background-color:var(--el-pagination-button-disabled-bg-color);cursor:not-allowed}.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-prev .el-icon,.el-pagination .btn-next .el-icon{width:inherit;font-size:12px;font-weight:700;display:block}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{margin-left:var(--el-pagination-item-gap);color:var(--el-text-color-regular);font-weight:400}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{margin-left:var(--el-pagination-item-gap);color:var(--el-text-color-regular);align-items:center;font-weight:400;display:flex}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{text-align:center;box-sizing:border-box}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{flex:1;justify-content:flex-end;align-items:center;display:flex}.el-pagination.is-background .btn-prev,.el-pagination.is-background .btn-next,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .el-pager li:disabled,.el-pagination.is-background .el-pager li.is-disabled{color:var(--el-text-color-placeholder);background-color:var(--el-disabled-bg-color)}.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active{color:var(--el-text-color-secondary);background-color:var(--el-fill-color-dark)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-prev,.el-pagination--small .btn-next,.el-pagination--small .el-pager li{height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);font-size:var(--el-pagination-font-size-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small span:not([class*=suffix]),.el-pagination--small button{font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-prev,.el-pagination--large .btn-next,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{-webkit-user-select:none;user-select:none;align-items:center;margin:0;padding:0;font-size:0;list-style:none;display:flex}.el-pager li{font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);color:var(--el-pagination-button-color);background:var(--el-pagination-bg-color);border-radius:var(--el-pagination-border-radius);cursor:pointer;text-align:center;box-sizing:border-box;border:none;justify-content:center;align-items:center;padding:0 4px;display:flex}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li:disabled,.el-pager li.is-disabled{color:var(--el-pagination-button-disabled-color);background-color:var(--el-pagination-button-disabled-bg-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-popconfirm{outline:none}.el-popconfirm__main{align-items:center;display:flex}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin-top:8px}.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border-radius:var(--el-popover-border-radius);border:1px solid var(--el-popover-border-color);min-width:150px;padding:var(--el-popover-padding);z-index:var(--el-index-popper);color:var(--el-text-color-regular);line-height:1.4;font-size:var(--el-popover-font-size);box-shadow:var(--el-box-shadow-light);overflow-wrap:break-word;box-sizing:border-box}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);margin-bottom:12px;line-height:1}.el-popover__reference:focus:not(.focusing),.el-popover__reference:focus:hover{outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus:active,.el-popover.el-popper:focus{outline-width:0}.el-progress{align-items:center;line-height:1;display:flex;position:relative}.el-progress__text{color:var(--el-text-color-regular);min-width:50px;margin-left:5px;font-size:14px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{text-align:center;width:100%;margin:0;position:absolute;top:50%;left:0;transform:translateY(-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{margin-right:0;padding-right:0;display:block}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);vertical-align:middle;border-radius:100px;height:6px;position:relative;overflow:hidden}.el-progress-bar__inner{background-color:var(--el-color-primary);text-align:right;white-space:nowrap;border-radius:100px;height:100%;line-height:1;transition:width .6s;position:absolute;top:0;left:0}.el-progress-bar__inner:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-progress-bar__inner--indeterminate{animation:3s infinite indeterminate;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,#0000001a 25%,#0000 25% 50%,#0000001a 50% 75%,#0000 75%,#0000);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:3s linear infinite striped-flow}.el-progress-bar__innerText{vertical-align:middle;color:#fff;margin:0 5px;font-size:12px;display:inline-block}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);outline:none;display:inline-block;position:relative}.el-radio-button__inner{white-space:nowrap;vertical-align:middle;background:var(--el-button-bg-color,var(--el-fill-color-blank));outline:var(--el-border);line-height:1;font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));color:var(--el-button-text-color,var(--el-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;cursor:pointer;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;font-size:var(--el-font-size-base);border-radius:0;margin:0;padding:8px 15px;display:inline-block;position:relative}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{color:var(--el-radio-button-checked-text-color,var(--el-color-white));background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary))}.el-radio-button__original-radio{opacity:0;z-index:-1;outline:none;position:absolute}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2;border-radius:var(--el-border-radius-base);box-shadow:none}.el-radio-button__original-radio:disabled+.el-radio-button__inner{color:var(--el-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{font-size:var(--el-font-size-base);border-radius:0;padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;padding:5px 11px;font-size:12px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-radio-group{flex-wrap:wrap;align-items:center;font-size:0;display:inline-flex}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);color:var(--el-radio-text-color);font-weight:var(--el-radio-font-weight);cursor:pointer;white-space:nowrap;font-size:var(--el-font-size-base);-webkit-user-select:none;user-select:none;outline:none;align-items:center;height:32px;margin-right:30px;display:inline-flex;position:relative}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:var(--el-border-color-lighter)}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{width:14px;height:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{width:12px;height:12px}.el-radio:last-child{margin-right:0}.el-radio__input{white-space:nowrap;cursor:pointer;vertical-align:middle;outline:none;display:inline-flex;position:relative}.el-radio__input.is-disabled .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:var(--el-disabled-bg-color)}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:var(--el-color-primary);background:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%)scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);width:var(--el-radio-input-width);height:var(--el-radio-input-height);background-color:var(--el-radio-input-bg-color);cursor:pointer;box-sizing:border-box;transition:all .3s;display:inline-block;position:relative}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";width:4px;height:4px;transition:transform .15s ease-in;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.el-radio__original{opacity:0;z-index:-1;outline:none;margin:0;position:absolute;top:0;bottom:0;left:0;right:0}.el-radio__original:focus-visible+.el-radio__inner{outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px;border-radius:var(--el-radio-input-border-radius)}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{width:14px;height:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{width:12px;height:12px}.el-rate{--el-rate-height:20px;--el-rate-font-size:var(--el-font-size-base);--el-rate-icon-size:18px;--el-rate-icon-margin:6px;--el-rate-void-color:var(--el-border-color-darker);--el-rate-fill-color:#f7ba2a;--el-rate-disabled-void-color:var(--el-fill-color);--el-rate-text-color:var(--el-text-color-primary);--el-rate-outline-color:var(--el-color-primary-light-5);align-items:center;height:32px;display:inline-flex}.el-rate:focus,.el-rate:active{outline:none}.el-rate:focus-visible .el-rate__item .el-rate__icon.is-focus-visible{outline:2px solid var(--el-rate-outline-color);transition:outline-offset,outline}.el-rate__item{cursor:pointer;vertical-align:middle;color:var(--el-rate-void-color);font-size:0;line-height:normal;display:inline-block;position:relative}.el-rate .el-rate__icon{font-size:var(--el-rate-icon-size);margin-right:var(--el-rate-icon-margin);transition:var(--el-transition-duration);display:inline-block;position:relative}.el-rate .el-rate__icon.hover{transform:scale(1.15)}.el-rate .el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate .el-rate__icon.is-active{color:var(--el-rate-fill-color)}.el-rate__decimal{color:var(--el-rate-fill-color);display:inline-block;position:absolute;top:0;left:0;overflow:hidden}.el-rate__decimal--box{position:absolute;top:0;left:0}.el-rate__text{font-size:var(--el-rate-font-size);vertical-align:middle;color:var(--el-rate-text-color)}.el-rate--large{height:40px}.el-rate--small{height:24px}.el-rate--small .el-rate__icon{font-size:14px}.el-rate.is-disabled .el-rate__item{cursor:not-allowed;color:var(--el-rate-disabled-void-color)}.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px;text-align:center;box-sizing:border-box;padding:var(--el-result-padding);flex-direction:column;justify-content:center;align-items:center;display:flex}.el-result__icon svg{width:var(--el-result-icon-font-size);height:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{font-size:var(--el-result-title-font-size);color:var(--el-text-color-primary);margin:0;line-height:1.3}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{font-size:var(--el-font-size-base);color:var(--el-text-color-regular);margin:0;line-height:1.3}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.el-row{box-sizing:border-box;flex-wrap:wrap;display:flex;position:relative}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-top{align-items:flex-start}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}.el-scrollbar{--el-scrollbar-opacity:.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary);height:100%;position:relative;overflow:hidden}.el-scrollbar__wrap{height:100%;overflow:auto}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{cursor:pointer;border-radius:inherit;background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));width:0;height:0;transition:var(--el-transition-duration) background-color;opacity:var(--el-scrollbar-opacity,.3);display:block;position:relative}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{z-index:1;border-radius:4px;position:absolute;bottom:2px;right:2px}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}.el-select-dropdown{z-index:calc(var(--el-index-top) + 1);border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__loading,.el-select-dropdown__empty{text-align:center;color:var(--el-text-color-secondary);font-size:var(--el-select-font-size);margin:0;padding:10px 0}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{box-sizing:border-box;margin:0;padding:6px 0;list-style:none}.el-select-dropdown__list.el-vl__window{margin:6px 0;padding:0}.el-select-dropdown__header{border-bottom:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__footer{border-top:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__item{font-size:var(--el-font-size-base);white-space:nowrap;text-overflow:ellipsis;color:var(--el-text-color-regular);box-sizing:border-box;cursor:pointer;height:34px;padding:0 32px 0 20px;line-height:34px;position:relative;overflow:hidden}.el-select-dropdown__item.is-hovering{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.is-selected{color:var(--el-color-primary);font-weight:700}.el-select-dropdown__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed;background-color:unset}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{content:"";background-position:50%;background-repeat:no-repeat;background-color:var(--el-color-primary);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") 0 0/100% 100% no-repeat;mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") 0 0/100% 100% no-repeat;border-top:none;border-right:none;width:12px;height:12px;position:absolute;top:50%;right:20px;transform:translateY(-50%);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") 0 0/100% 100% no-repeat}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-disabled:after{background-color:var(--el-text-color-placeholder)}.el-select-group{margin:0;padding:0}.el-select-group__wrap{margin:0;padding:0;list-style:none;position:relative}.el-select-group__title{box-sizing:border-box;color:var(--el-color-info);text-overflow:ellipsis;white-space:nowrap;padding:0 20px;font-size:12px;line-height:34px;overflow:hidden}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-color:var(--el-disabled-text-color);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px;--el-select-width:100%;vertical-align:middle;width:var(--el-select-width);display:inline-block;position:relative}.el-select__wrapper{box-sizing:border-box;cursor:pointer;text-align:left;border-radius:var(--el-border-radius-base);background-color:var(--el-fill-color-blank);min-height:32px;transition:var(--el-transition-duration);box-shadow:0 0 0 1px var(--el-border-color) inset;align-items:center;gap:6px;padding:4px 12px;font-size:14px;line-height:24px;display:flex;position:relative;transform:translate(0,0)}.el-select__wrapper.is-filterable{cursor:text}.el-select__wrapper.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-select__wrapper.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-select__wrapper.is-disabled{cursor:not-allowed;background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select__wrapper.is-disabled:hover{box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select__wrapper.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-select__wrapper.is-disabled .el-select__selected-item{color:var(--el-select-disabled-color)}.el-select__wrapper.is-disabled .el-select__caret,.el-select__wrapper.is-disabled .el-tag,.el-select__wrapper.is-disabled input{cursor:not-allowed}.el-select__wrapper.is-disabled .el-select__prefix,.el-select__wrapper.is-disabled .el-select__suffix{pointer-events:none}.el-select__prefix,.el-select__suffix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));flex-shrink:0;align-items:center;gap:6px;display:flex}.el-select__caret{color:var(--el-select-input-color);font-size:var(--el-select-input-font-size);transition:var(--el-transition-duration);cursor:pointer;transform:rotate(0)}.el-select__caret.is-reverse{transform:rotate(180deg)}.el-select__clear{cursor:pointer}.el-select__clear:hover{color:var(--el-select-close-hover-color)}.el-select__selection{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex;position:relative}.el-select__selection.is-near{margin-left:-8px}.el-select__selection .el-tag{cursor:pointer;border-color:#0000}.el-select__selection .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-select__selection .el-tag .el-tag__content{min-width:0}.el-select__selected-item{-webkit-user-select:none;user-select:none;flex-wrap:wrap;display:flex}.el-select__tags-text{text-overflow:ellipsis;white-space:nowrap;line-height:normal;display:block;overflow:hidden}.el-select__placeholder{z-index:-1;text-overflow:ellipsis;white-space:nowrap;width:100%;color:var(--el-input-text-color,var(--el-text-color-regular));display:block;position:absolute;top:50%;overflow:hidden;transform:translateY(-50%)}.el-select__placeholder.is-transparent{-webkit-user-select:none;user-select:none;color:var(--el-text-color-placeholder)}.el-select__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-select__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-select__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-select__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-select__input-wrapper{flex:1}.el-select__input-wrapper.is-hidden{opacity:0;z-index:-1;position:absolute}.el-select__input{color:var(--el-select-multiple-input-color);font-size:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;outline:none;width:100%;height:24px;padding:0;font-family:inherit}.el-select__input-calculator{visibility:hidden;white-space:pre;max-width:100%;position:absolute;top:0;left:0;overflow:hidden}.el-select--large .el-select__wrapper{gap:6px;min-height:40px;padding:8px 16px;font-size:14px;line-height:24px}.el-select--large .el-select__selection{gap:6px}.el-select--large .el-select__selection.is-near{margin-left:-8px}.el-select--large .el-select__prefix,.el-select--large .el-select__suffix{gap:6px}.el-select--large .el-select__input{height:24px}.el-select--small .el-select__wrapper{gap:4px;min-height:24px;padding:2px 8px;font-size:12px;line-height:20px}.el-select--small .el-select__selection{gap:4px}.el-select--small .el-select__selection.is-near{margin-left:-6px}.el-select--small .el-select__prefix,.el-select--small .el-select__suffix{gap:4px}.el-select--small .el-select__input{height:20px}.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);border-radius:var(--el-border-radius-base);width:100%;height:16px;display:inline-block}.el-skeleton__circle{width:var(--el-skeleton-circle-size);height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size);border-radius:50%}.el-skeleton__button{border-radius:4px;width:64px;height:40px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:var(--el-font-size-small)}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{width:unset;border-radius:0;justify-content:center;align-items:center;display:flex}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;width:22%;height:22%}.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@keyframes el-skeleton-loading{0%{background-position:100%}to{background-position:0}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{background:var(--el-skeleton-color);height:16px;margin-top:16px}.el-skeleton.is-animated .el-skeleton__item{background:linear-gradient(90deg, var(--el-skeleton-color) 25%, var(--el-skeleton-to-color) 37%, var(--el-skeleton-color) 63%);background-size:400% 100%;animation:1.4s infinite el-skeleton-loading}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;width:100%;height:32px;display:flex}.el-slider__runway{height:var(--el-slider-height);background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;position:relative}.el-slider__runway.show-input{width:auto;margin-right:30px}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper:hover,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button:hover,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button.dragging{cursor:not-allowed;transform:scale(1)}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{height:var(--el-slider-height);background-color:var(--el-slider-main-bg-color);border-top-left-radius:var(--el-slider-border-radius);border-bottom-left-radius:var(--el-slider-border-radius);position:absolute}.el-slider__button-wrapper{height:var(--el-slider-button-wrapper-size);width:var(--el-slider-button-wrapper-size);z-index:1;top:var(--el-slider-button-wrapper-offset);text-align:center;-webkit-user-select:none;user-select:none;background-color:#0000;outline:none;line-height:normal;position:absolute;transform:translate(-50%)}.el-slider__button-wrapper:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-slider__button-wrapper:hover,.el-slider__button-wrapper.hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{width:var(--el-slider-button-size);height:var(--el-slider-button-size);vertical-align:middle;border:solid 2px var(--el-slider-main-bg-color);background-color:var(--el-color-white);box-sizing:border-box;transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;border-radius:50%;display:inline-block}.el-slider__button:hover,.el-slider__button.hover,.el-slider__button.dragging{transform:scale(1.2)}.el-slider__button:hover,.el-slider__button.hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{height:var(--el-slider-height);width:var(--el-slider-height);border-radius:var(--el-border-radius-circle);background-color:var(--el-slider-stop-bg-color);position:absolute;transform:translate(-50%)}.el-slider__marks{width:18px;height:100%;top:0;left:12px}.el-slider__marks-text{color:var(--el-color-info);white-space:pre;margin-top:15px;font-size:14px;position:absolute;transform:translate(-50%)}.el-slider.is-vertical{flex:0;width:auto;height:100%;display:inline-flex;position:relative}.el-slider.is-vertical .el-slider__runway{width:var(--el-slider-height);height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:var(--el-slider-height);border-radius:0 0 3px 3px;height:auto}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:var(--el-slider-button-wrapper-offset);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.el-space{vertical-align:top;display:inline-flex}.el-space__item{flex-wrap:wrap;display:flex}.el-space__item>*{flex:1}.el-space--vertical{flex-direction:column}.el-time-spinner{white-space:nowrap;width:100%}.el-spinner{vertical-align:middle;display:inline-block}.el-spinner-inner{width:50px;height:50px;animation:2s linear infinite rotate}.el-spinner-inner .path{stroke:var(--el-border-color-lighter);stroke-linecap:round;animation:1.5s ease-in-out infinite dash}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1 150;stroke-dashoffset:0}50%{stroke-dasharray:90 150;stroke-dashoffset:-35px}to{stroke-dasharray:90 150;stroke-dashoffset:-124px}}.el-step{flex-shrink:1;position:relative}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-grow:0;flex-shrink:0;flex-basis:auto!important}.el-step:last-of-type .el-step__main,.el-step:last-of-type .el-step__description{padding-right:0}.el-step__head{width:100%;position:relative}.el-step__head.is-process{color:var(--el-text-color-primary);border-color:var(--el-text-color-primary)}.el-step__head.is-wait{color:var(--el-text-color-placeholder);border-color:var(--el-text-color-placeholder)}.el-step__head.is-success{color:var(--el-color-success);border-color:var(--el-color-success)}.el-step__head.is-error{color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-step__head.is-finish{color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-step__icon{z-index:1;box-sizing:border-box;background:var(--el-bg-color);justify-content:center;align-items:center;width:24px;height:24px;font-size:14px;transition:all .15s ease-out;display:inline-flex;position:relative}.el-step__icon.is-text{border:2px solid;border-radius:50%}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{-webkit-user-select:none;user-select:none;text-align:center;color:inherit;font-weight:700;line-height:1;display:inline-block}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{background-color:var(--el-text-color-placeholder);border-color:currentColor;position:absolute}.el-step__line-inner{box-sizing:border-box;border:1px solid;width:0;height:0;transition:all .15s ease-out;display:block}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{color:var(--el-text-color-primary);font-weight:700}.el-step__title.is-wait{color:var(--el-text-color-placeholder)}.el-step__title.is-success{color:var(--el-color-success)}.el-step__title.is-error{color:var(--el-color-danger)}.el-step__title.is-finish{color:var(--el-color-primary)}.el-step__description{margin-top:-5px;padding-right:10%;font-size:12px;font-weight:400;line-height:20px}.el-step__description.is-process{color:var(--el-text-color-primary)}.el-step__description.is-wait{color:var(--el-text-color-placeholder)}.el-step__description.is-success{color:var(--el-color-success)}.el-step__description.is-error{color:var(--el-color-danger)}.el-step__description.is-finish{color:var(--el-color-primary)}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{flex-grow:1;padding-left:10px}.el-step.is-vertical .el-step__title{padding-bottom:8px;line-height:24px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-vertical .el-step__description{padding-right:0}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{align-items:center;display:flex}.el-step.is-simple .el-step__head{width:auto;padding-right:10px;font-size:0}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8)translateY(1px)}.el-step.is-simple .el-step__main{flex-grow:1;align-items:stretch;display:flex;position:relative}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{overflow-wrap:break-word;max-width:50%}.el-step.is-simple .el-step__arrow{flex-grow:1;justify-content:center;align-items:center;display:flex}.el-step.is-simple .el-step__arrow:before,.el-step.is-simple .el-step__arrow:after{content:"";background:var(--el-text-color-placeholder);width:1px;height:15px;display:inline-block;position:absolute}.el-step.is-simple .el-step__arrow:before{transform-origin:0 0;transform:rotate(-45deg)translateY(-4px)}.el-step.is-simple .el-step__arrow:after{transform-origin:100% 100%;transform:rotate(45deg)translateY(4px)}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-steps{line-height:normal;display:flex}.el-steps--simple{background:var(--el-fill-color-light);border-radius:4px;padding:13px 8%}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{flex-flow:column;height:100%}.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color);vertical-align:middle;align-items:center;height:32px;font-size:14px;line-height:20px;display:inline-flex;position:relative}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:var(--el-transition-duration-fast);cursor:pointer;vertical-align:middle;height:20px;color:var(--el-text-color-primary);font-size:14px;font-weight:500;display:inline-block}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{font-size:14px;line-height:1;display:inline-block}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{opacity:0;width:0;height:0;margin:0;position:absolute}.el-switch__input:focus-visible~.el-switch__core{outline:2px solid var(--el-switch-on-color);outline-offset:1px}.el-switch__core{border:1px solid var(--el-switch-border-color,var(--el-switch-off-color));box-sizing:border-box;background:var(--el-switch-off-color);cursor:pointer;min-width:40px;height:20px;transition:border-color var(--el-transition-duration), background-color var(--el-transition-duration);border-radius:10px;outline:none;align-items:center;display:inline-flex;position:relative}.el-switch__core .el-switch__inner{width:100%;transition:all var(--el-transition-duration);justify-content:center;align-items:center;height:16px;padding:0 4px 0 18px;display:flex;overflow:hidden}.el-switch__core .el-switch__inner-wrapper{color:var(--el-color-white);-webkit-user-select:none;user-select:none;text-overflow:ellipsis;white-space:nowrap;align-items:center;font-size:12px;display:flex;overflow:hidden}.el-switch__core .el-switch__action{border-radius:var(--el-border-radius-circle);transition:all var(--el-transition-duration);background-color:var(--el-color-white);width:16px;height:16px;color:var(--el-switch-off-color);justify-content:center;align-items:center;display:flex;position:absolute;left:1px}.el-switch.is-checked .el-switch__core{border-color:var(--el-switch-border-color,var(--el-switch-on-color));background-color:var(--el-switch-on-color)}.el-switch.is-checked .el-switch__core .el-switch__action{color:var(--el-switch-on-color);left:calc(100% - 17px)}.el-switch.is-checked .el-switch__core .el-switch__inner{padding:0 18px 0 4px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{height:40px;font-size:14px;line-height:24px}.el-switch--large .el-switch__label{height:24px;font-size:14px}.el-switch--large .el-switch__label *{font-size:14px}.el-switch--large .el-switch__core{border-radius:12px;min-width:50px;height:24px}.el-switch--large .el-switch__core .el-switch__inner{height:20px;padding:0 6px 0 22px}.el-switch--large .el-switch__core .el-switch__action{width:20px;height:20px}.el-switch--large.is-checked .el-switch__core .el-switch__action{left:calc(100% - 21px)}.el-switch--large.is-checked .el-switch__core .el-switch__inner{padding:0 22px 0 6px}.el-switch--small{height:24px;font-size:12px;line-height:16px}.el-switch--small .el-switch__label{height:16px;font-size:12px}.el-switch--small .el-switch__label *{font-size:12px}.el-switch--small .el-switch__core{border-radius:8px;min-width:30px;height:16px}.el-switch--small .el-switch__core .el-switch__inner{height:12px;padding:0 2px 0 14px}.el-switch--small .el-switch__core .el-switch__action{width:12px;height:12px}.el-switch--small.is-checked .el-switch__core .el-switch__action{left:calc(100% - 13px)}.el-switch--small.is-checked .el-switch__core .el-switch__inner{padding:0 14px 0 2px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:solid 1px var(--el-border-color-lighter);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;background-color:#fff;border-radius:2px}.el-table-filter__list{outline:none;min-width:100px;margin:0;padding:5px 0;list-style:none}.el-table-filter__list-item{cursor:pointer;line-height:36px;font-size:var(--el-font-size-base);outline:none;padding:0 10px}.el-table-filter__list-item:hover,.el-table-filter__list-item:focus{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__multiple{outline:none}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table-filter__bottom button:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-filter__bottom button{color:var(--el-text-color-regular);font-size:var(--el-font-size-small);padding:0 3px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{height:unset;align-items:center;margin-bottom:12px;margin-left:5px;margin-right:5px;display:flex}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-fill-color-blank);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-fill-color-blank);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px #00000026;--el-table-fixed-right-column:inset -10px 0 10px -10px #00000026;--el-table-index:var(--el-index-normal);box-sizing:border-box;background-color:var(--el-table-bg-color);width:100%;max-width:100%;height:-moz-fit-content;height:fit-content;font-size:var(--el-font-size-base);color:var(--el-table-text-color);position:relative;overflow:hidden}.el-table__inner-wrapper{flex-direction:column;height:100%;display:flex;position:relative}.el-table__inner-wrapper:before{height:1px;bottom:0;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell,.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell{border-bottom-color:#0000}.el-table__empty-block{text-align:center;justify-content:center;align-items:center;width:100%;min-height:60px;display:flex;position:sticky;left:0}.el-table__empty-text{width:50%;color:var(--el-text-color-secondary);line-height:60px}.el-table__expand-column .cell{text-align:center;-webkit-user-select:none;user-select:none;padding:0}.el-table__expand-icon{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table__expand-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:-2px}.el-table__expand-icon{color:var(--el-text-color-regular);width:min(23px,100%);height:23px;font-size:12px;line-height:12px}.el-table__expand-icon.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:#0000!important}.el-table__placeholder{width:20px;display:inline-block}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;text-align:left;min-width:0;z-index:var(--el-table-index);padding:8px 0;position:relative}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;width:15px;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;text-overflow:ellipsis;white-space:normal;overflow-wrap:break-word;padding:0 12px;line-height:23px;overflow:hidden}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:var(--el-font-size-base)}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:var(--el-font-size-extra-small)}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table th.el-table__cell.is-leaf,.el-table td.el-table__cell{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{content:"";vertical-align:middle;background:#ff4d51;border-radius:50%;width:8px;height:8px;margin-right:5px;display:inline-block}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border:after,.el-table--border:before,.el-table--border .el-table__inner-wrapper:after,.el-table__inner-wrapper:before{content:"";background-color:var(--el-table-border-color);z-index:calc(var(--el-table-index) + 2);position:absolute}.el-table--border .el-table__inner-wrapper:after{width:100%;height:1px;z-index:calc(var(--el-table-index) + 2);top:0;left:0}.el-table--border:before{width:1px;height:100%;top:-1px;left:0}.el-table--border:after{width:1px;height:100%;top:-1px;right:0}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__header-wrapper,.el-table__body-wrapper,.el-table__footer-wrapper{width:100%}.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right,.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right{background:inherit;z-index:calc(var(--el-table-index) + 1);position:sticky!important}.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before{content:"";width:10px;box-shadow:none;touch-action:none;pointer-events:none;position:absolute;top:0;bottom:0;overflow:hidden}.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px}.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch,.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch{z-index:calc(var(--el-table-index) + 1);background:#fff;right:0;position:sticky!important}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__header,.el-table__body,.el-table__footer{table-layout:fixed;border-collapse:separate}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__header-wrapper .el-table-column--selection>.cell,.el-table__body-wrapper .el-table-column--selection>.cell{align-items:center;height:23px;display:inline-flex}.el-table__header-wrapper .el-table-column--selection .el-checkbox,.el-table__body-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;position:relative;overflow:hidden}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table .caret-wrapper:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table .caret-wrapper{vertical-align:middle;width:24px;height:14px;overflow:initial;flex-direction:column;align-items:center;display:inline-flex;position:relative}.el-table .sort-caret{border:5px solid #0000;width:0;height:0;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{visibility:hidden;z-index:-1;position:absolute}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row>td.el-table__cell,.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{z-index:calc(var(--el-table-index) + 2);position:sticky;top:0}.el-table.el-table--scrollable-y .el-table__body-footer{z-index:calc(var(--el-table-index) + 2);position:sticky;bottom:0}.el-table__column-resize-proxy{border-left:var(--el-table-border);width:0;z-index:calc(var(--el-table-index) + 9);position:absolute;top:0;bottom:0;left:200px}.el-table__column-filter-trigger{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table__column-filter-trigger:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table__column-filter-trigger{display:inline-block}.el-table__column-filter-trigger i{color:var(--el-color-info);vertical-align:middle;font-size:14px}.el-table__border-left-patch{width:1px;height:100%;z-index:calc(var(--el-table-index) + 2);background-color:var(--el-table-border-color);position:absolute;top:0;left:0}.el-table__border-bottom-patch{height:1px;z-index:calc(var(--el-table-index) + 2);background-color:var(--el-table-border-color);position:absolute;left:0}.el-table__border-right-patch{width:1px;height:100%;z-index:calc(var(--el-table-index) + 2);background-color:var(--el-table-border-color);position:absolute;top:0}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s 1ms}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{text-align:center;width:20px;display:inline-block}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-table-v2{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-fill-color-blank);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-fill-color-blank);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px #00000026;--el-table-fixed-right-column:inset -10px 0 10px -10px #00000026;--el-table-index:var(--el-index-normal);font-size:var(--el-font-size-base)}.el-table-v2 *{box-sizing:border-box}.el-table-v2__root{position:relative}.el-table-v2__root:hover .el-table-v2__main .el-virtual-scrollbar{opacity:1}.el-table-v2__main{background-color:var(--el-bg-color);flex-direction:column-reverse;display:flex;position:absolute;top:0;left:0;overflow:hidden}.el-table-v2__main .el-vl__horizontal,.el-table-v2__main .el-vl__vertical{z-index:2}.el-table-v2__left{background-color:var(--el-bg-color);flex-direction:column-reverse;display:flex;position:absolute;top:0;left:0;overflow:hidden;box-shadow:2px 0 4px #0000000f}.el-table-v2__left .el-virtual-scrollbar{opacity:0}.el-table-v2__left .el-vl__vertical,.el-table-v2__left .el-vl__horizontal{z-index:-1}.el-table-v2__right{background-color:var(--el-bg-color);flex-direction:column-reverse;display:flex;position:absolute;top:0;right:0;overflow:hidden;box-shadow:-2px 0 4px #0000000f}.el-table-v2__right .el-virtual-scrollbar{opacity:0}.el-table-v2__right .el-vl__vertical,.el-table-v2__right .el-vl__horizontal{z-index:-1}.el-table-v2__header-row,.el-table-v2__row{padding-inline-end:var(--el-table-scrollbar-size)}.el-table-v2__header-wrapper{overflow:hidden}.el-table-v2__header{position:relative;overflow:hidden}.el-table-v2__header .el-checkbox{z-index:0}.el-table-v2__footer{position:absolute;bottom:0;left:0;right:0;overflow:hidden}.el-table-v2__empty{position:absolute;left:0}.el-table-v2__overlay{z-index:9999;position:absolute;top:0;bottom:0;left:0;right:0}.el-table-v2__header-row{border-bottom:var(--el-table-border);display:flex}.el-table-v2__header-cell{-webkit-user-select:none;user-select:none;background-color:var(--el-table-header-bg-color);height:100%;color:var(--el-table-header-text-color);align-items:center;padding:0 8px;font-weight:700;display:flex;overflow:hidden}.el-table-v2__header-cell.is-align-center{text-align:center;justify-content:center}.el-table-v2__header-cell.is-align-right{text-align:right;justify-content:flex-end}.el-table-v2__header-cell.is-sortable{cursor:pointer}.el-table-v2__header-cell:hover .el-icon{display:block}.el-table-v2__sort-icon{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table-v2__sort-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-v2__sort-icon{transition:opacity, display var(--el-transition-duration);opacity:.6;display:none}.el-table-v2__sort-icon.is-sorting{opacity:1;display:flex}.el-table-v2__row{border-bottom:var(--el-table-border);transition:background-color var(--el-transition-duration);align-items:center;display:flex}.el-table-v2__row.is-hovered,.el-table-v2__row:hover{background-color:var(--el-table-row-hover-bg-color)}.el-table-v2__row-cell{align-items:center;height:100%;padding:0 8px;display:flex;overflow:hidden}.el-table-v2__row-cell.is-align-center{text-align:center;justify-content:center}.el-table-v2__row-cell.is-align-right{text-align:right;justify-content:flex-end}.el-table-v2__expand-icon{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table-v2__expand-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-v2__expand-icon{-webkit-user-select:none;user-select:none;margin:0 4px}.el-table-v2__expand-icon svg{transition:transform var(--el-transition-duration)}.el-table-v2__expand-icon.is-expanded svg{transform:rotate(90deg)}.el-table-v2:not(.is-dynamic) .el-table-v2__cell-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.el-table-v2.is-dynamic .el-table-v2__row{align-items:stretch;overflow:hidden}.el-table-v2.is-dynamic .el-table-v2__row .el-table-v2__row-cell{overflow-wrap:break-word}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{justify-content:space-between;align-items:center;margin:0 0 15px;padding:0;display:flex;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);z-index:1;height:2px;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier), transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);list-style:none;position:absolute;bottom:0;left:0}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{border:1px solid var(--el-border-color);text-align:center;width:20px;height:20px;color:var(--el-text-color-primary);cursor:pointer;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;margin:10px 0 10px 10px;font-size:12px;line-height:20px;transition:all .15s;display:flex}.el-tabs__new-tab .is-icon-plus{height:inherit;width:inherit;transform:scale(.8)}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:auto;margin-bottom:-1px;position:relative;overflow:hidden}.el-tabs__nav-wrap:after{content:"";background-color:var(--el-border-color-light);width:100%;height:2px;z-index:var(--el-index-normal);position:absolute;bottom:0;left:0}.el-tabs__nav-wrap.is-bottom:after{top:0;bottom:auto}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{cursor:pointer;color:var(--el-text-color-secondary);text-align:center;width:20px;font-size:12px;line-height:44px;position:absolute}.el-tabs__nav-next.is-disabled,.el-tabs__nav-prev.is-disabled{color:var(--el-text-color-disabled);cursor:not-allowed}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;transition:transform var(--el-transition-duration);float:left;z-index:calc(var(--el-index-normal) + 1);display:flex;position:relative}.el-tabs__nav.is-stretch{min-width:100%;display:flex}.el-tabs__nav.is-stretch>*{text-align:center;flex:1}.el-tabs__item{height:var(--el-tabs-header-height);box-sizing:border-box;font-size:var(--el-font-size-base);color:var(--el-text-color-primary);justify-content:center;align-items:center;padding:0 20px;font-weight:500;list-style:none;display:flex;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{box-shadow:0 0 2px 2px var(--el-color-primary) inset;border-radius:3px}.el-tabs__item .is-icon-close{text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);border-radius:50%;margin-left:5px}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active{color:var(--el-color-primary)}.el-tabs__item:hover{color:var(--el-color-primary);cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;position:relative;overflow:hidden}.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--top>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);height:var(--el-tabs-header-height);box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);box-sizing:border-box;border-bottom:none;border-radius:4px 4px 0 0}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{transform-origin:100%;width:0;height:14px;font-size:12px;position:relative;right:-2px;overflow:hidden}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid #0000;border-left:1px solid var(--el-border-color-light);transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier), padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);margin-top:-1px}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);color:var(--el-text-color-secondary);border:1px solid #0000;margin-top:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child,.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay);border-right-color:var(--el-border-color);border-left-color:var(--el-border-color)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-top:10px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid #0000}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-scroll{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{width:2px;height:auto;top:0;bottom:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{text-align:center;cursor:pointer;width:100%;height:30px;line-height:30px}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev.is-disabled,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next.is-disabled,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev.is-disabled,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next.is-disabled{cursor:not-allowed}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{top:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{width:2px;height:100%;top:0;bottom:auto}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__active-bar.is-left{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid var(--el-border-color-light);border-bottom:none;border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right-color:#fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-right:none;border-radius:4px 0 0 4px}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid #0000;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 #0000}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left-color:#fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid #0000;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 #0000}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInRight-transition,.slideInLeft-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);position:absolute;left:0;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);position:absolute;left:0;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translate(100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;opacity:1;transform:translate(0)}to{transform-origin:0 0;opacity:0;transform:translate(100%)}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translate(-100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;opacity:1;transform:translate(0)}to{transform-origin:0 0;opacity:0;transform:translate(-100%)}}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px;background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);color:var(--el-tag-text-color);vertical-align:middle;height:24px;font-size:var(--el-tag-font-size);border-radius:var(--el-tag-border-radius);box-sizing:border-box;white-space:nowrap;--el-icon-size:14px;--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary);border-style:solid;border-width:1px;justify-content:center;align-items:center;padding:0 9px;line-height:1;display:inline-flex}.el-tag.el-tag--primary{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-hover-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color);flex-shrink:0}.el-tag .el-tag__close:hover{color:var(--el-color-white);background-color:var(--el-tag-hover-color)}.el-tag.el-tag--primary{--el-tag-text-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-text-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-text-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-text-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-text-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-text-color:var(--el-color-info)}.el-tag .el-icon{cursor:pointer;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size);border-radius:50%}.el-tag .el-tag__close{background-color:#0000;border:none;border-radius:50%;outline:none;margin-left:6px;padding:0;overflow:hidden}.el-tag .el-tag__close:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-tag .el-tag__close .el-icon{display:flex}.el-tag--dark{--el-tag-text-color:var(--el-color-white);--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--primary{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--primary,.el-tag--dark.el-tag--success,.el-tag--dark.el-tag--warning,.el-tag--dark.el-tag--danger,.el-tag--dark.el-tag--error,.el-tag--dark.el-tag--info{--el-tag-text-color:var(--el-color-white)}.el-tag--plain,.el-tag--plain.el-tag--primary{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-hover-color:var(--el-color-error)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-closable{padding-right:5px}.el-tag--large{--el-icon-size:16px;height:32px;padding:0 11px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{--el-icon-size:12px;height:20px;padding:0 7px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--primary.is-hit{border-color:var(--el-color-primary)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)}.el-text{--el-text-font-size:var(--el-font-size-base);--el-text-color:var(--el-text-color-regular);font-size:var(--el-text-font-size);color:var(--el-text-color);overflow-wrap:break-word;align-self:center;margin:0;padding:0}.el-text.is-truncated{text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:inline-block;overflow:hidden}.el-text.is-line-clamp{-webkit-box-orient:vertical;display:-webkit-inline-box;overflow:hidden}.el-text--large{--el-text-font-size:var(--el-font-size-medium)}.el-text--default{--el-text-font-size:var(--el-font-size-base)}.el-text--small{--el-text-font-size:var(--el-font-size-extra-small)}.el-text.el-text--primary{--el-text-color:var(--el-color-primary)}.el-text.el-text--success{--el-text-color:var(--el-color-success)}.el-text.el-text--warning{--el-text-color:var(--el-color-warning)}.el-text.el-text--danger{--el-text-color:var(--el-color-danger)}.el-text.el-text--error{--el-text-color:var(--el-color-error)}.el-text.el-text--info{--el-text-color:var(--el-color-info)}.el-text>.el-icon{vertical-align:-2px}.time-select{min-width:0;margin:5px 0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.disabled{color:var(--el-datepicker-border-color);cursor:not-allowed}.time-select-item:hover{background-color:var(--el-fill-color-light);cursor:pointer;font-weight:700}.time-select .time-select-item.selected:not(.disabled){color:var(--el-color-primary);font-weight:700}.el-timeline-item{padding-bottom:20px;position:relative}.el-timeline-item__wrapper{box-sizing:content-box;position:relative;top:-3px}.el-timeline-item__tail{border-left:2px solid var(--el-timeline-node-color);height:100%;position:absolute}.el-timeline-item .el-timeline-item__icon{color:var(--el-color-white);font-size:var(--el-font-size-small)}.el-timeline-item__node{background-color:var(--el-timeline-node-color);border-color:var(--el-timeline-node-color);box-sizing:border-box;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute}.el-timeline-item__node--normal{width:var(--el-timeline-node-size-normal);height:var(--el-timeline-node-size-normal)}.el-timeline-item__node--large{width:var(--el-timeline-node-size-large);height:var(--el-timeline-node-size-large)}.el-timeline-item__node.is-hollow{background:var(--el-color-white);border-style:solid;border-width:2px}.el-timeline-item__node--primary{background-color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-timeline-item__node--success{background-color:var(--el-color-success);border-color:var(--el-color-success)}.el-timeline-item__node--warning{background-color:var(--el-color-warning);border-color:var(--el-color-warning)}.el-timeline-item__node--danger{background-color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-timeline-item__node--info{background-color:var(--el-color-info);border-color:var(--el-color-info)}.el-timeline-item__dot{justify-content:center;align-items:center;display:flex;position:absolute}.el-timeline-item__content{color:var(--el-text-color-primary)}.el-timeline-item__timestamp{color:var(--el-text-color-secondary);line-height:1;font-size:var(--el-font-size-small)}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-timeline-item.is-start .el-timeline-item__wrapper{padding-left:28px}.el-timeline-item.is-start .el-timeline-item__tail{left:4px}.el-timeline-item.is-start .el-timeline-item__node--normal{left:-1px}.el-timeline-item.is-start .el-timeline-item__node--large{left:-2px}.el-timeline-item.is-end .el-timeline-item__wrapper{text-align:right;padding-right:28px}.el-timeline-item.is-end .el-timeline-item__tail{right:4px}.el-timeline-item.is-end .el-timeline-item__node--normal{right:-1px}.el-timeline-item.is-end .el-timeline-item__node--large{right:-2px}.el-timeline-item.is-alternate .el-timeline-item__tail,.el-timeline-item.is-alternate .el-timeline-item__node,.el-timeline-item.is-alternate-reverse .el-timeline-item__tail,.el-timeline-item.is-alternate-reverse .el-timeline-item__node{left:50%;transform:translate(-50%)}.el-timeline{--el-timeline-node-size-normal:12px;--el-timeline-node-size-large:14px;--el-timeline-node-color:var(--el-border-color-light);font-size:var(--el-font-size-base);margin:0;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline .el-timeline-item__center{align-items:center;display:flex}.el-timeline .el-timeline-item__center .el-timeline-item__wrapper{width:100%}.el-timeline .el-timeline-item__center .el-timeline-item__tail{top:0}.el-timeline .el-timeline-item__center:first-child .el-timeline-item__tail{height:calc(50% + 10px);top:calc(50% - 10px)}.el-timeline .el-timeline-item__center:last-child .el-timeline-item__tail{height:calc(50% - 10px);display:block}.el-timeline.is-start{padding-left:40px;padding-right:0}.el-timeline.is-end{padding-left:0;padding-right:40px}.el-timeline.is-alternate{padding-left:20px;padding-right:20px}.el-timeline.is-alternate .el-timeline-item:nth-child(odd) .el-timeline-item__wrapper{width:calc(50% - 28px);left:calc(50% - var(--el-timeline-node-size-large) / 2);padding-left:28px}.el-timeline.is-alternate .el-timeline-item:nth-child(2n) .el-timeline-item__wrapper{width:calc(50% - 28px + var(--el-timeline-node-size-large) / 2);text-align:right;padding-right:28px}.el-timeline.is-alternate-reverse{padding-left:20px;padding-right:20px}.el-timeline.is-alternate-reverse .el-timeline-item:nth-child(odd) .el-timeline-item__wrapper{width:calc(50% - 28px + var(--el-timeline-node-size-large) / 2);text-align:right;padding-right:28px}.el-timeline.is-alternate-reverse .el-timeline-item:nth-child(2n) .el-timeline-item__wrapper{width:calc(50% - 28px);left:calc(50% - var(--el-timeline-node-size-large) / 2);padding-left:28px}.el-transfer{--el-transfer-border-color:var(--el-border-color-lighter);--el-transfer-border-radius:var(--el-border-radius-base);--el-transfer-panel-width:200px;--el-transfer-panel-header-height:40px;--el-transfer-panel-header-bg-color:var(--el-fill-color-light);--el-transfer-panel-footer-height:40px;--el-transfer-panel-body-height:278px;--el-transfer-item-height:30px;--el-transfer-filter-height:32px;font-size:var(--el-font-size-base)}.el-transfer__buttons{vertical-align:middle;padding:0 30px;display:inline-block}.el-transfer__button{vertical-align:top}.el-transfer__button:nth-child(2){margin:0 0 0 10px}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button .el-icon+span{margin-left:0}.el-transfer-panel{background:var(--el-bg-color-overlay);text-align:left;vertical-align:middle;width:var(--el-transfer-panel-width);box-sizing:border-box;max-height:100%;display:inline-block;position:relative;overflow:hidden}.el-transfer-panel__body{height:var(--el-transfer-panel-body-height);border-left:1px solid var(--el-transfer-border-color);border-right:1px solid var(--el-transfer-border-color);border-bottom:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);overflow:hidden}.el-transfer-panel__body.is-with-footer{border-bottom:none;border-bottom-right-radius:0;border-bottom-left-radius:0}.el-transfer-panel__list{height:var(--el-transfer-panel-body-height);box-sizing:border-box;margin:0;padding:6px 0;list-style:none;overflow:auto}.el-transfer-panel__list.is-filterable{height:calc(100% - var(--el-transfer-filter-height) - 30px);padding-top:0}.el-transfer-panel__item{height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding-left:15px;display:block!important}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:var(--el-text-color-regular);margin-right:30px}.el-transfer-panel__item:hover{color:var(--el-color-primary)}.el-transfer-panel__item.el-checkbox .el-checkbox__label{text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box;width:100%;line-height:var(--el-transfer-item-height);padding-left:22px;display:block;overflow:hidden}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;box-sizing:border-box;padding:15px}.el-transfer-panel__filter .el-input__inner{height:var(--el-transfer-filter-height);box-sizing:border-box;width:100%;font-size:12px;display:inline-block}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{height:var(--el-transfer-panel-header-height);background:var(--el-transfer-panel-header-bg-color);border:1px solid var(--el-transfer-border-color);border-top-left-radius:var(--el-transfer-border-radius);border-top-right-radius:var(--el-transfer-border-radius);box-sizing:border-box;color:var(--el-color-black);align-items:center;margin:0;padding-left:15px;display:flex}.el-transfer-panel .el-transfer-panel__header .el-checkbox{align-items:center;width:100%;display:flex;position:relative}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{min-width:0;color:var(--el-text-color-primary);flex:1;align-items:center;font-size:16px;font-weight:400;display:flex}.el-transfer-panel .el-transfer-panel__header-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.el-transfer-panel .el-transfer-panel__header-count{color:var(--el-text-color-secondary);flex-shrink:0;margin-left:8px;margin-right:15px;font-size:12px}.el-transfer-panel .el-transfer-panel__footer{height:var(--el-transfer-panel-footer-height);background:var(--el-bg-color-overlay);border:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);margin:0;padding:0}.el-transfer-panel .el-transfer-panel__footer:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{color:var(--el-text-color-regular);padding-left:20px}.el-transfer-panel .el-transfer-panel__empty{height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);color:var(--el-text-color-secondary);text-align:center;margin:0;padding:6px 15px 0}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-tree{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder);cursor:default;background:var(--el-fill-color-blank);color:var(--el-tree-text-color);font-size:var(--el-font-size-base);position:relative}.el-tree__empty-block{text-align:center;width:100%;height:100%;min-height:60px;position:relative}.el-tree__empty-text{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.el-tree__drop-indicator{background-color:var(--el-color-primary);height:1px;position:absolute;left:0;right:0}.el-tree-node{white-space:nowrap;outline:none}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{--el-checkbox-height:var(--el-tree-node-content-height);height:var(--el-tree-node-content-height);cursor:pointer;align-items:center;display:flex}.el-tree-node__content>.el-tree-node__expand-icon{box-sizing:content-box;padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:var(--el-tree-expand-icon-color);transition:transform var(--el-transition-duration) ease-in-out;font-size:12px;transform:rotate(0)}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:#0000;cursor:default;visibility:hidden}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__loading-icon{font-size:var(--el-font-size-base);color:var(--el-tree-expand-icon-color);margin-right:8px}.el-tree-node>.el-tree-node__children{background-color:#0000;overflow:hidden}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-tree-select{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree-select__popper .el-tree-node__expand-icon{margin-left:8px}.el-tree-select__popper .el-tree-node.is-checked>.el-tree-node__content .el-select-dropdown__item.selected:after{content:none}.el-tree-select__popper .el-select-dropdown__list>.el-select-dropdown__item{padding-left:32px}.el-tree-select__popper .el-select-dropdown__item{flex:1;height:20px;padding-left:0;line-height:20px;background:0 0!important}.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;cursor:pointer;outline:none;justify-content:center;align-items:center;display:inline-flex}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{border-color:var(--el-border-color-darker);color:inherit}.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{cursor:not-allowed;background-color:var(--el-disabled-bg-color)}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);margin-top:7px;font-size:12px}.el-upload iframe{z-index:-1;opacity:0;filter:alpha(opacity=0);position:absolute;top:0;left:0}.el-upload--picture-card{background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);box-sizing:border-box;width:var(--el-upload-picture-card-size);height:var(--el-upload-picture-card-size);cursor:pointer;vertical-align:top;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{padding:var(--el-upload-dragger-padding-vertical) var(--el-upload-dragger-padding-horizontal);background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);box-sizing:border-box;text-align:center;cursor:pointer;border-radius:6px;position:relative;overflow:hidden}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);margin-bottom:16px;font-size:67px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);text-align:center;font-size:14px}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{padding:calc(var(--el-upload-dragger-padding-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px);background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;margin:10px 0 0;padding:0;list-style:none;position:relative}.el-upload-list__item{color:var(--el-text-color-regular);box-sizing:border-box;border-radius:4px;width:100%;margin-bottom:5px;font-size:14px;transition:all .5s cubic-bezier(.55,0,.1,1);position:relative}.el-upload-list__item .el-progress{width:100%;position:absolute;top:20px}.el-upload-list__item .el-progress__text{position:absolute;top:-13px;right:0}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{cursor:pointer;opacity:.75;color:var(--el-text-color-regular);transition:opacity var(--el-transition-duration);display:none;position:absolute;top:50%;right:5px;transform:translateY(-50%)}.el-upload-list__item .el-icon--close:hover{opacity:1;color:var(--el-color-primary)}.el-upload-list__item .el-icon--close-tip{cursor:pointer;opacity:1;color:var(--el-color-primary);font-size:12px;font-style:normal;display:none;position:absolute;top:1px;right:5px}.el-upload-list__item:hover,.el-upload-list__item:focus-within{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close,.el-upload-list__item:focus-within .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-icon--close-tip,.el-upload-list__item:focus-within .el-icon--close-tip{right:24px}.el-upload-list__item:hover .el-progress__text,.el-upload-list__item:focus-within .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{flex-direction:column;justify-content:center;width:calc(100% - 30px);margin-left:4px;display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:hover,.el-upload-list__item.is-success .el-upload-list__item-name:focus{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:not(.focusing):focus,.el-upload-list__item.is-success:active{outline-width:0}.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip,.el-upload-list__item.is-success:active .el-icon--close-tip{display:none}.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:focus-within .el-upload-list__item-status-label{opacity:0;display:none}.el-upload-list__item-name{color:var(--el-text-color-regular);text-align:center;transition:color var(--el-transition-duration);font-size:var(--el-font-size-base);align-items:center;padding:0 4px;display:inline-flex}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.el-upload-list__item-status-label{line-height:inherit;height:100%;transition:opacity var(--el-transition-duration);justify-content:center;align-items:center;display:none;position:absolute;top:0;right:5px}.el-upload-list__item-delete{color:var(--el-text-color-regular);font-size:12px;display:none;position:absolute;top:0;right:10px}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{flex-wrap:wrap;margin:0;display:inline-flex}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);box-sizing:border-box;width:var(--el-upload-list-picture-card-size);height:var(--el-upload-list-picture-card-size);border-radius:6px;margin:0 8px 8px 0;padding:0;display:inline-flex;overflow:hidden}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:block}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{object-fit:contain;width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);text-align:center;width:40px;height:24px;top:-6px;right:-15px;transform:rotate(45deg)}.el-upload-list--picture-card .el-upload-list__item-status-label i{margin-top:11px;font-size:12px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{cursor:default;color:#fff;opacity:0;background-color:var(--el-overlay-color-lighter);width:100%;height:100%;transition:opacity var(--el-transition-duration);justify-content:center;align-items:center;font-size:20px;display:inline-flex;position:absolute;top:0;left:0}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{font-size:inherit;color:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{width:126px;top:50%;bottom:auto;left:50%;transform:translate(-50%,-50%)}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{z-index:0;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);box-sizing:border-box;border-radius:6px;align-items:center;margin-top:10px;padding:10px;display:flex;overflow:hidden}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:inline-flex}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{object-fit:contain;z-index:1;background-color:var(--el-color-white);justify-content:center;align-items:center;width:70px;height:70px;display:inline-flex;position:relative}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);text-align:center;width:46px;height:26px;position:absolute;top:-7px;right:-17px;transform:rotate(45deg)}.el-upload-list--picture .el-upload-list__item-status-label i{margin-top:12px;font-size:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{z-index:10;cursor:default;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.el-upload-cover:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-upload-cover img{width:100%;height:100%;display:block}.el-upload-cover__label{background:var(--el-color-success);text-align:center;width:40px;height:24px;top:-6px;right:-15px;transform:rotate(45deg)}.el-upload-cover__label i{color:#fff;margin-top:11px;font-size:12px;transform:rotate(-45deg)}.el-upload-cover__progress{vertical-align:middle;width:243px;display:inline-block;position:static}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{width:100%;height:100%;position:absolute;top:0;left:0}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);text-align:center;width:100%;height:100%;position:absolute;bottom:0;left:0}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;vertical-align:middle;transition:var(--el-transition-md-fade);margin-top:60px;font-size:14px;display:inline-block}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;font-size:24px;line-height:inherit;margin:0 auto 5px;display:block}.el-upload-cover__title{text-overflow:ellipsis;white-space:nowrap;text-align:left;width:100%;height:36px;color:var(--el-text-color-primary);background-color:#fff;margin:0;padding:0 10px;font-size:14px;font-weight:400;line-height:36px;position:absolute;bottom:0;left:0;overflow:hidden}.el-upload-cover+.el-upload__inner{opacity:0;z-index:1;position:relative}.el-vl__wrapper{position:relative}.el-vl__wrapper:hover .el-virtual-scrollbar,.el-vl__wrapper.always-on .el-virtual-scrollbar{opacity:1}.el-vl__window{scrollbar-width:none}.el-vl__window::-webkit-scrollbar{display:none}.el-virtual-scrollbar{opacity:0;transition:opacity .34s ease-out}.el-virtual-scrollbar.always-on{opacity:1}.el-vg__wrapper{position:relative}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);--el-popper-bg-color-light:var(--el-bg-color-overlay);--el-popper-bg-color-dark:var(--el-text-color-primary);border-radius:var(--el-popper-border-radius);z-index:2000;overflow-wrap:break-word;word-break:normal;visibility:visible;min-width:10px;padding:5px 11px;font-size:12px;line-height:20px;position:absolute}.el-popper.is-dark{--el-fill-color-blank:var(--el-popper-bg-color-dark);color:var(--el-bg-color);background:var(--el-popper-bg-color-dark);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark>.el-popper__arrow:before{border:1px solid var(--el-text-color-primary);background:var(--el-popper-bg-color-dark);right:0}.el-popper.is-light{--el-fill-color-blank:var(--el-popper-bg-color-light);background:var(--el-popper-bg-color-light);border:1px solid var(--el-border-color-light)}.el-popper.is-light>.el-popper__arrow:before{border:1px solid var(--el-border-color-light);background:var(--el-popper-bg-color-light);right:0}.el-popper.is-pure{padding:0}.el-popper__arrow{z-index:-1;width:10px;height:10px;position:absolute}.el-popper__arrow:before{z-index:-1;content:" ";background:var(--el-text-color-primary);box-sizing:border-box;width:10px;height:10px;position:absolute;transform:rotate(45deg)}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-top-color:#0000!important;border-left-color:#0000!important}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-bottom-color:#0000!important;border-right-color:#0000!important}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-bottom-color:#0000!important;border-left-color:#0000!important}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-top-color:#0000!important;border-right-color:#0000!important}.el-statistic{--el-statistic-title-font-weight:400;--el-statistic-title-font-size:var(--el-font-size-extra-small);--el-statistic-title-color:var(--el-text-color-regular);--el-statistic-content-font-weight:400;--el-statistic-content-font-size:var(--el-font-size-extra-large);--el-statistic-content-color:var(--el-text-color-primary)}.el-statistic__head{font-weight:var(--el-statistic-title-font-weight);font-size:var(--el-statistic-title-font-size);color:var(--el-statistic-title-color);margin-bottom:4px;line-height:20px}.el-statistic__content{font-weight:var(--el-statistic-content-font-weight);font-size:var(--el-statistic-content-font-size);color:var(--el-statistic-content-color)}.el-statistic__value{display:inline-block}.el-statistic__prefix{margin-right:4px;display:inline-block}.el-statistic__suffix{margin-left:4px;display:inline-block}.el-tour{--el-tour-width:520px;--el-tour-padding-primary:12px;--el-tour-font-line-height:var(--el-font-line-height-primary);--el-tour-title-font-size:16px;--el-tour-title-text-color:var(--el-text-color-primary);--el-tour-title-font-weight:400;--el-tour-close-color:var(--el-color-info);--el-tour-font-size:14px;--el-tour-color:var(--el-text-color-primary);--el-tour-bg-color:var(--el-bg-color);--el-tour-border-radius:4px}.el-tour__hollow{transition:all var(--el-transition-duration) ease}.el-tour__content{border-radius:var(--el-tour-border-radius);width:var(--el-tour-width);padding:var(--el-tour-padding-primary);background:var(--el-tour-bg-color);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;overflow-wrap:break-word;outline:none}.el-tour__arrow{background:var(--el-tour-bg-color);pointer-events:none;box-sizing:border-box;width:10px;height:10px;position:absolute;transform:rotate(45deg)}.el-tour__content[data-side^=top] .el-tour__arrow{border-top-color:#0000;border-left-color:#0000}.el-tour__content[data-side^=bottom] .el-tour__arrow{border-bottom-color:#0000;border-right-color:#0000}.el-tour__content[data-side^=left] .el-tour__arrow{border-bottom-color:#0000;border-left-color:#0000}.el-tour__content[data-side^=right] .el-tour__arrow{border-top-color:#0000;border-right-color:#0000}.el-tour__content[data-side^=top] .el-tour__arrow{bottom:-5px}.el-tour__content[data-side^=bottom] .el-tour__arrow{top:-5px}.el-tour__content[data-side^=left] .el-tour__arrow{right:-5px}.el-tour__content[data-side^=right] .el-tour__arrow{left:-5px}.el-tour__closebtn{cursor:pointer;width:40px;height:40px;font-size:var(--el-message-close-size,16px);background:0 0;border:none;outline:none;padding:0;position:absolute;top:0;right:0}.el-tour__closebtn .el-tour__close{color:var(--el-tour-close-color);font-size:inherit}.el-tour__closebtn:focus .el-tour__close,.el-tour__closebtn:hover .el-tour__close{color:var(--el-color-primary)}.el-tour__header{padding-bottom:var(--el-tour-padding-primary)}.el-tour__header.show-close{padding-right:calc(var(--el-tour-padding-primary) + var(--el-message-close-size,16px))}.el-tour__title{line-height:var(--el-tour-font-line-height);font-size:var(--el-tour-title-font-size);color:var(--el-tour-title-text-color);font-weight:var(--el-tour-title-font-weight)}.el-tour__body{color:var(--el-tour-text-color);font-size:var(--el-tour-font-size)}.el-tour__body img,.el-tour__body video{max-width:100%}.el-tour__footer{padding-top:var(--el-tour-padding-primary);box-sizing:border-box;justify-content:space-between;display:flex}.el-tour__content .el-tour-indicators{flex:1;display:inline-block}.el-tour__content .el-tour-indicator{background:var(--el-color-info-light-9);border-radius:50%;width:6px;height:6px;margin-right:6px;display:inline-block}.el-tour__content .el-tour-indicator.is-active{background:var(--el-color-primary)}.el-tour.el-tour--primary{--el-tour-title-text-color:#fff;--el-tour-text-color:#fff;--el-tour-bg-color:var(--el-color-primary);--el-tour-close-color:#fff}.el-tour.el-tour--primary .el-tour__closebtn:focus .el-tour__close,.el-tour.el-tour--primary .el-tour__closebtn:hover .el-tour__close{color:var(--el-tour-title-text-color)}.el-tour.el-tour--primary .el-button--default{color:var(--el-color-primary);border-color:var(--el-color-primary);background:#fff}.el-tour.el-tour--primary .el-button--primary{border-color:#fff}.el-tour.el-tour--primary .el-tour-indicator{background:#ffffff26}.el-tour.el-tour--primary .el-tour-indicator.is-active{background:#fff}.el-tour-parent--hidden{overflow:hidden}.el-anchor{--el-anchor-bg-color:var(--el-bg-color);--el-anchor-padding-indent:14px;--el-anchor-line-height:22px;--el-anchor-font-size:12px;--el-anchor-color:var(--el-text-color-secondary);--el-anchor-active-color:var(--el-color-primary);--el-anchor-hover-color:var(--el-text-color-regular);--el-anchor-marker-bg-color:var(--el-color-primary);background-color:var(--el-anchor-bg-color);position:relative}.el-anchor__marker{background-color:var(--el-anchor-marker-bg-color);opacity:0;z-index:0;border-radius:4px;position:absolute}.el-anchor.el-anchor--vertical .el-anchor__marker{width:4px;height:14px;transition:top .25s ease-in-out,opacity .25s;top:8px;left:0}.el-anchor.el-anchor--vertical .el-anchor__list{padding-left:var(--el-anchor-padding-indent)}.el-anchor.el-anchor--vertical.el-anchor--underline:before{content:"";background-color:#0505050f;width:2px;height:100%;position:absolute;left:0}.el-anchor.el-anchor--vertical.el-anchor--underline .el-anchor__marker{border-radius:unset;width:2px}.el-anchor.el-anchor--horizontal .el-anchor__marker{width:20px;height:2px;transition:left .25s ease-in-out,opacity .25s,width .25s;bottom:0}.el-anchor.el-anchor--horizontal .el-anchor__list{padding-bottom:4px;display:flex}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item{padding-left:16px}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item:first-child{padding-left:0}.el-anchor.el-anchor--horizontal.el-anchor--underline:before{content:"";background-color:#0505050f;width:100%;height:2px;position:absolute;bottom:0}.el-anchor.el-anchor--horizontal.el-anchor--underline .el-anchor__marker{border-radius:unset;height:2px}.el-anchor__item{flex-direction:column;display:flex}.el-anchor__link{font-size:var(--el-anchor-font-size);line-height:var(--el-anchor-line-height);color:var(--el-anchor-color);transition:color var(--el-transition-duration);white-space:nowrap;text-overflow:ellipsis;cursor:pointer;outline:none;max-width:100%;padding:4px 0;text-decoration:none;overflow:hidden}.el-anchor__link:hover,.el-anchor__link:focus{color:var(--el-hover-color)}.el-anchor__link:focus-visible{border-radius:var(--el-border-radius-base);outline:2px solid var(--el-color-primary)}.el-anchor__link.is-active{color:var(--el-anchor-active-color)}.el-anchor .el-anchor__list .el-anchor__item a{display:inline-block}.el-segmented--vertical{flex-direction:column}.el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented{--el-segmented-color:var(--el-text-color-regular);--el-segmented-bg-color:var(--el-fill-color-light);--el-segmented-padding:2px;--el-segmented-item-selected-color:var(--el-color-white);--el-segmented-item-selected-bg-color:var(--el-color-primary);--el-segmented-item-selected-disabled-bg-color:var(--el-color-primary-light-5);--el-segmented-item-hover-color:var(--el-text-color-primary);--el-segmented-item-hover-bg-color:var(--el-fill-color-dark);--el-segmented-item-active-bg-color:var(--el-fill-color-darker);--el-segmented-item-disabled-color:var(--el-text-color-placeholder);background:var(--el-segmented-bg-color);min-height:32px;padding:var(--el-segmented-padding);border-radius:var(--el-border-radius-base);color:var(--el-segmented-color);box-sizing:border-box;align-items:stretch;font-size:14px;display:inline-flex}.el-segmented__group{align-items:stretch;width:100%;display:flex;position:relative}.el-segmented__item-selected{background:var(--el-segmented-item-selected-bg-color);border-radius:calc(var(--el-border-radius-base) - 2px);pointer-events:none;width:10px;height:100%;transition:all .3s;position:absolute;top:0;left:0}.el-segmented__item-selected.is-disabled{background:var(--el-segmented-item-selected-disabled-bg-color)}.el-segmented__item-selected.is-focus-visible:before{content:"";border-radius:inherit;outline:2px solid var(--el-segmented-item-selected-bg-color);outline-offset:1px;position:absolute;top:0;bottom:0;left:0;right:0}.el-segmented__item{cursor:pointer;border-radius:calc(var(--el-border-radius-base) - 2px);flex:1;align-items:center;padding:0 11px;display:flex}.el-segmented__item:not(.is-disabled):not(.is-selected):hover{color:var(--el-segmented-item-hover-color);background:var(--el-segmented-item-hover-bg-color)}.el-segmented__item:not(.is-disabled):not(.is-selected):active{background:var(--el-segmented-item-active-bg-color)}.el-segmented__item.is-selected,.el-segmented__item.is-selected.is-disabled{color:var(--el-segmented-item-selected-color)}.el-segmented__item.is-disabled{cursor:not-allowed;color:var(--el-segmented-item-disabled-color)}.el-segmented__item-input{opacity:0;pointer-events:none;width:0;height:0;margin:0;position:absolute}.el-segmented__item-label{text-align:center;text-overflow:ellipsis;white-space:nowrap;z-index:1;flex:1;line-height:normal;transition:color .3s;overflow:hidden}.el-segmented.is-block{display:flex}.el-segmented.is-block .el-segmented__item{min-width:0}.el-segmented--large{border-radius:var(--el-border-radius-base);min-height:40px;font-size:16px}.el-segmented--large .el-segmented__item-selected{border-radius:calc(var(--el-border-radius-base) - 2px)}.el-segmented--large .el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented--large .el-segmented__item{border-radius:calc(var(--el-border-radius-base) - 2px);padding:0 11px}.el-segmented--small{border-radius:calc(var(--el-border-radius-base) - 1px);min-height:24px;font-size:14px}.el-segmented--small .el-segmented__item-selected{border-radius:calc(calc(var(--el-border-radius-base) - 1px) - 2px)}.el-segmented--small .el-segmented--vertical .el-segmented__item{padding:7px}.el-segmented--small .el-segmented__item{border-radius:calc(calc(var(--el-border-radius-base) - 1px) - 2px);padding:0 7px}.el-mention{width:100%;position:relative}.el-mention__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-mention__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-mention__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-mention__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-mention__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-mention__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-mention-dropdown{--el-mention-font-size:var(--el-font-size-base);--el-mention-bg-color:var(--el-bg-color-overlay);--el-mention-shadow:var(--el-box-shadow-light);--el-mention-border:1px solid var(--el-border-color-light);--el-mention-option-color:var(--el-text-color-regular);--el-mention-option-height:34px;--el-mention-option-min-width:100px;--el-mention-option-hover-background:var(--el-fill-color-light);--el-mention-option-selected-color:var(--el-color-primary);--el-mention-option-disabled-color:var(--el-text-color-placeholder);--el-mention-option-loading-color:var(--el-text-color-secondary);--el-mention-option-loading-padding:10px 0;--el-mention-max-height:174px;--el-mention-padding:6px 0;--el-mention-header-padding:10px;--el-mention-footer-padding:10px}.el-mention-dropdown__item{font-size:var(--el-mention-font-size);white-space:nowrap;text-overflow:ellipsis;color:var(--el-mention-option-color);height:var(--el-mention-option-height);line-height:var(--el-mention-option-height);box-sizing:border-box;min-width:var(--el-mention-option-min-width);cursor:pointer;padding:0 20px;position:relative;overflow:hidden}.el-mention-dropdown__item.is-hovering{background-color:var(--el-mention-option-hover-background)}.el-mention-dropdown__item.is-selected{color:var(--el-mention-option-selected-color);font-weight:700}.el-mention-dropdown__item.is-disabled{color:var(--el-mention-option-disabled-color);cursor:not-allowed;background-color:unset}.el-mention-dropdown{z-index:calc(var(--el-index-top) + 1);border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-mention-dropdown__loading{text-align:center;color:var(--el-mention-option-loading-color);min-width:var(--el-mention-option-min-width);margin:0;padding:10px 0;font-size:12px}.el-mention-dropdown__wrap{max-height:var(--el-mention-max-height)}.el-mention-dropdown__list{padding:var(--el-mention-padding);box-sizing:border-box;margin:0;list-style:none}.el-mention-dropdown__header{padding:var(--el-mention-header-padding);border-bottom:var(--el-mention-border)}.el-mention-dropdown__footer{padding:var(--el-mention-footer-padding);border-top:var(--el-mention-border)}.el-splitter{width:100%;height:100%;margin:0;padding:0;display:flex;position:relative}.el-splitter__mask{z-index:999;position:absolute;top:0;bottom:0;left:0;right:0}.el-splitter__mask-horizontal{cursor:ew-resize}.el-splitter__mask-vertical{cursor:ns-resize}.el-splitter__horizontal{flex-direction:row}.el-splitter__vertical{flex-direction:column}.el-splitter-bar{-webkit-user-select:none;user-select:none;flex:none;position:relative}.el-splitter-bar__dragger{z-index:1;background:0 0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.el-splitter-bar__dragger:before,.el-splitter-bar__dragger:after{content:"";background-color:var(--el-border-color-light);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.el-splitter-bar__dragger:not(.is-lazy):after{display:none}.el-splitter-bar__dragger:after{opacity:.4}.el-splitter-bar__dragger:hover:not(.is-disabled):before{background-color:var(--el-color-primary-light-5)}.el-splitter-bar__dragger-horizontal:before,.el-splitter-bar__dragger-horizontal:after{width:2px;height:100%}.el-splitter-bar__dragger-vertical:before,.el-splitter-bar__dragger-vertical:after{width:100%;height:2px}.el-splitter-bar__dragger-active:before,.el-splitter-bar__dragger-active:after{background-color:var(--el-color-primary-light-3)}.el-splitter-bar__dragger-active.el-splitter-bar__dragger-horizontal:after{transform:translate(calc(-50% + var(--el-splitter-bar-offset)), -50%)}.el-splitter-bar__dragger-active.el-splitter-bar__dragger-vertical:after{transform:translate(-50%, calc(-50% + var(--el-splitter-bar-offset)))}.el-splitter-bar:hover .el-splitter-bar__collapse-icon{opacity:1}.el-splitter-bar__collapse-icon{background:var(--el-border-color-light);cursor:pointer;opacity:0;z-index:9;border-radius:2px;justify-content:center;align-items:center;display:flex;position:absolute}.el-splitter-bar__collapse-icon:hover{opacity:1;background-color:var(--el-color-primary-light-5)}.el-splitter-bar__horizontal-collapse-icon-start{width:16px;height:24px;top:50%;left:-12px;transform:translate(-50%,-50%)}.el-splitter-bar__horizontal-collapse-icon-end{width:16px;height:24px;top:50%;left:12px;transform:translate(-50%,-50%)}.el-splitter-bar__vertical-collapse-icon-start{width:24px;height:16px;top:-12px;right:50%;transform:translate(50%,-50%)}.el-splitter-bar__vertical-collapse-icon-end{width:24px;height:16px;top:12px;right:50%;transform:translate(50%,-50%)}.el-splitter-panel{scrollbar-width:thin;box-sizing:border-box;flex-grow:0;overflow:auto} \ No newline at end of file diff --git a/TAT/css/index.css b/TAT/css/index.css new file mode 100644 index 0000000..80a48ea --- /dev/null +++ b/TAT/css/index.css @@ -0,0 +1,232 @@ + * { + margin: 0; + padding: 0; + box-sizing: border-box; + } + + body { + margin: 0; + padding: 0; + overflow: hidden; + } + + .screen-container { + width: 100%; + height: 100vh; + background: url(../images/bg2.jpg); + background-size: 100% 100%; + padding: 10px 20px 5px 30px; + } + + .screen-header { + position: relative; + width: 100%; + height: 60px; + } + + .screen-title { + font-size: 1.875rem; + color: rgba(14, 253, 255, 1); + text-align: center; + font-weight: bold; + text-align: center; + line-height: 50px; + } + + .screen-time { + position: absolute; + right: 80px; + font-size: 20px; + color: #0ef; + font-weight: 700; + top: 10px; + } + + + + .border_bg_leftTop { + position: absolute; + left: -0.125rem; + top: -0.625rem; + width: 5.78125rem; + height: 0.78125rem; + display: block; + background: #01279d url(../images/title_left_bg.png) no-repeat; + background-size: cover; + } + + .border_bg_rightTop { + position: absolute; + right: -0.15625rem; + top: -0.15625rem; + width: 1.5625rem; + height: 1.5625rem; + display: block; + background: url(../images/border_bg.jpg) no-repeat; + background-size: cover; + } + + .border_bg_leftBottom { + position: absolute; + left: -0.125rem; + bottom: -0.125rem; + width: 1.5625rem; + height: 1.5625rem; + display: block; + background: url(../images/border_bg.jpg) no-repeat; + background-size: cover; + } + + .border_bg_rightBottom { + position: absolute; + right: -0.15625rem; + bottom: -0.15625rem; + width: 1.25rem; + height: 1.25rem; + display: block; + background: url(../images/title_right_bg.png) no-repeat; + background-size: cover; + } + + .div__body { + padding: 12px; + } + + .grid-wrapper { + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr 1fr; + /* 上下两行高度均分 */ + gap: 10px; + flex: 1; + min-height: 0; + height: calc(100% - 80px); + } + + .card { + border: 1px solid #0efdff; + padding: 5px; + display: flex; + flex-direction: column; + overflow: hidden; + min-height: 0; + } + + .card-header { + display: flex; + justify-content: space-between; + margin-bottom: 5px; + border-bottom: 1px solid #0099ff; + color: #fff; + font-size: 20px; + font-weight: bold; + } + + .red-text { + color: #ff4444; + font-weight: bold; + } + + .table-box { + flex: 1; + min-height: 0; + } + + table { + width: 100%; + /* height: 100%; */ + border-collapse: collapse !important; + border: 1px solid #0099ff; + } + + th { + background: rgba(30, 104, 195, 1); + color: #ffffff; + font-size: 16px; + font-weight: bold; + border: 1px solid #0099ff; + padding: 3px; + text-align: left; + height: 30px; + } + + td { + background: transparent; + color: #ffffff; + font-size: 15px; + border: 1px solid #0099ff; + padding: 3px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 180px; + height: 30px; + } + + /* 隔行变色 */ + tbody tr:nth-child(even) td { + background: rgba(0, 153, 255, 0.1); + min-height: 30px; + } + + /* 文字溢出悬浮完整提示 */ + td { + position: relative; + } + + td:hover::after { + content: attr(data-tip); + position: absolute; + left: 0; + top: 100%; + background: rgba(0, 18, 36, 0.95); + border: 1px solid #0efdff; + padding: 6px 10px; + z-index: 10; + white-space: normal; + max-width: 400px; + border-radius: 4px; + } + + + + + .timeout { + color: #00ff00; + font-weight: bold; + font-size: 16px; + } + + .tips { + margin-top: 8px; + font-size: 12px; + color: #ff4d4f; + } + + /* 右上角关闭叉号按钮 透明悬浮 */ + .close-btn-box { + position: fixed; + right: 30px; + top: 20px; + z-index: 9999; + } + + .close-icon-btn { + width: 44px; + height: 44px; + line-height: 44px; + text-align: center; + background: transparent; + border: 1px solid rgba(255, 255, 255, 0.25); + color: #fff; + border-radius: 50%; + cursor: pointer; + font-size: 24px; + font-weight: bold; + user-select: none; + } + + .close-icon-btn:hover { + background: rgba(255, 0, 0, 0.35); + border-color: rgba(255, 255, 255, 0.5); + } \ No newline at end of file diff --git a/TAT/images/bg2.jpg b/TAT/images/bg2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f8d5ca4d254a70bbe4462f4a59fb9f29f2128e1d GIT binary patch literal 210564 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 + + + + + \ No newline at end of file diff --git a/TAT/index-1.html b/TAT/index-1.html new file mode 100644 index 0000000..7eb8338 --- /dev/null +++ b/TAT/index-1.html @@ -0,0 +1,388 @@ + + + + + + + TAT监控大屏 + + + + + + + + + + +
        +
        + +
        +
        TAT监控大屏
        +
        {{ nowTime }}
        +
        + +
        +
        +
        + 已采集待收标本 + + 共 {{list1.length}}个标本 + +
        +
        + + + + + + + + + + + + + +
        + + + + +
        + +
        +
        + 已核收还未上机标本 + + 共 {{list2.length}}个标本 + +
        +
        + + + + + + + + + + + + + +
        + + + + +
        + +
        +
        + 标本完成效率TAT +
        +
        + + + + + + + + + + + + + +
        + + + + +
        + +
        +
        危急值结果:(请工作人员及时处理!)
        +
        + + + + + + + +
        + + + + +
        +
        +
        +
        + + + + + \ No newline at end of file diff --git a/TAT/index.html b/TAT/index.html new file mode 100644 index 0000000..e79cac5 --- /dev/null +++ b/TAT/index.html @@ -0,0 +1,374 @@ + + + + + + + TAT监控大屏 + + + + +
        +
        +
        TAT超时提醒大屏
        +
        +
        +
        + +
        +
        + 已采集待收标本超时 + 共 0个标本 +
        +
        + + + + + + + + + + + + +
        科室姓名/条码标本/项目采样时间等待时间
        +
        +
        + +
        +
        + 已核收未上机超时 + 共 0个标本 +
        +
        + + + + + + + + + + + +
        科室姓名/条码标本/项目签收时间等待时间
        +
        +
        + +
        +
        + 标本报告未完成超时 + 共 0个标本 +
        +
        + + + + + + + + + + + +
        仪器样本号/条码号标本/项目上机时间等待时间
        +
        +
        + +
        +
        + 危急值未处理超时 + 共 0个标本 +
        +
        + + + + + + + + + + + +
        仪器样本号项目结果等待时间
        +
        +
        +
        +
        + +
        +
        ×
        +
        + + + + + \ No newline at end of file diff --git a/TAT/js/axios.min.js b/TAT/js/axios.min.js new file mode 100644 index 0000000..8378a04 --- /dev/null +++ b/TAT/js/axios.min.js @@ -0,0 +1,5 @@ +/*! Axios v1.16.0 Copyright (c) 2026 Matt Zabriskie and contributors */ +!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,t){this.v=e,this.k=t}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n3?(o=h===r)&&(s=i[(u=i[4])?5:(u=3,3)],i[4]=i[5]=e):i[0]<=p&&((o=n<2&&pr||r>h)&&(i[4]=n,i[5]=r,d.n=h,u=0))}if(o||n>1)return a;throw l=!0,r}return function(o,f,h){if(c>1)throw TypeError("Generator is already running");for(l&&1===f&&p(f,h),u=f,s=h;(t=u<2?e:s)||!l;){i||(u?u<3?(u>1&&(d.n=-1),p(u,s)):d.n=s:d.v=s);try{if(c=2,i){if(u||(o="next"),t=i[o]){if(!(t=t.call(i,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,u<2&&(u=0)}else 1===u&&(t=i.return)&&t.call(i),u<2&&(s=TypeError("The iterator does not provide a '"+o+"' method"),u=1);i=e}else if((t=(l=d.n<0)?s:n.call(r,d))!==a)break}catch(t){i=e,u=1,s=t}finally{c=1}}return{value:t,done:l}}}(n,o,i),!0),c}var a={};function u(){}function s(){}function c(){}t=Object.getPrototypeOf;var f=[][r]?t(t([][r]())):(g(t={},r,function(){return this}),t),l=c.prototype=u.prototype=Object.create(f);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,g(e,o,"GeneratorFunction")),e.prototype=Object.create(l),e}return s.prototype=c,g(l,"constructor",c),g(c,"constructor",s),s.displayName="GeneratorFunction",g(c,o,"GeneratorFunction"),g(l),g(l,o,"Generator"),g(l,r,function(){return this}),g(l,"toString",function(){return"[object Generator]"}),(m=function(){return{w:i,m:d}})()}function g(e,t,n,r){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}g=function(e,t,n,r){function i(t,n){g(e,t,function(e){return this._invoke(t,n,e)})}t?o?o(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(i("next",0),i("throw",1),i("return",2))},g(e,t,n,r)}function w(e){if(null!=e){var t=e["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],n=0;if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length))return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}throw new TypeError(typeof e+" is not iterable")}function O(e,t){return O=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},O(e,t)}function E(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,u=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(u.push(r.value),u.length!==t);s=!0);}catch(e){c=!0,o=e}finally{try{if(!s&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(e,t)||A(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function R(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||A(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function _(e){return _="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},_(e)}function A(e,n){if(e){if("string"==typeof e)return t(e,n);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}function T(e){return function(){return new j(e.apply(this,arguments))}}function j(t){var n,r;function o(n,r){try{var a=t[n](r),u=a.value,s=u instanceof e;Promise.resolve(s?u.v:u).then(function(e){if(s){var r="return"===n?"return":"next";if(!u.k||e.done)return o(r,e);e=t[r](e).value}i(a.done?"return":"normal",e)},function(e){o("throw",e)})}catch(e){i("throw",e)}}function i(e,t){switch(e){case"return":n.resolve({value:t,done:!0});break;case"throw":n.reject(t);break;default:n.resolve({value:t,done:!1})}(n=n.next)?o(n.key,n.arg):r=null}this._invoke=function(e,t){return new Promise(function(i,a){var u={key:e,arg:t,resolve:i,reject:a,next:null};r?r=r.next=u:(n=r=u,o(e,t))})},"function"!=typeof t.return&&(this.return=void 0)}function P(e){var t="function"==typeof Map?new Map:void 0;return P=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return function(e,t,n){if(y())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var o=new(e.bind.apply(e,r));return n&&O(o,n.prototype),o}(e,arguments,p(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),O(n,e)},P(e)}function k(e,t){return function(){return e.apply(t,arguments)}}j.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},j.prototype.next=function(e){return this._invoke("next",e)},j.prototype.throw=function(e){return this._invoke("throw",e)},j.prototype.return=function(e){return this._invoke("return",e)};var x,C=Object.prototype.toString,N=Object.getPrototypeOf,D=Symbol.iterator,U=Symbol.toStringTag,F=(x=Object.create(null),function(e){var t=C.call(e);return x[t]||(x[t]=t.slice(8,-1).toLowerCase())}),L=function(e){return e=e.toLowerCase(),function(t){return F(t)===e}},B=function(e){return function(t){return _(t)===e}},I=Array.isArray,q=B("undefined");function M(e){return null!==e&&!q(e)&&null!==e.constructor&&!q(e.constructor)&&J(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}var z=L("ArrayBuffer");var H=B("string"),J=B("function"),W=B("number"),K=function(e){return null!==e&&"object"===_(e)},V=function(e){if("object"!==F(e))return!1;var t=N(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||U in e||D in e)},X=L("Date"),G=L("File"),$=L("Blob"),Q=L("FileList");var Y="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},Z=void 0!==Y.FormData?Y.FormData:void 0,ee=L("URLSearchParams"),te=E(["ReadableStream","Request","Response","Headers"].map(L),4),ne=te[0],re=te[1],oe=te[2],ie=te[3];function ae(e,t){var n,r,o=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).allOwnKeys,i=void 0!==o&&o;if(null!=e)if("object"!==_(e)&&(e=[e]),I(e))for(n=0,r=e.length;n0;)if(t===(n=r[o]).toLowerCase())return n;return null}var se="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,ce=function(e){return!q(e)&&e!==se};var fe,le=(fe="undefined"!=typeof Uint8Array&&N(Uint8Array),function(e){return fe&&e instanceof fe}),de=L("HTMLFormElement"),pe=function(){var e=Object.prototype.hasOwnProperty;return function(t,n){return e.call(t,n)}}(),he=L("RegExp"),ye=function(e,t){var n=Object.getOwnPropertyDescriptors(e),r={};ae(n,function(n,o){var i;!1!==(i=t(n,o,e))&&(r[o]=i||n)}),Object.defineProperties(e,r)};var ve,be,me,ge,we=L("AsyncFunction"),Oe=(ve="function"==typeof setImmediate,be=J(se.postMessage),ve?setImmediate:be?(me="axios@".concat(Math.random()),ge=[],se.addEventListener("message",function(e){var t=e.source,n=e.data;t===se&&n===me&&ge.length&&ge.shift()()},!1),function(e){ge.push(e),se.postMessage(me,"*")}):function(e){return setTimeout(e)}),Ee="undefined"!=typeof queueMicrotask?queueMicrotask.bind(se):"undefined"!=typeof process&&process.nextTick||Oe,Re={isArray:I,isArrayBuffer:z,isBuffer:M,isFormData:function(e){if(!e)return!1;if(Z&&e instanceof Z)return!0;var t=N(e);if(!t||t===Object.prototype)return!1;if(!J(e.append))return!1;var n=F(e);return"formdata"===n||"object"===n&&J(e.toString)&&"[object FormData]"===e.toString()},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&z(e.buffer)},isString:H,isNumber:W,isBoolean:function(e){return!0===e||!1===e},isObject:K,isPlainObject:V,isEmptyObject:function(e){if(!K(e)||M(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(e){return!1}},isReadableStream:ne,isRequest:re,isResponse:oe,isHeaders:ie,isUndefined:q,isDate:X,isFile:G,isReactNativeBlob:function(e){return!(!e||void 0===e.uri)},isReactNative:function(e){return e&&void 0!==e.getParts},isBlob:$,isRegExp:he,isFunction:J,isStream:function(e){return K(e)&&J(e.pipe)},isURLSearchParams:ee,isTypedArray:le,isFileList:Q,forEach:ae,merge:function e(){for(var t=ce(this)&&this||{},n=t.caseless,r=t.skipUndefined,o={},i=function(t,i){if("__proto__"!==i&&"constructor"!==i&&"prototype"!==i){var a=n&&ue(o,i)||i,u=pe(o,a)?o[a]:void 0;V(u)&&V(t)?o[a]=e(u,t):V(t)?o[a]=e({},t):I(t)?o[a]=t.slice():r&&q(t)||(o[a]=t)}},a=arguments.length,u=new Array(a),s=0;s3&&void 0!==arguments[3]?arguments[3]:{}).allOwnKeys}),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,n,r){e.prototype=Object.create(t.prototype,r),Object.defineProperty(e.prototype,"constructor",{__proto__:null,value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{__proto__:null,value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:function(e,t,n,r){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],r&&!r(a,e,t)||u[a]||(t[a]=e[a],u[a]=!0);e=!1!==n&&N(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:F,kindOfTest:L,endsWith:function(e,t,n){e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;var r=e.indexOf(t,n);return-1!==r&&r===n},toArray:function(e){if(!e)return null;if(I(e))return e;var t=e.length;if(!W(t))return null;for(var n=new Array(t);t-- >0;)n[t]=e[t];return n},forEachEntry:function(e,t){for(var n,r=(e&&e[D]).call(e);(n=r.next())&&!n.done;){var o=n.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var n,r=[];null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:de,hasOwnProperty:pe,hasOwnProp:pe,reduceDescriptors:ye,freezeMethods:function(e){ye(e,function(t,n){if(J(e)&&["arguments","caller","callee"].includes(n))return!1;var r=e[n];J(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+n+"'")}))})},toObjectSet:function(e,t){var n={},r=function(e){e.forEach(function(e){n[e]=!0})};return I(e)?r(e):r(String(e).split(t)),n},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n})},noop:function(){},toFiniteNumber:function(e,t){return null!=e&&Number.isFinite(e=+e)?e:t},findKey:ue,global:se,isContextDefined:ce,isSpecCompliantForm:function(e){return!!(e&&J(e.append)&&"FormData"===e[U]&&e[D])},toJSONObject:function(e){var t=new Array(10),n=function(e,r){if(K(e)){if(t.indexOf(e)>=0)return;if(M(e))return e;if(!("toJSON"in e)){t[r]=e;var o=I(e)?[]:{};return ae(e,function(e,t){var i=n(e,r+1);!q(i)&&(o[t]=i)}),t[r]=void 0,o}}return e};return n(e,0)},isAsyncFn:we,isThenable:function(e){return e&&(K(e)||J(e))&&J(e.then)&&J(e.catch)},setImmediate:Oe,asap:Ee,isIterable:function(e){return null!=e&&J(e[D])}},Se=Re.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"]),_e=Symbol("internals"),Ae=/[^\x09\x20-\x7E\x80-\xFF]/g;function Te(e){return e&&String(e).trim().toLowerCase()}function je(e){return!1===e||null==e?e:Re.isArray(e)?e.map(je):function(e){for(var t=0,n=e.length;tt;){var o=e.charCodeAt(n-1);if(9!==o&&32!==o)break;n-=1}return 0===t&&n===e.length?e:e.slice(t,n)}(String(e).replace(Ae,""))}function Pe(e,t,n,r,o){return Re.isFunction(r)?r.call(this,t,n):(o&&(t=n),Re.isString(t)?Re.isString(r)?-1!==t.indexOf(r):Re.isRegExp(r)?r.test(t):void 0:void 0)}var ke=function(){return l(function e(t){c(this,e),t&&this.set(t)},[{key:"set",value:function(e,t,n){var r=this;function o(e,t,n){var o=Te(t);if(!o)throw new Error("header name must be a non-empty string");var i=Re.findKey(r,o);(!i||void 0===r[i]||!0===n||void 0===n&&!1!==r[i])&&(r[i||t]=je(e))}var i=function(e,t){return Re.forEach(e,function(e,n){return o(e,n,t)})};if(Re.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(Re.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i(function(e){var t,n,r,o={};return e&&e.split("\n").forEach(function(e){r=e.indexOf(":"),t=e.substring(0,r).trim().toLowerCase(),n=e.substring(r+1).trim(),!t||o[t]&&Se[t]||("set-cookie"===t?o[t]?o[t].push(n):o[t]=[n]:o[t]=o[t]?o[t]+", "+n:n)}),o}(e),t);else if(Re.isObject(e)&&Re.isIterable(e)){var a,u,s,c={},f=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=A(e))||t){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},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(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw i}}}}(e);try{for(f.s();!(s=f.n()).done;){var l=s.value;if(!Re.isArray(l))throw TypeError("Object iterator must return a key-value pair");c[u=l[0]]=(a=c[u])?Re.isArray(a)?[].concat(R(a),[l[1]]):[a,l[1]]:l[1]}}catch(e){f.e(e)}finally{f.f()}i(c,t)}else null!=e&&o(t,e,n);return this}},{key:"get",value:function(e,t){if(e=Te(e)){var n=Re.findKey(this,e);if(n){var r=this[n];if(!t)return r;if(!0===t)return function(e){for(var t,n=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=r.exec(e);)n[t[1]]=t[2];return n}(r);if(Re.isFunction(t))return t.call(this,r,n);if(Re.isRegExp(t))return t.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=Te(e)){var n=Re.findKey(this,e);return!(!n||void 0===this[n]||t&&!Pe(0,this[n],n,t))}return!1}},{key:"delete",value:function(e,t){var n=this,r=!1;function o(e){if(e=Te(e)){var o=Re.findKey(n,e);!o||t&&!Pe(0,n[o],o,t)||(delete n[o],r=!0)}}return Re.isArray(e)?e.forEach(o):o(e),r}},{key:"clear",value:function(e){for(var t=Object.keys(this),n=t.length,r=!1;n--;){var o=t[n];e&&!Pe(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}},{key:"normalize",value:function(e){var t=this,n={};return Re.forEach(this,function(r,o){var i=Re.findKey(n,o);if(i)return t[i]=je(r),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n})}(o):String(o).trim();a!==o&&delete t[o],t[a]=je(r),n[a]=!0}),this}},{key:"concat",value:function(){for(var e,t=arguments.length,n=new Array(t),r=0;r1?n-1:0),o=1;o0?xe(e,t):Re.toJSONObject(e);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:n,code:this.code,status:this.status}}}],[{key:"from",value:function(e,n,r,o,i,a){var u=new t(e.message,n||e.code,r,o,i);return u.cause=e,u.name=e.name,null!=e.status&&null==u.status&&(u.status=e.status),a&&Object.assign(u,a),u}}])}(P(Error));Ce.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE",Ce.ERR_BAD_OPTION="ERR_BAD_OPTION",Ce.ECONNABORTED="ECONNABORTED",Ce.ETIMEDOUT="ETIMEDOUT",Ce.ECONNREFUSED="ECONNREFUSED",Ce.ERR_NETWORK="ERR_NETWORK",Ce.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS",Ce.ERR_DEPRECATED="ERR_DEPRECATED",Ce.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE",Ce.ERR_BAD_REQUEST="ERR_BAD_REQUEST",Ce.ERR_CANCELED="ERR_CANCELED",Ce.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT",Ce.ERR_INVALID_URL="ERR_INVALID_URL",Ce.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";function Ne(e){return Re.isPlainObject(e)||Re.isArray(e)}function De(e){return Re.endsWith(e,"[]")?e.slice(0,-2):e}function Ue(e,t,n){return e?e.concat(t).map(function(e,t){return e=De(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}var Fe=Re.toFlatObject(Re,{},null,function(e){return/^is[A-Z]/.test(e)});function Le(e,t,n){if(!Re.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var r=(n=Re.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!Re.isUndefined(t[e])})).metaTokens,o=n.visitor||l,i=n.dots,a=n.indexes,u=n.Blob||"undefined"!=typeof Blob&&Blob,s=void 0===n.maxDepth?100:n.maxDepth,c=u&&Re.isSpecCompliantForm(t);if(!Re.isFunction(o))throw new TypeError("visitor must be a function");function f(e){if(null===e)return"";if(Re.isDate(e))return e.toISOString();if(Re.isBoolean(e))return e.toString();if(!c&&Re.isBlob(e))throw new Ce("Blob is not supported. Use a Buffer instead.");return Re.isArrayBuffer(e)||Re.isTypedArray(e)?c&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function l(e,n,o){var u=e;if(Re.isReactNative(t)&&Re.isReactNativeBlob(e))return t.append(Ue(o,n,i),f(e)),!1;if(e&&!o&&"object"===_(e))if(Re.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(Re.isArray(e)&&function(e){return Re.isArray(e)&&!e.some(Ne)}(e)||(Re.isFileList(e)||Re.endsWith(n,"[]"))&&(u=Re.toArray(e)))return n=De(n),u.forEach(function(e,r){!Re.isUndefined(e)&&null!==e&&t.append(!0===a?Ue([n],r,i):null===a?n:n+"[]",f(e))}),!1;return!!Ne(e)||(t.append(Ue(o,n,i),f(e)),!1)}var d=[],p=Object.assign(Fe,{defaultVisitor:l,convertValue:f,isVisitable:Ne});if(!Re.isObject(e))throw new TypeError("data must be an object");return function e(n,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(!Re.isUndefined(n)){if(i>s)throw new Ce("Object is too deeply nested ("+i+" levels). Max depth: "+s,Ce.ERR_FORM_DATA_DEPTH_EXCEEDED);if(-1!==d.indexOf(n))throw Error("Circular reference detected in "+r.join("."));d.push(n),Re.forEach(n,function(n,a){!0===(!(Re.isUndefined(n)||null===n)&&o.call(t,n,Re.isString(a)?a.trim():a,r,p))&&e(n,r?r.concat(a):[a],i+1)}),d.pop()}}(e),t}function Be(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(e).replace(/[!'()~]|%20/g,function(e){return t[e]})}function Ie(e,t){this._pairs=[],e&&Le(e,this,t)}var qe=Ie.prototype;function Me(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function ze(e,t,n){if(!t)return e;var r,o=n&&n.encode||Me,i=Re.isFunction(n)?{serialize:n}:n,a=i&&i.serialize;if(r=a?a(t,i):Re.isURLSearchParams(t)?t.toString():new Ie(t,i).toString(o)){var u=e.indexOf("#");-1!==u&&(e=e.slice(0,u)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e}qe.append=function(e,t){this._pairs.push([e,t])},qe.toString=function(e){var t=e?function(t){return e.call(this,t,Be)}:Be;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};var He=function(){return l(function e(){c(this,e),this.handlers=[]},[{key:"use",value:function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.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){Re.forEach(this.handlers,function(t){null!==t&&e(t)})}}])}(),Je={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},We={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Ie,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},Ke="undefined"!=typeof window&&"undefined"!=typeof document,Ve="object"===("undefined"==typeof navigator?"undefined":_(navigator))&&navigator||void 0,Xe=Ke&&(!Ve||["ReactNative","NativeScript","NS"].indexOf(Ve.product)<0),Ge="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,$e=Ke&&window.location.href||"http://localhost",Qe=b(b({},Object.freeze({__proto__:null,hasBrowserEnv:Ke,hasStandardBrowserEnv:Xe,hasStandardBrowserWebWorkerEnv:Ge,navigator:Ve,origin:$e})),We);function Ye(e){function t(e,n,r,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),u=o>=e.length;return i=!i&&Re.isArray(r)?r.length:i,u?(Re.hasOwnProp(r,i)?r[i]=Re.isArray(r[i])?r[i].concat(n):[r[i],n]:r[i]=n,!a):(r[i]&&Re.isObject(r[i])||(r[i]=[]),t(e,n,r[i],o)&&Re.isArray(r[i])&&(r[i]=function(e){var t,n,r={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=Re.isObject(e);if(i&&Re.isHTMLForm(e)&&(e=new FormData(e)),Re.isFormData(e))return o?JSON.stringify(Ye(e)):e;if(Re.isArrayBuffer(e)||Re.isBuffer(e)||Re.isStream(e)||Re.isFile(e)||Re.isBlob(e)||Re.isReadableStream(e))return e;if(Re.isArrayBufferView(e))return e.buffer;if(Re.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){var a=Ze(this,"formSerializer");if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Le(e,new Qe.classes.URLSearchParams,b({visitor:function(e,t,n,r){return Qe.isNode&&Re.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,a).toString();if((n=Re.isFileList(e))||r.indexOf("multipart/form-data")>-1){var u=Ze(this,"env"),s=u&&u.FormData;return Le(n?{"files[]":e}:e,s&&new s,a)}}return i||o?(t.setContentType("application/json",!1),function(e,t,n){if(Re.isString(e))try{return(t||JSON.parse)(e),Re.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=Ze(this,"transitional")||et.transitional,n=t&&t.forcedJSONParsing,r=Ze(this,"responseType"),o="json"===r;if(Re.isResponse(e)||Re.isReadableStream(e))return e;if(e&&Re.isString(e)&&(n&&!r||o)){var i=!(t&&t.silentJSONParsing)&&o;try{return JSON.parse(e,Ze(this,"parseReviver"))}catch(e){if(i){if("SyntaxError"===e.name)throw Ce.from(e,Ce.ERR_BAD_RESPONSE,this,null,Ze(this,"response"));throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Qe.classes.FormData,Blob:Qe.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};function tt(e,t){var n=this||et,r=t||n,o=ke.from(r.headers),i=r.data;return Re.forEach(e,function(e){i=e.call(n,i,o.normalize(),t?t.status:void 0)}),o.normalize(),i}function nt(e){return!(!e||!e.__CANCEL__)}Re.forEach(["delete","get","head","post","put","patch","query"],function(e){et.headers[e]={}});var rt=function(e){function t(e,n,r){var o;return c(this,t),(o=s(this,t,[null==e?"canceled":e,Ce.ERR_CANCELED,n,r])).name="CanceledError",o.__CANCEL__=!0,o}return h(t,e),l(t)}(Ce);function ot(e,t,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new Ce("Request failed with status code "+n.status,n.status>=400&&n.status<500?Ce.ERR_BAD_REQUEST:Ce.ERR_BAD_RESPONSE,n.config,n.request,n)):e(n)}var it=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3,r=0,o=function(e,t){e=e||10;var n,r=new Array(e),o=new Array(e),i=0,a=0;return t=void 0!==t?t:1e3,function(u){var s=Date.now(),c=o[a];n||(n=s),r[i]=u,o[i]=s;for(var f=a,l=0;f!==i;)l+=r[f++],f%=e;if((i=(i+1)%e)===a&&(a=(a+1)%e),!(s-n1&&void 0!==arguments[1]?arguments[1]:Date.now();o=i,n=null,r&&(clearTimeout(r),r=null),e.apply(void 0,R(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):(n=s,r||(r=setTimeout(function(){r=null,a(n)},i-t)))},function(){return n&&a(n)}]}(function(n){var i=n.loaded,a=n.lengthComputable?n.total:void 0,u=null!=a?Math.min(i,a):i,s=Math.max(0,u-r),c=o(s);r=Math.max(r,u);var f=d({loaded:u,total:a,progress:a?u/a:void 0,bytes:s,rate:c||void 0,estimated:c&&a?(a-u)/c:void 0,event:n,lengthComputable:null!=a},t?"download":"upload",!0);e(f)},n)},at=function(e,t){var n=null!=e;return[function(r){return t[0]({lengthComputable:n,total:e,loaded:r})},t[1]]},ut=function(e){return function(){for(var t=arguments.length,n=new Array(t),r=0;r=48&&u<=57||u>=65&&u<=70||u>=97&&u<=102)&&(s>=48&&s<=57||s>=65&&s<=70||s>=97&&s<=102)&&(o-=2,a+=2)}var c=0,f=i-1,l=function(e){return e>=2&&37===r.charCodeAt(e-2)&&51===r.charCodeAt(e-1)&&(68===r.charCodeAt(e)||100===r.charCodeAt(e))};f>=0&&(61===r.charCodeAt(f)?(c++,f--):l(f)&&(c++,f-=3)),1===c&&f>=0&&(61===r.charCodeAt(f)||l(f))&&c++;var d=3*Math.floor(o/4)-(c||0);return d>0?d:0}if("undefined"!=typeof Buffer&&"function"==typeof Buffer.byteLength)return Buffer.byteLength(r,"utf8");for(var p=0,h=0,y=r.length;h=55296&&v<=56319&&h+1=56320&&b<=57343?(p+=4,h++):p+=3}else p+=3}return p}var Et="1.16.0",Rt=Re.isFunction,St=function(e){try{for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r-1,x=Re.isNumber(P)&&P>-1,C=u||fetch,O=O?(O+"").toLowerCase():"text",N=vt([f,d&&d.toAbortSignal()],p),D=null,U=N&&N.unsubscribe&&function(){N.unsubscribe()},e.p=1,!k||"string"!=typeof r||!r.startsWith("data:")){e.n=2;break}if(!(Ot(r)>j)){e.n=2;break}throw new Ce("maxContentLength size of "+j+" exceeded",Ce.ERR_BAD_RESPONSE,t,D);case 2:if(!x||"get"===i||"head"===i){e.n=4;break}return e.n=3,R(S,a);case 3:if(!("number"==typeof(L=e.v)&&isFinite(L)&&L>P)){e.n=4;break}throw new Ce("Request body larger than maxBodyLength limit",Ce.ERR_BAD_REQUEST,t,D);case 4:if(!(ae=y&&v&&"get"!==i&&"head"!==i)){e.n=6;break}return e.n=5,R(S,a);case 5:ue=F=e.v,ae=0!==ue;case 6:if(!ae){e.n=7;break}B=new s(r,{method:"POST",body:a,duplex:"half"}),Re.isFormData(a)&&(I=B.headers.get("content-type"))&&S.setContentType(I),B.body&&(q=at(F,it(ut(y))),M=E(q,2),z=M[0],H=M[1],a=wt(B.body,65536,z,H));case 7:return Re.isString(A)||(A=A?"include":"omit"),J=l&&"credentials"in s.prototype,Re.isFormData(a)&&(W=S.getContentType())&&/^multipart\/form-data/i.test(W)&&!/boundary=/i.test(W)&&S.delete("content-type"),S.set("User-Agent","axios/"+Et,!1),K=b(b({},T),{},{signal:N,method:i.toUpperCase(),headers:S.normalize().toJSON(),body:a,duplex:"half",credentials:J?A:void 0}),D=l&&new s(r,K),e.n=8,l?C(D,T):C(r,K);case 8:if(V=e.v,!k){e.n=9;break}if(!(null!=(X=Re.toFiniteNumber(V.headers.get("content-length")))&&X>j)){e.n=9;break}throw new Ce("maxContentLength size of "+j+" exceeded",Ce.ERR_BAD_RESPONSE,t,D);case 9:return G=g&&("stream"===O||"response"===O),g&&V.body&&(h||k||G&&U)&&($={},["status","statusText","headers"].forEach(function(e){$[e]=V[e]}),Q=Re.toFiniteNumber(V.headers.get("content-length")),Y=h&&at(Q,it(ut(h),!0))||[],Z=E(Y,2),ee=Z[0],te=Z[1],ne=function(e){if(k&&e>j)throw new Ce("maxContentLength size of "+j+" exceeded",Ce.ERR_BAD_RESPONSE,t,D);ee&&ee(e)},V=new c(wt(V.body,65536,ne,function(){te&&te(),U&&U()}),$)),O=O||"text",e.n=10,w[Re.findKey(w,O)||"text"](V,t);case 10:if(re=e.v,!k||g||G){e.n=11;break}if(null!=re&&("number"==typeof re.byteLength?oe=re.byteLength:"number"==typeof re.size?oe=re.size:"string"==typeof re&&(oe="function"==typeof o?(new o).encode(re).byteLength:re.length)),!("number"==typeof oe&&oe>j)){e.n=11;break}throw new Ce("maxContentLength size of "+j+" exceeded",Ce.ERR_BAD_RESPONSE,t,D);case 11:return!G&&U&&U(),e.n=12,new Promise(function(e,n){ot(e,n,{data:re,headers:ke.from(V.headers),status:V.status,statusText:V.statusText,config:t,request:D})});case 12:return e.a(2,e.v);case 13:if(e.p=13,se=e.v,U&&U(),!(N&&N.aborted&&N.reason instanceof Ce)){e.n=14;break}throw(ie=N.reason).config=t,D&&(ie.request=D),se!==ie&&(ie.cause=se),ie;case 14:if(!se||"TypeError"!==se.name||!/Load failed|fetch/i.test(se.message)){e.n=15;break}throw Object.assign(new Ce("Network Error",Ce.ERR_NETWORK,t,D,se&&se.response),{cause:se.cause||se});case 15:throw Ce.from(se,se&&se.code,t,D,se&&se.response);case 16:return e.a(2)}},e,null,[[1,13]])}));return function(t){return e.apply(this,arguments)}}()},At=new Map,Tt=function(e){for(var t,n,r=e&&e.env||{},o=r.fetch,i=[r.Request,r.Response,o],a=i.length,u=At;a--;)t=i[a],void 0===(n=u.get(t))&&u.set(t,n=a?new Map:_t(r)),u=n;return n};Tt();var jt={http:null,xhr:yt,fetch:{get:Tt}};Re.forEach(jt,function(e,t){if(e){try{Object.defineProperty(e,"name",{__proto__:null,value:t})}catch(e){}Object.defineProperty(e,"adapterName",{__proto__:null,value:t})}});var Pt=function(e){return"- ".concat(e)},kt=function(e){return Re.isFunction(e)||null===e||!1===e};var xt={getAdapter:function(e,t){for(var n,r,o=(e=Re.isArray(e)?e:[e]).length,i={},a=0;a1?"since :\n"+s.map(Pt).join("\n"):" "+Pt(s[0]):"as no adapter specified";throw new Ce("There is no suitable adapter to dispatch the request "+c,"ERR_NOT_SUPPORT")}return r},adapters:jt};function Ct(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new rt(null,e)}function Nt(e){return Ct(e),e.headers=ke.from(e.headers),e.data=tt.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),xt.getAdapter(e.adapter||et.adapter,e)(e).then(function(t){Ct(e),e.response=t;try{t.data=tt.call(e,e.transformResponse,t)}finally{delete e.response}return t.headers=ke.from(t.headers),t},function(t){if(!nt(t)&&(Ct(e),t&&t.response)){e.response=t.response;try{t.response.data=tt.call(e,e.transformResponse,t.response)}finally{delete e.response}t.response.headers=ke.from(t.response.headers)}return Promise.reject(t)})}var Dt={};["object","boolean","number","function","string","symbol"].forEach(function(e,t){Dt[e]=function(n){return _(n)===e||"a"+(t<1?"n ":" ")+e}});var Ut={};Dt.transitional=function(e,t,n){function r(e,t){return"[Axios v"+Et+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,o,i){if(!1===e)throw new Ce(r(o," has been removed"+(t?" in "+t:"")),Ce.ERR_DEPRECATED);return t&&!Ut[o]&&(Ut[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,i)}},Dt.spelling=function(e){return function(t,n){return console.warn("".concat(n," is likely a misspelling of ").concat(e)),!0}};var Ft={assertOptions:function(e,t,n){if("object"!==_(e))throw new Ce("options must be an object",Ce.ERR_BAD_OPTION_VALUE);for(var r=Object.keys(e),o=r.length;o-- >0;){var i=r[o],a=Object.prototype.hasOwnProperty.call(t,i)?t[i]:void 0;if(a){var u=e[i],s=void 0===u||a(u,i,e);if(!0!==s)throw new Ce("option "+i+" must be "+s,Ce.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new Ce("Unknown option "+i,Ce.ERR_BAD_OPTION)}},validators:Dt},Lt=Ft.validators,Bt=function(){return l(function e(t){c(this,e),this.defaults=t||{},this.interceptors={request:new He,response:new He}},[{key:"request",value:(e=a(m().m(function e(t,n){var r,o,i,a,u,s;return m().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,this._request(t,n);case 1:return e.a(2,e.v);case 2:if(e.p=2,(s=e.v)instanceof Error){r={},Error.captureStackTrace?Error.captureStackTrace(r):r=new Error,o=function(){if(!r.stack)return"";var e=r.stack.indexOf("\n");return-1===e?"":r.stack.slice(e+1)}();try{s.stack?o&&(i=o.indexOf("\n"),a=-1===i?-1:o.indexOf("\n",i+1),u=-1===a?"":o.slice(a+1),String(s.stack).endsWith(u)||(s.stack+="\n"+o)):s.stack=o}catch(e){}}throw s;case 3:return e.a(2)}},e,this,[[0,2]])})),function(t,n){return e.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var n=t=dt(this.defaults,t),r=n.transitional,o=n.paramsSerializer,i=n.headers;void 0!==r&&Ft.assertOptions(r,{silentJSONParsing:Lt.transitional(Lt.boolean),forcedJSONParsing:Lt.transitional(Lt.boolean),clarifyTimeoutError:Lt.transitional(Lt.boolean),legacyInterceptorReqResOrdering:Lt.transitional(Lt.boolean)},!1),null!=o&&(Re.isFunction(o)?t.paramsSerializer={serialize:o}:Ft.assertOptions(o,{encode:Lt.function,serialize:Lt.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),Ft.assertOptions(t,{baseUrl:Lt.spelling("baseURL"),withXsrfToken:Lt.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&Re.merge(i.common,i[t.method]);i&&Re.forEach(["delete","get","head","post","put","patch","query","common"],function(e){delete i[e]}),t.headers=ke.concat(a,i);var u=[],s=!0;this.interceptors.request.forEach(function(e){if("function"!=typeof e.runWhen||!1!==e.runWhen(t)){s=s&&e.synchronous;var n=t.transitional||Je;n&&n.legacyInterceptorReqResOrdering?u.unshift(e.fulfilled,e.rejected):u.push(e.fulfilled,e.rejected)}});var c,f=[];this.interceptors.response.forEach(function(e){f.push(e.fulfilled,e.rejected)});var l,d=0;if(!s){var p=[Nt.bind(this),void 0];for(p.unshift.apply(p,u),p.push.apply(p,f),l=p.length,c=Promise.resolve(t);d0;)r._listeners[t](e);r._listeners=null}}),this.promise.then=function(e){var t,n=new Promise(function(e){r.subscribe(e),t=e}).then(e);return n.cancel=function(){r.unsubscribe(t)},n},t(function(e,t,o){r.reason||(r.reason=new rt(e,t,o),n(r.reason))})}return l(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,n=function(e){t.abort(e)};return this.subscribe(n),t.signal.unsubscribe=function(){return e.unsubscribe(n)},t.signal}}],[{key:"source",value:function(){var t;return{token:new e(function(e){t=e}),cancel:t}}}])}();var qt={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,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(qt).forEach(function(e){var t=E(e,2),n=t[0],r=t[1];qt[r]=n});var Mt=function e(t){var n=new Bt(t),r=k(Bt.prototype.request,n);return Re.extend(r,Bt.prototype,n,{allOwnKeys:!0}),Re.extend(r,n,null,{allOwnKeys:!0}),r.create=function(n){return e(dt(t,n))},r}(et);return Mt.Axios=Bt,Mt.CanceledError=rt,Mt.CancelToken=It,Mt.isCancel=nt,Mt.VERSION=Et,Mt.toFormData=Le,Mt.AxiosError=Ce,Mt.Cancel=Mt.CanceledError,Mt.all=function(e){return Promise.all(e)},Mt.spread=function(e){return function(t){return e.apply(null,t)}},Mt.isAxiosError=function(e){return Re.isObject(e)&&!0===e.isAxiosError},Mt.mergeConfig=dt,Mt.AxiosHeaders=ke,Mt.formToJSON=function(e){return Ye(Re.isHTMLForm(e)?new FormData(e):e)},Mt.getAdapter=xt.getAdapter,Mt.HttpStatusCode=qt,Mt.default=Mt,Mt}); +//# sourceMappingURL=axios.min.js.map diff --git a/TAT/js/dayjs.min.js b/TAT/js/dayjs.min.js new file mode 100644 index 0000000..61916d8 --- /dev/null +++ b/TAT/js/dayjs.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",c="month",f="quarter",h="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t) () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports); + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) { + key = keys[i]; + if (!__hasOwnProp.call(to, key) && key !== except) { + __defProp(to, key, { + get: ((k) => from[k]).bind(null, key), + enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable + }); + } + } + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { + value: mod, + enumerable: true + }) : target, mod)); + +//#endregion + +//#region ../../packages/utils/dom/aria.ts + const FOCUSABLE_ELEMENT_SELECTORS = `a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])`; + const isShadowRoot$1 = (e) => { + if (typeof ShadowRoot === "undefined") return false; + return e instanceof ShadowRoot; + }; + const isHTMLElement$1 = (e) => { + if (typeof Element === "undefined") return false; + return e instanceof Element; + }; + /** + * Determine if the testing element is visible on screen no matter if its on the viewport or not + */ + const isVisible = (element) => { + return getComputedStyle(element).position === "fixed" ? false : element.offsetParent !== null; + }; + const obtainAllFocusableElements$1 = (element) => { + return Array.from(element.querySelectorAll(FOCUSABLE_ELEMENT_SELECTORS)).filter((item) => isFocusable(item) && isVisible(item)); + }; + /** + * @desc Determine if target element is focusable + * @param element {HTMLElement} + * @returns {Boolean} true if it is focusable + */ + const isFocusable = (element) => { + if (element.tabIndex > 0 || element.tabIndex === 0 && element.getAttribute("tabIndex") !== null) return true; + if (element.tabIndex < 0 || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true") return false; + switch (element.nodeName) { + case "A": return !!element.href && element.rel !== "ignore"; + case "INPUT": return !(element.type === "hidden" || element.type === "file"); + case "BUTTON": + case "SELECT": + case "TEXTAREA": return true; + default: return false; + } + }; + /** + * Trigger an event + * mouseenter, mouseleave, mouseover, keyup, change, click, etc. + * @param {HTMLElement} elm + * @param {String} name + * @param {*} opts + */ + const triggerEvent = function(elm, name, ...opts) { + let eventName; + if (name.includes("mouse") || name.includes("click")) eventName = "MouseEvents"; + else if (name.includes("key")) eventName = "KeyboardEvent"; + else eventName = "HTMLEvents"; + const evt = document.createEvent(eventName); + evt.initEvent(name, ...opts); + elm.dispatchEvent(evt); + return elm; + }; + const isLeaf = (el) => !el.getAttribute("aria-owns"); + const getSibling = (el, distance, elClass) => { + const { parentNode } = el; + if (!parentNode) return null; + const siblings = parentNode.querySelectorAll(elClass); + return siblings[Array.prototype.indexOf.call(siblings, el) + distance] || null; + }; + const focusElement = (el, options) => { + if (!el || !el.focus) return; + let cleanup = false; + if (isHTMLElement$1(el) && !isFocusable(el) && !el.getAttribute("tabindex")) { + el.setAttribute("tabindex", "-1"); + cleanup = true; + } + el.focus(options); + if (isHTMLElement$1(el) && cleanup) el.removeAttribute("tabindex"); + }; + const focusNode = (el) => { + if (!el) return; + focusElement(el); + !isLeaf(el) && el.click(); + }; + +//#endregion +//#region ../../packages/constants/aria.ts + const EVENT_CODE = { + tab: "Tab", + enter: "Enter", + space: "Space", + left: "ArrowLeft", + up: "ArrowUp", + right: "ArrowRight", + down: "ArrowDown", + esc: "Escape", + delete: "Delete", + backspace: "Backspace", + numpadEnter: "NumpadEnter", + pageUp: "PageUp", + pageDown: "PageDown", + home: "Home", + end: "End" + }; + +//#endregion +//#region ../../packages/constants/date.ts + const datePickTypes = [ + "year", + "years", + "month", + "months", + "date", + "dates", + "week", + "datetime", + "datetimerange", + "daterange", + "monthrange", + "yearrange" + ]; + const WEEK_DAYS = [ + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + ]; + +//#endregion +//#region ../../packages/constants/event.ts + const UPDATE_MODEL_EVENT = "update:modelValue"; + const CHANGE_EVENT = "change"; + const INPUT_EVENT = "input"; + +//#endregion +//#region ../../packages/constants/key.ts + const INSTALLED_KEY = Symbol("INSTALLED_KEY"); + +//#endregion +//#region ../../packages/constants/size.ts + const componentSizes = [ + "", + "default", + "small", + "large" + ]; + const componentSizeMap = { + large: 40, + default: 32, + small: 24 + }; + +//#endregion +//#region ../../packages/constants/column-alignment.ts + const columnAlignment = [ + "left", + "center", + "right" + ]; + +//#endregion +//#region ../../packages/constants/form.ts + const MINIMUM_INPUT_WIDTH = 11; + const BORDER_HORIZONTAL_WIDTH = 2; + +//#endregion +//#region ../../node_modules/.pnpm/@vueuse+shared@12.0.0_typescript@5.5.4/node_modules/@vueuse/shared/index.mjs + function computedEager(fn, options) { + var _a; + const result = (0, vue.shallowRef)(); + (0, vue.watchEffect)(() => { + result.value = fn(); + }, { + ...options, + flush: (_a = options == null ? void 0 : options.flush) != null ? _a : "sync" + }); + return (0, vue.readonly)(result); + } + function tryOnScopeDispose(fn) { + if ((0, vue.getCurrentScope)()) { + (0, vue.onScopeDispose)(fn); + return true; + } + return false; + } + function toValue$1(r) { + return typeof r === "function" ? r() : (0, vue.unref)(r); + } + function toReactive(objectRef) { + if (!(0, vue.isRef)(objectRef)) return (0, vue.reactive)(objectRef); + return (0, vue.reactive)(new Proxy({}, { + get(_, p, receiver) { + return (0, vue.unref)(Reflect.get(objectRef.value, p, receiver)); + }, + set(_, p, value) { + if ((0, vue.isRef)(objectRef.value[p]) && !(0, vue.isRef)(value)) objectRef.value[p].value = value; + else objectRef.value[p] = value; + return true; + }, + deleteProperty(_, p) { + return Reflect.deleteProperty(objectRef.value, p); + }, + has(_, p) { + return Reflect.has(objectRef.value, p); + }, + ownKeys() { + return Object.keys(objectRef.value); + }, + getOwnPropertyDescriptor() { + return { + enumerable: true, + configurable: true + }; + } + })); + } + function reactiveComputed(fn) { + return toReactive((0, vue.computed)(fn)); + } + const isClient = typeof window !== "undefined" && typeof document !== "undefined"; + const isWorker = typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope; + const isDef = (val) => typeof val !== "undefined"; + const notNullish = (val) => val != null; + const toString$1 = Object.prototype.toString; + const isObject$2 = (val) => toString$1.call(val) === "[object Object]"; + const clamp$2 = (n, min, max) => Math.min(max, Math.max(min, n)); + const noop$1 = () => {}; + const isIOS = /* @__PURE__ */ getIsIOS(); + function getIsIOS() { + var _a, _b; + return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent)); + } + function createFilterWrapper(filter, fn) { + function wrapper(...args) { + return new Promise((resolve, reject) => { + Promise.resolve(filter(() => fn.apply(this, args), { + fn, + thisArg: this, + args + })).then(resolve).catch(reject); + }); + } + return wrapper; + } + function debounceFilter(ms, options = {}) { + let timer; + let maxTimer; + let lastRejector = noop$1; + const _clearTimeout = (timer2) => { + clearTimeout(timer2); + lastRejector(); + lastRejector = noop$1; + }; + const filter = (invoke) => { + const duration = toValue$1(ms); + const maxDuration = toValue$1(options.maxWait); + if (timer) _clearTimeout(timer); + if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) { + if (maxTimer) { + _clearTimeout(maxTimer); + maxTimer = null; + } + return Promise.resolve(invoke()); + } + return new Promise((resolve, reject) => { + lastRejector = options.rejectOnCancel ? reject : resolve; + if (maxDuration && !maxTimer) maxTimer = setTimeout(() => { + if (timer) _clearTimeout(timer); + maxTimer = null; + resolve(invoke()); + }, maxDuration); + timer = setTimeout(() => { + if (maxTimer) _clearTimeout(maxTimer); + maxTimer = null; + resolve(invoke()); + }, duration); + }); + }; + return filter; + } + function throttleFilter(...args) { + let lastExec = 0; + let timer; + let isLeading = true; + let lastRejector = noop$1; + let lastValue; + let ms; + let trailing; + let leading; + let rejectOnCancel; + if (!(0, vue.isRef)(args[0]) && typeof args[0] === "object") ({delay: ms, trailing = true, leading = true, rejectOnCancel = false} = args[0]); + else [ms, trailing = true, leading = true, rejectOnCancel = false] = args; + const clear = () => { + if (timer) { + clearTimeout(timer); + timer = void 0; + lastRejector(); + lastRejector = noop$1; + } + }; + const filter = (_invoke) => { + const duration = toValue$1(ms); + const elapsed = Date.now() - lastExec; + const invoke = () => { + return lastValue = _invoke(); + }; + clear(); + if (duration <= 0) { + lastExec = Date.now(); + return invoke(); + } + if (elapsed > duration && (leading || !isLeading)) { + lastExec = Date.now(); + invoke(); + } else if (trailing) lastValue = new Promise((resolve, reject) => { + lastRejector = rejectOnCancel ? reject : resolve; + timer = setTimeout(() => { + lastExec = Date.now(); + isLeading = true; + resolve(invoke()); + clear(); + }, Math.max(0, duration - elapsed)); + }); + if (!leading && !timer) timer = setTimeout(() => isLeading = true, duration); + isLeading = false; + return lastValue; + }; + return filter; + } + function cacheStringFunction$1(fn) { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + return cache[str] || (cache[str] = fn(str)); + }; + } + const hyphenateRE$1 = /\B([A-Z])/g; + const hyphenate$1 = cacheStringFunction$1((str) => str.replace(hyphenateRE$1, "-$1").toLowerCase()); + const camelizeRE$1 = /-(\w)/g; + const camelize$1 = cacheStringFunction$1((str) => { + return str.replace(camelizeRE$1, (_, c) => c ? c.toUpperCase() : ""); + }); + function getLifeCycleTarget(target) { + return target || (0, vue.getCurrentInstance)(); + } + function useDebounceFn(fn, ms = 200, options = {}) { + return createFilterWrapper(debounceFilter(ms, options), fn); + } + function refDebounced(value, ms = 200, options = {}) { + const debounced = (0, vue.ref)(value.value); + const updater = useDebounceFn(() => { + debounced.value = value.value; + }, ms, options); + (0, vue.watch)(value, () => updater()); + return debounced; + } + function useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) { + return createFilterWrapper(throttleFilter(ms, trailing, leading, rejectOnCancel), fn); + } + function tryOnMounted(fn, sync = true, target) { + if (getLifeCycleTarget()) (0, vue.onMounted)(fn, target); + else if (sync) fn(); + else (0, vue.nextTick)(fn); + } + function useTimeoutFn(cb, interval, options = {}) { + const { immediate = true } = options; + const isPending = (0, vue.ref)(false); + let timer = null; + function clear() { + if (timer) { + clearTimeout(timer); + timer = null; + } + } + function stop() { + isPending.value = false; + clear(); + } + function start(...args) { + clear(); + isPending.value = true; + timer = setTimeout(() => { + isPending.value = false; + timer = null; + cb(...args); + }, toValue$1(interval)); + } + if (immediate) { + isPending.value = true; + if (isClient) start(); + } + tryOnScopeDispose(stop); + return { + isPending: (0, vue.readonly)(isPending), + start, + stop + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/@vueuse+core@12.0.0_typescript@5.5.4/node_modules/@vueuse/core/index.mjs + const defaultWindow = isClient ? window : void 0; + const defaultDocument = isClient ? window.document : void 0; + const defaultNavigator = isClient ? window.navigator : void 0; + const defaultLocation = isClient ? window.location : void 0; + function unrefElement(elRef) { + var _a; + const plain = toValue$1(elRef); + return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain; + } + function useEventListener(...args) { + let target; + let events; + let listeners; + let options; + if (typeof args[0] === "string" || Array.isArray(args[0])) { + [events, listeners, options] = args; + target = defaultWindow; + } else [target, events, listeners, options] = args; + if (!target) return noop$1; + if (!Array.isArray(events)) events = [events]; + if (!Array.isArray(listeners)) listeners = [listeners]; + const cleanups = []; + const cleanup = () => { + cleanups.forEach((fn) => fn()); + cleanups.length = 0; + }; + const register = (el, event, listener, options2) => { + el.addEventListener(event, listener, options2); + return () => el.removeEventListener(event, listener, options2); + }; + const stopWatch = (0, vue.watch)(() => [unrefElement(target), toValue$1(options)], ([el, options2]) => { + cleanup(); + if (!el) return; + const optionsClone = isObject$2(options2) ? { ...options2 } : options2; + cleanups.push(...events.flatMap((event) => { + return listeners.map((listener) => register(el, event, listener, optionsClone)); + })); + }, { + immediate: true, + flush: "post" + }); + const stop = () => { + stopWatch(); + cleanup(); + }; + tryOnScopeDispose(stop); + return stop; + } + let _iOSWorkaround = false; + function onClickOutside(target, handler, options = {}) { + const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options; + if (!window) return noop$1; + if (isIOS && !_iOSWorkaround) { + _iOSWorkaround = true; + Array.from(window.document.body.children).forEach((el) => el.addEventListener("click", noop$1)); + window.document.documentElement.addEventListener("click", noop$1); + } + let shouldListen = true; + const shouldIgnore = (event) => { + return toValue$1(ignore).some((target2) => { + if (typeof target2 === "string") return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el)); + else { + const el = unrefElement(target2); + return el && (event.target === el || event.composedPath().includes(el)); + } + }); + }; + function hasMultipleRoots(target2) { + const vm = toValue$1(target2); + return vm && vm.$.subTree.shapeFlag === 16; + } + function checkMultipleRoots(target2, event) { + const vm = toValue$1(target2); + const children = vm.$.subTree && vm.$.subTree.children; + if (children == null || !Array.isArray(children)) return false; + return children.some((child) => child.el === event.target || event.composedPath().includes(child.el)); + } + const listener = (event) => { + const el = unrefElement(target); + if (event.target == null) return; + if (!(el instanceof Element) && hasMultipleRoots(target) && checkMultipleRoots(target, event)) return; + if (!el || el === event.target || event.composedPath().includes(el)) return; + if (event.detail === 0) shouldListen = !shouldIgnore(event); + if (!shouldListen) { + shouldListen = true; + return; + } + handler(event); + }; + let isProcessingClick = false; + const cleanup = [ + useEventListener(window, "click", (event) => { + if (!isProcessingClick) { + isProcessingClick = true; + setTimeout(() => { + isProcessingClick = false; + }, 0); + listener(event); + } + }, { + passive: true, + capture + }), + useEventListener(window, "pointerdown", (e) => { + const el = unrefElement(target); + shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el)); + }, { passive: true }), + detectIframe && useEventListener(window, "blur", (event) => { + setTimeout(() => { + var _a; + const el = unrefElement(target); + if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === "IFRAME" && !(el == null ? void 0 : el.contains(window.document.activeElement))) handler(event); + }, 0); + }) + ].filter(Boolean); + const stop = () => cleanup.forEach((fn) => fn()); + return stop; + } + function useMounted() { + const isMounted = (0, vue.ref)(false); + const instance = (0, vue.getCurrentInstance)(); + if (instance) (0, vue.onMounted)(() => { + isMounted.value = true; + }, instance); + return isMounted; + } + function useSupported(callback) { + const isMounted = useMounted(); + return (0, vue.computed)(() => { + isMounted.value; + return Boolean(callback()); + }); + } + function useMutationObserver(target, callback, options = {}) { + const { window = defaultWindow, ...mutationOptions } = options; + let observer; + const isSupported = useSupported(() => window && "MutationObserver" in window); + const cleanup = () => { + if (observer) { + observer.disconnect(); + observer = void 0; + } + }; + const targets = (0, vue.computed)(() => { + const value = toValue$1(target); + const items = (Array.isArray(value) ? value : [value]).map(unrefElement).filter(notNullish); + return new Set(items); + }); + const stopWatch = (0, vue.watch)(() => targets.value, (targets2) => { + cleanup(); + if (isSupported.value && targets2.size) { + observer = new MutationObserver(callback); + targets2.forEach((el) => observer.observe(el, mutationOptions)); + } + }, { + immediate: true, + flush: "post" + }); + const takeRecords = () => { + return observer == null ? void 0 : observer.takeRecords(); + }; + const stop = () => { + stopWatch(); + cleanup(); + }; + tryOnScopeDispose(stop); + return { + isSupported, + stop, + takeRecords + }; + } + function useActiveElement(options = {}) { + var _a; + const { window = defaultWindow, deep = true, triggerOnRemoval = false } = options; + const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document; + const getDeepActiveElement = () => { + var _a2; + let element = document == null ? void 0 : document.activeElement; + if (deep) while (element == null ? void 0 : element.shadowRoot) element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement; + return element; + }; + const activeElement = (0, vue.ref)(); + const trigger = () => { + activeElement.value = getDeepActiveElement(); + }; + if (window) { + useEventListener(window, "blur", (event) => { + if (event.relatedTarget !== null) return; + trigger(); + }, true); + useEventListener(window, "focus", trigger, true); + } + if (triggerOnRemoval) useMutationObserver(document, (mutations) => { + mutations.filter((m) => m.removedNodes.length).map((n) => Array.from(n.removedNodes)).flat().forEach((node) => { + if (node === activeElement.value) trigger(); + }); + }, { + childList: true, + subtree: true + }); + trigger(); + return activeElement; + } + function useMediaQuery(query, options = {}) { + const { window = defaultWindow } = options; + const isSupported = useSupported(() => window && "matchMedia" in window && typeof window.matchMedia === "function"); + let mediaQuery; + const matches = (0, vue.ref)(false); + const handler = (event) => { + matches.value = event.matches; + }; + const cleanup = () => { + if (!mediaQuery) return; + if ("removeEventListener" in mediaQuery) mediaQuery.removeEventListener("change", handler); + else mediaQuery.removeListener(handler); + }; + const stopWatch = (0, vue.watchEffect)(() => { + if (!isSupported.value) return; + cleanup(); + mediaQuery = window.matchMedia(toValue$1(query)); + if ("addEventListener" in mediaQuery) mediaQuery.addEventListener("change", handler); + else mediaQuery.addListener(handler); + matches.value = mediaQuery.matches; + }); + tryOnScopeDispose(() => { + stopWatch(); + cleanup(); + mediaQuery = void 0; + }); + return matches; + } + function cloneFnJSON(source) { + return JSON.parse(JSON.stringify(source)); + } + function useCssVar(prop, target, options = {}) { + const { window = defaultWindow, initialValue, observe = false } = options; + const variable = (0, vue.ref)(initialValue); + const elRef = (0, vue.computed)(() => { + var _a; + return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement); + }); + function updateCssVar() { + var _a; + const key = toValue$1(prop); + const el = toValue$1(elRef); + if (el && window && key) variable.value = ((_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim()) || initialValue; + } + if (observe) useMutationObserver(elRef, updateCssVar, { + attributeFilter: ["style", "class"], + window + }); + (0, vue.watch)([elRef, () => toValue$1(prop)], (_, old) => { + if (old[0] && old[1]) old[0].style.removeProperty(old[1]); + updateCssVar(); + }, { immediate: true }); + (0, vue.watch)(variable, (val) => { + var _a; + const raw_prop = toValue$1(prop); + if (((_a = elRef.value) == null ? void 0 : _a.style) && raw_prop) if (val == null) elRef.value.style.removeProperty(raw_prop); + else elRef.value.style.setProperty(raw_prop, val); + }); + return variable; + } + function useDocumentVisibility(options = {}) { + const { document = defaultDocument } = options; + if (!document) return (0, vue.ref)("visible"); + const visibility = (0, vue.ref)(document.visibilityState); + useEventListener(document, "visibilitychange", () => { + visibility.value = document.visibilityState; + }); + return visibility; + } + function useResizeObserver(target, callback, options = {}) { + const { window = defaultWindow, ...observerOptions } = options; + let observer; + const isSupported = useSupported(() => window && "ResizeObserver" in window); + const cleanup = () => { + if (observer) { + observer.disconnect(); + observer = void 0; + } + }; + const stopWatch = (0, vue.watch)((0, vue.computed)(() => { + const _targets = toValue$1(target); + return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)]; + }), (els) => { + cleanup(); + if (isSupported.value && window) { + observer = new ResizeObserver(callback); + for (const _el of els) if (_el) observer.observe(_el, observerOptions); + } + }, { + immediate: true, + flush: "post" + }); + const stop = () => { + cleanup(); + stopWatch(); + }; + tryOnScopeDispose(stop); + return { + isSupported, + stop + }; + } + function useElementBounding(target, options = {}) { + const { reset = true, windowResize = true, windowScroll = true, immediate = true, updateTiming = "sync" } = options; + const height = (0, vue.ref)(0); + const bottom = (0, vue.ref)(0); + const left = (0, vue.ref)(0); + const right = (0, vue.ref)(0); + const top = (0, vue.ref)(0); + const width = (0, vue.ref)(0); + const x = (0, vue.ref)(0); + const y = (0, vue.ref)(0); + function recalculate() { + const el = unrefElement(target); + if (!el) { + if (reset) { + height.value = 0; + bottom.value = 0; + left.value = 0; + right.value = 0; + top.value = 0; + width.value = 0; + x.value = 0; + y.value = 0; + } + return; + } + const rect = el.getBoundingClientRect(); + height.value = rect.height; + bottom.value = rect.bottom; + left.value = rect.left; + right.value = rect.right; + top.value = rect.top; + width.value = rect.width; + x.value = rect.x; + y.value = rect.y; + } + function update() { + if (updateTiming === "sync") recalculate(); + else if (updateTiming === "next-frame") requestAnimationFrame(() => recalculate()); + } + useResizeObserver(target, update); + (0, vue.watch)(() => unrefElement(target), (ele) => !ele && update()); + useMutationObserver(target, update, { attributeFilter: ["style", "class"] }); + if (windowScroll) useEventListener("scroll", update, { + capture: true, + passive: true + }); + if (windowResize) useEventListener("resize", update, { passive: true }); + tryOnMounted(() => { + if (immediate) update(); + }); + return { + height, + bottom, + left, + right, + top, + width, + x, + y, + update + }; + } + function useElementSize(target, initialSize = { + width: 0, + height: 0 + }, options = {}) { + const { window = defaultWindow, box = "content-box" } = options; + const isSVG = (0, vue.computed)(() => { + var _a, _b; + return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes("svg"); + }); + const width = (0, vue.ref)(initialSize.width); + const height = (0, vue.ref)(initialSize.height); + const { stop: stop1 } = useResizeObserver(target, ([entry]) => { + const boxSize = box === "border-box" ? entry.borderBoxSize : box === "content-box" ? entry.contentBoxSize : entry.devicePixelContentBoxSize; + if (window && isSVG.value) { + const $elem = unrefElement(target); + if ($elem) { + const rect = $elem.getBoundingClientRect(); + width.value = rect.width; + height.value = rect.height; + } + } else if (boxSize) { + const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize]; + width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0); + height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0); + } else { + width.value = entry.contentRect.width; + height.value = entry.contentRect.height; + } + }, options); + tryOnMounted(() => { + const ele = unrefElement(target); + if (ele) { + width.value = "offsetWidth" in ele ? ele.offsetWidth : initialSize.width; + height.value = "offsetHeight" in ele ? ele.offsetHeight : initialSize.height; + } + }); + const stop2 = (0, vue.watch)(() => unrefElement(target), (ele) => { + width.value = ele ? initialSize.width : 0; + height.value = ele ? initialSize.height : 0; + }); + function stop() { + stop1(); + stop2(); + } + return { + width, + height, + stop + }; + } + function useIntersectionObserver(target, callback, options = {}) { + const { root, rootMargin = "0px", threshold = 0, window = defaultWindow, immediate = true } = options; + const isSupported = useSupported(() => window && "IntersectionObserver" in window); + const targets = (0, vue.computed)(() => { + const _target = toValue$1(target); + return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish); + }); + let cleanup = noop$1; + const isActive = (0, vue.ref)(immediate); + const stopWatch = isSupported.value ? (0, vue.watch)(() => [ + targets.value, + unrefElement(root), + isActive.value + ], ([targets2, root2]) => { + cleanup(); + if (!isActive.value) return; + if (!targets2.length) return; + const observer = new IntersectionObserver(callback, { + root: unrefElement(root2), + rootMargin, + threshold + }); + targets2.forEach((el) => el && observer.observe(el)); + cleanup = () => { + observer.disconnect(); + cleanup = noop$1; + }; + }, { + immediate, + flush: "post" + }) : noop$1; + const stop = () => { + cleanup(); + stopWatch(); + isActive.value = false; + }; + tryOnScopeDispose(stop); + return { + isSupported, + isActive, + pause() { + cleanup(); + isActive.value = false; + }, + resume() { + isActive.value = true; + }, + stop + }; + } + const DEFAULT_UNITS = [ + { + max: 6e4, + value: 1e3, + name: "second" + }, + { + max: 276e4, + value: 6e4, + name: "minute" + }, + { + max: 72e6, + value: 36e5, + name: "hour" + }, + { + max: 5184e5, + value: 864e5, + name: "day" + }, + { + max: 24192e5, + value: 6048e5, + name: "week" + }, + { + max: 28512e6, + value: 2592e6, + name: "month" + }, + { + max: Number.POSITIVE_INFINITY, + value: 31536e6, + name: "year" + } + ]; + function useVModel(props, key, emit, options = {}) { + var _a, _b, _c; + const { clone = false, passive = false, eventName, deep = false, defaultValue, shouldEmit } = options; + const vm = (0, vue.getCurrentInstance)(); + const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy)); + let event = eventName; + if (!key) key = "modelValue"; + event = event || `update:${key.toString()}`; + const cloneFn = (val) => !clone ? val : typeof clone === "function" ? clone(val) : cloneFnJSON(val); + const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue; + const triggerEmit = (value) => { + if (shouldEmit) { + if (shouldEmit(value)) _emit(event, value); + } else _emit(event, value); + }; + if (passive) { + const proxy = (0, vue.ref)(getValue()); + let isUpdating = false; + (0, vue.watch)(() => props[key], (v) => { + if (!isUpdating) { + isUpdating = true; + proxy.value = cloneFn(v); + (0, vue.nextTick)(() => isUpdating = false); + } + }); + (0, vue.watch)(proxy, (v) => { + if (!isUpdating && (v !== props[key] || deep)) triggerEmit(v); + }, { deep }); + return proxy; + } else return (0, vue.computed)({ + get() { + return getValue(); + }, + set(value) { + triggerEmit(value); + } + }); + } + function useWindowFocus(options = {}) { + const { window = defaultWindow } = options; + if (!window) return (0, vue.ref)(false); + const focused = (0, vue.ref)(window.document.hasFocus()); + useEventListener(window, "blur", () => { + focused.value = false; + }); + useEventListener(window, "focus", () => { + focused.value = true; + }); + return focused; + } + function useWindowSize(options = {}) { + const { window = defaultWindow, initialWidth = Number.POSITIVE_INFINITY, initialHeight = Number.POSITIVE_INFINITY, listenOrientation = true, includeScrollbar = true, type = "inner" } = options; + const width = (0, vue.ref)(initialWidth); + const height = (0, vue.ref)(initialHeight); + const update = () => { + if (window) if (type === "outer") { + width.value = window.outerWidth; + height.value = window.outerHeight; + } else if (includeScrollbar) { + width.value = window.innerWidth; + height.value = window.innerHeight; + } else { + width.value = window.document.documentElement.clientWidth; + height.value = window.document.documentElement.clientHeight; + } + }; + update(); + tryOnMounted(update); + useEventListener("resize", update, { passive: true }); + if (listenOrientation) (0, vue.watch)(useMediaQuery("(orientation: portrait)"), () => update()); + return { + width, + height + }; + } + +//#endregion +//#region ../../packages/utils/browser.ts + const isFirefox = () => isClient && /firefox/i.test(window.navigator.userAgent); + const isAndroid = () => isClient && /android/i.test(window.navigator.userAgent); + +//#endregion +//#region ../../packages/utils/dom/event.ts + const composeEventHandlers = (theirsHandler, oursHandler, { checkForDefaultPrevented = true } = {}) => { + const handleEvent = (event) => { + const shouldPrevent = theirsHandler?.(event); + if (checkForDefaultPrevented === false || !shouldPrevent) return oursHandler?.(event); + }; + return handleEvent; + }; + const whenMouse = (handler) => { + return (e) => e.pointerType === "mouse" ? handler(e) : void 0; + }; + const getEventCode = (event) => { + if (event.code && event.code !== "Unidentified") return event.code; + const key = getEventKey(event); + if (key) { + if (Object.values(EVENT_CODE).includes(key)) return key; + switch (key) { + case " ": return EVENT_CODE.space; + default: return ""; + } + } + return ""; + }; + const getEventKey = (event) => { + let key = event.key && event.key !== "Unidentified" ? event.key : ""; + if (!key && event.type === "keyup" && isAndroid()) { + const target = event.target; + key = target.value.charAt(target.selectionStart - 1); + } + return key; + }; + +//#endregion +//#region ../../packages/utils/dom/position.ts + const getOffsetTop = (el) => { + let offset = 0; + let parent = el; + while (parent) { + offset += parent.offsetTop; + parent = parent.offsetParent; + } + return offset; + }; + const getOffsetTopDistance = (el, containerEl) => { + return Math.abs(getOffsetTop(el) - getOffsetTop(containerEl)); + }; + const getClientXY = (event) => { + let clientX; + let clientY; + if (event.type === "touchend") { + clientY = event.changedTouches[0].clientY; + clientX = event.changedTouches[0].clientX; + } else if (event.type.startsWith("touch")) { + clientY = event.touches[0].clientY; + clientX = event.touches[0].clientX; + } else { + clientY = event.clientY; + clientX = event.clientX; + } + return { + clientX, + clientY + }; + }; + +//#endregion +//#region ../../packages/utils/easings.ts + function easeInOutCubic(t, b, c, d) { + const cc = c - b; + t /= d / 2; + if (t < 1) return cc / 2 * t * t * t + b; + return cc / 2 * ((t -= 2) * t * t + 2) + b; + } + +//#endregion +//#region ../../node_modules/.pnpm/@vue+shared@3.5.25/node_modules/@vue/shared/dist/shared.esm-bundler.js +/** + * @vue/shared v3.5.25 + * (c) 2018-present Yuxi (Evan) You and Vue contributors + * @license MIT + **/ + /* @__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 NOOP = () => {}; + const hasOwnProperty$14 = Object.prototype.hasOwnProperty; + const hasOwn = (val, key) => hasOwnProperty$14.call(val, key); + const isArray$1 = Array.isArray; + const isDate = (val) => toTypeString(val) === "[object Date]"; + const isFunction$1 = (val) => typeof val === "function"; + const isString = (val) => typeof val === "string"; + const isObject$1 = (val) => val !== null && typeof val === "object"; + const isPromise = (val) => { + return (isObject$1(val) || isFunction$1(val)) && isFunction$1(val.then) && isFunction$1(val.catch); + }; + const objectToString$1 = Object.prototype.toString; + const toTypeString = (value) => objectToString$1.call(value); + const isPlainObject$1 = (val) => toTypeString(val) === "[object Object]"; + const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return ((str) => { + return cache[str] || (cache[str] = fn(str)); + }); + }; + const camelizeRE = /-\w/g; + const camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (c) => c.slice(1).toUpperCase()); + }); + const hyphenateRE = /\B([A-Z])/g; + const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase()); + const capitalize$1 = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); + }); + const toHandlerKey = cacheStringFunction((str) => { + return str ? `on${capitalize$1(str)}` : ``; + }); + const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; + const isBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_freeGlobal.js +/** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof global == "object" && global && global.Object === Object && global; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_root.js +/** Detect free variable `self`. */ + var freeSelf = typeof self == "object" && self && self.Object === Object && self; + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function("return this")(); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Symbol.js +/** Built-in value references. */ + var Symbol$1 = root.Symbol; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getRawTag.js +/** Used for built-in method references. */ + var objectProto$4 = Object.prototype; + /** Used to check objects for own properties. */ + var hasOwnProperty$13 = objectProto$4.hasOwnProperty; + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString$1 = objectProto$4.toString; + /** Built-in value references. */ + var symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : void 0; + /** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ + function getRawTag(value) { + var isOwn = hasOwnProperty$13.call(value, symToStringTag$1), tag = value[symToStringTag$1]; + try { + value[symToStringTag$1] = void 0; + var unmasked = true; + } catch (e) {} + var result = nativeObjectToString$1.call(value); + if (unmasked) if (isOwn) value[symToStringTag$1] = tag; + else delete value[symToStringTag$1]; + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_objectToString.js +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString = Object.prototype.toString; + /** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ + function objectToString(value) { + return nativeObjectToString.call(value); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGetTag.js +/** `Object#toString` result references. */ + var nullTag = "[object Null]", undefinedTag = "[object Undefined]"; + /** Built-in value references. */ + var symToStringTag = Symbol$1 ? Symbol$1.toStringTag : void 0; + /** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag(value) { + if (value == null) return value === void 0 ? undefinedTag : nullTag; + return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isObjectLike.js +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return value != null && typeof value == "object"; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isSymbol.js +/** `Object#toString` result references. */ + var symbolTag$3 = "[object Symbol]"; + /** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ + function isSymbol(value) { + return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag$3; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayMap.js +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function arrayMap(array, iteratee) { + var index = -1, length = array == null ? 0 : array.length, result = Array(length); + while (++index < length) result[index] = iteratee(array[index], index, array); + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isArray.js +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray = Array.isArray; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseToString.js +/** Used as references for various `Number` constants. */ + var INFINITY$3 = Infinity; + /** Used to convert symbols to primitives and strings. */ + var symbolProto$2 = Symbol$1 ? Symbol$1.prototype : void 0, symbolToString = symbolProto$2 ? symbolProto$2.toString : void 0; + /** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + function baseToString(value) { + if (typeof value == "string") return value; + if (isArray(value)) return arrayMap(value, baseToString) + ""; + if (isSymbol(value)) return symbolToString ? symbolToString.call(value) : ""; + var result = value + ""; + return result == "0" && 1 / value == -INFINITY$3 ? "-0" : result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_trimmedEndIndex.js +/** Used to match a single whitespace character. */ + var reWhitespace = /\s/; + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the last non-whitespace character. + */ + function trimmedEndIndex(string) { + var index = string.length; + while (index-- && reWhitespace.test(string.charAt(index))); + return index; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseTrim.js +/** Used to match leading whitespace. */ + var reTrimStart = /^\s+/; + /** + * The base implementation of `_.trim`. + * + * @private + * @param {string} string The string to trim. + * @returns {string} Returns the trimmed string. + */ + function baseTrim(string) { + return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isObject.js +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ + function isObject(value) { + var type = typeof value; + return value != null && (type == "object" || type == "function"); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toNumber.js +/** Used as references for various `Number` constants. */ + var NAN = NaN; + /** Used to detect bad signed hexadecimal string values. */ + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + /** Used to detect binary string values. */ + var reIsBinary = /^0b[01]+$/i; + /** Used to detect octal string values. */ + var reIsOctal = /^0o[0-7]+$/i; + /** Built-in method references without a dependency on `root`. */ + var freeParseInt = parseInt; + /** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ + function toNumber(value) { + if (typeof value == "number") return value; + if (isSymbol(value)) return NAN; + if (isObject(value)) { + var other = typeof value.valueOf == "function" ? value.valueOf() : value; + value = isObject(other) ? other + "" : other; + } + if (typeof value != "string") return value === 0 ? value : +value; + value = baseTrim(value); + var isBinary = reIsBinary.test(value); + return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toFinite.js +/** Used as references for various `Number` constants. */ + var INFINITY$2 = Infinity, MAX_INTEGER = 17976931348623157e292; + /** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ + function toFinite(value) { + if (!value) return value === 0 ? value : 0; + value = toNumber(value); + if (value === INFINITY$2 || value === -INFINITY$2) return (value < 0 ? -1 : 1) * MAX_INTEGER; + return value === value ? value : 0; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toInteger.js +/** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ + function toInteger(value) { + var result = toFinite(value), remainder = result % 1; + return result === result ? remainder ? result - remainder : result : 0; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/identity.js +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ + function identity(value) { + return value; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isFunction.js +/** `Object#toString` result references. */ + var asyncTag = "[object AsyncFunction]", funcTag$2 = "[object Function]", genTag$1 = "[object GeneratorFunction]", proxyTag = "[object Proxy]"; + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + function isFunction(value) { + if (!isObject(value)) return false; + var tag = baseGetTag(value); + return tag == funcTag$2 || tag == genTag$1 || tag == asyncTag || tag == proxyTag; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_coreJsData.js +/** Used to detect overreaching core-js shims. */ + var coreJsData = root["__core-js_shared__"]; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isMasked.js +/** Used to detect methods masquerading as native. */ + var maskSrcKey = function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); + return uid ? "Symbol(src)_1." + uid : ""; + }(); + /** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ + function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_toSource.js +/** Used to resolve the decompiled source of functions. */ + var funcToString$2 = Function.prototype.toString; + /** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ + function toSource(func) { + if (func != null) { + try { + return funcToString$2.call(func); + } catch (e) {} + try { + return func + ""; + } catch (e) {} + } + return ""; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsNative.js +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + /** Used to detect host constructors (Safari). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; + /** Used for built-in method references. */ + var funcProto$1 = Function.prototype, objectProto$3 = Object.prototype; + /** Used to resolve the decompiled source of functions. */ + var funcToString$1 = funcProto$1.toString; + /** Used to check objects for own properties. */ + var hasOwnProperty$12 = objectProto$3.hasOwnProperty; + /** Used to detect if a method is native. */ + var reIsNative = RegExp("^" + funcToString$1.call(hasOwnProperty$12).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"); + /** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) return false; + return (isFunction(value) ? reIsNative : reIsHostCtor).test(toSource(value)); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getValue.js +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function getValue$1(object, key) { + return object == null ? void 0 : object[key]; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getNative.js +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + function getNative(object, key) { + var value = getValue$1(object, key); + return baseIsNative(value) ? value : void 0; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_WeakMap.js + var WeakMap$1 = getNative(root, "WeakMap"); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseCreate.js +/** Built-in value references. */ + var objectCreate = Object.create; + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ + var baseCreate = function() { + function object() {} + return function(proto) { + if (!isObject(proto)) return {}; + if (objectCreate) return objectCreate(proto); + object.prototype = proto; + var result = new object(); + object.prototype = void 0; + return result; + }; + }(); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_apply.js +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ + function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/noop.js +/** + * This method returns `undefined`. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Util + * @example + * + * _.times(2, _.noop); + * // => [undefined, undefined] + */ + function noop() {} + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_copyArray.js +/** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function copyArray(source, array) { + var index = -1, length = source.length; + array || (array = Array(length)); + while (++index < length) array[index] = source[index]; + return array; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_shortOut.js +/** Used to detect hot functions by number of calls within a span of milliseconds. */ + var HOT_COUNT = 800, HOT_SPAN = 16; + var nativeNow = Date.now; + /** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ + function shortOut(func) { + var count = 0, lastCalled = 0; + return function() { + var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled); + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) return arguments[0]; + } else count = 0; + return func.apply(void 0, arguments); + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/constant.js +/** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ + function constant(value) { + return function() { + return value; + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_defineProperty.js + var defineProperty = function() { + try { + var func = getNative(Object, "defineProperty"); + func({}, "", {}); + return func; + } catch (e) {} + }(); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSetToString.js +/** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, "toString", { + "configurable": true, + "enumerable": false, + "value": constant(string), + "writable": true + }); + }; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setToString.js +/** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var setToString = shortOut(baseSetToString); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayEach.js +/** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, length = array == null ? 0 : array.length; + while (++index < length) if (iteratee(array[index], index, array) === false) break; + return array; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseFindIndex.js +/** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, index = fromIndex + (fromRight ? 1 : -1); + while (fromRight ? index-- : ++index < length) if (predicate(array[index], index, array)) return index; + return -1; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsNaN.js +/** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ + function baseIsNaN(value) { + return value !== value; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_strictIndexOf.js +/** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, length = array.length; + while (++index < length) if (array[index] === value) return index; + return -1; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIndexOf.js +/** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOf(array, value, fromIndex) { + return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayIncludes.js +/** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludes(array, value) { + return !!(array == null ? 0 : array.length) && baseIndexOf(array, value, 0) > -1; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isIndex.js +/** Used as references for various `Number` constants. */ + var MAX_SAFE_INTEGER$1 = 9007199254740991; + /** Used to detect unsigned integer values. */ + var reIsUint = /^(?:0|[1-9]\d*)$/; + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER$1 : length; + return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseAssignValue.js +/** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function baseAssignValue(object, key, value) { + if (key == "__proto__" && defineProperty) defineProperty(object, key, { + "configurable": true, + "enumerable": true, + "value": value, + "writable": true + }); + else object[key] = value; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/eq.js +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ + function eq(value, other) { + return value === other || value !== value && other !== other; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_assignValue.js +/** Used to check objects for own properties. */ + var hasOwnProperty$11 = Object.prototype.hasOwnProperty; + /** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty$11.call(object, key) && eq(objValue, value)) || value === void 0 && !(key in object)) baseAssignValue(object, key, value); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_copyObject.js +/** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + var index = -1, length = props.length; + while (++index < length) { + var key = props[index]; + var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0; + if (newValue === void 0) newValue = source[key]; + if (isNew) baseAssignValue(object, key, newValue); + else assignValue(object, key, newValue); + } + return object; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_overRest.js + var nativeMax$2 = Math.max; + /** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ + function overRest(func, start, transform) { + start = nativeMax$2(start === void 0 ? func.length - 1 : start, 0); + return function() { + var args = arguments, index = -1, length = nativeMax$2(args.length - start, 0), array = Array(length); + while (++index < length) array[index] = args[start + index]; + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) otherArgs[index] = args[index]; + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseRest.js +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ + function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ""); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isLength.js +/** Used as references for various `Number` constants. */ + var MAX_SAFE_INTEGER = 9007199254740991; + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ + function isLength(value) { + return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isArrayLike.js +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isIterateeCall.js +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ + function isIterateeCall(value, index, object) { + if (!isObject(object)) return false; + var type = typeof index; + if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) return eq(object[index], value); + return false; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createAssigner.js +/** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0; + customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : void 0; + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? void 0 : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) assigner(object, source, index, customizer); + } + return object; + }); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isPrototype.js +/** Used for built-in method references. */ + var objectProto$2 = Object.prototype; + /** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ + function isPrototype(value) { + var Ctor = value && value.constructor; + return value === (typeof Ctor == "function" && Ctor.prototype || objectProto$2); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseTimes.js +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ + function baseTimes(n, iteratee) { + var index = -1, result = Array(n); + while (++index < n) result[index] = iteratee(index); + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsArguments.js +/** `Object#toString` result references. */ + var argsTag$3 = "[object Arguments]"; + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag$3; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isArguments.js +/** Used for built-in method references. */ + var objectProto$1 = Object.prototype; + /** Used to check objects for own properties. */ + var hasOwnProperty$10 = objectProto$1.hasOwnProperty; + /** Built-in value references. */ + var propertyIsEnumerable$1 = objectProto$1.propertyIsEnumerable; + /** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + var isArguments = baseIsArguments(function() { + return arguments; + }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty$10.call(value, "callee") && !propertyIsEnumerable$1.call(value, "callee"); + }; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/stubFalse.js +/** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ + function stubFalse() { + return false; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isBuffer.js +/** Detect free variable `exports`. */ + var freeExports$2 = typeof exports == "object" && exports && !exports.nodeType && exports; + /** Detect free variable `module`. */ + var freeModule$2 = freeExports$2 && typeof module == "object" && module && !module.nodeType && module; + /** Built-in value references. */ + var Buffer$2 = freeModule$2 && freeModule$2.exports === freeExports$2 ? root.Buffer : void 0; + /** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ + var isBuffer = (Buffer$2 ? Buffer$2.isBuffer : void 0) || stubFalse; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsTypedArray.js +/** `Object#toString` result references. */ + var argsTag$2 = "[object Arguments]", arrayTag$2 = "[object Array]", boolTag$3 = "[object Boolean]", dateTag$3 = "[object Date]", errorTag$2 = "[object Error]", funcTag$1 = "[object Function]", mapTag$5 = "[object Map]", numberTag$3 = "[object Number]", objectTag$4 = "[object Object]", regexpTag$3 = "[object RegExp]", setTag$5 = "[object Set]", stringTag$3 = "[object String]", weakMapTag$2 = "[object WeakMap]"; + var arrayBufferTag$3 = "[object ArrayBuffer]", dataViewTag$4 = "[object DataView]", float32Tag$2 = "[object Float32Array]", float64Tag$2 = "[object Float64Array]", int8Tag$2 = "[object Int8Array]", int16Tag$2 = "[object Int16Array]", int32Tag$2 = "[object Int32Array]", uint8Tag$2 = "[object Uint8Array]", uint8ClampedTag$2 = "[object Uint8ClampedArray]", uint16Tag$2 = "[object Uint16Array]", uint32Tag$2 = "[object Uint32Array]"; + /** Used to identify `toStringTag` values of typed arrays. */ + var typedArrayTags = {}; + typedArrayTags[float32Tag$2] = typedArrayTags[float64Tag$2] = typedArrayTags[int8Tag$2] = typedArrayTags[int16Tag$2] = typedArrayTags[int32Tag$2] = typedArrayTags[uint8Tag$2] = typedArrayTags[uint8ClampedTag$2] = typedArrayTags[uint16Tag$2] = typedArrayTags[uint32Tag$2] = true; + typedArrayTags[argsTag$2] = typedArrayTags[arrayTag$2] = typedArrayTags[arrayBufferTag$3] = typedArrayTags[boolTag$3] = typedArrayTags[dataViewTag$4] = typedArrayTags[dateTag$3] = typedArrayTags[errorTag$2] = typedArrayTags[funcTag$1] = typedArrayTags[mapTag$5] = typedArrayTags[numberTag$3] = typedArrayTags[objectTag$4] = typedArrayTags[regexpTag$3] = typedArrayTags[setTag$5] = typedArrayTags[stringTag$3] = typedArrayTags[weakMapTag$2] = false; + /** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ + function baseIsTypedArray(value) { + return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseUnary.js +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ + function baseUnary(func) { + return function(value) { + return func(value); + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nodeUtil.js +/** Detect free variable `exports`. */ + var freeExports$1 = typeof exports == "object" && exports && !exports.nodeType && exports; + /** Detect free variable `module`. */ + var freeModule$1 = freeExports$1 && typeof module == "object" && module && !module.nodeType && module; + /** Detect free variable `process` from Node.js. */ + var freeProcess = freeModule$1 && freeModule$1.exports === freeExports$1 && freeGlobal.process; + /** Used to access faster Node.js helpers. */ + var nodeUtil = function() { + try { + var types = freeModule$1 && freeModule$1.require && freeModule$1.require("util").types; + if (types) return types; + return freeProcess && freeProcess.binding && freeProcess.binding("util"); + } catch (e) {} + }(); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isTypedArray.js + var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + /** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayLikeKeys.js +/** Used to check objects for own properties. */ + var hasOwnProperty$9 = Object.prototype.hasOwnProperty; + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length; + for (var key in value) if ((inherited || hasOwnProperty$9.call(value, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length)))) result.push(key); + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_overArg.js +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nativeKeys.js + var nativeKeys = overArg(Object.keys, Object); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseKeys.js +/** Used to check objects for own properties. */ + var hasOwnProperty$8 = Object.prototype.hasOwnProperty; + /** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeys(object) { + if (!isPrototype(object)) return nativeKeys(object); + var result = []; + for (var key in Object(object)) if (hasOwnProperty$8.call(object, key) && key != "constructor") result.push(key); + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/keys.js +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nativeKeysIn.js +/** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function nativeKeysIn(object) { + var result = []; + if (object != null) for (var key in Object(object)) result.push(key); + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseKeysIn.js +/** Used to check objects for own properties. */ + var hasOwnProperty$7 = Object.prototype.hasOwnProperty; + /** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeysIn(object) { + if (!isObject(object)) return nativeKeysIn(object); + var isProto = isPrototype(object), result = []; + for (var key in object) if (!(key == "constructor" && (isProto || !hasOwnProperty$7.call(object, key)))) result.push(key); + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/keysIn.js +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isKey.js +/** Used to match property names within property paths. */ + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/; + /** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ + function isKey(value, object) { + if (isArray(value)) return false; + var type = typeof value; + if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) return true; + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nativeCreate.js + var nativeCreate = getNative(Object, "create"); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashClear.js +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashDelete.js +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashGet.js +/** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED$2 = "__lodash_hash_undefined__"; + /** Used to check objects for own properties. */ + var hasOwnProperty$6 = Object.prototype.hasOwnProperty; + /** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED$2 ? void 0 : result; + } + return hasOwnProperty$6.call(data, key) ? data[key] : void 0; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashHas.js +/** Used to check objects for own properties. */ + var hasOwnProperty$5 = Object.prototype.hasOwnProperty; + /** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== void 0 : hasOwnProperty$5.call(data, key); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashSet.js +/** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED$1 = "__lodash_hash_undefined__"; + /** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED$1 : value; + return this; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Hash.js +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Hash(entries) { + var index = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + Hash.prototype.clear = hashClear; + Hash.prototype["delete"] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheClear.js +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_assocIndexOf.js +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function assocIndexOf(array, key) { + var length = array.length; + while (length--) if (eq(array[length][0], key)) return length; + return -1; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheDelete.js +/** Built-in value references. */ + var splice = Array.prototype.splice; + /** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function listCacheDelete(key) { + var data = this.__data__, index = assocIndexOf(data, key); + if (index < 0) return false; + if (index == data.length - 1) data.pop(); + else splice.call(data, index, 1); + --this.size; + return true; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheGet.js +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function listCacheGet(key) { + var data = this.__data__, index = assocIndexOf(data, key); + return index < 0 ? void 0 : data[index][1]; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheHas.js +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheSet.js +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ + function listCacheSet(key, value) { + var data = this.__data__, index = assocIndexOf(data, key); + if (index < 0) { + ++this.size; + data.push([key, value]); + } else data[index][1] = value; + return this; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_ListCache.js +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function ListCache(entries) { + var index = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + ListCache.prototype.clear = listCacheClear; + ListCache.prototype["delete"] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Map.js + var Map$1 = getNative(root, "Map"); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheClear.js +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ + function mapCacheClear() { + this.size = 0; + this.__data__ = { + "hash": new Hash(), + "map": new (Map$1 || ListCache)(), + "string": new Hash() + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isKeyable.js +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ + function isKeyable(value) { + var type = typeof value; + return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getMapData.js +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheDelete.js +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function mapCacheDelete(key) { + var result = getMapData(this, key)["delete"](key); + this.size -= result ? 1 : 0; + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheGet.js +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheHas.js +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheSet.js +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ + function mapCacheSet(key, value) { + var data = getMapData(this, key), size = data.size; + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_MapCache.js +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function MapCache(entries) { + var index = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype["delete"] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/memoize.js +/** Error message constants. */ + var FUNC_ERROR_TEXT$2 = "Expected a function"; + /** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ + function memoize(func, resolver) { + if (typeof func != "function" || resolver != null && typeof resolver != "function") throw new TypeError(FUNC_ERROR_TEXT$2); + var memoized = function() { + var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache; + if (cache.has(key)) return cache.get(key); + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache)(); + return memoized; + } + memoize.Cache = MapCache; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_memoizeCapped.js +/** Used as the maximum memoize cache size. */ + var MAX_MEMOIZE_SIZE = 500; + /** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ + function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) cache.clear(); + return key; + }); + var cache = result.cache; + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stringToPath.js +/** Used to match property names within property paths. */ + var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + /** Used to match backslashes in property paths. */ + var reEscapeChar = /\\(\\)?/g; + /** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ + var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46) result.push(""); + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, "$1") : number || match); + }); + return result; + }); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toString.js +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ + function toString(value) { + return value == null ? "" : baseToString(value); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_castPath.js +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ + function castPath(value, object) { + if (isArray(value)) return value; + return isKey(value, object) ? [value] : stringToPath(toString(value)); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_toKey.js +/** Used as references for various `Number` constants. */ + var INFINITY$1 = Infinity; + /** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ + function toKey(value) { + if (typeof value == "string" || isSymbol(value)) return value; + var result = value + ""; + return result == "0" && 1 / value == -INFINITY$1 ? "-0" : result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGet.js +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ + function baseGet(object, path) { + path = castPath(path, object); + var index = 0, length = path.length; + while (object != null && index < length) object = object[toKey(path[index++])]; + return index && index == length ? object : void 0; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/get.js +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ + function get(object, path, defaultValue) { + var result = object == null ? void 0 : baseGet(object, path); + return result === void 0 ? defaultValue : result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayPush.js +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, length = values.length, offset = array.length; + while (++index < length) array[offset + index] = values[index]; + return array; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isFlattenable.js +/** Built-in value references. */ + var spreadableSymbol = Symbol$1 ? Symbol$1.isConcatSpreadable : void 0; + /** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ + function isFlattenable(value) { + return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseFlatten.js +/** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ + function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, length = array.length; + predicate || (predicate = isFlattenable); + result || (result = []); + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) if (depth > 1) baseFlatten(value, depth - 1, predicate, isStrict, result); + else arrayPush(result, value); + else if (!isStrict) result[result.length] = value; + } + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/flatten.js +/** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ + function flatten(array) { + return (array == null ? 0 : array.length) ? baseFlatten(array, 1) : []; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_flatRest.js +/** + * A specialized version of `baseRest` which flattens the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + function flatRest(func) { + return setToString(overRest(func, void 0, flatten), func + ""); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getPrototype.js +/** Built-in value references. */ + var getPrototype = overArg(Object.getPrototypeOf, Object); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isPlainObject.js +/** `Object#toString` result references. */ + var objectTag$3 = "[object Object]"; + /** Used for built-in method references. */ + var funcProto = Function.prototype, objectProto = Object.prototype; + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + /** Used to check objects for own properties. */ + var hasOwnProperty$4 = objectProto.hasOwnProperty; + /** Used to infer the `Object` constructor. */ + var objectCtorString = funcToString.call(Object); + /** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ + function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag$3) return false; + var proto = getPrototype(value); + if (proto === null) return true; + var Ctor = hasOwnProperty$4.call(proto, "constructor") && proto.constructor; + return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSlice.js +/** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, length = array.length; + if (start < 0) start = -start > length ? 0 : length + start; + end = end > length ? length : end; + if (end < 0) end += length; + length = start > end ? 0 : end - start >>> 0; + start >>>= 0; + var result = Array(length); + while (++index < length) result[index] = array[index + start]; + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/castArray.js +/** + * Casts `value` as an array if it's not one. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Lang + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast array. + * @example + * + * _.castArray(1); + * // => [1] + * + * _.castArray({ 'a': 1 }); + * // => [{ 'a': 1 }] + * + * _.castArray('abc'); + * // => ['abc'] + * + * _.castArray(null); + * // => [null] + * + * _.castArray(undefined); + * // => [undefined] + * + * _.castArray(); + * // => [] + * + * var array = [1, 2, 3]; + * console.log(_.castArray(array) === array); + * // => true + */ + function castArray$1() { + if (!arguments.length) return []; + var value = arguments[0]; + return isArray(value) ? value : [value]; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseClamp.js +/** + * The base implementation of `_.clamp` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + */ + function baseClamp(number, lower, upper) { + if (number === number) { + if (upper !== void 0) number = number <= upper ? number : upper; + if (lower !== void 0) number = number >= lower ? number : lower; + } + return number; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/clamp.js +/** + * Clamps `number` within the inclusive `lower` and `upper` bounds. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Number + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + * @example + * + * _.clamp(-10, -5, 5); + * // => -5 + * + * _.clamp(10, -5, 5); + * // => 5 + */ + function clamp$1(number, lower, upper) { + if (upper === void 0) { + upper = lower; + lower = void 0; + } + if (upper !== void 0) { + upper = toNumber(upper); + upper = upper === upper ? upper : 0; + } + if (lower !== void 0) { + lower = toNumber(lower); + lower = lower === lower ? lower : 0; + } + return baseClamp(toNumber(number), lower, upper); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stackClear.js +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ + function stackClear() { + this.__data__ = new ListCache(); + this.size = 0; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stackDelete.js +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function stackDelete(key) { + var data = this.__data__, result = data["delete"](key); + this.size = data.size; + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stackGet.js +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function stackGet(key) { + return this.__data__.get(key); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stackHas.js +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function stackHas(key) { + return this.__data__.has(key); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stackSet.js +/** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE$1 = 200; + /** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ + function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map$1 || pairs.length < LARGE_ARRAY_SIZE$1 - 1) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Stack.js +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Stack(entries) { + this.size = (this.__data__ = new ListCache(entries)).size; + } + Stack.prototype.clear = stackClear; + Stack.prototype["delete"] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseAssign.js +/** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseAssignIn.js +/** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneBuffer.js +/** Detect free variable `exports`. */ + var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports; + /** Detect free variable `module`. */ + var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module; + /** Built-in value references. */ + var Buffer$1 = freeModule && freeModule.exports === freeExports ? root.Buffer : void 0, allocUnsafe = Buffer$1 ? Buffer$1.allocUnsafe : void 0; + /** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ + function cloneBuffer(buffer, isDeep) { + if (isDeep) return buffer.slice(); + var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + buffer.copy(result); + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayFilter.js +/** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = []; + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) result[resIndex++] = value; + } + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/stubArray.js +/** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ + function stubArray() { + return []; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getSymbols.js +/** Built-in value references. */ + var propertyIsEnumerable = Object.prototype.propertyIsEnumerable; + var nativeGetSymbols = Object.getOwnPropertySymbols; + /** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) return []; + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); + }; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_copySymbols.js +/** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getSymbolsIn.js +/** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbolsIn = !Object.getOwnPropertySymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; + }; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_copySymbolsIn.js +/** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGetAllKeys.js +/** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getAllKeys.js +/** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getAllKeysIn.js +/** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_DataView.js + var DataView = getNative(root, "DataView"); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Promise.js + var Promise$1 = getNative(root, "Promise"); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Set.js + var Set$1 = getNative(root, "Set"); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getTag.js +/** `Object#toString` result references. */ + var mapTag$4 = "[object Map]", objectTag$2 = "[object Object]", promiseTag = "[object Promise]", setTag$4 = "[object Set]", weakMapTag$1 = "[object WeakMap]"; + var dataViewTag$3 = "[object DataView]"; + /** Used to detect maps, sets, and weakmaps. */ + var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map$1), promiseCtorString = toSource(Promise$1), setCtorString = toSource(Set$1), weakMapCtorString = toSource(WeakMap$1); + /** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + var getTag = baseGetTag; + if (DataView && getTag(new DataView(/* @__PURE__ */ new ArrayBuffer(1))) != dataViewTag$3 || Map$1 && getTag(new Map$1()) != mapTag$4 || Promise$1 && getTag(Promise$1.resolve()) != promiseTag || Set$1 && getTag(new Set$1()) != setTag$4 || WeakMap$1 && getTag(new WeakMap$1()) != weakMapTag$1) getTag = function(value) { + var result = baseGetTag(value), Ctor = result == objectTag$2 ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : ""; + if (ctorString) switch (ctorString) { + case dataViewCtorString: return dataViewTag$3; + case mapCtorString: return mapTag$4; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag$4; + case weakMapCtorString: return weakMapTag$1; + } + return result; + }; + var _getTag_default = getTag; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_initCloneArray.js +/** Used to check objects for own properties. */ + var hasOwnProperty$3 = Object.prototype.hasOwnProperty; + /** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ + function initCloneArray(array) { + var length = array.length, result = new array.constructor(length); + if (length && typeof array[0] == "string" && hasOwnProperty$3.call(array, "index")) { + result.index = array.index; + result.input = array.input; + } + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Uint8Array.js +/** Built-in value references. */ + var Uint8Array$1 = root.Uint8Array; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneArrayBuffer.js +/** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array$1(result).set(new Uint8Array$1(arrayBuffer)); + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneDataView.js +/** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneRegExp.js +/** Used to match `RegExp` flags from their coerced string values. */ + var reFlags = /\w*$/; + /** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ + function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneSymbol.js +/** Used to convert symbols to primitives and strings. */ + var symbolProto$1 = Symbol$1 ? Symbol$1.prototype : void 0, symbolValueOf$1 = symbolProto$1 ? symbolProto$1.valueOf : void 0; + /** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ + function cloneSymbol(symbol) { + return symbolValueOf$1 ? Object(symbolValueOf$1.call(symbol)) : {}; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneTypedArray.js +/** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_initCloneByTag.js +/** `Object#toString` result references. */ + var boolTag$2 = "[object Boolean]", dateTag$2 = "[object Date]", mapTag$3 = "[object Map]", numberTag$2 = "[object Number]", regexpTag$2 = "[object RegExp]", setTag$3 = "[object Set]", stringTag$2 = "[object String]", symbolTag$2 = "[object Symbol]"; + var arrayBufferTag$2 = "[object ArrayBuffer]", dataViewTag$2 = "[object DataView]", float32Tag$1 = "[object Float32Array]", float64Tag$1 = "[object Float64Array]", int8Tag$1 = "[object Int8Array]", int16Tag$1 = "[object Int16Array]", int32Tag$1 = "[object Int32Array]", uint8Tag$1 = "[object Uint8Array]", uint8ClampedTag$1 = "[object Uint8ClampedArray]", uint16Tag$1 = "[object Uint16Array]", uint32Tag$1 = "[object Uint32Array]"; + /** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag$2: return cloneArrayBuffer(object); + case boolTag$2: + case dateTag$2: return new Ctor(+object); + case dataViewTag$2: return cloneDataView(object, isDeep); + case float32Tag$1: + case float64Tag$1: + case int8Tag$1: + case int16Tag$1: + case int32Tag$1: + case uint8Tag$1: + case uint8ClampedTag$1: + case uint16Tag$1: + case uint32Tag$1: return cloneTypedArray(object, isDeep); + case mapTag$3: return new Ctor(); + case numberTag$2: + case stringTag$2: return new Ctor(object); + case regexpTag$2: return cloneRegExp(object); + case setTag$3: return new Ctor(); + case symbolTag$2: return cloneSymbol(object); + } + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_initCloneObject.js +/** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneObject(object) { + return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {}; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsMap.js +/** `Object#toString` result references. */ + var mapTag$2 = "[object Map]"; + /** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ + function baseIsMap(value) { + return isObjectLike(value) && _getTag_default(value) == mapTag$2; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isMap.js + var nodeIsMap = nodeUtil && nodeUtil.isMap; + /** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ + var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsSet.js +/** `Object#toString` result references. */ + var setTag$2 = "[object Set]"; + /** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ + function baseIsSet(value) { + return isObjectLike(value) && _getTag_default(value) == setTag$2; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isSet.js + var nodeIsSet = nodeUtil && nodeUtil.isSet; + /** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ + var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseClone.js +/** Used to compose bitmasks for cloning. */ + var CLONE_DEEP_FLAG$2 = 1, CLONE_FLAT_FLAG$1 = 2, CLONE_SYMBOLS_FLAG$2 = 4; + /** `Object#toString` result references. */ + var argsTag$1 = "[object Arguments]", arrayTag$1 = "[object Array]", boolTag$1 = "[object Boolean]", dateTag$1 = "[object Date]", errorTag$1 = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag$1 = "[object Map]", numberTag$1 = "[object Number]", objectTag$1 = "[object Object]", regexpTag$1 = "[object RegExp]", setTag$1 = "[object Set]", stringTag$1 = "[object String]", symbolTag$1 = "[object Symbol]", weakMapTag = "[object WeakMap]"; + var arrayBufferTag$1 = "[object ArrayBuffer]", dataViewTag$1 = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]"; + /** Used to identify `toStringTag` values supported by `_.clone`. */ + var cloneableTags = {}; + cloneableTags[argsTag$1] = cloneableTags[arrayTag$1] = cloneableTags[arrayBufferTag$1] = cloneableTags[dataViewTag$1] = cloneableTags[boolTag$1] = cloneableTags[dateTag$1] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag$1] = cloneableTags[numberTag$1] = cloneableTags[objectTag$1] = cloneableTags[regexpTag$1] = cloneableTags[setTag$1] = cloneableTags[stringTag$1] = cloneableTags[symbolTag$1] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag$1] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false; + /** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ + function baseClone(value, bitmask, customizer, key, object, stack) { + var result, isDeep = bitmask & CLONE_DEEP_FLAG$2, isFlat = bitmask & CLONE_FLAT_FLAG$1, isFull = bitmask & CLONE_SYMBOLS_FLAG$2; + if (customizer) result = object ? customizer(value, key, object, stack) : customizer(value); + if (result !== void 0) return result; + if (!isObject(value)) return value; + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) return copyArray(value, result); + } else { + var tag = _getTag_default(value), isFunc = tag == funcTag || tag == genTag; + if (isBuffer(value)) return cloneBuffer(value, isDeep); + if (tag == objectTag$1 || tag == argsTag$1 || isFunc && !object) { + result = isFlat || isFunc ? {} : initCloneObject(value); + if (!isDeep) return isFlat ? copySymbolsIn(value, baseAssignIn(result, value)) : copySymbols(value, baseAssign(result, value)); + } else { + if (!cloneableTags[tag]) return object ? value : {}; + result = initCloneByTag(value, tag, isDeep); + } + } + stack || (stack = new Stack()); + var stacked = stack.get(value); + if (stacked) return stacked; + stack.set(value, result); + if (isSet(value)) value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + else if (isMap(value)) value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + var props = isArr ? void 0 : (isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys)(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/cloneDeep.js +/** Used to compose bitmasks for cloning. */ + var CLONE_DEEP_FLAG$1 = 1, CLONE_SYMBOLS_FLAG$1 = 4; + /** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ + function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG$1 | CLONE_SYMBOLS_FLAG$1); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setCacheAdd.js +/** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = "__lodash_hash_undefined__"; + /** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setCacheHas.js +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ + function setCacheHas(value) { + return this.__data__.has(value); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_SetCache.js +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ + function SetCache(values) { + var index = -1, length = values == null ? 0 : values.length; + this.__data__ = new MapCache(); + while (++index < length) this.add(values[index]); + } + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arraySome.js +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function arraySome(array, predicate) { + var index = -1, length = array == null ? 0 : array.length; + while (++index < length) if (predicate(array[index], index, array)) return true; + return false; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cacheHas.js +/** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function cacheHas(cache, key) { + return cache.has(key); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_equalArrays.js +/** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG$5 = 1, COMPARE_UNORDERED_FLAG$3 = 2; + /** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG$5, arrLength = array.length, othLength = other.length; + if (arrLength != othLength && !(isPartial && othLength > arrLength)) return false; + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) return arrStacked == other && othStacked == array; + var index = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG$3 ? new SetCache() : void 0; + stack.set(array, other); + stack.set(other, array); + while (++index < arrLength) { + var arrValue = array[index], othValue = other[index]; + if (customizer) var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack); + if (compared !== void 0) { + if (compared) continue; + result = false; + break; + } + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) return seen.push(othIndex); + })) { + result = false; + break; + } + } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + result = false; + break; + } + } + stack["delete"](array); + stack["delete"](other); + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapToArray.js +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ + function mapToArray(map) { + var index = -1, result = Array(map.size); + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setToArray.js +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ + function setToArray(set) { + var index = -1, result = Array(set.size); + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_equalByTag.js +/** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG$4 = 1, COMPARE_UNORDERED_FLAG$2 = 2; + /** `Object#toString` result references. */ + var boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", mapTag = "[object Map]", numberTag = "[object Number]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]"; + var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]"; + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol$1 ? Symbol$1.prototype : void 0, symbolValueOf = symbolProto ? symbolProto.valueOf : void 0; + /** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) return false; + object = object.buffer; + other = other.buffer; + case arrayBufferTag: + if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array$1(object), new Uint8Array$1(other))) return false; + return true; + case boolTag: + case dateTag: + case numberTag: return eq(+object, +other); + case errorTag: return object.name == other.name && object.message == other.message; + case regexpTag: + case stringTag: return object == other + ""; + case mapTag: var convert = mapToArray; + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG$4; + convert || (convert = setToArray); + if (object.size != other.size && !isPartial) return false; + var stacked = stack.get(object); + if (stacked) return stacked == other; + bitmask |= COMPARE_UNORDERED_FLAG$2; + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack["delete"](object); + return result; + case symbolTag: if (symbolValueOf) return symbolValueOf.call(object) == symbolValueOf.call(other); + } + return false; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_equalObjects.js +/** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG$3 = 1; + /** Used to check objects for own properties. */ + var hasOwnProperty$2 = Object.prototype.hasOwnProperty; + /** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3, objProps = getAllKeys(object), objLength = objProps.length; + if (objLength != getAllKeys(other).length && !isPartial) return false; + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty$2.call(other, key))) return false; + } + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) return objStacked == other && othStacked == object; + var result = true; + stack.set(object, other); + stack.set(other, object); + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], othValue = other[key]; + if (customizer) var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack); + if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) { + result = false; + break; + } + skipCtor || (skipCtor = key == "constructor"); + } + if (result && !skipCtor) { + var objCtor = object.constructor, othCtor = other.constructor; + if (objCtor != othCtor && "constructor" in object && "constructor" in other && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) result = false; + } + stack["delete"](object); + stack["delete"](other); + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsEqualDeep.js +/** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG$2 = 1; + /** `Object#toString` result references. */ + var argsTag = "[object Arguments]", arrayTag = "[object Array]", objectTag = "[object Object]"; + /** Used to check objects for own properties. */ + var hasOwnProperty$1 = Object.prototype.hasOwnProperty; + /** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : _getTag_default(object), othTag = othIsArr ? arrayTag : _getTag_default(other); + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag; + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) return false; + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack()); + return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) { + var objIsWrapped = objIsObj && hasOwnProperty$1.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty$1.call(other, "__wrapped__"); + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other; + stack || (stack = new Stack()); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) return false; + stack || (stack = new Stack()); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsEqual.js +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) return true; + if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) return value !== value && other !== other; + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsMatch.js +/** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG$1 = 1, COMPARE_UNORDERED_FLAG$1 = 2; + /** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ + function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, length = index, noCustomizer = !customizer; + if (object == null) return !length; + object = Object(object); + while (index--) { + var data = matchData[index]; + if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) return false; + } + while (++index < length) { + data = matchData[index]; + var key = data[0], objValue = object[key], srcValue = data[1]; + if (noCustomizer && data[2]) { + if (objValue === void 0 && !(key in object)) return false; + } else { + var stack = new Stack(); + if (customizer) var result = customizer(objValue, srcValue, key, object, source, stack); + if (!(result === void 0 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$1 | COMPARE_UNORDERED_FLAG$1, customizer, stack) : result)) return false; + } + } + return true; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isStrictComparable.js +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ + function isStrictComparable(value) { + return value === value && !isObject(value); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getMatchData.js +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ + function getMatchData(object) { + var result = keys(object), length = result.length; + while (length--) { + var key = result[length], value = object[key]; + result[length] = [ + key, + value, + isStrictComparable(value) + ]; + } + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_matchesStrictComparable.js +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) return false; + return object[key] === srcValue && (srcValue !== void 0 || key in Object(object)); + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMatches.js +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) return matchesStrictComparable(matchData[0][0], matchData[0][1]); + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseHasIn.js +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHasIn(object, key) { + return object != null && key in Object(object); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hasPath.js +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ + function hasPath(object, path, hasFunc) { + path = castPath(path, object); + var index = -1, length = path.length, result = false; + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) break; + object = object[key]; + } + if (result || ++index != length) return result; + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object)); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/hasIn.js +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ + function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMatchesProperty.js +/** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2; + /** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) return matchesStrictComparable(toKey(path), srcValue); + return function(object) { + var objValue = get(object, path); + return objValue === void 0 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseProperty.js +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? void 0 : object[key]; + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_basePropertyDeep.js +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/property.js +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ + function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIteratee.js +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ + function baseIteratee(value) { + if (typeof value == "function") return value; + if (value == null) return identity; + if (typeof value == "object") return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value); + return property(value); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createBaseFor.js +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length; + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) break; + } + return object; + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseFor.js +/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseFor = createBaseFor(); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseForOwn.js +/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createBaseEach.js +/** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) return collection; + if (!isArrayLike(collection)) return eachFunc(collection, iteratee); + var length = collection.length, index = fromRight ? length : -1, iterable = Object(collection); + while (fromRight ? index-- : ++index < length) if (iteratee(iterable[index], index, iterable) === false) break; + return collection; + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseEach.js +/** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEach = createBaseEach(baseForOwn); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/now.js +/** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ + var now = function() { + return root.Date.now(); + }; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/debounce.js +/** Error message constants. */ + var FUNC_ERROR_TEXT$1 = "Expected a function"; + var nativeMax$1 = Math.max, nativeMin$1 = Math.min; + /** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ + function debounce(func, wait, options) { + var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true; + if (typeof func != "function") throw new TypeError(FUNC_ERROR_TEXT$1); + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = "maxWait" in options; + maxWait = maxing ? nativeMax$1(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = "trailing" in options ? !!options.trailing : trailing; + } + function invokeFunc(time) { + var args = lastArgs, thisArg = lastThis; + lastArgs = lastThis = void 0; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + function leadingEdge(time) { + lastInvokeTime = time; + timerId = setTimeout(timerExpired, wait); + return leading ? invokeFunc(time) : result; + } + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall; + return maxing ? nativeMin$1(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting; + } + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime; + return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; + } + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) return trailingEdge(time); + timerId = setTimeout(timerExpired, remainingWait(time)); + } + function trailingEdge(time) { + timerId = void 0; + if (trailing && lastArgs) return invokeFunc(time); + lastArgs = lastThis = void 0; + return result; + } + function cancel() { + if (timerId !== void 0) clearTimeout(timerId); + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = void 0; + } + function flush() { + return timerId === void 0 ? result : trailingEdge(now()); + } + function debounced() { + var time = now(), isInvoking = shouldInvoke(time); + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + if (isInvoking) { + if (timerId === void 0) return leadingEdge(lastCallTime); + if (maxing) { + clearTimeout(timerId); + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === void 0) timerId = setTimeout(timerExpired, wait); + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_assignMergeValue.js +/** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignMergeValue(object, key, value) { + if (value !== void 0 && !eq(object[key], value) || value === void 0 && !(key in object)) baseAssignValue(object, key, value); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isArrayLikeObject.js +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_safeGet.js +/** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function safeGet(object, key) { + if (key === "constructor" && typeof object[key] === "function") return; + if (key == "__proto__") return; + return object[key]; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toPlainObject.js +/** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ + function toPlainObject(value) { + return copyObject(value, keysIn(value)); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMergeDeep.js +/** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue); + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : void 0; + var isCommon = newValue === void 0; + if (isCommon) { + var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue); + newValue = srcValue; + if (isArr || isBuff || isTyped) if (isArray(objValue)) newValue = objValue; + else if (isArrayLikeObject(objValue)) newValue = copyArray(objValue); + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } else newValue = []; + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) newValue = toPlainObject(objValue); + else if (!isObject(objValue) || isFunction(objValue)) newValue = initCloneObject(srcValue); + } else isCommon = false; + } + if (isCommon) { + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack["delete"](srcValue); + } + assignMergeValue(object, key, newValue); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMerge.js +/** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) return; + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack()); + if (isObject(srcValue)) baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + else { + var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : void 0; + if (newValue === void 0) newValue = srcValue; + assignMergeValue(object, key, newValue); + } + }, keysIn); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayIncludesWith.js +/** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludesWith(array, value, comparator) { + var index = -1, length = array == null ? 0 : array.length; + while (++index < length) if (comparator(value, array[index])) return true; + return false; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/last.js +/** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ + function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : void 0; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/findLastIndex.js + var nativeMax = Math.max, nativeMin = Math.min; + /** + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); + * // => 2 + * + * // The `_.matches` iteratee shorthand. + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastIndex(users, ['active', false]); + * // => 2 + * + * // The `_.property` iteratee shorthand. + * _.findLastIndex(users, 'active'); + * // => 0 + */ + function findLastIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) return -1; + var index = length - 1; + if (fromIndex !== void 0) { + index = toInteger(fromIndex); + index = fromIndex < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return baseFindIndex(array, baseIteratee(predicate, 3), index, true); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMap.js +/** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function baseMap(collection, iteratee) { + var index = -1, result = isArrayLike(collection) ? Array(collection.length) : []; + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/map.js +/** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ + function map(collection, iteratee) { + return (isArray(collection) ? arrayMap : baseMap)(collection, baseIteratee(iteratee, 3)); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/flatMap.js +/** + * Creates a flattened array of values by running each element in `collection` + * thru `iteratee` and flattening the mapped results. The iteratee is invoked + * with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [n, n]; + * } + * + * _.flatMap([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ + function flatMap(collection, iteratee) { + return baseFlatten(map(collection, iteratee), 1); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/flattenDeep.js +/** Used as references for various `Number` constants. */ + var INFINITY = Infinity; + /** + * Recursively flattens `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, [3, [4]], 5]]); + * // => [1, 2, 3, 4, 5] + */ + function flattenDeep(array) { + return (array == null ? 0 : array.length) ? baseFlatten(array, INFINITY) : []; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/fromPairs.js +/** + * The inverse of `_.toPairs`; this method returns an object composed + * from key-value `pairs`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} pairs The key-value pairs. + * @returns {Object} Returns the new object. + * @example + * + * _.fromPairs([['a', 1], ['b', 2]]); + * // => { 'a': 1, 'b': 2 } + */ + function fromPairs(pairs) { + var index = -1, length = pairs == null ? 0 : pairs.length, result = {}; + while (++index < length) { + var pair = pairs[index]; + result[pair[0]] = pair[1]; + } + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_parent.js +/** + * Gets the parent value at `path` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} path The path to get the parent value of. + * @returns {*} Returns the parent value. + */ + function parent(object, path) { + return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isEqual.js +/** + * Performs a deep comparison between two values to determine if they are + * equivalent. + * + * **Note:** This method supports comparing arrays, array buffers, booleans, + * date objects, error objects, maps, numbers, `Object` objects, regexes, + * sets, strings, symbols, and typed arrays. `Object` objects are compared + * by their own, not inherited, enumerable properties. Functions and DOM + * nodes are compared by strict equality, i.e. `===`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.isEqual(object, other); + * // => true + * + * object === other; + * // => false + */ + function isEqual$1(value, other) { + return baseIsEqual(value, other); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isNil.js +/** + * Checks if `value` is `null` or `undefined`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is nullish, else `false`. + * @example + * + * _.isNil(null); + * // => true + * + * _.isNil(void 0); + * // => true + * + * _.isNil(NaN); + * // => false + */ + function isNil(value) { + return value == null; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isNull.js +/** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ + function isNull(value) { + return value === null; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isUndefined.js +/** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ + function isUndefined$1(value) { + return value === void 0; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/merge.js +/** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ + var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); + }); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseUnset.js +/** Used to check objects for own properties. */ + var hasOwnProperty = Object.prototype.hasOwnProperty; + /** + * The base implementation of `_.unset`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The property path to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + */ + function baseUnset(object, path) { + path = castPath(path, object); + var index = -1, length = path.length; + if (!length) return true; + var isRootPrimitive = object == null || typeof object !== "object" && typeof object !== "function"; + while (++index < length) { + var key = path[index]; + if (typeof key !== "string") continue; + if (key === "__proto__" && !hasOwnProperty.call(object, "__proto__")) return false; + if (key === "constructor" && index + 1 < length && typeof path[index + 1] === "string" && path[index + 1] === "prototype") { + if (isRootPrimitive && index === 0) continue; + return false; + } + } + var obj = parent(object, path); + return obj == null || delete obj[toKey(last(path))]; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_customOmitClone.js +/** + * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain + * objects. + * + * @private + * @param {*} value The value to inspect. + * @param {string} key The key of the property to inspect. + * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. + */ + function customOmitClone(value) { + return isPlainObject(value) ? void 0 : value; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/omit.js +/** Used to compose bitmasks for cloning. */ + var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4; + /** + * The opposite of `_.pick`; this method creates an object composed of the + * own and inherited enumerable property paths of `object` that are not omitted. + * + * **Note:** This method is considerably slower than `_.pick`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to omit. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omit(object, ['a', 'c']); + * // => { 'b': '2' } + */ + var omit = flatRest(function(object, paths) { + var result = {}; + if (object == null) return result; + var isDeep = false; + paths = arrayMap(paths, function(path) { + path = castPath(path, object); + isDeep || (isDeep = path.length > 1); + return path; + }); + copyObject(object, getAllKeysIn(object), result); + if (isDeep) result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); + var length = paths.length; + while (length--) baseUnset(result, paths[length]); + return result; + }); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSet.js +/** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseSet(object, path, value, customizer) { + if (!isObject(object)) return object; + path = castPath(path, object); + var index = -1, length = path.length, lastIndex = length - 1, nested = object; + while (nested != null && ++index < length) { + var key = toKey(path[index]), newValue = value; + if (key === "__proto__" || key === "constructor" || key === "prototype") return object; + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : void 0; + if (newValue === void 0) newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {}; + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_basePickBy.js +/** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ + function basePickBy(object, paths, predicate) { + var index = -1, length = paths.length, result = {}; + while (++index < length) { + var path = paths[index], value = baseGet(object, path); + if (predicate(value, path)) baseSet(result, castPath(path, object), value); + } + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_basePick.js +/** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ + function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/pick.js +/** + * Creates an object composed of the picked `object` properties. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } + */ + var pick = flatRest(function(object, paths) { + return object == null ? {} : basePick(object, paths); + }); + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/set.js +/** + * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, + * it's created. Arrays are created for missing index properties while objects + * are created for all other missing properties. Use `_.setWith` to customize + * `path` creation. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.set(object, 'a[0].b.c', 4); + * console.log(object.a[0].b.c); + * // => 4 + * + * _.set(object, ['x', '0', 'y', 'z'], 5); + * console.log(object.x[0].y.z); + * // => 5 + */ + function set(object, path, value) { + return object == null ? object : baseSet(object, path, value); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/throttle.js +/** Error message constants. */ + var FUNC_ERROR_TEXT = "Expected a function"; + /** + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed `func` invocations and a `flush` method to + * immediately invoke them. Provide `options` to indicate whether `func` + * should be invoked on the leading and/or trailing edge of the `wait` + * timeout. The `func` is invoked with the last arguments provided to the + * throttled function. Subsequent calls to the throttled function return the + * result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the throttled function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=true] + * Specify invoking on the leading edge of the timeout. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // Avoid excessively updating the position while scrolling. + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. + * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); + * jQuery(element).on('click', throttled); + * + * // Cancel the trailing throttled invocation. + * jQuery(window).on('popstate', throttled.cancel); + */ + function throttle(func, wait, options) { + var leading = true, trailing = true; + if (typeof func != "function") throw new TypeError(FUNC_ERROR_TEXT); + if (isObject(options)) { + leading = "leading" in options ? !!options.leading : leading; + trailing = "trailing" in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { + "leading": leading, + "maxWait": wait, + "trailing": trailing + }); + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createSet.js +/** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ + var createSet = !(Set$1 && 1 / setToArray(new Set$1([, -0]))[1] == Infinity) ? noop : function(values) { + return new Set$1(values); + }; + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseUniq.js +/** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE = 200; + /** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseUniq(array, iteratee, comparator) { + var index = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result; + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) return setToArray(set); + isCommon = false; + includes = cacheHas; + seen = new SetCache(); + } else seen = iteratee ? [] : result; + outer: while (++index < length) { + var value = array[index], computed = iteratee ? iteratee(value) : value; + value = comparator || value !== 0 ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) if (seen[seenIndex] === computed) continue outer; + if (iteratee) seen.push(computed); + result.push(value); + } else if (!includes(seen, computed, comparator)) { + if (seen !== result) seen.push(computed); + result.push(value); + } + } + return result; + } + +//#endregion +//#region ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/union.js +/** + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] + */ + var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); + }); + +//#endregion +//#region ../../packages/utils/types.ts + const isUndefined = (val) => val === void 0; + const isBoolean = (val) => typeof val === "boolean"; + const isNumber = (val) => typeof val === "number"; + const isEmpty = (val) => !val && val !== 0 || isArray$1(val) && val.length === 0 || isObject$1(val) && !Object.keys(val).length; + const isElement$1 = (e) => { + if (typeof Element === "undefined") return false; + return e instanceof Element; + }; + const isPropAbsent = (prop) => isNil(prop); + const isStringNumber = (val) => { + if (!isString(val)) return false; + return !Number.isNaN(Number(val)); + }; + const isWindow = (val) => val === window; + +//#endregion +//#region ../../packages/utils/raf.ts + const rAF = (fn) => isClient ? window.requestAnimationFrame(fn) : setTimeout(fn, 16); + const cAF = (handle) => isClient ? window.cancelAnimationFrame(handle) : clearTimeout(handle); + +//#endregion +//#region ../../packages/utils/strings.ts +/** + * fork from {@link https://github.com/sindresorhus/escape-string-regexp} + */ + const escapeStringRegexp = (string = "") => string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d"); + const capitalize = (str) => capitalize$1(str); + +//#endregion +//#region ../../packages/utils/objects.ts + const keysOf = (arr) => Object.keys(arr); + const entriesOf = (arr) => Object.entries(arr); + const getProp = (obj, path, defaultValue) => { + return { + get value() { + return get(obj, path, defaultValue); + }, + set value(val) { + set(obj, path, val); + } + }; + }; + +//#endregion +//#region ../../packages/utils/error.ts + var ElementPlusError = class extends Error { + constructor(m) { + super(m); + this.name = "ElementPlusError"; + } + }; + function throwError(scope, m) { + throw new ElementPlusError(`[${scope}] ${m}`); + } + function debugWarn(scope, message) {} + +//#endregion +//#region ../../packages/utils/dom/style.ts + const SCOPE$9 = "utils/dom/style"; + const classNameToArray = (cls = "") => cls.split(" ").filter((item) => !!item.trim()); + const hasClass = (el, cls) => { + if (!el || !cls) return false; + if (cls.includes(" ")) throw new Error("className should not contain space."); + return el.classList.contains(cls); + }; + const addClass = (el, cls) => { + if (!el || !cls.trim()) return; + el.classList.add(...classNameToArray(cls)); + }; + const removeClass = (el, cls) => { + if (!el || !cls.trim()) return; + el.classList.remove(...classNameToArray(cls)); + }; + const getStyle = (element, styleName) => { + if (!isClient || !element || !styleName || isShadowRoot$1(element)) return ""; + let key = camelize(styleName); + if (key === "float") key = "cssFloat"; + try { + const style = element.style[key]; + if (style) return style; + const computed = document.defaultView?.getComputedStyle(element, ""); + return computed ? computed[key] : ""; + } catch { + return element.style[key]; + } + }; + const setStyle = (element, styleName, value) => { + if (!element || !styleName) return; + if (isObject$1(styleName)) entriesOf(styleName).forEach(([prop, value]) => setStyle(element, prop, value)); + else { + const key = camelize(styleName); + element.style[key] = value; + } + }; + function addUnit(value, defaultUnit = "px") { + if (!value && value !== 0) return ""; + if (isNumber(value) || isStringNumber(value)) return `${value}${defaultUnit}`; + else if (isString(value)) return value; + /* @__PURE__ */ debugWarn(SCOPE$9, "binding value must be a string or number"); + } + +//#endregion +//#region ../../packages/utils/dom/scroll.ts + const isScroll = (el, isVertical) => { + if (!isClient) return false; + const key = { + undefined: "overflow", + true: "overflow-y", + false: "overflow-x" + }[String(isVertical)]; + const overflow = getStyle(el, key); + return [ + "scroll", + "auto", + "overlay" + ].some((s) => overflow.includes(s)); + }; + const getScrollContainer = (el, isVertical) => { + if (!isClient) return; + let parent = el; + while (parent) { + if ([ + window, + document, + document.documentElement + ].includes(parent)) return window; + if (isScroll(parent, isVertical)) return parent; + if (isShadowRoot$1(parent)) parent = parent.host; + else parent = parent.parentNode; + } + return parent; + }; + let scrollBarWidth; + const getScrollBarWidth = (namespace) => { + if (!isClient) return 0; + if (scrollBarWidth !== void 0) return scrollBarWidth; + const outer = document.createElement("div"); + outer.className = `${namespace}-scrollbar__wrap`; + outer.style.visibility = "hidden"; + outer.style.width = "100px"; + outer.style.position = "absolute"; + outer.style.top = "-9999px"; + document.body.appendChild(outer); + const widthNoScroll = outer.offsetWidth; + outer.style.overflow = "scroll"; + const inner = document.createElement("div"); + inner.style.width = "100%"; + outer.appendChild(inner); + const widthWithScroll = inner.offsetWidth; + outer.parentNode?.removeChild(outer); + scrollBarWidth = widthNoScroll - widthWithScroll; + return scrollBarWidth; + }; + /** + * Scroll with in the container element, positioning the **selected** element at the top + * of the container + */ + function scrollIntoView(container, selected) { + if (!isClient) return; + if (!selected) { + container.scrollTop = 0; + return; + } + const offsetParents = []; + let pointer = selected.offsetParent; + while (pointer !== null && container !== pointer && container.contains(pointer)) { + offsetParents.push(pointer); + pointer = pointer.offsetParent; + } + const top = selected.offsetTop + offsetParents.reduce((prev, curr) => prev + curr.offsetTop, 0); + const bottom = top + selected.offsetHeight; + const viewRectTop = container.scrollTop; + const viewRectBottom = viewRectTop + container.clientHeight; + if (top < viewRectTop) container.scrollTop = top; + else if (bottom > viewRectBottom) container.scrollTop = bottom - container.clientHeight; + } + function animateScrollTo(container, from, to, duration, callback) { + const startTime = Date.now(); + let handle; + const scroll = () => { + const time = Date.now() - startTime; + const nextScrollTop = easeInOutCubic(time > duration ? duration : time, from, to, duration); + if (isWindow(container)) container.scrollTo(window.pageXOffset, nextScrollTop); + else container.scrollTop = nextScrollTop; + if (time < duration) handle = rAF(scroll); + else if (isFunction$1(callback)) callback(); + }; + scroll(); + return () => { + handle && cAF(handle); + }; + } + const getScrollElement = (target, container) => { + if (isWindow(container)) return target.ownerDocument.documentElement; + return container; + }; + const getScrollTop = (container) => { + if (isWindow(container)) return window.scrollY; + return container.scrollTop; + }; + +//#endregion +//#region ../../packages/utils/dom/element.ts + const getElement = ((target) => { + if (!isClient || target === "") return null; + if (isString(target)) try { + return document.querySelector(target); + } catch { + return null; + } + return target; + }); + +//#endregion +//#region ../../packages/utils/vue/global-node.ts + const globalNodes = []; + let target = !isClient ? void 0 : document.body; + function createGlobalNode(id) { + const el = document.createElement("div"); + if (id !== void 0) el.setAttribute("id", id); + if (target) { + target.appendChild(el); + globalNodes.push(el); + } + return el; + } + function removeGlobalNode(el) { + globalNodes.splice(globalNodes.indexOf(el), 1); + el.remove(); + } + +//#endregion +//#region ../../node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.25/node_modules/@element-plus/icons-vue/dist/index.js +/*! Element Plus Icons Vue v2.3.2 */ + var arrow_down_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ArrowDown", + __name: "arrow-down", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M831.872 340.864 512 652.672 192.128 340.864a30.59 30.59 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.59 30.59 0 0 0-42.752 0z" + })])); + } + }); + var arrow_left_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ArrowLeft", + __name: "arrow-left", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.59 30.59 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.59 30.59 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0" + })])); + } + }); + var arrow_right_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ArrowRight", + __name: "arrow-right", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M340.864 149.312a30.59 30.59 0 0 0 0 42.752L652.736 512 340.864 831.872a30.59 30.59 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z" + })])); + } + }); + var arrow_up_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ArrowUp", + __name: "arrow-up", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0" + })])); + } + }); + var back_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "Back", + __name: "back", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64" + }), (0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312z" + })])); + } + }); + var calendar_default$1 = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "Calendar", + __name: "calendar", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64" + })])); + } + }); + var caret_right_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "CaretRight", + __name: "caret-right", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M384 192v640l384-320.064z" + })])); + } + }); + var caret_top_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "CaretTop", + __name: "caret-top", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M512 320 192 704h639.936z" + })])); + } + }); + var check_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "Check", + __name: "check", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z" + })])); + } + }); + var circle_check_filled_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "CircleCheckFilled", + __name: "circle-check-filled", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z" + })])); + } + }); + var circle_check_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "CircleCheck", + __name: "circle-check", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896" + }), (0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752z" + })])); + } + }); + var circle_close_filled_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "CircleCloseFilled", + __name: "circle-close-filled", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z" + })])); + } + }); + var circle_close_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "CircleClose", + __name: "circle-close", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z" + }), (0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896" + })])); + } + }); + var clock_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "Clock", + __name: "clock", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + (0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896" + }), + (0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32" + }), + (0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32" + }) + ])); + } + }); + var close_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "Close", + __name: "close", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z" + })])); + } + }); + var d_arrow_left_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "DArrowLeft", + __name: "d-arrow-left", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.59 30.59 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.59 30.59 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672zm256 0a29.12 29.12 0 0 1 41.728 0 30.59 30.59 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.59 30.59 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672z" + })])); + } + }); + var d_arrow_right_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "DArrowRight", + __name: "d-arrow-right", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.59 30.59 0 0 1 0-42.752L764.736 512 452.864 192a30.59 30.59 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.59 30.59 0 0 1 0-42.752L508.736 512 196.864 192a30.59 30.59 0 0 1 0-42.688" + })])); + } + }); + var delete_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "Delete", + __name: "delete", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32" + })])); + } + }); + var document_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "Document", + __name: "document", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h160v64H320zm0 384h384v64H320z" + })])); + } + }); + var full_screen_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "FullScreen", + __name: "full-screen", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z" + })])); + } + }); + var hide_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "Hide", + __name: "hide", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M876.8 156.8c0-9.6-3.2-16-9.6-22.4s-12.8-9.6-22.4-9.6-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176S0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4 12.8 9.6 22.4 9.6 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4m-646.4 528Q115.2 579.2 76.8 512q43.2-72 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4m140.8-96Q352 555.2 352 512c0-44.8 16-83.2 48-112s67.2-48 112-48c28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6q-43.2 72-153.6 172.8c-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176S1024 528 1024 512s-48.001-73.6-134.401-176" + }), (0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112s-67.2 48-112 48" + })])); + } + }); + var info_filled_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "InfoFilled", + __name: "info-filled", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.99 12.99 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z" + })])); + } + }); + var loading_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "Loading", + __name: "loading", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248m452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248M828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0" + })])); + } + }); + var minus_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "Minus", + __name: "minus", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64" + })])); + } + }); + var more_filled_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "MoreFilled", + __name: "more-filled", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224" + })])); + } + }); + var more_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "More", + __name: "more", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96" + })])); + } + }); + var picture_filled_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "PictureFilled", + __name: "picture-filled", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112M256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384" + })])); + } + }); + var plus_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "Plus", + __name: "plus", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z" + })])); + } + }); + var question_filled_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "QuestionFilled", + __name: "question-filled", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592q0-64.416-42.24-101.376c-28.16-25.344-65.472-37.312-111.232-37.312m-12.672 406.208a54.27 54.27 0 0 0-38.72 14.784 49.4 49.4 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.85 54.85 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.97 51.97 0 0 0-15.488-38.016 55.94 55.94 0 0 0-39.424-14.784" + })])); + } + }); + var refresh_left_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "RefreshLeft", + __name: "refresh-left", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z" + })])); + } + }); + var refresh_right_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "RefreshRight", + __name: "refresh-right", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88" + })])); + } + }); + var scale_to_original_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ScaleToOriginal", + __name: "scale-to-original", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.12 30.12 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.12 30.12 0 0 0-30.118-30.118m-361.412 0a30.12 30.12 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.12 30.12 0 0 0-30.118-30.118M512 361.412a30.12 30.12 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.12 30.12 0 0 0 512 361.412M512 512a30.12 30.12 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.12 30.12 0 0 0 512 512" + })])); + } + }); + var search_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "Search", + __name: "search", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704" + })])); + } + }); + var sort_down_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "SortDown", + __name: "sort-down", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M576 96v709.568L333.312 562.816A32 32 0 1 0 288 608l297.408 297.344A32 32 0 0 0 640 882.688V96a32 32 0 0 0-64 0" + })])); + } + }); + var sort_up_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "SortUp", + __name: "sort-up", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M384 141.248V928a32 32 0 1 0 64 0V218.56l242.688 242.688A32 32 0 1 0 736 416L438.592 118.656A32 32 0 0 0 384 141.248" + })])); + } + }); + var star_filled_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "StarFilled", + __name: "star-filled", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M313.6 924.48a70.4 70.4 0 0 1-74.152-5.365 70.4 70.4 0 0 1-27.992-68.875l37.888-220.928L88.96 472.96a70.4 70.4 0 0 1 3.788-104.225A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 100.246-28.595 70.4 70.4 0 0 1 25.962 28.595l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z" + })])); + } + }); + var star_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "Star", + __name: "star", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z" + })])); + } + }); + var success_filled_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "SuccessFilled", + __name: "success-filled", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z" + })])); + } + }); + var view_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "View", + __name: "view", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288m0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.19 160.19 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160" + })])); + } + }); + var warning_filled_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "WarningFilled", + __name: "warning-filled", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.43 58.43 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.43 58.43 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4" + })])); + } + }); + var zoom_in_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ZoomIn", + __name: "zoom-in", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z" + })])); + } + }); + var zoom_out_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ZoomOut", + __name: "zoom-out", + setup(__props) { + return (_ctx, _cache) => ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [(0, vue.createElementVNode)("path", { + fill: "currentColor", + d: "m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64" + })])); + } + }); + +//#endregion +//#region ../../packages/utils/vue/props/runtime.ts + const epPropKey = "__epPropKey"; + const definePropType = (val) => val; + const isEpProp = (val) => isObject$1(val) && !!val[epPropKey]; + /** + * @description Build prop. It can better optimize prop types + * @description 生成 prop,能更好地优化类型 + * @example + // limited options + // the type will be PropType<'light' | 'dark'> + buildProp({ + type: String, + values: ['light', 'dark'], + } as const) + * @example + // limited options and other types + // the type will be PropType<'small' | 'large' | number> + buildProp({ + type: [String, Number], + values: ['small', 'large'], + validator: (val: unknown): val is number => typeof val === 'number', + } as const) + @link see more: https://github.com/element-plus/element-plus/pull/3341 + */ + const buildProp = (prop, key) => { + if (!isObject$1(prop) || isEpProp(prop)) return prop; + const { values, required, default: defaultValue, type, validator } = prop; + const epProp = { + type, + required: !!required, + validator: values || validator ? (val) => { + let valid = false; + let allowedValues = []; + if (values) { + allowedValues = Array.from(values); + if (hasOwn(prop, "default")) allowedValues.push(defaultValue); + valid ||= allowedValues.includes(val); + } + if (validator) valid ||= validator(val); + if (!valid && allowedValues.length > 0) { + const allowValuesText = [...new Set(allowedValues)].map((value) => JSON.stringify(value)).join(", "); + (0, vue.warn)(`Invalid prop: validation failed${key ? ` for prop "${key}"` : ""}. Expected one of [${allowValuesText}], got value ${JSON.stringify(val)}.`); + } + return valid; + } : void 0, + [epPropKey]: true + }; + if (hasOwn(prop, "default")) epProp.default = defaultValue; + return epProp; + }; + const buildProps = (props) => fromPairs(Object.entries(props).map(([key, option]) => [key, buildProp(option, key)])); + +//#endregion +//#region ../../packages/utils/vue/icon.ts + const iconPropType = definePropType([ + String, + Object, + Function + ]); + const CloseComponents = { Close: close_default }; + const TypeComponents = { + Close: close_default, + SuccessFilled: success_filled_default, + InfoFilled: info_filled_default, + WarningFilled: warning_filled_default, + CircleCloseFilled: circle_close_filled_default + }; + const TypeComponentsMap = { + primary: info_filled_default, + success: success_filled_default, + warning: warning_filled_default, + error: circle_close_filled_default, + info: info_filled_default + }; + const ValidateComponentsMap = { + validating: loading_default, + success: circle_check_default, + error: circle_close_default + }; + +//#endregion +//#region ../../packages/utils/vue/install.ts + const withPropsDefaultsSetter = (target) => { + const _p = target.props; + const props = isArray$1(_p) ? fromPairs(_p.map((key) => [key, {}])) : _p; + target.setPropsDefaults = (defaults) => { + if (!props) return; + for (const [key, value] of Object.entries(defaults)) { + const prop = props[key]; + if (!hasOwn(props, key)) continue; + if (isPlainObject(prop)) { + props[key] = { + ...prop, + default: value + }; + continue; + } + props[key] = { + type: prop, + default: value + }; + } + target.props = props; + }; + }; + const withInstall = (main, extra) => { + main.install = (app) => { + for (const comp of [main, ...Object.values(extra ?? {})]) app.component(comp.name, comp); + }; + if (extra) for (const [key, comp] of Object.entries(extra)) main[key] = comp; + withPropsDefaultsSetter(main); + return main; + }; + const withInstallFunction = (fn, name) => { + fn.install = (app) => { + fn._context = app._context; + app.config.globalProperties[name] = fn; + }; + return fn; + }; + const withInstallDirective = (directive, name) => { + directive.install = (app) => { + app.directive(name, directive); + }; + return directive; + }; + const withNoopInstall = (component) => { + component.install = NOOP; + withPropsDefaultsSetter(component); + return component; + }; + +//#endregion +//#region ../../packages/utils/vue/refs.ts + const composeRefs = (...refs) => { + return (el) => { + refs.forEach((ref) => { + ref.value = el; + }); + }; + }; + +//#endregion +//#region ../../packages/utils/vue/validator.ts + const isValidComponentSize = (val) => ["", ...componentSizes].includes(val); + +//#endregion +//#region ../../packages/utils/vue/vnode.ts + const SCOPE$8 = "utils/vue/vnode"; + let PatchFlags = /* @__PURE__ */ function(PatchFlags) { + PatchFlags[PatchFlags["TEXT"] = 1] = "TEXT"; + PatchFlags[PatchFlags["CLASS"] = 2] = "CLASS"; + PatchFlags[PatchFlags["STYLE"] = 4] = "STYLE"; + PatchFlags[PatchFlags["PROPS"] = 8] = "PROPS"; + PatchFlags[PatchFlags["FULL_PROPS"] = 16] = "FULL_PROPS"; + PatchFlags[PatchFlags["HYDRATE_EVENTS"] = 32] = "HYDRATE_EVENTS"; + PatchFlags[PatchFlags["STABLE_FRAGMENT"] = 64] = "STABLE_FRAGMENT"; + PatchFlags[PatchFlags["KEYED_FRAGMENT"] = 128] = "KEYED_FRAGMENT"; + PatchFlags[PatchFlags["UNKEYED_FRAGMENT"] = 256] = "UNKEYED_FRAGMENT"; + PatchFlags[PatchFlags["NEED_PATCH"] = 512] = "NEED_PATCH"; + PatchFlags[PatchFlags["DYNAMIC_SLOTS"] = 1024] = "DYNAMIC_SLOTS"; + PatchFlags[PatchFlags["HOISTED"] = -1] = "HOISTED"; + PatchFlags[PatchFlags["BAIL"] = -2] = "BAIL"; + return PatchFlags; + }({}); + function isFragment(node) { + return (0, vue.isVNode)(node) && node.type === vue.Fragment; + } + function isComment(node) { + return (0, vue.isVNode)(node) && node.type === vue.Comment; + } + function isValidElementNode(node) { + return (0, vue.isVNode)(node) && !isFragment(node) && !isComment(node); + } + const getNormalizedProps = (node) => { + if (!(0, vue.isVNode)(node)) { + /* @__PURE__ */ debugWarn(SCOPE$8, "[getNormalizedProps] must be a VNode"); + return {}; + } + const raw = node.props || {}; + const type = ((0, vue.isVNode)(node.type) ? node.type.props : void 0) || {}; + const props = {}; + Object.keys(type).forEach((key) => { + if (hasOwn(type[key], "default")) props[key] = type[key].default; + }); + Object.keys(raw).forEach((key) => { + props[camelize(key)] = raw[key]; + }); + return props; + }; + const flattedChildren = (children) => { + const vNodes = isArray$1(children) ? children : [children]; + const result = []; + vNodes.forEach((child) => { + if (isArray$1(child)) result.push(...flattedChildren(child)); + else if ((0, vue.isVNode)(child) && child.component?.subTree) result.push(child, ...flattedChildren(child.component.subTree)); + else if ((0, vue.isVNode)(child) && isArray$1(child.children)) result.push(...flattedChildren(child.children)); + else if ((0, vue.isVNode)(child) && child.shapeFlag === 2) result.push(...flattedChildren(child.type())); + else result.push(child); + }); + return result; + }; + +//#endregion +//#region ../../packages/utils/arrays.ts + const unique = (arr) => [...new Set(arr)]; + const extractFirst = (arr) => { + return isArray$1(arr) ? arr[0] : arr; + }; + /** like `_.castArray`, except falsy value returns empty array. */ + const castArray = (arr) => { + if (!arr && arr !== 0) return []; + return isArray$1(arr) ? arr : [arr]; + }; + +//#endregion +//#region ../../packages/utils/typescript.ts + const mutable = (val) => val; + +//#endregion +//#region ../../packages/utils/throttleByRaf.ts + function throttleByRaf(cb) { + let timer = 0; + const throttle = (...args) => { + if (timer) cAF(timer); + timer = rAF(() => { + cb(...args); + timer = 0; + }); + }; + throttle.cancel = () => { + cAF(timer); + timer = 0; + }; + return throttle; + } + +//#endregion +//#region ../../packages/utils/numbers.ts +/** + * Due to browser rendering and calculation precision loss issues, + * boundary checks cannot be based solely on value equality; + * a certain range of fluctuation is permissible. + */ + function isGreaterThan(a, b, epsilon = .03) { + return a - b > epsilon; + } + +//#endregion +//#region ../../packages/hooks/use-attrs/index.ts + const DEFAULT_EXCLUDE_KEYS = ["class", "style"]; + const LISTENER_PREFIX = /^on[A-Z]/; + const useAttrs = (params = {}) => { + const { excludeListeners = false, excludeKeys } = params; + const allExcludeKeys = (0, vue.computed)(() => { + return (excludeKeys?.value || []).concat(DEFAULT_EXCLUDE_KEYS); + }); + const instance = (0, vue.getCurrentInstance)(); + if (!instance) { + /* @__PURE__ */ debugWarn("use-attrs", "getCurrentInstance() returned null. useAttrs() must be called at the top of a setup function"); + return (0, vue.computed)(() => ({})); + } + return (0, vue.computed)(() => fromPairs(Object.entries(instance.proxy?.$attrs).filter(([key]) => !allExcludeKeys.value.includes(key) && !(excludeListeners && LISTENER_PREFIX.test(key))))); + }; + +//#endregion +//#region ../../packages/hooks/use-calc-input-width/index.ts + function useCalcInputWidth() { + const calculatorRef = (0, vue.shallowRef)(); + const calculatorWidth = (0, vue.ref)(0); + const inputStyle = (0, vue.computed)(() => ({ minWidth: `${Math.max(calculatorWidth.value, MINIMUM_INPUT_WIDTH)}px` })); + const resetCalculatorWidth = () => { + calculatorWidth.value = calculatorRef.value?.getBoundingClientRect().width ?? 0; + }; + useResizeObserver(calculatorRef, resetCalculatorWidth); + return { + calculatorRef, + calculatorWidth, + inputStyle + }; + } + +//#endregion +//#region ../../packages/hooks/use-deprecated/index.ts + const useDeprecated = ({ from, replacement, scope, version, ref, type = "API" }, condition) => { + (0, vue.watch)(() => (0, vue.unref)(condition), (val) => { + if (val) /* @__PURE__ */ debugWarn(scope, `[${type}] ${from} is about to be deprecated in version ${version}, please use ${replacement} instead. +For more detail, please visit: ${ref} +`); + }, { immediate: true }); + }; + +//#endregion +//#region ../../packages/hooks/use-draggable/index.ts + const useDraggable = (targetRef, dragRef, draggable, overflow) => { + const transform = { + offsetX: 0, + offsetY: 0 + }; + const isDragging = (0, vue.ref)(false); + const adjustPosition = (moveX, moveY) => { + if (targetRef.value) { + const { offsetX, offsetY } = transform; + const targetRect = targetRef.value.getBoundingClientRect(); + const targetLeft = targetRect.left; + const targetTop = targetRect.top; + const targetWidth = targetRect.width; + const targetHeight = targetRect.height; + const clientWidth = document.documentElement.clientWidth; + const clientHeight = document.documentElement.clientHeight; + const minLeft = -targetLeft + offsetX; + const minTop = -targetTop + offsetY; + const maxLeft = clientWidth - targetLeft - targetWidth + offsetX; + const maxTop = clientHeight - targetTop - (targetHeight < clientHeight ? targetHeight : 0) + offsetY; + if (!overflow?.value) { + moveX = Math.min(Math.max(moveX, minLeft), maxLeft); + moveY = Math.min(Math.max(moveY, minTop), maxTop); + } + transform.offsetX = moveX; + transform.offsetY = moveY; + targetRef.value.style.transform = `translate(${addUnit(moveX)}, ${addUnit(moveY)})`; + } + }; + const onMousedown = (e) => { + const downX = e.clientX; + const downY = e.clientY; + const { offsetX, offsetY } = transform; + const onMousemove = (e) => { + if (!isDragging.value) isDragging.value = true; + adjustPosition(offsetX + e.clientX - downX, offsetY + e.clientY - downY); + }; + const onMouseup = () => { + isDragging.value = false; + document.removeEventListener("mousemove", onMousemove); + document.removeEventListener("mouseup", onMouseup); + }; + document.addEventListener("mousemove", onMousemove); + document.addEventListener("mouseup", onMouseup); + }; + const onDraggable = () => { + if (dragRef.value && targetRef.value) { + dragRef.value.addEventListener("mousedown", onMousedown); + window.addEventListener("resize", updatePosition); + } + }; + const offDraggable = () => { + if (dragRef.value && targetRef.value) { + dragRef.value.removeEventListener("mousedown", onMousedown); + window.removeEventListener("resize", updatePosition); + } + }; + const resetPosition = () => { + transform.offsetX = 0; + transform.offsetY = 0; + if (targetRef.value) targetRef.value.style.transform = ""; + }; + const updatePosition = () => { + const { offsetX, offsetY } = transform; + adjustPosition(offsetX, offsetY); + }; + (0, vue.onMounted)(() => { + (0, vue.watchEffect)(() => { + if (draggable.value) onDraggable(); + else offDraggable(); + }); + }); + (0, vue.onBeforeUnmount)(() => { + offDraggable(); + }); + return { + isDragging, + resetPosition, + updatePosition + }; + }; + +//#endregion +//#region ../../packages/hooks/use-focus/index.ts + const useFocus = (el) => { + return { focus: () => { + el.value?.focus?.(); + } }; + }; + +//#endregion +//#region ../../packages/locale/lang/en.ts + var en_default = { + name: "en", + el: { + breadcrumb: { label: "Breadcrumb" }, + colorpicker: { + confirm: "OK", + clear: "Clear", + defaultLabel: "color picker", + description: "current color is {color}. press enter to select a new color.", + alphaLabel: "pick alpha value", + alphaDescription: "alpha {alpha}, current color is {color}", + hueLabel: "pick hue value", + hueDescription: "hue {hue}, current color is {color}", + svLabel: "pick saturation and brightness value", + svDescription: "saturation {saturation}, brightness {brightness}, current color is {color}", + predefineDescription: "select {value} as the color" + }, + datepicker: { + now: "Now", + today: "Today", + cancel: "Cancel", + clear: "Clear", + confirm: "OK", + dateTablePrompt: "Use the arrow keys and enter to select the day of the month", + monthTablePrompt: "Use the arrow keys and enter to select the month", + yearTablePrompt: "Use the arrow keys and enter to select the year", + selectedDate: "Selected date", + selectDate: "Select date", + selectTime: "Select time", + startDate: "Start Date", + startTime: "Start Time", + endDate: "End Date", + endTime: "End Time", + prevYear: "Previous Year", + nextYear: "Next Year", + prevMonth: "Previous Month", + nextMonth: "Next Month", + year: "", + month1: "January", + month2: "February", + month3: "March", + month4: "April", + month5: "May", + month6: "June", + month7: "July", + month8: "August", + month9: "September", + month10: "October", + month11: "November", + month12: "December", + weeks: { + sun: "Sun", + mon: "Mon", + tue: "Tue", + wed: "Wed", + thu: "Thu", + fri: "Fri", + sat: "Sat" + }, + weeksFull: { + sun: "Sunday", + mon: "Monday", + tue: "Tuesday", + wed: "Wednesday", + thu: "Thursday", + fri: "Friday", + sat: "Saturday" + }, + months: { + jan: "Jan", + feb: "Feb", + mar: "Mar", + apr: "Apr", + may: "May", + jun: "Jun", + jul: "Jul", + aug: "Aug", + sep: "Sep", + oct: "Oct", + nov: "Nov", + dec: "Dec" + } + }, + inputNumber: { + decrease: "decrease number", + increase: "increase number" + }, + select: { + loading: "Loading", + noMatch: "No matching data", + noData: "No data", + placeholder: "Select" + }, + mention: { loading: "Loading" }, + dropdown: { toggleDropdown: "Toggle Dropdown" }, + cascader: { + noMatch: "No matching data", + loading: "Loading", + placeholder: "Select", + noData: "No data" + }, + pagination: { + goto: "Go to", + pagesize: "/page", + total: "Total {total}", + pageClassifier: "", + page: "Page", + prev: "Go to previous page", + next: "Go to next page", + currentPage: "page {pager}", + prevPages: "Previous {pager} pages", + nextPages: "Next {pager} pages", + deprecationWarning: "Deprecated usages detected, please refer to the el-pagination documentation for more details" + }, + dialog: { close: "Close this dialog" }, + drawer: { close: "Close this dialog" }, + messagebox: { + title: "Message", + confirm: "OK", + cancel: "Cancel", + error: "Illegal input", + close: "Close this dialog" + }, + upload: { + deleteTip: "press delete to remove", + delete: "Delete", + preview: "Preview", + continue: "Continue" + }, + slider: { + defaultLabel: "slider between {min} and {max}", + defaultRangeStartLabel: "pick start value", + defaultRangeEndLabel: "pick end value" + }, + table: { + emptyText: "No Data", + confirmFilter: "Confirm", + resetFilter: "Reset", + clearFilter: "All", + sumText: "Sum", + selectAllLabel: "Select all rows", + selectRowLabel: "Select this row", + expandRowLabel: "Expand this row", + collapseRowLabel: "Collapse this row", + sortLabel: "Sort by {column}", + filterLabel: "Filter by {column}" + }, + tag: { close: "Close this tag" }, + tour: { + next: "Next", + previous: "Previous", + finish: "Finish", + close: "Close this dialog" + }, + tree: { emptyText: "No Data" }, + transfer: { + noMatch: "No matching data", + noData: "No data", + titles: ["List 1", "List 2"], + filterPlaceholder: "Enter keyword", + noCheckedFormat: "{total} items", + hasCheckedFormat: "{checked}/{total} checked" + }, + image: { error: "FAILED" }, + pageHeader: { title: "Back" }, + popconfirm: { + confirmButtonText: "Yes", + cancelButtonText: "No" + }, + carousel: { + leftArrow: "Carousel arrow left", + rightArrow: "Carousel arrow right", + indicator: "Carousel switch to index {index}" + } + } + }; + +//#endregion +//#region ../../packages/hooks/use-locale/index.ts + const buildTranslator = (locale) => (path, option) => translate(path, option, (0, vue.unref)(locale)); + const translate = (path, option, locale) => get(locale, path, path).replace(/\{(\w+)\}/g, (_, key) => `${option?.[key] ?? `{${key}}`}`); + const buildLocaleContext = (locale) => { + return { + lang: (0, vue.computed)(() => (0, vue.unref)(locale).name), + locale: (0, vue.isRef)(locale) ? locale : (0, vue.ref)(locale), + t: buildTranslator(locale) + }; + }; + const localeContextKey = Symbol("localeContextKey"); + const useLocale = (localeOverrides) => { + const locale = localeOverrides || (0, vue.inject)(localeContextKey, (0, vue.ref)()); + return buildLocaleContext((0, vue.computed)(() => locale.value || en_default)); + }; + +//#endregion +//#region ../../packages/hooks/use-namespace/index.ts + const defaultNamespace = "el"; + const statePrefix = "is-"; + const _bem = (namespace, block, blockSuffix, element, modifier) => { + let cls = `${namespace}-${block}`; + if (blockSuffix) cls += `-${blockSuffix}`; + if (element) cls += `__${element}`; + if (modifier) cls += `--${modifier}`; + return cls; + }; + const namespaceContextKey = Symbol("namespaceContextKey"); + const useGetDerivedNamespace = (namespaceOverrides) => { + const derivedNamespace = namespaceOverrides || ((0, vue.getCurrentInstance)() ? (0, vue.inject)(namespaceContextKey, (0, vue.ref)(defaultNamespace)) : (0, vue.ref)(defaultNamespace)); + return (0, vue.computed)(() => { + return (0, vue.unref)(derivedNamespace) || defaultNamespace; + }); + }; + const useNamespace = (block, namespaceOverrides) => { + const namespace = useGetDerivedNamespace(namespaceOverrides); + const b = (blockSuffix = "") => _bem(namespace.value, block, blockSuffix, "", ""); + const e = (element) => element ? _bem(namespace.value, block, "", element, "") : ""; + const m = (modifier) => modifier ? _bem(namespace.value, block, "", "", modifier) : ""; + const be = (blockSuffix, element) => blockSuffix && element ? _bem(namespace.value, block, blockSuffix, element, "") : ""; + const em = (element, modifier) => element && modifier ? _bem(namespace.value, block, "", element, modifier) : ""; + const bm = (blockSuffix, modifier) => blockSuffix && modifier ? _bem(namespace.value, block, blockSuffix, "", modifier) : ""; + const bem = (blockSuffix, element, modifier) => blockSuffix && element && modifier ? _bem(namespace.value, block, blockSuffix, element, modifier) : ""; + const is = (name, ...args) => { + const state = args.length >= 1 ? args[0] : true; + return name && state ? `${statePrefix}${name}` : ""; + }; + const cssVar = (object) => { + const styles = {}; + for (const key in object) if (object[key]) styles[`--${namespace.value}-${key}`] = object[key]; + return styles; + }; + const cssVarBlock = (object) => { + const styles = {}; + for (const key in object) if (object[key]) styles[`--${namespace.value}-${block}-${key}`] = object[key]; + return styles; + }; + const cssVarName = (name) => `--${namespace.value}-${name}`; + const cssVarBlockName = (name) => `--${namespace.value}-${block}-${name}`; + return { + namespace, + b, + e, + m, + be, + em, + bm, + bem, + is, + cssVar, + cssVarName, + cssVarBlock, + cssVarBlockName + }; + }; + +//#endregion +//#region ../../packages/hooks/use-lockscreen/index.ts +/** + * Hook that monitoring the ref value to lock or unlock the screen. + * When the trigger became true, it assumes modal is now opened and vice versa. + * @param trigger {Ref} + */ + const useLockscreen = (trigger, options = {}) => { + if (!(0, vue.isRef)(trigger)) throwError("[useLockscreen]", "You need to pass a ref param to this function"); + const ns = options.ns || useNamespace("popup"); + const hiddenCls = (0, vue.computed)(() => ns.bm("parent", "hidden")); + let scrollBarWidth = 0; + let withoutHiddenClass = false; + let bodyWidth = "0"; + let cleaned = false; + const cleanup = () => { + if (cleaned) return; + cleaned = true; + setTimeout(() => { + if (typeof document === "undefined") return; + if (withoutHiddenClass && document) { + document.body.style.width = bodyWidth; + removeClass(document.body, hiddenCls.value); + } + }, 200); + }; + (0, vue.watch)(trigger, (val) => { + if (!val) { + cleanup(); + return; + } + cleaned = false; + withoutHiddenClass = !hasClass(document.body, hiddenCls.value); + if (withoutHiddenClass) { + bodyWidth = document.body.style.width; + addClass(document.body, hiddenCls.value); + } + scrollBarWidth = getScrollBarWidth(ns.namespace.value); + const bodyHasOverflow = document.documentElement.clientHeight < document.body.scrollHeight; + const bodyOverflowY = getStyle(document.body, "overflowY"); + if (scrollBarWidth > 0 && (bodyHasOverflow || bodyOverflowY === "scroll") && withoutHiddenClass) document.body.style.width = `calc(100% - ${scrollBarWidth}px)`; + }); + (0, vue.onScopeDispose)(() => cleanup()); + }; + +//#endregion +//#region ../../packages/hooks/use-modal/index.ts + const modalStack = []; + const closeModal = (e) => { + if (modalStack.length === 0) return; + if (getEventCode(e) === EVENT_CODE.esc) { + e.stopPropagation(); + modalStack[modalStack.length - 1].handleClose(); + } + }; + const useModal = (instance, visibleRef) => { + (0, vue.watch)(visibleRef, (val) => { + if (val) modalStack.push(instance); + else modalStack.splice(modalStack.indexOf(instance), 1); + }); + }; + if (isClient) useEventListener(document, "keydown", closeModal); + +//#endregion +//#region ../../packages/hooks/use-model-toggle/index.ts + const _prop = buildProp({ + type: definePropType(Boolean), + default: null + }); + const _event = buildProp({ type: definePropType(Function) }); + const createModelToggleComposable = (name) => { + const updateEventKey = `update:${name}`; + const updateEventKeyRaw = `onUpdate:${name}`; + const useModelToggleEmits = [updateEventKey]; + const useModelToggleProps = { + [name]: _prop, + [updateEventKeyRaw]: _event + }; + const useModelToggle = ({ indicator, toggleReason, shouldHideWhenRouteChanges, shouldProceed, onShow, onHide }) => { + const instance = (0, vue.getCurrentInstance)(); + const { emit } = instance; + const props = instance.props; + const hasUpdateHandler = (0, vue.computed)(() => isFunction$1(props[updateEventKeyRaw])); + const isModelBindingAbsent = (0, vue.computed)(() => props[name] === null); + const doShow = (event) => { + if (indicator.value === true) return; + indicator.value = true; + if (toggleReason) toggleReason.value = event; + if (isFunction$1(onShow)) onShow(event); + }; + const doHide = (event) => { + if (indicator.value === false) return; + indicator.value = false; + if (toggleReason) toggleReason.value = event; + if (isFunction$1(onHide)) onHide(event); + }; + const show = (event) => { + if (props.disabled === true || isFunction$1(shouldProceed) && !shouldProceed()) return; + const shouldEmit = hasUpdateHandler.value && isClient; + if (shouldEmit) emit(updateEventKey, true); + if (isModelBindingAbsent.value || !shouldEmit) doShow(event); + }; + const hide = (event) => { + if (props.disabled === true || !isClient) return; + const shouldEmit = hasUpdateHandler.value && isClient; + if (shouldEmit) emit(updateEventKey, false); + if (isModelBindingAbsent.value || !shouldEmit) doHide(event); + }; + const onChange = (val) => { + if (!isBoolean(val)) return; + if (props.disabled && val) { + if (hasUpdateHandler.value) emit(updateEventKey, false); + } else if (indicator.value !== val) if (val) doShow(); + else doHide(); + }; + const toggle = () => { + if (indicator.value) hide(); + else show(); + }; + (0, vue.watch)(() => props[name], onChange); + if (shouldHideWhenRouteChanges && instance.appContext.config.globalProperties.$route !== void 0) (0, vue.watch)(() => ({ ...instance.proxy.$route }), () => { + if (shouldHideWhenRouteChanges.value && indicator.value) hide(); + }); + (0, vue.onMounted)(() => { + onChange(props[name]); + }); + return { + hide, + show, + toggle, + hasUpdateHandler + }; + }; + return { + useModelToggle, + useModelToggleProps, + useModelToggleEmits + }; + }; + const { useModelToggle, useModelToggleProps, useModelToggleEmits } = createModelToggleComposable("modelValue"); + +//#endregion +//#region ../../packages/hooks/use-prevent-global/index.ts + const usePreventGlobal = (indicator, evt, cb) => { + const prevent = (e) => { + if (cb(e)) e.stopImmediatePropagation(); + }; + let stop = void 0; + (0, vue.watch)(() => indicator.value, (val) => { + if (val) stop = useEventListener(document, evt, prevent, true); + else stop?.(); + }, { immediate: true }); + }; + +//#endregion +//#region ../../packages/hooks/use-prop/index.ts + const useProp = (name) => { + const vm = (0, vue.getCurrentInstance)(); + return (0, vue.computed)(() => (vm?.proxy?.$props)?.[name]); + }; + +//#endregion +//#region ../../node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/dist/index.mjs + var L = "top", W = "bottom", T$1 = "right", P$1 = "left", me = "auto", Q = [ + L, + W, + T$1, + P$1 + ], Y$1 = "start", Z = "end", Ye = "clippingParents", je = "viewport", ee = "popper", Ge = "reference", De = Q.reduce(function(e, t) { + return e.concat([t + "-" + Y$1, t + "-" + Z]); + }, []), Ee = [].concat(Q, [me]).reduce(function(e, t) { + return e.concat([ + t, + t + "-" + Y$1, + t + "-" + Z + ]); + }, []), Je = "beforeRead", Ke = "read", Qe = "afterRead", Ze = "beforeMain", et = "main", tt = "afterMain", nt = "beforeWrite", rt = "write", ot = "afterWrite", it = [ + Je, + Ke, + Qe, + Ze, + et, + tt, + nt, + rt, + ot + ]; + function V(e) { + return e ? (e.nodeName || "").toLowerCase() : null; + } + function B(e) { + if (e == null) return window; + if (e.toString() !== "[object Window]") { + var t = e.ownerDocument; + return t && t.defaultView || window; + } + return e; + } + function G(e) { + return e instanceof B(e).Element || e instanceof Element; + } + function R(e) { + return e instanceof B(e).HTMLElement || e instanceof HTMLElement; + } + function Ae(e) { + if (typeof ShadowRoot == "undefined") return !1; + return e instanceof B(e).ShadowRoot || e instanceof ShadowRoot; + } + function Tt(e) { + var t = e.state; + Object.keys(t.elements).forEach(function(n) { + var r = t.styles[n] || {}, o = t.attributes[n] || {}, a = t.elements[n]; + !R(a) || !V(a) || (Object.assign(a.style, r), Object.keys(o).forEach(function(c) { + var s = o[c]; + s === !1 ? a.removeAttribute(c) : a.setAttribute(c, s === !0 ? "" : s); + })); + }); + } + function Bt(e) { + var t = e.state, n = { + popper: { + position: t.options.strategy, + left: "0", + top: "0", + margin: "0" + }, + arrow: { position: "absolute" }, + reference: {} + }; + return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function() { + Object.keys(t.elements).forEach(function(r) { + var o = t.elements[r], a = t.attributes[r] || {}, s = Object.keys(t.styles.hasOwnProperty(r) ? t.styles[r] : n[r]).reduce(function(i, f) { + return i[f] = "", i; + }, {}); + !R(o) || !V(o) || (Object.assign(o.style, s), Object.keys(a).forEach(function(i) { + o.removeAttribute(i); + })); + }); + }; + } + var ke = { + name: "applyStyles", + enabled: !0, + phase: "write", + fn: Tt, + effect: Bt, + requires: ["computeStyles"] + }; + function C(e) { + return e.split("-")[0]; + } + var J = Math.max, ve = Math.min, te = Math.round; + function Le() { + var e = navigator.userAgentData; + return e != null && e.brands && Array.isArray(e.brands) ? e.brands.map(function(t) { + return t.brand + "/" + t.version; + }).join(" ") : navigator.userAgent; + } + function at() { + return !/^((?!chrome|android).)*safari/i.test(Le()); + } + function ne(e, t, n) { + t === void 0 && (t = !1), n === void 0 && (n = !1); + var r = e.getBoundingClientRect(), o = 1, a = 1; + t && R(e) && (o = e.offsetWidth > 0 && te(r.width) / e.offsetWidth || 1, a = e.offsetHeight > 0 && te(r.height) / e.offsetHeight || 1); + var s = (G(e) ? B(e) : window).visualViewport, i = !at() && n, f = (r.left + (i && s ? s.offsetLeft : 0)) / o, u = (r.top + (i && s ? s.offsetTop : 0)) / a, m = r.width / o, h = r.height / a; + return { + width: m, + height: h, + top: u, + right: f + m, + bottom: u + h, + left: f, + x: f, + y: u + }; + } + function Pe(e) { + var t = ne(e), n = e.offsetWidth, r = e.offsetHeight; + return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { + x: e.offsetLeft, + y: e.offsetTop, + width: n, + height: r + }; + } + function st(e, t) { + var n = t.getRootNode && t.getRootNode(); + if (e.contains(t)) return !0; + if (n && Ae(n)) { + var r = t; + do { + if (r && e.isSameNode(r)) return !0; + r = r.parentNode || r.host; + } while (r); + } + return !1; + } + function I$1(e) { + return B(e).getComputedStyle(e); + } + function Rt(e) { + return [ + "table", + "td", + "th" + ].indexOf(V(e)) >= 0; + } + function N$1(e) { + return ((G(e) ? e.ownerDocument : e.document) || window.document).documentElement; + } + function ye(e) { + return V(e) === "html" ? e : e.assignedSlot || e.parentNode || (Ae(e) ? e.host : null) || N$1(e); + } + function ft(e) { + return !R(e) || I$1(e).position === "fixed" ? null : e.offsetParent; + } + function Ht(e) { + var t = /firefox/i.test(Le()); + if (/Trident/i.test(Le()) && R(e)) { + if (I$1(e).position === "fixed") return null; + } + var o = ye(e); + for (Ae(o) && (o = o.host); R(o) && ["html", "body"].indexOf(V(o)) < 0;) { + var a = I$1(o); + if (a.transform !== "none" || a.perspective !== "none" || a.contain === "paint" || ["transform", "perspective"].indexOf(a.willChange) !== -1 || t && a.willChange === "filter" || t && a.filter && a.filter !== "none") return o; + o = o.parentNode; + } + return null; + } + function se(e) { + for (var t = B(e), n = ft(e); n && Rt(n) && I$1(n).position === "static";) n = ft(n); + return n && (V(n) === "html" || V(n) === "body" && I$1(n).position === "static") ? t : n || Ht(e) || t; + } + function Me(e) { + return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y"; + } + function fe(e, t, n) { + return J(e, ve(t, n)); + } + function St(e, t, n) { + var r = fe(e, t, n); + return r > n ? n : r; + } + function ct() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; + } + function ut(e) { + return Object.assign({}, ct(), e); + } + function pt(e, t) { + return t.reduce(function(n, r) { + return n[r] = e, n; + }, {}); + } + var Vt = function(e, t) { + return e = typeof e == "function" ? e(Object.assign({}, t.rects, { placement: t.placement })) : e, ut(typeof e != "number" ? e : pt(e, Q)); + }; + function Ct(e) { + var t, n = e.state, r = e.name, o = e.options, a = n.elements.arrow, c = n.modifiersData.popperOffsets, s = C(n.placement), i = Me(s), u = [P$1, T$1].indexOf(s) >= 0 ? "height" : "width"; + if (!(!a || !c)) { + var m = Vt(o.padding, n), h = Pe(a), l = i === "y" ? L : P$1, g = i === "y" ? W : T$1, p = n.rects.reference[u] + n.rects.reference[i] - c[i] - n.rects.popper[u], y = c[i] - n.rects.reference[i], b = se(a), x = b ? i === "y" ? b.clientHeight || 0 : b.clientWidth || 0 : 0, O = p / 2 - y / 2, d = m[l], v = x - h[u] - m[g], w = x / 2 - h[u] / 2 + O, $ = fe(d, w, v), j = i; + n.modifiersData[r] = (t = {}, t[j] = $, t.centerOffset = $ - w, t); + } + } + function qt(e) { + var t = e.state, r = e.options.element, o = r === void 0 ? "[data-popper-arrow]" : r; + o != null && (typeof o == "string" && (o = t.elements.popper.querySelector(o), !o) || st(t.elements.popper, o) && (t.elements.arrow = o)); + } + var lt = { + name: "arrow", + enabled: !0, + phase: "main", + fn: Ct, + effect: qt, + requires: ["popperOffsets"], + requiresIfExists: ["preventOverflow"] + }; + function re(e) { + return e.split("-")[1]; + } + var It = { + top: "auto", + right: "auto", + bottom: "auto", + left: "auto" + }; + function Nt(e, t) { + var n = e.x, r = e.y, o = t.devicePixelRatio || 1; + return { + x: te(n * o) / o || 0, + y: te(r * o) / o || 0 + }; + } + function dt(e) { + var t, n = e.popper, r = e.popperRect, o = e.placement, a = e.variation, c = e.offsets, s = e.position, i = e.gpuAcceleration, f = e.adaptive, u = e.roundOffsets, m = e.isFixed, h = c.x, l = h === void 0 ? 0 : h, g = c.y, p = g === void 0 ? 0 : g, y = typeof u == "function" ? u({ + x: l, + y: p + }) : { + x: l, + y: p + }; + l = y.x, p = y.y; + var b = c.hasOwnProperty("x"), x = c.hasOwnProperty("y"), O = P$1, d = L, v = window; + if (f) { + var w = se(n), $ = "clientHeight", j = "clientWidth"; + if (w === B(n) && (w = N$1(n), I$1(w).position !== "static" && s === "absolute" && ($ = "scrollHeight", j = "scrollWidth")), w = w, o === L || (o === P$1 || o === T$1) && a === Z) { + d = W; + var D = m && w === v && v.visualViewport ? v.visualViewport.height : w[$]; + p -= D - r.height, p *= i ? 1 : -1; + } + if (o === P$1 || (o === L || o === W) && a === Z) { + O = T$1; + var E = m && w === v && v.visualViewport ? v.visualViewport.width : w[j]; + l -= E - r.width, l *= i ? 1 : -1; + } + } + var A = Object.assign({ position: s }, f && It), H = u === !0 ? Nt({ + x: l, + y: p + }, B(n)) : { + x: l, + y: p + }; + if (l = H.x, p = H.y, i) { + var k; + return Object.assign({}, A, (k = {}, k[d] = x ? "0" : "", k[O] = b ? "0" : "", k.transform = (v.devicePixelRatio || 1) <= 1 ? "translate(" + l + "px, " + p + "px)" : "translate3d(" + l + "px, " + p + "px, 0)", k)); + } + return Object.assign({}, A, (t = {}, t[d] = x ? p + "px" : "", t[O] = b ? l + "px" : "", t.transform = "", t)); + } + function Ft(e) { + var t = e.state, n = e.options, r = n.gpuAcceleration, o = r === void 0 ? !0 : r, a = n.adaptive, c = a === void 0 ? !0 : a, s = n.roundOffsets, i = s === void 0 ? !0 : s, f = { + placement: C(t.placement), + variation: re(t.placement), + popper: t.elements.popper, + popperRect: t.rects.popper, + gpuAcceleration: o, + isFixed: t.options.strategy === "fixed" + }; + t.modifiersData.popperOffsets != null && (t.styles.popper = Object.assign({}, t.styles.popper, dt(Object.assign({}, f, { + offsets: t.modifiersData.popperOffsets, + position: t.options.strategy, + adaptive: c, + roundOffsets: i + })))), t.modifiersData.arrow != null && (t.styles.arrow = Object.assign({}, t.styles.arrow, dt(Object.assign({}, f, { + offsets: t.modifiersData.arrow, + position: "absolute", + adaptive: !1, + roundOffsets: i + })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }); + } + var We = { + name: "computeStyles", + enabled: !0, + phase: "beforeWrite", + fn: Ft, + data: {} + }, ge = { passive: !0 }; + function Ut(e) { + var t = e.state, n = e.instance, r = e.options, o = r.scroll, a = o === void 0 ? !0 : o, c = r.resize, s = c === void 0 ? !0 : c, i = B(t.elements.popper), f = [].concat(t.scrollParents.reference, t.scrollParents.popper); + return a && f.forEach(function(u) { + u.addEventListener("scroll", n.update, ge); + }), s && i.addEventListener("resize", n.update, ge), function() { + a && f.forEach(function(u) { + u.removeEventListener("scroll", n.update, ge); + }), s && i.removeEventListener("resize", n.update, ge); + }; + } + var Te = { + name: "eventListeners", + enabled: !0, + phase: "write", + fn: function() {}, + effect: Ut, + data: {} + }, _t = { + left: "right", + right: "left", + bottom: "top", + top: "bottom" + }; + function be(e) { + return e.replace(/left|right|bottom|top/g, function(t) { + return _t[t]; + }); + } + var zt = { + start: "end", + end: "start" + }; + function ht(e) { + return e.replace(/start|end/g, function(t) { + return zt[t]; + }); + } + function Be(e) { + var t = B(e); + return { + scrollLeft: t.pageXOffset, + scrollTop: t.pageYOffset + }; + } + function Re(e) { + return ne(N$1(e)).left + Be(e).scrollLeft; + } + function Xt(e, t) { + var n = B(e), r = N$1(e), o = n.visualViewport, a = r.clientWidth, c = r.clientHeight, s = 0, i = 0; + if (o) { + a = o.width, c = o.height; + var f = at(); + (f || !f && t === "fixed") && (s = o.offsetLeft, i = o.offsetTop); + } + return { + width: a, + height: c, + x: s + Re(e), + y: i + }; + } + function Yt(e) { + var t, n = N$1(e), r = Be(e), o = (t = e.ownerDocument) == null ? void 0 : t.body, a = J(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), c = J(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), s = -r.scrollLeft + Re(e), i = -r.scrollTop; + return I$1(o || n).direction === "rtl" && (s += J(n.clientWidth, o ? o.clientWidth : 0) - a), { + width: a, + height: c, + x: s, + y: i + }; + } + function He(e) { + var t = I$1(e), n = t.overflow, r = t.overflowX, o = t.overflowY; + return /auto|scroll|overlay|hidden/.test(n + o + r); + } + function mt(e) { + return [ + "html", + "body", + "#document" + ].indexOf(V(e)) >= 0 ? e.ownerDocument.body : R(e) && He(e) ? e : mt(ye(e)); + } + function ce(e, t) { + var n; + t === void 0 && (t = []); + var r = mt(e), o = r === ((n = e.ownerDocument) == null ? void 0 : n.body), a = B(r), c = o ? [a].concat(a.visualViewport || [], He(r) ? r : []) : r, s = t.concat(c); + return o ? s : s.concat(ce(ye(c))); + } + function Se(e) { + return Object.assign({}, e, { + left: e.x, + top: e.y, + right: e.x + e.width, + bottom: e.y + e.height + }); + } + function Gt(e, t) { + var n = ne(e, !1, t === "fixed"); + return n.top = n.top + e.clientTop, n.left = n.left + e.clientLeft, n.bottom = n.top + e.clientHeight, n.right = n.left + e.clientWidth, n.width = e.clientWidth, n.height = e.clientHeight, n.x = n.left, n.y = n.top, n; + } + function vt(e, t, n) { + return t === je ? Se(Xt(e, n)) : G(t) ? Gt(t, n) : Se(Yt(N$1(e))); + } + function Jt(e) { + var t = ce(ye(e)), r = ["absolute", "fixed"].indexOf(I$1(e).position) >= 0 && R(e) ? se(e) : e; + return G(r) ? t.filter(function(o) { + return G(o) && st(o, r) && V(o) !== "body"; + }) : []; + } + function Kt(e, t, n, r) { + var o = t === "clippingParents" ? Jt(e) : [].concat(t), a = [].concat(o, [n]), c = a[0], s = a.reduce(function(i, f) { + var u = vt(e, f, r); + return i.top = J(u.top, i.top), i.right = ve(u.right, i.right), i.bottom = ve(u.bottom, i.bottom), i.left = J(u.left, i.left), i; + }, vt(e, c, r)); + return s.width = s.right - s.left, s.height = s.bottom - s.top, s.x = s.left, s.y = s.top, s; + } + function yt(e) { + var t = e.reference, n = e.element, r = e.placement, o = r ? C(r) : null, a = r ? re(r) : null, c = t.x + t.width / 2 - n.width / 2, s = t.y + t.height / 2 - n.height / 2, i; + switch (o) { + case L: + i = { + x: c, + y: t.y - n.height + }; + break; + case W: + i = { + x: c, + y: t.y + t.height + }; + break; + case T$1: + i = { + x: t.x + t.width, + y: s + }; + break; + case P$1: + i = { + x: t.x - n.width, + y: s + }; + break; + default: i = { + x: t.x, + y: t.y + }; + } + var f = o ? Me(o) : null; + if (f != null) { + var u = f === "y" ? "height" : "width"; + switch (a) { + case Y$1: + i[f] = i[f] - (t[u] / 2 - n[u] / 2); + break; + case Z: + i[f] = i[f] + (t[u] / 2 - n[u] / 2); + break; + } + } + return i; + } + function oe(e, t) { + t === void 0 && (t = {}); + var n = t, r = n.placement, o = r === void 0 ? e.placement : r, a = n.strategy, c = a === void 0 ? e.strategy : a, s = n.boundary, i = s === void 0 ? Ye : s, f = n.rootBoundary, u = f === void 0 ? je : f, m = n.elementContext, h = m === void 0 ? ee : m, l = n.altBoundary, g = l === void 0 ? !1 : l, p = n.padding, y = p === void 0 ? 0 : p, b = ut(typeof y != "number" ? y : pt(y, Q)), x = h === ee ? Ge : ee, O = e.rects.popper, d = e.elements[g ? x : h], v = Kt(G(d) ? d : d.contextElement || N$1(e.elements.popper), i, u, c), w = ne(e.elements.reference), $ = yt({ + reference: w, + element: O, + placement: o + }), j = Se(Object.assign({}, O, $)), D = h === ee ? j : w, E = { + top: v.top - D.top + b.top, + bottom: D.bottom - v.bottom + b.bottom, + left: v.left - D.left + b.left, + right: D.right - v.right + b.right + }, A = e.modifiersData.offset; + if (h === ee && A) { + var H = A[o]; + Object.keys(E).forEach(function(k) { + var F = [T$1, W].indexOf(k) >= 0 ? 1 : -1, U = [L, W].indexOf(k) >= 0 ? "y" : "x"; + E[k] += H[U] * F; + }); + } + return E; + } + function Qt(e, t) { + t === void 0 && (t = {}); + var n = t, r = n.placement, o = n.boundary, a = n.rootBoundary, c = n.padding, s = n.flipVariations, i = n.allowedAutoPlacements, f = i === void 0 ? Ee : i, u = re(r), m = u ? s ? De : De.filter(function(g) { + return re(g) === u; + }) : Q, h = m.filter(function(g) { + return f.indexOf(g) >= 0; + }); + h.length === 0 && (h = m); + var l = h.reduce(function(g, p) { + return g[p] = oe(e, { + placement: p, + boundary: o, + rootBoundary: a, + padding: c + })[C(p)], g; + }, {}); + return Object.keys(l).sort(function(g, p) { + return l[g] - l[p]; + }); + } + function Zt(e) { + if (C(e) === me) return []; + var t = be(e); + return [ + ht(e), + t, + ht(t) + ]; + } + function en(e) { + var t = e.state, n = e.options, r = e.name; + if (!t.modifiersData[r]._skip) { + for (var o = n.mainAxis, a = o === void 0 ? !0 : o, c = n.altAxis, s = c === void 0 ? !0 : c, i = n.fallbackPlacements, f = n.padding, u = n.boundary, m = n.rootBoundary, h = n.altBoundary, l = n.flipVariations, g = l === void 0 ? !0 : l, p = n.allowedAutoPlacements, y = t.options.placement, x = C(y) === y, O = i || (x || !g ? [be(y)] : Zt(y)), d = [y].concat(O).reduce(function(z, q) { + return z.concat(C(q) === me ? Qt(t, { + placement: q, + boundary: u, + rootBoundary: m, + padding: f, + flipVariations: g, + allowedAutoPlacements: p + }) : q); + }, []), v = t.rects.reference, w = t.rects.popper, $ = /* @__PURE__ */ new Map(), j = !0, D = d[0], E = 0; E < d.length; E++) { + var A = d[E], H = C(A), k = re(A) === Y$1, F = [L, W].indexOf(H) >= 0, U = F ? "width" : "height", M = oe(t, { + placement: A, + boundary: u, + rootBoundary: m, + altBoundary: h, + padding: f + }), S = F ? k ? T$1 : P$1 : k ? W : L; + v[U] > w[U] && (S = be(S)); + var ue = be(S), _ = []; + if (a && _.push(M[H] <= 0), s && _.push(M[S] <= 0, M[ue] <= 0), _.every(function(z) { + return z; + })) { + D = A, j = !1; + break; + } + $.set(A, _); + } + if (j) { + for (var pe = g ? 3 : 1, xe = function(z) { + var q = d.find(function(de) { + var ae = $.get(de); + if (ae) return ae.slice(0, z).every(function(K) { + return K; + }); + }); + if (q) return D = q, "break"; + }, ie = pe; ie > 0; ie--) if (xe(ie) === "break") break; + } + t.placement !== D && (t.modifiersData[r]._skip = !0, t.placement = D, t.reset = !0); + } + } + var gt = { + name: "flip", + enabled: !0, + phase: "main", + fn: en, + requiresIfExists: ["offset"], + data: { _skip: !1 } + }; + function bt(e, t, n) { + return n === void 0 && (n = { + x: 0, + y: 0 + }), { + top: e.top - t.height - n.y, + right: e.right - t.width + n.x, + bottom: e.bottom - t.height + n.y, + left: e.left - t.width - n.x + }; + } + function wt(e) { + return [ + L, + T$1, + W, + P$1 + ].some(function(t) { + return e[t] >= 0; + }); + } + function tn(e) { + var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, a = t.modifiersData.preventOverflow, c = oe(t, { elementContext: "reference" }), s = oe(t, { altBoundary: !0 }), i = bt(c, r), f = bt(s, o, a), u = wt(i), m = wt(f); + t.modifiersData[n] = { + referenceClippingOffsets: i, + popperEscapeOffsets: f, + isReferenceHidden: u, + hasPopperEscaped: m + }, t.attributes.popper = Object.assign({}, t.attributes.popper, { + "data-popper-reference-hidden": u, + "data-popper-escaped": m + }); + } + var xt = { + name: "hide", + enabled: !0, + phase: "main", + requiresIfExists: ["preventOverflow"], + fn: tn + }; + function nn(e, t, n) { + var r = C(e), o = [P$1, L].indexOf(r) >= 0 ? -1 : 1, a = typeof n == "function" ? n(Object.assign({}, t, { placement: e })) : n, c = a[0], s = a[1]; + return c = c || 0, s = (s || 0) * o, [P$1, T$1].indexOf(r) >= 0 ? { + x: s, + y: c + } : { + x: c, + y: s + }; + } + function rn(e) { + var t = e.state, n = e.options, r = e.name, o = n.offset, a = o === void 0 ? [0, 0] : o, c = Ee.reduce(function(u, m) { + return u[m] = nn(m, t.rects, a), u; + }, {}), s = c[t.placement], i = s.x, f = s.y; + t.modifiersData.popperOffsets != null && (t.modifiersData.popperOffsets.x += i, t.modifiersData.popperOffsets.y += f), t.modifiersData[r] = c; + } + var Ot = { + name: "offset", + enabled: !0, + phase: "main", + requires: ["popperOffsets"], + fn: rn + }; + function on(e) { + var t = e.state, n = e.name; + t.modifiersData[n] = yt({ + reference: t.rects.reference, + element: t.rects.popper, + placement: t.placement + }); + } + var Ve = { + name: "popperOffsets", + enabled: !0, + phase: "read", + fn: on, + data: {} + }; + function an(e) { + return e === "x" ? "y" : "x"; + } + function sn(e) { + var t = e.state, n = e.options, r = e.name, o = n.mainAxis, a = o === void 0 ? !0 : o, c = n.altAxis, s = c === void 0 ? !1 : c, i = n.boundary, f = n.rootBoundary, u = n.altBoundary, m = n.padding, h = n.tether, l = h === void 0 ? !0 : h, g = n.tetherOffset, p = g === void 0 ? 0 : g, y = oe(t, { + boundary: i, + rootBoundary: f, + padding: m, + altBoundary: u + }), b = C(t.placement), x = re(t.placement), O = !x, d = Me(b), v = an(d), w = t.modifiersData.popperOffsets, $ = t.rects.reference, j = t.rects.popper, D = typeof p == "function" ? p(Object.assign({}, t.rects, { placement: t.placement })) : p, E = typeof D == "number" ? { + mainAxis: D, + altAxis: D + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, D), A = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, H = { + x: 0, + y: 0 + }; + if (w) { + if (a) { + var k, F = d === "y" ? L : P$1, U = d === "y" ? W : T$1, M = d === "y" ? "height" : "width", S = w[d], ue = S + y[F], _ = S - y[U], pe = l ? -j[M] / 2 : 0, xe = x === Y$1 ? $[M] : j[M], ie = x === Y$1 ? -j[M] : -$[M], le = t.elements.arrow, z = l && le ? Pe(le) : { + width: 0, + height: 0 + }, q = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : ct(), de = q[F], ae = q[U], K = fe(0, $[M], z[M]), Et = O ? $[M] / 2 - pe - K - de - E.mainAxis : xe - K - de - E.mainAxis, At = O ? -$[M] / 2 + pe + K + ae + E.mainAxis : ie + K + ae + E.mainAxis, Oe = t.elements.arrow && se(t.elements.arrow), kt = Oe ? d === "y" ? Oe.clientTop || 0 : Oe.clientLeft || 0 : 0, Ce = (k = A == null ? void 0 : A[d]) != null ? k : 0, Lt = S + Et - Ce - kt, Pt = S + At - Ce, qe = fe(l ? ve(ue, Lt) : ue, S, l ? J(_, Pt) : _); + w[d] = qe, H[d] = qe - S; + } + if (s) { + var Ie, Mt = d === "x" ? L : P$1, Wt = d === "x" ? W : T$1, X = w[v], he = v === "y" ? "height" : "width", Ne = X + y[Mt], Fe = X - y[Wt], $e = [L, P$1].indexOf(b) !== -1, Ue = (Ie = A == null ? void 0 : A[v]) != null ? Ie : 0, _e = $e ? Ne : X - $[he] - j[he] - Ue + E.altAxis, ze = $e ? X + $[he] + j[he] - Ue - E.altAxis : Fe, Xe = l && $e ? St(_e, X, ze) : fe(l ? _e : Ne, X, l ? ze : Fe); + w[v] = Xe, H[v] = Xe - X; + } + t.modifiersData[r] = H; + } + } + var $t = { + name: "preventOverflow", + enabled: !0, + phase: "main", + fn: sn, + requiresIfExists: ["offset"] + }; + function fn(e) { + return { + scrollLeft: e.scrollLeft, + scrollTop: e.scrollTop + }; + } + function cn(e) { + return e === B(e) || !R(e) ? Be(e) : fn(e); + } + function un(e) { + var t = e.getBoundingClientRect(), n = te(t.width) / e.offsetWidth || 1, r = te(t.height) / e.offsetHeight || 1; + return n !== 1 || r !== 1; + } + function pn(e, t, n) { + n === void 0 && (n = !1); + var r = R(t), o = R(t) && un(t), a = N$1(t), c = ne(e, o, n), s = { + scrollLeft: 0, + scrollTop: 0 + }, i = { + x: 0, + y: 0 + }; + return (r || !r && !n) && ((V(t) !== "body" || He(a)) && (s = cn(t)), R(t) ? (i = ne(t, !0), i.x += t.clientLeft, i.y += t.clientTop) : a && (i.x = Re(a))), { + x: c.left + s.scrollLeft - i.x, + y: c.top + s.scrollTop - i.y, + width: c.width, + height: c.height + }; + } + function ln(e) { + var t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Set(), r = []; + e.forEach(function(a) { + t.set(a.name, a); + }); + function o(a) { + n.add(a.name); + [].concat(a.requires || [], a.requiresIfExists || []).forEach(function(s) { + if (!n.has(s)) { + var i = t.get(s); + i && o(i); + } + }), r.push(a); + } + return e.forEach(function(a) { + n.has(a.name) || o(a); + }), r; + } + function dn(e) { + var t = ln(e); + return it.reduce(function(n, r) { + return n.concat(t.filter(function(o) { + return o.phase === r; + })); + }, []); + } + function hn(e) { + var t; + return function() { + return t || (t = new Promise(function(n) { + Promise.resolve().then(function() { + t = void 0, n(e()); + }); + })), t; + }; + } + function mn(e) { + var t = e.reduce(function(n, r) { + var o = n[r.name]; + return n[r.name] = o ? Object.assign({}, o, r, { + options: Object.assign({}, o.options, r.options), + data: Object.assign({}, o.data, r.data) + }) : r, n; + }, {}); + return Object.keys(t).map(function(n) { + return t[n]; + }); + } + var jt = { + placement: "bottom", + modifiers: [], + strategy: "absolute" + }; + function Dt() { + for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n]; + return !t.some(function(r) { + return !(r && typeof r.getBoundingClientRect == "function"); + }); + } + function we(e) { + e === void 0 && (e = {}); + var t = e, n = t.defaultModifiers, r = n === void 0 ? [] : n, o = t.defaultOptions, a = o === void 0 ? jt : o; + return function(c, s, i) { + i === void 0 && (i = a); + var f = { + placement: "bottom", + orderedModifiers: [], + options: Object.assign({}, jt, a), + modifiersData: {}, + elements: { + reference: c, + popper: s + }, + attributes: {}, + styles: {} + }, u = [], m = !1, h = { + state: f, + setOptions: function(p) { + var y = typeof p == "function" ? p(f.options) : p; + g(), f.options = Object.assign({}, a, f.options, y), f.scrollParents = { + reference: G(c) ? ce(c) : c.contextElement ? ce(c.contextElement) : [], + popper: ce(s) + }; + var b = dn(mn([].concat(r, f.options.modifiers))); + return f.orderedModifiers = b.filter(function(x) { + return x.enabled; + }), l(), h.update(); + }, + forceUpdate: function() { + if (!m) { + var p = f.elements, y = p.reference, b = p.popper; + if (Dt(y, b)) { + f.rects = { + reference: pn(y, se(b), f.options.strategy === "fixed"), + popper: Pe(b) + }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach(function(j) { + return f.modifiersData[j.name] = Object.assign({}, j.data); + }); + for (var x = 0; x < f.orderedModifiers.length; x++) { + if (f.reset === !0) { + f.reset = !1, x = -1; + continue; + } + var O = f.orderedModifiers[x], d = O.fn, v = O.options, w = v === void 0 ? {} : v, $ = O.name; + typeof d == "function" && (f = d({ + state: f, + options: w, + name: $, + instance: h + }) || f); + } + } + } + }, + update: hn(function() { + return new Promise(function(p) { + h.forceUpdate(), p(f); + }); + }), + destroy: function() { + g(), m = !0; + } + }; + if (!Dt(c, s)) return h; + h.setOptions(i).then(function(p) { + !m && i.onFirstUpdate && i.onFirstUpdate(p); + }); + function l() { + f.orderedModifiers.forEach(function(p) { + var y = p.name, b = p.options, x = b === void 0 ? {} : b, O = p.effect; + if (typeof O == "function") { + var d = O({ + state: f, + name: y, + instance: h, + options: x + }), v = function() {}; + u.push(d || v); + } + }); + } + function g() { + u.forEach(function(p) { + return p(); + }), u = []; + } + return h; + }; + } + var vn = we(), gn = we({ defaultModifiers: [ + Te, + Ve, + We, + ke + ] }), wn = we({ defaultModifiers: [ + Te, + Ve, + We, + ke, + Ot, + gt, + $t, + lt, + xt + ] }); + +//#endregion +//#region ../../packages/hooks/use-popper/index.ts + const usePopper = (referenceElementRef, popperElementRef, opts = {}) => { + const stateUpdater = { + name: "updateState", + enabled: true, + phase: "write", + fn: ({ state }) => { + const derivedState = deriveState(state); + Object.assign(states.value, derivedState); + }, + requires: ["computeStyles"] + }; + const options = (0, vue.computed)(() => { + const { onFirstUpdate, placement, strategy, modifiers } = (0, vue.unref)(opts); + return { + onFirstUpdate, + placement: placement || "bottom", + strategy: strategy || "absolute", + modifiers: [ + ...modifiers || [], + stateUpdater, + { + name: "applyStyles", + enabled: false + } + ] + }; + }); + const instanceRef = (0, vue.shallowRef)(); + const states = (0, vue.ref)({ + styles: { + popper: { + position: (0, vue.unref)(options).strategy, + left: "0", + top: "0" + }, + arrow: { position: "absolute" } + }, + attributes: {} + }); + const destroy = () => { + if (!instanceRef.value) return; + instanceRef.value.destroy(); + instanceRef.value = void 0; + }; + (0, vue.watch)(options, (newOptions) => { + const instance = (0, vue.unref)(instanceRef); + if (instance) instance.setOptions(newOptions); + }, { deep: true }); + (0, vue.watch)([referenceElementRef, popperElementRef], ([referenceElement, popperElement]) => { + destroy(); + if (!referenceElement || !popperElement) return; + instanceRef.value = wn(referenceElement, popperElement, (0, vue.unref)(options)); + }); + (0, vue.onBeforeUnmount)(() => { + destroy(); + }); + return { + state: (0, vue.computed)(() => ({ ...(0, vue.unref)(instanceRef)?.state || {} })), + styles: (0, vue.computed)(() => (0, vue.unref)(states).styles), + attributes: (0, vue.computed)(() => (0, vue.unref)(states).attributes), + update: () => (0, vue.unref)(instanceRef)?.update(), + forceUpdate: () => (0, vue.unref)(instanceRef)?.forceUpdate(), + instanceRef: (0, vue.computed)(() => (0, vue.unref)(instanceRef)) + }; + }; + function deriveState(state) { + const elements = Object.keys(state.elements); + return { + styles: fromPairs(elements.map((element) => [element, state.styles[element] || {}])), + attributes: fromPairs(elements.map((element) => [element, state.attributes[element]])) + }; + } + +//#endregion +//#region ../../packages/hooks/use-same-target/index.ts + const useSameTarget = (handleClick) => { + if (!handleClick) return { + onClick: NOOP, + onMousedown: NOOP, + onMouseup: NOOP + }; + let mousedownTarget = false; + let mouseupTarget = false; + const onClick = (e) => { + if (mousedownTarget && mouseupTarget) handleClick(e); + mousedownTarget = mouseupTarget = false; + }; + const onMousedown = (e) => { + mousedownTarget = e.target === e.currentTarget; + }; + const onMouseup = (e) => { + mouseupTarget = e.target === e.currentTarget; + }; + return { + onClick, + onMousedown, + onMouseup + }; + }; + +//#endregion +//#region ../../packages/hooks/use-teleport/index.ts + const useTeleport = (contentRenderer, appendToBody) => { + const isTeleportVisible = (0, vue.ref)(false); + if (!isClient) return { + isTeleportVisible, + showTeleport: NOOP, + hideTeleport: NOOP, + renderTeleport: NOOP + }; + let $el = null; + const showTeleport = () => { + isTeleportVisible.value = true; + if ($el !== null) return; + $el = createGlobalNode(); + }; + const hideTeleport = () => { + isTeleportVisible.value = false; + if ($el !== null) { + removeGlobalNode($el); + $el = null; + } + }; + const renderTeleport = () => { + return appendToBody.value !== true ? contentRenderer() : isTeleportVisible.value ? [(0, vue.h)(vue.Teleport, { to: $el }, contentRenderer())] : void 0; + }; + (0, vue.onUnmounted)(hideTeleport); + return { + isTeleportVisible, + showTeleport, + hideTeleport, + renderTeleport + }; + }; + +//#endregion +//#region ../../packages/hooks/use-throttle-render/index.ts + const useThrottleRender = (loading, throttle = 0) => { + if (throttle === 0) return loading; + const throttled = (0, vue.ref)(isObject$1(throttle) && Boolean(throttle.initVal)); + let timeoutHandle = null; + const dispatchThrottling = (timer) => { + if (isUndefined(timer)) { + throttled.value = loading.value; + return; + } + if (timeoutHandle) clearTimeout(timeoutHandle); + timeoutHandle = setTimeout(() => { + throttled.value = loading.value; + }, timer); + }; + const dispatcher = (type) => { + if (type === "leading") if (isNumber(throttle)) dispatchThrottling(throttle); + else dispatchThrottling(throttle.leading); + else if (isObject$1(throttle)) dispatchThrottling(throttle.trailing); + else throttled.value = false; + }; + (0, vue.onMounted)(() => dispatcher("leading")); + (0, vue.watch)(() => loading.value, (val) => { + dispatcher(val ? "leading" : "trailing"); + }); + return throttled; + }; + +//#endregion +//#region ../../packages/hooks/use-timeout/index.ts + function useTimeout() { + let timeoutHandle; + const registerTimeout = (fn, delay) => { + cancelTimeout(); + timeoutHandle = globalThis.setTimeout(fn, delay); + }; + const cancelTimeout = () => { + if (timeoutHandle === void 0) return; + globalThis.clearTimeout(timeoutHandle); + timeoutHandle = void 0; + }; + tryOnScopeDispose(() => cancelTimeout()); + return { + registerTimeout, + cancelTimeout + }; + } + +//#endregion +//#region ../../packages/hooks/use-transition-fallthrough/index.ts +/* istanbul ignore file */ + const AFTER_APPEAR = "after-appear"; + const AFTER_ENTER = "after-enter"; + const AFTER_LEAVE = "after-leave"; + const APPEAR = "appear"; + const APPEAR_CANCELLED = "appear-cancelled"; + const BEFORE_ENTER = "before-enter"; + const BEFORE_LEAVE = "before-leave"; + const ENTER = "enter"; + const ENTER_CANCELLED = "enter-cancelled"; + const LEAVE = "leave"; + const LEAVE_CANCELLED = "leave-cancelled"; + const useTransitionFallthroughEmits = [ + AFTER_APPEAR, + AFTER_ENTER, + AFTER_LEAVE, + APPEAR, + APPEAR_CANCELLED, + BEFORE_ENTER, + BEFORE_LEAVE, + ENTER, + ENTER_CANCELLED, + LEAVE, + LEAVE_CANCELLED + ]; + /** + * NOTE: + * This is only a delegator for delegating transition callbacks. + * Use this at your need. + */ + /** + * Simple usage + * + * In your setups: + * + * setup() { + * const fallthroughMethods = useTransitionFallthrough() + * return fallthrough + * } + * + * In your template: + * + * + * + */ + const useTransitionFallthrough = () => { + const { emit } = (0, vue.getCurrentInstance)(); + return { + onAfterAppear: () => { + emit(AFTER_APPEAR); + }, + onAfterEnter: () => { + emit(AFTER_ENTER); + }, + onAfterLeave: () => { + emit(AFTER_LEAVE); + }, + onAppearCancelled: () => { + emit(APPEAR_CANCELLED); + }, + onBeforeEnter: () => { + emit(BEFORE_ENTER); + }, + onBeforeLeave: () => { + emit(BEFORE_LEAVE); + }, + onEnter: () => { + emit(ENTER); + }, + onEnterCancelled: () => { + emit(ENTER_CANCELLED); + }, + onLeave: () => { + emit(LEAVE); + }, + onLeaveCancelled: () => { + emit(LEAVE_CANCELLED); + } + }; + }; + +//#endregion +//#region ../../packages/hooks/use-id/index.ts + const defaultIdInjection = { + prefix: Math.floor(Math.random() * 1e4), + current: 0 + }; + const ID_INJECTION_KEY = Symbol("elIdInjection"); + const useIdInjection = () => { + return (0, vue.getCurrentInstance)() ? (0, vue.inject)(ID_INJECTION_KEY, defaultIdInjection) : defaultIdInjection; + }; + const useId = (deterministicId) => { + const idInjection = useIdInjection(); + if (!isClient && idInjection === defaultIdInjection) /* @__PURE__ */ debugWarn("IdInjection", `Looks like you are using server rendering, you must provide a id provider to ensure the hydration process to be succeed +usage: app.provide(ID_INJECTION_KEY, { + prefix: number, + current: number, +})`); + const namespace = useGetDerivedNamespace(); + return computedEager(() => (0, vue.unref)(deterministicId) || `${namespace.value}-id-${idInjection.prefix}-${idInjection.current++}`); + }; + +//#endregion +//#region ../../packages/hooks/use-escape-keydown/index.ts + let registeredEscapeHandlers = []; + const cachedHandler = (event) => { + if (getEventCode(event) === EVENT_CODE.esc) registeredEscapeHandlers.forEach((registeredHandler) => registeredHandler(event)); + }; + const useEscapeKeydown = (handler) => { + (0, vue.onMounted)(() => { + if (registeredEscapeHandlers.length === 0) document.addEventListener("keydown", cachedHandler); + if (isClient) registeredEscapeHandlers.push(handler); + }); + (0, vue.onBeforeUnmount)(() => { + registeredEscapeHandlers = registeredEscapeHandlers.filter((registeredHandler) => registeredHandler !== handler); + if (registeredEscapeHandlers.length === 0) { + if (isClient) document.removeEventListener("keydown", cachedHandler); + } + }); + }; + +//#endregion +//#region ../../packages/hooks/use-popper-container/index.ts + const usePopperContainerId = () => { + const namespace = useGetDerivedNamespace(); + const idInjection = useIdInjection(); + const id = (0, vue.computed)(() => { + return `${namespace.value}-popper-container-${idInjection.prefix}`; + }); + return { + id, + selector: (0, vue.computed)(() => `#${id.value}`) + }; + }; + const createContainer = (id) => { + const container = document.createElement("div"); + container.id = id; + document.body.appendChild(container); + return container; + }; + const usePopperContainer = () => { + const { id, selector } = usePopperContainerId(); + (0, vue.onBeforeMount)(() => { + if (!isClient) return; + if (!document.body.querySelector(selector.value)) createContainer(id.value); + }); + return { + id, + selector + }; + }; + +//#endregion +//#region ../../packages/hooks/use-intermediate-render/index.ts + const useDelayedRender = ({ indicator, intermediateIndicator, shouldSetIntermediate = () => true, beforeShow, afterShow, afterHide, beforeHide }) => { + (0, vue.watch)(() => (0, vue.unref)(indicator), (val) => { + if (val) { + beforeShow?.(); + (0, vue.nextTick)(() => { + if (!(0, vue.unref)(indicator)) return; + if (shouldSetIntermediate("show")) intermediateIndicator.value = true; + }); + } else { + beforeHide?.(); + (0, vue.nextTick)(() => { + if ((0, vue.unref)(indicator)) return; + if (shouldSetIntermediate("hide")) intermediateIndicator.value = false; + }); + } + }); + (0, vue.watch)(() => intermediateIndicator.value, (val) => { + if (val) afterShow?.(); + else afterHide?.(); + }); + }; + +//#endregion +//#region ../../packages/hooks/use-delayed-toggle/index.ts +/** + * @deprecated Removed after 3.0.0, Use `UseDelayedToggleProps` instead. + */ + const useDelayedToggleProps = buildProps({ + showAfter: { + type: Number, + default: 0 + }, + hideAfter: { + type: Number, + default: 200 + }, + autoClose: { + type: Number, + default: 0 + } + }); + const useDelayedTogglePropsDefaults = { + showAfter: 0, + hideAfter: 200, + autoClose: 0 + }; + const useDelayedToggle = ({ showAfter, hideAfter, autoClose, open, close }) => { + const { registerTimeout } = useTimeout(); + const { registerTimeout: registerTimeoutForAutoClose, cancelTimeout: cancelTimeoutForAutoClose } = useTimeout(); + const onOpen = (event, delay = (0, vue.unref)(showAfter)) => { + registerTimeout(() => { + open(event); + const _autoClose = (0, vue.unref)(autoClose); + if (isNumber(_autoClose) && _autoClose > 0) registerTimeoutForAutoClose(() => { + close(event); + }, _autoClose); + }, delay); + }; + const onClose = (event, delay = (0, vue.unref)(hideAfter)) => { + cancelTimeoutForAutoClose(); + registerTimeout(() => { + close(event); + }, delay); + }; + return { + onOpen, + onClose + }; + }; + +//#endregion +//#region ../../packages/hooks/use-forward-ref/index.ts + const FORWARD_REF_INJECTION_KEY = Symbol("elForwardRef"); + const useForwardRef = (forwardRef) => { + const setForwardRef = ((el) => { + forwardRef.value = el; + }); + (0, vue.provide)(FORWARD_REF_INJECTION_KEY, { setForwardRef }); + }; + const useForwardRefDirective = (setForwardRef) => { + return { + mounted(el) { + setForwardRef(el); + }, + updated(el) { + setForwardRef(el); + }, + unmounted() { + setForwardRef(null); + } + }; + }; + +//#endregion +//#region ../../packages/hooks/use-z-index/index.ts + const initial = { current: 0 }; + const zIndex = (0, vue.ref)(0); + const defaultInitialZIndex = 2e3; + const ZINDEX_INJECTION_KEY = Symbol("elZIndexContextKey"); + const zIndexContextKey = Symbol("zIndexContextKey"); + const useZIndex = (zIndexOverrides) => { + const increasingInjection = (0, vue.getCurrentInstance)() ? (0, vue.inject)(ZINDEX_INJECTION_KEY, initial) : initial; + const zIndexInjection = zIndexOverrides || ((0, vue.getCurrentInstance)() ? (0, vue.inject)(zIndexContextKey, void 0) : void 0); + const initialZIndex = (0, vue.computed)(() => { + const zIndexFromInjection = (0, vue.unref)(zIndexInjection); + return isNumber(zIndexFromInjection) ? zIndexFromInjection : defaultInitialZIndex; + }); + const currentZIndex = (0, vue.computed)(() => initialZIndex.value + zIndex.value); + const nextZIndex = () => { + increasingInjection.current++; + zIndex.value = increasingInjection.current; + return currentZIndex.value; + }; + if (!isClient && !(0, vue.inject)(ZINDEX_INJECTION_KEY)) /* @__PURE__ */ debugWarn("ZIndexInjection", `Looks like you are using server rendering, you must provide a z-index provider to ensure the hydration process to be succeed +usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`); + return { + initialZIndex, + currentZIndex, + nextZIndex + }; + }; + +//#endregion +//#region ../../node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs + const min$1 = Math.min; + const max$1 = Math.max; + const round = Math.round; + const floor$1 = Math.floor; + const createCoords = (v) => ({ + x: v, + y: v + }); + const oppositeSideMap = { + left: "right", + right: "left", + bottom: "top", + top: "bottom" + }; + const oppositeAlignmentMap = { + start: "end", + end: "start" + }; + function clamp(start, value, end) { + return max$1(start, min$1(value, end)); + } + function evaluate(value, param) { + return typeof value === "function" ? value(param) : value; + } + function getSide(placement) { + return placement.split("-")[0]; + } + function getAlignment(placement) { + return placement.split("-")[1]; + } + function getOppositeAxis(axis) { + return axis === "x" ? "y" : "x"; + } + function getAxisLength(axis) { + return axis === "y" ? "height" : "width"; + } + const yAxisSides = /* @__PURE__ */ new Set(["top", "bottom"]); + function getSideAxis(placement) { + return yAxisSides.has(getSide(placement)) ? "y" : "x"; + } + function getAlignmentAxis(placement) { + return getOppositeAxis(getSideAxis(placement)); + } + function getAlignmentSides(placement, rects, rtl) { + if (rtl === void 0) rtl = false; + const alignment = getAlignment(placement); + const alignmentAxis = getAlignmentAxis(placement); + const length = getAxisLength(alignmentAxis); + let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top"; + if (rects.reference[length] > rects.floating[length]) mainAlignmentSide = getOppositePlacement(mainAlignmentSide); + return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)]; + } + function getExpandedPlacements(placement) { + const oppositePlacement = getOppositePlacement(placement); + return [ + getOppositeAlignmentPlacement(placement), + oppositePlacement, + getOppositeAlignmentPlacement(oppositePlacement) + ]; + } + function getOppositeAlignmentPlacement(placement) { + return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]); + } + const lrPlacement = ["left", "right"]; + const rlPlacement = ["right", "left"]; + const tbPlacement = ["top", "bottom"]; + const btPlacement = ["bottom", "top"]; + function getSideList(side, isStart, rtl) { + switch (side) { + case "top": + case "bottom": + if (rtl) return isStart ? rlPlacement : lrPlacement; + return isStart ? lrPlacement : rlPlacement; + case "left": + case "right": return isStart ? tbPlacement : btPlacement; + default: return []; + } + } + function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) { + const alignment = getAlignment(placement); + let list = getSideList(getSide(placement), direction === "start", rtl); + if (alignment) { + list = list.map((side) => side + "-" + alignment); + if (flipAlignment) list = list.concat(list.map(getOppositeAlignmentPlacement)); + } + return list; + } + function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]); + } + function expandPaddingObject(padding) { + return { + top: 0, + right: 0, + bottom: 0, + left: 0, + ...padding + }; + } + function getPaddingObject(padding) { + return typeof padding !== "number" ? expandPaddingObject(padding) : { + top: padding, + right: padding, + bottom: padding, + left: padding + }; + } + function rectToClientRect(rect) { + const { x, y, width, height } = rect; + return { + width, + height, + top: y, + left: x, + right: x + width, + bottom: y + height, + x, + y + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/@floating-ui+core@1.7.3/node_modules/@floating-ui/core/dist/floating-ui.core.mjs + function computeCoordsFromPlacement(_ref, placement, rtl) { + let { reference, floating } = _ref; + const sideAxis = getSideAxis(placement); + const alignmentAxis = getAlignmentAxis(placement); + const alignLength = getAxisLength(alignmentAxis); + const side = getSide(placement); + const isVertical = sideAxis === "y"; + const commonX = reference.x + reference.width / 2 - floating.width / 2; + const commonY = reference.y + reference.height / 2 - floating.height / 2; + const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2; + let coords; + switch (side) { + case "top": + coords = { + x: commonX, + y: reference.y - floating.height + }; + break; + case "bottom": + coords = { + x: commonX, + y: reference.y + reference.height + }; + break; + case "right": + coords = { + x: reference.x + reference.width, + y: commonY + }; + break; + case "left": + coords = { + x: reference.x - floating.width, + y: commonY + }; + break; + default: coords = { + x: reference.x, + y: reference.y + }; + } + switch (getAlignment(placement)) { + case "start": + coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1); + break; + case "end": + coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1); + break; + } + return coords; + } + /** + * Computes the `x` and `y` coordinates that will place the floating element + * next to a given reference element. + * + * This export does not have any `platform` interface logic. You will need to + * write one for the platform you are using Floating UI with. + */ + const computePosition$1 = async (reference, floating, config) => { + const { placement = "bottom", strategy = "absolute", middleware = [], platform } = config; + const validMiddleware = middleware.filter(Boolean); + const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating)); + let rects = await platform.getElementRects({ + reference, + floating, + strategy + }); + let { x, y } = computeCoordsFromPlacement(rects, placement, rtl); + let statefulPlacement = placement; + let middlewareData = {}; + let resetCount = 0; + for (let i = 0; i < validMiddleware.length; i++) { + const { name, fn } = validMiddleware[i]; + const { x: nextX, y: nextY, data, reset } = await fn({ + x, + y, + initialPlacement: placement, + placement: statefulPlacement, + strategy, + middlewareData, + rects, + platform, + elements: { + reference, + floating + } + }); + x = nextX != null ? nextX : x; + y = nextY != null ? nextY : y; + middlewareData = { + ...middlewareData, + [name]: { + ...middlewareData[name], + ...data + } + }; + if (reset && resetCount <= 50) { + resetCount++; + if (typeof reset === "object") { + if (reset.placement) statefulPlacement = reset.placement; + if (reset.rects) rects = reset.rects === true ? await platform.getElementRects({ + reference, + floating, + strategy + }) : reset.rects; + ({x, y} = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); + } + i = -1; + } + } + return { + x, + y, + placement: statefulPlacement, + strategy, + middlewareData + }; + }; + /** + * Resolves with an object of overflow side offsets that determine how much the + * element is overflowing a given clipping boundary on each side. + * - positive = overflowing the boundary by that number of pixels + * - negative = how many pixels left before it will overflow + * - 0 = lies flush with the boundary + * @see https://floating-ui.com/docs/detectOverflow + */ + async function detectOverflow$1(state, options) { + var _await$platform$isEle; + if (options === void 0) options = {}; + const { x, y, platform, rects, elements, strategy } = state; + const { boundary = "clippingAncestors", rootBoundary = "viewport", elementContext = "floating", altBoundary = false, padding = 0 } = evaluate(options, state); + const paddingObject = getPaddingObject(padding); + const element = elements[altBoundary ? elementContext === "floating" ? "reference" : "floating" : elementContext]; + const clippingClientRect = rectToClientRect(await platform.getClippingRect({ + element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating)), + boundary, + rootBoundary, + strategy + })); + const rect = elementContext === "floating" ? { + x, + y, + width: rects.floating.width, + height: rects.floating.height + } : rects.reference; + const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)); + const offsetScale = await (platform.isElement == null ? void 0 : platform.isElement(offsetParent)) ? await (platform.getScale == null ? void 0 : platform.getScale(offsetParent)) || { + x: 1, + y: 1 + } : { + x: 1, + y: 1 + }; + const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({ + elements, + rect, + offsetParent, + strategy + }) : rect); + return { + top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y, + bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y, + left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x, + right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x + }; + } + /** + * Provides data to position an inner element of the floating element so that it + * appears centered to the reference element. + * @see https://floating-ui.com/docs/arrow + */ + const arrow$1 = (options) => ({ + name: "arrow", + options, + async fn(state) { + const { x, y, placement, rects, platform, elements, middlewareData } = state; + const { element, padding = 0 } = evaluate(options, state) || {}; + if (element == null) return {}; + const paddingObject = getPaddingObject(padding); + const coords = { + x, + y + }; + const axis = getAlignmentAxis(placement); + const length = getAxisLength(axis); + const arrowDimensions = await platform.getDimensions(element); + const isYAxis = axis === "y"; + const minProp = isYAxis ? "top" : "left"; + const maxProp = isYAxis ? "bottom" : "right"; + const clientProp = isYAxis ? "clientHeight" : "clientWidth"; + const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length]; + const startDiff = coords[axis] - rects.reference[axis]; + const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element)); + let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0; + if (!clientSize || !await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent))) clientSize = elements.floating[clientProp] || rects.floating[length]; + const centerToReference = endDiff / 2 - startDiff / 2; + const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1; + const minPadding = min$1(paddingObject[minProp], largestPossiblePadding); + const maxPadding = min$1(paddingObject[maxProp], largestPossiblePadding); + const min$1$1 = minPadding; + const max = clientSize - arrowDimensions[length] - maxPadding; + const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference; + const offset = clamp(min$1$1, center, max); + const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0; + const alignmentOffset = shouldAddOffset ? center < min$1$1 ? center - min$1$1 : center - max : 0; + return { + [axis]: coords[axis] + alignmentOffset, + data: { + [axis]: offset, + centerOffset: center - offset - alignmentOffset, + ...shouldAddOffset && { alignmentOffset } + }, + reset: shouldAddOffset + }; + } + }); + /** + * Optimizes the visibility of the floating element by flipping the `placement` + * in order to keep it in view when the preferred placement(s) will overflow the + * clipping boundary. Alternative to `autoPlacement`. + * @see https://floating-ui.com/docs/flip + */ + const flip$1 = function(options) { + if (options === void 0) options = {}; + return { + name: "flip", + options, + async fn(state) { + var _middlewareData$arrow, _middlewareData$flip; + const { placement, middlewareData, rects, initialPlacement, platform, elements } = state; + const { mainAxis: checkMainAxis = true, crossAxis: checkCrossAxis = true, fallbackPlacements: specifiedFallbackPlacements, fallbackStrategy = "bestFit", fallbackAxisSideDirection = "none", flipAlignment = true, ...detectOverflowOptions } = evaluate(options, state); + if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) return {}; + const side = getSide(placement); + const initialSideAxis = getSideAxis(initialPlacement); + const isBasePlacement = getSide(initialPlacement) === initialPlacement; + const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)); + const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement)); + const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none"; + if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl)); + const placements = [initialPlacement, ...fallbackPlacements]; + const overflow = await detectOverflow$1(state, detectOverflowOptions); + const overflows = []; + let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || []; + if (checkMainAxis) overflows.push(overflow[side]); + if (checkCrossAxis) { + const sides = getAlignmentSides(placement, rects, rtl); + overflows.push(overflow[sides[0]], overflow[sides[1]]); + } + overflowsData = [...overflowsData, { + placement, + overflows + }]; + if (!overflows.every((side) => side <= 0)) { + var _middlewareData$flip2, _overflowsData$filter; + const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1; + const nextPlacement = placements[nextIndex]; + if (nextPlacement) { + if (!(checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false) || overflowsData.every((d) => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) return { + data: { + index: nextIndex, + overflows: overflowsData + }, + reset: { placement: nextPlacement } + }; + } + let resetPlacement = (_overflowsData$filter = overflowsData.filter((d) => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement; + if (!resetPlacement) switch (fallbackStrategy) { + case "bestFit": { + var _overflowsData$filter2; + const placement = (_overflowsData$filter2 = overflowsData.filter((d) => { + if (hasFallbackAxisSideDirection) { + const currentSideAxis = getSideAxis(d.placement); + return currentSideAxis === initialSideAxis || currentSideAxis === "y"; + } + return true; + }).map((d) => [d.placement, d.overflows.filter((overflow) => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0]; + if (placement) resetPlacement = placement; + break; + } + case "initialPlacement": + resetPlacement = initialPlacement; + break; + } + if (placement !== resetPlacement) return { reset: { placement: resetPlacement } }; + } + return {}; + } + }; + }; + const originSides = /* @__PURE__ */ new Set(["left", "top"]); + async function convertValueToCoords(state, options) { + const { placement, platform, elements } = state; + const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)); + const side = getSide(placement); + const alignment = getAlignment(placement); + const isVertical = getSideAxis(placement) === "y"; + const mainAxisMulti = originSides.has(side) ? -1 : 1; + const crossAxisMulti = rtl && isVertical ? -1 : 1; + const rawValue = evaluate(options, state); + let { mainAxis, crossAxis, alignmentAxis } = typeof rawValue === "number" ? { + mainAxis: rawValue, + crossAxis: 0, + alignmentAxis: null + } : { + mainAxis: rawValue.mainAxis || 0, + crossAxis: rawValue.crossAxis || 0, + alignmentAxis: rawValue.alignmentAxis + }; + if (alignment && typeof alignmentAxis === "number") crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis; + return isVertical ? { + x: crossAxis * crossAxisMulti, + y: mainAxis * mainAxisMulti + } : { + x: mainAxis * mainAxisMulti, + y: crossAxis * crossAxisMulti + }; + } + /** + * Modifies the placement by translating the floating element along the + * specified axes. + * A number (shorthand for `mainAxis` or distance), or an axes configuration + * object may be passed. + * @see https://floating-ui.com/docs/offset + */ + const offset$1 = function(options) { + if (options === void 0) options = 0; + return { + name: "offset", + options, + async fn(state) { + var _middlewareData$offse, _middlewareData$arrow; + const { x, y, placement, middlewareData } = state; + const diffCoords = await convertValueToCoords(state, options); + if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) return {}; + return { + x: x + diffCoords.x, + y: y + diffCoords.y, + data: { + ...diffCoords, + placement + } + }; + } + }; + }; + /** + * Optimizes the visibility of the floating element by shifting it in order to + * keep it in view when it will overflow the clipping boundary. + * @see https://floating-ui.com/docs/shift + */ + const shift$1 = function(options) { + if (options === void 0) options = {}; + return { + name: "shift", + options, + async fn(state) { + const { x, y, placement } = state; + const { mainAxis: checkMainAxis = true, crossAxis: checkCrossAxis = false, limiter = { fn: (_ref) => { + let { x, y } = _ref; + return { + x, + y + }; + } }, ...detectOverflowOptions } = evaluate(options, state); + const coords = { + x, + y + }; + const overflow = await detectOverflow$1(state, detectOverflowOptions); + const crossAxis = getSideAxis(getSide(placement)); + const mainAxis = getOppositeAxis(crossAxis); + let mainAxisCoord = coords[mainAxis]; + let crossAxisCoord = coords[crossAxis]; + if (checkMainAxis) { + const minSide = mainAxis === "y" ? "top" : "left"; + const maxSide = mainAxis === "y" ? "bottom" : "right"; + const min = mainAxisCoord + overflow[minSide]; + const max = mainAxisCoord - overflow[maxSide]; + mainAxisCoord = clamp(min, mainAxisCoord, max); + } + if (checkCrossAxis) { + const minSide = crossAxis === "y" ? "top" : "left"; + const maxSide = crossAxis === "y" ? "bottom" : "right"; + const min = crossAxisCoord + overflow[minSide]; + const max = crossAxisCoord - overflow[maxSide]; + crossAxisCoord = clamp(min, crossAxisCoord, max); + } + const limitedCoords = limiter.fn({ + ...state, + [mainAxis]: mainAxisCoord, + [crossAxis]: crossAxisCoord + }); + return { + ...limitedCoords, + data: { + x: limitedCoords.x - x, + y: limitedCoords.y - y, + enabled: { + [mainAxis]: checkMainAxis, + [crossAxis]: checkCrossAxis + } + } + }; + } + }; + }; + +//#endregion +//#region ../../node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs + function hasWindow() { + return typeof window !== "undefined"; + } + function getNodeName(node) { + if (isNode(node)) return (node.nodeName || "").toLowerCase(); + return "#document"; + } + function getWindow(node) { + var _node$ownerDocument; + return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; + } + function getDocumentElement(node) { + var _ref; + return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement; + } + function isNode(value) { + if (!hasWindow()) return false; + return value instanceof Node || value instanceof getWindow(value).Node; + } + function isElement(value) { + if (!hasWindow()) return false; + return value instanceof Element || value instanceof getWindow(value).Element; + } + function isHTMLElement(value) { + if (!hasWindow()) return false; + return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement; + } + function isShadowRoot(value) { + if (!hasWindow() || typeof ShadowRoot === "undefined") return false; + return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot; + } + const invalidOverflowDisplayValues = /* @__PURE__ */ new Set(["inline", "contents"]); + function isOverflowElement(element) { + const { overflow, overflowX, overflowY, display } = getComputedStyle$1(element); + return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display); + } + const tableElements = /* @__PURE__ */ new Set([ + "table", + "td", + "th" + ]); + function isTableElement(element) { + return tableElements.has(getNodeName(element)); + } + const topLayerSelectors = [":popover-open", ":modal"]; + function isTopLayer(element) { + return topLayerSelectors.some((selector) => { + try { + return element.matches(selector); + } catch (_e) { + return false; + } + }); + } + const transformProperties = [ + "transform", + "translate", + "scale", + "rotate", + "perspective" + ]; + const willChangeValues = [ + "transform", + "translate", + "scale", + "rotate", + "perspective", + "filter" + ]; + const containValues = [ + "paint", + "layout", + "strict", + "content" + ]; + function isContainingBlock(elementOrCss) { + const webkit = isWebKit(); + const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss; + return transformProperties.some((value) => css[value] ? css[value] !== "none" : false) || (css.containerType ? css.containerType !== "normal" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== "none" : false) || !webkit && (css.filter ? css.filter !== "none" : false) || willChangeValues.some((value) => (css.willChange || "").includes(value)) || containValues.some((value) => (css.contain || "").includes(value)); + } + function getContainingBlock(element) { + let currentNode = getParentNode(element); + while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { + if (isContainingBlock(currentNode)) return currentNode; + else if (isTopLayer(currentNode)) return null; + currentNode = getParentNode(currentNode); + } + return null; + } + function isWebKit() { + if (typeof CSS === "undefined" || !CSS.supports) return false; + return CSS.supports("-webkit-backdrop-filter", "none"); + } + const lastTraversableNodeNames = /* @__PURE__ */ new Set([ + "html", + "body", + "#document" + ]); + function isLastTraversableNode(node) { + return lastTraversableNodeNames.has(getNodeName(node)); + } + function getComputedStyle$1(element) { + return getWindow(element).getComputedStyle(element); + } + function getNodeScroll(element) { + if (isElement(element)) return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + return { + scrollLeft: element.scrollX, + scrollTop: element.scrollY + }; + } + function getParentNode(node) { + if (getNodeName(node) === "html") return node; + const result = node.assignedSlot || node.parentNode || isShadowRoot(node) && node.host || getDocumentElement(node); + return isShadowRoot(result) ? result.host : result; + } + function getNearestOverflowAncestor(node) { + const parentNode = getParentNode(node); + if (isLastTraversableNode(parentNode)) return node.ownerDocument ? node.ownerDocument.body : node.body; + if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) return parentNode; + return getNearestOverflowAncestor(parentNode); + } + function getOverflowAncestors(node, list, traverseIframes) { + var _node$ownerDocument2; + if (list === void 0) list = []; + if (traverseIframes === void 0) traverseIframes = true; + const scrollableAncestor = getNearestOverflowAncestor(node); + const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body); + const win = getWindow(scrollableAncestor); + if (isBody) { + const frameElement = getFrameElement(win); + return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []); + } + return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes)); + } + function getFrameElement(win) { + return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null; + } + +//#endregion +//#region ../../node_modules/.pnpm/@floating-ui+dom@1.7.4/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs + function getCssDimensions(element) { + const css = getComputedStyle$1(element); + let width = parseFloat(css.width) || 0; + let height = parseFloat(css.height) || 0; + const hasOffset = isHTMLElement(element); + const offsetWidth = hasOffset ? element.offsetWidth : width; + const offsetHeight = hasOffset ? element.offsetHeight : height; + const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; + if (shouldFallback) { + width = offsetWidth; + height = offsetHeight; + } + return { + width, + height, + $: shouldFallback + }; + } + function unwrapElement(element) { + return !isElement(element) ? element.contextElement : element; + } + function getScale(element) { + const domElement = unwrapElement(element); + if (!isHTMLElement(domElement)) return createCoords(1); + const rect = domElement.getBoundingClientRect(); + const { width, height, $ } = getCssDimensions(domElement); + let x = ($ ? round(rect.width) : rect.width) / width; + let y = ($ ? round(rect.height) : rect.height) / height; + if (!x || !Number.isFinite(x)) x = 1; + if (!y || !Number.isFinite(y)) y = 1; + return { + x, + y + }; + } + const noOffsets = /* @__PURE__ */ createCoords(0); + function getVisualOffsets(element) { + const win = getWindow(element); + if (!isWebKit() || !win.visualViewport) return noOffsets; + return { + x: win.visualViewport.offsetLeft, + y: win.visualViewport.offsetTop + }; + } + function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) { + if (isFixed === void 0) isFixed = false; + if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) return false; + return isFixed; + } + function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) { + if (includeScale === void 0) includeScale = false; + if (isFixedStrategy === void 0) isFixedStrategy = false; + const clientRect = element.getBoundingClientRect(); + const domElement = unwrapElement(element); + let scale = createCoords(1); + if (includeScale) if (offsetParent) { + if (isElement(offsetParent)) scale = getScale(offsetParent); + } else scale = getScale(element); + const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0); + let x = (clientRect.left + visualOffsets.x) / scale.x; + let y = (clientRect.top + visualOffsets.y) / scale.y; + let width = clientRect.width / scale.x; + let height = clientRect.height / scale.y; + if (domElement) { + const win = getWindow(domElement); + const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; + let currentWin = win; + let currentIFrame = getFrameElement(currentWin); + while (currentIFrame && offsetParent && offsetWin !== currentWin) { + const iframeScale = getScale(currentIFrame); + const iframeRect = currentIFrame.getBoundingClientRect(); + const css = getComputedStyle$1(currentIFrame); + const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x; + const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y; + x *= iframeScale.x; + y *= iframeScale.y; + width *= iframeScale.x; + height *= iframeScale.y; + x += left; + y += top; + currentWin = getWindow(currentIFrame); + currentIFrame = getFrameElement(currentWin); + } + } + return rectToClientRect({ + width, + height, + x, + y + }); + } + function getWindowScrollBarX(element, rect) { + const leftScroll = getNodeScroll(element).scrollLeft; + if (!rect) return getBoundingClientRect(getDocumentElement(element)).left + leftScroll; + return rect.left + leftScroll; + } + function getHTMLOffset(documentElement, scroll) { + const htmlRect = documentElement.getBoundingClientRect(); + return { + x: htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect), + y: htmlRect.top + scroll.scrollTop + }; + } + function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { + let { elements, rect, offsetParent, strategy } = _ref; + const isFixed = strategy === "fixed"; + const documentElement = getDocumentElement(offsetParent); + const topLayer = elements ? isTopLayer(elements.floating) : false; + if (offsetParent === documentElement || topLayer && isFixed) return rect; + let scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + let scale = createCoords(1); + const offsets = createCoords(0); + const isOffsetParentAnElement = isHTMLElement(offsetParent); + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) scroll = getNodeScroll(offsetParent); + if (isHTMLElement(offsetParent)) { + const offsetRect = getBoundingClientRect(offsetParent); + scale = getScale(offsetParent); + offsets.x = offsetRect.x + offsetParent.clientLeft; + offsets.y = offsetRect.y + offsetParent.clientTop; + } + } + const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); + return { + width: rect.width * scale.x, + height: rect.height * scale.y, + x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x, + y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y + }; + } + function getClientRects(element) { + return Array.from(element.getClientRects()); + } + function getDocumentRect(element) { + const html = getDocumentElement(element); + const scroll = getNodeScroll(element); + const body = element.ownerDocument.body; + const width = max$1(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); + const height = max$1(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); + let x = -scroll.scrollLeft + getWindowScrollBarX(element); + const y = -scroll.scrollTop; + if (getComputedStyle$1(body).direction === "rtl") x += max$1(html.clientWidth, body.clientWidth) - width; + return { + width, + height, + x, + y + }; + } + const SCROLLBAR_MAX = 25; + function getViewportRect(element, strategy) { + const win = getWindow(element); + const html = getDocumentElement(element); + const visualViewport = win.visualViewport; + let width = html.clientWidth; + let height = html.clientHeight; + let x = 0; + let y = 0; + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + const visualViewportBased = isWebKit(); + if (!visualViewportBased || visualViewportBased && strategy === "fixed") { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + const windowScrollbarX = getWindowScrollBarX(html); + if (windowScrollbarX <= 0) { + const doc = html.ownerDocument; + const body = doc.body; + const bodyStyles = getComputedStyle(body); + const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0; + const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline); + if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) width -= clippingStableScrollbarWidth; + } else if (windowScrollbarX <= SCROLLBAR_MAX) width += windowScrollbarX; + return { + width, + height, + x, + y + }; + } + const absoluteOrFixed = /* @__PURE__ */ new Set(["absolute", "fixed"]); + function getInnerBoundingClientRect(element, strategy) { + const clientRect = getBoundingClientRect(element, true, strategy === "fixed"); + const top = clientRect.top + element.clientTop; + const left = clientRect.left + element.clientLeft; + const scale = isHTMLElement(element) ? getScale(element) : createCoords(1); + return { + width: element.clientWidth * scale.x, + height: element.clientHeight * scale.y, + x: left * scale.x, + y: top * scale.y + }; + } + function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) { + let rect; + if (clippingAncestor === "viewport") rect = getViewportRect(element, strategy); + else if (clippingAncestor === "document") rect = getDocumentRect(getDocumentElement(element)); + else if (isElement(clippingAncestor)) rect = getInnerBoundingClientRect(clippingAncestor, strategy); + else { + const visualOffsets = getVisualOffsets(element); + rect = { + x: clippingAncestor.x - visualOffsets.x, + y: clippingAncestor.y - visualOffsets.y, + width: clippingAncestor.width, + height: clippingAncestor.height + }; + } + return rectToClientRect(rect); + } + function hasFixedPositionAncestor(element, stopNode) { + const parentNode = getParentNode(element); + if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) return false; + return getComputedStyle$1(parentNode).position === "fixed" || hasFixedPositionAncestor(parentNode, stopNode); + } + function getClippingElementAncestors(element, cache) { + const cachedResult = cache.get(element); + if (cachedResult) return cachedResult; + let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body"); + let currentContainingBlockComputedStyle = null; + const elementIsFixed = getComputedStyle$1(element).position === "fixed"; + let currentNode = elementIsFixed ? getParentNode(element) : element; + while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { + const computedStyle = getComputedStyle$1(currentNode); + const currentNodeIsContaining = isContainingBlock(currentNode); + if (!currentNodeIsContaining && computedStyle.position === "fixed") currentContainingBlockComputedStyle = null; + if (elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode)) result = result.filter((ancestor) => ancestor !== currentNode); + else currentContainingBlockComputedStyle = computedStyle; + currentNode = getParentNode(currentNode); + } + cache.set(element, result); + return result; + } + function getClippingRect(_ref) { + let { element, boundary, rootBoundary, strategy } = _ref; + const clippingAncestors = [...boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary), rootBoundary]; + const firstClippingAncestor = clippingAncestors[0]; + const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => { + const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy); + accRect.top = max$1(rect.top, accRect.top); + accRect.right = min$1(rect.right, accRect.right); + accRect.bottom = min$1(rect.bottom, accRect.bottom); + accRect.left = max$1(rect.left, accRect.left); + return accRect; + }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy)); + return { + width: clippingRect.right - clippingRect.left, + height: clippingRect.bottom - clippingRect.top, + x: clippingRect.left, + y: clippingRect.top + }; + } + function getDimensions(element) { + const { width, height } = getCssDimensions(element); + return { + width, + height + }; + } + function getRectRelativeToOffsetParent(element, offsetParent, strategy) { + const isOffsetParentAnElement = isHTMLElement(offsetParent); + const documentElement = getDocumentElement(offsetParent); + const isFixed = strategy === "fixed"; + const rect = getBoundingClientRect(element, true, isFixed, offsetParent); + let scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + const offsets = createCoords(0); + function setLeftRTLScrollbarOffset() { + offsets.x = getWindowScrollBarX(documentElement); + } + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) scroll = getNodeScroll(offsetParent); + if (isOffsetParentAnElement) { + const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent); + offsets.x = offsetRect.x + offsetParent.clientLeft; + offsets.y = offsetRect.y + offsetParent.clientTop; + } else if (documentElement) setLeftRTLScrollbarOffset(); + } + if (isFixed && !isOffsetParentAnElement && documentElement) setLeftRTLScrollbarOffset(); + const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); + return { + x: rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x, + y: rect.top + scroll.scrollTop - offsets.y - htmlOffset.y, + width: rect.width, + height: rect.height + }; + } + function isStaticPositioned(element) { + return getComputedStyle$1(element).position === "static"; + } + function getTrueOffsetParent(element, polyfill) { + if (!isHTMLElement(element) || getComputedStyle$1(element).position === "fixed") return null; + if (polyfill) return polyfill(element); + let rawOffsetParent = element.offsetParent; + if (getDocumentElement(element) === rawOffsetParent) rawOffsetParent = rawOffsetParent.ownerDocument.body; + return rawOffsetParent; + } + function getOffsetParent(element, polyfill) { + const win = getWindow(element); + if (isTopLayer(element)) return win; + if (!isHTMLElement(element)) { + let svgOffsetParent = getParentNode(element); + while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) { + if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) return svgOffsetParent; + svgOffsetParent = getParentNode(svgOffsetParent); + } + return win; + } + let offsetParent = getTrueOffsetParent(element, polyfill); + while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) offsetParent = getTrueOffsetParent(offsetParent, polyfill); + if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) return win; + return offsetParent || getContainingBlock(element) || win; + } + const getElementRects = async function(data) { + const getOffsetParentFn = this.getOffsetParent || getOffsetParent; + const getDimensionsFn = this.getDimensions; + const floatingDimensions = await getDimensionsFn(data.floating); + return { + reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy), + floating: { + x: 0, + y: 0, + width: floatingDimensions.width, + height: floatingDimensions.height + } + }; + }; + function isRTL$1(element) { + return getComputedStyle$1(element).direction === "rtl"; + } + const platform = { + convertOffsetParentRelativeRectToViewportRelativeRect, + getDocumentElement, + getClippingRect, + getOffsetParent, + getElementRects, + getClientRects, + getDimensions, + getScale, + isElement, + isRTL: isRTL$1 + }; + function rectsAreEqual(a, b) { + return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; + } + function observeMove(element, onMove) { + let io = null; + let timeoutId; + const root = getDocumentElement(element); + function cleanup() { + var _io; + clearTimeout(timeoutId); + (_io = io) == null || _io.disconnect(); + io = null; + } + function refresh(skip, threshold) { + if (skip === void 0) skip = false; + if (threshold === void 0) threshold = 1; + cleanup(); + const elementRectForRootMargin = element.getBoundingClientRect(); + const { left, top, width, height } = elementRectForRootMargin; + if (!skip) onMove(); + if (!width || !height) return; + const insetTop = floor$1(top); + const insetRight = floor$1(root.clientWidth - (left + width)); + const insetBottom = floor$1(root.clientHeight - (top + height)); + const insetLeft = floor$1(left); + const options = { + rootMargin: -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px", + threshold: max$1(0, min$1(1, threshold)) || 1 + }; + let isFirstUpdate = true; + function handleObserve(entries) { + const ratio = entries[0].intersectionRatio; + if (ratio !== threshold) { + if (!isFirstUpdate) return refresh(); + if (!ratio) timeoutId = setTimeout(() => { + refresh(false, 1e-7); + }, 1e3); + else refresh(false, ratio); + } + if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) refresh(); + isFirstUpdate = false; + } + try { + io = new IntersectionObserver(handleObserve, { + ...options, + root: root.ownerDocument + }); + } catch (_e) { + io = new IntersectionObserver(handleObserve, options); + } + io.observe(element); + } + refresh(true); + return cleanup; + } + /** + * Automatically updates the position of the floating element when necessary. + * Should only be called when the floating element is mounted on the DOM or + * visible on the screen. + * @returns cleanup function that should be invoked when the floating element is + * removed from the DOM or hidden from the screen. + * @see https://floating-ui.com/docs/autoUpdate + */ + function autoUpdate(reference, floating, update, options) { + if (options === void 0) options = {}; + const { ancestorScroll = true, ancestorResize = true, elementResize = typeof ResizeObserver === "function", layoutShift = typeof IntersectionObserver === "function", animationFrame = false } = options; + const referenceEl = unwrapElement(reference); + const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...getOverflowAncestors(floating)] : []; + ancestors.forEach((ancestor) => { + ancestorScroll && ancestor.addEventListener("scroll", update, { passive: true }); + ancestorResize && ancestor.addEventListener("resize", update); + }); + const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null; + let reobserveFrame = -1; + let resizeObserver = null; + if (elementResize) { + resizeObserver = new ResizeObserver((_ref) => { + let [firstEntry] = _ref; + if (firstEntry && firstEntry.target === referenceEl && resizeObserver) { + resizeObserver.unobserve(floating); + cancelAnimationFrame(reobserveFrame); + reobserveFrame = requestAnimationFrame(() => { + var _resizeObserver; + (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating); + }); + } + update(); + }); + if (referenceEl && !animationFrame) resizeObserver.observe(referenceEl); + resizeObserver.observe(floating); + } + let frameId; + let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null; + if (animationFrame) frameLoop(); + function frameLoop() { + const nextRefRect = getBoundingClientRect(reference); + if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) update(); + prevRefRect = nextRefRect; + frameId = requestAnimationFrame(frameLoop); + } + update(); + return () => { + var _resizeObserver2; + ancestors.forEach((ancestor) => { + ancestorScroll && ancestor.removeEventListener("scroll", update); + ancestorResize && ancestor.removeEventListener("resize", update); + }); + cleanupIo?.(); + (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect(); + resizeObserver = null; + if (animationFrame) cancelAnimationFrame(frameId); + }; + } + /** + * Resolves with an object of overflow side offsets that determine how much the + * element is overflowing a given clipping boundary on each side. + * - positive = overflowing the boundary by that number of pixels + * - negative = how many pixels left before it will overflow + * - 0 = lies flush with the boundary + * @see https://floating-ui.com/docs/detectOverflow + */ + const detectOverflow = detectOverflow$1; + /** + * Modifies the placement by translating the floating element along the + * specified axes. + * A number (shorthand for `mainAxis` or distance), or an axes configuration + * object may be passed. + * @see https://floating-ui.com/docs/offset + */ + const offset = offset$1; + /** + * Optimizes the visibility of the floating element by shifting it in order to + * keep it in view when it will overflow the clipping boundary. + * @see https://floating-ui.com/docs/shift + */ + const shift = shift$1; + /** + * Optimizes the visibility of the floating element by flipping the `placement` + * in order to keep it in view when the preferred placement(s) will overflow the + * clipping boundary. Alternative to `autoPlacement`. + * @see https://floating-ui.com/docs/flip + */ + const flip = flip$1; + /** + * Provides data to position an inner element of the floating element so that it + * appears centered to the reference element. + * @see https://floating-ui.com/docs/arrow + */ + const arrow = arrow$1; + /** + * Computes the `x` and `y` coordinates that will place the floating element + * next to a given reference element. + */ + const computePosition = (reference, floating, options) => { + const cache = /* @__PURE__ */ new Map(); + const mergedOptions = { + platform, + ...options + }; + const platformWithCache = { + ...mergedOptions.platform, + _c: cache + }; + return computePosition$1(reference, floating, { + ...mergedOptions, + platform: platformWithCache + }); + }; + +//#endregion +//#region ../../packages/hooks/use-floating/index.ts + const useFloatingProps = buildProps({}); + const unrefReference = (elRef) => { + if (!isClient) return; + if (!elRef) return elRef; + const unrefEl = unrefElement(elRef); + if (unrefEl) return unrefEl; + return (0, vue.isRef)(elRef) ? unrefEl : elRef; + }; + const getPositionDataWithUnit = (record, key) => { + const value = record?.[key]; + return isNil(value) ? "" : `${value}px`; + }; + const useFloating = ({ middleware, placement, strategy }) => { + const referenceRef = (0, vue.ref)(); + const contentRef = (0, vue.ref)(); + const states = { + x: (0, vue.ref)(), + y: (0, vue.ref)(), + placement, + strategy, + middlewareData: (0, vue.ref)({}) + }; + const update = async () => { + if (!isClient) return; + const referenceEl = unrefReference(referenceRef); + const contentEl = unrefElement(contentRef); + if (!referenceEl || !contentEl) return; + const data = await computePosition(referenceEl, contentEl, { + placement: (0, vue.unref)(placement), + strategy: (0, vue.unref)(strategy), + middleware: (0, vue.unref)(middleware) + }); + keysOf(states).forEach((key) => { + states[key].value = data[key]; + }); + }; + (0, vue.onMounted)(() => { + (0, vue.watchEffect)(() => { + update(); + }); + }); + return { + ...states, + update, + referenceRef, + contentRef + }; + }; + const arrowMiddleware = ({ arrowRef, padding }) => { + return { + name: "arrow", + options: { + element: arrowRef, + padding + }, + fn(args) { + const arrowEl = (0, vue.unref)(arrowRef); + if (!arrowEl) return {}; + return arrow({ + element: arrowEl, + padding + }).fn(args); + } + }; + }; + +//#endregion +//#region ../../packages/hooks/use-cursor/index.ts + function useCursor(input) { + let selectionInfo; + function recordCursor() { + if (input.value == void 0) return; + const { selectionStart, selectionEnd, value } = input.value; + if (selectionStart == null || selectionEnd == null) return; + selectionInfo = { + selectionStart, + selectionEnd, + value, + beforeTxt: value.slice(0, Math.max(0, selectionStart)), + afterTxt: value.slice(Math.max(0, selectionEnd)) + }; + } + function setCursor() { + if (input.value == void 0 || selectionInfo == void 0) return; + const { value } = input.value; + const { beforeTxt, afterTxt, selectionStart } = selectionInfo; + if (beforeTxt == void 0 || afterTxt == void 0 || selectionStart == void 0) return; + let startPos = value.length; + if (value.endsWith(afterTxt)) startPos = value.length - afterTxt.length; + else if (value.startsWith(beforeTxt)) startPos = beforeTxt.length; + else { + const beforeLastChar = beforeTxt[selectionStart - 1]; + const newIndex = value.indexOf(beforeLastChar, selectionStart - 1); + if (newIndex !== -1) startPos = newIndex + 1; + } + input.value.setSelectionRange(startPos, startPos); + } + return [recordCursor, setCursor]; + } + +//#endregion +//#region ../../packages/hooks/use-ordered-children/index.ts + const getOrderedChildren = (vm, childComponentName, children) => { + return flattedChildren(vm.subTree).filter((n) => (0, vue.isVNode)(n) && n.type?.name === childComponentName && !!n.component).map((n) => n.component.uid).map((uid) => children[uid]).filter((p) => !!p); + }; + const useOrderedChildren = (vm, childComponentName) => { + const children = (0, vue.shallowRef)({}); + const orderedChildren = (0, vue.shallowRef)([]); + const nodesMap = /* @__PURE__ */ new WeakMap(); + const addChild = (child) => { + children.value[child.uid] = child; + (0, vue.triggerRef)(children); + (0, vue.onMounted)(() => { + const childNode = child.getVnode().el; + const parentNode = childNode.parentNode; + if (!nodesMap.has(parentNode)) { + nodesMap.set(parentNode, []); + const originalFn = parentNode.insertBefore.bind(parentNode); + parentNode.insertBefore = (node, anchor) => { + if (nodesMap.get(parentNode).some((el) => node === el || anchor === el)) (0, vue.triggerRef)(children); + return originalFn(node, anchor); + }; + } + nodesMap.get(parentNode).push(childNode); + }); + }; + const removeChild = (child) => { + delete children.value[child.uid]; + (0, vue.triggerRef)(children); + const childNode = child.getVnode().el; + const parentNode = childNode.parentNode; + const childNodes = nodesMap.get(parentNode); + const index = childNodes.indexOf(childNode); + childNodes.splice(index, 1); + }; + const sortChildren = () => { + orderedChildren.value = getOrderedChildren(vm, childComponentName, children.value); + }; + const IsolatedRenderer = (props) => { + return props.render(); + }; + return { + children: orderedChildren, + addChild, + removeChild, + ChildrenSorter: (0, vue.defineComponent)({ setup(_, { slots }) { + return () => { + sortChildren(); + return slots.default ? (0, vue.h)(IsolatedRenderer, { render: slots.default }) : null; + }; + } }) + }; + }; + +//#endregion +//#region ../../packages/hooks/use-size/index.ts + const useSizeProp = buildProp({ + type: String, + values: componentSizes, + required: false + }); + const useSizeProps = { size: useSizeProp }; + const SIZE_INJECTION_KEY = Symbol("size"); + const useGlobalSize = () => { + const injectedSize = (0, vue.inject)(SIZE_INJECTION_KEY, {}); + return (0, vue.computed)(() => { + return (0, vue.unref)(injectedSize.size) || ""; + }); + }; + +//#endregion +//#region ../../packages/hooks/use-focus-controller/index.ts + function useFocusController(target, { disabled, beforeFocus, afterFocus, beforeBlur, afterBlur } = {}) { + const { emit } = (0, vue.getCurrentInstance)(); + const wrapperRef = (0, vue.shallowRef)(); + const isFocused = (0, vue.ref)(false); + const handleFocus = (event) => { + const cancelFocus = isFunction$1(beforeFocus) ? beforeFocus(event) : false; + if ((0, vue.unref)(disabled) || isFocused.value || cancelFocus) return; + isFocused.value = true; + emit("focus", event); + afterFocus?.(); + }; + const handleBlur = (event) => { + const cancelBlur = isFunction$1(beforeBlur) ? beforeBlur(event) : false; + if ((0, vue.unref)(disabled) || event.relatedTarget && wrapperRef.value?.contains(event.relatedTarget) || cancelBlur) return; + isFocused.value = false; + emit("blur", event); + afterBlur?.(); + }; + const handleClick = (event) => { + if ((0, vue.unref)(disabled) || isFocusable(event.target) || wrapperRef.value?.contains(document.activeElement) && wrapperRef.value !== document.activeElement) return; + target.value?.focus(); + }; + (0, vue.watch)([wrapperRef, () => (0, vue.unref)(disabled)], ([el, disabled]) => { + if (!el) return; + if (disabled) el.removeAttribute("tabindex"); + else el.setAttribute("tabindex", "-1"); + }); + useEventListener(wrapperRef, "focus", handleFocus, true); + useEventListener(wrapperRef, "blur", handleBlur, true); + useEventListener(wrapperRef, "click", handleClick, true); + return { + isFocused, + wrapperRef, + handleFocus, + handleBlur + }; + } + +//#endregion +//#region ../../packages/hooks/use-composition/index.ts + function useComposition({ afterComposition, emit }) { + const isComposing = (0, vue.ref)(false); + const handleCompositionStart = (event) => { + emit?.("compositionstart", event); + isComposing.value = true; + }; + const handleCompositionUpdate = (event) => { + emit?.("compositionupdate", event); + isComposing.value = true; + }; + const handleCompositionEnd = (event) => { + emit?.("compositionend", event); + if (isComposing.value) { + isComposing.value = false; + (0, vue.nextTick)(() => afterComposition(event)); + } + }; + const handleComposition = (event) => { + event.type === "compositionend" ? handleCompositionEnd(event) : handleCompositionUpdate(event); + }; + return { + isComposing, + handleComposition, + handleCompositionStart, + handleCompositionUpdate, + handleCompositionEnd + }; + } + +//#endregion +//#region ../../packages/hooks/use-empty-values/index.ts + const emptyValuesContextKey = Symbol("emptyValuesContextKey"); + const SCOPE = "use-empty-values"; + const DEFAULT_EMPTY_VALUES = [ + "", + void 0, + null + ]; + const DEFAULT_VALUE_ON_CLEAR = void 0; + /** + * @deprecated Removed after 3.0.0, Use `UseEmptyValuesProps` instead. + */ + const useEmptyValuesProps = buildProps({ + emptyValues: Array, + valueOnClear: { + type: definePropType([ + String, + Number, + Boolean, + Function + ]), + default: void 0, + validator: (val) => { + val = isFunction$1(val) ? val() : val; + if (isArray$1(val)) return val.every((item) => !item); + return !val; + } + } + }); + const useEmptyValues = (props, defaultValue) => { + const config = (0, vue.getCurrentInstance)() ? (0, vue.inject)(emptyValuesContextKey, (0, vue.ref)({})) : (0, vue.ref)({}); + const emptyValues = (0, vue.computed)(() => props.emptyValues || config.value.emptyValues || DEFAULT_EMPTY_VALUES); + const valueOnClear = (0, vue.computed)(() => { + if (isFunction$1(props.valueOnClear)) return props.valueOnClear(); + else if (props.valueOnClear !== void 0) return props.valueOnClear; + else if (isFunction$1(config.value.valueOnClear)) return config.value.valueOnClear(); + else if (config.value.valueOnClear !== void 0) return config.value.valueOnClear; + return defaultValue !== void 0 ? defaultValue : DEFAULT_VALUE_ON_CLEAR; + }); + const isEmptyValue = (value) => { + let result = true; + if (isArray$1(value)) result = emptyValues.value.some((emptyValue) => { + return isEqual$1(value, emptyValue); + }); + else result = emptyValues.value.includes(value); + return result; + }; + if (!isEmptyValue(valueOnClear.value)) /* @__PURE__ */ debugWarn(SCOPE, "value-on-clear should be a value of empty-values"); + return { + emptyValues, + valueOnClear, + isEmptyValue + }; + }; + +//#endregion +//#region ../../packages/hooks/use-aria/index.ts +/** + * @deprecated Removed after 3.0.0, Use `AriaProps` instead. + */ + const ariaProps = buildProps({ + ariaLabel: String, + ariaOrientation: { + type: String, + values: [ + "horizontal", + "vertical", + "undefined" + ] + }, + ariaControls: String + }); + const useAriaProps = (arias) => { + return pick(ariaProps, arias); + }; + +//#endregion +//#region ../../packages/components/config-provider/src/constants.ts + const configProviderContextKey = Symbol(); + +//#endregion +//#region ../../packages/components/config-provider/src/hooks/use-global-config.ts + const globalConfig = (0, vue.ref)(); + function useGlobalConfig(key, defaultValue = void 0) { + const config = (0, vue.getCurrentInstance)() ? (0, vue.inject)(configProviderContextKey, globalConfig) : globalConfig; + if (key) return (0, vue.computed)(() => config.value?.[key] ?? defaultValue); + else return config; + } + function useGlobalComponentSettings(block, sizeFallback) { + const config = useGlobalConfig(); + const ns = useNamespace(block, (0, vue.computed)(() => config.value?.namespace || defaultNamespace)); + const locale = useLocale((0, vue.computed)(() => config.value?.locale)); + const zIndex = useZIndex((0, vue.computed)(() => config.value?.zIndex || defaultInitialZIndex)); + const size = (0, vue.computed)(() => (0, vue.unref)(sizeFallback) || config.value?.size || ""); + provideGlobalConfig((0, vue.computed)(() => (0, vue.unref)(config) || {})); + return { + ns, + locale, + zIndex, + size + }; + } + const provideGlobalConfig = (config, app, global = false) => { + const inSetup = !!(0, vue.getCurrentInstance)(); + const oldConfig = inSetup ? useGlobalConfig() : void 0; + const provideFn = app?.provide ?? (inSetup ? vue.provide : void 0); + if (!provideFn) { + /* @__PURE__ */ debugWarn("provideGlobalConfig", "provideGlobalConfig() can only be used inside setup()."); + return; + } + const context = (0, vue.computed)(() => { + const cfg = (0, vue.unref)(config); + if (!oldConfig?.value) return cfg; + return mergeConfig(oldConfig.value, cfg); + }); + provideFn(configProviderContextKey, context); + provideFn(localeContextKey, (0, vue.computed)(() => context.value.locale)); + provideFn(namespaceContextKey, (0, vue.computed)(() => context.value.namespace)); + provideFn(zIndexContextKey, (0, vue.computed)(() => context.value.zIndex)); + provideFn(SIZE_INJECTION_KEY, { size: (0, vue.computed)(() => context.value.size || "") }); + provideFn(emptyValuesContextKey, (0, vue.computed)(() => ({ + emptyValues: context.value.emptyValues, + valueOnClear: context.value.valueOnClear + }))); + if (global || !globalConfig.value) globalConfig.value = context.value; + return context; + }; + const mergeConfig = (a, b) => { + const keys = [...new Set([...keysOf(a), ...keysOf(b)])]; + const obj = {}; + for (const key of keys) obj[key] = b[key] !== void 0 ? b[key] : a[key]; + return obj; + }; + +//#endregion +//#region ../../packages/components/config-provider/src/config-provider-props.ts + const configProviderProps = buildProps({ + a11y: { + type: Boolean, + default: true + }, + locale: { type: definePropType(Object) }, + size: useSizeProp, + button: { type: definePropType(Object) }, + card: { type: definePropType(Object) }, + dialog: { type: definePropType(Object) }, + link: { type: definePropType(Object) }, + experimentalFeatures: { type: definePropType(Object) }, + keyboardNavigation: { + type: Boolean, + default: true + }, + message: { type: definePropType(Object) }, + zIndex: Number, + namespace: { + type: String, + default: "el" + }, + table: { type: definePropType(Object) }, + ...useEmptyValuesProps + }); + +//#endregion +//#region ../../packages/components/config-provider/src/config-provider.ts + const messageConfig = { placement: "top" }; + const ConfigProvider = (0, vue.defineComponent)({ + name: "ElConfigProvider", + props: configProviderProps, + setup(props, { slots }) { + const config = provideGlobalConfig(props); + (0, vue.watch)(() => props.message, (val) => { + Object.assign(messageConfig, config?.value?.message ?? {}, val ?? {}); + }, { + immediate: true, + deep: true + }); + return () => (0, vue.renderSlot)(slots, "default", { config: config?.value }); + } + }); + +//#endregion +//#region ../../packages/components/config-provider/index.ts + const ElConfigProvider = withInstall(ConfigProvider); + +//#endregion +//#region ../../packages/element-plus/version.ts + const version$1 = "2.13.7"; + +//#endregion +//#region ../../packages/element-plus/make-installer.ts + const makeInstaller = (components = []) => { + const install = (app, options) => { + if (app[INSTALLED_KEY]) return; + app[INSTALLED_KEY] = true; + components.forEach((c) => app.use(c)); + if (options) provideGlobalConfig(options, app, true); + }; + return { + version: version$1, + install + }; + }; + +//#endregion +//#region ../../packages/components/teleport/src/teleport.ts + const teleportProps = buildProps({ + to: { + type: definePropType([String, Object]), + required: true + }, + disabled: Boolean + }); + +//#endregion +//#region ../../packages/components/teleport/src/teleport.vue?vue&type=script&setup=true&lang.ts + var teleport_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + __name: "teleport", + props: teleportProps, + setup(__props) { + return (_ctx, _cache) => { + return _ctx.disabled ? (0, vue.renderSlot)(_ctx.$slots, "default", { key: 0 }) : ((0, vue.openBlock)(), (0, vue.createBlock)(vue.Teleport, { + key: 1, + to: _ctx.to + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 8, ["to"])); + }; + } + }); + +//#endregion +//#region ../../packages/components/teleport/src/teleport.vue + var teleport_default = teleport_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/teleport/index.ts + const ElTeleport = withInstall(teleport_default); + +//#endregion +//#region ../../packages/components/affix/src/affix.ts +/** + * @deprecated Removed after 3.0.0, Use `AffixProps` instead. + */ + const affixProps = buildProps({ + zIndex: { + type: definePropType([Number, String]), + default: 100 + }, + target: { + type: String, + default: "" + }, + offset: { + type: Number, + default: 0 + }, + position: { + type: String, + values: ["top", "bottom"], + default: "top" + }, + teleported: Boolean, + appendTo: { + type: teleportProps.to.type, + default: "body" + } + }); + const affixEmits = { + scroll: ({ scrollTop, fixed }) => isNumber(scrollTop) && isBoolean(fixed), + [CHANGE_EVENT]: (fixed) => isBoolean(fixed) + }; + +//#endregion +//#region ../../packages/components/affix/src/affix.vue?vue&type=script&setup=true&lang.ts + const COMPONENT_NAME$22 = "ElAffix"; + var affix_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$22, + __name: "affix", + props: affixProps, + emits: affixEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const ns = useNamespace("affix"); + const target = (0, vue.shallowRef)(); + const root = (0, vue.shallowRef)(); + const scrollContainer = (0, vue.shallowRef)(); + const { height: windowHeight } = useWindowSize(); + const { height: rootHeight, width: rootWidth, top: rootTop, bottom: rootBottom, left: rootLeft, update: updateRoot } = useElementBounding(root, { windowScroll: false }); + const targetRect = useElementBounding(target); + const fixed = (0, vue.ref)(false); + const scrollTop = (0, vue.ref)(0); + const transform = (0, vue.ref)(0); + const teleportDisabled = (0, vue.computed)(() => { + return !props.teleported || !fixed.value; + }); + const rootStyle = (0, vue.computed)(() => { + return { + display: "flow-root", + height: fixed.value ? `${rootHeight.value}px` : "", + width: fixed.value ? `${rootWidth.value}px` : "" + }; + }); + const affixStyle = (0, vue.computed)(() => { + if (!fixed.value) return {}; + const offset = addUnit(props.offset); + return { + height: `${rootHeight.value}px`, + width: `${rootWidth.value}px`, + top: props.position === "top" ? offset : "", + bottom: props.position === "bottom" ? offset : "", + left: props.teleported ? `${rootLeft.value}px` : "", + transform: transform.value ? `translateY(${transform.value}px)` : "", + zIndex: props.zIndex + }; + }); + const update = () => { + if (!scrollContainer.value) return; + scrollTop.value = scrollContainer.value instanceof Window ? document.documentElement.scrollTop : scrollContainer.value.scrollTop || 0; + const { position, target, offset } = props; + const rootHeightOffset = offset + rootHeight.value; + if (position === "top") if (target) { + const difference = targetRect.bottom.value - rootHeightOffset; + fixed.value = offset > rootTop.value && targetRect.bottom.value > 0; + transform.value = difference < 0 ? difference : 0; + } else fixed.value = offset > rootTop.value; + else if (target) { + const difference = windowHeight.value - targetRect.top.value - rootHeightOffset; + fixed.value = windowHeight.value - offset < rootBottom.value && windowHeight.value > targetRect.top.value; + transform.value = difference < 0 ? -difference : 0; + } else fixed.value = windowHeight.value - offset < rootBottom.value; + }; + const updateRootRect = async () => { + if (!fixed.value) { + updateRoot(); + return; + } + fixed.value = false; + await (0, vue.nextTick)(); + updateRoot(); + fixed.value = true; + }; + const handleScroll = async () => { + updateRoot(); + await (0, vue.nextTick)(); + emit("scroll", { + scrollTop: scrollTop.value, + fixed: fixed.value + }); + }; + (0, vue.watch)(fixed, (val) => emit(CHANGE_EVENT, val)); + (0, vue.onMounted)(() => { + if (props.target) { + target.value = document.querySelector(props.target) ?? void 0; + if (!target.value) throwError(COMPONENT_NAME$22, `Target does not exist: ${props.target}`); + } else target.value = document.documentElement; + scrollContainer.value = getScrollContainer(root.value, true); + updateRoot(); + }); + (0, vue.onActivated)(() => { + (0, vue.nextTick)(updateRootRect); + }); + (0, vue.onDeactivated)(() => { + fixed.value = false; + }); + useEventListener(scrollContainer, "scroll", handleScroll); + (0, vue.watchEffect)(update); + __expose({ + update, + updateRoot: updateRootRect + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "root", + ref: root, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()), + style: (0, vue.normalizeStyle)(rootStyle.value) + }, [(0, vue.createVNode)((0, vue.unref)(ElTeleport), { + disabled: teleportDisabled.value, + to: __props.appendTo + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)({ [(0, vue.unref)(ns).m("fixed")]: fixed.value }), + style: (0, vue.normalizeStyle)(affixStyle.value) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 6)]), + _: 3 + }, 8, ["disabled", "to"])], 6); + }; + } + }); + +//#endregion +//#region ../../packages/components/affix/src/affix.vue + var affix_default = affix_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/affix/index.ts + const ElAffix = withInstall(affix_default); + +//#endregion +//#region ../../packages/components/alert/src/alert.ts + const alertEffects = ["light", "dark"]; + /** + * @deprecated Removed after 3.0.0, Use `AlertProps` instead. + */ + const alertProps = buildProps({ + title: { + type: String, + default: "" + }, + description: { + type: String, + default: "" + }, + type: { + type: String, + values: keysOf(TypeComponentsMap), + default: "info" + }, + closable: { + type: Boolean, + default: true + }, + closeText: { + type: String, + default: "" + }, + showIcon: Boolean, + center: Boolean, + effect: { + type: String, + values: alertEffects, + default: "light" + } + }); + const alertEmits = { close: (evt) => evt instanceof MouseEvent }; + +//#endregion +//#region ../../packages/components/icon/src/icon.ts +/** + * @deprecated Removed after 3.0.0, Use `IconProps` instead. + */ + const iconProps = buildProps({ + size: { type: definePropType([Number, String]) }, + color: { type: String } + }); + +//#endregion +//#region ../../packages/components/icon/src/icon.vue?vue&type=script&setup=true&lang.ts + var icon_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElIcon", + inheritAttrs: false, + __name: "icon", + props: iconProps, + setup(__props) { + const props = __props; + const ns = useNamespace("icon"); + const style = (0, vue.computed)(() => { + const { size, color } = props; + const fontSize = addUnit(size); + if (!fontSize && !color) return {}; + return { + fontSize, + "--color": color + }; + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("i", (0, vue.mergeProps)({ + class: (0, vue.unref)(ns).b(), + style: style.value + }, _ctx.$attrs), [(0, vue.renderSlot)(_ctx.$slots, "default")], 16); + }; + } + }); + +//#endregion +//#region ../../packages/components/icon/src/icon.vue + var icon_default = icon_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/icon/index.ts + const ElIcon = withInstall(icon_default); + +//#endregion +//#region ../../packages/components/alert/src/alert.vue?vue&type=script&setup=true&lang.ts + var alert_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElAlert", + __name: "alert", + props: alertProps, + emits: alertEmits, + setup(__props, { emit: __emit }) { + const { Close } = TypeComponents; + const props = __props; + const emit = __emit; + const slots = (0, vue.useSlots)(); + const ns = useNamespace("alert"); + const visible = (0, vue.ref)(true); + const iconComponent = (0, vue.computed)(() => TypeComponentsMap[props.type]); + const hasDesc = (0, vue.computed)(() => { + if (props.description) return true; + const slotContent = slots.default?.(); + if (!slotContent) return false; + return flattedChildren(slotContent).some((child) => !isComment(child)); + }); + const close = (evt) => { + visible.value = false; + emit("close", evt); + }; + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(vue.Transition, { + name: (0, vue.unref)(ns).b("fade"), + persisted: "" + }, { + default: (0, vue.withCtx)(() => [(0, vue.withDirectives)((0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).b(), + (0, vue.unref)(ns).m(__props.type), + (0, vue.unref)(ns).is("center", __props.center), + (0, vue.unref)(ns).is(__props.effect) + ]), + role: "alert" + }, [__props.showIcon && (_ctx.$slots.icon || iconComponent.value) ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("icon"), (0, vue.unref)(ns).is("big", hasDesc.value)]) + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "icon", {}, () => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(iconComponent.value)))])]), + _: 3 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("content")) }, [ + __props.title || _ctx.$slots.title ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("title"), { "with-description": hasDesc.value }]) + }, [(0, vue.renderSlot)(_ctx.$slots, "title", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.title), 1)])], 2)) : (0, vue.createCommentVNode)("v-if", true), + hasDesc.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("p", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("description")) + }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.description), 1)])], 2)) : (0, vue.createCommentVNode)("v-if", true), + __props.closable ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 2 }, [__props.closeText ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("close-btn"), (0, vue.unref)(ns).is("customed")]), + onClick: close + }, (0, vue.toDisplayString)(__props.closeText), 3)) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("close-btn")), + onClick: close + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(Close))]), + _: 1 + }, 8, ["class"]))], 64)) : (0, vue.createCommentVNode)("v-if", true) + ], 2)], 2), [[vue.vShow, visible.value]])]), + _: 3 + }, 8, ["name"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/alert/src/alert.vue + var alert_default = alert_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/alert/index.ts + const ElAlert = withInstall(alert_default); + +//#endregion +//#region ../../packages/components/popper/src/popper.ts + const Effect = { + LIGHT: "light", + DARK: "dark" + }; + const roleTypes = [ + "dialog", + "grid", + "group", + "listbox", + "menu", + "navigation", + "tooltip", + "tree" + ]; + /** + * @deprecated Removed after 3.0.0, Use `PopperProps` instead. + */ + const popperProps = buildProps({ role: { + type: String, + values: roleTypes, + default: "tooltip" + } }); + /** @deprecated use `popperProps` instead, and it will be deprecated in the next major version */ + const usePopperProps = popperProps; + +//#endregion +//#region ../../packages/components/popper/src/constants.ts + const POPPER_INJECTION_KEY = Symbol("popper"); + const POPPER_CONTENT_INJECTION_KEY = Symbol("popperContent"); + +//#endregion +//#region ../../packages/components/popper/src/popper.vue?vue&type=script&setup=true&lang.ts + var popper_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElPopper", + inheritAttrs: false, + __name: "popper", + props: popperProps, + setup(__props, { expose: __expose }) { + const props = __props; + const popperProvides = { + triggerRef: (0, vue.ref)(), + popperInstanceRef: (0, vue.ref)(), + contentRef: (0, vue.ref)(), + referenceRef: (0, vue.ref)(), + role: (0, vue.computed)(() => props.role) + }; + __expose(popperProvides); + (0, vue.provide)(POPPER_INJECTION_KEY, popperProvides); + return (_ctx, _cache) => { + return (0, vue.renderSlot)(_ctx.$slots, "default"); + }; + } + }); + +//#endregion +//#region ../../packages/components/popper/src/popper.vue + var popper_default = popper_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/popper/src/arrow.vue?vue&type=script&setup=true&lang.ts + var arrow_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElPopperArrow", + inheritAttrs: false, + __name: "arrow", + setup(__props, { expose: __expose }) { + const ns = useNamespace("popper"); + const { arrowRef, arrowStyle } = (0, vue.inject)(POPPER_CONTENT_INJECTION_KEY, void 0); + (0, vue.onBeforeUnmount)(() => { + arrowRef.value = void 0; + }); + __expose({ arrowRef }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + ref_key: "arrowRef", + ref: arrowRef, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("arrow")), + style: (0, vue.normalizeStyle)((0, vue.unref)(arrowStyle)), + "data-popper-arrow": "" + }, null, 6); + }; + } + }); + +//#endregion +//#region ../../packages/components/popper/src/arrow.vue + var arrow_default = arrow_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/popper/src/trigger.ts +/** + * @deprecated Removed after 3.0.0, Use `PopperTriggerProps` instead. + */ + const popperTriggerProps = buildProps({ + virtualRef: { type: definePropType(Object) }, + virtualTriggering: Boolean, + onMouseenter: { type: definePropType(Function) }, + onMouseleave: { type: definePropType(Function) }, + onClick: { type: definePropType(Function) }, + onKeydown: { type: definePropType(Function) }, + onFocus: { type: definePropType(Function) }, + onBlur: { type: definePropType(Function) }, + onContextmenu: { type: definePropType(Function) }, + id: String, + open: Boolean + }); + /** @deprecated use `popperTriggerProps` instead, and it will be deprecated in the next major version */ + const usePopperTriggerProps = popperTriggerProps; + +//#endregion +//#region ../../packages/components/slot/src/only-child.tsx + const NAME = "ElOnlyChild"; + const OnlyChild = /* @__PURE__ */ (0, vue.defineComponent)({ + name: NAME, + setup(_, { slots, attrs }) { + const forwardRefDirective = useForwardRefDirective((0, vue.inject)(FORWARD_REF_INJECTION_KEY)?.setForwardRef ?? NOOP); + return () => { + const defaultSlot = slots.default?.(attrs); + if (!defaultSlot) return null; + const [firstLegitNode, length] = findFirstLegitChild(defaultSlot); + if (!firstLegitNode) { + /* @__PURE__ */ debugWarn(NAME, "no valid child node found"); + return null; + } + if (length > 1) /* @__PURE__ */ debugWarn(NAME, "requires exact only one valid child."); + return (0, vue.withDirectives)((0, vue.cloneVNode)(firstLegitNode, attrs), [[forwardRefDirective]]); + }; + } + }); + function findFirstLegitChild(node) { + if (!node) return [null, 0]; + const children = node; + const len = children.filter((c) => c.type !== vue.Comment).length; + for (const child of children) { + /** + * when user uses h(Fragment, [text]) to render plain string, + * this switch case just cannot handle, when the value is primitives + * we should just return the wrapped string + */ + if (isObject$1(child)) switch (child.type) { + case vue.Comment: continue; + case vue.Text: + case "svg": return [wrapTextContent(child), len]; + case vue.Fragment: return findFirstLegitChild(child.children); + default: return [child, len]; + } + return [wrapTextContent(child), len]; + } + return [null, 0]; + } + function wrapTextContent(s) { + const ns = useNamespace("only-child"); + return (0, vue.createVNode)("span", { "class": ns.e("content") }, [s]); + } + +//#endregion +//#region ../../packages/components/popper/src/trigger.vue?vue&type=script&setup=true&lang.ts + var trigger_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElPopperTrigger", + inheritAttrs: false, + __name: "trigger", + props: popperTriggerProps, + setup(__props, { expose: __expose }) { + const props = __props; + const { role, triggerRef } = (0, vue.inject)(POPPER_INJECTION_KEY, void 0); + useForwardRef(triggerRef); + const ariaControls = (0, vue.computed)(() => { + return ariaHaspopup.value ? props.id : void 0; + }); + const ariaDescribedby = (0, vue.computed)(() => { + if (role && role.value === "tooltip") return props.open && props.id ? props.id : void 0; + }); + const ariaHaspopup = (0, vue.computed)(() => { + if (role && role.value !== "tooltip") return role.value; + }); + const ariaExpanded = (0, vue.computed)(() => { + return ariaHaspopup.value ? `${props.open}` : void 0; + }); + let virtualTriggerAriaStopWatch = void 0; + const TRIGGER_ELE_EVENTS = [ + "onMouseenter", + "onMouseleave", + "onClick", + "onKeydown", + "onFocus", + "onBlur", + "onContextmenu" + ]; + (0, vue.onMounted)(() => { + (0, vue.watch)(() => props.virtualRef, (virtualEl) => { + if (virtualEl) triggerRef.value = unrefElement(virtualEl); + }, { immediate: true }); + (0, vue.watch)(triggerRef, (el, prevEl) => { + virtualTriggerAriaStopWatch?.(); + virtualTriggerAriaStopWatch = void 0; + if (isElement$1(prevEl)) TRIGGER_ELE_EVENTS.forEach((eventName) => { + const handler = props[eventName]; + if (handler) prevEl.removeEventListener(eventName.slice(2).toLowerCase(), handler, ["onFocus", "onBlur"].includes(eventName)); + }); + if (isElement$1(el)) { + TRIGGER_ELE_EVENTS.forEach((eventName) => { + const handler = props[eventName]; + if (handler) el.addEventListener(eventName.slice(2).toLowerCase(), handler, ["onFocus", "onBlur"].includes(eventName)); + }); + if (isFocusable(el)) virtualTriggerAriaStopWatch = (0, vue.watch)([ + ariaControls, + ariaDescribedby, + ariaHaspopup, + ariaExpanded + ], (watches) => { + [ + "aria-controls", + "aria-describedby", + "aria-haspopup", + "aria-expanded" + ].forEach((key, idx) => { + isNil(watches[idx]) ? el.removeAttribute(key) : el.setAttribute(key, watches[idx]); + }); + }, { immediate: true }); + } + if (isElement$1(prevEl) && isFocusable(prevEl)) [ + "aria-controls", + "aria-describedby", + "aria-haspopup", + "aria-expanded" + ].forEach((key) => prevEl.removeAttribute(key)); + }, { immediate: true }); + }); + (0, vue.onBeforeUnmount)(() => { + virtualTriggerAriaStopWatch?.(); + virtualTriggerAriaStopWatch = void 0; + if (triggerRef.value && isElement$1(triggerRef.value)) { + const el = triggerRef.value; + TRIGGER_ELE_EVENTS.forEach((eventName) => { + const handler = props[eventName]; + if (handler) el.removeEventListener(eventName.slice(2).toLowerCase(), handler, ["onFocus", "onBlur"].includes(eventName)); + }); + triggerRef.value = void 0; + } + }); + __expose({ triggerRef }); + return (_ctx, _cache) => { + return !__props.virtualTriggering ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(OnlyChild), (0, vue.mergeProps)({ key: 0 }, _ctx.$attrs, { + "aria-controls": ariaControls.value, + "aria-describedby": ariaDescribedby.value, + "aria-expanded": ariaExpanded.value, + "aria-haspopup": ariaHaspopup.value + }), { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 16, [ + "aria-controls", + "aria-describedby", + "aria-expanded", + "aria-haspopup" + ])) : (0, vue.createCommentVNode)("v-if", true); + }; + } + }); + +//#endregion +//#region ../../packages/components/popper/src/trigger.vue + var trigger_default = trigger_vue_vue_type_script_setup_true_lang_default$1; + +//#endregion +//#region ../../packages/components/popper/src/arrow.ts +/** + * @deprecated Removed after 3.0.0, Use `PopperArrowProps` instead. + */ + const popperArrowProps = buildProps({ arrowOffset: { + type: Number, + default: 5 + } }); + const popperArrowPropsDefaults = { arrowOffset: 5 }; + /** @deprecated use `popperArrowProps` instead, and it will be deprecated in the next major version */ + const usePopperArrowProps = popperArrowProps; + +//#endregion +//#region ../../packages/components/popper/src/content.ts + const POSITIONING_STRATEGIES = ["fixed", "absolute"]; + /** + * @deprecated Removed after 3.0.0, Use `PopperCoreConfigProps` instead. + */ + const popperCoreConfigProps = buildProps({ + boundariesPadding: { + type: Number, + default: 0 + }, + fallbackPlacements: { + type: definePropType(Array), + default: void 0 + }, + gpuAcceleration: { + type: Boolean, + default: true + }, + offset: { + type: Number, + default: 12 + }, + placement: { + type: String, + values: Ee, + default: "bottom" + }, + popperOptions: { + type: definePropType(Object), + default: () => ({}) + }, + strategy: { + type: String, + values: POSITIONING_STRATEGIES, + default: "absolute" + } + }); + /** + * @deprecated Removed after 3.0.0, Use `PopperContentProps` instead. + */ + const popperContentProps = buildProps({ + ...popperCoreConfigProps, + ...popperArrowProps, + id: String, + style: { type: definePropType([ + String, + Array, + Object + ]) }, + className: { type: definePropType([ + String, + Array, + Object + ]) }, + effect: { + type: definePropType(String), + default: "dark" + }, + visible: Boolean, + enterable: { + type: Boolean, + default: true + }, + pure: Boolean, + focusOnShow: Boolean, + trapping: Boolean, + popperClass: { type: definePropType([ + String, + Array, + Object + ]) }, + popperStyle: { type: definePropType([ + String, + Array, + Object + ]) }, + referenceEl: { type: definePropType(Object) }, + triggerTargetEl: { type: definePropType(Object) }, + stopPopperMouseEvent: { + type: Boolean, + default: true + }, + virtualTriggering: Boolean, + zIndex: Number, + ...useAriaProps(["ariaLabel"]), + loop: Boolean + }); + const popperCoreConfigPropsDefaults = { + boundariesPadding: 0, + gpuAcceleration: true, + offset: 12, + placement: "bottom", + popperOptions: () => ({}), + strategy: "absolute" + }; + const popperContentPropsDefaults = { + ...popperCoreConfigPropsDefaults, + ...popperArrowPropsDefaults, + effect: "dark", + enterable: true, + stopPopperMouseEvent: true, + visible: false, + pure: false, + focusOnShow: false, + trapping: false, + virtualTriggering: false, + loop: false, + style: void 0, + popperStyle: void 0 + }; + const popperContentEmits = { + mouseenter: (evt) => evt instanceof MouseEvent, + mouseleave: (evt) => evt instanceof MouseEvent, + focus: () => true, + blur: () => true, + close: () => true + }; + /** @deprecated use `popperCoreConfigProps` instead, and it will be deprecated in the next major version */ + const usePopperCoreConfigProps = popperCoreConfigProps; + /** @deprecated use `popperContentProps` instead, and it will be deprecated in the next major version */ + const usePopperContentProps = popperContentProps; + /** @deprecated use `popperContentEmits` instead, and it will be deprecated in the next major version */ + const usePopperContentEmits = popperContentEmits; + +//#endregion +//#region ../../packages/components/focus-trap/src/tokens.ts + const FOCUS_AFTER_TRAPPED = "focus-trap.focus-after-trapped"; + const FOCUS_AFTER_RELEASED = "focus-trap.focus-after-released"; + const FOCUSOUT_PREVENTED = "focus-trap.focusout-prevented"; + const FOCUS_AFTER_TRAPPED_OPTS = { + cancelable: true, + bubbles: false + }; + const FOCUSOUT_PREVENTED_OPTS = { + cancelable: true, + bubbles: false + }; + const ON_TRAP_FOCUS_EVT = "focusAfterTrapped"; + const ON_RELEASE_FOCUS_EVT = "focusAfterReleased"; + const FOCUS_TRAP_INJECTION_KEY = Symbol("elFocusTrap"); + +//#endregion +//#region ../../packages/components/focus-trap/src/utils.ts + const focusReason = (0, vue.ref)(); + const lastUserFocusTimestamp = (0, vue.ref)(0); + const lastAutomatedFocusTimestamp = (0, vue.ref)(0); + let focusReasonUserCount = 0; + const obtainAllFocusableElements = (element) => { + const nodes = []; + const walker = document.createTreeWalker(element, NodeFilter.SHOW_ELEMENT, { acceptNode: (node) => { + const isHiddenInput = node.tagName === "INPUT" && node.type === "hidden"; + if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP; + return node.tabIndex >= 0 || node === document.activeElement ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP; + } }); + while (walker.nextNode()) nodes.push(walker.currentNode); + return nodes; + }; + const getVisibleElement = (elements, container) => { + for (const element of elements) if (!isHidden(element, container)) return element; + }; + const isHidden = (element, container) => { + if (getComputedStyle(element).visibility === "hidden") return true; + while (element) { + if (container && element === container) return false; + if (getComputedStyle(element).display === "none") return true; + element = element.parentElement; + } + return false; + }; + const getEdges = (container) => { + const focusable = obtainAllFocusableElements(container); + return [getVisibleElement(focusable, container), getVisibleElement(focusable.reverse(), container)]; + }; + const isSelectable = (element) => { + return element instanceof HTMLInputElement && "select" in element; + }; + const tryFocus = (element, shouldSelect) => { + if (element) { + const prevFocusedElement = document.activeElement; + focusElement(element, { preventScroll: true }); + lastAutomatedFocusTimestamp.value = window.performance.now(); + if (element !== prevFocusedElement && isSelectable(element) && shouldSelect) element.select(); + } + }; + function removeFromStack(list, item) { + const copy = [...list]; + const idx = list.indexOf(item); + if (idx !== -1) copy.splice(idx, 1); + return copy; + } + const createFocusableStack = () => { + let stack = []; + const push = (layer) => { + const currentLayer = stack[0]; + if (currentLayer && layer !== currentLayer) currentLayer.pause(); + stack = removeFromStack(stack, layer); + stack.unshift(layer); + }; + const remove = (layer) => { + stack = removeFromStack(stack, layer); + stack[0]?.resume?.(); + }; + return { + push, + remove + }; + }; + const focusFirstDescendant = (elements, shouldSelect = false) => { + const prevFocusedElement = document.activeElement; + for (const element of elements) { + tryFocus(element, shouldSelect); + if (document.activeElement !== prevFocusedElement) return; + } + }; + const focusableStack = createFocusableStack(); + const isFocusCausedByUserEvent = () => { + return lastUserFocusTimestamp.value > lastAutomatedFocusTimestamp.value; + }; + const notifyFocusReasonPointer = () => { + focusReason.value = "pointer"; + lastUserFocusTimestamp.value = window.performance.now(); + }; + const notifyFocusReasonKeydown = () => { + focusReason.value = "keyboard"; + lastUserFocusTimestamp.value = window.performance.now(); + }; + const useFocusReason = () => { + (0, vue.onMounted)(() => { + if (focusReasonUserCount === 0) { + document.addEventListener("mousedown", notifyFocusReasonPointer); + document.addEventListener("touchstart", notifyFocusReasonPointer); + document.addEventListener("keydown", notifyFocusReasonKeydown); + } + focusReasonUserCount++; + }); + (0, vue.onBeforeUnmount)(() => { + focusReasonUserCount--; + if (focusReasonUserCount <= 0) { + document.removeEventListener("mousedown", notifyFocusReasonPointer); + document.removeEventListener("touchstart", notifyFocusReasonPointer); + document.removeEventListener("keydown", notifyFocusReasonKeydown); + } + }); + return { + focusReason, + lastUserFocusTimestamp, + lastAutomatedFocusTimestamp + }; + }; + const createFocusOutPreventedEvent = (detail) => { + return new CustomEvent(FOCUSOUT_PREVENTED, { + ...FOCUSOUT_PREVENTED_OPTS, + detail + }); + }; + +//#endregion +//#region ../../packages/components/focus-trap/src/focus-trap.vue?vue&type=script&lang.ts + var focus_trap_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElFocusTrap", + inheritAttrs: false, + props: { + loop: Boolean, + trapped: Boolean, + focusTrapEl: Object, + focusStartEl: { + type: [Object, String], + default: "first" + } + }, + emits: [ + ON_TRAP_FOCUS_EVT, + ON_RELEASE_FOCUS_EVT, + "focusin", + "focusout", + "focusout-prevented", + "release-requested" + ], + setup(props, { emit }) { + const forwardRef = (0, vue.ref)(); + let lastFocusBeforeTrapped; + let lastFocusAfterTrapped; + const { focusReason } = useFocusReason(); + useEscapeKeydown((event) => { + if (props.trapped && !focusLayer.paused) emit("release-requested", event); + }); + const focusLayer = { + paused: false, + pause() { + this.paused = true; + }, + resume() { + this.paused = false; + } + }; + const onKeydown = (e) => { + if (!props.loop && !props.trapped) return; + if (focusLayer.paused) return; + const { altKey, ctrlKey, metaKey, currentTarget, shiftKey } = e; + const { loop } = props; + const isTabbing = getEventCode(e) === EVENT_CODE.tab && !altKey && !ctrlKey && !metaKey; + const currentFocusingEl = document.activeElement; + if (isTabbing && currentFocusingEl) { + const container = currentTarget; + const [first, last] = getEdges(container); + if (!(first && last)) { + if (currentFocusingEl === container) { + const focusoutPreventedEvent = createFocusOutPreventedEvent({ focusReason: focusReason.value }); + emit("focusout-prevented", focusoutPreventedEvent); + if (!focusoutPreventedEvent.defaultPrevented) e.preventDefault(); + } + } else if (!shiftKey && currentFocusingEl === last) { + const focusoutPreventedEvent = createFocusOutPreventedEvent({ focusReason: focusReason.value }); + emit("focusout-prevented", focusoutPreventedEvent); + if (!focusoutPreventedEvent.defaultPrevented) { + e.preventDefault(); + if (loop) tryFocus(first, true); + } + } else if (shiftKey && [first, container].includes(currentFocusingEl)) { + const focusoutPreventedEvent = createFocusOutPreventedEvent({ focusReason: focusReason.value }); + emit("focusout-prevented", focusoutPreventedEvent); + if (!focusoutPreventedEvent.defaultPrevented) { + e.preventDefault(); + if (loop) tryFocus(last, true); + } + } + } + }; + (0, vue.provide)(FOCUS_TRAP_INJECTION_KEY, { + focusTrapRef: forwardRef, + onKeydown + }); + (0, vue.watch)(() => props.focusTrapEl, (focusTrapEl) => { + if (focusTrapEl) forwardRef.value = focusTrapEl; + }, { immediate: true }); + (0, vue.watch)([forwardRef], ([forwardRef], [oldForwardRef]) => { + if (forwardRef) { + forwardRef.addEventListener("keydown", onKeydown); + forwardRef.addEventListener("focusin", onFocusIn); + forwardRef.addEventListener("focusout", onFocusOut); + } + if (oldForwardRef) { + oldForwardRef.removeEventListener("keydown", onKeydown); + oldForwardRef.removeEventListener("focusin", onFocusIn); + oldForwardRef.removeEventListener("focusout", onFocusOut); + } + }); + const trapOnFocus = (e) => { + emit(ON_TRAP_FOCUS_EVT, e); + }; + const releaseOnFocus = (e) => emit(ON_RELEASE_FOCUS_EVT, e); + const onFocusIn = (e) => { + const trapContainer = (0, vue.unref)(forwardRef); + if (!trapContainer) return; + const target = e.target; + const relatedTarget = e.relatedTarget; + const isFocusedInTrap = target && trapContainer.contains(target); + if (!props.trapped) { + if (!(relatedTarget && trapContainer.contains(relatedTarget))) lastFocusBeforeTrapped = relatedTarget; + } + if (isFocusedInTrap) emit("focusin", e); + if (focusLayer.paused) return; + if (props.trapped) if (isFocusedInTrap) lastFocusAfterTrapped = target; + else tryFocus(lastFocusAfterTrapped, true); + }; + const onFocusOut = (e) => { + const trapContainer = (0, vue.unref)(forwardRef); + if (focusLayer.paused || !trapContainer) return; + if (props.trapped) { + const relatedTarget = e.relatedTarget; + if (!isNil(relatedTarget) && !trapContainer.contains(relatedTarget)) setTimeout(() => { + if (!focusLayer.paused && props.trapped) { + const focusoutPreventedEvent = createFocusOutPreventedEvent({ focusReason: focusReason.value }); + emit("focusout-prevented", focusoutPreventedEvent); + if (!focusoutPreventedEvent.defaultPrevented) tryFocus(lastFocusAfterTrapped, true); + } + }, 0); + } else { + const target = e.target; + if (!(target && trapContainer.contains(target))) emit("focusout", e); + } + }; + async function startTrap() { + await (0, vue.nextTick)(); + const trapContainer = (0, vue.unref)(forwardRef); + if (trapContainer) { + focusableStack.push(focusLayer); + const prevFocusedElement = trapContainer.contains(document.activeElement) ? lastFocusBeforeTrapped : document.activeElement; + lastFocusBeforeTrapped = prevFocusedElement; + if (!trapContainer.contains(prevFocusedElement)) { + const focusEvent = new Event(FOCUS_AFTER_TRAPPED, FOCUS_AFTER_TRAPPED_OPTS); + trapContainer.addEventListener(FOCUS_AFTER_TRAPPED, trapOnFocus); + trapContainer.dispatchEvent(focusEvent); + if (!focusEvent.defaultPrevented) (0, vue.nextTick)(() => { + let focusStartEl = props.focusStartEl; + if (!isString(focusStartEl)) { + tryFocus(focusStartEl); + if (document.activeElement !== focusStartEl) focusStartEl = "first"; + } + if (focusStartEl === "first") focusFirstDescendant(obtainAllFocusableElements(trapContainer), true); + if (document.activeElement === prevFocusedElement || focusStartEl === "container") tryFocus(trapContainer); + }); + } + } + } + function stopTrap() { + const trapContainer = (0, vue.unref)(forwardRef); + if (trapContainer) { + trapContainer.removeEventListener(FOCUS_AFTER_TRAPPED, trapOnFocus); + const releasedEvent = new CustomEvent(FOCUS_AFTER_RELEASED, { + ...FOCUS_AFTER_TRAPPED_OPTS, + detail: { focusReason: focusReason.value } + }); + trapContainer.addEventListener(FOCUS_AFTER_RELEASED, releaseOnFocus); + trapContainer.dispatchEvent(releasedEvent); + if (!releasedEvent.defaultPrevented && (focusReason.value == "keyboard" || !isFocusCausedByUserEvent() || trapContainer.contains(document.activeElement))) tryFocus(lastFocusBeforeTrapped ?? document.body); + trapContainer.removeEventListener(FOCUS_AFTER_RELEASED, releaseOnFocus); + focusableStack.remove(focusLayer); + lastFocusBeforeTrapped = null; + lastFocusAfterTrapped = null; + } + } + (0, vue.onMounted)(() => { + if (props.trapped) startTrap(); + (0, vue.watch)(() => props.trapped, (trapped) => { + if (trapped) startTrap(); + else stopTrap(); + }); + }); + (0, vue.onBeforeUnmount)(() => { + if (props.trapped) stopTrap(); + if (forwardRef.value) { + forwardRef.value.removeEventListener("keydown", onKeydown); + forwardRef.value.removeEventListener("focusin", onFocusIn); + forwardRef.value.removeEventListener("focusout", onFocusOut); + forwardRef.value = void 0; + } + lastFocusBeforeTrapped = null; + lastFocusAfterTrapped = null; + }); + return { onKeydown }; + } + }); + +//#endregion +//#region \0plugin-vue:export-helper + var _plugin_vue_export_helper_default = (sfc, props) => { + const target = sfc.__vccOpts || sfc; + for (const [key, val] of props) target[key] = val; + return target; + }; + +//#endregion +//#region ../../packages/components/focus-trap/src/focus-trap.vue + function _sfc_render$21(_ctx, _cache, $props, $setup, $data, $options) { + return (0, vue.renderSlot)(_ctx.$slots, "default", { handleKeydown: _ctx.onKeydown }); + } + var focus_trap_default$1 = /* @__PURE__ */ _plugin_vue_export_helper_default(focus_trap_vue_vue_type_script_lang_default, [["render", _sfc_render$21]]); + +//#endregion +//#region ../../packages/components/focus-trap/index.ts + var focus_trap_default = focus_trap_default$1; + +//#endregion +//#region ../../packages/components/form/src/form.ts +/** + * @deprecated Removed after 3.0.0, Use `FormMetaProps` instead. + */ + const formMetaProps = buildProps({ + size: { + type: String, + values: componentSizes + }, + disabled: Boolean + }); + /** + * @deprecated Removed after 3.0.0, Use `FormProps` instead. + */ + const formProps = buildProps({ + ...formMetaProps, + model: Object, + rules: { type: definePropType(Object) }, + labelPosition: { + type: String, + values: [ + "left", + "right", + "top" + ], + default: "right" + }, + requireAsteriskPosition: { + type: String, + values: ["left", "right"], + default: "left" + }, + labelWidth: { + type: [String, Number], + default: "" + }, + labelSuffix: { + type: String, + default: "" + }, + inline: Boolean, + inlineMessage: Boolean, + statusIcon: Boolean, + showMessage: { + type: Boolean, + default: true + }, + validateOnRuleChange: { + type: Boolean, + default: true + }, + hideRequiredAsterisk: Boolean, + scrollToError: Boolean, + scrollIntoViewOptions: { + type: definePropType([Object, Boolean]), + default: true + } + }); + const formEmits = { validate: (prop, isValid, message) => (isArray$1(prop) || isString(prop)) && isBoolean(isValid) && isString(message) }; + +//#endregion +//#region ../../packages/components/form/src/constants.ts + const formContextKey = Symbol("formContextKey"); + const formItemContextKey = Symbol("formItemContextKey"); + +//#endregion +//#region ../../packages/components/form/src/hooks/use-form-common-props.ts + const useFormSize = (fallback, ignore = {}) => { + const emptyRef = (0, vue.ref)(void 0); + const size = ignore.prop ? emptyRef : useProp("size"); + const globalConfig = ignore.global ? emptyRef : useGlobalSize(); + const form = ignore.form ? { size: void 0 } : (0, vue.inject)(formContextKey, void 0); + const formItem = ignore.formItem ? { size: void 0 } : (0, vue.inject)(formItemContextKey, void 0); + return (0, vue.computed)(() => size.value || (0, vue.unref)(fallback) || formItem?.size || form?.size || globalConfig.value || ""); + }; + const useFormDisabled = (fallback) => { + const disabled = useProp("disabled"); + const form = (0, vue.inject)(formContextKey, void 0); + return (0, vue.computed)(() => { + return disabled.value ?? (0, vue.unref)(fallback) ?? form?.disabled ?? false; + }); + }; + const useSize = useFormSize; + const useDisabled = useFormDisabled; + +//#endregion +//#region ../../packages/components/form/src/hooks/use-form-item.ts + const useFormItem = () => { + return { + form: (0, vue.inject)(formContextKey, void 0), + formItem: (0, vue.inject)(formItemContextKey, void 0) + }; + }; + const useFormItemInputId = (props, { formItemContext, disableIdGeneration, disableIdManagement }) => { + if (!disableIdGeneration) disableIdGeneration = (0, vue.ref)(false); + if (!disableIdManagement) disableIdManagement = (0, vue.ref)(false); + const instance = (0, vue.getCurrentInstance)(); + const inLabel = () => { + let parent = instance?.parent; + while (parent) { + if (parent.type.name === "ElFormItem") return false; + if (parent.type.name === "ElLabelWrap") return true; + parent = parent.parent; + } + return false; + }; + const inputId = (0, vue.ref)(); + let idUnwatch = void 0; + const isLabeledByFormItem = (0, vue.computed)(() => { + return !!(!(props.label || props.ariaLabel) && formItemContext && formItemContext.inputIds && formItemContext.inputIds?.length <= 1); + }); + (0, vue.onMounted)(() => { + idUnwatch = (0, vue.watch)([(0, vue.toRef)(props, "id"), disableIdGeneration], ([id, disableIdGeneration]) => { + const newId = id ?? (!disableIdGeneration ? useId().value : void 0); + if (newId !== inputId.value) { + if (formItemContext?.removeInputId && !inLabel()) { + inputId.value && formItemContext.removeInputId(inputId.value); + if (!disableIdManagement?.value && !disableIdGeneration && newId) formItemContext.addInputId(newId); + } + inputId.value = newId; + } + }, { immediate: true }); + }); + (0, vue.onUnmounted)(() => { + idUnwatch && idUnwatch(); + if (formItemContext?.removeInputId) inputId.value && formItemContext.removeInputId(inputId.value); + }); + return { + isLabeledByFormItem, + inputId + }; + }; + +//#endregion +//#region ../../packages/components/form/src/utils.ts + const SCOPE$7 = "ElForm"; + function useFormLabelWidth() { + const potentialLabelWidthArr = (0, vue.ref)([]); + const autoLabelWidth = (0, vue.computed)(() => { + if (!potentialLabelWidthArr.value.length) return "0"; + const max = Math.max(...potentialLabelWidthArr.value); + return max ? `${max}px` : ""; + }); + function getLabelWidthIndex(width) { + const index = potentialLabelWidthArr.value.indexOf(width); + if (index === -1 && autoLabelWidth.value === "0") /* @__PURE__ */ debugWarn(SCOPE$7, `unexpected width ${width}`); + return index; + } + function registerLabelWidth(val, oldVal) { + if (val && oldVal) { + const index = getLabelWidthIndex(oldVal); + potentialLabelWidthArr.value.splice(index, 1, val); + } else if (val) potentialLabelWidthArr.value.push(val); + } + function deregisterLabelWidth(val) { + const index = getLabelWidthIndex(val); + if (index > -1) potentialLabelWidthArr.value.splice(index, 1); + } + return { + autoLabelWidth, + registerLabelWidth, + deregisterLabelWidth + }; + } + const filterFields = (fields, props) => { + const normalized = castArray$1(props).map((prop) => isArray$1(prop) ? prop.join(".") : prop); + return normalized.length > 0 ? fields.filter((field) => field.propString && normalized.includes(field.propString)) : fields; + }; + +//#endregion +//#region ../../packages/components/form/src/form.vue?vue&type=script&setup=true&lang.ts + const COMPONENT_NAME$21 = "ElForm"; + var form_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$21, + __name: "form", + props: formProps, + emits: formEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const formRef = (0, vue.ref)(); + const fields = (0, vue.reactive)([]); + const initialValues = /* @__PURE__ */ new Map(); + const formSize = useFormSize(); + const ns = useNamespace("form"); + const formClasses = (0, vue.computed)(() => { + const { labelPosition, inline } = props; + return [ + ns.b(), + ns.m(formSize.value || "default"), + { + [ns.m(`label-${labelPosition}`)]: labelPosition, + [ns.m("inline")]: inline + } + ]; + }); + const getField = (prop) => { + return filterFields(fields, [prop])[0]; + }; + const addField = (field) => { + if (!fields.includes(field)) fields.push(field); + if (field.propString) if (initialValues.has(field.propString)) field.setInitialValue(initialValues.get(field.propString)); + else initialValues.set(field.propString, cloneDeep(field.fieldValue)); + }; + const removeField = (field, oldPropString) => { + if (oldPropString) { + initialValues.delete(oldPropString); + return; + } + const idx = fields.indexOf(field); + if (idx > -1) { + fields.splice(idx, 1); + if (field.propString) initialValues.set(field.propString, cloneDeep(field.getInitialValue())); + } + }; + const setInitialValues = (initModel) => { + if (!props.model) { + /* @__PURE__ */ debugWarn(COMPONENT_NAME$21, "model is required for setInitialValues to work."); + return; + } + if (!initModel) { + /* @__PURE__ */ debugWarn(COMPONENT_NAME$21, "initModel is required for setInitialValues to work."); + return; + } + for (const key of initialValues.keys()) initialValues.set(key, cloneDeep(getProp(initModel, key).value)); + fields.forEach((field) => { + if (field.prop) field.setInitialValue(getProp(initModel, field.prop).value); + }); + }; + const resetFields = (properties = []) => { + if (!props.model) { + /* @__PURE__ */ debugWarn(COMPONENT_NAME$21, "model is required for resetFields to work."); + return; + } + filterFields(fields, properties).forEach((field) => field.resetField()); + const activePropStrings = new Set(fields.map((f) => f.propString).filter(Boolean)); + const propsToCheck = properties.length > 0 ? castArray$1(properties).map((p) => isArray$1(p) ? p.join(".") : p) : [...initialValues.keys()]; + for (const propString of propsToCheck) if (!activePropStrings.has(propString) && initialValues.has(propString)) getProp(props.model, propString).value = cloneDeep(initialValues.get(propString)); + }; + const clearValidate = (props = []) => { + filterFields(fields, props).forEach((field) => field.clearValidate()); + }; + const isValidatable = (0, vue.computed)(() => { + const hasModel = !!props.model; + if (!hasModel) /* @__PURE__ */ debugWarn(COMPONENT_NAME$21, "model is required for validate to work."); + return hasModel; + }); + const obtainValidateFields = (props) => { + if (fields.length === 0) return []; + const filteredFields = filterFields(fields, props); + if (!filteredFields.length) { + /* @__PURE__ */ debugWarn(COMPONENT_NAME$21, "please pass correct props!"); + return []; + } + return filteredFields; + }; + const validate = async (callback) => validateField(void 0, callback); + const doValidateField = async (props = []) => { + if (!isValidatable.value) return false; + const fields = obtainValidateFields(props); + if (fields.length === 0) return true; + let validationErrors = {}; + for (const field of fields) try { + await field.validate(""); + if (field.validateState === "error" && !field.error) field.resetField(); + } catch (fields) { + validationErrors = { + ...validationErrors, + ...fields + }; + } + if (Object.keys(validationErrors).length === 0) return true; + return Promise.reject(validationErrors); + }; + const validateField = async (modelProps = [], callback) => { + let result = false; + const shouldThrow = !isFunction$1(callback); + try { + result = await doValidateField(modelProps); + if (result === true) await callback?.(result); + return result; + } catch (e) { + if (e instanceof Error) throw e; + const invalidFields = e; + if (props.scrollToError) { + if (formRef.value) formRef.value.querySelector(`.${ns.b()}-item.is-error`)?.scrollIntoView(props.scrollIntoViewOptions); + } + !result && await callback?.(false, invalidFields); + return shouldThrow && Promise.reject(invalidFields); + } + }; + const scrollToField = (prop) => { + const field = getField(prop); + if (field) field.$el?.scrollIntoView(props.scrollIntoViewOptions); + }; + (0, vue.watch)(() => props.rules, () => { + if (props.validateOnRuleChange) validate().catch((err) => /* @__PURE__ */ debugWarn(err)); + }, { + deep: true, + flush: "post" + }); + (0, vue.provide)(formContextKey, (0, vue.reactive)({ + ...(0, vue.toRefs)(props), + emit, + resetFields, + clearValidate, + validateField, + getField, + addField, + removeField, + setInitialValues, + ...useFormLabelWidth() + })); + __expose({ + validate, + validateField, + resetFields, + clearValidate, + scrollToField, + getField, + fields, + setInitialValues + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("form", { + ref_key: "formRef", + ref: formRef, + class: (0, vue.normalizeClass)(formClasses.value) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/form/src/form.vue + var form_default = form_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/form/src/form-item.ts + const formItemValidateStates = [ + "", + "error", + "validating", + "success" + ]; + /** + * @deprecated Removed after 3.0.0, Use `FormItemProps` instead. + */ + const formItemProps = buildProps({ + label: String, + labelWidth: { type: [String, Number] }, + labelPosition: { + type: String, + values: [ + "left", + "right", + "top", + "" + ], + default: "" + }, + prop: { type: definePropType([String, Array]) }, + required: { + type: Boolean, + default: void 0 + }, + rules: { type: definePropType([Object, Array]) }, + error: String, + validateStatus: { + type: String, + values: formItemValidateStates + }, + for: String, + inlineMessage: { + type: Boolean, + default: void 0 + }, + showMessage: { + type: Boolean, + default: true + }, + size: { + type: String, + values: componentSizes + } + }); + +//#endregion +//#region ../../node_modules/.pnpm/async-validator@4.2.5_patch_hash=cc6d77b35ed2a1683012935ca9ed998d418912785fcf78c6497d3268ac596d23/node_modules/async-validator/dist-web/index.js + function _extends() { + _extends = Object.assign ? Object.assign.bind() : function(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key]; + } + return target; + }; + return _extends.apply(this, arguments); + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + try { + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); + return true; + } catch (e) { + return false; + } + } + function _construct(Parent, args, Class) { + if (_isNativeReflectConstruct()) _construct = Reflect.construct.bind(); + else _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var instance = new (Function.bind.apply(Parent, a))(); + if (Class) _setPrototypeOf(instance, Class.prototype); + return instance; + }; + return _construct.apply(null, arguments); + } + function _isNativeFunction(fn) { + return Function.toString.call(fn).indexOf("[native code]") !== -1; + } + function _wrapNativeSuper(Class) { + var _cache = typeof Map === "function" ? /* @__PURE__ */ new Map() : void 0; + _wrapNativeSuper = function _wrapNativeSuper(Class) { + if (Class === null || !_isNativeFunction(Class)) return Class; + if (typeof Class !== "function") throw new TypeError("Super expression must either be null or a function"); + if (typeof _cache !== "undefined") { + if (_cache.has(Class)) return _cache.get(Class); + _cache.set(Class, Wrapper); + } + function Wrapper() { + return _construct(Class, arguments, _getPrototypeOf(this).constructor); + } + Wrapper.prototype = Object.create(Class.prototype, { constructor: { + value: Wrapper, + enumerable: false, + writable: true, + configurable: true + } }); + return _setPrototypeOf(Wrapper, Class); + }; + return _wrapNativeSuper(Class); + } + var formatRegExp = /%[sdj%]/g; + var warning = function warning() {}; + if (typeof process !== "undefined" && process.env && false); + function convertFieldsError(errors) { + if (!errors || !errors.length) return null; + var fields = {}; + errors.forEach(function(error) { + var field = error.field; + fields[field] = fields[field] || []; + fields[field].push(error); + }); + return fields; + } + function format(template) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) args[_key - 1] = arguments[_key]; + var i = 0; + var len = args.length; + if (typeof template === "function") return template.apply(null, args); + if (typeof template === "string") return template.replace(formatRegExp, function(x) { + if (x === "%%") return "%"; + if (i >= len) return x; + switch (x) { + case "%s": return String(args[i++]); + case "%d": return Number(args[i++]); + case "%j": + try { + return JSON.stringify(args[i++]); + } catch (_) { + return "[Circular]"; + } + break; + default: return x; + } + }); + return template; + } + function isNativeStringType(type) { + return type === "string" || type === "url" || type === "hex" || type === "email" || type === "date" || type === "pattern"; + } + function isEmptyValue(value, type) { + if (value === void 0 || value === null) return true; + if (type === "array" && Array.isArray(value) && !value.length) return true; + if (isNativeStringType(type) && typeof value === "string" && !value) return true; + return false; + } + function asyncParallelArray(arr, func, callback) { + var results = []; + var total = 0; + var arrLength = arr.length; + function count(errors) { + results.push.apply(results, errors || []); + total++; + if (total === arrLength) callback(results); + } + arr.forEach(function(a) { + func(a, count); + }); + } + function asyncSerialArray(arr, func, callback) { + var index = 0; + var arrLength = arr.length; + function next(errors) { + if (errors && errors.length) { + callback(errors); + return; + } + var original = index; + index = index + 1; + if (original < arrLength) func(arr[original], next); + else callback([]); + } + next([]); + } + function flattenObjArr(objArr) { + var ret = []; + Object.keys(objArr).forEach(function(k) { + ret.push.apply(ret, objArr[k] || []); + }); + return ret; + } + var AsyncValidationError = /* @__PURE__ */ function(_Error) { + _inheritsLoose(AsyncValidationError, _Error); + function AsyncValidationError(errors, fields) { + var _this = _Error.call(this, "Async Validation Error") || this; + _this.errors = errors; + _this.fields = fields; + return _this; + } + return AsyncValidationError; + }(/* @__PURE__ */ _wrapNativeSuper(Error)); + function asyncMap(objArr, option, func, callback, source) { + if (option.first) { + var _pending = new Promise(function(resolve, reject) { + asyncSerialArray(flattenObjArr(objArr), func, function next(errors) { + callback(errors); + return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source); + }); + }); + _pending["catch"](function(e) { + return e; + }); + return _pending; + } + var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || []; + var objArrKeys = Object.keys(objArr); + var objArrLength = objArrKeys.length; + var total = 0; + var results = []; + var pending = new Promise(function(resolve, reject) { + var next = function next(errors) { + results.push.apply(results, errors); + total++; + if (total === objArrLength) { + callback(results); + return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source); + } + }; + if (!objArrKeys.length) { + callback(results); + resolve(source); + } + objArrKeys.forEach(function(key) { + var arr = objArr[key]; + if (firstFields.indexOf(key) !== -1) asyncSerialArray(arr, func, next); + else asyncParallelArray(arr, func, next); + }); + }); + pending["catch"](function(e) { + return e; + }); + return pending; + } + function isErrorObj(obj) { + return !!(obj && obj.message !== void 0); + } + function getValue(value, path) { + var v = value; + for (var i = 0; i < path.length; i++) { + if (v == void 0) return v; + v = v[path[i]]; + } + return v; + } + function complementError(rule, source) { + return function(oe) { + var fieldValue; + if (rule.fullFields) fieldValue = getValue(source, rule.fullFields); + else fieldValue = source[oe.field || rule.fullField]; + if (isErrorObj(oe)) { + oe.field = oe.field || rule.fullField; + oe.fieldValue = fieldValue; + return oe; + } + return { + message: typeof oe === "function" ? oe() : oe, + fieldValue, + field: oe.field || rule.fullField + }; + }; + } + function deepMerge(target, source) { + if (source) { + for (var s in source) if (source.hasOwnProperty(s)) { + var value = source[s]; + if (typeof value === "object" && typeof target[s] === "object") target[s] = _extends({}, target[s], value); + else target[s] = value; + } + } + return target; + } + var required$1 = function required(rule, value, source, errors, options, type) { + if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))) errors.push(format(options.messages.required, rule.fullField)); + }; + /** + * Rule for validating whitespace. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param source The source object being validated. + * @param errors An array of errors that this rule may add + * validation errors to. + * @param options The validation options. + * @param options.messages The validation messages. + */ + var whitespace = function whitespace(rule, value, source, errors, options) { + if (/^\s+$/.test(value) || value === "") errors.push(format(options.messages.whitespace, rule.fullField)); + }; + var urlReg; + var getUrlRegex = (function() { + if (urlReg) return urlReg; + var word = "[a-fA-F\\d:]"; + var b = function b(options) { + return options && options.includeBoundaries ? "(?:(?<=\\s|^)(?=" + word + ")|(?<=" + word + ")(?=\\s|$))" : ""; + }; + var v4 = "(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}"; + var v6seg = "[a-fA-F\\d]{1,4}"; + var v6 = ("\n(?:\n(?:" + v6seg + ":){7}(?:" + v6seg + "|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:" + v6seg + ":){6}(?:" + v4 + "|:" + v6seg + "|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:" + v6seg + ":){5}(?::" + v4 + "|(?::" + v6seg + "){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:" + v6seg + ":){4}(?:(?::" + v6seg + "){0,1}:" + v4 + "|(?::" + v6seg + "){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:" + v6seg + ":){3}(?:(?::" + v6seg + "){0,2}:" + v4 + "|(?::" + v6seg + "){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:" + v6seg + ":){2}(?:(?::" + v6seg + "){0,3}:" + v4 + "|(?::" + v6seg + "){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:" + v6seg + ":){1}(?:(?::" + v6seg + "){0,4}:" + v4 + "|(?::" + v6seg + "){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::" + v6seg + "){0,5}:" + v4 + "|(?::" + v6seg + "){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n").replace(/\s*\/\/.*$/gm, "").replace(/\n/g, "").trim(); + var v46Exact = new RegExp("(?:^" + v4 + "$)|(?:^" + v6 + "$)"); + var v4exact = new RegExp("^" + v4 + "$"); + var v6exact = new RegExp("^" + v6 + "$"); + var ip = function ip(options) { + return options && options.exact ? v46Exact : new RegExp("(?:" + b(options) + v4 + b(options) + ")|(?:" + b(options) + v6 + b(options) + ")", "g"); + }; + ip.v4 = function(options) { + return options && options.exact ? v4exact : new RegExp("" + b(options) + v4 + b(options), "g"); + }; + ip.v6 = function(options) { + return options && options.exact ? v6exact : new RegExp("" + b(options) + v6 + b(options), "g"); + }; + var protocol = "(?:(?:[a-z]+:)?//)"; + var auth = "(?:\\S+(?::\\S*)?@)?"; + var ipv4 = ip.v4().source; + var ipv6 = ip.v6().source; + var regex = "(?:" + protocol + "|www\\.)" + auth + "(?:localhost|" + ipv4 + "|" + ipv6 + "|(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:[/?#][^\\s\"]*)?"; + urlReg = new RegExp("(?:^" + regex + "$)", "i"); + return urlReg; + }); + var pattern$2 = { + email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/, + hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i + }; + var types = { + integer: function integer(value) { + return types.number(value) && parseInt(value, 10) === value; + }, + "float": function float(value) { + return types.number(value) && !types.integer(value); + }, + array: function array(value) { + return Array.isArray(value); + }, + regexp: function regexp(value) { + if (value instanceof RegExp) return true; + try { + return !!new RegExp(value); + } catch (e) { + return false; + } + }, + date: function date(value) { + return typeof value.getTime === "function" && typeof value.getMonth === "function" && typeof value.getYear === "function" && !isNaN(value.getTime()); + }, + number: function number(value) { + if (isNaN(value)) return false; + return typeof value === "number"; + }, + object: function object(value) { + return typeof value === "object" && !types.array(value); + }, + method: function method(value) { + return typeof value === "function"; + }, + email: function email(value) { + return typeof value === "string" && value.length <= 320 && !!value.match(pattern$2.email); + }, + url: function url(value) { + return typeof value === "string" && value.length <= 2048 && !!value.match(getUrlRegex()); + }, + hex: function hex(value) { + return typeof value === "string" && !!value.match(pattern$2.hex); + } + }; + var type$1 = function type(rule, value, source, errors, options) { + if (rule.required && value === void 0) { + required$1(rule, value, source, errors, options); + return; + } + var custom = [ + "integer", + "float", + "array", + "regexp", + "object", + "method", + "email", + "number", + "date", + "url", + "hex" + ]; + var ruleType = rule.type; + if (custom.indexOf(ruleType) > -1) { + if (!types[ruleType](value)) errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type)); + } else if (ruleType && typeof value !== rule.type) errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type)); + }; + var range = function range(rule, value, source, errors, options) { + var len = typeof rule.len === "number"; + var min = typeof rule.min === "number"; + var max = typeof rule.max === "number"; + var val = value; + var key = null; + var num = typeof value === "number"; + var str = typeof value === "string"; + var arr = Array.isArray(value); + if (num) key = "number"; + else if (str) key = "string"; + else if (arr) key = "array"; + if (!key) return false; + if (arr) val = value.length; + if (str) val = value.length; + if (len) { + if (val !== rule.len) errors.push(format(options.messages[key].len, rule.fullField, rule.len)); + } else if (min && !max && val < rule.min) errors.push(format(options.messages[key].min, rule.fullField, rule.min)); + else if (max && !min && val > rule.max) errors.push(format(options.messages[key].max, rule.fullField, rule.max)); + else if (min && max && (val < rule.min || val > rule.max)) errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max)); + }; + var ENUM$1 = "enum"; + var enumerable$1 = function enumerable(rule, value, source, errors, options) { + rule[ENUM$1] = Array.isArray(rule[ENUM$1]) ? rule[ENUM$1] : []; + if (rule[ENUM$1].indexOf(value) === -1) errors.push(format(options.messages[ENUM$1], rule.fullField, rule[ENUM$1].join(", "))); + }; + var pattern$1 = function pattern(rule, value, source, errors, options) { + if (rule.pattern) { + if (rule.pattern instanceof RegExp) { + rule.pattern.lastIndex = 0; + if (!rule.pattern.test(value)) errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern)); + } else if (typeof rule.pattern === "string") { + if (!new RegExp(rule.pattern).test(value)) errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern)); + } + } + }; + var rules = { + required: required$1, + whitespace, + type: type$1, + range, + "enum": enumerable$1, + pattern: pattern$1 + }; + var string = function string(rule, value, callback, source, options) { + var errors = []; + if (rule.required || !rule.required && source.hasOwnProperty(rule.field)) { + if (isEmptyValue(value, "string") && !rule.required) return callback(); + rules.required(rule, value, source, errors, options, "string"); + if (!isEmptyValue(value, "string")) { + rules.type(rule, value, source, errors, options); + rules.range(rule, value, source, errors, options); + rules.pattern(rule, value, source, errors, options); + if (rule.whitespace === true) rules.whitespace(rule, value, source, errors, options); + } + } + callback(errors); + }; + var method = function method(rule, value, callback, source, options) { + var errors = []; + if (rule.required || !rule.required && source.hasOwnProperty(rule.field)) { + if (isEmptyValue(value) && !rule.required) return callback(); + rules.required(rule, value, source, errors, options); + if (value !== void 0) rules.type(rule, value, source, errors, options); + } + callback(errors); + }; + var number = function number(rule, value, callback, source, options) { + var errors = []; + if (rule.required || !rule.required && source.hasOwnProperty(rule.field)) { + if (value === "") value = void 0; + if (isEmptyValue(value) && !rule.required) return callback(); + rules.required(rule, value, source, errors, options); + if (value !== void 0) { + rules.type(rule, value, source, errors, options); + rules.range(rule, value, source, errors, options); + } + } + callback(errors); + }; + var _boolean = function _boolean(rule, value, callback, source, options) { + var errors = []; + if (rule.required || !rule.required && source.hasOwnProperty(rule.field)) { + if (isEmptyValue(value) && !rule.required) return callback(); + rules.required(rule, value, source, errors, options); + if (value !== void 0) rules.type(rule, value, source, errors, options); + } + callback(errors); + }; + var regexp = function regexp(rule, value, callback, source, options) { + var errors = []; + if (rule.required || !rule.required && source.hasOwnProperty(rule.field)) { + if (isEmptyValue(value) && !rule.required) return callback(); + rules.required(rule, value, source, errors, options); + if (!isEmptyValue(value)) rules.type(rule, value, source, errors, options); + } + callback(errors); + }; + var integer = function integer(rule, value, callback, source, options) { + var errors = []; + if (rule.required || !rule.required && source.hasOwnProperty(rule.field)) { + if (isEmptyValue(value) && !rule.required) return callback(); + rules.required(rule, value, source, errors, options); + if (value !== void 0) { + rules.type(rule, value, source, errors, options); + rules.range(rule, value, source, errors, options); + } + } + callback(errors); + }; + var floatFn = function floatFn(rule, value, callback, source, options) { + var errors = []; + if (rule.required || !rule.required && source.hasOwnProperty(rule.field)) { + if (isEmptyValue(value) && !rule.required) return callback(); + rules.required(rule, value, source, errors, options); + if (value !== void 0) { + rules.type(rule, value, source, errors, options); + rules.range(rule, value, source, errors, options); + } + } + callback(errors); + }; + var array = function array(rule, value, callback, source, options) { + var errors = []; + if (rule.required || !rule.required && source.hasOwnProperty(rule.field)) { + if ((value === void 0 || value === null) && !rule.required) return callback(); + rules.required(rule, value, source, errors, options, "array"); + if (value !== void 0 && value !== null) { + rules.type(rule, value, source, errors, options); + rules.range(rule, value, source, errors, options); + } + } + callback(errors); + }; + var object = function object(rule, value, callback, source, options) { + var errors = []; + if (rule.required || !rule.required && source.hasOwnProperty(rule.field)) { + if (isEmptyValue(value) && !rule.required) return callback(); + rules.required(rule, value, source, errors, options); + if (value !== void 0) rules.type(rule, value, source, errors, options); + } + callback(errors); + }; + var ENUM = "enum"; + var enumerable = function enumerable(rule, value, callback, source, options) { + var errors = []; + if (rule.required || !rule.required && source.hasOwnProperty(rule.field)) { + if (isEmptyValue(value) && !rule.required) return callback(); + rules.required(rule, value, source, errors, options); + if (value !== void 0) rules[ENUM](rule, value, source, errors, options); + } + callback(errors); + }; + var pattern = function pattern(rule, value, callback, source, options) { + var errors = []; + if (rule.required || !rule.required && source.hasOwnProperty(rule.field)) { + if (isEmptyValue(value, "string") && !rule.required) return callback(); + rules.required(rule, value, source, errors, options); + if (!isEmptyValue(value, "string")) rules.pattern(rule, value, source, errors, options); + } + callback(errors); + }; + var date = function date(rule, value, callback, source, options) { + var errors = []; + if (rule.required || !rule.required && source.hasOwnProperty(rule.field)) { + if (isEmptyValue(value, "date") && !rule.required) return callback(); + rules.required(rule, value, source, errors, options); + if (!isEmptyValue(value, "date")) { + var dateObject; + if (value instanceof Date) dateObject = value; + else dateObject = new Date(value); + rules.type(rule, dateObject, source, errors, options); + if (dateObject) rules.range(rule, dateObject.getTime(), source, errors, options); + } + } + callback(errors); + }; + var required = function required(rule, value, callback, source, options) { + var errors = []; + var type = Array.isArray(value) ? "array" : typeof value; + rules.required(rule, value, source, errors, options, type); + callback(errors); + }; + var type = function type(rule, value, callback, source, options) { + var ruleType = rule.type; + var errors = []; + if (rule.required || !rule.required && source.hasOwnProperty(rule.field)) { + if (isEmptyValue(value, ruleType) && !rule.required) return callback(); + rules.required(rule, value, source, errors, options, ruleType); + if (!isEmptyValue(value, ruleType)) rules.type(rule, value, source, errors, options); + } + callback(errors); + }; + var any = function any(rule, value, callback, source, options) { + var errors = []; + if (rule.required || !rule.required && source.hasOwnProperty(rule.field)) { + if (isEmptyValue(value) && !rule.required) return callback(); + rules.required(rule, value, source, errors, options); + } + callback(errors); + }; + var validators = { + string, + method, + number, + "boolean": _boolean, + regexp, + integer, + "float": floatFn, + array, + object, + "enum": enumerable, + pattern, + date, + url: type, + hex: type, + email: type, + required, + any + }; + function newMessages() { + return { + "default": "Validation error on field %s", + required: "%s is required", + "enum": "%s must be one of %s", + whitespace: "%s cannot be empty", + date: { + format: "%s date %s is invalid for format %s", + parse: "%s date could not be parsed, %s is invalid ", + invalid: "%s date %s is invalid" + }, + types: { + string: "%s is not a %s", + method: "%s is not a %s (function)", + array: "%s is not an %s", + object: "%s is not an %s", + number: "%s is not a %s", + date: "%s is not a %s", + "boolean": "%s is not a %s", + integer: "%s is not an %s", + "float": "%s is not a %s", + regexp: "%s is not a valid %s", + email: "%s is not a valid %s", + url: "%s is not a valid %s", + hex: "%s is not a valid %s" + }, + string: { + len: "%s must be exactly %s characters", + min: "%s must be at least %s characters", + max: "%s cannot be longer than %s characters", + range: "%s must be between %s and %s characters" + }, + number: { + len: "%s must equal %s", + min: "%s cannot be less than %s", + max: "%s cannot be greater than %s", + range: "%s must be between %s and %s" + }, + array: { + len: "%s must be exactly %s in length", + min: "%s cannot be less than %s in length", + max: "%s cannot be greater than %s in length", + range: "%s must be between %s and %s in length" + }, + pattern: { mismatch: "%s value %s does not match pattern %s" }, + clone: function clone() { + var cloned = JSON.parse(JSON.stringify(this)); + cloned.clone = this.clone; + return cloned; + } + }; + } + var messages = newMessages(); + /** + * Encapsulates a validation schema. + * + * @param descriptor An object declaring validation rules + * for this schema. + */ + var Schema = /* @__PURE__ */ function() { + function Schema(descriptor) { + this.rules = null; + this._messages = messages; + this.define(descriptor); + } + var _proto = Schema.prototype; + _proto.define = function define(rules) { + var _this = this; + if (!rules) throw new Error("Cannot configure a schema with no rules"); + if (typeof rules !== "object" || Array.isArray(rules)) throw new Error("Rules must be an object"); + this.rules = {}; + Object.keys(rules).forEach(function(name) { + var item = rules[name]; + _this.rules[name] = Array.isArray(item) ? item : [item]; + }); + }; + _proto.messages = function messages(_messages) { + if (_messages) this._messages = deepMerge(newMessages(), _messages); + return this._messages; + }; + _proto.validate = function validate(source_, o, oc) { + var _this2 = this; + if (o === void 0) o = {}; + if (oc === void 0) oc = function oc() {}; + var source = source_; + var options = o; + var callback = oc; + if (typeof options === "function") { + callback = options; + options = {}; + } + if (!this.rules || Object.keys(this.rules).length === 0) { + if (callback) callback(null, source); + return Promise.resolve(source); + } + function complete(results) { + var errors = []; + var fields = {}; + function add(e) { + if (Array.isArray(e)) { + var _errors; + errors = (_errors = errors).concat.apply(_errors, e); + } else errors.push(e); + } + for (var i = 0; i < results.length; i++) add(results[i]); + if (!errors.length) callback(null, source); + else { + fields = convertFieldsError(errors); + callback(errors, fields); + } + } + if (options.messages) { + var messages$1 = this.messages(); + if (messages$1 === messages) messages$1 = newMessages(); + deepMerge(messages$1, options.messages); + options.messages = messages$1; + } else options.messages = this.messages(); + var series = {}; + (options.keys || Object.keys(this.rules)).forEach(function(z) { + var arr = _this2.rules[z]; + var value = source[z]; + arr.forEach(function(r) { + var rule = r; + if (typeof rule.transform === "function") { + if (source === source_) source = _extends({}, source); + value = source[z] = rule.transform(value); + } + if (typeof rule === "function") rule = { validator: rule }; + else rule = _extends({}, rule); + rule.validator = _this2.getValidationMethod(rule); + if (!rule.validator) return; + rule.field = z; + rule.fullField = rule.fullField || z; + rule.type = _this2.getType(rule); + series[z] = series[z] || []; + series[z].push({ + rule, + value, + source, + field: z + }); + }); + }); + var errorFields = {}; + return asyncMap(series, options, function(data, doIt) { + var rule = data.rule; + var deep = (rule.type === "object" || rule.type === "array") && (typeof rule.fields === "object" || typeof rule.defaultField === "object"); + deep = deep && (rule.required || !rule.required && data.value); + rule.field = data.field; + function addFullField(key, schema) { + return _extends({}, schema, { + fullField: rule.fullField + "." + key, + fullFields: rule.fullFields ? [].concat(rule.fullFields, [key]) : [key] + }); + } + function cb(e) { + if (e === void 0) e = []; + var errorList = Array.isArray(e) ? e : [e]; + if (!options.suppressWarning && errorList.length) Schema.warning("async-validator:", errorList); + if (errorList.length && rule.message !== void 0) errorList = [].concat(rule.message); + var filledErrors = errorList.map(complementError(rule, source)); + if (options.first && filledErrors.length) { + errorFields[rule.field] = 1; + return doIt(filledErrors); + } + if (!deep) doIt(filledErrors); + else { + if (rule.required && !data.value) { + if (rule.message !== void 0) filledErrors = [].concat(rule.message).map(complementError(rule, source)); + else if (options.error) filledErrors = [options.error(rule, format(options.messages.required, rule.field))]; + return doIt(filledErrors); + } + var fieldsSchema = {}; + if (rule.defaultField) Object.keys(data.value).map(function(key) { + fieldsSchema[key] = rule.defaultField; + }); + fieldsSchema = _extends({}, fieldsSchema, data.rule.fields); + var paredFieldsSchema = {}; + Object.keys(fieldsSchema).forEach(function(field) { + var fieldSchema = fieldsSchema[field]; + paredFieldsSchema[field] = (Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema]).map(addFullField.bind(null, field)); + }); + var schema = new Schema(paredFieldsSchema); + schema.messages(options.messages); + if (data.rule.options) { + data.rule.options.messages = options.messages; + data.rule.options.error = options.error; + } + schema.validate(data.value, data.rule.options || options, function(errs) { + var finalErrors = []; + if (filledErrors && filledErrors.length) finalErrors.push.apply(finalErrors, filledErrors); + if (errs && errs.length) finalErrors.push.apply(finalErrors, errs); + doIt(finalErrors.length ? finalErrors : null); + }); + } + } + var res; + if (rule.asyncValidator) res = rule.asyncValidator(rule, data.value, cb, data.source, options); + else if (rule.validator) { + try { + res = rule.validator(rule, data.value, cb, data.source, options); + } catch (error) { + console.error == null || console.error(error); + if (!options.suppressValidatorError) setTimeout(function() { + throw error; + }, 0); + cb(error.message); + } + if (res === true) cb(); + else if (res === false) cb(typeof rule.message === "function" ? rule.message(rule.fullField || rule.field) : rule.message || (rule.fullField || rule.field) + " fails"); + else if (res instanceof Array) cb(res); + else if (res instanceof Error) cb(res.message); + } + if (res && res.then) res.then(function() { + return cb(); + }, function(e) { + return cb(e); + }); + }, function(results) { + complete(results); + }, source); + }; + _proto.getType = function getType(rule) { + if (rule.type === void 0 && rule.pattern instanceof RegExp) rule.type = "pattern"; + if (typeof rule.validator !== "function" && rule.type && !validators.hasOwnProperty(rule.type)) throw new Error(format("Unknown rule type %s", rule.type)); + return rule.type || "string"; + }; + _proto.getValidationMethod = function getValidationMethod(rule) { + if (typeof rule.validator === "function") return rule.validator; + var keys = Object.keys(rule); + var messageIndex = keys.indexOf("message"); + if (messageIndex !== -1) keys.splice(messageIndex, 1); + if (keys.length === 1 && keys[0] === "required") return validators.required; + return validators[this.getType(rule)] || void 0; + }; + return Schema; + }(); + Schema.register = function register(type, validator) { + if (typeof validator !== "function") throw new Error("Cannot register a validator by type, validator is not a function"); + validators[type] = validator; + }; + Schema.warning = warning; + Schema.messages = messages; + Schema.validators = validators; + +//#endregion +//#region ../../packages/components/form/src/form-label-wrap.tsx + const COMPONENT_NAME$20 = "ElLabelWrap"; + var form_label_wrap_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$20, + props: { + isAutoWidth: Boolean, + updateAll: Boolean + }, + setup(props, { slots }) { + const formContext = (0, vue.inject)(formContextKey, void 0); + const formItemContext = (0, vue.inject)(formItemContextKey); + if (!formItemContext) throwError(COMPONENT_NAME$20, "usage: "); + const ns = useNamespace("form"); + const el = (0, vue.ref)(); + const computedWidth = (0, vue.ref)(0); + const getLabelWidth = () => { + if (el.value?.firstElementChild) { + const width = window.getComputedStyle(el.value.firstElementChild).width; + return Math.ceil(Number.parseFloat(width)); + } else return 0; + }; + const updateLabelWidth = (action = "update") => { + (0, vue.nextTick)(() => { + if (slots.default && props.isAutoWidth) { + if (action === "update") computedWidth.value = getLabelWidth(); + else if (action === "remove") formContext?.deregisterLabelWidth(computedWidth.value); + } + }); + }; + const updateLabelWidthFn = () => updateLabelWidth("update"); + (0, vue.onMounted)(() => { + updateLabelWidthFn(); + }); + (0, vue.onBeforeUnmount)(() => { + updateLabelWidth("remove"); + }); + (0, vue.onUpdated)(() => updateLabelWidthFn()); + (0, vue.watch)(computedWidth, (val, oldVal) => { + if (props.updateAll) formContext?.registerLabelWidth(val, oldVal); + }); + useResizeObserver((0, vue.computed)(() => el.value?.firstElementChild ?? null), updateLabelWidthFn); + return () => { + if (!slots) return null; + const { isAutoWidth } = props; + if (isAutoWidth) { + const autoLabelWidth = formContext?.autoLabelWidth; + const hasLabel = formItemContext?.hasLabel; + const style = {}; + if (hasLabel && autoLabelWidth && autoLabelWidth !== "auto") { + const marginWidth = Math.max(0, Number.parseInt(autoLabelWidth, 10) - computedWidth.value); + const marginPosition = (formItemContext.labelPosition || formContext.labelPosition) === "left" ? "marginRight" : "marginLeft"; + if (marginWidth) style[marginPosition] = `${marginWidth}px`; + } + return (0, vue.createVNode)("div", { + "ref": el, + "class": [ns.be("item", "label-wrap")], + "style": style + }, [slots.default?.()]); + } else return (0, vue.createVNode)(vue.Fragment, { "ref": el }, [slots.default?.()]); + }; + } + }); + +//#endregion +//#region ../../packages/components/form/src/form-item.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$78 = ["role", "aria-labelledby"]; + var form_item_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElFormItem", + __name: "form-item", + props: formItemProps, + setup(__props, { expose: __expose }) { + const props = __props; + const slots = (0, vue.useSlots)(); + const formContext = (0, vue.inject)(formContextKey, void 0); + const parentFormItemContext = (0, vue.inject)(formItemContextKey, void 0); + const _size = useFormSize(void 0, { formItem: false }); + const ns = useNamespace("form-item"); + const labelId = useId().value; + const inputIds = (0, vue.ref)([]); + const validateState = (0, vue.ref)(""); + const validateStateDebounced = refDebounced(validateState, 100); + const validateMessage = (0, vue.ref)(""); + const formItemRef = (0, vue.ref)(); + let initialValue = void 0; + let isResettingField = false; + const labelPosition = (0, vue.computed)(() => props.labelPosition || formContext?.labelPosition); + const labelStyle = (0, vue.computed)(() => { + if (labelPosition.value === "top") return {}; + return { width: addUnit(props.labelWidth ?? formContext?.labelWidth) }; + }); + const contentStyle = (0, vue.computed)(() => { + if (labelPosition.value === "top" || formContext?.inline) return {}; + if (!props.label && !props.labelWidth && isNested) return {}; + const labelWidth = addUnit(props.labelWidth ?? formContext?.labelWidth); + if (!props.label && !slots.label) return { marginLeft: labelWidth }; + return {}; + }); + const formItemClasses = (0, vue.computed)(() => [ + ns.b(), + ns.m(_size.value), + ns.is("error", validateState.value === "error"), + ns.is("validating", validateState.value === "validating"), + ns.is("success", validateState.value === "success"), + ns.is("required", isRequired.value || props.required), + ns.is("no-asterisk", formContext?.hideRequiredAsterisk), + formContext?.requireAsteriskPosition === "right" ? "asterisk-right" : "asterisk-left", + { + [ns.m("feedback")]: formContext?.statusIcon, + [ns.m(`label-${labelPosition.value}`)]: labelPosition.value + } + ]); + const _inlineMessage = (0, vue.computed)(() => isBoolean(props.inlineMessage) ? props.inlineMessage : formContext?.inlineMessage || false); + const validateClasses = (0, vue.computed)(() => [ns.e("error"), { [ns.em("error", "inline")]: _inlineMessage.value }]); + const propString = (0, vue.computed)(() => { + if (!props.prop) return ""; + return isArray$1(props.prop) ? props.prop.join(".") : props.prop; + }); + const hasLabel = (0, vue.computed)(() => { + return !!(props.label || slots.label); + }); + const labelFor = (0, vue.computed)(() => { + return props.for ?? (inputIds.value.length === 1 ? inputIds.value[0] : void 0); + }); + const isGroup = (0, vue.computed)(() => { + return !labelFor.value && hasLabel.value; + }); + const isNested = !!parentFormItemContext; + const fieldValue = (0, vue.computed)(() => { + const model = formContext?.model; + if (!model || !props.prop) return; + return getProp(model, props.prop).value; + }); + const normalizedRules = (0, vue.computed)(() => { + const { required } = props; + const rules = []; + if (props.rules) rules.push(...castArray$1(props.rules)); + const formRules = formContext?.rules; + if (formRules && props.prop) { + const _rules = getProp(formRules, props.prop).value; + if (_rules) rules.push(...castArray$1(_rules)); + } + if (required !== void 0) { + const requiredRules = rules.map((rule, i) => [rule, i]).filter(([rule]) => "required" in rule); + if (requiredRules.length > 0) for (const [rule, i] of requiredRules) { + if (rule.required === required) continue; + rules[i] = { + ...rule, + required + }; + } + else rules.push({ required }); + } + return rules; + }); + const validateEnabled = (0, vue.computed)(() => normalizedRules.value.length > 0); + const getFilteredRule = (trigger) => { + return normalizedRules.value.filter((rule) => { + if (!rule.trigger || !trigger) return true; + if (isArray$1(rule.trigger)) return rule.trigger.includes(trigger); + else return rule.trigger === trigger; + }).map(({ trigger, ...rule }) => rule); + }; + const isRequired = (0, vue.computed)(() => normalizedRules.value.some((rule) => rule.required)); + const shouldShowError = (0, vue.computed)(() => validateStateDebounced.value === "error" && props.showMessage && (formContext?.showMessage ?? true)); + const currentLabel = (0, vue.computed)(() => `${props.label || ""}${formContext?.labelSuffix || ""}`); + const setValidationState = (state) => { + validateState.value = state; + }; + const onValidationFailed = (error) => { + const { errors, fields } = error; + if (!errors || !fields) console.error(error); + setValidationState("error"); + validateMessage.value = errors ? errors?.[0]?.message ?? `${props.prop} is required` : ""; + formContext?.emit("validate", props.prop, false, validateMessage.value); + }; + const onValidationSucceeded = () => { + setValidationState("success"); + formContext?.emit("validate", props.prop, true, ""); + }; + const doValidate = async (rules) => { + const modelName = propString.value; + return new Schema({ [modelName]: rules }).validate({ [modelName]: fieldValue.value }, { firstFields: true }).then(() => { + onValidationSucceeded(); + return true; + }).catch((err) => { + onValidationFailed(err); + return Promise.reject(err); + }); + }; + const validate = async (trigger, callback) => { + if (isResettingField || !props.prop) return false; + const hasCallback = isFunction$1(callback); + if (!validateEnabled.value) { + callback?.(false); + return false; + } + const rules = getFilteredRule(trigger); + if (rules.length === 0) { + callback?.(true); + return true; + } + setValidationState("validating"); + return doValidate(rules).then(() => { + callback?.(true); + return true; + }).catch((err) => { + const { fields } = err; + callback?.(false, fields); + return hasCallback ? false : Promise.reject(fields); + }); + }; + const clearValidate = () => { + setValidationState(""); + validateMessage.value = ""; + isResettingField = false; + }; + const resetField = async () => { + const model = formContext?.model; + if (!model || !props.prop) return; + const computedValue = getProp(model, props.prop); + isResettingField = true; + computedValue.value = cloneDeep(initialValue); + await (0, vue.nextTick)(); + clearValidate(); + isResettingField = false; + }; + const addInputId = (id) => { + if (!inputIds.value.includes(id)) inputIds.value.push(id); + }; + const removeInputId = (id) => { + inputIds.value = inputIds.value.filter((listId) => listId !== id); + }; + const setInitialValue = (value) => { + initialValue = cloneDeep(value); + }; + const getInitialValue = () => initialValue; + (0, vue.watch)(() => props.error, (val) => { + validateMessage.value = val || ""; + setValidationState(val ? "error" : ""); + }, { immediate: true }); + (0, vue.watch)(() => props.validateStatus, (val) => setValidationState(val || "")); + const context = (0, vue.reactive)({ + ...(0, vue.toRefs)(props), + $el: formItemRef, + size: _size, + validateMessage, + validateState, + labelId, + inputIds, + isGroup, + hasLabel, + fieldValue, + addInputId, + removeInputId, + resetField, + clearValidate, + validate, + propString, + setInitialValue, + getInitialValue + }); + (0, vue.provide)(formItemContextKey, context); + (0, vue.watch)(propString, (newPropString, oldPropString) => { + if (!formContext || !oldPropString) return; + formContext.removeField(context, oldPropString); + if (newPropString) { + setInitialValue(fieldValue.value); + formContext.addField(context); + } + }); + (0, vue.onMounted)(() => { + if (props.prop) { + setInitialValue(fieldValue.value); + formContext?.addField(context); + } + }); + (0, vue.onBeforeUnmount)(() => { + formContext?.removeField(context); + }); + __expose({ + size: _size, + validateMessage, + validateState, + validate, + clearValidate, + resetField, + setInitialValue + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "formItemRef", + ref: formItemRef, + class: (0, vue.normalizeClass)(formItemClasses.value), + role: isGroup.value ? "group" : void 0, + "aria-labelledby": isGroup.value ? (0, vue.unref)(labelId) : void 0 + }, [(0, vue.createVNode)((0, vue.unref)(form_label_wrap_default), { + "is-auto-width": labelStyle.value.width === "auto", + "update-all": (0, vue.unref)(formContext)?.labelWidth === "auto" + }, { + default: (0, vue.withCtx)(() => [!!(__props.label || _ctx.$slots.label) ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(labelFor.value ? "label" : "div"), { + key: 0, + id: (0, vue.unref)(labelId), + for: labelFor.value, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("label")), + style: (0, vue.normalizeStyle)(labelStyle.value) + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "label", { label: currentLabel.value }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(currentLabel.value), 1)])]), + _: 3 + }, 8, [ + "id", + "for", + "class", + "style" + ])) : (0, vue.createCommentVNode)("v-if", true)]), + _: 3 + }, 8, ["is-auto-width", "update-all"]), (0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("content")), + style: (0, vue.normalizeStyle)(contentStyle.value) + }, [(0, vue.renderSlot)(_ctx.$slots, "default"), (0, vue.createVNode)(vue.TransitionGroup, { name: `${(0, vue.unref)(ns).namespace.value}-zoom-in-top` }, { + default: (0, vue.withCtx)(() => [shouldShowError.value ? (0, vue.renderSlot)(_ctx.$slots, "error", { + key: 0, + error: validateMessage.value + }, () => [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(validateClasses.value) }, (0, vue.toDisplayString)(validateMessage.value), 3)]) : (0, vue.createCommentVNode)("v-if", true)]), + _: 3 + }, 8, ["name"])], 6)], 10, _hoisted_1$78); + }; + } + }); + +//#endregion +//#region ../../packages/components/form/src/form-item.vue + var form_item_default = form_item_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/form/index.ts + const ElForm = withInstall(form_default, { FormItem: form_item_default }); + const ElFormItem = withNoopInstall(form_item_default); + +//#endregion +//#region ../../packages/components/popper/src/utils.ts + const buildPopperOptions = (props, modifiers = []) => { + const { placement, strategy, popperOptions } = props; + const options = { + placement, + strategy, + ...popperOptions, + modifiers: [...genModifiers(props), ...modifiers] + }; + deriveExtraModifiers(options, popperOptions?.modifiers); + return options; + }; + const unwrapMeasurableEl = ($el) => { + if (!isClient) return; + return unrefElement($el); + }; + function genModifiers(options) { + const { offset, gpuAcceleration, fallbackPlacements } = options; + return [ + { + name: "offset", + options: { offset: [0, offset ?? 12] } + }, + { + name: "preventOverflow", + options: { padding: { + top: 0, + bottom: 0, + left: 0, + right: 0 + } } + }, + { + name: "flip", + options: { + padding: 5, + fallbackPlacements + } + }, + { + name: "computeStyles", + options: { gpuAcceleration } + } + ]; + } + function deriveExtraModifiers(options, modifiers) { + if (modifiers) options.modifiers = [...options.modifiers, ...modifiers ?? []]; + } + +//#endregion +//#region ../../packages/components/popper/src/composables/use-content.ts + const DEFAULT_ARROW_OFFSET = 0; + const usePopperContent = (props) => { + const { popperInstanceRef, contentRef, triggerRef, role } = (0, vue.inject)(POPPER_INJECTION_KEY, void 0); + const arrowRef = (0, vue.ref)(); + const arrowOffset = (0, vue.computed)(() => props.arrowOffset); + const eventListenerModifier = (0, vue.computed)(() => { + return { + name: "eventListeners", + enabled: !!props.visible + }; + }); + const arrowModifier = (0, vue.computed)(() => { + const arrowEl = (0, vue.unref)(arrowRef); + const offset = (0, vue.unref)(arrowOffset) ?? DEFAULT_ARROW_OFFSET; + return { + name: "arrow", + enabled: !isUndefined$1(arrowEl), + options: { + element: arrowEl, + padding: offset + } + }; + }); + const options = (0, vue.computed)(() => { + return { + onFirstUpdate: () => { + update(); + }, + ...buildPopperOptions(props, [(0, vue.unref)(arrowModifier), (0, vue.unref)(eventListenerModifier)]) + }; + }); + const computedReference = (0, vue.computed)(() => unwrapMeasurableEl(props.referenceEl) || (0, vue.unref)(triggerRef)); + const { attributes, state, styles, update, forceUpdate, instanceRef } = usePopper(computedReference, contentRef, options); + (0, vue.watch)(instanceRef, (instance) => popperInstanceRef.value = instance, { flush: "sync" }); + (0, vue.onMounted)(() => { + (0, vue.watch)(() => (0, vue.unref)(computedReference)?.getBoundingClientRect?.(), () => { + update(); + }); + }); + let stopResizeObserver; + (0, vue.watch)(() => props.visible, (visible) => { + stopResizeObserver?.(); + stopResizeObserver = void 0; + if (visible) stopResizeObserver = useResizeObserver(contentRef, update).stop; + }); + (0, vue.onBeforeUnmount)(() => { + popperInstanceRef.value = void 0; + stopResizeObserver?.(); + stopResizeObserver = void 0; + }); + return { + attributes, + arrowRef, + contentRef, + instanceRef, + state, + styles, + role, + forceUpdate, + update + }; + }; + +//#endregion +//#region ../../packages/components/popper/src/composables/use-content-dom.ts + const usePopperContentDOM = (props, { attributes, styles, role }) => { + const { nextZIndex } = useZIndex(); + const ns = useNamespace("popper"); + const contentAttrs = (0, vue.computed)(() => (0, vue.unref)(attributes).popper); + const contentZIndex = (0, vue.ref)(isNumber(props.zIndex) ? props.zIndex : nextZIndex()); + const contentClass = (0, vue.computed)(() => [ + ns.b(), + ns.is("pure", props.pure), + ns.is(props.effect), + props.popperClass + ]); + const contentStyle = (0, vue.computed)(() => { + return [ + { zIndex: (0, vue.unref)(contentZIndex) }, + (0, vue.unref)(styles).popper, + props.popperStyle || {} + ]; + }); + const ariaModal = (0, vue.computed)(() => role.value === "dialog" ? "false" : void 0); + const arrowStyle = (0, vue.computed)(() => (0, vue.unref)(styles).arrow || {}); + const updateZIndex = () => { + contentZIndex.value = isNumber(props.zIndex) ? props.zIndex : nextZIndex(); + }; + return { + ariaModal, + arrowStyle, + contentAttrs, + contentClass, + contentStyle, + contentZIndex, + updateZIndex + }; + }; + +//#endregion +//#region ../../packages/components/popper/src/composables/use-focus-trap.ts + const usePopperContentFocusTrap = (props, emit) => { + const trapped = (0, vue.ref)(false); + const focusStartRef = (0, vue.ref)(); + const onFocusAfterTrapped = () => { + emit("focus"); + }; + const onFocusAfterReleased = (event) => { + if (event.detail?.focusReason !== "pointer") { + focusStartRef.value = "first"; + emit("blur"); + } + }; + const onFocusInTrap = (event) => { + if (props.visible && !trapped.value) { + if (event.target) focusStartRef.value = event.target; + trapped.value = true; + } + }; + const onFocusoutPrevented = (event) => { + if (!props.trapping) { + if (event.detail.focusReason === "pointer") event.preventDefault(); + trapped.value = false; + } + }; + const onReleaseRequested = () => { + trapped.value = false; + emit("close"); + }; + (0, vue.onBeforeUnmount)(() => { + focusStartRef.value = void 0; + }); + return { + focusStartRef, + trapped, + onFocusAfterReleased, + onFocusAfterTrapped, + onFocusInTrap, + onFocusoutPrevented, + onReleaseRequested + }; + }; + +//#endregion +//#region ../../packages/components/popper/src/content.vue?vue&type=script&setup=true&lang.ts + var content_vue_vue_type_script_setup_true_lang_default$2 = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElPopperContent", + __name: "content", + props: popperContentProps, + emits: popperContentEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const emit = __emit; + const props = __props; + const { focusStartRef, trapped, onFocusAfterReleased, onFocusAfterTrapped, onFocusInTrap, onFocusoutPrevented, onReleaseRequested } = usePopperContentFocusTrap(props, emit); + const { attributes, arrowRef, contentRef, styles, instanceRef, role, update } = usePopperContent(props); + const { ariaModal, arrowStyle, contentAttrs, contentClass, contentStyle, updateZIndex } = usePopperContentDOM(props, { + styles, + attributes, + role + }); + const formItemContext = (0, vue.inject)(formItemContextKey, void 0); + (0, vue.provide)(POPPER_CONTENT_INJECTION_KEY, { + arrowStyle, + arrowRef + }); + if (formItemContext) (0, vue.provide)(formItemContextKey, { + ...formItemContext, + addInputId: NOOP, + removeInputId: NOOP + }); + let triggerTargetAriaStopWatch = void 0; + const updatePopper = (shouldUpdateZIndex = true) => { + update(); + shouldUpdateZIndex && updateZIndex(); + }; + const togglePopperAlive = () => { + updatePopper(false); + if (props.visible && props.focusOnShow) trapped.value = true; + else if (props.visible === false) trapped.value = false; + }; + (0, vue.onMounted)(() => { + (0, vue.watch)(() => props.triggerTargetEl, (triggerTargetEl, prevTriggerTargetEl) => { + triggerTargetAriaStopWatch?.(); + triggerTargetAriaStopWatch = void 0; + const el = (0, vue.unref)(triggerTargetEl || contentRef.value); + const prevEl = (0, vue.unref)(prevTriggerTargetEl || contentRef.value); + if (isElement$1(el)) triggerTargetAriaStopWatch = (0, vue.watch)([ + role, + () => props.ariaLabel, + ariaModal, + () => props.id + ], (watches) => { + [ + "role", + "aria-label", + "aria-modal", + "id" + ].forEach((key, idx) => { + isNil(watches[idx]) ? el.removeAttribute(key) : el.setAttribute(key, watches[idx]); + }); + }, { immediate: true }); + if (prevEl !== el && isElement$1(prevEl)) [ + "role", + "aria-label", + "aria-modal", + "id" + ].forEach((key) => { + prevEl.removeAttribute(key); + }); + }, { immediate: true }); + (0, vue.watch)(() => props.visible, togglePopperAlive, { immediate: true }); + }); + (0, vue.onBeforeUnmount)(() => { + triggerTargetAriaStopWatch?.(); + triggerTargetAriaStopWatch = void 0; + contentRef.value = void 0; + }); + __expose({ + popperContentRef: contentRef, + popperInstanceRef: instanceRef, + updatePopper, + contentStyle + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", (0, vue.mergeProps)({ + ref_key: "contentRef", + ref: contentRef + }, (0, vue.unref)(contentAttrs), { + style: (0, vue.unref)(contentStyle), + class: (0, vue.unref)(contentClass), + tabindex: "-1", + onMouseenter: _cache[0] || (_cache[0] = (e) => _ctx.$emit("mouseenter", e)), + onMouseleave: _cache[1] || (_cache[1] = (e) => _ctx.$emit("mouseleave", e)) + }), [(0, vue.createVNode)((0, vue.unref)(focus_trap_default), { + loop: __props.loop, + trapped: (0, vue.unref)(trapped), + "trap-on-focus-in": true, + "focus-trap-el": (0, vue.unref)(contentRef), + "focus-start-el": (0, vue.unref)(focusStartRef), + onFocusAfterTrapped: (0, vue.unref)(onFocusAfterTrapped), + onFocusAfterReleased: (0, vue.unref)(onFocusAfterReleased), + onFocusin: (0, vue.unref)(onFocusInTrap), + onFocusoutPrevented: (0, vue.unref)(onFocusoutPrevented), + onReleaseRequested: (0, vue.unref)(onReleaseRequested) + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 8, [ + "loop", + "trapped", + "focus-trap-el", + "focus-start-el", + "onFocusAfterTrapped", + "onFocusAfterReleased", + "onFocusin", + "onFocusoutPrevented", + "onReleaseRequested" + ])], 16); + }; + } + }); + +//#endregion +//#region ../../packages/components/popper/src/content.vue + var content_default = content_vue_vue_type_script_setup_true_lang_default$2; + +//#endregion +//#region ../../packages/components/popper/index.ts + const ElPopper = withInstall(popper_default); + +//#endregion +//#region ../../packages/components/tooltip/src/content.ts + const useTooltipContentPropsDefaults = { + ...useDelayedTogglePropsDefaults, + ...popperContentPropsDefaults, + content: "", + visible: null, + teleported: true + }; + /** + * @deprecated Removed after 3.0.0, Use `ElTooltipContentProps` instead. + */ + const useTooltipContentProps = buildProps({ + ...useDelayedToggleProps, + ...popperContentProps, + appendTo: { type: teleportProps.to.type }, + content: { + type: String, + default: "" + }, + rawContent: Boolean, + persistent: Boolean, + visible: { + type: definePropType(Boolean), + default: null + }, + transition: String, + teleported: { + type: Boolean, + default: true + }, + disabled: Boolean, + ...useAriaProps(["ariaLabel"]) + }); + +//#endregion +//#region ../../packages/components/tooltip/src/trigger.ts + const useTooltipTriggerPropsDefaults = { + trigger: "hover", + triggerKeys: () => [ + EVENT_CODE.enter, + EVENT_CODE.numpadEnter, + EVENT_CODE.space + ] + }; + /** + * @deprecated Removed after 3.0.0, Use `UseTooltipTriggerProps` instead. + */ + const useTooltipTriggerProps = buildProps({ + ...popperTriggerProps, + disabled: Boolean, + trigger: { + type: definePropType([String, Array]), + default: "hover" + }, + triggerKeys: { + type: definePropType(Array), + default: () => [ + EVENT_CODE.enter, + EVENT_CODE.numpadEnter, + EVENT_CODE.space + ] + }, + focusOnTarget: Boolean + }); + +//#endregion +//#region ../../packages/components/tooltip/src/tooltip.ts + const { useModelToggleProps: useTooltipModelToggleProps, useModelToggleEmits: useTooltipModelToggleEmits, useModelToggle: useTooltipModelToggle } = createModelToggleComposable("visible"); + /** + * @deprecated Removed after 3.0.0, Use `UseTooltipProps` instead. + */ + const useTooltipProps = buildProps({ + ...popperProps, + ...useTooltipModelToggleProps, + ...useTooltipContentProps, + ...useTooltipTriggerProps, + ...popperArrowProps, + showArrow: { + type: Boolean, + default: true + } + }); + const tooltipEmits = [ + ...useTooltipModelToggleEmits, + "before-show", + "before-hide", + "show", + "hide", + "open", + "close" + ]; + +//#endregion +//#region ../../packages/components/tooltip/src/constants.ts + const TOOLTIP_INJECTION_KEY = Symbol("elTooltip"); + +//#endregion +//#region ../../packages/components/tooltip/src/utils.ts + const isTriggerType = (trigger, type) => { + if (isArray$1(trigger)) return trigger.includes(type); + return trigger === type; + }; + const whenTrigger = (trigger, type, handler) => { + return (e) => { + isTriggerType((0, vue.unref)(trigger), type) && handler(e); + }; + }; + +//#endregion +//#region ../../packages/components/tooltip/src/trigger.vue?vue&type=script&setup=true&lang.ts + var trigger_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTooltipTrigger", + __name: "trigger", + props: useTooltipTriggerProps, + setup(__props, { expose: __expose }) { + const props = __props; + const ns = useNamespace("tooltip"); + const { controlled, id, open, onOpen, onClose, onToggle } = (0, vue.inject)(TOOLTIP_INJECTION_KEY, void 0); + const triggerRef = (0, vue.ref)(null); + const stopWhenControlledOrDisabled = () => { + if ((0, vue.unref)(controlled) || props.disabled) return true; + }; + const trigger = (0, vue.toRef)(props, "trigger"); + const onMouseenter = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "hover", (e) => { + onOpen(e); + if (props.focusOnTarget && e.target) (0, vue.nextTick)(() => { + focusElement(e.target, { preventScroll: true }); + }); + })); + const onMouseleave = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "hover", onClose)); + const onClick = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "click", (e) => { + if (e.button === 0) onToggle(e); + })); + const onFocus = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "focus", onOpen)); + const onBlur = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "focus", onClose)); + const onContextMenu = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "contextmenu", (e) => { + e.preventDefault(); + onToggle(e); + })); + const onKeydown = composeEventHandlers(stopWhenControlledOrDisabled, (e) => { + const code = getEventCode(e); + if (props.triggerKeys.includes(code)) { + e.preventDefault(); + onToggle(e); + } + }); + __expose({ triggerRef }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(trigger_default), { + id: (0, vue.unref)(id), + "virtual-ref": __props.virtualRef, + open: (0, vue.unref)(open), + "virtual-triggering": __props.virtualTriggering, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("trigger")), + onBlur: (0, vue.unref)(onBlur), + onClick: (0, vue.unref)(onClick), + onContextmenu: (0, vue.unref)(onContextMenu), + onFocus: (0, vue.unref)(onFocus), + onMouseenter: (0, vue.unref)(onMouseenter), + onMouseleave: (0, vue.unref)(onMouseleave), + onKeydown: (0, vue.unref)(onKeydown) + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 8, [ + "id", + "virtual-ref", + "open", + "virtual-triggering", + "class", + "onBlur", + "onClick", + "onContextmenu", + "onFocus", + "onMouseenter", + "onMouseleave", + "onKeydown" + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/tooltip/src/trigger.vue + var trigger_default$1 = trigger_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/tooltip/src/content.vue?vue&type=script&setup=true&lang.ts + var content_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTooltipContent", + inheritAttrs: false, + __name: "content", + props: useTooltipContentProps, + setup(__props, { expose: __expose }) { + const props = __props; + const { selector } = usePopperContainerId(); + const ns = useNamespace("tooltip"); + const contentRef = (0, vue.ref)(); + const popperContentRef = computedEager(() => contentRef.value?.popperContentRef); + let stopHandle; + const { controlled, id, open, trigger, onClose, onOpen, onShow, onHide, onBeforeShow, onBeforeHide } = (0, vue.inject)(TOOLTIP_INJECTION_KEY, void 0); + const transitionClass = (0, vue.computed)(() => { + return props.transition || `${ns.namespace.value}-fade-in-linear`; + }); + const persistentRef = (0, vue.computed)(() => { + return props.persistent; + }); + (0, vue.onBeforeUnmount)(() => { + stopHandle?.(); + }); + const shouldRender = (0, vue.computed)(() => { + return (0, vue.unref)(persistentRef) ? true : (0, vue.unref)(open); + }); + const shouldShow = (0, vue.computed)(() => { + return props.disabled ? false : (0, vue.unref)(open); + }); + const appendTo = (0, vue.computed)(() => { + return props.appendTo || selector.value; + }); + const contentStyle = (0, vue.computed)(() => props.style ?? {}); + const ariaHidden = (0, vue.ref)(true); + const onTransitionLeave = () => { + onHide(); + isFocusInsideContent() && focusElement(document.body, { preventScroll: true }); + ariaHidden.value = true; + }; + const stopWhenControlled = () => { + if ((0, vue.unref)(controlled)) return true; + }; + const onContentEnter = composeEventHandlers(stopWhenControlled, () => { + if (props.enterable && isTriggerType((0, vue.unref)(trigger), "hover")) onOpen(); + }); + const onContentLeave = composeEventHandlers(stopWhenControlled, () => { + if (isTriggerType((0, vue.unref)(trigger), "hover")) onClose(); + }); + const onBeforeEnter = () => { + contentRef.value?.updatePopper?.(); + onBeforeShow?.(); + }; + const onBeforeLeave = () => { + onBeforeHide?.(); + }; + const onAfterShow = () => { + onShow(); + }; + const onBlur = () => { + if (!props.virtualTriggering) onClose(); + }; + const isFocusInsideContent = (event) => { + const popperContent = contentRef.value?.popperContentRef; + const activeElement = event?.relatedTarget || document.activeElement; + return popperContent?.contains(activeElement); + }; + (0, vue.watch)(() => (0, vue.unref)(open), (val) => { + if (!val) stopHandle?.(); + else { + ariaHidden.value = false; + stopHandle = onClickOutside(popperContentRef, () => { + if ((0, vue.unref)(controlled)) return; + if (castArray((0, vue.unref)(trigger)).every((item) => { + return item !== "hover" && item !== "focus"; + })) onClose(); + }, { detectIframe: true }); + } + }, { flush: "post" }); + __expose({ + contentRef, + isFocusInsideContent + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTeleport), { + disabled: !__props.teleported, + to: appendTo.value + }, { + default: (0, vue.withCtx)(() => [shouldRender.value || !ariaHidden.value ? ((0, vue.openBlock)(), (0, vue.createBlock)(vue.Transition, { + key: 0, + name: transitionClass.value, + appear: !persistentRef.value, + onAfterLeave: onTransitionLeave, + onBeforeEnter, + onAfterEnter: onAfterShow, + onBeforeLeave, + persisted: "" + }, { + default: (0, vue.withCtx)(() => [(0, vue.withDirectives)((0, vue.createVNode)((0, vue.unref)(content_default), (0, vue.mergeProps)({ + id: (0, vue.unref)(id), + ref_key: "contentRef", + ref: contentRef + }, _ctx.$attrs, { + "aria-label": __props.ariaLabel, + "aria-hidden": ariaHidden.value, + "boundaries-padding": __props.boundariesPadding, + "fallback-placements": __props.fallbackPlacements, + "gpu-acceleration": __props.gpuAcceleration, + offset: __props.offset, + placement: __props.placement, + "popper-options": __props.popperOptions, + "arrow-offset": __props.arrowOffset, + strategy: __props.strategy, + effect: __props.effect, + enterable: __props.enterable, + pure: __props.pure, + "popper-class": __props.popperClass, + "popper-style": [__props.popperStyle, contentStyle.value], + "reference-el": __props.referenceEl, + "trigger-target-el": __props.triggerTargetEl, + visible: shouldShow.value, + "z-index": __props.zIndex, + loop: __props.loop, + onMouseenter: (0, vue.unref)(onContentEnter), + onMouseleave: (0, vue.unref)(onContentLeave), + onBlur, + onClose: (0, vue.unref)(onClose) + }), { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 16, [ + "id", + "aria-label", + "aria-hidden", + "boundaries-padding", + "fallback-placements", + "gpu-acceleration", + "offset", + "placement", + "popper-options", + "arrow-offset", + "strategy", + "effect", + "enterable", + "pure", + "popper-class", + "popper-style", + "reference-el", + "trigger-target-el", + "visible", + "z-index", + "loop", + "onMouseenter", + "onMouseleave", + "onClose" + ]), [[vue.vShow, shouldShow.value]])]), + _: 3 + }, 8, ["name", "appear"])) : (0, vue.createCommentVNode)("v-if", true)]), + _: 3 + }, 8, ["disabled", "to"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/tooltip/src/content.vue + var content_default$2 = content_vue_vue_type_script_setup_true_lang_default$1; + +//#endregion +//#region ../../packages/components/tooltip/src/tooltip.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$77 = ["innerHTML"]; + const _hoisted_2$43 = { key: 1 }; + var tooltip_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTooltip", + __name: "tooltip", + props: useTooltipProps, + emits: tooltipEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + usePopperContainer(); + const ns = useNamespace("tooltip"); + const id = useId(); + const popperRef = (0, vue.ref)(); + const contentRef = (0, vue.ref)(); + const updatePopper = () => { + const popperComponent = (0, vue.unref)(popperRef); + if (popperComponent) popperComponent.popperInstanceRef?.update(); + }; + const open = (0, vue.ref)(false); + const toggleReason = (0, vue.ref)(); + const { show, hide, hasUpdateHandler } = useTooltipModelToggle({ + indicator: open, + toggleReason + }); + const { onOpen, onClose } = useDelayedToggle({ + showAfter: (0, vue.toRef)(props, "showAfter"), + hideAfter: (0, vue.toRef)(props, "hideAfter"), + autoClose: (0, vue.toRef)(props, "autoClose"), + open: show, + close: hide + }); + const controlled = (0, vue.computed)(() => isBoolean(props.visible) && !hasUpdateHandler.value); + const kls = (0, vue.computed)(() => { + return [ns.b(), props.popperClass]; + }); + (0, vue.provide)(TOOLTIP_INJECTION_KEY, { + controlled, + id, + open: (0, vue.readonly)(open), + trigger: (0, vue.toRef)(props, "trigger"), + onOpen, + onClose, + onToggle: (event) => { + if ((0, vue.unref)(open)) onClose(event); + else onOpen(event); + }, + onShow: () => { + emit("show", toggleReason.value); + }, + onHide: () => { + emit("hide", toggleReason.value); + }, + onBeforeShow: () => { + emit("before-show", toggleReason.value); + }, + onBeforeHide: () => { + emit("before-hide", toggleReason.value); + }, + updatePopper + }); + (0, vue.watch)(() => props.disabled, (disabled) => { + if (disabled && open.value) open.value = false; + if (!disabled && isBoolean(props.visible)) open.value = props.visible; + }); + const isFocusInsideContent = (event) => { + return contentRef.value?.isFocusInsideContent(event); + }; + (0, vue.onDeactivated)(() => open.value && hide()); + (0, vue.onBeforeUnmount)(() => { + toggleReason.value = void 0; + }); + __expose({ + popperRef, + contentRef, + isFocusInsideContent, + updatePopper, + onOpen, + onClose, + hide + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElPopper), { + ref_key: "popperRef", + ref: popperRef, + role: __props.role + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)(trigger_default$1, { + disabled: __props.disabled, + trigger: __props.trigger, + "trigger-keys": __props.triggerKeys, + "virtual-ref": __props.virtualRef, + "virtual-triggering": __props.virtualTriggering, + "focus-on-target": __props.focusOnTarget + }, { + default: (0, vue.withCtx)(() => [_ctx.$slots.default ? (0, vue.renderSlot)(_ctx.$slots, "default", { key: 0 }) : (0, vue.createCommentVNode)("v-if", true)]), + _: 3 + }, 8, [ + "disabled", + "trigger", + "trigger-keys", + "virtual-ref", + "virtual-triggering", + "focus-on-target" + ]), (0, vue.createVNode)(content_default$2, { + ref_key: "contentRef", + ref: contentRef, + "aria-label": __props.ariaLabel, + "boundaries-padding": __props.boundariesPadding, + content: __props.content, + disabled: __props.disabled, + effect: __props.effect, + enterable: __props.enterable, + "fallback-placements": __props.fallbackPlacements, + "hide-after": __props.hideAfter, + "gpu-acceleration": __props.gpuAcceleration, + offset: __props.offset, + persistent: __props.persistent, + "popper-class": kls.value, + "popper-style": __props.popperStyle, + placement: __props.placement, + "popper-options": __props.popperOptions, + "arrow-offset": __props.arrowOffset, + pure: __props.pure, + "raw-content": __props.rawContent, + "reference-el": __props.referenceEl, + "trigger-target-el": __props.triggerTargetEl, + "show-after": __props.showAfter, + strategy: __props.strategy, + teleported: __props.teleported, + transition: __props.transition, + "virtual-triggering": __props.virtualTriggering, + "z-index": __props.zIndex, + "append-to": __props.appendTo, + loop: __props.loop + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "content", {}, () => [__props.rawContent ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 0, + innerHTML: __props.content + }, null, 8, _hoisted_1$77)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_2$43, (0, vue.toDisplayString)(__props.content), 1))]), __props.showArrow ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(arrow_default), { key: 0 })) : (0, vue.createCommentVNode)("v-if", true)]), + _: 3 + }, 8, [ + "aria-label", + "boundaries-padding", + "content", + "disabled", + "effect", + "enterable", + "fallback-placements", + "hide-after", + "gpu-acceleration", + "offset", + "persistent", + "popper-class", + "popper-style", + "placement", + "popper-options", + "arrow-offset", + "pure", + "raw-content", + "reference-el", + "trigger-target-el", + "show-after", + "strategy", + "teleported", + "transition", + "virtual-triggering", + "z-index", + "append-to", + "loop" + ])]), + _: 3 + }, 8, ["role"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/tooltip/src/tooltip.vue + var tooltip_default = tooltip_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/tooltip/index.ts + const ElTooltip = withInstall(tooltip_default); + +//#endregion +//#region ../../packages/components/input/src/input.ts +/** + * @deprecated Removed after 3.0.0, Use `InputProps` instead. + */ + const inputProps = buildProps({ + id: { + type: String, + default: void 0 + }, + size: useSizeProp, + disabled: { + type: Boolean, + default: void 0 + }, + modelValue: { + type: definePropType([ + String, + Number, + Object + ]), + default: "" + }, + modelModifiers: { + type: definePropType(Object), + default: () => ({}) + }, + maxlength: { type: [String, Number] }, + minlength: { type: [String, Number] }, + type: { + type: definePropType(String), + default: "text" + }, + resize: { + type: String, + values: [ + "none", + "both", + "horizontal", + "vertical" + ] + }, + autosize: { + type: definePropType([Boolean, Object]), + default: false + }, + autocomplete: { + type: definePropType(String), + default: "off" + }, + formatter: { type: Function }, + parser: { type: Function }, + placeholder: { type: String }, + form: { type: String }, + readonly: Boolean, + clearable: Boolean, + clearIcon: { + type: iconPropType, + default: circle_close_default + }, + showPassword: Boolean, + showWordLimit: Boolean, + wordLimitPosition: { + type: String, + values: ["inside", "outside"], + default: "inside" + }, + suffixIcon: { type: iconPropType }, + prefixIcon: { type: iconPropType }, + containerRole: { + type: String, + default: void 0 + }, + tabindex: { + type: [String, Number], + default: 0 + }, + validateEvent: { + type: Boolean, + default: true + }, + inputStyle: { + type: definePropType([ + Object, + Array, + String + ]), + default: () => mutable({}) + }, + countGraphemes: { type: definePropType(Function) }, + autofocus: Boolean, + rows: { + type: Number, + default: 2 + }, + ...useAriaProps(["ariaLabel"]), + inputmode: { + type: definePropType(String), + default: void 0 + }, + name: String + }); + const inputEmits = { + [UPDATE_MODEL_EVENT]: (value) => isString(value), + input: (value) => isString(value), + change: (value, evt) => isString(value) && (evt instanceof Event || evt === void 0), + focus: (evt) => evt instanceof FocusEvent, + blur: (evt) => evt instanceof FocusEvent, + clear: (evt) => evt === void 0 || evt instanceof MouseEvent, + mouseleave: (evt) => evt instanceof MouseEvent, + mouseenter: (evt) => evt instanceof MouseEvent, + keydown: (evt) => evt instanceof Event, + compositionstart: (evt) => evt instanceof CompositionEvent, + compositionupdate: (evt) => evt instanceof CompositionEvent, + compositionend: (evt) => evt instanceof CompositionEvent + }; + /** + * @description default values for InputProps, used in components that extend InputProps like Autocomplete + */ + const inputPropsDefaults = { + disabled: void 0, + modelValue: "", + modelModifiers: () => ({}), + type: "text", + autocomplete: "off", + clearIcon: (0, vue.markRaw)(circle_close_default), + wordLimitPosition: "inside", + tabindex: 0, + validateEvent: true, + inputStyle: () => ({}), + rows: 2 + }; + +//#endregion +//#region ../../packages/components/input/src/utils.ts + let hiddenTextarea = void 0; + const HIDDEN_STYLE = { + height: "0", + visibility: "hidden", + overflow: isFirefox() ? "" : "hidden", + position: "absolute", + "z-index": "-1000", + top: "0", + right: "0" + }; + const CONTEXT_STYLE = [ + "letter-spacing", + "line-height", + "padding-top", + "padding-bottom", + "font-family", + "font-weight", + "font-size", + "text-rendering", + "text-transform", + "width", + "text-indent", + "padding-left", + "padding-right", + "border-width", + "box-sizing", + "word-break" + ]; + const looseToNumber = (val) => { + const n = Number.parseFloat(val); + return Number.isNaN(n) ? val : n; + }; + function calculateNodeStyling(targetElement) { + const style = window.getComputedStyle(targetElement); + const boxSizing = style.getPropertyValue("box-sizing"); + const paddingSize = Number.parseFloat(style.getPropertyValue("padding-bottom")) + Number.parseFloat(style.getPropertyValue("padding-top")); + const borderSize = Number.parseFloat(style.getPropertyValue("border-bottom-width")) + Number.parseFloat(style.getPropertyValue("border-top-width")); + return { + contextStyle: CONTEXT_STYLE.map((name) => [name, style.getPropertyValue(name)]), + paddingSize, + borderSize, + boxSizing + }; + } + function calcTextareaHeight(targetElement, minRows = 1, maxRows) { + if (!hiddenTextarea) { + hiddenTextarea = document.createElement("textarea"); + let hostNode = document.body; + if (!isFirefox() && targetElement.parentNode) hostNode = targetElement.parentNode; + hostNode.appendChild(hiddenTextarea); + } + const { paddingSize, borderSize, boxSizing, contextStyle } = calculateNodeStyling(targetElement); + contextStyle.forEach(([key, value]) => hiddenTextarea?.style.setProperty(key, value)); + Object.entries(HIDDEN_STYLE).forEach(([key, value]) => hiddenTextarea?.style.setProperty(key, value, "important")); + hiddenTextarea.value = targetElement.value || targetElement.placeholder || ""; + let height = hiddenTextarea.scrollHeight; + const result = {}; + if (boxSizing === "border-box") height = height + borderSize; + else if (boxSizing === "content-box") height = height - paddingSize; + hiddenTextarea.value = ""; + const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize; + if (isNumber(minRows)) { + let minHeight = singleRowHeight * minRows; + if (boxSizing === "border-box") minHeight = minHeight + paddingSize + borderSize; + height = Math.max(minHeight, height); + result.minHeight = `${minHeight}px`; + } + if (isNumber(maxRows)) { + let maxHeight = singleRowHeight * maxRows; + if (boxSizing === "border-box") maxHeight = maxHeight + paddingSize + borderSize; + height = Math.min(maxHeight, height); + } + result.height = `${height}px`; + hiddenTextarea.parentNode?.removeChild(hiddenTextarea); + hiddenTextarea = void 0; + return result; + } + +//#endregion +//#region ../../packages/components/input/src/input.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$76 = [ + "id", + "name", + "minlength", + "maxlength", + "type", + "disabled", + "readonly", + "autocomplete", + "tabindex", + "aria-label", + "placeholder", + "form", + "autofocus", + "role", + "inputmode" + ]; + const _hoisted_2$42 = [ + "id", + "name", + "minlength", + "maxlength", + "tabindex", + "disabled", + "readonly", + "autocomplete", + "aria-label", + "placeholder", + "form", + "autofocus", + "rows", + "role", + "inputmode" + ]; + const COMPONENT_NAME$19 = "ElInput"; + var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$19, + inheritAttrs: false, + __name: "input", + props: inputProps, + emits: inputEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const rawAttrs = (0, vue.useAttrs)(); + const slots = (0, vue.useSlots)(); + const containerKls = (0, vue.computed)(() => [ + props.type === "textarea" ? nsTextarea.b() : nsInput.b(), + nsInput.m(inputSize.value), + nsInput.is("disabled", inputDisabled.value), + nsInput.is("exceed", inputExceed.value), + { + [nsInput.b("group")]: slots.prepend || slots.append, + [nsInput.m("prefix")]: slots.prefix || props.prefixIcon, + [nsInput.m("suffix")]: slots.suffix || props.suffixIcon || props.clearable || props.showPassword, + [nsInput.bm("suffix", "password-clear")]: showClear.value && showPwdVisible.value, + [nsInput.b("hidden")]: props.type === "hidden" + }, + rawAttrs.class + ]); + const wrapperKls = (0, vue.computed)(() => [nsInput.e("wrapper"), nsInput.is("focus", isFocused.value)]); + const attrs = useAttrs(); + const maxlength = (0, vue.computed)(() => props.maxlength?.toString()); + const { form: elForm, formItem: elFormItem } = useFormItem(); + const { inputId } = useFormItemInputId(props, { formItemContext: elFormItem }); + const inputSize = useFormSize(); + const inputDisabled = useFormDisabled(); + const nsInput = useNamespace("input"); + const nsTextarea = useNamespace("textarea"); + const input = (0, vue.shallowRef)(); + const textarea = (0, vue.shallowRef)(); + const hovering = (0, vue.ref)(false); + const passwordVisible = (0, vue.ref)(false); + const countStyle = (0, vue.ref)(); + const textareaCalcStyle = (0, vue.shallowRef)(props.inputStyle); + const saveValue = (0, vue.ref)(""); + const _ref = (0, vue.computed)(() => input.value || textarea.value); + const { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(_ref, { + disabled: inputDisabled, + afterBlur() { + if (props.validateEvent) elFormItem?.validate?.("blur").catch((err) => /* @__PURE__ */ debugWarn(err)); + } + }); + const needStatusIcon = (0, vue.computed)(() => elForm?.statusIcon ?? false); + const validateState = (0, vue.computed)(() => elFormItem?.validateState || ""); + const validateIcon = (0, vue.computed)(() => validateState.value && ValidateComponentsMap[validateState.value]); + const passwordIcon = (0, vue.computed)(() => passwordVisible.value ? view_default : hide_default); + const containerStyle = (0, vue.computed)(() => [rawAttrs.style]); + const textareaStyle = (0, vue.computed)(() => [ + props.inputStyle, + textareaCalcStyle.value, + { resize: props.resize } + ]); + const nativeInputValue = (0, vue.computed)(() => isNil(props.modelValue) ? "" : String(props.modelValue)); + const showClear = (0, vue.computed)(() => props.clearable && !inputDisabled.value && !props.readonly && !!nativeInputValue.value && (isFocused.value || hovering.value)); + const showPwdVisible = (0, vue.computed)(() => props.showPassword && !inputDisabled.value && !!nativeInputValue.value); + const isWordLimitVisible = (0, vue.computed)(() => props.showWordLimit && !!maxlength.value && (props.type === "text" || props.type === "textarea") && !inputDisabled.value && !props.readonly && !props.showPassword); + const textLength = (0, vue.computed)(() => { + if (props.countGraphemes && props.showWordLimit) return props.countGraphemes(nativeInputValue.value); + return nativeInputValue.value.length; + }); + const inputExceed = (0, vue.computed)(() => !!isWordLimitVisible.value && textLength.value > Number(maxlength.value)); + const suffixVisible = (0, vue.computed)(() => !!slots.suffix || !!props.suffixIcon || showClear.value || props.showPassword || isWordLimitVisible.value || !!validateState.value && needStatusIcon.value); + const hasModelModifiers = (0, vue.computed)(() => !!Object.keys(props.modelModifiers).length); + const [recordCursor, setCursor] = useCursor(input); + useResizeObserver(textarea, (entries) => { + onceInitSizeTextarea(); + if (!isWordLimitVisible.value || props.resize !== "both" && props.resize !== "horizontal") return; + const { width } = entries[0].contentRect; + countStyle.value = { right: `calc(100% - ${width + 22 - 10}px)` }; + }); + const resizeTextarea = () => { + const { type, autosize } = props; + if (!isClient || type !== "textarea" || !textarea.value) return; + if (autosize) { + const minRows = isObject$1(autosize) ? autosize.minRows : void 0; + const maxRows = isObject$1(autosize) ? autosize.maxRows : void 0; + const textareaStyle = calcTextareaHeight(textarea.value, minRows, maxRows); + textareaCalcStyle.value = { + overflowY: "hidden", + ...textareaStyle + }; + (0, vue.nextTick)(() => { + textarea.value.offsetHeight; + textareaCalcStyle.value = textareaStyle; + }); + } else textareaCalcStyle.value = { minHeight: calcTextareaHeight(textarea.value).minHeight }; + }; + const createOnceInitResize = (resizeTextarea) => { + let isInit = false; + return () => { + if (isInit || !props.autosize) return; + if (!(textarea.value?.offsetParent === null)) { + setTimeout(resizeTextarea); + isInit = true; + } + }; + }; + const onceInitSizeTextarea = createOnceInitResize(resizeTextarea); + const setNativeInputValue = () => { + const input = _ref.value; + const formatterValue = props.formatter ? props.formatter(nativeInputValue.value) : nativeInputValue.value; + if (!input || input.value === formatterValue || props.type === "file") return; + input.value = formatterValue; + }; + const formatValue = (value) => { + const { trim, number } = props.modelModifiers; + if (trim) value = value.trim(); + if (number) value = `${looseToNumber(value)}`; + if (props.formatter && props.parser) value = props.parser(value); + return value; + }; + const handleInput = async (event) => { + if (isComposing.value) return; + const { lazy } = props.modelModifiers; + let { value } = event.target; + let shouldForceNativeUpdate = false; + if (lazy) { + emit(INPUT_EVENT, value); + return; + } + value = formatValue(value); + if (props.countGraphemes && maxlength.value != null) { + const limit = Number(maxlength.value); + const graphemes = props.countGraphemes(value); + const saveGraphemes = props.countGraphemes(saveValue.value); + if (graphemes > limit && graphemes > saveGraphemes) if (saveGraphemes > limit) { + value = saveValue.value; + shouldForceNativeUpdate = true; + } else { + const prevValue = saveValue.value; + const nextValue = value; + let prefixLen = 0; + while (prefixLen < prevValue.length && prefixLen < nextValue.length && prevValue[prefixLen] === nextValue[prefixLen]) prefixLen++; + let prevSuffixIndex = prevValue.length; + let nextSuffixIndex = nextValue.length; + while (prevSuffixIndex > prefixLen && nextSuffixIndex > prefixLen && prevValue[prevSuffixIndex - 1] === nextValue[nextSuffixIndex - 1]) { + prevSuffixIndex--; + nextSuffixIndex--; + } + const before = nextValue.slice(0, prefixLen); + const removed = prevValue.slice(prefixLen, prevSuffixIndex); + const inserted = nextValue.slice(prefixLen, nextSuffixIndex); + const after = nextValue.slice(nextSuffixIndex); + const baseCount = saveGraphemes - props.countGraphemes(removed); + const availableInserted = Math.max(0, limit - baseCount); + let acceptedInserted = ""; + if (availableInserted > 0) if (typeof Intl !== "undefined" && "Segmenter" in Intl) { + const segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" }); + for (const { segment } of segmenter.segment(inserted)) { + const candidate = acceptedInserted + segment; + if (props.countGraphemes(candidate) > availableInserted) break; + acceptedInserted = candidate; + } + } else for (const char of Array.from(inserted)) { + const candidate = acceptedInserted + char; + if (props.countGraphemes(candidate) > availableInserted) break; + acceptedInserted = candidate; + } + value = before + acceptedInserted + after; + shouldForceNativeUpdate = true; + } + } + if (String(value) === nativeInputValue.value) { + if (props.formatter || shouldForceNativeUpdate) { + const target = event.target; + const blockedValue = target.value; + const selectionStart = target.selectionStart; + const selectionEnd = target.selectionEnd; + setNativeInputValue(); + if (shouldForceNativeUpdate && _ref.value && selectionStart != null && selectionEnd != null) { + const restoredValue = _ref.value.value; + const afterTxt = blockedValue.slice(Math.max(0, selectionEnd)); + let caretPos = Math.min(selectionStart, restoredValue.length); + if (afterTxt && restoredValue.endsWith(afterTxt)) caretPos = restoredValue.length - afterTxt.length; + _ref.value.setSelectionRange(caretPos, caretPos); + } + } + return; + } + saveValue.value = value; + recordCursor(); + emit(UPDATE_MODEL_EVENT, value); + emit(INPUT_EVENT, value); + await (0, vue.nextTick)(); + if (props.formatter && props.parser || !hasModelModifiers.value) setNativeInputValue(); + setCursor(); + }; + const handleChange = async (event) => { + let { value } = event.target; + value = formatValue(value); + if (props.modelModifiers.lazy) emit(UPDATE_MODEL_EVENT, value); + emit(CHANGE_EVENT, value, event); + await (0, vue.nextTick)(); + setNativeInputValue(); + }; + const { isComposing, handleCompositionStart, handleCompositionUpdate, handleCompositionEnd } = useComposition({ + emit, + afterComposition: handleInput + }); + const handlePasswordVisible = () => { + passwordVisible.value = !passwordVisible.value; + }; + const focus = () => _ref.value?.focus(); + const blur = () => _ref.value?.blur(); + const handleMouseLeave = (evt) => { + hovering.value = false; + emit("mouseleave", evt); + }; + const handleMouseEnter = (evt) => { + hovering.value = true; + emit("mouseenter", evt); + }; + const handleKeydown = (evt) => { + emit("keydown", evt); + }; + const select = () => { + _ref.value?.select(); + }; + const clear = (evt) => { + emit(UPDATE_MODEL_EVENT, ""); + emit(CHANGE_EVENT, ""); + emit("clear", evt); + emit(INPUT_EVENT, ""); + }; + (0, vue.watch)(() => props.modelValue, () => { + (0, vue.nextTick)(() => resizeTextarea()); + if (props.validateEvent) elFormItem?.validate?.("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + }); + (0, vue.watch)(() => nativeInputValue.value, (val) => { + saveValue.value = val; + }, { immediate: true }); + (0, vue.watch)(nativeInputValue, (newValue) => { + if (!_ref.value) return; + const { trim, number } = props.modelModifiers; + const elValue = _ref.value.value; + const displayValue = (number || props.type === "number") && !/^0\d/.test(elValue) ? `${looseToNumber(elValue)}` : elValue; + if (displayValue === newValue) return; + if (document.activeElement === _ref.value && _ref.value.type !== "range") { + if (trim && displayValue.trim() === newValue) return; + } + setNativeInputValue(); + }); + (0, vue.watch)(() => props.type, async () => { + await (0, vue.nextTick)(); + setNativeInputValue(); + resizeTextarea(); + }); + (0, vue.onMounted)(() => { + if (!props.formatter && props.parser) /* @__PURE__ */ debugWarn(COMPONENT_NAME$19, "If you set the parser, you also need to set the formatter."); + setNativeInputValue(); + (0, vue.nextTick)(resizeTextarea); + }); + __expose({ + input, + textarea, + ref: _ref, + textareaStyle, + autosize: (0, vue.toRef)(props, "autosize"), + isComposing, + passwordVisible, + focus, + blur, + select, + clear, + resizeTextarea + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + class: (0, vue.normalizeClass)([containerKls.value, { + [(0, vue.unref)(nsInput).bm("group", "append")]: _ctx.$slots.append, + [(0, vue.unref)(nsInput).bm("group", "prepend")]: _ctx.$slots.prepend + }]), + style: (0, vue.normalizeStyle)(containerStyle.value), + onMouseenter: handleMouseEnter, + onMouseleave: handleMouseLeave + }, [(0, vue.createCommentVNode)(" input "), __props.type !== "textarea" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [ + (0, vue.createCommentVNode)(" prepend slot "), + _ctx.$slots.prepend ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(nsInput).be("group", "prepend")) + }, [(0, vue.renderSlot)(_ctx.$slots, "prepend")], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { + ref_key: "wrapperRef", + ref: wrapperRef, + class: (0, vue.normalizeClass)(wrapperKls.value) + }, [ + (0, vue.createCommentVNode)(" prefix slot "), + _ctx.$slots.prefix || __props.prefixIcon ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(nsInput).e("prefix")) + }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(nsInput).e("prefix-inner")) }, [(0, vue.renderSlot)(_ctx.$slots, "prefix"), __props.prefixIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(nsInput).e("icon")) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.prefixIcon)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true)], 2)], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("input", (0, vue.mergeProps)({ + id: (0, vue.unref)(inputId), + ref_key: "input", + ref: input, + class: (0, vue.unref)(nsInput).e("inner") + }, (0, vue.unref)(attrs), { + name: __props.name, + minlength: __props.countGraphemes ? void 0 : __props.minlength, + maxlength: __props.countGraphemes ? void 0 : maxlength.value, + type: __props.showPassword ? passwordVisible.value ? "text" : "password" : __props.type, + disabled: (0, vue.unref)(inputDisabled), + readonly: __props.readonly, + autocomplete: __props.autocomplete, + tabindex: __props.tabindex, + "aria-label": __props.ariaLabel, + placeholder: __props.placeholder, + style: __props.inputStyle, + form: __props.form, + autofocus: __props.autofocus, + role: __props.containerRole, + inputmode: __props.inputmode, + onCompositionstart: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(handleCompositionStart) && (0, vue.unref)(handleCompositionStart)(...args)), + onCompositionupdate: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(handleCompositionUpdate) && (0, vue.unref)(handleCompositionUpdate)(...args)), + onCompositionend: _cache[2] || (_cache[2] = (...args) => (0, vue.unref)(handleCompositionEnd) && (0, vue.unref)(handleCompositionEnd)(...args)), + onInput: handleInput, + onChange: handleChange, + onKeydown: handleKeydown + }), null, 16, _hoisted_1$76), + (0, vue.createCommentVNode)(" suffix slot "), + suffixVisible.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(nsInput).e("suffix")) + }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(nsInput).e("suffix-inner")) }, [ + !showClear.value || !showPwdVisible.value || !isWordLimitVisible.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [(0, vue.renderSlot)(_ctx.$slots, "suffix"), __props.suffixIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(nsInput).e("icon")) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.suffixIcon)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true)], 64)) : (0, vue.createCommentVNode)("v-if", true), + showClear.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 1, + class: (0, vue.normalizeClass)([(0, vue.unref)(nsInput).e("icon"), (0, vue.unref)(nsInput).e("clear")]), + onMousedown: (0, vue.withModifiers)((0, vue.unref)(NOOP), ["prevent"]), + onClick: clear + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.clearIcon)))]), + _: 1 + }, 8, ["class", "onMousedown"])) : (0, vue.createCommentVNode)("v-if", true), + showPwdVisible.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 2, + class: (0, vue.normalizeClass)([(0, vue.unref)(nsInput).e("icon"), (0, vue.unref)(nsInput).e("password")]), + onClick: handlePasswordVisible, + onMousedown: (0, vue.withModifiers)((0, vue.unref)(NOOP), ["prevent"]), + onMouseup: (0, vue.withModifiers)((0, vue.unref)(NOOP), ["prevent"]) + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "password-icon", { visible: passwordVisible.value }, () => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(passwordIcon.value)))])]), + _: 3 + }, 8, [ + "class", + "onMousedown", + "onMouseup" + ])) : (0, vue.createCommentVNode)("v-if", true), + isWordLimitVisible.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 3, + class: (0, vue.normalizeClass)([(0, vue.unref)(nsInput).e("count"), (0, vue.unref)(nsInput).is("outside", __props.wordLimitPosition === "outside")]) + }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(nsInput).e("count-inner")) }, (0, vue.toDisplayString)(textLength.value) + " / " + (0, vue.toDisplayString)(maxlength.value), 3)], 2)) : (0, vue.createCommentVNode)("v-if", true), + validateState.value && validateIcon.value && needStatusIcon.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 4, + class: (0, vue.normalizeClass)([ + (0, vue.unref)(nsInput).e("icon"), + (0, vue.unref)(nsInput).e("validateIcon"), + (0, vue.unref)(nsInput).is("loading", validateState.value === "validating") + ]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(validateIcon.value)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true) + ], 2)], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 2), + (0, vue.createCommentVNode)(" append slot "), + _ctx.$slots.append ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(nsInput).be("group", "append")) + }, [(0, vue.renderSlot)(_ctx.$slots, "append")], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 64)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [ + (0, vue.createCommentVNode)(" textarea "), + (0, vue.createElementVNode)("textarea", (0, vue.mergeProps)({ + id: (0, vue.unref)(inputId), + ref_key: "textarea", + ref: textarea, + class: [ + (0, vue.unref)(nsTextarea).e("inner"), + (0, vue.unref)(nsInput).is("focus", (0, vue.unref)(isFocused)), + (0, vue.unref)(nsTextarea).is("clearable", __props.clearable) + ] + }, (0, vue.unref)(attrs), { + name: __props.name, + minlength: __props.countGraphemes ? void 0 : __props.minlength, + maxlength: __props.countGraphemes ? void 0 : maxlength.value, + tabindex: __props.tabindex, + disabled: (0, vue.unref)(inputDisabled), + readonly: __props.readonly, + autocomplete: __props.autocomplete, + style: textareaStyle.value, + "aria-label": __props.ariaLabel, + placeholder: __props.placeholder, + form: __props.form, + autofocus: __props.autofocus, + rows: __props.rows, + role: __props.containerRole, + inputmode: __props.inputmode, + onCompositionstart: _cache[3] || (_cache[3] = (...args) => (0, vue.unref)(handleCompositionStart) && (0, vue.unref)(handleCompositionStart)(...args)), + onCompositionupdate: _cache[4] || (_cache[4] = (...args) => (0, vue.unref)(handleCompositionUpdate) && (0, vue.unref)(handleCompositionUpdate)(...args)), + onCompositionend: _cache[5] || (_cache[5] = (...args) => (0, vue.unref)(handleCompositionEnd) && (0, vue.unref)(handleCompositionEnd)(...args)), + onInput: handleInput, + onFocus: _cache[6] || (_cache[6] = (...args) => (0, vue.unref)(handleFocus) && (0, vue.unref)(handleFocus)(...args)), + onBlur: _cache[7] || (_cache[7] = (...args) => (0, vue.unref)(handleBlur) && (0, vue.unref)(handleBlur)(...args)), + onChange: handleChange, + onKeydown: handleKeydown + }), null, 16, _hoisted_2$42), + showClear.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(nsTextarea).e("icon"), (0, vue.unref)(nsTextarea).e("clear")]), + onMousedown: (0, vue.withModifiers)((0, vue.unref)(NOOP), ["prevent"]), + onClick: clear + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.clearIcon)))]), + _: 1 + }, 8, ["class", "onMousedown"])) : (0, vue.createCommentVNode)("v-if", true), + isWordLimitVisible.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 1, + style: (0, vue.normalizeStyle)(countStyle.value), + class: (0, vue.normalizeClass)([(0, vue.unref)(nsInput).e("count"), (0, vue.unref)(nsInput).is("outside", __props.wordLimitPosition === "outside")]) + }, (0, vue.toDisplayString)(textLength.value) + " / " + (0, vue.toDisplayString)(maxlength.value), 7)) : (0, vue.createCommentVNode)("v-if", true) + ], 64))], 38); + }; + } + }); + +//#endregion +//#region ../../packages/components/input/src/input.vue + var input_default = input_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/input/index.ts + const ElInput = withInstall(input_default); + +//#endregion +//#region ../../packages/components/autocomplete/src/autocomplete.ts +/** + * @deprecated Removed after 3.0.0, Use `AutocompleteProps` instead. + */ + const autocompleteProps = buildProps({ + ...inputProps, + valueKey: { + type: String, + default: "value" + }, + modelValue: { + type: [String, Number], + default: "" + }, + debounce: { + type: Number, + default: 300 + }, + placement: { + type: definePropType(String), + values: [ + "top", + "top-start", + "top-end", + "bottom", + "bottom-start", + "bottom-end" + ], + default: "bottom-start" + }, + fetchSuggestions: { + type: definePropType([Function, Array]), + default: NOOP + }, + popperClass: useTooltipContentProps.popperClass, + popperStyle: useTooltipContentProps.popperStyle, + triggerOnFocus: { + type: Boolean, + default: true + }, + selectWhenUnmatched: Boolean, + hideLoading: Boolean, + teleported: useTooltipContentProps.teleported, + appendTo: useTooltipContentProps.appendTo, + highlightFirstItem: Boolean, + fitInputWidth: Boolean, + loopNavigation: { + type: Boolean, + default: true + } + }); + const autocompleteEmits = { + [UPDATE_MODEL_EVENT]: (value) => isString(value) || isNumber(value), + [INPUT_EVENT]: (value) => isString(value) || isNumber(value), + [CHANGE_EVENT]: (value) => isString(value) || isNumber(value), + focus: (evt) => evt instanceof FocusEvent, + blur: (evt) => evt instanceof FocusEvent, + clear: () => true, + select: (item) => isObject$1(item) + }; + +//#endregion +//#region ../../packages/components/scrollbar/src/scrollbar.ts +/** + * @deprecated Removed after 3.0.0, Use `ScrollbarProps` instead. + */ + const scrollbarProps = buildProps({ + distance: { + type: Number, + default: 0 + }, + height: { + type: [String, Number], + default: "" + }, + maxHeight: { + type: [String, Number], + default: "" + }, + native: Boolean, + wrapStyle: { + type: definePropType([ + String, + Object, + Array + ]), + default: "" + }, + wrapClass: { + type: [String, Array], + default: "" + }, + viewClass: { + type: [String, Array], + default: "" + }, + viewStyle: { + type: [ + String, + Array, + Object + ], + default: "" + }, + noresize: Boolean, + tag: { + type: String, + default: "div" + }, + always: Boolean, + minSize: { + type: Number, + default: 20 + }, + tabindex: { + type: [String, Number], + default: void 0 + }, + id: String, + role: String, + ...useAriaProps(["ariaLabel", "ariaOrientation"]) + }); + const scrollbarEmits = { + "end-reached": (direction) => [ + "left", + "right", + "top", + "bottom" + ].includes(direction), + scroll: ({ scrollTop, scrollLeft }) => [scrollTop, scrollLeft].every(isNumber) + }; + +//#endregion +//#region ../../packages/components/scrollbar/src/bar.ts +/** + * @deprecated Removed after 3.0.0, Use `BarProps` instead. + */ + const barProps = buildProps({ + always: { + type: Boolean, + default: true + }, + minSize: { + type: Number, + required: true + } + }); + +//#endregion +//#region ../../packages/components/scrollbar/src/util.ts + const GAP = 4; + const BAR_MAP = { + vertical: { + offset: "offsetHeight", + scroll: "scrollTop", + scrollSize: "scrollHeight", + size: "height", + key: "vertical", + axis: "Y", + client: "clientY", + direction: "top" + }, + horizontal: { + offset: "offsetWidth", + scroll: "scrollLeft", + scrollSize: "scrollWidth", + size: "width", + key: "horizontal", + axis: "X", + client: "clientX", + direction: "left" + } + }; + const renderThumbStyle = ({ move, size, bar }) => ({ + [bar.size]: size, + transform: `translate${bar.axis}(${move}%)` + }); + +//#endregion +//#region ../../packages/components/scrollbar/src/thumb.ts +/** + * @deprecated Removed after 3.0.0, Use `ThumbProps` instead. + */ + const thumbProps = buildProps({ + vertical: Boolean, + size: String, + move: Number, + ratio: { + type: Number, + required: true + }, + always: Boolean + }); + +//#endregion +//#region ../../packages/components/scrollbar/src/constants.ts + const scrollbarContextKey = Symbol("scrollbarContextKey"); + +//#endregion +//#region ../../packages/components/scrollbar/src/thumb.vue?vue&type=script&setup=true&lang.ts + const COMPONENT_NAME$18 = "Thumb"; + var thumb_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + __name: "thumb", + props: thumbProps, + setup(__props) { + const props = __props; + const scrollbar = (0, vue.inject)(scrollbarContextKey); + const ns = useNamespace("scrollbar"); + if (!scrollbar) throwError(COMPONENT_NAME$18, "can not inject scrollbar context"); + const instance = (0, vue.ref)(); + const thumb = (0, vue.ref)(); + const thumbState = (0, vue.ref)({}); + const visible = (0, vue.ref)(false); + let cursorDown = false; + let cursorLeave = false; + let baseScrollHeight = 0; + let baseScrollWidth = 0; + let originalOnSelectStart = isClient ? document.onselectstart : null; + const bar = (0, vue.computed)(() => BAR_MAP[props.vertical ? "vertical" : "horizontal"]); + const thumbStyle = (0, vue.computed)(() => renderThumbStyle({ + size: props.size, + move: props.move, + bar: bar.value + })); + const offsetRatio = (0, vue.computed)(() => instance.value[bar.value.offset] ** 2 / scrollbar.wrapElement[bar.value.scrollSize] / props.ratio / thumb.value[bar.value.offset]); + const clickThumbHandler = (e) => { + e.stopPropagation(); + if (e.ctrlKey || [1, 2].includes(e.button)) return; + window.getSelection()?.removeAllRanges(); + startDrag(e); + const el = e.currentTarget; + if (!el) return; + thumbState.value[bar.value.axis] = el[bar.value.offset] - (e[bar.value.client] - el.getBoundingClientRect()[bar.value.direction]); + }; + const clickTrackHandler = (e) => { + if (!thumb.value || !instance.value || !scrollbar.wrapElement) return; + const thumbPositionPercentage = (Math.abs(e.target.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) - thumb.value[bar.value.offset] / 2) * 100 * offsetRatio.value / instance.value[bar.value.offset]; + scrollbar.wrapElement[bar.value.scroll] = thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize] / 100; + }; + const startDrag = (e) => { + e.stopImmediatePropagation(); + cursorDown = true; + baseScrollHeight = scrollbar.wrapElement.scrollHeight; + baseScrollWidth = scrollbar.wrapElement.scrollWidth; + document.addEventListener("mousemove", mouseMoveDocumentHandler); + document.addEventListener("mouseup", mouseUpDocumentHandler); + originalOnSelectStart = document.onselectstart; + document.onselectstart = () => false; + }; + const mouseMoveDocumentHandler = (e) => { + if (!instance.value || !thumb.value) return; + if (cursorDown === false) return; + const prevPage = thumbState.value[bar.value.axis]; + if (!prevPage) return; + const thumbPositionPercentage = ((instance.value.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) * -1 - (thumb.value[bar.value.offset] - prevPage)) * 100 * offsetRatio.value / instance.value[bar.value.offset]; + if (bar.value.scroll === "scrollLeft") scrollbar.wrapElement[bar.value.scroll] = thumbPositionPercentage * baseScrollWidth / 100; + else scrollbar.wrapElement[bar.value.scroll] = thumbPositionPercentage * baseScrollHeight / 100; + }; + const mouseUpDocumentHandler = () => { + cursorDown = false; + thumbState.value[bar.value.axis] = 0; + document.removeEventListener("mousemove", mouseMoveDocumentHandler); + document.removeEventListener("mouseup", mouseUpDocumentHandler); + restoreOnselectstart(); + if (cursorLeave) visible.value = false; + }; + const mouseMoveScrollbarHandler = () => { + cursorLeave = false; + visible.value = !!props.size; + }; + const mouseLeaveScrollbarHandler = () => { + cursorLeave = true; + visible.value = cursorDown; + }; + (0, vue.onBeforeUnmount)(() => { + restoreOnselectstart(); + document.removeEventListener("mouseup", mouseUpDocumentHandler); + }); + const restoreOnselectstart = () => { + if (document.onselectstart !== originalOnSelectStart) document.onselectstart = originalOnSelectStart; + }; + useEventListener((0, vue.toRef)(scrollbar, "scrollbarElement"), "mousemove", mouseMoveScrollbarHandler); + useEventListener((0, vue.toRef)(scrollbar, "scrollbarElement"), "mouseleave", mouseLeaveScrollbarHandler); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(vue.Transition, { + name: (0, vue.unref)(ns).b("fade"), + persisted: "" + }, { + default: (0, vue.withCtx)(() => [(0, vue.withDirectives)((0, vue.createElementVNode)("div", { + ref_key: "instance", + ref: instance, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("bar"), (0, vue.unref)(ns).is(bar.value.key)]), + onMousedown: clickTrackHandler, + onClick: _cache[0] || (_cache[0] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, [(0, vue.createElementVNode)("div", { + ref_key: "thumb", + ref: thumb, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("thumb")), + style: (0, vue.normalizeStyle)(thumbStyle.value), + onMousedown: clickThumbHandler + }, null, 38)], 34), [[vue.vShow, __props.always || visible.value]])]), + _: 1 + }, 8, ["name"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/scrollbar/src/thumb.vue + var thumb_default = thumb_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/scrollbar/src/bar.vue?vue&type=script&setup=true&lang.ts + var bar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + __name: "bar", + props: barProps, + setup(__props, { expose: __expose }) { + const props = __props; + const scrollbar = (0, vue.inject)(scrollbarContextKey); + const moveX = (0, vue.ref)(0); + const moveY = (0, vue.ref)(0); + const sizeWidth = (0, vue.ref)(""); + const sizeHeight = (0, vue.ref)(""); + const ratioY = (0, vue.ref)(1); + const ratioX = (0, vue.ref)(1); + const handleScroll = (wrap) => { + if (wrap) { + const offsetHeight = wrap.offsetHeight - GAP; + const offsetWidth = wrap.offsetWidth - GAP; + moveY.value = wrap.scrollTop * 100 / offsetHeight * ratioY.value; + moveX.value = wrap.scrollLeft * 100 / offsetWidth * ratioX.value; + } + }; + const update = () => { + const wrap = scrollbar?.wrapElement; + if (!wrap) return; + const offsetHeight = wrap.offsetHeight - GAP; + const offsetWidth = wrap.offsetWidth - GAP; + const originalHeight = offsetHeight ** 2 / wrap.scrollHeight; + const originalWidth = offsetWidth ** 2 / wrap.scrollWidth; + const height = Math.max(originalHeight, props.minSize); + const width = Math.max(originalWidth, props.minSize); + ratioY.value = originalHeight / (offsetHeight - originalHeight) / (height / (offsetHeight - height)); + ratioX.value = originalWidth / (offsetWidth - originalWidth) / (width / (offsetWidth - width)); + sizeHeight.value = height + GAP < offsetHeight ? `${height}px` : ""; + sizeWidth.value = width + GAP < offsetWidth ? `${width}px` : ""; + }; + __expose({ + handleScroll, + update + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, null, [(0, vue.createVNode)(thumb_default, { + move: moveX.value, + ratio: ratioX.value, + size: sizeWidth.value, + always: __props.always + }, null, 8, [ + "move", + "ratio", + "size", + "always" + ]), (0, vue.createVNode)(thumb_default, { + move: moveY.value, + ratio: ratioY.value, + size: sizeHeight.value, + vertical: "", + always: __props.always + }, null, 8, [ + "move", + "ratio", + "size", + "always" + ])], 64); + }; + } + }); + +//#endregion +//#region ../../packages/components/scrollbar/src/bar.vue + var bar_default = bar_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/scrollbar/src/scrollbar.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$75 = ["tabindex"]; + const COMPONENT_NAME$17 = "ElScrollbar"; + var scrollbar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$17, + __name: "scrollbar", + props: scrollbarProps, + emits: scrollbarEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const ns = useNamespace("scrollbar"); + let stopResizeObserver = void 0; + let stopWrapResizeObserver = void 0; + let stopResizeListener = void 0; + let wrapScrollTop = 0; + let wrapScrollLeft = 0; + let direction = ""; + const distanceScrollState = { + bottom: false, + top: false, + right: false, + left: false + }; + const scrollbarRef = (0, vue.ref)(); + const wrapRef = (0, vue.ref)(); + const resizeRef = (0, vue.ref)(); + const barRef = (0, vue.ref)(); + const wrapStyle = (0, vue.computed)(() => { + const style = {}; + const height = addUnit(props.height); + const maxHeight = addUnit(props.maxHeight); + if (height) style.height = height; + if (maxHeight) style.maxHeight = maxHeight; + return [props.wrapStyle, style]; + }); + const wrapKls = (0, vue.computed)(() => { + return [ + props.wrapClass, + ns.e("wrap"), + { [ns.em("wrap", "hidden-default")]: !props.native } + ]; + }); + const resizeKls = (0, vue.computed)(() => { + return [ns.e("view"), props.viewClass]; + }); + const shouldSkipDirection = (direction) => { + return distanceScrollState[direction] ?? false; + }; + const DIRECTION_PAIRS = { + top: "bottom", + bottom: "top", + left: "right", + right: "left" + }; + const updateTriggerStatus = (arrivedStates) => { + const oppositeDirection = DIRECTION_PAIRS[direction]; + if (!oppositeDirection) return; + const arrived = arrivedStates[direction]; + const oppositeArrived = arrivedStates[oppositeDirection]; + if (arrived && !distanceScrollState[direction]) distanceScrollState[direction] = true; + if (!oppositeArrived && distanceScrollState[oppositeDirection]) distanceScrollState[oppositeDirection] = false; + }; + const handleScroll = () => { + if (wrapRef.value) { + barRef.value?.handleScroll(wrapRef.value); + const prevTop = wrapScrollTop; + const prevLeft = wrapScrollLeft; + wrapScrollTop = wrapRef.value.scrollTop; + wrapScrollLeft = wrapRef.value.scrollLeft; + const arrivedStates = { + bottom: !isGreaterThan(wrapRef.value.scrollHeight - props.distance, wrapRef.value.clientHeight + wrapScrollTop), + top: wrapScrollTop <= props.distance && prevTop !== 0, + right: !isGreaterThan(wrapRef.value.scrollWidth - props.distance, wrapRef.value.clientWidth + wrapScrollLeft) && prevLeft !== wrapScrollLeft, + left: wrapScrollLeft <= props.distance && prevLeft !== 0 + }; + emit("scroll", { + scrollTop: wrapScrollTop, + scrollLeft: wrapScrollLeft + }); + if (prevTop !== wrapScrollTop) direction = wrapScrollTop > prevTop ? "bottom" : "top"; + if (prevLeft !== wrapScrollLeft) direction = wrapScrollLeft > prevLeft ? "right" : "left"; + if (props.distance > 0) { + if (shouldSkipDirection(direction)) return; + updateTriggerStatus(arrivedStates); + } + if (arrivedStates[direction]) emit("end-reached", direction); + } + }; + function scrollTo(arg1, arg2) { + if (isObject$1(arg1)) wrapRef.value.scrollTo(arg1); + else if (isNumber(arg1) && isNumber(arg2)) wrapRef.value.scrollTo(arg1, arg2); + } + const setScrollTop = (value) => { + if (!isNumber(value)) { + /* @__PURE__ */ debugWarn(COMPONENT_NAME$17, "value must be a number"); + return; + } + wrapRef.value.scrollTop = value; + }; + const setScrollLeft = (value) => { + if (!isNumber(value)) { + /* @__PURE__ */ debugWarn(COMPONENT_NAME$17, "value must be a number"); + return; + } + wrapRef.value.scrollLeft = value; + }; + const update = () => { + barRef.value?.update(); + distanceScrollState[direction] = false; + if (wrapRef.value) barRef.value?.handleScroll(wrapRef.value); + }; + (0, vue.watch)(() => props.noresize, (noresize) => { + if (noresize) { + stopResizeObserver?.(); + stopWrapResizeObserver?.(); + stopResizeListener?.(); + } else { + ({stop: stopResizeObserver} = useResizeObserver(resizeRef, update)); + ({stop: stopWrapResizeObserver} = useResizeObserver(wrapRef, update)); + stopResizeListener = useEventListener("resize", update); + } + }, { immediate: true }); + (0, vue.watch)(() => [props.maxHeight, props.height], () => { + if (!props.native) (0, vue.nextTick)(() => { + update(); + }); + }); + (0, vue.provide)(scrollbarContextKey, (0, vue.reactive)({ + scrollbarElement: scrollbarRef, + wrapElement: wrapRef + })); + (0, vue.onActivated)(() => { + if (wrapRef.value) { + wrapRef.value.scrollTop = wrapScrollTop; + wrapRef.value.scrollLeft = wrapScrollLeft; + } + }); + (0, vue.onMounted)(() => { + if (!props.native) (0, vue.nextTick)(() => { + update(); + }); + }); + (0, vue.onUpdated)(() => update()); + __expose({ + wrapRef, + update, + scrollTo, + setScrollTop, + setScrollLeft, + handleScroll + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "scrollbarRef", + ref: scrollbarRef, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()) + }, [(0, vue.createElementVNode)("div", { + ref_key: "wrapRef", + ref: wrapRef, + class: (0, vue.normalizeClass)(wrapKls.value), + style: (0, vue.normalizeStyle)(wrapStyle.value), + tabindex: __props.tabindex, + onScroll: handleScroll + }, [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.tag), { + id: __props.id, + ref_key: "resizeRef", + ref: resizeRef, + class: (0, vue.normalizeClass)(resizeKls.value), + style: (0, vue.normalizeStyle)(__props.viewStyle), + role: __props.role, + "aria-label": __props.ariaLabel, + "aria-orientation": __props.ariaOrientation + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 8, [ + "id", + "class", + "style", + "role", + "aria-label", + "aria-orientation" + ]))], 46, _hoisted_1$75), !__props.native ? ((0, vue.openBlock)(), (0, vue.createBlock)(bar_default, { + key: 0, + ref_key: "barRef", + ref: barRef, + always: __props.always, + "min-size": __props.minSize + }, null, 8, ["always", "min-size"])) : (0, vue.createCommentVNode)("v-if", true)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/scrollbar/src/scrollbar.vue + var scrollbar_default = scrollbar_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/scrollbar/index.ts + const ElScrollbar = withInstall(scrollbar_default); + +//#endregion +//#region ../../packages/components/autocomplete/src/autocomplete.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$74 = ["aria-expanded", "aria-owns"]; + const _hoisted_2$41 = { key: 0 }; + const _hoisted_3$18 = [ + "id", + "aria-selected", + "onClick" + ]; + const COMPONENT_NAME$16 = "ElAutocomplete"; + var autocomplete_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$16, + inheritAttrs: false, + __name: "autocomplete", + props: autocompleteProps, + emits: autocompleteEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const passInputProps = (0, vue.computed)(() => { + const inputProps = ElInput.props ?? []; + return pick(props, isArray$1(inputProps) ? inputProps : Object.keys(inputProps)); + }); + const rawAttrs = (0, vue.useAttrs)(); + const disabled = useFormDisabled(); + const ns = useNamespace("autocomplete"); + const inputRef = (0, vue.ref)(); + const regionRef = (0, vue.ref)(); + const popperRef = (0, vue.ref)(); + const listboxRef = (0, vue.ref)(); + let readonly = false; + let ignoreFocusEvent = false; + const suggestions = (0, vue.ref)([]); + const highlightedIndex = (0, vue.ref)(-1); + const dropdownWidth = (0, vue.ref)(""); + const activated = (0, vue.ref)(false); + const suggestionDisabled = (0, vue.ref)(false); + const loading = (0, vue.ref)(false); + const listboxId = useId(); + const styles = (0, vue.computed)(() => rawAttrs.style); + const suggestionVisible = (0, vue.computed)(() => { + return (suggestions.value.length > 0 || loading.value) && activated.value; + }); + const suggestionLoading = (0, vue.computed)(() => !props.hideLoading && loading.value); + const refInput = (0, vue.computed)(() => { + if (inputRef.value) return Array.from(inputRef.value.$el.querySelectorAll("input")); + return []; + }); + const onSuggestionShow = () => { + if (suggestionVisible.value) dropdownWidth.value = `${inputRef.value.$el.offsetWidth}px`; + }; + const onHide = () => { + highlightedIndex.value = -1; + }; + const getData = async (queryString) => { + if (suggestionDisabled.value) return; + const cb = (suggestionList) => { + loading.value = false; + if (suggestionDisabled.value) return; + if (isArray$1(suggestionList)) { + suggestions.value = suggestionList; + highlightedIndex.value = props.highlightFirstItem ? 0 : -1; + } else throwError(COMPONENT_NAME$16, "autocomplete suggestions must be an array"); + }; + loading.value = true; + if (isArray$1(props.fetchSuggestions)) cb(props.fetchSuggestions); + else { + const result = await props.fetchSuggestions(queryString, cb); + if (isArray$1(result)) cb(result); + } + }; + const debouncedGetData = useDebounceFn(getData, (0, vue.computed)(() => props.debounce)); + const handleInput = (value) => { + const valuePresented = !!value; + emit(INPUT_EVENT, value); + emit(UPDATE_MODEL_EVENT, value); + suggestionDisabled.value = false; + activated.value ||= valuePresented; + if (!props.triggerOnFocus && !value) { + suggestionDisabled.value = true; + suggestions.value = []; + return; + } + debouncedGetData(value); + }; + const handleMouseDown = (event) => { + if (disabled.value) return; + if (event.target?.tagName !== "INPUT" || refInput.value.includes(document.activeElement)) activated.value = true; + }; + const handleChange = (value) => { + emit(CHANGE_EVENT, value); + }; + const handleFocus = (evt) => { + if (!ignoreFocusEvent) { + activated.value = true; + emit("focus", evt); + const queryString = props.modelValue ?? ""; + if (props.triggerOnFocus && !readonly) debouncedGetData(String(queryString)); + } else ignoreFocusEvent = false; + }; + const handleBlur = (evt) => { + setTimeout(() => { + if (popperRef.value?.isFocusInsideContent()) { + ignoreFocusEvent = true; + return; + } + activated.value && close(); + emit("blur", evt); + }); + }; + const handleClear = () => { + activated.value = false; + emit(UPDATE_MODEL_EVENT, ""); + emit("clear"); + }; + const handleKeyEnter = async () => { + if (inputRef.value?.isComposing) return; + if (suggestionVisible.value && highlightedIndex.value >= 0 && highlightedIndex.value < suggestions.value.length) handleSelect(suggestions.value[highlightedIndex.value]); + else { + if (props.selectWhenUnmatched) { + emit("select", { value: props.modelValue }); + suggestions.value = []; + highlightedIndex.value = -1; + } + activated.value = true; + debouncedGetData(String(props.modelValue)); + } + }; + const handleKeyEscape = (evt) => { + if (suggestionVisible.value) { + evt.preventDefault(); + evt.stopPropagation(); + close(); + } + }; + const close = () => { + activated.value = false; + }; + const focus = () => { + inputRef.value?.focus(); + }; + const blur = () => { + inputRef.value?.blur(); + }; + const handleSelect = async (item) => { + emit(INPUT_EVENT, item[props.valueKey]); + emit(UPDATE_MODEL_EVENT, item[props.valueKey]); + emit("select", item); + suggestions.value = []; + highlightedIndex.value = -1; + }; + const highlight = (index) => { + if (!suggestionVisible.value || loading.value) return; + if (index < 0) { + if (!props.loopNavigation) { + highlightedIndex.value = -1; + return; + } + index = suggestions.value.length - 1; + } + if (index >= suggestions.value.length) index = props.loopNavigation ? 0 : suggestions.value.length - 1; + const [suggestion, suggestionList] = getSuggestionContext(); + const highlightItem = suggestionList[index]; + const scrollTop = suggestion.scrollTop; + const { offsetTop, scrollHeight } = highlightItem; + if (offsetTop + scrollHeight > scrollTop + suggestion.clientHeight) suggestion.scrollTop = offsetTop + scrollHeight - suggestion.clientHeight; + if (offsetTop < scrollTop) suggestion.scrollTop = offsetTop; + highlightedIndex.value = index; + inputRef.value?.ref?.setAttribute("aria-activedescendant", `${listboxId.value}-item-${highlightedIndex.value}`); + }; + const getSuggestionContext = () => { + const suggestion = regionRef.value.querySelector(`.${ns.be("suggestion", "wrap")}`); + return [suggestion, suggestion.querySelectorAll(`.${ns.be("suggestion", "list")} li`)]; + }; + const stopHandle = onClickOutside(listboxRef, (event) => { + if (popperRef.value?.isFocusInsideContent()) return; + const hadIgnoredFocus = ignoreFocusEvent; + ignoreFocusEvent = false; + if (!suggestionVisible.value) return; + if (hadIgnoredFocus) handleBlur(new FocusEvent("blur", event)); + else close(); + }); + const handleKeydown = (e) => { + switch (getEventCode(e)) { + case EVENT_CODE.up: + e.preventDefault(); + highlight(highlightedIndex.value - 1); + break; + case EVENT_CODE.down: + e.preventDefault(); + highlight(highlightedIndex.value + 1); + break; + case EVENT_CODE.enter: + case EVENT_CODE.numpadEnter: + e.preventDefault(); + handleKeyEnter(); + break; + case EVENT_CODE.tab: + close(); + break; + case EVENT_CODE.esc: + handleKeyEscape(e); + break; + case EVENT_CODE.home: + e.preventDefault(); + highlight(0); + break; + case EVENT_CODE.end: + e.preventDefault(); + highlight(suggestions.value.length - 1); + break; + case EVENT_CODE.pageUp: + e.preventDefault(); + highlight(Math.max(0, highlightedIndex.value - 10)); + break; + case EVENT_CODE.pageDown: + e.preventDefault(); + highlight(Math.min(suggestions.value.length - 1, highlightedIndex.value + 10)); + break; + } + }; + (0, vue.onBeforeUnmount)(() => { + stopHandle?.(); + }); + (0, vue.onMounted)(() => { + const inputElement = inputRef.value?.ref; + if (!inputElement) return; + [ + { + key: "role", + value: "textbox" + }, + { + key: "aria-autocomplete", + value: "list" + }, + { + key: "aria-controls", + value: listboxId.value + }, + { + key: "aria-activedescendant", + value: `${listboxId.value}-item-${highlightedIndex.value}` + } + ].forEach(({ key, value }) => inputElement.setAttribute(key, value)); + readonly = inputElement.hasAttribute("readonly"); + }); + __expose({ + highlightedIndex, + activated, + loading, + inputRef, + popperRef, + suggestions, + handleSelect, + handleKeyEnter, + focus, + blur, + close, + highlight, + getData + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTooltip), { + ref_key: "popperRef", + ref: popperRef, + visible: suggestionVisible.value, + placement: __props.placement, + "fallback-placements": ["bottom-start", "top-start"], + "popper-class": [(0, vue.unref)(ns).e("popper"), __props.popperClass], + "popper-style": __props.popperStyle, + teleported: __props.teleported, + "append-to": __props.appendTo, + "gpu-acceleration": false, + pure: "", + "manual-mode": "", + effect: "light", + trigger: "click", + transition: `${(0, vue.unref)(ns).namespace.value}-zoom-in-top`, + persistent: "", + role: "listbox", + onBeforeShow: onSuggestionShow, + onHide + }, { + content: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + ref_key: "regionRef", + ref: regionRef, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).b("suggestion"), (0, vue.unref)(ns).is("loading", suggestionLoading.value)]), + style: (0, vue.normalizeStyle)({ + [__props.fitInputWidth ? "width" : "minWidth"]: dropdownWidth.value, + outline: "none" + }), + role: "region" + }, [ + _ctx.$slots.header ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("suggestion", "header")), + onClick: _cache[0] || (_cache[0] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, [(0, vue.renderSlot)(_ctx.$slots, "header")], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createVNode)((0, vue.unref)(ElScrollbar), { + id: (0, vue.unref)(listboxId), + tag: "ul", + "wrap-class": (0, vue.unref)(ns).be("suggestion", "wrap"), + "view-class": (0, vue.unref)(ns).be("suggestion", "list"), + role: "listbox" + }, { + default: (0, vue.withCtx)(() => [suggestionLoading.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("li", _hoisted_2$41, [(0, vue.renderSlot)(_ctx.$slots, "loading", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), { class: (0, vue.normalizeClass)((0, vue.unref)(ns).is("loading")) }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(loading_default))]), + _: 1 + }, 8, ["class"])])])) : ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, (0, vue.renderList)(suggestions.value, (item, index) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + id: `${(0, vue.unref)(listboxId)}-item-${index}`, + key: index, + class: (0, vue.normalizeClass)({ highlighted: highlightedIndex.value === index }), + role: "option", + "aria-selected": highlightedIndex.value === index, + onClick: ($event) => handleSelect(item) + }, [(0, vue.renderSlot)(_ctx.$slots, "default", { item }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(item[__props.valueKey]), 1)])], 10, _hoisted_3$18); + }), 128))]), + _: 3 + }, 8, [ + "id", + "wrap-class", + "view-class" + ]), + _ctx.$slots.footer ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("suggestion", "footer")), + onClick: _cache[1] || (_cache[1] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, [(0, vue.renderSlot)(_ctx.$slots, "footer")], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 6)]), + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + ref_key: "listboxRef", + ref: listboxRef, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).b(), _ctx.$attrs.class]), + style: (0, vue.normalizeStyle)(styles.value), + role: "combobox", + "aria-haspopup": "listbox", + "aria-expanded": suggestionVisible.value, + "aria-owns": (0, vue.unref)(listboxId) + }, [(0, vue.createVNode)((0, vue.unref)(ElInput), (0, vue.mergeProps)({ + ref_key: "inputRef", + ref: inputRef + }, (0, vue.mergeProps)(passInputProps.value, _ctx.$attrs), { + "model-value": __props.modelValue, + disabled: (0, vue.unref)(disabled), + onInput: handleInput, + onChange: handleChange, + onFocus: handleFocus, + onBlur: handleBlur, + onClear: handleClear, + onKeydown: handleKeydown, + onMousedown: handleMouseDown + }), (0, vue.createSlots)({ _: 2 }, [ + _ctx.$slots.prepend ? { + name: "prepend", + fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "prepend")]), + key: "0" + } : void 0, + _ctx.$slots.append ? { + name: "append", + fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "append")]), + key: "1" + } : void 0, + _ctx.$slots.prefix ? { + name: "prefix", + fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "prefix")]), + key: "2" + } : void 0, + _ctx.$slots.suffix ? { + name: "suffix", + fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "suffix")]), + key: "3" + } : void 0 + ]), 1040, ["model-value", "disabled"])], 14, _hoisted_1$74)]), + _: 3 + }, 8, [ + "visible", + "placement", + "popper-class", + "popper-style", + "teleported", + "append-to", + "transition" + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/autocomplete/src/autocomplete.vue + var autocomplete_default = autocomplete_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/autocomplete/index.ts + const ElAutocomplete = withInstall(autocomplete_default); + +//#endregion +//#region ../../packages/components/avatar/src/avatar.ts +/** + * @deprecated Removed after 3.0.0, Use `AvatarProps` instead. + */ + const avatarProps = buildProps({ + size: { + type: [Number, String], + values: componentSizes, + validator: (val) => isNumber(val) + }, + shape: { + type: String, + values: ["circle", "square"] + }, + icon: { type: iconPropType }, + src: { + type: String, + default: "" + }, + alt: String, + srcSet: String, + fit: { + type: definePropType(String), + default: "cover" + } + }); + const avatarEmits = { error: (evt) => evt instanceof Event }; + +//#endregion +//#region ../../packages/components/avatar/src/constants.ts + const avatarGroupContextKey = Symbol("avatarGroupContextKey"); + +//#endregion +//#region ../../packages/components/avatar/src/avatar.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$73 = [ + "src", + "alt", + "srcset" + ]; + var avatar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElAvatar", + __name: "avatar", + props: avatarProps, + emits: avatarEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const avatarGroupContext = (0, vue.inject)(avatarGroupContextKey, void 0); + const ns = useNamespace("avatar"); + const hasLoadError = (0, vue.ref)(false); + const size = (0, vue.computed)(() => props.size ?? avatarGroupContext?.size); + const shape = (0, vue.computed)(() => props.shape ?? avatarGroupContext?.shape ?? "circle"); + const avatarClass = (0, vue.computed)(() => { + const { icon } = props; + const classList = [ns.b()]; + if (isString(size.value)) classList.push(ns.m(size.value)); + if (icon) classList.push(ns.m("icon")); + if (shape.value) classList.push(ns.m(shape.value)); + return classList; + }); + const sizeStyle = (0, vue.computed)(() => { + return isNumber(size.value) ? ns.cssVarBlock({ size: addUnit(size.value) }) : void 0; + }); + const fitStyle = (0, vue.computed)(() => ({ objectFit: props.fit })); + (0, vue.watch)(() => [props.src, props.srcSet], () => hasLoadError.value = false); + function handleError(e) { + hasLoadError.value = true; + emit("error", e); + } + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + class: (0, vue.normalizeClass)(avatarClass.value), + style: (0, vue.normalizeStyle)(sizeStyle.value) + }, [(__props.src || __props.srcSet) && !hasLoadError.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("img", { + key: 0, + src: __props.src, + alt: __props.alt, + srcset: __props.srcSet, + style: (0, vue.normalizeStyle)(fitStyle.value), + onError: handleError + }, null, 44, _hoisted_1$73)) : __props.icon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { key: 1 }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.icon)))]), + _: 1 + })) : (0, vue.renderSlot)(_ctx.$slots, "default", { key: 2 })], 6); + }; + } + }); + +//#endregion +//#region ../../packages/components/avatar/src/avatar.vue + var avatar_default = avatar_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/avatar/src/avatar-group-props.ts + const avatarGroupProps = { + size: { + type: definePropType([Number, String]), + values: componentSizes, + validator: (val) => isNumber(val) + }, + shape: { + type: definePropType(String), + values: ["circle", "square"] + }, + collapseAvatars: Boolean, + collapseAvatarsTooltip: Boolean, + maxCollapseAvatars: { + type: Number, + default: 1 + }, + effect: { + type: definePropType(String), + default: "light" + }, + placement: { + type: definePropType(String), + values: Ee, + default: "top" + }, + popperClass: useTooltipContentProps.popperClass, + popperStyle: useTooltipContentProps.popperStyle, + collapseClass: String, + collapseStyle: { type: definePropType([ + String, + Array, + Object + ]) } + }; + +//#endregion +//#region ../../packages/components/avatar/src/avatar-group.tsx + var avatar_group_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElAvatarGroup", + props: avatarGroupProps, + setup(props, { slots }) { + const ns = useNamespace("avatar-group"); + (0, vue.provide)(avatarGroupContextKey, (0, vue.reactive)({ + size: (0, vue.toRef)(props, "size"), + shape: (0, vue.toRef)(props, "shape") + })); + return () => { + const avatars = flattedChildren(slots.default?.() ?? []); + let visibleAvatars = avatars; + if (props.collapseAvatars && avatars.length > props.maxCollapseAvatars) { + visibleAvatars = avatars.slice(0, props.maxCollapseAvatars); + const hiddenAvatars = avatars.slice(props.maxCollapseAvatars); + visibleAvatars.push((0, vue.createVNode)(ElTooltip, { + "popperClass": props.popperClass, + "popperStyle": props.popperStyle, + "placement": props.placement, + "effect": props.effect, + "disabled": !props.collapseAvatarsTooltip + }, { + default: () => (0, vue.createVNode)(avatar_default, { + "size": props.size, + "shape": props.shape, + "class": props.collapseClass, + "style": props.collapseStyle + }, { default: () => [(0, vue.createTextVNode)("+ "), hiddenAvatars.length] }), + content: () => (0, vue.createVNode)("div", { "class": ns.e("collapse-avatars") }, [hiddenAvatars.map((node, idx) => (0, vue.isVNode)(node) ? (0, vue.cloneVNode)(node, { key: node.key ?? idx }) : node)]) + })); + } + return (0, vue.createVNode)("div", { "class": ns.b() }, [visibleAvatars]); + }; + } + }); + +//#endregion +//#region ../../packages/components/avatar/index.ts + const ElAvatar = withInstall(avatar_default, { AvatarGroup: avatar_group_default }); + const ElAvatarGroup = withNoopInstall(avatar_group_default); + +//#endregion +//#region ../../packages/components/backtop/src/backtop.ts +/** + * @deprecated Removed after 3.0.0, Use `BacktopProps` instead. + */ + const backtopProps = { + visibilityHeight: { + type: Number, + default: 200 + }, + target: { + type: String, + default: "" + }, + right: { + type: Number, + default: 40 + }, + bottom: { + type: Number, + default: 40 + } + }; + const backtopEmits = { click: (evt) => evt instanceof MouseEvent }; + +//#endregion +//#region ../../packages/components/backtop/src/use-backtop.ts + const useBackTop = (props, emit, componentName) => { + const el = (0, vue.shallowRef)(); + const container = (0, vue.shallowRef)(); + const visible = (0, vue.ref)(false); + const handleScroll = () => { + if (el.value) visible.value = el.value.scrollTop >= props.visibilityHeight; + }; + const handleClick = (event) => { + el.value?.scrollTo({ + top: 0, + behavior: "smooth" + }); + emit("click", event); + }; + useEventListener(container, "scroll", useThrottleFn(handleScroll, 300, true)); + (0, vue.onMounted)(() => { + container.value = document; + el.value = document.documentElement; + if (props.target) { + el.value = document.querySelector(props.target) ?? void 0; + if (!el.value) throwError(componentName, `target does not exist: ${props.target}`); + container.value = el.value; + } + handleScroll(); + }); + return { + visible, + handleClick + }; + }; + +//#endregion +//#region ../../packages/components/backtop/src/backtop.vue?vue&type=script&setup=true&lang.ts + const COMPONENT_NAME$15 = "ElBacktop"; + var backtop_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$15, + __name: "backtop", + props: backtopProps, + emits: backtopEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const ns = useNamespace("backtop"); + const { handleClick, visible } = useBackTop(props, emit, COMPONENT_NAME$15); + const backTopStyle = (0, vue.computed)(() => ({ + right: `${props.right}px`, + bottom: `${props.bottom}px` + })); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(vue.Transition, { name: `${(0, vue.unref)(ns).namespace.value}-fade-in` }, { + default: (0, vue.withCtx)(() => [(0, vue.unref)(visible) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + style: (0, vue.normalizeStyle)(backTopStyle.value), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()), + onClick: _cache[0] || (_cache[0] = (0, vue.withModifiers)((...args) => (0, vue.unref)(handleClick) && (0, vue.unref)(handleClick)(...args), ["stop"])) + }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("icon")) }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(caret_top_default))]), + _: 1 + }, 8, ["class"])])], 6)) : (0, vue.createCommentVNode)("v-if", true)]), + _: 3 + }, 8, ["name"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/backtop/src/backtop.vue + var backtop_default = backtop_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/backtop/index.ts + const ElBacktop = withInstall(backtop_default); + +//#endregion +//#region ../../packages/components/badge/src/badge.ts +/** + * @deprecated Removed after 3.0.0, Use `BadgeProps` instead. + */ + const badgeProps = buildProps({ + value: { + type: [String, Number], + default: "" + }, + max: { + type: Number, + default: 99 + }, + isDot: Boolean, + hidden: Boolean, + type: { + type: String, + values: [ + "primary", + "success", + "warning", + "info", + "danger" + ], + default: "danger" + }, + showZero: { + type: Boolean, + default: true + }, + color: String, + badgeStyle: { type: definePropType([ + String, + Object, + Array + ]) }, + offset: { + type: definePropType(Array), + default: () => [0, 0] + }, + badgeClass: { type: String } + }); + +//#endregion +//#region ../../packages/components/badge/src/badge.vue?vue&type=script&setup=true&lang.ts + var badge_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElBadge", + __name: "badge", + props: badgeProps, + setup(__props, { expose: __expose }) { + const props = __props; + const ns = useNamespace("badge"); + const content = (0, vue.computed)(() => { + if (props.isDot) return ""; + if (isNumber(props.value) && isNumber(props.max)) return props.max < props.value ? `${props.max}+` : `${props.value}`; + return `${props.value}`; + }); + const style = (0, vue.computed)(() => { + return [{ + backgroundColor: props.color, + marginRight: addUnit(-props.offset[0]), + marginTop: addUnit(props.offset[1]) + }, props.badgeStyle ?? {}]; + }); + __expose({ content }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()) }, [(0, vue.renderSlot)(_ctx.$slots, "default"), (0, vue.createVNode)(vue.Transition, { name: `${(0, vue.unref)(ns).namespace.value}-zoom-in-center` }, { + default: (0, vue.withCtx)(() => [!__props.hidden && (content.value || __props.isDot || _ctx.$slots.content) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("sup", { + key: 0, + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).e("content"), + (0, vue.unref)(ns).em("content", __props.type), + (0, vue.unref)(ns).is("fixed", !!_ctx.$slots.default), + (0, vue.unref)(ns).is("dot", __props.isDot), + (0, vue.unref)(ns).is("hide-zero", !__props.showZero && __props.value === 0), + __props.badgeClass + ]), + style: (0, vue.normalizeStyle)(style.value) + }, [(0, vue.renderSlot)(_ctx.$slots, "content", { value: content.value }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(content.value), 1)])], 6)) : (0, vue.createCommentVNode)("v-if", true)]), + _: 3 + }, 8, ["name"])], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/badge/src/badge.vue + var badge_default = badge_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/badge/index.ts + const ElBadge = withInstall(badge_default); + +//#endregion +//#region ../../packages/components/breadcrumb/src/breadcrumb.ts +/** + * @deprecated Removed after 3.0.0, Use `BreadcrumbProps` instead. + */ + const breadcrumbProps = buildProps({ + separator: { + type: String, + default: "/" + }, + separatorIcon: { type: iconPropType } + }); + +//#endregion +//#region ../../packages/components/breadcrumb/src/constants.ts + const breadcrumbKey = Symbol("breadcrumbKey"); + +//#endregion +//#region ../../packages/components/breadcrumb/src/breadcrumb.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$72 = ["aria-label"]; + var breadcrumb_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElBreadcrumb", + __name: "breadcrumb", + props: breadcrumbProps, + setup(__props) { + const { t } = useLocale(); + const props = __props; + const ns = useNamespace("breadcrumb"); + const breadcrumb = (0, vue.ref)(); + (0, vue.provide)(breadcrumbKey, props); + (0, vue.onMounted)(() => { + const items = breadcrumb.value.querySelectorAll(`.${ns.e("item")}`); + if (items.length) items[items.length - 1].setAttribute("aria-current", "page"); + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "breadcrumb", + ref: breadcrumb, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()), + "aria-label": (0, vue.unref)(t)("el.breadcrumb.label"), + role: "navigation" + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1$72); + }; + } + }); + +//#endregion +//#region ../../packages/components/breadcrumb/src/breadcrumb.vue + var breadcrumb_default = breadcrumb_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/breadcrumb/src/breadcrumb-item.ts +/** + * @deprecated Removed after 3.0.0, Use `BreadcrumbItemProps` instead. + */ + const breadcrumbItemProps = buildProps({ + to: { + type: definePropType([String, Object]), + default: "" + }, + replace: Boolean + }); + +//#endregion +//#region ../../packages/components/breadcrumb/src/breadcrumb-item.vue?vue&type=script&setup=true&lang.ts + var breadcrumb_item_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElBreadcrumbItem", + __name: "breadcrumb-item", + props: breadcrumbItemProps, + setup(__props) { + const props = __props; + const instance = (0, vue.getCurrentInstance)(); + const breadcrumbContext = (0, vue.inject)(breadcrumbKey, void 0); + const ns = useNamespace("breadcrumb"); + const router = instance.appContext.config.globalProperties.$router; + const onClick = () => { + if (!props.to || !router) return; + props.replace ? router.replace(props.to) : router.push(props.to); + }; + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("item")) }, [(0, vue.createElementVNode)("span", { + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("inner"), (0, vue.unref)(ns).is("link", !!__props.to)]), + role: "link", + onClick + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2), (0, vue.unref)(breadcrumbContext)?.separatorIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("separator")) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)((0, vue.unref)(breadcrumbContext).separatorIcon)))]), + _: 1 + }, 8, ["class"])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("separator")), + role: "presentation" + }, (0, vue.toDisplayString)((0, vue.unref)(breadcrumbContext)?.separator), 3))], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/breadcrumb/src/breadcrumb-item.vue + var breadcrumb_item_default = breadcrumb_item_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/breadcrumb/index.ts + const ElBreadcrumb = withInstall(breadcrumb_default, { BreadcrumbItem: breadcrumb_item_default }); + const ElBreadcrumbItem = withNoopInstall(breadcrumb_item_default); + +//#endregion +//#region ../../packages/components/button/src/button.ts + const buttonTypes = [ + "default", + "primary", + "success", + "warning", + "info", + "danger", + "text", + "" + ]; + const buttonNativeTypes = [ + "button", + "submit", + "reset" + ]; + /** + * @deprecated Removed after 3.0.0, Use `ButtonProps` instead. + */ + const buttonProps = buildProps({ + size: useSizeProp, + disabled: { + type: Boolean, + default: void 0 + }, + type: { + type: String, + values: buttonTypes, + default: "" + }, + icon: { type: iconPropType }, + nativeType: { + type: String, + values: buttonNativeTypes, + default: "button" + }, + loading: Boolean, + loadingIcon: { + type: iconPropType, + default: () => loading_default + }, + plain: { + type: Boolean, + default: void 0 + }, + text: { + type: Boolean, + default: void 0 + }, + link: Boolean, + bg: Boolean, + autofocus: Boolean, + round: { + type: Boolean, + default: void 0 + }, + circle: Boolean, + dashed: { + type: Boolean, + default: void 0 + }, + color: String, + dark: Boolean, + autoInsertSpace: { + type: Boolean, + default: void 0 + }, + tag: { + type: definePropType([String, Object]), + default: "button" + } + }); + const buttonEmits = { click: (evt) => evt instanceof MouseEvent }; + +//#endregion +//#region ../../packages/components/button/src/constants.ts + const buttonGroupContextKey = Symbol("buttonGroupContextKey"); + +//#endregion +//#region ../../packages/components/button/src/use-button.ts + const useButton = (props, emit) => { + useDeprecated({ + from: "type.text", + replacement: "link", + version: "3.0.0", + scope: "props", + ref: "https://element-plus.org/en-US/component/button.html#button-attributes" + }, (0, vue.computed)(() => props.type === "text")); + const buttonGroupContext = (0, vue.inject)(buttonGroupContextKey, void 0); + const globalConfig = useGlobalConfig("button"); + const { form } = useFormItem(); + const _size = useFormSize((0, vue.computed)(() => buttonGroupContext?.size)); + const _disabled = useFormDisabled(); + const _ref = (0, vue.ref)(); + const slots = (0, vue.useSlots)(); + const _type = (0, vue.computed)(() => props.type || buttonGroupContext?.type || globalConfig.value?.type || ""); + const autoInsertSpace = (0, vue.computed)(() => props.autoInsertSpace ?? globalConfig.value?.autoInsertSpace ?? false); + const _plain = (0, vue.computed)(() => props.plain ?? globalConfig.value?.plain ?? false); + const _round = (0, vue.computed)(() => props.round ?? globalConfig.value?.round ?? false); + const _text = (0, vue.computed)(() => props.text ?? globalConfig.value?.text ?? false); + const _dashed = (0, vue.computed)(() => props.dashed ?? globalConfig.value?.dashed ?? false); + const _props = (0, vue.computed)(() => { + if (props.tag === "button") return { + ariaDisabled: _disabled.value || props.loading, + disabled: _disabled.value || props.loading, + autofocus: props.autofocus, + type: props.nativeType + }; + return {}; + }); + const shouldAddSpace = (0, vue.computed)(() => { + const defaultSlot = slots.default?.(); + if (autoInsertSpace.value && defaultSlot?.length === 1) { + const slot = defaultSlot[0]; + if (slot?.type === vue.Text) { + const text = slot.children; + return /^\p{Unified_Ideograph}{2}$/u.test(text.trim()); + } + } + return false; + }); + const handleClick = (evt) => { + if (_disabled.value || props.loading) { + evt.stopPropagation(); + return; + } + if (props.nativeType === "reset") form?.resetFields(); + emit("click", evt); + }; + return { + _disabled, + _size, + _type, + _ref, + _props, + _plain, + _round, + _text, + _dashed, + shouldAddSpace, + handleClick + }; + }; + +//#endregion +//#region ../../node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/module/util.js +/** + * Take input from [0, n] and return it as [0, 1] + * @hidden + */ + function bound01(n, max) { + if (isOnePointZero(n)) n = "100%"; + const isPercent = isPercentage(n); + n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n))); + if (isPercent) n = parseInt(String(n * max), 10) / 100; + if (Math.abs(n - max) < 1e-6) return 1; + if (max === 360) n = (n < 0 ? n % max + max : n % max) / parseFloat(String(max)); + else n = n % max / parseFloat(String(max)); + return n; + } + /** + * Force a number between 0 and 1 + * @hidden + */ + function clamp01(val) { + return Math.min(1, Math.max(0, val)); + } + /** + * Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 + * + * @hidden + */ + function isOnePointZero(n) { + return typeof n === "string" && n.indexOf(".") !== -1 && parseFloat(n) === 1; + } + /** + * Check to see if string passed in is a percentage + * @hidden + */ + function isPercentage(n) { + return typeof n === "string" && n.indexOf("%") !== -1; + } + /** + * Return a valid alpha value [0,1] with all invalid values being set to 1 + * @hidden + */ + function boundAlpha(a) { + a = parseFloat(a); + if (isNaN(a) || a < 0 || a > 1) a = 1; + return a; + } + /** + * Replace a decimal with it's percentage value + * @hidden + */ + function convertToPercentage(n) { + if (Number(n) <= 1) return `${Number(n) * 100}%`; + return n; + } + /** + * Force a hex value to have 2 characters + * @hidden + */ + function pad2(c) { + return c.length === 1 ? "0" + c : String(c); + } + +//#endregion +//#region ../../node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/module/conversion.js +/** + * Handle bounds / percentage checking to conform to CSS color spec + * + * *Assumes:* r, g, b in [0, 255] or [0, 1] + * *Returns:* { r, g, b } in [0, 255] + */ + function rgbToRgb(r, g, b) { + return { + r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + }; + } + /** + * Converts an RGB color value to HSL. + * *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] + * *Returns:* { h, s, l } in [0,1] + */ + function rgbToHsl(r, g, b) { + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + let h = 0; + let s = 0; + const l = (max + min) / 2; + if (max === min) { + s = 0; + h = 0; + } else { + const d = max - min; + s = l > .5 ? d / (2 - max - min) : d / (max + min); + switch (max) { + case r: + h = (g - b) / d + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / d + 2; + break; + case b: + h = (r - g) / d + 4; + break; + default: break; + } + h /= 6; + } + return { + h, + s, + l + }; + } + function hue2rgb(p, q, t) { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * (6 * t); + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; + return p; + } + /** + * Converts an HSL color value to RGB. + * + * *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] + * *Returns:* { r, g, b } in the set [0, 255] + */ + function hslToRgb(h, s, l) { + let r; + let g; + let b; + h = bound01(h, 360); + s = bound01(s, 100); + l = bound01(l, 100); + if (s === 0) { + g = l; + b = l; + r = l; + } else { + const q = l < .5 ? l * (1 + s) : l + s - l * s; + const p = 2 * l - q; + r = hue2rgb(p, q, h + 1 / 3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1 / 3); + } + return { + r: r * 255, + g: g * 255, + b: b * 255 + }; + } + /** + * Converts an RGB color value to HSV + * + * *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] + * *Returns:* { h, s, v } in [0,1] + */ + function rgbToHsv(r, g, b) { + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + let h = 0; + const v = max; + const d = max - min; + const s = max === 0 ? 0 : d / max; + if (max === min) h = 0; + else { + switch (max) { + case r: + h = (g - b) / d + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / d + 2; + break; + case b: + h = (r - g) / d + 4; + break; + default: break; + } + h /= 6; + } + return { + h, + s, + v + }; + } + /** + * Converts an HSV color value to RGB. + * + * *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] + * *Returns:* { r, g, b } in the set [0, 255] + */ + function hsvToRgb(h, s, v) { + h = bound01(h, 360) * 6; + s = bound01(s, 100); + v = bound01(v, 100); + const i = Math.floor(h); + const f = h - i; + const p = v * (1 - s); + const q = v * (1 - f * s); + const t = v * (1 - (1 - f) * s); + const mod = i % 6; + const r = [ + v, + q, + p, + p, + t, + v + ][mod]; + const g = [ + t, + v, + v, + q, + p, + p + ][mod]; + const b = [ + p, + p, + t, + v, + v, + q + ][mod]; + return { + r: r * 255, + g: g * 255, + b: b * 255 + }; + } + /** + * Converts an RGB color to hex + * + * *Assumes:* r, g, and b are contained in the set [0, 255] + * *Returns:* a 3 or 6 character hex + */ + function rgbToHex(r, g, b, allow3Char) { + const hex = [ + pad2(Math.round(r).toString(16)), + pad2(Math.round(g).toString(16)), + pad2(Math.round(b).toString(16)) + ]; + if (allow3Char && hex[0].startsWith(hex[0].charAt(1)) && hex[1].startsWith(hex[1].charAt(1)) && hex[2].startsWith(hex[2].charAt(1))) return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + return hex.join(""); + } + /** + * Converts an RGBA color plus alpha transparency to hex + * + * *Assumes:* r, g, b are contained in the set [0, 255] and a in [0, 1] + * *Returns:* a 4 or 8 character rgba hex + */ + function rgbaToHex(r, g, b, a, allow4Char) { + const hex = [ + pad2(Math.round(r).toString(16)), + pad2(Math.round(g).toString(16)), + pad2(Math.round(b).toString(16)), + pad2(convertDecimalToHex(a)) + ]; + if (allow4Char && hex[0].startsWith(hex[0].charAt(1)) && hex[1].startsWith(hex[1].charAt(1)) && hex[2].startsWith(hex[2].charAt(1)) && hex[3].startsWith(hex[3].charAt(1))) return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0); + return hex.join(""); + } + /** + * Converts CMYK to RBG + * Assumes c, m, y, k are in the set [0, 100] + */ + function cmykToRgb(c, m, y, k) { + const cConv = c / 100; + const mConv = m / 100; + const yConv = y / 100; + const kConv = k / 100; + return { + r: 255 * (1 - cConv) * (1 - kConv), + g: 255 * (1 - mConv) * (1 - kConv), + b: 255 * (1 - yConv) * (1 - kConv) + }; + } + function rgbToCmyk(r, g, b) { + let c = 1 - r / 255; + let m = 1 - g / 255; + let y = 1 - b / 255; + let k = Math.min(c, m, y); + if (k === 1) { + c = 0; + m = 0; + y = 0; + } else { + c = (c - k) / (1 - k) * 100; + m = (m - k) / (1 - k) * 100; + y = (y - k) / (1 - k) * 100; + } + k *= 100; + return { + c: Math.round(c), + m: Math.round(m), + y: Math.round(y), + k: Math.round(k) + }; + } + /** Converts a decimal to a hex value */ + function convertDecimalToHex(d) { + return Math.round(parseFloat(d) * 255).toString(16); + } + /** Converts a hex value to a decimal */ + function convertHexToDecimal(h) { + return parseIntFromHex(h) / 255; + } + /** Parse a base-16 hex value into a base-10 integer */ + function parseIntFromHex(val) { + return parseInt(val, 16); + } + function numberInputToObject(color) { + return { + r: color >> 16, + g: (color & 65280) >> 8, + b: color & 255 + }; + } + +//#endregion +//#region ../../node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/module/css-color-names.js +/** + * @hidden + */ + const names = { + aliceblue: "#f0f8ff", + antiquewhite: "#faebd7", + aqua: "#00ffff", + aquamarine: "#7fffd4", + azure: "#f0ffff", + beige: "#f5f5dc", + bisque: "#ffe4c4", + black: "#000000", + blanchedalmond: "#ffebcd", + blue: "#0000ff", + blueviolet: "#8a2be2", + brown: "#a52a2a", + burlywood: "#deb887", + cadetblue: "#5f9ea0", + chartreuse: "#7fff00", + chocolate: "#d2691e", + coral: "#ff7f50", + cornflowerblue: "#6495ed", + cornsilk: "#fff8dc", + crimson: "#dc143c", + cyan: "#00ffff", + darkblue: "#00008b", + darkcyan: "#008b8b", + darkgoldenrod: "#b8860b", + darkgray: "#a9a9a9", + darkgreen: "#006400", + darkgrey: "#a9a9a9", + darkkhaki: "#bdb76b", + darkmagenta: "#8b008b", + darkolivegreen: "#556b2f", + darkorange: "#ff8c00", + darkorchid: "#9932cc", + darkred: "#8b0000", + darksalmon: "#e9967a", + darkseagreen: "#8fbc8f", + darkslateblue: "#483d8b", + darkslategray: "#2f4f4f", + darkslategrey: "#2f4f4f", + darkturquoise: "#00ced1", + darkviolet: "#9400d3", + deeppink: "#ff1493", + deepskyblue: "#00bfff", + dimgray: "#696969", + dimgrey: "#696969", + dodgerblue: "#1e90ff", + firebrick: "#b22222", + floralwhite: "#fffaf0", + forestgreen: "#228b22", + fuchsia: "#ff00ff", + gainsboro: "#dcdcdc", + ghostwhite: "#f8f8ff", + goldenrod: "#daa520", + gold: "#ffd700", + gray: "#808080", + green: "#008000", + greenyellow: "#adff2f", + grey: "#808080", + honeydew: "#f0fff0", + hotpink: "#ff69b4", + indianred: "#cd5c5c", + indigo: "#4b0082", + ivory: "#fffff0", + khaki: "#f0e68c", + lavenderblush: "#fff0f5", + lavender: "#e6e6fa", + lawngreen: "#7cfc00", + lemonchiffon: "#fffacd", + lightblue: "#add8e6", + lightcoral: "#f08080", + lightcyan: "#e0ffff", + lightgoldenrodyellow: "#fafad2", + lightgray: "#d3d3d3", + lightgreen: "#90ee90", + lightgrey: "#d3d3d3", + lightpink: "#ffb6c1", + lightsalmon: "#ffa07a", + lightseagreen: "#20b2aa", + lightskyblue: "#87cefa", + lightslategray: "#778899", + lightslategrey: "#778899", + lightsteelblue: "#b0c4de", + lightyellow: "#ffffe0", + lime: "#00ff00", + limegreen: "#32cd32", + linen: "#faf0e6", + magenta: "#ff00ff", + maroon: "#800000", + mediumaquamarine: "#66cdaa", + mediumblue: "#0000cd", + mediumorchid: "#ba55d3", + mediumpurple: "#9370db", + mediumseagreen: "#3cb371", + mediumslateblue: "#7b68ee", + mediumspringgreen: "#00fa9a", + mediumturquoise: "#48d1cc", + mediumvioletred: "#c71585", + midnightblue: "#191970", + mintcream: "#f5fffa", + mistyrose: "#ffe4e1", + moccasin: "#ffe4b5", + navajowhite: "#ffdead", + navy: "#000080", + oldlace: "#fdf5e6", + olive: "#808000", + olivedrab: "#6b8e23", + orange: "#ffa500", + orangered: "#ff4500", + orchid: "#da70d6", + palegoldenrod: "#eee8aa", + palegreen: "#98fb98", + paleturquoise: "#afeeee", + palevioletred: "#db7093", + papayawhip: "#ffefd5", + peachpuff: "#ffdab9", + peru: "#cd853f", + pink: "#ffc0cb", + plum: "#dda0dd", + powderblue: "#b0e0e6", + purple: "#800080", + rebeccapurple: "#663399", + red: "#ff0000", + rosybrown: "#bc8f8f", + royalblue: "#4169e1", + saddlebrown: "#8b4513", + salmon: "#fa8072", + sandybrown: "#f4a460", + seagreen: "#2e8b57", + seashell: "#fff5ee", + sienna: "#a0522d", + silver: "#c0c0c0", + skyblue: "#87ceeb", + slateblue: "#6a5acd", + slategray: "#708090", + slategrey: "#708090", + snow: "#fffafa", + springgreen: "#00ff7f", + steelblue: "#4682b4", + tan: "#d2b48c", + teal: "#008080", + thistle: "#d8bfd8", + tomato: "#ff6347", + turquoise: "#40e0d0", + violet: "#ee82ee", + wheat: "#f5deb3", + white: "#ffffff", + whitesmoke: "#f5f5f5", + yellow: "#ffff00", + yellowgreen: "#9acd32" + }; + +//#endregion +//#region ../../node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/module/format-input.js +/** + * Given a string or object, convert that input to RGB + * + * Possible string inputs: + * ``` + * "red" + * "#f00" or "f00" + * "#ff0000" or "ff0000" + * "#ff000000" or "ff000000" + * "rgb 255 0 0" or "rgb (255, 0, 0)" + * "rgb 1.0 0 0" or "rgb (1, 0, 0)" + * "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" + * "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" + * "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" + * "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" + * "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" + * "cmyk(0, 20, 0, 0)" or "cmyk 0 20 0 0" + * ``` + */ + function inputToRGB(color) { + let rgb = { + r: 0, + g: 0, + b: 0 + }; + let a = 1; + let s = null; + let v = null; + let l = null; + let ok = false; + let format = false; + if (typeof color === "string") color = stringInputToObject(color); + if (typeof color === "object") { + if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) { + rgb = rgbToRgb(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; + } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) { + s = convertToPercentage(color.s); + v = convertToPercentage(color.v); + rgb = hsvToRgb(color.h, s, v); + ok = true; + format = "hsv"; + } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) { + s = convertToPercentage(color.s); + l = convertToPercentage(color.l); + rgb = hslToRgb(color.h, s, l); + ok = true; + format = "hsl"; + } else if (isValidCSSUnit(color.c) && isValidCSSUnit(color.m) && isValidCSSUnit(color.y) && isValidCSSUnit(color.k)) { + rgb = cmykToRgb(color.c, color.m, color.y, color.k); + ok = true; + format = "cmyk"; + } + if (Object.prototype.hasOwnProperty.call(color, "a")) a = color.a; + } + a = boundAlpha(a); + return { + ok, + format: color.format || format, + r: Math.min(255, Math.max(rgb.r, 0)), + g: Math.min(255, Math.max(rgb.g, 0)), + b: Math.min(255, Math.max(rgb.b, 0)), + a + }; + } + const CSS_UNIT = "(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)"; + const PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+((?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?))[,|\\s]+((?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?))\\s*\\)?"; + const PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+((?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?))[,|\\s]+((?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?))[,|\\s]+((?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?))\\s*\\)?"; + const matchers = { + CSS_UNIT: new RegExp(CSS_UNIT), + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), + cmyk: new RegExp("cmyk" + PERMISSIVE_MATCH4), + hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + }; + /** + * Permissive string parsing. Take in a number of formats, and output an object + * based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` or `{c, m, y, k}` or `{c, m, y, k, a}` + */ + function stringInputToObject(color) { + color = color.trim().toLowerCase(); + if (color.length === 0) return false; + let named = false; + if (names[color]) { + color = names[color]; + named = true; + } else if (color === "transparent") return { + r: 0, + g: 0, + b: 0, + a: 0, + format: "name" + }; + let match = matchers.rgb.exec(color); + if (match) return { + r: match[1], + g: match[2], + b: match[3] + }; + match = matchers.rgba.exec(color); + if (match) return { + r: match[1], + g: match[2], + b: match[3], + a: match[4] + }; + match = matchers.hsl.exec(color); + if (match) return { + h: match[1], + s: match[2], + l: match[3] + }; + match = matchers.hsla.exec(color); + if (match) return { + h: match[1], + s: match[2], + l: match[3], + a: match[4] + }; + match = matchers.hsv.exec(color); + if (match) return { + h: match[1], + s: match[2], + v: match[3] + }; + match = matchers.hsva.exec(color); + if (match) return { + h: match[1], + s: match[2], + v: match[3], + a: match[4] + }; + match = matchers.cmyk.exec(color); + if (match) return { + c: match[1], + m: match[2], + y: match[3], + k: match[4] + }; + match = matchers.hex8.exec(color); + if (match) return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + a: convertHexToDecimal(match[4]), + format: named ? "name" : "hex8" + }; + match = matchers.hex6.exec(color); + if (match) return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + format: named ? "name" : "hex" + }; + match = matchers.hex4.exec(color); + if (match) return { + r: parseIntFromHex(match[1] + match[1]), + g: parseIntFromHex(match[2] + match[2]), + b: parseIntFromHex(match[3] + match[3]), + a: convertHexToDecimal(match[4] + match[4]), + format: named ? "name" : "hex8" + }; + match = matchers.hex3.exec(color); + if (match) return { + r: parseIntFromHex(match[1] + match[1]), + g: parseIntFromHex(match[2] + match[2]), + b: parseIntFromHex(match[3] + match[3]), + format: named ? "name" : "hex" + }; + return false; + } + /** + * Check to see if it looks like a CSS unit + * (see `matchers` above for definition). + */ + function isValidCSSUnit(color) { + if (typeof color === "number") return !Number.isNaN(color); + return matchers.CSS_UNIT.test(color); + } + +//#endregion +//#region ../../node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/module/index.js + var TinyColor = class TinyColor { + constructor(color = "", opts = {}) { + if (color instanceof TinyColor) return color; + if (typeof color === "number") color = numberInputToObject(color); + this.originalInput = color; + const rgb = inputToRGB(color); + this.originalInput = color; + this.r = rgb.r; + this.g = rgb.g; + this.b = rgb.b; + this.a = rgb.a; + this.roundA = Math.round(100 * this.a) / 100; + this.format = opts.format ?? rgb.format; + this.gradientType = opts.gradientType; + if (this.r < 1) this.r = Math.round(this.r); + if (this.g < 1) this.g = Math.round(this.g); + if (this.b < 1) this.b = Math.round(this.b); + this.isValid = rgb.ok; + } + isDark() { + return this.getBrightness() < 128; + } + isLight() { + return !this.isDark(); + } + /** + * Returns the perceived brightness of the color, from 0-255. + */ + getBrightness() { + const rgb = this.toRgb(); + return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1e3; + } + /** + * Returns the perceived luminance of a color, from 0-1. + */ + getLuminance() { + const rgb = this.toRgb(); + let R; + let G; + let B; + const RsRGB = rgb.r / 255; + const GsRGB = rgb.g / 255; + const BsRGB = rgb.b / 255; + if (RsRGB <= .03928) R = RsRGB / 12.92; + else R = Math.pow((RsRGB + .055) / 1.055, 2.4); + if (GsRGB <= .03928) G = GsRGB / 12.92; + else G = Math.pow((GsRGB + .055) / 1.055, 2.4); + if (BsRGB <= .03928) B = BsRGB / 12.92; + else B = Math.pow((BsRGB + .055) / 1.055, 2.4); + return .2126 * R + .7152 * G + .0722 * B; + } + /** + * Returns the alpha value of a color, from 0-1. + */ + getAlpha() { + return this.a; + } + /** + * Sets the alpha value on the current color. + * + * @param alpha - The new alpha value. The accepted range is 0-1. + */ + setAlpha(alpha) { + this.a = boundAlpha(alpha); + this.roundA = Math.round(100 * this.a) / 100; + return this; + } + /** + * Returns whether the color is monochrome. + */ + isMonochrome() { + const { s } = this.toHsl(); + return s === 0; + } + /** + * Returns the object as a HSVA object. + */ + toHsv() { + const hsv = rgbToHsv(this.r, this.g, this.b); + return { + h: hsv.h * 360, + s: hsv.s, + v: hsv.v, + a: this.a + }; + } + /** + * Returns the hsva values interpolated into a string with the following format: + * "hsva(xxx, xxx, xxx, xx)". + */ + toHsvString() { + const hsv = rgbToHsv(this.r, this.g, this.b); + const h = Math.round(hsv.h * 360); + const s = Math.round(hsv.s * 100); + const v = Math.round(hsv.v * 100); + return this.a === 1 ? `hsv(${h}, ${s}%, ${v}%)` : `hsva(${h}, ${s}%, ${v}%, ${this.roundA})`; + } + /** + * Returns the object as a HSLA object. + */ + toHsl() { + const hsl = rgbToHsl(this.r, this.g, this.b); + return { + h: hsl.h * 360, + s: hsl.s, + l: hsl.l, + a: this.a + }; + } + /** + * Returns the hsla values interpolated into a string with the following format: + * "hsla(xxx, xxx, xxx, xx)". + */ + toHslString() { + const hsl = rgbToHsl(this.r, this.g, this.b); + const h = Math.round(hsl.h * 360); + const s = Math.round(hsl.s * 100); + const l = Math.round(hsl.l * 100); + return this.a === 1 ? `hsl(${h}, ${s}%, ${l}%)` : `hsla(${h}, ${s}%, ${l}%, ${this.roundA})`; + } + /** + * Returns the hex value of the color. + * @param allow3Char will shorten hex value to 3 char if possible + */ + toHex(allow3Char = false) { + return rgbToHex(this.r, this.g, this.b, allow3Char); + } + /** + * Returns the hex value of the color -with a # prefixed. + * @param allow3Char will shorten hex value to 3 char if possible + */ + toHexString(allow3Char = false) { + return "#" + this.toHex(allow3Char); + } + /** + * Returns the hex 8 value of the color. + * @param allow4Char will shorten hex value to 4 char if possible + */ + toHex8(allow4Char = false) { + return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char); + } + /** + * Returns the hex 8 value of the color -with a # prefixed. + * @param allow4Char will shorten hex value to 4 char if possible + */ + toHex8String(allow4Char = false) { + return "#" + this.toHex8(allow4Char); + } + /** + * Returns the shorter hex value of the color depends on its alpha -with a # prefixed. + * @param allowShortChar will shorten hex value to 3 or 4 char if possible + */ + toHexShortString(allowShortChar = false) { + return this.a === 1 ? this.toHexString(allowShortChar) : this.toHex8String(allowShortChar); + } + /** + * Returns the object as a RGBA object. + */ + toRgb() { + return { + r: Math.round(this.r), + g: Math.round(this.g), + b: Math.round(this.b), + a: this.a + }; + } + /** + * Returns the RGBA values interpolated into a string with the following format: + * "RGBA(xxx, xxx, xxx, xx)". + */ + toRgbString() { + const r = Math.round(this.r); + const g = Math.round(this.g); + const b = Math.round(this.b); + return this.a === 1 ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${this.roundA})`; + } + /** + * Returns the object as a RGBA object. + */ + toPercentageRgb() { + const fmt = (x) => `${Math.round(bound01(x, 255) * 100)}%`; + return { + r: fmt(this.r), + g: fmt(this.g), + b: fmt(this.b), + a: this.a + }; + } + /** + * Returns the RGBA relative values interpolated into a string + */ + toPercentageRgbString() { + const rnd = (x) => Math.round(bound01(x, 255) * 100); + return this.a === 1 ? `rgb(${rnd(this.r)}%, ${rnd(this.g)}%, ${rnd(this.b)}%)` : `rgba(${rnd(this.r)}%, ${rnd(this.g)}%, ${rnd(this.b)}%, ${this.roundA})`; + } + toCmyk() { + return { ...rgbToCmyk(this.r, this.g, this.b) }; + } + toCmykString() { + const { c, m, y, k } = rgbToCmyk(this.r, this.g, this.b); + return `cmyk(${c}, ${m}, ${y}, ${k})`; + } + /** + * The 'real' name of the color -if there is one. + */ + toName() { + if (this.a === 0) return "transparent"; + if (this.a < 1) return false; + const hex = "#" + rgbToHex(this.r, this.g, this.b, false); + for (const [key, value] of Object.entries(names)) if (hex === value) return key; + return false; + } + toString(format) { + const formatSet = Boolean(format); + format = format ?? this.format; + let formattedString = false; + const hasAlpha = this.a < 1 && this.a >= 0; + if (!formatSet && hasAlpha && (format.startsWith("hex") || format === "name")) { + if (format === "name" && this.a === 0) return this.toName(); + return this.toRgbString(); + } + if (format === "rgb") formattedString = this.toRgbString(); + if (format === "prgb") formattedString = this.toPercentageRgbString(); + if (format === "hex" || format === "hex6") formattedString = this.toHexString(); + if (format === "hex3") formattedString = this.toHexString(true); + if (format === "hex4") formattedString = this.toHex8String(true); + if (format === "hex8") formattedString = this.toHex8String(); + if (format === "name") formattedString = this.toName(); + if (format === "hsl") formattedString = this.toHslString(); + if (format === "hsv") formattedString = this.toHsvString(); + if (format === "cmyk") formattedString = this.toCmykString(); + return formattedString || this.toHexString(); + } + toNumber() { + return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b); + } + clone() { + return new TinyColor(this.toString()); + } + /** + * Lighten the color a given amount. Providing 100 will always return white. + * @param amount - valid between 1-100 + */ + lighten(amount = 10) { + const hsl = this.toHsl(); + hsl.l += amount / 100; + hsl.l = clamp01(hsl.l); + return new TinyColor(hsl); + } + /** + * Brighten the color a given amount, from 0 to 100. + * @param amount - valid between 1-100 + */ + brighten(amount = 10) { + const rgb = this.toRgb(); + rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100)))); + rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100)))); + rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100)))); + return new TinyColor(rgb); + } + /** + * Darken the color a given amount, from 0 to 100. + * Providing 100 will always return black. + * @param amount - valid between 1-100 + */ + darken(amount = 10) { + const hsl = this.toHsl(); + hsl.l -= amount / 100; + hsl.l = clamp01(hsl.l); + return new TinyColor(hsl); + } + /** + * Mix the color with pure white, from 0 to 100. + * Providing 0 will do nothing, providing 100 will always return white. + * @param amount - valid between 1-100 + */ + tint(amount = 10) { + return this.mix("white", amount); + } + /** + * Mix the color with pure black, from 0 to 100. + * Providing 0 will do nothing, providing 100 will always return black. + * @param amount - valid between 1-100 + */ + shade(amount = 10) { + return this.mix("black", amount); + } + /** + * Desaturate the color a given amount, from 0 to 100. + * Providing 100 will is the same as calling greyscale + * @param amount - valid between 1-100 + */ + desaturate(amount = 10) { + const hsl = this.toHsl(); + hsl.s -= amount / 100; + hsl.s = clamp01(hsl.s); + return new TinyColor(hsl); + } + /** + * Saturate the color a given amount, from 0 to 100. + * @param amount - valid between 1-100 + */ + saturate(amount = 10) { + const hsl = this.toHsl(); + hsl.s += amount / 100; + hsl.s = clamp01(hsl.s); + return new TinyColor(hsl); + } + /** + * Completely desaturates a color into greyscale. + * Same as calling `desaturate(100)` + */ + greyscale() { + return this.desaturate(100); + } + /** + * Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. + * Values outside of this range will be wrapped into this range. + */ + spin(amount) { + const hsl = this.toHsl(); + const hue = (hsl.h + amount) % 360; + hsl.h = hue < 0 ? 360 + hue : hue; + return new TinyColor(hsl); + } + /** + * Mix the current color a given amount with another color, from 0 to 100. + * 0 means no mixing (return current color). + */ + mix(color, amount = 50) { + const rgb1 = this.toRgb(); + const rgb2 = new TinyColor(color).toRgb(); + const p = amount / 100; + return new TinyColor({ + r: (rgb2.r - rgb1.r) * p + rgb1.r, + g: (rgb2.g - rgb1.g) * p + rgb1.g, + b: (rgb2.b - rgb1.b) * p + rgb1.b, + a: (rgb2.a - rgb1.a) * p + rgb1.a + }); + } + analogous(results = 6, slices = 30) { + const hsl = this.toHsl(); + const part = 360 / slices; + const ret = [this]; + for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) { + hsl.h = (hsl.h + part) % 360; + ret.push(new TinyColor(hsl)); + } + return ret; + } + /** + * taken from https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js + */ + complement() { + const hsl = this.toHsl(); + hsl.h = (hsl.h + 180) % 360; + return new TinyColor(hsl); + } + monochromatic(results = 6) { + const hsv = this.toHsv(); + const { h } = hsv; + const { s } = hsv; + let { v } = hsv; + const res = []; + const modification = 1 / results; + while (results--) { + res.push(new TinyColor({ + h, + s, + v + })); + v = (v + modification) % 1; + } + return res; + } + splitcomplement() { + const hsl = this.toHsl(); + const { h } = hsl; + return [ + this, + new TinyColor({ + h: (h + 72) % 360, + s: hsl.s, + l: hsl.l + }), + new TinyColor({ + h: (h + 216) % 360, + s: hsl.s, + l: hsl.l + }) + ]; + } + /** + * Compute how the color would appear on a background + */ + onBackground(background) { + const fg = this.toRgb(); + const bg = new TinyColor(background).toRgb(); + const alpha = fg.a + bg.a * (1 - fg.a); + return new TinyColor({ + r: (fg.r * fg.a + bg.r * bg.a * (1 - fg.a)) / alpha, + g: (fg.g * fg.a + bg.g * bg.a * (1 - fg.a)) / alpha, + b: (fg.b * fg.a + bg.b * bg.a * (1 - fg.a)) / alpha, + a: alpha + }); + } + /** + * Alias for `polyad(3)` + */ + triad() { + return this.polyad(3); + } + /** + * Alias for `polyad(4)` + */ + tetrad() { + return this.polyad(4); + } + /** + * Get polyad colors, like (for 1, 2, 3, 4, 5, 6, 7, 8, etc...) + * monad, dyad, triad, tetrad, pentad, hexad, heptad, octad, etc... + */ + polyad(n) { + const hsl = this.toHsl(); + const { h } = hsl; + const result = [this]; + const increment = 360 / n; + for (let i = 1; i < n; i++) result.push(new TinyColor({ + h: (h + i * increment) % 360, + s: hsl.s, + l: hsl.l + })); + return result; + } + /** + * compare color vs current color + */ + equals(color) { + const comparedColor = new TinyColor(color); + /** + * RGB and CMYK do not have the same color gamut, so a CMYK conversion will never be 100%. + * This means we need to compare CMYK to CMYK to ensure accuracy of the equals function. + */ + if (this.format === "cmyk" || comparedColor.format === "cmyk") return this.toCmykString() === comparedColor.toCmykString(); + return this.toRgbString() === comparedColor.toRgbString(); + } + }; + +//#endregion +//#region ../../packages/components/button/src/button-custom.ts + function darken(color, amount = 20) { + return color.mix("#141414", amount).toString(); + } + function useButtonCustomStyle(props) { + const _disabled = useFormDisabled(); + const ns = useNamespace("button"); + return (0, vue.computed)(() => { + let styles = {}; + let buttonColor = props.color; + if (buttonColor) { + const match = buttonColor.match(/var\((.*?)\)/); + if (match) buttonColor = window.getComputedStyle(window.document.documentElement).getPropertyValue(match[1]); + const color = new TinyColor(buttonColor); + const activeBgColor = props.dark ? color.tint(20).toString() : darken(color, 20); + if (props.plain) { + styles = ns.cssVarBlock({ + "bg-color": props.dark ? darken(color, 90) : color.tint(90).toString(), + "text-color": buttonColor, + "border-color": props.dark ? darken(color, 50) : color.tint(50).toString(), + "hover-text-color": `var(${ns.cssVarName("color-white")})`, + "hover-bg-color": buttonColor, + "hover-border-color": buttonColor, + "active-bg-color": activeBgColor, + "active-text-color": `var(${ns.cssVarName("color-white")})`, + "active-border-color": activeBgColor + }); + if (_disabled.value) { + styles[ns.cssVarBlockName("disabled-bg-color")] = props.dark ? darken(color, 90) : color.tint(90).toString(); + styles[ns.cssVarBlockName("disabled-text-color")] = props.dark ? darken(color, 50) : color.tint(50).toString(); + styles[ns.cssVarBlockName("disabled-border-color")] = props.dark ? darken(color, 80) : color.tint(80).toString(); + } + } else if (props.link || props.text) { + const hoverColor = props.dark ? darken(color, 30) : color.tint(30).toString(); + styles = ns.cssVarBlock({ + "text-color": buttonColor, + "hover-text-color": hoverColor, + "active-text-color": activeBgColor + }); + if (props.link) { + styles[ns.cssVarBlockName("hover-link-text-color")] = hoverColor; + styles[ns.cssVarBlockName("active-color")] = activeBgColor; + } + if (_disabled.value) { + const disabledColor = props.dark ? darken(color, 50) : color.tint(50).toString(); + styles[ns.cssVarBlockName("disabled-bg-color")] = "transparent"; + styles[ns.cssVarBlockName("disabled-text-color")] = disabledColor; + styles[ns.cssVarBlockName("disabled-border-color")] = "transparent"; + } + } else { + const hoverBgColor = props.dark ? darken(color, 30) : color.tint(30).toString(); + const textColor = color.isDark() ? `var(${ns.cssVarName("color-white")})` : `var(${ns.cssVarName("color-black")})`; + styles = ns.cssVarBlock({ + "bg-color": buttonColor, + "text-color": textColor, + "border-color": buttonColor, + "hover-bg-color": hoverBgColor, + "hover-text-color": textColor, + "hover-border-color": hoverBgColor, + "active-bg-color": activeBgColor, + "active-border-color": activeBgColor + }); + if (_disabled.value) { + const disabledButtonColor = props.dark ? darken(color, 50) : color.tint(50).toString(); + styles[ns.cssVarBlockName("disabled-bg-color")] = disabledButtonColor; + styles[ns.cssVarBlockName("disabled-text-color")] = props.dark ? "rgba(255, 255, 255, 0.5)" : `var(${ns.cssVarName("color-white")})`; + styles[ns.cssVarBlockName("disabled-border-color")] = disabledButtonColor; + } + } + } + return styles; + }); + } + +//#endregion +//#region ../../packages/components/button/src/button.vue?vue&type=script&setup=true&lang.ts + var button_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElButton", + __name: "button", + props: buttonProps, + emits: buttonEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const buttonStyle = useButtonCustomStyle(props); + const ns = useNamespace("button"); + const { _ref, _size, _type, _disabled, _props, _plain, _round, _text, _dashed, shouldAddSpace, handleClick } = useButton(props, emit); + const buttonKls = (0, vue.computed)(() => [ + ns.b(), + ns.m(_type.value), + ns.m(_size.value), + ns.is("disabled", _disabled.value), + ns.is("loading", props.loading), + ns.is("plain", _plain.value), + ns.is("round", _round.value), + ns.is("circle", props.circle), + ns.is("text", _text.value), + ns.is("dashed", _dashed.value), + ns.is("link", props.link), + ns.is("has-bg", props.bg) + ]); + __expose({ + ref: _ref, + size: _size, + type: _type, + disabled: _disabled, + shouldAddSpace + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.tag), (0, vue.mergeProps)({ + ref_key: "_ref", + ref: _ref + }, (0, vue.unref)(_props), { + class: buttonKls.value, + style: (0, vue.unref)(buttonStyle), + onClick: (0, vue.unref)(handleClick) + }), { + default: (0, vue.withCtx)(() => [__props.loading ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [_ctx.$slots.loading ? (0, vue.renderSlot)(_ctx.$slots, "loading", { key: 0 }) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).is("loading")) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.loadingIcon)))]), + _: 1 + }, 8, ["class"]))], 64)) : __props.icon || _ctx.$slots.icon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { key: 1 }, { + default: (0, vue.withCtx)(() => [__props.icon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.icon), { key: 0 })) : (0, vue.renderSlot)(_ctx.$slots, "icon", { key: 1 })]), + _: 3 + })) : (0, vue.createCommentVNode)("v-if", true), _ctx.$slots.default ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 2, + class: (0, vue.normalizeClass)({ [(0, vue.unref)(ns).em("text", "expand")]: (0, vue.unref)(shouldAddSpace) }) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2)) : (0, vue.createCommentVNode)("v-if", true)]), + _: 3 + }, 16, [ + "class", + "style", + "onClick" + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/button/src/button.vue + var button_default$1 = button_vue_vue_type_script_setup_true_lang_default$1; + +//#endregion +//#region ../../packages/components/button/src/button-group.ts +/** + * @deprecated Removed after 3.0.0, Use `ButtonGroupProps` instead. + */ + const buttonGroupProps = { + size: buttonProps.size, + type: buttonProps.type, + direction: { + type: definePropType(String), + values: ["horizontal", "vertical"], + default: "horizontal" + } + }; + +//#endregion +//#region ../../packages/components/button/src/button-group.vue?vue&type=script&setup=true&lang.ts + var button_group_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElButtonGroup", + __name: "button-group", + props: buttonGroupProps, + setup(__props) { + const props = __props; + (0, vue.provide)(buttonGroupContextKey, (0, vue.reactive)({ + size: (0, vue.toRef)(props, "size"), + type: (0, vue.toRef)(props, "type") + })); + const ns = useNamespace("button"); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).b("group"), (0, vue.unref)(ns).bm("group", props.direction)]) }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/button/src/button-group.vue + var button_group_default = button_group_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/button/index.ts + const ElButton = withInstall(button_default$1, { ButtonGroup: button_group_default }); + const ElButtonGroup = withNoopInstall(button_group_default); + +//#endregion +//#region ../../packages/components/calendar/src/calendar.ts + const isValidRange$1 = (range) => isArray$1(range) && range.length === 2 && range.every((item) => isDate(item)); + /** + * @deprecated Removed after 3.0.0, Use `CalendarProps` instead. + */ + const calendarProps = buildProps({ + modelValue: { type: Date }, + range: { + type: definePropType(Array), + validator: isValidRange$1 + }, + controllerType: { + type: String, + values: ["button", "select"], + default: "button" + }, + formatter: { type: definePropType(Function) } + }); + const calendarEmits = { + [UPDATE_MODEL_EVENT]: (value) => isDate(value), + [INPUT_EVENT]: (value) => isDate(value) + }; + +//#endregion +//#region ../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/dayjs.min.js + var require_dayjs_min = /* @__PURE__ */ __commonJSMin(((exports, module) => { + (function(t, e) { + "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).dayjs = e(); + })(exports, (function() { + "use strict"; + var t = 1e3, e = 6e4, n = 36e5, r = "millisecond", i = "second", s = "minute", u = "hour", a = "day", o = "week", c = "month", f = "quarter", h = "year", d = "date", l = "Invalid Date", $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M = { + name: "en", + weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + ordinal: function(t) { + var e = [ + "th", + "st", + "nd", + "rd" + ], n = t % 100; + return "[" + t + (e[(n - 20) % 10] || e[n] || e[0]) + "]"; + } + }, m = function(t, e, n) { + var r = String(t); + return !r || r.length >= e ? t : "" + Array(e + 1 - r.length).join(n) + t; + }, v = { + s: m, + z: function(t) { + var e = -t.utcOffset(), n = Math.abs(e), r = Math.floor(n / 60), i = n % 60; + return (e <= 0 ? "+" : "-") + m(r, 2, "0") + ":" + m(i, 2, "0"); + }, + m: function t(e, n) { + if (e.date() < n.date()) return -t(n, e); + var r = 12 * (n.year() - e.year()) + (n.month() - e.month()), i = e.clone().add(r, c), s = n - i < 0, u = e.clone().add(r + (s ? -1 : 1), c); + return +(-(r + (n - i) / (s ? i - u : u - i)) || 0); + }, + a: function(t) { + return t < 0 ? Math.ceil(t) || 0 : Math.floor(t); + }, + p: function(t) { + return { + M: c, + y: h, + w: o, + d: a, + D: d, + h: u, + m: s, + s: i, + ms: r, + Q: f + }[t] || String(t || "").toLowerCase().replace(/s$/, ""); + }, + u: function(t) { + return void 0 === t; + } + }, g = "en", D = {}; + D[g] = M; + var p = "$isDayjsObject", S = function(t) { + return t instanceof _ || !(!t || !t[p]); + }, w = function t(e, n, r) { + var i; + if (!e) return g; + if ("string" == typeof e) { + var s = e.toLowerCase(); + D[s] && (i = s), n && (D[s] = n, i = s); + var u = e.split("-"); + if (!i && u.length > 1) return t(u[0]); + } else { + var a = e.name; + D[a] = e, i = a; + } + return !r && i && (g = i), i || !r && g; + }, O = function(t, e) { + if (S(t)) return t.clone(); + var n = "object" == typeof e ? e : {}; + return n.date = t, n.args = arguments, new _(n); + }, b = v; + b.l = w, b.i = S, b.w = function(t, e) { + return O(t, { + locale: e.$L, + utc: e.$u, + x: e.$x, + $offset: e.$offset + }); + }; + var _ = function() { + function M(t) { + this.$L = w(t.locale, null, !0), this.parse(t), this.$x = this.$x || t.x || {}, this[p] = !0; + } + var m = M.prototype; + return m.parse = function(t) { + this.$d = function(t) { + var e = t.date, n = t.utc; + if (null === e) return /* @__PURE__ */ new Date(NaN); + if (b.u(e)) return /* @__PURE__ */ new Date(); + if (e instanceof Date) return new Date(e); + if ("string" == typeof e && !/Z$/i.test(e)) { + var r = e.match($); + if (r) { + var i = r[2] - 1 || 0, s = (r[7] || "0").substring(0, 3); + return n ? new Date(Date.UTC(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s)) : new Date(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s); + } + } + return new Date(e); + }(t), this.init(); + }, m.init = function() { + var t = this.$d; + this.$y = t.getFullYear(), this.$M = t.getMonth(), this.$D = t.getDate(), this.$W = t.getDay(), this.$H = t.getHours(), this.$m = t.getMinutes(), this.$s = t.getSeconds(), this.$ms = t.getMilliseconds(); + }, m.$utils = function() { + return b; + }, m.isValid = function() { + return !(this.$d.toString() === l); + }, m.isSame = function(t, e) { + var n = O(t); + return this.startOf(e) <= n && n <= this.endOf(e); + }, m.isAfter = function(t, e) { + return O(t) < this.startOf(e); + }, m.isBefore = function(t, e) { + return this.endOf(e) < O(t); + }, m.$g = function(t, e, n) { + return b.u(t) ? this[e] : this.set(n, t); + }, m.unix = function() { + return Math.floor(this.valueOf() / 1e3); + }, m.valueOf = function() { + return this.$d.getTime(); + }, m.startOf = function(t, e) { + var n = this, r = !!b.u(e) || e, f = b.p(t), l = function(t, e) { + var i = b.w(n.$u ? Date.UTC(n.$y, e, t) : new Date(n.$y, e, t), n); + return r ? i : i.endOf(a); + }, $ = function(t, e) { + return b.w(n.toDate()[t].apply(n.toDate("s"), (r ? [ + 0, + 0, + 0, + 0 + ] : [ + 23, + 59, + 59, + 999 + ]).slice(e)), n); + }, y = this.$W, M = this.$M, m = this.$D, v = "set" + (this.$u ? "UTC" : ""); + switch (f) { + case h: return r ? l(1, 0) : l(31, 11); + case c: return r ? l(1, M) : l(0, M + 1); + case o: + var g = this.$locale().weekStart || 0, D = (y < g ? y + 7 : y) - g; + return l(r ? m - D : m + (6 - D), M); + case a: + case d: return $(v + "Hours", 0); + case u: return $(v + "Minutes", 1); + case s: return $(v + "Seconds", 2); + case i: return $(v + "Milliseconds", 3); + default: return this.clone(); + } + }, m.endOf = function(t) { + return this.startOf(t, !1); + }, m.$set = function(t, e) { + var n, o = b.p(t), f = "set" + (this.$u ? "UTC" : ""), l = (n = {}, n[a] = f + "Date", n[d] = f + "Date", n[c] = f + "Month", n[h] = f + "FullYear", n[u] = f + "Hours", n[s] = f + "Minutes", n[i] = f + "Seconds", n[r] = f + "Milliseconds", n)[o], $ = o === a ? this.$D + (e - this.$W) : e; + if (o === c || o === h) { + var y = this.clone().set(d, 1); + y.$d[l]($), y.init(), this.$d = y.set(d, Math.min(this.$D, y.daysInMonth())).$d; + } else l && this.$d[l]($); + return this.init(), this; + }, m.set = function(t, e) { + return this.clone().$set(t, e); + }, m.get = function(t) { + return this[b.p(t)](); + }, m.add = function(r, f) { + var d, l = this; + r = Number(r); + var $ = b.p(f), y = function(t) { + var e = O(l); + return b.w(e.date(e.date() + Math.round(t * r)), l); + }; + if ($ === c) return this.set(c, this.$M + r); + if ($ === h) return this.set(h, this.$y + r); + if ($ === a) return y(1); + if ($ === o) return y(7); + var M = (d = {}, d[s] = e, d[u] = n, d[i] = t, d)[$] || 1, m = this.$d.getTime() + r * M; + return b.w(m, this); + }, m.subtract = function(t, e) { + return this.add(-1 * t, e); + }, m.format = function(t) { + var e = this, n = this.$locale(); + if (!this.isValid()) return n.invalidDate || l; + var r = t || "YYYY-MM-DDTHH:mm:ssZ", i = b.z(this), s = this.$H, u = this.$m, a = this.$M, o = n.weekdays, c = n.months, f = n.meridiem, h = function(t, n, i, s) { + return t && (t[n] || t(e, r)) || i[n].slice(0, s); + }, d = function(t) { + return b.s(s % 12 || 12, t, "0"); + }, $ = f || function(t, e, n) { + var r = t < 12 ? "AM" : "PM"; + return n ? r.toLowerCase() : r; + }; + return r.replace(y, (function(t, r) { + return r || function(t) { + switch (t) { + case "YY": return String(e.$y).slice(-2); + case "YYYY": return b.s(e.$y, 4, "0"); + case "M": return a + 1; + case "MM": return b.s(a + 1, 2, "0"); + case "MMM": return h(n.monthsShort, a, c, 3); + case "MMMM": return h(c, a); + case "D": return e.$D; + case "DD": return b.s(e.$D, 2, "0"); + case "d": return String(e.$W); + case "dd": return h(n.weekdaysMin, e.$W, o, 2); + case "ddd": return h(n.weekdaysShort, e.$W, o, 3); + case "dddd": return o[e.$W]; + case "H": return String(s); + case "HH": return b.s(s, 2, "0"); + case "h": return d(1); + case "hh": return d(2); + case "a": return $(s, u, !0); + case "A": return $(s, u, !1); + case "m": return String(u); + case "mm": return b.s(u, 2, "0"); + case "s": return String(e.$s); + case "ss": return b.s(e.$s, 2, "0"); + case "SSS": return b.s(e.$ms, 3, "0"); + case "Z": return i; + } + return null; + }(t) || i.replace(":", ""); + })); + }, m.utcOffset = function() { + return 15 * -Math.round(this.$d.getTimezoneOffset() / 15); + }, m.diff = function(r, d, l) { + var $, y = this, M = b.p(d), m = O(r), v = (m.utcOffset() - this.utcOffset()) * e, g = this - m, D = function() { + return b.m(y, m); + }; + switch (M) { + case h: + $ = D() / 12; + break; + case c: + $ = D(); + break; + case f: + $ = D() / 3; + break; + case o: + $ = (g - v) / 6048e5; + break; + case a: + $ = (g - v) / 864e5; + break; + case u: + $ = g / n; + break; + case s: + $ = g / e; + break; + case i: + $ = g / t; + break; + default: $ = g; + } + return l ? $ : b.a($); + }, m.daysInMonth = function() { + return this.endOf(c).$D; + }, m.$locale = function() { + return D[this.$L]; + }, m.locale = function(t, e) { + if (!t) return this.$L; + var n = this.clone(), r = w(t, e, !0); + return r && (n.$L = r), n; + }, m.clone = function() { + return b.w(this.$d, this); + }, m.toDate = function() { + return new Date(this.valueOf()); + }, m.toJSON = function() { + return this.isValid() ? this.toISOString() : null; + }, m.toISOString = function() { + return this.$d.toISOString(); + }, m.toString = function() { + return this.$d.toUTCString(); + }, M; + }(), k = _.prototype; + return O.prototype = k, [ + ["$ms", r], + ["$s", i], + ["$m", s], + ["$H", u], + ["$W", a], + ["$M", c], + ["$y", h], + ["$D", d] + ].forEach((function(t) { + k[t[1]] = function(e) { + return this.$g(e, t[0], t[1]); + }; + })), O.extend = function(t, e) { + return t.$i || (t(e, _, O), t.$i = !0), O; + }, O.locale = w, O.isDayjs = S, O.unix = function(t) { + return O(1e3 * t); + }, O.en = D[g], O.Ls = D, O.p = {}, O; + })); + })); + +//#endregion +//#region ../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/customParseFormat.js + var require_customParseFormat = /* @__PURE__ */ __commonJSMin(((exports, module) => { + (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).dayjs_plugin_customParseFormat = t(); + })(exports, (function() { + "use strict"; + var e = { + LTS: "h:mm:ss A", + LT: "h:mm A", + L: "MM/DD/YYYY", + LL: "MMMM D, YYYY", + LLL: "MMMM D, YYYY h:mm A", + LLLL: "dddd, MMMM D, YYYY h:mm A" + }, t = /(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g, n = /\d/, r = /\d\d/, i = /\d\d?/, o = /\d*[^-_:/,()\s\d]+/, s = {}, a = function(e) { + return (e = +e) + (e > 68 ? 1900 : 2e3); + }; + var f = function(e) { + return function(t) { + this[e] = +t; + }; + }, h = [/[+-]\d\d:?(\d\d)?|Z/, function(e) { + (this.zone || (this.zone = {})).offset = function(e) { + if (!e) return 0; + if ("Z" === e) return 0; + var t = e.match(/([+-]|\d\d)/g), n = 60 * t[1] + (+t[2] || 0); + return 0 === n ? 0 : "+" === t[0] ? -n : n; + }(e); + }], u = function(e) { + var t = s[e]; + return t && (t.indexOf ? t : t.s.concat(t.f)); + }, d = function(e, t) { + var n, r = s.meridiem; + if (r) { + for (var i = 1; i <= 24; i += 1) if (e.indexOf(r(i, 0, t)) > -1) { + n = i > 12; + break; + } + } else n = e === (t ? "pm" : "PM"); + return n; + }, c = { + A: [o, function(e) { + this.afternoon = d(e, !1); + }], + a: [o, function(e) { + this.afternoon = d(e, !0); + }], + Q: [n, function(e) { + this.month = 3 * (e - 1) + 1; + }], + S: [n, function(e) { + this.milliseconds = 100 * +e; + }], + SS: [r, function(e) { + this.milliseconds = 10 * +e; + }], + SSS: [/\d{3}/, function(e) { + this.milliseconds = +e; + }], + s: [i, f("seconds")], + ss: [i, f("seconds")], + m: [i, f("minutes")], + mm: [i, f("minutes")], + H: [i, f("hours")], + h: [i, f("hours")], + HH: [i, f("hours")], + hh: [i, f("hours")], + D: [i, f("day")], + DD: [r, f("day")], + Do: [o, function(e) { + var t = s.ordinal; + if (this.day = e.match(/\d+/)[0], t) for (var r = 1; r <= 31; r += 1) t(r).replace(/\[|\]/g, "") === e && (this.day = r); + }], + w: [i, f("week")], + ww: [r, f("week")], + M: [i, f("month")], + MM: [r, f("month")], + MMM: [o, function(e) { + var t = u("months"), n = (u("monthsShort") || t.map((function(e) { + return e.slice(0, 3); + }))).indexOf(e) + 1; + if (n < 1) throw new Error(); + this.month = n % 12 || n; + }], + MMMM: [o, function(e) { + var t = u("months").indexOf(e) + 1; + if (t < 1) throw new Error(); + this.month = t % 12 || t; + }], + Y: [/[+-]?\d+/, f("year")], + YY: [r, function(e) { + this.year = a(e); + }], + YYYY: [/\d{4}/, f("year")], + Z: h, + ZZ: h + }; + function l(n) { + var r = n, i = s && s.formats; + for (var o = (n = r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, (function(t, n, r) { + var o = r && r.toUpperCase(); + return n || i[r] || e[r] || i[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, (function(e, t, n) { + return t || n.slice(1); + })); + }))).match(t), a = o.length, f = 0; f < a; f += 1) { + var h = o[f], u = c[h], d = u && u[0], l = u && u[1]; + o[f] = l ? { + regex: d, + parser: l + } : h.replace(/^\[|\]$/g, ""); + } + return function(e) { + for (var t = {}, n = 0, r = 0; n < a; n += 1) { + var i = o[n]; + if ("string" == typeof i) r += i.length; + else { + var s = i.regex, f = i.parser, h = e.slice(r), u = s.exec(h)[0]; + f.call(t, u), e = e.replace(u, ""); + } + } + return function(e) { + var t = e.afternoon; + if (void 0 !== t) { + var n = e.hours; + t ? n < 12 && (e.hours += 12) : 12 === n && (e.hours = 0), delete e.afternoon; + } + }(t), t; + }; + } + return function(e, t, n) { + n.p.customParseFormat = !0, e && e.parseTwoDigitYear && (a = e.parseTwoDigitYear); + var r = t.prototype, i = r.parse; + r.parse = function(e) { + var t = e.date, r = e.utc, o = e.args; + this.$u = r; + var a = o[1]; + if ("string" == typeof a) { + var f = !0 === o[2], h = !0 === o[3], u = f || h, d = o[2]; + h && (d = o[2]), s = this.$locale(), !f && d && (s = n.Ls[d]), this.$d = function(e, t, n, r) { + try { + if (["x", "X"].indexOf(t) > -1) return /* @__PURE__ */ new Date(("X" === t ? 1e3 : 1) * e); + var i = l(t)(e), o = i.year, s = i.month, a = i.day, f = i.hours, h = i.minutes, u = i.seconds, d = i.milliseconds, c = i.zone, m = i.week, M = /* @__PURE__ */ new Date(), Y = a || (o || s ? 1 : M.getDate()), p = o || M.getFullYear(), v = 0; + o && !s || (v = s > 0 ? s - 1 : M.getMonth()); + var D, w = f || 0, g = h || 0, y = u || 0, L = d || 0; + return c ? new Date(Date.UTC(p, v, Y, w, g, y, L + 60 * c.offset * 1e3)) : n ? new Date(Date.UTC(p, v, Y, w, g, y, L)) : (D = new Date(p, v, Y, w, g, y, L), m && (D = r(D).week(m).toDate()), D); + } catch (e) { + return /* @__PURE__ */ new Date(""); + } + }(t, a, r, n), this.init(), d && !0 !== d && (this.$L = this.locale(d).$L), u && t != this.format(a) && (this.$d = /* @__PURE__ */ new Date("")), s = {}; + } else if (a instanceof Array) for (var c = a.length, m = 1; m <= c; m += 1) { + o[1] = a[m - 1]; + var M = n.apply(this, o); + if (M.isValid()) { + this.$d = M.$d, this.$L = M.$L, this.init(); + break; + } + m === c && (this.$d = /* @__PURE__ */ new Date("")); + } + else i.call(this, e); + }; + }; + })); + })); + +//#endregion +//#region ../../packages/components/time-picker/src/constants.ts +var import_customParseFormat = /* @__PURE__ */ __toESM(require_customParseFormat()); +var import_dayjs_min = /* @__PURE__ */ __toESM(require_dayjs_min()); + const timeUnits = [ + "hours", + "minutes", + "seconds" + ]; + const PICKER_BASE_INJECTION_KEY = "EP_PICKER_BASE"; + const PICKER_POPPER_OPTIONS_INJECTION_KEY = "ElPopperOptions"; + const ROOT_COMMON_PICKER_INJECTION_KEY = Symbol("commonPickerContextKey"); + const DEFAULT_FORMATS_TIME = "HH:mm:ss"; + const DEFAULT_FORMATS_DATE = "YYYY-MM-DD"; + const DEFAULT_FORMATS_DATEPICKER = { + date: DEFAULT_FORMATS_DATE, + dates: DEFAULT_FORMATS_DATE, + week: "gggg[w]ww", + year: "YYYY", + years: "YYYY", + month: "YYYY-MM", + months: "YYYY-MM", + datetime: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}`, + monthrange: "YYYY-MM", + yearrange: "YYYY", + daterange: DEFAULT_FORMATS_DATE, + datetimerange: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}` + }; + +//#endregion +//#region ../../packages/components/time-picker/src/utils.ts + const buildTimeList = (value, bound) => { + return [ + value > 0 ? value - 1 : void 0, + value, + value < bound ? value + 1 : void 0 + ]; + }; + const rangeArr = (n) => Array.from(Array.from({ length: n }).keys()); + const extractDateFormat = (format) => { + return format.replace(/\W?m{1,2}|\W?ZZ/g, "").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi, "").trim(); + }; + const extractTimeFormat = (format) => { + return format.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g, "").trim(); + }; + const dateEquals = function(a, b) { + const aIsDate = isDate(a); + const bIsDate = isDate(b); + if (aIsDate && bIsDate) return a.getTime() === b.getTime(); + if (!aIsDate && !bIsDate) return a === b; + return false; + }; + const valueEquals = function(a, b) { + const aIsArray = isArray$1(a); + const bIsArray = isArray$1(b); + if (aIsArray && bIsArray) { + if (a.length !== b.length) return false; + return a.every((item, index) => dateEquals(item, b[index])); + } + if (!aIsArray && !bIsArray) return dateEquals(a, b); + return false; + }; + const parseDate = function(date, format, lang) { + const day = isEmpty(format) || format === "x" ? (0, import_dayjs_min.default)(date).locale(lang) : (0, import_dayjs_min.default)(date, format).locale(lang); + return day.isValid() ? day : void 0; + }; + const formatter = function(date, format, lang) { + if (isEmpty(format)) return date; + if (format === "x") return +date; + return (0, import_dayjs_min.default)(date).locale(lang).format(format); + }; + const makeList = (total, method) => { + const arr = []; + const disabledArr = method?.(); + for (let i = 0; i < total; i++) arr.push(disabledArr?.includes(i) ?? false); + return arr; + }; + const dayOrDaysToDate = (dayOrDays) => { + return isArray$1(dayOrDays) ? dayOrDays.map((d) => d.toDate()) : dayOrDays.toDate(); + }; + +//#endregion +//#region ../../packages/components/time-picker/src/composables/use-common-picker.ts + const useCommonPicker = (props, emit) => { + const { lang } = useLocale(); + const pickerVisible = (0, vue.ref)(false); + const pickerActualVisible = (0, vue.ref)(false); + const userInput = (0, vue.ref)(null); + const valueIsEmpty = (0, vue.computed)(() => { + const { modelValue } = props; + return !modelValue || isArray$1(modelValue) && !modelValue.filter(Boolean).length; + }); + const emitInput = (input) => { + if (!valueEquals(props.modelValue, input)) { + let formatted; + if (isArray$1(input)) formatted = input.map((item) => formatter(item, props.valueFormat, lang.value)); + else if (input) formatted = formatter(input, props.valueFormat, lang.value); + emit(UPDATE_MODEL_EVENT, input ? formatted : input, lang.value); + } + }; + const parsedValue = (0, vue.computed)(() => { + let dayOrDays; + if (valueIsEmpty.value) { + if (pickerOptions.value.getDefaultValue) dayOrDays = pickerOptions.value.getDefaultValue(); + } else if (isArray$1(props.modelValue)) dayOrDays = props.modelValue.map((d) => parseDate(d, props.valueFormat, lang.value)); + else dayOrDays = parseDate(props.modelValue ?? "", props.valueFormat, lang.value); + if (pickerOptions.value.getRangeAvailableTime) { + const availableResult = pickerOptions.value.getRangeAvailableTime(dayOrDays); + if (!isEqual$1(availableResult, dayOrDays)) { + dayOrDays = availableResult; + if (!valueIsEmpty.value) emitInput(dayOrDaysToDate(dayOrDays)); + } + } + if (isArray$1(dayOrDays) && dayOrDays.some((day) => !day)) dayOrDays = []; + return dayOrDays; + }); + const pickerOptions = (0, vue.ref)({}); + const onSetPickerOption = (e) => { + pickerOptions.value[e[0]] = e[1]; + pickerOptions.value.panelReady = true; + }; + const onCalendarChange = (e) => { + emit("calendar-change", e); + }; + const onPanelChange = (value, mode, view) => { + emit("panel-change", value, mode, view); + }; + const onPick = (date = "", visible = false) => { + pickerVisible.value = visible; + let result; + if (isArray$1(date)) result = date.map((_) => _.toDate()); + else result = date ? date.toDate() : date; + userInput.value = null; + emitInput(result); + }; + return { + parsedValue, + pickerActualVisible, + pickerOptions, + pickerVisible, + userInput, + valueIsEmpty, + emitInput, + onCalendarChange, + onPanelChange, + onPick, + onSetPickerOption + }; + }; + +//#endregion +//#region ../../packages/components/time-picker/src/props/shared.ts + const disabledTimeListsProps = buildProps({ + disabledHours: { type: definePropType(Function) }, + disabledMinutes: { type: definePropType(Function) }, + disabledSeconds: { type: definePropType(Function) } + }); + const timePanelSharedProps = buildProps({ + visible: Boolean, + actualVisible: { + type: Boolean, + default: void 0 + }, + format: { + type: String, + default: "" + } + }); + +//#endregion +//#region ../../packages/components/time-picker/src/common/props.ts + const timePickerDefaultProps = buildProps({ + automaticDropdown: { + type: Boolean, + default: true + }, + id: { type: definePropType([Array, String]) }, + name: { type: definePropType([Array, String]) }, + popperClass: useTooltipContentProps.popperClass, + popperStyle: useTooltipContentProps.popperStyle, + format: String, + valueFormat: String, + dateFormat: String, + timeFormat: String, + type: { + type: String, + default: "" + }, + clearable: { + type: Boolean, + default: true + }, + clearIcon: { + type: definePropType([String, Object]), + default: circle_close_default + }, + editable: { + type: Boolean, + default: true + }, + saveOnBlur: { + type: Boolean, + default: true + }, + prefixIcon: { + type: definePropType([String, Object]), + default: "" + }, + size: useSizeProp, + readonly: Boolean, + disabled: { + type: Boolean, + default: void 0 + }, + placeholder: { + type: String, + default: "" + }, + popperOptions: { + type: definePropType(Object), + default: () => ({}) + }, + modelValue: { + type: definePropType([ + Date, + Array, + String, + Number + ]), + default: "" + }, + rangeSeparator: { + type: String, + default: "-" + }, + startPlaceholder: String, + endPlaceholder: String, + defaultValue: { type: definePropType([Date, Array]) }, + defaultTime: { type: definePropType([Date, Array]) }, + isRange: Boolean, + ...disabledTimeListsProps, + disabledDate: { type: Function }, + cellClassName: { type: Function }, + shortcuts: { + type: Array, + default: () => [] + }, + arrowControl: Boolean, + tabindex: { + type: definePropType([String, Number]), + default: 0 + }, + validateEvent: { + type: Boolean, + default: true + }, + unlinkPanels: Boolean, + placement: { + type: definePropType(String), + values: Ee, + default: "bottom" + }, + fallbackPlacements: { + type: definePropType(Array), + default: [ + "bottom", + "top", + "right", + "left" + ] + }, + ...useEmptyValuesProps, + ...useAriaProps(["ariaLabel"]), + showNow: { + type: Boolean, + default: true + }, + showConfirm: { + type: Boolean, + default: true + }, + showFooter: { + type: Boolean, + default: true + }, + showWeekNumber: Boolean + }); + const timePickerRangeTriggerProps = buildProps({ + id: { type: definePropType(Array) }, + name: { type: definePropType(Array) }, + modelValue: { type: definePropType([Array, String]) }, + startPlaceholder: String, + endPlaceholder: String, + disabled: Boolean + }); + /** + * @deprecated Use `timePickerRangeTriggerProps` instead. This will be removed in future versions. + */ + const timePickerRngeTriggerProps = timePickerRangeTriggerProps; + +//#endregion +//#region ../../packages/components/time-picker/src/common/picker-range-trigger.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$71 = [ + "id", + "name", + "placeholder", + "value", + "disabled" + ]; + const _hoisted_2$40 = [ + "id", + "name", + "placeholder", + "value", + "disabled" + ]; + var picker_range_trigger_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "PickerRangeTrigger", + inheritAttrs: false, + __name: "picker-range-trigger", + props: timePickerRangeTriggerProps, + emits: [ + "mouseenter", + "mouseleave", + "click", + "touchstart", + "focus", + "blur", + "startInput", + "endInput", + "startChange", + "endChange" + ], + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const { formItem } = useFormItem(); + const { inputId } = useFormItemInputId((0, vue.reactive)({ id: (0, vue.computed)(() => props.id?.[0]) }), { formItemContext: formItem }); + const attrs = useAttrs(); + const nsDate = useNamespace("date"); + const nsRange = useNamespace("range"); + const inputRef = (0, vue.ref)(); + const endInputRef = (0, vue.ref)(); + const { wrapperRef, isFocused } = useFocusController(inputRef, { disabled: (0, vue.computed)(() => props.disabled) }); + const handleClick = (evt) => { + emit("click", evt); + }; + const handleMouseEnter = (evt) => { + emit("mouseenter", evt); + }; + const handleMouseLeave = (evt) => { + emit("mouseleave", evt); + }; + const handleTouchStart = (evt) => { + emit("touchstart", evt); + }; + const handleStartInput = (evt) => { + emit("startInput", evt); + }; + const handleEndInput = (evt) => { + emit("endInput", evt); + }; + const handleStartChange = (evt) => { + emit("startChange", evt); + }; + const handleEndChange = (evt) => { + emit("endChange", evt); + }; + const focus = () => { + inputRef.value?.focus(); + }; + const blur = () => { + inputRef.value?.blur(); + endInputRef.value?.blur(); + }; + __expose({ + focus, + blur + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "wrapperRef", + ref: wrapperRef, + class: (0, vue.normalizeClass)([(0, vue.unref)(nsDate).is("active", (0, vue.unref)(isFocused)), _ctx.$attrs.class]), + style: (0, vue.normalizeStyle)(_ctx.$attrs.style), + onClick: handleClick, + onMouseenter: handleMouseEnter, + onMouseleave: handleMouseLeave, + onTouchstartPassive: handleTouchStart + }, [ + (0, vue.renderSlot)(_ctx.$slots, "prefix"), + (0, vue.createElementVNode)("input", (0, vue.mergeProps)((0, vue.unref)(attrs), { + id: (0, vue.unref)(inputId), + ref_key: "inputRef", + ref: inputRef, + name: _ctx.name && _ctx.name[0], + placeholder: _ctx.startPlaceholder, + value: _ctx.modelValue && _ctx.modelValue[0], + class: (0, vue.unref)(nsRange).b("input"), + disabled: _ctx.disabled, + onInput: handleStartInput, + onChange: handleStartChange + }), null, 16, _hoisted_1$71), + (0, vue.renderSlot)(_ctx.$slots, "range-separator"), + (0, vue.createElementVNode)("input", (0, vue.mergeProps)((0, vue.unref)(attrs), { + id: _ctx.id && _ctx.id[1], + ref_key: "endInputRef", + ref: endInputRef, + name: _ctx.name && _ctx.name[1], + placeholder: _ctx.endPlaceholder, + value: _ctx.modelValue && _ctx.modelValue[1], + class: (0, vue.unref)(nsRange).b("input"), + disabled: _ctx.disabled, + onInput: handleEndInput, + onChange: handleEndChange + }), null, 16, _hoisted_2$40), + (0, vue.renderSlot)(_ctx.$slots, "suffix") + ], 38); + }; + } + }); + +//#endregion +//#region ../../packages/components/time-picker/src/common/picker-range-trigger.vue + var picker_range_trigger_default = picker_range_trigger_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/time-picker/src/common/picker.vue?vue&type=script&setup=true&lang.ts + var picker_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "Picker", + __name: "picker", + props: timePickerDefaultProps, + emits: [ + UPDATE_MODEL_EVENT, + CHANGE_EVENT, + "focus", + "blur", + "clear", + "calendar-change", + "panel-change", + "visible-change", + "keydown" + ], + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const attrs = (0, vue.useAttrs)(); + const nsDate = useNamespace("date"); + const nsInput = useNamespace("input"); + const nsRange = useNamespace("range"); + const { formItem } = useFormItem(); + const elPopperOptions = (0, vue.inject)(PICKER_POPPER_OPTIONS_INJECTION_KEY, {}); + const emptyValues = useEmptyValues(props, null); + const refPopper = (0, vue.ref)(); + const inputRef = (0, vue.ref)(); + const valueOnOpen = (0, vue.ref)(null); + let hasJustTabExitedInput = false; + const pickerDisabled = useFormDisabled(); + const commonPicker = useCommonPicker(props, emit); + const { parsedValue, pickerActualVisible, userInput, pickerVisible, pickerOptions, valueIsEmpty, emitInput, onPick, onSetPickerOption, onCalendarChange, onPanelChange } = commonPicker; + const { isFocused, handleFocus, handleBlur } = useFocusController(inputRef, { + disabled: pickerDisabled, + beforeFocus() { + return props.readonly; + }, + afterFocus() { + if (!props.automaticDropdown) return; + pickerVisible.value = true; + }, + beforeBlur(event) { + return !hasJustTabExitedInput && refPopper.value?.isFocusInsideContent(event); + }, + afterBlur() { + if (isTimePicker.value && !props.saveOnBlur) { + if (!valueIsEmpty.value) pickerOptions.value.handleCancel?.(); + } else handleChange(); + pickerVisible.value = false; + hasJustTabExitedInput = false; + props.validateEvent && formItem?.validate("blur").catch((err) => /* @__PURE__ */ debugWarn(err)); + } + }); + const hovering = (0, vue.ref)(false); + const rangeInputKls = (0, vue.computed)(() => [ + nsDate.b("editor"), + nsDate.bm("editor", props.type), + nsInput.e("wrapper"), + nsDate.is("disabled", pickerDisabled.value), + nsDate.is("active", pickerVisible.value), + nsRange.b("editor"), + pickerSize ? nsRange.bm("editor", pickerSize.value) : "", + attrs.class + ]); + const clearIconKls = (0, vue.computed)(() => [ + nsInput.e("icon"), + nsRange.e("close-icon"), + !showClearBtn.value ? nsRange.em("close-icon", "hidden") : "" + ]); + (0, vue.watch)(pickerVisible, (val) => { + if (!val) { + userInput.value = null; + (0, vue.nextTick)(() => { + emitChange(props.modelValue); + }); + } else (0, vue.nextTick)(() => { + if (val) valueOnOpen.value = props.modelValue; + }); + }); + const emitChange = (val, isClear) => { + if (isClear || !valueEquals(val, valueOnOpen.value)) { + emit(CHANGE_EVENT, val); + isClear && (valueOnOpen.value = val); + props.validateEvent && formItem?.validate("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + } + }; + const emitKeydown = (e) => { + emit("keydown", e); + }; + const refInput = (0, vue.computed)(() => { + if (inputRef.value) return Array.from(inputRef.value.$el.querySelectorAll("input")); + return []; + }); + const setSelectionRange = (start, end, pos) => { + const _inputs = refInput.value; + if (!_inputs.length) return; + if (!pos || pos === "min") { + _inputs[0].setSelectionRange(start, end); + _inputs[0].focus(); + } else if (pos === "max") { + _inputs[1].setSelectionRange(start, end); + _inputs[1].focus(); + } + }; + const onBeforeShow = () => { + pickerActualVisible.value = true; + }; + const onShow = () => { + emit("visible-change", true); + }; + const onHide = () => { + pickerActualVisible.value = false; + pickerVisible.value = false; + emit("visible-change", false); + }; + const handleOpen = () => { + pickerVisible.value = true; + }; + const handleClose = () => { + pickerVisible.value = false; + }; + const displayValue = (0, vue.computed)(() => { + const formattedValue = formatToString(parsedValue.value); + if (isArray$1(userInput.value)) return [userInput.value[0] ?? (formattedValue && formattedValue[0]) ?? "", userInput.value[1] ?? (formattedValue && formattedValue[1]) ?? ""]; + else if (userInput.value !== null) return userInput.value; + if (isTimePicker.value && valueIsEmpty.value && !props.saveOnBlur) return ""; + if (!isTimePicker.value && valueIsEmpty.value) return ""; + if (!pickerVisible.value && valueIsEmpty.value) return ""; + if (formattedValue) return isDatesPicker.value || isMonthsPicker.value || isYearsPicker.value ? formattedValue.join(", ") : formattedValue; + return ""; + }); + const isTimeLikePicker = (0, vue.computed)(() => props.type.includes("time")); + const isTimePicker = (0, vue.computed)(() => props.type.startsWith("time")); + const isDatesPicker = (0, vue.computed)(() => props.type === "dates"); + const isMonthsPicker = (0, vue.computed)(() => props.type === "months"); + const isYearsPicker = (0, vue.computed)(() => props.type === "years"); + const triggerIcon = (0, vue.computed)(() => props.prefixIcon || (isTimeLikePicker.value ? clock_default : calendar_default$1)); + const showClearBtn = (0, vue.computed)(() => props.clearable && !pickerDisabled.value && !props.readonly && !valueIsEmpty.value && (hovering.value || isFocused.value)); + const onClear = (event) => { + if (props.readonly || pickerDisabled.value) return; + if (showClearBtn.value) { + event?.stopPropagation(); + if (pickerOptions.value.handleClear) pickerOptions.value.handleClear(); + else emitInput(emptyValues.valueOnClear.value); + emitChange(emptyValues.valueOnClear.value, true); + onHide(); + } + emit("clear"); + }; + const onMouseDownInput = async (event) => { + if (props.readonly || pickerDisabled.value) return; + if (event.target?.tagName !== "INPUT" || isFocused.value || !props.automaticDropdown) pickerVisible.value = true; + }; + const onMouseEnter = () => { + if (props.readonly || pickerDisabled.value) return; + if (!valueIsEmpty.value && props.clearable) hovering.value = true; + }; + const onMouseLeave = () => { + hovering.value = false; + }; + const onTouchStartInput = (event) => { + if (props.readonly || pickerDisabled.value) return; + if (event.touches[0].target?.tagName !== "INPUT" || isFocused.value || !props.automaticDropdown) pickerVisible.value = true; + }; + const isRangeInput = (0, vue.computed)(() => { + return props.type.includes("range"); + }); + const pickerSize = useFormSize(); + const popperEl = (0, vue.computed)(() => (0, vue.unref)(refPopper)?.popperRef?.contentRef); + const stophandle = onClickOutside(inputRef, (e) => { + const unrefedPopperEl = (0, vue.unref)(popperEl); + const inputEl = unrefElement(inputRef); + if (unrefedPopperEl && (e.target === unrefedPopperEl || e.composedPath().includes(unrefedPopperEl)) || e.target === inputEl || inputEl && e.composedPath().includes(inputEl)) return; + pickerVisible.value = false; + }); + (0, vue.onBeforeUnmount)(() => { + stophandle?.(); + }); + const handleChange = () => { + if (isTimePicker.value && !props.saveOnBlur) return; + const isRangeEmpty = isArray$1(userInput.value) && userInput.value.every((v) => v === ""); + if (userInput.value && !isRangeEmpty) { + const value = parseUserInputToDayjs(displayValue.value); + if (value) { + if (isValidValue(value)) emitInput(dayOrDaysToDate(value)); + userInput.value = null; + } + } + if (userInput.value === "" || isRangeEmpty) { + emitInput(emptyValues.valueOnClear.value); + emitChange(emptyValues.valueOnClear.value, true); + userInput.value = null; + } + }; + const parseUserInputToDayjs = (value) => { + if (!value) return null; + return pickerOptions.value.parseUserInput(value); + }; + const formatToString = (value) => { + if (!value) return null; + return isArray$1(value) ? value.map((_) => _.format(props.format)) : value.format(props.format); + }; + const isValidValue = (value) => { + return pickerOptions.value.isValidValue(value); + }; + const handleKeydownInput = async (event) => { + if (props.readonly || pickerDisabled.value) return; + const code = getEventCode(event); + emitKeydown(event); + if (code === EVENT_CODE.esc) { + if (pickerVisible.value === true) { + pickerVisible.value = false; + event.preventDefault(); + event.stopPropagation(); + } + return; + } + if (code === EVENT_CODE.down) { + if (pickerOptions.value.handleFocusPicker) { + event.preventDefault(); + event.stopPropagation(); + } + if (pickerVisible.value === false) { + pickerVisible.value = true; + await (0, vue.nextTick)(); + } + if (pickerOptions.value.handleFocusPicker) { + pickerOptions.value.handleFocusPicker(); + return; + } + } + if (code === EVENT_CODE.tab) { + hasJustTabExitedInput = true; + return; + } + if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) { + if (!pickerVisible.value) pickerVisible.value = true; + else if (userInput.value === null || userInput.value === "" || isValidValue(parseUserInputToDayjs(displayValue.value))) { + handleChange(); + pickerVisible.value = false; + } + event.preventDefault(); + event.stopPropagation(); + return; + } + if (userInput.value) { + event.stopPropagation(); + return; + } + if (pickerOptions.value.handleKeydownInput) pickerOptions.value.handleKeydownInput(event); + }; + const onUserInput = (e) => { + userInput.value = e; + if (!pickerVisible.value) pickerVisible.value = true; + }; + const handleStartInput = (event) => { + const target = event.target; + if (userInput.value) userInput.value = [target.value, userInput.value[1]]; + else userInput.value = [target.value, null]; + }; + const handleEndInput = (event) => { + const target = event.target; + if (userInput.value) userInput.value = [userInput.value[0], target.value]; + else userInput.value = [null, target.value]; + }; + const handleStartChange = () => { + const values = userInput.value; + const value = parseUserInputToDayjs(values && values[0]); + const parsedVal = (0, vue.unref)(parsedValue); + if (value && value.isValid()) { + userInput.value = [formatToString(value), displayValue.value?.[1] || null]; + const newValue = [value, parsedVal && (parsedVal[1] || null)]; + if (isValidValue(newValue)) { + emitInput(dayOrDaysToDate(newValue)); + userInput.value = null; + } + } + }; + const handleEndChange = () => { + const values = (0, vue.unref)(userInput); + const value = parseUserInputToDayjs(values && values[1]); + const parsedVal = (0, vue.unref)(parsedValue); + if (value && value.isValid()) { + userInput.value = [(0, vue.unref)(displayValue)?.[0] || null, formatToString(value)]; + const newValue = [parsedVal && parsedVal[0], value]; + if (isValidValue(newValue)) { + emitInput(dayOrDaysToDate(newValue)); + userInput.value = null; + } + } + }; + const focus = () => { + inputRef.value?.focus(); + }; + const blur = () => { + inputRef.value?.blur(); + }; + (0, vue.provide)(PICKER_BASE_INJECTION_KEY, { + props, + emptyValues + }); + (0, vue.provide)(ROOT_COMMON_PICKER_INJECTION_KEY, commonPicker); + __expose({ + focus, + blur, + handleOpen, + handleClose, + onPick + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTooltip), (0, vue.mergeProps)({ + ref_key: "refPopper", + ref: refPopper, + visible: (0, vue.unref)(pickerVisible), + effect: "light", + pure: "", + trigger: "click" + }, _ctx.$attrs, { + role: "dialog", + teleported: "", + transition: `${(0, vue.unref)(nsDate).namespace.value}-zoom-in-top`, + "popper-class": [`${(0, vue.unref)(nsDate).namespace.value}-picker__popper`, _ctx.popperClass], + "popper-style": _ctx.popperStyle, + "popper-options": (0, vue.unref)(elPopperOptions), + "fallback-placements": _ctx.fallbackPlacements, + "gpu-acceleration": false, + placement: _ctx.placement, + "stop-popper-mouse-event": false, + "hide-after": 0, + persistent: "", + onBeforeShow, + onShow, + onHide + }), { + default: (0, vue.withCtx)(() => [!isRangeInput.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElInput), { + key: 0, + id: _ctx.id, + ref_key: "inputRef", + ref: inputRef, + "container-role": "combobox", + "model-value": displayValue.value, + name: _ctx.name, + size: (0, vue.unref)(pickerSize), + disabled: (0, vue.unref)(pickerDisabled), + placeholder: _ctx.placeholder, + class: (0, vue.normalizeClass)([ + (0, vue.unref)(nsDate).b("editor"), + (0, vue.unref)(nsDate).bm("editor", _ctx.type), + (0, vue.unref)(nsDate).is("focus", (0, vue.unref)(pickerVisible)), + _ctx.$attrs.class + ]), + style: (0, vue.normalizeStyle)(_ctx.$attrs.style), + readonly: !_ctx.editable || _ctx.readonly || isDatesPicker.value || isMonthsPicker.value || isYearsPicker.value || _ctx.type === "week", + "aria-label": _ctx.ariaLabel, + tabindex: _ctx.tabindex, + "validate-event": false, + onInput: onUserInput, + onFocus: (0, vue.unref)(handleFocus), + onBlur: (0, vue.unref)(handleBlur), + onKeydown: handleKeydownInput, + onChange: handleChange, + onMousedown: onMouseDownInput, + onMouseenter: onMouseEnter, + onMouseleave: onMouseLeave, + onTouchstartPassive: onTouchStartInput, + onClick: _cache[0] || (_cache[0] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, { + prefix: (0, vue.withCtx)(() => [triggerIcon.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(nsInput).e("icon")), + onMousedown: (0, vue.withModifiers)(onMouseDownInput, ["prevent"]), + onTouchstartPassive: onTouchStartInput + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(triggerIcon.value)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true)]), + suffix: (0, vue.withCtx)(() => [showClearBtn.value && _ctx.clearIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)(`${(0, vue.unref)(nsInput).e("icon")} clear-icon`), + onMousedown: (0, vue.withModifiers)((0, vue.unref)(NOOP), ["prevent"]), + onClick: onClear + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.clearIcon)))]), + _: 1 + }, 8, ["class", "onMousedown"])) : (0, vue.createCommentVNode)("v-if", true)]), + _: 1 + }, 8, [ + "id", + "model-value", + "name", + "size", + "disabled", + "placeholder", + "class", + "style", + "readonly", + "aria-label", + "tabindex", + "onFocus", + "onBlur" + ])) : ((0, vue.openBlock)(), (0, vue.createBlock)(picker_range_trigger_default, { + key: 1, + id: _ctx.id, + ref_key: "inputRef", + ref: inputRef, + "model-value": displayValue.value, + name: _ctx.name, + disabled: (0, vue.unref)(pickerDisabled), + readonly: !_ctx.editable || _ctx.readonly, + "start-placeholder": _ctx.startPlaceholder, + "end-placeholder": _ctx.endPlaceholder, + class: (0, vue.normalizeClass)(rangeInputKls.value), + style: (0, vue.normalizeStyle)(_ctx.$attrs.style), + "aria-label": _ctx.ariaLabel, + tabindex: _ctx.tabindex, + autocomplete: "off", + role: "combobox", + onClick: onMouseDownInput, + onFocus: (0, vue.unref)(handleFocus), + onBlur: (0, vue.unref)(handleBlur), + onStartInput: handleStartInput, + onStartChange: handleStartChange, + onEndInput: handleEndInput, + onEndChange: handleEndChange, + onMousedown: onMouseDownInput, + onMouseenter: onMouseEnter, + onMouseleave: onMouseLeave, + onTouchstartPassive: onTouchStartInput, + onKeydown: handleKeydownInput + }, { + prefix: (0, vue.withCtx)(() => [triggerIcon.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(nsInput).e("icon"), (0, vue.unref)(nsRange).e("icon")]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(triggerIcon.value)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true)]), + "range-separator": (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "range-separator", {}, () => [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(nsRange).b("separator")) }, (0, vue.toDisplayString)(_ctx.rangeSeparator), 3)])]), + suffix: (0, vue.withCtx)(() => [_ctx.clearIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)(clearIconKls.value), + onMousedown: (0, vue.withModifiers)((0, vue.unref)(NOOP), ["prevent"]), + onClick: onClear + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.clearIcon)))]), + _: 1 + }, 8, ["class", "onMousedown"])) : (0, vue.createCommentVNode)("v-if", true)]), + _: 3 + }, 8, [ + "id", + "model-value", + "name", + "disabled", + "readonly", + "start-placeholder", + "end-placeholder", + "class", + "style", + "aria-label", + "tabindex", + "onFocus", + "onBlur" + ]))]), + content: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default", { + visible: (0, vue.unref)(pickerVisible), + actualVisible: (0, vue.unref)(pickerActualVisible), + parsedValue: (0, vue.unref)(parsedValue), + format: _ctx.format, + dateFormat: _ctx.dateFormat, + timeFormat: _ctx.timeFormat, + unlinkPanels: _ctx.unlinkPanels, + type: _ctx.type, + defaultValue: _ctx.defaultValue, + showNow: _ctx.showNow, + showConfirm: _ctx.showConfirm, + showFooter: _ctx.showFooter, + showWeekNumber: _ctx.showWeekNumber, + onPick: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(onPick) && (0, vue.unref)(onPick)(...args)), + onSelectRange: setSelectionRange, + onSetPickerOption: _cache[2] || (_cache[2] = (...args) => (0, vue.unref)(onSetPickerOption) && (0, vue.unref)(onSetPickerOption)(...args)), + onCalendarChange: _cache[3] || (_cache[3] = (...args) => (0, vue.unref)(onCalendarChange) && (0, vue.unref)(onCalendarChange)(...args)), + onClear, + onPanelChange: _cache[4] || (_cache[4] = (...args) => (0, vue.unref)(onPanelChange) && (0, vue.unref)(onPanelChange)(...args)), + onMousedown: _cache[5] || (_cache[5] = (0, vue.withModifiers)(() => {}, ["stop"])) + })]), + _: 3 + }, 16, [ + "visible", + "transition", + "popper-class", + "popper-style", + "popper-options", + "fallback-placements", + "placement" + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/time-picker/src/common/picker.vue + var picker_default = picker_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/time-picker/src/props/panel-time-picker.ts + const panelTimePickerProps = buildProps({ + ...timePanelSharedProps, + datetimeRole: String, + parsedValue: { type: definePropType(Object) } + }); + +//#endregion +//#region ../../packages/components/time-picker/src/composables/use-time-panel.ts + const useTimePanel = ({ getAvailableHours, getAvailableMinutes, getAvailableSeconds }) => { + const getAvailableTime = (date, role, first, compareDate) => { + const availableTimeGetters = { + hour: getAvailableHours, + minute: getAvailableMinutes, + second: getAvailableSeconds + }; + let result = date; + [ + "hour", + "minute", + "second" + ].forEach((type) => { + if (availableTimeGetters[type]) { + let availableTimeSlots; + const method = availableTimeGetters[type]; + switch (type) { + case "minute": + availableTimeSlots = method(result.hour(), role, compareDate); + break; + case "second": + availableTimeSlots = method(result.hour(), result.minute(), role, compareDate); + break; + default: + availableTimeSlots = method(role, compareDate); + break; + } + if (availableTimeSlots?.length && !availableTimeSlots.includes(result[type]())) { + const pos = first ? 0 : availableTimeSlots.length - 1; + result = result[type](availableTimeSlots[pos]); + } + } + }); + return result; + }; + const timePickerOptions = {}; + const onSetOption = ([key, val]) => { + timePickerOptions[key] = val; + }; + return { + timePickerOptions, + getAvailableTime, + onSetOption + }; + }; + +//#endregion +//#region ../../packages/components/time-picker/src/composables/use-time-picker.ts + const makeAvailableArr = (disabledList) => { + const trueOrNumber = (isDisabled, index) => isDisabled || index; + const getNumber = (predicate) => predicate !== true; + return disabledList.map(trueOrNumber).filter(getNumber); + }; + const getTimeLists = (disabledHours, disabledMinutes, disabledSeconds) => { + const getHoursList = (role, compare) => { + return makeList(24, disabledHours && (() => disabledHours?.(role, compare))); + }; + const getMinutesList = (hour, role, compare) => { + return makeList(60, disabledMinutes && (() => disabledMinutes?.(hour, role, compare))); + }; + const getSecondsList = (hour, minute, role, compare) => { + return makeList(60, disabledSeconds && (() => disabledSeconds?.(hour, minute, role, compare))); + }; + return { + getHoursList, + getMinutesList, + getSecondsList + }; + }; + const buildAvailableTimeSlotGetter = (disabledHours, disabledMinutes, disabledSeconds) => { + const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(disabledHours, disabledMinutes, disabledSeconds); + const getAvailableHours = (role, compare) => { + return makeAvailableArr(getHoursList(role, compare)); + }; + const getAvailableMinutes = (hour, role, compare) => { + return makeAvailableArr(getMinutesList(hour, role, compare)); + }; + const getAvailableSeconds = (hour, minute, role, compare) => { + return makeAvailableArr(getSecondsList(hour, minute, role, compare)); + }; + return { + getAvailableHours, + getAvailableMinutes, + getAvailableSeconds + }; + }; + const useOldValue = (props, options) => { + const oldValue = (0, vue.ref)(props.parsedValue); + (0, vue.watch)(() => props.visible, (val) => { + const modelValue = (0, vue.toValue)(options.modelValue); + const valueOnClear = (0, vue.toValue)(options.valueOnClear); + if (val && modelValue === valueOnClear) { + oldValue.value = valueOnClear; + return; + } + if (!val) oldValue.value = props.parsedValue; + }); + return oldValue; + }; + +//#endregion +//#region ../../packages/directives/click-outside/index.ts + const nodeList = /* @__PURE__ */ new Map(); + if (isClient) { + let startClick; + document.addEventListener("mousedown", (e) => startClick = e); + document.addEventListener("mouseup", (e) => { + if (startClick) { + for (const handlers of nodeList.values()) for (const { documentHandler } of handlers) documentHandler(e, startClick); + startClick = void 0; + } + }); + } + function createDocumentHandler(el, binding) { + let excludes = []; + if (isArray$1(binding.arg)) excludes = binding.arg; + else if (isElement$1(binding.arg)) excludes.push(binding.arg); + return function(mouseup, mousedown) { + const popperRef = binding.instance.popperRef; + const mouseUpTarget = mouseup.target; + const mouseDownTarget = mousedown?.target; + const isBound = !binding || !binding.instance; + const isTargetExists = !mouseUpTarget || !mouseDownTarget; + const isContainedByEl = el.contains(mouseUpTarget) || el.contains(mouseDownTarget); + const isSelf = el === mouseUpTarget; + const isTargetExcluded = excludes.length && excludes.some((item) => item?.contains(mouseUpTarget)) || excludes.length && excludes.includes(mouseDownTarget); + const isContainedByPopper = popperRef && (popperRef.contains(mouseUpTarget) || popperRef.contains(mouseDownTarget)); + if (isBound || isTargetExists || isContainedByEl || isSelf || isTargetExcluded || isContainedByPopper) return; + binding.value(mouseup, mousedown); + }; + } + const ClickOutside = { + beforeMount(el, binding) { + if (!nodeList.has(el)) nodeList.set(el, []); + nodeList.get(el).push({ + documentHandler: createDocumentHandler(el, binding), + bindingFn: binding.value + }); + }, + updated(el, binding) { + if (!nodeList.has(el)) nodeList.set(el, []); + const handlers = nodeList.get(el); + const oldHandlerIndex = handlers.findIndex((item) => item.bindingFn === binding.oldValue); + const newHandler = { + documentHandler: createDocumentHandler(el, binding), + bindingFn: binding.value + }; + if (oldHandlerIndex >= 0) handlers.splice(oldHandlerIndex, 1, newHandler); + else handlers.push(newHandler); + }, + unmounted(el) { + nodeList.delete(el); + } + }; + +//#endregion +//#region ../../packages/directives/repeat-click/index.ts + const REPEAT_INTERVAL = 100; + const REPEAT_DELAY = 600; + const SCOPE$6 = "_RepeatClick"; + const vRepeatClick = { + beforeMount(el, binding) { + const value = binding.value; + const { interval = REPEAT_INTERVAL, delay = REPEAT_DELAY } = isFunction$1(value) ? {} : value; + let intervalId; + let delayId; + const handler = () => isFunction$1(value) ? value() : value.handler(); + const clear = () => { + if (delayId) { + clearTimeout(delayId); + delayId = void 0; + } + if (intervalId) { + clearInterval(intervalId); + intervalId = void 0; + } + }; + const start = (evt) => { + if (evt.button !== 0) return; + clear(); + handler(); + document.addEventListener("mouseup", clear, { once: true }); + delayId = setTimeout(() => { + intervalId = setInterval(() => { + handler(); + }, interval); + }, delay); + }; + el[SCOPE$6] = { + start, + clear + }; + el.addEventListener("mousedown", start); + }, + unmounted(el) { + if (!el[SCOPE$6]) return; + const { start, clear } = el[SCOPE$6]; + if (start) el.removeEventListener("mousedown", start); + if (clear) { + clear(); + document.removeEventListener("mouseup", clear); + } + el[SCOPE$6] = null; + } + }; + +//#endregion +//#region ../../packages/directives/trap-focus/index.ts + const FOCUSABLE_CHILDREN = "_trap-focus-children"; + const FOCUS_STACK = []; + const FOCUS_HANDLER = (e) => { + if (FOCUS_STACK.length === 0) return; + const code = getEventCode(e); + const focusableElement = FOCUS_STACK[FOCUS_STACK.length - 1][FOCUSABLE_CHILDREN]; + if (focusableElement.length > 0 && code === EVENT_CODE.tab) { + if (focusableElement.length === 1) { + e.preventDefault(); + if (document.activeElement !== focusableElement[0]) focusableElement[0].focus(); + return; + } + const goingBackward = e.shiftKey; + const isFirst = e.target === focusableElement[0]; + const isLast = e.target === focusableElement[focusableElement.length - 1]; + if (isFirst && goingBackward) { + e.preventDefault(); + focusableElement[focusableElement.length - 1].focus(); + } + if (isLast && !goingBackward) { + e.preventDefault(); + focusableElement[0].focus(); + } + } + }; + const TrapFocus = { + beforeMount(el) { + el[FOCUSABLE_CHILDREN] = obtainAllFocusableElements$1(el); + FOCUS_STACK.push(el); + if (FOCUS_STACK.length <= 1) document.addEventListener("keydown", FOCUS_HANDLER); + }, + updated(el) { + (0, vue.nextTick)(() => { + el[FOCUSABLE_CHILDREN] = obtainAllFocusableElements$1(el); + }); + }, + unmounted() { + FOCUS_STACK.shift(); + if (FOCUS_STACK.length === 0) document.removeEventListener("keydown", FOCUS_HANDLER); + } + }; + +//#endregion +//#region ../../node_modules/.pnpm/normalize-wheel-es@1.2.0/node_modules/normalize-wheel-es/dist/index.mjs + var v = !1, o, f, s, u, d, N, l, p, m, w, D, x, E, M, F; + function a() { + if (!v) { + v = !0; + var e = navigator.userAgent, n = /(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e), i = /(Mac OS X)|(Windows)|(Linux)/.exec(e); + if (x = /\b(iPhone|iP[ao]d)/.exec(e), E = /\b(iP[ao]d)/.exec(e), w = /Android/i.exec(e), M = /FBAN\/\w+;/i.exec(e), F = /Mobile/i.exec(e), D = !!/Win64/.exec(e), n) { + o = n[1] ? parseFloat(n[1]) : n[5] ? parseFloat(n[5]) : NaN, o && document && document.documentMode && (o = document.documentMode); + var r = /(?:Trident\/(\d+.\d+))/.exec(e); + N = r ? parseFloat(r[1]) + 4 : o, f = n[2] ? parseFloat(n[2]) : NaN, s = n[3] ? parseFloat(n[3]) : NaN, u = n[4] ? parseFloat(n[4]) : NaN, u ? (n = /(?:Chrome\/(\d+\.\d+))/.exec(e), d = n && n[1] ? parseFloat(n[1]) : NaN) : d = NaN; + } else o = f = s = d = u = NaN; + if (i) { + if (i[1]) { + var t = /(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e); + l = t ? parseFloat(t[1].replace("_", ".")) : !0; + } else l = !1; + p = !!i[2], m = !!i[3]; + } else l = p = m = !1; + } + } + var _ = { + ie: function() { + return a() || o; + }, + ieCompatibilityMode: function() { + return a() || N > o; + }, + ie64: function() { + return _.ie() && D; + }, + firefox: function() { + return a() || f; + }, + opera: function() { + return a() || s; + }, + webkit: function() { + return a() || u; + }, + safari: function() { + return _.webkit(); + }, + chrome: function() { + return a() || d; + }, + windows: function() { + return a() || p; + }, + osx: function() { + return a() || l; + }, + linux: function() { + return a() || m; + }, + iphone: function() { + return a() || x; + }, + mobile: function() { + return a() || x || E || w || F; + }, + nativeApp: function() { + return a() || M; + }, + android: function() { + return a() || w; + }, + ipad: function() { + return a() || E; + } + }, A = _; + var c = !!(typeof window < "u" && window.document && window.document.createElement), h$26 = { + canUseDOM: c, + canUseWorkers: typeof Worker < "u", + canUseEventListeners: c && !!(window.addEventListener || window.attachEvent), + canUseViewport: c && !!window.screen, + isInWorker: !c + }; + var X; + h$26.canUseDOM && (X = document.implementation && document.implementation.hasFeature && document.implementation.hasFeature("", "") !== !0); + function S(e, n) { + if (!h$26.canUseDOM || n && !("addEventListener" in document)) return !1; + var i = "on" + e, r = i in document; + if (!r) { + var t = document.createElement("div"); + t.setAttribute(i, "return;"), r = typeof t[i] == "function"; + } + return !r && X && e === "wheel" && (r = document.implementation.hasFeature("Events.wheel", "3.0")), r; + } + var b = S; + var O = 10, I = 40, P = 800; + function T(e) { + var n = 0, i = 0, r = 0, t = 0; + return "detail" in e && (i = e.detail), "wheelDelta" in e && (i = -e.wheelDelta / 120), "wheelDeltaY" in e && (i = -e.wheelDeltaY / 120), "wheelDeltaX" in e && (n = -e.wheelDeltaX / 120), "axis" in e && e.axis === e.HORIZONTAL_AXIS && (n = i, i = 0), r = n * O, t = i * O, "deltaY" in e && (t = e.deltaY), "deltaX" in e && (r = e.deltaX), (r || t) && e.deltaMode && (e.deltaMode == 1 ? (r *= I, t *= I) : (r *= P, t *= P)), r && !n && (n = r < 1 ? -1 : 1), t && !i && (i = t < 1 ? -1 : 1), { + spinX: n, + spinY: i, + pixelX: r, + pixelY: t + }; + } + T.getEventType = function() { + return A.firefox() ? "DOMMouseScroll" : b("wheel") ? "wheel" : "mousewheel"; + }; + var Y = T; + /** + * Checks if an event is supported in the current execution environment. + * + * NOTE: This will not work correctly for non-generic events such as `change`, + * `reset`, `load`, `error`, and `select`. + * + * Borrows from Modernizr. + * + * @param {string} eventNameSuffix Event name, e.g. "click". + * @param {?boolean} capture Check if the capture phase is supported. + * @return {boolean} True if the event is supported. + * @internal + * @license Modernizr 3.0.0pre (Custom Build) | MIT + */ + +//#endregion +//#region ../../packages/directives/mousewheel/index.ts + const SCOPE$5 = "_Mousewheel"; + const mousewheel = function(element, callback) { + if (element && element.addEventListener) { + removeWheelHandler(element); + const fn = function(event) { + const normalized = Y(event); + callback && Reflect.apply(callback, this, [event, normalized]); + }; + element[SCOPE$5] = { wheelHandler: fn }; + element.addEventListener("wheel", fn, { passive: true }); + } + }; + const removeWheelHandler = (element) => { + if (element[SCOPE$5]?.wheelHandler) { + element.removeEventListener("wheel", element[SCOPE$5].wheelHandler); + element[SCOPE$5] = null; + } + }; + const Mousewheel = { + beforeMount(el, binding) { + mousewheel(el, binding.value); + }, + unmounted(el) { + removeWheelHandler(el); + }, + updated(el, binding) { + if (binding.value !== binding.oldValue) mousewheel(el, binding.value); + } + }; + +//#endregion +//#region ../../packages/components/time-picker/src/props/basic-time-spinner.ts + const basicTimeSpinnerProps = buildProps({ + role: { + type: String, + required: true + }, + spinnerDate: { + type: definePropType(Object), + required: true + }, + showSeconds: { + type: Boolean, + default: true + }, + arrowControl: Boolean, + amPmMode: { + type: definePropType(String), + default: "" + }, + ...disabledTimeListsProps + }); + +//#endregion +//#region ../../packages/components/time-picker/src/time-picker-com/basic-time-spinner.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$70 = ["onClick"]; + const _hoisted_2$39 = ["onMouseenter"]; + var basic_time_spinner_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + __name: "basic-time-spinner", + props: basicTimeSpinnerProps, + emits: [ + CHANGE_EVENT, + "select-range", + "set-option" + ], + setup(__props, { emit: __emit }) { + const props = __props; + const { isRange, format, saveOnBlur } = (0, vue.inject)(PICKER_BASE_INJECTION_KEY).props; + const emit = __emit; + const ns = useNamespace("time"); + const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(props.disabledHours, props.disabledMinutes, props.disabledSeconds); + let isScrolling = false; + const ignoreScroll = { + hours: false, + minutes: false, + seconds: false + }; + const currentScrollbar = (0, vue.ref)(); + const listRefsMap = { + hours: (0, vue.ref)(), + minutes: (0, vue.ref)(), + seconds: (0, vue.ref)() + }; + const spinnerItems = (0, vue.computed)(() => { + return props.showSeconds ? timeUnits : timeUnits.slice(0, 2); + }); + const timePartials = (0, vue.computed)(() => { + const { spinnerDate } = props; + return { + hours: spinnerDate.hour(), + minutes: spinnerDate.minute(), + seconds: spinnerDate.second() + }; + }); + const timeList = (0, vue.computed)(() => { + const { hours, minutes } = (0, vue.unref)(timePartials); + const { role, spinnerDate } = props; + const compare = !isRange ? spinnerDate : void 0; + return { + hours: getHoursList(role, compare), + minutes: getMinutesList(hours, role, compare), + seconds: getSecondsList(hours, minutes, role, compare) + }; + }); + const arrowControlTimeList = (0, vue.computed)(() => { + const { hours, minutes, seconds } = (0, vue.unref)(timePartials); + return { + hours: buildTimeList(hours, 23), + minutes: buildTimeList(minutes, 59), + seconds: buildTimeList(seconds, 59) + }; + }); + const debouncedResetScroll = debounce((type) => { + isScrolling = false; + adjustCurrentSpinner(type); + }, 200); + const getAmPmFlag = (hour) => { + if (!!!props.amPmMode) return ""; + const isCapital = props.amPmMode === "A"; + let content = hour < 12 ? " am" : " pm"; + if (isCapital) content = content.toUpperCase(); + return content; + }; + const emitSelectRange = (type) => { + let range = [0, 0]; + const actualFormat = format || DEFAULT_FORMATS_TIME; + const hourIndex = actualFormat.indexOf("HH"); + const minuteIndex = actualFormat.indexOf("mm"); + const secondIndex = actualFormat.indexOf("ss"); + switch (type) { + case "hours": + if (hourIndex !== -1) range = [hourIndex, hourIndex + 2]; + break; + case "minutes": + if (minuteIndex !== -1) range = [minuteIndex, minuteIndex + 2]; + break; + case "seconds": + if (secondIndex !== -1) range = [secondIndex, secondIndex + 2]; + break; + } + const [left, right] = range; + emit("select-range", left, right); + currentScrollbar.value = type; + }; + const adjustCurrentSpinner = (type) => { + adjustSpinner(type, (0, vue.unref)(timePartials)[type]); + }; + const adjustSpinners = () => { + adjustCurrentSpinner("hours"); + adjustCurrentSpinner("minutes"); + adjustCurrentSpinner("seconds"); + }; + const getScrollbarElement = (el) => el.querySelector(`.${ns.namespace.value}-scrollbar__wrap`); + const adjustSpinner = (type, value) => { + if (props.arrowControl) return; + const scrollbar = (0, vue.unref)(listRefsMap[type]); + if (scrollbar && scrollbar.$el) { + if (!saveOnBlur) { + ignoreScroll[type] = true; + rAF(() => { + ignoreScroll[type] = false; + }); + } + getScrollbarElement(scrollbar.$el).scrollTop = Math.max(0, value * typeItemHeight(type)); + } + }; + const typeItemHeight = (type) => { + const listItem = (0, vue.unref)(listRefsMap[type])?.$el.querySelector("li"); + if (listItem) return Number.parseFloat(getStyle(listItem, "height")) || 0; + return 0; + }; + const onIncrement = () => { + scrollDown(1); + }; + const onDecrement = () => { + scrollDown(-1); + }; + const scrollDown = (step) => { + if (!currentScrollbar.value) emitSelectRange("hours"); + const label = currentScrollbar.value; + const now = (0, vue.unref)(timePartials)[label]; + const next = findNextUnDisabled(label, now, step, currentScrollbar.value === "hours" ? 24 : 60); + modifyDateField(label, next); + adjustSpinner(label, next); + (0, vue.nextTick)(() => emitSelectRange(label)); + }; + const findNextUnDisabled = (type, now, step, total) => { + let next = (now + step + total) % total; + const list = (0, vue.unref)(timeList)[type]; + while (list[next] && next !== now) next = (next + step + total) % total; + return next; + }; + const modifyDateField = (type, value) => { + if ((0, vue.unref)(timeList)[type][value]) return; + const { hours, minutes, seconds } = (0, vue.unref)(timePartials); + let changeTo; + switch (type) { + case "hours": + changeTo = props.spinnerDate.hour(value).minute(minutes).second(seconds); + break; + case "minutes": + changeTo = props.spinnerDate.hour(hours).minute(value).second(seconds); + break; + case "seconds": + changeTo = props.spinnerDate.hour(hours).minute(minutes).second(value); + break; + } + emit(CHANGE_EVENT, changeTo); + }; + const handleClick = (type, { value, disabled }) => { + if (!disabled) { + modifyDateField(type, value); + emitSelectRange(type); + adjustSpinner(type, value); + } + }; + const handleScroll = (type) => { + if (!saveOnBlur && ignoreScroll[type]) return; + const scrollbar = (0, vue.unref)(listRefsMap[type]); + if (!scrollbar) return; + isScrolling = true; + debouncedResetScroll(type); + modifyDateField(type, Math.min(Math.round((getScrollbarElement(scrollbar.$el).scrollTop - (scrollBarHeight(type) * .5 - 10) / typeItemHeight(type) + 3) / typeItemHeight(type)), type === "hours" ? 23 : 59)); + }; + const scrollBarHeight = (type) => { + return (0, vue.unref)(listRefsMap[type]).$el.offsetHeight; + }; + const bindScrollEvent = () => { + const bindFunction = (type) => { + const scrollbar = (0, vue.unref)(listRefsMap[type]); + if (scrollbar && scrollbar.$el) getScrollbarElement(scrollbar.$el).onscroll = () => { + handleScroll(type); + }; + }; + bindFunction("hours"); + bindFunction("minutes"); + bindFunction("seconds"); + }; + (0, vue.onMounted)(() => { + (0, vue.nextTick)(() => { + !props.arrowControl && bindScrollEvent(); + adjustSpinners(); + if (props.role === "start") emitSelectRange("hours"); + }); + }); + const setRef = (scrollbar, type) => { + listRefsMap[type].value = scrollbar ?? void 0; + }; + emit("set-option", [`${props.role}_scrollDown`, scrollDown]); + emit("set-option", [`${props.role}_emitSelectRange`, emitSelectRange]); + (0, vue.watch)(() => props.spinnerDate, () => { + if (isScrolling) return; + adjustSpinners(); + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).b("spinner"), { "has-seconds": _ctx.showSeconds }]) }, [!_ctx.arrowControl ? ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, (0, vue.renderList)(spinnerItems.value, (item) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElScrollbar), { + key: item, + ref_for: true, + ref: (scrollbar) => setRef(scrollbar, item), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("spinner", "wrapper")), + "wrap-style": "max-height: inherit;", + "view-class": (0, vue.unref)(ns).be("spinner", "list"), + noresize: "", + tag: "ul", + onMouseenter: ($event) => emitSelectRange(item), + onMousemove: ($event) => adjustCurrentSpinner(item) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(timeList.value[item], (disabled, key) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + key, + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).be("spinner", "item"), + (0, vue.unref)(ns).is("active", key === timePartials.value[item]), + (0, vue.unref)(ns).is("disabled", disabled) + ]), + onClick: ($event) => handleClick(item, { + value: key, + disabled + }) + }, [item === "hours" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(("0" + (_ctx.amPmMode ? key % 12 || 12 : key)).slice(-2)) + (0, vue.toDisplayString)(getAmPmFlag(key)), 1)], 64)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(("0" + key).slice(-2)), 1)], 64))], 10, _hoisted_1$70); + }), 128))]), + _: 2 + }, 1032, [ + "class", + "view-class", + "onMouseenter", + "onMousemove" + ]); + }), 128)) : (0, vue.createCommentVNode)("v-if", true), _ctx.arrowControl ? ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, (0, vue.renderList)(spinnerItems.value, (item) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: item, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).be("spinner", "wrapper"), (0, vue.unref)(ns).is("arrow")]), + onMouseenter: ($event) => emitSelectRange(item) + }, [ + (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { class: (0, vue.normalizeClass)(["arrow-up", (0, vue.unref)(ns).be("spinner", "arrow")]) }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_up_default))]), + _: 1 + }, 8, ["class"])), [[(0, vue.unref)(vRepeatClick), onDecrement]]), + (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { class: (0, vue.normalizeClass)(["arrow-down", (0, vue.unref)(ns).be("spinner", "arrow")]) }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_down_default))]), + _: 1 + }, 8, ["class"])), [[(0, vue.unref)(vRepeatClick), onIncrement]]), + (0, vue.createElementVNode)("ul", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("spinner", "list")) }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(arrowControlTimeList.value[item], (time, key) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + key, + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).be("spinner", "item"), + (0, vue.unref)(ns).is("active", time === timePartials.value[item]), + (0, vue.unref)(ns).is("disabled", timeList.value[item][time]) + ]) + }, [(0, vue.unref)(isNumber)(time) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [item === "hours" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(("0" + (_ctx.amPmMode ? time % 12 || 12 : time)).slice(-2)) + (0, vue.toDisplayString)(getAmPmFlag(time)), 1)], 64)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(("0" + time).slice(-2)), 1)], 64))], 64)) : (0, vue.createCommentVNode)("v-if", true)], 2); + }), 128))], 2) + ], 42, _hoisted_2$39); + }), 128)) : (0, vue.createCommentVNode)("v-if", true)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/time-picker/src/time-picker-com/basic-time-spinner.vue + var basic_time_spinner_default = basic_time_spinner_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/time-picker/src/time-picker-com/panel-time-pick.vue?vue&type=script&setup=true&lang.ts + var panel_time_pick_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + __name: "panel-time-pick", + props: panelTimePickerProps, + emits: [ + "pick", + "select-range", + "set-picker-option" + ], + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const pickerBase = (0, vue.inject)(PICKER_BASE_INJECTION_KEY); + const { arrowControl, disabledHours, disabledMinutes, disabledSeconds, defaultValue } = pickerBase.props; + const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } = buildAvailableTimeSlotGetter(disabledHours, disabledMinutes, disabledSeconds); + const ns = useNamespace("time"); + const { t, lang } = useLocale(); + const selectionRange = (0, vue.ref)([0, 2]); + const oldValue = useOldValue(props, { + modelValue: (0, vue.computed)(() => pickerBase.props.modelValue), + valueOnClear: (0, vue.computed)(() => pickerBase?.emptyValues ? pickerBase.emptyValues.valueOnClear.value : null) + }); + const transitionName = (0, vue.computed)(() => { + return isUndefined(props.actualVisible) ? `${ns.namespace.value}-zoom-in-top` : ""; + }); + const showSeconds = (0, vue.computed)(() => { + return props.format.includes("ss"); + }); + const amPmMode = (0, vue.computed)(() => { + if (props.format.includes("A")) return "A"; + if (props.format.includes("a")) return "a"; + return ""; + }); + const isValidValue = (_date) => { + const parsedDate = (0, import_dayjs_min.default)(_date).locale(lang.value); + const result = getRangeAvailableTime(parsedDate); + return parsedDate.isSame(result); + }; + const handleCancel = () => { + const old = oldValue.value; + emit("pick", old, false); + (0, vue.nextTick)(() => { + oldValue.value = old; + }); + }; + const handleConfirm = (visible = false, first = false) => { + if (first) return; + emit("pick", props.parsedValue, visible); + }; + const handleChange = (_date) => { + if (!props.visible) return; + emit("pick", getRangeAvailableTime(_date).millisecond(0), true); + }; + const setSelectionRange = (start, end) => { + emit("select-range", start, end); + selectionRange.value = [start, end]; + }; + const changeSelectionRange = (step) => { + const actualFormat = props.format; + const hourIndex = actualFormat.indexOf("HH"); + const minuteIndex = actualFormat.indexOf("mm"); + const secondIndex = actualFormat.indexOf("ss"); + const list = []; + const mapping = []; + if (hourIndex !== -1) { + list.push(hourIndex); + mapping.push("hours"); + } + if (minuteIndex !== -1) { + list.push(minuteIndex); + mapping.push("minutes"); + } + if (secondIndex !== -1 && showSeconds.value) { + list.push(secondIndex); + mapping.push("seconds"); + } + const next = (list.indexOf(selectionRange.value[0]) + step + list.length) % list.length; + timePickerOptions["start_emitSelectRange"](mapping[next]); + }; + const handleKeydown = (event) => { + const code = getEventCode(event); + const { left, right, up, down } = EVENT_CODE; + if ([left, right].includes(code)) { + changeSelectionRange(code === left ? -1 : 1); + event.preventDefault(); + return; + } + if ([up, down].includes(code)) { + const step = code === up ? -1 : 1; + timePickerOptions["start_scrollDown"](step); + event.preventDefault(); + return; + } + }; + const { timePickerOptions, onSetOption, getAvailableTime } = useTimePanel({ + getAvailableHours, + getAvailableMinutes, + getAvailableSeconds + }); + const getRangeAvailableTime = (date) => { + return getAvailableTime(date, props.datetimeRole || "", true); + }; + const parseUserInput = (value) => { + if (!value) return null; + return (0, import_dayjs_min.default)(value, props.format).locale(lang.value); + }; + const getDefaultValue = () => { + return (0, import_dayjs_min.default)(defaultValue).locale(lang.value); + }; + emit("set-picker-option", ["isValidValue", isValidValue]); + emit("set-picker-option", ["parseUserInput", parseUserInput]); + emit("set-picker-option", ["handleKeydownInput", handleKeydown]); + emit("set-picker-option", ["getRangeAvailableTime", getRangeAvailableTime]); + emit("set-picker-option", ["getDefaultValue", getDefaultValue]); + emit("set-picker-option", ["handleCancel", handleCancel]); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(vue.Transition, { name: transitionName.value }, { + default: (0, vue.withCtx)(() => [_ctx.actualVisible || _ctx.visible ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b("panel")) + }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).be("panel", "content"), { "has-seconds": showSeconds.value }]) }, [(0, vue.createVNode)(basic_time_spinner_default, { + ref: "spinner", + role: _ctx.datetimeRole || "start", + "arrow-control": (0, vue.unref)(arrowControl), + "show-seconds": showSeconds.value, + "am-pm-mode": amPmMode.value, + "spinner-date": _ctx.parsedValue, + "disabled-hours": (0, vue.unref)(disabledHours), + "disabled-minutes": (0, vue.unref)(disabledMinutes), + "disabled-seconds": (0, vue.unref)(disabledSeconds), + onChange: handleChange, + onSetOption: (0, vue.unref)(onSetOption), + onSelectRange: setSelectionRange + }, null, 8, [ + "role", + "arrow-control", + "show-seconds", + "am-pm-mode", + "spinner-date", + "disabled-hours", + "disabled-minutes", + "disabled-seconds", + "onSetOption" + ])], 2), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("panel", "footer")) }, [(0, vue.createElementVNode)("button", { + type: "button", + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).be("panel", "btn"), "cancel"]), + onClick: handleCancel + }, (0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.cancel")), 3), (0, vue.createElementVNode)("button", { + type: "button", + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).be("panel", "btn"), "confirm"]), + onClick: _cache[0] || (_cache[0] = ($event) => handleConfirm()) + }, (0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.confirm")), 3)], 2)], 2)) : (0, vue.createCommentVNode)("v-if", true)]), + _: 1 + }, 8, ["name"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/time-picker/src/time-picker-com/panel-time-pick.vue + var panel_time_pick_default = panel_time_pick_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/time-picker/src/props/panel-time-range.ts + const panelTimeRangeProps = buildProps({ + ...timePanelSharedProps, + parsedValue: { type: definePropType(Array) } + }); + +//#endregion +//#region ../../packages/components/time-picker/src/time-picker-com/panel-time-range.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$69 = ["disabled"]; + var panel_time_range_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + __name: "panel-time-range", + props: panelTimeRangeProps, + emits: [ + "pick", + "select-range", + "set-picker-option" + ], + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const makeSelectRange = (start, end) => { + const result = []; + for (let i = start; i <= end; i++) result.push(i); + return result; + }; + const { t, lang } = useLocale(); + const nsTime = useNamespace("time"); + const nsPicker = useNamespace("picker"); + const pickerBase = (0, vue.inject)(PICKER_BASE_INJECTION_KEY); + const { arrowControl, disabledHours, disabledMinutes, disabledSeconds, defaultValue } = pickerBase.props; + const startContainerKls = (0, vue.computed)(() => [ + nsTime.be("range-picker", "body"), + nsTime.be("panel", "content"), + nsTime.is("arrow", arrowControl), + showSeconds.value ? "has-seconds" : "" + ]); + const endContainerKls = (0, vue.computed)(() => [ + nsTime.be("range-picker", "body"), + nsTime.be("panel", "content"), + nsTime.is("arrow", arrowControl), + showSeconds.value ? "has-seconds" : "" + ]); + const startTime = (0, vue.computed)(() => props.parsedValue[0]); + const endTime = (0, vue.computed)(() => props.parsedValue[1]); + const oldValue = useOldValue(props, { + modelValue: (0, vue.computed)(() => pickerBase.props.modelValue), + valueOnClear: (0, vue.computed)(() => pickerBase?.emptyValues ? pickerBase.emptyValues.valueOnClear.value : null) + }); + const handleCancel = () => { + const old = oldValue.value; + emit("pick", old, false); + (0, vue.nextTick)(() => { + oldValue.value = old; + }); + }; + const showSeconds = (0, vue.computed)(() => { + return props.format.includes("ss"); + }); + const amPmMode = (0, vue.computed)(() => { + if (props.format.includes("A")) return "A"; + if (props.format.includes("a")) return "a"; + return ""; + }); + const handleConfirm = (visible = false) => { + emit("pick", [startTime.value, endTime.value], visible); + }; + const handleMinChange = (date) => { + handleChange(date.millisecond(0), endTime.value); + }; + const handleMaxChange = (date) => { + handleChange(startTime.value, date.millisecond(0)); + }; + const isValidValue = (_date) => { + const parsedDate = _date.map((_) => (0, import_dayjs_min.default)(_).locale(lang.value)); + const result = getRangeAvailableTime(parsedDate); + return parsedDate[0].isSame(result[0]) && parsedDate[1].isSame(result[1]); + }; + const handleChange = (start, end) => { + if (!props.visible) return; + emit("pick", [start, end], true); + }; + const btnConfirmDisabled = (0, vue.computed)(() => { + return startTime.value > endTime.value; + }); + const selectionRange = (0, vue.ref)([0, 2]); + const setMinSelectionRange = (start, end) => { + emit("select-range", start, end, "min"); + selectionRange.value = [start, end]; + }; + const offset = (0, vue.computed)(() => showSeconds.value ? 11 : 8); + const setMaxSelectionRange = (start, end) => { + emit("select-range", start, end, "max"); + const _offset = (0, vue.unref)(offset); + selectionRange.value = [start + _offset, end + _offset]; + }; + const changeSelectionRange = (step) => { + const list = showSeconds.value ? [ + 0, + 3, + 6, + 11, + 14, + 17 + ] : [ + 0, + 3, + 8, + 11 + ]; + const mapping = ["hours", "minutes"].concat(showSeconds.value ? ["seconds"] : []); + const next = (list.indexOf(selectionRange.value[0]) + step + list.length) % list.length; + const half = list.length / 2; + if (next < half) timePickerOptions["start_emitSelectRange"](mapping[next]); + else timePickerOptions["end_emitSelectRange"](mapping[next - half]); + }; + const handleKeydown = (event) => { + const code = getEventCode(event); + const { left, right, up, down } = EVENT_CODE; + if ([left, right].includes(code)) { + changeSelectionRange(code === left ? -1 : 1); + event.preventDefault(); + return; + } + if ([up, down].includes(code)) { + const step = code === up ? -1 : 1; + timePickerOptions[`${selectionRange.value[0] < offset.value ? "start" : "end"}_scrollDown`](step); + event.preventDefault(); + return; + } + }; + const disabledHours_ = (role, compare) => { + const defaultDisable = disabledHours ? disabledHours(role) : []; + const isStart = role === "start"; + const compareHour = (compare || (isStart ? endTime.value : startTime.value)).hour(); + return union(defaultDisable, isStart ? makeSelectRange(compareHour + 1, 23) : makeSelectRange(0, compareHour - 1)); + }; + const disabledMinutes_ = (hour, role, compare) => { + const defaultDisable = disabledMinutes ? disabledMinutes(hour, role) : []; + const isStart = role === "start"; + const compareDate = compare || (isStart ? endTime.value : startTime.value); + if (hour !== compareDate.hour()) return defaultDisable; + const compareMinute = compareDate.minute(); + return union(defaultDisable, isStart ? makeSelectRange(compareMinute + 1, 59) : makeSelectRange(0, compareMinute - 1)); + }; + const disabledSeconds_ = (hour, minute, role, compare) => { + const defaultDisable = disabledSeconds ? disabledSeconds(hour, minute, role) : []; + const isStart = role === "start"; + const compareDate = compare || (isStart ? endTime.value : startTime.value); + const compareHour = compareDate.hour(); + const compareMinute = compareDate.minute(); + if (hour !== compareHour || minute !== compareMinute) return defaultDisable; + const compareSecond = compareDate.second(); + return union(defaultDisable, isStart ? makeSelectRange(compareSecond + 1, 59) : makeSelectRange(0, compareSecond - 1)); + }; + const getRangeAvailableTime = ([start, end]) => { + return [getAvailableTime(start, "start", true, end), getAvailableTime(end, "end", false, start)]; + }; + const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } = buildAvailableTimeSlotGetter(disabledHours_, disabledMinutes_, disabledSeconds_); + const { timePickerOptions, getAvailableTime, onSetOption } = useTimePanel({ + getAvailableHours, + getAvailableMinutes, + getAvailableSeconds + }); + const parseUserInput = (days) => { + if (!days) return null; + if (isArray$1(days)) return days.map((d) => (0, import_dayjs_min.default)(d, props.format).locale(lang.value)); + return (0, import_dayjs_min.default)(days, props.format).locale(lang.value); + }; + const getDefaultValue = () => { + if (isArray$1(defaultValue)) return defaultValue.map((d) => (0, import_dayjs_min.default)(d).locale(lang.value)); + const defaultDay = (0, import_dayjs_min.default)(defaultValue).locale(lang.value); + return [defaultDay, defaultDay.add(60, "m")]; + }; + emit("set-picker-option", ["parseUserInput", parseUserInput]); + emit("set-picker-option", ["isValidValue", isValidValue]); + emit("set-picker-option", ["handleKeydownInput", handleKeydown]); + emit("set-picker-option", ["getDefaultValue", getDefaultValue]); + emit("set-picker-option", ["getRangeAvailableTime", getRangeAvailableTime]); + emit("set-picker-option", ["handleCancel", handleCancel]); + return (_ctx, _cache) => { + return _ctx.actualVisible ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(nsTime).b("range-picker"), (0, vue.unref)(nsPicker).b("panel")]) + }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(nsTime).be("range-picker", "content")) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(nsTime).be("range-picker", "cell")) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(nsTime).be("range-picker", "header")) }, (0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.startTime")), 3), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(startContainerKls.value) }, [(0, vue.createVNode)(basic_time_spinner_default, { + ref: "minSpinner", + role: "start", + "show-seconds": showSeconds.value, + "am-pm-mode": amPmMode.value, + "arrow-control": (0, vue.unref)(arrowControl), + "spinner-date": startTime.value, + "disabled-hours": disabledHours_, + "disabled-minutes": disabledMinutes_, + "disabled-seconds": disabledSeconds_, + onChange: handleMinChange, + onSetOption: (0, vue.unref)(onSetOption), + onSelectRange: setMinSelectionRange + }, null, 8, [ + "show-seconds", + "am-pm-mode", + "arrow-control", + "spinner-date", + "onSetOption" + ])], 2)], 2), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(nsTime).be("range-picker", "cell")) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(nsTime).be("range-picker", "header")) }, (0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.endTime")), 3), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(endContainerKls.value) }, [(0, vue.createVNode)(basic_time_spinner_default, { + ref: "maxSpinner", + role: "end", + "show-seconds": showSeconds.value, + "am-pm-mode": amPmMode.value, + "arrow-control": (0, vue.unref)(arrowControl), + "spinner-date": endTime.value, + "disabled-hours": disabledHours_, + "disabled-minutes": disabledMinutes_, + "disabled-seconds": disabledSeconds_, + onChange: handleMaxChange, + onSetOption: (0, vue.unref)(onSetOption), + onSelectRange: setMaxSelectionRange + }, null, 8, [ + "show-seconds", + "am-pm-mode", + "arrow-control", + "spinner-date", + "onSetOption" + ])], 2)], 2)], 2), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(nsTime).be("panel", "footer")) }, [(0, vue.createElementVNode)("button", { + type: "button", + class: (0, vue.normalizeClass)([(0, vue.unref)(nsTime).be("panel", "btn"), "cancel"]), + onClick: _cache[0] || (_cache[0] = ($event) => handleCancel()) + }, (0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.cancel")), 3), (0, vue.createElementVNode)("button", { + type: "button", + class: (0, vue.normalizeClass)([(0, vue.unref)(nsTime).be("panel", "btn"), "confirm"]), + disabled: btnConfirmDisabled.value, + onClick: _cache[1] || (_cache[1] = ($event) => handleConfirm()) + }, (0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.confirm")), 11, _hoisted_1$69)], 2)], 2)) : (0, vue.createCommentVNode)("v-if", true); + }; + } + }); + +//#endregion +//#region ../../packages/components/time-picker/src/time-picker-com/panel-time-range.vue + var panel_time_range_default = panel_time_range_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/time-picker/src/time-picker.tsx + import_dayjs_min.default.extend(import_customParseFormat.default); + var time_picker_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTimePicker", + install: null, + props: { + ...timePickerDefaultProps, + isRange: Boolean + }, + emits: [UPDATE_MODEL_EVENT], + setup(props, ctx) { + const commonPicker = (0, vue.ref)(); + const [type, Panel] = props.isRange ? ["timerange", panel_time_range_default] : ["time", panel_time_pick_default]; + const modelUpdater = (value) => ctx.emit(UPDATE_MODEL_EVENT, value); + (0, vue.provide)(PICKER_POPPER_OPTIONS_INJECTION_KEY, props.popperOptions); + ctx.expose({ + focus: () => { + commonPicker.value?.focus(); + }, + blur: () => { + commonPicker.value?.blur(); + }, + handleOpen: () => { + commonPicker.value?.handleOpen(); + }, + handleClose: () => { + commonPicker.value?.handleClose(); + } + }); + return () => { + const format = props.format ?? DEFAULT_FORMATS_TIME; + return (0, vue.createVNode)(picker_default, (0, vue.mergeProps)(props, { + "ref": commonPicker, + "type": type, + "format": format, + "onUpdate:modelValue": modelUpdater + }), { default: (props) => (0, vue.createVNode)(Panel, props, null) }); + }; + } + }); + +//#endregion +//#region ../../packages/components/time-picker/index.ts + const ElTimePicker = withInstall(time_picker_default); + +//#endregion +//#region ../../packages/components/calendar/src/date-table.ts + const getPrevMonthLastDays = (date, count) => { + const lastDay = date.subtract(1, "month").endOf("month").date(); + return rangeArr(count).map((_, index) => lastDay - (count - index - 1)); + }; + const getMonthDays = (date) => { + return rangeArr(date.daysInMonth()).map((_, index) => index + 1); + }; + const toNestedArr = (days) => rangeArr(days.length / 7).map((index) => { + const start = index * 7; + return days.slice(start, start + 7); + }); + /** + * @deprecated Removed after 3.0.0, Use `DateTableProps` instead. + */ + const dateTableProps = buildProps({ + selectedDay: { type: definePropType(Object) }, + range: { type: definePropType(Array) }, + date: { + type: definePropType(Object), + required: true + }, + hideHeader: { type: Boolean } + }); + const dateTableEmits = { pick: (value) => isObject$1(value) }; + +//#endregion +//#region ../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/localeData.js + var require_localeData = /* @__PURE__ */ __commonJSMin(((exports, module) => { + (function(n, e) { + "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (n = "undefined" != typeof globalThis ? globalThis : n || self).dayjs_plugin_localeData = e(); + })(exports, (function() { + "use strict"; + return function(n, e, t) { + var r = e.prototype, o = function(n) { + return n && (n.indexOf ? n : n.s); + }, u = function(n, e, t, r, u) { + var i = n.name ? n : n.$locale(), a = o(i[e]), s = o(i[t]), f = a || s.map((function(n) { + return n.slice(0, r); + })); + if (!u) return f; + var d = i.weekStart; + return f.map((function(n, e) { + return f[(e + (d || 0)) % 7]; + })); + }, i = function() { + return t.Ls[t.locale()]; + }, a = function(n, e) { + return n.formats[e] || function(n) { + return n.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, (function(n, e, t) { + return e || t.slice(1); + })); + }(n.formats[e.toUpperCase()]); + }, s = function() { + var n = this; + return { + months: function(e) { + return e ? e.format("MMMM") : u(n, "months"); + }, + monthsShort: function(e) { + return e ? e.format("MMM") : u(n, "monthsShort", "months", 3); + }, + firstDayOfWeek: function() { + return n.$locale().weekStart || 0; + }, + weekdays: function(e) { + return e ? e.format("dddd") : u(n, "weekdays"); + }, + weekdaysMin: function(e) { + return e ? e.format("dd") : u(n, "weekdaysMin", "weekdays", 2); + }, + weekdaysShort: function(e) { + return e ? e.format("ddd") : u(n, "weekdaysShort", "weekdays", 3); + }, + longDateFormat: function(e) { + return a(n.$locale(), e); + }, + meridiem: this.$locale().meridiem, + ordinal: this.$locale().ordinal + }; + }; + r.localeData = function() { + return s.bind(this)(); + }, t.localeData = function() { + var n = i(); + return { + firstDayOfWeek: function() { + return n.weekStart || 0; + }, + weekdays: function() { + return t.weekdays(); + }, + weekdaysShort: function() { + return t.weekdaysShort(); + }, + weekdaysMin: function() { + return t.weekdaysMin(); + }, + months: function() { + return t.months(); + }, + monthsShort: function() { + return t.monthsShort(); + }, + longDateFormat: function(e) { + return a(n, e); + }, + meridiem: n.meridiem, + ordinal: n.ordinal + }; + }, t.months = function() { + return u(i(), "months"); + }, t.monthsShort = function() { + return u(i(), "monthsShort", "months", 3); + }, t.weekdays = function(n) { + return u(i(), "weekdays", null, null, n); + }, t.weekdaysShort = function(n) { + return u(i(), "weekdaysShort", "weekdays", 3, n); + }, t.weekdaysMin = function(n) { + return u(i(), "weekdaysMin", "weekdays", 2, n); + }; + }; + })); + })); + +//#endregion +//#region ../../packages/components/calendar/src/use-date-table.ts + var import_localeData = /* @__PURE__ */ __toESM(require_localeData()); + const useDateTable = (props, emit) => { + import_dayjs_min.default.extend(import_localeData.default); + const firstDayOfWeek = import_dayjs_min.default.localeData().firstDayOfWeek(); + const { t, lang } = useLocale(); + const now = (0, import_dayjs_min.default)().locale(lang.value); + const isInRange = (0, vue.computed)(() => !!props.range && !!props.range.length); + const rows = (0, vue.computed)(() => { + let days = []; + if (isInRange.value) { + const [start, end] = props.range; + const currentMonthRange = rangeArr(end.date() - start.date() + 1).map((index) => ({ + text: start.date() + index, + type: "current" + })); + let remaining = currentMonthRange.length % 7; + remaining = remaining === 0 ? 0 : 7 - remaining; + const nextMonthRange = rangeArr(remaining).map((_, index) => ({ + text: index + 1, + type: "next" + })); + days = currentMonthRange.concat(nextMonthRange); + } else { + const firstDay = props.date.startOf("month").day(); + const prevMonthDays = getPrevMonthLastDays(props.date, (firstDay - firstDayOfWeek + 7) % 7).map((day) => ({ + text: day, + type: "prev" + })); + const currentMonthDays = getMonthDays(props.date).map((day) => ({ + text: day, + type: "current" + })); + days = [...prevMonthDays, ...currentMonthDays]; + const nextMonthDays = rangeArr(7 - (days.length % 7 || 7)).map((_, index) => ({ + text: index + 1, + type: "next" + })); + days = days.concat(nextMonthDays); + } + return toNestedArr(days); + }); + const weekDays = (0, vue.computed)(() => { + const start = firstDayOfWeek; + if (start === 0) return WEEK_DAYS.map((_) => t(`el.datepicker.weeks.${_}`)); + else return WEEK_DAYS.slice(start).concat(WEEK_DAYS.slice(0, start)).map((_) => t(`el.datepicker.weeks.${_}`)); + }); + const getFormattedDate = (day, type) => { + switch (type) { + case "prev": return props.date.startOf("month").subtract(1, "month").date(day); + case "next": return props.date.startOf("month").add(1, "month").date(day); + case "current": return props.date.date(day); + } + }; + const handlePickDay = ({ text, type }) => { + emit("pick", getFormattedDate(text, type)); + }; + const getSlotData = ({ text, type }) => { + const day = getFormattedDate(text, type); + return { + isSelected: day.isSame(props.selectedDay), + type: `${type}-month`, + day: day.format(DEFAULT_FORMATS_DATE), + date: day.toDate() + }; + }; + return { + now, + isInRange, + rows, + weekDays, + getFormattedDate, + handlePickDay, + getSlotData + }; + }; + +//#endregion +//#region ../../packages/components/calendar/src/date-table.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$68 = { key: 0 }; + const _hoisted_2$38 = ["onClick"]; + var date_table_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "DateTable", + __name: "date-table", + props: dateTableProps, + emits: dateTableEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const { isInRange, now, rows, weekDays, getFormattedDate, handlePickDay, getSlotData } = useDateTable(props, __emit); + const nsTable = useNamespace("calendar-table"); + const nsDay = useNamespace("calendar-day"); + const getCellClass = ({ text, type }) => { + const classes = [type]; + if (type === "current") { + const date = getFormattedDate(text, type); + if (date.isSame(props.selectedDay, "day")) classes.push(nsDay.is("selected")); + if (date.isSame(now, "day")) classes.push(nsDay.is("today")); + } + return classes; + }; + __expose({ getFormattedDate }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("table", { + class: (0, vue.normalizeClass)([(0, vue.unref)(nsTable).b(), (0, vue.unref)(nsTable).is("range", (0, vue.unref)(isInRange))]), + cellspacing: "0", + cellpadding: "0" + }, [!__props.hideHeader ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("thead", _hoisted_1$68, [(0, vue.createElementVNode)("tr", null, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(weekDays), (day) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("th", { + key: day, + scope: "col" + }, (0, vue.toDisplayString)(day), 1); + }), 128))])])) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createElementVNode)("tbody", null, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(rows), (row, index) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("tr", { + key: index, + class: (0, vue.normalizeClass)({ + [(0, vue.unref)(nsTable).e("row")]: true, + [(0, vue.unref)(nsTable).em("row", "hide-border")]: index === 0 && __props.hideHeader + }) + }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(row, (cell, key) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("td", { + key, + class: (0, vue.normalizeClass)(getCellClass(cell)), + onClick: ($event) => (0, vue.unref)(handlePickDay)(cell) + }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(nsDay).b()) }, [(0, vue.renderSlot)(_ctx.$slots, "date-cell", { data: (0, vue.unref)(getSlotData)(cell) }, () => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(cell.text), 1)])], 2)], 10, _hoisted_2$38); + }), 128))], 2); + }), 128))])], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/calendar/src/date-table.vue + var date_table_default = date_table_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/calendar/src/use-calendar.ts + const adjacentMonth = (start, end) => { + const firstMonthLastDay = start.endOf("month"); + const lastMonthFirstDay = end.startOf("month"); + const lastMonthStartDay = firstMonthLastDay.isSame(lastMonthFirstDay, "week") ? lastMonthFirstDay.add(1, "week") : lastMonthFirstDay; + return [[start, firstMonthLastDay], [lastMonthStartDay.startOf("week"), end]]; + }; + const threeConsecutiveMonth = (start, end) => { + const firstMonthLastDay = start.endOf("month"); + const secondMonthFirstDay = start.add(1, "month").startOf("month"); + const secondMonthStartDay = firstMonthLastDay.isSame(secondMonthFirstDay, "week") ? secondMonthFirstDay.add(1, "week") : secondMonthFirstDay; + const secondMonthLastDay = secondMonthStartDay.endOf("month"); + const lastMonthFirstDay = end.startOf("month"); + const lastMonthStartDay = secondMonthLastDay.isSame(lastMonthFirstDay, "week") ? lastMonthFirstDay.add(1, "week") : lastMonthFirstDay; + return [ + [start, firstMonthLastDay], + [secondMonthStartDay.startOf("week"), secondMonthLastDay], + [lastMonthStartDay.startOf("week"), end] + ]; + }; + const useCalendar = (props, emit, componentName) => { + const { lang } = useLocale(); + const selectedDay = (0, vue.ref)(); + const now = (0, import_dayjs_min.default)().locale(lang.value); + const realSelectedDay = (0, vue.computed)({ + get() { + if (!props.modelValue) return selectedDay.value; + return date.value; + }, + set(val) { + if (!val) return; + selectedDay.value = val; + const result = val.toDate(); + emit(INPUT_EVENT, result); + emit(UPDATE_MODEL_EVENT, result); + } + }); + const validatedRange = (0, vue.computed)(() => { + if (!props.range || !isArray$1(props.range) || props.range.length !== 2 || props.range.some((item) => !isDate(item))) return []; + const [startDayjs, endDayjs] = props.range.map((_) => (0, import_dayjs_min.default)(_).locale(lang.value)); + if (startDayjs.isAfter(endDayjs)) { + /* @__PURE__ */ debugWarn(componentName, "end time should be greater than start time"); + return []; + } + if (startDayjs.isSame(endDayjs, "month")) return calculateValidatedDateRange(startDayjs, endDayjs); + else { + if (startDayjs.add(1, "month").month() !== endDayjs.month()) { + /* @__PURE__ */ debugWarn(componentName, "start time and end time interval must not exceed two months"); + return []; + } + return calculateValidatedDateRange(startDayjs, endDayjs); + } + }); + const date = (0, vue.computed)(() => { + if (!props.modelValue) return realSelectedDay.value || (validatedRange.value.length ? validatedRange.value[0][0] : now); + else return (0, import_dayjs_min.default)(props.modelValue).locale(lang.value); + }); + const prevMonthDayjs = (0, vue.computed)(() => date.value.subtract(1, "month").date(1)); + const nextMonthDayjs = (0, vue.computed)(() => date.value.add(1, "month").date(1)); + const prevYearDayjs = (0, vue.computed)(() => date.value.subtract(1, "year").date(1)); + const nextYearDayjs = (0, vue.computed)(() => date.value.add(1, "year").date(1)); + const calculateValidatedDateRange = (startDayjs, endDayjs) => { + const firstDay = startDayjs.startOf("week"); + const lastDay = endDayjs.endOf("week"); + const firstMonth = firstDay.get("month"); + const lastMonth = lastDay.get("month"); + if (firstMonth === lastMonth) return [[firstDay, lastDay]]; + else if ((firstMonth + 1) % 12 === lastMonth) return adjacentMonth(firstDay, lastDay); + else if (firstMonth + 2 === lastMonth || (firstMonth + 1) % 11 === lastMonth) return threeConsecutiveMonth(firstDay, lastDay); + else { + /* @__PURE__ */ debugWarn(componentName, "start time and end time interval must not exceed two months"); + return []; + } + }; + const pickDay = (day) => { + realSelectedDay.value = day; + }; + const selectDate = (type) => { + const day = { + "prev-month": prevMonthDayjs.value, + "next-month": nextMonthDayjs.value, + "prev-year": prevYearDayjs.value, + "next-year": nextYearDayjs.value, + today: now + }[type]; + if (!day.isSame(date.value, "day")) pickDay(day); + }; + const handleDateChange = (date) => { + if (date === "today") selectDate("today"); + else pickDay(date); + }; + return { + calculateValidatedDateRange, + date, + realSelectedDay, + pickDay, + selectDate, + validatedRange, + handleDateChange + }; + }; + +//#endregion +//#region ../../packages/components/calendar/src/select-controller.ts +/** + * @deprecated Removed after 3.0.0, Use `SelectControllerProps` instead. + */ + const selectControllerProps = buildProps({ + date: { + type: definePropType(Object), + required: true + }, + formatter: { type: definePropType(Function) } + }); + const selectControllerEmits = { "date-change": (date) => isObject$1(date) || isString(date) }; + +//#endregion +//#region ../../packages/components/tag/src/tag.ts +/** + * @deprecated Removed after 3.0.0, Use `TagProps` instead. + */ + const tagProps = buildProps({ + type: { + type: String, + values: [ + "primary", + "success", + "info", + "warning", + "danger" + ], + default: "primary" + }, + closable: Boolean, + disableTransitions: Boolean, + hit: Boolean, + color: String, + size: { + type: String, + values: componentSizes + }, + effect: { + type: String, + values: [ + "dark", + "light", + "plain" + ], + default: "light" + }, + round: Boolean + }); + const tagEmits = { + close: (evt) => evt instanceof MouseEvent, + click: (evt) => evt instanceof MouseEvent + }; + +//#endregion +//#region ../../packages/components/tag/src/tag.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$67 = ["aria-label"]; + const _hoisted_2$37 = ["aria-label"]; + var tag_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTag", + __name: "tag", + props: tagProps, + emits: tagEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const tagSize = useFormSize(); + const { t } = useLocale(); + const ns = useNamespace("tag"); + const containerKls = (0, vue.computed)(() => { + const { type, hit, effect, closable, round } = props; + return [ + ns.b(), + ns.is("closable", closable), + ns.m(type || "primary"), + ns.m(tagSize.value), + ns.m(effect), + ns.is("hit", hit), + ns.is("round", round) + ]; + }); + const handleClose = (event) => { + emit("close", event); + }; + const handleClick = (event) => { + emit("click", event); + }; + const handleVNodeMounted = (vnode) => { + if (vnode?.component?.subTree?.component?.bum) vnode.component.subTree.component.bum = null; + }; + return (_ctx, _cache) => { + return __props.disableTransitions ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 0, + class: (0, vue.normalizeClass)(containerKls.value), + style: (0, vue.normalizeStyle)({ backgroundColor: __props.color }), + onClick: handleClick + }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("content")) }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2), __props.closable ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key: 0, + "aria-label": (0, vue.unref)(t)("el.tag.close"), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("close")), + type: "button", + onClick: (0, vue.withModifiers)(handleClose, ["stop"]) + }, [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(close_default))]), + _: 1 + })], 10, _hoisted_1$67)) : (0, vue.createCommentVNode)("v-if", true)], 6)) : ((0, vue.openBlock)(), (0, vue.createBlock)(vue.Transition, { + key: 1, + name: `${(0, vue.unref)(ns).namespace.value}-zoom-in-center`, + appear: "", + onVnodeMounted: handleVNodeMounted + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", { + class: (0, vue.normalizeClass)(containerKls.value), + style: (0, vue.normalizeStyle)({ backgroundColor: __props.color }), + onClick: handleClick + }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("content")) }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2), __props.closable ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key: 0, + "aria-label": (0, vue.unref)(t)("el.tag.close"), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("close")), + type: "button", + onClick: (0, vue.withModifiers)(handleClose, ["stop"]) + }, [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(close_default))]), + _: 1 + })], 10, _hoisted_2$37)) : (0, vue.createCommentVNode)("v-if", true)], 6)]), + _: 3 + }, 8, ["name"])); + }; + } + }); + +//#endregion +//#region ../../packages/components/tag/src/tag.vue + var tag_default = tag_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/tag/index.ts + const ElTag = withInstall(tag_default); + +//#endregion +//#region ../../packages/components/select-v2/src/useProps.ts + const defaultProps$2 = { + label: "label", + value: "value", + disabled: "disabled", + options: "options" + }; + function useProps(props) { + const aliasProps = (0, vue.ref)({ + ...defaultProps$2, + ...props.props + }); + let cache = { ...props.props }; + (0, vue.watch)(() => props.props, (val) => { + if (!isEqual$1(val, cache)) { + aliasProps.value = { + ...defaultProps$2, + ...val + }; + cache = { ...val }; + } + }, { deep: true }); + const getLabel = (option) => get(option, aliasProps.value.label); + const getValue = (option) => get(option, aliasProps.value.value); + const getDisabled = (option) => get(option, aliasProps.value.disabled); + const getOptions = (option) => get(option, aliasProps.value.options); + return { + aliasProps, + getLabel, + getValue, + getDisabled, + getOptions + }; + } + +//#endregion +//#region ../../packages/components/select/src/token.ts + const selectGroupKey = Symbol("ElSelectGroup"); + const selectKey = Symbol("ElSelect"); + +//#endregion +//#region ../../packages/components/select/src/option.ts + const COMPONENT_NAME$14 = "ElOption"; + const optionProps = buildProps({ + value: { + type: [ + String, + Number, + Boolean, + Object + ], + required: true + }, + label: { type: [String, Number] }, + created: Boolean, + disabled: Boolean + }); + +//#endregion +//#region ../../packages/components/select/src/useOption.ts + function useOption$1(props, states) { + const select = (0, vue.inject)(selectKey); + if (!select) throwError(COMPONENT_NAME$14, "usage: "); + const selectGroup = (0, vue.inject)(selectGroupKey, { disabled: false }); + const itemSelected = (0, vue.computed)(() => { + return contains(castArray$1(select.props.modelValue), props.value); + }); + const limitReached = (0, vue.computed)(() => { + if (select.props.multiple) { + const modelValue = castArray$1(select.props.modelValue ?? []); + return !itemSelected.value && modelValue.length >= select.props.multipleLimit && select.props.multipleLimit > 0; + } else return false; + }); + const currentLabel = (0, vue.computed)(() => { + return props.label ?? (isObject$1(props.value) ? "" : props.value); + }); + const currentValue = (0, vue.computed)(() => { + return props.value || props.label || ""; + }); + const isDisabled = (0, vue.computed)(() => { + return props.disabled || states.groupDisabled || limitReached.value; + }); + const instance = (0, vue.getCurrentInstance)(); + const contains = (arr = [], target) => { + if (!isObject$1(props.value)) return arr && arr.includes(target); + else { + const valueKey = select.props.valueKey; + return arr && arr.some((item) => { + return (0, vue.toRaw)(get(item, valueKey)) === get(target, valueKey); + }); + } + }; + const hoverItem = () => { + if (!isDisabled.value) select.states.hoveringIndex = select.optionsArray.indexOf(instance.proxy); + }; + const updateOption = (query) => { + states.visible = new RegExp(escapeStringRegexp(query), "i").test(String(currentLabel.value)) || props.created; + }; + (0, vue.watch)(() => currentLabel.value, () => { + if (!props.created && !select.props.remote) select.setSelected(); + }); + (0, vue.watch)(() => props.value, (val, oldVal) => { + const { remote, valueKey } = select.props; + if (remote ? val !== oldVal : !isEqual$1(val, oldVal)) { + select.onOptionDestroy(oldVal, instance.proxy); + select.onOptionCreate(instance.proxy); + } + if (!props.created && !remote) { + if (valueKey && isObject$1(val) && isObject$1(oldVal) && val[valueKey] === oldVal[valueKey]) return; + select.setSelected(); + } + }); + (0, vue.watch)(() => selectGroup.disabled, () => { + states.groupDisabled = selectGroup.disabled; + }, { immediate: true }); + return { + select, + currentLabel, + currentValue, + itemSelected, + isDisabled, + hoverItem, + updateOption + }; + } + +//#endregion +//#region ../../packages/components/select/src/option.vue?vue&type=script&lang.ts + var option_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: COMPONENT_NAME$14, + componentName: COMPONENT_NAME$14, + props: optionProps, + setup(props) { + const ns = useNamespace("select"); + const id = useId(); + const containerKls = (0, vue.computed)(() => [ + ns.be("dropdown", "item"), + ns.is("disabled", (0, vue.unref)(isDisabled)), + ns.is("selected", (0, vue.unref)(itemSelected)), + ns.is("hovering", (0, vue.unref)(hover)) + ]); + const states = (0, vue.reactive)({ + index: -1, + groupDisabled: false, + visible: true, + hover: false + }); + const { currentLabel, itemSelected, isDisabled, select, hoverItem, updateOption } = useOption$1(props, states); + const { visible, hover } = (0, vue.toRefs)(states); + const vm = (0, vue.getCurrentInstance)().proxy; + select.onOptionCreate(vm); + (0, vue.onBeforeUnmount)(() => { + const key = vm.value; + (0, vue.nextTick)(() => { + const { selected: selectedOptions } = select.states; + const doesSelected = selectedOptions.some((item) => { + return item.value === vm.value; + }); + if (select.states.cachedOptions.get(key) === vm && !doesSelected) select.states.cachedOptions.delete(key); + }); + select.onOptionDestroy(key, vm); + }); + function selectOptionClick() { + if (!isDisabled.value) select.handleOptionSelect(vm); + } + const handleMousedown = (event) => { + let target = event.target; + const currentTarget = event.currentTarget; + while (target && target !== currentTarget) { + if (isFocusable(target)) return; + target = target.parentElement; + } + event.preventDefault(); + }; + return { + ns, + id, + containerKls, + currentLabel, + itemSelected, + isDisabled, + select, + visible, + hover, + states, + hoverItem, + handleMousedown, + updateOption, + selectOptionClick + }; + } + }); + +//#endregion +//#region ../../packages/components/select/src/option.vue + const _hoisted_1$66 = [ + "id", + "aria-disabled", + "aria-selected" + ]; + function _sfc_render$20(_ctx, _cache, $props, $setup, $data, $options) { + return (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + id: _ctx.id, + class: (0, vue.normalizeClass)(_ctx.containerKls), + role: "option", + "aria-disabled": _ctx.isDisabled || void 0, + "aria-selected": _ctx.itemSelected, + onMousemove: _cache[0] || (_cache[0] = (...args) => _ctx.hoverItem && _ctx.hoverItem(...args)), + onMousedown: _cache[1] || (_cache[1] = (...args) => _ctx.handleMousedown && _ctx.handleMousedown(...args)), + onClick: _cache[2] || (_cache[2] = (0, vue.withModifiers)((...args) => _ctx.selectOptionClick && _ctx.selectOptionClick(...args), ["stop"])) + }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(_ctx.currentLabel), 1)])], 42, _hoisted_1$66)), [[vue.vShow, _ctx.visible]]); + } + var option_default = /* @__PURE__ */ _plugin_vue_export_helper_default(option_vue_vue_type_script_lang_default, [["render", _sfc_render$20]]); + +//#endregion +//#region ../../packages/components/select/src/select-dropdown.vue?vue&type=script&lang.ts + var select_dropdown_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElSelectDropdown", + componentName: "ElSelectDropdown", + setup() { + const select = (0, vue.inject)(selectKey); + const ns = useNamespace("select"); + const popperClass = (0, vue.computed)(() => select.props.popperClass); + const isMultiple = (0, vue.computed)(() => select.props.multiple); + const isFitInputWidth = (0, vue.computed)(() => select.props.fitInputWidth); + const minWidth = (0, vue.ref)(""); + function updateMinWidth() { + const offsetWidth = select.selectRef?.offsetWidth; + if (offsetWidth) minWidth.value = `${offsetWidth - BORDER_HORIZONTAL_WIDTH}px`; + else minWidth.value = ""; + } + (0, vue.onMounted)(() => { + updateMinWidth(); + useResizeObserver(select.selectRef, updateMinWidth); + }); + return { + ns, + minWidth, + popperClass, + isMultiple, + isFitInputWidth + }; + } + }); + +//#endregion +//#region ../../packages/components/select/src/select-dropdown.vue + function _sfc_render$19(_ctx, _cache, $props, $setup, $data, $options) { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + class: (0, vue.normalizeClass)([ + _ctx.ns.b("dropdown"), + _ctx.ns.is("multiple", _ctx.isMultiple), + _ctx.popperClass + ]), + style: (0, vue.normalizeStyle)({ [_ctx.isFitInputWidth ? "width" : "minWidth"]: _ctx.minWidth }) + }, [ + _ctx.$slots.header ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)(_ctx.ns.be("dropdown", "header")) + }, [(0, vue.renderSlot)(_ctx.$slots, "header")], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.renderSlot)(_ctx.$slots, "default"), + _ctx.$slots.footer ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)(_ctx.ns.be("dropdown", "footer")) + }, [(0, vue.renderSlot)(_ctx.$slots, "footer")], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 6); + } + var select_dropdown_default$1 = /* @__PURE__ */ _plugin_vue_export_helper_default(select_dropdown_vue_vue_type_script_lang_default, [["render", _sfc_render$19]]); + +//#endregion +//#region ../../packages/components/select/src/useSelect.ts + const useSelect$2 = (props, emit) => { + const { t } = useLocale(); + const slots = (0, vue.useSlots)(); + const contentId = useId(); + const nsSelect = useNamespace("select"); + const nsInput = useNamespace("input"); + const states = (0, vue.reactive)({ + inputValue: "", + options: /* @__PURE__ */ new Map(), + cachedOptions: /* @__PURE__ */ new Map(), + optionValues: [], + selected: [], + selectionWidth: 0, + collapseItemWidth: 0, + selectedLabel: "", + hoveringIndex: -1, + previousQuery: null, + inputHovering: false, + menuVisibleOnFocus: false, + isBeforeHide: false + }); + const selectRef = (0, vue.ref)(); + const selectionRef = (0, vue.ref)(); + const tooltipRef = (0, vue.ref)(); + const tagTooltipRef = (0, vue.ref)(); + const inputRef = (0, vue.ref)(); + const prefixRef = (0, vue.ref)(); + const suffixRef = (0, vue.ref)(); + const menuRef = (0, vue.ref)(); + const tagMenuRef = (0, vue.ref)(); + const collapseItemRef = (0, vue.ref)(); + const scrollbarRef = (0, vue.ref)(); + const expanded = (0, vue.ref)(false); + const hoverOption = (0, vue.ref)(); + const debouncing = (0, vue.ref)(false); + const { form, formItem } = useFormItem(); + const { inputId } = useFormItemInputId(props, { formItemContext: formItem }); + const { valueOnClear, isEmptyValue } = useEmptyValues(props); + const { isComposing, handleCompositionStart, handleCompositionUpdate, handleCompositionEnd } = useComposition({ afterComposition: (e) => onInput(e) }); + const selectDisabled = useFormDisabled(); + const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, { + disabled: selectDisabled, + afterFocus() { + if (props.automaticDropdown && !expanded.value) { + expanded.value = true; + states.menuVisibleOnFocus = true; + } + }, + beforeBlur(event) { + return tooltipRef.value?.isFocusInsideContent(event) || tagTooltipRef.value?.isFocusInsideContent(event); + }, + afterBlur() { + expanded.value = false; + states.menuVisibleOnFocus = false; + if (props.validateEvent) formItem?.validate?.("blur").catch((err) => /* @__PURE__ */ debugWarn(err)); + } + }); + const hasModelValue = (0, vue.computed)(() => { + return isArray$1(props.modelValue) ? props.modelValue.length > 0 : !isEmptyValue(props.modelValue); + }); + const needStatusIcon = (0, vue.computed)(() => form?.statusIcon ?? false); + const showClearBtn = (0, vue.computed)(() => { + return props.clearable && !selectDisabled.value && hasModelValue.value && (isFocused.value || states.inputHovering); + }); + const iconComponent = (0, vue.computed)(() => props.remote && props.filterable && !props.remoteShowSuffix ? "" : props.suffixIcon); + const iconReverse = (0, vue.computed)(() => nsSelect.is("reverse", !!(iconComponent.value && expanded.value))); + const validateState = (0, vue.computed)(() => formItem?.validateState || ""); + const validateIcon = (0, vue.computed)(() => validateState.value && ValidateComponentsMap[validateState.value]); + const debounce = (0, vue.computed)(() => props.remote ? props.debounce : 0); + const isRemoteSearchEmpty = (0, vue.computed)(() => props.remote && !states.inputValue && states.options.size === 0); + const emptyText = (0, vue.computed)(() => { + if (props.loading) return props.loadingText || t("el.select.loading"); + else { + if (props.filterable && states.inputValue && states.options.size > 0 && filteredOptionsCount.value === 0) return props.noMatchText || t("el.select.noMatch"); + if (states.options.size === 0) return props.noDataText || t("el.select.noData"); + } + return null; + }); + const filteredOptionsCount = (0, vue.computed)(() => optionsArray.value.filter((option) => option.visible).length); + const optionsArray = (0, vue.computed)(() => { + const list = Array.from(states.options.values()); + const newList = []; + states.optionValues.forEach((item) => { + const index = list.findIndex((i) => i.value === item); + if (index > -1) newList.push(list[index]); + }); + return newList.length >= list.length ? newList : list; + }); + const cachedOptionsArray = (0, vue.computed)(() => Array.from(states.cachedOptions.values())); + const showNewOption = (0, vue.computed)(() => { + const hasExistingOption = optionsArray.value.filter((option) => { + return !option.created; + }).some((option) => { + return option.currentLabel === states.inputValue; + }); + return props.filterable && props.allowCreate && states.inputValue !== "" && !hasExistingOption; + }); + const updateOptions = () => { + if (props.filterable && isFunction$1(props.filterMethod)) return; + if (props.filterable && props.remote && isFunction$1(props.remoteMethod)) return; + optionsArray.value.forEach((option) => { + option.updateOption?.(states.inputValue); + }); + }; + const selectSize = useFormSize(); + const collapseTagSize = (0, vue.computed)(() => ["small"].includes(selectSize.value) ? "small" : "default"); + const dropdownMenuVisible = (0, vue.computed)({ + get() { + return expanded.value && (props.loading || !isRemoteSearchEmpty.value || props.remote && !!slots.empty) && (!debouncing.value || !isEmpty(states.previousQuery) || states.options.size > 0); + }, + set(val) { + expanded.value = val; + } + }); + const shouldShowPlaceholder = (0, vue.computed)(() => { + if (props.multiple && !isUndefined(props.modelValue)) return castArray$1(props.modelValue).length === 0 && !states.inputValue; + const value = isArray$1(props.modelValue) ? props.modelValue[0] : props.modelValue; + return props.filterable || isUndefined(value) ? !states.inputValue : true; + }); + const currentPlaceholder = (0, vue.computed)(() => { + const _placeholder = props.placeholder ?? t("el.select.placeholder"); + return props.multiple || !hasModelValue.value ? _placeholder : states.selectedLabel; + }); + const mouseEnterEventName = (0, vue.computed)(() => isIOS ? null : "mouseenter"); + (0, vue.watch)(() => props.modelValue, (val, oldVal) => { + if (props.multiple) { + if (props.filterable && !props.reserveKeyword) { + states.inputValue = ""; + handleQueryChange(""); + } + } + setSelected(); + if (!isEqual$1(val, oldVal) && props.validateEvent) formItem?.validate("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + }, { + flush: "post", + deep: true + }); + (0, vue.watch)(() => expanded.value, (val) => { + if (val) handleQueryChange(states.inputValue); + else { + states.inputValue = ""; + states.previousQuery = null; + states.isBeforeHide = true; + states.menuVisibleOnFocus = false; + } + }); + (0, vue.watch)(() => states.options.entries(), () => { + if (!isClient) return; + setSelected(); + if (props.defaultFirstOption && (props.filterable || props.remote) && filteredOptionsCount.value) checkDefaultFirstOption(); + }, { flush: "post" }); + (0, vue.watch)([() => states.hoveringIndex, optionsArray], ([val]) => { + if (isNumber(val) && val > -1) hoverOption.value = optionsArray.value[val] || {}; + else hoverOption.value = {}; + optionsArray.value.forEach((option) => { + option.hover = hoverOption.value === option; + }); + }); + (0, vue.watchEffect)(() => { + if (states.isBeforeHide) return; + updateOptions(); + }); + const handleQueryChange = (val) => { + if (states.previousQuery === val || isComposing.value) return; + states.previousQuery = val; + if (props.filterable && isFunction$1(props.filterMethod)) props.filterMethod(val); + else if (props.filterable && props.remote && isFunction$1(props.remoteMethod)) props.remoteMethod(val); + if (props.defaultFirstOption && (props.filterable || props.remote) && filteredOptionsCount.value) (0, vue.nextTick)(checkDefaultFirstOption); + else (0, vue.nextTick)(updateHoveringIndex); + }; + /** + * find and highlight first option as default selected + * @remark + * - if the first option in dropdown list is user-created, + * it would be at the end of the optionsArray + * so find it and set hover. + * (NOTE: there must be only one user-created option in dropdown list with query) + * - if there's no user-created option in list, just find the first one as usual + * (NOTE: exclude options that are disabled or in disabled-group) + */ + const checkDefaultFirstOption = () => { + const optionsInDropdown = optionsArray.value.filter((n) => n.visible && !n.disabled && !n.states.groupDisabled); + const userCreatedOption = optionsInDropdown.find((n) => n.created); + const firstOriginOption = optionsInDropdown[0]; + states.hoveringIndex = getValueIndex(optionsArray.value.map((item) => item.value), userCreatedOption || firstOriginOption); + }; + const setSelected = () => { + if (!props.multiple) { + const option = getOption(isArray$1(props.modelValue) ? props.modelValue[0] : props.modelValue); + states.selectedLabel = option.currentLabel; + states.selected = [option]; + return; + } else states.selectedLabel = ""; + const result = []; + if (!isUndefined(props.modelValue)) castArray$1(props.modelValue).forEach((value) => { + result.push(getOption(value)); + }); + states.selected = result; + }; + const getOption = (value) => { + let option; + const isObjectValue = isPlainObject$1(value); + for (let i = states.cachedOptions.size - 1; i >= 0; i--) { + const cachedOption = cachedOptionsArray.value[i]; + if (isObjectValue ? get(cachedOption.value, props.valueKey) === get(value, props.valueKey) : cachedOption.value === value) { + option = { + index: optionsArray.value.filter((opt) => !opt.created).indexOf(cachedOption), + value, + currentLabel: cachedOption.currentLabel, + get isDisabled() { + return cachedOption.isDisabled; + } + }; + break; + } + } + if (option) return option; + return { + index: -1, + value, + currentLabel: isObjectValue ? value.label : value ?? "" + }; + }; + const updateHoveringIndex = () => { + const length = states.selected.length; + if (length > 0) { + const lastOption = states.selected[length - 1]; + states.hoveringIndex = optionsArray.value.findIndex((item) => getValueKey(lastOption) === getValueKey(item)); + } else states.hoveringIndex = -1; + }; + const resetSelectionWidth = () => { + states.selectionWidth = Number.parseFloat(window.getComputedStyle(selectionRef.value).width); + }; + const resetCollapseItemWidth = () => { + states.collapseItemWidth = collapseItemRef.value.getBoundingClientRect().width; + }; + const updateTooltip = () => { + tooltipRef.value?.updatePopper?.(); + }; + const updateTagTooltip = () => { + tagTooltipRef.value?.updatePopper?.(); + }; + const onInputChange = () => { + if (states.inputValue.length > 0 && !expanded.value) expanded.value = true; + handleQueryChange(states.inputValue); + }; + const onInput = (event) => { + states.inputValue = event.target.value; + if (props.remote) { + debouncing.value = true; + debouncedOnInputChange(); + } else return onInputChange(); + }; + const debouncedOnInputChange = useDebounceFn(() => { + onInputChange(); + debouncing.value = false; + }, debounce); + const emitChange = (val) => { + if (!isEqual$1(props.modelValue, val)) emit(CHANGE_EVENT, val); + }; + const getLastNotDisabledIndex = (value) => findLastIndex(value, (it) => { + const option = states.cachedOptions.get(it); + return !option?.disabled && !option?.states.groupDisabled; + }); + const deletePrevTag = (e) => { + const code = getEventCode(e); + if (!props.multiple) return; + if (code === EVENT_CODE.delete) return; + if (e.target.value.length <= 0) { + const value = castArray$1(props.modelValue).slice(); + const lastNotDisabledIndex = getLastNotDisabledIndex(value); + if (lastNotDisabledIndex < 0) return; + const removeTagValue = value[lastNotDisabledIndex]; + value.splice(lastNotDisabledIndex, 1); + emit(UPDATE_MODEL_EVENT, value); + emitChange(value); + emit("remove-tag", removeTagValue); + } + }; + const deleteTag = (event, tag) => { + const index = states.selected.indexOf(tag); + if (index > -1 && !selectDisabled.value) { + const value = castArray$1(props.modelValue).slice(); + value.splice(index, 1); + emit(UPDATE_MODEL_EVENT, value); + emitChange(value); + emit("remove-tag", tag.value); + } + event.stopPropagation(); + focus(); + }; + const deleteSelected = (event) => { + event.stopPropagation(); + const value = props.multiple ? [] : valueOnClear.value; + if (props.multiple) { + for (const item of states.selected) if (item.isDisabled) value.push(item.value); + } + emit(UPDATE_MODEL_EVENT, value); + emitChange(value); + states.hoveringIndex = -1; + expanded.value = false; + emit("clear"); + focus(); + }; + const handleOptionSelect = (option) => { + if (props.multiple) { + const value = castArray$1(props.modelValue ?? []).slice(); + const optionIndex = getValueIndex(value, option); + if (optionIndex > -1) value.splice(optionIndex, 1); + else if (props.multipleLimit <= 0 || value.length < props.multipleLimit) value.push(option.value); + emit(UPDATE_MODEL_EVENT, value); + emitChange(value); + if (option.created) handleQueryChange(""); + if (props.filterable && (option.created || !props.reserveKeyword)) states.inputValue = ""; + } else { + !isEqual$1(props.modelValue, option.value) && emit(UPDATE_MODEL_EVENT, option.value); + emitChange(option.value); + expanded.value = false; + } + focus(); + if (expanded.value) return; + (0, vue.nextTick)(() => { + scrollToOption(option); + }); + }; + const getValueIndex = (arr, option) => { + if (isUndefined(option)) return -1; + if (!isObject$1(option.value)) return arr.indexOf(option.value); + return arr.findIndex((item) => { + return isEqual$1(get(item, props.valueKey), getValueKey(option)); + }); + }; + const scrollToOption = (option) => { + const targetOption = isArray$1(option) ? option[option.length - 1] : option; + let target = null; + if (!isNil(targetOption?.value)) { + const options = optionsArray.value.filter((item) => item.value === targetOption.value); + if (options.length > 0) target = options[0].$el; + } + if (tooltipRef.value && target) { + const menu = tooltipRef.value?.popperRef?.contentRef?.querySelector?.(`.${nsSelect.be("dropdown", "wrap")}`); + if (menu) scrollIntoView(menu, target); + } + scrollbarRef.value?.handleScroll(); + }; + const onOptionCreate = (vm) => { + states.options.set(vm.value, vm); + states.cachedOptions.set(vm.value, vm); + }; + const onOptionDestroy = (key, vm) => { + if (states.options.get(key) === vm) states.options.delete(key); + }; + const popperRef = (0, vue.computed)(() => { + return tooltipRef.value?.popperRef?.contentRef; + }); + const handleMenuEnter = () => { + states.isBeforeHide = false; + (0, vue.nextTick)(() => { + scrollbarRef.value?.update(); + scrollToOption(states.selected); + }); + }; + const focus = () => { + inputRef.value?.focus(); + }; + const blur = () => { + if (expanded.value) { + expanded.value = false; + (0, vue.nextTick)(() => inputRef.value?.blur()); + return; + } + inputRef.value?.blur(); + }; + const handleClearClick = (event) => { + deleteSelected(event); + }; + const handleClickOutside = (event) => { + expanded.value = false; + if (isFocused.value) { + const _event = new FocusEvent("blur", event); + (0, vue.nextTick)(() => handleBlur(_event)); + } + }; + const handleEsc = () => { + if (states.inputValue.length > 0) states.inputValue = ""; + else expanded.value = false; + }; + const toggleMenu = (event) => { + if (selectDisabled.value || props.filterable && expanded.value && event && !suffixRef.value?.contains(event.target)) return; + if (isIOS) states.inputHovering = true; + if (states.menuVisibleOnFocus) states.menuVisibleOnFocus = false; + else expanded.value = !expanded.value; + }; + const selectOption = () => { + if (!expanded.value) toggleMenu(); + else { + const option = optionsArray.value[states.hoveringIndex]; + if (option && !option.isDisabled) handleOptionSelect(option); + } + }; + const getValueKey = (item) => { + return isObject$1(item.value) ? get(item.value, props.valueKey) : item.value; + }; + const optionsAllDisabled = (0, vue.computed)(() => optionsArray.value.filter((option) => option.visible).every((option) => option.isDisabled)); + const showTagList = (0, vue.computed)(() => { + if (!props.multiple) return []; + return props.collapseTags ? states.selected.slice(0, props.maxCollapseTags) : states.selected; + }); + const collapseTagList = (0, vue.computed)(() => { + if (!props.multiple) return []; + return props.collapseTags ? states.selected.slice(props.maxCollapseTags) : []; + }); + const navigateOptions = (direction) => { + if (!expanded.value) { + expanded.value = true; + return; + } + if (states.options.size === 0 || filteredOptionsCount.value === 0 || isComposing.value) return; + if (!optionsAllDisabled.value) { + if (direction === "next") { + states.hoveringIndex++; + if (states.hoveringIndex === states.options.size) states.hoveringIndex = 0; + } else if (direction === "prev") { + states.hoveringIndex--; + if (states.hoveringIndex < 0) states.hoveringIndex = states.options.size - 1; + } + const option = optionsArray.value[states.hoveringIndex]; + if (option.isDisabled || !option.visible) navigateOptions(direction); + (0, vue.nextTick)(() => scrollToOption(hoverOption.value)); + } + }; + const findFocusableIndex = (arr, start, step, len) => { + for (let i = start; i >= 0 && i < len; i += step) { + const obj = arr[i]; + if (!obj?.isDisabled && obj?.visible) return i; + } + return null; + }; + const focusOption = (targetIndex, mode) => { + const len = states.options.size; + if (len === 0) return; + const start = clamp$1(targetIndex, 0, len - 1); + const options = optionsArray.value; + const direction = mode === "up" ? -1 : 1; + const newIndex = findFocusableIndex(options, start, direction, len) ?? findFocusableIndex(options, start - direction, -direction, len); + if (newIndex != null) { + states.hoveringIndex = newIndex; + (0, vue.nextTick)(() => scrollToOption(hoverOption.value)); + } + }; + const handleKeydown = (e) => { + const code = getEventCode(e); + let isPreventDefault = true; + switch (code) { + case EVENT_CODE.up: + navigateOptions("prev"); + break; + case EVENT_CODE.down: + navigateOptions("next"); + break; + case EVENT_CODE.enter: + case EVENT_CODE.numpadEnter: + if (!isComposing.value) selectOption(); + break; + case EVENT_CODE.esc: + handleEsc(); + break; + case EVENT_CODE.backspace: + isPreventDefault = false; + deletePrevTag(e); + return; + case EVENT_CODE.home: + if (!expanded.value) return; + focusOption(0, "down"); + break; + case EVENT_CODE.end: + if (!expanded.value) return; + focusOption(states.options.size - 1, "up"); + break; + case EVENT_CODE.pageUp: + if (!expanded.value) return; + focusOption(states.hoveringIndex - 10, "up"); + break; + case EVENT_CODE.pageDown: + if (!expanded.value) return; + focusOption(states.hoveringIndex + 10, "down"); + break; + default: + isPreventDefault = false; + break; + } + if (isPreventDefault) { + e.preventDefault(); + e.stopPropagation(); + } + }; + const getGapWidth = () => { + if (!selectionRef.value) return 0; + const style = window.getComputedStyle(selectionRef.value); + return Number.parseFloat(style.gap || "6px"); + }; + const tagStyle = (0, vue.computed)(() => { + const gapWidth = getGapWidth(); + const inputSlotWidth = props.filterable ? gapWidth + MINIMUM_INPUT_WIDTH : 0; + return { maxWidth: `${collapseItemRef.value && props.maxCollapseTags === 1 ? states.selectionWidth - states.collapseItemWidth - gapWidth - inputSlotWidth : states.selectionWidth - inputSlotWidth}px` }; + }); + const collapseTagStyle = (0, vue.computed)(() => { + return { maxWidth: `${states.selectionWidth}px` }; + }); + const popupScroll = (data) => { + emit("popup-scroll", data); + }; + useResizeObserver(selectionRef, resetSelectionWidth); + useResizeObserver(wrapperRef, updateTooltip); + useResizeObserver(tagMenuRef, updateTagTooltip); + useResizeObserver(collapseItemRef, resetCollapseItemWidth); + let stop; + (0, vue.watch)(() => dropdownMenuVisible.value, (newVal) => { + if (newVal) stop = useResizeObserver(menuRef, updateTooltip).stop; + else { + stop?.(); + stop = void 0; + } + emit("visible-change", newVal); + }); + (0, vue.onMounted)(() => { + setSelected(); + }); + return { + inputId, + contentId, + nsSelect, + nsInput, + states, + isFocused, + expanded, + optionsArray, + hoverOption, + selectSize, + filteredOptionsCount, + updateTooltip, + updateTagTooltip, + debouncedOnInputChange, + onInput, + deletePrevTag, + deleteTag, + deleteSelected, + handleOptionSelect, + scrollToOption, + hasModelValue, + shouldShowPlaceholder, + currentPlaceholder, + mouseEnterEventName, + needStatusIcon, + showClearBtn, + iconComponent, + iconReverse, + validateState, + validateIcon, + showNewOption, + updateOptions, + collapseTagSize, + setSelected, + selectDisabled, + emptyText, + handleCompositionStart, + handleCompositionUpdate, + handleCompositionEnd, + handleKeydown, + onOptionCreate, + onOptionDestroy, + handleMenuEnter, + focus, + blur, + handleClearClick, + handleClickOutside, + handleEsc, + toggleMenu, + selectOption, + getValueKey, + navigateOptions, + dropdownMenuVisible, + showTagList, + collapseTagList, + popupScroll, + getOption, + tagStyle, + collapseTagStyle, + popperRef, + inputRef, + tooltipRef, + tagTooltipRef, + prefixRef, + suffixRef, + selectRef, + wrapperRef, + selectionRef, + scrollbarRef, + menuRef, + tagMenuRef, + collapseItemRef + }; + }; + +//#endregion +//#region ../../packages/components/select/src/options.ts + var options_default = (0, vue.defineComponent)({ + name: "ElOptions", + setup(_, { slots }) { + const select = (0, vue.inject)(selectKey); + let cachedValueList = []; + return () => { + const children = slots.default?.(); + const valueList = []; + function filterOptions(children) { + if (!isArray$1(children)) return; + children.forEach((item) => { + const name = (item?.type || {})?.name; + if (name === "ElOptionGroup") filterOptions(!isString(item.children) && !isArray$1(item.children) && isFunction$1(item.children?.default) ? item.children?.default() : item.children); + else if (name === "ElOption") valueList.push(item.props?.value); + else if (isArray$1(item.children)) filterOptions(item.children); + }); + } + if (children.length) filterOptions(children[0]?.children); + if (!isEqual$1(valueList, cachedValueList)) { + cachedValueList = valueList; + if (select) select.states.optionValues = valueList; + } + return children; + }; + } + }); + +//#endregion +//#region ../../packages/components/select/src/select.ts + const selectProps = buildProps({ + name: String, + id: String, + modelValue: { + type: definePropType([ + Array, + String, + Number, + Boolean, + Object + ]), + default: void 0 + }, + autocomplete: { + type: String, + default: "off" + }, + automaticDropdown: Boolean, + size: useSizeProp, + effect: { + type: definePropType(String), + default: "light" + }, + disabled: { + type: Boolean, + default: void 0 + }, + clearable: Boolean, + filterable: Boolean, + allowCreate: Boolean, + loading: Boolean, + popperClass: { + type: String, + default: "" + }, + popperStyle: { type: definePropType([String, Object]) }, + popperOptions: { + type: definePropType(Object), + default: () => ({}) + }, + remote: Boolean, + debounce: { + type: Number, + default: 300 + }, + loadingText: String, + noMatchText: String, + noDataText: String, + remoteMethod: { type: definePropType(Function) }, + filterMethod: { type: definePropType(Function) }, + multiple: Boolean, + multipleLimit: { + type: Number, + default: 0 + }, + placeholder: { type: String }, + defaultFirstOption: Boolean, + reserveKeyword: { + type: Boolean, + default: true + }, + valueKey: { + type: String, + default: "value" + }, + collapseTags: Boolean, + collapseTagsTooltip: Boolean, + tagTooltip: { + type: definePropType(Object), + default: () => ({}) + }, + maxCollapseTags: { + type: Number, + default: 1 + }, + teleported: useTooltipContentProps.teleported, + persistent: { + type: Boolean, + default: true + }, + clearIcon: { + type: iconPropType, + default: circle_close_default + }, + fitInputWidth: Boolean, + suffixIcon: { + type: iconPropType, + default: arrow_down_default + }, + tagType: { + ...tagProps.type, + default: "info" + }, + tagEffect: { + ...tagProps.effect, + default: "light" + }, + validateEvent: { + type: Boolean, + default: true + }, + remoteShowSuffix: Boolean, + showArrow: { + type: Boolean, + default: true + }, + offset: { + type: Number, + default: 12 + }, + placement: { + type: definePropType(String), + values: Ee, + default: "bottom-start" + }, + fallbackPlacements: { + type: definePropType(Array), + default: [ + "bottom-start", + "top-start", + "right", + "left" + ] + }, + tabindex: { + type: [String, Number], + default: 0 + }, + appendTo: useTooltipContentProps.appendTo, + options: { type: definePropType(Array) }, + props: { + type: definePropType(Object), + default: () => defaultProps$2 + }, + ...useEmptyValuesProps, + ...useAriaProps(["ariaLabel"]) + }); + const selectEmits = { + [UPDATE_MODEL_EVENT]: (val) => true, + [CHANGE_EVENT]: (val) => true, + "popup-scroll": scrollbarEmits.scroll, + "remove-tag": (val) => true, + "visible-change": (visible) => true, + focus: (evt) => evt instanceof FocusEvent, + blur: (evt) => evt instanceof FocusEvent, + clear: () => true + }; + +//#endregion +//#region ../../packages/components/select/src/option-group.vue?vue&type=script&lang.ts + var option_group_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElOptionGroup", + componentName: "ElOptionGroup", + props: { + label: String, + disabled: Boolean + }, + setup(props) { + const ns = useNamespace("select"); + const groupRef = (0, vue.ref)(); + const instance = (0, vue.getCurrentInstance)(); + const children = (0, vue.ref)([]); + (0, vue.provide)(selectGroupKey, (0, vue.reactive)({ ...(0, vue.toRefs)(props) })); + const visible = (0, vue.computed)(() => children.value.some((option) => option.visible === true)); + const isOption = (node) => node.type.name === "ElOption" && !!node.component?.proxy; + const flattedChildren = (node) => { + const nodes = castArray$1(node); + const children = []; + nodes.forEach((child) => { + if (!(0, vue.isVNode)(child)) return; + if (isOption(child)) children.push(child.component.proxy); + else if (isArray$1(child.children) && child.children.length) children.push(...flattedChildren(child.children)); + else if (child.component?.subTree) children.push(...flattedChildren(child.component.subTree)); + }); + return children; + }; + const updateChildren = () => { + children.value = flattedChildren(instance.subTree); + }; + (0, vue.onMounted)(() => { + updateChildren(); + }); + useMutationObserver(groupRef, updateChildren, { + attributes: true, + subtree: true, + childList: true + }); + return { + groupRef, + visible, + ns + }; + } + }); + +//#endregion +//#region ../../packages/components/select/src/option-group.vue + function _sfc_render$18(_ctx, _cache, $props, $setup, $data, $options) { + return (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("ul", { + ref: "groupRef", + class: (0, vue.normalizeClass)(_ctx.ns.be("group", "wrap")) + }, [(0, vue.createElementVNode)("li", { class: (0, vue.normalizeClass)(_ctx.ns.be("group", "title")) }, (0, vue.toDisplayString)(_ctx.label), 3), (0, vue.createElementVNode)("li", null, [(0, vue.createElementVNode)("ul", { class: (0, vue.normalizeClass)(_ctx.ns.b("group")) }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2)])], 2)), [[vue.vShow, _ctx.visible]]); + } + var option_group_default = /* @__PURE__ */ _plugin_vue_export_helper_default(option_group_vue_vue_type_script_lang_default, [["render", _sfc_render$18]]); + +//#endregion +//#region ../../packages/components/select/src/select.vue?vue&type=script&lang.ts + const COMPONENT_NAME$13 = "ElSelect"; + const warnHandlerMap = /* @__PURE__ */ new WeakMap(); + const createSelectWarnHandler = (appContext) => { + return (...args) => { + const message = args[0]; + if (!message || message.includes("Slot \"default\" invoked outside of the render function") && args[2]?.includes("ElTreeSelect")) return; + const original = warnHandlerMap.get(appContext)?.originalWarnHandler; + if (original) { + original(...args); + return; + } + console.warn(...args); + }; + }; + const getWarnHandlerRecord = (appContext) => { + let record = warnHandlerMap.get(appContext); + if (!record) { + record = { + originalWarnHandler: appContext.config.warnHandler, + handler: createSelectWarnHandler(appContext), + count: 0 + }; + warnHandlerMap.set(appContext, record); + } + return record; + }; + var select_vue_vue_type_script_lang_default$1 = (0, vue.defineComponent)({ + name: COMPONENT_NAME$13, + componentName: COMPONENT_NAME$13, + components: { + ElSelectMenu: select_dropdown_default$1, + ElOption: option_default, + ElOptions: options_default, + ElOptionGroup: option_group_default, + ElTag, + ElScrollbar, + ElTooltip, + ElIcon + }, + directives: { ClickOutside }, + props: selectProps, + emits: [ + UPDATE_MODEL_EVENT, + CHANGE_EVENT, + "remove-tag", + "clear", + "visible-change", + "focus", + "blur", + "popup-scroll" + ], + setup(props, { emit, slots }) { + const instance = (0, vue.getCurrentInstance)(); + const warnRecord = getWarnHandlerRecord(instance.appContext); + warnRecord.count += 1; + instance.appContext.config.warnHandler = warnRecord.handler; + const modelValue = (0, vue.computed)(() => { + const { modelValue: rawModelValue, multiple } = props; + const fallback = multiple ? [] : void 0; + if (isArray$1(rawModelValue)) return multiple ? rawModelValue : fallback; + return multiple ? fallback : rawModelValue; + }); + const _props = (0, vue.reactive)({ + ...(0, vue.toRefs)(props), + modelValue + }); + const API = useSelect$2(_props, emit); + const { calculatorRef, inputStyle } = useCalcInputWidth(); + const { getLabel, getValue, getOptions, getDisabled } = useProps(props); + const getOptionProps = (option) => ({ + label: getLabel(option), + value: getValue(option), + disabled: getDisabled(option) + }); + const flatTreeSelectData = (data) => { + return data.reduce((acc, item) => { + acc.push(item); + if (item.children && item.children.length > 0) acc.push(...flatTreeSelectData(item.children)); + return acc; + }, []); + }; + const manuallyRenderSlots = (vnodes) => { + flattedChildren(vnodes || []).forEach((item) => { + if (isObject$1(item) && (item.type.name === "ElOption" || item.type.name === "ElTree")) { + const _name = item.type.name; + if (_name === "ElTree") flatTreeSelectData(item.props?.data || []).forEach((treeItem) => { + treeItem.currentLabel = treeItem.label ?? (isObject$1(treeItem.value) ? "" : treeItem.value); + API.onOptionCreate(treeItem); + }); + else if (_name === "ElOption") { + const obj = { ...item.props }; + obj.currentLabel = obj.label ?? (isObject$1(obj.value) ? "" : obj.value); + API.onOptionCreate(obj); + } + } + }); + }; + (0, vue.watch)(() => [props.persistent || API.expanded.value || !slots.default ? void 0 : slots.default?.(), modelValue.value], () => { + if (props.persistent || API.expanded.value) return; + if (!slots.default) return; + API.states.options.clear(); + manuallyRenderSlots(slots.default?.()); + }, { immediate: true }); + (0, vue.provide)(selectKey, (0, vue.reactive)({ + props: _props, + states: API.states, + selectRef: API.selectRef, + optionsArray: API.optionsArray, + setSelected: API.setSelected, + handleOptionSelect: API.handleOptionSelect, + onOptionCreate: API.onOptionCreate, + onOptionDestroy: API.onOptionDestroy + })); + const selectedLabel = (0, vue.computed)(() => { + if (!props.multiple) return API.states.selectedLabel; + return API.states.selected.map((i) => i.currentLabel); + }); + (0, vue.onBeforeUnmount)(() => { + const record = warnHandlerMap.get(instance.appContext); + if (!record) return; + record.count -= 1; + if (record.count <= 0) { + instance.appContext.config.warnHandler = record.originalWarnHandler; + warnHandlerMap.delete(instance.appContext); + } + }); + return { + ...API, + modelValue, + selectedLabel, + calculatorRef, + inputStyle, + getLabel, + getValue, + getOptions, + getDisabled, + getOptionProps + }; + } + }); + +//#endregion +//#region ../../packages/components/select/src/select.vue + const _hoisted_1$65 = [ + "id", + "value", + "name", + "disabled", + "autocomplete", + "tabindex", + "readonly", + "aria-activedescendant", + "aria-controls", + "aria-expanded", + "aria-label" + ]; + const _hoisted_2$36 = ["textContent"]; + const _hoisted_3$17 = { key: 1 }; + function _sfc_render$17(_ctx, _cache, $props, $setup, $data, $options) { + const _component_el_tag = (0, vue.resolveComponent)("el-tag"); + const _component_el_tooltip = (0, vue.resolveComponent)("el-tooltip"); + const _component_el_icon = (0, vue.resolveComponent)("el-icon"); + const _component_el_option = (0, vue.resolveComponent)("el-option"); + const _component_el_option_group = (0, vue.resolveComponent)("el-option-group"); + const _component_el_options = (0, vue.resolveComponent)("el-options"); + const _component_el_scrollbar = (0, vue.resolveComponent)("el-scrollbar"); + const _component_el_select_menu = (0, vue.resolveComponent)("el-select-menu"); + const _directive_click_outside = (0, vue.resolveDirective)("click-outside"); + return (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("div", (0, vue.mergeProps)({ + ref: "selectRef", + class: [_ctx.nsSelect.b(), _ctx.nsSelect.m(_ctx.selectSize)] + }, { [(0, vue.toHandlerKey)(_ctx.mouseEnterEventName)]: _cache[11] || (_cache[11] = ($event) => _ctx.states.inputHovering = true) }, { onMouseleave: _cache[12] || (_cache[12] = ($event) => _ctx.states.inputHovering = false) }), [(0, vue.createVNode)(_component_el_tooltip, { + ref: "tooltipRef", + visible: _ctx.dropdownMenuVisible, + placement: _ctx.placement, + teleported: _ctx.teleported, + "popper-class": [_ctx.nsSelect.e("popper"), _ctx.popperClass], + "popper-style": _ctx.popperStyle, + "popper-options": _ctx.popperOptions, + "fallback-placements": _ctx.fallbackPlacements, + effect: _ctx.effect, + pure: "", + trigger: "click", + transition: `${_ctx.nsSelect.namespace.value}-zoom-in-top`, + "stop-popper-mouse-event": false, + "gpu-acceleration": false, + persistent: _ctx.persistent, + "append-to": _ctx.appendTo, + "show-arrow": _ctx.showArrow, + offset: _ctx.offset, + onBeforeShow: _ctx.handleMenuEnter, + onHide: _cache[10] || (_cache[10] = ($event) => _ctx.states.isBeforeHide = false) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + ref: "wrapperRef", + class: (0, vue.normalizeClass)([ + _ctx.nsSelect.e("wrapper"), + _ctx.nsSelect.is("focused", _ctx.isFocused), + _ctx.nsSelect.is("hovering", _ctx.states.inputHovering), + _ctx.nsSelect.is("filterable", _ctx.filterable), + _ctx.nsSelect.is("disabled", _ctx.selectDisabled) + ]), + onClick: _cache[7] || (_cache[7] = (0, vue.withModifiers)((...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args), ["prevent"])) + }, [ + _ctx.$slots.prefix ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + ref: "prefixRef", + class: (0, vue.normalizeClass)(_ctx.nsSelect.e("prefix")) + }, [(0, vue.renderSlot)(_ctx.$slots, "prefix")], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { + ref: "selectionRef", + class: (0, vue.normalizeClass)([_ctx.nsSelect.e("selection"), _ctx.nsSelect.is("near", _ctx.multiple && !_ctx.$slots.prefix && !!_ctx.states.selected.length)]) + }, [ + _ctx.multiple ? (0, vue.renderSlot)(_ctx.$slots, "tag", { + key: 0, + data: _ctx.states.selected, + deleteTag: _ctx.deleteTag, + selectDisabled: _ctx.selectDisabled + }, () => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(_ctx.showTagList, (item) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: _ctx.getValueKey(item), + class: (0, vue.normalizeClass)(_ctx.nsSelect.e("selected-item")) + }, [(0, vue.createVNode)(_component_el_tag, { + closable: !_ctx.selectDisabled && !item.isDisabled, + size: _ctx.collapseTagSize, + type: _ctx.tagType, + effect: _ctx.tagEffect, + "disable-transitions": "", + style: (0, vue.normalizeStyle)(_ctx.tagStyle), + onClose: ($event) => _ctx.deleteTag($event, item) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)(_ctx.nsSelect.e("tags-text")) }, [(0, vue.renderSlot)(_ctx.$slots, "label", { + index: item.index, + label: item.currentLabel, + value: item.value + }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(item.currentLabel), 1)])], 2)]), + _: 2 + }, 1032, [ + "closable", + "size", + "type", + "effect", + "style", + "onClose" + ])], 2); + }), 128)), _ctx.collapseTags && _ctx.states.selected.length > _ctx.maxCollapseTags ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_tooltip, { + key: 0, + ref: "tagTooltipRef", + disabled: _ctx.dropdownMenuVisible || !_ctx.collapseTagsTooltip, + "fallback-placements": _ctx.tagTooltip?.fallbackPlacements ?? [ + "bottom", + "top", + "right", + "left" + ], + effect: _ctx.tagTooltip?.effect ?? _ctx.effect, + placement: _ctx.tagTooltip?.placement ?? "bottom", + "popper-class": _ctx.tagTooltip?.popperClass ?? _ctx.popperClass, + "popper-style": _ctx.tagTooltip?.popperStyle ?? _ctx.popperStyle, + teleported: _ctx.tagTooltip?.teleported ?? _ctx.teleported, + "append-to": _ctx.tagTooltip?.appendTo ?? _ctx.appendTo, + "popper-options": _ctx.tagTooltip?.popperOptions ?? _ctx.popperOptions, + transition: _ctx.tagTooltip?.transition, + "show-after": _ctx.tagTooltip?.showAfter, + "hide-after": _ctx.tagTooltip?.hideAfter, + "auto-close": _ctx.tagTooltip?.autoClose, + offset: _ctx.tagTooltip?.offset + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + ref: "collapseItemRef", + class: (0, vue.normalizeClass)(_ctx.nsSelect.e("selected-item")) + }, [(0, vue.createVNode)(_component_el_tag, { + closable: false, + size: _ctx.collapseTagSize, + type: _ctx.tagType, + effect: _ctx.tagEffect, + "disable-transitions": "", + style: (0, vue.normalizeStyle)(_ctx.collapseTagStyle) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)(_ctx.nsSelect.e("tags-text")) }, " + " + (0, vue.toDisplayString)(_ctx.states.selected.length - _ctx.maxCollapseTags), 3)]), + _: 1 + }, 8, [ + "size", + "type", + "effect", + "style" + ])], 2)]), + content: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + ref: "tagMenuRef", + class: (0, vue.normalizeClass)(_ctx.nsSelect.e("selection")) + }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(_ctx.collapseTagList, (item) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: _ctx.getValueKey(item), + class: (0, vue.normalizeClass)(_ctx.nsSelect.e("selected-item")) + }, [(0, vue.createVNode)(_component_el_tag, { + class: "in-tooltip", + closable: !_ctx.selectDisabled && !item.isDisabled, + size: _ctx.collapseTagSize, + type: _ctx.tagType, + effect: _ctx.tagEffect, + "disable-transitions": "", + onClose: ($event) => _ctx.deleteTag($event, item) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)(_ctx.nsSelect.e("tags-text")) }, [(0, vue.renderSlot)(_ctx.$slots, "label", { + index: item.index, + label: item.currentLabel, + value: item.value + }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(item.currentLabel), 1)])], 2)]), + _: 2 + }, 1032, [ + "closable", + "size", + "type", + "effect", + "onClose" + ])], 2); + }), 128))], 2)]), + _: 3 + }, 8, [ + "disabled", + "fallback-placements", + "effect", + "placement", + "popper-class", + "popper-style", + "teleported", + "append-to", + "popper-options", + "transition", + "show-after", + "hide-after", + "auto-close", + "offset" + ])) : (0, vue.createCommentVNode)("v-if", true)]) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([ + _ctx.nsSelect.e("selected-item"), + _ctx.nsSelect.e("input-wrapper"), + _ctx.nsSelect.is("hidden", !_ctx.filterable || _ctx.selectDisabled || !_ctx.states.inputValue && !_ctx.isFocused) + ]) }, [(0, vue.createElementVNode)("input", { + id: _ctx.inputId, + ref: "inputRef", + value: _ctx.states.inputValue, + type: "text", + name: _ctx.name, + class: (0, vue.normalizeClass)([_ctx.nsSelect.e("input"), _ctx.nsSelect.is(_ctx.selectSize)]), + disabled: _ctx.selectDisabled, + autocomplete: _ctx.autocomplete, + style: (0, vue.normalizeStyle)(_ctx.inputStyle), + tabindex: _ctx.tabindex, + role: "combobox", + readonly: !_ctx.filterable, + spellcheck: "false", + "aria-activedescendant": _ctx.hoverOption?.id || "", + "aria-controls": _ctx.contentId, + "aria-expanded": _ctx.dropdownMenuVisible, + "aria-label": _ctx.ariaLabel, + "aria-autocomplete": "none", + "aria-haspopup": "listbox", + onKeydown: _cache[0] || (_cache[0] = (...args) => _ctx.handleKeydown && _ctx.handleKeydown(...args)), + onCompositionstart: _cache[1] || (_cache[1] = (...args) => _ctx.handleCompositionStart && _ctx.handleCompositionStart(...args)), + onCompositionupdate: _cache[2] || (_cache[2] = (...args) => _ctx.handleCompositionUpdate && _ctx.handleCompositionUpdate(...args)), + onCompositionend: _cache[3] || (_cache[3] = (...args) => _ctx.handleCompositionEnd && _ctx.handleCompositionEnd(...args)), + onInput: _cache[4] || (_cache[4] = (...args) => _ctx.onInput && _ctx.onInput(...args)), + onChange: _cache[5] || (_cache[5] = (0, vue.withModifiers)(() => {}, ["stop"])), + onClick: _cache[6] || (_cache[6] = (0, vue.withModifiers)((...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args), ["stop"])) + }, null, 46, _hoisted_1$65), _ctx.filterable ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 0, + ref: "calculatorRef", + "aria-hidden": "true", + class: (0, vue.normalizeClass)(_ctx.nsSelect.e("input-calculator")), + textContent: (0, vue.toDisplayString)(_ctx.states.inputValue) + }, null, 10, _hoisted_2$36)) : (0, vue.createCommentVNode)("v-if", true)], 2), + _ctx.shouldShowPlaceholder ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)([ + _ctx.nsSelect.e("selected-item"), + _ctx.nsSelect.e("placeholder"), + _ctx.nsSelect.is("transparent", !_ctx.hasModelValue || _ctx.expanded && !_ctx.states.inputValue) + ]) + }, [_ctx.hasModelValue ? (0, vue.renderSlot)(_ctx.$slots, "label", { + key: 0, + index: _ctx.getOption(_ctx.modelValue).index, + label: _ctx.currentPlaceholder, + value: _ctx.modelValue + }, () => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(_ctx.currentPlaceholder), 1)]) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$17, (0, vue.toDisplayString)(_ctx.currentPlaceholder), 1))], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 2), + (0, vue.createElementVNode)("div", { + ref: "suffixRef", + class: (0, vue.normalizeClass)(_ctx.nsSelect.e("suffix")) + }, [ + _ctx.iconComponent && !_ctx.showClearBtn ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_icon, { + key: 0, + class: (0, vue.normalizeClass)([ + _ctx.nsSelect.e("caret"), + _ctx.nsSelect.e("icon"), + _ctx.iconReverse + ]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.iconComponent)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true), + _ctx.showClearBtn && _ctx.clearIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_icon, { + key: 1, + class: (0, vue.normalizeClass)([ + _ctx.nsSelect.e("caret"), + _ctx.nsSelect.e("icon"), + _ctx.nsSelect.e("clear") + ]), + onClick: _ctx.handleClearClick + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.clearIcon)))]), + _: 1 + }, 8, ["class", "onClick"])) : (0, vue.createCommentVNode)("v-if", true), + _ctx.validateState && _ctx.validateIcon && _ctx.needStatusIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_icon, { + key: 2, + class: (0, vue.normalizeClass)([ + _ctx.nsInput.e("icon"), + _ctx.nsInput.e("validateIcon"), + _ctx.nsInput.is("loading", _ctx.validateState === "validating") + ]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.validateIcon)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true) + ], 2) + ], 2)]), + content: (0, vue.withCtx)(() => [(0, vue.createVNode)(_component_el_select_menu, { ref: "menuRef" }, { + default: (0, vue.withCtx)(() => [ + _ctx.$slots.header ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)(_ctx.nsSelect.be("dropdown", "header")), + onClick: _cache[8] || (_cache[8] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, [(0, vue.renderSlot)(_ctx.$slots, "header")], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.withDirectives)((0, vue.createVNode)(_component_el_scrollbar, { + id: _ctx.contentId, + ref: "scrollbarRef", + tag: "ul", + "wrap-class": _ctx.nsSelect.be("dropdown", "wrap"), + "view-class": _ctx.nsSelect.be("dropdown", "list"), + class: (0, vue.normalizeClass)([_ctx.nsSelect.is("empty", _ctx.filteredOptionsCount === 0)]), + role: "listbox", + "aria-label": _ctx.ariaLabel, + "aria-orientation": "vertical", + onScroll: _ctx.popupScroll + }, { + default: (0, vue.withCtx)(() => [_ctx.showNewOption ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_option, { + key: 0, + value: _ctx.states.inputValue, + created: true + }, null, 8, ["value"])) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createVNode)(_component_el_options, null, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(_ctx.options, (option, index) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: index }, [_ctx.getOptions(option)?.length ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_option_group, { + key: 0, + label: _ctx.getLabel(option), + disabled: _ctx.getDisabled(option) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(_ctx.getOptions(option), (item) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(_component_el_option, (0, vue.mergeProps)({ key: _ctx.getValue(item) }, { ref_for: true }, _ctx.getOptionProps(item)), null, 16); + }), 128))]), + _: 2 + }, 1032, ["label", "disabled"])) : ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_option, (0, vue.mergeProps)({ + key: 1, + ref_for: true + }, _ctx.getOptionProps(option)), null, 16))], 64); + }), 128))])]), + _: 3 + })]), + _: 3 + }, 8, [ + "id", + "wrap-class", + "view-class", + "class", + "aria-label", + "onScroll" + ]), [[vue.vShow, _ctx.states.options.size > 0 && !_ctx.loading]]), + _ctx.$slots.loading && _ctx.loading ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)(_ctx.nsSelect.be("dropdown", "loading")) + }, [(0, vue.renderSlot)(_ctx.$slots, "loading")], 2)) : _ctx.loading || _ctx.filteredOptionsCount === 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 2, + class: (0, vue.normalizeClass)(_ctx.nsSelect.be("dropdown", "empty")) + }, [(0, vue.renderSlot)(_ctx.$slots, "empty", {}, () => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(_ctx.emptyText), 1)])], 2)) : (0, vue.createCommentVNode)("v-if", true), + _ctx.$slots.footer ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 3, + class: (0, vue.normalizeClass)(_ctx.nsSelect.be("dropdown", "footer")), + onClick: _cache[9] || (_cache[9] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, [(0, vue.renderSlot)(_ctx.$slots, "footer")], 2)) : (0, vue.createCommentVNode)("v-if", true) + ]), + _: 3 + }, 512)]), + _: 3 + }, 8, [ + "visible", + "placement", + "teleported", + "popper-class", + "popper-style", + "popper-options", + "fallback-placements", + "effect", + "transition", + "persistent", + "append-to", + "show-arrow", + "offset", + "onBeforeShow" + ])], 16)), [[ + _directive_click_outside, + _ctx.handleClickOutside, + _ctx.popperRef + ]]); + } + var select_default$1 = /* @__PURE__ */ _plugin_vue_export_helper_default(select_vue_vue_type_script_lang_default$1, [["render", _sfc_render$17]]); + +//#endregion +//#region ../../packages/components/select/index.ts + const ElSelect = withInstall(select_default$1, { + Option: option_default, + OptionGroup: option_group_default + }); + const ElOption = withNoopInstall(option_default); + const ElOptionGroup = withNoopInstall(option_group_default); + +//#endregion +//#region ../../packages/components/calendar/src/select-controller.vue?vue&type=script&setup=true&lang.ts + var select_controller_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "SelectController", + __name: "select-controller", + props: selectControllerProps, + emits: selectControllerEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const nsSelect = useNamespace("calendar-select"); + const { t, lang } = useLocale(); + const monthOptions = Array.from({ length: 12 }, (_, index) => { + const actualMonth = index + 1; + return { + value: actualMonth, + label: isFunction$1(props.formatter) ? props.formatter(actualMonth, "month") : actualMonth + }; + }); + const yearValue = (0, vue.computed)(() => props.date.year()); + const monthValue = (0, vue.computed)(() => props.date.month() + 1); + const yearOptions = (0, vue.computed)(() => { + const years = []; + for (let i = -10; i < 10; i++) { + const year = yearValue.value + i; + if (year > 0) { + const label = isFunction$1(props.formatter) ? props.formatter(year, "year") : year; + years.push({ + value: year, + label + }); + } + } + return years; + }); + const handleYearChange = (year) => { + emit("date-change", (0, import_dayjs_min.default)(new Date(year, monthValue.value - 1, 1)).locale(lang.value)); + }; + const handleMonthChange = (month) => { + emit("date-change", (0, import_dayjs_min.default)(new Date(yearValue.value, month - 1, 1)).locale(lang.value)); + }; + const selectToday = () => { + emit("date-change", "today"); + }; + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, null, [ + (0, vue.createVNode)((0, vue.unref)(ElSelect), { + "model-value": yearValue.value, + size: "small", + class: (0, vue.normalizeClass)((0, vue.unref)(nsSelect).e("year")), + "validate-event": false, + options: yearOptions.value, + onChange: handleYearChange + }, null, 8, [ + "model-value", + "class", + "options" + ]), + (0, vue.createVNode)((0, vue.unref)(ElSelect), { + "model-value": monthValue.value, + size: "small", + class: (0, vue.normalizeClass)((0, vue.unref)(nsSelect).e("month")), + "validate-event": false, + options: (0, vue.unref)(monthOptions), + onChange: handleMonthChange + }, null, 8, [ + "model-value", + "class", + "options" + ]), + (0, vue.createVNode)((0, vue.unref)(ElButton), { + size: "small", + onClick: selectToday + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.today")), 1)]), + _: 1 + }) + ], 64); + }; + } + }); + +//#endregion +//#region ../../packages/components/calendar/src/select-controller.vue + var select_controller_default = select_controller_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/calendar/src/calendar.vue?vue&type=script&setup=true&lang.ts + const COMPONENT_NAME$12 = "ElCalendar"; + var calendar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$12, + __name: "calendar", + props: calendarProps, + emits: calendarEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const ns = useNamespace("calendar"); + const { calculateValidatedDateRange, date, pickDay, realSelectedDay, selectDate, validatedRange, handleDateChange } = useCalendar(__props, __emit, COMPONENT_NAME$12); + const { t } = useLocale(); + const i18nDate = (0, vue.computed)(() => { + const pickedMonth = `el.datepicker.month${date.value.format("M")}`; + return `${date.value.year()} ${t("el.datepicker.year")} ${t(pickedMonth)}`; + }); + __expose({ + selectedDay: realSelectedDay, + pickDay, + selectDate, + calculateValidatedDateRange + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("header")) }, [(0, vue.renderSlot)(_ctx.$slots, "header", { date: i18nDate.value }, () => [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("title")) }, (0, vue.toDisplayString)(i18nDate.value), 3), (0, vue.unref)(validatedRange).length === 0 && __props.controllerType === "button" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("button-group")) + }, [(0, vue.createVNode)((0, vue.unref)(ElButtonGroup), null, { + default: (0, vue.withCtx)(() => [ + (0, vue.createVNode)((0, vue.unref)(ElButton), { + size: "small", + onClick: _cache[0] || (_cache[0] = ($event) => (0, vue.unref)(selectDate)("prev-month")) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.prevMonth")), 1)]), + _: 1 + }), + (0, vue.createVNode)((0, vue.unref)(ElButton), { + size: "small", + onClick: _cache[1] || (_cache[1] = ($event) => (0, vue.unref)(selectDate)("today")) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.today")), 1)]), + _: 1 + }), + (0, vue.createVNode)((0, vue.unref)(ElButton), { + size: "small", + onClick: _cache[2] || (_cache[2] = ($event) => (0, vue.unref)(selectDate)("next-month")) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.nextMonth")), 1)]), + _: 1 + }) + ]), + _: 1 + })], 2)) : (0, vue.unref)(validatedRange).length === 0 && __props.controllerType === "select" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("select-controller")) + }, [(0, vue.createVNode)(select_controller_default, { + date: (0, vue.unref)(date), + formatter: __props.formatter, + onDateChange: (0, vue.unref)(handleDateChange) + }, null, 8, [ + "date", + "formatter", + "onDateChange" + ])], 2)) : (0, vue.createCommentVNode)("v-if", true)])], 2), (0, vue.unref)(validatedRange).length === 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("body")) + }, [(0, vue.createVNode)(date_table_default, { + date: (0, vue.unref)(date), + "selected-day": (0, vue.unref)(realSelectedDay), + onPick: (0, vue.unref)(pickDay) + }, (0, vue.createSlots)({ _: 2 }, [_ctx.$slots["date-cell"] ? { + name: "date-cell", + fn: (0, vue.withCtx)((data) => [(0, vue.renderSlot)(_ctx.$slots, "date-cell", (0, vue.normalizeProps)((0, vue.guardReactiveProps)(data)))]), + key: "0" + } : void 0]), 1032, [ + "date", + "selected-day", + "onPick" + ])], 2)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("body")) + }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(validatedRange), (range_, index) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(date_table_default, { + key: index, + date: range_[0], + "selected-day": (0, vue.unref)(realSelectedDay), + range: range_, + "hide-header": index !== 0, + onPick: (0, vue.unref)(pickDay) + }, (0, vue.createSlots)({ _: 2 }, [_ctx.$slots["date-cell"] ? { + name: "date-cell", + fn: (0, vue.withCtx)((data) => [(0, vue.renderSlot)(_ctx.$slots, "date-cell", (0, vue.mergeProps)({ ref_for: true }, data))]), + key: "0" + } : void 0]), 1032, [ + "date", + "selected-day", + "range", + "hide-header", + "onPick" + ]); + }), 128))], 2))], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/calendar/src/calendar.vue + var calendar_default = calendar_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/calendar/index.ts + const ElCalendar = withInstall(calendar_default); + +//#endregion +//#region ../../packages/components/card/src/card.ts +/** + * @deprecated Removed after 3.0.0, Use `CardProps` instead. + */ + const cardProps = buildProps({ + header: { + type: String, + default: "" + }, + footer: { + type: String, + default: "" + }, + bodyStyle: { + type: definePropType([ + String, + Object, + Array + ]), + default: "" + }, + headerClass: String, + bodyClass: String, + footerClass: String, + shadow: { + type: String, + values: [ + "always", + "hover", + "never" + ], + default: void 0 + } + }); + const cardContextKey = Symbol("cardContextKey"); + +//#endregion +//#region ../../packages/components/card/src/card.vue?vue&type=script&setup=true&lang.ts + var card_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElCard", + __name: "card", + props: cardProps, + setup(__props) { + const globalConfig = useGlobalConfig("card"); + const ns = useNamespace("card"); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).b(), (0, vue.unref)(ns).is(`${__props.shadow || (0, vue.unref)(globalConfig)?.shadow || "always"}-shadow`)]) }, [ + _ctx.$slots.header || __props.header ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("header"), __props.headerClass]) + }, [(0, vue.renderSlot)(_ctx.$slots, "header", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.header), 1)])], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("body"), __props.bodyClass]), + style: (0, vue.normalizeStyle)(__props.bodyStyle) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 6), + _ctx.$slots.footer || __props.footer ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("footer"), __props.footerClass]) + }, [(0, vue.renderSlot)(_ctx.$slots, "footer", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.footer), 1)])], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/card/src/card.vue + var card_default = card_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/card/index.ts + const ElCard = withInstall(card_default); + +//#endregion +//#region ../../packages/components/carousel/src/carousel.ts +/** + * @deprecated Removed after 3.0.0, Use `CarouselProps` instead. + */ + const carouselProps = buildProps({ + initialIndex: { + type: Number, + default: 0 + }, + height: { + type: String, + default: "" + }, + trigger: { + type: String, + values: ["hover", "click"], + default: "hover" + }, + autoplay: { + type: Boolean, + default: true + }, + interval: { + type: Number, + default: 3e3 + }, + indicatorPosition: { + type: String, + values: [ + "", + "none", + "outside" + ], + default: "" + }, + arrow: { + type: String, + values: [ + "always", + "hover", + "never" + ], + default: "hover" + }, + type: { + type: String, + values: ["", "card"], + default: "" + }, + cardScale: { + type: Number, + default: .83 + }, + loop: { + type: Boolean, + default: true + }, + direction: { + type: String, + values: ["horizontal", "vertical"], + default: "horizontal" + }, + pauseOnHover: { + type: Boolean, + default: true + }, + motionBlur: Boolean + }); + const carouselEmits = { change: (current, prev) => [current, prev].every(isNumber) }; + +//#endregion +//#region ../../packages/components/carousel/src/constants.ts + const carouselContextKey = Symbol("carouselContextKey"); + const CAROUSEL_ITEM_NAME = "ElCarouselItem"; + +//#endregion +//#region ../../packages/components/carousel/src/use-carousel.ts + const THROTTLE_TIME = 300; + const useCarousel = (props, emit, componentName) => { + const { children: items, addChild: addItem, removeChild: removeItem, ChildrenSorter: ItemsSorter } = useOrderedChildren((0, vue.getCurrentInstance)(), CAROUSEL_ITEM_NAME); + const slots = (0, vue.useSlots)(); + const activeIndex = (0, vue.ref)(-1); + const timer = (0, vue.ref)(null); + const hover = (0, vue.ref)(false); + const root = (0, vue.ref)(); + const containerHeight = (0, vue.ref)(0); + const isItemsTwoLength = (0, vue.ref)(true); + const arrowDisplay = (0, vue.computed)(() => props.arrow !== "never" && !(0, vue.unref)(isVertical)); + const hasLabel = (0, vue.computed)(() => { + return items.value.some((item) => item.props.label.toString().length > 0); + }); + const isCardType = (0, vue.computed)(() => props.type === "card"); + const isVertical = (0, vue.computed)(() => props.direction === "vertical"); + const containerStyle = (0, vue.computed)(() => { + if (props.height !== "auto") return { height: props.height }; + return { + height: `${containerHeight.value}px`, + overflow: "hidden" + }; + }); + const throttledArrowClick = throttle((index) => { + setActiveItem(index); + }, THROTTLE_TIME, { trailing: true }); + const throttledIndicatorHover = throttle((index) => { + handleIndicatorHover(index); + }, THROTTLE_TIME); + const isTwoLengthShow = (index) => { + if (!isItemsTwoLength.value) return true; + return activeIndex.value <= 1 ? index <= 1 : index > 1; + }; + function pauseTimer() { + if (timer.value) { + clearInterval(timer.value); + timer.value = null; + } + } + function startTimer() { + if (props.interval <= 0 || !props.autoplay || timer.value) return; + timer.value = setInterval(() => playSlides(), props.interval); + } + const playSlides = () => { + if (activeIndex.value < items.value.length - 1) activeIndex.value = activeIndex.value + 1; + else if (props.loop) activeIndex.value = 0; + }; + function setActiveItem(index) { + if (isString(index)) { + const filteredItems = items.value.filter((item) => item.props.name === index); + if (filteredItems.length > 0) index = items.value.indexOf(filteredItems[0]); + } + index = Number(index); + if (Number.isNaN(index) || index !== Math.floor(index)) { + /* @__PURE__ */ debugWarn(componentName, "index must be integer."); + return; + } + const itemCount = items.value.length; + const oldIndex = activeIndex.value; + if (index < 0) activeIndex.value = props.loop ? itemCount - 1 : 0; + else if (index >= itemCount) activeIndex.value = props.loop ? 0 : itemCount - 1; + else activeIndex.value = index; + if (oldIndex === activeIndex.value) resetItemPosition(oldIndex); + resetTimer(); + } + function resetItemPosition(oldIndex) { + items.value.forEach((item, index) => { + item.translateItem(index, activeIndex.value, oldIndex); + }); + } + function itemInStage(item, index) { + const _items = (0, vue.unref)(items); + const itemCount = _items.length; + if (itemCount === 0 || !item.states.inStage) return false; + const nextItemIndex = index + 1; + const prevItemIndex = index - 1; + const lastItemIndex = itemCount - 1; + const isLastItemActive = _items[lastItemIndex].states.active; + const isFirstItemActive = _items[0].states.active; + const isNextItemActive = _items[nextItemIndex]?.states?.active; + const isPrevItemActive = _items[prevItemIndex]?.states?.active; + if (index === lastItemIndex && isFirstItemActive || isNextItemActive) return "left"; + else if (index === 0 && isLastItemActive || isPrevItemActive) return "right"; + return false; + } + function handleMouseEnter() { + hover.value = true; + if (props.pauseOnHover) pauseTimer(); + } + function handleMouseLeave() { + hover.value = false; + startTimer(); + } + function handleButtonEnter(arrow) { + if ((0, vue.unref)(isVertical)) return; + items.value.forEach((item, index) => { + if (arrow === itemInStage(item, index)) item.states.hover = true; + }); + } + function handleButtonLeave() { + if ((0, vue.unref)(isVertical)) return; + items.value.forEach((item) => { + item.states.hover = false; + }); + } + function handleIndicatorClick(index) { + activeIndex.value = index; + } + function handleIndicatorHover(index) { + if (props.trigger === "hover" && index !== activeIndex.value) activeIndex.value = index; + } + function prev() { + setActiveItem(activeIndex.value - 1); + } + function next() { + setActiveItem(activeIndex.value + 1); + } + function resetTimer() { + pauseTimer(); + if (!props.pauseOnHover || !hover.value) startTimer(); + } + function setContainerHeight(height) { + if (props.height !== "auto") return; + containerHeight.value = height; + } + function PlaceholderItem() { + const defaultSlots = slots.default?.(); + if (!defaultSlots) return null; + const normalizeSlots = flattedChildren(defaultSlots).filter((slot) => { + return (0, vue.isVNode)(slot) && slot.type.name === CAROUSEL_ITEM_NAME; + }); + if (normalizeSlots?.length === 2 && props.loop && !isCardType.value) { + isItemsTwoLength.value = true; + return normalizeSlots; + } + isItemsTwoLength.value = false; + return null; + } + (0, vue.watch)(() => activeIndex.value, (current, prev) => { + resetItemPosition(prev); + if (isItemsTwoLength.value) { + current = current % 2; + prev = prev % 2; + } + if (prev > -1) emit(CHANGE_EVENT, current, prev); + }); + const exposeActiveIndex = (0, vue.computed)({ + get: () => { + return isItemsTwoLength.value ? activeIndex.value % 2 : activeIndex.value; + }, + set: (value) => activeIndex.value = value + }); + (0, vue.watch)(() => props.autoplay, (autoplay) => { + autoplay ? startTimer() : pauseTimer(); + }); + (0, vue.watch)(() => props.loop, () => { + setActiveItem(activeIndex.value); + }); + (0, vue.watch)(() => props.interval, () => { + resetTimer(); + }); + const resizeObserver = (0, vue.shallowRef)(); + (0, vue.onMounted)(() => { + (0, vue.watch)(() => items.value, () => { + if (items.value.length > 0) setActiveItem(props.initialIndex); + }, { immediate: true }); + resizeObserver.value = useResizeObserver(root.value, () => { + resetItemPosition(); + }); + startTimer(); + }); + (0, vue.onBeforeUnmount)(() => { + pauseTimer(); + if (root.value && resizeObserver.value) resizeObserver.value.stop(); + }); + (0, vue.provide)(carouselContextKey, { + root, + isCardType, + isVertical, + items, + loop: props.loop, + cardScale: props.cardScale, + addItem, + removeItem, + setActiveItem, + setContainerHeight + }); + return { + root, + activeIndex, + exposeActiveIndex, + arrowDisplay, + hasLabel, + hover, + isCardType, + items, + isVertical, + containerStyle, + isItemsTwoLength, + handleButtonEnter, + handleButtonLeave, + handleIndicatorClick, + handleMouseEnter, + handleMouseLeave, + setActiveItem, + prev, + next, + PlaceholderItem, + isTwoLengthShow, + ItemsSorter, + throttledArrowClick, + throttledIndicatorHover + }; + }; + +//#endregion +//#region ../../packages/components/carousel/src/carousel.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$64 = ["aria-label"]; + const _hoisted_2$35 = ["aria-label"]; + const _hoisted_3$16 = ["onMouseenter", "onClick"]; + const _hoisted_4$12 = ["aria-label"]; + const _hoisted_5$9 = { key: 0 }; + const _hoisted_6$4 = { + key: 2, + xmlns: "http://www.w3.org/2000/svg", + version: "1.1", + style: { "display": "none" } + }; + const COMPONENT_NAME$11 = "ElCarousel"; + var carousel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$11, + __name: "carousel", + props: carouselProps, + emits: carouselEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const { root, activeIndex, exposeActiveIndex, arrowDisplay, hasLabel, hover, isCardType, items, isVertical, containerStyle, handleButtonEnter, handleButtonLeave, handleIndicatorClick, handleMouseEnter, handleMouseLeave, setActiveItem, prev, next, PlaceholderItem, isTwoLengthShow, ItemsSorter, throttledArrowClick, throttledIndicatorHover } = useCarousel(props, __emit, COMPONENT_NAME$11); + const ns = useNamespace("carousel"); + const { t } = useLocale(); + const carouselClasses = (0, vue.computed)(() => { + const classes = [ns.b(), ns.m(props.direction)]; + if ((0, vue.unref)(isCardType)) classes.push(ns.m("card")); + classes.push(ns.is("vertical-outside", (0, vue.unref)(isVertical) && props.indicatorPosition === "outside")); + return classes; + }); + const indicatorsClasses = (0, vue.computed)(() => { + const classes = [ns.e("indicators"), ns.em("indicators", props.direction)]; + if ((0, vue.unref)(hasLabel)) classes.push(ns.em("indicators", "labels")); + if (props.indicatorPosition === "outside") classes.push(ns.em("indicators", "outside")); + if ((0, vue.unref)(isVertical)) classes.push(ns.em("indicators", "right")); + return classes; + }); + function handleTransitionStart(e) { + if (!props.motionBlur) return; + const kls = (0, vue.unref)(isVertical) ? `${ns.namespace.value}-transitioning-vertical` : `${ns.namespace.value}-transitioning`; + e.currentTarget.classList.add(kls); + } + function handleTransitionEnd(e) { + if (!props.motionBlur) return; + const kls = (0, vue.unref)(isVertical) ? `${ns.namespace.value}-transitioning-vertical` : `${ns.namespace.value}-transitioning`; + e.currentTarget.classList.remove(kls); + } + __expose({ + activeIndex: exposeActiveIndex, + setActiveItem, + prev, + next + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "root", + ref: root, + class: (0, vue.normalizeClass)(carouselClasses.value), + onMouseenter: _cache[6] || (_cache[6] = (0, vue.withModifiers)((...args) => (0, vue.unref)(handleMouseEnter) && (0, vue.unref)(handleMouseEnter)(...args), ["stop"])), + onMouseleave: _cache[7] || (_cache[7] = (0, vue.withModifiers)((...args) => (0, vue.unref)(handleMouseLeave) && (0, vue.unref)(handleMouseLeave)(...args), ["stop"])) + }, [ + (0, vue.unref)(arrowDisplay) ? ((0, vue.openBlock)(), (0, vue.createBlock)(vue.Transition, { + key: 0, + name: "carousel-arrow-left", + persisted: "" + }, { + default: (0, vue.withCtx)(() => [(0, vue.withDirectives)((0, vue.createElementVNode)("button", { + type: "button", + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("arrow"), (0, vue.unref)(ns).em("arrow", "left")]), + "aria-label": (0, vue.unref)(t)("el.carousel.leftArrow"), + onMouseenter: _cache[0] || (_cache[0] = ($event) => (0, vue.unref)(handleButtonEnter)("left")), + onMouseleave: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(handleButtonLeave) && (0, vue.unref)(handleButtonLeave)(...args)), + onClick: _cache[2] || (_cache[2] = (0, vue.withModifiers)(($event) => (0, vue.unref)(throttledArrowClick)((0, vue.unref)(activeIndex) - 1), ["stop"])) + }, [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_left_default))]), + _: 1 + })], 42, _hoisted_1$64), [[vue.vShow, (__props.arrow === "always" || (0, vue.unref)(hover)) && (__props.loop || (0, vue.unref)(activeIndex) > 0)]])]), + _: 1 + })) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.unref)(arrowDisplay) ? ((0, vue.openBlock)(), (0, vue.createBlock)(vue.Transition, { + key: 1, + name: "carousel-arrow-right", + persisted: "" + }, { + default: (0, vue.withCtx)(() => [(0, vue.withDirectives)((0, vue.createElementVNode)("button", { + type: "button", + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("arrow"), (0, vue.unref)(ns).em("arrow", "right")]), + "aria-label": (0, vue.unref)(t)("el.carousel.rightArrow"), + onMouseenter: _cache[3] || (_cache[3] = ($event) => (0, vue.unref)(handleButtonEnter)("right")), + onMouseleave: _cache[4] || (_cache[4] = (...args) => (0, vue.unref)(handleButtonLeave) && (0, vue.unref)(handleButtonLeave)(...args)), + onClick: _cache[5] || (_cache[5] = (0, vue.withModifiers)(($event) => (0, vue.unref)(throttledArrowClick)((0, vue.unref)(activeIndex) + 1), ["stop"])) + }, [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_right_default))]), + _: 1 + })], 42, _hoisted_2$35), [[vue.vShow, (__props.arrow === "always" || (0, vue.unref)(hover)) && (__props.loop || (0, vue.unref)(activeIndex) < (0, vue.unref)(items).length - 1)]])]), + _: 1 + })) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("container")), + style: (0, vue.normalizeStyle)((0, vue.unref)(containerStyle)), + onTransitionstart: handleTransitionStart, + onTransitionend: handleTransitionEnd + }, [(0, vue.createVNode)((0, vue.unref)(PlaceholderItem)), (0, vue.renderSlot)(_ctx.$slots, "default")], 38), + (0, vue.createVNode)((0, vue.unref)(ItemsSorter), null, { + default: (0, vue.withCtx)(() => [__props.indicatorPosition !== "none" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("ul", { + key: 0, + class: (0, vue.normalizeClass)(indicatorsClasses.value) + }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(items), (item, index) => { + return (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + key: index, + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).e("indicator"), + (0, vue.unref)(ns).em("indicator", __props.direction), + (0, vue.unref)(ns).is("active", index === (0, vue.unref)(activeIndex)) + ]), + onMouseenter: ($event) => (0, vue.unref)(throttledIndicatorHover)(index), + onClick: (0, vue.withModifiers)(($event) => (0, vue.unref)(handleIndicatorClick)(index), ["stop"]) + }, [(0, vue.createElementVNode)("button", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("button")), + "aria-label": (0, vue.unref)(t)("el.carousel.indicator", { index: index + 1 }) + }, [(0, vue.unref)(hasLabel) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_5$9, (0, vue.toDisplayString)(item.props.label), 1)) : (0, vue.createCommentVNode)("v-if", true)], 10, _hoisted_4$12)], 42, _hoisted_3$16)), [[vue.vShow, (0, vue.unref)(isTwoLengthShow)(index)]]); + }), 128))], 2)) : (0, vue.createCommentVNode)("v-if", true)]), + _: 1 + }), + __props.motionBlur ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_6$4, [..._cache[8] || (_cache[8] = [(0, vue.createElementVNode)("defs", null, [(0, vue.createElementVNode)("filter", { id: "elCarouselHorizontal" }, [(0, vue.createElementVNode)("feGaussianBlur", { + in: "SourceGraphic", + stdDeviation: "12,0" + })]), (0, vue.createElementVNode)("filter", { id: "elCarouselVertical" }, [(0, vue.createElementVNode)("feGaussianBlur", { + in: "SourceGraphic", + stdDeviation: "0,10" + })])], -1)])])) : (0, vue.createCommentVNode)("v-if", true) + ], 34); + }; + } + }); + +//#endregion +//#region ../../packages/components/carousel/src/carousel.vue + var carousel_default = carousel_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/carousel/src/carousel-item.ts +/** + * @deprecated Removed after 3.0.0, Use `CarouselItemProps` instead. + */ + const carouselItemProps = buildProps({ + name: { + type: String, + default: "" + }, + label: { + type: [String, Number], + default: "" + } + }); + +//#endregion +//#region ../../packages/components/carousel/src/use-carousel-item.ts + const useCarouselItem = (props) => { + const carouselContext = (0, vue.inject)(carouselContextKey); + const instance = (0, vue.getCurrentInstance)(); + if (!carouselContext) /* @__PURE__ */ debugWarn(CAROUSEL_ITEM_NAME, "usage: "); + if (!instance) /* @__PURE__ */ debugWarn(CAROUSEL_ITEM_NAME, "compositional hook can only be invoked inside setups"); + const carouselItemRef = (0, vue.ref)(); + const hover = (0, vue.ref)(false); + const translate = (0, vue.ref)(0); + const scale = (0, vue.ref)(1); + const active = (0, vue.ref)(false); + const ready = (0, vue.ref)(false); + const inStage = (0, vue.ref)(false); + const animating = (0, vue.ref)(false); + const { isCardType, isVertical, cardScale } = carouselContext; + function processIndex(index, activeIndex, length) { + const lastItemIndex = length - 1; + const prevItemIndex = activeIndex - 1; + const nextItemIndex = activeIndex + 1; + const halfItemIndex = length / 2; + if (activeIndex === 0 && index === lastItemIndex) return -1; + else if (activeIndex === lastItemIndex && index === 0) return length; + else if (index < prevItemIndex && activeIndex - index >= halfItemIndex) return length + 1; + else if (index > nextItemIndex && index - activeIndex >= halfItemIndex) return -2; + return index; + } + function calcCardTranslate(index, activeIndex) { + const parentWidth = (0, vue.unref)(isVertical) ? carouselContext.root.value?.offsetHeight || 0 : carouselContext.root.value?.offsetWidth || 0; + if (inStage.value) return parentWidth * ((2 - cardScale) * (index - activeIndex) + 1) / 4; + else if (index < activeIndex) return -(1 + cardScale) * parentWidth / 4; + else return (3 + cardScale) * parentWidth / 4; + } + function calcTranslate(index, activeIndex, isVertical) { + const rootEl = carouselContext.root.value; + if (!rootEl) return 0; + return ((isVertical ? rootEl.offsetHeight : rootEl.offsetWidth) || 0) * (index - activeIndex); + } + const translateItem = (index, activeIndex, oldIndex) => { + const _isCardType = (0, vue.unref)(isCardType); + const carouselItemLength = carouselContext.items.value.length ?? NaN; + const isActive = index === activeIndex; + if (!_isCardType && !isUndefined(oldIndex)) animating.value = isActive || index === oldIndex; + if (!isActive && carouselItemLength > 2 && carouselContext.loop) index = processIndex(index, activeIndex, carouselItemLength); + const _isVertical = (0, vue.unref)(isVertical); + active.value = isActive; + if (_isCardType) { + inStage.value = Math.round(Math.abs(index - activeIndex)) <= 1; + translate.value = calcCardTranslate(index, activeIndex); + scale.value = (0, vue.unref)(active) ? 1 : cardScale; + } else translate.value = calcTranslate(index, activeIndex, _isVertical); + ready.value = true; + if (isActive && carouselItemRef.value) carouselContext.setContainerHeight(carouselItemRef.value.offsetHeight); + }; + function handleItemClick() { + if (carouselContext && (0, vue.unref)(isCardType)) { + const index = carouselContext.items.value.findIndex(({ uid }) => uid === instance.uid); + carouselContext.setActiveItem(index); + } + } + const carouselItemContext = { + props, + states: (0, vue.reactive)({ + hover, + translate, + scale, + active, + ready, + inStage, + animating + }), + uid: instance.uid, + getVnode: () => instance.vnode, + translateItem + }; + carouselContext.addItem(carouselItemContext); + (0, vue.onBeforeUnmount)(() => { + carouselContext.removeItem(carouselItemContext); + }); + return { + carouselItemRef, + active, + animating, + hover, + inStage, + isVertical, + translate, + isCardType, + scale, + ready, + handleItemClick + }; + }; + +//#endregion +//#region ../../packages/components/carousel/src/carousel-item.vue?vue&type=script&setup=true&lang.ts + var carousel_item_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: CAROUSEL_ITEM_NAME, + __name: "carousel-item", + props: carouselItemProps, + setup(__props) { + const props = __props; + const ns = useNamespace("carousel"); + const { carouselItemRef, active, animating, hover, inStage, isVertical, translate, isCardType, scale, ready, handleItemClick } = useCarouselItem(props); + const itemKls = (0, vue.computed)(() => [ + ns.e("item"), + ns.is("active", active.value), + ns.is("in-stage", inStage.value), + ns.is("hover", hover.value), + ns.is("animating", animating.value), + { + [ns.em("item", "card")]: isCardType.value, + [ns.em("item", "card-vertical")]: isCardType.value && isVertical.value + } + ]); + const itemStyle = (0, vue.computed)(() => { + return { transform: [`${`translate${(0, vue.unref)(isVertical) ? "Y" : "X"}`}(${(0, vue.unref)(translate)}px)`, `scale(${(0, vue.unref)(scale)})`].join(" ") }; + }); + return (_ctx, _cache) => { + return (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "carouselItemRef", + ref: carouselItemRef, + class: (0, vue.normalizeClass)(itemKls.value), + style: (0, vue.normalizeStyle)(itemStyle.value), + onClick: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(handleItemClick) && (0, vue.unref)(handleItemClick)(...args)) + }, [(0, vue.unref)(isCardType) ? (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("mask")) + }, null, 2)), [[vue.vShow, !(0, vue.unref)(active)]]) : (0, vue.createCommentVNode)("v-if", true), (0, vue.renderSlot)(_ctx.$slots, "default")], 6)), [[vue.vShow, (0, vue.unref)(ready)]]); + }; + } + }); + +//#endregion +//#region ../../packages/components/carousel/src/carousel-item.vue + var carousel_item_default = carousel_item_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/carousel/index.ts + const ElCarousel = withInstall(carousel_default, { CarouselItem: carousel_item_default }); + const ElCarouselItem = withNoopInstall(carousel_item_default); + +//#endregion +//#region ../../packages/components/cascader-panel/src/config.ts + const CommonProps = buildProps({ + modelValue: { type: definePropType([ + Number, + String, + Array, + Object + ]) }, + options: { + type: definePropType(Array), + default: () => [] + }, + props: { + type: definePropType(Object), + default: () => ({}) + } + }); + const DefaultProps = { + expandTrigger: "click", + multiple: false, + checkStrictly: false, + emitPath: true, + lazy: false, + lazyLoad: NOOP, + value: "value", + label: "label", + children: "children", + leaf: "leaf", + disabled: "disabled", + hoverThreshold: 500, + checkOnClickNode: false, + checkOnClickLeaf: true, + showPrefix: true + }; + /** + * @deprecated Removed after 3.0.0, Use `CascaderPanelProps` instead. + */ + const cascaderPanelProps = buildProps({ + ...CommonProps, + border: { + type: Boolean, + default: true + }, + renderLabel: { type: Function } + }); + const emitChangeFn$2 = (value) => true; + const cascaderPanelEmits = { + [UPDATE_MODEL_EVENT]: emitChangeFn$2, + [CHANGE_EVENT]: emitChangeFn$2, + close: () => true, + "expand-change": (value) => value + }; + const useCascaderConfig = (props) => { + return (0, vue.computed)(() => ({ + ...DefaultProps, + ...props.props + })); + }; + +//#endregion +//#region ../../packages/components/checkbox/src/checkbox.ts +/** + * @deprecated Removed after 3.0.0, Use `CheckboxProps` instead. + */ + const checkboxProps = { + modelValue: { + type: [ + Number, + String, + Boolean + ], + default: void 0 + }, + label: { + type: [ + String, + Boolean, + Number, + Object + ], + default: void 0 + }, + value: { + type: [ + String, + Boolean, + Number, + Object + ], + default: void 0 + }, + indeterminate: Boolean, + disabled: { + type: Boolean, + default: void 0 + }, + checked: Boolean, + name: { + type: String, + default: void 0 + }, + trueValue: { + type: [String, Number], + default: void 0 + }, + falseValue: { + type: [String, Number], + default: void 0 + }, + trueLabel: { + type: [String, Number], + default: void 0 + }, + falseLabel: { + type: [String, Number], + default: void 0 + }, + id: { + type: String, + default: void 0 + }, + border: Boolean, + size: useSizeProp, + tabindex: [String, Number], + validateEvent: { + type: Boolean, + default: true + }, + ariaLabel: String, + ...useAriaProps(["ariaControls"]) + }; + const checkboxEmits = { + [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val), + change: (val) => isString(val) || isNumber(val) || isBoolean(val) + }; + const checkboxPropsDefaults = { + modelValue: void 0, + label: void 0, + value: void 0, + disabled: void 0, + name: void 0, + trueValue: void 0, + falseValue: void 0, + trueLabel: void 0, + falseLabel: void 0, + id: void 0, + validateEvent: true + }; + +//#endregion +//#region ../../packages/components/checkbox/src/constants.ts + const checkboxGroupContextKey = Symbol("checkboxGroupContextKey"); + +//#endregion +//#region ../../packages/components/checkbox/src/composables/use-checkbox-disabled.ts + const useCheckboxDisabled = ({ model, isChecked }) => { + const checkboxGroup = (0, vue.inject)(checkboxGroupContextKey, void 0); + const formContext = (0, vue.inject)(formContextKey, void 0); + const isLimitDisabled = (0, vue.computed)(() => { + const max = checkboxGroup?.max?.value; + const min = checkboxGroup?.min?.value; + return !isUndefined(max) && model.value.length >= max && !isChecked.value || !isUndefined(min) && model.value.length <= min && isChecked.value; + }); + return { + isDisabled: useFormDisabled((0, vue.computed)(() => { + if (checkboxGroup === void 0) return formContext?.disabled ?? isLimitDisabled.value; + else return checkboxGroup.disabled?.value || isLimitDisabled.value; + })), + isLimitDisabled + }; + }; + +//#endregion +//#region ../../packages/components/checkbox/src/composables/use-checkbox-event.ts + const useCheckboxEvent = (props, { model, isLimitExceeded, hasOwnLabel, isDisabled, isLabeledByFormItem }) => { + const checkboxGroup = (0, vue.inject)(checkboxGroupContextKey, void 0); + const { formItem } = useFormItem(); + const { emit } = (0, vue.getCurrentInstance)(); + function getLabeledValue(value) { + return [ + true, + props.trueValue, + props.trueLabel + ].includes(value) ? props.trueValue ?? props.trueLabel ?? true : props.falseValue ?? props.falseLabel ?? false; + } + function emitChangeEvent(checked, e) { + emit(CHANGE_EVENT, getLabeledValue(checked), e); + } + function handleChange(e) { + if (isLimitExceeded.value) return; + const target = e.target; + emit(CHANGE_EVENT, getLabeledValue(target.checked), e); + } + async function onClickRoot(e) { + if (isLimitExceeded.value) return; + if (!hasOwnLabel.value && !isDisabled.value && isLabeledByFormItem.value) { + if (!e.composedPath().some((item) => item.tagName === "LABEL")) { + model.value = getLabeledValue([ + false, + props.falseValue, + props.falseLabel + ].includes(model.value)); + await (0, vue.nextTick)(); + emitChangeEvent(model.value, e); + } + } + } + const validateEvent = (0, vue.computed)(() => checkboxGroup?.validateEvent || props.validateEvent); + (0, vue.watch)(() => props.modelValue, () => { + if (validateEvent.value) formItem?.validate("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + }); + return { + handleChange, + onClickRoot + }; + }; + +//#endregion +//#region ../../packages/components/checkbox/src/composables/use-checkbox-model.ts + const useCheckboxModel = (props) => { + const selfModel = (0, vue.ref)(false); + const { emit, vnode } = (0, vue.getCurrentInstance)(); + const checkboxGroup = (0, vue.inject)(checkboxGroupContextKey, void 0); + const isGroup = (0, vue.computed)(() => isUndefined(checkboxGroup) === false); + const isLimitExceeded = (0, vue.ref)(false); + const isControlled = (0, vue.computed)(() => { + const rawProps = vnode.props ?? {}; + return "modelValue" in rawProps || "model-value" in rawProps; + }); + const model = (0, vue.computed)({ + get() { + return isGroup.value ? checkboxGroup?.modelValue?.value : !isControlled.value ? selfModel.value : props.modelValue; + }, + set(val) { + if (isGroup.value && isArray$1(val)) { + isLimitExceeded.value = checkboxGroup?.max?.value !== void 0 && val.length > checkboxGroup?.max.value && val.length > model.value.length; + isLimitExceeded.value === false && checkboxGroup?.changeEvent?.(val); + } else { + emit(UPDATE_MODEL_EVENT, val); + selfModel.value = val; + } + } + }); + return { + model, + isGroup, + isLimitExceeded + }; + }; + +//#endregion +//#region ../../packages/components/checkbox/src/composables/use-checkbox-status.ts + const useCheckboxStatus = (props, slots, { model }) => { + const checkboxGroup = (0, vue.inject)(checkboxGroupContextKey, void 0); + const isFocused = (0, vue.ref)(false); + const actualValue = (0, vue.computed)(() => { + if (!isPropAbsent(props.value)) return props.value; + return props.label; + }); + const isChecked = (0, vue.computed)(() => { + const value = model.value; + if (isBoolean(value)) return value; + else if (isArray$1(value)) if (isObject$1(actualValue.value)) return value.map(vue.toRaw).some((o) => isEqual$1(o, actualValue.value)); + else return value.map(vue.toRaw).includes(actualValue.value); + else if (value !== null && value !== void 0) return value === props.trueValue || value === props.trueLabel; + else return !!value; + }); + return { + checkboxButtonSize: useFormSize((0, vue.computed)(() => checkboxGroup?.size?.value), { prop: true }), + isChecked, + isFocused, + checkboxSize: useFormSize((0, vue.computed)(() => checkboxGroup?.size?.value)), + hasOwnLabel: (0, vue.computed)(() => { + return !!slots.default || !isPropAbsent(actualValue.value); + }), + actualValue + }; + }; + +//#endregion +//#region ../../packages/components/checkbox/src/composables/use-checkbox.ts + const useCheckbox = (props, slots) => { + const { formItem: elFormItem } = useFormItem(); + const { model, isGroup, isLimitExceeded } = useCheckboxModel(props); + const { isFocused, isChecked, checkboxButtonSize, checkboxSize, hasOwnLabel, actualValue } = useCheckboxStatus(props, slots, { model }); + const { isDisabled } = useCheckboxDisabled({ + model, + isChecked + }); + const { inputId, isLabeledByFormItem } = useFormItemInputId(props, { + formItemContext: elFormItem, + disableIdGeneration: hasOwnLabel, + disableIdManagement: isGroup + }); + const { handleChange, onClickRoot } = useCheckboxEvent(props, { + model, + isLimitExceeded, + hasOwnLabel, + isDisabled, + isLabeledByFormItem + }); + const setStoreValue = () => { + function addToStore() { + if (isArray$1(model.value) && !model.value.includes(actualValue.value)) model.value.push(actualValue.value); + else model.value = props.trueValue ?? props.trueLabel ?? true; + } + props.checked && addToStore(); + }; + setStoreValue(); + useDeprecated({ + from: "label act as value", + replacement: "value", + version: "3.0.0", + scope: "el-checkbox", + ref: "https://element-plus.org/en-US/component/checkbox.html" + }, (0, vue.computed)(() => isGroup.value && isPropAbsent(props.value))); + useDeprecated({ + from: "true-label", + replacement: "true-value", + version: "3.0.0", + scope: "el-checkbox", + ref: "https://element-plus.org/en-US/component/checkbox.html" + }, (0, vue.computed)(() => !!props.trueLabel)); + useDeprecated({ + from: "false-label", + replacement: "false-value", + version: "3.0.0", + scope: "el-checkbox", + ref: "https://element-plus.org/en-US/component/checkbox.html" + }, (0, vue.computed)(() => !!props.falseLabel)); + return { + inputId, + isLabeledByFormItem, + isChecked, + isDisabled, + isFocused, + checkboxButtonSize, + checkboxSize, + hasOwnLabel, + model, + actualValue, + handleChange, + onClickRoot + }; + }; + +//#endregion +//#region ../../packages/components/checkbox/src/checkbox.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$63 = [ + "id", + "indeterminate", + "name", + "tabindex", + "disabled" + ]; + var checkbox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElCheckbox", + __name: "checkbox", + props: checkboxProps, + emits: checkboxEmits, + setup(__props) { + const props = __props; + const { inputId, isLabeledByFormItem, isChecked, isDisabled, isFocused, checkboxSize, hasOwnLabel, model, actualValue, handleChange, onClickRoot } = useCheckbox(props, (0, vue.useSlots)()); + const inputBindings = (0, vue.computed)(() => { + if (props.trueValue || props.falseValue || props.trueLabel || props.falseLabel) return { + "true-value": props.trueValue ?? props.trueLabel ?? true, + "false-value": props.falseValue ?? props.falseLabel ?? false + }; + return { value: actualValue.value }; + }); + const ns = useNamespace("checkbox"); + const compKls = (0, vue.computed)(() => { + return [ + ns.b(), + ns.m(checkboxSize.value), + ns.is("disabled", isDisabled.value), + ns.is("bordered", props.border), + ns.is("checked", isChecked.value) + ]; + }); + const spanKls = (0, vue.computed)(() => { + return [ + ns.e("input"), + ns.is("disabled", isDisabled.value), + ns.is("checked", isChecked.value), + ns.is("indeterminate", props.indeterminate), + ns.is("focus", isFocused.value) + ]; + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(!(0, vue.unref)(hasOwnLabel) && (0, vue.unref)(isLabeledByFormItem) ? "span" : "label"), { + for: !(0, vue.unref)(hasOwnLabel) && (0, vue.unref)(isLabeledByFormItem) ? null : (0, vue.unref)(inputId), + class: (0, vue.normalizeClass)(compKls.value), + "aria-controls": __props.indeterminate ? __props.ariaControls : null, + "aria-checked": __props.indeterminate ? "mixed" : void 0, + "aria-label": __props.ariaLabel, + onClick: (0, vue.unref)(onClickRoot) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)(spanKls.value) }, [(0, vue.withDirectives)((0, vue.createElementVNode)("input", (0, vue.mergeProps)({ + id: (0, vue.unref)(inputId), + "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => (0, vue.isRef)(model) ? model.value = $event : null), + class: (0, vue.unref)(ns).e("original"), + type: "checkbox", + indeterminate: __props.indeterminate, + name: __props.name, + tabindex: __props.tabindex, + disabled: (0, vue.unref)(isDisabled) + }, inputBindings.value, { + onChange: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(handleChange) && (0, vue.unref)(handleChange)(...args)), + onFocus: _cache[2] || (_cache[2] = ($event) => isFocused.value = true), + onBlur: _cache[3] || (_cache[3] = ($event) => isFocused.value = false), + onClick: _cache[4] || (_cache[4] = (0, vue.withModifiers)(() => {}, ["stop"])) + }), null, 16, _hoisted_1$63), [[vue.vModelCheckbox, (0, vue.unref)(model)]]), (0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("inner")) }, null, 2)], 2), (0, vue.unref)(hasOwnLabel) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("label")) + }, [(0, vue.renderSlot)(_ctx.$slots, "default"), !_ctx.$slots.default ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)], 64)) : (0, vue.createCommentVNode)("v-if", true)], 2)) : (0, vue.createCommentVNode)("v-if", true)]), + _: 3 + }, 8, [ + "for", + "class", + "aria-controls", + "aria-checked", + "aria-label", + "onClick" + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/checkbox/src/checkbox.vue + var checkbox_default = checkbox_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/checkbox/src/checkbox-button.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$62 = [ + "name", + "tabindex", + "disabled" + ]; + var checkbox_button_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElCheckboxButton", + __name: "checkbox-button", + props: checkboxProps, + emits: checkboxEmits, + setup(__props) { + const props = __props; + const { isFocused, isChecked, isDisabled, checkboxButtonSize, model, actualValue, handleChange } = useCheckbox(props, (0, vue.useSlots)()); + const inputBindings = (0, vue.computed)(() => { + if (props.trueValue || props.falseValue || props.trueLabel || props.falseLabel) return { + "true-value": props.trueValue ?? props.trueLabel ?? true, + "false-value": props.falseValue ?? props.falseLabel ?? false + }; + return { value: actualValue.value }; + }); + const checkboxGroup = (0, vue.inject)(checkboxGroupContextKey, void 0); + const ns = useNamespace("checkbox"); + const activeStyle = (0, vue.computed)(() => { + const fillValue = checkboxGroup?.fill?.value ?? ""; + return { + backgroundColor: fillValue, + borderColor: fillValue, + color: checkboxGroup?.textColor?.value ?? "", + boxShadow: fillValue ? `-1px 0 0 0 ${fillValue}` : void 0 + }; + }); + const labelKls = (0, vue.computed)(() => { + return [ + ns.b("button"), + ns.bm("button", checkboxButtonSize.value), + ns.is("disabled", isDisabled.value), + ns.is("checked", isChecked.value), + ns.is("focus", isFocused.value) + ]; + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("label", { class: (0, vue.normalizeClass)(labelKls.value) }, [(0, vue.withDirectives)((0, vue.createElementVNode)("input", (0, vue.mergeProps)({ + "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => (0, vue.isRef)(model) ? model.value = $event : null), + class: (0, vue.unref)(ns).be("button", "original"), + type: "checkbox", + name: __props.name, + tabindex: __props.tabindex, + disabled: (0, vue.unref)(isDisabled) + }, inputBindings.value, { + onChange: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(handleChange) && (0, vue.unref)(handleChange)(...args)), + onFocus: _cache[2] || (_cache[2] = ($event) => isFocused.value = true), + onBlur: _cache[3] || (_cache[3] = ($event) => isFocused.value = false), + onClick: _cache[4] || (_cache[4] = (0, vue.withModifiers)(() => {}, ["stop"])) + }), null, 16, _hoisted_1$62), [[vue.vModelCheckbox, (0, vue.unref)(model)]]), _ctx.$slots.default || __props.label ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("button", "inner")), + style: (0, vue.normalizeStyle)((0, vue.unref)(isChecked) ? activeStyle.value : void 0) + }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)])], 6)) : (0, vue.createCommentVNode)("v-if", true)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/checkbox/src/checkbox-button.vue + var checkbox_button_default = checkbox_button_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/checkbox/src/checkbox-group.ts +/** + * @deprecated Removed after 3.0.0, Use `CheckboxGroupProps` instead. + */ + const checkboxGroupProps = buildProps({ + modelValue: { + type: definePropType(Array), + default: () => [] + }, + disabled: { + type: Boolean, + default: void 0 + }, + min: Number, + max: Number, + size: useSizeProp, + fill: String, + textColor: String, + tag: { + type: String, + default: "div" + }, + validateEvent: { + type: Boolean, + default: true + }, + options: { type: definePropType(Array) }, + props: { + type: definePropType(Object), + default: () => checkboxDefaultProps + }, + type: { + type: String, + values: ["checkbox", "button"], + default: "checkbox" + }, + ...useAriaProps(["ariaLabel"]) + }); + const checkboxGroupEmits = { + [UPDATE_MODEL_EVENT]: (val) => isArray$1(val), + change: (val) => isArray$1(val) + }; + const checkboxDefaultProps = { + label: "label", + value: "value", + disabled: "disabled" + }; + +//#endregion +//#region ../../packages/components/checkbox/src/checkbox-group.vue?vue&type=script&setup=true&lang.ts + var checkbox_group_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElCheckboxGroup", + __name: "checkbox-group", + props: checkboxGroupProps, + emits: checkboxGroupEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const ns = useNamespace("checkbox"); + const checkboxDisabled = useFormDisabled(); + const { formItem } = useFormItem(); + const { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, { formItemContext: formItem }); + const changeEvent = async (value) => { + emit(UPDATE_MODEL_EVENT, value); + await (0, vue.nextTick)(); + emit(CHANGE_EVENT, value); + }; + const modelValue = (0, vue.computed)({ + get() { + return props.modelValue; + }, + set(val) { + changeEvent(val); + } + }); + const aliasProps = (0, vue.computed)(() => ({ + ...checkboxDefaultProps, + ...props.props + })); + const getOptionProps = (option) => { + const { label, value, disabled } = aliasProps.value; + const base = { + label: option[label], + value: option[value], + disabled: option[disabled] + }; + return { + ...omit(option, [ + label, + value, + disabled + ]), + ...base + }; + }; + const optionComponent = (0, vue.computed)(() => props.type === "button" ? checkbox_button_default : checkbox_default); + (0, vue.provide)(checkboxGroupContextKey, { + ...pick((0, vue.toRefs)(props), [ + "size", + "min", + "max", + "validateEvent", + "fill", + "textColor" + ]), + disabled: checkboxDisabled, + modelValue, + changeEvent + }); + (0, vue.watch)(() => props.modelValue, (newVal, oldValue) => { + if (props.validateEvent && !isEqual$1(newVal, oldValue)) formItem?.validate("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.tag), { + id: (0, vue.unref)(groupId), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b("group")), + role: "group", + "aria-label": !(0, vue.unref)(isLabeledByFormItem) ? __props.ariaLabel || "checkbox-group" : void 0, + "aria-labelledby": (0, vue.unref)(isLabeledByFormItem) ? (0, vue.unref)(formItem)?.labelId : void 0 + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.options, (item, index) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(optionComponent.value), (0, vue.mergeProps)({ key: index }, { ref_for: true }, getOptionProps(item)), null, 16); + }), 128))])]), + _: 3 + }, 8, [ + "id", + "class", + "aria-label", + "aria-labelledby" + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/checkbox/src/checkbox-group.vue + var checkbox_group_default = checkbox_group_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/checkbox/index.ts + const ElCheckbox = withInstall(checkbox_default, { + CheckboxButton: checkbox_button_default, + CheckboxGroup: checkbox_group_default + }); + const ElCheckboxButton = withNoopInstall(checkbox_button_default); + const ElCheckboxGroup = withNoopInstall(checkbox_group_default); + +//#endregion +//#region ../../packages/components/radio/src/radio.ts +/** + * @deprecated Removed after 3.0.0, Use `RadioPropsBase` instead. + */ + const radioPropsBase = buildProps({ + modelValue: { + type: [ + String, + Number, + Boolean + ], + default: void 0 + }, + size: useSizeProp, + disabled: { + type: Boolean, + default: void 0 + }, + label: { + type: [ + String, + Number, + Boolean + ], + default: void 0 + }, + value: { + type: [ + String, + Number, + Boolean + ], + default: void 0 + }, + name: { + type: String, + default: void 0 + } + }); + /** + * @deprecated Removed after 3.0.0, Use `RadioProps` instead. + */ + const radioProps = buildProps({ + ...radioPropsBase, + border: Boolean + }); + const radioEmits = { + [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val), + [CHANGE_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val) + }; + /** + * @description default values for RadioProps + */ + const radioPropsDefaults = { + modelValue: void 0, + disabled: void 0, + label: void 0, + value: void 0, + name: void 0, + border: false + }; + +//#endregion +//#region ../../packages/components/radio/src/constants.ts + const radioGroupKey = Symbol("radioGroupKey"); + +//#endregion +//#region ../../packages/components/radio/src/use-radio.ts + const useRadio = (props, emit) => { + const radioRef = (0, vue.ref)(); + const radioGroup = (0, vue.inject)(radioGroupKey, void 0); + const isGroup = (0, vue.computed)(() => !!radioGroup); + const actualValue = (0, vue.computed)(() => { + if (!isPropAbsent(props.value)) return props.value; + return props.label; + }); + const modelValue = (0, vue.computed)({ + get() { + return isGroup.value ? radioGroup.modelValue : props.modelValue; + }, + set(val) { + if (isGroup.value) radioGroup.changeEvent(val); + else emit && emit(UPDATE_MODEL_EVENT, val); + radioRef.value.checked = props.modelValue === actualValue.value; + } + }); + const size = useFormSize((0, vue.computed)(() => radioGroup?.size)); + const disabled = useFormDisabled((0, vue.computed)(() => radioGroup?.disabled)); + const focus = (0, vue.ref)(false); + const tabIndex = (0, vue.computed)(() => { + return disabled.value || isGroup.value && modelValue.value !== actualValue.value ? -1 : 0; + }); + useDeprecated({ + from: "label act as value", + replacement: "value", + version: "3.0.0", + scope: "el-radio", + ref: "https://element-plus.org/en-US/component/radio.html" + }, (0, vue.computed)(() => isGroup.value && isPropAbsent(props.value))); + return { + radioRef, + isGroup, + radioGroup, + focus, + size, + disabled, + tabIndex, + modelValue, + actualValue + }; + }; + +//#endregion +//#region ../../packages/components/radio/src/radio.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$61 = [ + "value", + "name", + "disabled", + "checked" + ]; + var radio_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElRadio", + __name: "radio", + props: radioProps, + emits: radioEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const ns = useNamespace("radio"); + const { radioRef, radioGroup, focus, size, disabled, modelValue, actualValue } = useRadio(props, emit); + function handleChange() { + (0, vue.nextTick)(() => emit(CHANGE_EVENT, modelValue.value)); + } + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("label", { class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).b(), + (0, vue.unref)(ns).is("disabled", (0, vue.unref)(disabled)), + (0, vue.unref)(ns).is("focus", (0, vue.unref)(focus)), + (0, vue.unref)(ns).is("bordered", __props.border), + (0, vue.unref)(ns).is("checked", (0, vue.unref)(modelValue) === (0, vue.unref)(actualValue)), + (0, vue.unref)(ns).m((0, vue.unref)(size)) + ]) }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).e("input"), + (0, vue.unref)(ns).is("disabled", (0, vue.unref)(disabled)), + (0, vue.unref)(ns).is("checked", (0, vue.unref)(modelValue) === (0, vue.unref)(actualValue)) + ]) }, [(0, vue.withDirectives)((0, vue.createElementVNode)("input", { + ref_key: "radioRef", + ref: radioRef, + "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => (0, vue.isRef)(modelValue) ? modelValue.value = $event : null), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("original")), + value: (0, vue.unref)(actualValue), + name: __props.name || (0, vue.unref)(radioGroup)?.name, + disabled: (0, vue.unref)(disabled), + checked: (0, vue.unref)(modelValue) === (0, vue.unref)(actualValue), + type: "radio", + onFocus: _cache[1] || (_cache[1] = ($event) => focus.value = true), + onBlur: _cache[2] || (_cache[2] = ($event) => focus.value = false), + onChange: handleChange, + onClick: _cache[3] || (_cache[3] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, null, 42, _hoisted_1$61), [[vue.vModelRadio, (0, vue.unref)(modelValue)]]), (0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("inner")) }, null, 2)], 2), (0, vue.createElementVNode)("span", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("label")), + onKeydown: _cache[4] || (_cache[4] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)])], 34)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/radio/src/radio.vue + var radio_default = radio_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/radio/src/radio-button.ts +/** + * @deprecated Removed after 3.0.0, Use `RadioButtonProps` instead. + */ + const radioButtonProps = buildProps({ ...radioPropsBase }); + /** + * @description default values for RadioButtonProps + */ + const radioButtonPropsDefaults = { + modelValue: void 0, + disabled: void 0, + label: void 0, + value: void 0, + name: void 0 + }; + +//#endregion +//#region ../../packages/components/radio/src/radio-button.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$60 = [ + "value", + "name", + "disabled" + ]; + var radio_button_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElRadioButton", + __name: "radio-button", + props: radioButtonProps, + setup(__props) { + const props = __props; + const ns = useNamespace("radio"); + const { radioRef, focus, size, disabled, modelValue, radioGroup, actualValue } = useRadio(props); + const activeStyle = (0, vue.computed)(() => { + return { + backgroundColor: radioGroup?.fill || "", + borderColor: radioGroup?.fill || "", + boxShadow: radioGroup?.fill ? `-1px 0 0 0 ${radioGroup.fill}` : "", + color: radioGroup?.textColor || "" + }; + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("label", { class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).b("button"), + (0, vue.unref)(ns).is("active", (0, vue.unref)(modelValue) === (0, vue.unref)(actualValue)), + (0, vue.unref)(ns).is("disabled", (0, vue.unref)(disabled)), + (0, vue.unref)(ns).is("focus", (0, vue.unref)(focus)), + (0, vue.unref)(ns).bm("button", (0, vue.unref)(size)) + ]) }, [(0, vue.withDirectives)((0, vue.createElementVNode)("input", { + ref_key: "radioRef", + ref: radioRef, + "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => (0, vue.isRef)(modelValue) ? modelValue.value = $event : null), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("button", "original-radio")), + value: (0, vue.unref)(actualValue), + type: "radio", + name: __props.name || (0, vue.unref)(radioGroup)?.name, + disabled: (0, vue.unref)(disabled), + onFocus: _cache[1] || (_cache[1] = ($event) => focus.value = true), + onBlur: _cache[2] || (_cache[2] = ($event) => focus.value = false), + onClick: _cache[3] || (_cache[3] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, null, 42, _hoisted_1$60), [[vue.vModelRadio, (0, vue.unref)(modelValue)]]), (0, vue.createElementVNode)("span", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("button", "inner")), + style: (0, vue.normalizeStyle)((0, vue.unref)(modelValue) === (0, vue.unref)(actualValue) ? activeStyle.value : {}), + onKeydown: _cache[4] || (_cache[4] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)])], 38)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/radio/src/radio-button.vue + var radio_button_default = radio_button_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/radio/src/radio-group.ts + const radioDefaultProps = { + label: "label", + value: "value", + disabled: "disabled" + }; + /** + * @deprecated Removed after 3.0.0, Use `RadioGroupProps` instead. + */ + const radioGroupProps = buildProps({ + id: { + type: String, + default: void 0 + }, + size: useSizeProp, + disabled: { + type: Boolean, + default: void 0 + }, + modelValue: { + type: [ + String, + Number, + Boolean + ], + default: void 0 + }, + fill: { + type: String, + default: "" + }, + textColor: { + type: String, + default: "" + }, + name: { + type: String, + default: void 0 + }, + validateEvent: { + type: Boolean, + default: true + }, + options: { type: definePropType(Array) }, + props: { + type: definePropType(Object), + default: () => radioDefaultProps + }, + type: { + type: String, + values: ["radio", "button"], + default: "radio" + }, + ...useAriaProps(["ariaLabel"]) + }); + const radioGroupEmits = radioEmits; + /** + * @description default values for RadioGroupProps + */ + const radioGroupPropsDefaults = { + id: void 0, + disabled: void 0, + modelValue: void 0, + fill: "", + textColor: "", + name: void 0, + validateEvent: true, + props: () => radioDefaultProps, + type: "radio" + }; + +//#endregion +//#region ../../packages/components/radio/src/radio-group.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$59 = [ + "id", + "aria-label", + "aria-labelledby" + ]; + var radio_group_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElRadioGroup", + __name: "radio-group", + props: radioGroupProps, + emits: radioGroupEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const ns = useNamespace("radio"); + const radioId = useId(); + const radioGroupRef = (0, vue.ref)(); + const { formItem } = useFormItem(); + const { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, { formItemContext: formItem }); + const changeEvent = (value) => { + emit(UPDATE_MODEL_EVENT, value); + (0, vue.nextTick)(() => emit(CHANGE_EVENT, value)); + }; + (0, vue.onMounted)(() => { + const radios = radioGroupRef.value.querySelectorAll("[type=radio]"); + const firstLabel = radios[0]; + if (!Array.from(radios).some((radio) => radio.checked) && firstLabel) firstLabel.tabIndex = 0; + }); + const name = (0, vue.computed)(() => { + return props.name || radioId.value; + }); + const aliasProps = (0, vue.computed)(() => ({ + ...radioDefaultProps, + ...props.props + })); + const getOptionProps = (option) => { + const { label, value, disabled } = aliasProps.value; + const base = { + label: option[label], + value: option[value], + disabled: option[disabled] + }; + return { + ...omit(option, [ + label, + value, + disabled + ]), + ...base + }; + }; + const optionComponent = (0, vue.computed)(() => props.type === "button" ? radio_button_default : radio_default); + (0, vue.provide)(radioGroupKey, (0, vue.reactive)({ + ...(0, vue.toRefs)(props), + changeEvent, + name + })); + (0, vue.watch)(() => props.modelValue, (newVal, oldValue) => { + if (props.validateEvent && !isEqual$1(newVal, oldValue)) formItem?.validate("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + id: (0, vue.unref)(groupId), + ref_key: "radioGroupRef", + ref: radioGroupRef, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b("group")), + role: "radiogroup", + "aria-label": !(0, vue.unref)(isLabeledByFormItem) ? __props.ariaLabel || "radio-group" : void 0, + "aria-labelledby": (0, vue.unref)(isLabeledByFormItem) ? (0, vue.unref)(formItem).labelId : void 0 + }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.options, (item, index) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(optionComponent.value), (0, vue.mergeProps)({ key: index }, { ref_for: true }, getOptionProps(item)), null, 16); + }), 128))])], 10, _hoisted_1$59); + }; + } + }); + +//#endregion +//#region ../../packages/components/radio/src/radio-group.vue + var radio_group_default = radio_group_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/radio/index.ts + const ElRadio = withInstall(radio_default, { + RadioButton: radio_button_default, + RadioGroup: radio_group_default + }); + const ElRadioGroup = withNoopInstall(radio_group_default); + const ElRadioButton = withNoopInstall(radio_button_default); + +//#endregion +//#region ../../packages/components/cascader-panel/src/types.ts + const CASCADER_PANEL_INJECTION_KEY = Symbol(); + +//#endregion +//#region ../../packages/components/cascader-panel/src/node-content.tsx + function isVNodeEmpty(vnodes) { + return !!(isArray$1(vnodes) ? vnodes.every(({ type }) => type === vue.Comment) : vnodes?.type === vue.Comment); + } + var node_content_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "NodeContent", + props: { node: { + type: Object, + required: true + } }, + setup(props) { + const ns = useNamespace("cascader-node"); + const { renderLabelFn } = (0, vue.inject)(CASCADER_PANEL_INJECTION_KEY); + const { node } = props; + const { data, label: nodeLabel } = node; + const label = () => { + const renderLabel = renderLabelFn?.({ + node, + data + }); + return isVNodeEmpty(renderLabel) ? nodeLabel : renderLabel ?? nodeLabel; + }; + return () => (0, vue.createVNode)("span", { "class": ns.e("label") }, [label()]); + } + }); + +//#endregion +//#region ../../packages/components/cascader-panel/src/node.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$58 = [ + "id", + "aria-haspopup", + "aria-owns", + "aria-expanded", + "tabindex" + ]; + var node_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElCascaderNode", + __name: "node", + props: { + node: { + type: Object, + required: true + }, + menuId: String + }, + emits: ["expand"], + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const panel = (0, vue.inject)(CASCADER_PANEL_INJECTION_KEY); + const ns = useNamespace("cascader-node"); + const isHoverMenu = (0, vue.computed)(() => panel.isHoverMenu); + const multiple = (0, vue.computed)(() => panel.config.multiple); + const checkStrictly = (0, vue.computed)(() => panel.config.checkStrictly); + const showPrefix = (0, vue.computed)(() => panel.config.showPrefix); + const checkedNodeId = (0, vue.computed)(() => panel.checkedNodes[0]?.uid); + const isDisabled = (0, vue.computed)(() => props.node.isDisabled); + const isLeaf = (0, vue.computed)(() => props.node.isLeaf); + const expandable = (0, vue.computed)(() => checkStrictly.value && !isLeaf.value || !isDisabled.value); + const inExpandingPath = (0, vue.computed)(() => isInPath(panel.expandingNode)); + const inCheckedPath = (0, vue.computed)(() => checkStrictly.value && panel.checkedNodes.some(isInPath)); + const isInPath = (node) => { + const { level, uid } = props.node; + return node?.pathNodes[level - 1]?.uid === uid; + }; + const doExpand = () => { + if (inExpandingPath.value) return; + panel.expandNode(props.node); + }; + const doCheck = (checked) => { + const { node } = props; + if (checked === node.checked) return; + panel.handleCheckChange(node, checked); + }; + const doLoad = () => { + panel.lazyLoad(props.node, () => { + if (!isLeaf.value) doExpand(); + }); + }; + const handleHoverExpand = (e) => { + if (!isHoverMenu.value) return; + handleExpand(); + !isLeaf.value && emit("expand", e); + }; + const handleExpand = () => { + const { node } = props; + if (!expandable.value || node.loading) return; + node.loaded ? doExpand() : doLoad(); + }; + const handleClick = () => { + if (isLeaf.value && !isDisabled.value && !checkStrictly.value && !multiple.value) handleCheck(true); + else if ((panel.config.checkOnClickNode && (multiple.value || checkStrictly.value) || isLeaf.value && panel.config.checkOnClickLeaf) && !isDisabled.value) handleSelectCheck(!props.node.checked); + else if (!isHoverMenu.value) handleExpand(); + }; + const handleSelectCheck = (checked) => { + if (checkStrictly.value) { + doCheck(checked); + if (props.node.loaded) doExpand(); + } else handleCheck(checked); + }; + const handleCheck = (checked) => { + if (!props.node.loaded) doLoad(); + else { + doCheck(checked); + !checkStrictly.value && doExpand(); + } + }; + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + id: `${__props.menuId}-${__props.node.uid}`, + role: "menuitem", + "aria-haspopup": !isLeaf.value, + "aria-owns": isLeaf.value ? void 0 : __props.menuId, + "aria-expanded": inExpandingPath.value, + tabindex: expandable.value ? -1 : void 0, + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).b(), + (0, vue.unref)(ns).is("selectable", checkStrictly.value), + (0, vue.unref)(ns).is("active", __props.node.checked), + (0, vue.unref)(ns).is("disabled", !expandable.value), + inExpandingPath.value && "in-active-path", + inCheckedPath.value && "in-checked-path" + ]), + onMouseenter: handleHoverExpand, + onFocus: handleHoverExpand, + onClick: handleClick + }, [ + (0, vue.createCommentVNode)(" prefix "), + multiple.value && showPrefix.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElCheckbox), { + key: 0, + "model-value": __props.node.checked, + indeterminate: __props.node.indeterminate, + disabled: isDisabled.value, + onClick: _cache[0] || (_cache[0] = (0, vue.withModifiers)(() => {}, ["stop"])), + "onUpdate:modelValue": handleSelectCheck + }, null, 8, [ + "model-value", + "indeterminate", + "disabled" + ])) : checkStrictly.value && showPrefix.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElRadio), { + key: 1, + "model-value": checkedNodeId.value, + label: __props.node.uid, + disabled: isDisabled.value, + "onUpdate:modelValue": handleSelectCheck, + onClick: _cache[1] || (_cache[1] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createCommentVNode)("\n Add an empty element to avoid render label,\n do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485\n "), _cache[2] || (_cache[2] = (0, vue.createElementVNode)("span", null, null, -1))]), + _: 1 + }, 8, [ + "model-value", + "label", + "disabled" + ])) : isLeaf.value && __props.node.checked ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 2, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("prefix")) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(check_default))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createCommentVNode)(" content "), + (0, vue.createVNode)((0, vue.unref)(node_content_default), { node: __props.node }, null, 8, ["node"]), + (0, vue.createCommentVNode)(" postfix "), + !isLeaf.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 3 }, [__props.node.loading ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).is("loading"), (0, vue.unref)(ns).e("postfix")]) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(loading_default))]), + _: 1 + }, 8, ["class"])) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 1, + class: (0, vue.normalizeClass)(["arrow-right", (0, vue.unref)(ns).e("postfix")]) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_right_default))]), + _: 1 + }, 8, ["class"]))], 64)) : (0, vue.createCommentVNode)("v-if", true) + ], 42, _hoisted_1$58); + }; + } + }); + +//#endregion +//#region ../../packages/components/cascader-panel/src/node.vue + var node_default = node_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/cascader-panel/src/menu.vue?vue&type=script&setup=true&lang.ts + var menu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElCascaderMenu", + __name: "menu", + props: { + nodes: { + type: Array, + required: true + }, + index: { + type: Number, + required: true + } + }, + setup(__props) { + const props = __props; + const instance = (0, vue.getCurrentInstance)(); + const ns = useNamespace("cascader-menu"); + const { t } = useLocale(); + const id = useId(); + let activeNode; + let hoverTimer; + const panel = (0, vue.inject)(CASCADER_PANEL_INJECTION_KEY); + const hoverZone = (0, vue.ref)(); + const isEmpty = (0, vue.computed)(() => !props.nodes.length); + const isLoading = (0, vue.computed)(() => !panel.initialLoaded); + const menuId = (0, vue.computed)(() => `${id.value}-${props.index}`); + const handleExpand = (e) => { + activeNode = e.target; + }; + const handleMouseMove = (e) => { + if (!panel.isHoverMenu || !activeNode || !hoverZone.value) return; + if (activeNode.contains(e.target)) { + clearHoverTimer(); + const el = instance.vnode.el; + const { left } = el.getBoundingClientRect(); + const { offsetWidth, offsetHeight } = el; + const startX = e.clientX - left; + const top = activeNode.offsetTop; + const bottom = top + activeNode.offsetHeight; + const scrollTop = el.querySelector(`.${ns.e("wrap")}`)?.scrollTop || 0; + hoverZone.value.innerHTML = ` + + + `; + } else if (!hoverTimer) hoverTimer = window.setTimeout(clearHoverZone, panel.config.hoverThreshold); + }; + const clearHoverTimer = () => { + if (!hoverTimer) return; + clearTimeout(hoverTimer); + hoverTimer = void 0; + }; + const clearHoverZone = () => { + if (!hoverZone.value) return; + hoverZone.value.innerHTML = ""; + clearHoverTimer(); + }; + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElScrollbar), { + key: menuId.value, + tag: "ul", + role: "menu", + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()), + "wrap-class": (0, vue.unref)(ns).e("wrap"), + "view-class": [(0, vue.unref)(ns).e("list"), (0, vue.unref)(ns).is("empty", isEmpty.value)], + onMousemove: handleMouseMove, + onMouseleave: clearHoverZone + }, { + default: (0, vue.withCtx)(() => [ + ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.nodes, (node) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(node_default, { + key: node.uid, + node, + "menu-id": menuId.value, + onExpand: handleExpand + }, null, 8, ["node", "menu-id"]); + }), 128)), + isLoading.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("empty-text")) + }, [(0, vue.createVNode)((0, vue.unref)(ElIcon), { + size: "14", + class: (0, vue.normalizeClass)((0, vue.unref)(ns).is("loading")) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(loading_default))]), + _: 1 + }, 8, ["class"]), (0, vue.createTextVNode)(" " + (0, vue.toDisplayString)((0, vue.unref)(t)("el.cascader.loading")), 1)], 2)) : isEmpty.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("empty-text")) + }, [(0, vue.renderSlot)(_ctx.$slots, "empty", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.cascader.noData")), 1)])], 2)) : (0, vue.unref)(panel)?.isHoverMenu ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 2 }, [(0, vue.createCommentVNode)(" eslint-disable vue/html-self-closing "), ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", { + ref_key: "hoverZone", + ref: hoverZone, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("hover-zone")) + }, null, 2))], 2112)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createCommentVNode)(" eslint-enable vue/html-self-closing ") + ]), + _: 3 + }, 8, [ + "class", + "wrap-class", + "view-class" + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/cascader-panel/src/menu.vue + var menu_default$1 = menu_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/cascader-panel/src/node.ts + let uid = 0; + const calculatePathNodes = (node) => { + const nodes = [node]; + let { parent } = node; + while (parent) { + nodes.unshift(parent); + parent = parent.parent; + } + return nodes; + }; + var Node$2 = class Node$2 { + constructor(data, config, parent, root = false) { + this.data = data; + this.config = config; + this.parent = parent; + this.root = root; + this.uid = uid++; + this.checked = false; + this.indeterminate = false; + this.loading = false; + const { value: valueKey, label: labelKey, children: childrenKey } = config; + const childrenData = data[childrenKey]; + const pathNodes = calculatePathNodes(this); + this.level = root ? 0 : parent ? parent.level + 1 : 1; + this.value = data[valueKey]; + this.label = data[labelKey]; + this.pathNodes = pathNodes; + this.pathValues = pathNodes.map((node) => node.value); + this.pathLabels = pathNodes.map((node) => node.label); + this.childrenData = childrenData; + this.children = (childrenData || []).map((child) => new Node$2(child, config, this)); + this.loaded = !config.lazy || this.isLeaf || !isEmpty(childrenData); + this.text = ""; + } + get isDisabled() { + const { data, parent, config } = this; + const { disabled, checkStrictly } = config; + return (isFunction$1(disabled) ? disabled(data, this) : !!data[disabled]) || !checkStrictly && !!parent?.isDisabled; + } + get isLeaf() { + const { data, config, childrenData, loaded } = this; + const { lazy, leaf } = config; + const isLeaf = isFunction$1(leaf) ? leaf(data, this) : data[leaf]; + return isUndefined(isLeaf) ? lazy && !loaded ? false : !(isArray$1(childrenData) && childrenData.length) : !!isLeaf; + } + get valueByOption() { + return this.config.emitPath ? this.pathValues : this.value; + } + appendChild(childData) { + const { childrenData, children } = this; + const node = new Node$2(childData, this.config, this); + if (isArray$1(childrenData)) childrenData.push(childData); + else this.childrenData = [childData]; + children.push(node); + return node; + } + calcText(allLevels, separator) { + const text = allLevels ? this.pathLabels.join(separator) : this.label; + this.text = text; + return text; + } + broadcast(checked) { + this.children.forEach((child) => { + if (child) { + child.broadcast(checked); + child.onParentCheck?.(checked); + } + }); + } + emit() { + const { parent } = this; + if (parent) { + parent.onChildCheck?.(); + parent.emit(); + } + } + onParentCheck(checked) { + if (!this.isDisabled) this.setCheckState(checked); + } + onChildCheck() { + const { children } = this; + const validChildren = children.filter((child) => !child.isDisabled); + const checked = validChildren.length ? validChildren.every((child) => child.checked) : false; + this.setCheckState(checked); + } + setCheckState(checked) { + const totalNum = this.children.length; + const checkedNum = this.children.reduce((c, p) => { + return c + (p.checked ? 1 : p.indeterminate ? .5 : 0); + }, 0); + this.checked = this.loaded && this.children.filter((child) => !child.isDisabled).every((child) => child.loaded && child.checked) && checked; + this.indeterminate = this.loaded && checkedNum !== totalNum && checkedNum > 0; + } + doCheck(checked) { + if (this.checked === checked) return; + const { checkStrictly, multiple } = this.config; + if (checkStrictly || !multiple) this.checked = checked; + else { + this.broadcast(checked); + this.setCheckState(checked); + this.emit(); + } + } + }; + +//#endregion +//#region ../../packages/components/cascader-panel/src/store.ts + const flatNodes = (nodes, leafOnly) => { + return nodes.reduce((res, node) => { + if (node.isLeaf) res.push(node); + else { + !leafOnly && res.push(node); + res = res.concat(flatNodes(node.children, leafOnly)); + } + return res; + }, []); + }; + var Store = class { + constructor(data, config) { + this.config = config; + const nodes = (data || []).map((nodeData) => new Node$2(nodeData, this.config)); + this.nodes = nodes; + this.allNodes = flatNodes(nodes, false); + this.leafNodes = flatNodes(nodes, true); + } + getNodes() { + return this.nodes; + } + getFlattedNodes(leafOnly) { + return leafOnly ? this.leafNodes : this.allNodes; + } + appendNode(nodeData, parentNode) { + const node = parentNode ? parentNode.appendChild(nodeData) : new Node$2(nodeData, this.config); + if (!parentNode) this.nodes.push(node); + this.appendAllNodesAndLeafNodes(node); + } + appendNodes(nodeDataList, parentNode) { + if (nodeDataList.length > 0) nodeDataList.forEach((nodeData) => this.appendNode(nodeData, parentNode)); + else parentNode && parentNode.isLeaf && this.leafNodes.push(parentNode); + } + appendAllNodesAndLeafNodes(node) { + this.allNodes.push(node); + node.isLeaf && this.leafNodes.push(node); + if (node.children) node.children.forEach((subNode) => { + this.appendAllNodesAndLeafNodes(subNode); + }); + } + getNodeByValue(value, leafOnly = false) { + if (isPropAbsent(value)) return null; + return this.getFlattedNodes(leafOnly).find((node) => isEqual$1(node.value, value) || isEqual$1(node.pathValues, value)) || null; + } + getSameNode(node) { + if (!node) return null; + return this.getFlattedNodes(false).find(({ value, level }) => isEqual$1(node.value, value) && node.level === level) || null; + } + }; + +//#endregion +//#region ../../packages/components/cascader-panel/src/utils.ts + const getMenuIndex = (el) => { + if (!el) return 0; + const pieces = el.id.split("-"); + return Number(pieces[pieces.length - 2]); + }; + const checkNode = (el) => { + if (!el) return; + const input = el.querySelector("input"); + if (input) input.click(); + else if (isLeaf(el)) el.click(); + }; + const sortByOriginalOrder = (oldNodes, newNodes) => { + const newNodesCopy = newNodes.slice(0); + const newIds = newNodesCopy.map((node) => node.uid); + const res = oldNodes.reduce((acc, item) => { + const index = newIds.indexOf(item.uid); + if (index > -1) { + acc.push(item); + newNodesCopy.splice(index, 1); + newIds.splice(index, 1); + } + return acc; + }, []); + res.push(...newNodesCopy); + return res; + }; + +//#endregion +//#region ../../packages/components/cascader-panel/src/index.vue?vue&type=script&setup=true&lang.ts + var index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElCascaderPanel", + __name: "index", + props: cascaderPanelProps, + emits: cascaderPanelEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + let manualChecked = false; + const ns = useNamespace("cascader"); + const config = useCascaderConfig(props); + const slots = (0, vue.useSlots)(); + let store; + const initialLoaded = (0, vue.ref)(true); + const initialLoadedOnce = (0, vue.ref)(false); + const menuList = (0, vue.ref)([]); + const checkedValue = (0, vue.ref)(); + const menus = (0, vue.ref)([]); + const expandingNode = (0, vue.ref)(); + const checkedNodes = (0, vue.ref)([]); + const isHoverMenu = (0, vue.computed)(() => config.value.expandTrigger === "hover"); + const renderLabelFn = (0, vue.computed)(() => props.renderLabel || slots.default); + const initStore = () => { + const { options } = props; + const cfg = config.value; + manualChecked = false; + store = new Store(options, cfg); + menus.value = [store.getNodes()]; + if (cfg.lazy && isEmpty(props.options)) { + initialLoaded.value = false; + lazyLoad(void 0, (list) => { + if (list) { + store = new Store(list, cfg); + menus.value = [store.getNodes()]; + } + initialLoaded.value = true; + syncCheckedValue(false, true); + }); + } else syncCheckedValue(false, true); + }; + const lazyLoad = (node, cb) => { + const cfg = config.value; + node = node || new Node$2({}, cfg, void 0, true); + node.loading = true; + const resolve = (dataList) => { + const _node = node; + const parent = _node.root ? null : _node; + _node.loading = false; + _node.loaded = true; + _node.childrenData = _node.childrenData || []; + dataList && store?.appendNodes(dataList, parent); + dataList && cb?.(dataList); + if (node.level === 0) initialLoadedOnce.value = true; + }; + const reject = () => { + node.loading = false; + node.loaded = false; + if (node.level === 0) initialLoaded.value = true; + }; + cfg.lazyLoad(node, resolve, reject); + }; + const expandNode = (node, silent) => { + const { level } = node; + const newMenus = menus.value.slice(0, level); + let newExpandingNode; + if (node.isLeaf) newExpandingNode = node.pathNodes[level - 2]; + else { + newExpandingNode = node; + newMenus.push(node.children); + } + if (expandingNode.value?.uid !== newExpandingNode?.uid) { + expandingNode.value = node; + menus.value = newMenus; + !silent && emit("expand-change", node?.pathValues || []); + } + }; + const handleCheckChange = (node, checked, emitClose = true) => { + const { checkStrictly, multiple } = config.value; + const oldNode = checkedNodes.value[0]; + manualChecked = true; + !multiple && oldNode?.doCheck(false); + node.doCheck(checked); + calculateCheckedValue(); + emitClose && !multiple && !checkStrictly && emit("close"); + !emitClose && !multiple && expandParentNode(node); + }; + const expandParentNode = (node) => { + if (!node) return; + node = node.parent; + expandParentNode(node); + node && expandNode(node); + }; + const getFlattedNodes = (leafOnly) => store?.getFlattedNodes(leafOnly); + const getCheckedNodes = (leafOnly) => { + return getFlattedNodes(leafOnly)?.filter(({ checked }) => checked !== false); + }; + const clearCheckedNodes = () => { + checkedNodes.value.forEach((node) => node.doCheck(false)); + calculateCheckedValue(); + menus.value = menus.value.slice(0, 1); + expandingNode.value = void 0; + emit("expand-change", []); + }; + const calculateCheckedValue = () => { + const { checkStrictly, multiple } = config.value; + const oldNodes = checkedNodes.value; + const nodes = sortByOriginalOrder(oldNodes, getCheckedNodes(!checkStrictly)); + const values = nodes.map((node) => node.valueByOption); + checkedNodes.value = nodes; + checkedValue.value = multiple ? values : values[0] ?? null; + }; + const syncCheckedValue = (loaded = false, forced = false) => { + const { modelValue } = props; + const { lazy, multiple, checkStrictly } = config.value; + const leafOnly = !checkStrictly; + if (!initialLoaded.value || manualChecked || !forced && isEqual$1(modelValue, checkedValue.value)) return; + if (lazy && !loaded) { + const nodes = unique(flattenDeep(castArray(modelValue))).map((val) => store?.getNodeByValue(val)).filter((node) => !!node && !node.loaded && !node.loading); + if (nodes.length) nodes.forEach((node) => { + lazyLoad(node, () => syncCheckedValue(false, forced)); + }); + else syncCheckedValue(true, forced); + } else { + syncMenuState(unique((multiple ? castArray(modelValue) : [modelValue]).map((val) => store?.getNodeByValue(val, leafOnly))), forced); + checkedValue.value = cloneDeep(modelValue ?? void 0); + } + }; + const syncMenuState = (newCheckedNodes, reserveExpandingState = true) => { + const { checkStrictly } = config.value; + const oldNodes = checkedNodes.value; + const newNodes = newCheckedNodes.filter((node) => !!node && (checkStrictly || node.isLeaf)); + const oldExpandingNode = store?.getSameNode(expandingNode.value); + const newExpandingNode = reserveExpandingState && oldExpandingNode || newNodes[0]; + if (newExpandingNode) newExpandingNode.pathNodes.forEach((node) => expandNode(node, true)); + else expandingNode.value = void 0; + oldNodes.forEach((node) => node.doCheck(false)); + (0, vue.reactive)(newNodes).forEach((node) => node.doCheck(true)); + checkedNodes.value = newNodes; + (0, vue.nextTick)(scrollToExpandingNode); + }; + const scrollToExpandingNode = () => { + if (!isClient) return; + menuList.value.forEach((menu) => { + const menuElement = menu?.$el; + if (menuElement) { + const container = menuElement.querySelector(`.${ns.namespace.value}-scrollbar__wrap`); + let activeNode = menuElement.querySelector(`.${ns.b("node")}.in-active-path`); + if (!activeNode) { + const activeElements = menuElement.querySelectorAll(`.${ns.b("node")}.${ns.is("active")}`); + activeNode = activeElements[activeElements.length - 1]; + } + scrollIntoView(container, activeNode); + } + }); + }; + const handleKeyDown = (e) => { + const target = e.target; + const code = getEventCode(e); + switch (code) { + case EVENT_CODE.up: + case EVENT_CODE.down: + e.preventDefault(); + focusNode(getSibling(target, code === EVENT_CODE.up ? -1 : 1, `.${ns.b("node")}[tabindex="-1"]`)); + break; + case EVENT_CODE.left: { + e.preventDefault(); + const expandedNode = menuList.value[getMenuIndex(target) - 1]?.$el.querySelector(`.${ns.b("node")}[aria-expanded="true"]`); + focusNode(expandedNode); + break; + } + case EVENT_CODE.right: { + e.preventDefault(); + const firstNode = menuList.value[getMenuIndex(target) + 1]?.$el.querySelector(`.${ns.b("node")}[tabindex="-1"]`); + focusNode(firstNode); + break; + } + case EVENT_CODE.enter: + case EVENT_CODE.numpadEnter: + checkNode(target); + break; + } + }; + (0, vue.provide)(CASCADER_PANEL_INJECTION_KEY, (0, vue.reactive)({ + config, + expandingNode, + checkedNodes, + isHoverMenu, + initialLoaded, + renderLabelFn, + lazyLoad, + expandNode, + handleCheckChange + })); + (0, vue.watch)(config, (newVal, oldVal) => { + if (isEqual$1(newVal, oldVal)) return; + initStore(); + }, { immediate: true }); + (0, vue.watch)(() => props.options, initStore, { deep: true }); + (0, vue.watch)(() => props.modelValue, () => { + manualChecked = false; + syncCheckedValue(); + }, { deep: true }); + (0, vue.watch)(() => checkedValue.value, (val) => { + if (!isEqual$1(val, props.modelValue)) { + emit(UPDATE_MODEL_EVENT, val); + emit(CHANGE_EVENT, val); + } + }); + const loadLazyRootNodes = () => { + if (initialLoadedOnce.value) return; + initStore(); + }; + (0, vue.onBeforeUpdate)(() => menuList.value = []); + (0, vue.onMounted)(() => !isEmpty(props.modelValue) && syncCheckedValue()); + __expose({ + menuList, + menus, + checkedNodes, + handleKeyDown, + handleCheckChange, + getFlattedNodes, + getCheckedNodes, + clearCheckedNodes, + calculateCheckedValue, + scrollToExpandingNode, + loadLazyRootNodes + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).b("panel"), (0, vue.unref)(ns).is("bordered", __props.border)]), + onKeydown: handleKeyDown + }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(menus.value, (menu, index) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(menu_default$1, { + key: index, + ref_for: true, + ref: (item) => menuList.value[index] = item, + index, + nodes: [...menu] + }, { + empty: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "empty")]), + _: 3 + }, 8, ["index", "nodes"]); + }), 128))], 34); + }; + } + }); + +//#endregion +//#region ../../packages/components/cascader-panel/src/index.vue + var src_default$1 = index_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/cascader-panel/index.ts + const ElCascaderPanel = withInstall(src_default$1); + +//#endregion +//#region ../../packages/components/cascader/src/cascader.ts +/** + * @deprecated Removed after 3.0.0, Use `CascaderComponentProps` instead. + */ + const cascaderProps = buildProps({ + ...CommonProps, + size: useSizeProp, + placeholder: String, + disabled: { + type: Boolean, + default: void 0 + }, + clearable: Boolean, + clearIcon: { + type: iconPropType, + default: circle_close_default + }, + filterable: Boolean, + filterMethod: { + type: definePropType(Function), + default: (node, keyword) => node.text.includes(keyword) + }, + separator: { + type: String, + default: " / " + }, + showAllLevels: { + type: Boolean, + default: true + }, + collapseTags: Boolean, + maxCollapseTags: { + type: Number, + default: 1 + }, + collapseTagsTooltip: Boolean, + maxCollapseTagsTooltipHeight: { type: [String, Number] }, + debounce: { + type: Number, + default: 300 + }, + beforeFilter: { + type: definePropType(Function), + default: () => true + }, + placement: { + type: definePropType(String), + values: Ee, + default: "bottom-start" + }, + fallbackPlacements: { + type: definePropType(Array), + default: [ + "bottom-start", + "bottom", + "top-start", + "top", + "right", + "left" + ] + }, + popperClass: useTooltipContentProps.popperClass, + popperStyle: useTooltipContentProps.popperStyle, + teleported: useTooltipContentProps.teleported, + effect: { + type: definePropType(String), + default: "light" + }, + tagType: { + ...tagProps.type, + default: "info" + }, + tagEffect: { + ...tagProps.effect, + default: "light" + }, + validateEvent: { + type: Boolean, + default: true + }, + persistent: { + type: Boolean, + default: true + }, + showCheckedStrategy: { + type: String, + values: ["parent", "child"], + default: "child" + }, + checkOnClickNode: Boolean, + showPrefix: { + type: Boolean, + default: true + }, + ...useEmptyValuesProps + }); + const emitChangeFn$1 = (value) => true; + const cascaderEmits = { + [UPDATE_MODEL_EVENT]: emitChangeFn$1, + [CHANGE_EVENT]: emitChangeFn$1, + focus: (evt) => evt instanceof FocusEvent, + blur: (evt) => evt instanceof FocusEvent, + clear: () => true, + visibleChange: (val) => isBoolean(val), + expandChange: (val) => !!val, + removeTag: (val) => !!val + }; + +//#endregion +//#region ../../packages/components/cascader/src/cascader.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$57 = ["placeholder"]; + const _hoisted_2$34 = ["onClick"]; + var cascader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElCascader", + __name: "cascader", + props: cascaderProps, + emits: cascaderEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const popperOptions = { modifiers: [{ + name: "arrowPosition", + enabled: true, + phase: "main", + fn: ({ state }) => { + const { modifiersData, placement } = state; + if ([ + "right", + "left", + "bottom", + "top" + ].includes(placement)) return; + if (modifiersData.arrow) modifiersData.arrow.x = 35; + }, + requires: ["arrow"] + }] }; + const props = __props; + const emit = __emit; + const attrs = (0, vue.useAttrs)(); + const slots = (0, vue.useSlots)(); + let inputInitialHeight = 0; + let pressDeleteCount = 0; + const nsCascader = useNamespace("cascader"); + const nsInput = useNamespace("input"); + const sizeMapPadding = { + small: 7, + default: 11, + large: 15 + }; + const { t } = useLocale(); + const { formItem } = useFormItem(); + const isDisabled = useFormDisabled(); + const { valueOnClear } = useEmptyValues(props); + const { isComposing, handleComposition } = useComposition({ afterComposition(event) { + const text = event.target?.value; + handleInput(text); + } }); + const tooltipRef = (0, vue.ref)(); + const tagTooltipRef = (0, vue.ref)(); + const inputRef = (0, vue.ref)(); + const tagWrapper = (0, vue.ref)(); + const cascaderPanelRef = (0, vue.ref)(); + const suggestionPanel = (0, vue.ref)(); + const popperVisible = (0, vue.ref)(false); + const inputHover = (0, vue.ref)(false); + const filtering = (0, vue.ref)(false); + const inputValue = (0, vue.ref)(""); + const searchInputValue = (0, vue.ref)(""); + const tags = (0, vue.ref)([]); + const suggestions = (0, vue.ref)([]); + const showTagList = (0, vue.computed)(() => { + if (!props.props.multiple) return []; + return props.collapseTags ? tags.value.slice(0, props.maxCollapseTags) : tags.value; + }); + const collapseTagList = (0, vue.computed)(() => { + if (!props.props.multiple) return []; + return props.collapseTags ? tags.value.slice(props.maxCollapseTags) : []; + }); + const cascaderStyle = (0, vue.computed)(() => { + return attrs.style; + }); + const inputPlaceholder = (0, vue.computed)(() => props.placeholder ?? t("el.cascader.placeholder")); + const currentPlaceholder = (0, vue.computed)(() => searchInputValue.value || tags.value.length > 0 || isComposing.value ? "" : inputPlaceholder.value); + const realSize = useFormSize(); + const tagSize = (0, vue.computed)(() => realSize.value === "small" ? "small" : "default"); + const multiple = (0, vue.computed)(() => !!props.props.multiple); + const readonly = (0, vue.computed)(() => !props.filterable || multiple.value); + const searchKeyword = (0, vue.computed)(() => multiple.value ? searchInputValue.value : inputValue.value); + const checkedNodes = (0, vue.computed)(() => cascaderPanelRef.value?.checkedNodes || []); + const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, { + disabled: isDisabled, + beforeBlur(event) { + return tooltipRef.value?.isFocusInsideContent(event) || tagTooltipRef.value?.isFocusInsideContent(event); + }, + afterBlur() { + if (props.validateEvent) formItem?.validate?.("blur").catch((err) => /* @__PURE__ */ debugWarn(err)); + } + }); + const clearBtnVisible = (0, vue.computed)(() => { + if (!props.clearable || isDisabled.value || filtering.value || !inputHover.value && !isFocused.value) return false; + return !!checkedNodes.value.length; + }); + const presentText = (0, vue.computed)(() => { + const { showAllLevels, separator } = props; + const nodes = checkedNodes.value; + return nodes.length ? multiple.value ? "" : nodes[0].calcText(showAllLevels, separator) : ""; + }); + const validateState = (0, vue.computed)(() => formItem?.validateState || ""); + const checkedValue = (0, vue.computed)({ + get() { + return cloneDeep(props.modelValue); + }, + set(val) { + const value = val ?? valueOnClear.value; + emit(UPDATE_MODEL_EVENT, value); + emit(CHANGE_EVENT, value); + if (props.validateEvent) formItem?.validate("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + } + }); + const cascaderKls = (0, vue.computed)(() => { + return [ + nsCascader.b(), + nsCascader.m(realSize.value), + nsCascader.is("disabled", isDisabled.value), + attrs.class + ]; + }); + const cascaderIconKls = (0, vue.computed)(() => { + return [ + nsInput.e("icon"), + "icon-arrow-down", + nsCascader.is("reverse", popperVisible.value) + ]; + }); + const inputClass = (0, vue.computed)(() => nsCascader.is("focus", isFocused.value)); + const contentRef = (0, vue.computed)(() => { + return tooltipRef.value?.popperRef?.contentRef; + }); + const handleClickOutside = (event) => { + if (isFocused.value) handleBlur(new FocusEvent("blur", event)); + togglePopperVisible(false); + }; + const togglePopperVisible = (visible) => { + if (isDisabled.value) return; + visible = visible ?? !popperVisible.value; + if (visible !== popperVisible.value) { + popperVisible.value = visible; + inputRef.value?.input?.setAttribute("aria-expanded", `${visible}`); + if (visible) { + updatePopperPosition(); + cascaderPanelRef.value && (0, vue.nextTick)(cascaderPanelRef.value.scrollToExpandingNode); + } else if (props.filterable) syncPresentTextValue(); + emit("visibleChange", visible); + } + }; + const updatePopperPosition = () => { + (0, vue.nextTick)(() => { + tooltipRef.value?.updatePopper(); + }); + }; + const hideSuggestionPanel = () => { + filtering.value = false; + }; + const genTag = (node) => { + const { showAllLevels, separator } = props; + return { + node, + key: node.uid, + text: node.calcText(showAllLevels, separator), + hitState: false, + closable: !isDisabled.value && !node.isDisabled + }; + }; + const deleteTag = (tag) => { + const node = tag.node; + node.doCheck(false); + cascaderPanelRef.value?.calculateCheckedValue(); + emit("removeTag", node.valueByOption); + }; + const getStrategyCheckedNodes = () => { + switch (props.showCheckedStrategy) { + case "child": return checkedNodes.value; + case "parent": { + const clickedNodes = getCheckedNodes(false); + const clickedNodesValue = clickedNodes.map((o) => o.value); + return clickedNodes.filter((o) => !o.parent || !clickedNodesValue.includes(o.parent.value)); + } + default: return []; + } + }; + const calculatePresentTags = () => { + if (!multiple.value) return; + const nodes = getStrategyCheckedNodes(); + const allTags = []; + nodes.forEach((node) => allTags.push(genTag(node))); + tags.value = allTags; + }; + const calculateSuggestions = () => { + const { filterMethod, showAllLevels, separator } = props; + const res = cascaderPanelRef.value?.getFlattedNodes(!props.props.checkStrictly)?.filter((node) => { + if (node.isDisabled) return false; + node.calcText(showAllLevels, separator); + return filterMethod(node, searchKeyword.value); + }); + if (multiple.value) tags.value.forEach((tag) => { + tag.hitState = false; + }); + filtering.value = true; + suggestions.value = res; + updatePopperPosition(); + }; + const focusFirstNode = () => { + let firstNode; + if (filtering.value && suggestionPanel.value) firstNode = suggestionPanel.value.$el.querySelector(`.${nsCascader.e("suggestion-item")}`); + else firstNode = cascaderPanelRef.value?.$el.querySelector(`.${nsCascader.b("node")}[tabindex="-1"]`); + if (firstNode) { + firstNode.focus(); + if (!filtering.value && firstNode.getAttribute("aria-haspopup") === "true") firstNode.click(); + } + }; + const updateStyle = () => { + const inputInner = inputRef.value?.input; + const tagWrapperEl = tagWrapper.value; + const suggestionPanelEl = suggestionPanel.value?.$el; + if (!isClient || !inputInner) return; + if (suggestionPanelEl) { + const suggestionList = suggestionPanelEl.querySelector(`.${nsCascader.e("suggestion-list")}`); + suggestionList.style.minWidth = `${inputInner.offsetWidth}px`; + } + if (tagWrapperEl) { + const { offsetHeight } = tagWrapperEl; + const height = tags.value.length > 0 ? `${Math.max(offsetHeight, inputInitialHeight) - 2}px` : `${inputInitialHeight}px`; + inputInner.style.height = height; + if (slots.prefix) { + const prefix = inputRef.value?.$el.querySelector(`.${nsInput.e("prefix")}`); + let left = 0; + if (prefix) { + left = prefix.offsetWidth; + if (left > 0) left += sizeMapPadding[realSize.value || "default"]; + } + tagWrapperEl.style.left = `${left}px`; + } else tagWrapperEl.style.left = `0`; + updatePopperPosition(); + } + }; + const getCheckedNodes = (leafOnly) => { + return cascaderPanelRef.value?.getCheckedNodes(leafOnly); + }; + const handleExpandChange = (value) => { + updatePopperPosition(); + emit("expandChange", value); + }; + const handleKeyDown = (e) => { + if (isComposing.value) return; + switch (getEventCode(e)) { + case EVENT_CODE.enter: + case EVENT_CODE.numpadEnter: + togglePopperVisible(); + break; + case EVENT_CODE.down: + togglePopperVisible(true); + (0, vue.nextTick)(focusFirstNode); + e.preventDefault(); + break; + case EVENT_CODE.esc: + if (popperVisible.value === true) { + e.preventDefault(); + e.stopPropagation(); + togglePopperVisible(false); + } + break; + case EVENT_CODE.tab: + togglePopperVisible(false); + break; + } + }; + const handleClear = () => { + cascaderPanelRef.value?.clearCheckedNodes(); + if (!popperVisible.value && props.filterable) syncPresentTextValue(); + togglePopperVisible(false); + emit("clear"); + }; + const syncPresentTextValue = () => { + const { value } = presentText; + inputValue.value = value; + searchInputValue.value = value; + }; + const handleSuggestionClick = (node) => { + const { checked } = node; + if (multiple.value) cascaderPanelRef.value?.handleCheckChange(node, !checked, false); + else { + !checked && cascaderPanelRef.value?.handleCheckChange(node, true, false); + togglePopperVisible(false); + } + }; + const handleSuggestionKeyDown = (e) => { + const target = e.target; + const code = getEventCode(e); + switch (code) { + case EVENT_CODE.up: + case EVENT_CODE.down: + e.preventDefault(); + focusNode(getSibling(target, code === EVENT_CODE.up ? -1 : 1, `.${nsCascader.e("suggestion-item")}[tabindex="-1"]`)); + break; + case EVENT_CODE.enter: + case EVENT_CODE.numpadEnter: + target.click(); + break; + } + }; + const handleDelete = () => { + const lastTag = tags.value[tags.value.length - 1]; + pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1; + if (!lastTag || !pressDeleteCount || props.collapseTags && tags.value.length > 1) return; + if (lastTag.hitState) deleteTag(lastTag); + else lastTag.hitState = true; + }; + const handleFilter = useDebounceFn(() => { + const { value } = searchKeyword; + if (!value) return; + const passed = props.beforeFilter(value); + if (isPromise(passed)) passed.then(calculateSuggestions).catch(() => {}); + else if (passed !== false) calculateSuggestions(); + else hideSuggestionPanel(); + }, (0, vue.computed)(() => props.debounce)); + const handleInput = (val, e) => { + !popperVisible.value && togglePopperVisible(true); + if (e?.isComposing) return; + if (val) handleFilter(); + else { + const passed = props.beforeFilter(""); + if (isPromise(passed)) passed.catch(() => {}); + hideSuggestionPanel(); + } + }; + const getInputInnerHeight = (inputInner) => Number.parseFloat(useCssVar(nsInput.cssVarName("input-height"), inputInner).value) - 2; + const focus = () => { + inputRef.value?.focus(); + }; + const blur = () => { + inputRef.value?.blur(); + }; + (0, vue.watch)(filtering, updatePopperPosition); + (0, vue.watch)([ + checkedNodes, + isDisabled, + () => props.collapseTags, + () => props.maxCollapseTags + ], calculatePresentTags); + (0, vue.watch)(tags, () => { + (0, vue.nextTick)(() => updateStyle()); + }); + (0, vue.watch)(realSize, async () => { + await (0, vue.nextTick)(); + const inputInner = inputRef.value.input; + inputInitialHeight = getInputInnerHeight(inputInner) || inputInitialHeight; + updateStyle(); + }); + (0, vue.watch)(presentText, syncPresentTextValue, { immediate: true }); + (0, vue.watch)(() => popperVisible.value, (val) => { + if (val && props.props.lazy && props.props.lazyLoad) cascaderPanelRef.value?.loadLazyRootNodes(); + }); + (0, vue.onMounted)(() => { + const inputInner = inputRef.value.input; + const inputInnerHeight = getInputInnerHeight(inputInner); + inputInitialHeight = inputInner.offsetHeight || inputInnerHeight; + useResizeObserver(inputInner, updateStyle); + }); + __expose({ + getCheckedNodes, + cascaderPanelRef, + togglePopperVisible, + contentRef, + presentText, + focus, + blur + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTooltip), { + ref_key: "tooltipRef", + ref: tooltipRef, + visible: popperVisible.value, + teleported: __props.teleported, + "popper-class": [(0, vue.unref)(nsCascader).e("dropdown"), __props.popperClass], + "popper-style": __props.popperStyle, + "popper-options": popperOptions, + "fallback-placements": __props.fallbackPlacements, + "stop-popper-mouse-event": false, + "gpu-acceleration": false, + placement: __props.placement, + transition: `${(0, vue.unref)(nsCascader).namespace.value}-zoom-in-top`, + effect: __props.effect, + pure: "", + persistent: __props.persistent, + onHide: hideSuggestionPanel + }, { + default: (0, vue.withCtx)(() => [(0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "wrapperRef", + ref: wrapperRef, + class: (0, vue.normalizeClass)(cascaderKls.value), + style: (0, vue.normalizeStyle)(cascaderStyle.value), + onClick: _cache[8] || (_cache[8] = () => togglePopperVisible(readonly.value ? void 0 : true)), + onKeydown: handleKeyDown, + onMouseenter: _cache[9] || (_cache[9] = ($event) => inputHover.value = true), + onMouseleave: _cache[10] || (_cache[10] = ($event) => inputHover.value = false) + }, [(0, vue.createVNode)((0, vue.unref)(ElInput), { + ref_key: "inputRef", + ref: inputRef, + modelValue: inputValue.value, + "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => inputValue.value = $event), + placeholder: currentPlaceholder.value, + readonly: readonly.value, + disabled: (0, vue.unref)(isDisabled), + "validate-event": false, + size: (0, vue.unref)(realSize), + class: (0, vue.normalizeClass)(inputClass.value), + tabindex: multiple.value && __props.filterable && !(0, vue.unref)(isDisabled) ? -1 : void 0, + onCompositionstart: (0, vue.unref)(handleComposition), + onCompositionupdate: (0, vue.unref)(handleComposition), + onCompositionend: (0, vue.unref)(handleComposition), + onInput: handleInput + }, (0, vue.createSlots)({ + suffix: (0, vue.withCtx)(() => [clearBtnVisible.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: "clear", + class: (0, vue.normalizeClass)([(0, vue.unref)(nsInput).e("icon"), "icon-circle-close"]), + onClick: (0, vue.withModifiers)(handleClear, ["stop"]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.clearIcon)))]), + _: 1 + }, 8, ["class"])) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: "arrow-down", + class: (0, vue.normalizeClass)(cascaderIconKls.value), + onClick: _cache[0] || (_cache[0] = (0, vue.withModifiers)(($event) => togglePopperVisible(), ["stop"])) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_down_default))]), + _: 1 + }, 8, ["class"]))]), + _: 2 + }, [_ctx.$slots.prefix ? { + name: "prefix", + fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "prefix")]), + key: "0" + } : void 0]), 1032, [ + "modelValue", + "placeholder", + "readonly", + "disabled", + "size", + "class", + "tabindex", + "onCompositionstart", + "onCompositionupdate", + "onCompositionend" + ]), multiple.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + ref_key: "tagWrapper", + ref: tagWrapper, + class: (0, vue.normalizeClass)([(0, vue.unref)(nsCascader).e("tags"), (0, vue.unref)(nsCascader).is("validate", Boolean(validateState.value))]) + }, [ + (0, vue.renderSlot)(_ctx.$slots, "tag", { + data: tags.value, + deleteTag + }, () => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(showTagList.value, (tag) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTag), { + key: tag.key, + type: __props.tagType, + size: tagSize.value, + effect: __props.tagEffect, + hit: tag.hitState, + closable: tag.closable, + "disable-transitions": "", + onClose: ($event) => deleteTag(tag) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(tag.text), 1)]), + _: 2 + }, 1032, [ + "type", + "size", + "effect", + "hit", + "closable", + "onClose" + ]); + }), 128))]), + __props.collapseTags && tags.value.length > __props.maxCollapseTags ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTooltip), { + key: 0, + ref_key: "tagTooltipRef", + ref: tagTooltipRef, + disabled: popperVisible.value || !__props.collapseTagsTooltip, + "fallback-placements": [ + "bottom", + "top", + "right", + "left" + ], + placement: "bottom", + "popper-class": __props.popperClass, + "popper-style": __props.popperStyle, + effect: __props.effect, + persistent: __props.persistent + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(ElTag), { + closable: false, + size: tagSize.value, + type: __props.tagType, + effect: __props.tagEffect, + "disable-transitions": "" + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(nsCascader).e("tags-text")) }, " + " + (0, vue.toDisplayString)(tags.value.length - __props.maxCollapseTags), 3)]), + _: 1 + }, 8, [ + "size", + "type", + "effect" + ])]), + content: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(ElScrollbar), { "max-height": __props.maxCollapseTagsTooltipHeight }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(nsCascader).e("collapse-tags")) }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(collapseTagList.value, (tag, idx) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: idx, + class: (0, vue.normalizeClass)((0, vue.unref)(nsCascader).e("collapse-tag")) + }, [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTag), { + key: tag.key, + class: "in-tooltip", + type: __props.tagType, + size: tagSize.value, + effect: __props.tagEffect, + hit: tag.hitState, + closable: tag.closable, + "disable-transitions": "", + onClose: ($event) => deleteTag(tag) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(tag.text), 1)]), + _: 2 + }, 1032, [ + "type", + "size", + "effect", + "hit", + "closable", + "onClose" + ]))], 2); + }), 128))], 2)]), + _: 1 + }, 8, ["max-height"])]), + _: 1 + }, 8, [ + "disabled", + "popper-class", + "popper-style", + "effect", + "persistent" + ])) : (0, vue.createCommentVNode)("v-if", true), + __props.filterable && !(0, vue.unref)(isDisabled) ? (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("input", { + key: 1, + "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => searchInputValue.value = $event), + type: "text", + class: (0, vue.normalizeClass)((0, vue.unref)(nsCascader).e("search-input")), + placeholder: presentText.value ? "" : inputPlaceholder.value, + onInput: _cache[3] || (_cache[3] = (e) => handleInput(searchInputValue.value, e)), + onClick: _cache[4] || (_cache[4] = (0, vue.withModifiers)(($event) => togglePopperVisible(true), ["stop"])), + onKeydown: (0, vue.withKeys)(handleDelete, ["delete"]), + onCompositionstart: _cache[5] || (_cache[5] = (...args) => (0, vue.unref)(handleComposition) && (0, vue.unref)(handleComposition)(...args)), + onCompositionupdate: _cache[6] || (_cache[6] = (...args) => (0, vue.unref)(handleComposition) && (0, vue.unref)(handleComposition)(...args)), + onCompositionend: _cache[7] || (_cache[7] = (...args) => (0, vue.unref)(handleComposition) && (0, vue.unref)(handleComposition)(...args)) + }, null, 42, _hoisted_1$57)), [[vue.vModelText, searchInputValue.value]]) : (0, vue.createCommentVNode)("v-if", true) + ], 2)) : (0, vue.createCommentVNode)("v-if", true)], 38)), [[ + (0, vue.unref)(ClickOutside), + handleClickOutside, + contentRef.value + ]])]), + content: (0, vue.withCtx)(() => [ + _ctx.$slots.header ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(nsCascader).e("header")), + onClick: _cache[11] || (_cache[11] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, [(0, vue.renderSlot)(_ctx.$slots, "header")], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.withDirectives)((0, vue.createVNode)((0, vue.unref)(ElCascaderPanel), { + ref_key: "cascaderPanelRef", + ref: cascaderPanelRef, + modelValue: checkedValue.value, + "onUpdate:modelValue": _cache[12] || (_cache[12] = ($event) => checkedValue.value = $event), + options: __props.options, + props: props.props, + border: false, + "render-label": _ctx.$slots.default, + onExpandChange: handleExpandChange, + onClose: _cache[13] || (_cache[13] = ($event) => _ctx.$nextTick(() => togglePopperVisible(false))) + }, { + empty: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "empty")]), + _: 3 + }, 8, [ + "modelValue", + "options", + "props", + "render-label" + ]), [[vue.vShow, !filtering.value]]), + __props.filterable ? (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElScrollbar), { + key: 1, + ref_key: "suggestionPanel", + ref: suggestionPanel, + tag: "ul", + class: (0, vue.normalizeClass)((0, vue.unref)(nsCascader).e("suggestion-panel")), + "view-class": (0, vue.unref)(nsCascader).e("suggestion-list"), + onKeydown: handleSuggestionKeyDown + }, { + default: (0, vue.withCtx)(() => [suggestions.value.length ? ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, (0, vue.renderList)(suggestions.value, (item) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + key: item.uid, + class: (0, vue.normalizeClass)([(0, vue.unref)(nsCascader).e("suggestion-item"), (0, vue.unref)(nsCascader).is("checked", item.checked)]), + tabindex: -1, + onClick: ($event) => handleSuggestionClick(item) + }, [(0, vue.renderSlot)(_ctx.$slots, "suggestion-item", { item }, () => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(item.text), 1), item.checked ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { key: 0 }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(check_default))]), + _: 1 + })) : (0, vue.createCommentVNode)("v-if", true)])], 10, _hoisted_2$34); + }), 128)) : (0, vue.renderSlot)(_ctx.$slots, "empty", { key: 1 }, () => [(0, vue.createElementVNode)("li", { class: (0, vue.normalizeClass)((0, vue.unref)(nsCascader).e("empty-text")) }, (0, vue.toDisplayString)((0, vue.unref)(t)("el.cascader.noMatch")), 3)])]), + _: 3 + }, 8, ["class", "view-class"])), [[vue.vShow, filtering.value]]) : (0, vue.createCommentVNode)("v-if", true), + _ctx.$slots.footer ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 2, + class: (0, vue.normalizeClass)((0, vue.unref)(nsCascader).e("footer")), + onClick: _cache[14] || (_cache[14] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, [(0, vue.renderSlot)(_ctx.$slots, "footer")], 2)) : (0, vue.createCommentVNode)("v-if", true) + ]), + _: 3 + }, 8, [ + "visible", + "teleported", + "popper-class", + "popper-style", + "fallback-placements", + "placement", + "transition", + "effect", + "persistent" + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/cascader/src/cascader.vue + var cascader_default = cascader_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/cascader/index.ts + const ElCascader = withInstall(cascader_default); + +//#endregion +//#region ../../packages/components/check-tag/src/check-tag.ts +/** + * @deprecated Removed after 3.0.0, Use `CheckTagProps` instead. + */ + const checkTagProps = buildProps({ + checked: Boolean, + disabled: Boolean, + type: { + type: String, + values: [ + "primary", + "success", + "info", + "warning", + "danger" + ], + default: "primary" + } + }); + const checkTagEmits = { + "update:checked": (value) => isBoolean(value), + [CHANGE_EVENT]: (value) => isBoolean(value) + }; + +//#endregion +//#region ../../packages/components/check-tag/src/check-tag.vue?vue&type=script&setup=true&lang.ts + var check_tag_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElCheckTag", + __name: "check-tag", + props: checkTagProps, + emits: checkTagEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const ns = useNamespace("check-tag"); + const containerKls = (0, vue.computed)(() => [ + ns.b(), + ns.is("checked", props.checked), + ns.is("disabled", props.disabled), + ns.m(props.type || "primary") + ]); + const handleChange = () => { + if (props.disabled) return; + const checked = !props.checked; + emit(CHANGE_EVENT, checked); + emit("update:checked", checked); + }; + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + class: (0, vue.normalizeClass)(containerKls.value), + onClick: handleChange + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/check-tag/src/check-tag.vue + var check_tag_default = check_tag_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/check-tag/index.ts + const ElCheckTag = withInstall(check_tag_default); + +//#endregion +//#region ../../packages/components/col/src/col.ts +/** + * @deprecated Removed after 3.0.0, Use `ColProps` instead. + */ + const colProps = buildProps({ + tag: { + type: String, + default: "div" + }, + span: { + type: Number, + default: 24 + }, + offset: { + type: Number, + default: 0 + }, + pull: { + type: Number, + default: 0 + }, + push: { + type: Number, + default: 0 + }, + xs: { + type: definePropType([Number, Object]), + default: () => mutable({}) + }, + sm: { + type: definePropType([Number, Object]), + default: () => mutable({}) + }, + md: { + type: definePropType([Number, Object]), + default: () => mutable({}) + }, + lg: { + type: definePropType([Number, Object]), + default: () => mutable({}) + }, + xl: { + type: definePropType([Number, Object]), + default: () => mutable({}) + } + }); + +//#endregion +//#region ../../packages/components/row/src/row.ts + const RowJustify = [ + "start", + "center", + "end", + "space-around", + "space-between", + "space-evenly" + ]; + const RowAlign = [ + "top", + "middle", + "bottom" + ]; + /** + * @deprecated Removed after 3.0.0, Use `RowProps` instead. + */ + const rowProps = buildProps({ + tag: { + type: String, + default: "div" + }, + gutter: { + type: Number, + default: 0 + }, + justify: { + type: String, + values: RowJustify, + default: "start" + }, + align: { + type: String, + values: RowAlign + } + }); + +//#endregion +//#region ../../packages/components/row/src/constants.ts + const rowContextKey = Symbol("rowContextKey"); + +//#endregion +//#region ../../packages/components/row/src/row.vue?vue&type=script&setup=true&lang.ts + var row_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElRow", + __name: "row", + props: rowProps, + setup(__props) { + const props = __props; + const ns = useNamespace("row"); + (0, vue.provide)(rowContextKey, { gutter: (0, vue.computed)(() => props.gutter) }); + const style = (0, vue.computed)(() => { + const styles = {}; + if (!props.gutter) return styles; + styles.marginRight = styles.marginLeft = `-${props.gutter / 2}px`; + return styles; + }); + const rowKls = (0, vue.computed)(() => [ + ns.b(), + ns.is(`justify-${props.justify}`, props.justify !== "start"), + ns.is(`align-${props.align}`, !!props.align) + ]); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.tag), { + class: (0, vue.normalizeClass)(rowKls.value), + style: (0, vue.normalizeStyle)(style.value) + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 8, ["class", "style"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/row/src/row.vue + var row_default = row_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/row/index.ts + const ElRow = withInstall(row_default); + +//#endregion +//#region ../../packages/components/col/src/col.vue?vue&type=script&setup=true&lang.ts + var col_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElCol", + __name: "col", + props: colProps, + setup(__props) { + const props = __props; + const { gutter } = (0, vue.inject)(rowContextKey, { gutter: (0, vue.computed)(() => 0) }); + const ns = useNamespace("col"); + const style = (0, vue.computed)(() => { + const styles = {}; + if (gutter.value) styles.paddingLeft = styles.paddingRight = `${gutter.value / 2}px`; + return styles; + }); + const colKls = (0, vue.computed)(() => { + const classes = []; + [ + "span", + "offset", + "pull", + "push" + ].forEach((prop) => { + const size = props[prop]; + if (isNumber(size)) { + if (prop === "span") classes.push(ns.b(`${props[prop]}`)); + else if (size > 0) classes.push(ns.b(`${prop}-${props[prop]}`)); + } + }); + [ + "xs", + "sm", + "md", + "lg", + "xl" + ].forEach((size) => { + if (isNumber(props[size])) classes.push(ns.b(`${size}-${props[size]}`)); + else if (isObject$1(props[size])) Object.entries(props[size]).forEach(([prop, sizeProp]) => { + classes.push(prop !== "span" ? ns.b(`${size}-${prop}-${sizeProp}`) : ns.b(`${size}-${sizeProp}`)); + }); + }); + if (gutter.value) classes.push(ns.is("guttered")); + return [ns.b(), classes]; + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.tag), { + class: (0, vue.normalizeClass)(colKls.value), + style: (0, vue.normalizeStyle)(style.value) + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 8, ["class", "style"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/col/src/col.vue + var col_default = col_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/col/index.ts + const ElCol = withInstall(col_default); + +//#endregion +//#region ../../packages/components/collapse/src/collapse.ts + const emitChangeFn = (value) => isNumber(value) || isString(value) || isArray$1(value); + /** + * @deprecated Removed after 3.0.0, Use `CollapseProps` instead. + */ + const collapseProps = buildProps({ + accordion: Boolean, + modelValue: { + type: definePropType([ + Array, + String, + Number + ]), + default: () => mutable([]) + }, + expandIconPosition: { + type: definePropType([String]), + default: "right" + }, + beforeCollapse: { type: definePropType(Function) } + }); + const collapseEmits = { + [UPDATE_MODEL_EVENT]: emitChangeFn, + [CHANGE_EVENT]: emitChangeFn + }; + +//#endregion +//#region ../../packages/components/collapse/src/constants.ts + const collapseContextKey = Symbol("collapseContextKey"); + +//#endregion +//#region ../../packages/components/collapse/src/use-collapse.ts + const SCOPE$4 = "ElCollapse"; + const useCollapse = (props, emit) => { + const activeNames = (0, vue.ref)(castArray$1(props.modelValue)); + const setActiveNames = (_activeNames) => { + activeNames.value = _activeNames; + const value = props.accordion ? activeNames.value[0] : activeNames.value; + emit(UPDATE_MODEL_EVENT, value); + emit(CHANGE_EVENT, value); + }; + const handleChange = (name) => { + if (props.accordion) setActiveNames([activeNames.value[0] === name ? "" : name]); + else { + const _activeNames = [...activeNames.value]; + const index = _activeNames.indexOf(name); + if (index > -1) _activeNames.splice(index, 1); + else _activeNames.push(name); + setActiveNames(_activeNames); + } + }; + const handleItemClick = async (name) => { + const { beforeCollapse } = props; + if (!beforeCollapse) { + handleChange(name); + return; + } + const shouldChange = beforeCollapse(name); + if (![isPromise(shouldChange), isBoolean(shouldChange)].includes(true)) throwError(SCOPE$4, "beforeCollapse must return type `Promise` or `boolean`"); + if (isPromise(shouldChange)) shouldChange.then((result) => { + if (result !== false) handleChange(name); + }).catch((e) => { + /* @__PURE__ */ debugWarn(SCOPE$4, `some error occurred: ${e}`); + }); + else if (shouldChange) handleChange(name); + }; + (0, vue.watch)(() => props.modelValue, () => activeNames.value = castArray$1(props.modelValue), { deep: true }); + (0, vue.provide)(collapseContextKey, { + activeNames, + handleItemClick + }); + return { + activeNames, + setActiveNames + }; + }; + const useCollapseDOM = (props) => { + const ns = useNamespace("collapse"); + return { rootKls: (0, vue.computed)(() => [ns.b(), ns.b(`icon-position-${props.expandIconPosition}`)]) }; + }; + +//#endregion +//#region ../../packages/components/collapse/src/collapse.vue?vue&type=script&setup=true&lang.ts + var collapse_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElCollapse", + __name: "collapse", + props: collapseProps, + emits: collapseEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const { activeNames, setActiveNames } = useCollapse(props, __emit); + const { rootKls } = useCollapseDOM(props); + __expose({ + activeNames, + setActiveNames + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(rootKls)) }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/collapse/src/collapse.vue + var collapse_default = collapse_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/collapse/src/collapse-item.ts +/** + * @deprecated Removed after 3.0.0, Use `CollapseItemProps` instead. + */ + const collapseItemProps = buildProps({ + title: { + type: String, + default: "" + }, + name: { + type: definePropType([String, Number]), + default: void 0 + }, + icon: { + type: iconPropType, + default: arrow_right_default + }, + disabled: Boolean + }); + +//#endregion +//#region ../../packages/components/collapse-transition/src/collapse-transition.vue?vue&type=script&setup=true&lang.ts + var collapse_transition_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElCollapseTransition", + __name: "collapse-transition", + setup(__props) { + const ns = useNamespace("collapse-transition"); + const reset = (el) => { + el.style.maxHeight = ""; + el.style.overflow = el.dataset.oldOverflow; + el.style.paddingTop = el.dataset.oldPaddingTop; + el.style.paddingBottom = el.dataset.oldPaddingBottom; + }; + const on = { + beforeEnter(el) { + if (!el.dataset) el.dataset = {}; + el.dataset.oldPaddingTop = el.style.paddingTop; + el.dataset.oldPaddingBottom = el.style.paddingBottom; + if (el.style.height) el.dataset.elExistsHeight = el.style.height; + el.style.maxHeight = 0; + el.style.paddingTop = 0; + el.style.paddingBottom = 0; + }, + enter(el) { + requestAnimationFrame(() => { + el.dataset.oldOverflow = el.style.overflow; + if (el.dataset.elExistsHeight) el.style.maxHeight = el.dataset.elExistsHeight; + else if (el.scrollHeight !== 0) el.style.maxHeight = `${el.scrollHeight}px`; + else el.style.maxHeight = 0; + el.style.paddingTop = el.dataset.oldPaddingTop; + el.style.paddingBottom = el.dataset.oldPaddingBottom; + el.style.overflow = "hidden"; + }); + }, + afterEnter(el) { + el.style.maxHeight = ""; + el.style.overflow = el.dataset.oldOverflow; + }, + enterCancelled(el) { + reset(el); + }, + beforeLeave(el) { + if (!el.dataset) el.dataset = {}; + el.dataset.oldPaddingTop = el.style.paddingTop; + el.dataset.oldPaddingBottom = el.style.paddingBottom; + el.dataset.oldOverflow = el.style.overflow; + el.style.maxHeight = `${el.scrollHeight}px`; + el.style.overflow = "hidden"; + }, + leave(el) { + if (el.scrollHeight !== 0) { + el.style.maxHeight = 0; + el.style.paddingTop = 0; + el.style.paddingBottom = 0; + } + }, + afterLeave(el) { + reset(el); + }, + leaveCancelled(el) { + reset(el); + } + }; + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(vue.Transition, (0, vue.mergeProps)({ name: (0, vue.unref)(ns).b() }, (0, vue.toHandlers)(on)), { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 16, ["name"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/collapse-transition/src/collapse-transition.vue + var collapse_transition_default = collapse_transition_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/collapse-transition/index.ts + const ElCollapseTransition = withInstall(collapse_transition_default); + +//#endregion +//#region ../../packages/components/collapse/src/use-collapse-item.ts + const useCollapseItem = (props) => { + const collapse = (0, vue.inject)(collapseContextKey); + const { namespace } = useNamespace("collapse"); + const focusing = (0, vue.ref)(false); + const isClick = (0, vue.ref)(false); + const idInjection = useIdInjection(); + const id = (0, vue.computed)(() => idInjection.current++); + const name = (0, vue.computed)(() => { + return props.name ?? `${namespace.value}-id-${idInjection.prefix}-${(0, vue.unref)(id)}`; + }); + const isActive = (0, vue.computed)(() => collapse?.activeNames.value.includes((0, vue.unref)(name))); + const handleFocus = () => { + setTimeout(() => { + if (!isClick.value) focusing.value = true; + else isClick.value = false; + }, 50); + }; + const handleHeaderClick = (e) => { + if (props.disabled) return; + if (e.target?.closest("input, textarea, select")) return; + collapse?.handleItemClick((0, vue.unref)(name)); + focusing.value = false; + isClick.value = true; + }; + const handleEnterClick = (e) => { + if (e.target?.closest("input, textarea, select")) return; + e.preventDefault(); + collapse?.handleItemClick((0, vue.unref)(name)); + }; + return { + focusing, + id, + isActive, + handleFocus, + handleHeaderClick, + handleEnterClick + }; + }; + const useCollapseItemDOM = (props, { focusing, isActive, id }) => { + const ns = useNamespace("collapse"); + const rootKls = (0, vue.computed)(() => [ + ns.b("item"), + ns.is("active", (0, vue.unref)(isActive)), + ns.is("disabled", props.disabled) + ]); + const headKls = (0, vue.computed)(() => [ + ns.be("item", "header"), + ns.is("active", (0, vue.unref)(isActive)), + { focusing: (0, vue.unref)(focusing) && !props.disabled } + ]); + const arrowKls = (0, vue.computed)(() => [ns.be("item", "arrow"), ns.is("active", (0, vue.unref)(isActive))]); + return { + itemTitleKls: (0, vue.computed)(() => [ns.be("item", "title")]), + arrowKls, + headKls, + rootKls, + itemWrapperKls: (0, vue.computed)(() => ns.be("item", "wrap")), + itemContentKls: (0, vue.computed)(() => ns.be("item", "content")), + scopedContentId: (0, vue.computed)(() => ns.b(`content-${(0, vue.unref)(id)}`)), + scopedHeadId: (0, vue.computed)(() => ns.b(`head-${(0, vue.unref)(id)}`)) + }; + }; + +//#endregion +//#region ../../packages/components/collapse/src/collapse-item.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$56 = [ + "id", + "aria-expanded", + "aria-controls", + "aria-describedby", + "tabindex", + "aria-disabled" + ]; + const _hoisted_2$33 = [ + "id", + "aria-hidden", + "aria-labelledby" + ]; + var collapse_item_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElCollapseItem", + __name: "collapse-item", + props: collapseItemProps, + setup(__props, { expose: __expose }) { + const props = __props; + const { focusing, id, isActive, handleFocus, handleHeaderClick, handleEnterClick } = useCollapseItem(props); + const { arrowKls, headKls, rootKls, itemTitleKls, itemWrapperKls, itemContentKls, scopedContentId, scopedHeadId } = useCollapseItemDOM(props, { + focusing, + isActive, + id + }); + __expose({ isActive }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(rootKls)) }, [(0, vue.createElementVNode)("div", { + id: (0, vue.unref)(scopedHeadId), + class: (0, vue.normalizeClass)((0, vue.unref)(headKls)), + "aria-expanded": (0, vue.unref)(isActive), + "aria-controls": (0, vue.unref)(scopedContentId), + "aria-describedby": (0, vue.unref)(scopedContentId), + tabindex: __props.disabled ? void 0 : 0, + "aria-disabled": __props.disabled, + role: "button", + onClick: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(handleHeaderClick) && (0, vue.unref)(handleHeaderClick)(...args)), + onKeydown: _cache[1] || (_cache[1] = (0, vue.withKeys)((0, vue.withModifiers)((...args) => (0, vue.unref)(handleEnterClick) && (0, vue.unref)(handleEnterClick)(...args), ["stop"]), ["space", "enter"])), + onFocus: _cache[2] || (_cache[2] = (...args) => (0, vue.unref)(handleFocus) && (0, vue.unref)(handleFocus)(...args)), + onBlur: _cache[3] || (_cache[3] = ($event) => focusing.value = false) + }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(itemTitleKls)) }, [(0, vue.renderSlot)(_ctx.$slots, "title", { isActive: (0, vue.unref)(isActive) }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.title), 1)])], 2), (0, vue.renderSlot)(_ctx.$slots, "icon", { isActive: (0, vue.unref)(isActive) }, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), { class: (0, vue.normalizeClass)((0, vue.unref)(arrowKls)) }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.icon)))]), + _: 1 + }, 8, ["class"])])], 42, _hoisted_1$56), (0, vue.createVNode)((0, vue.unref)(ElCollapseTransition), null, { + default: (0, vue.withCtx)(() => [(0, vue.withDirectives)((0, vue.createElementVNode)("div", { + id: (0, vue.unref)(scopedContentId), + role: "region", + class: (0, vue.normalizeClass)((0, vue.unref)(itemWrapperKls)), + "aria-hidden": !(0, vue.unref)(isActive), + "aria-labelledby": (0, vue.unref)(scopedHeadId) + }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(itemContentKls)) }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2)], 10, _hoisted_2$33), [[vue.vShow, (0, vue.unref)(isActive)]])]), + _: 3 + })], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/collapse/src/collapse-item.vue + var collapse_item_default = collapse_item_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/collapse/index.ts + const ElCollapse = withInstall(collapse_default, { CollapseItem: collapse_item_default }); + const ElCollapseItem = withNoopInstall(collapse_item_default); + +//#endregion +//#region ../../packages/components/color-picker-panel/src/color-picker-panel.ts +/** + * @deprecated Removed after 3.0.0, Use `ColorPickerPanelProps` instead. + */ + const colorPickerPanelProps = buildProps({ + modelValue: { + type: definePropType(String), + default: void 0 + }, + border: { + type: Boolean, + default: true + }, + showAlpha: Boolean, + colorFormat: { type: definePropType(String) }, + disabled: Boolean, + predefine: { type: definePropType(Array) }, + validateEvent: { + type: Boolean, + default: true + }, + hueSliderClass: { type: definePropType([ + String, + Array, + Object + ]) }, + hueSliderStyle: { type: definePropType([ + String, + Array, + Object + ]) } + }); + const colorPickerPanelEmits = { [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNil(val) }; + const ROOT_COMMON_COLOR_INJECTION_KEY = Symbol("colorCommonPickerKey"); + const colorPickerPanelContextKey = Symbol("colorPickerPanelContextKey"); + +//#endregion +//#region ../../packages/components/color-picker-panel/src/props/slider.ts +/** + * @deprecated Removed after 3.0.0, Use `AlphaSliderProps` instead. + */ + const alphaSliderProps = buildProps({ + color: { + type: definePropType(Object), + required: true + }, + vertical: Boolean, + disabled: Boolean + }); + /** + * @deprecated Removed after 3.0.0, Use `HueSliderProps` instead. + */ + const hueSliderProps = alphaSliderProps; + +//#endregion +//#region ../../packages/components/color-picker-panel/src/utils/draggable.ts + let isDragging = false; + function draggable(element, options) { + if (!isClient) return; + const moveFn = function(event) { + options.drag?.(event); + }; + const upFn = function(event) { + document.removeEventListener("mousemove", moveFn); + document.removeEventListener("mouseup", upFn); + document.removeEventListener("touchmove", moveFn); + document.removeEventListener("touchend", upFn); + document.onselectstart = null; + document.ondragstart = null; + isDragging = false; + options.end?.(event); + }; + const downFn = function(event) { + if (isDragging) return; + document.onselectstart = () => false; + document.ondragstart = () => false; + document.addEventListener("mousemove", moveFn); + document.addEventListener("mouseup", upFn); + document.addEventListener("touchmove", moveFn); + document.addEventListener("touchend", upFn); + isDragging = true; + options.start?.(event); + }; + element.addEventListener("mousedown", downFn); + element.addEventListener("touchstart", downFn, { passive: false }); + } + +//#endregion +//#region ../../packages/components/color-picker-panel/src/composables/use-slider.ts + const useSlider = (props, { key, minValue, maxValue }) => { + const instance = (0, vue.getCurrentInstance)(); + const thumb = (0, vue.shallowRef)(); + const bar = (0, vue.shallowRef)(); + const currentValue = (0, vue.computed)(() => props.color.get(key)); + function handleClick(event) { + if (props.disabled) return; + if (event.target !== thumb.value) handleDrag(event); + thumb.value?.focus(); + } + function handleDrag(event) { + if (!bar.value || !thumb.value || props.disabled) return; + const rect = instance.vnode.el.getBoundingClientRect(); + const { clientX, clientY } = getClientXY(event); + let value; + if (!props.vertical) { + let left = clientX - rect.left; + left = Math.max(thumb.value.offsetWidth / 2, left); + left = Math.min(left, rect.width - thumb.value.offsetWidth / 2); + value = Math.round((left - thumb.value.offsetWidth / 2) / (rect.width - thumb.value.offsetWidth) * maxValue); + } else { + let top = clientY - rect.top; + top = Math.max(thumb.value.offsetHeight / 2, top); + top = Math.min(top, rect.height - thumb.value.offsetHeight / 2); + value = Math.round((top - thumb.value.offsetHeight / 2) / (rect.height - thumb.value.offsetHeight) * maxValue); + } + props.color.set(key, value); + } + function handleKeydown(event) { + if (props.disabled) return; + const { shiftKey } = event; + const code = getEventCode(event); + const step = shiftKey ? 10 : 1; + const reverse = key === "hue" ? -1 : 1; + let isPreventDefault = true; + switch (code) { + case EVENT_CODE.left: + case EVENT_CODE.down: + incrementPosition(-step * reverse); + break; + case EVENT_CODE.right: + case EVENT_CODE.up: + incrementPosition(step * reverse); + break; + case EVENT_CODE.home: + props.color.set(key, key === "hue" ? maxValue : minValue); + break; + case EVENT_CODE.end: + props.color.set(key, key === "hue" ? minValue : maxValue); + break; + case EVENT_CODE.pageDown: + incrementPosition(-4 * reverse); + break; + case EVENT_CODE.pageUp: + incrementPosition(4 * reverse); + break; + default: + isPreventDefault = false; + break; + } + isPreventDefault && event.preventDefault(); + } + function incrementPosition(step) { + let next = currentValue.value + step; + next = next < minValue ? minValue : next > maxValue ? maxValue : next; + props.color.set(key, next); + } + return { + thumb, + bar, + currentValue, + handleDrag, + handleClick, + handleKeydown + }; + }; + const useSliderDOM = (props, { namespace, maxValue, bar, thumb, currentValue, handleDrag, getBackground }) => { + const instance = (0, vue.getCurrentInstance)(); + const ns = useNamespace(namespace); + const thumbLeft = (0, vue.ref)(0); + const thumbTop = (0, vue.ref)(0); + const background = (0, vue.ref)(); + function getThumbLeft() { + if (!thumb.value) return 0; + if (props.vertical) return 0; + const el = instance.vnode.el; + const value = currentValue.value; + if (!el) return 0; + return Math.round(value * (el.offsetWidth - thumb.value.offsetWidth / 2) / maxValue); + } + function getThumbTop() { + if (!thumb.value) return 0; + const el = instance.vnode.el; + if (!props.vertical) return 0; + const value = currentValue.value; + if (!el) return 0; + return Math.round(value * (el.offsetHeight - thumb.value.offsetHeight / 2) / maxValue); + } + function update() { + thumbLeft.value = getThumbLeft(); + thumbTop.value = getThumbTop(); + background.value = getBackground?.(); + } + (0, vue.onMounted)(() => { + if (!bar.value || !thumb.value) return; + const dragConfig = { + drag: (event) => { + handleDrag(event); + }, + end: (event) => { + handleDrag(event); + } + }; + draggable(bar.value, dragConfig); + draggable(thumb.value, dragConfig); + update(); + }); + (0, vue.watch)(currentValue, () => update()); + (0, vue.watch)(() => props.color.value, () => update()); + const rootKls = (0, vue.computed)(() => [ + ns.b(), + ns.is("vertical", props.vertical), + ns.is("disabled", props.disabled) + ]); + const barKls = (0, vue.computed)(() => ns.e("bar")); + const thumbKls = (0, vue.computed)(() => ns.e("thumb")); + return { + rootKls, + barKls, + barStyle: (0, vue.computed)(() => ({ background: background.value })), + thumbKls, + thumbStyle: (0, vue.computed)(() => ({ + left: addUnit(thumbLeft.value), + top: addUnit(thumbTop.value) + })), + thumbLeft, + thumbTop, + update + }; + }; + +//#endregion +//#region ../../packages/components/color-picker-panel/src/components/alpha-slider.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$55 = [ + "aria-label", + "aria-valuenow", + "aria-valuetext", + "aria-orientation", + "tabindex", + "aria-disabled" + ]; + const minValue$1 = 0; + const maxValue$1 = 100; + var alpha_slider_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElColorAlphaSlider", + __name: "alpha-slider", + props: alphaSliderProps, + setup(__props, { expose: __expose }) { + const props = __props; + const { currentValue, bar, thumb, handleDrag, handleClick, handleKeydown } = useSlider(props, { + key: "alpha", + minValue: minValue$1, + maxValue: maxValue$1 + }); + const { rootKls, barKls, barStyle, thumbKls, thumbStyle, update } = useSliderDOM(props, { + namespace: "color-alpha-slider", + maxValue: maxValue$1, + currentValue, + bar, + thumb, + handleDrag, + getBackground + }); + const { t } = useLocale(); + const ariaLabel = (0, vue.computed)(() => t("el.colorpicker.alphaLabel")); + const ariaValuetext = (0, vue.computed)(() => { + return t("el.colorpicker.alphaDescription", { + alpha: currentValue.value, + color: props.color.value + }); + }); + function getBackground() { + if (props.color && props.color.value) { + const { r, g, b } = props.color.toRgb(); + return `linear-gradient(to right, rgba(${r}, ${g}, ${b}, 0) 0%, rgba(${r}, ${g}, ${b}, 1) 100%)`; + } + return ""; + } + __expose({ + update, + bar, + thumb + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(rootKls)) }, [(0, vue.createElementVNode)("div", { + ref_key: "bar", + ref: bar, + class: (0, vue.normalizeClass)((0, vue.unref)(barKls)), + style: (0, vue.normalizeStyle)((0, vue.unref)(barStyle)), + onClick: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(handleClick) && (0, vue.unref)(handleClick)(...args)) + }, null, 6), (0, vue.createElementVNode)("div", { + ref_key: "thumb", + ref: thumb, + class: (0, vue.normalizeClass)((0, vue.unref)(thumbKls)), + style: (0, vue.normalizeStyle)((0, vue.unref)(thumbStyle)), + "aria-label": ariaLabel.value, + "aria-valuenow": (0, vue.unref)(currentValue), + "aria-valuetext": ariaValuetext.value, + "aria-orientation": __props.vertical ? "vertical" : "horizontal", + "aria-valuemin": minValue$1, + "aria-valuemax": maxValue$1, + role: "slider", + tabindex: __props.disabled ? void 0 : 0, + "aria-disabled": __props.disabled, + onKeydown: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(handleKeydown) && (0, vue.unref)(handleKeydown)(...args)) + }, null, 46, _hoisted_1$55)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/color-picker-panel/src/components/alpha-slider.vue + var alpha_slider_default = alpha_slider_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/color-picker-panel/src/components/hue-slider.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$54 = [ + "aria-label", + "aria-valuenow", + "aria-valuetext", + "aria-orientation", + "tabindex", + "aria-disabled" + ]; + const minValue = 0; + const maxValue = 360; + var hue_slider_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElColorHueSlider", + __name: "hue-slider", + props: hueSliderProps, + setup(__props, { expose: __expose }) { + const props = __props; + const { currentValue, bar, thumb, handleDrag, handleClick, handleKeydown } = useSlider(props, { + key: "hue", + minValue, + maxValue + }); + const { rootKls, barKls, thumbKls, thumbStyle, thumbTop, update } = useSliderDOM(props, { + namespace: "color-hue-slider", + maxValue, + currentValue, + bar, + thumb, + handleDrag + }); + const { t } = useLocale(); + const ariaLabel = (0, vue.computed)(() => t("el.colorpicker.hueLabel")); + const ariaValuetext = (0, vue.computed)(() => { + return t("el.colorpicker.hueDescription", { + hue: currentValue.value, + color: props.color.value + }); + }); + __expose({ + bar, + thumb, + thumbTop, + update + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(rootKls)) }, [(0, vue.createElementVNode)("div", { + ref_key: "bar", + ref: bar, + class: (0, vue.normalizeClass)((0, vue.unref)(barKls)), + onClick: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(handleClick) && (0, vue.unref)(handleClick)(...args)) + }, null, 2), (0, vue.createElementVNode)("div", { + ref_key: "thumb", + ref: thumb, + class: (0, vue.normalizeClass)((0, vue.unref)(thumbKls)), + style: (0, vue.normalizeStyle)((0, vue.unref)(thumbStyle)), + "aria-label": ariaLabel.value, + "aria-valuenow": (0, vue.unref)(currentValue), + "aria-valuetext": ariaValuetext.value, + "aria-orientation": __props.vertical ? "vertical" : "horizontal", + "aria-valuemin": minValue, + "aria-valuemax": maxValue, + role: "slider", + tabindex: __props.disabled ? void 0 : 0, + "aria-disabled": __props.disabled, + onKeydown: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(handleKeydown) && (0, vue.unref)(handleKeydown)(...args)) + }, null, 46, _hoisted_1$54)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/color-picker-panel/src/components/hue-slider.vue + var hue_slider_default = hue_slider_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/color-picker-panel/src/props/predefine.ts +/** + * @deprecated Removed after 3.0.0, Use `PredefineProps` instead. + */ + const predefineProps = buildProps({ + colors: { + type: definePropType(Array), + required: true + }, + color: { + type: definePropType(Object), + required: true + }, + enableAlpha: { + type: Boolean, + required: true + }, + disabled: Boolean + }); + +//#endregion +//#region ../../packages/components/color-picker-panel/src/utils/color.ts + var Color = class { + constructor(options = {}) { + this._hue = 0; + this._saturation = 100; + this._value = 100; + this._alpha = 100; + this._tiny = new TinyColor(); + this._isValid = false; + this.enableAlpha = false; + this.format = ""; + this.value = ""; + for (const option in options) if (hasOwn(options, option)) this[option] = options[option]; + if (options.value) this.fromString(options.value); + else this.doOnChange(); + } + set(prop, value) { + if (arguments.length === 1 && typeof prop === "object") { + for (const p in prop) if (hasOwn(prop, p)) this.set(p, prop[p]); + return; + } + this[`_${prop}`] = value; + this._isValid = true; + this.doOnChange(); + } + get(prop) { + if ([ + "hue", + "saturation", + "value", + "alpha" + ].includes(prop)) return Math.round(this[`_${prop}`]); + return this[`_${prop}`]; + } + toRgb() { + return this._isValid ? this._tiny.toRgb() : { + r: 255, + g: 255, + b: 255, + a: 0 + }; + } + fromString(value) { + const color = new TinyColor(value); + this._isValid = color.isValid; + if (color.isValid) { + const { h, s, v, a } = color.toHsv(); + this._hue = h; + this._saturation = s * 100; + this._value = v * 100; + this._alpha = a * 100; + } else { + this._hue = 0; + this._saturation = 100; + this._value = 100; + this._alpha = 100; + } + this.doOnChange(); + } + clear() { + this._isValid = false; + this.value = ""; + this._hue = 0; + this._saturation = 100; + this._value = 100; + this._alpha = 100; + } + compare(color) { + const compareColor = new TinyColor({ + h: color._hue, + s: color._saturation / 100, + v: color._value / 100, + a: color._alpha / 100 + }); + return this._tiny.equals(compareColor); + } + doOnChange() { + const { _hue, _saturation, _value, _alpha, format, enableAlpha } = this; + let _format = format || (enableAlpha ? "rgb" : "hex"); + if (format === "hex" && enableAlpha) _format = "hex8"; + this._tiny = new TinyColor({ + h: _hue, + s: _saturation / 100, + v: _value / 100, + a: _alpha / 100 + }); + this.value = this._isValid ? this._tiny.toString(_format) : ""; + } + }; + +//#endregion +//#region ../../packages/components/color-picker-panel/src/composables/use-predefine.ts + const usePredefine = (props) => { + const { currentColor } = (0, vue.inject)(colorPickerPanelContextKey); + const rgbaColors = (0, vue.ref)(parseColors(props.colors, props.color)); + (0, vue.watch)(() => currentColor.value, (val) => { + const color = new Color({ + value: val, + enableAlpha: props.enableAlpha + }); + rgbaColors.value.forEach((item) => { + item.selected = color.compare(item); + }); + }); + (0, vue.watchEffect)(() => { + rgbaColors.value = parseColors(props.colors, props.color); + }); + function handleSelect(index) { + props.color.fromString(props.colors[index]); + } + function parseColors(colors, color) { + return colors.map((value) => { + const c = new Color({ + value, + enableAlpha: props.enableAlpha + }); + c.selected = c.compare(color); + return c; + }); + } + return { + rgbaColors, + handleSelect + }; + }; + const usePredefineDOM = (props) => { + const ns = useNamespace("color-predefine"); + const rootKls = (0, vue.computed)(() => [ns.b(), ns.is("disabled", props.disabled)]); + const colorsKls = (0, vue.computed)(() => ns.e("colors")); + function colorSelectorKls(item) { + return [ + ns.e("color-selector"), + ns.is("alpha", item.get("alpha") < 100), + { selected: item.selected } + ]; + } + return { + rootKls, + colorsKls, + colorSelectorKls + }; + }; + +//#endregion +//#region ../../packages/components/color-picker-panel/src/components/predefine.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$53 = [ + "disabled", + "aria-label", + "onClick" + ]; + var predefine_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElColorPredefine", + __name: "predefine", + props: predefineProps, + setup(__props) { + const props = __props; + const { rgbaColors, handleSelect } = usePredefine(props); + const { rootKls, colorsKls, colorSelectorKls } = usePredefineDOM(props); + const { t } = useLocale(); + const ariaLabel = (value) => { + return t("el.colorpicker.predefineDescription", { value }); + }; + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(rootKls)) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(colorsKls)) }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(rgbaColors), (item, index) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key: __props.colors[index], + type: "button", + disabled: __props.disabled, + "aria-label": ariaLabel(item.value), + class: (0, vue.normalizeClass)((0, vue.unref)(colorSelectorKls)(item)), + onClick: ($event) => (0, vue.unref)(handleSelect)(index) + }, [(0, vue.createElementVNode)("div", { style: (0, vue.normalizeStyle)({ backgroundColor: item.value }) }, null, 4)], 10, _hoisted_1$53); + }), 128))], 2)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/color-picker-panel/src/components/predefine.vue + var predefine_default = predefine_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/color-picker-panel/src/props/sv-panel.ts +/** + * @deprecated Removed after 3.0.0, Use `SvPanelProps` instead. + */ + const svPanelProps = buildProps({ + color: { + type: definePropType(Object), + required: true + }, + disabled: Boolean + }); + +//#endregion +//#region ../../packages/components/color-picker-panel/src/composables/use-sv-panel.ts + const useSvPanel = (props) => { + const instance = (0, vue.getCurrentInstance)(); + const cursorRef = (0, vue.ref)(); + const cursorTop = (0, vue.ref)(0); + const cursorLeft = (0, vue.ref)(0); + const background = (0, vue.ref)("hsl(0, 100%, 50%)"); + const saturation = (0, vue.computed)(() => props.color.get("saturation")); + const brightness = (0, vue.computed)(() => props.color.get("value")); + const hue = (0, vue.computed)(() => props.color.get("hue")); + function handleClick(event) { + if (props.disabled) return; + if (event.target !== cursorRef.value) handleDrag(event); + cursorRef.value?.focus({ preventScroll: true }); + } + function handleDrag(event) { + if (props.disabled) return; + const rect = instance.vnode.el.getBoundingClientRect(); + const { clientX, clientY } = getClientXY(event); + let left = clientX - rect.left; + let top = clientY - rect.top; + left = Math.max(0, left); + left = Math.min(left, rect.width); + top = Math.max(0, top); + top = Math.min(top, rect.height); + cursorLeft.value = left; + cursorTop.value = top; + props.color.set({ + saturation: left / rect.width * 100, + value: 100 - top / rect.height * 100 + }); + } + function handleKeydown(event) { + if (props.disabled) return; + const { shiftKey } = event; + const code = getEventCode(event); + const step = shiftKey ? 10 : 1; + let isPreventDefault = true; + switch (code) { + case EVENT_CODE.left: + incrementSaturation(-step); + break; + case EVENT_CODE.right: + incrementSaturation(step); + break; + case EVENT_CODE.up: + incrementBrightness(step); + break; + case EVENT_CODE.down: + incrementBrightness(-step); + break; + default: + isPreventDefault = false; + break; + } + isPreventDefault && event.preventDefault(); + } + function incrementSaturation(step) { + let next = saturation.value + step; + next = next < 0 ? 0 : next > 100 ? 100 : next; + props.color.set("saturation", next); + } + function incrementBrightness(step) { + let next = brightness.value + step; + next = next < 0 ? 0 : next > 100 ? 100 : next; + props.color.set("value", next); + } + return { + cursorRef, + cursorTop, + cursorLeft, + background, + saturation, + brightness, + hue, + handleClick, + handleDrag, + handleKeydown + }; + }; + const useSvPanelDOM = (props, { cursorTop, cursorLeft, background, handleDrag }) => { + const instance = (0, vue.getCurrentInstance)(); + const ns = useNamespace("color-svpanel"); + function update() { + const saturation = props.color.get("saturation"); + const brightness = props.color.get("value"); + const { clientWidth: width, clientHeight: height } = instance.vnode.el; + cursorLeft.value = saturation * width / 100; + cursorTop.value = (100 - brightness) * height / 100; + background.value = `hsl(${props.color.get("hue")}, 100%, 50%)`; + } + (0, vue.onMounted)(() => { + draggable(instance.vnode.el, { + drag: (event) => { + handleDrag(event); + }, + end: (event) => { + handleDrag(event); + } + }); + update(); + }); + (0, vue.watch)([ + () => props.color.get("hue"), + () => props.color.get("value"), + () => props.color.value + ], () => update()); + return { + rootKls: (0, vue.computed)(() => ns.b()), + cursorKls: (0, vue.computed)(() => ns.e("cursor")), + rootStyle: (0, vue.computed)(() => ({ backgroundColor: background.value })), + cursorStyle: (0, vue.computed)(() => ({ + top: addUnit(cursorTop.value), + left: addUnit(cursorLeft.value) + })), + update + }; + }; + +//#endregion +//#region ../../packages/components/color-picker-panel/src/components/sv-panel.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$52 = [ + "tabindex", + "aria-disabled", + "aria-label", + "aria-valuenow", + "aria-valuetext" + ]; + var sv_panel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElSvPanel", + __name: "sv-panel", + props: svPanelProps, + setup(__props, { expose: __expose }) { + const props = __props; + const { cursorRef, cursorTop, cursorLeft, background, saturation, brightness, handleClick, handleDrag, handleKeydown } = useSvPanel(props); + const { rootKls, cursorKls, rootStyle, cursorStyle, update } = useSvPanelDOM(props, { + cursorTop, + cursorLeft, + background, + handleDrag + }); + const { t } = useLocale(); + const ariaLabel = (0, vue.computed)(() => t("el.colorpicker.svLabel")); + const ariaValuetext = (0, vue.computed)(() => { + return t("el.colorpicker.svDescription", { + saturation: saturation.value, + brightness: brightness.value, + color: props.color.value + }); + }); + __expose({ update }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + class: (0, vue.normalizeClass)((0, vue.unref)(rootKls)), + style: (0, vue.normalizeStyle)((0, vue.unref)(rootStyle)), + onClick: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(handleClick) && (0, vue.unref)(handleClick)(...args)) + }, [(0, vue.createElementVNode)("div", { + ref_key: "cursorRef", + ref: cursorRef, + class: (0, vue.normalizeClass)((0, vue.unref)(cursorKls)), + style: (0, vue.normalizeStyle)((0, vue.unref)(cursorStyle)), + tabindex: __props.disabled ? void 0 : 0, + "aria-disabled": __props.disabled, + role: "slider", + "aria-valuemin": "0,0", + "aria-valuemax": "100,100", + "aria-label": ariaLabel.value, + "aria-valuenow": `${(0, vue.unref)(saturation)},${(0, vue.unref)(brightness)}`, + "aria-valuetext": ariaValuetext.value, + onKeydown: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(handleKeydown) && (0, vue.unref)(handleKeydown)(...args)) + }, null, 46, _hoisted_1$52)], 6); + }; + } + }); + +//#endregion +//#region ../../packages/components/color-picker-panel/src/components/sv-panel.vue + var sv_panel_default = sv_panel_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/color-picker-panel/src/composables/use-common-color.ts + const useCommonColor = (props, emit) => { + const color = (0, vue.reactive)(new Color({ + enableAlpha: props.showAlpha, + format: props.colorFormat || "", + value: props.modelValue + })); + (0, vue.watch)(() => [props.colorFormat, props.showAlpha], () => { + color.enableAlpha = props.showAlpha; + color.format = props.colorFormat || color.format; + color.doOnChange(); + emit(UPDATE_MODEL_EVENT, color.value); + }); + return { color }; + }; + +//#endregion +//#region ../../packages/components/color-picker-panel/src/color-picker-panel.vue?vue&type=script&setup=true&lang.ts + var color_picker_panel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElColorPickerPanel", + __name: "color-picker-panel", + props: colorPickerPanelProps, + emits: colorPickerPanelEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const ns = useNamespace("color-picker-panel"); + const { formItem } = useFormItem(); + const disabled = useFormDisabled(); + const hueRef = (0, vue.ref)(); + const svRef = (0, vue.ref)(); + const alphaRef = (0, vue.ref)(); + const inputRef = (0, vue.ref)(); + const customInput = (0, vue.ref)(""); + const { color } = (0, vue.inject)(ROOT_COMMON_COLOR_INJECTION_KEY, () => useCommonColor(props, emit), true); + function handleConfirm() { + color.fromString(customInput.value); + if (color.value !== customInput.value) customInput.value = color.value; + } + function handleFocusout() { + if (props.validateEvent) formItem?.validate?.("blur").catch((err) => /* @__PURE__ */ debugWarn(err)); + } + function update() { + hueRef.value?.update(); + svRef.value?.update(); + alphaRef.value?.update(); + } + (0, vue.onMounted)(() => { + if (props.modelValue) customInput.value = color.value; + (0, vue.nextTick)(update); + }); + (0, vue.watch)(() => props.modelValue, (newVal) => { + if (newVal !== color.value) newVal ? color.fromString(newVal) : color.clear(); + }); + (0, vue.watch)(() => color.value, (val) => { + emit(UPDATE_MODEL_EVENT, val); + customInput.value = val; + if (props.validateEvent) formItem?.validate("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + }); + (0, vue.provide)(colorPickerPanelContextKey, { currentColor: (0, vue.computed)(() => color.value) }); + __expose({ + color, + inputRef, + update + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).b(), + (0, vue.unref)(ns).is("disabled", (0, vue.unref)(disabled)), + (0, vue.unref)(ns).is("border", __props.border) + ]), + onFocusout: handleFocusout + }, [ + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("wrapper")) }, [(0, vue.createVNode)(hue_slider_default, { + ref_key: "hueRef", + ref: hueRef, + color: (0, vue.unref)(color), + vertical: "", + disabled: (0, vue.unref)(disabled), + class: (0, vue.normalizeClass)(["hue-slider", __props.hueSliderClass]), + style: (0, vue.normalizeStyle)(__props.hueSliderStyle) + }, null, 8, [ + "color", + "disabled", + "class", + "style" + ]), (0, vue.createVNode)(sv_panel_default, { + ref_key: "svRef", + ref: svRef, + color: (0, vue.unref)(color), + disabled: (0, vue.unref)(disabled) + }, null, 8, ["color", "disabled"])], 2), + __props.showAlpha ? ((0, vue.openBlock)(), (0, vue.createBlock)(alpha_slider_default, { + key: 0, + ref_key: "alphaRef", + ref: alphaRef, + color: (0, vue.unref)(color), + disabled: (0, vue.unref)(disabled) + }, null, 8, ["color", "disabled"])) : (0, vue.createCommentVNode)("v-if", true), + __props.predefine ? ((0, vue.openBlock)(), (0, vue.createBlock)(predefine_default, { + key: 1, + ref: "predefine", + "enable-alpha": __props.showAlpha, + color: (0, vue.unref)(color), + colors: __props.predefine, + disabled: (0, vue.unref)(disabled) + }, null, 8, [ + "enable-alpha", + "color", + "colors", + "disabled" + ])) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("footer")) }, [(0, vue.createVNode)((0, vue.unref)(ElInput), { + ref_key: "inputRef", + ref: inputRef, + modelValue: customInput.value, + "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => customInput.value = $event), + "validate-event": false, + size: "small", + disabled: (0, vue.unref)(disabled), + onChange: handleConfirm + }, null, 8, ["modelValue", "disabled"]), (0, vue.renderSlot)(_ctx.$slots, "footer")], 2) + ], 34); + }; + } + }); + +//#endregion +//#region ../../packages/components/color-picker-panel/src/color-picker-panel.vue + var color_picker_panel_default = color_picker_panel_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/color-picker-panel/index.ts + const ElColorPickerPanel = withInstall(color_picker_panel_default); + +//#endregion +//#region ../../packages/components/color-picker/src/color-picker.ts +/** + * @deprecated Removed after 3.0.0, Use `ColorPickerProps` instead. + */ + const colorPickerProps = buildProps({ + persistent: { + type: Boolean, + default: true + }, + modelValue: { + type: definePropType(String), + default: void 0 + }, + id: String, + showAlpha: Boolean, + colorFormat: { type: definePropType(String) }, + disabled: { + type: Boolean, + default: void 0 + }, + clearable: { + type: Boolean, + default: true + }, + size: useSizeProp, + popperClass: useTooltipContentProps.popperClass, + popperStyle: useTooltipContentProps.popperStyle, + tabindex: { + type: [String, Number], + default: 0 + }, + teleported: useTooltipContentProps.teleported, + appendTo: useTooltipContentProps.appendTo, + predefine: { type: definePropType(Array) }, + validateEvent: { + type: Boolean, + default: true + }, + ...useEmptyValuesProps, + ...useAriaProps(["ariaLabel"]) + }); + const colorPickerEmits = { + [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNil(val), + [CHANGE_EVENT]: (val) => isString(val) || isNil(val), + activeChange: (val) => isString(val) || isNil(val), + focus: (evt) => evt instanceof FocusEvent, + blur: (evt) => evt instanceof FocusEvent, + clear: () => true + }; + /** + * @description default values for ColorPickerProps, used in components that extend ColorPickerProps + */ + const colorPickerPropsDefaults = { + persistent: true, + modelValue: void 0, + disabled: void 0, + clearable: true, + popperStyle: void 0, + tabindex: 0, + teleported: true, + validateEvent: true, + valueOnClear: void 0 + }; + +//#endregion +//#region ../../packages/components/color-picker/src/color-picker.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$51 = [ + "id", + "aria-label", + "aria-labelledby", + "aria-description", + "aria-disabled", + "tabindex" + ]; + var color_picker_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElColorPicker", + __name: "color-picker", + props: colorPickerProps, + emits: colorPickerEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const { t } = useLocale(); + const ns = useNamespace("color"); + const { formItem } = useFormItem(); + const colorSize = useFormSize(); + const colorDisabled = useFormDisabled(); + const { valueOnClear, isEmptyValue } = useEmptyValues(props, null); + const commonColor = useCommonColor(props, emit); + const { inputId: buttonId, isLabeledByFormItem } = useFormItemInputId(props, { formItemContext: formItem }); + const popper = (0, vue.ref)(); + const triggerRef = (0, vue.ref)(); + const pickerPanelRef = (0, vue.ref)(); + const showPicker = (0, vue.ref)(false); + const showPanelColor = (0, vue.ref)(false); + let shouldActiveChange = true; + const { isFocused, handleFocus, handleBlur } = useFocusController(triggerRef, { + disabled: colorDisabled, + beforeBlur(event) { + return popper.value?.isFocusInsideContent(event); + }, + afterBlur() { + setShowPicker(false); + resetColor(); + if (props.validateEvent) formItem?.validate?.("blur").catch((err) => /* @__PURE__ */ debugWarn(err)); + } + }); + const color = reactiveComputed(() => pickerPanelRef.value?.color ?? commonColor.color); + const panelProps = (0, vue.computed)(() => pick(props, Object.keys(colorPickerPanelProps))); + const displayedColor = (0, vue.computed)(() => { + if (!props.modelValue && !showPanelColor.value) return "transparent"; + return displayedRgb(color, props.showAlpha); + }); + const currentColor = (0, vue.computed)(() => { + return !props.modelValue && !showPanelColor.value ? "" : color.value; + }); + const buttonAriaLabel = (0, vue.computed)(() => { + return !isLabeledByFormItem.value ? props.ariaLabel || t("el.colorpicker.defaultLabel") : void 0; + }); + const buttonAriaLabelledby = (0, vue.computed)(() => { + return isLabeledByFormItem.value ? formItem?.labelId : void 0; + }); + const btnKls = (0, vue.computed)(() => { + return [ + ns.b("picker"), + ns.is("disabled", colorDisabled.value), + ns.bm("picker", colorSize.value), + ns.is("focused", isFocused.value) + ]; + }); + function displayedRgb(color, showAlpha) { + const { r, g, b, a } = color.toRgb(); + return showAlpha ? `rgba(${r}, ${g}, ${b}, ${a})` : `rgb(${r}, ${g}, ${b})`; + } + function setShowPicker(value) { + showPicker.value = value; + } + const debounceSetShowPicker = debounce(setShowPicker, 100, { leading: true }); + function show() { + if (colorDisabled.value) return; + setShowPicker(true); + } + function hide() { + debounceSetShowPicker(false); + resetColor(); + } + function resetColor() { + (0, vue.nextTick)(() => { + if (props.modelValue) color.fromString(props.modelValue); + else { + color.value = ""; + (0, vue.nextTick)(() => { + showPanelColor.value = false; + }); + } + }); + } + function handleTrigger() { + if (colorDisabled.value) return; + if (showPicker.value) resetColor(); + debounceSetShowPicker(!showPicker.value); + } + function confirmValue() { + const value = isEmptyValue(color.value) ? valueOnClear.value : color.value; + emit(UPDATE_MODEL_EVENT, value); + emit(CHANGE_EVENT, value); + if (props.validateEvent) formItem?.validate("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + debounceSetShowPicker(false); + (0, vue.nextTick)(() => { + const newColor = new Color({ + enableAlpha: props.showAlpha, + format: props.colorFormat || "", + value: props.modelValue + }); + if (!color.compare(newColor)) resetColor(); + }); + } + function clear() { + debounceSetShowPicker(false); + emit(UPDATE_MODEL_EVENT, valueOnClear.value); + emit(CHANGE_EVENT, valueOnClear.value); + if (props.modelValue !== valueOnClear.value && props.validateEvent) formItem?.validate("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + resetColor(); + emit("clear"); + } + function handleShowTooltip() { + pickerPanelRef?.value?.inputRef?.focus(); + } + function handleClickOutside() { + if (!showPicker.value) return; + hide(); + isFocused.value && focus(); + } + function handleEsc(event) { + event.preventDefault(); + event.stopPropagation(); + setShowPicker(false); + resetColor(); + } + function handleKeyDown(event) { + switch (getEventCode(event)) { + case EVENT_CODE.enter: + case EVENT_CODE.numpadEnter: + case EVENT_CODE.space: + event.preventDefault(); + event.stopPropagation(); + show(); + break; + case EVENT_CODE.esc: + handleEsc(event); + break; + } + } + function focus() { + triggerRef.value.focus(); + } + function blur() { + triggerRef.value.blur(); + } + (0, vue.watch)(() => currentColor.value, (val) => { + shouldActiveChange && emit("activeChange", val); + shouldActiveChange = true; + }); + (0, vue.watch)(() => color.value, () => { + if (!props.modelValue && !showPanelColor.value) showPanelColor.value = true; + }); + (0, vue.watch)(() => props.modelValue, (newVal) => { + if (!newVal) showPanelColor.value = false; + else if (newVal && newVal !== color.value) { + shouldActiveChange = false; + color.fromString(newVal); + } + }); + (0, vue.watch)(() => showPicker.value, () => { + pickerPanelRef.value && (0, vue.nextTick)(pickerPanelRef.value.update); + }); + (0, vue.provide)(ROOT_COMMON_COLOR_INJECTION_KEY, commonColor); + __expose({ + color, + show, + hide, + focus, + blur + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTooltip), { + ref_key: "popper", + ref: popper, + visible: showPicker.value, + "show-arrow": false, + "fallback-placements": [ + "bottom", + "top", + "right", + "left" + ], + offset: 0, + "gpu-acceleration": false, + "popper-class": [(0, vue.unref)(ns).be("picker", "panel"), __props.popperClass], + "popper-style": __props.popperStyle, + "stop-popper-mouse-event": false, + pure: "", + loop: "", + role: "dialog", + effect: "light", + trigger: "click", + teleported: __props.teleported, + transition: `${(0, vue.unref)(ns).namespace.value}-zoom-in-top`, + persistent: __props.persistent, + "append-to": __props.appendTo, + onShow: handleShowTooltip, + onHide: _cache[2] || (_cache[2] = ($event) => setShowPicker(false)) + }, { + content: (0, vue.withCtx)(() => [(0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElColorPickerPanel), (0, vue.mergeProps)({ + ref_key: "pickerPanelRef", + ref: pickerPanelRef + }, panelProps.value, { + border: false, + "validate-event": false, + onKeydown: (0, vue.withKeys)(handleEsc, ["esc"]) + }), { + footer: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", null, [__props.clearable ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElButton), { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("footer", "link-btn")), + text: "", + size: "small", + onClick: clear + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.colorpicker.clear")), 1)]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createVNode)((0, vue.unref)(ElButton), { + plain: "", + size: "small", + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("footer", "btn")), + onClick: confirmValue + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.colorpicker.confirm")), 1)]), + _: 1 + }, 8, ["class"])])]), + _: 1 + }, 16)), [[ + (0, vue.unref)(ClickOutside), + handleClickOutside, + triggerRef.value + ]])]), + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", (0, vue.mergeProps)({ + id: (0, vue.unref)(buttonId), + ref_key: "triggerRef", + ref: triggerRef + }, _ctx.$attrs, { + class: btnKls.value, + role: "button", + "aria-label": buttonAriaLabel.value, + "aria-labelledby": buttonAriaLabelledby.value, + "aria-description": (0, vue.unref)(t)("el.colorpicker.description", { color: __props.modelValue || "" }), + "aria-disabled": (0, vue.unref)(colorDisabled), + tabindex: (0, vue.unref)(colorDisabled) ? void 0 : __props.tabindex, + onKeydown: handleKeyDown, + onFocus: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(handleFocus) && (0, vue.unref)(handleFocus)(...args)), + onBlur: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(handleBlur) && (0, vue.unref)(handleBlur)(...args)) + }), [(0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("picker", "trigger")), + onClick: handleTrigger + }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).be("picker", "color"), (0, vue.unref)(ns).is("alpha", __props.showAlpha)]) }, [(0, vue.createElementVNode)("span", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("picker", "color-inner")), + style: (0, vue.normalizeStyle)({ backgroundColor: displayedColor.value }) + }, [(0, vue.withDirectives)((0, vue.createVNode)((0, vue.unref)(ElIcon), { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).be("picker", "icon"), (0, vue.unref)(ns).is("icon-arrow-down")]) }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_down_default))]), + _: 1 + }, 8, ["class"]), [[vue.vShow, __props.modelValue || showPanelColor.value]]), (0, vue.withDirectives)((0, vue.createVNode)((0, vue.unref)(ElIcon), { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).be("picker", "empty"), (0, vue.unref)(ns).is("icon-close")]) }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(close_default))]), + _: 1 + }, 8, ["class"]), [[vue.vShow, !__props.modelValue && !showPanelColor.value]])], 6)], 2)], 2)], 16, _hoisted_1$51)]), + _: 1 + }, 8, [ + "visible", + "popper-class", + "popper-style", + "teleported", + "transition", + "persistent", + "append-to" + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/color-picker/src/color-picker.vue + var color_picker_default = color_picker_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/color-picker/index.ts + const ElColorPicker = withInstall(color_picker_default); + +//#endregion +//#region ../../packages/components/container/src/container.vue?vue&type=script&setup=true&lang.ts + var container_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElContainer", + __name: "container", + props: { direction: { + type: String, + required: false + } }, + setup(__props) { + const props = __props; + const slots = (0, vue.useSlots)(); + const ns = useNamespace("container"); + const isVertical = (0, vue.computed)(() => { + if (props.direction === "vertical") return true; + else if (props.direction === "horizontal") return false; + if (slots && slots.default) return slots.default().some((vNode) => { + const tag = vNode.type.name; + return tag === "ElHeader" || tag === "ElFooter"; + }); + else return false; + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("section", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).b(), (0, vue.unref)(ns).is("vertical", isVertical.value)]) }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/container/src/container.vue + var container_default = container_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/container/src/aside.vue?vue&type=script&setup=true&lang.ts + var aside_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElAside", + __name: "aside", + props: { width: { + type: [String, null], + required: false, + default: null + } }, + setup(__props) { + const props = __props; + const ns = useNamespace("aside"); + const style = (0, vue.computed)(() => props.width ? ns.cssVarBlock({ width: props.width }) : {}); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("aside", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()), + style: (0, vue.normalizeStyle)(style.value) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 6); + }; + } + }); + +//#endregion +//#region ../../packages/components/container/src/aside.vue + var aside_default = aside_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/container/src/footer.vue?vue&type=script&setup=true&lang.ts + var footer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElFooter", + __name: "footer", + props: { height: { + type: [String, null], + required: false, + default: null + } }, + setup(__props) { + const props = __props; + const ns = useNamespace("footer"); + const style = (0, vue.computed)(() => props.height ? ns.cssVarBlock({ height: props.height }) : {}); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("footer", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()), + style: (0, vue.normalizeStyle)(style.value) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 6); + }; + } + }); + +//#endregion +//#region ../../packages/components/container/src/footer.vue + var footer_default = footer_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/container/src/header.vue?vue&type=script&setup=true&lang.ts + var header_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElHeader", + __name: "header", + props: { height: { + type: [String, null], + required: false, + default: null + } }, + setup(__props) { + const props = __props; + const ns = useNamespace("header"); + const style = (0, vue.computed)(() => { + return props.height ? ns.cssVarBlock({ height: props.height }) : {}; + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("header", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()), + style: (0, vue.normalizeStyle)(style.value) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 6); + }; + } + }); + +//#endregion +//#region ../../packages/components/container/src/header.vue + var header_default = header_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/container/src/main.vue?vue&type=script&setup=true&lang.ts + var main_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElMain", + __name: "main", + setup(__props) { + const ns = useNamespace("main"); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("main", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()) }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/container/src/main.vue + var main_default = main_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/container/index.ts + const ElContainer = withInstall(container_default, { + Aside: aside_default, + Footer: footer_default, + Header: header_default, + Main: main_default + }); + const ElAside = withNoopInstall(aside_default); + const ElFooter = withNoopInstall(footer_default); + const ElHeader = withNoopInstall(header_default); + const ElMain = withNoopInstall(main_default); + +//#endregion +//#region ../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/advancedFormat.js + var require_advancedFormat = /* @__PURE__ */ __commonJSMin(((exports, module) => { + (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).dayjs_plugin_advancedFormat = t(); + })(exports, (function() { + "use strict"; + return function(e, t) { + var r = t.prototype, n = r.format; + r.format = function(e) { + var t = this, r = this.$locale(); + if (!this.isValid()) return n.bind(this)(e); + var s = this.$utils(), a = (e || "YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g, (function(e) { + switch (e) { + case "Q": return Math.ceil((t.$M + 1) / 3); + case "Do": return r.ordinal(t.$D); + case "gggg": return t.weekYear(); + case "GGGG": return t.isoWeekYear(); + case "wo": return r.ordinal(t.week(), "W"); + case "w": + case "ww": return s.s(t.week(), "w" === e ? 1 : 2, "0"); + case "W": + case "WW": return s.s(t.isoWeek(), "W" === e ? 1 : 2, "0"); + case "k": + case "kk": return s.s(String(0 === t.$H ? 24 : t.$H), "k" === e ? 1 : 2, "0"); + case "X": return Math.floor(t.$d.getTime() / 1e3); + case "x": return t.$d.getTime(); + case "z": return "[" + t.offsetName() + "]"; + case "zzz": return "[" + t.offsetName("long") + "]"; + default: return e; + } + })); + return n.bind(this)(a); + }; + }; + })); + })); + +//#endregion +//#region ../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/weekOfYear.js + var require_weekOfYear = /* @__PURE__ */ __commonJSMin(((exports, module) => { + (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).dayjs_plugin_weekOfYear = t(); + })(exports, (function() { + "use strict"; + var e = "week", t = "year"; + return function(i, n, r) { + var f = n.prototype; + f.week = function(i) { + if (void 0 === i && (i = null), null !== i) return this.add(7 * (i - this.week()), "day"); + var n = this.$locale().yearStart || 1; + if (11 === this.month() && this.date() > 25) { + var f = r(this).startOf(t).add(1, t).date(n), s = r(this).endOf(e); + if (f.isBefore(s)) return 1; + } + var a = r(this).startOf(t).date(n).startOf(e).subtract(1, "millisecond"), o = this.diff(a, e, !0); + return o < 0 ? r(this).startOf("week").week() : Math.ceil(o); + }, f.weeks = function(e) { + return void 0 === e && (e = null), this.week(e); + }; + }; + })); + })); + +//#endregion +//#region ../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/weekYear.js + var require_weekYear = /* @__PURE__ */ __commonJSMin(((exports, module) => { + (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).dayjs_plugin_weekYear = t(); + })(exports, (function() { + "use strict"; + return function(e, t) { + t.prototype.weekYear = function() { + var e = this.month(), t = this.week(), n = this.year(); + return 1 === t && 11 === e ? n + 1 : 0 === e && t >= 52 ? n - 1 : n; + }; + }; + })); + })); + +//#endregion +//#region ../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/dayOfYear.js + var require_dayOfYear = /* @__PURE__ */ __commonJSMin(((exports, module) => { + (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).dayjs_plugin_dayOfYear = t(); + })(exports, (function() { + "use strict"; + return function(e, t, n) { + t.prototype.dayOfYear = function(e) { + var t = Math.round((n(this).startOf("day") - n(this).startOf("year")) / 864e5) + 1; + return null == e ? t : this.add(e - t, "day"); + }; + }; + })); + })); + +//#endregion +//#region ../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isSameOrAfter.js + var require_isSameOrAfter = /* @__PURE__ */ __commonJSMin(((exports, module) => { + (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).dayjs_plugin_isSameOrAfter = t(); + })(exports, (function() { + "use strict"; + return function(e, t) { + t.prototype.isSameOrAfter = function(e, t) { + return this.isSame(e, t) || this.isAfter(e, t); + }; + }; + })); + })); + +//#endregion +//#region ../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isSameOrBefore.js + var require_isSameOrBefore = /* @__PURE__ */ __commonJSMin(((exports, module) => { + (function(e, i) { + "object" == typeof exports && "undefined" != typeof module ? module.exports = i() : "function" == typeof define && define.amd ? define(i) : (e = "undefined" != typeof globalThis ? globalThis : e || self).dayjs_plugin_isSameOrBefore = i(); + })(exports, (function() { + "use strict"; + return function(e, i) { + i.prototype.isSameOrBefore = function(e, i) { + return this.isSame(e, i) || this.isBefore(e, i); + }; + }; + })); + })); + +//#endregion +//#region ../../packages/components/date-picker-panel/src/props/date-picker-panel.ts +var import_isSameOrBefore = /* @__PURE__ */ __toESM(require_isSameOrBefore()); +var import_isSameOrAfter = /* @__PURE__ */ __toESM(require_isSameOrAfter()); +var import_dayOfYear = /* @__PURE__ */ __toESM(require_dayOfYear()); +var import_weekYear = /* @__PURE__ */ __toESM(require_weekYear()); +var import_weekOfYear = /* @__PURE__ */ __toESM(require_weekOfYear()); +var import_advancedFormat = /* @__PURE__ */ __toESM(require_advancedFormat()); + const datePickerPanelProps = buildProps({ + valueFormat: String, + dateFormat: String, + timeFormat: String, + disabled: { + type: Boolean, + default: void 0 + }, + modelValue: { + type: definePropType([ + Date, + Array, + String, + Number + ]), + default: "" + }, + defaultValue: { type: definePropType([Date, Array]) }, + defaultTime: { type: definePropType([Date, Array]) }, + isRange: Boolean, + ...disabledTimeListsProps, + disabledDate: { type: Function }, + cellClassName: { type: Function }, + shortcuts: { + type: Array, + default: () => [] + }, + arrowControl: Boolean, + unlinkPanels: Boolean, + showNow: { + type: Boolean, + default: true + }, + showConfirm: Boolean, + showFooter: Boolean, + showWeekNumber: Boolean, + type: { + type: definePropType(String), + default: "date" + }, + clearable: { + type: Boolean, + default: true + }, + border: { + type: Boolean, + default: true + }, + editable: { + type: Boolean, + default: true + } + }); + +//#endregion +//#region ../../packages/components/date-picker-panel/src/constants.ts + const ROOT_PICKER_INJECTION_KEY = Symbol("rootPickerContextKey"); + const ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY = "ElIsDefaultFormat"; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/props/shared.ts + const selectionModes = [ + "date", + "dates", + "year", + "years", + "month", + "months", + "week", + "range" + ]; + const datePickerSharedProps = buildProps({ + cellClassName: { type: definePropType(Function) }, + disabledDate: { type: definePropType(Function) }, + date: { + type: definePropType(Object), + required: true + }, + minDate: { type: definePropType(Object) }, + maxDate: { type: definePropType(Object) }, + parsedValue: { type: definePropType([Object, Array]) }, + rangeState: { + type: definePropType(Object), + default: () => ({ + endDate: null, + selecting: false + }) + }, + disabled: Boolean + }); + const panelSharedProps = buildProps({ + type: { + type: definePropType(String), + required: true, + values: datePickTypes + }, + dateFormat: String, + timeFormat: String, + showNow: { + type: Boolean, + default: true + }, + showConfirm: Boolean, + showFooter: { + type: Boolean, + default: true + }, + showWeekNumber: Boolean, + border: Boolean, + disabled: Boolean, + editable: { + type: Boolean, + default: true + } + }); + const panelRangeSharedProps = buildProps({ + unlinkPanels: Boolean, + visible: { + type: Boolean, + default: true + }, + showConfirm: Boolean, + showFooter: { + type: Boolean, + default: true + }, + border: Boolean, + disabled: Boolean, + parsedValue: { type: definePropType(Array) } + }); + const selectionModeWithDefault = (mode) => { + return { + type: String, + values: selectionModes, + default: mode + }; + }; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/props/panel-date-pick.ts + const panelDatePickProps = buildProps({ + ...panelSharedProps, + parsedValue: { type: definePropType([Object, Array]) }, + visible: { + type: Boolean, + default: true + }, + format: { + type: String, + default: "" + } + }); + +//#endregion +//#region ../../packages/components/date-picker-panel/src/utils.ts + const isValidRange = (range) => { + if (!isArray$1(range)) return false; + const [left, right] = range; + return import_dayjs_min.default.isDayjs(left) && import_dayjs_min.default.isDayjs(right) && (0, import_dayjs_min.default)(left).isValid() && (0, import_dayjs_min.default)(right).isValid() && left.isSameOrBefore(right); + }; + const getDefaultValue = (defaultValue, { lang, step = 1, unit, unlinkPanels }) => { + let start; + if (isArray$1(defaultValue)) { + let [left, right] = defaultValue.map((d) => (0, import_dayjs_min.default)(d).locale(lang)); + if (!unlinkPanels) right = left.add(step, unit); + return [left, right]; + } else if (defaultValue) start = (0, import_dayjs_min.default)(defaultValue); + else start = (0, import_dayjs_min.default)(); + start = start.locale(lang); + return [start, start.add(step, unit)]; + }; + const buildPickerTable = (dimension, rows, { columnIndexOffset, startDate, nextEndDate, now, unit, relativeDateGetter, setCellMetadata, setRowMetadata }) => { + for (let rowIndex = 0; rowIndex < dimension.row; rowIndex++) { + const row = rows[rowIndex]; + for (let columnIndex = 0; columnIndex < dimension.column; columnIndex++) { + let cell = row[columnIndex + columnIndexOffset]; + if (!cell) cell = { + row: rowIndex, + column: columnIndex, + type: "normal", + inRange: false, + start: false, + end: false + }; + const nextStartDate = relativeDateGetter(rowIndex * dimension.column + columnIndex); + cell.dayjs = nextStartDate; + cell.date = nextStartDate.toDate(); + cell.timestamp = nextStartDate.valueOf(); + cell.type = "normal"; + cell.inRange = !!(startDate && nextStartDate.isSameOrAfter(startDate, unit) && nextEndDate && nextStartDate.isSameOrBefore(nextEndDate, unit)) || !!(startDate && nextStartDate.isSameOrBefore(startDate, unit) && nextEndDate && nextStartDate.isSameOrAfter(nextEndDate, unit)); + if (startDate?.isSameOrAfter(nextEndDate)) { + cell.start = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit); + cell.end = startDate && nextStartDate.isSame(startDate, unit); + } else { + cell.start = !!startDate && nextStartDate.isSame(startDate, unit); + cell.end = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit); + } + if (nextStartDate.isSame(now, unit)) cell.type = "today"; + setCellMetadata?.(cell, { + rowIndex, + columnIndex + }); + row[columnIndex + columnIndexOffset] = cell; + } + setRowMetadata?.(row); + } + }; + const datesInMonth = (date, year, month, lang) => { + const firstDay = (0, import_dayjs_min.default)().locale(lang).startOf("month").month(month).year(year).hour(date.hour()).minute(date.minute()).second(date.second()); + return rangeArr(firstDay.daysInMonth()).map((n) => firstDay.add(n, "day").toDate()); + }; + const getValidDateOfMonth = (date, year, month, lang, disabledDate) => { + const _value = (0, import_dayjs_min.default)().year(year).month(month).startOf("month").hour(date.hour()).minute(date.minute()).second(date.second()); + const _date = datesInMonth(date, year, month, lang).find((date) => { + return !disabledDate?.(date); + }); + if (_date) return (0, import_dayjs_min.default)(_date).locale(lang); + return _value.locale(lang); + }; + const getValidDateOfYear = (value, lang, disabledDate) => { + const year = value.year(); + if (!disabledDate?.(value.toDate())) return value.locale(lang); + const month = value.month(); + if (!datesInMonth(value, year, month, lang).every(disabledDate)) return getValidDateOfMonth(value, year, month, lang, disabledDate); + for (let i = 0; i < 12; i++) if (!datesInMonth(value, year, i, lang).every(disabledDate)) return getValidDateOfMonth(value, year, i, lang, disabledDate); + return value; + }; + const correctlyParseUserInput = (value, format, lang, defaultFormat) => { + if (isArray$1(value)) return value.map((v) => correctlyParseUserInput(v, format, lang, defaultFormat)); + if (isString(value)) { + const dayjsValue = defaultFormat?.value ? (0, import_dayjs_min.default)(value) : (0, import_dayjs_min.default)(value, format); + if (!dayjsValue.isValid()) return dayjsValue; + } + return (0, import_dayjs_min.default)(value, format).locale(lang); + }; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/props/basic-date-table.ts + const basicDateTableProps = buildProps({ + ...datePickerSharedProps, + showWeekNumber: Boolean, + selectionMode: selectionModeWithDefault("date") + }); + const basicDateTableEmits = [ + "changerange", + "pick", + "select" + ]; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/composables/use-basic-date-table.ts + const isNormalDay = (type = "") => { + return ["normal", "today"].includes(type); + }; + const useBasicDateTable = (props, emit) => { + const { lang } = useLocale(); + const tbodyRef = (0, vue.ref)(); + const currentCellRef = (0, vue.ref)(); + const lastRow = (0, vue.ref)(); + const lastColumn = (0, vue.ref)(); + const tableRows = (0, vue.ref)([ + [], + [], + [], + [], + [], + [] + ]); + let focusWithClick = false; + const firstDayOfWeek = props.date.$locale().weekStart || 7; + const WEEKS_CONSTANT = props.date.locale("en").localeData().weekdaysShort().map((_) => _.toLowerCase()); + const offsetDay = (0, vue.computed)(() => { + return firstDayOfWeek > 3 ? 7 - firstDayOfWeek : -firstDayOfWeek; + }); + const startDate = (0, vue.computed)(() => { + const startDayOfMonth = props.date.startOf("month"); + return startDayOfMonth.subtract(startDayOfMonth.day() || 7, "day"); + }); + const WEEKS = (0, vue.computed)(() => { + return WEEKS_CONSTANT.concat(WEEKS_CONSTANT).slice(firstDayOfWeek, firstDayOfWeek + 7); + }); + const hasCurrent = (0, vue.computed)(() => { + return flatten((0, vue.unref)(rows)).some((row) => { + return row.isCurrent; + }); + }); + const days = (0, vue.computed)(() => { + const startOfMonth = props.date.startOf("month"); + return { + startOfMonthDay: startOfMonth.day() || 7, + dateCountOfMonth: startOfMonth.daysInMonth(), + dateCountOfLastMonth: startOfMonth.subtract(1, "month").daysInMonth() + }; + }); + const selectedDate = (0, vue.computed)(() => { + return props.selectionMode === "dates" ? castArray(props.parsedValue) : []; + }); + const setDateText = (cell, { count, rowIndex, columnIndex }) => { + const { startOfMonthDay, dateCountOfMonth, dateCountOfLastMonth } = (0, vue.unref)(days); + const offset = (0, vue.unref)(offsetDay); + if (rowIndex >= 0 && rowIndex <= 1) { + const numberOfDaysFromPreviousMonth = startOfMonthDay + offset < 0 ? 7 + startOfMonthDay + offset : startOfMonthDay + offset; + if (columnIndex + rowIndex * 7 >= numberOfDaysFromPreviousMonth) { + cell.text = count; + return true; + } else { + cell.text = dateCountOfLastMonth - (numberOfDaysFromPreviousMonth - columnIndex % 7) + 1 + rowIndex * 7; + cell.type = "prev-month"; + } + } else { + if (count <= dateCountOfMonth) cell.text = count; + else { + cell.text = count - dateCountOfMonth; + cell.type = "next-month"; + } + return true; + } + return false; + }; + const setCellMetadata = (cell, { columnIndex, rowIndex }, count) => { + const { disabledDate, cellClassName } = props; + const _selectedDate = (0, vue.unref)(selectedDate); + const shouldIncrement = setDateText(cell, { + count, + rowIndex, + columnIndex + }); + const cellDate = cell.dayjs.toDate(); + cell.selected = _selectedDate.find((d) => d.isSame(cell.dayjs, "day")); + cell.isSelected = !!cell.selected; + cell.isCurrent = isCurrent(cell); + cell.disabled = disabledDate?.(cellDate); + cell.customClass = cellClassName?.(cellDate); + return shouldIncrement; + }; + const setRowMetadata = (row) => { + if (props.selectionMode === "week") { + const [start, end] = props.showWeekNumber ? [1, 7] : [0, 6]; + const isActive = isWeekActive(row[start + 1]); + row[start].inRange = isActive; + row[start].start = isActive; + row[end].inRange = isActive; + row[end].end = isActive; + } + }; + const rows = (0, vue.computed)(() => { + const { minDate, maxDate, rangeState, showWeekNumber } = props; + const offset = (0, vue.unref)(offsetDay); + const rows_ = (0, vue.unref)(tableRows); + const dateUnit = "day"; + let count = 1; + buildPickerTable({ + row: 6, + column: 7 + }, rows_, { + startDate: minDate, + columnIndexOffset: showWeekNumber ? 1 : 0, + nextEndDate: rangeState.endDate || maxDate || rangeState.selecting && minDate || null, + now: (0, import_dayjs_min.default)().locale((0, vue.unref)(lang)).startOf(dateUnit), + unit: dateUnit, + relativeDateGetter: (idx) => (0, vue.unref)(startDate).add(idx - offset, dateUnit), + setCellMetadata: (...args) => { + if (setCellMetadata(...args, count)) count += 1; + }, + setRowMetadata + }); + if (showWeekNumber) { + for (let rowIndex = 0; rowIndex < 6; rowIndex++) if (rows_[rowIndex][1].dayjs) rows_[rowIndex][0] = { + type: "week", + text: rows_[rowIndex][1].dayjs.week() + }; + } + return rows_; + }); + (0, vue.watch)(() => props.date, async () => { + if ((0, vue.unref)(tbodyRef)?.contains(document.activeElement)) { + await (0, vue.nextTick)(); + await focus(); + } + }); + const focus = async () => (0, vue.unref)(currentCellRef)?.focus(); + const isCurrent = (cell) => { + return props.selectionMode === "date" && isNormalDay(cell.type) && cellMatchesDate(cell, props.parsedValue); + }; + const cellMatchesDate = (cell, date) => { + if (!date) return false; + return (0, import_dayjs_min.default)(date).locale((0, vue.unref)(lang)).isSame(props.date.date(Number(cell.text)), "day"); + }; + const getDateOfCell = (row, column) => { + const startOfMonthDay = (0, vue.unref)(days).startOfMonthDay; + const offset = (0, vue.unref)(offsetDay); + const numberOfDaysFromPreviousMonth = startOfMonthDay + offset < 0 ? 7 + startOfMonthDay + offset : startOfMonthDay + offset; + const offsetFromStart = row * 7 + (column - (props.showWeekNumber ? 1 : 0)); + return props.date.startOf("month").subtract(numberOfDaysFromPreviousMonth, "day").add(offsetFromStart, "day"); + }; + const handleMouseMove = (event) => { + if (!props.rangeState.selecting) return; + let target = event.target; + if (target.tagName === "SPAN") target = target.parentNode?.parentNode; + if (target.tagName === "DIV") target = target.parentNode; + if (target.tagName !== "TD") return; + const row = target.parentNode.rowIndex - 1; + const column = target.cellIndex; + if ((0, vue.unref)(rows)[row][column].disabled) return; + if (row !== (0, vue.unref)(lastRow) || column !== (0, vue.unref)(lastColumn)) { + lastRow.value = row; + lastColumn.value = column; + emit("changerange", { + selecting: true, + endDate: getDateOfCell(row, column) + }); + } + }; + const isSelectedCell = (cell) => { + return !(0, vue.unref)(hasCurrent) && cell?.text === 1 && isNormalDay(cell.type) || cell.isCurrent; + }; + const handleFocus = (event) => { + if (focusWithClick || (0, vue.unref)(hasCurrent) || props.selectionMode !== "date") return; + handlePickDate(event, true); + }; + const handleMouseDown = (event) => { + if (!event.target.closest("td")) return; + focusWithClick = true; + }; + const handleMouseUp = (event) => { + if (!event.target.closest("td")) return; + focusWithClick = false; + }; + const handleRangePick = (newDate) => { + if (!props.rangeState.selecting || !props.minDate) { + emit("pick", { + minDate: newDate, + maxDate: null + }); + emit("select", true); + } else { + if (newDate >= props.minDate) emit("pick", { + minDate: props.minDate, + maxDate: newDate + }); + else emit("pick", { + minDate: newDate, + maxDate: props.minDate + }); + emit("select", false); + } + }; + const handleWeekPick = (newDate) => { + const weekNumber = newDate.week(); + const value = `${newDate.year()}w${weekNumber}`; + emit("pick", { + year: newDate.year(), + week: weekNumber, + value, + date: newDate.startOf("week") + }); + }; + const handleDatesPick = (newDate, selected) => { + emit("pick", selected ? castArray(props.parsedValue).filter((d) => d?.valueOf() !== newDate.valueOf()) : castArray(props.parsedValue).concat([newDate])); + }; + const handlePickDate = (event, isKeyboardMovement = false) => { + if (props.disabled) return; + const target = event.target.closest("td"); + if (!target) return; + const row = target.parentNode.rowIndex - 1; + const column = target.cellIndex; + const cell = (0, vue.unref)(rows)[row][column]; + if (cell.disabled || cell.type === "week") return; + const newDate = getDateOfCell(row, column); + switch (props.selectionMode) { + case "range": + handleRangePick(newDate); + break; + case "date": + emit("pick", newDate, isKeyboardMovement); + break; + case "week": + handleWeekPick(newDate); + break; + case "dates": + handleDatesPick(newDate, !!cell.selected); + break; + default: break; + } + }; + const isWeekActive = (cell) => { + if (props.selectionMode !== "week") return false; + let newDate = props.date.startOf("day"); + if (cell.type === "prev-month") newDate = newDate.subtract(1, "month"); + if (cell.type === "next-month") newDate = newDate.add(1, "month"); + newDate = newDate.date(Number.parseInt(cell.text, 10)); + if (props.parsedValue && !isArray$1(props.parsedValue)) { + const dayOffset = (props.parsedValue.day() - firstDayOfWeek + 7) % 7 - 1; + return props.parsedValue.subtract(dayOffset, "day").isSame(newDate, "day"); + } + return false; + }; + return { + WEEKS, + rows, + tbodyRef, + currentCellRef, + focus, + isCurrent, + isWeekActive, + isSelectedCell, + handlePickDate, + handleMouseUp, + handleMouseDown, + handleMouseMove, + handleFocus + }; + }; + const useBasicDateTableDOM = (props, { isCurrent, isWeekActive }) => { + const ns = useNamespace("date-table"); + const { t } = useLocale(); + const tableKls = (0, vue.computed)(() => [ns.b(), ns.is("week-mode", props.selectionMode === "week" && !props.disabled)]); + const tableLabel = (0, vue.computed)(() => t("el.datepicker.dateTablePrompt")); + const getCellClasses = (cell) => { + const classes = []; + if (isNormalDay(cell.type) && !cell.disabled) { + classes.push("available"); + if (cell.type === "today") classes.push("today"); + } else classes.push(cell.type); + if (isCurrent(cell)) classes.push("current"); + if (cell.inRange && (isNormalDay(cell.type) || props.selectionMode === "week")) { + classes.push("in-range"); + if (cell.start) classes.push("start-date"); + if (cell.end) classes.push("end-date"); + } + if (cell.disabled || props.disabled) classes.push("disabled"); + if (cell.selected) classes.push("selected"); + if (cell.customClass) classes.push(cell.customClass); + return classes.join(" "); + }; + const getRowKls = (cell) => [ns.e("row"), { current: isWeekActive(cell) }]; + return { + tableKls, + tableLabel, + weekHeaderClass: ns.e("week-header"), + getCellClasses, + getRowKls, + t + }; + }; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/props/basic-cell.ts + const basicCellProps = buildProps({ cell: { type: definePropType(Object) } }); + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-cell-render.tsx + var basic_cell_render_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElDatePickerCell", + props: basicCellProps, + setup(props) { + const ns = useNamespace("date-table-cell"); + const { slots } = (0, vue.inject)(ROOT_PICKER_INJECTION_KEY); + return () => { + const { cell } = props; + return (0, vue.renderSlot)(slots, "default", { ...cell }, () => [(0, vue.createVNode)("div", { "class": ns.b() }, [(0, vue.createVNode)("span", { "class": ns.e("text") }, [cell?.renderText ?? cell?.text])])]); + }; + } + }); + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-date-table.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$50 = ["aria-label"]; + const _hoisted_2$32 = ["aria-label"]; + const _hoisted_3$15 = [ + "aria-current", + "aria-selected", + "tabindex", + "aria-disabled" + ]; + var basic_date_table_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + __name: "basic-date-table", + props: basicDateTableProps, + emits: basicDateTableEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const { WEEKS, rows, tbodyRef, currentCellRef, focus, isCurrent, isWeekActive, isSelectedCell, handlePickDate, handleMouseUp, handleMouseDown, handleMouseMove, handleFocus } = useBasicDateTable(props, __emit); + const { tableLabel, tableKls, getCellClasses, getRowKls, weekHeaderClass, t } = useBasicDateTableDOM(props, { + isCurrent, + isWeekActive + }); + let isUnmounting = false; + (0, vue.onBeforeUnmount)(() => { + isUnmounting = true; + }); + __expose({ focus }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("table", { + "aria-label": (0, vue.unref)(tableLabel), + class: (0, vue.normalizeClass)((0, vue.unref)(tableKls)), + cellspacing: "0", + cellpadding: "0", + role: "grid", + onClick: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(handlePickDate) && (0, vue.unref)(handlePickDate)(...args)), + onMousemove: _cache[2] || (_cache[2] = (...args) => (0, vue.unref)(handleMouseMove) && (0, vue.unref)(handleMouseMove)(...args)), + onMousedown: _cache[3] || (_cache[3] = (...args) => (0, vue.unref)(handleMouseDown) && (0, vue.unref)(handleMouseDown)(...args)), + onMouseup: _cache[4] || (_cache[4] = (...args) => (0, vue.unref)(handleMouseUp) && (0, vue.unref)(handleMouseUp)(...args)) + }, [(0, vue.createElementVNode)("tbody", { + ref_key: "tbodyRef", + ref: tbodyRef + }, [(0, vue.createElementVNode)("tr", null, [_ctx.showWeekNumber ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("th", { + key: 0, + scope: "col", + class: (0, vue.normalizeClass)((0, vue.unref)(weekHeaderClass)) + }, null, 2)) : (0, vue.createCommentVNode)("v-if", true), ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(WEEKS), (week, key) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("th", { + key, + "aria-label": (0, vue.unref)(t)("el.datepicker.weeksFull." + week), + scope: "col" + }, (0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.weeks." + week)), 9, _hoisted_2$32); + }), 128))]), ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(rows), (row, rowKey) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("tr", { + key: rowKey, + class: (0, vue.normalizeClass)((0, vue.unref)(getRowKls)(_ctx.showWeekNumber ? row[2] : row[1])) + }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(row, (cell, columnKey) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("td", { + key: `${rowKey}.${columnKey}`, + ref_for: true, + ref: (el) => !(0, vue.unref)(isUnmounting) && (0, vue.unref)(isSelectedCell)(cell) && (currentCellRef.value = el), + class: (0, vue.normalizeClass)((0, vue.unref)(getCellClasses)(cell)), + "aria-current": cell.isCurrent ? "date" : void 0, + "aria-selected": cell.isCurrent, + tabindex: _ctx.disabled ? void 0 : (0, vue.unref)(isSelectedCell)(cell) ? 0 : -1, + "aria-disabled": _ctx.disabled, + onFocus: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(handleFocus) && (0, vue.unref)(handleFocus)(...args)) + }, [(0, vue.createVNode)((0, vue.unref)(basic_cell_render_default), { cell }, null, 8, ["cell"])], 42, _hoisted_3$15); + }), 128))], 2); + }), 128))], 512)], 42, _hoisted_1$50); + }; + } + }); + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-date-table.vue + var basic_date_table_default = basic_date_table_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/props/basic-month-table.ts + const basicMonthTableProps = buildProps({ + ...datePickerSharedProps, + selectionMode: selectionModeWithDefault("month") + }); + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-month-table.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$49 = ["aria-label"]; + const _hoisted_2$31 = [ + "aria-selected", + "aria-label", + "tabindex", + "onKeydown" + ]; + var basic_month_table_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + __name: "basic-month-table", + props: basicMonthTableProps, + emits: [ + "changerange", + "pick", + "select" + ], + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const ns = useNamespace("month-table"); + const { t, lang } = useLocale(); + const tbodyRef = (0, vue.ref)(); + const currentCellRef = (0, vue.ref)(); + const months = (0, vue.ref)(props.date.locale("en").localeData().monthsShort().map((_) => _.toLowerCase())); + const tableRows = (0, vue.ref)([ + [], + [], + [] + ]); + const lastRow = (0, vue.ref)(); + const lastColumn = (0, vue.ref)(); + const rows = (0, vue.computed)(() => { + const rows = tableRows.value; + const now = (0, import_dayjs_min.default)().locale(lang.value).startOf("month"); + for (let i = 0; i < 3; i++) { + const row = rows[i]; + for (let j = 0; j < 4; j++) { + const cell = row[j] ||= { + row: i, + column: j, + type: "normal", + inRange: false, + start: false, + end: false, + text: -1, + disabled: false, + isSelected: false, + customClass: void 0, + date: void 0, + dayjs: void 0, + isCurrent: void 0, + selected: void 0, + renderText: void 0, + timestamp: void 0 + }; + cell.type = "normal"; + const index = i * 4 + j; + const calTime = props.date.startOf("year").month(index); + const calEndDate = props.rangeState.endDate || props.maxDate || props.rangeState.selecting && props.minDate || null; + cell.inRange = !!(props.minDate && calTime.isSameOrAfter(props.minDate, "month") && calEndDate && calTime.isSameOrBefore(calEndDate, "month")) || !!(props.minDate && calTime.isSameOrBefore(props.minDate, "month") && calEndDate && calTime.isSameOrAfter(calEndDate, "month")); + if (props.minDate?.isSameOrAfter(calEndDate)) { + cell.start = !!(calEndDate && calTime.isSame(calEndDate, "month")); + cell.end = props.minDate && calTime.isSame(props.minDate, "month"); + } else { + cell.start = !!(props.minDate && calTime.isSame(props.minDate, "month")); + cell.end = !!(calEndDate && calTime.isSame(calEndDate, "month")); + } + if (now.isSame(calTime)) cell.type = "today"; + const cellDate = calTime.toDate(); + cell.text = index; + cell.disabled = props.disabledDate?.(cellDate) || false; + cell.date = cellDate; + cell.customClass = props.cellClassName?.(cellDate); + cell.dayjs = calTime; + cell.timestamp = calTime.valueOf(); + cell.isSelected = isSelectedCell(cell); + } + } + return rows; + }); + const focus = () => { + currentCellRef.value?.focus(); + }; + const getCellStyle = (cell) => { + const style = {}; + const year = props.date.year(); + const today = /* @__PURE__ */ new Date(); + const month = cell.text; + style.disabled = props.disabled || (props.disabledDate ? datesInMonth(props.date, year, month, lang.value).every(props.disabledDate) : false); + style.current = castArray(props.parsedValue).some((date) => import_dayjs_min.default.isDayjs(date) && date.year() === year && date.month() === month); + style.today = today.getFullYear() === year && today.getMonth() === month; + if (cell.customClass) style[cell.customClass] = true; + if (cell.inRange) { + style["in-range"] = true; + if (cell.start) style["start-date"] = true; + if (cell.end) style["end-date"] = true; + } + return style; + }; + const isSelectedCell = (cell) => { + const year = props.date.year(); + const month = cell.text; + return castArray(props.date).some((date) => date.year() === year && date.month() === month); + }; + const handleMouseMove = (event) => { + if (!props.rangeState.selecting) return; + let target = event.target; + if (target.tagName === "SPAN") target = target.parentNode?.parentNode; + if (target.tagName === "DIV") target = target.parentNode; + if (target.tagName !== "TD") return; + const row = target.parentNode.rowIndex; + const column = target.cellIndex; + if (rows.value[row][column].disabled) return; + if (row !== lastRow.value || column !== lastColumn.value) { + lastRow.value = row; + lastColumn.value = column; + emit("changerange", { + selecting: true, + endDate: props.date.startOf("year").month(row * 4 + column) + }); + } + }; + const handleMonthTableClick = (event) => { + if (props.disabled) return; + const target = event.target?.closest("td"); + if (target?.tagName !== "TD") return; + if (hasClass(target, "disabled")) return; + const column = target.cellIndex; + const month = target.parentNode.rowIndex * 4 + column; + const newDate = props.date.startOf("year").month(month); + if (props.selectionMode === "months") { + if (event.type === "keydown") { + emit("pick", castArray(props.parsedValue), false); + return; + } + const newMonth = getValidDateOfMonth(props.date, props.date.year(), month, lang.value, props.disabledDate); + emit("pick", hasClass(target, "current") ? castArray(props.parsedValue).filter((d) => d?.year() !== newMonth.year() || d?.month() !== newMonth.month()) : castArray(props.parsedValue).concat([(0, import_dayjs_min.default)(newMonth)])); + } else if (props.selectionMode === "range") if (!props.rangeState.selecting) { + emit("pick", { + minDate: newDate, + maxDate: null + }); + emit("select", true); + } else { + if (props.minDate && newDate >= props.minDate) emit("pick", { + minDate: props.minDate, + maxDate: newDate + }); + else emit("pick", { + minDate: newDate, + maxDate: props.minDate + }); + emit("select", false); + } + else emit("pick", month); + }; + (0, vue.watch)(() => props.date, async () => { + if (tbodyRef.value?.contains(document.activeElement)) { + await (0, vue.nextTick)(); + currentCellRef.value?.focus(); + } + }); + __expose({ focus }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("table", { + role: "grid", + "aria-label": (0, vue.unref)(t)("el.datepicker.monthTablePrompt"), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()), + onClick: handleMonthTableClick, + onMousemove: handleMouseMove + }, [(0, vue.createElementVNode)("tbody", { + ref_key: "tbodyRef", + ref: tbodyRef + }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(rows.value, (row, key) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("tr", { key }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(row, (cell, key_) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("td", { + key: key_, + ref_for: true, + ref: (el) => cell.isSelected && (currentCellRef.value = el), + class: (0, vue.normalizeClass)(getCellStyle(cell)), + "aria-selected": !!cell.isSelected, + "aria-label": (0, vue.unref)(t)(`el.datepicker.month${+cell.text + 1}`), + tabindex: cell.isSelected ? 0 : -1, + onKeydown: [(0, vue.withKeys)((0, vue.withModifiers)(handleMonthTableClick, ["prevent", "stop"]), ["space"]), (0, vue.withKeys)((0, vue.withModifiers)(handleMonthTableClick, ["prevent", "stop"]), ["enter"])] + }, [(0, vue.createVNode)((0, vue.unref)(basic_cell_render_default), { cell: { + ...cell, + renderText: (0, vue.unref)(t)("el.datepicker.months." + months.value[cell.text]) + } }, null, 8, ["cell"])], 42, _hoisted_2$31); + }), 128))]); + }), 128))], 512)], 42, _hoisted_1$49); + }; + } + }); + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-month-table.vue + var basic_month_table_default = basic_month_table_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/props/basic-year-table.ts + const basicYearTableProps = buildProps({ + ...datePickerSharedProps, + selectionMode: selectionModeWithDefault("year") + }); + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-year-table.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$48 = ["aria-label"]; + const _hoisted_2$30 = [ + "aria-selected", + "aria-label", + "tabindex", + "onKeydown" + ]; + var basic_year_table_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + __name: "basic-year-table", + props: basicYearTableProps, + emits: [ + "changerange", + "pick", + "select" + ], + setup(__props, { expose: __expose, emit: __emit }) { + const datesInYear = (year, lang) => { + const firstDay = (0, import_dayjs_min.default)(String(year)).locale(lang).startOf("year"); + return rangeArr(firstDay.endOf("year").dayOfYear()).map((n) => firstDay.add(n, "day").toDate()); + }; + const props = __props; + const emit = __emit; + const ns = useNamespace("year-table"); + const { t, lang } = useLocale(); + const tbodyRef = (0, vue.ref)(); + const currentCellRef = (0, vue.ref)(); + const startYear = (0, vue.computed)(() => { + return Math.floor(props.date.year() / 10) * 10; + }); + const tableRows = (0, vue.ref)([ + [], + [], + [] + ]); + const lastRow = (0, vue.ref)(); + const lastColumn = (0, vue.ref)(); + const rows = (0, vue.computed)(() => { + const rows = tableRows.value; + const now = (0, import_dayjs_min.default)().locale(lang.value).startOf("year"); + for (let i = 0; i < 3; i++) { + const row = rows[i]; + for (let j = 0; j < 4; j++) { + if (i * 4 + j >= 10) break; + let cell = row[j]; + if (!cell) cell = { + row: i, + column: j, + type: "normal", + inRange: false, + start: false, + end: false, + text: -1, + disabled: false, + isSelected: false, + customClass: void 0, + date: void 0, + dayjs: void 0, + isCurrent: void 0, + selected: void 0, + renderText: void 0, + timestamp: void 0 + }; + cell.type = "normal"; + const index = i * 4 + j + startYear.value; + const calTime = (0, import_dayjs_min.default)().year(index); + const calEndDate = props.rangeState.endDate || props.maxDate || props.rangeState.selecting && props.minDate || null; + cell.inRange = !!(props.minDate && calTime.isSameOrAfter(props.minDate, "year") && calEndDate && calTime.isSameOrBefore(calEndDate, "year")) || !!(props.minDate && calTime.isSameOrBefore(props.minDate, "year") && calEndDate && calTime.isSameOrAfter(calEndDate, "year")); + if (props.minDate?.isSameOrAfter(calEndDate)) { + cell.start = !!(calEndDate && calTime.isSame(calEndDate, "year")); + cell.end = !!(props.minDate && calTime.isSame(props.minDate, "year")); + } else { + cell.start = !!(props.minDate && calTime.isSame(props.minDate, "year")); + cell.end = !!(calEndDate && calTime.isSame(calEndDate, "year")); + } + if (now.isSame(calTime)) cell.type = "today"; + cell.text = index; + const cellDate = calTime.toDate(); + cell.disabled = props.disabledDate?.(cellDate) || false; + cell.date = cellDate; + cell.customClass = props.cellClassName?.(cellDate); + cell.dayjs = calTime; + cell.timestamp = calTime.valueOf(); + cell.isSelected = isSelectedCell(cell); + row[j] = cell; + } + } + return rows; + }); + const focus = () => { + currentCellRef.value?.focus(); + }; + const getCellKls = (cell) => { + const kls = {}; + const today = (0, import_dayjs_min.default)().locale(lang.value); + const year = cell.text; + kls.disabled = props.disabled || (props.disabledDate ? datesInYear(year, lang.value).every(props.disabledDate) : false); + kls.today = today.year() === year; + kls.current = castArray(props.parsedValue).some((d) => d.year() === year); + if (cell.customClass) kls[cell.customClass] = true; + if (cell.inRange) { + kls["in-range"] = true; + if (cell.start) kls["start-date"] = true; + if (cell.end) kls["end-date"] = true; + } + return kls; + }; + const isSelectedCell = (cell) => { + const year = cell.text; + return castArray(props.date).some((date) => date.year() === year); + }; + const handleYearTableClick = (event) => { + if (props.disabled) return; + const target = event.target?.closest("td"); + if (!target || !target.textContent || hasClass(target, "disabled")) return; + const column = target.cellIndex; + const selectedYear = target.parentNode.rowIndex * 4 + column + startYear.value; + const newDate = (0, import_dayjs_min.default)().year(selectedYear); + if (props.selectionMode === "range") if (!props.rangeState.selecting) { + emit("pick", { + minDate: newDate, + maxDate: null + }); + emit("select", true); + } else { + if (props.minDate && newDate >= props.minDate) emit("pick", { + minDate: props.minDate, + maxDate: newDate + }); + else emit("pick", { + minDate: newDate, + maxDate: props.minDate + }); + emit("select", false); + } + else if (props.selectionMode === "years") { + if (event.type === "keydown") { + emit("pick", castArray(props.parsedValue), false); + return; + } + const vaildYear = getValidDateOfYear(newDate.startOf("year"), lang.value, props.disabledDate); + emit("pick", hasClass(target, "current") ? castArray(props.parsedValue).filter((d) => d?.year() !== selectedYear) : castArray(props.parsedValue).concat([vaildYear])); + } else emit("pick", selectedYear); + }; + const handleMouseMove = (event) => { + if (!props.rangeState.selecting) return; + const target = event.target?.closest("td"); + if (!target) return; + const row = target.parentNode.rowIndex; + const column = target.cellIndex; + if (rows.value[row][column].disabled) return; + if (row !== lastRow.value || column !== lastColumn.value) { + lastRow.value = row; + lastColumn.value = column; + emit("changerange", { + selecting: true, + endDate: (0, import_dayjs_min.default)().year(startYear.value).add(row * 4 + column, "year") + }); + } + }; + (0, vue.watch)(() => props.date, async () => { + if (tbodyRef.value?.contains(document.activeElement)) { + await (0, vue.nextTick)(); + currentCellRef.value?.focus(); + } + }); + __expose({ focus }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("table", { + role: "grid", + "aria-label": (0, vue.unref)(t)("el.datepicker.yearTablePrompt"), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()), + onClick: handleYearTableClick, + onMousemove: handleMouseMove + }, [(0, vue.createElementVNode)("tbody", { + ref_key: "tbodyRef", + ref: tbodyRef + }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(rows.value, (row, rowKey) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("tr", { key: rowKey }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(row, (cell, cellKey) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("td", { + key: `${rowKey}_${cellKey}`, + ref_for: true, + ref: (el) => cell.isSelected && (currentCellRef.value = el), + class: (0, vue.normalizeClass)(["available", getCellKls(cell)]), + "aria-selected": cell.isSelected, + "aria-label": String(cell.text), + tabindex: cell.isSelected ? 0 : -1, + onKeydown: [(0, vue.withKeys)((0, vue.withModifiers)(handleYearTableClick, ["prevent", "stop"]), ["space"]), (0, vue.withKeys)((0, vue.withModifiers)(handleYearTableClick, ["prevent", "stop"]), ["enter"])] + }, [(0, vue.createVNode)((0, vue.unref)(basic_cell_render_default), { cell }, null, 8, ["cell"])], 42, _hoisted_2$30); + }), 128))]); + }), 128))], 512)], 42, _hoisted_1$48); + }; + } + }); + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-year-table.vue + var basic_year_table_default = basic_year_table_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$47 = ["disabled", "onClick"]; + const _hoisted_2$29 = ["aria-label", "disabled"]; + const _hoisted_3$14 = ["aria-label", "disabled"]; + const _hoisted_4$11 = ["tabindex", "aria-disabled"]; + const _hoisted_5$8 = ["tabindex", "aria-disabled"]; + const _hoisted_6$3 = ["aria-label", "disabled"]; + const _hoisted_7$2 = ["aria-label", "disabled"]; + var panel_date_pick_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + __name: "panel-date-pick", + props: panelDatePickProps, + emits: [ + "pick", + "set-picker-option", + "panel-change" + ], + setup(__props, { emit: __emit }) { + const timeWithinRange = (_, __, ___) => true; + const props = __props; + const contextEmit = __emit; + const ppNs = useNamespace("picker-panel"); + const dpNs = useNamespace("date-picker"); + const attrs = (0, vue.useAttrs)(); + const slots = (0, vue.useSlots)(); + const { t, lang } = useLocale(); + const pickerBase = (0, vue.inject)(PICKER_BASE_INJECTION_KEY); + const isDefaultFormat = (0, vue.inject)(ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY, void 0); + const { shortcuts, disabledDate, cellClassName, defaultTime } = pickerBase.props; + const defaultValue = (0, vue.toRef)(pickerBase.props, "defaultValue"); + const currentViewRef = (0, vue.ref)(); + const innerDate = (0, vue.ref)((0, import_dayjs_min.default)().locale(lang.value)); + const isChangeToNow = (0, vue.ref)(false); + let isShortcut = false; + const defaultTimeD = (0, vue.computed)(() => { + return (0, import_dayjs_min.default)(defaultTime).locale(lang.value); + }); + const month = (0, vue.computed)(() => { + return innerDate.value.month(); + }); + const year = (0, vue.computed)(() => { + return innerDate.value.year(); + }); + const selectableRange = (0, vue.ref)([]); + const userInputDate = (0, vue.ref)(null); + const userInputTime = (0, vue.ref)(null); + const checkDateWithinRange = (date) => { + return selectableRange.value.length > 0 ? timeWithinRange(date, selectableRange.value, props.format || DEFAULT_FORMATS_TIME) : true; + }; + const formatEmit = (emitDayjs) => { + if (defaultTime && !visibleTime.value && !isChangeToNow.value && !isShortcut) return defaultTimeD.value.year(emitDayjs.year()).month(emitDayjs.month()).date(emitDayjs.date()); + if (showTime.value) return emitDayjs.millisecond(0); + return emitDayjs.startOf("day"); + }; + const emit = (value, ...args) => { + if (!value) contextEmit("pick", value, ...args); + else if (isArray$1(value)) contextEmit("pick", value.map(formatEmit), ...args); + else contextEmit("pick", formatEmit(value), ...args); + userInputDate.value = null; + userInputTime.value = null; + isChangeToNow.value = false; + isShortcut = false; + }; + const handleDatePick = async (value, keepOpen) => { + if (selectionMode.value === "date" && import_dayjs_min.default.isDayjs(value)) { + const parsedDateValue = extractFirst(props.parsedValue); + let newDate = parsedDateValue ? parsedDateValue.year(value.year()).month(value.month()).date(value.date()) : value; + if (!checkDateWithinRange(newDate)) newDate = selectableRange.value[0][0].year(value.year()).month(value.month()).date(value.date()); + innerDate.value = newDate; + emit(newDate, showTime.value || keepOpen); + } else if (selectionMode.value === "week") emit(value.date); + else if (selectionMode.value === "dates") emit(value, true); + }; + const moveByMonth = (forward) => { + const action = forward ? "add" : "subtract"; + innerDate.value = innerDate.value[action](1, "month"); + handlePanelChange("month"); + }; + const moveByYear = (forward) => { + const currentDate = innerDate.value; + const action = forward ? "add" : "subtract"; + innerDate.value = currentView.value === "year" ? currentDate[action](10, "year") : currentDate[action](1, "year"); + handlePanelChange("year"); + }; + const currentView = (0, vue.ref)("date"); + const yearLabel = (0, vue.computed)(() => { + const yearTranslation = t("el.datepicker.year"); + if (currentView.value === "year") { + const startYear = Math.floor(year.value / 10) * 10; + if (yearTranslation) return `${startYear} ${yearTranslation} - ${startYear + 9} ${yearTranslation}`; + return `${startYear} - ${startYear + 9}`; + } + return `${year.value} ${yearTranslation}`; + }); + const handleShortcutClick = (shortcut) => { + const shortcutValue = isFunction$1(shortcut.value) ? shortcut.value() : shortcut.value; + if (shortcutValue) { + isShortcut = true; + emit((0, import_dayjs_min.default)(shortcutValue).locale(lang.value)); + return; + } + if (shortcut.onClick) shortcut.onClick({ + attrs, + slots, + emit: contextEmit + }); + }; + const selectionMode = (0, vue.computed)(() => { + const { type } = props; + if ([ + "week", + "month", + "months", + "year", + "years", + "dates" + ].includes(type)) return type; + return "date"; + }); + const isMultipleType = (0, vue.computed)(() => { + return selectionMode.value === "dates" || selectionMode.value === "months" || selectionMode.value === "years"; + }); + const keyboardMode = (0, vue.computed)(() => { + return selectionMode.value === "date" ? currentView.value : selectionMode.value; + }); + const hasShortcuts = (0, vue.computed)(() => !!shortcuts.length); + const handleMonthPick = async (month, keepOpen) => { + if (selectionMode.value === "month") { + innerDate.value = getValidDateOfMonth(innerDate.value, innerDate.value.year(), month, lang.value, disabledDate); + emit(innerDate.value, false); + } else if (selectionMode.value === "months") emit(month, keepOpen ?? true); + else { + innerDate.value = getValidDateOfMonth(innerDate.value, innerDate.value.year(), month, lang.value, disabledDate); + currentView.value = "date"; + if ([ + "month", + "year", + "date", + "week" + ].includes(selectionMode.value)) { + emit(innerDate.value, true); + await (0, vue.nextTick)(); + handleFocusPicker(); + } + } + handlePanelChange("month"); + }; + const handleYearPick = async (year, keepOpen) => { + if (selectionMode.value === "year") { + innerDate.value = getValidDateOfYear(innerDate.value.startOf("year").year(year), lang.value, disabledDate); + emit(innerDate.value, false); + } else if (selectionMode.value === "years") emit(year, keepOpen ?? true); + else { + innerDate.value = getValidDateOfYear(innerDate.value.year(year), lang.value, disabledDate); + currentView.value = "month"; + if ([ + "month", + "year", + "date", + "week" + ].includes(selectionMode.value)) { + emit(innerDate.value, true); + await (0, vue.nextTick)(); + handleFocusPicker(); + } + } + handlePanelChange("year"); + }; + const dateDisabled = useFormDisabled(); + const showPicker = async (view) => { + if (dateDisabled.value) return; + currentView.value = view; + await (0, vue.nextTick)(); + handleFocusPicker(); + }; + const showTime = (0, vue.computed)(() => props.type === "datetime" || props.type === "datetimerange"); + const footerVisible = (0, vue.computed)(() => { + const showDateFooter = showTime.value || selectionMode.value === "dates"; + const showYearFooter = selectionMode.value === "years"; + const showMonthFooter = selectionMode.value === "months"; + const isDateView = currentView.value === "date"; + const isYearView = currentView.value === "year"; + const isMonthView = currentView.value === "month"; + return showDateFooter && isDateView || showYearFooter && isYearView || showMonthFooter && isMonthView; + }); + const footerFilled = (0, vue.computed)(() => !isMultipleType.value && props.showNow || props.showConfirm); + const disabledConfirm = (0, vue.computed)(() => { + if (!disabledDate) return false; + if (!props.parsedValue) return true; + if (isArray$1(props.parsedValue)) return disabledDate(props.parsedValue[0].toDate()); + return disabledDate(props.parsedValue.toDate()); + }); + const onConfirm = () => { + if (isMultipleType.value) emit(props.parsedValue); + else { + let result = extractFirst(props.parsedValue); + if (!result) { + const defaultTimeD = (0, import_dayjs_min.default)(defaultTime).locale(lang.value); + const defaultValueD = getDefaultValue(); + result = defaultTimeD.year(defaultValueD.year()).month(defaultValueD.month()).date(defaultValueD.date()); + } + innerDate.value = result; + emit(result); + } + }; + const disabledNow = (0, vue.computed)(() => { + if (!disabledDate) return false; + return disabledDate((0, import_dayjs_min.default)().locale(lang.value).toDate()); + }); + const changeToNow = () => { + const nowDate = (0, import_dayjs_min.default)().locale(lang.value).toDate(); + isChangeToNow.value = true; + if ((!disabledDate || !disabledDate(nowDate)) && checkDateWithinRange(nowDate)) { + innerDate.value = (0, import_dayjs_min.default)().locale(lang.value); + emit(innerDate.value); + } + }; + const timeFormat = (0, vue.computed)(() => { + return props.timeFormat || extractTimeFormat(props.format) || DEFAULT_FORMATS_TIME; + }); + const dateFormat = (0, vue.computed)(() => { + return props.dateFormat || extractDateFormat(props.format) || DEFAULT_FORMATS_DATE; + }); + const visibleTime = (0, vue.computed)(() => { + if (userInputTime.value) return userInputTime.value; + if (!props.parsedValue && !defaultValue.value) return; + return (extractFirst(props.parsedValue) || innerDate.value).format(timeFormat.value); + }); + const visibleDate = (0, vue.computed)(() => { + if (userInputDate.value) return userInputDate.value; + if (!props.parsedValue && !defaultValue.value) return; + return (extractFirst(props.parsedValue) || innerDate.value).format(dateFormat.value); + }); + const timePickerVisible = (0, vue.ref)(false); + const onTimePickerInputFocus = () => { + timePickerVisible.value = true; + }; + const handleTimePickClose = () => { + timePickerVisible.value = false; + }; + const getUnits = (date) => { + return { + hour: date.hour(), + minute: date.minute(), + second: date.second(), + year: date.year(), + month: date.month(), + date: date.date() + }; + }; + const handleTimePick = (value, visible, first) => { + const { hour, minute, second } = getUnits(value); + const parsedDateValue = extractFirst(props.parsedValue); + innerDate.value = parsedDateValue ? parsedDateValue.hour(hour).minute(minute).second(second) : value; + emit(innerDate.value, true); + if (!first) timePickerVisible.value = visible; + }; + const handleVisibleTimeChange = (value) => { + const newDate = (0, import_dayjs_min.default)(value, timeFormat.value).locale(lang.value); + if (newDate.isValid() && checkDateWithinRange(newDate)) { + const { year, month, date } = getUnits(innerDate.value); + innerDate.value = newDate.year(year).month(month).date(date); + userInputTime.value = null; + timePickerVisible.value = false; + emit(innerDate.value, true); + } + }; + const handleVisibleDateChange = (value) => { + const newDate = correctlyParseUserInput(value, dateFormat.value, lang.value, isDefaultFormat); + if (newDate.isValid()) { + if (disabledDate && disabledDate(newDate.toDate())) return; + const { hour, minute, second } = getUnits(innerDate.value); + innerDate.value = newDate.hour(hour).minute(minute).second(second); + userInputDate.value = null; + emit(innerDate.value, true); + } + }; + const isValidValue = (date) => { + return import_dayjs_min.default.isDayjs(date) && date.isValid() && (disabledDate ? !disabledDate(date.toDate()) : true); + }; + const parseUserInput = (value) => { + return correctlyParseUserInput(value, props.format, lang.value, isDefaultFormat); + }; + const getDefaultValue = () => { + const parseDate = (0, import_dayjs_min.default)(defaultValue.value).locale(lang.value); + if (!defaultValue.value) { + const defaultTimeDValue = defaultTimeD.value; + return (0, import_dayjs_min.default)().hour(defaultTimeDValue.hour()).minute(defaultTimeDValue.minute()).second(defaultTimeDValue.second()).locale(lang.value); + } + return parseDate; + }; + const handleFocusPicker = () => { + if ([ + "week", + "month", + "year", + "date" + ].includes(selectionMode.value)) currentViewRef.value?.focus(); + }; + const _handleFocusPicker = () => { + handleFocusPicker(); + if (selectionMode.value === "week") handleKeyControl(EVENT_CODE.down); + }; + const handleKeydownTable = (event) => { + const code = getEventCode(event); + if ([ + EVENT_CODE.up, + EVENT_CODE.down, + EVENT_CODE.left, + EVENT_CODE.right, + EVENT_CODE.home, + EVENT_CODE.end, + EVENT_CODE.pageUp, + EVENT_CODE.pageDown + ].includes(code)) { + handleKeyControl(code); + event.stopPropagation(); + event.preventDefault(); + } + if ([ + EVENT_CODE.enter, + EVENT_CODE.space, + EVENT_CODE.numpadEnter + ].includes(code) && userInputDate.value === null && userInputTime.value === null) { + event.preventDefault(); + emit(innerDate.value, false); + } + }; + const handleKeyControl = (code) => { + const { up, down, left, right, home, end, pageUp, pageDown } = EVENT_CODE; + const mapping = { + year: { + [up]: -4, + [down]: 4, + [left]: -1, + [right]: 1, + offset: (date, step) => date.setFullYear(date.getFullYear() + step) + }, + month: { + [up]: -4, + [down]: 4, + [left]: -1, + [right]: 1, + offset: (date, step) => date.setMonth(date.getMonth() + step) + }, + week: { + [up]: -1, + [down]: 1, + [left]: -1, + [right]: 1, + offset: (date, step) => date.setDate(date.getDate() + step * 7) + }, + date: { + [up]: -7, + [down]: 7, + [left]: -1, + [right]: 1, + [home]: (date) => -date.getDay(), + [end]: (date) => -date.getDay() + 6, + [pageUp]: (date) => -new Date(date.getFullYear(), date.getMonth(), 0).getDate(), + [pageDown]: (date) => new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(), + offset: (date, step) => date.setDate(date.getDate() + step) + } + }; + const newDate = innerDate.value.toDate(); + while (Math.abs(innerDate.value.diff(newDate, "year", true)) < 1) { + const map = mapping[keyboardMode.value]; + if (!map) return; + map.offset(newDate, isFunction$1(map[code]) ? map[code](newDate) : map[code] ?? 0); + if (disabledDate && disabledDate(newDate)) break; + const result = (0, import_dayjs_min.default)(newDate).locale(lang.value); + innerDate.value = result; + contextEmit("pick", result, true); + break; + } + }; + const handlePanelChange = (mode) => { + contextEmit("panel-change", innerDate.value.toDate(), mode, currentView.value); + }; + (0, vue.watch)(() => selectionMode.value, (val) => { + if (["month", "year"].includes(val)) { + currentView.value = val; + return; + } else if (val === "years") { + currentView.value = "year"; + return; + } else if (val === "months") { + currentView.value = "month"; + return; + } + currentView.value = "date"; + }, { immediate: true }); + (0, vue.watch)(() => defaultValue.value, (val) => { + if (val) innerDate.value = getDefaultValue(); + }, { immediate: true }); + (0, vue.watch)(() => props.parsedValue, (val) => { + if (val) { + if (isMultipleType.value) return; + if (isArray$1(val)) return; + innerDate.value = val; + } else innerDate.value = getDefaultValue(); + }, { immediate: true }); + contextEmit("set-picker-option", ["isValidValue", isValidValue]); + contextEmit("set-picker-option", ["parseUserInput", parseUserInput]); + contextEmit("set-picker-option", ["handleFocusPicker", _handleFocusPicker]); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)([ + (0, vue.unref)(ppNs).b(), + (0, vue.unref)(dpNs).b(), + (0, vue.unref)(ppNs).is("border", _ctx.border), + (0, vue.unref)(ppNs).is("disabled", (0, vue.unref)(dateDisabled)), + { + "has-sidebar": _ctx.$slots.sidebar || hasShortcuts.value, + "has-time": showTime.value + } + ]) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body-wrapper")) }, [ + (0, vue.renderSlot)(_ctx.$slots, "sidebar", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar")) }), + hasShortcuts.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar")) + }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(shortcuts), (shortcut, key) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key, + type: "button", + disabled: (0, vue.unref)(dateDisabled), + class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("shortcut")), + onClick: ($event) => handleShortcutClick(shortcut) + }, (0, vue.toDisplayString)(shortcut.text), 11, _hoisted_1$47); + }), 128))], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body")) }, [ + showTime.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(dpNs).e("time-header")) + }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(dpNs).e("editor-wrap")) }, [(0, vue.createVNode)((0, vue.unref)(ElInput), { + placeholder: (0, vue.unref)(t)("el.datepicker.selectDate"), + "model-value": visibleDate.value, + size: "small", + "validate-event": false, + disabled: (0, vue.unref)(dateDisabled), + readonly: !_ctx.editable, + onInput: _cache[0] || (_cache[0] = (val) => userInputDate.value = val), + onChange: handleVisibleDateChange + }, null, 8, [ + "placeholder", + "model-value", + "disabled", + "readonly" + ])], 2), (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(dpNs).e("editor-wrap")) }, [(0, vue.createVNode)((0, vue.unref)(ElInput), { + placeholder: (0, vue.unref)(t)("el.datepicker.selectTime"), + "model-value": visibleTime.value, + size: "small", + "validate-event": false, + disabled: (0, vue.unref)(dateDisabled), + readonly: !_ctx.editable, + onFocus: onTimePickerInputFocus, + onInput: _cache[1] || (_cache[1] = (val) => userInputTime.value = val), + onChange: handleVisibleTimeChange + }, null, 8, [ + "placeholder", + "model-value", + "disabled", + "readonly" + ]), (0, vue.createVNode)((0, vue.unref)(panel_time_pick_default), { + visible: timePickerVisible.value, + format: timeFormat.value, + "parsed-value": innerDate.value, + onPick: handleTimePick + }, null, 8, [ + "visible", + "format", + "parsed-value" + ])], 2)), [[(0, vue.unref)(ClickOutside), handleTimePickClose]])], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.withDirectives)((0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([(0, vue.unref)(dpNs).e("header"), (currentView.value === "year" || currentView.value === "month") && (0, vue.unref)(dpNs).em("header", "bordered")]) }, [ + (0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(dpNs).e("prev-btn")) }, [(0, vue.createElementVNode)("button", { + type: "button", + "aria-label": (0, vue.unref)(t)(`el.datepicker.prevYear`), + class: (0, vue.normalizeClass)(["d-arrow-left", (0, vue.unref)(ppNs).e("icon-btn")]), + disabled: (0, vue.unref)(dateDisabled), + onClick: _cache[2] || (_cache[2] = ($event) => moveByYear(false)) + }, [(0, vue.renderSlot)(_ctx.$slots, "prev-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(d_arrow_left_default))]), + _: 1 + })])], 10, _hoisted_2$29), (0, vue.withDirectives)((0, vue.createElementVNode)("button", { + type: "button", + "aria-label": (0, vue.unref)(t)(`el.datepicker.prevMonth`), + class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "arrow-left"]), + disabled: (0, vue.unref)(dateDisabled), + onClick: _cache[3] || (_cache[3] = ($event) => moveByMonth(false)) + }, [(0, vue.renderSlot)(_ctx.$slots, "prev-month", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_left_default))]), + _: 1 + })])], 10, _hoisted_3$14), [[vue.vShow, currentView.value === "date"]])], 2), + (0, vue.createElementVNode)("span", { + role: "button", + class: (0, vue.normalizeClass)((0, vue.unref)(dpNs).e("header-label")), + "aria-live": "polite", + tabindex: _ctx.disabled ? void 0 : 0, + "aria-disabled": _ctx.disabled, + onKeydown: _cache[4] || (_cache[4] = (0, vue.withKeys)(($event) => showPicker("year"), ["enter"])), + onClick: _cache[5] || (_cache[5] = ($event) => showPicker("year")) + }, (0, vue.toDisplayString)(yearLabel.value), 43, _hoisted_4$11), + (0, vue.withDirectives)((0, vue.createElementVNode)("span", { + role: "button", + "aria-live": "polite", + tabindex: _ctx.disabled ? void 0 : 0, + "aria-disabled": _ctx.disabled, + class: (0, vue.normalizeClass)([(0, vue.unref)(dpNs).e("header-label"), { active: currentView.value === "month" }]), + onKeydown: _cache[6] || (_cache[6] = (0, vue.withKeys)(($event) => showPicker("month"), ["enter"])), + onClick: _cache[7] || (_cache[7] = ($event) => showPicker("month")) + }, (0, vue.toDisplayString)((0, vue.unref)(t)(`el.datepicker.month${month.value + 1}`)), 43, _hoisted_5$8), [[vue.vShow, currentView.value === "date"]]), + (0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(dpNs).e("next-btn")) }, [(0, vue.withDirectives)((0, vue.createElementVNode)("button", { + type: "button", + "aria-label": (0, vue.unref)(t)(`el.datepicker.nextMonth`), + class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "arrow-right"]), + disabled: (0, vue.unref)(dateDisabled), + onClick: _cache[8] || (_cache[8] = ($event) => moveByMonth(true)) + }, [(0, vue.renderSlot)(_ctx.$slots, "next-month", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_right_default))]), + _: 1 + })])], 10, _hoisted_6$3), [[vue.vShow, currentView.value === "date"]]), (0, vue.createElementVNode)("button", { + type: "button", + "aria-label": (0, vue.unref)(t)(`el.datepicker.nextYear`), + class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "d-arrow-right"]), + disabled: (0, vue.unref)(dateDisabled), + onClick: _cache[9] || (_cache[9] = ($event) => moveByYear(true)) + }, [(0, vue.renderSlot)(_ctx.$slots, "next-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(d_arrow_right_default))]), + _: 1 + })])], 10, _hoisted_7$2)], 2) + ], 2), [[vue.vShow, currentView.value !== "time"]]), + (0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("content")), + onKeydown: handleKeydownTable + }, [ + currentView.value === "date" ? ((0, vue.openBlock)(), (0, vue.createBlock)(basic_date_table_default, { + key: 0, + ref_key: "currentViewRef", + ref: currentViewRef, + "selection-mode": selectionMode.value, + date: innerDate.value, + "parsed-value": _ctx.parsedValue, + "disabled-date": (0, vue.unref)(disabledDate), + disabled: (0, vue.unref)(dateDisabled), + "cell-class-name": (0, vue.unref)(cellClassName), + "show-week-number": _ctx.showWeekNumber, + onPick: handleDatePick + }, null, 8, [ + "selection-mode", + "date", + "parsed-value", + "disabled-date", + "disabled", + "cell-class-name", + "show-week-number" + ])) : (0, vue.createCommentVNode)("v-if", true), + currentView.value === "year" ? ((0, vue.openBlock)(), (0, vue.createBlock)(basic_year_table_default, { + key: 1, + ref_key: "currentViewRef", + ref: currentViewRef, + "selection-mode": selectionMode.value, + date: innerDate.value, + "disabled-date": (0, vue.unref)(disabledDate), + disabled: (0, vue.unref)(dateDisabled), + "parsed-value": _ctx.parsedValue, + "cell-class-name": (0, vue.unref)(cellClassName), + onPick: handleYearPick + }, null, 8, [ + "selection-mode", + "date", + "disabled-date", + "disabled", + "parsed-value", + "cell-class-name" + ])) : (0, vue.createCommentVNode)("v-if", true), + currentView.value === "month" ? ((0, vue.openBlock)(), (0, vue.createBlock)(basic_month_table_default, { + key: 2, + ref_key: "currentViewRef", + ref: currentViewRef, + "selection-mode": selectionMode.value, + date: innerDate.value, + "parsed-value": _ctx.parsedValue, + "disabled-date": (0, vue.unref)(disabledDate), + disabled: (0, vue.unref)(dateDisabled), + "cell-class-name": (0, vue.unref)(cellClassName), + onPick: handleMonthPick + }, null, 8, [ + "selection-mode", + "date", + "parsed-value", + "disabled-date", + "disabled", + "cell-class-name" + ])) : (0, vue.createCommentVNode)("v-if", true) + ], 34) + ], 2) + ], 2), _ctx.showFooter && footerVisible.value && footerFilled.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("footer")) + }, [(0, vue.withDirectives)((0, vue.createVNode)((0, vue.unref)(ElButton), { + text: "", + size: "small", + class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("link-btn")), + disabled: disabledNow.value, + onClick: changeToNow + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.now")), 1)]), + _: 1 + }, 8, ["class", "disabled"]), [[vue.vShow, !isMultipleType.value && _ctx.showNow]]), _ctx.showConfirm ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElButton), { + key: 0, + plain: "", + size: "small", + class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("link-btn")), + disabled: disabledConfirm.value, + onClick: onConfirm + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.confirm")), 1)]), + _: 1 + }, 8, ["class", "disabled"])) : (0, vue.createCommentVNode)("v-if", true)], 2)) : (0, vue.createCommentVNode)("v-if", true)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue + var panel_date_pick_default = panel_date_pick_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/props/panel-date-range.ts + const panelDateRangeProps = buildProps({ + ...panelSharedProps, + ...panelRangeSharedProps + }); + +//#endregion +//#region ../../packages/components/date-picker-panel/src/composables/use-shortcut.ts + const useShortcut = (lang) => { + const { emit } = (0, vue.getCurrentInstance)(); + const attrs = (0, vue.useAttrs)(); + const slots = (0, vue.useSlots)(); + const handleShortcutClick = (shortcut) => { + const shortcutValues = isFunction$1(shortcut.value) ? shortcut.value() : shortcut.value; + if (shortcutValues) { + emit("pick", [(0, import_dayjs_min.default)(shortcutValues[0]).locale(lang.value), (0, import_dayjs_min.default)(shortcutValues[1]).locale(lang.value)]); + return; + } + if (shortcut.onClick) shortcut.onClick({ + attrs, + slots, + emit + }); + }; + return handleShortcutClick; + }; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/composables/use-range-picker.ts + const useRangePicker = (props, { defaultValue, defaultTime, leftDate, rightDate, step, unit, sortDates }) => { + const { emit } = (0, vue.getCurrentInstance)(); + const { pickerNs } = (0, vue.inject)(ROOT_PICKER_INJECTION_KEY); + const drpNs = useNamespace("date-range-picker"); + const { t, lang } = useLocale(); + const handleShortcutClick = useShortcut(lang); + const minDate = (0, vue.ref)(); + const maxDate = (0, vue.ref)(); + const rangeState = (0, vue.ref)({ + endDate: null, + selecting: false + }); + const handleChangeRange = (val) => { + rangeState.value = val; + }; + const handleRangeConfirm = (visible = false) => { + const _minDate = (0, vue.unref)(minDate); + const _maxDate = (0, vue.unref)(maxDate); + if (isValidRange([_minDate, _maxDate])) emit("pick", [_minDate, _maxDate], visible); + }; + const onSelect = (selecting) => { + rangeState.value.selecting = selecting; + if (!selecting) rangeState.value.endDate = null; + }; + const parseValue = (parsedValue) => { + if (isArray$1(parsedValue) && parsedValue.length === 2) { + const [start, end] = parsedValue; + minDate.value = start; + leftDate.value = start; + maxDate.value = end; + sortDates((0, vue.unref)(minDate), (0, vue.unref)(maxDate)); + } else restoreDefault(); + }; + const restoreDefault = () => { + let [start, end] = getDefaultValue((0, vue.unref)(defaultValue), { + lang: (0, vue.unref)(lang), + step, + unit, + unlinkPanels: props.unlinkPanels + }); + const getShift = (day) => { + return day.diff(day.startOf("d"), "ms"); + }; + const maybeTimes = (0, vue.unref)(defaultTime); + if (maybeTimes) { + let leftShift = 0; + let rightShift = 0; + if (isArray$1(maybeTimes)) { + const [timeStart, timeEnd] = maybeTimes.map(import_dayjs_min.default); + leftShift = getShift(timeStart); + rightShift = getShift(timeEnd); + } else { + const shift = getShift((0, import_dayjs_min.default)(maybeTimes)); + leftShift = shift; + rightShift = shift; + } + start = start.startOf("d").add(leftShift, "ms"); + end = end.startOf("d").add(rightShift, "ms"); + } + minDate.value = void 0; + maxDate.value = void 0; + leftDate.value = start; + rightDate.value = end; + }; + (0, vue.watch)(defaultValue, (val) => { + if (val) restoreDefault(); + }, { immediate: true }); + (0, vue.watch)(() => props.parsedValue, (parsedValue) => { + if (!parsedValue?.length || !isEqual$1(parsedValue, [minDate.value, maxDate.value])) parseValue(parsedValue); + }, { immediate: true }); + (0, vue.watch)(() => props.visible, () => { + if (props.visible) parseValue(props.parsedValue); + }, { immediate: true }); + return { + minDate, + maxDate, + rangeState, + lang, + ppNs: pickerNs, + drpNs, + handleChangeRange, + handleRangeConfirm, + handleShortcutClick, + onSelect, + parseValue, + t + }; + }; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/composables/use-panel-date-range.ts + const usePanelDateRange = (props, emit, leftDate, rightDate) => { + const leftCurrentView = (0, vue.ref)("date"); + const leftCurrentViewRef = (0, vue.ref)(); + const rightCurrentView = (0, vue.ref)("date"); + const rightCurrentViewRef = (0, vue.ref)(); + const { disabledDate } = (0, vue.inject)(PICKER_BASE_INJECTION_KEY).props; + const { t, lang } = useLocale(); + const leftYear = (0, vue.computed)(() => { + return leftDate.value.year(); + }); + const leftMonth = (0, vue.computed)(() => { + return leftDate.value.month(); + }); + const rightYear = (0, vue.computed)(() => { + return rightDate.value.year(); + }); + const rightMonth = (0, vue.computed)(() => { + return rightDate.value.month(); + }); + function computedYearLabel(currentView, yearValue) { + const yearTranslation = t("el.datepicker.year"); + if (currentView.value === "year") { + const startYear = Math.floor(yearValue.value / 10) * 10; + return yearTranslation ? `${startYear} ${yearTranslation} - ${startYear + 9} ${yearTranslation}` : `${startYear} - ${startYear + 9}`; + } + return `${yearValue.value} ${yearTranslation}`; + } + function focusPicker(currentViewRef) { + currentViewRef?.focus(); + } + async function showPicker(pickerType, view) { + if (props.disabled) return; + const currentView = pickerType === "left" ? leftCurrentView : rightCurrentView; + const currentViewRef = pickerType === "left" ? leftCurrentViewRef : rightCurrentViewRef; + currentView.value = view; + await (0, vue.nextTick)(); + focusPicker(currentViewRef.value); + } + async function handlePick(mode, pickerType, value) { + if (props.disabled) return; + const isLeftPicker = pickerType === "left"; + const startDate = isLeftPicker ? leftDate : rightDate; + const endDate = isLeftPicker ? rightDate : leftDate; + const currentView = isLeftPicker ? leftCurrentView : rightCurrentView; + const currentViewRef = isLeftPicker ? leftCurrentViewRef : rightCurrentViewRef; + if (mode === "year") startDate.value = getValidDateOfYear(startDate.value.year(value), lang.value, disabledDate); + if (mode === "month") startDate.value = getValidDateOfMonth(startDate.value, startDate.value.year(), value, lang.value, disabledDate); + if (!props.unlinkPanels) endDate.value = pickerType === "left" ? startDate.value.add(1, "month") : startDate.value.subtract(1, "month"); + currentView.value = mode === "year" ? "month" : "date"; + await (0, vue.nextTick)(); + focusPicker(currentViewRef.value); + handlePanelChange(mode); + } + function handlePanelChange(mode) { + emit("panel-change", [leftDate.value.toDate(), rightDate.value.toDate()], mode); + } + function adjustDateByView(currentView, date, forward) { + const action = forward ? "add" : "subtract"; + return currentView === "year" ? date[action](10, "year") : date[action](1, "year"); + } + return { + leftCurrentView, + rightCurrentView, + leftCurrentViewRef, + rightCurrentViewRef, + leftYear, + rightYear, + leftMonth, + rightMonth, + leftYearLabel: (0, vue.computed)(() => computedYearLabel(leftCurrentView, leftYear)), + rightYearLabel: (0, vue.computed)(() => computedYearLabel(rightCurrentView, rightYear)), + showLeftPicker: (view) => showPicker("left", view), + showRightPicker: (view) => showPicker("right", view), + handleLeftYearPick: (year) => handlePick("year", "left", year), + handleRightYearPick: (year) => handlePick("year", "right", year), + handleLeftMonthPick: (month) => handlePick("month", "left", month), + handleRightMonthPick: (month) => handlePick("month", "right", month), + handlePanelChange, + adjustDateByView + }; + }; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-date-range.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$46 = ["disabled", "onClick"]; + const _hoisted_2$28 = ["aria-label", "disabled"]; + const _hoisted_3$13 = ["aria-label", "disabled"]; + const _hoisted_4$10 = ["disabled", "aria-label"]; + const _hoisted_5$7 = ["disabled", "aria-label"]; + const _hoisted_6$2 = ["tabindex", "aria-disabled"]; + const _hoisted_7$1 = ["tabindex", "aria-disabled"]; + const _hoisted_8$1 = ["disabled", "aria-label"]; + const _hoisted_9$1 = ["disabled", "aria-label"]; + const _hoisted_10$1 = ["aria-label", "disabled"]; + const _hoisted_11$1 = ["disabled", "aria-label"]; + const _hoisted_12$1 = ["tabindex", "aria-disabled"]; + const _hoisted_13$1 = ["tabindex", "aria-disabled"]; + const unit$2 = "month"; + var panel_date_range_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + __name: "panel-date-range", + props: panelDateRangeProps, + emits: [ + "pick", + "set-picker-option", + "calendar-change", + "panel-change", + "clear" + ], + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const pickerBase = (0, vue.inject)(PICKER_BASE_INJECTION_KEY); + const isDefaultFormat = (0, vue.inject)(ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY, void 0); + const { disabledDate, cellClassName, defaultTime, clearable } = pickerBase.props; + const format = (0, vue.toRef)(pickerBase.props, "format"); + const shortcuts = (0, vue.toRef)(pickerBase.props, "shortcuts"); + const defaultValue = (0, vue.toRef)(pickerBase.props, "defaultValue"); + const { lang } = useLocale(); + const leftDate = (0, vue.ref)((0, import_dayjs_min.default)().locale(lang.value)); + const rightDate = (0, vue.ref)((0, import_dayjs_min.default)().locale(lang.value).add(1, unit$2)); + const { minDate, maxDate, rangeState, ppNs, drpNs, handleChangeRange, handleRangeConfirm, handleShortcutClick, onSelect, parseValue, t } = useRangePicker(props, { + defaultValue, + defaultTime, + leftDate, + rightDate, + unit: unit$2, + sortDates + }); + (0, vue.watch)(() => props.visible, (visible) => { + if (!visible && rangeState.value.selecting) { + parseValue(props.parsedValue); + onSelect(false); + } + }); + const dateUserInput = (0, vue.ref)({ + min: null, + max: null + }); + const timeUserInput = (0, vue.ref)({ + min: null, + max: null + }); + const { leftCurrentView, rightCurrentView, leftCurrentViewRef, rightCurrentViewRef, leftYear, rightYear, leftMonth, rightMonth, leftYearLabel, rightYearLabel, showLeftPicker, showRightPicker, handleLeftYearPick, handleRightYearPick, handleLeftMonthPick, handleRightMonthPick, handlePanelChange, adjustDateByView } = usePanelDateRange(props, emit, leftDate, rightDate); + const hasShortcuts = (0, vue.computed)(() => !!shortcuts.value.length); + const minVisibleDate = (0, vue.computed)(() => { + if (dateUserInput.value.min !== null) return dateUserInput.value.min; + if (minDate.value) return minDate.value.format(dateFormat.value); + return ""; + }); + const maxVisibleDate = (0, vue.computed)(() => { + if (dateUserInput.value.max !== null) return dateUserInput.value.max; + if (maxDate.value || minDate.value) return (maxDate.value || minDate.value).format(dateFormat.value); + return ""; + }); + const minVisibleTime = (0, vue.computed)(() => { + if (timeUserInput.value.min !== null) return timeUserInput.value.min; + if (minDate.value) return minDate.value.format(timeFormat.value); + return ""; + }); + const maxVisibleTime = (0, vue.computed)(() => { + if (timeUserInput.value.max !== null) return timeUserInput.value.max; + if (maxDate.value || minDate.value) return (maxDate.value || minDate.value).format(timeFormat.value); + return ""; + }); + const timeFormat = (0, vue.computed)(() => { + return props.timeFormat || extractTimeFormat(format.value || "") || DEFAULT_FORMATS_TIME; + }); + const dateFormat = (0, vue.computed)(() => { + return props.dateFormat || extractDateFormat(format.value || "") || DEFAULT_FORMATS_DATE; + }); + const isValidValue = (date) => { + return isValidRange(date) && (disabledDate ? !disabledDate(date[0].toDate()) && !disabledDate(date[1].toDate()) : true); + }; + const leftPrevYear = () => { + leftDate.value = adjustDateByView(leftCurrentView.value, leftDate.value, false); + if (!props.unlinkPanels) rightDate.value = leftDate.value.add(1, "month"); + handlePanelChange("year"); + }; + const leftPrevMonth = () => { + leftDate.value = leftDate.value.subtract(1, "month"); + if (!props.unlinkPanels) rightDate.value = leftDate.value.add(1, "month"); + handlePanelChange("month"); + }; + const rightNextYear = () => { + if (!props.unlinkPanels) { + leftDate.value = adjustDateByView(rightCurrentView.value, leftDate.value, true); + rightDate.value = leftDate.value.add(1, "month"); + } else rightDate.value = adjustDateByView(rightCurrentView.value, rightDate.value, true); + handlePanelChange("year"); + }; + const rightNextMonth = () => { + if (!props.unlinkPanels) { + leftDate.value = leftDate.value.add(1, "month"); + rightDate.value = leftDate.value.add(1, "month"); + } else rightDate.value = rightDate.value.add(1, "month"); + handlePanelChange("month"); + }; + const leftNextYear = () => { + leftDate.value = adjustDateByView(leftCurrentView.value, leftDate.value, true); + handlePanelChange("year"); + }; + const leftNextMonth = () => { + leftDate.value = leftDate.value.add(1, "month"); + handlePanelChange("month"); + }; + const rightPrevYear = () => { + rightDate.value = adjustDateByView(rightCurrentView.value, rightDate.value, false); + handlePanelChange("year"); + }; + const rightPrevMonth = () => { + rightDate.value = rightDate.value.subtract(1, "month"); + handlePanelChange("month"); + }; + const enableMonthArrow = (0, vue.computed)(() => { + const nextMonth = (leftMonth.value + 1) % 12; + const yearOffset = leftMonth.value + 1 >= 12 ? 1 : 0; + return props.unlinkPanels && new Date(leftYear.value + yearOffset, nextMonth) < new Date(rightYear.value, rightMonth.value); + }); + const enableYearArrow = (0, vue.computed)(() => { + return props.unlinkPanels && rightYear.value * 12 + rightMonth.value - (leftYear.value * 12 + leftMonth.value + 1) >= 12; + }); + const dateRangeDisabled = useFormDisabled(); + const btnDisabled = (0, vue.computed)(() => { + return !(minDate.value && maxDate.value && !rangeState.value.selecting && isValidRange([minDate.value, maxDate.value]) && !dateRangeDisabled.value); + }); + const showTime = (0, vue.computed)(() => props.type === "datetime" || props.type === "datetimerange"); + const formatEmit = (emitDayjs, index) => { + if (!emitDayjs) return; + if (defaultTime) return (0, import_dayjs_min.default)(defaultTime[index] || defaultTime).locale(lang.value).year(emitDayjs.year()).month(emitDayjs.month()).date(emitDayjs.date()); + return emitDayjs; + }; + const handleRangePick = (val, close = true) => { + const min_ = val.minDate; + const max_ = val.maxDate; + const minDate_ = formatEmit(min_, 0); + const maxDate_ = formatEmit(max_, 1); + if (maxDate.value === maxDate_ && minDate.value === minDate_) return; + emit("calendar-change", [min_.toDate(), max_ && max_.toDate()]); + maxDate.value = maxDate_; + minDate.value = minDate_; + if (!showTime.value && close) close = !minDate_ || !maxDate_; + handleRangeConfirm(close); + }; + const minTimePickerVisible = (0, vue.ref)(false); + const maxTimePickerVisible = (0, vue.ref)(false); + const handleMinTimeClose = () => { + minTimePickerVisible.value = false; + }; + const handleMaxTimeClose = () => { + maxTimePickerVisible.value = false; + }; + const handleDateInput = (value, type) => { + dateUserInput.value[type] = value; + const parsedValueD = (0, import_dayjs_min.default)(value, dateFormat.value).locale(lang.value); + if (parsedValueD.isValid()) { + if (disabledDate && disabledDate(parsedValueD.toDate())) return; + if (type === "min") { + leftDate.value = parsedValueD; + minDate.value = (minDate.value || leftDate.value).year(parsedValueD.year()).month(parsedValueD.month()).date(parsedValueD.date()); + if (!props.unlinkPanels && (!maxDate.value || maxDate.value.isBefore(minDate.value))) { + rightDate.value = parsedValueD.add(1, "month"); + maxDate.value = minDate.value.add(1, "month"); + } + } else { + rightDate.value = parsedValueD; + maxDate.value = (maxDate.value || rightDate.value).year(parsedValueD.year()).month(parsedValueD.month()).date(parsedValueD.date()); + if (!props.unlinkPanels && (!minDate.value || minDate.value.isAfter(maxDate.value))) { + leftDate.value = parsedValueD.subtract(1, "month"); + minDate.value = maxDate.value.subtract(1, "month"); + } + } + sortDates(minDate.value, maxDate.value); + handleRangeConfirm(true); + } + }; + const handleDateChange = (_, type) => { + dateUserInput.value[type] = null; + }; + const handleTimeInput = (value, type) => { + timeUserInput.value[type] = value; + const parsedValueD = (0, import_dayjs_min.default)(value, timeFormat.value).locale(lang.value); + if (parsedValueD.isValid()) if (type === "min") { + minTimePickerVisible.value = true; + minDate.value = (minDate.value || leftDate.value).hour(parsedValueD.hour()).minute(parsedValueD.minute()).second(parsedValueD.second()); + leftDate.value = minDate.value; + } else { + maxTimePickerVisible.value = true; + maxDate.value = (maxDate.value || rightDate.value).hour(parsedValueD.hour()).minute(parsedValueD.minute()).second(parsedValueD.second()); + rightDate.value = maxDate.value; + } + }; + const handleTimeChange = (_value, type) => { + timeUserInput.value[type] = null; + if (type === "min") { + leftDate.value = minDate.value; + minTimePickerVisible.value = false; + if (!maxDate.value || maxDate.value.isBefore(minDate.value)) maxDate.value = minDate.value; + } else { + rightDate.value = maxDate.value; + maxTimePickerVisible.value = false; + if (maxDate.value && maxDate.value.isBefore(minDate.value)) minDate.value = maxDate.value; + } + handleRangeConfirm(true); + }; + const handleMinTimePick = (value, visible, first) => { + if (timeUserInput.value.min) return; + if (value) minDate.value = (minDate.value || leftDate.value).hour(value.hour()).minute(value.minute()).second(value.second()); + if (!first) minTimePickerVisible.value = visible; + if (!maxDate.value || maxDate.value.isBefore(minDate.value)) { + maxDate.value = minDate.value; + rightDate.value = value; + (0, vue.nextTick)(() => { + parseValue(props.parsedValue); + }); + } + handleRangeConfirm(true); + }; + const handleMaxTimePick = (value, visible, first) => { + if (timeUserInput.value.max) return; + if (value) maxDate.value = (maxDate.value || rightDate.value).hour(value.hour()).minute(value.minute()).second(value.second()); + if (!first) maxTimePickerVisible.value = visible; + if (maxDate.value && maxDate.value.isBefore(minDate.value)) minDate.value = maxDate.value; + handleRangeConfirm(true); + }; + const onClear = () => { + handleClear(); + emit("clear"); + }; + const handleClear = () => { + let valueOnClear = null; + if (pickerBase?.emptyValues) valueOnClear = pickerBase.emptyValues.valueOnClear.value; + leftDate.value = getDefaultValue((0, vue.unref)(defaultValue), { + lang: (0, vue.unref)(lang), + unit: "month", + unlinkPanels: props.unlinkPanels + })[0]; + rightDate.value = leftDate.value.add(1, "month"); + maxDate.value = void 0; + minDate.value = void 0; + handleRangeConfirm(true); + emit("pick", valueOnClear); + }; + const parseUserInput = (value) => { + return correctlyParseUserInput(value, format.value || "", lang.value, isDefaultFormat); + }; + function sortDates(minDate, maxDate) { + if (props.unlinkPanels && maxDate) { + const minDateYear = minDate?.year() || 0; + const minDateMonth = minDate?.month() || 0; + const maxDateYear = maxDate.year(); + const maxDateMonth = maxDate.month(); + rightDate.value = minDateYear === maxDateYear && minDateMonth === maxDateMonth ? maxDate.add(1, unit$2) : maxDate; + } else { + rightDate.value = leftDate.value.add(1, unit$2); + if (maxDate) rightDate.value = rightDate.value.hour(maxDate.hour()).minute(maxDate.minute()).second(maxDate.second()); + } + } + emit("set-picker-option", ["isValidValue", isValidValue]); + emit("set-picker-option", ["parseUserInput", parseUserInput]); + emit("set-picker-option", ["handleClear", handleClear]); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)([ + (0, vue.unref)(ppNs).b(), + (0, vue.unref)(drpNs).b(), + (0, vue.unref)(ppNs).is("border", _ctx.border), + (0, vue.unref)(ppNs).is("disabled", (0, vue.unref)(dateRangeDisabled)), + { + "has-sidebar": _ctx.$slots.sidebar || hasShortcuts.value, + "has-time": showTime.value + } + ]) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body-wrapper")) }, [ + (0, vue.renderSlot)(_ctx.$slots, "sidebar", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar")) }), + hasShortcuts.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar")) + }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(shortcuts.value, (shortcut, key) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key, + type: "button", + disabled: (0, vue.unref)(dateRangeDisabled), + class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("shortcut")), + onClick: ($event) => (0, vue.unref)(handleShortcutClick)(shortcut) + }, (0, vue.toDisplayString)(shortcut.text), 11, _hoisted_1$46); + }), 128))], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body")) }, [ + showTime.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("time-header")) + }, [ + (0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("editors-wrap")) }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("time-picker-wrap")) }, [(0, vue.createVNode)((0, vue.unref)(ElInput), { + size: "small", + disabled: (0, vue.unref)(rangeState).selecting || (0, vue.unref)(dateRangeDisabled), + placeholder: (0, vue.unref)(t)("el.datepicker.startDate"), + class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("editor")), + "model-value": minVisibleDate.value, + "validate-event": false, + readonly: !_ctx.editable, + onInput: _cache[0] || (_cache[0] = (val) => handleDateInput(val, "min")), + onChange: _cache[1] || (_cache[1] = (val) => handleDateChange(val, "min")) + }, null, 8, [ + "disabled", + "placeholder", + "class", + "model-value", + "readonly" + ])], 2), (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("time-picker-wrap")) }, [(0, vue.createVNode)((0, vue.unref)(ElInput), { + size: "small", + class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("editor")), + disabled: (0, vue.unref)(rangeState).selecting || (0, vue.unref)(dateRangeDisabled), + placeholder: (0, vue.unref)(t)("el.datepicker.startTime"), + "model-value": minVisibleTime.value, + "validate-event": false, + readonly: !_ctx.editable, + onFocus: _cache[2] || (_cache[2] = ($event) => minTimePickerVisible.value = true), + onInput: _cache[3] || (_cache[3] = (val) => handleTimeInput(val, "min")), + onChange: _cache[4] || (_cache[4] = (val) => handleTimeChange(val, "min")) + }, null, 8, [ + "class", + "disabled", + "placeholder", + "model-value", + "readonly" + ]), (0, vue.createVNode)((0, vue.unref)(panel_time_pick_default), { + visible: minTimePickerVisible.value, + format: timeFormat.value, + "datetime-role": "start", + "parsed-value": (0, vue.unref)(minDate) || leftDate.value, + onPick: handleMinTimePick + }, null, 8, [ + "visible", + "format", + "parsed-value" + ])], 2)), [[(0, vue.unref)(ClickOutside), handleMinTimeClose]])], 2), + (0, vue.createElementVNode)("span", null, [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_right_default))]), + _: 1 + })]), + (0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)([(0, vue.unref)(drpNs).e("editors-wrap"), "is-right"]) }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("time-picker-wrap")) }, [(0, vue.createVNode)((0, vue.unref)(ElInput), { + size: "small", + class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("editor")), + disabled: (0, vue.unref)(rangeState).selecting || (0, vue.unref)(dateRangeDisabled), + placeholder: (0, vue.unref)(t)("el.datepicker.endDate"), + "model-value": maxVisibleDate.value, + readonly: !(0, vue.unref)(minDate) || !_ctx.editable, + "validate-event": false, + onInput: _cache[5] || (_cache[5] = (val) => handleDateInput(val, "max")), + onChange: _cache[6] || (_cache[6] = (val) => handleDateChange(val, "max")) + }, null, 8, [ + "class", + "disabled", + "placeholder", + "model-value", + "readonly" + ])], 2), (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("time-picker-wrap")) }, [(0, vue.createVNode)((0, vue.unref)(ElInput), { + size: "small", + class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("editor")), + disabled: (0, vue.unref)(rangeState).selecting || (0, vue.unref)(dateRangeDisabled), + placeholder: (0, vue.unref)(t)("el.datepicker.endTime"), + "model-value": maxVisibleTime.value, + readonly: !(0, vue.unref)(minDate) || !_ctx.editable, + "validate-event": false, + onFocus: _cache[7] || (_cache[7] = ($event) => (0, vue.unref)(minDate) && (maxTimePickerVisible.value = true)), + onInput: _cache[8] || (_cache[8] = (val) => handleTimeInput(val, "max")), + onChange: _cache[9] || (_cache[9] = (val) => handleTimeChange(val, "max")) + }, null, 8, [ + "class", + "disabled", + "placeholder", + "model-value", + "readonly" + ]), (0, vue.createVNode)((0, vue.unref)(panel_time_pick_default), { + "datetime-role": "end", + visible: maxTimePickerVisible.value, + format: timeFormat.value, + "parsed-value": (0, vue.unref)(maxDate) || rightDate.value, + onPick: handleMaxTimePick + }, null, 8, [ + "visible", + "format", + "parsed-value" + ])], 2)), [[(0, vue.unref)(ClickOutside), handleMaxTimeClose]])], 2) + ], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("content"), (0, vue.unref)(drpNs).e("content")], "is-left"]) }, [ + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header")) }, [ + (0, vue.createElementVNode)("button", { + type: "button", + class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "d-arrow-left"]), + "aria-label": (0, vue.unref)(t)(`el.datepicker.prevYear`), + disabled: (0, vue.unref)(dateRangeDisabled), + onClick: leftPrevYear + }, [(0, vue.renderSlot)(_ctx.$slots, "prev-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(d_arrow_left_default))]), + _: 1 + })])], 10, _hoisted_2$28), + (0, vue.withDirectives)((0, vue.createElementVNode)("button", { + type: "button", + class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "arrow-left"]), + "aria-label": (0, vue.unref)(t)(`el.datepicker.prevMonth`), + disabled: (0, vue.unref)(dateRangeDisabled), + onClick: leftPrevMonth + }, [(0, vue.renderSlot)(_ctx.$slots, "prev-month", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_left_default))]), + _: 1 + })])], 10, _hoisted_3$13), [[vue.vShow, (0, vue.unref)(leftCurrentView) === "date"]]), + _ctx.unlinkPanels ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key: 0, + type: "button", + disabled: !enableYearArrow.value || (0, vue.unref)(dateRangeDisabled), + class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("icon-btn"), (0, vue.unref)(ppNs).is("disabled", !enableYearArrow.value || (0, vue.unref)(dateRangeDisabled))], "d-arrow-right"]), + "aria-label": (0, vue.unref)(t)(`el.datepicker.nextYear`), + onClick: leftNextYear + }, [(0, vue.renderSlot)(_ctx.$slots, "next-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(d_arrow_right_default))]), + _: 1 + })])], 10, _hoisted_4$10)) : (0, vue.createCommentVNode)("v-if", true), + _ctx.unlinkPanels && (0, vue.unref)(leftCurrentView) === "date" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key: 1, + type: "button", + disabled: !enableMonthArrow.value || (0, vue.unref)(dateRangeDisabled), + class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("icon-btn"), (0, vue.unref)(ppNs).is("disabled", !enableMonthArrow.value || (0, vue.unref)(dateRangeDisabled))], "arrow-right"]), + "aria-label": (0, vue.unref)(t)(`el.datepicker.nextMonth`), + onClick: leftNextMonth + }, [(0, vue.renderSlot)(_ctx.$slots, "next-month", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_right_default))]), + _: 1 + })])], 10, _hoisted_5$7)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", null, [(0, vue.createElementVNode)("span", { + role: "button", + class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header-label")), + "aria-live": "polite", + tabindex: _ctx.disabled ? void 0 : 0, + "aria-disabled": _ctx.disabled, + onKeydown: _cache[10] || (_cache[10] = (0, vue.withKeys)(($event) => (0, vue.unref)(showLeftPicker)("year"), ["enter"])), + onClick: _cache[11] || (_cache[11] = ($event) => (0, vue.unref)(showLeftPicker)("year")) + }, (0, vue.toDisplayString)((0, vue.unref)(leftYearLabel)), 43, _hoisted_6$2), (0, vue.withDirectives)((0, vue.createElementVNode)("span", { + role: "button", + "aria-live": "polite", + tabindex: _ctx.disabled ? void 0 : 0, + "aria-disabled": _ctx.disabled, + class: (0, vue.normalizeClass)([(0, vue.unref)(drpNs).e("header-label"), { active: (0, vue.unref)(leftCurrentView) === "month" }]), + onKeydown: _cache[12] || (_cache[12] = (0, vue.withKeys)(($event) => (0, vue.unref)(showLeftPicker)("month"), ["enter"])), + onClick: _cache[13] || (_cache[13] = ($event) => (0, vue.unref)(showLeftPicker)("month")) + }, (0, vue.toDisplayString)((0, vue.unref)(t)(`el.datepicker.month${leftDate.value.month() + 1}`)), 43, _hoisted_7$1), [[vue.vShow, (0, vue.unref)(leftCurrentView) === "date"]])]) + ], 2), + (0, vue.unref)(leftCurrentView) === "date" ? ((0, vue.openBlock)(), (0, vue.createBlock)(basic_date_table_default, { + key: 0, + ref_key: "leftCurrentViewRef", + ref: leftCurrentViewRef, + "selection-mode": "range", + date: leftDate.value, + "min-date": (0, vue.unref)(minDate), + "max-date": (0, vue.unref)(maxDate), + "range-state": (0, vue.unref)(rangeState), + "disabled-date": (0, vue.unref)(disabledDate), + "cell-class-name": (0, vue.unref)(cellClassName), + "show-week-number": _ctx.showWeekNumber, + disabled: (0, vue.unref)(dateRangeDisabled), + onChangerange: (0, vue.unref)(handleChangeRange), + onPick: handleRangePick, + onSelect: (0, vue.unref)(onSelect) + }, null, 8, [ + "date", + "min-date", + "max-date", + "range-state", + "disabled-date", + "cell-class-name", + "show-week-number", + "disabled", + "onChangerange", + "onSelect" + ])) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.unref)(leftCurrentView) === "year" ? ((0, vue.openBlock)(), (0, vue.createBlock)(basic_year_table_default, { + key: 1, + ref_key: "leftCurrentViewRef", + ref: leftCurrentViewRef, + "selection-mode": "year", + date: leftDate.value, + "disabled-date": (0, vue.unref)(disabledDate), + "parsed-value": _ctx.parsedValue, + disabled: (0, vue.unref)(dateRangeDisabled), + onPick: (0, vue.unref)(handleLeftYearPick) + }, null, 8, [ + "date", + "disabled-date", + "parsed-value", + "disabled", + "onPick" + ])) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.unref)(leftCurrentView) === "month" ? ((0, vue.openBlock)(), (0, vue.createBlock)(basic_month_table_default, { + key: 2, + ref_key: "leftCurrentViewRef", + ref: leftCurrentViewRef, + "selection-mode": "month", + date: leftDate.value, + "parsed-value": _ctx.parsedValue, + "disabled-date": (0, vue.unref)(disabledDate), + disabled: (0, vue.unref)(dateRangeDisabled), + onPick: (0, vue.unref)(handleLeftMonthPick) + }, null, 8, [ + "date", + "parsed-value", + "disabled-date", + "disabled", + "onPick" + ])) : (0, vue.createCommentVNode)("v-if", true) + ], 2), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("content"), (0, vue.unref)(drpNs).e("content")], "is-right"]) }, [ + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header")) }, [ + _ctx.unlinkPanels ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key: 0, + type: "button", + disabled: !enableYearArrow.value || (0, vue.unref)(dateRangeDisabled), + class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("icon-btn"), (0, vue.unref)(ppNs).is("disabled", !enableYearArrow.value || (0, vue.unref)(dateRangeDisabled))], "d-arrow-left"]), + "aria-label": (0, vue.unref)(t)(`el.datepicker.prevYear`), + onClick: rightPrevYear + }, [(0, vue.renderSlot)(_ctx.$slots, "prev-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(d_arrow_left_default))]), + _: 1 + })])], 10, _hoisted_8$1)) : (0, vue.createCommentVNode)("v-if", true), + _ctx.unlinkPanels && (0, vue.unref)(rightCurrentView) === "date" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key: 1, + type: "button", + disabled: !enableMonthArrow.value || (0, vue.unref)(dateRangeDisabled), + class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("icon-btn"), (0, vue.unref)(ppNs).is("disabled", !enableMonthArrow.value || (0, vue.unref)(dateRangeDisabled))], "arrow-left"]), + "aria-label": (0, vue.unref)(t)(`el.datepicker.prevMonth`), + onClick: rightPrevMonth + }, [(0, vue.renderSlot)(_ctx.$slots, "prev-month", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_left_default))]), + _: 1 + })])], 10, _hoisted_9$1)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("button", { + type: "button", + "aria-label": (0, vue.unref)(t)(`el.datepicker.nextYear`), + class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "d-arrow-right"]), + disabled: (0, vue.unref)(dateRangeDisabled), + onClick: rightNextYear + }, [(0, vue.renderSlot)(_ctx.$slots, "next-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(d_arrow_right_default))]), + _: 1 + })])], 10, _hoisted_10$1), + (0, vue.withDirectives)((0, vue.createElementVNode)("button", { + type: "button", + class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "arrow-right"]), + disabled: (0, vue.unref)(dateRangeDisabled), + "aria-label": (0, vue.unref)(t)(`el.datepicker.nextMonth`), + onClick: rightNextMonth + }, [(0, vue.renderSlot)(_ctx.$slots, "next-month", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_right_default))]), + _: 1 + })])], 10, _hoisted_11$1), [[vue.vShow, (0, vue.unref)(rightCurrentView) === "date"]]), + (0, vue.createElementVNode)("div", null, [(0, vue.createElementVNode)("span", { + role: "button", + class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header-label")), + "aria-live": "polite", + tabindex: _ctx.disabled ? void 0 : 0, + "aria-disabled": _ctx.disabled, + onKeydown: _cache[14] || (_cache[14] = (0, vue.withKeys)(($event) => (0, vue.unref)(showRightPicker)("year"), ["enter"])), + onClick: _cache[15] || (_cache[15] = ($event) => (0, vue.unref)(showRightPicker)("year")) + }, (0, vue.toDisplayString)((0, vue.unref)(rightYearLabel)), 43, _hoisted_12$1), (0, vue.withDirectives)((0, vue.createElementVNode)("span", { + role: "button", + "aria-live": "polite", + tabindex: _ctx.disabled ? void 0 : 0, + "aria-disabled": _ctx.disabled, + class: (0, vue.normalizeClass)([(0, vue.unref)(drpNs).e("header-label"), { active: (0, vue.unref)(rightCurrentView) === "month" }]), + onKeydown: _cache[16] || (_cache[16] = (0, vue.withKeys)(($event) => (0, vue.unref)(showRightPicker)("month"), ["enter"])), + onClick: _cache[17] || (_cache[17] = ($event) => (0, vue.unref)(showRightPicker)("month")) + }, (0, vue.toDisplayString)((0, vue.unref)(t)(`el.datepicker.month${rightDate.value.month() + 1}`)), 43, _hoisted_13$1), [[vue.vShow, (0, vue.unref)(rightCurrentView) === "date"]])]) + ], 2), + (0, vue.unref)(rightCurrentView) === "date" ? ((0, vue.openBlock)(), (0, vue.createBlock)(basic_date_table_default, { + key: 0, + ref_key: "rightCurrentViewRef", + ref: rightCurrentViewRef, + "selection-mode": "range", + date: rightDate.value, + "min-date": (0, vue.unref)(minDate), + "max-date": (0, vue.unref)(maxDate), + "range-state": (0, vue.unref)(rangeState), + "disabled-date": (0, vue.unref)(disabledDate), + "cell-class-name": (0, vue.unref)(cellClassName), + "show-week-number": _ctx.showWeekNumber, + disabled: (0, vue.unref)(dateRangeDisabled), + onChangerange: (0, vue.unref)(handleChangeRange), + onPick: handleRangePick, + onSelect: (0, vue.unref)(onSelect) + }, null, 8, [ + "date", + "min-date", + "max-date", + "range-state", + "disabled-date", + "cell-class-name", + "show-week-number", + "disabled", + "onChangerange", + "onSelect" + ])) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.unref)(rightCurrentView) === "year" ? ((0, vue.openBlock)(), (0, vue.createBlock)(basic_year_table_default, { + key: 1, + ref_key: "rightCurrentViewRef", + ref: rightCurrentViewRef, + "selection-mode": "year", + date: rightDate.value, + "disabled-date": (0, vue.unref)(disabledDate), + "parsed-value": _ctx.parsedValue, + disabled: (0, vue.unref)(dateRangeDisabled), + onPick: (0, vue.unref)(handleRightYearPick) + }, null, 8, [ + "date", + "disabled-date", + "parsed-value", + "disabled", + "onPick" + ])) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.unref)(rightCurrentView) === "month" ? ((0, vue.openBlock)(), (0, vue.createBlock)(basic_month_table_default, { + key: 2, + ref_key: "rightCurrentViewRef", + ref: rightCurrentViewRef, + "selection-mode": "month", + date: rightDate.value, + "parsed-value": _ctx.parsedValue, + "disabled-date": (0, vue.unref)(disabledDate), + disabled: (0, vue.unref)(dateRangeDisabled), + onPick: (0, vue.unref)(handleRightMonthPick) + }, null, 8, [ + "date", + "parsed-value", + "disabled-date", + "disabled", + "onPick" + ])) : (0, vue.createCommentVNode)("v-if", true) + ], 2) + ], 2) + ], 2), _ctx.showFooter && showTime.value && (_ctx.showConfirm || (0, vue.unref)(clearable)) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("footer")) + }, [(0, vue.unref)(clearable) ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElButton), { + key: 0, + text: "", + size: "small", + class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("link-btn")), + onClick: onClear + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.clear")), 1)]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true), _ctx.showConfirm ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElButton), { + key: 1, + plain: "", + size: "small", + class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("link-btn")), + disabled: btnDisabled.value, + onClick: _cache[18] || (_cache[18] = ($event) => (0, vue.unref)(handleRangeConfirm)(false)) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.confirm")), 1)]), + _: 1 + }, 8, ["class", "disabled"])) : (0, vue.createCommentVNode)("v-if", true)], 2)) : (0, vue.createCommentVNode)("v-if", true)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-date-range.vue + var panel_date_range_default = panel_date_range_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/props/panel-month-range.ts + const panelMonthRangeProps = buildProps({ ...panelRangeSharedProps }); + const panelMonthRangeEmits = [ + "pick", + "set-picker-option", + "calendar-change" + ]; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/composables/use-month-range-header.ts + const useMonthRangeHeader = ({ unlinkPanels, leftDate, rightDate }) => { + const { t } = useLocale(); + const leftPrevYear = () => { + leftDate.value = leftDate.value.subtract(1, "year"); + if (!unlinkPanels.value) rightDate.value = rightDate.value.subtract(1, "year"); + }; + const rightNextYear = () => { + if (!unlinkPanels.value) leftDate.value = leftDate.value.add(1, "year"); + rightDate.value = rightDate.value.add(1, "year"); + }; + const leftNextYear = () => { + leftDate.value = leftDate.value.add(1, "year"); + }; + const rightPrevYear = () => { + rightDate.value = rightDate.value.subtract(1, "year"); + }; + return { + leftPrevYear, + rightNextYear, + leftNextYear, + rightPrevYear, + leftLabel: (0, vue.computed)(() => { + return `${leftDate.value.year()} ${t("el.datepicker.year")}`; + }), + rightLabel: (0, vue.computed)(() => { + return `${rightDate.value.year()} ${t("el.datepicker.year")}`; + }), + leftYear: (0, vue.computed)(() => { + return leftDate.value.year(); + }), + rightYear: (0, vue.computed)(() => { + return rightDate.value.year() === leftDate.value.year() ? leftDate.value.year() + 1 : rightDate.value.year(); + }) + }; + }; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-month-range.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$45 = ["disabled", "onClick"]; + const _hoisted_2$27 = ["disabled"]; + const _hoisted_3$12 = ["disabled"]; + const _hoisted_4$9 = ["disabled"]; + const _hoisted_5$6 = ["disabled"]; + const unit$1 = "year"; + var panel_month_range_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "DatePickerMonthRange", + __name: "panel-month-range", + props: panelMonthRangeProps, + emits: panelMonthRangeEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const { lang } = useLocale(); + const pickerBase = (0, vue.inject)(PICKER_BASE_INJECTION_KEY); + const isDefaultFormat = (0, vue.inject)(ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY, void 0); + const { shortcuts, disabledDate, cellClassName } = pickerBase.props; + const format = (0, vue.toRef)(pickerBase.props, "format"); + const defaultValue = (0, vue.toRef)(pickerBase.props, "defaultValue"); + const leftDate = (0, vue.ref)((0, import_dayjs_min.default)().locale(lang.value)); + const rightDate = (0, vue.ref)((0, import_dayjs_min.default)().locale(lang.value).add(1, unit$1)); + const { minDate, maxDate, rangeState, ppNs, drpNs, handleChangeRange, handleRangeConfirm, handleShortcutClick, onSelect, parseValue } = useRangePicker(props, { + defaultValue, + leftDate, + rightDate, + unit: unit$1, + sortDates + }); + const hasShortcuts = (0, vue.computed)(() => !!shortcuts.length); + const { leftPrevYear, rightNextYear, leftNextYear, rightPrevYear, leftLabel, rightLabel, leftYear, rightYear } = useMonthRangeHeader({ + unlinkPanels: (0, vue.toRef)(props, "unlinkPanels"), + leftDate, + rightDate + }); + const enableYearArrow = (0, vue.computed)(() => { + return props.unlinkPanels && rightYear.value > leftYear.value + 1; + }); + const handleRangePick = (val, close = true) => { + const minDate_ = val.minDate; + const maxDate_ = val.maxDate; + if (maxDate.value === maxDate_ && minDate.value === minDate_) return; + emit("calendar-change", [minDate_.toDate(), maxDate_ && maxDate_.toDate()]); + maxDate.value = maxDate_; + minDate.value = minDate_; + if (!close) return; + handleRangeConfirm(); + }; + const handleClear = () => { + let valueOnClear = null; + if (pickerBase?.emptyValues) valueOnClear = pickerBase.emptyValues.valueOnClear.value; + leftDate.value = getDefaultValue((0, vue.unref)(defaultValue), { + lang: (0, vue.unref)(lang), + unit: "year", + unlinkPanels: props.unlinkPanels + })[0]; + rightDate.value = leftDate.value.add(1, "year"); + emit("pick", valueOnClear); + }; + const parseUserInput = (value) => { + return correctlyParseUserInput(value, format.value, lang.value, isDefaultFormat); + }; + function sortDates(minDate, maxDate) { + if (props.unlinkPanels && maxDate) rightDate.value = (minDate?.year() || 0) === maxDate.year() ? maxDate.add(1, unit$1) : maxDate; + else rightDate.value = leftDate.value.add(1, unit$1); + } + const monthRangeDisabled = useFormDisabled(); + (0, vue.watch)(() => props.visible, (visible) => { + if (!visible && rangeState.value.selecting) { + parseValue(props.parsedValue); + onSelect(false); + } + }); + emit("set-picker-option", ["isValidValue", isValidRange]); + emit("set-picker-option", ["parseUserInput", parseUserInput]); + emit("set-picker-option", ["handleClear", handleClear]); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)([ + (0, vue.unref)(ppNs).b(), + (0, vue.unref)(drpNs).b(), + (0, vue.unref)(ppNs).is("border", _ctx.border), + (0, vue.unref)(ppNs).is("disabled", (0, vue.unref)(monthRangeDisabled)), + { "has-sidebar": Boolean(_ctx.$slots.sidebar) || hasShortcuts.value } + ]) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body-wrapper")) }, [ + (0, vue.renderSlot)(_ctx.$slots, "sidebar", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar")) }), + hasShortcuts.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar")) + }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(shortcuts), (shortcut, key) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key, + type: "button", + class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("shortcut")), + disabled: (0, vue.unref)(monthRangeDisabled), + onClick: ($event) => (0, vue.unref)(handleShortcutClick)(shortcut) + }, (0, vue.toDisplayString)(shortcut.text), 11, _hoisted_1$45); + }), 128))], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body")) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("content"), (0, vue.unref)(drpNs).e("content")], "is-left"]) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header")) }, [ + (0, vue.createElementVNode)("button", { + type: "button", + class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "d-arrow-left"]), + disabled: (0, vue.unref)(monthRangeDisabled), + onClick: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(leftPrevYear) && (0, vue.unref)(leftPrevYear)(...args)) + }, [(0, vue.renderSlot)(_ctx.$slots, "prev-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(d_arrow_left_default))]), + _: 1 + })])], 10, _hoisted_2$27), + _ctx.unlinkPanels ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key: 0, + type: "button", + disabled: !enableYearArrow.value || (0, vue.unref)(monthRangeDisabled), + class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("icon-btn"), (0, vue.unref)(ppNs).is("disabled", !enableYearArrow.value || (0, vue.unref)(monthRangeDisabled))], "d-arrow-right"]), + onClick: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(leftNextYear) && (0, vue.unref)(leftNextYear)(...args)) + }, [(0, vue.renderSlot)(_ctx.$slots, "next-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(d_arrow_right_default))]), + _: 1 + })])], 10, _hoisted_3$12)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", null, (0, vue.toDisplayString)((0, vue.unref)(leftLabel)), 1) + ], 2), (0, vue.createVNode)(basic_month_table_default, { + "selection-mode": "range", + date: leftDate.value, + "min-date": (0, vue.unref)(minDate), + "max-date": (0, vue.unref)(maxDate), + "range-state": (0, vue.unref)(rangeState), + "disabled-date": (0, vue.unref)(disabledDate), + disabled: (0, vue.unref)(monthRangeDisabled), + "cell-class-name": (0, vue.unref)(cellClassName), + onChangerange: (0, vue.unref)(handleChangeRange), + onPick: handleRangePick, + onSelect: (0, vue.unref)(onSelect) + }, null, 8, [ + "date", + "min-date", + "max-date", + "range-state", + "disabled-date", + "disabled", + "cell-class-name", + "onChangerange", + "onSelect" + ])], 2), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("content"), (0, vue.unref)(drpNs).e("content")], "is-right"]) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header")) }, [ + _ctx.unlinkPanels ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key: 0, + type: "button", + disabled: !enableYearArrow.value || (0, vue.unref)(monthRangeDisabled), + class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("icon-btn"), (0, vue.unref)(ppNs).is("disabled", !enableYearArrow.value || (0, vue.unref)(monthRangeDisabled))], "d-arrow-left"]), + onClick: _cache[2] || (_cache[2] = (...args) => (0, vue.unref)(rightPrevYear) && (0, vue.unref)(rightPrevYear)(...args)) + }, [(0, vue.renderSlot)(_ctx.$slots, "prev-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(d_arrow_left_default))]), + _: 1 + })])], 10, _hoisted_4$9)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("button", { + type: "button", + class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "d-arrow-right"]), + disabled: (0, vue.unref)(monthRangeDisabled), + onClick: _cache[3] || (_cache[3] = (...args) => (0, vue.unref)(rightNextYear) && (0, vue.unref)(rightNextYear)(...args)) + }, [(0, vue.renderSlot)(_ctx.$slots, "next-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(d_arrow_right_default))]), + _: 1 + })])], 10, _hoisted_5$6), + (0, vue.createElementVNode)("div", null, (0, vue.toDisplayString)((0, vue.unref)(rightLabel)), 1) + ], 2), (0, vue.createVNode)(basic_month_table_default, { + "selection-mode": "range", + date: rightDate.value, + "min-date": (0, vue.unref)(minDate), + "max-date": (0, vue.unref)(maxDate), + "range-state": (0, vue.unref)(rangeState), + "disabled-date": (0, vue.unref)(disabledDate), + disabled: (0, vue.unref)(monthRangeDisabled), + "cell-class-name": (0, vue.unref)(cellClassName), + onChangerange: (0, vue.unref)(handleChangeRange), + onPick: handleRangePick, + onSelect: (0, vue.unref)(onSelect) + }, null, 8, [ + "date", + "min-date", + "max-date", + "range-state", + "disabled-date", + "disabled", + "cell-class-name", + "onChangerange", + "onSelect" + ])], 2)], 2) + ], 2)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-month-range.vue + var panel_month_range_default = panel_month_range_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/props/panel-year-range.ts + const panelYearRangeProps = buildProps({ ...panelRangeSharedProps }); + const panelYearRangeEmits = [ + "pick", + "set-picker-option", + "calendar-change" + ]; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/composables/use-year-range-header.ts + const useYearRangeHeader = ({ unlinkPanels, leftDate, rightDate }) => { + const leftPrevYear = () => { + leftDate.value = leftDate.value.subtract(10, "year"); + if (!unlinkPanels.value) rightDate.value = rightDate.value.subtract(10, "year"); + }; + const rightNextYear = () => { + if (!unlinkPanels.value) leftDate.value = leftDate.value.add(10, "year"); + rightDate.value = rightDate.value.add(10, "year"); + }; + const leftNextYear = () => { + leftDate.value = leftDate.value.add(10, "year"); + }; + const rightPrevYear = () => { + rightDate.value = rightDate.value.subtract(10, "year"); + }; + return { + leftPrevYear, + rightNextYear, + leftNextYear, + rightPrevYear, + leftLabel: (0, vue.computed)(() => { + const leftStartDate = Math.floor(leftDate.value.year() / 10) * 10; + return `${leftStartDate}-${leftStartDate + 9}`; + }), + rightLabel: (0, vue.computed)(() => { + const rightStartDate = Math.floor(rightDate.value.year() / 10) * 10; + return `${rightStartDate}-${rightStartDate + 9}`; + }), + leftYear: (0, vue.computed)(() => { + return Math.floor(leftDate.value.year() / 10) * 10 + 9; + }), + rightYear: (0, vue.computed)(() => { + return Math.floor(rightDate.value.year() / 10) * 10; + }) + }; + }; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-year-range.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$44 = ["disabled", "onClick"]; + const _hoisted_2$26 = ["disabled"]; + const _hoisted_3$11 = ["disabled"]; + const _hoisted_4$8 = ["disabled"]; + const _hoisted_5$5 = ["disabled"]; + const step = 10; + const unit = "year"; + var panel_year_range_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "DatePickerYearRange", + __name: "panel-year-range", + props: panelYearRangeProps, + emits: panelYearRangeEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const { lang } = useLocale(); + const leftDate = (0, vue.ref)((0, import_dayjs_min.default)().locale(lang.value)); + const rightDate = (0, vue.ref)((0, import_dayjs_min.default)().locale(lang.value).add(step, unit)); + const isDefaultFormat = (0, vue.inject)(ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY, void 0); + const pickerBase = (0, vue.inject)(PICKER_BASE_INJECTION_KEY); + const { shortcuts, disabledDate, cellClassName } = pickerBase.props; + const format = (0, vue.toRef)(pickerBase.props, "format"); + const defaultValue = (0, vue.toRef)(pickerBase.props, "defaultValue"); + const { minDate, maxDate, rangeState, ppNs, drpNs, handleChangeRange, handleRangeConfirm, handleShortcutClick, onSelect, parseValue } = useRangePicker(props, { + defaultValue, + leftDate, + rightDate, + step, + unit, + sortDates + }); + const { leftPrevYear, rightNextYear, leftNextYear, rightPrevYear, leftLabel, rightLabel, leftYear, rightYear } = useYearRangeHeader({ + unlinkPanels: (0, vue.toRef)(props, "unlinkPanels"), + leftDate, + rightDate + }); + const yearRangeDisabled = useFormDisabled(); + const hasShortcuts = (0, vue.computed)(() => !!shortcuts.length); + const panelKls = (0, vue.computed)(() => [ + ppNs.b(), + drpNs.b(), + ppNs.is("border", props.border), + ppNs.is("disabled", yearRangeDisabled.value), + { "has-sidebar": Boolean((0, vue.useSlots)().sidebar) || hasShortcuts.value } + ]); + const leftPanelKls = (0, vue.computed)(() => { + return { + content: [ + ppNs.e("content"), + drpNs.e("content"), + "is-left" + ], + arrowLeftBtn: [ppNs.e("icon-btn"), "d-arrow-left"], + arrowRightBtn: [ + ppNs.e("icon-btn"), + ppNs.is("disabled", !enableYearArrow.value || yearRangeDisabled.value), + "d-arrow-right" + ] + }; + }); + const rightPanelKls = (0, vue.computed)(() => { + return { + content: [ + ppNs.e("content"), + drpNs.e("content"), + "is-right" + ], + arrowLeftBtn: [ + ppNs.e("icon-btn"), + ppNs.is("disabled", !enableYearArrow.value || yearRangeDisabled.value), + "d-arrow-left" + ], + arrowRightBtn: [ppNs.e("icon-btn"), "d-arrow-right"] + }; + }); + const enableYearArrow = (0, vue.computed)(() => { + return props.unlinkPanels && rightYear.value > leftYear.value + 1; + }); + const handleRangePick = (val, close = true) => { + const minDate_ = val.minDate; + const maxDate_ = val.maxDate; + if (maxDate.value === maxDate_ && minDate.value === minDate_) return; + emit("calendar-change", [minDate_.toDate(), maxDate_ && maxDate_.toDate()]); + maxDate.value = maxDate_; + minDate.value = minDate_; + if (!close) return; + handleRangeConfirm(); + }; + const parseUserInput = (value) => { + return correctlyParseUserInput(value, format.value, lang.value, isDefaultFormat); + }; + const isValidValue = (date) => { + return isValidRange(date) && (disabledDate ? !disabledDate(date[0].toDate()) && !disabledDate(date[1].toDate()) : true); + }; + const handleClear = () => { + let valueOnClear = null; + if (pickerBase?.emptyValues) valueOnClear = pickerBase.emptyValues.valueOnClear.value; + const defaultArr = getDefaultValue((0, vue.unref)(defaultValue), { + lang: (0, vue.unref)(lang), + step, + unit, + unlinkPanels: props.unlinkPanels + }); + leftDate.value = defaultArr[0]; + rightDate.value = defaultArr[1]; + emit("pick", valueOnClear); + }; + function sortDates(minDate, maxDate) { + if (props.unlinkPanels && maxDate) { + const minDateYear = minDate?.year() || 0; + const maxDateYear = maxDate.year(); + rightDate.value = minDateYear + step > maxDateYear ? maxDate.add(step, unit) : maxDate; + } else rightDate.value = leftDate.value.add(step, unit); + } + (0, vue.watch)(() => props.visible, (visible) => { + if (!visible && rangeState.value.selecting) { + parseValue(props.parsedValue); + onSelect(false); + } + }); + emit("set-picker-option", ["isValidValue", isValidValue]); + emit("set-picker-option", ["parseUserInput", parseUserInput]); + emit("set-picker-option", ["handleClear", handleClear]); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)(panelKls.value) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body-wrapper")) }, [ + (0, vue.renderSlot)(_ctx.$slots, "sidebar", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar")) }), + hasShortcuts.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar")) + }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(shortcuts), (shortcut, key) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key, + type: "button", + class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("shortcut")), + disabled: (0, vue.unref)(yearRangeDisabled), + onClick: ($event) => (0, vue.unref)(handleShortcutClick)(shortcut) + }, (0, vue.toDisplayString)(shortcut.text), 11, _hoisted_1$44); + }), 128))], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body")) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(leftPanelKls.value.content) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header")) }, [ + (0, vue.createElementVNode)("button", { + type: "button", + class: (0, vue.normalizeClass)(leftPanelKls.value.arrowLeftBtn), + disabled: (0, vue.unref)(yearRangeDisabled), + onClick: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(leftPrevYear) && (0, vue.unref)(leftPrevYear)(...args)) + }, [(0, vue.renderSlot)(_ctx.$slots, "prev-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(d_arrow_left_default))]), + _: 1 + })])], 10, _hoisted_2$26), + _ctx.unlinkPanels ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key: 0, + type: "button", + disabled: !enableYearArrow.value || (0, vue.unref)(yearRangeDisabled), + class: (0, vue.normalizeClass)(leftPanelKls.value.arrowRightBtn), + onClick: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(leftNextYear) && (0, vue.unref)(leftNextYear)(...args)) + }, [(0, vue.renderSlot)(_ctx.$slots, "next-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(d_arrow_right_default))]), + _: 1 + })])], 10, _hoisted_3$11)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", null, (0, vue.toDisplayString)((0, vue.unref)(leftLabel)), 1) + ], 2), (0, vue.createVNode)(basic_year_table_default, { + "selection-mode": "range", + date: leftDate.value, + "min-date": (0, vue.unref)(minDate), + "max-date": (0, vue.unref)(maxDate), + "range-state": (0, vue.unref)(rangeState), + "disabled-date": (0, vue.unref)(disabledDate), + disabled: (0, vue.unref)(yearRangeDisabled), + "cell-class-name": (0, vue.unref)(cellClassName), + onChangerange: (0, vue.unref)(handleChangeRange), + onPick: handleRangePick, + onSelect: (0, vue.unref)(onSelect) + }, null, 8, [ + "date", + "min-date", + "max-date", + "range-state", + "disabled-date", + "disabled", + "cell-class-name", + "onChangerange", + "onSelect" + ])], 2), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(rightPanelKls.value.content) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header")) }, [ + _ctx.unlinkPanels ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key: 0, + type: "button", + disabled: !enableYearArrow.value || (0, vue.unref)(yearRangeDisabled), + class: (0, vue.normalizeClass)(rightPanelKls.value.arrowLeftBtn), + onClick: _cache[2] || (_cache[2] = (...args) => (0, vue.unref)(rightPrevYear) && (0, vue.unref)(rightPrevYear)(...args)) + }, [(0, vue.renderSlot)(_ctx.$slots, "prev-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(d_arrow_left_default))]), + _: 1 + })])], 10, _hoisted_4$8)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("button", { + type: "button", + class: (0, vue.normalizeClass)(rightPanelKls.value.arrowRightBtn), + disabled: (0, vue.unref)(yearRangeDisabled), + onClick: _cache[3] || (_cache[3] = (...args) => (0, vue.unref)(rightNextYear) && (0, vue.unref)(rightNextYear)(...args)) + }, [(0, vue.renderSlot)(_ctx.$slots, "next-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(d_arrow_right_default))]), + _: 1 + })])], 10, _hoisted_5$5), + (0, vue.createElementVNode)("div", null, (0, vue.toDisplayString)((0, vue.unref)(rightLabel)), 1) + ], 2), (0, vue.createVNode)(basic_year_table_default, { + "selection-mode": "range", + date: rightDate.value, + "min-date": (0, vue.unref)(minDate), + "max-date": (0, vue.unref)(maxDate), + "range-state": (0, vue.unref)(rangeState), + "disabled-date": (0, vue.unref)(disabledDate), + disabled: (0, vue.unref)(yearRangeDisabled), + "cell-class-name": (0, vue.unref)(cellClassName), + onChangerange: (0, vue.unref)(handleChangeRange), + onPick: handleRangePick, + onSelect: (0, vue.unref)(onSelect) + }, null, 8, [ + "date", + "min-date", + "max-date", + "range-state", + "disabled-date", + "disabled", + "cell-class-name", + "onChangerange", + "onSelect" + ])], 2)], 2) + ], 2)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-year-range.vue + var panel_year_range_default = panel_year_range_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/panel-utils.ts + const getPanel = function(type) { + switch (type) { + case "daterange": + case "datetimerange": return panel_date_range_default; + case "monthrange": return panel_month_range_default; + case "yearrange": return panel_year_range_default; + default: return panel_date_pick_default; + } + }; + +//#endregion +//#region ../../packages/components/date-picker-panel/src/date-picker-panel.tsx + function _isSlot$7(s) { + return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !(0, vue.isVNode)(s); + } + import_dayjs_min.default.extend(import_localeData.default); + import_dayjs_min.default.extend(import_advancedFormat.default); + import_dayjs_min.default.extend(import_customParseFormat.default); + import_dayjs_min.default.extend(import_weekOfYear.default); + import_dayjs_min.default.extend(import_weekYear.default); + import_dayjs_min.default.extend(import_dayOfYear.default); + import_dayjs_min.default.extend(import_isSameOrAfter.default); + import_dayjs_min.default.extend(import_isSameOrBefore.default); + var date_picker_panel_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElDatePickerPanel", + install: null, + inheritAttrs: false, + props: datePickerPanelProps, + emits: [ + UPDATE_MODEL_EVENT, + "calendar-change", + "panel-change", + "visible-change", + "clear" + ], + setup(props, { slots, emit, attrs }) { + const ns = useNamespace("picker-panel"); + if (isUndefined((0, vue.inject)(PICKER_BASE_INJECTION_KEY, void 0))) (0, vue.provide)(PICKER_BASE_INJECTION_KEY, { props: (0, vue.reactive)({ ...(0, vue.toRefs)(props) }) }); + (0, vue.provide)(ROOT_PICKER_INJECTION_KEY, { + slots, + pickerNs: ns + }); + const { parsedValue, onCalendarChange, onPanelChange, onSetPickerOption, onPick } = (0, vue.inject)(ROOT_COMMON_PICKER_INJECTION_KEY, () => useCommonPicker(props, emit), true); + return () => { + return (0, vue.createVNode)(getPanel(props.type), (0, vue.mergeProps)(omit(attrs, "onPick"), props, { + "parsedValue": parsedValue.value, + "onSet-picker-option": onSetPickerOption, + "onCalendar-change": onCalendarChange, + "onPanel-change": onPanelChange, + "onClear": () => emit("clear"), + "onPick": onPick + }), _isSlot$7(slots) ? slots : { default: () => [slots] }); + }; + } + }); + +//#endregion +//#region ../../packages/components/date-picker-panel/index.ts + const ElDatePickerPanel = withInstall(date_picker_panel_default); + +//#endregion +//#region ../../packages/components/date-picker/src/props.ts + const datePickerProps = buildProps({ + ...timePickerDefaultProps, + type: { + type: definePropType(String), + default: "date" + } + }); + +//#endregion +//#region ../../packages/components/date-picker/src/date-picker.tsx + function _isSlot$6(s) { + return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !(0, vue.isVNode)(s); + } + var date_picker_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElDatePicker", + install: null, + props: datePickerProps, + emits: [UPDATE_MODEL_EVENT], + setup(props, { expose, emit, slots }) { + (0, vue.provide)(ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY, (0, vue.computed)(() => { + return !props.format; + })); + (0, vue.provide)(PICKER_POPPER_OPTIONS_INJECTION_KEY, (0, vue.reactive)((0, vue.toRef)(props, "popperOptions"))); + const commonPicker = (0, vue.ref)(); + expose({ + focus: () => { + commonPicker.value?.focus(); + }, + blur: () => { + commonPicker.value?.blur(); + }, + handleOpen: () => { + commonPicker.value?.handleOpen(); + }, + handleClose: () => { + commonPicker.value?.handleClose(); + } + }); + const onModelValueUpdated = (val) => { + emit(UPDATE_MODEL_EVENT, val); + }; + return () => { + const format = props.format ?? (DEFAULT_FORMATS_DATEPICKER[props.type] || DEFAULT_FORMATS_DATE); + return (0, vue.createVNode)(picker_default, (0, vue.mergeProps)(props, { + "format": format, + "type": props.type, + "ref": commonPicker, + "onUpdate:modelValue": onModelValueUpdated + }), { + default: (scopedProps) => (0, vue.createVNode)(ElDatePickerPanel, (0, vue.mergeProps)({ + "disabled": props.disabled, + "editable": props.editable, + "border": false + }, scopedProps), _isSlot$6(slots) ? slots : { default: () => [slots] }), + "range-separator": slots["range-separator"] + }); + }; + } + }); + +//#endregion +//#region ../../packages/components/date-picker/index.ts + const ElDatePicker = withInstall(date_picker_default); + +//#endregion +//#region ../../packages/components/descriptions/src/description.ts +/** + * @deprecated Removed after 3.0.0, Use `DescriptionProps` instead. + */ + const descriptionProps = buildProps({ + border: Boolean, + column: { + type: Number, + default: 3 + }, + direction: { + type: String, + values: ["horizontal", "vertical"], + default: "horizontal" + }, + size: useSizeProp, + title: { + type: String, + default: "" + }, + extra: { + type: String, + default: "" + }, + labelWidth: { type: [String, Number] } + }); + +//#endregion +//#region ../../packages/components/descriptions/src/descriptions-row.ts +/** + * @deprecated Removed after 3.0.0, Use `DescriptionsRowProps` instead. + */ + const descriptionsRowProps = buildProps({ row: { + type: definePropType(Array), + default: () => [] + } }); + +//#endregion +//#region ../../packages/components/descriptions/src/token.ts + const descriptionsKey = Symbol("elDescriptions"); + +//#endregion +//#region ../../packages/components/descriptions/src/descriptions-cell.ts + var descriptions_cell_default = (0, vue.defineComponent)({ + name: "ElDescriptionsCell", + props: { + cell: { type: Object }, + tag: { + type: String, + default: "td" + }, + type: { type: String } + }, + setup() { + return { descriptions: (0, vue.inject)(descriptionsKey, {}) }; + }, + render() { + const item = getNormalizedProps(this.cell); + const directives = (this.cell?.dirs || []).map((dire) => { + const { dir, arg, modifiers, value } = dire; + return [ + dir, + value, + arg, + modifiers + ]; + }); + const { border, direction } = this.descriptions; + const isVertical = direction === "vertical"; + const renderLabel = () => this.cell?.children?.label?.() || item.label; + const renderContent = () => this.cell?.children?.default?.(); + const span = item.span; + const rowspan = item.rowspan; + const align = item.align ? `is-${item.align}` : ""; + const labelAlign = item.labelAlign ? `is-${item.labelAlign}` : align; + const className = item.className; + const labelClassName = item.labelClassName; + const style = { + width: addUnit(this.type === "label" ? item.labelWidth ?? this.descriptions.labelWidth ?? item.width : item.width), + minWidth: addUnit(item.minWidth) + }; + const ns = useNamespace("descriptions"); + switch (this.type) { + case "label": return (0, vue.withDirectives)((0, vue.h)(this.tag, { + style, + class: [ + ns.e("cell"), + ns.e("label"), + ns.is("bordered-label", border), + ns.is("vertical-label", isVertical), + labelAlign, + labelClassName + ], + colSpan: isVertical ? span : 1, + rowspan: isVertical ? 1 : rowspan + }, renderLabel()), directives); + case "content": return (0, vue.withDirectives)((0, vue.h)(this.tag, { + style, + class: [ + ns.e("cell"), + ns.e("content"), + ns.is("bordered-content", border), + ns.is("vertical-content", isVertical), + align, + className + ], + colSpan: isVertical ? span : span * 2 - 1, + rowspan: isVertical ? rowspan * 2 - 1 : rowspan + }, renderContent()), directives); + default: { + const label = renderLabel(); + const labelStyle = {}; + const width = addUnit(item.labelWidth ?? this.descriptions.labelWidth); + if (width) { + labelStyle.width = width; + labelStyle.display = "inline-block"; + } + return (0, vue.withDirectives)((0, vue.h)("td", { + style, + class: [ns.e("cell"), align], + colSpan: span, + rowspan + }, [!isNil(label) ? (0, vue.h)("span", { + style: labelStyle, + class: [ns.e("label"), labelClassName] + }, label) : void 0, (0, vue.h)("span", { class: [ns.e("content"), className] }, renderContent())]), directives); + } + } + } + }); + +//#endregion +//#region ../../packages/components/descriptions/src/descriptions-row.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$43 = { key: 1 }; + var descriptions_row_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElDescriptionsRow", + __name: "descriptions-row", + props: descriptionsRowProps, + setup(__props) { + const descriptions = (0, vue.inject)(descriptionsKey, {}); + return (_ctx, _cache) => { + return (0, vue.unref)(descriptions).direction === "vertical" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [(0, vue.createElementVNode)("tr", null, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.row, (cell, _index) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(descriptions_cell_default), { + key: `tr1-${_index}`, + cell, + tag: "th", + type: "label" + }, null, 8, ["cell"]); + }), 128))]), (0, vue.createElementVNode)("tr", null, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.row, (cell, _index) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(descriptions_cell_default), { + key: `tr2-${_index}`, + cell, + tag: "td", + type: "content" + }, null, 8, ["cell"]); + }), 128))])], 64)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("tr", _hoisted_1$43, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.row, (cell, _index) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: `tr3-${_index}` }, [(0, vue.unref)(descriptions).border ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [(0, vue.createVNode)((0, vue.unref)(descriptions_cell_default), { + cell, + tag: "td", + type: "label" + }, null, 8, ["cell"]), (0, vue.createVNode)((0, vue.unref)(descriptions_cell_default), { + cell, + tag: "td", + type: "content" + }, null, 8, ["cell"])], 64)) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(descriptions_cell_default), { + key: 1, + cell, + tag: "td", + type: "both" + }, null, 8, ["cell"]))], 64); + }), 128))])); + }; + } + }); + +//#endregion +//#region ../../packages/components/descriptions/src/descriptions-row.vue + var descriptions_row_default = descriptions_row_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/descriptions/src/constants.ts + const COMPONENT_NAME$10 = "ElDescriptionsItem"; + +//#endregion +//#region ../../packages/components/descriptions/src/description.vue?vue&type=script&setup=true&lang.ts + var description_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElDescriptions", + __name: "description", + props: descriptionProps, + setup(__props) { + const props = __props; + const ns = useNamespace("descriptions"); + const descriptionsSize = useFormSize(); + const slots = (0, vue.useSlots)(); + (0, vue.provide)(descriptionsKey, props); + const descriptionKls = (0, vue.computed)(() => [ns.b(), ns.m(descriptionsSize.value)]); + const filledNode = (node, span, count, isLast = false) => { + if (!node.props) node.props = {}; + if (span > count) node.props.span = count; + if (isLast) node.props.span = span; + return node; + }; + const getRows = () => { + if (!slots.default) return []; + const children = flattedChildren(slots.default()).filter((node) => node?.type?.name === COMPONENT_NAME$10); + const rows = []; + let temp = []; + let count = props.column; + let totalSpan = 0; + const rowspanTemp = []; + children.forEach((node, index) => { + const span = node.props?.span || 1; + const rowspan = node.props?.rowspan || 1; + const rowNo = rows.length; + rowspanTemp[rowNo] ||= 0; + if (rowspan > 1) for (let i = 1; i < rowspan; i++) { + rowspanTemp[rowNo + i] ||= 0; + rowspanTemp[rowNo + i]++; + totalSpan++; + } + if (rowspanTemp[rowNo] > 0) { + count -= rowspanTemp[rowNo]; + rowspanTemp[rowNo] = 0; + } + if (index < children.length - 1) totalSpan += span > count ? count : span; + if (index === children.length - 1) { + const lastSpan = props.column - totalSpan % props.column; + temp.push(filledNode(node, lastSpan, count, true)); + rows.push(temp); + return; + } + if (span < count) { + count -= span; + temp.push(node); + } else { + temp.push(filledNode(node, span, count)); + rows.push(temp); + count = props.column; + temp = []; + } + }); + return rows; + }; + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)(descriptionKls.value) }, [__props.title || __props.extra || _ctx.$slots.title || _ctx.$slots.extra ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("header")) + }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("title")) }, [(0, vue.renderSlot)(_ctx.$slots, "title", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.title), 1)])], 2), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("extra")) }, [(0, vue.renderSlot)(_ctx.$slots, "extra", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.extra), 1)])], 2)], 2)) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("body")) }, [(0, vue.createElementVNode)("table", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("table"), (0, vue.unref)(ns).is("bordered", __props.border)]) }, [(0, vue.createElementVNode)("tbody", null, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(getRows(), (row, _index) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(descriptions_row_default, { + key: _index, + row + }, null, 8, ["row"]); + }), 128))])], 2)], 2)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/descriptions/src/description.vue + var description_default = description_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/descriptions/src/description-item.ts + const descriptionItemProps = buildProps({ + label: { + type: String, + default: "" + }, + span: { + type: Number, + default: 1 + }, + rowspan: { + type: Number, + default: 1 + }, + width: { + type: [String, Number], + default: "" + }, + minWidth: { + type: [String, Number], + default: "" + }, + labelWidth: { type: [String, Number] }, + align: { + type: String, + values: columnAlignment, + default: "left" + }, + labelAlign: { + type: String, + values: columnAlignment + }, + className: { + type: String, + default: "" + }, + labelClassName: { + type: String, + default: "" + } + }); + const DescriptionItem = (0, vue.defineComponent)({ + name: COMPONENT_NAME$10, + props: descriptionItemProps + }); + +//#endregion +//#region ../../packages/components/descriptions/index.ts + const ElDescriptions = withInstall(description_default, { DescriptionsItem: DescriptionItem }); + const ElDescriptionsItem = withNoopInstall(DescriptionItem); + +//#endregion +//#region ../../packages/components/dialog/src/dialog-content.ts +/** + * @deprecated Removed after 3.0.0, Use `DialogContentProps` instead. + */ + const dialogContentProps = buildProps({ + center: Boolean, + alignCenter: { + type: Boolean, + default: void 0 + }, + closeIcon: { type: iconPropType }, + draggable: { + type: Boolean, + default: void 0 + }, + overflow: { + type: Boolean, + default: void 0 + }, + fullscreen: Boolean, + headerClass: String, + bodyClass: String, + footerClass: String, + showClose: { + type: Boolean, + default: true + }, + title: { + type: String, + default: "" + }, + ariaLevel: { + type: String, + default: "2" + } + }); + const dialogContentEmits = { close: () => true }; + const dialogContentPropsDefaults = { + alignCenter: void 0, + draggable: void 0, + overflow: void 0, + showClose: true, + title: "", + ariaLevel: "2" + }; + +//#endregion +//#region ../../packages/components/dialog/src/dialog.ts +/** + * @deprecated Removed after 3.0.0, Use `DialogProps` instead. + */ + const dialogProps = buildProps({ + ...dialogContentProps, + appendToBody: Boolean, + appendTo: { + type: teleportProps.to.type, + default: "body" + }, + beforeClose: { type: definePropType(Function) }, + destroyOnClose: Boolean, + closeOnClickModal: { + type: Boolean, + default: true + }, + closeOnPressEscape: { + type: Boolean, + default: true + }, + lockScroll: { + type: Boolean, + default: true + }, + modal: { + type: Boolean, + default: true + }, + modalPenetrable: Boolean, + openDelay: { + type: Number, + default: 0 + }, + closeDelay: { + type: Number, + default: 0 + }, + top: { type: String }, + modelValue: Boolean, + modalClass: String, + headerClass: String, + bodyClass: String, + footerClass: String, + width: { type: [String, Number] }, + zIndex: { type: Number }, + trapFocus: Boolean, + headerAriaLevel: { + type: String, + default: "2" + }, + transition: { + type: definePropType([String, Object]), + default: void 0 + } + }); + const dialogEmits = { + open: () => true, + opened: () => true, + close: () => true, + closed: () => true, + [UPDATE_MODEL_EVENT]: (value) => isBoolean(value), + openAutoFocus: () => true, + closeAutoFocus: () => true + }; + const dialogContextKey = Symbol("dialogContextKey"); + const dialogPropsDefaults = { + ...dialogContentPropsDefaults, + appendTo: "body", + closeOnClickModal: true, + closeOnPressEscape: true, + lockScroll: true, + modal: true, + openDelay: 0, + closeDelay: 0, + headerAriaLevel: "2", + transition: void 0 + }; + +//#endregion +//#region ../../packages/components/overlay/src/overlay.ts + const overlayProps = buildProps({ + mask: { + type: Boolean, + default: true + }, + customMaskEvent: Boolean, + overlayClass: { type: definePropType([ + String, + Array, + Object + ]) }, + zIndex: { type: definePropType([String, Number]) } + }); + const overlayEmits = { click: (evt) => evt instanceof MouseEvent }; + const BLOCK = "overlay"; + var overlay_default = (0, vue.defineComponent)({ + name: "ElOverlay", + props: overlayProps, + emits: overlayEmits, + setup(props, { slots, emit }) { + const ns = useNamespace(BLOCK); + const onMaskClick = (e) => { + emit("click", e); + }; + const { onClick, onMousedown, onMouseup } = useSameTarget(props.customMaskEvent ? void 0 : onMaskClick); + return () => { + return props.mask ? (0, vue.createVNode)("div", { + class: [ns.b(), props.overlayClass], + style: { zIndex: props.zIndex }, + onClick, + onMousedown, + onMouseup + }, [(0, vue.renderSlot)(slots, "default")], PatchFlags.STYLE | PatchFlags.CLASS | PatchFlags.PROPS, [ + "onClick", + "onMouseup", + "onMousedown" + ]) : (0, vue.h)("div", { + class: props.overlayClass, + style: { + zIndex: props.zIndex, + position: "fixed", + top: "0px", + right: "0px", + bottom: "0px", + left: "0px" + } + }, [(0, vue.renderSlot)(slots, "default")]); + }; + } + }); + +//#endregion +//#region ../../packages/components/overlay/index.ts + const ElOverlay = overlay_default; + +//#endregion +//#region ../../packages/components/dialog/src/constants.ts + const dialogInjectionKey = Symbol("dialogInjectionKey"); + const DEFAULT_DIALOG_TRANSITION = "dialog-fade"; + +//#endregion +//#region ../../packages/components/dialog/src/dialog-content.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$42 = ["aria-level"]; + const _hoisted_2$25 = ["aria-label"]; + const _hoisted_3$10 = ["id"]; + var dialog_content_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElDialogContent", + __name: "dialog-content", + props: dialogContentProps, + emits: dialogContentEmits, + setup(__props, { expose: __expose }) { + const { t } = useLocale(); + const { Close } = CloseComponents; + const props = __props; + const { dialogRef, headerRef, bodyId, ns, style } = (0, vue.inject)(dialogInjectionKey); + const { focusTrapRef } = (0, vue.inject)(FOCUS_TRAP_INJECTION_KEY); + const composedDialogRef = composeRefs(focusTrapRef, dialogRef); + const draggable = (0, vue.computed)(() => !!props.draggable); + const { resetPosition, updatePosition, isDragging } = useDraggable(dialogRef, headerRef, draggable, (0, vue.computed)(() => !!props.overflow)); + const dialogKls = (0, vue.computed)(() => [ + ns.b(), + ns.is("fullscreen", props.fullscreen), + ns.is("draggable", draggable.value), + ns.is("dragging", isDragging.value), + ns.is("align-center", !!props.alignCenter), + { [ns.m("center")]: props.center } + ]); + __expose({ + resetPosition, + updatePosition + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref: (0, vue.unref)(composedDialogRef), + class: (0, vue.normalizeClass)(dialogKls.value), + style: (0, vue.normalizeStyle)((0, vue.unref)(style)), + tabindex: "-1" + }, [ + (0, vue.createElementVNode)("header", { + ref_key: "headerRef", + ref: headerRef, + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).e("header"), + __props.headerClass, + { "show-close": __props.showClose } + ]) + }, [(0, vue.renderSlot)(_ctx.$slots, "header", {}, () => [(0, vue.createElementVNode)("span", { + role: "heading", + "aria-level": __props.ariaLevel, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("title")) + }, (0, vue.toDisplayString)(__props.title), 11, _hoisted_1$42)]), __props.showClose ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key: 0, + "aria-label": (0, vue.unref)(t)("el.dialog.close"), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("headerbtn")), + type: "button", + onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("close")) + }, [(0, vue.createVNode)((0, vue.unref)(ElIcon), { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("close")) }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.closeIcon || (0, vue.unref)(Close))))]), + _: 1 + }, 8, ["class"])], 10, _hoisted_2$25)) : (0, vue.createCommentVNode)("v-if", true)], 2), + (0, vue.createElementVNode)("div", { + id: (0, vue.unref)(bodyId), + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("body"), __props.bodyClass]) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_3$10), + _ctx.$slots.footer ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("footer", { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("footer"), __props.footerClass]) + }, [(0, vue.renderSlot)(_ctx.$slots, "footer")], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 6); + }; + } + }); + +//#endregion +//#region ../../packages/components/dialog/src/dialog-content.vue + var dialog_content_default = dialog_content_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/dialog/src/use-dialog.ts + const COMPONENT_NAME$9 = "ElDialog"; + const useDialog = (props, targetRef) => { + const emit = (0, vue.getCurrentInstance)().emit; + const { nextZIndex } = useZIndex(); + let lastPosition = ""; + const titleId = useId(); + const bodyId = useId(); + const visible = (0, vue.ref)(false); + const closed = (0, vue.ref)(false); + const rendered = (0, vue.ref)(false); + const zIndex = (0, vue.ref)(props.zIndex ?? nextZIndex()); + const closing = (0, vue.ref)(false); + let openTimer = void 0; + let closeTimer = void 0; + const config = useGlobalConfig(); + const namespace = (0, vue.computed)(() => config.value?.namespace ?? defaultNamespace); + const globalConfig = (0, vue.computed)(() => config.value?.dialog); + const style = (0, vue.computed)(() => { + const style = {}; + const varPrefix = `--${namespace.value}-dialog`; + if (!props.fullscreen) { + if (props.top) style[`${varPrefix}-margin-top`] = props.top; + const width = addUnit(props.width); + if (width) style[`${varPrefix}-width`] = width; + } + return style; + }); + const _draggable = (0, vue.computed)(() => (props.draggable ?? globalConfig.value?.draggable ?? false) && !props.fullscreen); + const _alignCenter = (0, vue.computed)(() => props.alignCenter ?? globalConfig.value?.alignCenter ?? false); + const _overflow = (0, vue.computed)(() => props.overflow ?? globalConfig.value?.overflow ?? false); + const penetrable = (0, vue.computed)(() => props.modalPenetrable && !props.modal && !props.fullscreen); + const overlayDialogStyle = (0, vue.computed)(() => { + if (_alignCenter.value) return { display: "flex" }; + return {}; + }); + const transitionConfig = (0, vue.computed)(() => { + const transition = props.transition ?? globalConfig.value?.transition ?? DEFAULT_DIALOG_TRANSITION; + const baseConfig = { + name: transition, + onAfterEnter: afterEnter, + onBeforeLeave: beforeLeave, + onAfterLeave: afterLeave + }; + if (isObject$1(transition)) { + const config = { ...transition }; + const _mergeHook = (userHook, defaultHook) => { + return (el) => { + if (isArray$1(userHook)) userHook.forEach((fn) => { + if (isFunction$1(fn)) fn(el); + }); + else if (isFunction$1(userHook)) userHook(el); + defaultHook(); + }; + }; + config.onAfterEnter = _mergeHook(config.onAfterEnter, afterEnter); + config.onBeforeLeave = _mergeHook(config.onBeforeLeave, beforeLeave); + config.onAfterLeave = _mergeHook(config.onAfterLeave, afterLeave); + if (!config.name) { + config.name = DEFAULT_DIALOG_TRANSITION; + /* @__PURE__ */ debugWarn(COMPONENT_NAME$9, `transition.name is missing when using object syntax, fallback to '${DEFAULT_DIALOG_TRANSITION}'`); + } + return config; + } + return baseConfig; + }); + function afterEnter() { + emit("opened"); + } + function afterLeave() { + emit("closed"); + emit(UPDATE_MODEL_EVENT, false); + if (props.destroyOnClose) rendered.value = false; + closing.value = false; + } + function beforeLeave() { + closing.value = true; + emit("close"); + } + function open() { + closeTimer?.(); + openTimer?.(); + if (props.openDelay && props.openDelay > 0) ({stop: openTimer} = useTimeoutFn(() => doOpen(), props.openDelay)); + else doOpen(); + } + function close() { + openTimer?.(); + closeTimer?.(); + if (props.closeDelay && props.closeDelay > 0) ({stop: closeTimer} = useTimeoutFn(() => doClose(), props.closeDelay)); + else doClose(); + } + function handleClose() { + function hide(shouldCancel) { + if (shouldCancel) return; + closed.value = true; + visible.value = false; + } + if (props.beforeClose) props.beforeClose(hide); + else close(); + } + function onModalClick() { + if (props.closeOnClickModal) handleClose(); + } + function doOpen() { + if (!isClient) return; + visible.value = true; + } + function doClose() { + visible.value = false; + } + function onOpenAutoFocus() { + emit("openAutoFocus"); + } + function onCloseAutoFocus() { + emit("closeAutoFocus"); + } + function onFocusoutPrevented(event) { + if (event.detail?.focusReason === "pointer") event.preventDefault(); + } + if (props.lockScroll) useLockscreen(visible); + function onCloseRequested() { + if (props.closeOnPressEscape) handleClose(); + } + function bringToFront() { + if (!visible.value || !penetrable.value || props.zIndex !== void 0) return; + zIndex.value = nextZIndex(); + } + (0, vue.watch)(() => props.zIndex, () => { + zIndex.value = props.zIndex ?? nextZIndex(); + }); + (0, vue.watch)(() => props.modelValue, (val) => { + if (val) { + closed.value = false; + closing.value = false; + open(); + rendered.value = true; + zIndex.value = props.zIndex ?? nextZIndex(); + (0, vue.nextTick)(() => { + emit("open"); + if (targetRef.value) { + targetRef.value.parentElement.scrollTop = 0; + targetRef.value.parentElement.scrollLeft = 0; + targetRef.value.scrollTop = 0; + } + }); + } else if (visible.value) close(); + }); + (0, vue.watch)(() => props.fullscreen, (val) => { + if (!targetRef.value) return; + if (val) { + lastPosition = targetRef.value.style.transform; + targetRef.value.style.transform = ""; + } else targetRef.value.style.transform = lastPosition; + }); + (0, vue.onMounted)(() => { + if (props.modelValue) { + visible.value = true; + rendered.value = true; + open(); + } + }); + return { + afterEnter, + afterLeave, + beforeLeave, + handleClose, + onModalClick, + close, + doClose, + onOpenAutoFocus, + onCloseAutoFocus, + onCloseRequested, + onFocusoutPrevented, + bringToFront, + titleId, + bodyId, + closed, + style, + overlayDialogStyle, + rendered, + visible, + zIndex, + transitionConfig, + _draggable, + _alignCenter, + _overflow, + closing, + penetrable + }; + }; + +//#endregion +//#region ../../packages/components/dialog/src/dialog.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$41 = [ + "aria-label", + "aria-labelledby", + "aria-describedby" + ]; + var dialog_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElDialog", + inheritAttrs: false, + __name: "dialog", + props: dialogProps, + emits: dialogEmits, + setup(__props, { expose: __expose }) { + const props = __props; + const slots = (0, vue.useSlots)(); + useDeprecated({ + scope: "el-dialog", + from: "the title slot", + replacement: "the header slot", + version: "3.0.0", + ref: "https://element-plus.org/en-US/component/dialog.html#slots" + }, (0, vue.computed)(() => !!slots.title)); + const ns = useNamespace("dialog"); + const dialogRef = (0, vue.ref)(); + const headerRef = (0, vue.ref)(); + const dialogContentRef = (0, vue.ref)(); + const { visible, titleId, bodyId, style, overlayDialogStyle, rendered, transitionConfig, zIndex, _draggable, _alignCenter, _overflow, penetrable, handleClose, onModalClick, onOpenAutoFocus, onCloseAutoFocus, onCloseRequested, onFocusoutPrevented, bringToFront, closing } = useDialog(props, dialogRef); + (0, vue.provide)(dialogInjectionKey, { + dialogRef, + headerRef, + bodyId, + ns, + rendered, + style + }); + const overlayEvent = useSameTarget(onModalClick); + const resetPosition = () => { + dialogContentRef.value?.resetPosition(); + }; + __expose({ + visible, + dialogContentRef, + resetPosition, + handleClose + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTeleport), { + to: __props.appendTo, + disabled: __props.appendTo !== "body" ? false : !__props.appendToBody + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)(vue.Transition, (0, vue.mergeProps)((0, vue.unref)(transitionConfig), { persisted: "" }), { + default: (0, vue.withCtx)(() => [(0, vue.withDirectives)((0, vue.createVNode)((0, vue.unref)(ElOverlay), { + "custom-mask-event": "", + mask: __props.modal, + "overlay-class": [ + __props.modalClass ?? "", + `${(0, vue.unref)(ns).namespace.value}-modal-dialog`, + (0, vue.unref)(ns).is("penetrable", (0, vue.unref)(penetrable)) + ], + "z-index": (0, vue.unref)(zIndex) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + role: "dialog", + "aria-modal": "true", + "aria-label": __props.title || void 0, + "aria-labelledby": !__props.title ? (0, vue.unref)(titleId) : void 0, + "aria-describedby": (0, vue.unref)(bodyId), + class: (0, vue.normalizeClass)([`${(0, vue.unref)(ns).namespace.value}-overlay-dialog`, (0, vue.unref)(ns).is("closing", (0, vue.unref)(closing))]), + style: (0, vue.normalizeStyle)((0, vue.unref)(overlayDialogStyle)), + onClick: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(overlayEvent).onClick && (0, vue.unref)(overlayEvent).onClick(...args)), + onMousedown: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(overlayEvent).onMousedown && (0, vue.unref)(overlayEvent).onMousedown(...args)), + onMouseup: _cache[2] || (_cache[2] = (...args) => (0, vue.unref)(overlayEvent).onMouseup && (0, vue.unref)(overlayEvent).onMouseup(...args)) + }, [(0, vue.createVNode)((0, vue.unref)(focus_trap_default), { + loop: "", + trapped: (0, vue.unref)(visible), + "focus-start-el": "container", + onFocusAfterTrapped: (0, vue.unref)(onOpenAutoFocus), + onFocusAfterReleased: (0, vue.unref)(onCloseAutoFocus), + onFocusoutPrevented: (0, vue.unref)(onFocusoutPrevented), + onReleaseRequested: (0, vue.unref)(onCloseRequested) + }, { + default: (0, vue.withCtx)(() => [(0, vue.unref)(rendered) ? ((0, vue.openBlock)(), (0, vue.createBlock)(dialog_content_default, (0, vue.mergeProps)({ + key: 0, + ref_key: "dialogContentRef", + ref: dialogContentRef + }, _ctx.$attrs, { + center: __props.center, + "align-center": (0, vue.unref)(_alignCenter), + "close-icon": __props.closeIcon, + draggable: (0, vue.unref)(_draggable), + overflow: (0, vue.unref)(_overflow), + fullscreen: __props.fullscreen, + "header-class": __props.headerClass, + "body-class": __props.bodyClass, + "footer-class": __props.footerClass, + "show-close": __props.showClose, + title: __props.title, + "aria-level": __props.headerAriaLevel, + onClose: (0, vue.unref)(handleClose), + onMousedown: (0, vue.unref)(bringToFront) + }), (0, vue.createSlots)({ + header: (0, vue.withCtx)(() => [!_ctx.$slots.title ? (0, vue.renderSlot)(_ctx.$slots, "header", { + key: 0, + close: (0, vue.unref)(handleClose), + titleId: (0, vue.unref)(titleId), + titleClass: (0, vue.unref)(ns).e("title") + }) : (0, vue.renderSlot)(_ctx.$slots, "title", { key: 1 })]), + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 2 + }, [_ctx.$slots.footer ? { + name: "footer", + fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "footer")]), + key: "0" + } : void 0]), 1040, [ + "center", + "align-center", + "close-icon", + "draggable", + "overflow", + "fullscreen", + "header-class", + "body-class", + "footer-class", + "show-close", + "title", + "aria-level", + "onClose", + "onMousedown" + ])) : (0, vue.createCommentVNode)("v-if", true)]), + _: 3 + }, 8, [ + "trapped", + "onFocusAfterTrapped", + "onFocusAfterReleased", + "onFocusoutPrevented", + "onReleaseRequested" + ])], 46, _hoisted_1$41)]), + _: 3 + }, 8, [ + "mask", + "overlay-class", + "z-index" + ]), [[vue.vShow, (0, vue.unref)(visible)]])]), + _: 3 + }, 16)]), + _: 3 + }, 8, ["to", "disabled"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/dialog/src/dialog.vue + var dialog_default = dialog_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/dialog/index.ts + const ElDialog = withInstall(dialog_default); + +//#endregion +//#region ../../packages/components/divider/src/divider.ts +/** + * @deprecated Removed after 3.0.0, Use `DividerProps` instead. + */ + const dividerProps = buildProps({ + direction: { + type: String, + values: ["horizontal", "vertical"], + default: "horizontal" + }, + contentPosition: { + type: String, + values: [ + "left", + "center", + "right" + ], + default: "center" + }, + borderStyle: { + type: definePropType(String), + default: "solid" + } + }); + +//#endregion +//#region ../../packages/components/divider/src/divider.vue?vue&type=script&setup=true&lang.ts + var divider_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElDivider", + __name: "divider", + props: dividerProps, + setup(__props) { + const props = __props; + const ns = useNamespace("divider"); + const dividerStyle = (0, vue.computed)(() => { + return ns.cssVar({ "border-style": props.borderStyle }); + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).b(), (0, vue.unref)(ns).m(__props.direction)]), + style: (0, vue.normalizeStyle)(dividerStyle.value), + role: "separator" + }, [_ctx.$slots.default && __props.direction !== "vertical" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("text"), (0, vue.unref)(ns).is(__props.contentPosition)]) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2)) : (0, vue.createCommentVNode)("v-if", true)], 6); + }; + } + }); + +//#endregion +//#region ../../packages/components/divider/src/divider.vue + var divider_default = divider_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/divider/index.ts + const ElDivider = withInstall(divider_default); + +//#endregion +//#region ../../packages/components/drawer/src/drawer.ts +/** + * @deprecated Removed after 3.0.0, Use `DrawerProps` instead. + */ + const drawerProps = buildProps({ + ...dialogProps, + direction: { + type: String, + default: "rtl", + values: [ + "ltr", + "rtl", + "ttb", + "btt" + ] + }, + resizable: Boolean, + size: { + type: [String, Number], + default: "30%" + }, + withHeader: { + type: Boolean, + default: true + }, + modalFade: { + type: Boolean, + default: true + }, + headerAriaLevel: { + type: String, + default: "2" + } + }); + const drawerEmits = { + ...dialogEmits, + "resize-start": (evt, size) => evt instanceof MouseEvent && typeof size === "number", + resize: (evt, size) => evt instanceof MouseEvent && typeof size === "number", + "resize-end": (evt, size) => evt instanceof MouseEvent && typeof size === "number" + }; + +//#endregion +//#region ../../packages/components/drawer/src/composables/useResizable.ts + function useResizable(props, target, emit) { + const { width, height } = useWindowSize(); + const isHorizontal = (0, vue.computed)(() => ["ltr", "rtl"].includes(props.direction)); + const sign = (0, vue.computed)(() => ["ltr", "ttb"].includes(props.direction) ? 1 : -1); + const windowSize = (0, vue.computed)(() => isHorizontal.value ? width.value : height.value); + const getSize = (0, vue.computed)(() => { + return clamp$2(startSize.value + sign.value * offset.value, 4, windowSize.value); + }); + const startSize = (0, vue.ref)(0); + const offset = (0, vue.ref)(0); + const isResizing = (0, vue.ref)(false); + const hasStartedDragging = (0, vue.ref)(false); + let startPos = []; + let cleanups = []; + const getActualSize = () => { + const drawerEl = target.value?.closest("[aria-modal=\"true\"]"); + if (drawerEl) return isHorizontal.value ? drawerEl.offsetWidth : drawerEl.offsetHeight; + return 100; + }; + (0, vue.watch)(() => [props.size, props.resizable], () => { + hasStartedDragging.value = false; + startSize.value = 0; + offset.value = 0; + onMouseUp(); + }); + const onMousedown = (e) => { + if (!props.resizable) return; + if (!hasStartedDragging.value) { + startSize.value = getActualSize(); + hasStartedDragging.value = true; + } + startPos = [e.pageX, e.pageY]; + isResizing.value = true; + emit("resize-start", e, startSize.value); + cleanups.push(useEventListener(window, "mouseup", onMouseUp), useEventListener(window, "mousemove", onMouseMove)); + }; + const onMouseMove = (e) => { + const { pageX, pageY } = e; + const offsetX = pageX - startPos[0]; + const offsetY = pageY - startPos[1]; + offset.value = isHorizontal.value ? offsetX : offsetY; + emit("resize", e, getSize.value); + }; + const onMouseUp = (e) => { + if (!isResizing.value) return; + startPos = []; + startSize.value = getSize.value; + offset.value = 0; + isResizing.value = false; + cleanups.forEach((cleanup) => cleanup?.()); + cleanups = []; + if (e) emit("resize-end", e, startSize.value); + }; + const cleanup = useEventListener(target, "mousedown", onMousedown); + (0, vue.onBeforeUnmount)(() => { + cleanup(); + onMouseUp(); + }); + return { + size: (0, vue.computed)(() => { + return hasStartedDragging.value ? `${getSize.value}px` : addUnit(props.size); + }), + isResizing, + isHorizontal + }; + } + +//#endregion +//#region ../../packages/components/drawer/src/drawer.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$40 = [ + "aria-label", + "aria-labelledby", + "aria-describedby" + ]; + const _hoisted_2$24 = ["id", "aria-level"]; + const _hoisted_3$9 = ["aria-label"]; + const _hoisted_4$7 = ["id"]; + var drawer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElDrawer", + inheritAttrs: false, + __name: "drawer", + props: drawerProps, + emits: drawerEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const slots = (0, vue.useSlots)(); + useDeprecated({ + scope: "el-drawer", + from: "the title slot", + replacement: "the header slot", + version: "3.0.0", + ref: "https://element-plus.org/en-US/component/drawer.html#slots" + }, (0, vue.computed)(() => !!slots.title)); + const drawerRef = (0, vue.ref)(); + const focusStartRef = (0, vue.ref)(); + const draggerRef = (0, vue.ref)(); + const ns = useNamespace("drawer"); + const { t } = useLocale(); + const { afterEnter, afterLeave, beforeLeave, visible, rendered, titleId, bodyId, zIndex, onModalClick, onOpenAutoFocus, onCloseAutoFocus, onFocusoutPrevented, onCloseRequested, handleClose } = useDialog(props, drawerRef); + const { isHorizontal, size, isResizing } = useResizable(props, draggerRef, emit); + const penetrable = (0, vue.computed)(() => props.modalPenetrable && !props.modal); + __expose({ + handleClose, + afterEnter, + afterLeave + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTeleport), { + to: __props.appendTo, + disabled: __props.appendTo !== "body" ? false : !__props.appendToBody + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)(vue.Transition, { + name: (0, vue.unref)(ns).b("fade"), + onAfterEnter: (0, vue.unref)(afterEnter), + onAfterLeave: (0, vue.unref)(afterLeave), + onBeforeLeave: (0, vue.unref)(beforeLeave), + persisted: "" + }, { + default: (0, vue.withCtx)(() => [(0, vue.withDirectives)((0, vue.createVNode)((0, vue.unref)(ElOverlay), { + mask: __props.modal, + "overlay-class": [ + (0, vue.unref)(ns).is("drawer"), + __props.modalClass ?? "", + `${(0, vue.unref)(ns).namespace.value}-modal-drawer`, + (0, vue.unref)(ns).is("penetrable", penetrable.value) + ], + "z-index": (0, vue.unref)(zIndex), + onClick: (0, vue.unref)(onModalClick) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(focus_trap_default), { + loop: "", + trapped: (0, vue.unref)(visible), + "focus-trap-el": drawerRef.value, + "focus-start-el": focusStartRef.value, + onFocusAfterTrapped: (0, vue.unref)(onOpenAutoFocus), + onFocusAfterReleased: (0, vue.unref)(onCloseAutoFocus), + onFocusoutPrevented: (0, vue.unref)(onFocusoutPrevented), + onReleaseRequested: (0, vue.unref)(onCloseRequested) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", (0, vue.mergeProps)({ + ref_key: "drawerRef", + ref: drawerRef, + "aria-modal": "true", + "aria-label": __props.title || void 0, + "aria-labelledby": !__props.title ? (0, vue.unref)(titleId) : void 0, + "aria-describedby": (0, vue.unref)(bodyId) + }, _ctx.$attrs, { + class: [ + (0, vue.unref)(ns).b(), + __props.direction, + (0, vue.unref)(visible) && "open", + (0, vue.unref)(ns).is("dragging", (0, vue.unref)(isResizing)) + ], + style: { [(0, vue.unref)(isHorizontal) ? "width" : "height"]: (0, vue.unref)(size) }, + role: "dialog", + onClick: _cache[1] || (_cache[1] = (0, vue.withModifiers)(() => {}, ["stop"])) + }), [ + (0, vue.createElementVNode)("span", { + ref_key: "focusStartRef", + ref: focusStartRef, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("sr-focus")), + tabindex: "-1" + }, null, 2), + __props.withHeader ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("header", { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("header"), __props.headerClass]) + }, [!_ctx.$slots.title ? (0, vue.renderSlot)(_ctx.$slots, "header", { + key: 0, + close: (0, vue.unref)(handleClose), + titleId: (0, vue.unref)(titleId), + titleClass: (0, vue.unref)(ns).e("title") + }, () => [(0, vue.createElementVNode)("span", { + id: (0, vue.unref)(titleId), + role: "heading", + "aria-level": __props.headerAriaLevel, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("title")) + }, (0, vue.toDisplayString)(__props.title), 11, _hoisted_2$24)]) : (0, vue.renderSlot)(_ctx.$slots, "title", { key: 1 }, () => [(0, vue.createCommentVNode)(" DEPRECATED SLOT ")]), __props.showClose ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key: 2, + "aria-label": (0, vue.unref)(t)("el.drawer.close"), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("close-btn")), + type: "button", + onClick: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(handleClose) && (0, vue.unref)(handleClose)(...args)) + }, [(0, vue.createVNode)((0, vue.unref)(ElIcon), { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("close")) }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(close_default))]), + _: 1 + }, 8, ["class"])], 10, _hoisted_3$9)) : (0, vue.createCommentVNode)("v-if", true)], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.unref)(rendered) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + id: (0, vue.unref)(bodyId), + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("body"), __props.bodyClass]) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_4$7)) : (0, vue.createCommentVNode)("v-if", true), + _ctx.$slots.footer ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 2, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("footer"), __props.footerClass]) + }, [(0, vue.renderSlot)(_ctx.$slots, "footer")], 2)) : (0, vue.createCommentVNode)("v-if", true), + __props.resizable ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 3, + ref_key: "draggerRef", + ref: draggerRef, + style: (0, vue.normalizeStyle)({ zIndex: (0, vue.unref)(zIndex) }), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("dragger")) + }, null, 6)) : (0, vue.createCommentVNode)("v-if", true) + ], 16, _hoisted_1$40)]), + _: 3 + }, 8, [ + "trapped", + "focus-trap-el", + "focus-start-el", + "onFocusAfterTrapped", + "onFocusAfterReleased", + "onFocusoutPrevented", + "onReleaseRequested" + ])]), + _: 3 + }, 8, [ + "mask", + "overlay-class", + "z-index", + "onClick" + ]), [[vue.vShow, (0, vue.unref)(visible)]])]), + _: 3 + }, 8, [ + "name", + "onAfterEnter", + "onAfterLeave", + "onBeforeLeave" + ])]), + _: 3 + }, 8, ["to", "disabled"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/drawer/src/drawer.vue + var drawer_default = drawer_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/drawer/index.ts + const ElDrawer = withInstall(drawer_default); + +//#endregion +//#region ../../packages/components/collection/src/collection.vue?vue&type=script&lang.ts + var collection_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ inheritAttrs: false }); + +//#endregion +//#region ../../packages/components/collection/src/collection.vue + function _sfc_render$16(_ctx, _cache, $props, $setup, $data, $options) { + return (0, vue.renderSlot)(_ctx.$slots, "default"); + } + var collection_default = /* @__PURE__ */ _plugin_vue_export_helper_default(collection_vue_vue_type_script_lang_default, [["render", _sfc_render$16]]); + +//#endregion +//#region ../../packages/components/collection/src/collection-item.vue?vue&type=script&lang.ts + var collection_item_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElCollectionItem", + inheritAttrs: false + }); + +//#endregion +//#region ../../packages/components/collection/src/collection-item.vue + function _sfc_render$15(_ctx, _cache, $props, $setup, $data, $options) { + return (0, vue.renderSlot)(_ctx.$slots, "default"); + } + var collection_item_default = /* @__PURE__ */ _plugin_vue_export_helper_default(collection_item_vue_vue_type_script_lang_default, [["render", _sfc_render$15]]); + +//#endregion +//#region ../../packages/components/collection/src/collection.ts + const COLLECTION_ITEM_SIGN = `data-el-collection-item`; + const createCollectionWithScope = (name) => { + const COLLECTION_NAME = `El${name}Collection`; + const COLLECTION_ITEM_NAME = `${COLLECTION_NAME}Item`; + const COLLECTION_INJECTION_KEY = Symbol(COLLECTION_NAME); + const COLLECTION_ITEM_INJECTION_KEY = Symbol(COLLECTION_ITEM_NAME); + return { + COLLECTION_INJECTION_KEY, + COLLECTION_ITEM_INJECTION_KEY, + ElCollection: Object.assign({}, collection_default, { + name: COLLECTION_NAME, + setup() { + const collectionRef = (0, vue.ref)(); + const itemMap = /* @__PURE__ */ new Map(); + const getItems = (() => { + const collectionEl = (0, vue.unref)(collectionRef); + if (!collectionEl) return []; + const orderedNodes = Array.from(collectionEl.querySelectorAll(`[${COLLECTION_ITEM_SIGN}]`)); + return [...itemMap.values()].sort((a, b) => orderedNodes.indexOf(a.ref) - orderedNodes.indexOf(b.ref)); + }); + (0, vue.provide)(COLLECTION_INJECTION_KEY, { + itemMap, + getItems, + collectionRef + }); + } + }), + ElCollectionItem: Object.assign({}, collection_item_default, { + name: COLLECTION_ITEM_NAME, + setup(_, { attrs }) { + const collectionItemRef = (0, vue.ref)(); + const collectionInjection = (0, vue.inject)(COLLECTION_INJECTION_KEY, void 0); + (0, vue.provide)(COLLECTION_ITEM_INJECTION_KEY, { collectionItemRef }); + (0, vue.onMounted)(() => { + const collectionItemEl = (0, vue.unref)(collectionItemRef); + if (collectionItemEl) collectionInjection.itemMap.set(collectionItemEl, { + ref: collectionItemEl, + ...attrs + }); + }); + (0, vue.onBeforeUnmount)(() => { + const collectionItemEl = (0, vue.unref)(collectionItemRef); + collectionInjection.itemMap.delete(collectionItemEl); + }); + } + }) + }; + }; + +//#endregion +//#region ../../packages/components/roving-focus-group/src/roving-focus-group.ts + const rovingFocusGroupProps = buildProps({ + style: { type: definePropType([ + String, + Array, + Object + ]) }, + currentTabId: { type: definePropType(String) }, + defaultCurrentTabId: String, + loop: Boolean, + dir: { + type: String, + values: ["ltr", "rtl"], + default: "ltr" + }, + orientation: { type: definePropType(String) }, + onBlur: Function, + onFocus: Function, + onMousedown: Function + }); + const { ElCollection, ElCollectionItem, COLLECTION_INJECTION_KEY, COLLECTION_ITEM_INJECTION_KEY } = createCollectionWithScope("RovingFocusGroup"); + +//#endregion +//#region ../../packages/components/roving-focus-group/src/tokens.ts + const ROVING_FOCUS_GROUP_INJECTION_KEY = Symbol("elRovingFocusGroup"); + const ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY = Symbol("elRovingFocusGroupItem"); + +//#endregion +//#region ../../packages/components/roving-focus-group/src/utils.ts + const MAP_KEY_TO_FOCUS_INTENT = { + ArrowLeft: "prev", + ArrowUp: "prev", + ArrowRight: "next", + ArrowDown: "next", + PageUp: "first", + Home: "first", + PageDown: "last", + End: "last" + }; + const getDirectionAwareKey = (key, dir) => { + if (dir !== "rtl") return key; + switch (key) { + case EVENT_CODE.right: return EVENT_CODE.left; + case EVENT_CODE.left: return EVENT_CODE.right; + default: return key; + } + }; + const getFocusIntent = (event, orientation, dir) => { + const key = getDirectionAwareKey(getEventCode(event), dir); + if (orientation === "vertical" && [EVENT_CODE.left, EVENT_CODE.right].includes(key)) return void 0; + if (orientation === "horizontal" && [EVENT_CODE.up, EVENT_CODE.down].includes(key)) return void 0; + return MAP_KEY_TO_FOCUS_INTENT[key]; + }; + const reorderArray = (array, atIdx) => { + return array.map((_, idx) => array[(idx + atIdx) % array.length]); + }; + const focusFirst = (elements) => { + const { activeElement: prevActive } = document; + for (const element of elements) { + if (element === prevActive) return; + element.focus(); + if (prevActive !== document.activeElement) return; + } + }; + +//#endregion +//#region ../../packages/components/roving-focus-group/src/roving-focus-group-impl.vue?vue&type=script&lang.ts + const CURRENT_TAB_ID_CHANGE_EVT = "currentTabIdChange"; + const ENTRY_FOCUS_EVT = "rovingFocusGroup.entryFocus"; + const EVT_OPTS = { + bubbles: false, + cancelable: true + }; + var roving_focus_group_impl_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElRovingFocusGroupImpl", + inheritAttrs: false, + props: rovingFocusGroupProps, + emits: [CURRENT_TAB_ID_CHANGE_EVT, "entryFocus"], + setup(props, { emit }) { + const currentTabbedId = (0, vue.ref)((props.currentTabId || props.defaultCurrentTabId) ?? null); + const isBackingOut = (0, vue.ref)(false); + const isClickFocus = (0, vue.ref)(false); + const rovingFocusGroupRef = (0, vue.ref)(); + const { getItems } = (0, vue.inject)(COLLECTION_INJECTION_KEY, void 0); + const rovingFocusGroupRootStyle = (0, vue.computed)(() => { + return [{ outline: "none" }, props.style]; + }); + const onItemFocus = (tabbedId) => { + emit(CURRENT_TAB_ID_CHANGE_EVT, tabbedId); + }; + const onItemShiftTab = () => { + isBackingOut.value = true; + }; + const onMousedown = composeEventHandlers((e) => { + props.onMousedown?.(e); + }, () => { + isClickFocus.value = true; + }); + const onFocus = composeEventHandlers((e) => { + props.onFocus?.(e); + }, (e) => { + const isKeyboardFocus = !(0, vue.unref)(isClickFocus); + const { target, currentTarget } = e; + if (target === currentTarget && isKeyboardFocus && !(0, vue.unref)(isBackingOut)) { + const entryFocusEvt = new Event(ENTRY_FOCUS_EVT, EVT_OPTS); + currentTarget?.dispatchEvent(entryFocusEvt); + if (!entryFocusEvt.defaultPrevented) { + const items = getItems().filter((item) => item.focusable); + focusFirst([ + items.find((item) => item.active), + items.find((item) => item.id === (0, vue.unref)(currentTabbedId)), + ...items + ].filter(Boolean).map((item) => item.ref)); + } + } + isClickFocus.value = false; + }); + const onBlur = composeEventHandlers((e) => { + props.onBlur?.(e); + }, () => { + isBackingOut.value = false; + }); + const handleEntryFocus = (...args) => { + emit("entryFocus", ...args); + }; + const onKeydown = (e) => { + const focusIntent = getFocusIntent(e); + if (focusIntent) { + e.preventDefault(); + let elements = getItems().filter((item) => item.focusable).map((item) => item.ref); + switch (focusIntent) { + case "last": + elements.reverse(); + break; + case "prev": + case "next": { + if (focusIntent === "prev") elements.reverse(); + const currentIdx = elements.indexOf(e.currentTarget); + elements = props.loop ? reorderArray(elements, currentIdx + 1) : elements.slice(currentIdx + 1); + break; + } + default: break; + } + (0, vue.nextTick)(() => { + focusFirst(elements); + }); + } + }; + (0, vue.provide)(ROVING_FOCUS_GROUP_INJECTION_KEY, { + currentTabbedId: (0, vue.readonly)(currentTabbedId), + loop: (0, vue.toRef)(props, "loop"), + tabIndex: (0, vue.computed)(() => { + return (0, vue.unref)(isBackingOut) ? -1 : 0; + }), + rovingFocusGroupRef, + rovingFocusGroupRootStyle, + orientation: (0, vue.toRef)(props, "orientation"), + dir: (0, vue.toRef)(props, "dir"), + onItemFocus, + onItemShiftTab, + onBlur, + onFocus, + onMousedown, + onKeydown + }); + (0, vue.watch)(() => props.currentTabId, (val) => { + currentTabbedId.value = val ?? null; + }); + useEventListener(rovingFocusGroupRef, ENTRY_FOCUS_EVT, handleEntryFocus); + } + }); + +//#endregion +//#region ../../packages/components/roving-focus-group/src/roving-focus-group-impl.vue + function _sfc_render$14(_ctx, _cache, $props, $setup, $data, $options) { + return (0, vue.renderSlot)(_ctx.$slots, "default"); + } + var roving_focus_group_impl_default = /* @__PURE__ */ _plugin_vue_export_helper_default(roving_focus_group_impl_vue_vue_type_script_lang_default, [["render", _sfc_render$14]]); + +//#endregion +//#region ../../packages/components/roving-focus-group/src/roving-focus-group.vue?vue&type=script&lang.ts + var roving_focus_group_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElRovingFocusGroup", + components: { + ElFocusGroupCollection: ElCollection, + ElRovingFocusGroupImpl: roving_focus_group_impl_default + } + }); + +//#endregion +//#region ../../packages/components/roving-focus-group/src/roving-focus-group.vue + function _sfc_render$13(_ctx, _cache, $props, $setup, $data, $options) { + const _component_el_roving_focus_group_impl = (0, vue.resolveComponent)("el-roving-focus-group-impl"); + const _component_el_focus_group_collection = (0, vue.resolveComponent)("el-focus-group-collection"); + return (0, vue.openBlock)(), (0, vue.createBlock)(_component_el_focus_group_collection, null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)(_component_el_roving_focus_group_impl, (0, vue.normalizeProps)((0, vue.guardReactiveProps)(_ctx.$attrs)), { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 16)]), + _: 3 + }); + } + var roving_focus_group_default$1 = /* @__PURE__ */ _plugin_vue_export_helper_default(roving_focus_group_vue_vue_type_script_lang_default, [["render", _sfc_render$13]]); + +//#endregion +//#region ../../packages/components/roving-focus-group/src/roving-focus-item.vue?vue&type=script&lang.ts + var roving_focus_item_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + components: { ElRovingFocusCollectionItem: ElCollectionItem }, + props: { + focusable: { + type: Boolean, + default: true + }, + active: Boolean + }, + emits: [ + "mousedown", + "focus", + "keydown" + ], + setup(props, { emit }) { + const { currentTabbedId, onItemFocus, onItemShiftTab, onKeydown } = (0, vue.inject)(ROVING_FOCUS_GROUP_INJECTION_KEY, void 0); + const id = useId(); + const rovingFocusGroupItemRef = (0, vue.ref)(); + const handleMousedown = composeEventHandlers((e) => { + emit("mousedown", e); + }, (e) => { + if (!props.focusable) e.preventDefault(); + else onItemFocus((0, vue.unref)(id)); + }); + const handleFocus = composeEventHandlers((e) => { + emit("focus", e); + }, () => { + onItemFocus((0, vue.unref)(id)); + }); + const handleKeydown = composeEventHandlers((e) => { + emit("keydown", e); + }, (e) => { + const { shiftKey, target, currentTarget } = e; + if (getEventCode(e) === EVENT_CODE.tab && shiftKey) { + onItemShiftTab(); + return; + } + if (target !== currentTarget) return; + onKeydown(e); + }); + const isCurrentTab = (0, vue.computed)(() => currentTabbedId.value === (0, vue.unref)(id)); + (0, vue.provide)(ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, { + rovingFocusGroupItemRef, + tabIndex: (0, vue.computed)(() => (0, vue.unref)(isCurrentTab) ? 0 : -1), + handleMousedown, + handleFocus, + handleKeydown + }); + return { + id, + handleKeydown, + handleFocus, + handleMousedown + }; + } + }); + +//#endregion +//#region ../../packages/components/roving-focus-group/src/roving-focus-item.vue + function _sfc_render$12(_ctx, _cache, $props, $setup, $data, $options) { + const _component_el_roving_focus_collection_item = (0, vue.resolveComponent)("el-roving-focus-collection-item"); + return (0, vue.openBlock)(), (0, vue.createBlock)(_component_el_roving_focus_collection_item, { + id: _ctx.id, + focusable: _ctx.focusable, + active: _ctx.active + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 8, [ + "id", + "focusable", + "active" + ]); + } + var roving_focus_item_default = /* @__PURE__ */ _plugin_vue_export_helper_default(roving_focus_item_vue_vue_type_script_lang_default, [["render", _sfc_render$12]]); + +//#endregion +//#region ../../packages/components/roving-focus-group/index.ts + var roving_focus_group_default = roving_focus_group_default$1; + +//#endregion +//#region ../../packages/components/dropdown/src/dropdown.ts + const dropdownProps = buildProps({ + trigger: { + ...useTooltipTriggerProps.trigger, + type: definePropType([String, Array]) + }, + triggerKeys: { + type: definePropType(Array), + default: () => [ + EVENT_CODE.enter, + EVENT_CODE.numpadEnter, + EVENT_CODE.space, + EVENT_CODE.down + ] + }, + virtualTriggering: useTooltipTriggerProps.virtualTriggering, + virtualRef: useTooltipTriggerProps.virtualRef, + effect: { + ...useTooltipContentProps.effect, + default: "light" + }, + type: { type: definePropType(String) }, + placement: { + type: definePropType(String), + default: "bottom" + }, + popperOptions: { + type: definePropType(Object), + default: () => ({}) + }, + id: String, + size: { + type: String, + default: "" + }, + splitButton: Boolean, + hideOnClick: { + type: Boolean, + default: true + }, + loop: { + type: Boolean, + default: true + }, + showArrow: { + type: Boolean, + default: true + }, + showTimeout: { + type: Number, + default: 150 + }, + hideTimeout: { + type: Number, + default: 150 + }, + tabindex: { + type: definePropType([Number, String]), + default: 0 + }, + maxHeight: { + type: definePropType([Number, String]), + default: "" + }, + popperClass: useTooltipContentProps.popperClass, + popperStyle: useTooltipContentProps.popperStyle, + disabled: Boolean, + role: { + type: String, + values: roleTypes, + default: "menu" + }, + buttonProps: { type: definePropType(Object) }, + teleported: useTooltipContentProps.teleported, + appendTo: useTooltipContentProps.appendTo, + persistent: { + type: Boolean, + default: true + } + }); + const dropdownItemProps = buildProps({ + command: { + type: [ + Object, + String, + Number + ], + default: () => ({}) + }, + disabled: Boolean, + divided: Boolean, + textValue: String, + icon: { type: iconPropType } + }); + const dropdownMenuProps = buildProps({ onKeydown: { type: definePropType(Function) } }); + const FIRST_KEYS = [ + EVENT_CODE.down, + EVENT_CODE.pageDown, + EVENT_CODE.home + ]; + const LAST_KEYS = [ + EVENT_CODE.up, + EVENT_CODE.pageUp, + EVENT_CODE.end + ]; + const FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS]; + +//#endregion +//#region ../../packages/components/dropdown/src/tokens.ts + const DROPDOWN_INJECTION_KEY = Symbol("elDropdown"); + const DROPDOWN_INSTANCE_INJECTION_KEY = "elDropdown"; + +//#endregion +//#region ../../packages/components/dropdown/src/dropdown.vue?vue&type=script&lang.ts + const { ButtonGroup: ElButtonGroup$1 } = ElButton; + var dropdown_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElDropdown", + components: { + ElButton, + ElButtonGroup: ElButtonGroup$1, + ElScrollbar, + ElTooltip, + ElRovingFocusGroup: roving_focus_group_default, + ElOnlyChild: OnlyChild, + ElIcon, + ArrowDown: arrow_down_default + }, + props: dropdownProps, + emits: [ + "visible-change", + "click", + "command" + ], + setup(props, { emit }) { + const _instance = (0, vue.getCurrentInstance)(); + const ns = useNamespace("dropdown"); + const { t } = useLocale(); + const triggeringElementRef = (0, vue.ref)(); + const referenceElementRef = (0, vue.ref)(); + const popperRef = (0, vue.ref)(); + const contentRef = (0, vue.ref)(); + const scrollbar = (0, vue.ref)(null); + const currentTabId = (0, vue.ref)(null); + const isUsingKeyboard = (0, vue.ref)(false); + const wrapStyle = (0, vue.computed)(() => ({ maxHeight: addUnit(props.maxHeight) })); + const dropdownTriggerKls = (0, vue.computed)(() => [ns.m(dropdownSize.value)]); + const trigger = (0, vue.computed)(() => castArray$1(props.trigger)); + const defaultTriggerId = useId().value; + const triggerId = (0, vue.computed)(() => props.id || defaultTriggerId); + function handleClick() { + popperRef.value?.onClose(void 0, 0); + } + function handleClose() { + popperRef.value?.onClose(); + } + function handleOpen() { + popperRef.value?.onOpen(); + } + const dropdownSize = useFormSize(); + function commandHandler(...args) { + emit("command", ...args); + } + function onItemEnter() {} + function onItemLeave() { + const contentEl = (0, vue.unref)(contentRef); + trigger.value.includes("hover") && contentEl?.focus({ preventScroll: true }); + currentTabId.value = null; + } + function handleCurrentTabIdChange(id) { + currentTabId.value = id; + } + function handleBeforeShowTooltip() { + emit("visible-change", true); + } + function handleShowTooltip(event) { + isUsingKeyboard.value = event?.type === "keydown"; + contentRef.value?.focus(); + } + function handleBeforeHideTooltip() { + emit("visible-change", false); + } + (0, vue.provide)(DROPDOWN_INJECTION_KEY, { + contentRef, + role: (0, vue.computed)(() => props.role), + triggerId, + isUsingKeyboard, + onItemEnter, + onItemLeave, + handleClose + }); + (0, vue.provide)(DROPDOWN_INSTANCE_INJECTION_KEY, { + instance: _instance, + dropdownSize, + handleClick, + commandHandler, + trigger: (0, vue.toRef)(props, "trigger"), + hideOnClick: (0, vue.toRef)(props, "hideOnClick") + }); + const handlerMainButtonClick = (event) => { + emit("click", event); + }; + return { + t, + ns, + scrollbar, + wrapStyle, + dropdownTriggerKls, + dropdownSize, + triggerId, + currentTabId, + handleCurrentTabIdChange, + handlerMainButtonClick, + handleClose, + handleOpen, + handleBeforeShowTooltip, + handleShowTooltip, + handleBeforeHideTooltip, + popperRef, + contentRef, + triggeringElementRef, + referenceElementRef + }; + } + }); + +//#endregion +//#region ../../packages/components/dropdown/src/dropdown.vue + function _sfc_render$11(_ctx, _cache, $props, $setup, $data, $options) { + const _component_el_roving_focus_group = (0, vue.resolveComponent)("el-roving-focus-group"); + const _component_el_scrollbar = (0, vue.resolveComponent)("el-scrollbar"); + const _component_el_only_child = (0, vue.resolveComponent)("el-only-child"); + const _component_el_tooltip = (0, vue.resolveComponent)("el-tooltip"); + const _component_el_button = (0, vue.resolveComponent)("el-button"); + const _component_arrow_down = (0, vue.resolveComponent)("arrow-down"); + const _component_el_icon = (0, vue.resolveComponent)("el-icon"); + const _component_el_button_group = (0, vue.resolveComponent)("el-button-group"); + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)([_ctx.ns.b(), _ctx.ns.is("disabled", _ctx.disabled)]) }, [(0, vue.createVNode)(_component_el_tooltip, { + ref: "popperRef", + role: _ctx.role, + effect: _ctx.effect, + "fallback-placements": ["bottom", "top"], + "popper-options": _ctx.popperOptions, + "gpu-acceleration": false, + placement: _ctx.placement, + "popper-class": [_ctx.ns.e("popper"), _ctx.popperClass], + "popper-style": _ctx.popperStyle, + trigger: _ctx.trigger, + "trigger-keys": _ctx.triggerKeys, + "trigger-target-el": _ctx.contentRef, + "show-arrow": _ctx.showArrow, + "show-after": _ctx.trigger === "hover" ? _ctx.showTimeout : 0, + "hide-after": _ctx.trigger === "hover" ? _ctx.hideTimeout : 0, + "virtual-ref": _ctx.virtualRef ?? _ctx.triggeringElementRef, + "virtual-triggering": _ctx.virtualTriggering || _ctx.splitButton, + disabled: _ctx.disabled, + transition: `${_ctx.ns.namespace.value}-zoom-in-top`, + teleported: _ctx.teleported, + "append-to": _ctx.appendTo, + pure: "", + "focus-on-target": "", + persistent: _ctx.persistent, + onBeforeShow: _ctx.handleBeforeShowTooltip, + onShow: _ctx.handleShowTooltip, + onBeforeHide: _ctx.handleBeforeHideTooltip + }, (0, vue.createSlots)({ + content: (0, vue.withCtx)(() => [(0, vue.createVNode)(_component_el_scrollbar, { + ref: "scrollbar", + "wrap-style": _ctx.wrapStyle, + tag: "div", + "view-class": _ctx.ns.e("list") + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)(_component_el_roving_focus_group, { + loop: _ctx.loop, + "current-tab-id": _ctx.currentTabId, + orientation: "horizontal", + onCurrentTabIdChange: _ctx.handleCurrentTabIdChange + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "dropdown")]), + _: 3 + }, 8, [ + "loop", + "current-tab-id", + "onCurrentTabIdChange" + ])]), + _: 3 + }, 8, ["wrap-style", "view-class"])]), + _: 2 + }, [!_ctx.splitButton ? { + name: "default", + fn: (0, vue.withCtx)(() => [(0, vue.createVNode)(_component_el_only_child, { + id: _ctx.triggerId, + ref: "triggeringElementRef", + role: "button", + tabindex: _ctx.tabindex + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 8, ["id", "tabindex"])]), + key: "0" + } : void 0]), 1032, [ + "role", + "effect", + "popper-options", + "placement", + "popper-class", + "popper-style", + "trigger", + "trigger-keys", + "trigger-target-el", + "show-arrow", + "show-after", + "hide-after", + "virtual-ref", + "virtual-triggering", + "disabled", + "transition", + "teleported", + "append-to", + "persistent", + "onBeforeShow", + "onShow", + "onBeforeHide" + ]), _ctx.splitButton ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_button_group, { key: 0 }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)(_component_el_button, (0, vue.mergeProps)({ ref: "referenceElementRef" }, _ctx.buttonProps, { + size: _ctx.dropdownSize, + type: _ctx.type, + disabled: _ctx.disabled, + tabindex: _ctx.tabindex, + onClick: _ctx.handlerMainButtonClick + }), { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 16, [ + "size", + "type", + "disabled", + "tabindex", + "onClick" + ]), (0, vue.createVNode)(_component_el_button, (0, vue.mergeProps)({ + id: _ctx.triggerId, + ref: "triggeringElementRef" + }, _ctx.buttonProps, { + role: "button", + size: _ctx.dropdownSize, + type: _ctx.type, + class: _ctx.ns.e("caret-button"), + disabled: _ctx.disabled, + tabindex: _ctx.tabindex, + "aria-label": _ctx.t("el.dropdown.toggleDropdown") + }), { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)(_component_el_icon, { class: (0, vue.normalizeClass)(_ctx.ns.e("icon")) }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)(_component_arrow_down)]), + _: 1 + }, 8, ["class"])]), + _: 1 + }, 16, [ + "id", + "size", + "type", + "class", + "disabled", + "tabindex", + "aria-label" + ])]), + _: 3 + })) : (0, vue.createCommentVNode)("v-if", true)], 2); + } + var dropdown_default = /* @__PURE__ */ _plugin_vue_export_helper_default(dropdown_vue_vue_type_script_lang_default, [["render", _sfc_render$11]]); + +//#endregion +//#region ../../packages/components/dropdown/src/dropdown-item-impl.vue?vue&type=script&lang.ts + var dropdown_item_impl_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "DropdownItemImpl", + components: { ElIcon }, + props: dropdownItemProps, + emits: [ + "pointermove", + "pointerleave", + "click", + "clickimpl" + ], + setup(_, { emit }) { + const ns = useNamespace("dropdown"); + const { role: menuRole } = (0, vue.inject)(DROPDOWN_INJECTION_KEY, void 0); + const { collectionItemRef: rovingFocusCollectionItemRef } = (0, vue.inject)(COLLECTION_ITEM_INJECTION_KEY, void 0); + const { rovingFocusGroupItemRef, tabIndex, handleFocus, handleKeydown: handleItemKeydown, handleMousedown } = (0, vue.inject)(ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, void 0); + const itemRef = composeRefs(rovingFocusCollectionItemRef, rovingFocusGroupItemRef); + const role = (0, vue.computed)(() => { + if (menuRole.value === "menu") return "menuitem"; + else if (menuRole.value === "navigation") return "link"; + return "button"; + }); + const handleKeydown = composeEventHandlers((e) => { + const code = getEventCode(e); + if ([ + EVENT_CODE.enter, + EVENT_CODE.numpadEnter, + EVENT_CODE.space + ].includes(code)) { + e.preventDefault(); + e.stopImmediatePropagation(); + emit("clickimpl", e); + return true; + } + }, handleItemKeydown); + return { + ns, + itemRef, + dataset: { [COLLECTION_ITEM_SIGN]: "" }, + role, + tabIndex, + handleFocus, + handleKeydown, + handleMousedown + }; + } + }); + +//#endregion +//#region ../../packages/components/dropdown/src/dropdown-item-impl.vue + const _hoisted_1$39 = [ + "aria-disabled", + "tabindex", + "role" + ]; + function _sfc_render$10(_ctx, _cache, $props, $setup, $data, $options) { + const _component_el_icon = (0, vue.resolveComponent)("el-icon"); + return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, null, [_ctx.divided ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + key: 0, + role: "separator", + class: (0, vue.normalizeClass)(_ctx.ns.bem("menu", "item", "divided")) + }, null, 2)) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createElementVNode)("li", (0, vue.mergeProps)({ ref: _ctx.itemRef }, { + ..._ctx.dataset, + ..._ctx.$attrs + }, { + "aria-disabled": _ctx.disabled, + class: [_ctx.ns.be("menu", "item"), _ctx.ns.is("disabled", _ctx.disabled)], + tabindex: _ctx.tabIndex, + role: _ctx.role, + onClick: _cache[0] || (_cache[0] = (e) => _ctx.$emit("clickimpl", e)), + onFocus: _cache[1] || (_cache[1] = (...args) => _ctx.handleFocus && _ctx.handleFocus(...args)), + onKeydown: _cache[2] || (_cache[2] = (0, vue.withModifiers)((...args) => _ctx.handleKeydown && _ctx.handleKeydown(...args), ["self"])), + onMousedown: _cache[3] || (_cache[3] = (...args) => _ctx.handleMousedown && _ctx.handleMousedown(...args)), + onPointermove: _cache[4] || (_cache[4] = (e) => _ctx.$emit("pointermove", e)), + onPointerleave: _cache[5] || (_cache[5] = (e) => _ctx.$emit("pointerleave", e)) + }), [_ctx.icon || _ctx.$slots.icon ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_icon, { key: 0 }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "icon", {}, () => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.icon)))])]), + _: 3 + })) : (0, vue.createCommentVNode)("v-if", true), (0, vue.renderSlot)(_ctx.$slots, "default")], 16, _hoisted_1$39)], 64); + } + var dropdown_item_impl_default = /* @__PURE__ */ _plugin_vue_export_helper_default(dropdown_item_impl_vue_vue_type_script_lang_default, [["render", _sfc_render$10]]); + +//#endregion +//#region ../../packages/components/dropdown/src/useDropdown.ts + const useDropdown = () => { + const elDropdown = (0, vue.inject)(DROPDOWN_INSTANCE_INJECTION_KEY, {}); + return { + elDropdown, + _elDropdownSize: (0, vue.computed)(() => elDropdown?.dropdownSize) + }; + }; + +//#endregion +//#region ../../packages/components/dropdown/src/dropdown-item.vue?vue&type=script&lang.ts + var dropdown_item_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElDropdownItem", + components: { + ElRovingFocusItem: roving_focus_item_default, + ElDropdownItemImpl: dropdown_item_impl_default + }, + inheritAttrs: false, + props: dropdownItemProps, + emits: [ + "pointermove", + "pointerleave", + "click" + ], + setup(props, { emit, attrs }) { + const { elDropdown } = useDropdown(); + const _instance = (0, vue.getCurrentInstance)(); + const { onItemEnter, onItemLeave } = (0, vue.inject)(DROPDOWN_INJECTION_KEY, void 0); + const handlePointerMove = composeEventHandlers((e) => { + emit("pointermove", e); + return e.defaultPrevented; + }, whenMouse((e) => { + if (props.disabled) { + onItemLeave(e); + return; + } + const target = e.currentTarget; + /** + * This handles the following scenario: + * when the item contains a form element such as input element + * when the mouse is moving over the element itself which is contained by + * the item, the default focusing logic should be prevented so that + * it won't cause weird action. + */ + if (target === document.activeElement || target.contains(document.activeElement)) return; + onItemEnter(e); + if (!e.defaultPrevented) target?.focus({ preventScroll: true }); + })); + const handlePointerLeave = composeEventHandlers((e) => { + emit("pointerleave", e); + return e.defaultPrevented; + }, whenMouse(onItemLeave)); + return { + handleClick: composeEventHandlers((e) => { + if (props.disabled) return; + emit("click", e); + return e.type !== "keydown" && e.defaultPrevented; + }, (e) => { + if (props.disabled) { + e.stopImmediatePropagation(); + return; + } + if (elDropdown?.hideOnClick?.value) elDropdown.handleClick?.(); + elDropdown.commandHandler?.(props.command, _instance, e); + }), + handlePointerMove, + handlePointerLeave, + propsAndAttrs: (0, vue.computed)(() => ({ + ...props, + ...attrs + })) + }; + } + }); + +//#endregion +//#region ../../packages/components/dropdown/src/dropdown-item.vue + function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) { + const _component_el_dropdown_item_impl = (0, vue.resolveComponent)("el-dropdown-item-impl"); + const _component_el_roving_focus_item = (0, vue.resolveComponent)("el-roving-focus-item"); + return (0, vue.openBlock)(), (0, vue.createBlock)(_component_el_roving_focus_item, { focusable: !_ctx.disabled }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)(_component_el_dropdown_item_impl, (0, vue.mergeProps)(_ctx.propsAndAttrs, { + onPointerleave: _ctx.handlePointerLeave, + onPointermove: _ctx.handlePointerMove, + onClickimpl: _ctx.handleClick + }), (0, vue.createSlots)({ + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 2 + }, [_ctx.$slots.icon ? { + name: "icon", + fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "icon")]), + key: "0" + } : void 0]), 1040, [ + "onPointerleave", + "onPointermove", + "onClickimpl" + ])]), + _: 3 + }, 8, ["focusable"]); + } + var dropdown_item_default = /* @__PURE__ */ _plugin_vue_export_helper_default(dropdown_item_vue_vue_type_script_lang_default, [["render", _sfc_render$9]]); + +//#endregion +//#region ../../packages/components/dropdown/src/dropdown-menu.vue?vue&type=script&lang.ts + var dropdown_menu_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElDropdownMenu", + props: dropdownMenuProps, + setup(props) { + const ns = useNamespace("dropdown"); + const { _elDropdownSize } = useDropdown(); + const size = _elDropdownSize.value; + const { contentRef, role, triggerId, isUsingKeyboard, handleClose } = (0, vue.inject)(DROPDOWN_INJECTION_KEY, void 0); + const { rovingFocusGroupRef, rovingFocusGroupRootStyle, onBlur, onFocus, onKeydown, onMousedown } = (0, vue.inject)(ROVING_FOCUS_GROUP_INJECTION_KEY, void 0); + const { collectionRef: rovingFocusGroupCollectionRef } = (0, vue.inject)(COLLECTION_INJECTION_KEY, void 0); + const dropdownKls = (0, vue.computed)(() => { + return [ns.b("menu"), ns.bm("menu", size?.value)]; + }); + const dropdownListWrapperRef = composeRefs(contentRef, rovingFocusGroupRef, rovingFocusGroupCollectionRef); + const handleKeydown = composeEventHandlers((e) => { + props.onKeydown?.(e); + }, (e) => { + const { currentTarget, target } = e; + const code = getEventCode(e); + if (currentTarget.contains(target)) {} + if (EVENT_CODE.tab === code) return handleClose(); + onKeydown(e); + }); + function handleFocus(e) { + isUsingKeyboard.value && onFocus(e); + } + return { + size, + rovingFocusGroupRootStyle, + dropdownKls, + role, + triggerId, + dropdownListWrapperRef, + handleKeydown, + onBlur, + handleFocus, + onMousedown + }; + } + }); + +//#endregion +//#region ../../packages/components/dropdown/src/dropdown-menu.vue + const _hoisted_1$38 = ["role", "aria-labelledby"]; + function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("ul", { + ref: _ctx.dropdownListWrapperRef, + class: (0, vue.normalizeClass)(_ctx.dropdownKls), + style: (0, vue.normalizeStyle)(_ctx.rovingFocusGroupRootStyle), + tabindex: -1, + role: _ctx.role, + "aria-labelledby": _ctx.triggerId, + onFocusin: _cache[0] || (_cache[0] = (...args) => _ctx.handleFocus && _ctx.handleFocus(...args)), + onFocusout: _cache[1] || (_cache[1] = (...args) => _ctx.onBlur && _ctx.onBlur(...args)), + onKeydown: _cache[2] || (_cache[2] = (0, vue.withModifiers)((...args) => _ctx.handleKeydown && _ctx.handleKeydown(...args), ["self"])), + onMousedown: _cache[3] || (_cache[3] = (0, vue.withModifiers)((...args) => _ctx.onMousedown && _ctx.onMousedown(...args), ["self"])) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 46, _hoisted_1$38); + } + var dropdown_menu_default = /* @__PURE__ */ _plugin_vue_export_helper_default(dropdown_menu_vue_vue_type_script_lang_default, [["render", _sfc_render$8]]); + +//#endregion +//#region ../../packages/components/dropdown/index.ts + const ElDropdown = withInstall(dropdown_default, { + DropdownItem: dropdown_item_default, + DropdownMenu: dropdown_menu_default + }); + const ElDropdownItem = withNoopInstall(dropdown_item_default); + const ElDropdownMenu = withNoopInstall(dropdown_menu_default); + +//#endregion +//#region ../../packages/components/empty/src/empty.ts +/** + * @deprecated Removed after 3.0.0, Use `EmptyProps` instead. + */ + const emptyProps = buildProps({ + image: { + type: String, + default: "" + }, + imageSize: Number, + description: { + type: String, + default: "" + } + }); + +//#endregion +//#region ../../packages/components/empty/src/img-empty.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$37 = { + viewBox: "0 0 79 86", + version: "1.1", + xmlns: "http://www.w3.org/2000/svg", + "xmlns:xlink": "http://www.w3.org/1999/xlink" + }; + const _hoisted_2$23 = ["id"]; + const _hoisted_3$8 = ["stop-color"]; + const _hoisted_4$6 = ["stop-color"]; + const _hoisted_5$4 = ["id"]; + const _hoisted_6$1 = ["stop-color"]; + const _hoisted_7 = ["stop-color"]; + const _hoisted_8 = ["id"]; + const _hoisted_9 = { + stroke: "none", + "stroke-width": "1", + fill: "none", + "fill-rule": "evenodd" + }; + const _hoisted_10 = { transform: "translate(-1268.000000, -535.000000)" }; + const _hoisted_11 = { transform: "translate(1268.000000, 535.000000)" }; + const _hoisted_12 = ["fill"]; + const _hoisted_13 = ["fill"]; + const _hoisted_14 = { transform: "translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)" }; + const _hoisted_15 = ["fill"]; + const _hoisted_16 = ["fill"]; + const _hoisted_17 = ["fill"]; + const _hoisted_18 = ["fill"]; + const _hoisted_19 = ["fill"]; + const _hoisted_20 = { transform: "translate(53.000000, 45.000000)" }; + const _hoisted_21 = ["fill", "xlink:href"]; + const _hoisted_22 = ["fill", "mask"]; + const _hoisted_23 = ["fill"]; + var img_empty_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ImgEmpty", + __name: "img-empty", + setup(__props) { + const ns = useNamespace("empty"); + const id = useId(); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_1$37, [(0, vue.createElementVNode)("defs", null, [ + (0, vue.createElementVNode)("linearGradient", { + id: `linearGradient-1-${(0, vue.unref)(id)}`, + x1: "38.8503086%", + y1: "0%", + x2: "61.1496914%", + y2: "100%" + }, [(0, vue.createElementVNode)("stop", { + "stop-color": `var(${(0, vue.unref)(ns).cssVarBlockName("fill-color-1")})`, + offset: "0%" + }, null, 8, _hoisted_3$8), (0, vue.createElementVNode)("stop", { + "stop-color": `var(${(0, vue.unref)(ns).cssVarBlockName("fill-color-4")})`, + offset: "100%" + }, null, 8, _hoisted_4$6)], 8, _hoisted_2$23), + (0, vue.createElementVNode)("linearGradient", { + id: `linearGradient-2-${(0, vue.unref)(id)}`, + x1: "0%", + y1: "9.5%", + x2: "100%", + y2: "90.5%" + }, [(0, vue.createElementVNode)("stop", { + "stop-color": `var(${(0, vue.unref)(ns).cssVarBlockName("fill-color-1")})`, + offset: "0%" + }, null, 8, _hoisted_6$1), (0, vue.createElementVNode)("stop", { + "stop-color": `var(${(0, vue.unref)(ns).cssVarBlockName("fill-color-6")})`, + offset: "100%" + }, null, 8, _hoisted_7)], 8, _hoisted_5$4), + (0, vue.createElementVNode)("rect", { + id: `path-3-${(0, vue.unref)(id)}`, + x: "0", + y: "0", + width: "17", + height: "36" + }, null, 8, _hoisted_8) + ]), (0, vue.createElementVNode)("g", _hoisted_9, [(0, vue.createElementVNode)("g", _hoisted_10, [(0, vue.createElementVNode)("g", _hoisted_11, [ + (0, vue.createElementVNode)("path", { + d: "M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z", + fill: `var(${(0, vue.unref)(ns).cssVarBlockName("fill-color-3")})` + }, null, 8, _hoisted_12), + (0, vue.createElementVNode)("polygon", { + fill: `var(${(0, vue.unref)(ns).cssVarBlockName("fill-color-7")})`, + transform: "translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ", + points: "13 58 53 58 42 45 2 45" + }, null, 8, _hoisted_13), + (0, vue.createElementVNode)("g", _hoisted_14, [ + (0, vue.createElementVNode)("polygon", { + fill: `var(${(0, vue.unref)(ns).cssVarBlockName("fill-color-7")})`, + transform: "translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ", + points: "2.84078316e-14 3 18 3 23 7 5 7" + }, null, 8, _hoisted_15), + (0, vue.createElementVNode)("polygon", { + fill: `var(${(0, vue.unref)(ns).cssVarBlockName("fill-color-5")})`, + points: "-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43" + }, null, 8, _hoisted_16), + (0, vue.createElementVNode)("rect", { + fill: `url(#linearGradient-1-${(0, vue.unref)(id)})`, + transform: "translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) ", + x: "38", + y: "7", + width: "17", + height: "36" + }, null, 8, _hoisted_17), + (0, vue.createElementVNode)("polygon", { + fill: `var(${(0, vue.unref)(ns).cssVarBlockName("fill-color-2")})`, + transform: "translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ", + points: "24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12" + }, null, 8, _hoisted_18) + ]), + (0, vue.createElementVNode)("rect", { + fill: `url(#linearGradient-2-${(0, vue.unref)(id)})`, + x: "13", + y: "45", + width: "40", + height: "36" + }, null, 8, _hoisted_19), + (0, vue.createElementVNode)("g", _hoisted_20, [(0, vue.createElementVNode)("use", { + fill: `var(${(0, vue.unref)(ns).cssVarBlockName("fill-color-8")})`, + transform: "translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ", + "xlink:href": `#path-3-${(0, vue.unref)(id)}` + }, null, 8, _hoisted_21), (0, vue.createElementVNode)("polygon", { + fill: `var(${(0, vue.unref)(ns).cssVarBlockName("fill-color-9")})`, + mask: `url(#mask-4-${(0, vue.unref)(id)})`, + transform: "translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ", + points: "7 0 24 0 20 18 7 16.5" + }, null, 8, _hoisted_22)]), + (0, vue.createElementVNode)("polygon", { + fill: `var(${(0, vue.unref)(ns).cssVarBlockName("fill-color-2")})`, + transform: "translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ", + points: "62 45 79 45 70 58 53 58" + }, null, 8, _hoisted_23) + ])])])]); + }; + } + }); + +//#endregion +//#region ../../packages/components/empty/src/img-empty.vue + var img_empty_default = img_empty_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/empty/src/empty.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$36 = ["src"]; + const _hoisted_2$22 = { key: 1 }; + var empty_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElEmpty", + __name: "empty", + props: emptyProps, + setup(__props) { + const props = __props; + const { t } = useLocale(); + const ns = useNamespace("empty"); + const emptyDescription = (0, vue.computed)(() => props.description || t("el.table.emptyText")); + const imageStyle = (0, vue.computed)(() => ({ width: addUnit(props.imageSize) })); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()) }, [ + (0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("image")), + style: (0, vue.normalizeStyle)(imageStyle.value) + }, [__props.image ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("img", { + key: 0, + src: __props.image, + ondragstart: "return false" + }, null, 8, _hoisted_1$36)) : (0, vue.renderSlot)(_ctx.$slots, "image", { key: 1 }, () => [(0, vue.createVNode)(img_empty_default)])], 6), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("description")) }, [_ctx.$slots.description ? (0, vue.renderSlot)(_ctx.$slots, "description", { key: 0 }) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("p", _hoisted_2$22, (0, vue.toDisplayString)(emptyDescription.value), 1))], 2), + _ctx.$slots.default ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("bottom")) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/empty/src/empty.vue + var empty_default = empty_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/empty/index.ts + const ElEmpty = withInstall(empty_default); + +//#endregion +//#region ../../packages/components/image/src/image.ts +/** + * @deprecated Removed after 3.0.0, Use `ImageProps` instead. + */ + const imageProps = buildProps({ + hideOnClickModal: Boolean, + src: { + type: String, + default: "" + }, + fit: { + type: String, + values: [ + "", + "contain", + "cover", + "fill", + "none", + "scale-down" + ], + default: "" + }, + loading: { + type: String, + values: ["eager", "lazy"] + }, + lazy: Boolean, + scrollContainer: { type: definePropType([String, Object]) }, + previewSrcList: { + type: definePropType(Array), + default: () => mutable([]) + }, + previewTeleported: Boolean, + zIndex: { type: Number }, + initialIndex: { + type: Number, + default: 0 + }, + infinite: { + type: Boolean, + default: true + }, + closeOnPressEscape: { + type: Boolean, + default: true + }, + zoomRate: { + type: Number, + default: 1.2 + }, + scale: { + type: Number, + default: 1 + }, + minScale: { + type: Number, + default: .2 + }, + maxScale: { + type: Number, + default: 7 + }, + showProgress: Boolean, + crossorigin: { type: definePropType(String) } + }); + const imageEmits = { + load: (evt) => evt instanceof Event, + error: (evt) => evt instanceof Event, + switch: (val) => isNumber(val), + close: () => true, + show: () => true + }; + +//#endregion +//#region ../../packages/components/image-viewer/src/image-viewer.ts +/** + * @deprecated Removed after 3.0.0, Use `ImageViewerProps` instead. + */ + const imageViewerProps = buildProps({ + urlList: { + type: definePropType(Array), + default: () => mutable([]) + }, + zIndex: { type: Number }, + initialIndex: { + type: Number, + default: 0 + }, + infinite: { + type: Boolean, + default: true + }, + hideOnClickModal: Boolean, + teleported: Boolean, + closeOnPressEscape: { + type: Boolean, + default: true + }, + zoomRate: { + type: Number, + default: 1.2 + }, + scale: { + type: Number, + default: 1 + }, + minScale: { + type: Number, + default: .2 + }, + maxScale: { + type: Number, + default: 7 + }, + showProgress: Boolean, + crossorigin: { type: definePropType(String) } + }); + const imageViewerEmits = { + close: () => true, + error: (evt) => evt instanceof Event, + switch: (index) => isNumber(index), + rotate: (deg) => isNumber(deg) + }; + +//#endregion +//#region ../../packages/components/image-viewer/src/image-viewer.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$35 = ["src", "crossorigin"]; + var image_viewer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElImageViewer", + __name: "image-viewer", + props: imageViewerProps, + emits: imageViewerEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const modes = { + CONTAIN: { + name: "contain", + icon: (0, vue.markRaw)(full_screen_default) + }, + ORIGINAL: { + name: "original", + icon: (0, vue.markRaw)(scale_to_original_default) + } + }; + const props = __props; + const emit = __emit; + let stopWheelListener; + const { t } = useLocale(); + const ns = useNamespace("image-viewer"); + const { nextZIndex } = useZIndex(); + const wrapper = (0, vue.ref)(); + const imgRef = (0, vue.ref)(); + const scopeEventListener = (0, vue.effectScope)(); + const scaleClamped = (0, vue.computed)(() => { + const { scale, minScale, maxScale } = props; + return clamp$2(scale, minScale, maxScale); + }); + const loading = (0, vue.ref)(true); + const loadError = (0, vue.ref)(false); + const visible = (0, vue.ref)(false); + const activeIndex = (0, vue.ref)(props.initialIndex); + const mode = (0, vue.shallowRef)(modes.CONTAIN); + const transform = (0, vue.ref)({ + scale: scaleClamped.value, + deg: 0, + offsetX: 0, + offsetY: 0, + enableTransition: false + }); + const zIndex = (0, vue.ref)(props.zIndex ?? nextZIndex()); + useLockscreen(visible, { ns }); + const isSingle = (0, vue.computed)(() => { + const { urlList } = props; + return urlList.length <= 1; + }); + const isFirst = (0, vue.computed)(() => activeIndex.value === 0); + const isLast = (0, vue.computed)(() => activeIndex.value === props.urlList.length - 1); + const currentImg = (0, vue.computed)(() => props.urlList[activeIndex.value]); + const arrowPrevKls = (0, vue.computed)(() => [ + ns.e("btn"), + ns.e("prev"), + ns.is("disabled", !props.infinite && isFirst.value) + ]); + const arrowNextKls = (0, vue.computed)(() => [ + ns.e("btn"), + ns.e("next"), + ns.is("disabled", !props.infinite && isLast.value) + ]); + const imgStyle = (0, vue.computed)(() => { + const { scale, deg, offsetX, offsetY, enableTransition } = transform.value; + let translateX = offsetX / scale; + let translateY = offsetY / scale; + const radian = deg * Math.PI / 180; + const cosRadian = Math.cos(radian); + const sinRadian = Math.sin(radian); + translateX = translateX * cosRadian + translateY * sinRadian; + translateY = translateY * cosRadian - offsetX / scale * sinRadian; + const style = { + transform: `scale(${scale}) rotate(${deg}deg) translate(${translateX}px, ${translateY}px)`, + transition: enableTransition ? "transform .3s" : "" + }; + if (mode.value.name === modes.CONTAIN.name) style.maxWidth = style.maxHeight = "100%"; + return style; + }); + const progress = (0, vue.computed)(() => `${activeIndex.value + 1} / ${props.urlList.length}`); + function hide() { + unregisterEventListener(); + stopWheelListener?.(); + visible.value = false; + emit("close"); + } + function registerEventListener() { + const keydownHandler = throttle((e) => { + switch (getEventCode(e)) { + case EVENT_CODE.esc: + props.closeOnPressEscape && hide(); + break; + case EVENT_CODE.space: + toggleMode(); + break; + case EVENT_CODE.left: + prev(); + break; + case EVENT_CODE.up: + handleActions("zoomIn"); + break; + case EVENT_CODE.right: + next(); + break; + case EVENT_CODE.down: + handleActions("zoomOut"); + break; + } + }); + const mousewheelHandler = throttle((e) => { + handleActions((e.deltaY || e.deltaX) < 0 ? "zoomIn" : "zoomOut", { + zoomRate: props.zoomRate, + enableTransition: false + }); + }); + scopeEventListener.run(() => { + useEventListener(document, "keydown", keydownHandler); + useEventListener(wrapper, "wheel", mousewheelHandler); + }); + } + function unregisterEventListener() { + scopeEventListener.stop(); + } + function handleImgLoad() { + loading.value = false; + } + function handleImgError(e) { + loadError.value = true; + loading.value = false; + emit("error", e); + e.target.alt = t("el.image.error"); + } + function handleMouseDown(e) { + if (loading.value || e.button !== 0 || !wrapper.value) return; + transform.value.enableTransition = false; + const { offsetX, offsetY } = transform.value; + const startX = e.pageX; + const startY = e.pageY; + const dragHandler = throttle((ev) => { + transform.value = { + ...transform.value, + offsetX: offsetX + ev.pageX - startX, + offsetY: offsetY + ev.pageY - startY + }; + }); + const removeMousemove = useEventListener(document, "mousemove", dragHandler); + const removeMouseup = useEventListener(document, "mouseup", () => { + removeMousemove(); + removeMouseup(); + }); + e.preventDefault(); + } + function handleTouchStart(e) { + if (loading.value || !wrapper.value || e.touches.length !== 1) return; + transform.value.enableTransition = false; + const { offsetX, offsetY } = transform.value; + const { pageX: startX, pageY: startY } = e.touches[0]; + const dragHandler = throttle((ev) => { + const targetTouch = ev.touches[0]; + transform.value = { + ...transform.value, + offsetX: offsetX + targetTouch.pageX - startX, + offsetY: offsetY + targetTouch.pageY - startY + }; + }); + const removeTouchmove = useEventListener(document, "touchmove", dragHandler); + const removeTouchend = useEventListener(document, "touchend", () => { + removeTouchmove(); + removeTouchend(); + }); + e.preventDefault(); + } + function reset() { + transform.value = { + scale: scaleClamped.value, + deg: 0, + offsetX: 0, + offsetY: 0, + enableTransition: false + }; + } + function toggleMode() { + if (loading.value || loadError.value) return; + const modeNames = keysOf(modes); + const modeValues = Object.values(modes); + const currentMode = mode.value.name; + mode.value = modes[modeNames[(modeValues.findIndex((i) => i.name === currentMode) + 1) % modeNames.length]]; + reset(); + } + function setActiveItem(index) { + loadError.value = false; + const len = props.urlList.length; + activeIndex.value = (index + len) % len; + } + function prev() { + if (isFirst.value && !props.infinite) return; + setActiveItem(activeIndex.value - 1); + } + function next() { + if (isLast.value && !props.infinite) return; + setActiveItem(activeIndex.value + 1); + } + function handleActions(action, options = {}) { + if (loading.value || loadError.value) return; + const { minScale, maxScale } = props; + const { zoomRate, rotateDeg, enableTransition } = { + zoomRate: props.zoomRate, + rotateDeg: 90, + enableTransition: true, + ...options + }; + switch (action) { + case "zoomOut": + if (transform.value.scale > minScale) transform.value.scale = Number.parseFloat((transform.value.scale / zoomRate).toFixed(3)); + break; + case "zoomIn": + if (transform.value.scale < maxScale) transform.value.scale = Number.parseFloat((transform.value.scale * zoomRate).toFixed(3)); + break; + case "clockwise": + transform.value.deg += rotateDeg; + emit("rotate", transform.value.deg); + break; + case "anticlockwise": + transform.value.deg -= rotateDeg; + emit("rotate", transform.value.deg); + break; + } + transform.value.enableTransition = enableTransition; + } + function onFocusoutPrevented(event) { + if (event.detail?.focusReason === "pointer") event.preventDefault(); + } + function onCloseRequested() { + if (props.closeOnPressEscape) hide(); + } + function wheelHandler(e) { + if (!e.ctrlKey) return; + if (e.deltaY < 0) { + e.preventDefault(); + return false; + } else if (e.deltaY > 0) { + e.preventDefault(); + return false; + } + } + (0, vue.watch)(() => scaleClamped.value, (val) => { + transform.value.scale = val; + }); + (0, vue.watch)(currentImg, () => { + (0, vue.nextTick)(() => { + if (!imgRef.value?.complete) loading.value = true; + }); + }); + (0, vue.watch)(activeIndex, (val) => { + reset(); + emit("switch", val); + }); + (0, vue.onMounted)(() => { + visible.value = true; + registerEventListener(); + stopWheelListener = useEventListener("wheel", wheelHandler, { passive: false }); + }); + __expose({ setActiveItem }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTeleport), { + to: "body", + disabled: !__props.teleported + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)(vue.Transition, { + name: "viewer-fade", + appear: "" + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + ref_key: "wrapper", + ref: wrapper, + tabindex: -1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("wrapper")), + style: (0, vue.normalizeStyle)({ zIndex: zIndex.value }) + }, [(0, vue.createVNode)((0, vue.unref)(focus_trap_default), { + loop: "", + trapped: "", + "focus-trap-el": wrapper.value, + "focus-start-el": "container", + onFocusoutPrevented, + onReleaseRequested: onCloseRequested + }, { + default: (0, vue.withCtx)(() => [ + (0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("mask")), + onClick: _cache[0] || (_cache[0] = (0, vue.withModifiers)(($event) => __props.hideOnClickModal && hide(), ["self"])) + }, null, 2), + (0, vue.createCommentVNode)(" CLOSE "), + (0, vue.createElementVNode)("span", { + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("btn"), (0, vue.unref)(ns).e("close")]), + onClick: hide + }, [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(close_default))]), + _: 1 + })], 2), + (0, vue.createCommentVNode)(" ARROW "), + !isSingle.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [(0, vue.createElementVNode)("span", { + class: (0, vue.normalizeClass)(arrowPrevKls.value), + onClick: prev + }, [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_left_default))]), + _: 1 + })], 2), (0, vue.createElementVNode)("span", { + class: (0, vue.normalizeClass)(arrowNextKls.value), + onClick: next + }, [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_right_default))]), + _: 1 + })], 2)], 64)) : (0, vue.createCommentVNode)("v-if", true), + _ctx.$slots.progress || __props.showProgress ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("btn"), (0, vue.unref)(ns).e("progress")]) + }, [(0, vue.renderSlot)(_ctx.$slots, "progress", { + activeIndex: activeIndex.value, + total: __props.urlList.length + }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(progress.value), 1)])], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createCommentVNode)(" ACTIONS "), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("btn"), (0, vue.unref)(ns).e("actions")]) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("actions__inner")) }, [(0, vue.renderSlot)(_ctx.$slots, "toolbar", { + actions: handleActions, + prev, + next, + reset: toggleMode, + activeIndex: activeIndex.value, + setActiveItem + }, () => [ + (0, vue.createVNode)((0, vue.unref)(ElIcon), { onClick: _cache[1] || (_cache[1] = ($event) => handleActions("zoomOut")) }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(zoom_out_default))]), + _: 1 + }), + (0, vue.createVNode)((0, vue.unref)(ElIcon), { onClick: _cache[2] || (_cache[2] = ($event) => handleActions("zoomIn")) }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(zoom_in_default))]), + _: 1 + }), + (0, vue.createElementVNode)("i", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("actions__divider")) }, null, 2), + (0, vue.createVNode)((0, vue.unref)(ElIcon), { onClick: toggleMode }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(mode.value.icon)))]), + _: 1 + }), + (0, vue.createElementVNode)("i", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("actions__divider")) }, null, 2), + (0, vue.createVNode)((0, vue.unref)(ElIcon), { onClick: _cache[3] || (_cache[3] = ($event) => handleActions("anticlockwise")) }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(refresh_left_default))]), + _: 1 + }), + (0, vue.createVNode)((0, vue.unref)(ElIcon), { onClick: _cache[4] || (_cache[4] = ($event) => handleActions("clockwise")) }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(refresh_right_default))]), + _: 1 + }) + ])], 2)], 2), + (0, vue.createCommentVNode)(" CANVAS "), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("canvas")) }, [loadError.value && _ctx.$slots["viewer-error"] ? (0, vue.renderSlot)(_ctx.$slots, "viewer-error", { + key: 0, + activeIndex: activeIndex.value, + src: currentImg.value + }) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("img", { + ref_key: "imgRef", + ref: imgRef, + key: currentImg.value, + src: currentImg.value, + style: (0, vue.normalizeStyle)(imgStyle.value), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("img")), + crossorigin: __props.crossorigin, + onLoad: handleImgLoad, + onError: handleImgError, + onMousedown: handleMouseDown, + onTouchstart: handleTouchStart + }, null, 46, _hoisted_1$35))], 2), + (0, vue.renderSlot)(_ctx.$slots, "default") + ]), + _: 3 + }, 8, ["focus-trap-el"])], 6)]), + _: 3 + })]), + _: 3 + }, 8, ["disabled"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/image-viewer/src/image-viewer.vue + var image_viewer_default = image_viewer_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/image-viewer/index.ts + const ElImageViewer = withInstall(image_viewer_default); + +//#endregion +//#region ../../packages/components/image/src/image.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$34 = [ + "src", + "loading", + "crossorigin" + ]; + const _hoisted_2$21 = { key: 0 }; + var image_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElImage", + inheritAttrs: false, + __name: "image", + props: imageProps, + emits: imageEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const { t } = useLocale(); + const ns = useNamespace("image"); + const rawAttrs = (0, vue.useAttrs)(); + const containerAttrs = (0, vue.computed)(() => { + return fromPairs(Object.entries(rawAttrs).filter(([key]) => /^(data-|on[A-Z])/i.test(key) || ["id", "style"].includes(key))); + }); + const imgAttrs = useAttrs({ + excludeListeners: true, + excludeKeys: (0, vue.computed)(() => { + return Object.keys(containerAttrs.value); + }) + }); + const imageSrc = (0, vue.ref)(); + const hasLoadError = (0, vue.ref)(false); + const isLoading = (0, vue.ref)(true); + const showViewer = (0, vue.ref)(false); + const container = (0, vue.ref)(); + const _scrollContainer = (0, vue.ref)(); + const supportLoading = isClient && "loading" in HTMLImageElement.prototype; + let stopScrollListener; + const imageKls = (0, vue.computed)(() => [ + ns.e("inner"), + preview.value && ns.e("preview"), + isLoading.value && ns.is("loading") + ]); + const imageStyle = (0, vue.computed)(() => { + const { fit } = props; + if (isClient && fit) return { objectFit: fit }; + return {}; + }); + const preview = (0, vue.computed)(() => { + const { previewSrcList } = props; + return isArray$1(previewSrcList) && previewSrcList.length > 0; + }); + const imageIndex = (0, vue.computed)(() => { + const { previewSrcList, initialIndex } = props; + let previewIndex = initialIndex; + if (initialIndex > previewSrcList.length - 1) previewIndex = 0; + return previewIndex; + }); + const isManual = (0, vue.computed)(() => { + if (props.loading === "eager") return false; + return !supportLoading && props.loading === "lazy" || props.lazy; + }); + const loadImage = () => { + if (!isClient) return; + isLoading.value = true; + hasLoadError.value = false; + imageSrc.value = props.src; + }; + function handleLoad(event) { + isLoading.value = false; + hasLoadError.value = false; + emit("load", event); + } + function handleError(event) { + isLoading.value = false; + hasLoadError.value = true; + emit("error", event); + } + function handleLazyLoad(isIntersecting) { + if (isIntersecting) { + loadImage(); + removeLazyLoadListener(); + } + } + const lazyLoadHandler = useThrottleFn(handleLazyLoad, 200, true); + async function addLazyLoadListener() { + if (!isClient) return; + await (0, vue.nextTick)(); + const { scrollContainer } = props; + if (isElement$1(scrollContainer)) _scrollContainer.value = scrollContainer; + else if (isString(scrollContainer) && scrollContainer !== "") _scrollContainer.value = document.querySelector(scrollContainer) ?? void 0; + else if (container.value) { + const scrollContainer = getScrollContainer(container.value); + _scrollContainer.value = isWindow(scrollContainer) ? void 0 : scrollContainer; + } + const { stop } = useIntersectionObserver(container, ([entry]) => { + lazyLoadHandler(entry.isIntersecting); + }, { root: _scrollContainer }); + stopScrollListener = stop; + } + function removeLazyLoadListener() { + if (!isClient || !lazyLoadHandler) return; + stopScrollListener?.(); + _scrollContainer.value = void 0; + stopScrollListener = void 0; + } + function clickHandler() { + if (!preview.value) return; + showViewer.value = true; + emit("show"); + } + function closeViewer() { + showViewer.value = false; + emit("close"); + } + function switchViewer(val) { + emit("switch", val); + } + (0, vue.watch)(() => props.src, () => { + if (isManual.value) { + isLoading.value = true; + hasLoadError.value = false; + removeLazyLoadListener(); + addLazyLoadListener(); + } else loadImage(); + }); + (0, vue.onMounted)(() => { + if (isManual.value) addLazyLoadListener(); + else loadImage(); + }); + __expose({ showPreview: clickHandler }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", (0, vue.mergeProps)({ + ref_key: "container", + ref: container + }, containerAttrs.value, { class: [(0, vue.unref)(ns).b(), _ctx.$attrs.class] }), [hasLoadError.value ? (0, vue.renderSlot)(_ctx.$slots, "error", { key: 0 }, () => [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("error")) }, (0, vue.toDisplayString)((0, vue.unref)(t)("el.image.error")), 3)]) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [imageSrc.value !== void 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("img", (0, vue.mergeProps)({ key: 0 }, (0, vue.unref)(imgAttrs), { + src: imageSrc.value, + loading: __props.loading, + style: imageStyle.value, + class: imageKls.value, + crossorigin: __props.crossorigin, + onClick: clickHandler, + onLoad: handleLoad, + onError: handleError + }), null, 16, _hoisted_1$34)) : (0, vue.createCommentVNode)("v-if", true), isLoading.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("wrapper")) + }, [(0, vue.renderSlot)(_ctx.$slots, "placeholder", {}, () => [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("placeholder")) }, null, 2)])], 2)) : (0, vue.createCommentVNode)("v-if", true)], 64)), preview.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 2 }, [showViewer.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElImageViewer), { + key: 0, + "z-index": __props.zIndex, + "initial-index": imageIndex.value, + infinite: __props.infinite, + "zoom-rate": __props.zoomRate, + "min-scale": __props.minScale, + "max-scale": __props.maxScale, + "show-progress": __props.showProgress, + "url-list": __props.previewSrcList, + scale: __props.scale, + crossorigin: __props.crossorigin, + "hide-on-click-modal": __props.hideOnClickModal, + teleported: __props.previewTeleported, + "close-on-press-escape": __props.closeOnPressEscape, + onClose: closeViewer, + onSwitch: switchViewer + }, (0, vue.createSlots)({ + toolbar: (0, vue.withCtx)((toolbar) => [(0, vue.renderSlot)(_ctx.$slots, "toolbar", (0, vue.normalizeProps)((0, vue.guardReactiveProps)(toolbar)))]), + default: (0, vue.withCtx)(() => [_ctx.$slots.viewer ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_2$21, [(0, vue.renderSlot)(_ctx.$slots, "viewer")])) : (0, vue.createCommentVNode)("v-if", true)]), + _: 2 + }, [_ctx.$slots.progress ? { + name: "progress", + fn: (0, vue.withCtx)((progress) => [(0, vue.renderSlot)(_ctx.$slots, "progress", (0, vue.normalizeProps)((0, vue.guardReactiveProps)(progress)))]), + key: "0" + } : void 0, _ctx.$slots["viewer-error"] ? { + name: "viewer-error", + fn: (0, vue.withCtx)((viewerError) => [(0, vue.renderSlot)(_ctx.$slots, "viewer-error", (0, vue.normalizeProps)((0, vue.guardReactiveProps)(viewerError)))]), + key: "1" + } : void 0]), 1032, [ + "z-index", + "initial-index", + "infinite", + "zoom-rate", + "min-scale", + "max-scale", + "show-progress", + "url-list", + "scale", + "crossorigin", + "hide-on-click-modal", + "teleported", + "close-on-press-escape" + ])) : (0, vue.createCommentVNode)("v-if", true)], 64)) : (0, vue.createCommentVNode)("v-if", true)], 16); + }; + } + }); + +//#endregion +//#region ../../packages/components/image/src/image.vue + var image_default = image_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/image/index.ts + const ElImage = withInstall(image_default); + +//#endregion +//#region ../../packages/components/input-number/src/input-number.ts +/** + * @deprecated Removed after 3.0.0, Use `InputNumberProps` instead. + */ + const inputNumberProps = buildProps({ + id: { + type: String, + default: void 0 + }, + step: { + type: Number, + default: 1 + }, + stepStrictly: Boolean, + max: { + type: Number, + default: Number.MAX_SAFE_INTEGER + }, + min: { + type: Number, + default: Number.MIN_SAFE_INTEGER + }, + modelValue: { type: [Number, null] }, + readonly: Boolean, + disabled: { + type: Boolean, + default: void 0 + }, + size: useSizeProp, + controls: { + type: Boolean, + default: true + }, + controlsPosition: { + type: String, + default: "", + values: ["", "right"] + }, + valueOnClear: { + type: definePropType([ + String, + Number, + null + ]), + validator: (val) => val === null || isNumber(val) || ["min", "max"].includes(val), + default: null + }, + name: String, + placeholder: String, + precision: { + type: Number, + validator: (val) => val >= 0 && val === Number.parseInt(`${val}`, 10) + }, + validateEvent: { + type: Boolean, + default: true + }, + ...useAriaProps(["ariaLabel"]), + inputmode: { + type: definePropType(String), + default: void 0 + }, + align: { + type: definePropType(String), + default: "center" + }, + disabledScientific: Boolean + }); + const inputNumberEmits = { + [CHANGE_EVENT]: (cur, prev) => prev !== cur, + blur: (e) => e instanceof FocusEvent, + focus: (e) => e instanceof FocusEvent, + [INPUT_EVENT]: (val) => isNumber(val) || isNil(val), + [UPDATE_MODEL_EVENT]: (val) => isNumber(val) || isNil(val) + }; + +//#endregion +//#region ../../packages/components/input-number/src/input-number.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$33 = ["aria-label"]; + const _hoisted_2$20 = ["aria-label"]; + var input_number_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElInputNumber", + __name: "input-number", + props: inputNumberProps, + emits: inputNumberEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const { t } = useLocale(); + const ns = useNamespace("input-number"); + const input = (0, vue.ref)(); + const data = (0, vue.reactive)({ + currentValue: props.modelValue, + userInput: null + }); + const { formItem } = useFormItem(); + const minDisabled = (0, vue.computed)(() => isNumber(props.modelValue) && props.modelValue <= props.min); + const maxDisabled = (0, vue.computed)(() => isNumber(props.modelValue) && props.modelValue >= props.max); + const numPrecision = (0, vue.computed)(() => { + const stepPrecision = getPrecision(props.step); + if (!isUndefined(props.precision)) { + if (stepPrecision > props.precision) /* @__PURE__ */ debugWarn("InputNumber", "precision should not be less than the decimal places of step"); + return props.precision; + } else return Math.max(getPrecision(props.modelValue), stepPrecision); + }); + const controlsAtRight = (0, vue.computed)(() => { + return props.controls && props.controlsPosition === "right"; + }); + const inputNumberSize = useFormSize(); + const inputNumberDisabled = useFormDisabled(); + const displayValue = (0, vue.computed)(() => { + if (data.userInput !== null) return data.userInput; + let currentValue = data.currentValue; + if (isNil(currentValue)) return ""; + if (isNumber(currentValue)) { + if (Number.isNaN(currentValue)) return ""; + if (!isUndefined(props.precision)) currentValue = currentValue.toFixed(props.precision); + } + return currentValue; + }); + const toPrecision = (num, pre) => { + if (isUndefined(pre)) pre = numPrecision.value; + if (pre === 0) return Math.round(num); + let snum = String(num); + const pointPos = snum.indexOf("."); + if (pointPos === -1) return num; + if (!snum.replace(".", "").split("")[pointPos + pre]) return num; + const length = snum.length; + if (snum.charAt(length - 1) === "5") snum = `${snum.slice(0, Math.max(0, length - 1))}6`; + return Number.parseFloat(Number(snum).toFixed(pre)); + }; + const getPrecision = (value) => { + if (isNil(value)) return 0; + const valueString = value.toString(); + const dotPosition = valueString.indexOf("."); + let precision = 0; + if (dotPosition !== -1) precision = valueString.length - dotPosition - 1; + return precision; + }; + const ensurePrecision = (val, coefficient = 1) => { + if (!isNumber(val)) return data.currentValue; + if (val >= Number.MAX_SAFE_INTEGER && coefficient === 1) { + /* @__PURE__ */ debugWarn("InputNumber", "The value has reached the maximum safe integer limit."); + return val; + } else if (val <= Number.MIN_SAFE_INTEGER && coefficient === -1) { + /* @__PURE__ */ debugWarn("InputNumber", "The value has reached the minimum safe integer limit."); + return val; + } + return toPrecision(val + props.step * coefficient); + }; + const handleKeydown = (event) => { + const code = getEventCode(event); + const key = getEventKey(event); + if (props.disabledScientific && ["e", "E"].includes(key)) { + event.preventDefault(); + return; + } + switch (code) { + case EVENT_CODE.up: + event.preventDefault(); + increase(); + break; + case EVENT_CODE.down: + event.preventDefault(); + decrease(); + break; + } + }; + const increase = () => { + if (props.readonly || inputNumberDisabled.value || maxDisabled.value) return; + setCurrentValue(ensurePrecision(Number(displayValue.value) || 0)); + emit(INPUT_EVENT, data.currentValue); + setCurrentValueToModelValue(); + }; + const decrease = () => { + if (props.readonly || inputNumberDisabled.value || minDisabled.value) return; + setCurrentValue(ensurePrecision(Number(displayValue.value) || 0, -1)); + emit(INPUT_EVENT, data.currentValue); + setCurrentValueToModelValue(); + }; + const verifyValue = (value, update) => { + const { max, min, step, precision, stepStrictly, valueOnClear } = props; + if (max < min) throwError("InputNumber", "min should not be greater than max."); + let newVal = Number(value); + if (isNil(value) || Number.isNaN(newVal)) return null; + if (value === "") { + if (valueOnClear === null) return null; + newVal = isString(valueOnClear) ? { + min, + max + }[valueOnClear] : valueOnClear; + } + if (stepStrictly) { + newVal = toPrecision(Math.round(toPrecision(newVal / step)) * step, precision); + if (newVal !== value) update && emit(UPDATE_MODEL_EVENT, newVal); + } + if (!isUndefined(precision)) newVal = toPrecision(newVal, precision); + if (newVal > max || newVal < min) { + newVal = newVal > max ? max : min; + update && emit(UPDATE_MODEL_EVENT, newVal); + } + return newVal; + }; + const setCurrentValue = (value, emitChange = true) => { + const oldVal = data.currentValue; + const newVal = verifyValue(value); + if (!emitChange) { + emit(UPDATE_MODEL_EVENT, newVal); + return; + } + data.userInput = null; + if (oldVal === newVal && value) return; + emit(UPDATE_MODEL_EVENT, newVal); + if (oldVal !== newVal) emit(CHANGE_EVENT, newVal, oldVal); + if (props.validateEvent) formItem?.validate?.("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + data.currentValue = newVal; + }; + const handleInput = (value) => { + data.userInput = value; + const newVal = value === "" ? null : Number(value); + emit(INPUT_EVENT, newVal); + setCurrentValue(newVal, false); + }; + const handleInputChange = (value) => { + const newVal = value !== "" ? Number(value) : ""; + if (isNumber(newVal) && !Number.isNaN(newVal) || value === "") setCurrentValue(newVal); + setCurrentValueToModelValue(); + data.userInput = null; + }; + const focus = () => { + input.value?.focus?.(); + }; + const blur = () => { + input.value?.blur?.(); + }; + const handleFocus = (event) => { + emit("focus", event); + }; + const handleBlur = (event) => { + data.userInput = null; + if (data.currentValue === null && input.value?.input) input.value.input.value = ""; + emit("blur", event); + if (props.validateEvent) formItem?.validate?.("blur").catch((err) => /* @__PURE__ */ debugWarn(err)); + }; + const setCurrentValueToModelValue = () => { + if (data.currentValue !== props.modelValue) data.currentValue = props.modelValue; + }; + const handleWheel = (e) => { + if (document.activeElement === e.target) e.preventDefault(); + }; + (0, vue.watch)(() => props.modelValue, (value, oldValue) => { + const newValue = verifyValue(value, true); + if (data.userInput === null && newValue !== oldValue) data.currentValue = newValue; + }, { immediate: true }); + (0, vue.watch)(() => props.precision, () => { + data.currentValue = verifyValue(props.modelValue); + }); + (0, vue.onMounted)(() => { + const { min, max, modelValue } = props; + const innerInput = input.value?.input; + innerInput.setAttribute("role", "spinbutton"); + if (Number.isFinite(max)) innerInput.setAttribute("aria-valuemax", String(max)); + else innerInput.removeAttribute("aria-valuemax"); + if (Number.isFinite(min)) innerInput.setAttribute("aria-valuemin", String(min)); + else innerInput.removeAttribute("aria-valuemin"); + innerInput.setAttribute("aria-valuenow", data.currentValue || data.currentValue === 0 ? String(data.currentValue) : ""); + innerInput.setAttribute("aria-disabled", String(inputNumberDisabled.value)); + if (!isNumber(modelValue) && modelValue != null) { + let val = Number(modelValue); + if (Number.isNaN(val)) val = null; + emit(UPDATE_MODEL_EVENT, val); + } + innerInput.addEventListener("wheel", handleWheel, { passive: false }); + }); + (0, vue.onUpdated)(() => { + (input.value?.input)?.setAttribute("aria-valuenow", `${data.currentValue ?? ""}`); + }); + __expose({ + focus, + blur + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).b(), + (0, vue.unref)(ns).m((0, vue.unref)(inputNumberSize)), + (0, vue.unref)(ns).is("disabled", (0, vue.unref)(inputNumberDisabled)), + (0, vue.unref)(ns).is("without-controls", !__props.controls), + (0, vue.unref)(ns).is("controls-right", controlsAtRight.value), + (0, vue.unref)(ns).is(__props.align, !!__props.align) + ]), + onDragstart: _cache[0] || (_cache[0] = (0, vue.withModifiers)(() => {}, ["prevent"])) + }, [ + __props.controls ? (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 0, + role: "button", + "aria-label": (0, vue.unref)(t)("el.inputNumber.decrease"), + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("decrease"), (0, vue.unref)(ns).is("disabled", minDisabled.value)]), + onKeydown: (0, vue.withKeys)(decrease, ["enter"]) + }, [(0, vue.renderSlot)(_ctx.$slots, "decrease-icon", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [controlsAtRight.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(arrow_down_default), { key: 0 })) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(minus_default), { key: 1 }))]), + _: 1 + })])], 42, _hoisted_1$33)), [[(0, vue.unref)(vRepeatClick), decrease]]) : (0, vue.createCommentVNode)("v-if", true), + __props.controls ? (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 1, + role: "button", + "aria-label": (0, vue.unref)(t)("el.inputNumber.increase"), + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("increase"), (0, vue.unref)(ns).is("disabled", maxDisabled.value)]), + onKeydown: (0, vue.withKeys)(increase, ["enter"]) + }, [(0, vue.renderSlot)(_ctx.$slots, "increase-icon", {}, () => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [controlsAtRight.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(arrow_up_default), { key: 0 })) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(plus_default), { key: 1 }))]), + _: 1 + })])], 42, _hoisted_2$20)), [[(0, vue.unref)(vRepeatClick), increase]]) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createVNode)((0, vue.unref)(ElInput), { + id: __props.id, + ref_key: "input", + ref: input, + type: "number", + step: __props.step, + "model-value": displayValue.value, + placeholder: __props.placeholder, + readonly: __props.readonly, + disabled: (0, vue.unref)(inputNumberDisabled), + size: (0, vue.unref)(inputNumberSize), + max: __props.max, + min: __props.min, + name: __props.name, + "aria-label": __props.ariaLabel, + "validate-event": false, + inputmode: __props.inputmode, + onKeydown: handleKeydown, + onBlur: handleBlur, + onFocus: handleFocus, + onInput: handleInput, + onChange: handleInputChange + }, (0, vue.createSlots)({ _: 2 }, [_ctx.$slots.prefix ? { + name: "prefix", + fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "prefix")]), + key: "0" + } : void 0, _ctx.$slots.suffix ? { + name: "suffix", + fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "suffix")]), + key: "1" + } : void 0]), 1032, [ + "id", + "step", + "model-value", + "placeholder", + "readonly", + "disabled", + "size", + "max", + "min", + "name", + "aria-label", + "inputmode" + ]) + ], 34); + }; + } + }); + +//#endregion +//#region ../../packages/components/input-number/src/input-number.vue + var input_number_default = input_number_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/input-number/index.ts + const ElInputNumber = withInstall(input_number_default); + +//#endregion +//#region ../../packages/components/input-tag/src/input-tag.ts +/** + * @deprecated Removed after 3.0.0, Use `InputTagProps` instead. + */ + const inputTagProps = buildProps({ + modelValue: { type: definePropType(Array) }, + max: Number, + tagType: { + ...tagProps.type, + default: "info" + }, + tagEffect: tagProps.effect, + effect: { + type: definePropType(String), + default: "light" + }, + trigger: { + type: definePropType(String), + default: EVENT_CODE.enter + }, + draggable: Boolean, + delimiter: { + type: [String, RegExp], + default: "" + }, + size: useSizeProp, + clearable: Boolean, + clearIcon: { + type: iconPropType, + default: circle_close_default + }, + disabled: { + type: Boolean, + default: void 0 + }, + validateEvent: { + type: Boolean, + default: true + }, + readonly: Boolean, + autofocus: Boolean, + id: { + type: String, + default: void 0 + }, + tabindex: { + type: [String, Number], + default: 0 + }, + maxlength: { type: [String, Number] }, + minlength: { type: [String, Number] }, + placeholder: String, + autocomplete: { + type: definePropType(String), + default: "off" + }, + saveOnBlur: { + type: Boolean, + default: true + }, + collapseTags: Boolean, + collapseTagsTooltip: Boolean, + maxCollapseTags: { + type: Number, + default: 1 + }, + ariaLabel: String + }); + const inputTagEmits = { + [UPDATE_MODEL_EVENT]: (value) => isArray$1(value) || isUndefined(value), + [CHANGE_EVENT]: (value) => isArray$1(value) || isUndefined(value), + [INPUT_EVENT]: (value) => isString(value), + "add-tag": (value) => isString(value) || isArray$1(value), + "remove-tag": (value, index) => isString(value) && isNumber(index), + "drag-tag": (oldIndex, newIndex, value) => isNumber(oldIndex) && isNumber(newIndex) && isString(value), + focus: (evt) => evt instanceof FocusEvent, + blur: (evt) => evt instanceof FocusEvent, + clear: () => true + }; + +//#endregion +//#region ../../packages/components/input-tag/src/composables/use-drag-tag.ts + function useDragTag({ wrapperRef, handleDragged, afterDragged }) { + const ns = useNamespace("input-tag"); + const dropIndicatorRef = (0, vue.shallowRef)(); + const showDropIndicator = (0, vue.ref)(false); + let draggingIndex; + let draggingTag; + let dropIndex; + let dropType; + function getTagClassName(index) { + return `.${ns.e("inner")} .${ns.namespace.value}-tag:nth-child(${index + 1})`; + } + function handleDragStart(event, index) { + draggingIndex = index; + draggingTag = wrapperRef.value.querySelector(getTagClassName(index)); + if (draggingTag) draggingTag.style.opacity = "0.5"; + event.dataTransfer.effectAllowed = "move"; + } + function handleDragOver(event, index) { + dropIndex = index; + event.preventDefault(); + event.dataTransfer.dropEffect = "move"; + if (isUndefined(draggingIndex) || draggingIndex === index) { + showDropIndicator.value = false; + return; + } + const dropPosition = wrapperRef.value.querySelector(getTagClassName(index)).getBoundingClientRect(); + const dropPrev = !(draggingIndex + 1 === index); + const dropNext = !(draggingIndex - 1 === index); + const distance = event.clientX - dropPosition.left; + const prevPercent = dropPrev ? dropNext ? .5 : 1 : -1; + const nextPercent = dropNext ? dropPrev ? .5 : 0 : 1; + if (distance <= dropPosition.width * prevPercent) dropType = "before"; + else if (distance > dropPosition.width * nextPercent) dropType = "after"; + else dropType = void 0; + const innerEl = wrapperRef.value.querySelector(`.${ns.e("inner")}`); + const innerPosition = innerEl.getBoundingClientRect(); + const gap = Number.parseFloat(getStyle(innerEl, "gap")) / 2; + const indicatorTop = dropPosition.top - innerPosition.top; + let indicatorLeft = -9999; + if (dropType === "before") indicatorLeft = Math.max(dropPosition.left - innerPosition.left - gap, Math.floor(-gap / 2)); + else if (dropType === "after") { + const left = dropPosition.right - innerPosition.left; + indicatorLeft = left + (innerPosition.width === left ? Math.floor(gap / 2) : gap); + } + setStyle(dropIndicatorRef.value, { + top: `${indicatorTop}px`, + left: `${indicatorLeft}px` + }); + showDropIndicator.value = !!dropType; + } + function handleDragEnd(event) { + event.preventDefault(); + if (draggingTag) draggingTag.style.opacity = ""; + if (dropType && !isUndefined(draggingIndex) && !isUndefined(dropIndex) && draggingIndex !== dropIndex) handleDragged(draggingIndex, dropIndex, dropType); + showDropIndicator.value = false; + draggingIndex = void 0; + draggingTag = null; + dropIndex = void 0; + dropType = void 0; + afterDragged?.(); + } + return { + dropIndicatorRef, + showDropIndicator, + handleDragStart, + handleDragOver, + handleDragEnd + }; + } + +//#endregion +//#region ../../packages/components/input-tag/src/composables/use-hovering.ts + function useHovering() { + const hovering = (0, vue.ref)(false); + const handleMouseEnter = () => { + hovering.value = true; + }; + const handleMouseLeave = () => { + hovering.value = false; + }; + return { + hovering, + handleMouseEnter, + handleMouseLeave + }; + } + +//#endregion +//#region ../../packages/components/input-tag/src/composables/use-input-tag.ts + function useInputTag({ props, emit, formItem }) { + const disabled = useFormDisabled(); + const size = useFormSize(); + const inputRef = (0, vue.shallowRef)(); + const inputValue = (0, vue.ref)(); + const tagTooltipRef = (0, vue.ref)(); + const tagSize = (0, vue.computed)(() => { + return ["small"].includes(size.value) ? "small" : "default"; + }); + const placeholder = (0, vue.computed)(() => { + return props.modelValue?.length ? void 0 : props.placeholder; + }); + const closable = (0, vue.computed)(() => !(props.readonly || disabled.value)); + const inputLimit = (0, vue.computed)(() => { + return isUndefined(props.max) ? false : (props.modelValue?.length ?? 0) >= props.max; + }); + const showTagList = (0, vue.computed)(() => { + return props.collapseTags ? props.modelValue?.slice(0, props.maxCollapseTags) : props.modelValue; + }); + const collapseTagList = (0, vue.computed)(() => { + return props.collapseTags ? props.modelValue?.slice(props.maxCollapseTags) : []; + }); + const addTagsEmit = (value) => { + const list = [...props.modelValue ?? [], ...castArray$1(value)]; + emit(UPDATE_MODEL_EVENT, list); + emit(CHANGE_EVENT, list); + emit("add-tag", value); + inputValue.value = void 0; + }; + const getDelimitedTags = (input) => { + const parts = input.split(props.delimiter); + const tags = parts.length > 1 ? parts.map((val) => val.trim()).filter(Boolean) : []; + if (props.max) { + const maxInsert = props.max - (props.modelValue?.length ?? 0); + tags.splice(maxInsert); + } + return tags.length === 1 ? tags[0] : tags; + }; + const handlePaste = (event) => { + const pasted = event.clipboardData?.getData("text"); + if (props.readonly || inputLimit.value || !props.delimiter || !pasted) return; + const { selectionStart = 0, selectionEnd = 0, value } = event.target; + const nextValue = value.slice(0, selectionStart) + pasted + value.slice(selectionEnd); + const tags = getDelimitedTags(nextValue); + if (tags.length) { + addTagsEmit(tags); + emit(INPUT_EVENT, nextValue); + event.preventDefault(); + } + }; + const handleInput = (event) => { + if (inputLimit.value) { + inputValue.value = void 0; + return; + } + if (isComposing.value) return; + if (props.delimiter && inputValue.value) { + const tags = getDelimitedTags(inputValue.value); + if (tags.length) addTagsEmit(tags); + } + emit(INPUT_EVENT, event.target.value); + }; + const handleKeydown = (event) => { + if (isComposing.value) return; + switch (getEventCode(event)) { + case props.trigger: + event.preventDefault(); + event.stopPropagation(); + handleAddTag(); + break; + case EVENT_CODE.numpadEnter: + if (props.trigger === EVENT_CODE.enter) { + event.preventDefault(); + event.stopPropagation(); + handleAddTag(); + } + break; + case EVENT_CODE.backspace: + if (!inputValue.value && props.modelValue?.length) { + event.preventDefault(); + event.stopPropagation(); + handleRemoveTag(props.modelValue.length - 1); + } + break; + } + }; + const handleKeyup = (event) => { + if (isComposing.value || !isAndroid()) return; + switch (getEventCode(event)) { + case EVENT_CODE.space: + if (props.trigger === EVENT_CODE.space) { + event.preventDefault(); + event.stopPropagation(); + handleAddTag(); + } + break; + } + }; + const handleAddTag = () => { + const value = inputValue.value?.trim(); + if (!value || inputLimit.value) return; + addTagsEmit(value); + }; + const handleRemoveTag = (index) => { + const value = (props.modelValue ?? []).slice(); + const [item] = value.splice(index, 1); + emit(UPDATE_MODEL_EVENT, value); + emit(CHANGE_EVENT, value); + emit("remove-tag", item, index); + }; + const handleClear = () => { + inputValue.value = void 0; + emit(UPDATE_MODEL_EVENT, void 0); + emit(CHANGE_EVENT, void 0); + emit("clear"); + }; + const handleDragged = (draggingIndex, dropIndex, type) => { + const value = (props.modelValue ?? []).slice(); + const [draggedItem] = value.splice(draggingIndex, 1); + const step = dropIndex > draggingIndex && type === "before" ? -1 : dropIndex < draggingIndex && type === "after" ? 1 : 0; + value.splice(dropIndex + step, 0, draggedItem); + emit(UPDATE_MODEL_EVENT, value); + emit(CHANGE_EVENT, value); + emit("drag-tag", draggingIndex, dropIndex + step, draggedItem); + }; + const focus = () => { + inputRef.value?.focus(); + }; + const blur = () => { + inputRef.value?.blur(); + }; + const { wrapperRef, isFocused } = useFocusController(inputRef, { + disabled, + beforeBlur(event) { + return tagTooltipRef.value?.isFocusInsideContent(event); + }, + afterBlur() { + if (props.saveOnBlur) handleAddTag(); + else inputValue.value = void 0; + if (props.validateEvent) formItem?.validate?.("blur").catch((err) => /* @__PURE__ */ debugWarn(err)); + } + }); + const { isComposing, handleCompositionStart, handleCompositionUpdate, handleCompositionEnd } = useComposition({ afterComposition: handleInput }); + (0, vue.watch)(() => props.modelValue, () => { + if (props.validateEvent) formItem?.validate?.(CHANGE_EVENT).catch((err) => /* @__PURE__ */ debugWarn(err)); + }); + return { + inputRef, + wrapperRef, + tagTooltipRef, + isFocused, + isComposing, + inputValue, + size, + tagSize, + placeholder, + closable, + disabled, + inputLimit, + showTagList, + collapseTagList, + handleDragged, + handlePaste, + handleInput, + handleKeydown, + handleKeyup, + handleAddTag, + handleRemoveTag, + handleClear, + handleCompositionStart, + handleCompositionUpdate, + handleCompositionEnd, + focus, + blur + }; + } + +//#endregion +//#region ../../packages/components/input-tag/src/composables/use-input-tag-dom.ts + function useInputTagDom({ props, isFocused, hovering, disabled, inputValue, size, validateState, validateIcon, needStatusIcon }) { + const attrs = (0, vue.useAttrs)(); + const slots = (0, vue.useSlots)(); + const ns = useNamespace("input-tag"); + const nsInput = useNamespace("input"); + const collapseItemRef = (0, vue.ref)(); + const innerRef = (0, vue.ref)(); + const containerKls = (0, vue.computed)(() => [ + ns.b(), + ns.is("focused", isFocused.value), + ns.is("hovering", hovering.value), + ns.is("disabled", disabled.value), + ns.m(size.value), + ns.e("wrapper"), + attrs.class + ]); + const containerStyle = (0, vue.computed)(() => [attrs.style]); + const innerKls = (0, vue.computed)(() => [ + ns.e("inner"), + ns.is("draggable", props.draggable), + ns.is("left-space", !props.modelValue?.length && !slots.prefix), + ns.is("right-space", !props.modelValue?.length && !showSuffix.value) + ]); + const showClear = (0, vue.computed)(() => { + return props.clearable && !disabled.value && !props.readonly && (props.modelValue?.length || inputValue.value) && (isFocused.value || hovering.value); + }); + const showSuffix = (0, vue.computed)(() => { + return slots.suffix || showClear.value || validateState.value && validateIcon.value && needStatusIcon.value; + }); + const states = (0, vue.reactive)({ + innerWidth: 0, + collapseItemWidth: 0 + }); + const getGapWidth = () => { + if (!innerRef.value) return 0; + const style = window.getComputedStyle(innerRef.value); + return Number.parseFloat(style.gap || "6px"); + }; + const resetInnerWidth = () => { + states.innerWidth = Number.parseFloat(window.getComputedStyle(innerRef.value).width); + }; + const resetCollapseItemWidth = () => { + states.collapseItemWidth = collapseItemRef.value.getBoundingClientRect().width; + }; + const tagStyle = (0, vue.computed)(() => { + if (!props.collapseTags) return {}; + const gapWidth = getGapWidth(); + const inputSlotWidth = gapWidth + MINIMUM_INPUT_WIDTH; + const maxWidth = collapseItemRef.value && props.maxCollapseTags === 1 ? states.innerWidth - states.collapseItemWidth - gapWidth - inputSlotWidth : states.innerWidth - inputSlotWidth; + return { maxWidth: `${Math.max(maxWidth, 0)}px` }; + }); + useResizeObserver(innerRef, resetInnerWidth); + useResizeObserver(collapseItemRef, resetCollapseItemWidth); + return { + ns, + nsInput, + containerKls, + containerStyle, + innerKls, + showClear, + showSuffix, + tagStyle, + collapseItemRef, + innerRef + }; + } + +//#endregion +//#region ../../packages/components/input-tag/src/input-tag.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$32 = [ + "id", + "minlength", + "maxlength", + "disabled", + "readonly", + "autocomplete", + "tabindex", + "placeholder", + "autofocus", + "ariaLabel" + ]; + const _hoisted_2$19 = ["textContent"]; + var input_tag_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElInputTag", + inheritAttrs: false, + __name: "input-tag", + props: inputTagProps, + emits: inputTagEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const attrs = useAttrs(); + const slots = (0, vue.useSlots)(); + const { form, formItem } = useFormItem(); + const { inputId } = useFormItemInputId(props, { formItemContext: formItem }); + const needStatusIcon = (0, vue.computed)(() => form?.statusIcon ?? false); + const validateState = (0, vue.computed)(() => formItem?.validateState || ""); + const validateIcon = (0, vue.computed)(() => { + return validateState.value && ValidateComponentsMap[validateState.value]; + }); + const { inputRef, wrapperRef, tagTooltipRef, isFocused, inputValue, size, tagSize, placeholder, closable, disabled, showTagList, collapseTagList, handleDragged, handlePaste, handleInput, handleKeydown, handleKeyup, handleRemoveTag, handleClear, handleCompositionStart, handleCompositionUpdate, handleCompositionEnd, focus, blur } = useInputTag({ + props, + emit, + formItem + }); + const { hovering, handleMouseEnter, handleMouseLeave } = useHovering(); + const { calculatorRef, inputStyle } = useCalcInputWidth(); + const { dropIndicatorRef, showDropIndicator, handleDragStart, handleDragOver, handleDragEnd } = useDragTag({ + wrapperRef, + handleDragged, + afterDragged: focus + }); + const { ns, nsInput, containerKls, containerStyle, innerKls, showClear, showSuffix, tagStyle, collapseItemRef, innerRef } = useInputTagDom({ + props, + hovering, + isFocused, + inputValue, + disabled, + size, + validateState, + validateIcon, + needStatusIcon + }); + __expose({ + focus, + blur + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "wrapperRef", + ref: wrapperRef, + class: (0, vue.normalizeClass)((0, vue.unref)(containerKls)), + style: (0, vue.normalizeStyle)((0, vue.unref)(containerStyle)), + onMouseenter: _cache[9] || (_cache[9] = (...args) => (0, vue.unref)(handleMouseEnter) && (0, vue.unref)(handleMouseEnter)(...args)), + onMouseleave: _cache[10] || (_cache[10] = (...args) => (0, vue.unref)(handleMouseLeave) && (0, vue.unref)(handleMouseLeave)(...args)) + }, [ + (0, vue.unref)(slots).prefix ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("prefix")) + }, [(0, vue.renderSlot)(_ctx.$slots, "prefix")], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { + ref_key: "innerRef", + ref: innerRef, + class: (0, vue.normalizeClass)((0, vue.unref)(innerKls)) + }, [ + ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(showTagList), (item, index) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTag), { + key: index, + size: (0, vue.unref)(tagSize), + closable: (0, vue.unref)(closable), + type: __props.tagType, + effect: __props.tagEffect, + draggable: (0, vue.unref)(closable) && __props.draggable, + style: (0, vue.normalizeStyle)((0, vue.unref)(tagStyle)), + "disable-transitions": "", + onClose: ($event) => (0, vue.unref)(handleRemoveTag)(index), + onDragstart: (event) => (0, vue.unref)(handleDragStart)(event, index), + onDragover: (event) => (0, vue.unref)(handleDragOver)(event, index), + onDragend: (0, vue.unref)(handleDragEnd), + onDrop: _cache[0] || (_cache[0] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "tag", { + value: item, + index + }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(item), 1)])]), + _: 2 + }, 1032, [ + "size", + "closable", + "type", + "effect", + "draggable", + "style", + "onClose", + "onDragstart", + "onDragover", + "onDragend" + ]); + }), 128)), + __props.collapseTags && __props.modelValue && __props.modelValue.length > __props.maxCollapseTags ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTooltip), { + key: 0, + ref_key: "tagTooltipRef", + ref: tagTooltipRef, + disabled: !__props.collapseTagsTooltip, + "fallback-placements": [ + "bottom", + "top", + "right", + "left" + ], + effect: __props.effect, + placement: "bottom" + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + ref_key: "collapseItemRef", + ref: collapseItemRef, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("collapse-tag")) + }, [(0, vue.createVNode)((0, vue.unref)(ElTag), { + closable: false, + size: (0, vue.unref)(tagSize), + type: __props.tagType, + effect: __props.tagEffect, + "disable-transitions": "" + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)(" + " + (0, vue.toDisplayString)(__props.modelValue.length - __props.maxCollapseTags), 1)]), + _: 1 + }, 8, [ + "size", + "type", + "effect" + ])], 2)]), + content: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("input-tag-list")) }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(collapseTagList), (item, index) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTag), { + key: index, + size: (0, vue.unref)(tagSize), + closable: (0, vue.unref)(closable), + type: __props.tagType, + effect: __props.tagEffect, + "disable-transitions": "", + onClose: ($event) => (0, vue.unref)(handleRemoveTag)(index + __props.maxCollapseTags) + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "tag", { + value: item, + index: index + __props.maxCollapseTags + }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(item), 1)])]), + _: 2 + }, 1032, [ + "size", + "closable", + "type", + "effect", + "onClose" + ]); + }), 128))], 2)]), + _: 3 + }, 8, ["disabled", "effect"])) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("input-wrapper")) }, [(0, vue.withDirectives)((0, vue.createElementVNode)("input", (0, vue.mergeProps)({ + id: (0, vue.unref)(inputId), + ref_key: "inputRef", + ref: inputRef, + "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => (0, vue.isRef)(inputValue) ? inputValue.value = $event : null) + }, (0, vue.unref)(attrs), { + type: "text", + minlength: __props.minlength, + maxlength: __props.maxlength, + disabled: (0, vue.unref)(disabled), + readonly: __props.readonly, + autocomplete: __props.autocomplete, + tabindex: __props.tabindex, + placeholder: (0, vue.unref)(placeholder), + autofocus: __props.autofocus, + ariaLabel: __props.ariaLabel, + class: (0, vue.unref)(ns).e("input"), + style: (0, vue.unref)(inputStyle), + onCompositionstart: _cache[2] || (_cache[2] = (...args) => (0, vue.unref)(handleCompositionStart) && (0, vue.unref)(handleCompositionStart)(...args)), + onCompositionupdate: _cache[3] || (_cache[3] = (...args) => (0, vue.unref)(handleCompositionUpdate) && (0, vue.unref)(handleCompositionUpdate)(...args)), + onCompositionend: _cache[4] || (_cache[4] = (...args) => (0, vue.unref)(handleCompositionEnd) && (0, vue.unref)(handleCompositionEnd)(...args)), + onPaste: _cache[5] || (_cache[5] = (...args) => (0, vue.unref)(handlePaste) && (0, vue.unref)(handlePaste)(...args)), + onInput: _cache[6] || (_cache[6] = (...args) => (0, vue.unref)(handleInput) && (0, vue.unref)(handleInput)(...args)), + onKeydown: _cache[7] || (_cache[7] = (...args) => (0, vue.unref)(handleKeydown) && (0, vue.unref)(handleKeydown)(...args)), + onKeyup: _cache[8] || (_cache[8] = (...args) => (0, vue.unref)(handleKeyup) && (0, vue.unref)(handleKeyup)(...args)) + }), null, 16, _hoisted_1$32), [[vue.vModelText, (0, vue.unref)(inputValue)]]), (0, vue.createElementVNode)("span", { + ref_key: "calculatorRef", + ref: calculatorRef, + "aria-hidden": "true", + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("input-calculator")), + textContent: (0, vue.toDisplayString)((0, vue.unref)(inputValue)) + }, null, 10, _hoisted_2$19)], 2), + (0, vue.withDirectives)((0, vue.createElementVNode)("div", { + ref_key: "dropIndicatorRef", + ref: dropIndicatorRef, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("drop-indicator")) + }, null, 2), [[vue.vShow, (0, vue.unref)(showDropIndicator)]]) + ], 2), + (0, vue.unref)(showSuffix) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("suffix")) + }, [ + (0, vue.renderSlot)(_ctx.$slots, "suffix"), + (0, vue.unref)(showClear) ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("icon"), (0, vue.unref)(ns).e("clear")]), + onMousedown: (0, vue.withModifiers)((0, vue.unref)(NOOP), ["prevent"]), + onClick: (0, vue.unref)(handleClear) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.clearIcon)))]), + _: 1 + }, 8, [ + "class", + "onMousedown", + "onClick" + ])) : (0, vue.createCommentVNode)("v-if", true), + validateState.value && validateIcon.value && needStatusIcon.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 1, + class: (0, vue.normalizeClass)([ + (0, vue.unref)(nsInput).e("icon"), + (0, vue.unref)(nsInput).e("validateIcon"), + (0, vue.unref)(nsInput).is("loading", validateState.value === "validating") + ]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(validateIcon.value)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true) + ], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 38); + }; + } + }); + +//#endregion +//#region ../../packages/components/input-tag/src/input-tag.vue + var input_tag_default = input_tag_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/input-tag/index.ts + const ElInputTag = withInstall(input_tag_default); + +//#endregion +//#region ../../packages/components/link/src/link.ts +/** + * @deprecated Removed after 3.0.0, Use `LinkProps` instead. + */ + const linkProps = buildProps({ + type: { + type: String, + values: [ + "primary", + "success", + "warning", + "info", + "danger", + "default" + ], + default: void 0 + }, + underline: { + type: [Boolean, String], + values: [ + true, + false, + "always", + "never", + "hover" + ], + default: void 0 + }, + disabled: Boolean, + href: { + type: String, + default: "" + }, + target: { + type: String, + default: "_self" + }, + icon: { type: iconPropType } + }); + const linkEmits = { click: (evt) => evt instanceof MouseEvent }; + +//#endregion +//#region ../../packages/components/link/src/link.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$31 = ["href", "target"]; + var link_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElLink", + __name: "link", + props: linkProps, + emits: linkEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const globalConfig = useGlobalConfig("link"); + useDeprecated({ + scope: "el-link", + from: "The underline option (boolean)", + replacement: "'always' | 'hover' | 'never'", + version: "3.0.0", + ref: "https://element-plus.org/en-US/component/link.html#underline" + }, (0, vue.computed)(() => isBoolean(props.underline))); + const ns = useNamespace("link"); + const linkKls = (0, vue.computed)(() => [ + ns.b(), + ns.m(props.type ?? globalConfig.value?.type ?? "default"), + ns.is("disabled", props.disabled), + ns.is("underline", underline.value === "always"), + ns.is("hover-underline", underline.value === "hover" && !props.disabled) + ]); + const underline = (0, vue.computed)(() => { + if (isBoolean(props.underline)) return props.underline ? "hover" : "never"; + else return props.underline ?? globalConfig.value?.underline ?? "hover"; + }); + function handleClick(event) { + if (!props.disabled) emit("click", event); + } + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("a", { + class: (0, vue.normalizeClass)(linkKls.value), + href: __props.disabled || !__props.href ? void 0 : __props.href, + target: __props.disabled || !__props.href ? void 0 : __props.target, + onClick: handleClick + }, [ + __props.icon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { key: 0 }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.icon)))]), + _: 1 + })) : (0, vue.createCommentVNode)("v-if", true), + _ctx.$slots.default ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("inner")) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2)) : (0, vue.createCommentVNode)("v-if", true), + _ctx.$slots.icon ? (0, vue.renderSlot)(_ctx.$slots, "icon", { key: 2 }) : (0, vue.createCommentVNode)("v-if", true) + ], 10, _hoisted_1$31); + }; + } + }); + +//#endregion +//#region ../../packages/components/link/src/link.vue + var link_default = link_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/link/index.ts + const ElLink = withInstall(link_default); + +//#endregion +//#region ../../packages/components/menu/src/utils/submenu.ts + var SubMenu = class { + constructor(parent, domNode) { + this.parent = parent; + this.domNode = domNode; + this.subIndex = 0; + this.subIndex = 0; + this.init(); + } + init() { + this.subMenuItems = this.domNode.querySelectorAll("li"); + this.addListeners(); + } + gotoSubIndex(idx) { + if (idx === this.subMenuItems.length) idx = 0; + else if (idx < 0) idx = this.subMenuItems.length - 1; + this.subMenuItems[idx].focus(); + this.subIndex = idx; + } + addListeners() { + const parentNode = this.parent.domNode; + Array.prototype.forEach.call(this.subMenuItems, (el) => { + el.addEventListener("keydown", (event) => { + const code = getEventCode(event); + let prevDef = false; + switch (code) { + case EVENT_CODE.down: + this.gotoSubIndex(this.subIndex + 1); + prevDef = true; + break; + case EVENT_CODE.up: + this.gotoSubIndex(this.subIndex - 1); + prevDef = true; + break; + case EVENT_CODE.tab: + triggerEvent(parentNode, "mouseleave"); + break; + case EVENT_CODE.enter: + case EVENT_CODE.numpadEnter: + case EVENT_CODE.space: + prevDef = true; + event.currentTarget.click(); + break; + } + if (prevDef) { + event.preventDefault(); + event.stopPropagation(); + } + return false; + }); + }); + } + }; + +//#endregion +//#region ../../packages/components/menu/src/utils/menu-item.ts + var MenuItem = class { + constructor(domNode, namespace) { + this.domNode = domNode; + this.submenu = null; + this.submenu = null; + this.init(namespace); + } + init(namespace) { + this.domNode.setAttribute("tabindex", "0"); + const menuChild = this.domNode.querySelector(`.${namespace}-menu`); + if (menuChild) this.submenu = new SubMenu(this, menuChild); + this.addListeners(); + } + addListeners() { + this.domNode.addEventListener("keydown", (event) => { + const code = getEventCode(event); + let prevDef = false; + switch (code) { + case EVENT_CODE.down: + triggerEvent(event.currentTarget, "mouseenter"); + this.submenu && this.submenu.gotoSubIndex(0); + prevDef = true; + break; + case EVENT_CODE.up: + triggerEvent(event.currentTarget, "mouseenter"); + this.submenu && this.submenu.gotoSubIndex(this.submenu.subMenuItems.length - 1); + prevDef = true; + break; + case EVENT_CODE.tab: + triggerEvent(event.currentTarget, "mouseleave"); + break; + case EVENT_CODE.enter: + case EVENT_CODE.numpadEnter: + case EVENT_CODE.space: + prevDef = true; + event.currentTarget.click(); + break; + } + if (prevDef) event.preventDefault(); + }); + } + }; + +//#endregion +//#region ../../packages/components/menu/src/utils/menu-bar.ts + var Menu = class { + constructor(domNode, namespace) { + this.domNode = domNode; + this.init(namespace); + } + init(namespace) { + const menuChildren = this.domNode.childNodes; + Array.from(menuChildren).forEach((child) => { + if (child.nodeType === 1) new MenuItem(child, namespace); + }); + } + }; + +//#endregion +//#region ../../packages/components/menu/src/menu-collapse-transition.vue?vue&type=script&setup=true&lang.ts + var menu_collapse_transition_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElMenuCollapseTransition", + __name: "menu-collapse-transition", + setup(__props) { + const ns = useNamespace("menu"); + const listeners = { + onBeforeEnter: (el) => el.style.opacity = "0.2", + onEnter(el, done) { + addClass(el, `${ns.namespace.value}-opacity-transition`); + el.style.opacity = "1"; + done(); + }, + onAfterEnter(el) { + removeClass(el, `${ns.namespace.value}-opacity-transition`); + el.style.opacity = ""; + }, + onBeforeLeave(el) { + if (!el.dataset) el.dataset = {}; + if (hasClass(el, ns.m("collapse"))) { + removeClass(el, ns.m("collapse")); + el.dataset.oldOverflow = el.style.overflow; + el.dataset.scrollWidth = el.clientWidth.toString(); + addClass(el, ns.m("collapse")); + } else { + addClass(el, ns.m("collapse")); + el.dataset.oldOverflow = el.style.overflow; + el.dataset.scrollWidth = el.clientWidth.toString(); + removeClass(el, ns.m("collapse")); + } + el.style.width = `${el.scrollWidth}px`; + el.style.overflow = "hidden"; + }, + onLeave(el) { + addClass(el, "horizontal-collapse-transition"); + el.style.width = `${el.dataset.scrollWidth}px`; + } + }; + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(vue.Transition, (0, vue.mergeProps)({ mode: "out-in" }, listeners), { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 16); + }; + } + }); + +//#endregion +//#region ../../packages/components/menu/src/menu-collapse-transition.vue + var menu_collapse_transition_default = menu_collapse_transition_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/menu/src/use-menu.ts + function useMenu(instance, currentIndex) { + const indexPath = (0, vue.computed)(() => { + let parent = instance.parent; + const path = [currentIndex.value]; + while (parent.type.name !== "ElMenu") { + if (parent.props.index) path.unshift(parent.props.index); + parent = parent.parent; + } + return path; + }); + return { + parentMenu: (0, vue.computed)(() => { + let parent = instance.parent; + while (parent && !["ElMenu", "ElSubMenu"].includes(parent.type.name)) parent = parent.parent; + return parent; + }), + indexPath + }; + } + +//#endregion +//#region ../../packages/components/menu/src/use-menu-color.ts + function useMenuColor(props) { + return (0, vue.computed)(() => { + const color = props.backgroundColor; + return color ? new TinyColor(color).shade(20).toString() : ""; + }); + } + +//#endregion +//#region ../../packages/components/menu/src/use-menu-css-var.ts + const useMenuCssVar = (props, level) => { + const ns = useNamespace("menu"); + return (0, vue.computed)(() => ns.cssVarBlock({ + "text-color": props.textColor || "", + "hover-text-color": props.textColor || "", + "bg-color": props.backgroundColor || "", + "hover-bg-color": useMenuColor(props).value || "", + "active-color": props.activeTextColor || "", + level: `${level}` + })); + }; + +//#endregion +//#region ../../packages/components/menu/src/tokens.ts + const MENU_INJECTION_KEY = "rootMenu"; + const SUB_MENU_INJECTION_KEY = "subMenu:"; + +//#endregion +//#region ../../packages/components/menu/src/sub-menu.ts + const subMenuProps = buildProps({ + index: { + type: String, + required: true + }, + showTimeout: Number, + hideTimeout: Number, + popperClass: String, + popperStyle: { type: definePropType([String, Object]) }, + disabled: Boolean, + teleported: { + type: Boolean, + default: void 0 + }, + popperOffset: Number, + expandCloseIcon: { type: iconPropType }, + expandOpenIcon: { type: iconPropType }, + collapseCloseIcon: { type: iconPropType }, + collapseOpenIcon: { type: iconPropType } + }); + const COMPONENT_NAME$8 = "ElSubMenu"; + var sub_menu_default = (0, vue.defineComponent)({ + name: COMPONENT_NAME$8, + props: subMenuProps, + setup(props, { slots, expose }) { + const instance = (0, vue.getCurrentInstance)(); + const { indexPath, parentMenu } = useMenu(instance, (0, vue.computed)(() => props.index)); + const nsMenu = useNamespace("menu"); + const nsSubMenu = useNamespace("sub-menu"); + const rootMenu = (0, vue.inject)(MENU_INJECTION_KEY); + if (!rootMenu) throwError(COMPONENT_NAME$8, "can not inject root menu"); + const subMenu = (0, vue.inject)(`${SUB_MENU_INJECTION_KEY}${parentMenu.value.uid}`); + if (!subMenu) throwError(COMPONENT_NAME$8, "can not inject sub menu"); + const items = (0, vue.ref)({}); + const subMenus = (0, vue.ref)({}); + let timeout; + const mouseInChild = (0, vue.ref)(false); + const verticalTitleRef = (0, vue.ref)(); + const vPopper = (0, vue.ref)(); + const isFirstLevel = (0, vue.computed)(() => subMenu.level === 0); + const currentPlacement = (0, vue.computed)(() => mode.value === "horizontal" && isFirstLevel.value ? "bottom-start" : "right-start"); + const subMenuTitleIcon = (0, vue.computed)(() => { + if (mode.value === "horizontal" && isFirstLevel.value || mode.value === "vertical" && !rootMenu.props.collapse) { + if (props.expandCloseIcon && props.expandOpenIcon) return opened.value ? props.expandOpenIcon : props.expandCloseIcon; + return arrow_down_default; + } else { + if (props.collapseCloseIcon && props.collapseOpenIcon) return opened.value ? props.collapseOpenIcon : props.collapseCloseIcon; + return arrow_right_default; + } + }); + const appendToBody = (0, vue.computed)(() => { + const value = props.teleported; + return isUndefined(value) ? isFirstLevel.value : value; + }); + const menuTransitionName = (0, vue.computed)(() => rootMenu.props.collapse ? `${nsMenu.namespace.value}-zoom-in-left` : `${nsMenu.namespace.value}-zoom-in-top`); + const fallbackPlacements = (0, vue.computed)(() => mode.value === "horizontal" && isFirstLevel.value ? [ + "bottom-start", + "bottom-end", + "top-start", + "top-end", + "right-start", + "left-start" + ] : [ + "right-start", + "right", + "right-end", + "left-start", + "bottom-start", + "bottom-end", + "top-start", + "top-end" + ]); + const opened = (0, vue.computed)(() => rootMenu.openedMenus.includes(props.index)); + const active = (0, vue.computed)(() => [...Object.values(items.value), ...Object.values(subMenus.value)].some(({ active }) => active)); + const mode = (0, vue.computed)(() => rootMenu.props.mode); + const persistent = (0, vue.computed)(() => rootMenu.props.persistent); + const item = (0, vue.reactive)({ + index: props.index, + indexPath, + active + }); + const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1); + const subMenuPopperOffset = (0, vue.computed)(() => props.popperOffset ?? rootMenu.props.popperOffset); + const subMenuPopperClass = (0, vue.computed)(() => props.popperClass ?? rootMenu.props.popperClass); + const subMenuPopperStyle = (0, vue.computed)(() => props.popperStyle ?? rootMenu.props.popperStyle); + const subMenuShowTimeout = (0, vue.computed)(() => props.showTimeout ?? rootMenu.props.showTimeout); + const subMenuHideTimeout = (0, vue.computed)(() => props.hideTimeout ?? rootMenu.props.hideTimeout); + const doDestroy = () => vPopper.value?.popperRef?.popperInstanceRef?.destroy(); + const handleCollapseToggle = (value) => { + if (!value) doDestroy(); + }; + const handleClick = () => { + if (rootMenu.props.menuTrigger === "hover" && rootMenu.props.mode === "horizontal" || rootMenu.props.collapse && rootMenu.props.mode === "vertical" || props.disabled) return; + rootMenu.handleSubMenuClick({ + index: props.index, + indexPath: indexPath.value, + active: active.value + }); + }; + const handleMouseenter = (event, showTimeout = subMenuShowTimeout.value) => { + if (event.type === "focus") return; + if (rootMenu.props.menuTrigger === "click" && rootMenu.props.mode === "horizontal" || !rootMenu.props.collapse && rootMenu.props.mode === "vertical" || props.disabled) { + subMenu.mouseInChild.value = true; + return; + } + subMenu.mouseInChild.value = true; + timeout?.(); + ({stop: timeout} = useTimeoutFn(() => { + rootMenu.openMenu(props.index, indexPath.value); + }, showTimeout)); + if (appendToBody.value) parentMenu.value.vnode.el?.dispatchEvent(new MouseEvent("mouseenter")); + if (event.type === "mouseenter" && event.target) (0, vue.nextTick)(() => { + focusElement(event.target, { preventScroll: true }); + }); + }; + const handleMouseleave = (deepDispatch = false) => { + if (rootMenu.props.menuTrigger === "click" && rootMenu.props.mode === "horizontal" || !rootMenu.props.collapse && rootMenu.props.mode === "vertical") { + subMenu.mouseInChild.value = false; + return; + } + timeout?.(); + subMenu.mouseInChild.value = false; + ({stop: timeout} = useTimeoutFn(() => !mouseInChild.value && rootMenu.closeMenu(props.index, indexPath.value), subMenuHideTimeout.value)); + if (appendToBody.value && deepDispatch) subMenu.handleMouseleave?.(true); + }; + (0, vue.watch)(() => rootMenu.props.collapse, (value) => handleCollapseToggle(Boolean(value))); + { + const addSubMenu = (item) => { + subMenus.value[item.index] = item; + }; + const removeSubMenu = (item) => { + delete subMenus.value[item.index]; + }; + (0, vue.provide)(`${SUB_MENU_INJECTION_KEY}${instance.uid}`, { + addSubMenu, + removeSubMenu, + handleMouseleave, + mouseInChild, + level: subMenu.level + 1 + }); + } + expose({ opened }); + (0, vue.onMounted)(() => { + rootMenu.addSubMenu(item); + subMenu.addSubMenu(item); + }); + (0, vue.onBeforeUnmount)(() => { + subMenu.removeSubMenu(item); + rootMenu.removeSubMenu(item); + }); + return () => { + const titleTag = [slots.title?.(), (0, vue.h)(ElIcon, { + class: nsSubMenu.e("icon-arrow"), + style: { transform: opened.value ? props.expandCloseIcon && props.expandOpenIcon || props.collapseCloseIcon && props.collapseOpenIcon && rootMenu.props.collapse ? "none" : "rotateZ(180deg)" : "none" } + }, { default: () => isString(subMenuTitleIcon.value) ? (0, vue.h)(instance.appContext.components[subMenuTitleIcon.value]) : (0, vue.h)(subMenuTitleIcon.value) })]; + const child = rootMenu.isMenuPopup ? (0, vue.h)(ElTooltip, { + ref: vPopper, + visible: opened.value, + effect: "light", + pure: true, + offset: subMenuPopperOffset.value, + showArrow: false, + persistent: persistent.value, + popperClass: subMenuPopperClass.value, + popperStyle: subMenuPopperStyle.value, + placement: currentPlacement.value, + teleported: appendToBody.value, + fallbackPlacements: fallbackPlacements.value, + transition: menuTransitionName.value, + gpuAcceleration: false + }, { + content: () => (0, vue.h)("div", { + class: [ + nsMenu.m(mode.value), + nsMenu.m("popup-container"), + subMenuPopperClass.value + ], + onMouseenter: (evt) => handleMouseenter(evt, 100), + onMouseleave: () => handleMouseleave(true), + onFocus: (evt) => handleMouseenter(evt, 100) + }, [(0, vue.h)("ul", { + class: [ + nsMenu.b(), + nsMenu.m("popup"), + nsMenu.m(`popup-${currentPlacement.value}`) + ], + style: ulStyle.value + }, [slots.default?.()])]), + default: () => (0, vue.h)("div", { + class: nsSubMenu.e("title"), + onClick: handleClick + }, titleTag) + }) : (0, vue.h)(vue.Fragment, {}, [(0, vue.h)("div", { + class: nsSubMenu.e("title"), + ref: verticalTitleRef, + onClick: handleClick + }, titleTag), (0, vue.h)(ElCollapseTransition, {}, { default: () => (0, vue.withDirectives)((0, vue.h)("ul", { + role: "menu", + class: [nsMenu.b(), nsMenu.m("inline")], + style: ulStyle.value + }, [slots.default?.()]), [[vue.vShow, opened.value]]) })]); + return (0, vue.h)("li", { + class: [ + nsSubMenu.b(), + nsSubMenu.is("active", active.value), + nsSubMenu.is("opened", opened.value), + nsSubMenu.is("disabled", props.disabled) + ], + role: "menuitem", + ariaHaspopup: true, + ariaExpanded: opened.value, + onMouseenter: handleMouseenter, + onMouseleave: () => handleMouseleave(), + onFocus: handleMouseenter + }, [child]); + }; + } + }); + +//#endregion +//#region ../../packages/components/menu/src/menu.ts + const menuProps = buildProps({ + mode: { + type: String, + values: ["horizontal", "vertical"], + default: "vertical" + }, + defaultActive: { + type: String, + default: "" + }, + defaultOpeneds: { + type: definePropType(Array), + default: () => mutable([]) + }, + uniqueOpened: Boolean, + router: Boolean, + menuTrigger: { + type: String, + values: ["hover", "click"], + default: "hover" + }, + collapse: Boolean, + backgroundColor: String, + textColor: String, + activeTextColor: String, + closeOnClickOutside: Boolean, + collapseTransition: { + type: Boolean, + default: true + }, + ellipsis: { + type: Boolean, + default: true + }, + popperOffset: { + type: Number, + default: 6 + }, + ellipsisIcon: { + type: iconPropType, + default: () => more_default + }, + popperEffect: { + type: definePropType(String), + default: "dark" + }, + popperClass: String, + popperStyle: { type: definePropType([String, Object]) }, + showTimeout: { + type: Number, + default: 300 + }, + hideTimeout: { + type: Number, + default: 300 + }, + persistent: { + type: Boolean, + default: true + } + }); + const checkIndexPath = (indexPath) => isArray$1(indexPath) && indexPath.every((path) => isString(path)); + const menuEmits = { + close: (index, indexPath) => isString(index) && checkIndexPath(indexPath), + open: (index, indexPath) => isString(index) && checkIndexPath(indexPath), + select: (index, indexPath, item, routerResult) => isString(index) && checkIndexPath(indexPath) && isObject$1(item) && (isUndefined(routerResult) || routerResult instanceof Promise) + }; + const DEFAULT_MORE_ITEM_WIDTH = 64; + var menu_default = (0, vue.defineComponent)({ + name: "ElMenu", + props: menuProps, + emits: menuEmits, + setup(props, { emit, slots, expose }) { + const instance = (0, vue.getCurrentInstance)(); + const router = instance.appContext.config.globalProperties.$router; + const menu = (0, vue.ref)(); + const subMenu = (0, vue.ref)(); + const nsMenu = useNamespace("menu"); + const nsSubMenu = useNamespace("sub-menu"); + let moreItemWidth = DEFAULT_MORE_ITEM_WIDTH; + const sliceIndex = (0, vue.ref)(-1); + const openedMenus = (0, vue.ref)(props.defaultOpeneds && !props.collapse ? props.defaultOpeneds.slice(0) : []); + const activeIndex = (0, vue.ref)(props.defaultActive); + const items = (0, vue.ref)({}); + const subMenus = (0, vue.ref)({}); + const isMenuPopup = (0, vue.computed)(() => props.mode === "horizontal" || props.mode === "vertical" && props.collapse); + const initMenu = () => { + const activeItem = activeIndex.value && items.value[activeIndex.value]; + if (!activeItem || props.mode === "horizontal" || props.collapse) return; + activeItem.indexPath.forEach((index) => { + const subMenu = subMenus.value[index]; + subMenu && openMenu(index, subMenu.indexPath); + }); + }; + const openMenu = (index, indexPath) => { + if (openedMenus.value.includes(index)) return; + if (props.uniqueOpened) openedMenus.value = openedMenus.value.filter((index) => indexPath.includes(index)); + openedMenus.value.push(index); + emit("open", index, indexPath); + }; + const close = (index) => { + const i = openedMenus.value.indexOf(index); + if (i !== -1) openedMenus.value.splice(i, 1); + }; + const closeMenu = (index, indexPath) => { + close(index); + emit("close", index, indexPath); + }; + const handleSubMenuClick = ({ index, indexPath }) => { + openedMenus.value.includes(index) ? closeMenu(index, indexPath) : openMenu(index, indexPath); + }; + const handleMenuItemClick = (menuItem) => { + if (props.mode === "horizontal" || props.collapse) openedMenus.value = []; + const { index, indexPath } = menuItem; + if (isNil(index) || isNil(indexPath)) return; + if (props.router && router) { + const route = menuItem.route || index; + const routerResult = router.push(route).then((res) => { + if (!res) activeIndex.value = index; + return res; + }); + emit("select", index, indexPath, { + index, + indexPath, + route + }, routerResult); + } else { + activeIndex.value = index; + emit("select", index, indexPath, { + index, + indexPath + }); + } + }; + const updateActiveIndex = (val) => { + const itemsInData = items.value; + activeIndex.value = (itemsInData[val] || activeIndex.value && itemsInData[activeIndex.value] || itemsInData[props.defaultActive])?.index ?? val; + }; + const calcMenuItemWidth = (menuItem) => { + const computedStyle = getComputedStyle(menuItem); + const marginLeft = Number.parseInt(computedStyle.marginLeft, 10); + const marginRight = Number.parseInt(computedStyle.marginRight, 10); + return menuItem.offsetWidth + marginLeft + marginRight || 0; + }; + const calcSliceIndex = () => { + if (!menu.value) return -1; + const items = Array.from(menu.value.childNodes).filter((item) => item.nodeName !== "#comment" && (item.nodeName !== "#text" || item.nodeValue)); + const computedMenuStyle = getComputedStyle(menu.value); + const paddingLeft = Number.parseInt(computedMenuStyle.paddingLeft, 10); + const paddingRight = Number.parseInt(computedMenuStyle.paddingRight, 10); + const menuWidth = menu.value.clientWidth - paddingLeft - paddingRight; + let calcWidth = 0; + let sliceIndex = 0; + items.forEach((item, index) => { + calcWidth += calcMenuItemWidth(item); + if (calcWidth <= menuWidth - moreItemWidth) sliceIndex = index + 1; + }); + return sliceIndex === items.length ? -1 : sliceIndex; + }; + const getIndexPath = (index) => subMenus.value[index].indexPath; + const debounce = (fn, wait = 33.34) => { + let timer; + return () => { + timer && clearTimeout(timer); + timer = setTimeout(() => { + fn(); + }, wait); + }; + }; + let isFirstTimeRender = true; + const handleResize = () => { + const el = unrefElement(subMenu); + if (el) moreItemWidth = calcMenuItemWidth(el) || DEFAULT_MORE_ITEM_WIDTH; + if (sliceIndex.value === calcSliceIndex()) return; + const callback = () => { + sliceIndex.value = -1; + (0, vue.nextTick)(() => { + sliceIndex.value = calcSliceIndex(); + }); + }; + isFirstTimeRender ? callback() : debounce(callback)(); + isFirstTimeRender = false; + }; + (0, vue.watch)(() => props.defaultActive, (currentActive) => { + if (!items.value[currentActive]) activeIndex.value = ""; + updateActiveIndex(currentActive); + }); + (0, vue.watch)(() => props.collapse, (value) => { + if (value) openedMenus.value = []; + }); + (0, vue.watch)(items.value, initMenu); + let resizeStopper; + (0, vue.watchEffect)(() => { + if (props.mode === "horizontal" && props.ellipsis) resizeStopper = useResizeObserver(menu, handleResize).stop; + else resizeStopper?.(); + }); + const mouseInChild = (0, vue.ref)(false); + { + const addSubMenu = (item) => { + subMenus.value[item.index] = item; + }; + const removeSubMenu = (item) => { + delete subMenus.value[item.index]; + }; + const addMenuItem = (item) => { + items.value[item.index] = item; + }; + const removeMenuItem = (item) => { + delete items.value[item.index]; + }; + (0, vue.provide)(MENU_INJECTION_KEY, (0, vue.reactive)({ + props, + openedMenus, + items, + subMenus, + activeIndex, + isMenuPopup, + addMenuItem, + removeMenuItem, + addSubMenu, + removeSubMenu, + openMenu, + closeMenu, + handleMenuItemClick, + handleSubMenuClick + })); + (0, vue.provide)(`${SUB_MENU_INJECTION_KEY}${instance.uid}`, { + addSubMenu, + removeSubMenu, + mouseInChild, + level: 0 + }); + } + (0, vue.onMounted)(() => { + if (props.mode === "horizontal") new Menu(instance.vnode.el, nsMenu.namespace.value); + }); + { + const open = (index) => { + const { indexPath } = subMenus.value[index]; + indexPath.forEach((i) => openMenu(i, indexPath)); + }; + expose({ + open, + close, + updateActiveIndex, + handleResize + }); + } + const ulStyle = useMenuCssVar(props, 0); + return () => { + let slot = slots.default?.() ?? []; + const vShowMore = []; + if (props.mode === "horizontal" && menu.value) { + const originalSlot = flattedChildren(slot).filter((vnode) => { + return vnode?.shapeFlag !== 8; + }); + const slotDefault = sliceIndex.value === -1 ? originalSlot : originalSlot.slice(0, sliceIndex.value); + const slotMore = sliceIndex.value === -1 ? [] : originalSlot.slice(sliceIndex.value); + if (slotMore?.length && props.ellipsis) { + slot = slotDefault; + vShowMore.push((0, vue.h)(sub_menu_default, { + ref: subMenu, + index: "sub-menu-more", + class: nsSubMenu.e("hide-arrow"), + popperOffset: props.popperOffset + }, { + title: () => (0, vue.h)(ElIcon, { class: nsSubMenu.e("icon-more") }, { default: () => (0, vue.h)(props.ellipsisIcon) }), + default: () => slotMore + })); + } + } + const directives = props.closeOnClickOutside ? [[ClickOutside, () => { + if (!openedMenus.value.length) return; + if (!mouseInChild.value) { + openedMenus.value.forEach((openedMenu) => emit("close", openedMenu, getIndexPath(openedMenu))); + openedMenus.value = []; + } + }]] : []; + const vMenu = (0, vue.withDirectives)((0, vue.h)("ul", { + key: String(props.collapse), + role: "menubar", + ref: menu, + style: ulStyle.value, + class: { + [nsMenu.b()]: true, + [nsMenu.m(props.mode)]: true, + [nsMenu.m("collapse")]: props.collapse + } + }, [...slot, ...vShowMore]), directives); + if (props.collapseTransition && props.mode === "vertical") return (0, vue.h)(menu_collapse_transition_default, () => vMenu); + return vMenu; + }; + } + }); + +//#endregion +//#region ../../packages/components/menu/src/menu-item.ts +/** + * @deprecated Removed after 3.0.0, Use `MenuItemProps` instead. + */ + const menuItemProps = buildProps({ + index: { + type: definePropType([String, null]), + default: null + }, + route: { type: definePropType([String, Object]) }, + disabled: Boolean + }); + const menuItemEmits = { click: (item) => isString(item.index) && isArray$1(item.indexPath) }; + +//#endregion +//#region ../../packages/components/menu/src/menu-item.vue?vue&type=script&setup=true&lang.ts + const COMPONENT_NAME$7 = "ElMenuItem"; + var menu_item_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$7, + __name: "menu-item", + props: menuItemProps, + emits: menuItemEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + isPropAbsent(props.index) && /* @__PURE__ */ debugWarn(COMPONENT_NAME$7, "Missing required prop: \"index\""); + const instance = (0, vue.getCurrentInstance)(); + const rootMenu = (0, vue.inject)(MENU_INJECTION_KEY); + const nsMenu = useNamespace("menu"); + const nsMenuItem = useNamespace("menu-item"); + if (!rootMenu) throwError(COMPONENT_NAME$7, "can not inject root menu"); + const { parentMenu, indexPath } = useMenu(instance, (0, vue.toRef)(props, "index")); + const subMenu = (0, vue.inject)(`${SUB_MENU_INJECTION_KEY}${parentMenu.value.uid}`); + if (!subMenu) throwError(COMPONENT_NAME$7, "can not inject sub menu"); + const active = (0, vue.computed)(() => props.index === rootMenu.activeIndex); + const item = (0, vue.reactive)({ + index: props.index, + indexPath, + active + }); + const handleClick = () => { + if (!props.disabled) { + rootMenu.handleMenuItemClick({ + index: props.index, + indexPath: indexPath.value, + route: props.route + }); + emit("click", item); + } + }; + (0, vue.onMounted)(() => { + subMenu.addSubMenu(item); + rootMenu.addMenuItem(item); + }); + (0, vue.onBeforeUnmount)(() => { + subMenu.removeSubMenu(item); + rootMenu.removeMenuItem(item); + }); + __expose({ + parentMenu, + rootMenu, + active, + nsMenu, + nsMenuItem, + handleClick + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + class: (0, vue.normalizeClass)([ + (0, vue.unref)(nsMenuItem).b(), + (0, vue.unref)(nsMenuItem).is("active", active.value), + (0, vue.unref)(nsMenuItem).is("disabled", __props.disabled) + ]), + role: "menuitem", + tabindex: "-1", + onClick: handleClick + }, [(0, vue.unref)(parentMenu).type.name === "ElMenu" && (0, vue.unref)(rootMenu).props.collapse && _ctx.$slots.title ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTooltip), { + key: 0, + effect: (0, vue.unref)(rootMenu).props.popperEffect, + placement: "right", + "fallback-placements": ["left"], + "popper-class": (0, vue.unref)(rootMenu).props.popperClass, + "popper-style": (0, vue.unref)(rootMenu).props.popperStyle, + persistent: (0, vue.unref)(rootMenu).props.persistent, + "focus-on-target": "" + }, { + content: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "title")]), + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(nsMenu).be("tooltip", "trigger")) }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2)]), + _: 3 + }, 8, [ + "effect", + "popper-class", + "popper-style", + "persistent" + ])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.renderSlot)(_ctx.$slots, "default"), (0, vue.renderSlot)(_ctx.$slots, "title")], 64))], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/menu/src/menu-item.vue + var menu_item_default = menu_item_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/menu/src/menu-item-group.ts +/** + * @deprecated Removed after 3.0.0, Use `MenuItemGroupProps` instead. + */ + const menuItemGroupProps = { title: String }; + +//#endregion +//#region ../../packages/components/menu/src/menu-item-group.vue?vue&type=script&setup=true&lang.ts + var menu_item_group_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElMenuItemGroup", + __name: "menu-item-group", + props: menuItemGroupProps, + setup(__props) { + const ns = useNamespace("menu-item-group"); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("title")) }, [!_ctx.$slots.title ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.title), 1)], 64)) : (0, vue.renderSlot)(_ctx.$slots, "title", { key: 1 })], 2), (0, vue.createElementVNode)("ul", null, [(0, vue.renderSlot)(_ctx.$slots, "default")])], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/menu/src/menu-item-group.vue + var menu_item_group_default = menu_item_group_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/menu/index.ts + const ElMenu = withInstall(menu_default, { + MenuItem: menu_item_default, + MenuItemGroup: menu_item_group_default, + SubMenu: sub_menu_default + }); + const ElMenuItem = withNoopInstall(menu_item_default); + const ElMenuItemGroup = withNoopInstall(menu_item_group_default); + const ElSubMenu = withNoopInstall(sub_menu_default); + +//#endregion +//#region ../../packages/components/page-header/src/page-header.ts +/** + * @deprecated Removed after 3.0.0, Use `PageHeaderProps` instead. + */ + const pageHeaderProps = buildProps({ + icon: { + type: iconPropType, + default: () => back_default + }, + title: String, + content: { + type: String, + default: "" + } + }); + const pageHeaderEmits = { back: () => true }; + +//#endregion +//#region ../../packages/components/page-header/src/page-header.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$30 = ["aria-label"]; + var page_header_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElPageHeader", + __name: "page-header", + props: pageHeaderProps, + emits: pageHeaderEmits, + setup(__props, { emit: __emit }) { + const emit = __emit; + const { t } = useLocale(); + const ns = useNamespace("page-header"); + function handleClick() { + emit("back"); + } + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).b(), + (0, vue.unref)(ns).is("contentful", !!_ctx.$slots.default), + { + [(0, vue.unref)(ns).m("has-breadcrumb")]: !!_ctx.$slots.breadcrumb, + [(0, vue.unref)(ns).m("has-extra")]: !!_ctx.$slots.extra + } + ]) }, [ + _ctx.$slots.breadcrumb ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("breadcrumb")) + }, [(0, vue.renderSlot)(_ctx.$slots, "breadcrumb")], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("header")) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("left")) }, [ + (0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("back")), + role: "button", + tabindex: "0", + onClick: handleClick + }, [__props.icon || _ctx.$slots.icon ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + "aria-label": __props.title || (0, vue.unref)(t)("el.pageHeader.title"), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("icon")) + }, [(0, vue.renderSlot)(_ctx.$slots, "icon", {}, () => [__props.icon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { key: 0 }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.icon)))]), + _: 1 + })) : (0, vue.createCommentVNode)("v-if", true)])], 10, _hoisted_1$30)) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("title")) }, [(0, vue.renderSlot)(_ctx.$slots, "title", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.title || (0, vue.unref)(t)("el.pageHeader.title")), 1)])], 2)], 2), + (0, vue.createVNode)((0, vue.unref)(ElDivider), { direction: "vertical" }), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("content")) }, [(0, vue.renderSlot)(_ctx.$slots, "content", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.content), 1)])], 2) + ], 2), _ctx.$slots.extra ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("extra")) + }, [(0, vue.renderSlot)(_ctx.$slots, "extra")], 2)) : (0, vue.createCommentVNode)("v-if", true)], 2), + _ctx.$slots.default ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("main")) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/page-header/src/page-header.vue + var page_header_default = page_header_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/page-header/index.ts + const ElPageHeader = withInstall(page_header_default); + +//#endregion +//#region ../../packages/components/pagination/src/constants.ts + const elPaginationKey = Symbol("elPaginationKey"); + +//#endregion +//#region ../../packages/components/pagination/src/components/prev.ts + const paginationPrevProps = buildProps({ + disabled: Boolean, + currentPage: { + type: Number, + default: 1 + }, + prevText: { type: String }, + prevIcon: { type: iconPropType } + }); + const paginationPrevEmits = { click: (evt) => evt instanceof MouseEvent }; + +//#endregion +//#region ../../packages/components/pagination/src/components/prev.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$29 = [ + "disabled", + "aria-label", + "aria-disabled" + ]; + const _hoisted_2$18 = { key: 0 }; + var prev_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElPaginationPrev", + __name: "prev", + props: paginationPrevProps, + emits: paginationPrevEmits, + setup(__props) { + const props = __props; + const { t } = useLocale(); + const internalDisabled = (0, vue.computed)(() => props.disabled || props.currentPage <= 1); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + type: "button", + class: "btn-prev", + disabled: internalDisabled.value, + "aria-label": _ctx.prevText || (0, vue.unref)(t)("el.pagination.prev"), + "aria-disabled": internalDisabled.value, + onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("click", $event)) + }, [_ctx.prevText ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_2$18, (0, vue.toDisplayString)(_ctx.prevText), 1)) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { key: 1 }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.prevIcon)))]), + _: 1 + }))], 8, _hoisted_1$29); + }; + } + }); + +//#endregion +//#region ../../packages/components/pagination/src/components/prev.vue + var prev_default = prev_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/pagination/src/components/next.ts + const paginationNextProps = buildProps({ + disabled: Boolean, + currentPage: { + type: Number, + default: 1 + }, + pageCount: { + type: Number, + default: 50 + }, + nextText: { type: String }, + nextIcon: { type: iconPropType } + }); + +//#endregion +//#region ../../packages/components/pagination/src/components/next.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$28 = [ + "disabled", + "aria-label", + "aria-disabled" + ]; + const _hoisted_2$17 = { key: 0 }; + var next_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElPaginationNext", + __name: "next", + props: paginationNextProps, + emits: ["click"], + setup(__props) { + const props = __props; + const { t } = useLocale(); + const internalDisabled = (0, vue.computed)(() => props.disabled || props.currentPage === props.pageCount || props.pageCount === 0); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + type: "button", + class: "btn-next", + disabled: internalDisabled.value, + "aria-label": _ctx.nextText || (0, vue.unref)(t)("el.pagination.next"), + "aria-disabled": internalDisabled.value, + onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("click", $event)) + }, [_ctx.nextText ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_2$17, (0, vue.toDisplayString)(_ctx.nextText), 1)) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { key: 1 }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.nextIcon)))]), + _: 1 + }))], 8, _hoisted_1$28); + }; + } + }); + +//#endregion +//#region ../../packages/components/pagination/src/components/next.vue + var next_default = next_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/pagination/src/usePagination.ts + const usePagination = () => (0, vue.inject)(elPaginationKey, {}); + +//#endregion +//#region ../../packages/components/pagination/src/components/sizes.ts + const paginationSizesProps = buildProps({ + pageSize: { + type: Number, + required: true + }, + pageSizes: { + type: definePropType(Array), + default: () => mutable([ + 10, + 20, + 30, + 40, + 50, + 100 + ]) + }, + popperClass: { type: String }, + popperStyle: { type: definePropType([String, Object]) }, + disabled: Boolean, + teleported: Boolean, + size: { + type: String, + values: componentSizes + }, + appendSizeTo: String + }); + +//#endregion +//#region ../../packages/components/pagination/src/components/sizes.vue?vue&type=script&setup=true&lang.ts + var sizes_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElPaginationSizes", + __name: "sizes", + props: paginationSizesProps, + emits: ["page-size-change"], + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const { t } = useLocale(); + const ns = useNamespace("pagination"); + const pagination = usePagination(); + const innerPageSize = (0, vue.ref)(props.pageSize); + (0, vue.watch)(() => props.pageSizes, (newVal, oldVal) => { + if (isEqual$1(newVal, oldVal)) return; + if (isArray$1(newVal)) emit("page-size-change", newVal.includes(props.pageSize) ? props.pageSize : props.pageSizes[0]); + }); + (0, vue.watch)(() => props.pageSize, (newVal) => { + innerPageSize.value = newVal; + }); + const innerPageSizes = (0, vue.computed)(() => props.pageSizes); + function handleChange(val) { + if (val !== innerPageSize.value) { + innerPageSize.value = val; + pagination.handleSizeChange?.(Number(val)); + } + } + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("sizes")) }, [(0, vue.createVNode)((0, vue.unref)(ElSelect), { + "model-value": innerPageSize.value, + disabled: _ctx.disabled, + "popper-class": _ctx.popperClass, + "popper-style": _ctx.popperStyle, + size: _ctx.size, + teleported: _ctx.teleported, + "validate-event": false, + "append-to": _ctx.appendSizeTo, + onChange: handleChange + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(innerPageSizes.value, (item) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElOption), { + key: item, + value: item, + label: item + (0, vue.unref)(t)("el.pagination.pagesize") + }, null, 8, ["value", "label"]); + }), 128))]), + _: 1 + }, 8, [ + "model-value", + "disabled", + "popper-class", + "popper-style", + "size", + "teleported", + "append-to" + ])], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/pagination/src/components/sizes.vue + var sizes_default = sizes_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/pagination/src/components/jumper.ts + const paginationJumperProps = buildProps({ size: { + type: String, + values: componentSizes + } }); + +//#endregion +//#region ../../packages/components/pagination/src/components/jumper.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$27 = ["disabled"]; + var jumper_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElPaginationJumper", + __name: "jumper", + props: paginationJumperProps, + setup(__props) { + const { t } = useLocale(); + const ns = useNamespace("pagination"); + const { pageCount, disabled, currentPage, changeEvent } = usePagination(); + const userInput = (0, vue.ref)(); + const innerValue = (0, vue.computed)(() => userInput.value ?? currentPage?.value); + function handleInput(val) { + userInput.value = val ? +val : ""; + } + function handleChange(val) { + val = Math.trunc(+val); + changeEvent?.(val); + userInput.value = void 0; + } + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("jump")), + disabled: (0, vue.unref)(disabled) + }, [ + (0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("goto")]) }, (0, vue.toDisplayString)((0, vue.unref)(t)("el.pagination.goto")), 3), + (0, vue.createVNode)((0, vue.unref)(ElInput), { + size: _ctx.size, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("editor"), (0, vue.unref)(ns).is("in-pagination")]), + min: 1, + max: (0, vue.unref)(pageCount), + disabled: (0, vue.unref)(disabled), + "model-value": innerValue.value, + "validate-event": false, + "aria-label": (0, vue.unref)(t)("el.pagination.page"), + type: "number", + "onUpdate:modelValue": handleInput, + onChange: handleChange + }, null, 8, [ + "size", + "class", + "max", + "disabled", + "model-value", + "aria-label" + ]), + (0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("classifier")]) }, (0, vue.toDisplayString)((0, vue.unref)(t)("el.pagination.pageClassifier")), 3) + ], 10, _hoisted_1$27); + }; + } + }); + +//#endregion +//#region ../../packages/components/pagination/src/components/jumper.vue + var jumper_default = jumper_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/pagination/src/components/total.ts + const paginationTotalProps = buildProps({ total: { + type: Number, + default: 1e3 + } }); + +//#endregion +//#region ../../packages/components/pagination/src/components/total.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$26 = ["disabled"]; + var total_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElPaginationTotal", + __name: "total", + props: paginationTotalProps, + setup(__props) { + const { t } = useLocale(); + const ns = useNamespace("pagination"); + const { disabled } = usePagination(); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("total")), + disabled: (0, vue.unref)(disabled) + }, (0, vue.toDisplayString)((0, vue.unref)(t)("el.pagination.total", { total: _ctx.total })), 11, _hoisted_1$26); + }; + } + }); + +//#endregion +//#region ../../packages/components/pagination/src/components/total.vue + var total_default = total_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/pagination/src/components/pager.ts + const paginationPagerProps = buildProps({ + currentPage: { + type: Number, + default: 1 + }, + pageCount: { + type: Number, + required: true + }, + pagerCount: { + type: Number, + default: 7 + }, + disabled: Boolean + }); + +//#endregion +//#region ../../packages/components/pagination/src/components/pager.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$25 = [ + "aria-current", + "aria-label", + "tabindex" + ]; + const _hoisted_2$16 = ["tabindex", "aria-label"]; + const _hoisted_3$7 = [ + "aria-current", + "aria-label", + "tabindex" + ]; + const _hoisted_4$5 = ["tabindex", "aria-label"]; + const _hoisted_5$3 = [ + "aria-current", + "aria-label", + "tabindex" + ]; + var pager_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElPaginationPager", + __name: "pager", + props: paginationPagerProps, + emits: [CHANGE_EVENT], + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const nsPager = useNamespace("pager"); + const nsIcon = useNamespace("icon"); + const { t } = useLocale(); + const showPrevMore = (0, vue.ref)(false); + const showNextMore = (0, vue.ref)(false); + const quickPrevHover = (0, vue.ref)(false); + const quickNextHover = (0, vue.ref)(false); + const quickPrevFocus = (0, vue.ref)(false); + const quickNextFocus = (0, vue.ref)(false); + const pagers = (0, vue.computed)(() => { + const pagerCount = props.pagerCount; + const halfPagerCount = (pagerCount - 1) / 2; + const currentPage = Number(props.currentPage); + const pageCount = Number(props.pageCount); + let showPrevMore = false; + let showNextMore = false; + if (pageCount > pagerCount) { + if (currentPage > pagerCount - halfPagerCount) showPrevMore = true; + if (currentPage < pageCount - halfPagerCount) showNextMore = true; + } + const array = []; + if (showPrevMore && !showNextMore) { + const startPage = pageCount - (pagerCount - 2); + for (let i = startPage; i < pageCount; i++) array.push(i); + } else if (!showPrevMore && showNextMore) for (let i = 2; i < pagerCount; i++) array.push(i); + else if (showPrevMore && showNextMore) { + const offset = Math.floor(pagerCount / 2) - 1; + for (let i = currentPage - offset; i <= currentPage + offset; i++) array.push(i); + } else for (let i = 2; i < pageCount; i++) array.push(i); + return array; + }); + const prevMoreKls = (0, vue.computed)(() => [ + "more", + "btn-quickprev", + nsIcon.b(), + nsPager.is("disabled", props.disabled) + ]); + const nextMoreKls = (0, vue.computed)(() => [ + "more", + "btn-quicknext", + nsIcon.b(), + nsPager.is("disabled", props.disabled) + ]); + const tabindex = (0, vue.computed)(() => props.disabled ? -1 : 0); + (0, vue.watch)(() => [ + props.pageCount, + props.pagerCount, + props.currentPage + ], ([pageCount, pagerCount, currentPage]) => { + const halfPagerCount = (pagerCount - 1) / 2; + let showPrev = false; + let showNext = false; + if (pageCount > pagerCount) { + showPrev = currentPage > pagerCount - halfPagerCount; + showNext = currentPage < pageCount - halfPagerCount; + } + quickPrevHover.value &&= showPrev; + quickNextHover.value &&= showNext; + showPrevMore.value = showPrev; + showNextMore.value = showNext; + }, { immediate: true }); + function onMouseEnter(forward = false) { + if (props.disabled) return; + if (forward) quickPrevHover.value = true; + else quickNextHover.value = true; + } + function onFocus(forward = false) { + if (forward) quickPrevFocus.value = true; + else quickNextFocus.value = true; + } + function onEnter(e) { + const target = e.target; + if (target.tagName.toLowerCase() === "li" && Array.from(target.classList).includes("number")) { + const newPage = Number(target.textContent); + if (newPage !== props.currentPage) emit(CHANGE_EVENT, newPage); + } else if (target.tagName.toLowerCase() === "li" && Array.from(target.classList).includes("more")) onPagerClick(e); + } + function onPagerClick(event) { + const target = event.target; + if (target.tagName.toLowerCase() === "ul" || props.disabled) return; + let newPage = Number(target.textContent); + const pageCount = props.pageCount; + const currentPage = props.currentPage; + const pagerCountOffset = props.pagerCount - 2; + if (target.className.includes("more")) { + if (target.className.includes("quickprev")) newPage = currentPage - pagerCountOffset; + else if (target.className.includes("quicknext")) newPage = currentPage + pagerCountOffset; + } + if (!Number.isNaN(+newPage)) { + if (newPage < 1) newPage = 1; + if (newPage > pageCount) newPage = pageCount; + } + if (newPage !== currentPage) emit(CHANGE_EVENT, newPage); + } + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("ul", { + class: (0, vue.normalizeClass)((0, vue.unref)(nsPager).b()), + onClick: onPagerClick, + onKeyup: (0, vue.withKeys)(onEnter, ["enter"]) + }, [ + _ctx.pageCount > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + key: 0, + class: (0, vue.normalizeClass)([[(0, vue.unref)(nsPager).is("active", _ctx.currentPage === 1), (0, vue.unref)(nsPager).is("disabled", _ctx.disabled)], "number"]), + "aria-current": _ctx.currentPage === 1, + "aria-label": (0, vue.unref)(t)("el.pagination.currentPage", { pager: 1 }), + tabindex: tabindex.value + }, " 1 ", 10, _hoisted_1$25)) : (0, vue.createCommentVNode)("v-if", true), + showPrevMore.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + key: 1, + class: (0, vue.normalizeClass)(prevMoreKls.value), + tabindex: tabindex.value, + "aria-label": (0, vue.unref)(t)("el.pagination.prevPages", { pager: _ctx.pagerCount - 2 }), + onMouseenter: _cache[0] || (_cache[0] = ($event) => onMouseEnter(true)), + onMouseleave: _cache[1] || (_cache[1] = ($event) => quickPrevHover.value = false), + onFocus: _cache[2] || (_cache[2] = ($event) => onFocus(true)), + onBlur: _cache[3] || (_cache[3] = ($event) => quickPrevFocus.value = false) + }, [(quickPrevHover.value || quickPrevFocus.value) && !_ctx.disabled ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(d_arrow_left_default), { key: 0 })) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(more_filled_default), { key: 1 }))], 42, _hoisted_2$16)) : (0, vue.createCommentVNode)("v-if", true), + ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(pagers.value, (pager) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + key: pager, + class: (0, vue.normalizeClass)([[(0, vue.unref)(nsPager).is("active", _ctx.currentPage === pager), (0, vue.unref)(nsPager).is("disabled", _ctx.disabled)], "number"]), + "aria-current": _ctx.currentPage === pager, + "aria-label": (0, vue.unref)(t)("el.pagination.currentPage", { pager }), + tabindex: tabindex.value + }, (0, vue.toDisplayString)(pager), 11, _hoisted_3$7); + }), 128)), + showNextMore.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + key: 2, + class: (0, vue.normalizeClass)(nextMoreKls.value), + tabindex: tabindex.value, + "aria-label": (0, vue.unref)(t)("el.pagination.nextPages", { pager: _ctx.pagerCount - 2 }), + onMouseenter: _cache[4] || (_cache[4] = ($event) => onMouseEnter()), + onMouseleave: _cache[5] || (_cache[5] = ($event) => quickNextHover.value = false), + onFocus: _cache[6] || (_cache[6] = ($event) => onFocus()), + onBlur: _cache[7] || (_cache[7] = ($event) => quickNextFocus.value = false) + }, [(quickNextHover.value || quickNextFocus.value) && !_ctx.disabled ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(d_arrow_right_default), { key: 0 })) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(more_filled_default), { key: 1 }))], 42, _hoisted_4$5)) : (0, vue.createCommentVNode)("v-if", true), + _ctx.pageCount > 1 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + key: 3, + class: (0, vue.normalizeClass)([[(0, vue.unref)(nsPager).is("active", _ctx.currentPage === _ctx.pageCount), (0, vue.unref)(nsPager).is("disabled", _ctx.disabled)], "number"]), + "aria-current": _ctx.currentPage === _ctx.pageCount, + "aria-label": (0, vue.unref)(t)("el.pagination.currentPage", { pager: _ctx.pageCount }), + tabindex: tabindex.value + }, (0, vue.toDisplayString)(_ctx.pageCount), 11, _hoisted_5$3)) : (0, vue.createCommentVNode)("v-if", true) + ], 34); + }; + } + }); + +//#endregion +//#region ../../packages/components/pagination/src/components/pager.vue + var pager_default = pager_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/pagination/src/pagination.ts +/** + * It it user's responsibility to guarantee that the value of props.total... is number + * (same as pageSize, defaultPageSize, currentPage, defaultCurrentPage, pageCount) + * Otherwise we can reasonable infer that the corresponding field is absent + */ + const isAbsent = (v) => typeof v !== "number"; + const paginationProps = buildProps({ + pageSize: Number, + defaultPageSize: Number, + total: Number, + pageCount: Number, + pagerCount: { + type: Number, + validator: (value) => { + return isNumber(value) && Math.trunc(value) === value && value > 4 && value < 22 && value % 2 === 1; + }, + default: 7 + }, + currentPage: Number, + defaultCurrentPage: Number, + layout: { + type: String, + default: [ + "prev", + "pager", + "next", + "jumper", + "->", + "total" + ].join(", ") + }, + pageSizes: { + type: definePropType(Array), + default: () => mutable([ + 10, + 20, + 30, + 40, + 50, + 100 + ]) + }, + popperClass: { + type: String, + default: "" + }, + popperStyle: { type: definePropType([String, Object]) }, + prevText: { + type: String, + default: "" + }, + prevIcon: { + type: iconPropType, + default: () => arrow_left_default + }, + nextText: { + type: String, + default: "" + }, + nextIcon: { + type: iconPropType, + default: () => arrow_right_default + }, + teleported: { + type: Boolean, + default: true + }, + small: Boolean, + size: useSizeProp, + background: Boolean, + disabled: Boolean, + hideOnSinglePage: Boolean, + appendSizeTo: String + }); + const paginationEmits = { + "update:current-page": (val) => isNumber(val), + "update:page-size": (val) => isNumber(val), + "size-change": (val) => isNumber(val), + change: (currentPage, pageSize) => isNumber(currentPage) && isNumber(pageSize), + "current-change": (val) => isNumber(val), + "prev-click": (val) => isNumber(val), + "next-click": (val) => isNumber(val) + }; + const componentName = "ElPagination"; + var pagination_default = (0, vue.defineComponent)({ + name: componentName, + props: paginationProps, + emits: paginationEmits, + setup(props, { emit, slots }) { + const { t } = useLocale(); + const ns = useNamespace("pagination"); + const vnodeProps = (0, vue.getCurrentInstance)().vnode.props || {}; + const _globalSize = useGlobalSize(); + const _size = (0, vue.computed)(() => props.small ? "small" : props.size ?? _globalSize.value); + useDeprecated({ + from: "small", + replacement: "size", + version: "3.0.0", + scope: "el-pagination", + ref: "https://element-plus.org/zh-CN/component/pagination.html" + }, (0, vue.computed)(() => !!props.small)); + const hasCurrentPageListener = "onUpdate:currentPage" in vnodeProps || "onUpdate:current-page" in vnodeProps || "onCurrentChange" in vnodeProps; + const hasPageSizeListener = "onUpdate:pageSize" in vnodeProps || "onUpdate:page-size" in vnodeProps || "onSizeChange" in vnodeProps; + const assertValidUsage = (0, vue.computed)(() => { + if (isAbsent(props.total) && isAbsent(props.pageCount)) return false; + if (!isAbsent(props.currentPage) && !hasCurrentPageListener) return false; + if (props.layout.includes("sizes")) { + if (!isAbsent(props.pageCount)) { + if (!hasPageSizeListener) return false; + } else if (!isAbsent(props.total)) { + if (!isAbsent(props.pageSize)) { + if (!hasPageSizeListener) return false; + } + } + } + return true; + }); + const innerPageSize = (0, vue.ref)(isAbsent(props.defaultPageSize) ? 10 : props.defaultPageSize); + const innerCurrentPage = (0, vue.ref)(isAbsent(props.defaultCurrentPage) ? 1 : props.defaultCurrentPage); + const pageSizeBridge = (0, vue.computed)({ + get() { + return isAbsent(props.pageSize) ? innerPageSize.value : props.pageSize; + }, + set(v) { + if (isAbsent(props.pageSize)) innerPageSize.value = v; + if (hasPageSizeListener) { + emit("update:page-size", v); + emit("size-change", v); + } + } + }); + const pageCountBridge = (0, vue.computed)(() => { + let pageCount = 0; + if (!isAbsent(props.pageCount)) pageCount = props.pageCount; + else if (!isAbsent(props.total)) pageCount = Math.max(1, Math.ceil(props.total / pageSizeBridge.value)); + return pageCount; + }); + const currentPageBridge = (0, vue.computed)({ + get() { + return isAbsent(props.currentPage) ? innerCurrentPage.value : props.currentPage; + }, + set(v) { + let newCurrentPage = v; + if (v < 1) newCurrentPage = 1; + else if (v > pageCountBridge.value) newCurrentPage = pageCountBridge.value; + if (isAbsent(props.currentPage)) innerCurrentPage.value = newCurrentPage; + if (hasCurrentPageListener) { + emit("update:current-page", newCurrentPage); + emit("current-change", newCurrentPage); + } + } + }); + (0, vue.watch)(pageCountBridge, (val) => { + if (currentPageBridge.value > val) currentPageBridge.value = val; + }); + (0, vue.watch)([currentPageBridge, pageSizeBridge], (value) => { + emit(CHANGE_EVENT, ...value); + }, { flush: "post" }); + function handleCurrentChange(val) { + currentPageBridge.value = val; + } + function handleSizeChange(val) { + pageSizeBridge.value = val; + const newPageCount = pageCountBridge.value; + if (currentPageBridge.value > newPageCount) currentPageBridge.value = newPageCount; + } + function prev() { + if (props.disabled) return; + currentPageBridge.value -= 1; + emit("prev-click", currentPageBridge.value); + } + function next() { + if (props.disabled) return; + currentPageBridge.value += 1; + emit("next-click", currentPageBridge.value); + } + function addClass(element, cls) { + if (element) { + if (!element.props) element.props = {}; + element.props.class = [element.props.class, cls].join(" "); + } + } + (0, vue.provide)(elPaginationKey, { + pageCount: pageCountBridge, + disabled: (0, vue.computed)(() => props.disabled), + currentPage: currentPageBridge, + changeEvent: handleCurrentChange, + handleSizeChange + }); + return () => { + if (!assertValidUsage.value) { + /* @__PURE__ */ debugWarn(componentName, t("el.pagination.deprecationWarning")); + return null; + } + if (!props.layout) return null; + if (props.hideOnSinglePage && pageCountBridge.value <= 1) return null; + const rootChildren = []; + const rightWrapperChildren = []; + const rightWrapperRoot = (0, vue.h)("div", { class: ns.e("rightwrapper") }, rightWrapperChildren); + const TEMPLATE_MAP = { + prev: (0, vue.h)(prev_default, { + disabled: props.disabled, + currentPage: currentPageBridge.value, + prevText: props.prevText, + prevIcon: props.prevIcon, + onClick: prev + }), + jumper: (0, vue.h)(jumper_default, { size: _size.value }), + pager: (0, vue.h)(pager_default, { + currentPage: currentPageBridge.value, + pageCount: pageCountBridge.value, + pagerCount: props.pagerCount, + onChange: handleCurrentChange, + disabled: props.disabled + }), + next: (0, vue.h)(next_default, { + disabled: props.disabled, + currentPage: currentPageBridge.value, + pageCount: pageCountBridge.value, + nextText: props.nextText, + nextIcon: props.nextIcon, + onClick: next + }), + sizes: (0, vue.h)(sizes_default, { + pageSize: pageSizeBridge.value, + pageSizes: props.pageSizes, + popperClass: props.popperClass, + popperStyle: props.popperStyle, + disabled: props.disabled, + teleported: props.teleported, + size: _size.value, + appendSizeTo: props.appendSizeTo + }), + slot: slots?.default?.() ?? null, + total: (0, vue.h)(total_default, { total: isAbsent(props.total) ? 0 : props.total }) + }; + const components = props.layout.split(",").map((item) => item.trim()); + let haveRightWrapper = false; + components.forEach((c) => { + if (c === "->") { + haveRightWrapper = true; + return; + } + if (!haveRightWrapper) rootChildren.push(TEMPLATE_MAP[c]); + else rightWrapperChildren.push(TEMPLATE_MAP[c]); + }); + addClass(rootChildren[0], ns.is("first")); + addClass(rootChildren[rootChildren.length - 1], ns.is("last")); + if (haveRightWrapper && rightWrapperChildren.length > 0) { + addClass(rightWrapperChildren[0], ns.is("first")); + addClass(rightWrapperChildren[rightWrapperChildren.length - 1], ns.is("last")); + rootChildren.push(rightWrapperRoot); + } + return (0, vue.h)("div", { class: [ + ns.b(), + ns.is("background", props.background), + ns.m(_size.value) + ] }, rootChildren); + }; + } + }); + +//#endregion +//#region ../../packages/components/pagination/index.ts + const ElPagination = withInstall(pagination_default); + +//#endregion +//#region ../../packages/components/popconfirm/src/popconfirm.ts +/** + * @deprecated Removed after 3.0.0, Use `PopconfirmProps` instead. + */ + const popconfirmProps = buildProps({ + title: String, + confirmButtonText: String, + cancelButtonText: String, + confirmButtonType: { + type: String, + values: buttonTypes, + default: "primary" + }, + cancelButtonType: { + type: String, + values: buttonTypes, + default: "text" + }, + icon: { + type: iconPropType, + default: () => question_filled_default + }, + iconColor: { + type: String, + default: "#f90" + }, + hideIcon: Boolean, + hideAfter: { + type: Number, + default: 200 + }, + effect: { + ...useTooltipContentProps.effect, + default: "light" + }, + teleported: useTooltipContentProps.teleported, + persistent: useTooltipContentProps.persistent, + width: { + type: [String, Number], + default: 150 + }, + virtualTriggering: useTooltipTriggerProps.virtualTriggering, + virtualRef: useTooltipTriggerProps.virtualRef + }); + const popconfirmEmits = { + confirm: (e) => e instanceof MouseEvent, + cancel: (e) => e instanceof MouseEvent + }; + +//#endregion +//#region ../../packages/components/popconfirm/src/popconfirm.vue?vue&type=script&setup=true&lang.ts + var popconfirm_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElPopconfirm", + __name: "popconfirm", + props: popconfirmProps, + emits: popconfirmEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const { t } = useLocale(); + const ns = useNamespace("popconfirm"); + const tooltipRef = (0, vue.ref)(); + const rootRef = (0, vue.ref)(); + const popperRef = (0, vue.computed)(() => { + return (0, vue.unref)(tooltipRef)?.popperRef; + }); + const showPopper = () => { + rootRef.value?.focus?.(); + }; + const hidePopper = () => { + tooltipRef.value?.onClose?.(); + }; + const style = (0, vue.computed)(() => { + return { width: addUnit(props.width) }; + }); + const confirm = (e) => { + emit("confirm", e); + hidePopper(); + }; + const cancel = (e) => { + emit("cancel", e); + hidePopper(); + }; + const finalConfirmButtonText = (0, vue.computed)(() => props.confirmButtonText || t("el.popconfirm.confirmButtonText")); + const finalCancelButtonText = (0, vue.computed)(() => props.cancelButtonText || t("el.popconfirm.cancelButtonText")); + __expose({ + popperRef, + hide: hidePopper + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTooltip), (0, vue.mergeProps)({ + ref_key: "tooltipRef", + ref: tooltipRef, + trigger: "click", + effect: __props.effect + }, _ctx.$attrs, { + "virtual-triggering": __props.virtualTriggering, + "virtual-ref": __props.virtualRef, + "popper-class": `${(0, vue.unref)(ns).namespace.value}-popover`, + "popper-style": style.value, + teleported: __props.teleported, + "fallback-placements": [ + "bottom", + "top", + "right", + "left" + ], + "hide-after": __props.hideAfter, + persistent: __props.persistent, + loop: "", + onShow: showPopper + }), { + content: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + ref_key: "rootRef", + ref: rootRef, + tabindex: "-1", + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()) + }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("main")) }, [!__props.hideIcon && __props.icon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("icon")), + style: (0, vue.normalizeStyle)({ color: __props.iconColor }) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.icon)))]), + _: 1 + }, 8, ["class", "style"])) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createTextVNode)(" " + (0, vue.toDisplayString)(__props.title), 1)], 2), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("action")) }, [(0, vue.renderSlot)(_ctx.$slots, "actions", { + confirm, + cancel + }, () => [(0, vue.createVNode)((0, vue.unref)(ElButton), { + size: "small", + type: __props.cancelButtonType === "text" ? "" : __props.cancelButtonType, + text: __props.cancelButtonType === "text", + onClick: cancel + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)(finalCancelButtonText.value), 1)]), + _: 1 + }, 8, ["type", "text"]), (0, vue.createVNode)((0, vue.unref)(ElButton), { + size: "small", + type: __props.confirmButtonType === "text" ? "" : __props.confirmButtonType, + text: __props.confirmButtonType === "text", + onClick: confirm + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)(finalConfirmButtonText.value), 1)]), + _: 1 + }, 8, ["type", "text"])])], 2)], 2)]), + default: (0, vue.withCtx)(() => [_ctx.$slots.reference ? (0, vue.renderSlot)(_ctx.$slots, "reference", { key: 0 }) : (0, vue.createCommentVNode)("v-if", true)]), + _: 3 + }, 16, [ + "effect", + "virtual-triggering", + "virtual-ref", + "popper-class", + "popper-style", + "teleported", + "hide-after", + "persistent" + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/popconfirm/src/popconfirm.vue + var popconfirm_default = popconfirm_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/popconfirm/index.ts + const ElPopconfirm = withInstall(popconfirm_default); + +//#endregion +//#region ../../packages/components/popover/src/popover.ts +/** + * @deprecated Removed after 3.0.0, Use `PopoverProps` instead. + */ + const popoverProps = buildProps({ + trigger: useTooltipTriggerProps.trigger, + triggerKeys: useTooltipTriggerProps.triggerKeys, + placement: dropdownProps.placement, + disabled: useTooltipTriggerProps.disabled, + visible: useTooltipContentProps.visible, + transition: useTooltipContentProps.transition, + popperOptions: dropdownProps.popperOptions, + tabindex: dropdownProps.tabindex, + content: useTooltipContentProps.content, + popperStyle: useTooltipContentProps.popperStyle, + popperClass: useTooltipContentProps.popperClass, + enterable: { + ...useTooltipContentProps.enterable, + default: true + }, + effect: { + ...useTooltipContentProps.effect, + default: "light" + }, + teleported: useTooltipContentProps.teleported, + appendTo: useTooltipContentProps.appendTo, + title: String, + width: { + type: [String, Number], + default: 150 + }, + offset: { + type: Number, + default: void 0 + }, + showAfter: { + type: Number, + default: 0 + }, + hideAfter: { + type: Number, + default: 200 + }, + autoClose: { + type: Number, + default: 0 + }, + showArrow: { + type: Boolean, + default: true + }, + persistent: { + type: Boolean, + default: true + }, + "onUpdate:visible": { type: Function } + }); + const popoverEmits = { + "update:visible": (value) => isBoolean(value), + "before-enter": () => true, + "before-leave": () => true, + "after-enter": () => true, + "after-leave": () => true + }; + /** + * @description default values for PopoverProps + */ + const popoverPropsDefaults = { + trigger: "hover", + triggerKeys: () => [ + EVENT_CODE.enter, + EVENT_CODE.numpadEnter, + EVENT_CODE.space + ], + placement: "bottom", + visible: null, + popperOptions: () => ({}), + tabindex: 0, + content: "", + popperStyle: void 0, + enterable: true, + effect: "light", + teleported: true, + width: 150, + offset: void 0, + showAfter: 0, + hideAfter: 200, + autoClose: 0, + showArrow: true, + persistent: true + }; + +//#endregion +//#region ../../packages/components/popover/src/popover.vue?vue&type=script&setup=true&lang.ts + const updateEventKeyRaw = `onUpdate:visible`; + var popover_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElPopover", + __name: "popover", + props: popoverProps, + emits: popoverEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const onUpdateVisible = (0, vue.computed)(() => { + return props[updateEventKeyRaw]; + }); + const ns = useNamespace("popover"); + const tooltipRef = (0, vue.ref)(); + const popperRef = (0, vue.computed)(() => { + return (0, vue.unref)(tooltipRef)?.popperRef; + }); + const style = (0, vue.computed)(() => { + return [{ width: addUnit(props.width) }, props.popperStyle]; + }); + const kls = (0, vue.computed)(() => { + return [ + ns.b(), + props.popperClass, + { [ns.m("plain")]: !!props.content } + ]; + }); + const gpuAcceleration = (0, vue.computed)(() => { + return props.transition === `${ns.namespace.value}-fade-in-linear`; + }); + const hide = () => { + tooltipRef.value?.hide(); + }; + const beforeEnter = () => { + emit("before-enter"); + }; + const beforeLeave = () => { + emit("before-leave"); + }; + const afterEnter = () => { + emit("after-enter"); + }; + const afterLeave = () => { + emit("update:visible", false); + emit("after-leave"); + }; + __expose({ + popperRef, + hide + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElTooltip), (0, vue.mergeProps)({ + ref_key: "tooltipRef", + ref: tooltipRef + }, _ctx.$attrs, { + trigger: __props.trigger, + "trigger-keys": __props.triggerKeys, + placement: __props.placement, + disabled: __props.disabled, + visible: __props.visible, + transition: __props.transition, + "popper-options": __props.popperOptions, + tabindex: __props.tabindex, + content: __props.content, + offset: __props.offset, + "show-after": __props.showAfter, + "hide-after": __props.hideAfter, + "auto-close": __props.autoClose, + "show-arrow": __props.showArrow, + "aria-label": __props.title, + effect: __props.effect, + enterable: __props.enterable, + "popper-class": kls.value, + "popper-style": style.value, + teleported: __props.teleported, + "append-to": __props.appendTo, + persistent: __props.persistent, + "gpu-acceleration": gpuAcceleration.value, + "onUpdate:visible": onUpdateVisible.value, + onBeforeShow: beforeEnter, + onBeforeHide: beforeLeave, + onShow: afterEnter, + onHide: afterLeave + }), { + content: (0, vue.withCtx)(() => [__props.title ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("title")), + role: "title" + }, (0, vue.toDisplayString)(__props.title), 3)) : (0, vue.createCommentVNode)("v-if", true), (0, vue.renderSlot)(_ctx.$slots, "default", { hide }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.content), 1)])]), + default: (0, vue.withCtx)(() => [_ctx.$slots.reference ? (0, vue.renderSlot)(_ctx.$slots, "reference", { key: 0 }) : (0, vue.createCommentVNode)("v-if", true)]), + _: 3 + }, 16, [ + "trigger", + "trigger-keys", + "placement", + "disabled", + "visible", + "transition", + "popper-options", + "tabindex", + "content", + "offset", + "show-after", + "hide-after", + "auto-close", + "show-arrow", + "aria-label", + "effect", + "enterable", + "popper-class", + "popper-style", + "teleported", + "append-to", + "persistent", + "gpu-acceleration", + "onUpdate:visible" + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/popover/src/popover.vue + var popover_default = popover_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/popover/src/directive.ts + const attachEvents = (el, binding) => { + const popover = (binding.arg || binding.value)?.popperRef; + if (popover) popover.triggerRef = el; + }; + var directive_default = { + mounted(el, binding) { + attachEvents(el, binding); + }, + updated(el, binding) { + attachEvents(el, binding); + } + }; + const VPopover = "popover"; + +//#endregion +//#region ../../packages/components/popover/index.ts + const ElPopoverDirective = withInstallDirective(directive_default, VPopover); + const ElPopover = withInstall(popover_default, { directive: ElPopoverDirective }); + +//#endregion +//#region ../../packages/components/progress/src/progress.ts +/** + * @deprecated Removed after 3.0.0, Use `ProgressProps` instead. + */ + const progressProps = buildProps({ + type: { + type: String, + default: "line", + values: [ + "line", + "circle", + "dashboard" + ] + }, + percentage: { + type: Number, + default: 0, + validator: (val) => val >= 0 && val <= 100 + }, + status: { + type: String, + default: "", + values: [ + "", + "success", + "exception", + "warning" + ] + }, + indeterminate: Boolean, + duration: { + type: Number, + default: 3 + }, + strokeWidth: { + type: Number, + default: 6 + }, + strokeLinecap: { + type: definePropType(String), + default: "round" + }, + textInside: Boolean, + width: { + type: Number, + default: 126 + }, + showText: { + type: Boolean, + default: true + }, + color: { + type: definePropType([ + String, + Array, + Function + ]), + default: "" + }, + striped: Boolean, + stripedFlow: Boolean, + format: { + type: definePropType(Function), + default: (percentage) => `${percentage}%` + } + }); + +//#endregion +//#region ../../packages/components/progress/src/progress.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$24 = ["aria-valuenow"]; + const _hoisted_2$15 = { viewBox: "0 0 100 100" }; + const _hoisted_3$6 = [ + "d", + "stroke", + "stroke-linecap", + "stroke-width" + ]; + const _hoisted_4$4 = [ + "d", + "stroke", + "opacity", + "stroke-linecap", + "stroke-width" + ]; + const _hoisted_5$2 = { key: 0 }; + var progress_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElProgress", + __name: "progress", + props: progressProps, + setup(__props) { + const STATUS_COLOR_MAP = { + success: "#13ce66", + exception: "#ff4949", + warning: "#e6a23c", + default: "#20a0ff" + }; + const props = __props; + const ns = useNamespace("progress"); + const barStyle = (0, vue.computed)(() => { + const barStyle = { + width: `${props.percentage}%`, + animationDuration: `${props.duration}s` + }; + const color = getCurrentColor(props.percentage); + if (color.includes("gradient")) barStyle.background = color; + else barStyle.backgroundColor = color; + return barStyle; + }); + const relativeStrokeWidth = (0, vue.computed)(() => (props.strokeWidth / props.width * 100).toFixed(1)); + const radius = (0, vue.computed)(() => { + if (["circle", "dashboard"].includes(props.type)) return Number.parseInt(`${50 - Number.parseFloat(relativeStrokeWidth.value) / 2}`, 10); + return 0; + }); + const trackPath = (0, vue.computed)(() => { + const r = radius.value; + const isDashboard = props.type === "dashboard"; + return ` + M 50 50 + m 0 ${isDashboard ? "" : "-"}${r} + a ${r} ${r} 0 1 1 0 ${isDashboard ? "-" : ""}${r * 2} + a ${r} ${r} 0 1 1 0 ${isDashboard ? "" : "-"}${r * 2} + `; + }); + const perimeter = (0, vue.computed)(() => 2 * Math.PI * radius.value); + const rate = (0, vue.computed)(() => props.type === "dashboard" ? .75 : 1); + const strokeDashoffset = (0, vue.computed)(() => { + return `${-1 * perimeter.value * (1 - rate.value) / 2}px`; + }); + const trailPathStyle = (0, vue.computed)(() => ({ + strokeDasharray: `${perimeter.value * rate.value}px, ${perimeter.value}px`, + strokeDashoffset: strokeDashoffset.value + })); + const circlePathStyle = (0, vue.computed)(() => ({ + strokeDasharray: `${perimeter.value * rate.value * (props.percentage / 100)}px, ${perimeter.value}px`, + strokeDashoffset: strokeDashoffset.value, + transition: "stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s" + })); + const stroke = (0, vue.computed)(() => { + let ret; + if (props.color) ret = getCurrentColor(props.percentage); + else ret = STATUS_COLOR_MAP[props.status] || STATUS_COLOR_MAP.default; + return ret; + }); + const statusIcon = (0, vue.computed)(() => { + if (props.status === "warning") return warning_filled_default; + if (props.type === "line") return props.status === "success" ? circle_check_default : circle_close_default; + else return props.status === "success" ? check_default : close_default; + }); + const progressTextSize = (0, vue.computed)(() => { + return props.type === "line" ? 12 + props.strokeWidth * .4 : props.width * .111111 + 2; + }); + const content = (0, vue.computed)(() => props.format(props.percentage)); + function getColors(color) { + const span = 100 / color.length; + return color.map((seriesColor, index) => { + if (isString(seriesColor)) return { + color: seriesColor, + percentage: (index + 1) * span + }; + return seriesColor; + }).sort((a, b) => a.percentage - b.percentage); + } + const getCurrentColor = (percentage) => { + const { color } = props; + if (isFunction$1(color)) return color(percentage); + else if (isString(color)) return color; + else { + const colors = getColors(color); + for (const color of colors) if (color.percentage > percentage) return color.color; + return colors[colors.length - 1]?.color; + } + }; + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).b(), + (0, vue.unref)(ns).m(__props.type), + (0, vue.unref)(ns).is(__props.status), + { + [(0, vue.unref)(ns).m("without-text")]: !__props.showText, + [(0, vue.unref)(ns).m("text-inside")]: __props.textInside + } + ]), + role: "progressbar", + "aria-valuenow": __props.percentage, + "aria-valuemin": "0", + "aria-valuemax": "100" + }, [__props.type === "line" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b("bar")) + }, [(0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("bar", "outer")), + style: (0, vue.normalizeStyle)({ height: `${__props.strokeWidth}px` }) + }, [(0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).be("bar", "inner"), + { [(0, vue.unref)(ns).bem("bar", "inner", "indeterminate")]: __props.indeterminate }, + { [(0, vue.unref)(ns).bem("bar", "inner", "striped")]: __props.striped }, + { [(0, vue.unref)(ns).bem("bar", "inner", "striped-flow")]: __props.stripedFlow } + ]), + style: (0, vue.normalizeStyle)(barStyle.value) + }, [(__props.showText || _ctx.$slots.default) && __props.textInside ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("bar", "innerText")) + }, [(0, vue.renderSlot)(_ctx.$slots, "default", { percentage: __props.percentage }, () => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(content.value), 1)])], 2)) : (0, vue.createCommentVNode)("v-if", true)], 6)], 6)], 2)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b("circle")), + style: (0, vue.normalizeStyle)({ + height: `${__props.width}px`, + width: `${__props.width}px` + }) + }, [((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_2$15, [(0, vue.createElementVNode)("path", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("circle", "track")), + d: trackPath.value, + stroke: `var(${(0, vue.unref)(ns).cssVarName("fill-color-light")}, #e5e9f2)`, + "stroke-linecap": __props.strokeLinecap, + "stroke-width": relativeStrokeWidth.value, + fill: "none", + style: (0, vue.normalizeStyle)(trailPathStyle.value) + }, null, 14, _hoisted_3$6), (0, vue.createElementVNode)("path", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("circle", "path")), + d: trackPath.value, + stroke: stroke.value, + fill: "none", + opacity: __props.percentage ? 1 : 0, + "stroke-linecap": __props.strokeLinecap, + "stroke-width": relativeStrokeWidth.value, + style: (0, vue.normalizeStyle)(circlePathStyle.value) + }, null, 14, _hoisted_4$4)]))], 6)), (__props.showText || _ctx.$slots.default) && !__props.textInside ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 2, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("text")), + style: (0, vue.normalizeStyle)({ fontSize: `${progressTextSize.value}px` }) + }, [(0, vue.renderSlot)(_ctx.$slots, "default", { percentage: __props.percentage }, () => [!__props.status ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_5$2, (0, vue.toDisplayString)(content.value), 1)) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { key: 1 }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(statusIcon.value)))]), + _: 1 + }))])], 6)) : (0, vue.createCommentVNode)("v-if", true)], 10, _hoisted_1$24); + }; + } + }); + +//#endregion +//#region ../../packages/components/progress/src/progress.vue + var progress_default = progress_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/progress/index.ts + const ElProgress = withInstall(progress_default); + +//#endregion +//#region ../../packages/components/rate/src/rate.ts +/** + * @deprecated Removed after 3.0.0, Use `RateProps` instead. + */ + const rateProps = buildProps({ + modelValue: { + type: Number, + default: 0 + }, + id: { + type: String, + default: void 0 + }, + lowThreshold: { + type: Number, + default: 2 + }, + highThreshold: { + type: Number, + default: 4 + }, + max: { + type: Number, + default: 5 + }, + colors: { + type: definePropType([Array, Object]), + default: () => mutable([ + "", + "", + "" + ]) + }, + voidColor: { + type: String, + default: "" + }, + disabledVoidColor: { + type: String, + default: "" + }, + icons: { + type: definePropType([Array, Object]), + default: () => [ + star_filled_default, + star_filled_default, + star_filled_default + ] + }, + voidIcon: { + type: iconPropType, + default: () => star_default + }, + disabledVoidIcon: { + type: iconPropType, + default: () => star_filled_default + }, + disabled: { + type: Boolean, + default: void 0 + }, + allowHalf: Boolean, + showText: Boolean, + showScore: Boolean, + textColor: { + type: String, + default: "" + }, + texts: { + type: definePropType(Array), + default: () => mutable([ + "Extremely bad", + "Disappointed", + "Fair", + "Satisfied", + "Surprise" + ]) + }, + scoreTemplate: { + type: String, + default: "{value}" + }, + size: useSizeProp, + clearable: Boolean, + ...useAriaProps(["ariaLabel"]) + }); + const rateEmits = { + [CHANGE_EVENT]: (value) => isNumber(value), + [UPDATE_MODEL_EVENT]: (value) => isNumber(value) + }; + +//#endregion +//#region ../../packages/components/rate/src/rate.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$23 = [ + "id", + "aria-label", + "aria-labelledby", + "aria-valuenow", + "aria-valuetext", + "aria-valuemax", + "tabindex", + "aria-disabled" + ]; + const _hoisted_2$14 = ["onMousemove", "onClick"]; + var rate_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElRate", + __name: "rate", + props: rateProps, + emits: rateEmits, + setup(__props, { expose: __expose, emit: __emit }) { + function getValueFromMap(value, map) { + const isExcludedObject = (val) => isObject$1(val); + const matchedValue = map[Object.keys(map).map((key) => +key).filter((key) => { + const val = map[key]; + return (isExcludedObject(val) ? val.excluded : false) ? value < key : value <= key; + }).sort((a, b) => a - b)[0]]; + return isExcludedObject(matchedValue) && matchedValue.value || matchedValue; + } + const props = __props; + const emit = __emit; + const formItemContext = (0, vue.inject)(formItemContextKey, void 0); + const rateSize = useFormSize(); + const ns = useNamespace("rate"); + const { inputId, isLabeledByFormItem } = useFormItemInputId(props, { formItemContext }); + const currentValue = (0, vue.ref)(clamp$1(props.modelValue, 0, props.max)); + const hoverIndex = (0, vue.ref)(-1); + const pointerAtLeftHalf = (0, vue.ref)(true); + const iconRefs = (0, vue.ref)([]); + const iconClientWidths = (0, vue.computed)(() => iconRefs.value.map((icon) => icon.$el.clientWidth)); + const rateClasses = (0, vue.computed)(() => [ns.b(), ns.m(rateSize.value)]); + const rateDisabled = useFormDisabled(); + const rateStyles = (0, vue.computed)(() => { + return ns.cssVarBlock({ + "void-color": props.voidColor, + "disabled-void-color": props.disabledVoidColor, + "fill-color": activeColor.value + }); + }); + const text = (0, vue.computed)(() => { + let result = ""; + if (props.showScore) result = props.scoreTemplate.replace(/\{\s*value\s*\}/, rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`); + else if (props.showText) result = props.texts[Math.ceil(currentValue.value) - 1]; + return result; + }); + const valueDecimal = (0, vue.computed)(() => props.modelValue * 100 - Math.floor(props.modelValue) * 100); + const colorMap = (0, vue.computed)(() => isArray$1(props.colors) ? { + [props.lowThreshold]: props.colors[0], + [props.highThreshold]: { + value: props.colors[1], + excluded: true + }, + [props.max]: props.colors[2] + } : props.colors); + const activeColor = (0, vue.computed)(() => { + const color = getValueFromMap(currentValue.value, colorMap.value); + return isObject$1(color) ? "" : color; + }); + const decimalStyle = (0, vue.computed)(() => { + let width = ""; + if (rateDisabled.value) width = `${valueDecimal.value}%`; + else if (props.allowHalf) width = "50%"; + return { + color: activeColor.value, + width + }; + }); + const componentMap = (0, vue.computed)(() => { + let icons = isArray$1(props.icons) ? [...props.icons] : { ...props.icons }; + icons = (0, vue.markRaw)(icons); + return isArray$1(icons) ? { + [props.lowThreshold]: icons[0], + [props.highThreshold]: { + value: icons[1], + excluded: true + }, + [props.max]: icons[2] + } : icons; + }); + const decimalIconComponent = (0, vue.computed)(() => getValueFromMap(props.modelValue, componentMap.value)); + const voidComponent = (0, vue.computed)(() => rateDisabled.value ? isString(props.disabledVoidIcon) ? props.disabledVoidIcon : (0, vue.markRaw)(props.disabledVoidIcon) : isString(props.voidIcon) ? props.voidIcon : (0, vue.markRaw)(props.voidIcon)); + const activeComponent = (0, vue.computed)(() => getValueFromMap(currentValue.value, componentMap.value)); + function showDecimalIcon(item) { + const showWhenDisabled = rateDisabled.value && valueDecimal.value > 0 && item - 1 < props.modelValue && item > props.modelValue; + const showWhenAllowHalf = props.allowHalf && pointerAtLeftHalf.value && item - .5 <= currentValue.value && item > currentValue.value; + return showWhenDisabled || showWhenAllowHalf; + } + function emitValue(value) { + if (props.clearable && value === props.modelValue) value = 0; + emit(UPDATE_MODEL_EVENT, value); + if (props.modelValue !== value) emit(CHANGE_EVENT, value); + } + function selectValue(value) { + if (rateDisabled.value) return; + if (props.allowHalf && pointerAtLeftHalf.value) emitValue(currentValue.value); + else emitValue(value); + } + function handleKey(e) { + if (rateDisabled.value) return; + const code = getEventCode(e); + const step = props.allowHalf ? .5 : 1; + let _currentValue = currentValue.value; + switch (code) { + case EVENT_CODE.up: + case EVENT_CODE.right: + _currentValue += step; + break; + case EVENT_CODE.left: + case EVENT_CODE.down: + _currentValue -= step; + break; + } + _currentValue = clamp$1(_currentValue, 0, props.max); + if (_currentValue === currentValue.value) return; + e.stopPropagation(); + e.preventDefault(); + emit(UPDATE_MODEL_EVENT, _currentValue); + emit(CHANGE_EVENT, _currentValue); + return _currentValue; + } + function setCurrentValue(value, event) { + if (rateDisabled.value) return; + if (props.allowHalf && event) { + pointerAtLeftHalf.value = event.offsetX * 2 <= iconClientWidths.value[value - 1]; + currentValue.value = pointerAtLeftHalf.value ? value - .5 : value; + } else currentValue.value = value; + hoverIndex.value = value; + } + function resetCurrentValue() { + if (rateDisabled.value) return; + if (props.allowHalf) pointerAtLeftHalf.value = props.modelValue !== Math.floor(props.modelValue); + currentValue.value = clamp$1(props.modelValue, 0, props.max); + hoverIndex.value = -1; + } + (0, vue.watch)(() => props.modelValue, (val) => { + currentValue.value = clamp$1(val, 0, props.max); + pointerAtLeftHalf.value = props.modelValue !== Math.floor(props.modelValue); + }); + if (!props.modelValue) emit(UPDATE_MODEL_EVENT, 0); + __expose({ + setCurrentValue, + resetCurrentValue + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + id: (0, vue.unref)(inputId), + class: (0, vue.normalizeClass)([rateClasses.value, (0, vue.unref)(ns).is("disabled", (0, vue.unref)(rateDisabled))]), + role: "slider", + "aria-label": !(0, vue.unref)(isLabeledByFormItem) ? __props.ariaLabel || "rating" : void 0, + "aria-labelledby": (0, vue.unref)(isLabeledByFormItem) ? (0, vue.unref)(formItemContext)?.labelId : void 0, + "aria-valuenow": currentValue.value, + "aria-valuetext": text.value || void 0, + "aria-valuemin": "0", + "aria-valuemax": __props.max, + style: (0, vue.normalizeStyle)(rateStyles.value), + tabindex: (0, vue.unref)(rateDisabled) ? void 0 : 0, + "aria-disabled": (0, vue.unref)(rateDisabled), + onKeydown: handleKey + }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.max, (item, key) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("item")), + onMousemove: ($event) => setCurrentValue(item, $event), + onMouseleave: resetCurrentValue, + onClick: ($event) => selectValue(item) + }, [(0, vue.createVNode)((0, vue.unref)(ElIcon), { + ref_for: true, + ref_key: "iconRefs", + ref: iconRefs, + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).e("icon"), + { hover: hoverIndex.value === item }, + (0, vue.unref)(ns).is("active", item <= currentValue.value), + (0, vue.unref)(ns).is("focus-visible", item === Math.ceil(currentValue.value || 1)) + ]) + }, { + default: (0, vue.withCtx)(() => [ + (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(activeComponent.value), null, null, 512)), [[vue.vShow, !showDecimalIcon(item) && item <= currentValue.value]]), + (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(voidComponent.value), null, null, 512)), [[vue.vShow, !showDecimalIcon(item) && item > currentValue.value]]), + (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(voidComponent.value), { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).em("decimal", "box")]) }, null, 8, ["class"])), [[vue.vShow, showDecimalIcon(item)]]), + (0, vue.withDirectives)((0, vue.createVNode)((0, vue.unref)(ElIcon), { + style: (0, vue.normalizeStyle)(decimalStyle.value), + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("icon"), (0, vue.unref)(ns).e("decimal")]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(decimalIconComponent.value)))]), + _: 1 + }, 8, ["style", "class"]), [[vue.vShow, showDecimalIcon(item)]]) + ]), + _: 2 + }, 1032, ["class"])], 42, _hoisted_2$14); + }), 128)), __props.showText || __props.showScore ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("text")), + style: (0, vue.normalizeStyle)({ color: __props.textColor }) + }, (0, vue.toDisplayString)(text.value), 7)) : (0, vue.createCommentVNode)("v-if", true)], 46, _hoisted_1$23); + }; + } + }); + +//#endregion +//#region ../../packages/components/rate/src/rate.vue + var rate_default = rate_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/rate/index.ts + const ElRate = withInstall(rate_default); + +//#endregion +//#region ../../packages/components/result/src/result.ts + const IconMap = { + primary: "icon-primary", + success: "icon-success", + warning: "icon-warning", + error: "icon-error", + info: "icon-info" + }; + const IconComponentMap = { + [IconMap.primary]: info_filled_default, + [IconMap.success]: circle_check_filled_default, + [IconMap.warning]: warning_filled_default, + [IconMap.error]: circle_close_filled_default, + [IconMap.info]: info_filled_default + }; + /** + * @deprecated Removed after 3.0.0, Use `ResultProps` instead. + */ + const resultProps = buildProps({ + title: { + type: String, + default: "" + }, + subTitle: { + type: String, + default: "" + }, + icon: { + type: String, + values: [ + "primary", + "success", + "warning", + "info", + "error" + ], + default: "info" + } + }); + +//#endregion +//#region ../../packages/components/result/src/result.vue?vue&type=script&setup=true&lang.ts + var result_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElResult", + __name: "result", + props: resultProps, + setup(__props) { + const props = __props; + const ns = useNamespace("result"); + const resultIcon = (0, vue.computed)(() => { + const icon = props.icon; + const iconClass = icon && IconMap[icon] ? IconMap[icon] : "icon-info"; + return { + class: iconClass, + component: IconComponentMap[iconClass] || IconComponentMap["icon-info"] + }; + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()) }, [ + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("icon")) }, [(0, vue.renderSlot)(_ctx.$slots, "icon", {}, () => [resultIcon.value.component ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(resultIcon.value.component), { + key: 0, + class: (0, vue.normalizeClass)(resultIcon.value.class) + }, null, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true)])], 2), + __props.title || _ctx.$slots.title ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("title")) + }, [(0, vue.renderSlot)(_ctx.$slots, "title", {}, () => [(0, vue.createElementVNode)("p", null, (0, vue.toDisplayString)(__props.title), 1)])], 2)) : (0, vue.createCommentVNode)("v-if", true), + __props.subTitle || _ctx.$slots["sub-title"] ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("subtitle")) + }, [(0, vue.renderSlot)(_ctx.$slots, "sub-title", {}, () => [(0, vue.createElementVNode)("p", null, (0, vue.toDisplayString)(__props.subTitle), 1)])], 2)) : (0, vue.createCommentVNode)("v-if", true), + _ctx.$slots.extra ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 2, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("extra")) + }, [(0, vue.renderSlot)(_ctx.$slots, "extra")], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/result/src/result.vue + var result_default = result_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/result/index.ts + const ElResult = withInstall(result_default); + +//#endregion +//#region ../../node_modules/.pnpm/memoize-one@6.0.0/node_modules/memoize-one/dist/memoize-one.esm.js + var safeIsNaN = Number.isNaN || function ponyfill(value) { + return typeof value === "number" && value !== value; + }; + function isEqual(first, second) { + if (first === second) return true; + if (safeIsNaN(first) && safeIsNaN(second)) return true; + return false; + } + function areInputsEqual(newInputs, lastInputs) { + if (newInputs.length !== lastInputs.length) return false; + for (var i = 0; i < newInputs.length; i++) if (!isEqual(newInputs[i], lastInputs[i])) return false; + return true; + } + function memoizeOne(resultFn, isEqual) { + if (isEqual === void 0) isEqual = areInputsEqual; + var cache = null; + function memoized() { + var newArgs = []; + for (var _i = 0; _i < arguments.length; _i++) newArgs[_i] = arguments[_i]; + if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) return cache.lastResult; + var lastResult = resultFn.apply(this, newArgs); + cache = { + lastResult, + lastArgs: newArgs, + lastThis: this + }; + return lastResult; + } + memoized.clear = function clear() { + cache = null; + }; + return memoized; + } + +//#endregion +//#region ../../packages/components/virtual-list/src/hooks/use-cache.ts + const useCache = () => { + const props = (0, vue.getCurrentInstance)().proxy.$props; + return (0, vue.computed)(() => { + const _getItemStyleCache = (_, __, ___) => ({}); + return props.perfMode ? memoize(_getItemStyleCache) : memoizeOne(_getItemStyleCache); + }); + }; + +//#endregion +//#region ../../packages/components/virtual-list/src/defaults.ts + const DEFAULT_DYNAMIC_LIST_ITEM_SIZE = 50; + const ITEM_RENDER_EVT = "itemRendered"; + const SCROLL_EVT = "scroll"; + const FORWARD = "forward"; + const BACKWARD = "backward"; + const AUTO_ALIGNMENT = "auto"; + const SMART_ALIGNMENT = "smart"; + const START_ALIGNMENT = "start"; + const CENTERED_ALIGNMENT = "center"; + const END_ALIGNMENT = "end"; + const HORIZONTAL = "horizontal"; + const VERTICAL = "vertical"; + const LTR = "ltr"; + const RTL = "rtl"; + const RTL_OFFSET_NAG = "negative"; + const RTL_OFFSET_POS_ASC = "positive-ascending"; + const RTL_OFFSET_POS_DESC = "positive-descending"; + const ScrollbarSizeKey = { + [HORIZONTAL]: "height", + [VERTICAL]: "width" + }; + const ScrollbarDirKey = { + [HORIZONTAL]: "left", + [VERTICAL]: "top" + }; + const SCROLLBAR_MIN_SIZE = 20; + +//#endregion +//#region ../../packages/components/virtual-list/src/hooks/use-wheel.ts + const useWheel = ({ atEndEdge, atStartEdge, layout }, onWheelDelta) => { + let frameHandle; + let offset = 0; + const hasReachedEdge = (offset) => { + return offset < 0 && atStartEdge.value || offset > 0 && atEndEdge.value; + }; + const onWheel = (e) => { + cAF(frameHandle); + let { deltaX, deltaY } = e; + if (e.shiftKey && deltaY !== 0) { + deltaX = deltaY; + deltaY = 0; + } + const newOffset = layout.value === HORIZONTAL ? deltaX : deltaY; + if (hasReachedEdge(newOffset)) return; + offset += newOffset; + if (!isFirefox() && newOffset !== 0) e.preventDefault(); + frameHandle = rAF(() => { + onWheelDelta(offset); + offset = 0; + }); + }; + return { + hasReachedEdge, + onWheel + }; + }; + +//#endregion +//#region ../../packages/components/virtual-list/src/props.ts + const itemSize$1 = buildProp({ + type: definePropType([Number, Function]), + required: true + }); + const estimatedItemSize = buildProp({ type: Number }); + const cache = buildProp({ + type: Number, + default: 2 + }); + const direction = buildProp({ + type: String, + values: ["ltr", "rtl"], + default: "ltr" + }); + const initScrollOffset = buildProp({ + type: Number, + default: 0 + }); + const total = buildProp({ + type: Number, + required: true + }); + const layout = buildProp({ + type: String, + values: ["horizontal", "vertical"], + default: VERTICAL + }); + const virtualizedProps = buildProps({ + className: { + type: String, + default: "" + }, + containerElement: { + type: definePropType([String, Object]), + default: "div" + }, + data: { + type: definePropType(Array), + default: () => mutable([]) + }, + direction, + height: { + type: [String, Number], + required: true + }, + innerElement: { + type: [String, Object], + default: "div" + }, + innerProps: { + type: definePropType(Object), + default: () => ({}) + }, + style: { type: definePropType([ + Object, + String, + Array + ]) }, + useIsScrolling: Boolean, + width: { + type: [Number, String], + required: false + }, + perfMode: { + type: Boolean, + default: true + }, + scrollbarAlwaysOn: Boolean + }); + const virtualizedListProps = buildProps({ + cache, + estimatedItemSize, + layout, + initScrollOffset, + total, + itemSize: itemSize$1, + ...virtualizedProps + }); + const scrollbarSize = { + type: Number, + default: 6 + }; + const startGap = { + type: Number, + default: 0 + }; + const endGap = { + type: Number, + default: 2 + }; + const virtualizedGridProps = buildProps({ + columnCache: cache, + columnWidth: itemSize$1, + estimatedColumnWidth: estimatedItemSize, + estimatedRowHeight: estimatedItemSize, + initScrollLeft: initScrollOffset, + initScrollTop: initScrollOffset, + itemKey: { + type: definePropType(Function), + default: ({ columnIndex, rowIndex }) => `${rowIndex}:${columnIndex}` + }, + rowCache: cache, + rowHeight: itemSize$1, + totalColumn: total, + totalRow: total, + hScrollbarSize: scrollbarSize, + vScrollbarSize: scrollbarSize, + scrollbarStartGap: startGap, + scrollbarEndGap: endGap, + role: String, + ...virtualizedProps + }); + const virtualizedScrollbarProps = buildProps({ + alwaysOn: Boolean, + class: String, + layout, + total, + ratio: { + type: Number, + required: true + }, + clientSize: { + type: Number, + required: true + }, + scrollFrom: { + type: Number, + required: true + }, + scrollbarSize, + startGap, + endGap, + visible: Boolean + }); + +//#endregion +//#region ../../packages/components/virtual-list/src/utils.ts + const getScrollDir = (prev, cur) => prev < cur ? FORWARD : BACKWARD; + const isHorizontal = (dir) => dir === LTR || dir === RTL || dir === HORIZONTAL; + const isRTL = (dir) => dir === RTL; + let cachedRTLResult = null; + function getRTLOffsetType(recalculate = false) { + if (cachedRTLResult === null || recalculate) { + const outerDiv = document.createElement("div"); + const outerStyle = outerDiv.style; + outerStyle.width = "50px"; + outerStyle.height = "50px"; + outerStyle.overflow = "scroll"; + outerStyle.direction = "rtl"; + const innerDiv = document.createElement("div"); + const innerStyle = innerDiv.style; + innerStyle.width = "100px"; + innerStyle.height = "100px"; + outerDiv.appendChild(innerDiv); + document.body.appendChild(outerDiv); + if (outerDiv.scrollLeft > 0) cachedRTLResult = RTL_OFFSET_POS_DESC; + else { + outerDiv.scrollLeft = 1; + if (outerDiv.scrollLeft === 0) cachedRTLResult = RTL_OFFSET_NAG; + else cachedRTLResult = RTL_OFFSET_POS_ASC; + } + document.body.removeChild(outerDiv); + return cachedRTLResult; + } + return cachedRTLResult; + } + function renderThumbStyle$1({ move, size, bar }, layout) { + const style = {}; + const translate = `translate${bar.axis}(${move}px)`; + style[bar.size] = size; + style.transform = translate; + if (layout === "horizontal") style.height = "100%"; + else style.width = "100%"; + return style; + } + +//#endregion +//#region ../../packages/components/virtual-list/src/components/scrollbar.ts + const ScrollBar = (0, vue.defineComponent)({ + name: "ElVirtualScrollBar", + props: virtualizedScrollbarProps, + emits: [ + "scroll", + "start-move", + "stop-move" + ], + setup(props, { emit }) { + const GAP = (0, vue.computed)(() => props.startGap + props.endGap); + const nsVirtualScrollbar = useNamespace("virtual-scrollbar"); + const nsScrollbar = useNamespace("scrollbar"); + const trackRef = (0, vue.ref)(); + const thumbRef = (0, vue.ref)(); + let frameHandle = null; + let onselectstartStore = null; + const state = (0, vue.reactive)({ + isDragging: false, + traveled: 0 + }); + const bar = (0, vue.computed)(() => BAR_MAP[props.layout]); + const trackSize = (0, vue.computed)(() => props.clientSize - (0, vue.unref)(GAP)); + const trackStyle = (0, vue.computed)(() => ({ + position: "absolute", + width: `${HORIZONTAL === props.layout ? trackSize.value : props.scrollbarSize}px`, + height: `${HORIZONTAL === props.layout ? props.scrollbarSize : trackSize.value}px`, + [ScrollbarDirKey[props.layout]]: "2px", + right: "2px", + bottom: "2px", + borderRadius: "4px" + })); + const thumbSize = (0, vue.computed)(() => { + const ratio = props.ratio; + if (ratio >= 100) return Number.POSITIVE_INFINITY; + if (ratio >= 50) return ratio * trackSize.value / 100; + const SCROLLBAR_MAX_SIZE = trackSize.value / 3; + return Math.floor(Math.min(Math.max(ratio * trackSize.value / 100, SCROLLBAR_MIN_SIZE), SCROLLBAR_MAX_SIZE)); + }); + const thumbStyle = (0, vue.computed)(() => { + if (!Number.isFinite(thumbSize.value)) return { display: "none" }; + const thumb = `${thumbSize.value}px`; + return renderThumbStyle$1({ + bar: bar.value, + size: thumb, + move: state.traveled + }, props.layout); + }); + const totalSteps = (0, vue.computed)(() => Math.ceil(props.clientSize - thumbSize.value - (0, vue.unref)(GAP))); + const attachEvents = () => { + window.addEventListener("mousemove", onMouseMove); + window.addEventListener("mouseup", onMouseUp); + const thumbEl = (0, vue.unref)(thumbRef); + if (!thumbEl) return; + onselectstartStore = document.onselectstart; + document.onselectstart = () => false; + thumbEl.addEventListener("touchmove", onMouseMove, { passive: true }); + thumbEl.addEventListener("touchend", onMouseUp); + }; + const detachEvents = () => { + window.removeEventListener("mousemove", onMouseMove); + window.removeEventListener("mouseup", onMouseUp); + document.onselectstart = onselectstartStore; + onselectstartStore = null; + const thumbEl = (0, vue.unref)(thumbRef); + if (!thumbEl) return; + thumbEl.removeEventListener("touchmove", onMouseMove); + thumbEl.removeEventListener("touchend", onMouseUp); + }; + const onThumbMouseDown = (e) => { + e.stopImmediatePropagation(); + if (e.ctrlKey || [1, 2].includes(e.button)) return; + state.isDragging = true; + state[bar.value.axis] = e.currentTarget[bar.value.offset] - (e[bar.value.client] - e.currentTarget.getBoundingClientRect()[bar.value.direction]); + emit("start-move"); + attachEvents(); + }; + const onMouseUp = () => { + state.isDragging = false; + state[bar.value.axis] = 0; + emit("stop-move"); + detachEvents(); + }; + const onMouseMove = (e) => { + const { isDragging } = state; + if (!isDragging) return; + if (!thumbRef.value || !trackRef.value) return; + const prevPage = state[bar.value.axis]; + if (!prevPage) return; + cAF(frameHandle); + /** + * +--------------+ +--------------+ + * | - <--------- thumb.offsetTop | | + * | |+| <--+ | | + * | - | | | + * | Content | | | | + * | | | | | + * | | | | | + * | | | | - + * | | +--> | |+| + * | | | - + * +--------------+ +--------------+ + */ + const distance = (trackRef.value.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) * -1 - (thumbRef.value[bar.value.offset] - prevPage); + frameHandle = rAF(() => { + state.traveled = Math.max(0, Math.min(distance, totalSteps.value)); + emit("scroll", distance, totalSteps.value); + }); + }; + const clickTrackHandler = (e) => { + const distance = Math.abs(e.target.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) - thumbRef.value[bar.value.offset] / 2; + state.traveled = Math.max(0, Math.min(distance, totalSteps.value)); + emit("scroll", distance, totalSteps.value); + }; + (0, vue.watch)(() => props.scrollFrom, (v) => { + if (state.isDragging) return; + /** + * this is simply mapping the current scrollbar offset + * + * formula 1: + * v = scrollOffset / (estimatedTotalSize - clientSize) + * traveled = v * (clientSize - thumbSize - GAP) --> v * totalSteps + * + * formula 2: + * traveled = (v * clientSize) / (clientSize / totalSteps) --> (v * clientSize) * (totalSteps / clientSize) --> v * totalSteps + */ + state.traveled = Math.ceil(v * totalSteps.value); + }); + (0, vue.onBeforeUnmount)(() => { + detachEvents(); + }); + return () => { + return (0, vue.h)("div", { + role: "presentation", + ref: trackRef, + class: [ + nsVirtualScrollbar.b(), + props.class, + (props.alwaysOn || state.isDragging) && "always-on" + ], + style: trackStyle.value, + onMousedown: (0, vue.withModifiers)(clickTrackHandler, ["stop", "prevent"]), + onTouchstartPrevent: onThumbMouseDown + }, (0, vue.h)("div", { + ref: thumbRef, + class: nsScrollbar.e("thumb"), + style: thumbStyle.value, + onMousedown: onThumbMouseDown + }, [])); + }; + } + }); + +//#endregion +//#region ../../packages/components/virtual-list/src/builders/build-list.ts + const createList = ({ name, getOffset, getItemSize, getItemOffset, getEstimatedTotalSize, getStartIndexForOffset, getStopIndexForStartIndex, initCache, clearCache, validateProps }) => { + return (0, vue.defineComponent)({ + name: name ?? "ElVirtualList", + props: virtualizedListProps, + emits: [ITEM_RENDER_EVT, SCROLL_EVT], + setup(props, { emit, expose }) { + validateProps(props); + const instance = (0, vue.getCurrentInstance)(); + const ns = useNamespace("vl"); + const dynamicSizeCache = (0, vue.ref)(initCache(props, instance)); + const getItemStyleCache = useCache(); + const windowRef = (0, vue.ref)(); + const innerRef = (0, vue.ref)(); + const scrollbarRef = (0, vue.ref)(); + const states = (0, vue.ref)({ + isScrolling: false, + scrollDir: "forward", + scrollOffset: isNumber(props.initScrollOffset) ? props.initScrollOffset : 0, + updateRequested: false, + isScrollbarDragging: false, + scrollbarAlwaysOn: props.scrollbarAlwaysOn + }); + const itemsToRender = (0, vue.computed)(() => { + const { total, cache } = props; + const { isScrolling, scrollDir, scrollOffset } = (0, vue.unref)(states); + if (total === 0) return [ + 0, + 0, + 0, + 0 + ]; + const startIndex = getStartIndexForOffset(props, scrollOffset, (0, vue.unref)(dynamicSizeCache)); + const stopIndex = getStopIndexForStartIndex(props, startIndex, scrollOffset, (0, vue.unref)(dynamicSizeCache)); + const cacheBackward = !isScrolling || scrollDir === BACKWARD ? Math.max(1, cache) : 1; + const cacheForward = !isScrolling || scrollDir === FORWARD ? Math.max(1, cache) : 1; + return [ + Math.max(0, startIndex - cacheBackward), + Math.max(0, Math.min(total - 1, stopIndex + cacheForward)), + startIndex, + stopIndex + ]; + }); + const estimatedTotalSize = (0, vue.computed)(() => getEstimatedTotalSize(props, (0, vue.unref)(dynamicSizeCache))); + const _isHorizontal = (0, vue.computed)(() => isHorizontal(props.layout)); + const windowStyle = (0, vue.computed)(() => [ + { + position: "relative", + [`overflow-${_isHorizontal.value ? "x" : "y"}`]: "scroll", + WebkitOverflowScrolling: "touch", + willChange: "transform" + }, + { + direction: props.direction, + height: isNumber(props.height) ? `${props.height}px` : props.height, + width: isNumber(props.width) ? `${props.width}px` : props.width + }, + props.style + ]); + const innerStyle = (0, vue.computed)(() => { + const size = (0, vue.unref)(estimatedTotalSize); + const horizontal = (0, vue.unref)(_isHorizontal); + return { + height: horizontal ? "100%" : `${size}px`, + pointerEvents: (0, vue.unref)(states).isScrolling ? "none" : void 0, + width: horizontal ? `${size}px` : "100%", + margin: 0, + boxSizing: "border-box" + }; + }); + const clientSize = (0, vue.computed)(() => _isHorizontal.value ? props.width : props.height); + const { onWheel } = useWheel({ + atStartEdge: (0, vue.computed)(() => states.value.scrollOffset <= 0), + atEndEdge: (0, vue.computed)(() => states.value.scrollOffset >= estimatedTotalSize.value), + layout: (0, vue.computed)(() => props.layout) + }, (offset) => { + scrollbarRef.value.onMouseUp?.(); + scrollTo(Math.min(states.value.scrollOffset + offset, estimatedTotalSize.value - clientSize.value)); + }); + useEventListener(windowRef, "wheel", onWheel, { passive: false }); + const emitEvents = () => { + const { total } = props; + if (total > 0) { + const [cacheStart, cacheEnd, visibleStart, visibleEnd] = (0, vue.unref)(itemsToRender); + emit(ITEM_RENDER_EVT, cacheStart, cacheEnd, visibleStart, visibleEnd); + } + const { scrollDir, scrollOffset, updateRequested } = (0, vue.unref)(states); + emit(SCROLL_EVT, scrollDir, scrollOffset, updateRequested); + }; + const scrollVertically = (e) => { + const { clientHeight, scrollHeight, scrollTop } = e.currentTarget; + const _states = (0, vue.unref)(states); + if (_states.scrollOffset === scrollTop) return; + const scrollOffset = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight)); + states.value = { + ..._states, + isScrolling: true, + scrollDir: getScrollDir(_states.scrollOffset, scrollOffset), + scrollOffset, + updateRequested: false + }; + (0, vue.nextTick)(resetIsScrolling); + }; + const scrollHorizontally = (e) => { + const { clientWidth, scrollLeft, scrollWidth } = e.currentTarget; + const _states = (0, vue.unref)(states); + if (_states.scrollOffset === scrollLeft) return; + const { direction } = props; + let scrollOffset = scrollLeft; + if (direction === RTL) switch (getRTLOffsetType()) { + case RTL_OFFSET_NAG: + scrollOffset = -scrollLeft; + break; + case RTL_OFFSET_POS_DESC: + scrollOffset = scrollWidth - clientWidth - scrollLeft; + break; + } + scrollOffset = Math.max(0, Math.min(scrollOffset, scrollWidth - clientWidth)); + states.value = { + ..._states, + isScrolling: true, + scrollDir: getScrollDir(_states.scrollOffset, scrollOffset), + scrollOffset, + updateRequested: false + }; + (0, vue.nextTick)(resetIsScrolling); + }; + const onScroll = (e) => { + (0, vue.unref)(_isHorizontal) ? scrollHorizontally(e) : scrollVertically(e); + emitEvents(); + }; + const onScrollbarScroll = (distanceToGo, totalSteps) => { + const offset = (estimatedTotalSize.value - clientSize.value) / totalSteps * distanceToGo; + scrollTo(Math.min(estimatedTotalSize.value - clientSize.value, offset)); + }; + const scrollTo = (offset) => { + offset = Math.max(offset, 0); + if (offset === (0, vue.unref)(states).scrollOffset) return; + states.value = { + ...(0, vue.unref)(states), + scrollOffset: offset, + scrollDir: getScrollDir((0, vue.unref)(states).scrollOffset, offset), + updateRequested: true + }; + (0, vue.nextTick)(resetIsScrolling); + }; + const scrollToItem = (idx, alignment = AUTO_ALIGNMENT) => { + const { scrollOffset } = (0, vue.unref)(states); + idx = Math.max(0, Math.min(idx, props.total - 1)); + scrollTo(getOffset(props, idx, alignment, scrollOffset, (0, vue.unref)(dynamicSizeCache))); + }; + const getItemStyle = (idx) => { + const { direction, itemSize, layout } = props; + const itemStyleCache = getItemStyleCache.value(clearCache && itemSize, clearCache && layout, clearCache && direction); + let style; + if (hasOwn(itemStyleCache, String(idx))) style = itemStyleCache[idx]; + else { + const offset = getItemOffset(props, idx, (0, vue.unref)(dynamicSizeCache)); + const size = getItemSize(props, idx, (0, vue.unref)(dynamicSizeCache)); + const horizontal = (0, vue.unref)(_isHorizontal); + const isRtl = direction === RTL; + const offsetHorizontal = horizontal ? offset : 0; + itemStyleCache[idx] = style = { + position: "absolute", + left: isRtl ? void 0 : `${offsetHorizontal}px`, + right: isRtl ? `${offsetHorizontal}px` : void 0, + top: !horizontal ? `${offset}px` : 0, + height: !horizontal ? `${size}px` : "100%", + width: horizontal ? `${size}px` : "100%" + }; + } + return style; + }; + const resetIsScrolling = () => { + states.value.isScrolling = false; + (0, vue.nextTick)(() => { + getItemStyleCache.value(-1, null, null); + }); + }; + const resetScrollTop = () => { + const window = windowRef.value; + if (window) window.scrollTop = 0; + }; + (0, vue.onMounted)(() => { + if (!isClient) return; + const { initScrollOffset } = props; + const windowElement = (0, vue.unref)(windowRef); + if (isNumber(initScrollOffset) && windowElement) if ((0, vue.unref)(_isHorizontal)) windowElement.scrollLeft = initScrollOffset; + else windowElement.scrollTop = initScrollOffset; + emitEvents(); + }); + (0, vue.onUpdated)(() => { + const { direction, layout } = props; + const { scrollOffset, updateRequested } = (0, vue.unref)(states); + const windowElement = (0, vue.unref)(windowRef); + if (updateRequested && windowElement) if (layout === HORIZONTAL) if (direction === RTL) switch (getRTLOffsetType()) { + case RTL_OFFSET_NAG: + windowElement.scrollLeft = -scrollOffset; + break; + case RTL_OFFSET_POS_ASC: + windowElement.scrollLeft = scrollOffset; + break; + default: { + const { clientWidth, scrollWidth } = windowElement; + windowElement.scrollLeft = scrollWidth - clientWidth - scrollOffset; + break; + } + } + else windowElement.scrollLeft = scrollOffset; + else windowElement.scrollTop = scrollOffset; + }); + (0, vue.onActivated)(() => { + (0, vue.unref)(windowRef).scrollTop = (0, vue.unref)(states).scrollOffset; + }); + const api = { + ns, + clientSize, + estimatedTotalSize, + windowStyle, + windowRef, + innerRef, + innerStyle, + itemsToRender, + scrollbarRef, + states, + getItemStyle, + onScroll, + onScrollbarScroll, + onWheel, + scrollTo, + scrollToItem, + resetScrollTop + }; + expose({ + windowRef, + innerRef, + getItemStyleCache, + scrollTo, + scrollToItem, + resetScrollTop, + states + }); + return api; + }, + render(ctx) { + const { $slots, className, clientSize, containerElement, data, getItemStyle, innerElement, itemsToRender, innerStyle, layout, total, onScroll, onScrollbarScroll, states, useIsScrolling, windowStyle, ns } = ctx; + const [start, end] = itemsToRender; + const Container = (0, vue.resolveDynamicComponent)(containerElement); + const Inner = (0, vue.resolveDynamicComponent)(innerElement); + const children = []; + if (total > 0) for (let i = start; i <= end; i++) children.push((0, vue.h)(vue.Fragment, { key: i }, $slots.default?.({ + data, + index: i, + isScrolling: useIsScrolling ? states.isScrolling : void 0, + style: getItemStyle(i) + }))); + const InnerNode = [(0, vue.h)(Inner, (0, vue.mergeProps)(ctx.innerProps, { + style: innerStyle, + ref: "innerRef" + }), !isString(Inner) ? { default: () => children } : children)]; + const scrollbar = (0, vue.h)(ScrollBar, { + ref: "scrollbarRef", + clientSize, + layout, + onScroll: onScrollbarScroll, + ratio: clientSize * 100 / this.estimatedTotalSize, + scrollFrom: states.scrollOffset / (this.estimatedTotalSize - clientSize), + total, + alwaysOn: states.scrollbarAlwaysOn + }); + const listContainer = (0, vue.h)(Container, { + class: [ns.e("window"), className], + style: windowStyle, + onScroll, + ref: "windowRef", + key: 0 + }, !isString(Container) ? { default: () => [InnerNode] } : [InnerNode]); + return (0, vue.h)("div", { + key: 0, + class: [ns.e("wrapper"), states.scrollbarAlwaysOn ? "always-on" : ""] + }, [listContainer, scrollbar]); + } + }); + }; + +//#endregion +//#region ../../packages/components/virtual-list/src/components/fixed-size-list.ts + const FixedSizeList = createList({ + name: "ElFixedSizeList", + getItemOffset: ({ itemSize }, index) => index * itemSize, + getItemSize: ({ itemSize }) => itemSize, + getEstimatedTotalSize: ({ total, itemSize }) => itemSize * total, + getOffset: ({ height, total, itemSize, layout, width }, index, alignment, scrollOffset) => { + const size = isHorizontal(layout) ? width : height; + const lastItemOffset = Math.max(0, total * itemSize - size); + const maxOffset = Math.min(lastItemOffset, index * itemSize); + const minOffset = Math.max(0, (index + 1) * itemSize - size); + if (alignment === SMART_ALIGNMENT) if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) alignment = AUTO_ALIGNMENT; + else alignment = CENTERED_ALIGNMENT; + switch (alignment) { + case START_ALIGNMENT: return maxOffset; + case END_ALIGNMENT: return minOffset; + case CENTERED_ALIGNMENT: { + const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2); + if (middleOffset < Math.ceil(size / 2)) return 0; + else if (middleOffset > lastItemOffset + Math.floor(size / 2)) return lastItemOffset; + else return middleOffset; + } + case AUTO_ALIGNMENT: + default: if (scrollOffset >= minOffset && scrollOffset <= maxOffset) return scrollOffset; + else if (scrollOffset < minOffset) return minOffset; + else return maxOffset; + } + }, + getStartIndexForOffset: ({ total, itemSize }, offset) => Math.max(0, Math.min(total - 1, Math.floor(offset / itemSize))), + getStopIndexForStartIndex: ({ height, total, itemSize, layout, width }, startIndex, scrollOffset) => { + const offset = startIndex * itemSize; + const size = isHorizontal(layout) ? width : height; + const numVisibleItems = Math.ceil((size + scrollOffset - offset) / itemSize); + return Math.max(0, Math.min(total - 1, startIndex + numVisibleItems - 1)); + }, + initCache() {}, + clearCache: true, + validateProps() {} + }); + +//#endregion +//#region ../../packages/components/virtual-list/src/components/dynamic-size-list.ts + const getItemFromCache$1 = (props, index, listCache) => { + const { itemSize } = props; + const { items, lastVisitedIndex } = listCache; + if (index > lastVisitedIndex) { + let offset = 0; + if (lastVisitedIndex >= 0) { + const item = items[lastVisitedIndex]; + offset = item.offset + item.size; + } + for (let i = lastVisitedIndex + 1; i <= index; i++) { + const size = itemSize(i); + items[i] = { + offset, + size + }; + offset += size; + } + listCache.lastVisitedIndex = index; + } + return items[index]; + }; + const findItem$1 = (props, listCache, offset) => { + const { items, lastVisitedIndex } = listCache; + if ((lastVisitedIndex > 0 ? items[lastVisitedIndex].offset : 0) >= offset) return bs$1(props, listCache, 0, lastVisitedIndex, offset); + return es$1(props, listCache, Math.max(0, lastVisitedIndex), offset); + }; + const bs$1 = (props, listCache, low, high, offset) => { + while (low <= high) { + const mid = low + Math.floor((high - low) / 2); + const currentOffset = getItemFromCache$1(props, mid, listCache).offset; + if (currentOffset === offset) return mid; + else if (currentOffset < offset) low = mid + 1; + else if (currentOffset > offset) high = mid - 1; + } + return Math.max(0, low - 1); + }; + const es$1 = (props, listCache, index, offset) => { + const { total } = props; + let exponent = 1; + while (index < total && getItemFromCache$1(props, index, listCache).offset < offset) { + index += exponent; + exponent *= 2; + } + return bs$1(props, listCache, Math.floor(index / 2), Math.min(index, total - 1), offset); + }; + const getEstimatedTotalSize = ({ total }, { items, estimatedItemSize, lastVisitedIndex }) => { + let totalSizeOfMeasuredItems = 0; + if (lastVisitedIndex >= total) lastVisitedIndex = total - 1; + if (lastVisitedIndex >= 0) { + const item = items[lastVisitedIndex]; + totalSizeOfMeasuredItems = item.offset + item.size; + } + const totalSizeOfUnmeasuredItems = (total - lastVisitedIndex - 1) * estimatedItemSize; + return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems; + }; + const DynamicSizeList = createList({ + name: "ElDynamicSizeList", + getItemOffset: (props, index, listCache) => getItemFromCache$1(props, index, listCache).offset, + getItemSize: (_, index, { items }) => items[index].size, + getEstimatedTotalSize, + getOffset: (props, index, alignment, scrollOffset, listCache) => { + const { height, layout, width } = props; + const size = isHorizontal(layout) ? width : height; + const item = getItemFromCache$1(props, index, listCache); + const estimatedTotalSize = getEstimatedTotalSize(props, listCache); + const maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, item.offset)); + const minOffset = Math.max(0, item.offset - size + item.size); + if (alignment === SMART_ALIGNMENT) if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) alignment = AUTO_ALIGNMENT; + else alignment = CENTERED_ALIGNMENT; + switch (alignment) { + case START_ALIGNMENT: return maxOffset; + case END_ALIGNMENT: return minOffset; + case CENTERED_ALIGNMENT: return Math.round(minOffset + (maxOffset - minOffset) / 2); + case AUTO_ALIGNMENT: + default: if (scrollOffset >= minOffset && scrollOffset <= maxOffset) return scrollOffset; + else if (scrollOffset < minOffset) return minOffset; + else return maxOffset; + } + }, + getStartIndexForOffset: (props, offset, listCache) => findItem$1(props, listCache, offset), + getStopIndexForStartIndex: (props, startIndex, scrollOffset, listCache) => { + const { height, total, layout, width } = props; + const size = isHorizontal(layout) ? width : height; + const item = getItemFromCache$1(props, startIndex, listCache); + const maxOffset = scrollOffset + size; + let offset = item.offset + item.size; + let stopIndex = startIndex; + while (stopIndex < total - 1 && offset < maxOffset) { + stopIndex++; + offset += getItemFromCache$1(props, stopIndex, listCache).size; + } + return stopIndex; + }, + initCache({ estimatedItemSize = DEFAULT_DYNAMIC_LIST_ITEM_SIZE }, instance) { + const cache = { + items: {}, + estimatedItemSize, + lastVisitedIndex: -1 + }; + cache.clearCacheAfterIndex = (index, forceUpdate = true) => { + cache.lastVisitedIndex = Math.min(cache.lastVisitedIndex, index - 1); + instance.exposed?.getItemStyleCache(-1); + if (forceUpdate) instance.proxy?.$forceUpdate(); + }; + return cache; + }, + clearCache: false, + validateProps: ({ itemSize }) => {} + }); + +//#endregion +//#region ../../packages/components/virtual-list/src/hooks/use-grid-wheel.ts + const useGridWheel = ({ atXEndEdge, atXStartEdge, atYEndEdge, atYStartEdge }, onWheelDelta) => { + let frameHandle = null; + let xOffset = 0; + let yOffset = 0; + const hasReachedEdge = (x, y) => { + const xEdgeReached = x < 0 && atXStartEdge.value || x > 0 && atXEndEdge.value; + const yEdgeReached = y < 0 && atYStartEdge.value || y > 0 && atYEndEdge.value; + return xEdgeReached || yEdgeReached; + }; + const onWheel = (e) => { + cAF(frameHandle); + let x = e.deltaX; + let y = e.deltaY; + if (Math.abs(x) > Math.abs(y)) y = 0; + else x = 0; + if (e.shiftKey && y !== 0) { + x = y; + y = 0; + } + if (hasReachedEdge(x, y)) { + if (e.deltaX !== 0 && x === 0) e.preventDefault(); + return; + } + xOffset += x; + yOffset += y; + e.preventDefault(); + frameHandle = rAF(() => { + onWheelDelta(xOffset, yOffset); + xOffset = 0; + yOffset = 0; + }); + }; + return { + hasReachedEdge, + onWheel + }; + }; + +//#endregion +//#region ../../packages/components/virtual-list/src/hooks/use-grid-touch.ts + const useGridTouch = (windowRef, states, scrollTo, estimatedTotalWidth, estimatedTotalHeight, parsedWidth, parsedHeight) => { + const touchStartX = (0, vue.ref)(0); + const touchStartY = (0, vue.ref)(0); + let frameHandle; + let deltaX = 0; + let deltaY = 0; + const handleTouchStart = (event) => { + cAF(frameHandle); + touchStartX.value = event.touches[0].clientX; + touchStartY.value = event.touches[0].clientY; + deltaX = 0; + deltaY = 0; + }; + const handleTouchMove = (event) => { + event.preventDefault(); + cAF(frameHandle); + deltaX += touchStartX.value - event.touches[0].clientX; + deltaY += touchStartY.value - event.touches[0].clientY; + touchStartX.value = event.touches[0].clientX; + touchStartY.value = event.touches[0].clientY; + frameHandle = rAF(() => { + const maxScrollLeft = estimatedTotalWidth.value - (0, vue.unref)(parsedWidth); + const maxScrollTop = estimatedTotalHeight.value - (0, vue.unref)(parsedHeight); + scrollTo({ + scrollLeft: Math.min(states.value.scrollLeft + deltaX, maxScrollLeft), + scrollTop: Math.min(states.value.scrollTop + deltaY, maxScrollTop) + }); + deltaX = 0; + deltaY = 0; + }); + }; + useEventListener(windowRef, "touchstart", handleTouchStart, { passive: true }); + useEventListener(windowRef, "touchmove", handleTouchMove, { passive: false }); + return { + touchStartX, + touchStartY, + handleTouchStart, + handleTouchMove + }; + }; + +//#endregion +//#region ../../packages/components/virtual-list/src/builders/build-grid.ts + const createGrid = ({ name, clearCache, getColumnPosition, getColumnStartIndexForOffset, getColumnStopIndexForStartIndex, getEstimatedTotalHeight, getEstimatedTotalWidth, getColumnOffset, getRowOffset, getRowPosition, getRowStartIndexForOffset, getRowStopIndexForStartIndex, initCache, injectToInstance, validateProps }) => { + return (0, vue.defineComponent)({ + name: name ?? "ElVirtualList", + props: virtualizedGridProps, + emits: [ITEM_RENDER_EVT, SCROLL_EVT], + setup(props, { emit, expose, slots }) { + const ns = useNamespace("vl"); + validateProps(props); + const instance = (0, vue.getCurrentInstance)(); + const cache = (0, vue.ref)(initCache(props, instance)); + injectToInstance?.(instance, cache); + const windowRef = (0, vue.ref)(); + const hScrollbar = (0, vue.ref)(); + const vScrollbar = (0, vue.ref)(); + const innerRef = (0, vue.ref)(); + const states = (0, vue.ref)({ + isScrolling: false, + scrollLeft: isNumber(props.initScrollLeft) ? props.initScrollLeft : 0, + scrollTop: isNumber(props.initScrollTop) ? props.initScrollTop : 0, + updateRequested: false, + xAxisScrollDir: FORWARD, + yAxisScrollDir: FORWARD + }); + const getItemStyleCache = useCache(); + const parsedHeight = (0, vue.computed)(() => Number.parseInt(`${props.height}`, 10)); + const parsedWidth = (0, vue.computed)(() => Number.parseInt(`${props.width}`, 10)); + const columnsToRender = (0, vue.computed)(() => { + const { totalColumn, totalRow, columnCache } = props; + const { isScrolling, xAxisScrollDir, scrollLeft } = (0, vue.unref)(states); + if (totalColumn === 0 || totalRow === 0) return [ + 0, + 0, + 0, + 0 + ]; + const startIndex = getColumnStartIndexForOffset(props, scrollLeft, (0, vue.unref)(cache)); + const stopIndex = getColumnStopIndexForStartIndex(props, startIndex, scrollLeft, (0, vue.unref)(cache)); + const cacheBackward = !isScrolling || xAxisScrollDir === BACKWARD ? Math.max(1, columnCache) : 1; + const cacheForward = !isScrolling || xAxisScrollDir === FORWARD ? Math.max(1, columnCache) : 1; + return [ + Math.max(0, startIndex - cacheBackward), + Math.max(0, Math.min(totalColumn - 1, stopIndex + cacheForward)), + startIndex, + stopIndex + ]; + }); + const rowsToRender = (0, vue.computed)(() => { + const { totalColumn, totalRow, rowCache } = props; + const { isScrolling, yAxisScrollDir, scrollTop } = (0, vue.unref)(states); + if (totalColumn === 0 || totalRow === 0) return [ + 0, + 0, + 0, + 0 + ]; + const startIndex = getRowStartIndexForOffset(props, scrollTop, (0, vue.unref)(cache)); + const stopIndex = getRowStopIndexForStartIndex(props, startIndex, scrollTop, (0, vue.unref)(cache)); + const cacheBackward = !isScrolling || yAxisScrollDir === BACKWARD ? Math.max(1, rowCache) : 1; + const cacheForward = !isScrolling || yAxisScrollDir === FORWARD ? Math.max(1, rowCache) : 1; + return [ + Math.max(0, startIndex - cacheBackward), + Math.max(0, Math.min(totalRow - 1, stopIndex + cacheForward)), + startIndex, + stopIndex + ]; + }); + const estimatedTotalHeight = (0, vue.computed)(() => getEstimatedTotalHeight(props, (0, vue.unref)(cache))); + const estimatedTotalWidth = (0, vue.computed)(() => getEstimatedTotalWidth(props, (0, vue.unref)(cache))); + const windowStyle = (0, vue.computed)(() => [ + { + position: "relative", + overflow: "hidden", + WebkitOverflowScrolling: "touch", + willChange: "transform" + }, + { + direction: props.direction, + height: isNumber(props.height) ? `${props.height}px` : props.height, + width: isNumber(props.width) ? `${props.width}px` : props.width + }, + props.style ?? {} + ]); + const innerStyle = (0, vue.computed)(() => { + const width = `${(0, vue.unref)(estimatedTotalWidth)}px`; + return { + height: `${(0, vue.unref)(estimatedTotalHeight)}px`, + pointerEvents: (0, vue.unref)(states).isScrolling ? "none" : void 0, + width, + margin: 0, + boxSizing: "border-box" + }; + }); + const emitEvents = () => { + const { totalColumn, totalRow } = props; + if (totalColumn > 0 && totalRow > 0) { + const [columnCacheStart, columnCacheEnd, columnVisibleStart, columnVisibleEnd] = (0, vue.unref)(columnsToRender); + const [rowCacheStart, rowCacheEnd, rowVisibleStart, rowVisibleEnd] = (0, vue.unref)(rowsToRender); + emit(ITEM_RENDER_EVT, { + columnCacheStart, + columnCacheEnd, + rowCacheStart, + rowCacheEnd, + columnVisibleStart, + columnVisibleEnd, + rowVisibleStart, + rowVisibleEnd + }); + } + const { scrollLeft, scrollTop, updateRequested, xAxisScrollDir, yAxisScrollDir } = (0, vue.unref)(states); + emit(SCROLL_EVT, { + xAxisScrollDir, + scrollLeft, + yAxisScrollDir, + scrollTop, + updateRequested + }); + }; + const onScroll = (e) => { + const { clientHeight, clientWidth, scrollHeight, scrollLeft, scrollTop, scrollWidth } = e.currentTarget; + const _states = (0, vue.unref)(states); + if (_states.scrollTop === scrollTop && _states.scrollLeft === scrollLeft) return; + let _scrollLeft = scrollLeft; + if (isRTL(props.direction)) switch (getRTLOffsetType()) { + case RTL_OFFSET_NAG: + _scrollLeft = -scrollLeft; + break; + case RTL_OFFSET_POS_DESC: + _scrollLeft = scrollWidth - clientWidth - scrollLeft; + break; + } + states.value = { + ..._states, + isScrolling: true, + scrollLeft: _scrollLeft, + scrollTop: Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight)), + updateRequested: true, + xAxisScrollDir: getScrollDir(_states.scrollLeft, _scrollLeft), + yAxisScrollDir: getScrollDir(_states.scrollTop, scrollTop) + }; + (0, vue.nextTick)(() => resetIsScrolling()); + onUpdated(); + emitEvents(); + }; + const onVerticalScroll = (distance, totalSteps) => { + const height = (0, vue.unref)(parsedHeight); + const offset = (estimatedTotalHeight.value - height) / totalSteps * distance; + scrollTo({ scrollTop: Math.min(estimatedTotalHeight.value - height, offset) }); + }; + const onHorizontalScroll = (distance, totalSteps) => { + const width = (0, vue.unref)(parsedWidth); + const offset = (estimatedTotalWidth.value - width) / totalSteps * distance; + scrollTo({ scrollLeft: Math.min(estimatedTotalWidth.value - width, offset) }); + }; + const { onWheel } = useGridWheel({ + atXStartEdge: (0, vue.computed)(() => states.value.scrollLeft <= 0), + atXEndEdge: (0, vue.computed)(() => states.value.scrollLeft >= estimatedTotalWidth.value - (0, vue.unref)(parsedWidth)), + atYStartEdge: (0, vue.computed)(() => states.value.scrollTop <= 0), + atYEndEdge: (0, vue.computed)(() => states.value.scrollTop >= estimatedTotalHeight.value - (0, vue.unref)(parsedHeight)) + }, (x, y) => { + hScrollbar.value?.onMouseUp?.(); + vScrollbar.value?.onMouseUp?.(); + const width = (0, vue.unref)(parsedWidth); + const height = (0, vue.unref)(parsedHeight); + scrollTo({ + scrollLeft: Math.min(states.value.scrollLeft + x, estimatedTotalWidth.value - width), + scrollTop: Math.min(states.value.scrollTop + y, estimatedTotalHeight.value - height) + }); + }); + useEventListener(windowRef, "wheel", onWheel, { passive: false }); + const scrollTo = ({ scrollLeft = states.value.scrollLeft, scrollTop = states.value.scrollTop }) => { + scrollLeft = Math.max(scrollLeft, 0); + scrollTop = Math.max(scrollTop, 0); + const _states = (0, vue.unref)(states); + if (scrollTop === _states.scrollTop && scrollLeft === _states.scrollLeft) return; + states.value = { + ..._states, + xAxisScrollDir: getScrollDir(_states.scrollLeft, scrollLeft), + yAxisScrollDir: getScrollDir(_states.scrollTop, scrollTop), + scrollLeft, + scrollTop, + updateRequested: true + }; + (0, vue.nextTick)(() => resetIsScrolling()); + onUpdated(); + emitEvents(); + }; + const { touchStartX, touchStartY, handleTouchStart, handleTouchMove } = useGridTouch(windowRef, states, scrollTo, estimatedTotalWidth, estimatedTotalHeight, parsedWidth, parsedHeight); + const scrollToItem = (rowIndex = 0, columnIdx = 0, alignment = AUTO_ALIGNMENT) => { + const _states = (0, vue.unref)(states); + columnIdx = Math.max(0, Math.min(columnIdx, props.totalColumn - 1)); + rowIndex = Math.max(0, Math.min(rowIndex, props.totalRow - 1)); + const scrollBarWidth = getScrollBarWidth(ns.namespace.value); + const _cache = (0, vue.unref)(cache); + const estimatedHeight = getEstimatedTotalHeight(props, _cache); + const estimatedWidth = getEstimatedTotalWidth(props, _cache); + scrollTo({ + scrollLeft: getColumnOffset(props, columnIdx, alignment, _states.scrollLeft, _cache, estimatedWidth > props.width ? scrollBarWidth : 0), + scrollTop: getRowOffset(props, rowIndex, alignment, _states.scrollTop, _cache, estimatedHeight > props.height ? scrollBarWidth : 0) + }); + }; + const getItemStyle = (rowIndex, columnIndex) => { + const { columnWidth, direction, rowHeight } = props; + const itemStyleCache = getItemStyleCache.value(clearCache && columnWidth, clearCache && rowHeight, clearCache && direction); + const key = `${rowIndex},${columnIndex}`; + if (hasOwn(itemStyleCache, key)) return itemStyleCache[key]; + else { + const [, left] = getColumnPosition(props, columnIndex, (0, vue.unref)(cache)); + const _cache = (0, vue.unref)(cache); + const rtl = isRTL(direction); + const [height, top] = getRowPosition(props, rowIndex, _cache); + const [width] = getColumnPosition(props, columnIndex, _cache); + itemStyleCache[key] = { + position: "absolute", + left: rtl ? void 0 : `${left}px`, + right: rtl ? `${left}px` : void 0, + top: `${top}px`, + height: `${height}px`, + width: `${width}px` + }; + return itemStyleCache[key]; + } + }; + const resetIsScrolling = () => { + states.value.isScrolling = false; + (0, vue.nextTick)(() => { + getItemStyleCache.value(-1, null, null); + }); + }; + (0, vue.onMounted)(() => { + if (!isClient) return; + const { initScrollLeft, initScrollTop } = props; + const windowElement = (0, vue.unref)(windowRef); + if (windowElement) { + if (isNumber(initScrollLeft)) windowElement.scrollLeft = initScrollLeft; + if (isNumber(initScrollTop)) windowElement.scrollTop = initScrollTop; + } + emitEvents(); + }); + const onUpdated = () => { + const { direction } = props; + const { scrollLeft, scrollTop, updateRequested } = (0, vue.unref)(states); + const windowElement = (0, vue.unref)(windowRef); + if (updateRequested && windowElement) { + if (direction === RTL) switch (getRTLOffsetType()) { + case RTL_OFFSET_NAG: + windowElement.scrollLeft = -scrollLeft; + break; + case RTL_OFFSET_POS_ASC: + windowElement.scrollLeft = scrollLeft; + break; + default: { + const { clientWidth, scrollWidth } = windowElement; + windowElement.scrollLeft = scrollWidth - clientWidth - scrollLeft; + break; + } + } + else windowElement.scrollLeft = Math.max(0, scrollLeft); + windowElement.scrollTop = Math.max(0, scrollTop); + } + }; + const { resetAfterColumnIndex, resetAfterRowIndex, resetAfter } = instance.proxy; + expose({ + windowRef, + innerRef, + getItemStyleCache, + touchStartX, + touchStartY, + handleTouchStart, + handleTouchMove, + scrollTo, + scrollToItem, + states, + resetAfterColumnIndex, + resetAfterRowIndex, + resetAfter + }); + const renderScrollbars = () => { + const { scrollbarAlwaysOn, scrollbarStartGap, scrollbarEndGap, totalColumn, totalRow } = props; + const width = (0, vue.unref)(parsedWidth); + const height = (0, vue.unref)(parsedHeight); + const estimatedWidth = (0, vue.unref)(estimatedTotalWidth); + const estimatedHeight = (0, vue.unref)(estimatedTotalHeight); + const { scrollLeft, scrollTop } = (0, vue.unref)(states); + return { + horizontalScrollbar: (0, vue.h)(ScrollBar, { + ref: hScrollbar, + alwaysOn: scrollbarAlwaysOn, + startGap: scrollbarStartGap, + endGap: scrollbarEndGap, + class: ns.e("horizontal"), + clientSize: width, + layout: "horizontal", + onScroll: onHorizontalScroll, + ratio: width * 100 / estimatedWidth, + scrollFrom: scrollLeft / (estimatedWidth - width), + total: totalRow, + visible: true + }), + verticalScrollbar: (0, vue.h)(ScrollBar, { + ref: vScrollbar, + alwaysOn: scrollbarAlwaysOn, + startGap: scrollbarStartGap, + endGap: scrollbarEndGap, + class: ns.e("vertical"), + clientSize: height, + layout: "vertical", + onScroll: onVerticalScroll, + ratio: height * 100 / estimatedHeight, + scrollFrom: scrollTop / (estimatedHeight - height), + total: totalColumn, + visible: true + }) + }; + }; + const renderItems = () => { + const [columnStart, columnEnd] = (0, vue.unref)(columnsToRender); + const [rowStart, rowEnd] = (0, vue.unref)(rowsToRender); + const { data, totalColumn, totalRow, useIsScrolling, itemKey } = props; + const children = []; + if (totalRow > 0 && totalColumn > 0) for (let row = rowStart; row <= rowEnd; row++) for (let column = columnStart; column <= columnEnd; column++) { + const key = itemKey({ + columnIndex: column, + data, + rowIndex: row + }); + children.push((0, vue.h)(vue.Fragment, { key }, slots.default?.({ + columnIndex: column, + data, + isScrolling: useIsScrolling ? (0, vue.unref)(states).isScrolling : void 0, + style: getItemStyle(row, column), + rowIndex: row + }))); + } + return children; + }; + const renderInner = () => { + const Inner = (0, vue.resolveDynamicComponent)(props.innerElement); + const children = renderItems(); + return [(0, vue.h)(Inner, (0, vue.mergeProps)(props.innerProps, { + style: (0, vue.unref)(innerStyle), + ref: innerRef + }), !isString(Inner) ? { default: () => children } : children)]; + }; + const renderWindow = () => { + const Container = (0, vue.resolveDynamicComponent)(props.containerElement); + const { horizontalScrollbar, verticalScrollbar } = renderScrollbars(); + const Inner = renderInner(); + return (0, vue.h)("div", { + key: 0, + class: ns.e("wrapper"), + role: props.role + }, [ + (0, vue.h)(Container, { + class: props.className, + style: (0, vue.unref)(windowStyle), + onScroll, + ref: windowRef + }, !isString(Container) ? { default: () => Inner } : Inner), + horizontalScrollbar, + verticalScrollbar + ]); + }; + return renderWindow; + } + }); + }; + +//#endregion +//#region ../../packages/components/virtual-list/src/components/fixed-size-grid.ts + const FixedSizeGrid = createGrid({ + name: "ElFixedSizeGrid", + getColumnPosition: ({ columnWidth }, index) => [columnWidth, index * columnWidth], + getRowPosition: ({ rowHeight }, index) => [rowHeight, index * rowHeight], + getEstimatedTotalHeight: ({ totalRow, rowHeight }) => rowHeight * totalRow, + getEstimatedTotalWidth: ({ totalColumn, columnWidth }) => columnWidth * totalColumn, + getColumnOffset: ({ totalColumn, columnWidth, width }, columnIndex, alignment, scrollLeft, _, scrollBarWidth) => { + width = Number(width); + const lastColumnOffset = Math.max(0, totalColumn * columnWidth - width); + const maxOffset = Math.min(lastColumnOffset, columnIndex * columnWidth); + const minOffset = Math.max(0, columnIndex * columnWidth - width + scrollBarWidth + columnWidth); + if (alignment === "smart") if (scrollLeft >= minOffset - width && scrollLeft <= maxOffset + width) alignment = AUTO_ALIGNMENT; + else alignment = CENTERED_ALIGNMENT; + switch (alignment) { + case START_ALIGNMENT: return maxOffset; + case END_ALIGNMENT: return minOffset; + case CENTERED_ALIGNMENT: { + const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2); + if (middleOffset < Math.ceil(width / 2)) return 0; + else if (middleOffset > lastColumnOffset + Math.floor(width / 2)) return lastColumnOffset; + else return middleOffset; + } + case AUTO_ALIGNMENT: + default: if (scrollLeft >= minOffset && scrollLeft <= maxOffset) return scrollLeft; + else if (minOffset > maxOffset) return minOffset; + else if (scrollLeft < minOffset) return minOffset; + else return maxOffset; + } + }, + getRowOffset: ({ rowHeight, height, totalRow }, rowIndex, align, scrollTop, _, scrollBarWidth) => { + height = Number(height); + const lastRowOffset = Math.max(0, totalRow * rowHeight - height); + const maxOffset = Math.min(lastRowOffset, rowIndex * rowHeight); + const minOffset = Math.max(0, rowIndex * rowHeight - height + scrollBarWidth + rowHeight); + if (align === SMART_ALIGNMENT) if (scrollTop >= minOffset - height && scrollTop <= maxOffset + height) align = AUTO_ALIGNMENT; + else align = CENTERED_ALIGNMENT; + switch (align) { + case START_ALIGNMENT: return maxOffset; + case END_ALIGNMENT: return minOffset; + case CENTERED_ALIGNMENT: { + const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2); + if (middleOffset < Math.ceil(height / 2)) return 0; + else if (middleOffset > lastRowOffset + Math.floor(height / 2)) return lastRowOffset; + else return middleOffset; + } + case AUTO_ALIGNMENT: + default: if (scrollTop >= minOffset && scrollTop <= maxOffset) return scrollTop; + else if (minOffset > maxOffset) return minOffset; + else if (scrollTop < minOffset) return minOffset; + else return maxOffset; + } + }, + getColumnStartIndexForOffset: ({ columnWidth, totalColumn }, scrollLeft) => Math.max(0, Math.min(totalColumn - 1, Math.floor(scrollLeft / columnWidth))), + getColumnStopIndexForStartIndex: ({ columnWidth, totalColumn, width }, startIndex, scrollLeft) => { + const left = startIndex * columnWidth; + const visibleColumnsCount = Math.ceil((width + scrollLeft - left) / columnWidth); + return Math.max(0, Math.min(totalColumn - 1, startIndex + visibleColumnsCount - 1)); + }, + getRowStartIndexForOffset: ({ rowHeight, totalRow }, scrollTop) => Math.max(0, Math.min(totalRow - 1, Math.floor(scrollTop / rowHeight))), + getRowStopIndexForStartIndex: ({ rowHeight, totalRow, height }, startIndex, scrollTop) => { + const top = startIndex * rowHeight; + const numVisibleRows = Math.ceil((height + scrollTop - top) / rowHeight); + return Math.max(0, Math.min(totalRow - 1, startIndex + numVisibleRows - 1)); + }, + initCache: () => void 0, + clearCache: true, + validateProps: ({ columnWidth, rowHeight }) => {} + }); + +//#endregion +//#region ../../packages/components/virtual-list/src/components/dynamic-size-grid.ts + const { max, min, floor } = Math; + const ACCESS_SIZER_KEY_MAP = { + column: "columnWidth", + row: "rowHeight" + }; + const ACCESS_LAST_VISITED_KEY_MAP = { + column: "lastVisitedColumnIndex", + row: "lastVisitedRowIndex" + }; + const getItemFromCache = (props, index, gridCache, type) => { + const [cachedItems, sizer, lastVisited] = [ + gridCache[type], + props[ACCESS_SIZER_KEY_MAP[type]], + gridCache[ACCESS_LAST_VISITED_KEY_MAP[type]] + ]; + if (index > lastVisited) { + let offset = 0; + if (lastVisited >= 0) { + const item = cachedItems[lastVisited]; + offset = item.offset + item.size; + } + for (let i = lastVisited + 1; i <= index; i++) { + const size = sizer(i); + cachedItems[i] = { + offset, + size + }; + offset += size; + } + gridCache[ACCESS_LAST_VISITED_KEY_MAP[type]] = index; + } + return cachedItems[index]; + }; + const bs = (props, gridCache, low, high, offset, type) => { + while (low <= high) { + const mid = low + floor((high - low) / 2); + const currentOffset = getItemFromCache(props, mid, gridCache, type).offset; + if (currentOffset === offset) return mid; + else if (currentOffset < offset) low = mid + 1; + else high = mid - 1; + } + return max(0, low - 1); + }; + const es = (props, gridCache, idx, offset, type) => { + const total = type === "column" ? props.totalColumn : props.totalRow; + let exponent = 1; + while (idx < total && getItemFromCache(props, idx, gridCache, type).offset < offset) { + idx += exponent; + exponent *= 2; + } + return bs(props, gridCache, floor(idx / 2), min(idx, total - 1), offset, type); + }; + const findItem = (props, gridCache, offset, type) => { + const [cache, lastVisitedIndex] = [gridCache[type], gridCache[ACCESS_LAST_VISITED_KEY_MAP[type]]]; + if ((lastVisitedIndex > 0 ? cache[lastVisitedIndex].offset : 0) >= offset) return bs(props, gridCache, 0, lastVisitedIndex, offset, type); + return es(props, gridCache, max(0, lastVisitedIndex), offset, type); + }; + const getEstimatedTotalHeight = ({ totalRow }, { estimatedRowHeight, lastVisitedRowIndex, row }) => { + let sizeOfVisitedRows = 0; + if (lastVisitedRowIndex >= totalRow) lastVisitedRowIndex = totalRow - 1; + if (lastVisitedRowIndex >= 0) { + const item = row[lastVisitedRowIndex]; + sizeOfVisitedRows = item.offset + item.size; + } + const sizeOfUnvisitedItems = (totalRow - lastVisitedRowIndex - 1) * estimatedRowHeight; + return sizeOfVisitedRows + sizeOfUnvisitedItems; + }; + const getEstimatedTotalWidth = ({ totalColumn }, { column, estimatedColumnWidth, lastVisitedColumnIndex }) => { + let sizeOfVisitedColumns = 0; + if (lastVisitedColumnIndex > totalColumn) lastVisitedColumnIndex = totalColumn - 1; + if (lastVisitedColumnIndex >= 0) { + const item = column[lastVisitedColumnIndex]; + sizeOfVisitedColumns = item.offset + item.size; + } + const sizeOfUnvisitedItems = (totalColumn - lastVisitedColumnIndex - 1) * estimatedColumnWidth; + return sizeOfVisitedColumns + sizeOfUnvisitedItems; + }; + const ACCESS_ESTIMATED_SIZE_KEY_MAP = { + column: getEstimatedTotalWidth, + row: getEstimatedTotalHeight + }; + const getOffset$1 = (props, index, alignment, scrollOffset, cache, type, scrollBarWidth) => { + const [size, estimatedSizeAssociates] = [type === "row" ? props.height : props.width, ACCESS_ESTIMATED_SIZE_KEY_MAP[type]]; + const item = getItemFromCache(props, index, cache, type); + const maxOffset = max(0, min(estimatedSizeAssociates(props, cache) - size, item.offset)); + const minOffset = max(0, item.offset - size + scrollBarWidth + item.size); + if (alignment === SMART_ALIGNMENT) if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) alignment = AUTO_ALIGNMENT; + else alignment = CENTERED_ALIGNMENT; + switch (alignment) { + case START_ALIGNMENT: return maxOffset; + case END_ALIGNMENT: return minOffset; + case CENTERED_ALIGNMENT: return Math.round(minOffset + (maxOffset - minOffset) / 2); + case AUTO_ALIGNMENT: + default: if (scrollOffset >= minOffset && scrollOffset <= maxOffset) return scrollOffset; + else if (minOffset > maxOffset) return minOffset; + else if (scrollOffset < minOffset) return minOffset; + else return maxOffset; + } + }; + const DynamicSizeGrid = createGrid({ + name: "ElDynamicSizeGrid", + getColumnPosition: (props, idx, cache) => { + const item = getItemFromCache(props, idx, cache, "column"); + return [item.size, item.offset]; + }, + getRowPosition: (props, idx, cache) => { + const item = getItemFromCache(props, idx, cache, "row"); + return [item.size, item.offset]; + }, + getColumnOffset: (props, columnIndex, alignment, scrollLeft, cache, scrollBarWidth) => getOffset$1(props, columnIndex, alignment, scrollLeft, cache, "column", scrollBarWidth), + getRowOffset: (props, rowIndex, alignment, scrollTop, cache, scrollBarWidth) => getOffset$1(props, rowIndex, alignment, scrollTop, cache, "row", scrollBarWidth), + getColumnStartIndexForOffset: (props, scrollLeft, cache) => findItem(props, cache, scrollLeft, "column"), + getColumnStopIndexForStartIndex: (props, startIndex, scrollLeft, cache) => { + const item = getItemFromCache(props, startIndex, cache, "column"); + const maxOffset = scrollLeft + props.width; + let offset = item.offset + item.size; + let stopIndex = startIndex; + while (stopIndex < props.totalColumn - 1 && offset < maxOffset) { + stopIndex++; + offset += getItemFromCache(props, startIndex, cache, "column").size; + } + return stopIndex; + }, + getEstimatedTotalHeight, + getEstimatedTotalWidth, + getRowStartIndexForOffset: (props, scrollTop, cache) => findItem(props, cache, scrollTop, "row"), + getRowStopIndexForStartIndex: (props, startIndex, scrollTop, cache) => { + const { totalRow, height } = props; + const item = getItemFromCache(props, startIndex, cache, "row"); + const maxOffset = scrollTop + height; + let offset = item.size + item.offset; + let stopIndex = startIndex; + while (stopIndex < totalRow - 1 && offset < maxOffset) { + stopIndex++; + offset += getItemFromCache(props, stopIndex, cache, "row").size; + } + return stopIndex; + }, + injectToInstance: (instance, cache) => { + const resetAfter = ({ columnIndex, rowIndex }, forceUpdate) => { + forceUpdate = isUndefined(forceUpdate) ? true : forceUpdate; + if (isNumber(columnIndex)) cache.value.lastVisitedColumnIndex = Math.min(cache.value.lastVisitedColumnIndex, columnIndex - 1); + if (isNumber(rowIndex)) cache.value.lastVisitedRowIndex = Math.min(cache.value.lastVisitedRowIndex, rowIndex - 1); + instance.exposed?.getItemStyleCache.value(-1, null, null); + if (forceUpdate) instance.proxy?.$forceUpdate(); + }; + const resetAfterColumnIndex = (columnIndex, forceUpdate) => { + resetAfter({ columnIndex }, forceUpdate); + }; + const resetAfterRowIndex = (rowIndex, forceUpdate) => { + resetAfter({ rowIndex }, forceUpdate); + }; + Object.assign(instance.proxy, { + resetAfterColumnIndex, + resetAfterRowIndex, + resetAfter + }); + }, + initCache: ({ estimatedColumnWidth = DEFAULT_DYNAMIC_LIST_ITEM_SIZE, estimatedRowHeight = DEFAULT_DYNAMIC_LIST_ITEM_SIZE }) => { + return { + column: {}, + estimatedColumnWidth, + estimatedRowHeight, + lastVisitedColumnIndex: -1, + lastVisitedRowIndex: -1, + row: {} + }; + }, + clearCache: false, + validateProps: ({ columnWidth, rowHeight }) => {} + }); + +//#endregion +//#region ../../packages/components/select-v2/src/group-item.vue?vue&type=script&lang.ts + var group_item_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + props: { + item: { + type: Object, + required: true + }, + style: { type: Object }, + height: Number + }, + setup() { + return { ns: useNamespace("select") }; + } + }); + +//#endregion +//#region ../../packages/components/select-v2/src/group-item.vue + function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + class: (0, vue.normalizeClass)(_ctx.ns.be("group", "title")), + style: (0, vue.normalizeStyle)({ + ..._ctx.style, + lineHeight: `${_ctx.height}px` + }) + }, (0, vue.toDisplayString)(_ctx.item.label), 7); + } + var group_item_default = /* @__PURE__ */ _plugin_vue_export_helper_default(group_item_vue_vue_type_script_lang_default, [["render", _sfc_render$7]]); + +//#endregion +//#region ../../packages/components/select-v2/src/useOption.ts + function useOption(props, { emit }) { + return { + hoverItem: () => { + if (!props.disabled) emit("hover", props.index); + }, + selectOptionClick: () => { + if (!props.disabled) emit("select", props.item, props.index); + } + }; + } + +//#endregion +//#region ../../packages/components/select-v2/src/defaults.ts + const selectV2Props = buildProps({ + allowCreate: Boolean, + autocomplete: { + type: definePropType(String), + default: "none" + }, + automaticDropdown: Boolean, + clearable: Boolean, + clearIcon: { + type: iconPropType, + default: circle_close_default + }, + effect: { + type: definePropType(String), + default: "light" + }, + collapseTags: Boolean, + collapseTagsTooltip: Boolean, + tagTooltip: { + type: definePropType(Object), + default: () => ({}) + }, + maxCollapseTags: { + type: Number, + default: 1 + }, + defaultFirstOption: Boolean, + disabled: { + type: Boolean, + default: void 0 + }, + estimatedOptionHeight: { + type: Number, + default: void 0 + }, + filterable: Boolean, + filterMethod: { type: definePropType(Function) }, + height: { + type: Number, + default: 274 + }, + itemHeight: { + type: Number, + default: 34 + }, + id: String, + loading: Boolean, + loadingText: String, + modelValue: { + type: definePropType([ + Array, + String, + Number, + Boolean, + Object + ]), + default: void 0 + }, + multiple: Boolean, + multipleLimit: { + type: Number, + default: 0 + }, + name: String, + noDataText: String, + noMatchText: String, + remoteMethod: { type: definePropType(Function) }, + reserveKeyword: { + type: Boolean, + default: true + }, + options: { + type: definePropType(Array), + required: true + }, + placeholder: { type: String }, + teleported: useTooltipContentProps.teleported, + persistent: { + type: Boolean, + default: true + }, + popperClass: useTooltipContentProps.popperClass, + popperStyle: useTooltipContentProps.popperStyle, + popperOptions: { + type: definePropType(Object), + default: () => ({}) + }, + remote: Boolean, + debounce: { + type: Number, + default: 300 + }, + size: useSizeProp, + props: { + type: definePropType(Object), + default: () => defaultProps$2 + }, + valueKey: { + type: String, + default: "value" + }, + scrollbarAlwaysOn: Boolean, + validateEvent: { + type: Boolean, + default: true + }, + offset: { + type: Number, + default: 12 + }, + remoteShowSuffix: Boolean, + showArrow: { + type: Boolean, + default: true + }, + placement: { + type: definePropType(String), + values: Ee, + default: "bottom-start" + }, + fallbackPlacements: { + type: definePropType(Array), + default: [ + "bottom-start", + "top-start", + "right", + "left" + ] + }, + tagType: { + ...tagProps.type, + default: "info" + }, + tagEffect: { + ...tagProps.effect, + default: "light" + }, + tabindex: { + type: [String, Number], + default: 0 + }, + appendTo: useTooltipContentProps.appendTo, + fitInputWidth: { + type: [Boolean, Number], + default: true, + validator(val) { + return isBoolean(val) || isNumber(val); + } + }, + suffixIcon: { + type: iconPropType, + default: arrow_down_default + }, + ...useEmptyValuesProps, + ...useAriaProps(["ariaLabel"]) + }); + const optionV2Props = buildProps({ + data: Array, + disabled: Boolean, + hovering: Boolean, + item: { + type: definePropType(Object), + required: true + }, + index: Number, + style: Object, + selected: Boolean, + created: Boolean + }); + const selectV2Emits = { + [UPDATE_MODEL_EVENT]: (val) => true, + [CHANGE_EVENT]: (val) => true, + "remove-tag": (val) => true, + "visible-change": (visible) => true, + focus: (evt) => evt instanceof FocusEvent, + blur: (evt) => evt instanceof FocusEvent, + clear: () => true + }; + const optionV2Emits = { + hover: (index) => isNumber(index), + select: (val, index) => true + }; + +//#endregion +//#region ../../packages/components/select-v2/src/token.ts + const selectV2InjectionKey = Symbol("ElSelectV2Injection"); + +//#endregion +//#region ../../packages/components/select-v2/src/option-item.vue?vue&type=script&lang.ts + var option_item_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + props: optionV2Props, + emits: optionV2Emits, + setup(props, { emit }) { + const select = (0, vue.inject)(selectV2InjectionKey); + const ns = useNamespace("select"); + const { hoverItem, selectOptionClick } = useOption(props, { emit }); + const { getLabel } = useProps(select.props); + const contentId = select.contentId; + const handleMousedown = (event) => { + let target = event.target; + const currentTarget = event.currentTarget; + while (target && target !== currentTarget) { + if (isFocusable(target)) return; + target = target.parentElement; + } + event.preventDefault(); + }; + return { + ns, + contentId, + hoverItem, + handleMousedown, + selectOptionClick, + getLabel + }; + } + }); + +//#endregion +//#region ../../packages/components/select-v2/src/option-item.vue + const _hoisted_1$22 = [ + "id", + "aria-selected", + "aria-disabled" + ]; + function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + id: `${_ctx.contentId}-${_ctx.index}`, + role: "option", + "aria-selected": _ctx.selected, + "aria-disabled": _ctx.disabled || void 0, + style: (0, vue.normalizeStyle)(_ctx.style), + class: (0, vue.normalizeClass)([ + _ctx.ns.be("dropdown", "item"), + _ctx.ns.is("selected", _ctx.selected), + _ctx.ns.is("disabled", _ctx.disabled), + _ctx.ns.is("created", _ctx.created), + _ctx.ns.is("hovering", _ctx.hovering) + ]), + onMousemove: _cache[0] || (_cache[0] = (...args) => _ctx.hoverItem && _ctx.hoverItem(...args)), + onMousedown: _cache[1] || (_cache[1] = (...args) => _ctx.handleMousedown && _ctx.handleMousedown(...args)), + onClick: _cache[2] || (_cache[2] = (0, vue.withModifiers)((...args) => _ctx.selectOptionClick && _ctx.selectOptionClick(...args), ["stop"])) + }, [(0, vue.renderSlot)(_ctx.$slots, "default", { + item: _ctx.item, + index: _ctx.index, + disabled: _ctx.disabled + }, () => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(_ctx.getLabel(_ctx.item)), 1)])], 46, _hoisted_1$22); + } + var option_item_default = /* @__PURE__ */ _plugin_vue_export_helper_default(option_item_vue_vue_type_script_lang_default, [["render", _sfc_render$6]]); + +//#endregion +//#region ../../packages/components/select-v2/src/select-dropdown.tsx + const props = { + loading: Boolean, + data: { + type: Array, + required: true + }, + hoveringIndex: Number, + width: Number, + id: String, + ariaLabel: String + }; + var select_dropdown_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElSelectDropdown", + props, + setup(props, { slots, expose }) { + const select = (0, vue.inject)(selectV2InjectionKey); + const ns = useNamespace("select"); + const { getLabel, getValue, getDisabled } = useProps(select.props); + const cachedHeights = (0, vue.ref)([]); + const listRef = (0, vue.ref)(); + const size = (0, vue.computed)(() => props.data.length); + (0, vue.watch)(() => size.value, () => { + select.tooltipRef.value?.updatePopper?.(); + }); + const isSized = (0, vue.computed)(() => isUndefined(select.props.estimatedOptionHeight)); + const listProps = (0, vue.computed)(() => { + if (isSized.value) return { itemSize: select.props.itemHeight }; + return { + estimatedSize: select.props.estimatedOptionHeight, + itemSize: (idx) => cachedHeights.value[idx] + }; + }); + const contains = (arr = [], target) => { + const { props: { valueKey } } = select; + if (!isObject$1(target)) return arr.includes(target); + return arr && arr.some((item) => { + return (0, vue.toRaw)(get(item, valueKey)) === get(target, valueKey); + }); + }; + const isEqual = (selected, target) => { + if (!isObject$1(target)) return selected === target; + else { + const { valueKey } = select.props; + return get(selected, valueKey) === get(target, valueKey); + } + }; + const isItemSelected = (modelValue, target) => { + if (select.props.multiple) return contains(modelValue, getValue(target)); + return isEqual(modelValue, getValue(target)); + }; + const isItemDisabled = (modelValue, selected) => { + const { disabled, multiple, multipleLimit } = select.props; + return disabled || !selected && (multiple ? multipleLimit > 0 && modelValue.length >= multipleLimit : false); + }; + const isItemHovering = (target) => props.hoveringIndex === target; + const scrollToItem = (index) => { + const list = listRef.value; + if (list) list.scrollToItem(index); + }; + const resetScrollTop = () => { + const list = listRef.value; + if (list) list.resetScrollTop(); + }; + expose({ + listRef, + isSized, + isItemDisabled, + isItemHovering, + isItemSelected, + scrollToItem, + resetScrollTop + }); + const Item = (itemProps) => { + const { index, data, style } = itemProps; + const sized = (0, vue.unref)(isSized); + const { itemSize, estimatedSize } = (0, vue.unref)(listProps); + const { modelValue } = select.props; + const { onSelect, onHover } = select; + const item = data[index]; + if (item.type === "Group") return (0, vue.createVNode)(group_item_default, { + "item": item, + "style": style, + "height": sized ? itemSize : estimatedSize + }, null); + const isSelected = isItemSelected(modelValue, item); + const isDisabled = isItemDisabled(modelValue, isSelected); + const isHovering = isItemHovering(index); + return (0, vue.createVNode)(option_item_default, (0, vue.mergeProps)(itemProps, { + "selected": isSelected, + "disabled": getDisabled(item) || isDisabled, + "created": !!item.created, + "hovering": isHovering, + "item": item, + "onSelect": onSelect, + "onHover": onHover + }), { default: (props) => slots.default?.(props) || (0, vue.createVNode)("span", null, [getLabel(item)]) }); + }; + const { onKeyboardNavigate, onKeyboardSelect } = select; + const onForward = () => { + onKeyboardNavigate("forward"); + }; + const onBackward = () => { + onKeyboardNavigate("backward"); + }; + const onEscOrTab = () => {}; + const onKeydown = (e) => { + const code = getEventCode(e); + const { tab, esc, down, up, enter, numpadEnter } = EVENT_CODE; + if ([ + esc, + down, + up, + enter, + numpadEnter + ].includes(code)) { + e.preventDefault(); + e.stopPropagation(); + } + switch (code) { + case tab: + case esc: + onEscOrTab(); + break; + case down: + onForward(); + break; + case up: + onBackward(); + break; + case enter: + case numpadEnter: + onKeyboardSelect(); + break; + } + }; + return () => { + const { data, width } = props; + const { height, multiple, scrollbarAlwaysOn } = select.props; + const isScrollbarAlwaysOn = (0, vue.computed)(() => { + return isIOS ? true : scrollbarAlwaysOn; + }); + const List = (0, vue.unref)(isSized) ? FixedSizeList : DynamicSizeList; + return (0, vue.createVNode)("div", { + "class": [ns.b("dropdown"), ns.is("multiple", multiple)], + "style": { width: `${width}px` } + }, [ + slots.header?.(), + slots.loading?.() || slots.empty?.() || (0, vue.createVNode)(List, (0, vue.mergeProps)({ "ref": listRef }, (0, vue.unref)(listProps), { + "className": ns.be("dropdown", "list"), + "scrollbarAlwaysOn": isScrollbarAlwaysOn.value, + "data": data, + "height": height, + "width": width, + "total": data.length, + "innerElement": "ul", + "innerProps": { + id: props.id, + role: "listbox", + "aria-label": props.ariaLabel, + "aria-orientation": "vertical" + }, + "onKeydown": onKeydown + }), { default: (props) => (0, vue.createVNode)(Item, props, null) }), + slots.footer?.() + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/select-v2/src/useAllowCreate.ts + function useAllowCreate(props, states) { + const { aliasProps, getLabel, getValue } = useProps(props); + const createOptionCount = (0, vue.ref)(0); + const cachedSelectedOption = (0, vue.ref)(); + const enableAllowCreateMode = (0, vue.computed)(() => { + return props.allowCreate && props.filterable; + }); + (0, vue.watch)(() => props.options, (options) => { + const optionLabelsSet = new Set(options.map((option) => getLabel(option))); + states.createdOptions = states.createdOptions.filter((createdOption) => !optionLabelsSet.has(getLabel(createdOption))); + }); + function hasExistingOption(query) { + const hasOption = (option) => getLabel(option) === query; + return props.options && props.options.some(hasOption) || states.createdOptions.some(hasOption); + } + function selectNewOption(option) { + if (!enableAllowCreateMode.value) return; + if (props.multiple && option.created) createOptionCount.value++; + else cachedSelectedOption.value = option; + } + function createNewOption(query) { + if (enableAllowCreateMode.value) if (query && query.length > 0) { + if (hasExistingOption(query)) { + states.createdOptions = states.createdOptions.filter((createdOption) => getLabel(createdOption) !== states.previousQuery); + return; + } + const newOption = { + [aliasProps.value.value]: query, + [aliasProps.value.label]: query, + created: true, + [aliasProps.value.disabled]: false + }; + if (states.createdOptions.length >= createOptionCount.value) states.createdOptions[createOptionCount.value] = newOption; + else states.createdOptions.push(newOption); + } else if (props.multiple) states.createdOptions.length = createOptionCount.value; + else { + const selectedOption = cachedSelectedOption.value; + states.createdOptions.length = 0; + if (selectedOption && selectedOption.created) states.createdOptions.push(selectedOption); + } + } + function removeNewOption(option) { + if (!enableAllowCreateMode.value || !option || !option.created || option.created && props.reserveKeyword && states.inputValue === getLabel(option)) return; + const idx = states.createdOptions.findIndex((it) => getValue(it) === getValue(option)); + if (~idx) { + states.createdOptions.splice(idx, 1); + createOptionCount.value--; + } + } + function clearAllNewOption() { + if (enableAllowCreateMode.value) { + states.createdOptions.length = 0; + createOptionCount.value = 0; + } + } + return { + createNewOption, + removeNewOption, + selectNewOption, + clearAllNewOption + }; + } + +//#endregion +//#region ../../packages/components/select-v2/src/useSelect.ts + const useSelect$1 = (props, emit) => { + const { t } = useLocale(); + const slots = (0, vue.useSlots)(); + const nsSelect = useNamespace("select"); + const nsInput = useNamespace("input"); + const { form: elForm, formItem: elFormItem } = useFormItem(); + const { inputId } = useFormItemInputId(props, { formItemContext: elFormItem }); + const { aliasProps, getLabel, getValue, getDisabled, getOptions } = useProps(props); + const { valueOnClear, isEmptyValue } = useEmptyValues(props); + const states = (0, vue.reactive)({ + inputValue: "", + cachedOptions: [], + createdOptions: [], + hoveringIndex: -1, + inputHovering: false, + selectionWidth: 0, + collapseItemWidth: 0, + previousQuery: null, + previousValue: void 0, + selectedLabel: "", + menuVisibleOnFocus: false, + isBeforeHide: false + }); + const popperSize = (0, vue.ref)(-1); + const debouncing = (0, vue.ref)(false); + const selectRef = (0, vue.ref)(); + const selectionRef = (0, vue.ref)(); + const tooltipRef = (0, vue.ref)(); + const tagTooltipRef = (0, vue.ref)(); + const inputRef = (0, vue.ref)(); + const prefixRef = (0, vue.ref)(); + const suffixRef = (0, vue.ref)(); + const menuRef = (0, vue.ref)(); + const tagMenuRef = (0, vue.ref)(); + const collapseItemRef = (0, vue.ref)(); + const { isComposing, handleCompositionStart, handleCompositionEnd, handleCompositionUpdate } = useComposition({ afterComposition: (e) => onInput(e) }); + const selectDisabled = useFormDisabled(); + const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, { + disabled: selectDisabled, + afterFocus() { + if (props.automaticDropdown && !expanded.value) { + expanded.value = true; + states.menuVisibleOnFocus = true; + } + }, + beforeBlur(event) { + return tooltipRef.value?.isFocusInsideContent(event) || tagTooltipRef.value?.isFocusInsideContent(event); + }, + afterBlur() { + expanded.value = false; + states.menuVisibleOnFocus = false; + if (props.validateEvent) elFormItem?.validate?.("blur").catch((err) => /* @__PURE__ */ debugWarn(err)); + } + }); + const allOptions = (0, vue.computed)(() => filterOptions("")); + const hasOptions = (0, vue.computed)(() => { + if (props.loading) return false; + return props.options.length > 0 || states.createdOptions.length > 0; + }); + const filteredOptions = (0, vue.ref)([]); + const expanded = (0, vue.ref)(false); + const needStatusIcon = (0, vue.computed)(() => elForm?.statusIcon ?? false); + const popupHeight = (0, vue.computed)(() => { + const totalHeight = filteredOptions.value.length * props.itemHeight; + return totalHeight > props.height ? props.height : totalHeight; + }); + const hasModelValue = (0, vue.computed)(() => { + return props.multiple ? isArray$1(props.modelValue) && props.modelValue.length > 0 : !isEmptyValue(props.modelValue); + }); + const showClearBtn = (0, vue.computed)(() => { + return props.clearable && !selectDisabled.value && hasModelValue.value && (isFocused.value || states.inputHovering); + }); + const iconComponent = (0, vue.computed)(() => props.remote && props.filterable && !props.remoteShowSuffix ? "" : props.suffixIcon); + const iconReverse = (0, vue.computed)(() => iconComponent.value && nsSelect.is("reverse", expanded.value)); + const validateState = (0, vue.computed)(() => elFormItem?.validateState || ""); + const validateIcon = (0, vue.computed)(() => { + if (!validateState.value) return; + return ValidateComponentsMap[validateState.value]; + }); + const debounce = (0, vue.computed)(() => props.remote ? props.debounce : 0); + const isRemoteSearchEmpty = (0, vue.computed)(() => props.remote && !states.inputValue && !hasOptions.value); + const emptyText = (0, vue.computed)(() => { + if (props.loading) return props.loadingText || t("el.select.loading"); + else { + if (props.filterable && states.inputValue && hasOptions.value && filteredOptions.value.length === 0) return props.noMatchText || t("el.select.noMatch"); + if (!hasOptions.value) return props.noDataText || t("el.select.noData"); + } + return null; + }); + const isFilterMethodValid = (0, vue.computed)(() => props.filterable && isFunction$1(props.filterMethod)); + const isRemoteMethodValid = (0, vue.computed)(() => props.filterable && props.remote && isFunction$1(props.remoteMethod)); + const filterOptions = (query) => { + const regexp = new RegExp(escapeStringRegexp(query), "i"); + const isValidOption = (o) => { + if (isFilterMethodValid.value || isRemoteMethodValid.value) return true; + return query ? regexp.test(getLabel(o) || "") : true; + }; + if (props.loading) return []; + return [...states.createdOptions, ...props.options].reduce((all, item) => { + const options = getOptions(item); + if (isArray$1(options)) { + const filtered = options.filter(isValidOption); + if (filtered.length > 0) all.push({ + label: getLabel(item), + type: "Group" + }, ...filtered); + } else if (props.remote || isValidOption(item)) all.push(item); + return all; + }, []); + }; + const updateOptions = () => { + filteredOptions.value = filterOptions(states.inputValue); + }; + const allOptionsValueMap = (0, vue.computed)(() => { + const valueMap = /* @__PURE__ */ new Map(); + allOptions.value.forEach((option, index) => { + valueMap.set(getValueKey(getValue(option)), { + option, + index + }); + }); + return valueMap; + }); + const filteredOptionsValueMap = (0, vue.computed)(() => { + const valueMap = /* @__PURE__ */ new Map(); + filteredOptions.value.forEach((option, index) => { + valueMap.set(getValueKey(getValue(option)), { + option, + index + }); + }); + return valueMap; + }); + const optionsAllDisabled = (0, vue.computed)(() => filteredOptions.value.every((option) => getDisabled(option))); + const selectSize = useFormSize(); + const collapseTagSize = (0, vue.computed)(() => "small" === selectSize.value ? "small" : "default"); + const calculatePopperSize = () => { + if (isNumber(props.fitInputWidth)) { + popperSize.value = props.fitInputWidth; + return; + } + const width = selectRef.value?.offsetWidth || 200; + if (!props.fitInputWidth && hasOptions.value) (0, vue.nextTick)(() => { + popperSize.value = Math.max(width, calculateLabelMaxWidth()); + }); + else popperSize.value = width; + }; + const calculateLabelMaxWidth = () => { + const ctx = document.createElement("canvas").getContext("2d"); + const selector = nsSelect.be("dropdown", "item"); + const dropdownItemEl = (menuRef.value?.listRef?.innerRef || document).querySelector(`.${selector}`); + if (dropdownItemEl === null || ctx === null) return 0; + const style = getComputedStyle(dropdownItemEl); + const padding = Number.parseFloat(style.paddingLeft) + Number.parseFloat(style.paddingRight); + ctx.font = `bold ${style.font.replace(new RegExp(`\\b${style.fontWeight}\\b`), "")}`; + return filteredOptions.value.reduce((max, option) => { + const metrics = ctx.measureText(getLabel(option)); + return Math.max(metrics.width, max); + }, 0) + padding; + }; + const getGapWidth = () => { + if (!selectionRef.value) return 0; + const style = window.getComputedStyle(selectionRef.value); + return Number.parseFloat(style.gap || "6px"); + }; + const tagStyle = (0, vue.computed)(() => { + const gapWidth = getGapWidth(); + const inputSlotWidth = props.filterable ? gapWidth + MINIMUM_INPUT_WIDTH : 0; + return { maxWidth: `${collapseItemRef.value && props.maxCollapseTags === 1 ? states.selectionWidth - states.collapseItemWidth - gapWidth - inputSlotWidth : states.selectionWidth - inputSlotWidth}px` }; + }); + const collapseTagStyle = (0, vue.computed)(() => { + return { maxWidth: `${states.selectionWidth}px` }; + }); + const shouldShowPlaceholder = (0, vue.computed)(() => { + if (isArray$1(props.modelValue)) return props.modelValue.length === 0 && !states.inputValue; + return props.filterable ? !states.inputValue : true; + }); + const currentPlaceholder = (0, vue.computed)(() => { + const _placeholder = props.placeholder ?? t("el.select.placeholder"); + return props.multiple || !hasModelValue.value ? _placeholder : states.selectedLabel; + }); + const popperRef = (0, vue.computed)(() => tooltipRef.value?.popperRef?.contentRef); + const indexRef = (0, vue.computed)(() => { + if (props.multiple) { + const len = props.modelValue.length; + if (len > 0 && filteredOptionsValueMap.value.has(props.modelValue[len - 1])) { + const { index } = filteredOptionsValueMap.value.get(props.modelValue[len - 1]); + return index; + } + } else if (!isEmptyValue(props.modelValue) && filteredOptionsValueMap.value.has(props.modelValue)) { + const { index } = filteredOptionsValueMap.value.get(props.modelValue); + return index; + } + return -1; + }); + const dropdownMenuVisible = (0, vue.computed)({ + get() { + return expanded.value && (props.loading || !isRemoteSearchEmpty.value || props.remote && !!slots.empty) && (!debouncing.value || !isEmpty(states.previousQuery) || hasOptions.value); + }, + set(val) { + expanded.value = val; + } + }); + const showTagList = (0, vue.computed)(() => { + if (!props.multiple) return []; + return props.collapseTags ? states.cachedOptions.slice(0, props.maxCollapseTags) : states.cachedOptions; + }); + const collapseTagList = (0, vue.computed)(() => { + if (!props.multiple) return []; + return props.collapseTags ? states.cachedOptions.slice(props.maxCollapseTags) : []; + }); + const { createNewOption, removeNewOption, selectNewOption, clearAllNewOption } = useAllowCreate(props, states); + const toggleMenu = (event) => { + if (selectDisabled.value || props.filterable && expanded.value && event && !suffixRef.value?.contains(event.target)) return; + if (states.menuVisibleOnFocus) states.menuVisibleOnFocus = false; + else expanded.value = !expanded.value; + }; + const onInputChange = () => { + if (states.inputValue.length > 0 && !expanded.value) expanded.value = true; + createNewOption(states.inputValue); + (0, vue.nextTick)(() => { + handleQueryChange(states.inputValue); + }); + }; + const debouncedOnInputChange = useDebounceFn(() => { + onInputChange(); + debouncing.value = false; + }, debounce); + const handleQueryChange = (val) => { + if (states.previousQuery === val || isComposing.value) return; + states.previousQuery = val; + if (props.filterable && isFunction$1(props.filterMethod)) props.filterMethod(val); + else if (props.filterable && props.remote && isFunction$1(props.remoteMethod)) props.remoteMethod(val); + if (props.defaultFirstOption && (props.filterable || props.remote) && filteredOptions.value.length) (0, vue.nextTick)(checkDefaultFirstOption); + else (0, vue.nextTick)(updateHoveringIndex); + }; + /** + * find and highlight first option as default selected + * @remark + * - if the first option in dropdown list is user-created, + * it would be at the end of the optionsArray + * so find it and set hover. + * (NOTE: there must be only one user-created option in dropdown list with query) + * - if there's no user-created option in list, just find the first one as usual + * (NOTE: exclude options that are disabled or in disabled-group) + */ + const checkDefaultFirstOption = () => { + const optionsInDropdown = filteredOptions.value.filter((n) => !n.disabled && n.type !== "Group"); + const userCreatedOption = optionsInDropdown.find((n) => n.created); + const firstOriginOption = optionsInDropdown[0]; + states.hoveringIndex = getValueIndex(filteredOptions.value, userCreatedOption || firstOriginOption); + }; + const emitChange = (val) => { + if (!isEqual$1(props.modelValue, val)) emit(CHANGE_EVENT, val); + }; + const update = (val) => { + emit(UPDATE_MODEL_EVENT, val); + emitChange(val); + states.previousValue = props.multiple ? String(val) : val; + (0, vue.nextTick)(() => { + if (props.multiple && isArray$1(props.modelValue)) { + const cachedOptions = states.cachedOptions.slice(); + const selectedOptions = props.modelValue.map((value) => getOption(value, cachedOptions)); + if (!isEqual$1(states.cachedOptions, selectedOptions)) states.cachedOptions = selectedOptions; + } else initStates(true); + }); + }; + const getValueIndex = (arr = [], value) => { + if (!isObject$1(value)) return arr.indexOf(value); + const valueKey = props.valueKey; + let index = -1; + arr.some((item, i) => { + if (get(item, valueKey) === get(value, valueKey)) { + index = i; + return true; + } + return false; + }); + return index; + }; + const getValueKey = (item) => { + return isObject$1(item) ? get(item, props.valueKey) : item; + }; + const handleResize = () => { + calculatePopperSize(); + }; + const resetSelectionWidth = () => { + states.selectionWidth = Number.parseFloat(window.getComputedStyle(selectionRef.value).width); + }; + const resetCollapseItemWidth = () => { + states.collapseItemWidth = collapseItemRef.value.getBoundingClientRect().width; + }; + const updateTooltip = () => { + tooltipRef.value?.updatePopper?.(); + }; + const updateTagTooltip = () => { + tagTooltipRef.value?.updatePopper?.(); + }; + const onSelect = (option) => { + const optionValue = getValue(option); + if (props.multiple) { + let selectedOptions = props.modelValue.slice(); + const index = getValueIndex(selectedOptions, optionValue); + if (index > -1) { + selectedOptions = [...selectedOptions.slice(0, index), ...selectedOptions.slice(index + 1)]; + states.cachedOptions.splice(index, 1); + removeNewOption(option); + } else if (props.multipleLimit <= 0 || selectedOptions.length < props.multipleLimit) { + selectedOptions = [...selectedOptions, optionValue]; + states.cachedOptions.push(option); + selectNewOption(option); + } + update(selectedOptions); + if (option.created) handleQueryChange(""); + if (props.filterable && (option.created || !props.reserveKeyword)) states.inputValue = ""; + } else { + states.selectedLabel = getLabel(option); + !isEqual$1(props.modelValue, optionValue) && update(optionValue); + expanded.value = false; + selectNewOption(option); + if (!option.created) clearAllNewOption(); + } + focus(); + }; + const deleteTag = (event, option) => { + let selectedOptions = props.modelValue.slice(); + const index = getValueIndex(selectedOptions, getValue(option)); + if (index > -1 && !selectDisabled.value) { + selectedOptions = [...props.modelValue.slice(0, index), ...props.modelValue.slice(index + 1)]; + states.cachedOptions.splice(index, 1); + update(selectedOptions); + emit("remove-tag", getValue(option)); + removeNewOption(option); + } + event.stopPropagation(); + focus(); + }; + const focus = () => { + inputRef.value?.focus(); + }; + const blur = () => { + if (expanded.value) { + expanded.value = false; + (0, vue.nextTick)(() => inputRef.value?.blur()); + return; + } + inputRef.value?.blur(); + }; + const handleEsc = () => { + if (states.inputValue.length > 0) states.inputValue = ""; + else expanded.value = false; + }; + const getLastNotDisabledIndex = (value) => findLastIndex(value, (it) => !states.cachedOptions.some((option) => getValue(option) === it && getDisabled(option))); + const handleDel = (e) => { + const code = getEventCode(e); + if (!props.multiple) return; + if (code === EVENT_CODE.delete) return; + if (states.inputValue.length === 0) { + e.preventDefault(); + const selected = props.modelValue.slice(); + const lastNotDisabledIndex = getLastNotDisabledIndex(selected); + if (lastNotDisabledIndex < 0) return; + const removeTagValue = selected[lastNotDisabledIndex]; + selected.splice(lastNotDisabledIndex, 1); + const option = states.cachedOptions[lastNotDisabledIndex]; + states.cachedOptions.splice(lastNotDisabledIndex, 1); + removeNewOption(option); + update(selected); + emit("remove-tag", removeTagValue); + } + }; + const handleClear = () => { + let emptyValue; + if (isArray$1(props.modelValue)) emptyValue = []; + else emptyValue = valueOnClear.value; + states.selectedLabel = ""; + expanded.value = false; + update(emptyValue); + emit("clear"); + clearAllNewOption(); + focus(); + }; + const onKeyboardNavigate = (direction, hoveringIndex = void 0) => { + const options = filteredOptions.value; + if (!["forward", "backward"].includes(direction) || selectDisabled.value || options.length <= 0 || optionsAllDisabled.value || isComposing.value) return; + if (!expanded.value) return toggleMenu(); + if (isUndefined(hoveringIndex)) hoveringIndex = states.hoveringIndex; + let newIndex = -1; + if (direction === "forward") { + newIndex = hoveringIndex + 1; + if (newIndex >= options.length) newIndex = 0; + } else if (direction === "backward") { + newIndex = hoveringIndex - 1; + if (newIndex < 0 || newIndex >= options.length) newIndex = options.length - 1; + } + const option = options[newIndex]; + if (getDisabled(option) || option.type === "Group") return onKeyboardNavigate(direction, newIndex); + else { + states.hoveringIndex = newIndex; + scrollToItem(newIndex); + } + }; + const onKeyboardSelect = () => { + if (!expanded.value) return toggleMenu(); + else if (~states.hoveringIndex && filteredOptions.value[states.hoveringIndex]) onSelect(filteredOptions.value[states.hoveringIndex]); + }; + const onHoverOption = (idx) => { + states.hoveringIndex = idx ?? -1; + }; + const updateHoveringIndex = () => { + if (!props.multiple) states.hoveringIndex = filteredOptions.value.findIndex((item) => { + return getValueKey(getValue(item)) === getValueKey(props.modelValue); + }); + else { + const length = props.modelValue.length; + if (length > 0) { + const lastValue = props.modelValue[length - 1]; + states.hoveringIndex = filteredOptions.value.findIndex((item) => getValueKey(lastValue) === getValueKey(getValue(item))); + } else states.hoveringIndex = -1; + } + }; + const onInput = (event) => { + states.inputValue = event.target.value; + if (props.remote) { + debouncing.value = true; + debouncedOnInputChange(); + } else return onInputChange(); + }; + const handleClickOutside = (event) => { + expanded.value = false; + if (isFocused.value) handleBlur(new FocusEvent("blur", event)); + }; + const handleMenuEnter = () => { + states.isBeforeHide = false; + return (0, vue.nextTick)(() => { + if (~indexRef.value) scrollToItem(indexRef.value); + }); + }; + const scrollToItem = (index) => { + menuRef.value.scrollToItem(index); + }; + const getOption = (value, cachedOptions) => { + const selectValue = getValueKey(value); + if (allOptionsValueMap.value.has(selectValue)) { + const { option } = allOptionsValueMap.value.get(selectValue); + return option; + } + if (cachedOptions && cachedOptions.length) { + const option = cachedOptions.find((option) => getValueKey(getValue(option)) === selectValue); + if (option) return option; + } + return { + [aliasProps.value.value]: value, + [aliasProps.value.label]: value + }; + }; + const getIndex = (option) => allOptionsValueMap.value.get(getValue(option))?.index ?? -1; + const initStates = (needUpdateSelectedLabel = false) => { + if (props.multiple) if (props.modelValue.length > 0) { + const cachedOptions = states.cachedOptions.slice(); + states.cachedOptions.length = 0; + states.previousValue = props.modelValue.toString(); + for (const value of props.modelValue) { + const option = getOption(value, cachedOptions); + states.cachedOptions.push(option); + } + } else { + states.cachedOptions = []; + states.previousValue = void 0; + } + else if (hasModelValue.value) { + states.previousValue = props.modelValue; + const options = filteredOptions.value; + const selectedItemIndex = options.findIndex((option) => getValueKey(getValue(option)) === getValueKey(props.modelValue)); + if (~selectedItemIndex) states.selectedLabel = getLabel(options[selectedItemIndex]); + else if (!states.selectedLabel || needUpdateSelectedLabel) states.selectedLabel = getValueKey(props.modelValue); + } else { + states.selectedLabel = ""; + states.previousValue = void 0; + } + clearAllNewOption(); + calculatePopperSize(); + }; + (0, vue.watch)(() => props.fitInputWidth, () => { + calculatePopperSize(); + }); + (0, vue.watch)(expanded, (val) => { + if (val) { + if (!props.persistent) calculatePopperSize(); + handleQueryChange(""); + } else { + states.inputValue = ""; + states.previousQuery = null; + states.isBeforeHide = true; + states.menuVisibleOnFocus = false; + createNewOption(""); + } + }); + (0, vue.watch)(() => props.modelValue, (val, oldVal) => { + if (!val || isArray$1(val) && val.length === 0 || props.multiple && !isEqual$1(val.toString(), states.previousValue) || !props.multiple && getValueKey(val) !== getValueKey(states.previousValue)) initStates(true); + if (!isEqual$1(val, oldVal) && props.validateEvent) elFormItem?.validate?.("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + }, { deep: true }); + (0, vue.watch)(() => props.options, () => { + const input = inputRef.value; + if (!input || input && document.activeElement !== input) initStates(); + }, { + deep: true, + flush: "post" + }); + (0, vue.watch)(() => filteredOptions.value, () => { + calculatePopperSize(); + return menuRef.value && (0, vue.nextTick)(menuRef.value.resetScrollTop); + }); + (0, vue.watchEffect)(() => { + if (states.isBeforeHide) return; + updateOptions(); + }); + (0, vue.watchEffect)(() => { + const { valueKey, options } = props; + const duplicateValue = /* @__PURE__ */ new Map(); + for (const item of options) { + const optionValue = getValue(item); + let v = optionValue; + if (isObject$1(v)) v = get(optionValue, valueKey); + if (duplicateValue.get(v)) { + /* @__PURE__ */ debugWarn("ElSelectV2", `The option values you provided seem to be duplicated, which may cause some problems, please check.`); + break; + } else duplicateValue.set(v, true); + } + }); + (0, vue.onMounted)(() => { + initStates(); + }); + useResizeObserver(selectRef, handleResize); + useResizeObserver(selectionRef, resetSelectionWidth); + useResizeObserver(wrapperRef, updateTooltip); + useResizeObserver(tagMenuRef, updateTagTooltip); + useResizeObserver(collapseItemRef, resetCollapseItemWidth); + let stop; + (0, vue.watch)(() => dropdownMenuVisible.value, (newVal) => { + if (newVal) stop = useResizeObserver(menuRef, updateTooltip).stop; + else { + stop?.(); + stop = void 0; + } + emit("visible-change", newVal); + }); + return { + inputId, + collapseTagSize, + currentPlaceholder, + expanded, + emptyText, + popupHeight, + debounce, + allOptions, + allOptionsValueMap, + filteredOptions, + iconComponent, + iconReverse, + tagStyle, + collapseTagStyle, + popperSize, + dropdownMenuVisible, + hasModelValue, + shouldShowPlaceholder, + selectDisabled, + selectSize, + needStatusIcon, + showClearBtn, + states, + isFocused, + nsSelect, + nsInput, + inputRef, + menuRef, + tagMenuRef, + tooltipRef, + tagTooltipRef, + selectRef, + wrapperRef, + selectionRef, + prefixRef, + suffixRef, + collapseItemRef, + popperRef, + validateState, + validateIcon, + showTagList, + collapseTagList, + debouncedOnInputChange, + deleteTag, + getLabel, + getValue, + getDisabled, + getValueKey, + getIndex, + handleClear, + handleClickOutside, + handleDel, + handleEsc, + focus, + blur, + handleMenuEnter, + handleResize, + resetSelectionWidth, + updateTooltip, + updateTagTooltip, + updateOptions, + toggleMenu, + scrollTo: scrollToItem, + onInput, + onKeyboardNavigate, + onKeyboardSelect, + onSelect, + onHover: onHoverOption, + handleCompositionStart, + handleCompositionEnd, + handleCompositionUpdate + }; + }; + +//#endregion +//#region ../../packages/components/select-v2/src/select.vue?vue&type=script&lang.ts + var select_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElSelectV2", + components: { + ElSelectMenu: select_dropdown_default, + ElTag, + ElTooltip, + ElIcon + }, + directives: { ClickOutside }, + props: selectV2Props, + emits: selectV2Emits, + setup(props, { emit }) { + const modelValue = (0, vue.computed)(() => { + const { modelValue: rawModelValue, multiple } = props; + const fallback = multiple ? [] : void 0; + if (isArray$1(rawModelValue)) return multiple ? rawModelValue : fallback; + return multiple ? fallback : rawModelValue; + }); + const API = useSelect$1((0, vue.reactive)({ + ...(0, vue.toRefs)(props), + modelValue + }), emit); + const { calculatorRef, inputStyle } = useCalcInputWidth(); + const contentId = useId(); + (0, vue.provide)(selectV2InjectionKey, { + props: (0, vue.reactive)({ + ...(0, vue.toRefs)(props), + height: API.popupHeight, + modelValue + }), + expanded: API.expanded, + tooltipRef: API.tooltipRef, + contentId, + onSelect: API.onSelect, + onHover: API.onHover, + onKeyboardNavigate: API.onKeyboardNavigate, + onKeyboardSelect: API.onKeyboardSelect + }); + const selectedLabel = (0, vue.computed)(() => { + if (!props.multiple) return API.states.selectedLabel; + return API.states.cachedOptions.map((i) => API.getLabel(i)); + }); + return { + ...API, + modelValue, + selectedLabel, + calculatorRef, + inputStyle, + contentId, + BORDER_HORIZONTAL_WIDTH + }; + } + }); + +//#endregion +//#region ../../packages/components/select-v2/src/select.vue + const _hoisted_1$21 = [ + "id", + "value", + "autocomplete", + "tabindex", + "aria-expanded", + "aria-label", + "disabled", + "aria-controls", + "aria-activedescendant", + "readonly", + "name" + ]; + const _hoisted_2$13 = ["textContent"]; + const _hoisted_3$5 = { key: 1 }; + function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) { + const _component_el_tag = (0, vue.resolveComponent)("el-tag"); + const _component_el_tooltip = (0, vue.resolveComponent)("el-tooltip"); + const _component_el_icon = (0, vue.resolveComponent)("el-icon"); + const _component_el_select_menu = (0, vue.resolveComponent)("el-select-menu"); + const _directive_click_outside = (0, vue.resolveDirective)("click-outside"); + return (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref: "selectRef", + class: (0, vue.normalizeClass)([_ctx.nsSelect.b(), _ctx.nsSelect.m(_ctx.selectSize)]), + onMouseenter: _cache[15] || (_cache[15] = ($event) => _ctx.states.inputHovering = true), + onMouseleave: _cache[16] || (_cache[16] = ($event) => _ctx.states.inputHovering = false) + }, [(0, vue.createVNode)(_component_el_tooltip, { + ref: "tooltipRef", + visible: _ctx.dropdownMenuVisible, + teleported: _ctx.teleported, + "popper-class": [_ctx.nsSelect.e("popper"), _ctx.popperClass], + "popper-style": _ctx.popperStyle, + "gpu-acceleration": false, + "stop-popper-mouse-event": false, + "popper-options": _ctx.popperOptions, + "fallback-placements": _ctx.fallbackPlacements, + effect: _ctx.effect, + placement: _ctx.placement, + pure: "", + transition: `${_ctx.nsSelect.namespace.value}-zoom-in-top`, + trigger: "click", + persistent: _ctx.persistent, + "append-to": _ctx.appendTo, + "show-arrow": _ctx.showArrow, + offset: _ctx.offset, + onBeforeShow: _ctx.handleMenuEnter, + onHide: _cache[14] || (_cache[14] = ($event) => _ctx.states.isBeforeHide = false) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + ref: "wrapperRef", + class: (0, vue.normalizeClass)([ + _ctx.nsSelect.e("wrapper"), + _ctx.nsSelect.is("focused", _ctx.isFocused), + _ctx.nsSelect.is("hovering", _ctx.states.inputHovering), + _ctx.nsSelect.is("filterable", _ctx.filterable), + _ctx.nsSelect.is("disabled", _ctx.selectDisabled) + ]), + onClick: _cache[11] || (_cache[11] = (0, vue.withModifiers)((...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args), ["prevent"])) + }, [ + _ctx.$slots.prefix ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + ref: "prefixRef", + class: (0, vue.normalizeClass)(_ctx.nsSelect.e("prefix")) + }, [(0, vue.renderSlot)(_ctx.$slots, "prefix")], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { + ref: "selectionRef", + class: (0, vue.normalizeClass)([_ctx.nsSelect.e("selection"), _ctx.nsSelect.is("near", _ctx.multiple && !_ctx.$slots.prefix && !!_ctx.modelValue.length)]) + }, [ + _ctx.multiple ? (0, vue.renderSlot)(_ctx.$slots, "tag", { + key: 0, + data: _ctx.states.cachedOptions, + deleteTag: _ctx.deleteTag, + selectDisabled: _ctx.selectDisabled + }, () => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(_ctx.showTagList, (item) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: _ctx.getValueKey(_ctx.getValue(item)), + class: (0, vue.normalizeClass)(_ctx.nsSelect.e("selected-item")) + }, [(0, vue.createVNode)(_component_el_tag, { + closable: !_ctx.selectDisabled && !_ctx.getDisabled(item), + size: _ctx.collapseTagSize, + type: _ctx.tagType, + effect: _ctx.tagEffect, + "disable-transitions": "", + style: (0, vue.normalizeStyle)(_ctx.tagStyle), + onClose: ($event) => _ctx.deleteTag($event, item) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)(_ctx.nsSelect.e("tags-text")) }, [(0, vue.renderSlot)(_ctx.$slots, "label", { + index: _ctx.getIndex(item), + label: _ctx.getLabel(item), + value: _ctx.getValue(item) + }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(_ctx.getLabel(item)), 1)])], 2)]), + _: 2 + }, 1032, [ + "closable", + "size", + "type", + "effect", + "style", + "onClose" + ])], 2); + }), 128)), _ctx.collapseTags && _ctx.states.cachedOptions.length > _ctx.maxCollapseTags ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_tooltip, { + key: 0, + ref: "tagTooltipRef", + disabled: _ctx.dropdownMenuVisible || !_ctx.collapseTagsTooltip, + "fallback-placements": _ctx.tagTooltip?.fallbackPlacements ?? [ + "bottom", + "top", + "right", + "left" + ], + effect: _ctx.tagTooltip?.effect ?? _ctx.effect, + placement: _ctx.tagTooltip?.placement ?? "bottom", + "popper-class": _ctx.tagTooltip?.popperClass ?? _ctx.popperClass, + "popper-style": _ctx.tagTooltip?.popperStyle ?? _ctx.popperStyle, + teleported: _ctx.tagTooltip?.teleported ?? _ctx.teleported, + "append-to": _ctx.tagTooltip?.appendTo ?? _ctx.appendTo, + "popper-options": _ctx.tagTooltip?.popperOptions ?? _ctx.popperOptions, + transition: _ctx.tagTooltip?.transition, + "show-after": _ctx.tagTooltip?.showAfter, + "hide-after": _ctx.tagTooltip?.hideAfter, + "auto-close": _ctx.tagTooltip?.autoClose, + offset: _ctx.tagTooltip?.offset + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + ref: "collapseItemRef", + class: (0, vue.normalizeClass)(_ctx.nsSelect.e("selected-item")) + }, [(0, vue.createVNode)(_component_el_tag, { + closable: false, + size: _ctx.collapseTagSize, + type: _ctx.tagType, + effect: _ctx.tagEffect, + style: (0, vue.normalizeStyle)(_ctx.collapseTagStyle), + "disable-transitions": "" + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)(_ctx.nsSelect.e("tags-text")) }, " + " + (0, vue.toDisplayString)(_ctx.states.cachedOptions.length - _ctx.maxCollapseTags), 3)]), + _: 1 + }, 8, [ + "size", + "type", + "effect", + "style" + ])], 2)]), + content: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + ref: "tagMenuRef", + class: (0, vue.normalizeClass)(_ctx.nsSelect.e("selection")) + }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(_ctx.collapseTagList, (selected) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: _ctx.getValueKey(_ctx.getValue(selected)), + class: (0, vue.normalizeClass)(_ctx.nsSelect.e("selected-item")) + }, [(0, vue.createVNode)(_component_el_tag, { + class: "in-tooltip", + closable: !_ctx.selectDisabled && !_ctx.getDisabled(selected), + size: _ctx.collapseTagSize, + type: _ctx.tagType, + effect: _ctx.tagEffect, + "disable-transitions": "", + onClose: ($event) => _ctx.deleteTag($event, selected) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)(_ctx.nsSelect.e("tags-text")) }, [(0, vue.renderSlot)(_ctx.$slots, "label", { + index: _ctx.getIndex(selected), + label: _ctx.getLabel(selected), + value: _ctx.getValue(selected) + }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(_ctx.getLabel(selected)), 1)])], 2)]), + _: 2 + }, 1032, [ + "closable", + "size", + "type", + "effect", + "onClose" + ])], 2); + }), 128))], 2)]), + _: 3 + }, 8, [ + "disabled", + "fallback-placements", + "effect", + "placement", + "popper-class", + "popper-style", + "teleported", + "append-to", + "popper-options", + "transition", + "show-after", + "hide-after", + "auto-close", + "offset" + ])) : (0, vue.createCommentVNode)("v-if", true)]) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([ + _ctx.nsSelect.e("selected-item"), + _ctx.nsSelect.e("input-wrapper"), + _ctx.nsSelect.is("hidden", !_ctx.filterable || _ctx.selectDisabled || !_ctx.states.inputValue && !_ctx.isFocused) + ]) }, [(0, vue.createElementVNode)("input", { + id: _ctx.inputId, + ref: "inputRef", + value: _ctx.states.inputValue, + style: (0, vue.normalizeStyle)(_ctx.inputStyle), + autocomplete: _ctx.autocomplete, + tabindex: _ctx.tabindex, + "aria-autocomplete": "none", + "aria-haspopup": "listbox", + autocapitalize: "off", + "aria-expanded": _ctx.expanded, + "aria-label": _ctx.ariaLabel, + class: (0, vue.normalizeClass)([_ctx.nsSelect.e("input"), _ctx.nsSelect.is(_ctx.selectSize)]), + disabled: _ctx.selectDisabled, + role: "combobox", + "aria-controls": _ctx.contentId, + "aria-activedescendant": _ctx.states.hoveringIndex >= 0 ? `${_ctx.contentId}-${_ctx.states.hoveringIndex}` : "", + readonly: !_ctx.filterable, + spellcheck: "false", + type: "text", + name: _ctx.name, + onInput: _cache[0] || (_cache[0] = (...args) => _ctx.onInput && _ctx.onInput(...args)), + onChange: _cache[1] || (_cache[1] = (0, vue.withModifiers)(() => {}, ["stop"])), + onCompositionstart: _cache[2] || (_cache[2] = (...args) => _ctx.handleCompositionStart && _ctx.handleCompositionStart(...args)), + onCompositionupdate: _cache[3] || (_cache[3] = (...args) => _ctx.handleCompositionUpdate && _ctx.handleCompositionUpdate(...args)), + onCompositionend: _cache[4] || (_cache[4] = (...args) => _ctx.handleCompositionEnd && _ctx.handleCompositionEnd(...args)), + onKeydown: [ + _cache[5] || (_cache[5] = (0, vue.withKeys)((0, vue.withModifiers)(($event) => _ctx.onKeyboardNavigate("backward"), ["stop", "prevent"]), ["up"])), + _cache[6] || (_cache[6] = (0, vue.withKeys)((0, vue.withModifiers)(($event) => _ctx.onKeyboardNavigate("forward"), ["stop", "prevent"]), ["down"])), + _cache[7] || (_cache[7] = (0, vue.withKeys)((0, vue.withModifiers)((...args) => _ctx.onKeyboardSelect && _ctx.onKeyboardSelect(...args), ["stop", "prevent"]), ["enter"])), + _cache[8] || (_cache[8] = (0, vue.withKeys)((0, vue.withModifiers)((...args) => _ctx.handleEsc && _ctx.handleEsc(...args), ["stop", "prevent"]), ["esc"])), + _cache[9] || (_cache[9] = (0, vue.withKeys)((0, vue.withModifiers)((...args) => _ctx.handleDel && _ctx.handleDel(...args), ["stop"]), ["delete"])) + ], + onClick: _cache[10] || (_cache[10] = (0, vue.withModifiers)((...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args), ["stop"])) + }, null, 46, _hoisted_1$21), _ctx.filterable ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 0, + ref: "calculatorRef", + "aria-hidden": "true", + class: (0, vue.normalizeClass)(_ctx.nsSelect.e("input-calculator")), + textContent: (0, vue.toDisplayString)(_ctx.states.inputValue) + }, null, 10, _hoisted_2$13)) : (0, vue.createCommentVNode)("v-if", true)], 2), + _ctx.shouldShowPlaceholder ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)([ + _ctx.nsSelect.e("selected-item"), + _ctx.nsSelect.e("placeholder"), + _ctx.nsSelect.is("transparent", !_ctx.hasModelValue || _ctx.expanded && !_ctx.states.inputValue) + ]) + }, [_ctx.hasModelValue ? (0, vue.renderSlot)(_ctx.$slots, "label", { + key: 0, + index: _ctx.allOptionsValueMap.get(_ctx.modelValue)?.index ?? -1, + label: _ctx.currentPlaceholder, + value: _ctx.modelValue + }, () => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(_ctx.currentPlaceholder), 1)]) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$5, (0, vue.toDisplayString)(_ctx.currentPlaceholder), 1))], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 2), + (0, vue.createElementVNode)("div", { + ref: "suffixRef", + class: (0, vue.normalizeClass)(_ctx.nsSelect.e("suffix")) + }, [ + _ctx.iconComponent ? (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_icon, { + key: 0, + class: (0, vue.normalizeClass)([ + _ctx.nsSelect.e("caret"), + _ctx.nsInput.e("icon"), + _ctx.iconReverse + ]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.iconComponent)))]), + _: 1 + }, 8, ["class"])), [[vue.vShow, !_ctx.showClearBtn]]) : (0, vue.createCommentVNode)("v-if", true), + _ctx.showClearBtn && _ctx.clearIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_icon, { + key: 1, + class: (0, vue.normalizeClass)([ + _ctx.nsSelect.e("caret"), + _ctx.nsInput.e("icon"), + _ctx.nsSelect.e("clear") + ]), + onClick: (0, vue.withModifiers)(_ctx.handleClear, ["prevent", "stop"]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.clearIcon)))]), + _: 1 + }, 8, ["class", "onClick"])) : (0, vue.createCommentVNode)("v-if", true), + _ctx.validateState && _ctx.validateIcon && _ctx.needStatusIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_icon, { + key: 2, + class: (0, vue.normalizeClass)([ + _ctx.nsInput.e("icon"), + _ctx.nsInput.e("validateIcon"), + _ctx.nsInput.is("loading", _ctx.validateState === "validating") + ]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.validateIcon)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true) + ], 2) + ], 2)]), + content: (0, vue.withCtx)(() => [(0, vue.createVNode)(_component_el_select_menu, { + id: _ctx.contentId, + ref: "menuRef", + data: _ctx.filteredOptions, + width: _ctx.popperSize - _ctx.BORDER_HORIZONTAL_WIDTH, + "hovering-index": _ctx.states.hoveringIndex, + "scrollbar-always-on": _ctx.scrollbarAlwaysOn, + "aria-label": _ctx.ariaLabel + }, (0, vue.createSlots)({ + default: (0, vue.withCtx)((scope) => [(0, vue.renderSlot)(_ctx.$slots, "default", (0, vue.normalizeProps)((0, vue.guardReactiveProps)(scope)))]), + _: 2 + }, [ + _ctx.$slots.header ? { + name: "header", + fn: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)(_ctx.nsSelect.be("dropdown", "header")), + onClick: _cache[12] || (_cache[12] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, [(0, vue.renderSlot)(_ctx.$slots, "header")], 2)]), + key: "0" + } : void 0, + _ctx.$slots.loading && _ctx.loading ? { + name: "loading", + fn: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(_ctx.nsSelect.be("dropdown", "loading")) }, [(0, vue.renderSlot)(_ctx.$slots, "loading")], 2)]), + key: "1" + } : _ctx.loading || _ctx.filteredOptions.length === 0 ? { + name: "empty", + fn: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(_ctx.nsSelect.be("dropdown", "empty")) }, [(0, vue.renderSlot)(_ctx.$slots, "empty", {}, () => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(_ctx.emptyText), 1)])], 2)]), + key: "2" + } : void 0, + _ctx.$slots.footer ? { + name: "footer", + fn: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)(_ctx.nsSelect.be("dropdown", "footer")), + onClick: _cache[13] || (_cache[13] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, [(0, vue.renderSlot)(_ctx.$slots, "footer")], 2)]), + key: "3" + } : void 0 + ]), 1032, [ + "id", + "data", + "width", + "hovering-index", + "scrollbar-always-on", + "aria-label" + ])]), + _: 3 + }, 8, [ + "visible", + "teleported", + "popper-class", + "popper-style", + "popper-options", + "fallback-placements", + "effect", + "placement", + "transition", + "persistent", + "append-to", + "show-arrow", + "offset", + "onBeforeShow" + ])], 34)), [[ + _directive_click_outside, + _ctx.handleClickOutside, + _ctx.popperRef + ]]); + } + var select_default = /* @__PURE__ */ _plugin_vue_export_helper_default(select_vue_vue_type_script_lang_default, [["render", _sfc_render$5]]); + +//#endregion +//#region ../../packages/components/select-v2/index.ts + const ElSelectV2 = withInstall(select_default); + +//#endregion +//#region ../../packages/components/skeleton/src/skeleton.ts +/** + * @deprecated Removed after 3.0.0, Use `SkeletonProps` instead. + */ + const skeletonProps = buildProps({ + animated: Boolean, + count: { + type: Number, + default: 1 + }, + rows: { + type: Number, + default: 3 + }, + loading: { + type: Boolean, + default: true + }, + throttle: { type: definePropType([Number, Object]) } + }); + +//#endregion +//#region ../../packages/components/skeleton/src/skeleton-item.ts +/** + * @deprecated Removed after 3.0.0, Use `SkeletonItemProps` instead. + */ + const skeletonItemProps = buildProps({ variant: { + type: String, + values: [ + "circle", + "rect", + "h1", + "h3", + "text", + "caption", + "p", + "image", + "button" + ], + default: "text" + } }); + +//#endregion +//#region ../../packages/components/skeleton/src/skeleton-item.vue?vue&type=script&setup=true&lang.ts + var skeleton_item_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElSkeletonItem", + __name: "skeleton-item", + props: skeletonItemProps, + setup(__props) { + const ns = useNamespace("skeleton"); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("item"), (0, vue.unref)(ns).e(__props.variant)]) }, [__props.variant === "image" ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(picture_filled_default), { key: 0 })) : (0, vue.createCommentVNode)("v-if", true)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/skeleton/src/skeleton-item.vue + var skeleton_item_default = skeleton_item_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/skeleton/src/skeleton.vue?vue&type=script&setup=true&lang.ts + var skeleton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElSkeleton", + __name: "skeleton", + props: skeletonProps, + setup(__props, { expose: __expose }) { + const props = __props; + const ns = useNamespace("skeleton"); + const uiLoading = useThrottleRender((0, vue.toRef)(props, "loading"), props.throttle); + __expose({ uiLoading }); + return (_ctx, _cache) => { + return (0, vue.unref)(uiLoading) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", (0, vue.mergeProps)({ + key: 0, + class: [(0, vue.unref)(ns).b(), (0, vue.unref)(ns).is("animated", __props.animated)] + }, _ctx.$attrs), [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.count, (i) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: i }, [(0, vue.unref)(uiLoading) ? (0, vue.renderSlot)(_ctx.$slots, "template", { key: i }, () => [(0, vue.createVNode)(skeleton_item_default, { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).is("first")), + variant: "p" + }, null, 8, ["class"]), ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.rows, (item) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(skeleton_item_default, { + key: item, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("paragraph"), (0, vue.unref)(ns).is("last", item === __props.rows && __props.rows > 1)]), + variant: "p" + }, null, 8, ["class"]); + }), 128))]) : (0, vue.createCommentVNode)("v-if", true)], 64); + }), 128))], 16)) : (0, vue.renderSlot)(_ctx.$slots, "default", (0, vue.normalizeProps)((0, vue.mergeProps)({ key: 1 }, _ctx.$attrs))); + }; + } + }); + +//#endregion +//#region ../../packages/components/skeleton/src/skeleton.vue + var skeleton_default = skeleton_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/skeleton/index.ts + const ElSkeleton = withInstall(skeleton_default, { SkeletonItem: skeleton_item_default }); + const ElSkeletonItem = withNoopInstall(skeleton_item_default); + +//#endregion +//#region ../../packages/components/slider/src/constants.ts + const sliderContextKey = Symbol("sliderContextKey"); + +//#endregion +//#region ../../packages/components/slider/src/slider.ts + const sliderProps = buildProps({ + modelValue: { + type: definePropType([Number, Array]), + default: 0 + }, + id: { + type: String, + default: void 0 + }, + min: { + type: Number, + default: 0 + }, + max: { + type: Number, + default: 100 + }, + step: { + type: definePropType([Number, String]), + default: 1 + }, + showInput: Boolean, + showInputControls: { + type: Boolean, + default: true + }, + size: useSizeProp, + inputSize: useSizeProp, + showStops: Boolean, + showTooltip: { + type: Boolean, + default: true + }, + formatTooltip: { + type: definePropType(Function), + default: void 0 + }, + disabled: { + type: Boolean, + default: void 0 + }, + range: Boolean, + vertical: Boolean, + height: String, + rangeStartLabel: { + type: String, + default: void 0 + }, + rangeEndLabel: { + type: String, + default: void 0 + }, + formatValueText: { + type: definePropType(Function), + default: void 0 + }, + tooltipClass: { + type: String, + default: void 0 + }, + placement: { + type: String, + values: Ee, + default: "top" + }, + marks: { type: definePropType(Object) }, + validateEvent: { + type: Boolean, + default: true + }, + persistent: { + type: Boolean, + default: true + }, + ...useAriaProps(["ariaLabel"]) + }); + const isValidValue$1 = (value) => isNumber(value) || isArray$1(value) && value.every(isNumber); + const sliderEmits = { + [UPDATE_MODEL_EVENT]: isValidValue$1, + [INPUT_EVENT]: isValidValue$1, + [CHANGE_EVENT]: isValidValue$1 + }; + +//#endregion +//#region ../../packages/components/slider/src/composables/use-lifecycle.ts + const useLifecycle = (props, initData, resetSize) => { + const sliderWrapper = (0, vue.ref)(); + (0, vue.onMounted)(async () => { + if (props.range) { + if (isArray$1(props.modelValue)) { + initData.firstValue = Math.max(props.min, props.modelValue[0]); + initData.secondValue = Math.min(props.max, props.modelValue[1]); + } else { + initData.firstValue = props.min; + initData.secondValue = props.max; + } + initData.oldValue = [initData.firstValue, initData.secondValue]; + } else { + if (!isNumber(props.modelValue) || Number.isNaN(props.modelValue)) initData.firstValue = props.min; + else initData.firstValue = Math.min(props.max, Math.max(props.min, props.modelValue)); + initData.oldValue = initData.firstValue; + } + useEventListener(window, "resize", resetSize); + await (0, vue.nextTick)(); + resetSize(); + }); + return { sliderWrapper }; + }; + +//#endregion +//#region ../../packages/components/slider/src/composables/use-marks.ts + const useMarks = (props) => { + const markList = (0, vue.computed)(() => { + if (!props.marks) return []; + return Object.keys(props.marks).map(Number.parseFloat).sort((a, b) => a - b).filter((point) => point <= props.max && point >= props.min).map((point) => ({ + point, + position: (point - props.min) * 100 / (props.max - props.min), + mark: props.marks[point] + })); + }); + (0, vue.watchEffect)(() => { + if (props.step === "mark" && !props.marks) /* @__PURE__ */ debugWarn("ElSlider", "marks prop must be provided when step is mark"); + if (props.marks) { + const keys = Object.keys(props.marks); + const validPoints = markList.value.map((m) => m.point); + const invalidKeys = keys.filter((key) => { + const parsed = Number.parseFloat(key); + return Number.isNaN(parsed) || !validPoints.includes(parsed); + }); + if (invalidKeys.length > 0) /* @__PURE__ */ debugWarn("ElSlider", `Some marks keys are invalid (not a number or out of [min, max]): [${invalidKeys.map((k) => `'${k}'`).join(", ")}] and will be ignored.`); + } + }); + return markList; + }; + +//#endregion +//#region ../../packages/components/slider/src/composables/use-slide.ts + const useSlide = (props, initData, emit) => { + const { formItem: elFormItem } = useFormItem(); + const slider = (0, vue.shallowRef)(); + const firstButton = (0, vue.ref)(); + const secondButton = (0, vue.ref)(); + const buttonRefs = { + firstButton, + secondButton + }; + const sliderDisabled = useFormDisabled(); + const minValue = (0, vue.computed)(() => { + return Math.min(initData.firstValue, initData.secondValue); + }); + const maxValue = (0, vue.computed)(() => { + return Math.max(initData.firstValue, initData.secondValue); + }); + const barSize = (0, vue.computed)(() => { + return props.range ? `${100 * (maxValue.value - minValue.value) / (props.max - props.min)}%` : `${100 * (initData.firstValue - props.min) / (props.max - props.min)}%`; + }); + const barStart = (0, vue.computed)(() => { + return props.range ? `${100 * (minValue.value - props.min) / (props.max - props.min)}%` : "0%"; + }); + const runwayStyle = (0, vue.computed)(() => { + return props.vertical ? { height: props.height } : {}; + }); + const barStyle = (0, vue.computed)(() => { + return props.vertical ? { + height: barSize.value, + bottom: barStart.value + } : { + width: barSize.value, + left: barStart.value + }; + }); + const resetSize = () => { + if (slider.value) initData.sliderSize = slider.value.getBoundingClientRect()[props.vertical ? "height" : "width"]; + }; + const getButtonRefByPercent = (percent) => { + const targetValue = props.min + percent * (props.max - props.min) / 100; + if (!props.range) return firstButton; + let buttonRefName; + if (Math.abs(minValue.value - targetValue) < Math.abs(maxValue.value - targetValue)) buttonRefName = initData.firstValue < initData.secondValue ? "firstButton" : "secondButton"; + else buttonRefName = initData.firstValue > initData.secondValue ? "firstButton" : "secondButton"; + return buttonRefs[buttonRefName]; + }; + const setPosition = (percent) => { + const buttonRef = getButtonRefByPercent(percent); + buttonRef.value.setPosition(percent); + return buttonRef; + }; + const setFirstValue = (firstValue) => { + initData.firstValue = firstValue ?? props.min; + _emit(props.range ? [minValue.value, maxValue.value] : firstValue ?? props.min); + }; + const setSecondValue = (secondValue) => { + initData.secondValue = secondValue; + if (props.range) _emit([minValue.value, maxValue.value]); + }; + const _emit = (val) => { + emit(UPDATE_MODEL_EVENT, val); + emit(INPUT_EVENT, val); + }; + const emitChange = async () => { + await (0, vue.nextTick)(); + emit(CHANGE_EVENT, props.range ? [minValue.value, maxValue.value] : props.modelValue); + }; + const handleSliderPointerEvent = (event) => { + if (sliderDisabled.value || initData.dragging) return; + resetSize(); + let newPercent = 0; + if (props.vertical) { + const clientY = event.touches?.item(0)?.clientY ?? event.clientY; + newPercent = (slider.value.getBoundingClientRect().bottom - clientY) / initData.sliderSize * 100; + } else newPercent = ((event.touches?.item(0)?.clientX ?? event.clientX) - slider.value.getBoundingClientRect().left) / initData.sliderSize * 100; + if (newPercent < 0 || newPercent > 100) return; + return setPosition(newPercent); + }; + const onSliderWrapperPrevent = (event) => { + if (buttonRefs["firstButton"].value?.dragging || buttonRefs["secondButton"].value?.dragging) event.preventDefault(); + }; + const onSliderDown = async (event) => { + const buttonRef = handleSliderPointerEvent(event); + if (buttonRef) { + await (0, vue.nextTick)(); + buttonRef.value.onButtonDown(event); + } + }; + const onSliderClick = (event) => { + if (handleSliderPointerEvent(event)) emitChange(); + }; + const onSliderMarkerDown = (position) => { + if (sliderDisabled.value || initData.dragging) return; + if (setPosition(position)) emitChange(); + }; + return { + elFormItem, + slider, + firstButton, + secondButton, + sliderDisabled, + minValue, + maxValue, + runwayStyle, + barStyle, + resetSize, + setPosition, + emitChange, + onSliderWrapperPrevent, + onSliderClick, + onSliderDown, + onSliderMarkerDown, + setFirstValue, + setSecondValue + }; + }; + +//#endregion +//#region ../../packages/components/slider/src/composables/use-slider-button.ts + const useTooltip = (props, formatTooltip, showTooltip) => { + const tooltip = (0, vue.ref)(); + const tooltipVisible = (0, vue.ref)(false); + const enableFormat = (0, vue.computed)(() => { + return formatTooltip.value instanceof Function; + }); + return { + tooltip, + tooltipVisible, + formatValue: (0, vue.computed)(() => { + return enableFormat.value && formatTooltip.value(props.modelValue) || props.modelValue; + }), + displayTooltip: debounce(() => { + showTooltip.value && (tooltipVisible.value = true); + }, 50), + hideTooltip: debounce(() => { + showTooltip.value && (tooltipVisible.value = false); + }, 50) + }; + }; + const useSliderButton = (props, initData, emit) => { + const { disabled, min, max, step, showTooltip, persistent, precision, sliderSize, formatTooltip, emitChange, resetSize, updateDragging, markList } = (0, vue.inject)(sliderContextKey); + const { tooltip, tooltipVisible, formatValue, displayTooltip, hideTooltip } = useTooltip(props, formatTooltip, showTooltip); + const button = (0, vue.ref)(); + const currentPosition = (0, vue.computed)(() => { + return `${(props.modelValue - min.value) / (max.value - min.value) * 100}%`; + }); + const wrapperStyle = (0, vue.computed)(() => { + return props.vertical ? { bottom: currentPosition.value } : { left: currentPosition.value }; + }); + const shouldMoveToMark = (0, vue.computed)(() => { + return step.value === "mark" && markList.value.length > 0; + }); + const handleMouseEnter = () => { + initData.hovering = true; + displayTooltip(); + }; + const handleMouseLeave = () => { + initData.hovering = false; + if (!initData.dragging) hideTooltip(); + }; + const onButtonDown = (event) => { + if (disabled.value) return; + event.preventDefault(); + onDragStart(event); + window.addEventListener("mousemove", onDragging); + window.addEventListener("touchmove", onDragging); + window.addEventListener("mouseup", onDragEnd); + window.addEventListener("touchend", onDragEnd); + window.addEventListener("contextmenu", onDragEnd); + button.value.focus(); + }; + const incrementPosition = (amount) => { + if (disabled.value) return; + initData.newPosition = Number.parseFloat(currentPosition.value) + amount / (max.value - min.value) * 100; + setPosition(initData.newPosition); + emitChange(); + }; + const moveToMark = (amount) => { + if (disabled.value || !markList.value.length) return; + const current = props.modelValue; + const epsilon = Number.EPSILON; + const stride = Math.abs(amount); + let target; + if (amount > 0) { + const startIndex = markList.value.findIndex((m) => m.point > current + epsilon); + if (startIndex !== -1) { + const targetIndex = Math.min(startIndex + stride - 1, markList.value.length - 1); + target = markList.value[targetIndex].point; + } + } else { + let startIndex = -1; + for (let i = markList.value.length - 1; i >= 0; i--) if (markList.value[i].point < current - epsilon) { + startIndex = i; + break; + } + if (startIndex !== -1) { + const targetIndex = Math.max(startIndex - (stride - 1), 0); + target = markList.value[targetIndex].point; + } + } + if (target !== void 0 && target !== current) { + setPosition((target - min.value) / (max.value - min.value) * 100); + emitChange(); + } + }; + const onLeftKeyDown = () => { + if (shouldMoveToMark.value) moveToMark(-1); + else if (isNumber(step.value)) incrementPosition(-step.value); + }; + const onRightKeyDown = () => { + if (shouldMoveToMark.value) moveToMark(1); + else if (isNumber(step.value)) incrementPosition(step.value); + }; + const onPageDownKeyDown = () => { + if (shouldMoveToMark.value) moveToMark(-4); + else if (isNumber(step.value)) incrementPosition(-step.value * 4); + }; + const onPageUpKeyDown = () => { + if (shouldMoveToMark.value) moveToMark(4); + else if (isNumber(step.value)) incrementPosition(step.value * 4); + }; + const onHomeKeyDown = () => { + if (disabled.value) return; + setPosition(0); + emitChange(); + }; + const onEndKeyDown = () => { + if (disabled.value) return; + setPosition(100); + emitChange(); + }; + const onKeyDown = (event) => { + const code = getEventCode(event); + let isPreventDefault = true; + switch (code) { + case EVENT_CODE.left: + case EVENT_CODE.down: + onLeftKeyDown(); + break; + case EVENT_CODE.right: + case EVENT_CODE.up: + onRightKeyDown(); + break; + case EVENT_CODE.home: + onHomeKeyDown(); + break; + case EVENT_CODE.end: + onEndKeyDown(); + break; + case EVENT_CODE.pageDown: + onPageDownKeyDown(); + break; + case EVENT_CODE.pageUp: + onPageUpKeyDown(); + break; + default: + isPreventDefault = false; + break; + } + isPreventDefault && event.preventDefault(); + }; + const getClientXY = (event) => { + let clientX; + let clientY; + if (event.type.startsWith("touch")) { + clientY = event.touches[0].clientY; + clientX = event.touches[0].clientX; + } else { + clientY = event.clientY; + clientX = event.clientX; + } + return { + clientX, + clientY + }; + }; + const onDragStart = (event) => { + initData.dragging = true; + initData.isClick = true; + const { clientX, clientY } = getClientXY(event); + if (props.vertical) initData.startY = clientY; + else initData.startX = clientX; + initData.startPosition = Number.parseFloat(currentPosition.value); + initData.newPosition = initData.startPosition; + }; + const onDragging = (event) => { + if (initData.dragging) { + initData.isClick = false; + displayTooltip(); + resetSize(); + let diff; + const { clientX, clientY } = getClientXY(event); + if (props.vertical) { + initData.currentY = clientY; + diff = (initData.startY - initData.currentY) / sliderSize.value * 100; + } else { + initData.currentX = clientX; + diff = (initData.currentX - initData.startX) / sliderSize.value * 100; + } + initData.newPosition = initData.startPosition + diff; + setPosition(initData.newPosition); + } + }; + const onDragEnd = () => { + if (initData.dragging) { + setTimeout(() => { + initData.dragging = false; + if (!initData.hovering) hideTooltip(); + if (!initData.isClick) setPosition(initData.newPosition); + emitChange(); + }, 0); + window.removeEventListener("mousemove", onDragging); + window.removeEventListener("touchmove", onDragging); + window.removeEventListener("mouseup", onDragEnd); + window.removeEventListener("touchend", onDragEnd); + window.removeEventListener("contextmenu", onDragEnd); + } + }; + const setPosition = async (newPosition) => { + if (newPosition === null || Number.isNaN(+newPosition)) return; + newPosition = clamp$1(newPosition, 0, 100); + let value; + if (step.value === "mark") if (markList.value.length === 0) value = newPosition <= 50 ? min.value : max.value; + else value = markList.value.reduce((prev, curr) => { + return Math.abs(curr.position - newPosition) < Math.abs(prev.position - newPosition) ? curr : prev; + }).point; + else { + const fullSteps = Math.floor((max.value - min.value) / step.value); + const fullRangePercentage = fullSteps * step.value / (max.value - min.value) * 100; + const threshold = fullRangePercentage + (100 - fullRangePercentage) / 2; + if (newPosition < fullRangePercentage) { + const valueBetween = fullRangePercentage / fullSteps; + const steps = Math.round(newPosition / valueBetween); + value = min.value + steps * step.value; + } else if (newPosition < threshold) value = min.value + fullSteps * step.value; + else value = max.value; + value = Number.parseFloat(value.toFixed(precision.value)); + } + if (value !== props.modelValue) emit(UPDATE_MODEL_EVENT, value); + if (!initData.dragging && props.modelValue !== initData.oldValue) initData.oldValue = props.modelValue; + await (0, vue.nextTick)(); + initData.dragging && displayTooltip(); + tooltip.value.updatePopper(); + }; + (0, vue.watch)(() => initData.dragging, (val) => { + updateDragging(val); + }); + useEventListener(button, "touchstart", onButtonDown, { passive: false }); + return { + disabled, + button, + tooltip, + tooltipVisible, + showTooltip, + persistent, + wrapperStyle, + formatValue, + handleMouseEnter, + handleMouseLeave, + onButtonDown, + onKeyDown, + setPosition + }; + }; + +//#endregion +//#region ../../packages/components/slider/src/composables/use-stops.ts + const useStops = (props, initData, minValue, maxValue) => { + const stops = (0, vue.computed)(() => { + if (!props.showStops || props.min > props.max) return []; + if (props.step === "mark" || props.step === 0) { + if (props.step === 0) /* @__PURE__ */ debugWarn("ElSlider", "step should not be 0."); + return []; + } + const stopCount = Math.ceil((props.max - props.min) / props.step); + const stepWidth = 100 * props.step / (props.max - props.min); + const result = Array.from({ length: stopCount - 1 }).map((_, index) => (index + 1) * stepWidth); + if (props.range) return result.filter((step) => { + return step < 100 * (minValue.value - props.min) / (props.max - props.min) || step > 100 * (maxValue.value - props.min) / (props.max - props.min); + }); + else return result.filter((step) => step > 100 * (initData.firstValue - props.min) / (props.max - props.min)); + }); + const getStopStyle = (position) => { + return props.vertical ? { bottom: `${position}%` } : { left: `${position}%` }; + }; + return { + stops, + getStopStyle + }; + }; + +//#endregion +//#region ../../packages/components/slider/src/composables/use-watch.ts + const useWatch = (props, initData, minValue, maxValue, emit, elFormItem) => { + const _emit = (val) => { + emit(UPDATE_MODEL_EVENT, val); + emit(INPUT_EVENT, val); + }; + const valueChanged = () => { + if (props.range) return ![minValue.value, maxValue.value].every((item, index) => item === initData.oldValue[index]); + else return props.modelValue !== initData.oldValue; + }; + const setValues = () => { + if (props.min > props.max) throwError("Slider", "min should not be greater than max."); + const val = props.modelValue; + if (props.range && isArray$1(val)) if (val[1] < props.min) _emit([props.min, props.min]); + else if (val[0] > props.max) _emit([props.max, props.max]); + else if (val[0] < props.min) _emit([props.min, val[1]]); + else if (val[1] > props.max) _emit([val[0], props.max]); + else { + initData.firstValue = val[0]; + initData.secondValue = val[1]; + if (valueChanged()) { + if (props.validateEvent) elFormItem?.validate?.("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + initData.oldValue = val.slice(); + } + } + else if (!props.range && isNumber(val) && !Number.isNaN(val)) if (val < props.min) _emit(props.min); + else if (val > props.max) _emit(props.max); + else { + initData.firstValue = val; + if (valueChanged()) { + if (props.validateEvent) elFormItem?.validate?.("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + initData.oldValue = val; + } + } + }; + setValues(); + (0, vue.watch)(() => initData.dragging, (val) => { + if (!val) setValues(); + }); + (0, vue.watch)(() => props.modelValue, (val, oldVal) => { + if (initData.dragging || isArray$1(val) && isArray$1(oldVal) && val.every((item, index) => item === oldVal[index]) && initData.firstValue === val[0] && initData.secondValue === val[1]) return; + setValues(); + }, { deep: true }); + (0, vue.watch)(() => [props.min, props.max], () => { + setValues(); + }); + }; + +//#endregion +//#region ../../packages/components/slider/src/button.ts + const sliderButtonProps = buildProps({ + modelValue: { + type: Number, + default: 0 + }, + vertical: Boolean, + tooltipClass: String, + placement: { + type: String, + values: Ee, + default: "top" + } + }); + const sliderButtonEmits = { [UPDATE_MODEL_EVENT]: (value) => isNumber(value) }; + +//#endregion +//#region ../../packages/components/slider/src/button.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$20 = ["tabindex"]; + var button_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElSliderButton", + __name: "button", + props: sliderButtonProps, + emits: sliderButtonEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const ns = useNamespace("slider"); + const initData = (0, vue.reactive)({ + hovering: false, + dragging: false, + isClick: false, + startX: 0, + currentX: 0, + startY: 0, + currentY: 0, + startPosition: 0, + newPosition: 0, + oldValue: props.modelValue + }); + const tooltipPersistent = (0, vue.computed)(() => !showTooltip.value ? false : persistent.value); + const { disabled, button, tooltip, showTooltip, persistent, tooltipVisible, wrapperStyle, formatValue, handleMouseEnter, handleMouseLeave, onButtonDown, onKeyDown, setPosition } = useSliderButton(props, initData, emit); + const { hovering, dragging } = (0, vue.toRefs)(initData); + __expose({ + onButtonDown, + onKeyDown, + setPosition, + hovering, + dragging + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "button", + ref: button, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("button-wrapper"), { + hover: (0, vue.unref)(hovering), + dragging: (0, vue.unref)(dragging) + }]), + style: (0, vue.normalizeStyle)((0, vue.unref)(wrapperStyle)), + tabindex: (0, vue.unref)(disabled) ? void 0 : 0, + onMouseenter: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(handleMouseEnter) && (0, vue.unref)(handleMouseEnter)(...args)), + onMouseleave: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(handleMouseLeave) && (0, vue.unref)(handleMouseLeave)(...args)), + onMousedown: _cache[2] || (_cache[2] = (...args) => (0, vue.unref)(onButtonDown) && (0, vue.unref)(onButtonDown)(...args)), + onFocus: _cache[3] || (_cache[3] = (...args) => (0, vue.unref)(handleMouseEnter) && (0, vue.unref)(handleMouseEnter)(...args)), + onBlur: _cache[4] || (_cache[4] = (...args) => (0, vue.unref)(handleMouseLeave) && (0, vue.unref)(handleMouseLeave)(...args)), + onKeydown: _cache[5] || (_cache[5] = (...args) => (0, vue.unref)(onKeyDown) && (0, vue.unref)(onKeyDown)(...args)) + }, [(0, vue.createVNode)((0, vue.unref)(ElTooltip), { + ref_key: "tooltip", + ref: tooltip, + visible: (0, vue.unref)(tooltipVisible), + placement: _ctx.placement, + "fallback-placements": [ + "top", + "bottom", + "right", + "left" + ], + "stop-popper-mouse-event": false, + "popper-class": _ctx.tooltipClass, + disabled: !(0, vue.unref)(showTooltip), + persistent: tooltipPersistent.value + }, { + content: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)((0, vue.unref)(formatValue)), 1)]), + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("button"), { + hover: (0, vue.unref)(hovering), + dragging: (0, vue.unref)(dragging) + }]) }, null, 2)]), + _: 1 + }, 8, [ + "visible", + "placement", + "popper-class", + "disabled", + "persistent" + ])], 46, _hoisted_1$20); + }; + } + }); + +//#endregion +//#region ../../packages/components/slider/src/button.vue + var button_default = button_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/slider/src/marker.ts + const sliderMarkerProps = buildProps({ mark: { + type: definePropType([String, Object]), + default: void 0 + } }); + var marker_default = (0, vue.defineComponent)({ + name: "ElSliderMarker", + props: sliderMarkerProps, + setup(props) { + const ns = useNamespace("slider"); + const label = (0, vue.computed)(() => { + return isString(props.mark) ? props.mark : props.mark.label; + }); + const style = (0, vue.computed)(() => isString(props.mark) ? void 0 : props.mark.style); + return () => (0, vue.h)("div", { + class: ns.e("marks-text"), + style: style.value + }, label.value); + } + }); + +//#endregion +//#region ../../packages/components/slider/src/slider.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$19 = [ + "id", + "role", + "aria-label", + "aria-labelledby" + ]; + const _hoisted_2$12 = { key: 1 }; + var slider_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElSlider", + __name: "slider", + props: sliderProps, + emits: sliderEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const ns = useNamespace("slider"); + const { t } = useLocale(); + const initData = (0, vue.reactive)({ + firstValue: 0, + secondValue: 0, + oldValue: 0, + dragging: false, + sliderSize: 1 + }); + const { elFormItem, slider, firstButton, secondButton, sliderDisabled, minValue, maxValue, runwayStyle, barStyle, resetSize, emitChange, onSliderWrapperPrevent, onSliderClick, onSliderDown, onSliderMarkerDown, setFirstValue, setSecondValue } = useSlide(props, initData, emit); + const { stops, getStopStyle } = useStops(props, initData, minValue, maxValue); + const { inputId, isLabeledByFormItem } = useFormItemInputId(props, { formItemContext: elFormItem }); + const sliderWrapperSize = useFormSize(); + const sliderInputSize = (0, vue.computed)(() => props.inputSize || sliderWrapperSize.value); + const renderInput = (0, vue.computed)(() => { + return props.showInput && !props.range && props.step !== "mark"; + }); + const groupLabel = (0, vue.computed)(() => { + return props.ariaLabel || t("el.slider.defaultLabel", { + min: props.min, + max: props.max + }); + }); + const firstButtonLabel = (0, vue.computed)(() => { + if (props.range) return props.rangeStartLabel || t("el.slider.defaultRangeStartLabel"); + else return groupLabel.value; + }); + const firstValueText = (0, vue.computed)(() => { + return props.formatValueText ? props.formatValueText(firstValue.value) : `${firstValue.value}`; + }); + const secondButtonLabel = (0, vue.computed)(() => { + return props.rangeEndLabel || t("el.slider.defaultRangeEndLabel"); + }); + const secondValueText = (0, vue.computed)(() => { + return props.formatValueText ? props.formatValueText(secondValue.value) : `${secondValue.value}`; + }); + const sliderKls = (0, vue.computed)(() => [ + ns.b(), + ns.m(sliderWrapperSize.value), + ns.is("vertical", props.vertical), + { [ns.m("with-input")]: renderInput.value } + ]); + const markList = useMarks(props); + useWatch(props, initData, minValue, maxValue, emit, elFormItem); + const sliderInputStep = (0, vue.computed)(() => { + return isNumber(props.step) ? props.step : 1; + }); + const precision = (0, vue.computed)(() => { + const stepValue = isNumber(props.step) ? props.step : 1; + const precisions = [ + props.min, + props.max, + stepValue + ].map((item) => { + const decimal = `${item}`.split(".")[1]; + return decimal ? decimal.length : 0; + }); + return Math.max.apply(null, precisions); + }); + const { sliderWrapper } = useLifecycle(props, initData, resetSize); + const { firstValue, secondValue, sliderSize } = (0, vue.toRefs)(initData); + const updateDragging = (val) => { + initData.dragging = val; + }; + useEventListener(sliderWrapper, "touchstart", onSliderWrapperPrevent, { passive: false }); + useEventListener(sliderWrapper, "touchmove", onSliderWrapperPrevent, { passive: false }); + (0, vue.provide)(sliderContextKey, { + ...(0, vue.toRefs)(props), + sliderSize, + disabled: sliderDisabled, + precision, + markList, + emitChange, + resetSize, + updateDragging + }); + __expose({ onSliderClick }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + id: _ctx.range ? (0, vue.unref)(inputId) : void 0, + ref_key: "sliderWrapper", + ref: sliderWrapper, + class: (0, vue.normalizeClass)(sliderKls.value), + role: _ctx.range ? "group" : void 0, + "aria-label": _ctx.range && !(0, vue.unref)(isLabeledByFormItem) ? groupLabel.value : void 0, + "aria-labelledby": _ctx.range && (0, vue.unref)(isLabeledByFormItem) ? (0, vue.unref)(elFormItem)?.labelId : void 0 + }, [(0, vue.createElementVNode)("div", { + ref_key: "slider", + ref: slider, + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).e("runway"), + { "show-input": renderInput.value }, + (0, vue.unref)(ns).is("disabled", (0, vue.unref)(sliderDisabled)) + ]), + style: (0, vue.normalizeStyle)((0, vue.unref)(runwayStyle)), + onMousedown: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(onSliderDown) && (0, vue.unref)(onSliderDown)(...args)), + onTouchstartPassive: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(onSliderDown) && (0, vue.unref)(onSliderDown)(...args)) + }, [ + (0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("bar")), + style: (0, vue.normalizeStyle)((0, vue.unref)(barStyle)) + }, null, 6), + (0, vue.createVNode)(button_default, { + id: !_ctx.range ? (0, vue.unref)(inputId) : void 0, + ref_key: "firstButton", + ref: firstButton, + "model-value": (0, vue.unref)(firstValue), + vertical: _ctx.vertical, + "tooltip-class": _ctx.tooltipClass, + placement: _ctx.placement, + role: "slider", + "aria-label": _ctx.range || !(0, vue.unref)(isLabeledByFormItem) ? firstButtonLabel.value : void 0, + "aria-labelledby": !_ctx.range && (0, vue.unref)(isLabeledByFormItem) ? (0, vue.unref)(elFormItem)?.labelId : void 0, + "aria-valuemin": _ctx.min, + "aria-valuemax": _ctx.range ? (0, vue.unref)(secondValue) : _ctx.max, + "aria-valuenow": (0, vue.unref)(firstValue), + "aria-valuetext": firstValueText.value, + "aria-orientation": _ctx.vertical ? "vertical" : "horizontal", + "aria-disabled": (0, vue.unref)(sliderDisabled), + "onUpdate:modelValue": (0, vue.unref)(setFirstValue) + }, null, 8, [ + "id", + "model-value", + "vertical", + "tooltip-class", + "placement", + "aria-label", + "aria-labelledby", + "aria-valuemin", + "aria-valuemax", + "aria-valuenow", + "aria-valuetext", + "aria-orientation", + "aria-disabled", + "onUpdate:modelValue" + ]), + _ctx.range ? ((0, vue.openBlock)(), (0, vue.createBlock)(button_default, { + key: 0, + ref_key: "secondButton", + ref: secondButton, + "model-value": (0, vue.unref)(secondValue), + vertical: _ctx.vertical, + "tooltip-class": _ctx.tooltipClass, + placement: _ctx.placement, + role: "slider", + "aria-label": secondButtonLabel.value, + "aria-valuemin": (0, vue.unref)(firstValue), + "aria-valuemax": _ctx.max, + "aria-valuenow": (0, vue.unref)(secondValue), + "aria-valuetext": secondValueText.value, + "aria-orientation": _ctx.vertical ? "vertical" : "horizontal", + "aria-disabled": (0, vue.unref)(sliderDisabled), + "onUpdate:modelValue": (0, vue.unref)(setSecondValue) + }, null, 8, [ + "model-value", + "vertical", + "tooltip-class", + "placement", + "aria-label", + "aria-valuemin", + "aria-valuemax", + "aria-valuenow", + "aria-valuetext", + "aria-orientation", + "aria-disabled", + "onUpdate:modelValue" + ])) : (0, vue.createCommentVNode)("v-if", true), + _ctx.showStops ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_2$12, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(stops), (item, key) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("stop")), + style: (0, vue.normalizeStyle)((0, vue.unref)(getStopStyle)(item)) + }, null, 6); + }), 128))])) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.unref)(markList).length > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 2 }, [(0, vue.createElementVNode)("div", null, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(markList), (item, key) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key, + style: (0, vue.normalizeStyle)((0, vue.unref)(getStopStyle)(item.position)), + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("stop"), (0, vue.unref)(ns).e("marks-stop")]) + }, null, 6); + }), 128))]), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("marks")) }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(markList), (item, key) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(marker_default), { + key, + mark: item.mark, + style: (0, vue.normalizeStyle)((0, vue.unref)(getStopStyle)(item.position)), + onMousedown: (0, vue.withModifiers)(($event) => (0, vue.unref)(onSliderMarkerDown)(item.position), ["stop"]) + }, null, 8, [ + "mark", + "style", + "onMousedown" + ]); + }), 128))], 2)], 64)) : (0, vue.createCommentVNode)("v-if", true) + ], 38), renderInput.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElInputNumber), { + key: 0, + ref: "input", + "model-value": (0, vue.unref)(firstValue), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("input")), + step: sliderInputStep.value, + disabled: (0, vue.unref)(sliderDisabled), + controls: _ctx.showInputControls, + min: _ctx.min, + max: _ctx.max, + precision: precision.value, + size: sliderInputSize.value, + "onUpdate:modelValue": (0, vue.unref)(setFirstValue), + onChange: (0, vue.unref)(emitChange) + }, null, 8, [ + "model-value", + "class", + "step", + "disabled", + "controls", + "min", + "max", + "precision", + "size", + "onUpdate:modelValue", + "onChange" + ])) : (0, vue.createCommentVNode)("v-if", true)], 10, _hoisted_1$19); + }; + } + }); + +//#endregion +//#region ../../packages/components/slider/src/slider.vue + var slider_default = slider_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/slider/index.ts + const ElSlider = withInstall(slider_default); + +//#endregion +//#region ../../packages/components/space/src/item.ts + const spaceItemProps = buildProps({ prefixCls: { type: String } }); + const SpaceItem = (0, vue.defineComponent)({ + name: "ElSpaceItem", + props: spaceItemProps, + setup(props, { slots }) { + const ns = useNamespace("space"); + const classes = (0, vue.computed)(() => `${props.prefixCls || ns.b()}__item`); + return () => (0, vue.h)("div", { class: classes.value }, (0, vue.renderSlot)(slots, "default")); + } + }); + +//#endregion +//#region ../../packages/components/space/src/use-space.ts + const SIZE_MAP = { + small: 8, + default: 12, + large: 16 + }; + function useSpace(props) { + const ns = useNamespace("space"); + const classes = (0, vue.computed)(() => [ + ns.b(), + ns.m(props.direction), + props.class + ]); + const horizontalSize = (0, vue.ref)(0); + const verticalSize = (0, vue.ref)(0); + const containerStyle = (0, vue.computed)(() => { + return [ + props.wrap || props.fill ? { flexWrap: "wrap" } : {}, + { alignItems: props.alignment }, + { + rowGap: `${verticalSize.value}px`, + columnGap: `${horizontalSize.value}px` + }, + props.style + ]; + }); + const itemStyle = (0, vue.computed)(() => { + return props.fill ? { + flexGrow: 1, + minWidth: `${props.fillRatio}%` + } : {}; + }); + (0, vue.watchEffect)(() => { + const { size = "small", wrap, direction: dir, fill } = props; + if (isArray$1(size)) { + const [h = 0, v = 0] = size; + horizontalSize.value = h; + verticalSize.value = v; + } else { + let val; + if (isNumber(size)) val = size; + else val = SIZE_MAP[size || "small"] || SIZE_MAP.small; + if ((wrap || fill) && dir === "horizontal") horizontalSize.value = verticalSize.value = val; + else if (dir === "horizontal") { + horizontalSize.value = val; + verticalSize.value = 0; + } else { + verticalSize.value = val; + horizontalSize.value = 0; + } + } + }); + return { + classes, + containerStyle, + itemStyle + }; + } + +//#endregion +//#region ../../packages/components/space/src/space.ts + const spaceProps = buildProps({ + direction: { + type: String, + values: ["horizontal", "vertical"], + default: "horizontal" + }, + class: { + type: definePropType([ + String, + Object, + Array + ]), + default: "" + }, + style: { + type: definePropType([ + String, + Array, + Object + ]), + default: "" + }, + alignment: { + type: definePropType(String), + default: "center" + }, + prefixCls: { type: String }, + spacer: { + type: definePropType([ + Object, + String, + Number, + Array + ]), + default: null, + validator: (val) => (0, vue.isVNode)(val) || isNumber(val) || isString(val) + }, + wrap: Boolean, + fill: Boolean, + fillRatio: { + type: Number, + default: 100 + }, + size: { + type: [ + String, + Array, + Number + ], + values: componentSizes, + validator: (val) => { + return isNumber(val) || isArray$1(val) && val.length === 2 && val.every(isNumber); + } + } + }); + const Space = (0, vue.defineComponent)({ + name: "ElSpace", + props: spaceProps, + setup(props, { slots }) { + const { classes, containerStyle, itemStyle } = useSpace(props); + function extractChildren(children, parentKey = "", extractedChildren = []) { + const { prefixCls } = props; + children.forEach((child, loopKey) => { + if (isFragment(child)) { + if (isArray$1(child.children)) child.children.forEach((nested, key) => { + if (isFragment(nested) && isArray$1(nested.children)) extractChildren(nested.children, `${parentKey + key}-`, extractedChildren); + else if ((0, vue.isVNode)(nested) && nested?.type === vue.Comment) extractedChildren.push(nested); + else extractedChildren.push((0, vue.createVNode)(SpaceItem, { + style: itemStyle.value, + prefixCls, + key: `nested-${parentKey + key}` + }, { default: () => [nested] }, PatchFlags.PROPS | PatchFlags.STYLE, ["style", "prefixCls"])); + }); + } else if (isValidElementNode(child)) extractedChildren.push((0, vue.createVNode)(SpaceItem, { + style: itemStyle.value, + prefixCls, + key: `LoopKey${parentKey + loopKey}` + }, { default: () => [child] }, PatchFlags.PROPS | PatchFlags.STYLE, ["style", "prefixCls"])); + }); + return extractedChildren; + } + return () => { + const { spacer, direction } = props; + const children = (0, vue.renderSlot)(slots, "default", { key: 0 }, () => []); + if ((children.children ?? []).length === 0) return null; + if (isArray$1(children.children)) { + let extractedChildren = extractChildren(children.children); + if (spacer) { + const len = extractedChildren.length - 1; + extractedChildren = extractedChildren.reduce((acc, child, idx) => { + const children = [...acc, child]; + if (idx !== len) children.push((0, vue.createVNode)("span", { + style: [itemStyle.value, direction === "vertical" ? "width: 100%" : null], + key: idx + }, [(0, vue.isVNode)(spacer) ? spacer : (0, vue.createTextVNode)(spacer, PatchFlags.TEXT)], PatchFlags.STYLE)); + return children; + }, []); + } + return (0, vue.createVNode)("div", { + class: classes.value, + style: containerStyle.value + }, extractedChildren, PatchFlags.STYLE | PatchFlags.CLASS); + } + return children.children; + }; + } + }); + +//#endregion +//#region ../../packages/components/space/index.ts + const ElSpace = withInstall(Space); + +//#endregion +//#region ../../packages/components/statistic/src/statistic.ts +/** + * @deprecated Removed after 3.0.0, Use `StatisticProps` instead. + */ + const statisticProps = buildProps({ + decimalSeparator: { + type: String, + default: "." + }, + groupSeparator: { + type: String, + default: "," + }, + precision: { + type: Number, + default: 0 + }, + formatter: Function, + value: { + type: definePropType([Number, Object]), + default: 0 + }, + prefix: String, + suffix: String, + title: String, + valueStyle: { type: definePropType([ + String, + Object, + Array + ]) } + }); + +//#endregion +//#region ../../packages/components/statistic/src/statistic.vue?vue&type=script&setup=true&lang.ts + var statistic_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElStatistic", + __name: "statistic", + props: statisticProps, + setup(__props, { expose: __expose }) { + const props = __props; + const ns = useNamespace("statistic"); + const displayValue = (0, vue.computed)(() => { + const { value, formatter, precision, decimalSeparator, groupSeparator } = props; + if (isFunction$1(formatter)) return formatter(value); + if (!isNumber(value) || Number.isNaN(value)) return value; + let [integer, decimal = ""] = String(value).split("."); + decimal = decimal.padEnd(precision, "0").slice(0, precision > 0 ? precision : 0); + integer = integer.replace(/\B(?=(\d{3})+(?!\d))/g, groupSeparator); + return [integer, decimal].join(decimal ? decimalSeparator : ""); + }); + __expose({ displayValue }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()) }, [_ctx.$slots.title || __props.title ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("head")) + }, [(0, vue.renderSlot)(_ctx.$slots, "title", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.title), 1)])], 2)) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("content")) }, [ + _ctx.$slots.prefix || __props.prefix ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("prefix")) + }, [(0, vue.renderSlot)(_ctx.$slots, "prefix", {}, () => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(__props.prefix), 1)])], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("span", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("number")), + style: (0, vue.normalizeStyle)(__props.valueStyle) + }, (0, vue.toDisplayString)(displayValue.value), 7), + _ctx.$slots.suffix || __props.suffix ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("suffix")) + }, [(0, vue.renderSlot)(_ctx.$slots, "suffix", {}, () => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(__props.suffix), 1)])], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 2)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/statistic/src/statistic.vue + var statistic_default = statistic_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/statistic/index.ts + const ElStatistic = withInstall(statistic_default); + +//#endregion +//#region ../../packages/components/countdown/src/countdown.ts +/** + * @deprecated Removed after 3.0.0, Use `CountdownProps` instead. + */ + const countdownProps = buildProps({ + format: { + type: String, + default: "HH:mm:ss" + }, + prefix: String, + suffix: String, + title: String, + value: { + type: definePropType([Number, Object]), + default: 0 + }, + valueStyle: { type: definePropType([ + String, + Object, + Array + ]) } + }); + const countdownEmits = { + finish: () => true, + [CHANGE_EVENT]: (value) => isNumber(value) + }; + +//#endregion +//#region ../../packages/components/countdown/src/utils.ts + const timeUnits$1 = [ + ["Y", 1e3 * 60 * 60 * 24 * 365], + ["M", 1e3 * 60 * 60 * 24 * 30], + ["D", 1e3 * 60 * 60 * 24], + ["H", 1e3 * 60 * 60], + ["m", 1e3 * 60], + ["s", 1e3], + ["S", 1] + ]; + const getTime = (value) => { + return isNumber(value) ? new Date(value).getTime() : value.valueOf(); + }; + const formatTime$1 = (timestamp, format) => { + let timeLeft = timestamp; + return timeUnits$1.reduce((current, [name, unit]) => { + const replaceRegex = new RegExp(`${name}+(?![^\\[\\]]*\\])`, "g"); + if (replaceRegex.test(current)) { + const value = Math.floor(timeLeft / unit); + timeLeft -= value * unit; + return current.replace(replaceRegex, (match) => String(value).padStart(match.length, "0")); + } + return current; + }, format).replace(/\[([^\]]*)]/g, "$1"); + }; + +//#endregion +//#region ../../packages/components/countdown/src/countdown.vue?vue&type=script&setup=true&lang.ts + var countdown_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElCountdown", + __name: "countdown", + props: countdownProps, + emits: countdownEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + let timer; + const rawValue = (0, vue.ref)(0); + const displayValue = (0, vue.computed)(() => formatTime$1(rawValue.value, props.format)); + const formatter = (val) => formatTime$1(val, props.format); + const stopTimer = () => { + if (timer) { + cAF(timer); + timer = void 0; + } + }; + const startTimer = () => { + const timestamp = getTime(props.value); + const frameFunc = () => { + let diff = timestamp - Date.now(); + emit(CHANGE_EVENT, diff); + if (diff <= 0) { + diff = 0; + stopTimer(); + emit("finish"); + } else timer = rAF(frameFunc); + rawValue.value = diff; + }; + timer = rAF(frameFunc); + }; + (0, vue.onMounted)(() => { + rawValue.value = getTime(props.value) - Date.now(); + (0, vue.watch)(() => [props.value, props.format], () => { + stopTimer(); + startTimer(); + }, { immediate: true }); + }); + (0, vue.onBeforeUnmount)(() => { + stopTimer(); + }); + __expose({ displayValue }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElStatistic), { + value: rawValue.value, + title: __props.title, + prefix: __props.prefix, + suffix: __props.suffix, + "value-style": __props.valueStyle, + formatter + }, (0, vue.createSlots)({ _: 2 }, [(0, vue.renderList)(_ctx.$slots, (_, name) => { + return { + name, + fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, name)]) + }; + })]), 1032, [ + "value", + "title", + "prefix", + "suffix", + "value-style" + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/countdown/src/countdown.vue + var countdown_default = countdown_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/countdown/index.ts + const ElCountdown = withInstall(countdown_default); + +//#endregion +//#region ../../packages/components/steps/src/steps.ts +/** + * @deprecated Removed after 3.0.0, Use `StepsProps` instead. + */ + const stepsProps = buildProps({ + space: { + type: [Number, String], + default: "" + }, + active: { + type: Number, + default: 0 + }, + direction: { + type: String, + default: "horizontal", + values: ["horizontal", "vertical"] + }, + alignCenter: { type: Boolean }, + simple: { type: Boolean }, + finishStatus: { + type: String, + values: [ + "wait", + "process", + "finish", + "error", + "success" + ], + default: "finish" + }, + processStatus: { + type: String, + values: [ + "wait", + "process", + "finish", + "error", + "success" + ], + default: "process" + } + }); + const stepsEmits = { [CHANGE_EVENT]: (newVal, oldVal) => [newVal, oldVal].every(isNumber) }; + +//#endregion +//#region ../../packages/components/steps/src/tokens.ts + const STEPS_INJECTION_KEY = "ElSteps"; + +//#endregion +//#region ../../packages/components/steps/src/steps.vue?vue&type=script&setup=true&lang.ts + var steps_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElSteps", + __name: "steps", + props: stepsProps, + emits: stepsEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const ns = useNamespace("steps"); + const { children: steps, addChild: addStep, removeChild: removeStep, ChildrenSorter: StepsSorter } = useOrderedChildren((0, vue.getCurrentInstance)(), "ElStep"); + (0, vue.watch)(steps, () => { + steps.value.forEach((instance, index) => { + instance.setIndex(index); + }); + }); + (0, vue.provide)(STEPS_INJECTION_KEY, { + props, + steps, + addStep, + removeStep + }); + (0, vue.watch)(() => props.active, (newVal, oldVal) => { + emit(CHANGE_EVENT, newVal, oldVal); + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).b(), (0, vue.unref)(ns).m(__props.simple ? "simple" : __props.direction)]) }, [(0, vue.renderSlot)(_ctx.$slots, "default"), (0, vue.createVNode)((0, vue.unref)(StepsSorter))], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/steps/src/steps.vue + var steps_default$1 = steps_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/steps/src/item.ts +/** + * @deprecated Removed after 3.0.0, Use `StepProps` instead. + */ + const stepProps = buildProps({ + title: { + type: String, + default: "" + }, + icon: { type: iconPropType }, + description: { + type: String, + default: "" + }, + status: { + type: String, + values: [ + "", + "wait", + "process", + "finish", + "error", + "success" + ], + default: "" + } + }); + +//#endregion +//#region ../../packages/components/steps/src/item.vue?vue&type=script&setup=true&lang.ts + var item_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElStep", + __name: "item", + props: stepProps, + setup(__props) { + const props = __props; + const ns = useNamespace("step"); + const index = (0, vue.ref)(-1); + const lineStyle = (0, vue.ref)({}); + const internalStatus = (0, vue.ref)(""); + const parent = (0, vue.inject)(STEPS_INJECTION_KEY); + const currentInstance = (0, vue.getCurrentInstance)(); + let stepDiff = 0; + let beforeActive = 0; + (0, vue.onMounted)(() => { + (0, vue.watch)([ + () => parent.props.active, + () => parent.props.processStatus, + () => parent.props.finishStatus + ], ([active], [oldActive]) => { + beforeActive = oldActive || 0; + stepDiff = active - beforeActive; + updateStatus(active); + }, { immediate: true }); + }); + const currentStatus = (0, vue.computed)(() => { + return props.status || internalStatus.value; + }); + const prevInternalStatus = (0, vue.computed)(() => { + const prevStep = parent.steps.value[index.value - 1]; + return prevStep ? prevStep.internalStatus.value : "wait"; + }); + const isCenter = (0, vue.computed)(() => { + return parent.props.alignCenter; + }); + const isVertical = (0, vue.computed)(() => { + return parent.props.direction === "vertical"; + }); + const isSimple = (0, vue.computed)(() => { + return parent.props.simple; + }); + const stepsCount = (0, vue.computed)(() => { + return parent.steps.value.length; + }); + const isLast = (0, vue.computed)(() => { + return parent.steps.value[stepsCount.value - 1]?.uid === currentInstance.uid; + }); + const space = (0, vue.computed)(() => { + return isSimple.value ? "" : parent.props.space; + }); + const containerKls = (0, vue.computed)(() => { + return [ + ns.b(), + ns.is(isSimple.value ? "simple" : parent.props.direction), + ns.is("flex", isLast.value && !space.value && !isCenter.value), + ns.is("center", isCenter.value && !isVertical.value && !isSimple.value) + ]; + }); + const style = (0, vue.computed)(() => { + const style = { flexBasis: isNumber(space.value) ? `${space.value}px` : space.value ? space.value : `${100 / (stepsCount.value - (isCenter.value ? 0 : 1))}%` }; + if (isVertical.value) return style; + if (isLast.value) style.maxWidth = `${100 / stepsCount.value}%`; + return style; + }); + const setIndex = (val) => { + index.value = val; + }; + const calcProgress = (status) => { + const isWait = status === "wait"; + const style = { transitionDelay: `${Math.abs(stepDiff) === 1 ? 0 : stepDiff > 0 ? (index.value + 1 - beforeActive) * 150 : -(index.value + 1 - parent.props.active) * 150}ms` }; + const step = status === parent.props.processStatus || isWait ? 0 : 100; + style.borderWidth = step && !isSimple.value ? "1px" : 0; + style[parent.props.direction === "vertical" ? "height" : "width"] = `${step}%`; + lineStyle.value = style; + }; + const updateStatus = (activeIndex) => { + if (activeIndex > index.value) internalStatus.value = parent.props.finishStatus; + else if (activeIndex === index.value && prevInternalStatus.value !== "error") internalStatus.value = parent.props.processStatus; + else internalStatus.value = "wait"; + const prevChild = parent.steps.value[index.value - 1]; + if (prevChild) prevChild.calcProgress(internalStatus.value); + }; + const stepItemState = { + uid: currentInstance.uid, + getVnode: () => currentInstance.vnode, + currentStatus, + internalStatus, + setIndex, + calcProgress + }; + parent.addStep(stepItemState); + (0, vue.onBeforeUnmount)(() => { + parent.removeStep(stepItemState); + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + style: (0, vue.normalizeStyle)(style.value), + class: (0, vue.normalizeClass)(containerKls.value) + }, [ + (0, vue.createCommentVNode)(" icon & line "), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("head"), (0, vue.unref)(ns).is(currentStatus.value)]) }, [!isSimple.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("line")) + }, [(0, vue.createElementVNode)("i", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("line-inner")), + style: (0, vue.normalizeStyle)(lineStyle.value) + }, null, 6)], 2)) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("icon"), (0, vue.unref)(ns).is(__props.icon || _ctx.$slots.icon ? "icon" : "text")]) }, [(0, vue.renderSlot)(_ctx.$slots, "icon", {}, () => [__props.icon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("icon-inner")) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.icon)))]), + _: 1 + }, 8, ["class"])) : currentStatus.value === "success" ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 1, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("icon-inner"), (0, vue.unref)(ns).is("status")]) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(check_default))]), + _: 1 + }, 8, ["class"])) : currentStatus.value === "error" ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 2, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("icon-inner"), (0, vue.unref)(ns).is("status")]) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(close_default))]), + _: 1 + }, 8, ["class"])) : !isSimple.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 3, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("icon-inner")) + }, (0, vue.toDisplayString)(index.value + 1), 3)) : (0, vue.createCommentVNode)("v-if", true)])], 2)], 2), + (0, vue.createCommentVNode)(" title & description "), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("main")) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("title"), (0, vue.unref)(ns).is(currentStatus.value)]) }, [(0, vue.renderSlot)(_ctx.$slots, "title", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.title), 1)])], 2), isSimple.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("arrow")) + }, null, 2)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("description"), (0, vue.unref)(ns).is(currentStatus.value)]) + }, [(0, vue.renderSlot)(_ctx.$slots, "description", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.description), 1)])], 2))], 2) + ], 6); + }; + } + }); + +//#endregion +//#region ../../packages/components/steps/src/item.vue + var item_default = item_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/steps/index.ts + const ElSteps = withInstall(steps_default$1, { Step: item_default }); + const ElStep = withNoopInstall(item_default); + +//#endregion +//#region ../../packages/components/switch/src/switch.ts +/** + * @deprecated Removed after 3.0.0, Use `SwitchProps` instead. + */ + const switchProps = buildProps({ + modelValue: { + type: [ + Boolean, + String, + Number + ], + default: false + }, + disabled: { + type: Boolean, + default: void 0 + }, + loading: Boolean, + size: { + type: String, + validator: isValidComponentSize + }, + width: { + type: [String, Number], + default: "" + }, + inlinePrompt: Boolean, + inactiveActionIcon: { type: iconPropType }, + activeActionIcon: { type: iconPropType }, + activeIcon: { type: iconPropType }, + inactiveIcon: { type: iconPropType }, + activeText: { + type: String, + default: "" + }, + inactiveText: { + type: String, + default: "" + }, + activeValue: { + type: [ + Boolean, + String, + Number + ], + default: true + }, + inactiveValue: { + type: [ + Boolean, + String, + Number + ], + default: false + }, + name: { + type: String, + default: "" + }, + validateEvent: { + type: Boolean, + default: true + }, + beforeChange: { type: definePropType(Function) }, + id: String, + tabindex: { type: [String, Number] }, + ...useAriaProps(["ariaLabel"]) + }); + const switchEmits = { + [UPDATE_MODEL_EVENT]: (val) => isBoolean(val) || isString(val) || isNumber(val), + [CHANGE_EVENT]: (val) => isBoolean(val) || isString(val) || isNumber(val), + [INPUT_EVENT]: (val) => isBoolean(val) || isString(val) || isNumber(val) + }; + +//#endregion +//#region ../../packages/components/switch/src/switch.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$18 = [ + "id", + "aria-checked", + "aria-disabled", + "aria-label", + "name", + "true-value", + "false-value", + "disabled", + "tabindex" + ]; + const _hoisted_2$11 = ["aria-hidden"]; + const _hoisted_3$4 = { key: 1 }; + const _hoisted_4$3 = { key: 1 }; + const _hoisted_5$1 = ["aria-hidden"]; + const COMPONENT_NAME$6 = "ElSwitch"; + var switch_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$6, + __name: "switch", + props: switchProps, + emits: switchEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const { formItem } = useFormItem(); + const switchSize = useFormSize(); + const ns = useNamespace("switch"); + const { inputId } = useFormItemInputId(props, { formItemContext: formItem }); + const switchDisabled = useFormDisabled((0, vue.computed)(() => { + if (props.loading) return true; + })); + const isControlled = (0, vue.ref)(props.modelValue !== false); + const input = (0, vue.shallowRef)(); + const switchKls = (0, vue.computed)(() => [ + ns.b(), + ns.m(switchSize.value), + ns.is("disabled", switchDisabled.value), + ns.is("checked", checked.value) + ]); + const labelLeftKls = (0, vue.computed)(() => [ + ns.e("label"), + ns.em("label", "left"), + ns.is("active", !checked.value) + ]); + const labelRightKls = (0, vue.computed)(() => [ + ns.e("label"), + ns.em("label", "right"), + ns.is("active", checked.value) + ]); + const coreStyle = (0, vue.computed)(() => ({ width: addUnit(props.width) })); + (0, vue.watch)(() => props.modelValue, () => { + isControlled.value = true; + }); + const actualValue = (0, vue.computed)(() => { + return isControlled.value ? props.modelValue : false; + }); + const checked = (0, vue.computed)(() => actualValue.value === props.activeValue); + if (![props.activeValue, props.inactiveValue].includes(actualValue.value)) { + emit(UPDATE_MODEL_EVENT, props.inactiveValue); + emit(CHANGE_EVENT, props.inactiveValue); + emit(INPUT_EVENT, props.inactiveValue); + } + (0, vue.watch)(checked, (val) => { + input.value.checked = val; + if (props.validateEvent) formItem?.validate?.("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + }); + const handleChange = () => { + const val = checked.value ? props.inactiveValue : props.activeValue; + emit(UPDATE_MODEL_EVENT, val); + emit(CHANGE_EVENT, val); + emit(INPUT_EVENT, val); + (0, vue.nextTick)(() => { + input.value.checked = checked.value; + }); + }; + const switchValue = () => { + if (switchDisabled.value) return; + const { beforeChange } = props; + if (!beforeChange) { + handleChange(); + return; + } + const shouldChange = beforeChange(); + if (![isPromise(shouldChange), isBoolean(shouldChange)].includes(true)) throwError(COMPONENT_NAME$6, "beforeChange must return type `Promise` or `boolean`"); + if (isPromise(shouldChange)) shouldChange.then((result) => { + if (result) handleChange(); + }).catch((e) => { + /* @__PURE__ */ debugWarn(COMPONENT_NAME$6, `some error occurred: ${e}`); + }); + else if (shouldChange) handleChange(); + }; + const focus = () => { + input.value?.focus?.(); + }; + (0, vue.onMounted)(() => { + input.value.checked = checked.value; + }); + __expose({ + focus, + checked + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + class: (0, vue.normalizeClass)(switchKls.value), + onClick: (0, vue.withModifiers)(switchValue, ["prevent"]) + }, [ + (0, vue.createElementVNode)("input", { + id: (0, vue.unref)(inputId), + ref_key: "input", + ref: input, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("input")), + type: "checkbox", + role: "switch", + "aria-checked": checked.value, + "aria-disabled": (0, vue.unref)(switchDisabled), + "aria-label": __props.ariaLabel, + name: __props.name, + "true-value": __props.activeValue, + "false-value": __props.inactiveValue, + disabled: (0, vue.unref)(switchDisabled), + tabindex: __props.tabindex, + onChange: handleChange, + onKeydown: (0, vue.withKeys)(switchValue, ["enter"]) + }, null, 42, _hoisted_1$18), + !__props.inlinePrompt && (__props.inactiveIcon || __props.inactiveText || _ctx.$slots.inactive) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 0, + class: (0, vue.normalizeClass)(labelLeftKls.value) + }, [(0, vue.renderSlot)(_ctx.$slots, "inactive", {}, () => [__props.inactiveIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { key: 0 }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.inactiveIcon)))]), + _: 1 + })) : (0, vue.createCommentVNode)("v-if", true), !__props.inactiveIcon && __props.inactiveText ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 1, + "aria-hidden": checked.value + }, (0, vue.toDisplayString)(__props.inactiveText), 9, _hoisted_2$11)) : (0, vue.createCommentVNode)("v-if", true)])], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("span", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("core")), + style: (0, vue.normalizeStyle)(coreStyle.value) + }, [__props.inlinePrompt ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("inner")) + }, [!checked.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("inner-wrapper")) + }, [(0, vue.renderSlot)(_ctx.$slots, "inactive", {}, () => [__props.inactiveIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { key: 0 }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.inactiveIcon)))]), + _: 1 + })) : (0, vue.createCommentVNode)("v-if", true), !__props.inactiveIcon && __props.inactiveText ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$4, (0, vue.toDisplayString)(__props.inactiveText), 1)) : (0, vue.createCommentVNode)("v-if", true)])], 2)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("inner-wrapper")) + }, [(0, vue.renderSlot)(_ctx.$slots, "active", {}, () => [__props.activeIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { key: 0 }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.activeIcon)))]), + _: 1 + })) : (0, vue.createCommentVNode)("v-if", true), !__props.activeIcon && __props.activeText ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_4$3, (0, vue.toDisplayString)(__props.activeText), 1)) : (0, vue.createCommentVNode)("v-if", true)])], 2))], 2)) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("action")) }, [__props.loading ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).is("loading")) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(loading_default))]), + _: 1 + }, 8, ["class"])) : checked.value ? (0, vue.renderSlot)(_ctx.$slots, "active-action", { key: 1 }, () => [__props.activeActionIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { key: 0 }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.activeActionIcon)))]), + _: 1 + })) : (0, vue.createCommentVNode)("v-if", true)]) : !checked.value ? (0, vue.renderSlot)(_ctx.$slots, "inactive-action", { key: 2 }, () => [__props.inactiveActionIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { key: 0 }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.inactiveActionIcon)))]), + _: 1 + })) : (0, vue.createCommentVNode)("v-if", true)]) : (0, vue.createCommentVNode)("v-if", true)], 2)], 6), + !__props.inlinePrompt && (__props.activeIcon || __props.activeText || _ctx.$slots.active) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 1, + class: (0, vue.normalizeClass)(labelRightKls.value) + }, [(0, vue.renderSlot)(_ctx.$slots, "active", {}, () => [__props.activeIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { key: 0 }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.activeIcon)))]), + _: 1 + })) : (0, vue.createCommentVNode)("v-if", true), !__props.activeIcon && __props.activeText ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 1, + "aria-hidden": !checked.value + }, (0, vue.toDisplayString)(__props.activeText), 9, _hoisted_5$1)) : (0, vue.createCommentVNode)("v-if", true)])], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/switch/src/switch.vue + var switch_default = switch_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/switch/index.ts + const ElSwitch = withInstall(switch_default); + +//#endregion +//#region ../../packages/components/table/src/util.ts + const getCell = function(event) { + return event.target?.closest("td"); + }; + const orderBy = function(array, sortKey, reverse, sortMethod, sortBy) { + if (!sortKey && !sortMethod && (!sortBy || isArray$1(sortBy) && !sortBy.length)) return array; + if (isString(reverse)) reverse = reverse === "descending" ? -1 : 1; + else reverse = reverse && reverse < 0 ? -1 : 1; + const getKey = sortMethod ? null : function(value, index) { + if (sortBy) return flatMap(castArray$1(sortBy), (by) => { + if (isString(by)) return get(value, by); + else return by(value, index, array); + }); + if (sortKey !== "$key") { + if (isObject$1(value) && "$value" in value) value = value.$value; + } + return [isObject$1(value) ? sortKey ? get(value, sortKey) : null : value]; + }; + const compare = function(a, b) { + if (sortMethod) return sortMethod(a.value, b.value); + for (let i = 0, len = a.key?.length ?? 0; i < len; i++) { + if (a.key?.[i] < b.key?.[i]) return -1; + if (a.key?.[i] > b.key?.[i]) return 1; + } + return 0; + }; + return array.map((value, index) => { + return { + value, + index, + key: getKey ? getKey(value, index) : null + }; + }).sort((a, b) => { + let order = compare(a, b); + if (!order) order = a.index - b.index; + return order * +reverse; + }).map((item) => item.value); + }; + const getColumnById = function(table, columnId) { + let column = null; + table.columns.forEach((item) => { + if (item.id === columnId) column = item; + }); + return column; + }; + const getColumnByKey = function(table, columnKey) { + let column = null; + for (let i = 0; i < table.columns.length; i++) { + const item = table.columns[i]; + if (item.columnKey === columnKey) { + column = item; + break; + } + } + if (!column) throwError("ElTable", `No column matching with column-key: ${columnKey}`); + return column; + }; + const getColumnByCell = function(table, cell, namespace) { + const matches = (cell.className || "").match(new RegExp(`${namespace}-table_[^\\s]+`, "gm")); + if (matches) return getColumnById(table, matches[0]); + return null; + }; + const getRowIdentity = (row, rowKey) => { + if (!row) throw new Error("Row is required when get row identity"); + if (isString(rowKey)) { + if (!rowKey.includes(".")) return `${row[rowKey]}`; + const key = rowKey.split("."); + let current = row; + for (const element of key) current = current[element]; + return `${current}`; + } else if (isFunction$1(rowKey)) return rowKey.call(null, row); + return ""; + }; + const getKeysMap = function(array, rowKey, flatten = false, childrenKey = "children") { + const data = array || []; + const arrayMap = {}; + data.forEach((row, index) => { + arrayMap[getRowIdentity(row, rowKey)] = { + row, + index + }; + if (flatten) { + const children = row[childrenKey]; + if (isArray$1(children)) Object.assign(arrayMap, getKeysMap(children, rowKey, true, childrenKey)); + } + }); + return arrayMap; + }; + function mergeOptions(defaults, config) { + const options = {}; + let key; + for (key in defaults) options[key] = defaults[key]; + for (key in config) if (hasOwn(config, key)) { + const value = config[key]; + if (!isUndefined(value)) options[key] = value; + } + return options; + } + function parseWidth(width) { + if (width === "") return width; + if (!isUndefined(width)) { + width = Number.parseInt(width, 10); + if (Number.isNaN(width)) width = ""; + } + return width; + } + function parseMinWidth(minWidth) { + if (minWidth === "") return minWidth; + if (!isUndefined(minWidth)) { + minWidth = parseWidth(minWidth); + if (Number.isNaN(minWidth)) minWidth = 80; + } + return minWidth; + } + function parseHeight(height) { + if (isNumber(height)) return height; + if (isString(height)) if (/^\d+(?:px)?$/.test(height)) return Number.parseInt(height, 10); + else return height; + return null; + } + function compose(...funcs) { + if (funcs.length === 0) return (arg) => arg; + if (funcs.length === 1) return funcs[0]; + return funcs.reduce((a, b) => (...args) => a(b(...args))); + } + function toggleRowStatus(statusArr, row, newVal, tableTreeProps, selectable, rowIndex, rowKey) { + let _rowIndex = rowIndex ?? 0; + let changed = false; + const getIndex = () => { + if (!rowKey) return statusArr.indexOf(row); + const id = getRowIdentity(row, rowKey); + return statusArr.findIndex((item) => getRowIdentity(item, rowKey) === id); + }; + const index = getIndex(); + const included = index !== -1; + const isRowSelectable = selectable?.call(null, row, _rowIndex); + const toggleStatus = (type) => { + if (type === "add") statusArr.push(row); + else statusArr.splice(index, 1); + changed = true; + }; + const getChildrenCount = (row) => { + let count = 0; + const children = tableTreeProps?.children && row[tableTreeProps.children]; + if (children && isArray$1(children)) { + count += children.length; + children.forEach((item) => { + count += getChildrenCount(item); + }); + } + return count; + }; + if (!selectable || isRowSelectable) if (isBoolean(newVal)) { + if (newVal && !included) toggleStatus("add"); + else if (!newVal && included) toggleStatus("remove"); + } else included ? toggleStatus("remove") : toggleStatus("add"); + if (!tableTreeProps?.checkStrictly && tableTreeProps?.children && isArray$1(row[tableTreeProps.children])) row[tableTreeProps.children].forEach((item) => { + const childChanged = toggleRowStatus(statusArr, item, newVal ?? !included, tableTreeProps, selectable, _rowIndex + 1, rowKey); + _rowIndex += getChildrenCount(item) + 1; + if (childChanged) changed = childChanged; + }); + return changed; + } + function walkTreeNode(root, cb, childrenKey = "children", lazyKey = "hasChildren", lazy = false) { + const isNil = (array) => !(isArray$1(array) && array.length); + function _walker(parent, children, level) { + cb(parent, children, level); + children.forEach((item) => { + if (item[lazyKey] && lazy) { + cb(item, null, level + 1); + return; + } + const children = item[childrenKey]; + if (!isNil(children)) _walker(item, children, level + 1); + }); + } + root.forEach((item) => { + if (item[lazyKey] && lazy) { + cb(item, null, 0); + return; + } + const children = item[childrenKey]; + if (!isNil(children)) _walker(item, children, 0); + }); + } + const getTableOverflowTooltipProps = (props, innerText, row, column) => { + const popperOptions = { + strategy: "fixed", + ...props.popperOptions + }; + const tooltipFormatterContent = isFunction$1(column?.tooltipFormatter) ? column.tooltipFormatter({ + row, + column, + cellValue: getProp(row, column.property).value + }) : void 0; + if ((0, vue.isVNode)(tooltipFormatterContent)) return { + slotContent: tooltipFormatterContent, + content: null, + ...props, + popperOptions + }; + return { + slotContent: null, + content: tooltipFormatterContent ?? innerText, + ...props, + popperOptions + }; + }; + let removePopper = null; + function createTablePopper(props, popperContent, row, column, trigger, table) { + const tableOverflowTooltipProps = getTableOverflowTooltipProps(props, popperContent, row, column); + const mergedProps = { + ...tableOverflowTooltipProps, + slotContent: void 0 + }; + if (removePopper?.trigger === trigger) { + const comp = removePopper.vm?.component; + merge(comp?.props, mergedProps); + if (comp && tableOverflowTooltipProps.slotContent) comp.slots.content = () => [tableOverflowTooltipProps.slotContent]; + return; + } + removePopper?.(); + const parentNode = table?.refs.tableWrapper; + const ns = parentNode?.dataset.prefix; + const vm = (0, vue.createVNode)(ElTooltip, { + virtualTriggering: true, + virtualRef: trigger, + appendTo: parentNode, + placement: "top", + transition: "none", + offset: 0, + hideAfter: 0, + ...mergedProps + }, tableOverflowTooltipProps.slotContent ? { content: () => tableOverflowTooltipProps.slotContent } : void 0); + vm.appContext = { + ...table.appContext, + ...table + }; + const container = document.createElement("div"); + (0, vue.render)(vm, container); + vm.component.exposed.onOpen(); + const scrollContainer = parentNode?.querySelector(`.${ns}-scrollbar__wrap`); + removePopper = () => { + if (vm.component?.exposed?.onClose) vm.component.exposed.onClose(); + (0, vue.render)(null, container); + const currentRemovePopper = removePopper; + scrollContainer?.removeEventListener("scroll", currentRemovePopper); + currentRemovePopper.trigger = void 0; + currentRemovePopper.vm = void 0; + removePopper = null; + }; + removePopper.trigger = trigger ?? void 0; + removePopper.vm = vm; + scrollContainer?.addEventListener("scroll", removePopper); + } + function getCurrentColumns(column) { + if (column.children) return flatMap(column.children, getCurrentColumns); + else return [column]; + } + function getColSpan(colSpan, column) { + return colSpan + column.colSpan; + } + const isFixedColumn = (index, fixed, store, realColumns) => { + let start = 0; + let after = index; + const columns = store.states.columns.value; + if (realColumns) { + const curColumns = getCurrentColumns(realColumns[index]); + start = columns.slice(0, columns.indexOf(curColumns[0])).reduce(getColSpan, 0); + after = start + curColumns.reduce(getColSpan, 0) - 1; + } else start = index; + let fixedLayout; + switch (fixed) { + case "left": + if (after < store.states.fixedLeafColumnsLength.value) fixedLayout = "left"; + break; + case "right": + if (start >= columns.length - store.states.rightFixedLeafColumnsLength.value) fixedLayout = "right"; + break; + default: if (after < store.states.fixedLeafColumnsLength.value) fixedLayout = "left"; + else if (start >= columns.length - store.states.rightFixedLeafColumnsLength.value) fixedLayout = "right"; + } + return fixedLayout ? { + direction: fixedLayout, + start, + after + } : {}; + }; + const getFixedColumnsClass = (namespace, index, fixed, store, realColumns, offset = 0) => { + const classes = []; + const { direction, start, after } = isFixedColumn(index, fixed, store, realColumns); + if (direction) { + const isLeft = direction === "left"; + classes.push(`${namespace}-fixed-column--${direction}`); + if (isLeft && after + offset === store.states.fixedLeafColumnsLength.value - 1) classes.push("is-last-column"); + else if (!isLeft && start - offset === store.states.columns.value.length - store.states.rightFixedLeafColumnsLength.value) classes.push("is-first-column"); + } + return classes; + }; + function getOffset(offset, column) { + return offset + (isNull(column.realWidth) || Number.isNaN(column.realWidth) ? Number(column.width) : column.realWidth); + } + const getFixedColumnOffset = (index, fixed, store, realColumns) => { + const { direction, start = 0, after = 0 } = isFixedColumn(index, fixed, store, realColumns); + if (!direction) return; + const styles = {}; + const isLeft = direction === "left"; + const columns = store.states.columns.value; + if (isLeft) styles.left = columns.slice(0, start).reduce(getOffset, 0); + else styles.right = columns.slice(after + 1).reverse().reduce(getOffset, 0); + return styles; + }; + const ensurePosition = (style, key) => { + if (!style) return; + if (!Number.isNaN(style[key])) style[key] = `${style[key]}px`; + }; + function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!(0, vue.isVNode)(child)) return true; + if (child.type === vue.Comment) return false; + if (child.type === vue.Fragment && !ensureValidVNode(child.children)) return false; + return true; + }) ? vnodes : null; + } + +//#endregion +//#region ../../packages/components/table/src/store/expand.ts + function useExpand(watcherData) { + const instance = (0, vue.getCurrentInstance)(); + const defaultExpandAll = (0, vue.ref)(false); + const expandRows = (0, vue.ref)([]); + const canRowExpand = (row, index) => { + const expandableFn = instance.store.states.rowExpandable.value; + return expandableFn?.(row, index) ?? true; + }; + const updateExpandRows = () => { + const data = watcherData.data.value || []; + const rowKey = watcherData.rowKey.value; + if (defaultExpandAll.value) expandRows.value = instance.store.states.rowExpandable.value ? data.filter(canRowExpand) : data.slice(); + else if (rowKey) { + const expandRowsMap = getKeysMap(expandRows.value, rowKey); + expandRows.value = data.filter((row, index) => { + return !!expandRowsMap[getRowIdentity(row, rowKey)] && canRowExpand(row, index); + }); + } else expandRows.value = []; + }; + const toggleRowExpansion = (row, expanded) => { + const rowIndex = (watcherData.data.value || []).indexOf(row); + if (rowIndex > -1 && !canRowExpand(row, rowIndex)) return; + if (toggleRowStatus(expandRows.value, row, expanded, void 0, void 0, void 0, watcherData.rowKey.value)) instance.emit("expand-change", row, expandRows.value.slice()); + }; + const setExpandRowKeys = (rowKeys) => { + instance.store.assertRowKey(); + const data = watcherData.data.value || []; + const rowKey = watcherData.rowKey.value; + const keysMap = getKeysMap(data, rowKey); + expandRows.value = rowKeys.reduce((prev, cur) => { + const info = keysMap[cur]; + if (info && canRowExpand(info.row, info.index)) prev.push(info.row); + return prev; + }, []); + }; + const isRowExpanded = (row) => { + const rowKey = watcherData.rowKey.value; + if (rowKey) return !!getKeysMap(expandRows.value, rowKey)[getRowIdentity(row, rowKey)]; + return expandRows.value.includes(row); + }; + return { + updateExpandRows, + toggleRowExpansion, + setExpandRowKeys, + isRowExpanded, + states: { + expandRows, + defaultExpandAll + } + }; + } + +//#endregion +//#region ../../packages/components/table/src/store/current.ts + function useCurrent(watcherData) { + const instance = (0, vue.getCurrentInstance)(); + const _currentRowKey = (0, vue.ref)(null); + const currentRow = (0, vue.ref)(null); + const setCurrentRowKey = (key) => { + instance.store.assertRowKey(); + _currentRowKey.value = key; + setCurrentRowByKey(key); + }; + const restoreCurrentRowKey = () => { + _currentRowKey.value = null; + }; + const setCurrentRowByKey = (key) => { + const { data, rowKey } = watcherData; + const oldCurrentRow = currentRow.value; + let _currentRow = null; + if (rowKey.value) _currentRow = ((0, vue.unref)(data) || []).find((item) => getRowIdentity(item, rowKey.value) === key) ?? null; + currentRow.value = _currentRow ?? null; + instance.emit("current-change", currentRow.value, oldCurrentRow); + }; + const updateCurrentRow = (_currentRow) => { + const oldCurrentRow = currentRow.value; + if (_currentRow && _currentRow !== oldCurrentRow) { + currentRow.value = _currentRow; + instance.emit("current-change", currentRow.value, oldCurrentRow); + return; + } + if (!_currentRow && oldCurrentRow) { + currentRow.value = null; + instance.emit("current-change", null, oldCurrentRow); + } + }; + const updateCurrentRowData = () => { + const rowKey = watcherData.rowKey.value; + const data = watcherData.data.value || []; + const oldCurrentRow = currentRow.value; + if (oldCurrentRow && !data.includes(oldCurrentRow)) if (rowKey) setCurrentRowByKey(getRowIdentity(oldCurrentRow, rowKey)); + else { + currentRow.value = null; + instance.emit("current-change", null, oldCurrentRow); + } + else if (_currentRowKey.value) { + setCurrentRowByKey(_currentRowKey.value); + restoreCurrentRowKey(); + } + }; + return { + setCurrentRowKey, + restoreCurrentRowKey, + setCurrentRowByKey, + updateCurrentRow, + updateCurrentRowData, + states: { + _currentRowKey, + currentRow + } + }; + } + +//#endregion +//#region ../../packages/components/table/src/store/tree.ts + function useTree$2(watcherData) { + const expandRowKeys = (0, vue.ref)([]); + const treeData = (0, vue.ref)({}); + const indent = (0, vue.ref)(16); + const lazy = (0, vue.ref)(false); + const lazyTreeNodeMap = (0, vue.ref)({}); + const lazyColumnIdentifier = (0, vue.ref)("hasChildren"); + const childrenColumnName = (0, vue.ref)("children"); + const checkStrictly = (0, vue.ref)(false); + const instance = (0, vue.getCurrentInstance)(); + const normalizedData = (0, vue.computed)(() => { + if (!watcherData.rowKey.value) return {}; + return normalize(watcherData.data.value || []); + }); + const normalizedLazyNode = (0, vue.computed)(() => { + const rowKey = watcherData.rowKey.value; + const keys = Object.keys(lazyTreeNodeMap.value); + const res = {}; + if (!keys.length) return res; + keys.forEach((key) => { + if (lazyTreeNodeMap.value[key].length) { + const item = { children: [] }; + lazyTreeNodeMap.value[key].forEach((row) => { + const currentRowKey = getRowIdentity(row, rowKey); + item.children.push(currentRowKey); + if (row[lazyColumnIdentifier.value] && !res[currentRowKey]) res[currentRowKey] = { children: [] }; + }); + res[key] = item; + } + }); + return res; + }); + const normalize = (data) => { + const rowKey = watcherData.rowKey.value; + const res = {}; + walkTreeNode(data, (parent, children, level) => { + const parentId = getRowIdentity(parent, rowKey); + if (isArray$1(children)) res[parentId] = { + children: children.map((row) => getRowIdentity(row, rowKey)), + level + }; + else if (lazy.value) res[parentId] = { + children: [], + lazy: true, + level + }; + }, childrenColumnName.value, lazyColumnIdentifier.value, lazy.value); + return res; + }; + const updateTreeData = (ifChangeExpandRowKeys = false, ifExpandAll) => { + ifExpandAll ||= instance.store?.states.defaultExpandAll.value; + const nested = normalizedData.value; + const normalizedLazyNode_ = normalizedLazyNode.value; + const keys = Object.keys(nested); + const newTreeData = {}; + if (keys.length) { + const oldTreeData = (0, vue.unref)(treeData); + const rootLazyRowKeys = []; + const getExpanded = (oldValue, key) => { + if (ifChangeExpandRowKeys) if (expandRowKeys.value) return ifExpandAll || expandRowKeys.value.includes(key); + else return !!(ifExpandAll || oldValue?.expanded); + else { + const included = ifExpandAll || expandRowKeys.value && expandRowKeys.value.includes(key); + return !!(oldValue?.expanded || included); + } + }; + keys.forEach((key) => { + const oldValue = oldTreeData[key]; + const newValue = { ...nested[key] }; + newValue.expanded = getExpanded(oldValue, key); + if (newValue.lazy) { + const { loaded = false, loading = false } = oldValue || {}; + newValue.loaded = !!loaded; + newValue.loading = !!loading; + rootLazyRowKeys.push(key); + } + newTreeData[key] = newValue; + }); + const lazyKeys = Object.keys(normalizedLazyNode_); + if (lazy.value && lazyKeys.length && rootLazyRowKeys.length) lazyKeys.forEach((key) => { + const oldValue = oldTreeData[key]; + const lazyNodeChildren = normalizedLazyNode_[key].children; + if (rootLazyRowKeys.includes(key)) { + if (newTreeData[key].children?.length !== 0) throw new Error("[ElTable]children must be an empty array."); + newTreeData[key].children = lazyNodeChildren; + } else { + const { loaded = false, loading = false } = oldValue || {}; + newTreeData[key] = { + lazy: true, + loaded: !!loaded, + loading: !!loading, + expanded: getExpanded(oldValue, key), + children: lazyNodeChildren, + level: void 0 + }; + } + }); + } + treeData.value = newTreeData; + instance.store?.updateTableScrollY(); + }; + (0, vue.watch)(() => expandRowKeys.value, () => { + updateTreeData(true); + }, { deep: true }); + (0, vue.watch)(() => normalizedData.value, () => { + updateTreeData(); + }); + (0, vue.watch)(() => normalizedLazyNode.value, () => { + updateTreeData(); + }); + const updateTreeExpandKeys = (value) => { + expandRowKeys.value = value; + updateTreeData(); + }; + const isUseLazy = (data) => { + return lazy.value && data && "loaded" in data && !data.loaded; + }; + const toggleTreeExpansion = (row, expanded) => { + instance.store.assertRowKey(); + const rowKey = watcherData.rowKey.value; + const id = getRowIdentity(row, rowKey); + const data = id && treeData.value[id]; + if (id && data && "expanded" in data) { + const oldExpanded = data.expanded; + expanded = isUndefined(expanded) ? !data.expanded : expanded; + treeData.value[id].expanded = expanded; + if (oldExpanded !== expanded) instance.emit("expand-change", row, expanded); + expanded && isUseLazy(data) && loadData(row, id, data); + instance.store.updateTableScrollY(); + } + }; + const loadOrToggle = (row) => { + instance.store.assertRowKey(); + const rowKey = watcherData.rowKey.value; + const id = getRowIdentity(row, rowKey); + const data = treeData.value[id]; + if (isUseLazy(data)) loadData(row, id, data); + else toggleTreeExpansion(row, void 0); + }; + const loadData = (row, key, treeNode) => { + const { load } = instance.props; + if (load && !treeData.value[key].loaded) { + treeData.value[key].loading = true; + load(row, treeNode, (data) => { + if (!isArray$1(data)) throw new TypeError("[ElTable] data must be an array"); + treeData.value[key].loading = false; + treeData.value[key].loaded = true; + treeData.value[key].expanded = true; + if (data.length) lazyTreeNodeMap.value[key] = data; + instance.emit("expand-change", row, true); + }); + } + }; + const updateKeyChildren = (key, data) => { + const { lazy, rowKey } = instance.props; + if (!lazy) return; + if (!rowKey) throw new Error("[Table] rowKey is required in updateKeyChild"); + if (lazyTreeNodeMap.value[key]) lazyTreeNodeMap.value[key] = data; + }; + return { + loadData, + loadOrToggle, + toggleTreeExpansion, + updateTreeExpandKeys, + updateTreeData, + updateKeyChildren, + normalize, + states: { + expandRowKeys, + treeData, + indent, + lazy, + lazyTreeNodeMap, + lazyColumnIdentifier, + childrenColumnName, + checkStrictly + } + }; + } + +//#endregion +//#region ../../packages/components/table/src/store/watcher.ts + const sortData = (data, states) => { + const sortingColumn = states.sortingColumn; + if (!sortingColumn || isString(sortingColumn.sortable)) return data; + return orderBy(data, states.sortProp, states.sortOrder, sortingColumn.sortMethod, sortingColumn.sortBy); + }; + const doFlattenColumns = (columns) => { + const result = []; + columns.forEach((column) => { + if (column.children && column.children.length > 0) result.push.apply(result, doFlattenColumns(column.children)); + else result.push(column); + }); + return result; + }; + function useWatcher$1() { + const instance = (0, vue.getCurrentInstance)(); + const { size: tableSize } = (0, vue.toRefs)(instance.proxy?.$props); + const rowKey = (0, vue.ref)(null); + const data = (0, vue.ref)([]); + const _data = (0, vue.ref)([]); + const isComplex = (0, vue.ref)(false); + const _columns = (0, vue.ref)([]); + const originColumns = (0, vue.ref)([]); + const columns = (0, vue.ref)([]); + const fixedColumns = (0, vue.ref)([]); + const rightFixedColumns = (0, vue.ref)([]); + const leafColumns = (0, vue.ref)([]); + const fixedLeafColumns = (0, vue.ref)([]); + const rightFixedLeafColumns = (0, vue.ref)([]); + const updateOrderFns = []; + const leafColumnsLength = (0, vue.ref)(0); + const fixedLeafColumnsLength = (0, vue.ref)(0); + const rightFixedLeafColumnsLength = (0, vue.ref)(0); + const isAllSelected = (0, vue.ref)(false); + const selection = (0, vue.ref)([]); + const reserveSelection = (0, vue.ref)(false); + const selectOnIndeterminate = (0, vue.ref)(false); + const selectable = (0, vue.ref)(null); + const rowExpandable = (0, vue.ref)(null); + const filters = (0, vue.ref)({}); + const filteredData = (0, vue.ref)(null); + const sortingColumn = (0, vue.ref)(null); + const sortProp = (0, vue.ref)(null); + const sortOrder = (0, vue.ref)(null); + const hoverRow = (0, vue.ref)(null); + const selectedMap = (0, vue.computed)(() => { + return rowKey.value ? getKeysMap(selection.value, rowKey.value) : void 0; + }); + (0, vue.watch)(data, () => { + if (instance.state) { + scheduleLayout(false); + if (instance.props.tableLayout === "auto") instance.refs.tableHeaderRef?.updateFixedColumnStyle(); + } + }, { deep: true }); + const assertRowKey = () => { + if (!rowKey.value) throw new Error("[ElTable] prop row-key is required"); + }; + const updateChildFixed = (column) => { + column.children?.forEach((childColumn) => { + childColumn.fixed = column.fixed; + updateChildFixed(childColumn); + }); + }; + const updateColumns = () => { + _columns.value.forEach((column) => { + updateChildFixed(column); + }); + fixedColumns.value = _columns.value.filter((column) => [true, "left"].includes(column.fixed)); + const selectColumn = _columns.value.find((column) => column.type === "selection"); + let selectColFixLeft; + if (selectColumn && selectColumn.fixed !== "right" && !fixedColumns.value.includes(selectColumn)) { + if (_columns.value.indexOf(selectColumn) === 0 && fixedColumns.value.length) { + fixedColumns.value.unshift(selectColumn); + selectColFixLeft = true; + } + } + rightFixedColumns.value = _columns.value.filter((column) => column.fixed === "right"); + const notFixedColumns = _columns.value.filter((column) => (selectColFixLeft ? column.type !== "selection" : true) && !column.fixed); + originColumns.value = Array.from(fixedColumns.value).concat(notFixedColumns).concat(rightFixedColumns.value); + const leafColumns = doFlattenColumns(notFixedColumns); + const fixedLeafColumns = doFlattenColumns(fixedColumns.value); + const rightFixedLeafColumns = doFlattenColumns(rightFixedColumns.value); + leafColumnsLength.value = leafColumns.length; + fixedLeafColumnsLength.value = fixedLeafColumns.length; + rightFixedLeafColumnsLength.value = rightFixedLeafColumns.length; + columns.value = Array.from(fixedLeafColumns).concat(leafColumns).concat(rightFixedLeafColumns); + isComplex.value = fixedColumns.value.length > 0 || rightFixedColumns.value.length > 0; + }; + const scheduleLayout = (needUpdateColumns, immediate = false) => { + if (needUpdateColumns) updateColumns(); + if (immediate) instance.state.doLayout(); + else instance.state.debouncedUpdateLayout(); + }; + const isSelected = (row) => { + if (selectedMap.value) return !!selectedMap.value[getRowIdentity(row, rowKey.value)]; + else return selection.value.includes(row); + }; + const clearSelection = () => { + isAllSelected.value = false; + const oldSelection = selection.value; + selection.value = []; + if (oldSelection.length) instance.emit("selection-change", []); + }; + const cleanSelection = () => { + let deleted; + if (rowKey.value) { + deleted = []; + const childrenKey = instance?.store?.states?.childrenColumnName.value; + const dataMap = getKeysMap(data.value, rowKey.value, true, childrenKey); + for (const key in selectedMap.value) if (hasOwn(selectedMap.value, key) && !dataMap[key]) deleted.push(selectedMap.value[key].row); + } else deleted = selection.value.filter((item) => !data.value.includes(item)); + if (deleted.length) { + const newSelection = selection.value.filter((item) => !deleted.includes(item)); + selection.value = newSelection; + instance.emit("selection-change", newSelection.slice()); + } + }; + const getSelectionRows = () => { + return (selection.value || []).slice(); + }; + const toggleRowSelection = (row, selected, emitChange = true, ignoreSelectable = false) => { + const treeProps = { + children: instance?.store?.states?.childrenColumnName.value, + checkStrictly: instance?.store?.states?.checkStrictly.value + }; + if (toggleRowStatus(selection.value, row, selected, treeProps, ignoreSelectable ? void 0 : selectable.value, data.value.indexOf(row), rowKey.value)) { + const newSelection = (selection.value || []).slice(); + if (emitChange) instance.emit("select", newSelection, row); + instance.emit("selection-change", newSelection); + } + }; + const _toggleAllSelection = () => { + const value = selectOnIndeterminate.value ? !isAllSelected.value : !(isAllSelected.value || selection.value.length); + isAllSelected.value = value; + let selectionChanged = false; + let childrenCount = 0; + const rowKey = instance?.store?.states?.rowKey.value; + const { childrenColumnName } = instance.store.states; + const treeProps = { + children: childrenColumnName.value, + checkStrictly: false + }; + data.value.forEach((row, index) => { + const rowIndex = index + childrenCount; + if (toggleRowStatus(selection.value, row, value, treeProps, selectable.value, rowIndex, rowKey)) selectionChanged = true; + childrenCount += getChildrenCount(getRowIdentity(row, rowKey)); + }); + if (selectionChanged) instance.emit("selection-change", selection.value ? selection.value.slice() : []); + instance.emit("select-all", (selection.value || []).slice()); + }; + const updateAllSelected = () => { + if (data.value?.length === 0) { + isAllSelected.value = false; + return; + } + const { childrenColumnName } = instance.store.states; + let rowIndex = 0; + let selectedCount = 0; + const checkSelectedStatus = (data) => { + for (const row of data) { + const isRowSelectable = selectable.value && selectable.value.call(null, row, rowIndex); + if (!isSelected(row)) { + if (!selectable.value || isRowSelectable) return false; + } else selectedCount++; + rowIndex++; + if (row[childrenColumnName.value]?.length && !checkSelectedStatus(row[childrenColumnName.value])) return false; + } + return true; + }; + const isAllSelected_ = checkSelectedStatus(data.value || []); + isAllSelected.value = selectedCount === 0 ? false : isAllSelected_; + }; + const getChildrenCount = (rowKey) => { + if (!instance || !instance.store) return 0; + const { treeData } = instance.store.states; + let count = 0; + const children = treeData.value[rowKey]?.children; + if (children) { + count += children.length; + children.forEach((childKey) => { + count += getChildrenCount(childKey); + }); + } + return count; + }; + const updateFilters = (column, values) => { + const filters_ = {}; + castArray$1(column).forEach((col) => { + filters.value[col.id] = values; + filters_[col.columnKey || col.id] = values; + }); + return filters_; + }; + const updateSort = (column, prop, order) => { + if (sortingColumn.value && sortingColumn.value !== column) sortingColumn.value.order = null; + sortingColumn.value = column; + sortProp.value = prop; + sortOrder.value = order; + }; + const execFilter = () => { + let sourceData = (0, vue.unref)(_data); + Object.keys(filters.value).forEach((columnId) => { + const values = filters.value[columnId]; + if (!values || values.length === 0) return; + const column = getColumnById({ columns: columns.value }, columnId); + if (column && column.filterMethod) sourceData = sourceData.filter((row) => { + return values.some((value) => column.filterMethod.call(null, value, row, column)); + }); + }); + filteredData.value = sourceData; + }; + const execSort = () => { + data.value = sortData(filteredData.value ?? [], { + sortingColumn: sortingColumn.value, + sortProp: sortProp.value, + sortOrder: sortOrder.value + }); + }; + const execQuery = (ignore = void 0) => { + if (!ignore?.filter) execFilter(); + execSort(); + }; + const clearFilter = (columnKeys) => { + const { tableHeaderRef } = instance.refs; + if (!tableHeaderRef) return; + const panels = Object.assign({}, tableHeaderRef.filterPanels); + const keys = Object.keys(panels); + if (!keys.length) return; + if (isString(columnKeys)) columnKeys = [columnKeys]; + if (isArray$1(columnKeys)) { + const columns_ = columnKeys.map((key) => getColumnByKey({ columns: columns.value }, key)); + keys.forEach((key) => { + const column = columns_.find((col) => col.id === key); + if (column) column.filteredValue = []; + }); + instance.store.commit("filterChange", { + column: columns_, + values: [], + silent: true, + multi: true + }); + } else { + keys.forEach((key) => { + const column = columns.value.find((col) => col.id === key); + if (column) column.filteredValue = []; + }); + filters.value = {}; + instance.store.commit("filterChange", { + column: {}, + values: [], + silent: true + }); + } + }; + const clearSort = () => { + if (!sortingColumn.value) return; + updateSort(null, null, null); + instance.store.commit("changeSortCondition", { silent: true }); + }; + const { setExpandRowKeys, toggleRowExpansion, updateExpandRows, states: expandStates, isRowExpanded } = useExpand({ + data, + rowKey + }); + const { updateTreeExpandKeys, toggleTreeExpansion, updateTreeData, updateKeyChildren, loadOrToggle, states: treeStates } = useTree$2({ + data, + rowKey + }); + const { updateCurrentRowData, updateCurrentRow, setCurrentRowKey, states: currentData } = useCurrent({ + data, + rowKey + }); + const setExpandRowKeysAdapter = (val) => { + setExpandRowKeys(val); + updateTreeExpandKeys(val); + }; + const toggleRowExpansionAdapter = (row, expanded) => { + if (columns.value.some(({ type }) => type === "expand")) toggleRowExpansion(row, expanded); + else toggleTreeExpansion(row, expanded); + }; + return { + assertRowKey, + updateColumns, + scheduleLayout, + isSelected, + clearSelection, + cleanSelection, + getSelectionRows, + toggleRowSelection, + _toggleAllSelection, + toggleAllSelection: null, + updateAllSelected, + updateFilters, + updateCurrentRow, + updateSort, + execFilter, + execSort, + execQuery, + clearFilter, + clearSort, + toggleRowExpansion, + setExpandRowKeysAdapter, + setCurrentRowKey, + toggleRowExpansionAdapter, + isRowExpanded, + updateExpandRows, + updateCurrentRowData, + loadOrToggle, + updateTreeData, + updateKeyChildren, + states: { + tableSize, + rowKey, + data, + _data, + isComplex, + _columns, + originColumns, + columns, + fixedColumns, + rightFixedColumns, + leafColumns, + fixedLeafColumns, + rightFixedLeafColumns, + updateOrderFns, + leafColumnsLength, + fixedLeafColumnsLength, + rightFixedLeafColumnsLength, + isAllSelected, + selection, + reserveSelection, + selectOnIndeterminate, + selectable, + rowExpandable, + filters, + filteredData, + sortingColumn, + sortProp, + sortOrder, + hoverRow, + ...expandStates, + ...treeStates, + ...currentData + } + }; + } + +//#endregion +//#region ../../packages/components/table/src/store/index.ts + function replaceColumn(array, column) { + return array.map((item) => { + if (item.id === column.id) return column; + else if (item.children?.length) item.children = replaceColumn(item.children, column); + return item; + }); + } + function sortColumn(array) { + array.forEach((item) => { + item.no = item.getColumnIndex?.(); + if (item.children?.length) sortColumn(item.children); + }); + array.sort((cur, pre) => cur.no - pre.no); + } + function useStore() { + const instance = (0, vue.getCurrentInstance)(); + const watcher = useWatcher$1(); + const ns = useNamespace("table"); + const { t } = useLocale(); + const mutations = { + setData(states, data) { + const dataInstanceChanged = (0, vue.unref)(states._data) !== data; + states.data.value = data; + states._data.value = data; + instance.store.execQuery(); + instance.store.updateCurrentRowData(); + instance.store.updateExpandRows(); + instance.store.updateTreeData(instance.store.states.defaultExpandAll.value); + if ((0, vue.unref)(states.reserveSelection)) instance.store.assertRowKey(); + else if (dataInstanceChanged) instance.store.clearSelection(); + else instance.store.cleanSelection(); + instance.store.updateAllSelected(); + if (instance.$ready) instance.store.scheduleLayout(); + }, + insertColumn(states, column, parent, updateColumnOrder) { + const array = (0, vue.unref)(states._columns); + let newColumns = []; + if (!parent) { + array.push(column); + newColumns = array; + } else { + if (parent && !parent.children) parent.children = []; + parent.children?.push(column); + newColumns = replaceColumn(array, parent); + } + sortColumn(newColumns); + states._columns.value = newColumns; + states.updateOrderFns.push(updateColumnOrder); + if (column.type === "selection") { + states.selectable.value = column.selectable; + states.reserveSelection.value = column.reserveSelection; + } + if (instance.$ready) { + instance.store.updateColumns(); + instance.store.scheduleLayout(); + } + }, + updateColumnOrder(states, column) { + if (column.getColumnIndex?.() === column.no) return; + sortColumn(states._columns.value); + if (instance.$ready) instance.store.updateColumns(); + }, + removeColumn(states, column, parent, updateColumnOrder) { + const array = (0, vue.unref)(states._columns) || []; + if (parent) { + parent.children?.splice(parent.children.findIndex((item) => item.id === column.id), 1); + (0, vue.nextTick)(() => { + if (parent.children?.length === 0) delete parent.children; + }); + states._columns.value = replaceColumn(array, parent); + } else { + const index = array.indexOf(column); + if (index > -1) { + array.splice(index, 1); + states._columns.value = array; + } + } + const updateFnIndex = states.updateOrderFns.indexOf(updateColumnOrder); + updateFnIndex > -1 && states.updateOrderFns.splice(updateFnIndex, 1); + if (instance.$ready) { + instance.store.updateColumns(); + instance.store.scheduleLayout(); + } + }, + sort(states, options) { + const { prop, order, init } = options; + if (prop) { + const column = (0, vue.unref)(states.columns).find((column) => column.property === prop); + if (column) { + column.order = order; + instance.store.updateSort(column, prop, order); + instance.store.commit("changeSortCondition", { init }); + } + } + }, + changeSortCondition(states, options) { + const { sortingColumn, sortProp, sortOrder } = states; + const columnValue = (0, vue.unref)(sortingColumn), propValue = (0, vue.unref)(sortProp), orderValue = (0, vue.unref)(sortOrder); + if (isNull(orderValue)) { + states.sortingColumn.value = null; + states.sortProp.value = null; + } + instance.store.execQuery({ filter: true }); + if (!options || !(options.silent || options.init)) instance.emit("sort-change", { + column: columnValue, + prop: propValue, + order: orderValue + }); + instance.store.updateTableScrollY(); + }, + filterChange(_states, options) { + const { column, values, silent } = options; + const newFilters = instance.store.updateFilters(column, values); + instance.store.execQuery(); + if (!silent) instance.emit("filter-change", newFilters); + instance.store.updateTableScrollY(); + }, + toggleAllSelection() { + instance.store.toggleAllSelection?.(); + }, + rowSelectedChanged(_states, row) { + instance.store.toggleRowSelection(row); + instance.store.updateAllSelected(); + }, + setHoverRow(states, row) { + states.hoverRow.value = row; + }, + setCurrentRow(_states, row) { + instance.store.updateCurrentRow(row); + } + }; + const commit = function(name, ...args) { + const mutations = instance.store.mutations; + if (mutations[name]) mutations[name].apply(instance, [instance.store.states, ...args]); + else throw new Error(`Action not found: ${name}`); + }; + const updateTableScrollY = function() { + (0, vue.nextTick)(() => instance.layout.updateScrollY.apply(instance.layout)); + }; + return { + ns, + t, + ...watcher, + mutations, + commit, + updateTableScrollY + }; + } + +//#endregion +//#region ../../packages/components/table/src/store/helper.ts + const InitialStateMap = { + rowKey: "rowKey", + defaultExpandAll: "defaultExpandAll", + rowExpandable: "rowExpandable", + selectOnIndeterminate: "selectOnIndeterminate", + indent: "indent", + lazy: "lazy", + ["treeProps.hasChildren"]: { + key: "lazyColumnIdentifier", + default: "hasChildren" + }, + ["treeProps.children"]: { + key: "childrenColumnName", + default: "children" + }, + ["treeProps.checkStrictly"]: { + key: "checkStrictly", + default: false + } + }; + function createStore(table, props) { + if (!table) throw new Error("Table is required."); + const store = useStore(); + store.toggleAllSelection = debounce(store._toggleAllSelection, 10); + Object.keys(InitialStateMap).forEach((key) => { + handleValue(getArrKeysValue(props, key), key, store); + }); + proxyTableProps(store, props); + return store; + } + function proxyTableProps(store, props) { + Object.keys(InitialStateMap).forEach((key) => { + (0, vue.watch)(() => getArrKeysValue(props, key), (value) => { + handleValue(value, key, store); + }); + }); + } + function handleValue(value, propsKey, store) { + let newVal = value; + let storeKey = InitialStateMap[propsKey]; + if (isObject$1(storeKey)) { + newVal = newVal || storeKey.default; + storeKey = storeKey.key; + } + store.states[storeKey].value = newVal; + } + function getArrKeysValue(props, key) { + if (key.includes(".")) { + const keyList = key.split("."); + let value = props; + keyList.forEach((k) => { + value = value[k]; + }); + return value; + } else return props[key]; + } + +//#endregion +//#region ../../packages/components/table/src/table-layout.ts + var TableLayout = class { + constructor(options) { + this.observers = []; + this.table = null; + this.store = null; + this.columns = []; + this.fit = true; + this.showHeader = true; + this.height = (0, vue.ref)(null); + this.scrollX = (0, vue.ref)(false); + this.scrollY = (0, vue.ref)(false); + this.bodyWidth = (0, vue.ref)(null); + this.fixedWidth = (0, vue.ref)(null); + this.rightFixedWidth = (0, vue.ref)(null); + this.gutterWidth = 0; + for (const name in options) if (hasOwn(options, name)) if ((0, vue.isRef)(this[name])) this[name].value = options[name]; + else this[name] = options[name]; + if (!this.table) throw new Error("Table is required for Table Layout"); + if (!this.store) throw new Error("Store is required for Table Layout"); + } + updateScrollY() { + const height = this.height.value; + /** + * When the height is not initialized, it is null. + * After the table is initialized, when the height is not configured, the height is 0. + */ + if (isNull(height)) return false; + const scrollBarRef = this.table.refs.scrollBarRef; + if (this.table.vnode.el && scrollBarRef?.wrapRef) { + let scrollY = true; + const prevScrollY = this.scrollY.value; + scrollY = scrollBarRef.wrapRef.scrollHeight > scrollBarRef.wrapRef.clientHeight; + this.scrollY.value = scrollY; + return prevScrollY !== scrollY; + } + return false; + } + setHeight(value, prop = "height") { + if (!isClient) return; + const el = this.table.vnode.el; + value = parseHeight(value); + this.height.value = Number(value); + if (!el && (value || value === 0)) { + (0, vue.nextTick)(() => this.setHeight(value, prop)); + return; + } + if (el && isNumber(value)) { + el.style[prop] = `${value}px`; + this.updateElsHeight(); + } else if (el && isString(value)) { + el.style[prop] = value; + this.updateElsHeight(); + } + } + setMaxHeight(value) { + this.setHeight(value, "max-height"); + } + getFlattenColumns() { + const flattenColumns = []; + this.table.store.states.columns.value.forEach((column) => { + if (column.isColumnGroup) flattenColumns.push.apply(flattenColumns, column.columns); + else flattenColumns.push(column); + }); + return flattenColumns; + } + updateElsHeight() { + this.updateScrollY(); + this.notifyObservers("scrollable"); + } + headerDisplayNone(elm) { + if (!elm) return true; + let headerChild = elm; + while (headerChild.tagName !== "DIV") { + if (getComputedStyle(headerChild).display === "none") return true; + headerChild = headerChild.parentElement; + } + return false; + } + updateColumnsWidth() { + if (!isClient) return; + const fit = this.fit; + const bodyWidth = this.table.vnode.el?.clientWidth; + let bodyMinWidth = 0; + const flattenColumns = this.getFlattenColumns(); + const flexColumns = flattenColumns.filter((column) => !isNumber(column.width)); + flattenColumns.forEach((column) => { + if (isNumber(column.width) && column.realWidth) column.realWidth = null; + }); + if (flexColumns.length > 0 && fit) { + flattenColumns.forEach((column) => { + bodyMinWidth += Number(column.width || column.minWidth || 80); + }); + if (bodyMinWidth <= bodyWidth) { + this.scrollX.value = false; + const totalFlexWidth = bodyWidth - bodyMinWidth; + if (flexColumns.length === 1) flexColumns[0].realWidth = Number(flexColumns[0].minWidth || 80) + totalFlexWidth; + else { + const flexWidthPerPixel = totalFlexWidth / flexColumns.reduce((prev, column) => prev + Number(column.minWidth || 80), 0); + let noneFirstWidth = 0; + flexColumns.forEach((column, index) => { + if (index === 0) return; + const flexWidth = Math.floor(Number(column.minWidth || 80) * flexWidthPerPixel); + noneFirstWidth += flexWidth; + column.realWidth = Number(column.minWidth || 80) + flexWidth; + }); + flexColumns[0].realWidth = Number(flexColumns[0].minWidth || 80) + totalFlexWidth - noneFirstWidth; + } + } else { + this.scrollX.value = true; + flexColumns.forEach((column) => { + column.realWidth = Number(column.minWidth); + }); + } + this.bodyWidth.value = Math.max(bodyMinWidth, bodyWidth); + this.table.state.resizeState.value.width = this.bodyWidth.value; + } else { + flattenColumns.forEach((column) => { + if (!column.width && !column.minWidth) column.realWidth = 80; + else column.realWidth = Number(column.width || column.minWidth); + bodyMinWidth += column.realWidth; + }); + this.scrollX.value = bodyMinWidth > bodyWidth; + this.bodyWidth.value = bodyMinWidth; + } + const fixedColumns = this.store.states.fixedColumns.value; + if (fixedColumns.length > 0) { + let fixedWidth = 0; + fixedColumns.forEach((column) => { + fixedWidth += Number(column.realWidth || column.width); + }); + this.fixedWidth.value = fixedWidth; + } + const rightFixedColumns = this.store.states.rightFixedColumns.value; + if (rightFixedColumns.length > 0) { + let rightFixedWidth = 0; + rightFixedColumns.forEach((column) => { + rightFixedWidth += Number(column.realWidth || column.width); + }); + this.rightFixedWidth.value = rightFixedWidth; + } + this.notifyObservers("columns"); + } + addObserver(observer) { + this.observers.push(observer); + } + removeObserver(observer) { + const index = this.observers.indexOf(observer); + if (index !== -1) this.observers.splice(index, 1); + } + notifyObservers(event) { + this.observers.forEach((observer) => { + switch (event) { + case "columns": + observer.state?.onColumnsChange(this); + break; + case "scrollable": + observer.state?.onScrollableChange(this); + break; + default: throw new Error(`Table Layout don't have event ${event}.`); + } + }); + } + }; + +//#endregion +//#region ../../packages/components/table/src/filter-panel.vue?vue&type=script&lang.ts + var filter_panel_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElTableFilterPanel", + components: { + ElCheckbox, + ElCheckboxGroup, + ElScrollbar, + ElTooltip, + ElIcon, + ArrowDown: arrow_down_default, + ArrowUp: arrow_up_default + }, + props: { + placement: { + type: String, + default: "bottom-start" + }, + store: { type: Object }, + column: { type: Object }, + upDataColumn: { type: Function }, + appendTo: useTooltipContentProps.appendTo + }, + setup(props) { + const instance = (0, vue.getCurrentInstance)(); + const { t } = useLocale(); + const ns = useNamespace("table-filter"); + const parent = instance?.parent; + if (props.column && !parent.filterPanels.value[props.column.id]) parent.filterPanels.value[props.column.id] = instance; + const tooltipRef = (0, vue.ref)(null); + const rootRef = (0, vue.ref)(null); + const checkedIndex = (0, vue.ref)(0); + const filters = (0, vue.computed)(() => { + return props.column && props.column.filters; + }); + const filterClassName = (0, vue.computed)(() => { + if (props.column && props.column.filterClassName) return `${ns.b()} ${props.column.filterClassName}`; + return ns.b(); + }); + const filterValue = (0, vue.computed)({ + get: () => (props.column?.filteredValue || [])[0], + set: (value) => { + if (filteredValue.value) if (!isPropAbsent(value)) filteredValue.value.splice(0, 1, value); + else filteredValue.value.splice(0, 1); + } + }); + const filteredValue = (0, vue.computed)({ + get() { + if (props.column) return props.column.filteredValue || []; + return []; + }, + set(value) { + if (props.column) props.upDataColumn?.("filteredValue", value); + } + }); + const multiple = (0, vue.computed)(() => { + if (props.column) return props.column.filterMultiple; + return true; + }); + const isActive = (filter) => { + return filter.value === filterValue.value; + }; + const hidden = () => { + tooltipRef.value?.onClose(); + }; + const handleConfirm = () => { + confirmFilter(filteredValue.value); + hidden(); + }; + const handleReset = () => { + filteredValue.value = []; + confirmFilter(filteredValue.value); + hidden(); + }; + const handleSelect = (_filterValue, index) => { + filterValue.value = _filterValue; + checkedIndex.value = index; + if (!isPropAbsent(_filterValue)) confirmFilter(filteredValue.value); + else confirmFilter([]); + hidden(); + }; + const confirmFilter = (filteredValue) => { + props.store?.commit("filterChange", { + column: props.column, + values: filteredValue + }); + props.store?.updateAllSelected(); + }; + const handleShowTooltip = () => { + rootRef.value?.focus(); + !multiple.value && initCheckedIndex(); + if (props.column) props.upDataColumn?.("filterOpened", true); + }; + const handleHideTooltip = () => { + if (props.column) props.upDataColumn?.("filterOpened", false); + }; + const initCheckedIndex = () => { + if (isPropAbsent(filterValue)) { + checkedIndex.value = 0; + return; + } + const idx = (filters.value || []).findIndex((item) => { + return item.value === filterValue.value; + }); + checkedIndex.value = idx >= 0 ? idx + 1 : 0; + }; + const handleKeydown = (event) => { + const code = getEventCode(event); + const len = (filters.value ? filters.value.length : 0) + 1; + let index = checkedIndex.value; + let isPreventDefault = true; + switch (code) { + case EVENT_CODE.down: + case EVENT_CODE.right: + index = (index + 1) % len; + break; + case EVENT_CODE.up: + case EVENT_CODE.left: + index = (index - 1 + len) % len; + break; + case EVENT_CODE.tab: + hidden(); + isPreventDefault = false; + break; + case EVENT_CODE.enter: + case EVENT_CODE.space: + if (index === 0) handleSelect(null, 0); + else { + const item = (filters.value || [])[index - 1]; + item.value && handleSelect(item.value, index); + } + break; + default: + isPreventDefault = false; + break; + } + isPreventDefault && event.preventDefault(); + checkedIndex.value = index; + rootRef.value?.querySelector(`.${ns.e("list-item")}:nth-child(${index + 1})`)?.focus(); + }; + return { + multiple, + filterClassName, + filteredValue, + filterValue, + filters, + handleConfirm, + handleReset, + handleSelect, + isPropAbsent, + isActive, + t, + ns, + tooltipRef, + rootRef, + checkedIndex, + handleShowTooltip, + handleHideTooltip, + handleKeydown + }; + } + }); + +//#endregion +//#region ../../packages/components/table/src/filter-panel.vue + const _hoisted_1$17 = ["disabled"]; + const _hoisted_2$10 = ["tabindex", "aria-checked"]; + const _hoisted_3$3 = [ + "tabindex", + "aria-checked", + "onClick" + ]; + const _hoisted_4$2 = ["aria-label"]; + function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) { + const _component_el_checkbox = (0, vue.resolveComponent)("el-checkbox"); + const _component_el_checkbox_group = (0, vue.resolveComponent)("el-checkbox-group"); + const _component_el_scrollbar = (0, vue.resolveComponent)("el-scrollbar"); + const _component_arrow_up = (0, vue.resolveComponent)("arrow-up"); + const _component_arrow_down = (0, vue.resolveComponent)("arrow-down"); + const _component_el_icon = (0, vue.resolveComponent)("el-icon"); + const _component_el_tooltip = (0, vue.resolveComponent)("el-tooltip"); + return (0, vue.openBlock)(), (0, vue.createBlock)(_component_el_tooltip, { + ref: "tooltipRef", + offset: 0, + placement: _ctx.placement, + "show-arrow": false, + trigger: "click", + role: "dialog", + teleported: "", + effect: "light", + pure: "", + loop: "", + "popper-class": _ctx.filterClassName, + persistent: "", + "append-to": _ctx.appendTo, + onShow: _ctx.handleShowTooltip, + onHide: _ctx.handleHideTooltip + }, { + content: (0, vue.withCtx)(() => [_ctx.multiple ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + ref: "rootRef", + tabindex: "-1", + class: (0, vue.normalizeClass)(_ctx.ns.e("multiple")) + }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(_ctx.ns.e("content")) }, [(0, vue.createVNode)(_component_el_scrollbar, { "wrap-class": _ctx.ns.e("wrap") }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)(_component_el_checkbox_group, { + modelValue: _ctx.filteredValue, + "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.filteredValue = $event), + class: (0, vue.normalizeClass)(_ctx.ns.e("checkbox-group")) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(_ctx.filters, (filter) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(_component_el_checkbox, { + key: filter.value, + value: filter.value + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)(filter.text), 1)]), + _: 2 + }, 1032, ["value"]); + }), 128))]), + _: 1 + }, 8, ["modelValue", "class"])]), + _: 1 + }, 8, ["wrap-class"])], 2), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(_ctx.ns.e("bottom")) }, [(0, vue.createElementVNode)("button", { + class: (0, vue.normalizeClass)(_ctx.ns.is("disabled", _ctx.filteredValue.length === 0)), + disabled: _ctx.filteredValue.length === 0, + type: "button", + onClick: _cache[1] || (_cache[1] = (...args) => _ctx.handleConfirm && _ctx.handleConfirm(...args)) + }, (0, vue.toDisplayString)(_ctx.t("el.table.confirmFilter")), 11, _hoisted_1$17), (0, vue.createElementVNode)("button", { + type: "button", + onClick: _cache[2] || (_cache[2] = (...args) => _ctx.handleReset && _ctx.handleReset(...args)) + }, (0, vue.toDisplayString)(_ctx.t("el.table.resetFilter")), 1)], 2)], 2)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("ul", { + key: 1, + ref: "rootRef", + tabindex: "-1", + role: "radiogroup", + class: (0, vue.normalizeClass)(_ctx.ns.e("list")), + onKeydown: _cache[4] || (_cache[4] = (...args) => _ctx.handleKeydown && _ctx.handleKeydown(...args)) + }, [(0, vue.createElementVNode)("li", { + role: "radio", + class: (0, vue.normalizeClass)([_ctx.ns.e("list-item"), _ctx.ns.is("active", _ctx.isPropAbsent(_ctx.filterValue))]), + tabindex: _ctx.checkedIndex === 0 ? 0 : -1, + "aria-checked": _ctx.isPropAbsent(_ctx.filterValue), + onClick: _cache[3] || (_cache[3] = ($event) => _ctx.handleSelect(null, 0)) + }, (0, vue.toDisplayString)(_ctx.t("el.table.clearFilter")), 11, _hoisted_2$10), ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(_ctx.filters, (filter, idx) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + key: filter.value, + role: "radio", + class: (0, vue.normalizeClass)([_ctx.ns.e("list-item"), _ctx.ns.is("active", _ctx.isActive(filter))]), + tabindex: _ctx.checkedIndex === idx + 1 ? 0 : -1, + "aria-checked": _ctx.isActive(filter), + onClick: ($event) => _ctx.handleSelect(filter.value, idx + 1) + }, (0, vue.toDisplayString)(filter.text), 11, _hoisted_3$3); + }), 128))], 34))]), + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("button", { + type: "button", + class: (0, vue.normalizeClass)(`${_ctx.ns.namespace.value}-table__column-filter-trigger`), + "aria-label": _ctx.t("el.table.filterLabel", { column: _ctx.column?.label || "" }) + }, [(0, vue.createVNode)(_component_el_icon, null, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "filter-icon", {}, () => [_ctx.column?.filterOpened ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_arrow_up, { key: 0 })) : ((0, vue.openBlock)(), (0, vue.createBlock)(_component_arrow_down, { key: 1 }))])]), + _: 3 + })], 10, _hoisted_4$2)]), + _: 3 + }, 8, [ + "placement", + "popper-class", + "append-to", + "onShow", + "onHide" + ]); + } + var filter_panel_default = /* @__PURE__ */ _plugin_vue_export_helper_default(filter_panel_vue_vue_type_script_lang_default, [["render", _sfc_render$4]]); + +//#endregion +//#region ../../packages/components/table/src/layout-observer.ts + function useLayoutObserver(root) { + const instance = (0, vue.getCurrentInstance)(); + (0, vue.onBeforeMount)(() => { + tableLayout.value.addObserver(instance); + }); + (0, vue.onMounted)(() => { + onColumnsChange(tableLayout.value); + onScrollableChange(tableLayout.value); + }); + (0, vue.onUpdated)(() => { + onColumnsChange(tableLayout.value); + onScrollableChange(tableLayout.value); + }); + (0, vue.onUnmounted)(() => { + tableLayout.value.removeObserver(instance); + }); + const tableLayout = (0, vue.computed)(() => { + const layout = root.layout; + if (!layout) throw new Error("Can not find table layout."); + return layout; + }); + const onColumnsChange = (layout) => { + const cols = root.vnode.el?.querySelectorAll("colgroup > col") || []; + if (!cols.length) return; + const flattenColumns = layout.getFlattenColumns(); + const columnsMap = {}; + flattenColumns.forEach((column) => { + columnsMap[column.id] = column; + }); + for (let i = 0, j = cols.length; i < j; i++) { + const col = cols[i]; + const column = columnsMap[col.getAttribute("name")]; + if (column) col.setAttribute("width", column.realWidth || column.width); + } + }; + const onScrollableChange = (layout) => { + const cols = root.vnode.el?.querySelectorAll("colgroup > col[name=gutter]") || []; + for (let i = 0, j = cols.length; i < j; i++) cols[i].setAttribute("width", layout.scrollY.value ? layout.gutterWidth : "0"); + const ths = root.vnode.el?.querySelectorAll("th.gutter") || []; + for (let i = 0, j = ths.length; i < j; i++) { + const th = ths[i]; + th.style.width = layout.scrollY.value ? `${layout.gutterWidth}px` : "0"; + th.style.display = layout.scrollY.value ? "" : "none"; + } + }; + return { + tableLayout: tableLayout.value, + onColumnsChange, + onScrollableChange + }; + } + +//#endregion +//#region ../../packages/components/table/src/tokens.ts + const TABLE_INJECTION_KEY = Symbol("ElTable"); + +//#endregion +//#region ../../packages/components/table/src/table-header/event-helper.ts + function useEvent(props, emit) { + const instance = (0, vue.getCurrentInstance)(); + const parent = (0, vue.inject)(TABLE_INJECTION_KEY); + const handleFilterClick = (event) => { + event.stopPropagation(); + }; + const handleHeaderClick = (event, column) => { + if (!column.filters && column.sortable) handleSortClick(event, column, false); + else if (column.filterable && !column.sortable) handleFilterClick(event); + parent?.emit("header-click", column, event); + }; + const handleHeaderContextMenu = (event, column) => { + parent?.emit("header-contextmenu", column, event); + }; + const draggingColumn = (0, vue.ref)(null); + const dragging = (0, vue.ref)(false); + const dragState = (0, vue.ref)(); + const handleMouseDown = (event, column) => { + if (!isClient) return; + if (column.children && column.children.length > 0) return; + /* istanbul ignore if */ + if (draggingColumn.value && props.border && draggingColumn.value.id === column.id) { + dragging.value = true; + const table = parent; + emit("set-drag-visible", true); + const tableLeft = (table?.vnode.el)?.getBoundingClientRect().left; + const columnEl = instance?.vnode?.el?.querySelector(`th.${column.id}`); + const columnRect = columnEl.getBoundingClientRect(); + const minLeft = columnRect.left - tableLeft + 30; + addClass(columnEl, "noclick"); + dragState.value = { + startMouseLeft: event.clientX, + startLeft: columnRect.right - tableLeft, + startColumnLeft: columnRect.left - tableLeft, + tableLeft + }; + const resizeProxy = table?.refs.resizeProxy; + resizeProxy.style.left = `${dragState.value.startLeft}px`; + document.onselectstart = function() { + return false; + }; + document.ondragstart = function() { + return false; + }; + const handleMouseMove = (event) => { + const deltaLeft = event.clientX - dragState.value.startMouseLeft; + const proxyLeft = dragState.value.startLeft + deltaLeft; + resizeProxy.style.left = `${Math.max(minLeft, proxyLeft)}px`; + }; + const handleMouseUp = () => { + if (dragging.value) { + const { startColumnLeft, startLeft } = dragState.value; + column.width = column.realWidth = Number.parseInt(resizeProxy.style.left, 10) - startColumnLeft; + table?.emit("header-dragend", column.width, startLeft - startColumnLeft, column, event); + requestAnimationFrame(() => { + props.store.scheduleLayout(false, true); + }); + document.body.style.cursor = ""; + dragging.value = false; + draggingColumn.value = null; + dragState.value = void 0; + emit("set-drag-visible", false); + } + document.removeEventListener("mousemove", handleMouseMove); + document.removeEventListener("mouseup", handleMouseUp); + document.onselectstart = null; + document.ondragstart = null; + setTimeout(() => { + removeClass(columnEl, "noclick"); + }, 0); + }; + document.addEventListener("mousemove", handleMouseMove); + document.addEventListener("mouseup", handleMouseUp); + } + }; + const handleMouseMove = (event, column) => { + if (!props.border || column.children && column.children.length > 0) return; + const el = event.target; + const target = isElement$1(el) ? el.closest("th") : null; + if (!target) return; + const isSortable = hasClass(target, "is-sortable"); + if (isSortable) { + const cursor = dragging.value ? "col-resize" : ""; + target.style.cursor = cursor; + const caret = target.querySelector(".caret-wrapper"); + if (caret) caret.style.cursor = cursor; + } + if (!column.resizable || dragging.value) { + draggingColumn.value = null; + return; + } + const rect = target.getBoundingClientRect(); + const isLastTh = target.parentNode?.lastElementChild === target; + const allowDrag = props.allowDragLastColumn || !isLastTh; + const isResizeHandleActive = rect.width > 12 && rect.right - event.clientX < 8 && allowDrag; + const cursor = isResizeHandleActive ? "col-resize" : ""; + document.body.style.cursor = cursor; + draggingColumn.value = isResizeHandleActive ? column : null; + if (isSortable) target.style.cursor = cursor; + }; + const handleMouseOut = () => { + if (!isClient || dragging.value) return; + document.body.style.cursor = ""; + }; + const toggleOrder = ({ order, sortOrders }) => { + if (order === "") return sortOrders[0]; + const index = sortOrders.indexOf(order || null); + return sortOrders[index > sortOrders.length - 2 ? 0 : index + 1]; + }; + const handleSortClick = (event, column, givenOrder) => { + event.stopPropagation(); + const order = column.order === givenOrder ? null : givenOrder || toggleOrder(column); + const target = event.target?.closest("th"); + if (target) { + if (hasClass(target, "noclick")) { + removeClass(target, "noclick"); + return; + } + } + if (!column.sortable) return; + const clickTarget = event.currentTarget; + if (["ascending", "descending"].some((str) => hasClass(clickTarget, str) && !column.sortOrders.includes(str))) return; + const states = props.store.states; + let sortProp = states.sortProp.value; + let sortOrder; + const sortingColumn = states.sortingColumn.value; + if (sortingColumn !== column || sortingColumn === column && isNull(sortingColumn.order)) { + if (sortingColumn) sortingColumn.order = null; + states.sortingColumn.value = column; + sortProp = column.property; + } + if (!order) sortOrder = column.order = null; + else sortOrder = column.order = order; + states.sortProp.value = sortProp; + states.sortOrder.value = sortOrder; + parent?.store.commit("changeSortCondition"); + }; + return { + handleHeaderClick, + handleHeaderContextMenu, + handleMouseDown, + handleMouseMove, + handleMouseOut, + handleSortClick, + handleFilterClick + }; + } + +//#endregion +//#region ../../packages/components/table/src/table-header/style.helper.ts + function useStyle$2(props) { + const parent = (0, vue.inject)(TABLE_INJECTION_KEY); + const ns = useNamespace("table"); + const getHeaderRowStyle = (rowIndex) => { + const headerRowStyle = parent?.props.headerRowStyle; + if (isFunction$1(headerRowStyle)) return headerRowStyle.call(null, { rowIndex }); + return headerRowStyle; + }; + const getHeaderRowClass = (rowIndex) => { + const classes = []; + const headerRowClassName = parent?.props.headerRowClassName; + if (isString(headerRowClassName)) classes.push(headerRowClassName); + else if (isFunction$1(headerRowClassName)) classes.push(headerRowClassName.call(null, { rowIndex })); + return classes.join(" "); + }; + const getHeaderCellStyle = (rowIndex, columnIndex, row, column) => { + let headerCellStyles = parent?.props.headerCellStyle ?? {}; + if (isFunction$1(headerCellStyles)) headerCellStyles = headerCellStyles.call(null, { + rowIndex, + columnIndex, + row, + column + }); + const fixedStyle = getFixedColumnOffset(columnIndex, column.fixed, props.store, row); + ensurePosition(fixedStyle, "left"); + ensurePosition(fixedStyle, "right"); + return Object.assign({}, headerCellStyles, fixedStyle); + }; + const getHeaderCellClass = (rowIndex, columnIndex, row, column) => { + const fixedClasses = getFixedColumnsClass(ns.b(), columnIndex, column.fixed, props.store, row); + const classes = [ + column.id, + column.order, + column.headerAlign, + column.className, + column.labelClassName, + ...fixedClasses + ]; + if (!column.children) classes.push("is-leaf"); + if (column.sortable) classes.push("is-sortable"); + const headerCellClassName = parent?.props.headerCellClassName; + if (isString(headerCellClassName)) classes.push(headerCellClassName); + else if (isFunction$1(headerCellClassName)) classes.push(headerCellClassName.call(null, { + rowIndex, + columnIndex, + row, + column + })); + classes.push(ns.e("cell")); + return classes.filter((className) => Boolean(className)).join(" "); + }; + return { + getHeaderRowStyle, + getHeaderRowClass, + getHeaderCellStyle, + getHeaderCellClass + }; + } + +//#endregion +//#region ../../packages/components/table/src/table-header/utils-helper.ts + const getAllColumns = (columns) => { + const result = []; + columns.forEach((column) => { + if (column.children) { + result.push(column); + result.push.apply(result, getAllColumns(column.children)); + } else result.push(column); + }); + return result; + }; + const convertToRows = (originColumns) => { + let maxLevel = 1; + const traverse = (column, parent) => { + if (parent) { + column.level = parent.level + 1; + if (maxLevel < column.level) maxLevel = column.level; + } + if (column.children) { + let colSpan = 0; + column.children.forEach((subColumn) => { + traverse(subColumn, column); + colSpan += subColumn.colSpan; + }); + column.colSpan = colSpan; + } else column.colSpan = 1; + }; + originColumns.forEach((column) => { + column.level = 1; + traverse(column, void 0); + }); + const rows = []; + for (let i = 0; i < maxLevel; i++) rows.push([]); + getAllColumns(originColumns).forEach((column) => { + if (!column.children) column.rowSpan = maxLevel - column.level + 1; + else { + column.rowSpan = 1; + column.children.forEach((col) => col.isSubColumn = true); + } + rows[column.level - 1].push(column); + }); + return rows; + }; + function useUtils$1(props) { + const parent = (0, vue.inject)(TABLE_INJECTION_KEY); + const columnRows = (0, vue.computed)(() => { + return convertToRows(props.store.states.originColumns.value); + }); + const isGroup = (0, vue.computed)(() => { + const result = columnRows.value.length > 1; + if (result && parent) parent.state.isGroup.value = true; + return result; + }); + const toggleAllSelection = (event) => { + event.stopPropagation(); + parent?.store.commit("toggleAllSelection"); + }; + return { + isGroup, + toggleAllSelection, + columnRows + }; + } + +//#endregion +//#region ../../packages/components/table/src/table-header/index.ts + var table_header_default = (0, vue.defineComponent)({ + name: "ElTableHeader", + components: { ElCheckbox }, + props: { + fixed: { + type: String, + default: "" + }, + store: { + required: true, + type: Object + }, + border: Boolean, + defaultSort: { + type: Object, + default: () => { + return { + prop: "", + order: "" + }; + } + }, + appendFilterPanelTo: { type: String }, + allowDragLastColumn: { type: Boolean } + }, + setup(props, { emit }) { + const instance = (0, vue.getCurrentInstance)(); + const parent = (0, vue.inject)(TABLE_INJECTION_KEY); + const ns = useNamespace("table"); + const filterPanels = (0, vue.ref)({}); + const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent); + const isTableLayoutAuto = parent?.props.tableLayout === "auto"; + const saveIndexSelection = (0, vue.reactive)(/* @__PURE__ */ new Map()); + const theadRef = (0, vue.ref)(); + let delayId; + const updateFixedColumnStyle = () => { + delayId = setTimeout(() => { + if (saveIndexSelection.size > 0) { + saveIndexSelection.forEach((column, key) => { + const el = theadRef.value.querySelector(`.${key.replace(/\s/g, ".")}`); + if (el) column.width = el.getBoundingClientRect().width || column.width; + }); + saveIndexSelection.clear(); + } + }); + }; + (0, vue.watch)(saveIndexSelection, updateFixedColumnStyle); + (0, vue.onBeforeUnmount)(() => { + if (delayId) { + clearTimeout(delayId); + delayId = void 0; + } + }); + (0, vue.onMounted)(async () => { + await (0, vue.nextTick)(); + await (0, vue.nextTick)(); + const { prop, order } = props.defaultSort; + parent?.store.commit("sort", { + prop, + order, + init: true + }); + updateFixedColumnStyle(); + }); + const { handleHeaderClick, handleHeaderContextMenu, handleMouseDown, handleMouseMove, handleMouseOut, handleSortClick, handleFilterClick } = useEvent(props, emit); + const { getHeaderRowStyle, getHeaderRowClass, getHeaderCellStyle, getHeaderCellClass } = useStyle$2(props); + const { isGroup, toggleAllSelection, columnRows } = useUtils$1(props); + const { t } = useLocale(); + instance.state = { + onColumnsChange, + onScrollableChange + }; + instance.filterPanels = filterPanels; + return { + ns, + t, + filterPanels, + onColumnsChange, + onScrollableChange, + columnRows, + getHeaderRowClass, + getHeaderRowStyle, + getHeaderCellClass, + getHeaderCellStyle, + handleHeaderClick, + handleHeaderContextMenu, + handleMouseDown, + handleMouseMove, + handleMouseOut, + handleSortClick, + handleFilterClick, + isGroup, + toggleAllSelection, + saveIndexSelection, + isTableLayoutAuto, + theadRef, + updateFixedColumnStyle + }; + }, + render() { + const { ns, t, isGroup, columnRows, getHeaderCellStyle, getHeaderCellClass, getHeaderRowClass, getHeaderRowStyle, handleHeaderClick, handleHeaderContextMenu, handleMouseDown, handleMouseMove, handleSortClick, handleMouseOut, store, $parent, saveIndexSelection, isTableLayoutAuto } = this; + let rowSpan = 1; + return (0, vue.h)("thead", { + ref: "theadRef", + class: ns.is("group", isGroup) + }, columnRows.map((subColumns, rowIndex) => (0, vue.h)("tr", { + class: getHeaderRowClass(rowIndex), + key: rowIndex, + style: getHeaderRowStyle(rowIndex) + }, subColumns.map((column, cellIndex) => { + if (column.rowSpan > rowSpan) rowSpan = column.rowSpan; + const _class = getHeaderCellClass(rowIndex, cellIndex, subColumns, column); + if (isTableLayoutAuto && column.fixed) saveIndexSelection.set(_class, column); + return (0, vue.h)("th", { + class: _class, + colspan: column.colSpan, + key: `${column.id}-thead`, + rowspan: column.rowSpan, + scope: column.colSpan > 1 ? "colgroup" : "col", + ariaSort: column.sortable ? column.order : void 0, + style: getHeaderCellStyle(rowIndex, cellIndex, subColumns, column), + onClick: ($event) => { + if ($event.currentTarget?.classList.contains("noclick")) return; + handleHeaderClick($event, column); + }, + onContextmenu: ($event) => handleHeaderContextMenu($event, column), + onMousedown: ($event) => handleMouseDown($event, column), + onMousemove: ($event) => handleMouseMove($event, column), + onMouseout: handleMouseOut + }, [(0, vue.h)("div", { class: ["cell", column.filteredValue && column.filteredValue.length > 0 ? "highlight" : ""] }, [ + column.renderHeader ? column.renderHeader({ + column, + $index: cellIndex, + store, + _self: $parent + }) : column.label, + column.sortable && (0, vue.h)("button", { + type: "button", + class: "caret-wrapper", + "aria-label": t("el.table.sortLabel", { column: column.label || "" }), + onClick: ($event) => handleSortClick($event, column) + }, [(0, vue.h)("i", { + onClick: ($event) => handleSortClick($event, column, "ascending"), + class: "sort-caret ascending" + }), (0, vue.h)("i", { + onClick: ($event) => handleSortClick($event, column, "descending"), + class: "sort-caret descending" + })]), + column.filterable && (0, vue.h)(filter_panel_default, { + store, + placement: column.filterPlacement || "bottom-start", + appendTo: $parent?.appendFilterPanelTo, + column, + upDataColumn: (key, value) => { + column[key] = value; + } + }, { "filter-icon": () => column.renderFilterIcon ? column.renderFilterIcon({ filterOpened: column.filterOpened }) : null }) + ])]); + })))); + } + }); + +//#endregion +//#region ../../packages/components/table/src/table-body/events-helper.ts + function useEvents(props) { + const parent = (0, vue.inject)(TABLE_INJECTION_KEY); + const tooltipContent = (0, vue.ref)(""); + const tooltipTrigger = (0, vue.ref)((0, vue.h)("div")); + const handleEvent = (event, row, name) => { + const table = parent; + const cell = getCell(event); + let column = null; + const namespace = table?.vnode.el?.dataset.prefix; + if (cell) { + column = getColumnByCell({ columns: props.store?.states.columns.value ?? [] }, cell, namespace); + if (column) table?.emit(`cell-${name}`, row, column, cell, event); + } + table?.emit(`row-${name}`, row, column, event); + }; + const handleDoubleClick = (event, row) => { + handleEvent(event, row, "dblclick"); + }; + const handleClick = (event, row) => { + props.store?.commit("setCurrentRow", row); + handleEvent(event, row, "click"); + }; + const handleContextMenu = (event, row) => { + handleEvent(event, row, "contextmenu"); + }; + const handleMouseEnter = debounce((index) => { + props.store?.commit("setHoverRow", index); + }, 30); + const handleMouseLeave = debounce(() => { + props.store?.commit("setHoverRow", null); + }, 30); + const getPadding = (el) => { + const style = window.getComputedStyle(el, null); + return { + left: Number.parseInt(style.paddingLeft, 10) || 0, + right: Number.parseInt(style.paddingRight, 10) || 0, + top: Number.parseInt(style.paddingTop, 10) || 0, + bottom: Number.parseInt(style.paddingBottom, 10) || 0 + }; + }; + const toggleRowClassByCell = (rowSpan, event, toggle) => { + let node = (event?.target)?.parentNode; + while (rowSpan > 1) { + node = node?.nextSibling; + if (!node || node.nodeName !== "TR") break; + toggle(node, "hover-row hover-fixed-row"); + rowSpan--; + } + }; + const handleCellMouseEnter = (event, row, tooltipOptions) => { + if (!parent) return; + const table = parent; + const cell = getCell(event); + const namespace = table?.vnode.el?.dataset.prefix; + let column = null; + if (cell) { + column = getColumnByCell({ columns: props.store?.states.columns.value ?? [] }, cell, namespace); + if (!column) return; + if (cell.rowSpan > 1) toggleRowClassByCell(cell.rowSpan, event, addClass); + const hoverState = table.hoverState = { + cell, + column, + row + }; + table?.emit("cell-mouse-enter", hoverState.row, hoverState.column, hoverState.cell, event); + } + if (!tooltipOptions) { + if (removePopper?.trigger === cell) removePopper?.(); + return; + } + const cellChild = event.target.querySelector(".cell"); + if (!(hasClass(cellChild, `${namespace}-tooltip`) && cellChild.childNodes.length && cellChild.textContent?.trim())) return; + const range = document.createRange(); + range.setStart(cellChild, 0); + range.setEnd(cellChild, cellChild.childNodes.length); + /** detail: https://github.com/element-plus/element-plus/issues/10790 + * What went wrong? + * UI > Browser > Zoom, In Blink/WebKit, getBoundingClientRect() sometimes returns inexact values, probably due to lost precision during internal calculations. In the example above: + * - Expected: 188 + * - Actual: 188.00000762939453 + */ + const { width: rangeWidth, height: rangeHeight } = range.getBoundingClientRect(); + const { width: cellChildWidth, height: cellChildHeight } = cellChild.getBoundingClientRect(); + const { top, left, right, bottom } = getPadding(cellChild); + const horizontalPadding = left + right; + const verticalPadding = top + bottom; + if (isGreaterThan(rangeWidth + horizontalPadding, cellChildWidth) || isGreaterThan(rangeHeight + verticalPadding, cellChildHeight) || isGreaterThan(cellChild.scrollWidth, cellChildWidth)) createTablePopper(tooltipOptions, (cell?.innerText || cell?.textContent) ?? "", row, column, cell, table); + else if (removePopper?.trigger === cell) removePopper?.(); + }; + const handleCellMouseLeave = (event) => { + const cell = getCell(event); + if (!cell) return; + if (cell.rowSpan > 1) toggleRowClassByCell(cell.rowSpan, event, removeClass); + const oldHoverState = parent?.hoverState; + parent?.emit("cell-mouse-leave", oldHoverState?.row, oldHoverState?.column, oldHoverState?.cell, event); + }; + return { + handleDoubleClick, + handleClick, + handleContextMenu, + handleMouseEnter, + handleMouseLeave, + handleCellMouseEnter, + handleCellMouseLeave, + tooltipContent, + tooltipTrigger + }; + } + +//#endregion +//#region ../../packages/components/table/src/table-body/styles-helper.ts + function useStyles$1(props) { + const parent = (0, vue.inject)(TABLE_INJECTION_KEY); + const ns = useNamespace("table"); + const getRowStyle = (row, rowIndex) => { + const rowStyle = parent?.props.rowStyle; + if (isFunction$1(rowStyle)) return rowStyle.call(null, { + row, + rowIndex + }); + return rowStyle || null; + }; + const getRowClass = (row, rowIndex, displayIndex) => { + const classes = [ns.e("row")]; + if (parent?.props.highlightCurrentRow && row === props.store?.states.currentRow.value) classes.push("current-row"); + if (props.stripe && displayIndex % 2 === 1) classes.push(ns.em("row", "striped")); + const rowClassName = parent?.props.rowClassName; + if (isString(rowClassName)) classes.push(rowClassName); + else if (isFunction$1(rowClassName)) classes.push(rowClassName.call(null, { + row, + rowIndex + })); + return classes; + }; + const getCellStyle = (rowIndex, columnIndex, row, column) => { + const cellStyle = parent?.props.cellStyle; + let cellStyles = cellStyle ?? {}; + if (isFunction$1(cellStyle)) cellStyles = cellStyle.call(null, { + rowIndex, + columnIndex, + row, + column + }); + const fixedStyle = getFixedColumnOffset(columnIndex, props?.fixed, props.store); + ensurePosition(fixedStyle, "left"); + ensurePosition(fixedStyle, "right"); + return Object.assign({}, cellStyles, fixedStyle); + }; + const getCellClass = (rowIndex, columnIndex, row, column, offset) => { + const fixedClasses = getFixedColumnsClass(ns.b(), columnIndex, props?.fixed, props.store, void 0, offset); + const classes = [ + column.id, + column.align, + column.className, + ...fixedClasses + ]; + const cellClassName = parent?.props.cellClassName; + if (isString(cellClassName)) classes.push(cellClassName); + else if (isFunction$1(cellClassName)) classes.push(cellClassName.call(null, { + rowIndex, + columnIndex, + row, + column + })); + classes.push(ns.e("cell")); + return classes.filter((className) => Boolean(className)).join(" "); + }; + const getSpan = (row, column, rowIndex, columnIndex) => { + let rowspan = 1; + let colspan = 1; + const fn = parent?.props.spanMethod; + if (isFunction$1(fn)) { + const result = fn({ + row, + column, + rowIndex, + columnIndex + }); + if (isArray$1(result)) { + rowspan = result[0]; + colspan = result[1]; + } else if (isObject$1(result)) { + rowspan = result.rowspan; + colspan = result.colspan; + } + } + return { + rowspan, + colspan + }; + }; + const getColspanRealWidth = (columns, colspan, index) => { + if (colspan < 1) return columns[index].realWidth; + const widthArr = columns.map(({ realWidth, width }) => realWidth || width).slice(index, index + colspan); + return Number(widthArr.reduce((acc, width) => Number(acc) + Number(width), -1)); + }; + return { + getRowStyle, + getRowClass, + getCellStyle, + getCellClass, + getSpan, + getColspanRealWidth + }; + } + +//#endregion +//#region ../../packages/components/table/src/table-body/td-wrapper.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$16 = ["colspan", "rowspan"]; + var td_wrapper_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "TableTdWrapper", + __name: "td-wrapper", + props: { + colspan: { + type: Number, + default: 1 + }, + rowspan: { + type: Number, + default: 1 + } + }, + setup(__props) { + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("td", { + colspan: __props.colspan, + rowspan: __props.rowspan + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 8, _hoisted_1$16); + }; + } + }); + +//#endregion +//#region ../../packages/components/table/src/table-body/td-wrapper.vue + var td_wrapper_default = td_wrapper_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/table/src/table-body/render-helper.ts + function useRender$1(props) { + const parent = (0, vue.inject)(TABLE_INJECTION_KEY); + const ns = useNamespace("table"); + const { handleDoubleClick, handleClick, handleContextMenu, handleMouseEnter, handleMouseLeave, handleCellMouseEnter, handleCellMouseLeave, tooltipContent, tooltipTrigger } = useEvents(props); + const { getRowStyle, getRowClass, getCellStyle, getCellClass, getSpan, getColspanRealWidth } = useStyles$1(props); + let displayIndex = -1; + const firstDefaultColumnIndex = (0, vue.computed)(() => { + return props.store?.states.columns.value.findIndex(({ type }) => type === "default"); + }); + const getKeyOfRow = (row, index) => { + const rowKey = (parent?.props)?.rowKey; + if (rowKey) return getRowIdentity(row, rowKey); + return index; + }; + const rowRender = (row, $index, treeRowData, expanded = false) => { + const { tooltipEffect, tooltipOptions, store } = props; + const { indent, columns } = store.states; + const rowClasses = []; + let display = true; + if (treeRowData) { + rowClasses.push(ns.em("row", `level-${treeRowData.level}`)); + display = !!treeRowData.display; + } + if ($index === 0) displayIndex = -1; + if (props.stripe && display) displayIndex++; + rowClasses.push(...getRowClass(row, $index, displayIndex)); + return (0, vue.h)("tr", { + style: [display ? null : { display: "none" }, getRowStyle(row, $index)], + class: rowClasses, + key: getKeyOfRow(row, $index), + onDblclick: ($event) => handleDoubleClick($event, row), + onClick: ($event) => handleClick($event, row), + onContextmenu: ($event) => handleContextMenu($event, row), + onMouseenter: () => handleMouseEnter($index), + onMouseleave: handleMouseLeave + }, columns.value.map((column, cellIndex) => { + const { rowspan, colspan } = getSpan(row, column, $index, cellIndex); + if (!rowspan || !colspan) return null; + const columnData = Object.assign({}, column); + columnData.realWidth = getColspanRealWidth(columns.value, colspan, cellIndex); + const data = { + store, + _self: props.context || parent, + column: columnData, + row, + $index, + cellIndex, + expanded + }; + if (cellIndex === firstDefaultColumnIndex.value && treeRowData) { + data.treeNode = { + indent: treeRowData.level && treeRowData.level * indent.value, + level: treeRowData.level + }; + if (isBoolean(treeRowData.expanded)) { + data.treeNode.expanded = treeRowData.expanded; + if ("loading" in treeRowData) data.treeNode.loading = treeRowData.loading; + if ("noLazyChildren" in treeRowData) data.treeNode.noLazyChildren = treeRowData.noLazyChildren; + } + } + const baseKey = `${getKeyOfRow(row, $index)},${cellIndex}`; + const patchKey = columnData.columnKey || columnData.rawColumnKey || ""; + const mergedTooltipOptions = column.showOverflowTooltip && merge({ effect: tooltipEffect }, tooltipOptions, column.showOverflowTooltip); + return (0, vue.h)(td_wrapper_default, { + style: getCellStyle($index, cellIndex, row, column), + class: getCellClass($index, cellIndex, row, column, colspan - 1), + key: `${patchKey}${baseKey}`, + rowspan, + colspan, + onMouseenter: ($event) => handleCellMouseEnter($event, row, mergedTooltipOptions), + onMouseleave: handleCellMouseLeave + }, { default: () => cellChildren(cellIndex, column, data) }); + })); + }; + const cellChildren = (_cellIndex, column, data) => { + return column.renderCell(data); + }; + const wrappedRowRender = (row, $index) => { + const store = props.store; + const { isRowExpanded, assertRowKey } = store; + const { treeData, lazyTreeNodeMap, childrenColumnName, rowKey } = store.states; + const columns = store.states.columns.value; + if (columns.some(({ type }) => type === "expand")) { + const expanded = isRowExpanded(row); + const tr = rowRender(row, $index, void 0, expanded); + const renderExpanded = parent?.renderExpanded; + if (!renderExpanded) { + console.error("[Element Error]renderExpanded is required."); + return tr; + } + const rows = [[tr]]; + if (parent.props.preserveExpandedContent || expanded) rows[0].push((0, vue.h)("tr", { + key: `expanded-row__${tr.key}`, + style: { display: expanded ? "" : "none" } + }, [(0, vue.h)("td", { + colspan: columns.length, + class: `${ns.e("cell")} ${ns.e("expanded-cell")}` + }, [renderExpanded({ + row, + $index, + store, + expanded + })])])); + return rows; + } else if (Object.keys(treeData.value).length) { + assertRowKey(); + const key = getRowIdentity(row, rowKey.value); + let cur = treeData.value[key]; + let treeRowData = null; + if (cur) { + treeRowData = { + expanded: cur.expanded, + level: cur.level, + display: true, + noLazyChildren: void 0, + loading: void 0 + }; + if (isBoolean(cur.lazy)) { + if (treeRowData && isBoolean(cur.loaded) && cur.loaded) treeRowData.noLazyChildren = !(cur.children && cur.children.length); + treeRowData.loading = cur.loading; + } + } + const tmp = [rowRender(row, $index, treeRowData ?? void 0)]; + if (cur) { + let i = 0; + const traverse = (children, parent) => { + if (!(children && children.length && parent)) return; + children.forEach((node) => { + const innerTreeRowData = { + display: parent.display && parent.expanded, + level: parent.level + 1, + expanded: false, + noLazyChildren: false, + loading: false + }; + const childKey = getRowIdentity(node, rowKey.value); + if (isPropAbsent(childKey)) throw new Error("For nested data item, row-key is required."); + cur = { ...treeData.value[childKey] }; + if (cur) { + innerTreeRowData.expanded = cur.expanded; + cur.level = cur.level || innerTreeRowData.level; + cur.display = !!(cur.expanded && innerTreeRowData.display); + if (isBoolean(cur.lazy)) { + if (isBoolean(cur.loaded) && cur.loaded) innerTreeRowData.noLazyChildren = !(cur.children && cur.children.length); + innerTreeRowData.loading = cur.loading; + } + } + i++; + tmp.push(rowRender(node, $index + i, innerTreeRowData)); + if (cur) traverse(lazyTreeNodeMap.value[childKey] || node[childrenColumnName.value], cur); + }); + }; + cur.display = true; + traverse(lazyTreeNodeMap.value[key] || row[childrenColumnName.value], cur); + } + return tmp; + } else return rowRender(row, $index, void 0); + }; + return { + wrappedRowRender, + tooltipContent, + tooltipTrigger + }; + } + +//#endregion +//#region ../../packages/components/table/src/table-body/defaults.ts + const defaultProps$1 = { + store: { + required: true, + type: Object + }, + stripe: Boolean, + tooltipEffect: String, + tooltipOptions: { type: Object }, + context: { + default: () => ({}), + type: Object + }, + rowClassName: [String, Function], + rowStyle: [Object, Function], + fixed: { + type: String, + default: "" + }, + highlight: Boolean + }; + +//#endregion +//#region ../../packages/components/table/src/table-body/index.ts + var table_body_default = (0, vue.defineComponent)({ + name: "ElTableBody", + props: defaultProps$1, + setup(props) { + const instance = (0, vue.getCurrentInstance)(); + const parent = (0, vue.inject)(TABLE_INJECTION_KEY); + const ns = useNamespace("table"); + const { wrappedRowRender, tooltipContent, tooltipTrigger } = useRender$1(props); + const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent); + const hoveredCellList = []; + (0, vue.watch)(props.store?.states.hoverRow, (newVal, oldVal) => { + const el = instance?.vnode.el; + const rows = Array.from(el?.children || []).filter((e) => e?.classList.contains(`${ns.e("row")}`)); + let rowNum = newVal; + const childNodes = rows[rowNum]?.childNodes; + if (childNodes?.length) { + let control = 0; + Array.from(childNodes).reduce((acc, item, index) => { + if (childNodes[index]?.colSpan > 1) control = childNodes[index]?.colSpan; + if (item.nodeName !== "TD" && control === 0) acc.push(index); + control > 0 && control--; + return acc; + }, []).forEach((rowIndex) => { + rowNum = newVal; + while (rowNum > 0) { + const preChildNodes = rows[rowNum - 1]?.childNodes; + if (preChildNodes[rowIndex] && preChildNodes[rowIndex].nodeName === "TD" && preChildNodes[rowIndex].rowSpan > 1) { + addClass(preChildNodes[rowIndex], "hover-cell"); + hoveredCellList.push(preChildNodes[rowIndex]); + break; + } + rowNum--; + } + }); + } else { + hoveredCellList.forEach((item) => removeClass(item, "hover-cell")); + hoveredCellList.length = 0; + } + if (!props.store?.states.isComplex.value || !isClient) return; + rAF(() => { + const oldRow = rows[oldVal]; + const newRow = rows[newVal]; + if (oldRow && !oldRow.classList.contains("hover-fixed-row")) removeClass(oldRow, "hover-row"); + if (newRow) addClass(newRow, "hover-row"); + }); + }); + (0, vue.onUnmounted)(() => { + removePopper?.(); + }); + return { + ns, + onColumnsChange, + onScrollableChange, + wrappedRowRender, + tooltipContent, + tooltipTrigger + }; + }, + render() { + const { wrappedRowRender, store } = this; + return (0, vue.h)("tbody", { tabIndex: -1 }, [(store?.states.data.value || []).reduce((acc, row) => { + return acc.concat(wrappedRowRender(row, acc.length)); + }, [])]); + } + }); + +//#endregion +//#region ../../packages/components/table/src/table-footer/mapState-helper.ts + function useMapState() { + const store = (0, vue.inject)(TABLE_INJECTION_KEY)?.store; + return { + leftFixedLeafCount: (0, vue.computed)(() => { + return store?.states.fixedLeafColumnsLength.value ?? 0; + }), + rightFixedLeafCount: (0, vue.computed)(() => { + return store?.states.rightFixedColumns.value.length ?? 0; + }), + columnsCount: (0, vue.computed)(() => { + return store?.states.columns.value.length ?? 0; + }), + leftFixedCount: (0, vue.computed)(() => { + return store?.states.fixedColumns.value.length ?? 0; + }), + rightFixedCount: (0, vue.computed)(() => { + return store?.states.rightFixedColumns.value.length ?? 0; + }), + columns: (0, vue.computed)(() => store?.states.columns.value ?? []) + }; + } + +//#endregion +//#region ../../packages/components/table/src/table-footer/style-helper.ts + function useStyle$1(props) { + const { columns } = useMapState(); + const ns = useNamespace("table"); + const getCellClasses = (columns, cellIndex) => { + const column = columns[cellIndex]; + const classes = [ + ns.e("cell"), + column.id, + column.align, + column.labelClassName, + ...getFixedColumnsClass(ns.b(), cellIndex, column.fixed, props.store) + ]; + if (column.className) classes.push(column.className); + if (!column.children) classes.push(ns.is("leaf")); + return classes; + }; + const getCellStyles = (column, cellIndex) => { + const fixedStyle = getFixedColumnOffset(cellIndex, column.fixed, props.store); + ensurePosition(fixedStyle, "left"); + ensurePosition(fixedStyle, "right"); + return fixedStyle; + }; + return { + getCellClasses, + getCellStyles, + columns + }; + } + +//#endregion +//#region ../../packages/components/table/src/table-footer/index.ts + var table_footer_default = (0, vue.defineComponent)({ + name: "ElTableFooter", + props: { + fixed: { + type: String, + default: "" + }, + store: { + required: true, + type: Object + }, + summaryMethod: Function, + sumText: String, + border: Boolean, + defaultSort: { + type: Object, + default: () => { + return { + prop: "", + order: "" + }; + } + } + }, + setup(props) { + const parent = (0, vue.inject)(TABLE_INJECTION_KEY); + const ns = useNamespace("table"); + const { getCellClasses, getCellStyles, columns } = useStyle$1(props); + const { onScrollableChange, onColumnsChange } = useLayoutObserver(parent); + return { + ns, + onScrollableChange, + onColumnsChange, + getCellClasses, + getCellStyles, + columns + }; + }, + render() { + const { columns, getCellStyles, getCellClasses, summaryMethod, sumText } = this; + const data = this.store.states.data.value; + let sums = []; + if (summaryMethod) sums = summaryMethod({ + columns, + data + }); + else columns.forEach((column, index) => { + if (index === 0) { + sums[index] = sumText; + return; + } + const values = data.map((item) => Number(item[column.property])); + const precisions = []; + let notNumber = true; + values.forEach((value) => { + if (!Number.isNaN(+value)) { + notNumber = false; + const decimal = `${value}`.split(".")[1]; + precisions.push(decimal ? decimal.length : 0); + } + }); + const precision = Math.max.apply(null, precisions); + if (!notNumber) sums[index] = values.reduce((prev, curr) => { + const value = Number(curr); + if (!Number.isNaN(+value)) return Number.parseFloat((prev + curr).toFixed(Math.min(precision, 20))); + else return prev; + }, 0); + else sums[index] = ""; + }); + return (0, vue.h)((0, vue.h)("tfoot", [(0, vue.h)("tr", {}, [...columns.map((column, cellIndex) => (0, vue.h)("td", { + key: cellIndex, + colspan: column.colSpan, + rowspan: column.rowSpan, + class: getCellClasses(columns, cellIndex), + style: getCellStyles(column, cellIndex) + }, [(0, vue.h)("div", { class: ["cell", column.labelClassName] }, [sums[cellIndex]])]))])])); + } + }); + +//#endregion +//#region ../../packages/components/table/src/table/utils-helper.ts + function useUtils(store) { + const setCurrentRow = (row) => { + store.commit("setCurrentRow", row); + }; + const getSelectionRows = () => { + return store.getSelectionRows(); + }; + const toggleRowSelection = (row, selected, ignoreSelectable = true) => { + store.toggleRowSelection(row, selected, false, ignoreSelectable); + store.updateAllSelected(); + }; + const clearSelection = () => { + store.clearSelection(); + }; + const clearFilter = (columnKeys) => { + store.clearFilter(columnKeys); + }; + const toggleAllSelection = () => { + store.commit("toggleAllSelection"); + }; + const toggleRowExpansion = (row, expanded) => { + store.toggleRowExpansionAdapter(row, expanded); + }; + const clearSort = () => { + store.clearSort(); + }; + const sort = (prop, order) => { + store.commit("sort", { + prop, + order + }); + }; + const updateKeyChildren = (key, data) => { + store.updateKeyChildren(key, data); + }; + return { + setCurrentRow, + getSelectionRows, + toggleRowSelection, + clearSelection, + clearFilter, + toggleAllSelection, + toggleRowExpansion, + clearSort, + sort, + updateKeyChildren + }; + } + +//#endregion +//#region ../../packages/components/table/src/table/style-helper.ts + function useStyle(props, layout, store, table) { + const isHidden = (0, vue.ref)(false); + const renderExpanded = (0, vue.ref)(null); + const resizeProxyVisible = (0, vue.ref)(false); + const setDragVisible = (visible) => { + resizeProxyVisible.value = visible; + }; + const resizeState = (0, vue.ref)({ + width: null, + height: null, + headerHeight: null + }); + const isGroup = (0, vue.ref)(false); + const scrollbarViewStyle = { + display: "inline-block", + verticalAlign: "middle" + }; + const tableWidth = (0, vue.ref)(); + const tableScrollHeight = (0, vue.ref)(0); + const bodyScrollHeight = (0, vue.ref)(0); + const headerScrollHeight = (0, vue.ref)(0); + const footerScrollHeight = (0, vue.ref)(0); + const appendScrollHeight = (0, vue.ref)(0); + (0, vue.watch)(() => props.height, (value) => { + layout.setHeight(value ?? null); + }, { immediate: true }); + (0, vue.watch)(() => props.maxHeight, (value) => { + layout.setMaxHeight(value ?? null); + }, { immediate: true }); + (0, vue.watch)(() => [props.currentRowKey, store.states.rowKey], ([currentRowKey, rowKey]) => { + if (!(0, vue.unref)(rowKey) || !(0, vue.unref)(currentRowKey)) return; + store.setCurrentRowKey(`${currentRowKey}`); + }, { immediate: true }); + (0, vue.watch)(() => props.data, (data) => { + table.store.commit("setData", data); + }, { + immediate: true, + deep: true + }); + (0, vue.watchEffect)(() => { + if (props.expandRowKeys) store.setExpandRowKeysAdapter(props.expandRowKeys); + }); + const handleMouseLeave = () => { + table.store.commit("setHoverRow", null); + if (table.hoverState) table.hoverState = null; + }; + const handleHeaderFooterMousewheel = (_event, data) => { + const { pixelX, pixelY } = data; + if (Math.abs(pixelX) >= Math.abs(pixelY)) table.refs.bodyWrapper.scrollLeft += data.pixelX / 5; + }; + const shouldUpdateHeight = (0, vue.computed)(() => { + return props.height || props.maxHeight || store.states.fixedColumns.value.length > 0 || store.states.rightFixedColumns.value.length > 0; + }); + const tableBodyStyles = (0, vue.computed)(() => { + return { width: layout.bodyWidth.value ? `${layout.bodyWidth.value}px` : "" }; + }); + const doLayout = () => { + if (shouldUpdateHeight.value) layout.updateElsHeight(); + layout.updateColumnsWidth(); + if (typeof window === "undefined") return; + requestAnimationFrame(syncPosition); + }; + (0, vue.onMounted)(async () => { + await (0, vue.nextTick)(); + store.updateColumns(); + bindEvents(); + requestAnimationFrame(doLayout); + const el = table.vnode.el; + const tableHeader = table.refs.headerWrapper; + if (props.flexible && el && el.parentElement) el.parentElement.style.minWidth = "0"; + resizeState.value = { + width: tableWidth.value = el.offsetWidth, + height: el.offsetHeight, + headerHeight: props.showHeader && tableHeader ? tableHeader.offsetHeight : null + }; + store.states.columns.value.forEach((column) => { + if (column.filteredValue && column.filteredValue.length) table.store.commit("filterChange", { + column, + values: column.filteredValue, + silent: true + }); + }); + table.$ready = true; + }); + const setScrollClassByEl = (el, className) => { + if (!el) return; + const classList = Array.from(el.classList).filter((item) => !item.startsWith("is-scrolling-")); + classList.push(layout.scrollX.value ? className : "is-scrolling-none"); + el.className = classList.join(" "); + }; + const setScrollClass = (className) => { + const { tableWrapper } = table.refs; + setScrollClassByEl(tableWrapper, className); + }; + const hasScrollClass = (className) => { + const { tableWrapper } = table.refs; + return !!(tableWrapper && tableWrapper.classList.contains(className)); + }; + const syncPosition = function() { + if (!table.refs.scrollBarRef) return; + if (!layout.scrollX.value) { + const scrollingNoneClass = "is-scrolling-none"; + if (!hasScrollClass(scrollingNoneClass)) setScrollClass(scrollingNoneClass); + return; + } + const scrollContainer = table.refs.scrollBarRef.wrapRef; + if (!scrollContainer) return; + const { scrollLeft, offsetWidth, scrollWidth } = scrollContainer; + const { headerWrapper, footerWrapper } = table.refs; + if (headerWrapper) headerWrapper.scrollLeft = scrollLeft; + if (footerWrapper) footerWrapper.scrollLeft = scrollLeft; + if (scrollLeft >= scrollWidth - offsetWidth - 1) setScrollClass("is-scrolling-right"); + else if (scrollLeft === 0) setScrollClass("is-scrolling-left"); + else setScrollClass("is-scrolling-middle"); + }; + const bindEvents = () => { + if (!table.refs.scrollBarRef) return; + if (table.refs.scrollBarRef.wrapRef) useEventListener(table.refs.scrollBarRef.wrapRef, "scroll", syncPosition, { passive: true }); + if (props.fit) useResizeObserver(table.vnode.el, resizeListener); + else useEventListener(window, "resize", resizeListener); + useResizeObserver(table.refs.tableInnerWrapper, () => { + resizeListener(); + table.refs?.scrollBarRef?.update(); + }); + }; + const resizeListener = () => { + const el = table.vnode.el; + if (!table.$ready || !el) return; + let shouldUpdateLayout = false; + const { width: oldWidth, height: oldHeight, headerHeight: oldHeaderHeight } = resizeState.value; + const width = tableWidth.value = el.offsetWidth; + if (oldWidth !== width) shouldUpdateLayout = true; + const height = el.offsetHeight; + if ((props.height || shouldUpdateHeight.value) && oldHeight !== height) shouldUpdateLayout = true; + const tableHeader = props.tableLayout === "fixed" ? table.refs.headerWrapper : table.refs.tableHeaderRef?.$el; + if (props.showHeader && tableHeader?.offsetHeight !== oldHeaderHeight) shouldUpdateLayout = true; + tableScrollHeight.value = table.refs.tableWrapper?.scrollHeight || 0; + headerScrollHeight.value = tableHeader?.scrollHeight || 0; + footerScrollHeight.value = table.refs.footerWrapper?.offsetHeight || 0; + appendScrollHeight.value = table.refs.appendWrapper?.offsetHeight || 0; + bodyScrollHeight.value = tableScrollHeight.value - headerScrollHeight.value - footerScrollHeight.value - appendScrollHeight.value; + if (shouldUpdateLayout) { + resizeState.value = { + width, + height, + headerHeight: props.showHeader && tableHeader?.offsetHeight || 0 + }; + doLayout(); + } + }; + const tableSize = useFormSize(); + const bodyWidth = (0, vue.computed)(() => { + const { bodyWidth: bodyWidth_, scrollY, gutterWidth } = layout; + return bodyWidth_.value ? `${bodyWidth_.value - (scrollY.value ? gutterWidth : 0)}px` : ""; + }); + const tableLayout = (0, vue.computed)(() => { + if (props.maxHeight) return "fixed"; + return props.tableLayout; + }); + return { + isHidden, + renderExpanded, + setDragVisible, + isGroup, + handleMouseLeave, + handleHeaderFooterMousewheel, + tableSize, + emptyBlockStyle: (0, vue.computed)(() => { + if (props.data && props.data.length) return; + let height = "100%"; + if (props.height && bodyScrollHeight.value) height = `${bodyScrollHeight.value}px`; + const width = tableWidth.value; + return { + width: width ? `${width}px` : "", + height + }; + }), + resizeProxyVisible, + bodyWidth, + resizeState, + doLayout, + tableBodyStyles, + tableLayout, + scrollbarViewStyle, + scrollbarStyle: (0, vue.computed)(() => { + if (props.height) return { height: "100%" }; + if (props.maxHeight) if (!Number.isNaN(Number(props.maxHeight))) return { maxHeight: `${+props.maxHeight - headerScrollHeight.value - footerScrollHeight.value}px` }; + else return { maxHeight: `calc(${props.maxHeight} - ${headerScrollHeight.value + footerScrollHeight.value}px)` }; + return {}; + }) + }; + } + +//#endregion +//#region ../../packages/components/table/src/table/key-render-helper.ts + function useKeyRender(table) { + let observer; + const initWatchDom = () => { + const columnsWrapper = table.vnode.el.querySelector(".hidden-columns"); + const config = { + childList: true, + subtree: true + }; + const updateOrderFns = table.store.states.updateOrderFns; + observer = new MutationObserver(() => { + updateOrderFns.forEach((fn) => fn()); + }); + observer.observe(columnsWrapper, config); + }; + (0, vue.onMounted)(() => { + initWatchDom(); + }); + (0, vue.onUnmounted)(() => { + observer?.disconnect(); + }); + } + +//#endregion +//#region ../../packages/components/table/src/table/defaults.ts + var defaults_default$2 = { + data: { + type: Array, + default: () => [] + }, + size: useSizeProp, + width: [String, Number], + height: [String, Number], + maxHeight: [String, Number], + fit: { + type: Boolean, + default: true + }, + stripe: Boolean, + border: Boolean, + rowKey: [String, Function], + showHeader: { + type: Boolean, + default: true + }, + showSummary: Boolean, + sumText: String, + summaryMethod: Function, + rowClassName: [String, Function], + rowStyle: [Object, Function], + cellClassName: [String, Function], + cellStyle: [Object, Function], + headerRowClassName: [String, Function], + headerRowStyle: [Object, Function], + headerCellClassName: [String, Function], + headerCellStyle: [Object, Function], + highlightCurrentRow: Boolean, + currentRowKey: [String, Number], + emptyText: String, + expandRowKeys: Array, + defaultExpandAll: Boolean, + rowExpandable: { type: Function }, + defaultSort: Object, + tooltipEffect: String, + tooltipOptions: Object, + spanMethod: Function, + selectOnIndeterminate: { + type: Boolean, + default: true + }, + indent: { + type: Number, + default: 16 + }, + treeProps: { + type: Object, + default: () => { + return { + hasChildren: "hasChildren", + children: "children", + checkStrictly: false + }; + } + }, + lazy: Boolean, + load: Function, + style: { + type: [ + String, + Object, + Array + ], + default: () => ({}) + }, + className: { + type: String, + default: "" + }, + tableLayout: { + type: String, + default: "fixed" + }, + scrollbarAlwaysOn: Boolean, + flexible: Boolean, + showOverflowTooltip: { + type: [Boolean, Object], + default: void 0 + }, + tooltipFormatter: Function, + appendFilterPanelTo: String, + scrollbarTabindex: { + type: [Number, String], + default: void 0 + }, + allowDragLastColumn: { + type: Boolean, + default: true + }, + preserveExpandedContent: Boolean, + nativeScrollbar: Boolean + }; + +//#endregion +//#region ../../packages/components/table/src/h-helper.ts + function hColgroup(props) { + const isAuto = props.tableLayout === "auto"; + let columns = props.columns || []; + if (isAuto) { + if (columns.every(({ width }) => isUndefined(width))) columns = []; + } + const getPropsData = (column) => { + const propsData = { + key: `${props.tableLayout}_${column.id}`, + style: {}, + name: void 0 + }; + if (isAuto) propsData.style = { width: `${column.width}px` }; + else propsData.name = column.id; + return propsData; + }; + return (0, vue.h)("colgroup", {}, columns.map((column) => (0, vue.h)("col", getPropsData(column)))); + } + hColgroup.props = ["columns", "tableLayout"]; + +//#endregion +//#region ../../packages/components/table/src/composables/use-scrollbar.ts + const useScrollbar$1 = () => { + const scrollBarRef = (0, vue.ref)(); + const scrollTo = (options, yCoord) => { + const scrollbar = scrollBarRef.value; + if (scrollbar) scrollbar.scrollTo(options, yCoord); + }; + const setScrollPosition = (position, offset) => { + const scrollbar = scrollBarRef.value; + if (scrollbar && isNumber(offset) && ["Top", "Left"].includes(position)) scrollbar[`setScroll${position}`](offset); + }; + const setScrollTop = (top) => setScrollPosition("Top", top); + const setScrollLeft = (left) => setScrollPosition("Left", left); + return { + scrollBarRef, + scrollTo, + setScrollTop, + setScrollLeft + }; + }; + +//#endregion +//#region ../../packages/components/table/src/table.vue?vue&type=script&lang.ts + let tableIdSeed = 1; + var table_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElTable", + directives: { Mousewheel }, + components: { + TableHeader: table_header_default, + TableBody: table_body_default, + TableFooter: table_footer_default, + ElScrollbar, + hColgroup + }, + props: defaults_default$2, + emits: [ + "select", + "select-all", + "selection-change", + "cell-mouse-enter", + "cell-mouse-leave", + "cell-contextmenu", + "cell-click", + "cell-dblclick", + "row-click", + "row-contextmenu", + "row-dblclick", + "header-click", + "header-contextmenu", + "sort-change", + "filter-change", + "current-change", + "header-dragend", + "expand-change", + "scroll" + ], + setup(props) { + const { t } = useLocale(); + const ns = useNamespace("table"); + const globalConfig = useGlobalConfig("table"); + const table = (0, vue.getCurrentInstance)(); + (0, vue.provide)(TABLE_INJECTION_KEY, table); + const store = createStore(table, props); + table.store = store; + const layout = new TableLayout({ + store: table.store, + table, + fit: props.fit, + showHeader: props.showHeader + }); + table.layout = layout; + const isEmpty = (0, vue.computed)(() => (store.states.data.value || []).length === 0); + /** + * open functions + */ + const { setCurrentRow, getSelectionRows, toggleRowSelection, clearSelection, clearFilter, toggleAllSelection, toggleRowExpansion, clearSort, sort, updateKeyChildren } = useUtils(store); + const { isHidden, renderExpanded, setDragVisible, isGroup, handleMouseLeave, handleHeaderFooterMousewheel, tableSize, emptyBlockStyle, resizeProxyVisible, bodyWidth, resizeState, doLayout, tableBodyStyles, tableLayout, scrollbarViewStyle, scrollbarStyle } = useStyle(props, layout, store, table); + const { scrollBarRef, scrollTo, setScrollLeft, setScrollTop } = useScrollbar$1(); + const debouncedUpdateLayout = debounce(doLayout, 50); + const tableId = `${ns.namespace.value}-table_${tableIdSeed++}`; + table.tableId = tableId; + table.state = { + isGroup, + resizeState, + doLayout, + debouncedUpdateLayout + }; + const computedSumText = (0, vue.computed)(() => props.sumText ?? t("el.table.sumText")); + const computedEmptyText = (0, vue.computed)(() => { + return props.emptyText ?? t("el.table.emptyText"); + }); + const computedTooltipEffect = (0, vue.computed)(() => props.tooltipEffect ?? globalConfig.value?.tooltipEffect); + const computedTooltipOptions = (0, vue.computed)(() => props.tooltipOptions ?? globalConfig.value?.tooltipOptions); + const columns = (0, vue.computed)(() => { + return convertToRows(store.states.originColumns.value)[0]; + }); + useKeyRender(table); + (0, vue.onBeforeUnmount)(() => { + debouncedUpdateLayout.cancel(); + }); + return { + ns, + layout, + store, + columns, + handleHeaderFooterMousewheel, + handleMouseLeave, + tableId, + tableSize, + isHidden, + isEmpty, + renderExpanded, + resizeProxyVisible, + resizeState, + isGroup, + bodyWidth, + tableBodyStyles, + emptyBlockStyle, + debouncedUpdateLayout, + setCurrentRow, + getSelectionRows, + toggleRowSelection, + clearSelection, + clearFilter, + toggleAllSelection, + toggleRowExpansion, + clearSort, + doLayout, + sort, + updateKeyChildren, + t, + setDragVisible, + context: table, + computedSumText, + computedEmptyText, + computedTooltipEffect, + computedTooltipOptions, + tableLayout, + scrollbarViewStyle, + scrollbarStyle, + scrollBarRef, + scrollTo, + setScrollLeft, + setScrollTop, + allowDragLastColumn: props.allowDragLastColumn + }; + } + }); + +//#endregion +//#region ../../packages/components/table/src/table.vue + const _hoisted_1$15 = ["data-prefix"]; + const _hoisted_2$9 = { + ref: "hiddenColumns", + class: "hidden-columns" + }; + function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) { + const _component_hColgroup = (0, vue.resolveComponent)("hColgroup"); + const _component_table_header = (0, vue.resolveComponent)("table-header"); + const _component_table_body = (0, vue.resolveComponent)("table-body"); + const _component_table_footer = (0, vue.resolveComponent)("table-footer"); + const _component_el_scrollbar = (0, vue.resolveComponent)("el-scrollbar"); + const _directive_mousewheel = (0, vue.resolveDirective)("mousewheel"); + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref: "tableWrapper", + class: (0, vue.normalizeClass)([ + { + [_ctx.ns.m("fit")]: _ctx.fit, + [_ctx.ns.m("striped")]: _ctx.stripe, + [_ctx.ns.m("border")]: _ctx.border || _ctx.isGroup, + [_ctx.ns.m("hidden")]: _ctx.isHidden, + [_ctx.ns.m("group")]: _ctx.isGroup, + [_ctx.ns.m("fluid-height")]: _ctx.maxHeight, + [_ctx.ns.m("scrollable-x")]: _ctx.layout.scrollX.value, + [_ctx.ns.m("scrollable-y")]: _ctx.layout.scrollY.value, + [_ctx.ns.m("enable-row-hover")]: !_ctx.store.states.isComplex.value, + [_ctx.ns.m("enable-row-transition")]: (_ctx.store.states.data.value || []).length !== 0 && (_ctx.store.states.data.value || []).length < 100, + "has-footer": _ctx.showSummary + }, + _ctx.ns.m(_ctx.tableSize), + _ctx.className, + _ctx.ns.b(), + _ctx.ns.m(`layout-${_ctx.tableLayout}`) + ]), + style: (0, vue.normalizeStyle)(_ctx.style), + "data-prefix": _ctx.ns.namespace.value, + onMouseleave: _cache[1] || (_cache[1] = (...args) => _ctx.handleMouseLeave && _ctx.handleMouseLeave(...args)) + }, [(0, vue.createElementVNode)("div", { + ref: "tableInnerWrapper", + class: (0, vue.normalizeClass)(_ctx.ns.e("inner-wrapper")) + }, [ + (0, vue.createElementVNode)("div", _hoisted_2$9, [(0, vue.renderSlot)(_ctx.$slots, "default")], 512), + _ctx.showHeader && _ctx.tableLayout === "fixed" ? (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + ref: "headerWrapper", + class: (0, vue.normalizeClass)(_ctx.ns.e("header-wrapper")) + }, [(0, vue.createElementVNode)("table", { + ref: "tableHeader", + class: (0, vue.normalizeClass)(_ctx.ns.e("header")), + style: (0, vue.normalizeStyle)(_ctx.tableBodyStyles), + border: "0", + cellpadding: "0", + cellspacing: "0" + }, [(0, vue.createVNode)(_component_hColgroup, { + columns: _ctx.store.states.columns.value, + "table-layout": _ctx.tableLayout + }, null, 8, ["columns", "table-layout"]), (0, vue.createVNode)(_component_table_header, { + ref: "tableHeaderRef", + border: _ctx.border, + "default-sort": _ctx.defaultSort, + store: _ctx.store, + "append-filter-panel-to": _ctx.appendFilterPanelTo, + "allow-drag-last-column": _ctx.allowDragLastColumn, + onSetDragVisible: _ctx.setDragVisible + }, null, 8, [ + "border", + "default-sort", + "store", + "append-filter-panel-to", + "allow-drag-last-column", + "onSetDragVisible" + ])], 6)], 2)), [[_directive_mousewheel, _ctx.handleHeaderFooterMousewheel]]) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { + ref: "bodyWrapper", + class: (0, vue.normalizeClass)(_ctx.ns.e("body-wrapper")) + }, [(0, vue.createVNode)(_component_el_scrollbar, { + ref: "scrollBarRef", + "view-style": _ctx.scrollbarViewStyle, + "wrap-style": _ctx.scrollbarStyle, + always: _ctx.scrollbarAlwaysOn, + tabindex: _ctx.scrollbarTabindex, + native: _ctx.nativeScrollbar, + onScroll: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("scroll", $event)) + }, { + default: (0, vue.withCtx)(() => [ + (0, vue.createElementVNode)("table", { + ref: "tableBody", + class: (0, vue.normalizeClass)(_ctx.ns.e("body")), + cellspacing: "0", + cellpadding: "0", + border: "0", + style: (0, vue.normalizeStyle)({ + width: _ctx.bodyWidth, + tableLayout: _ctx.tableLayout + }) + }, [ + (0, vue.createVNode)(_component_hColgroup, { + columns: _ctx.store.states.columns.value, + "table-layout": _ctx.tableLayout + }, null, 8, ["columns", "table-layout"]), + _ctx.showHeader && _ctx.tableLayout === "auto" ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_table_header, { + key: 0, + ref: "tableHeaderRef", + class: (0, vue.normalizeClass)(_ctx.ns.e("body-header")), + border: _ctx.border, + "default-sort": _ctx.defaultSort, + store: _ctx.store, + "append-filter-panel-to": _ctx.appendFilterPanelTo, + onSetDragVisible: _ctx.setDragVisible + }, null, 8, [ + "class", + "border", + "default-sort", + "store", + "append-filter-panel-to", + "onSetDragVisible" + ])) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createVNode)(_component_table_body, { + context: _ctx.context, + highlight: _ctx.highlightCurrentRow, + "row-class-name": _ctx.rowClassName, + "tooltip-effect": _ctx.computedTooltipEffect, + "tooltip-options": _ctx.computedTooltipOptions, + "row-style": _ctx.rowStyle, + store: _ctx.store, + stripe: _ctx.stripe + }, null, 8, [ + "context", + "highlight", + "row-class-name", + "tooltip-effect", + "tooltip-options", + "row-style", + "store", + "stripe" + ]), + _ctx.showSummary && _ctx.tableLayout === "auto" ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_table_footer, { + key: 1, + class: (0, vue.normalizeClass)(_ctx.ns.e("body-footer")), + border: _ctx.border, + "default-sort": _ctx.defaultSort, + store: _ctx.store, + "sum-text": _ctx.computedSumText, + "summary-method": _ctx.summaryMethod + }, null, 8, [ + "class", + "border", + "default-sort", + "store", + "sum-text", + "summary-method" + ])) : (0, vue.createCommentVNode)("v-if", true) + ], 6), + _ctx.isEmpty ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + ref: "emptyBlock", + style: (0, vue.normalizeStyle)(_ctx.emptyBlockStyle), + class: (0, vue.normalizeClass)(_ctx.ns.e("empty-block")) + }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)(_ctx.ns.e("empty-text")) }, [(0, vue.renderSlot)(_ctx.$slots, "empty", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(_ctx.computedEmptyText), 1)])], 2)], 6)) : (0, vue.createCommentVNode)("v-if", true), + _ctx.$slots.append ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + ref: "appendWrapper", + class: (0, vue.normalizeClass)(_ctx.ns.e("append-wrapper")) + }, [(0, vue.renderSlot)(_ctx.$slots, "append")], 2)) : (0, vue.createCommentVNode)("v-if", true) + ]), + _: 3 + }, 8, [ + "view-style", + "wrap-style", + "always", + "tabindex", + "native" + ])], 2), + _ctx.showSummary && _ctx.tableLayout === "fixed" ? (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + ref: "footerWrapper", + class: (0, vue.normalizeClass)(_ctx.ns.e("footer-wrapper")) + }, [(0, vue.createElementVNode)("table", { + class: (0, vue.normalizeClass)(_ctx.ns.e("footer")), + cellspacing: "0", + cellpadding: "0", + border: "0", + style: (0, vue.normalizeStyle)(_ctx.tableBodyStyles) + }, [(0, vue.createVNode)(_component_hColgroup, { + columns: _ctx.store.states.columns.value, + "table-layout": _ctx.tableLayout + }, null, 8, ["columns", "table-layout"]), (0, vue.createVNode)(_component_table_footer, { + border: _ctx.border, + "default-sort": _ctx.defaultSort, + store: _ctx.store, + "sum-text": _ctx.computedSumText, + "summary-method": _ctx.summaryMethod + }, null, 8, [ + "border", + "default-sort", + "store", + "sum-text", + "summary-method" + ])], 6)], 2)), [[vue.vShow, !_ctx.isEmpty], [_directive_mousewheel, _ctx.handleHeaderFooterMousewheel]]) : (0, vue.createCommentVNode)("v-if", true), + _ctx.border || _ctx.isGroup ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 2, + class: (0, vue.normalizeClass)(_ctx.ns.e("border-left-patch")) + }, null, 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 2), (0, vue.withDirectives)((0, vue.createElementVNode)("div", { + ref: "resizeProxy", + class: (0, vue.normalizeClass)(_ctx.ns.e("column-resize-proxy")) + }, null, 2), [[vue.vShow, _ctx.resizeProxyVisible]])], 46, _hoisted_1$15); + } + var table_default = /* @__PURE__ */ _plugin_vue_export_helper_default(table_vue_vue_type_script_lang_default, [["render", _sfc_render$3]]); + +//#endregion +//#region ../../packages/components/table/src/config.ts + const defaultClassNames = { + selection: "table-column--selection", + expand: "table__expand-column" + }; + const cellStarts = { + default: { order: "" }, + selection: { + width: 48, + minWidth: 48, + realWidth: 48, + order: "" + }, + expand: { + width: 48, + minWidth: 48, + realWidth: 48, + order: "" + }, + index: { + width: 48, + minWidth: 48, + realWidth: 48, + order: "" + } + }; + const getDefaultClassName = (type) => { + return defaultClassNames[type] || ""; + }; + const cellForced = { + selection: { + renderHeader({ store }) { + function isDisabled() { + return store.states.data.value && store.states.data.value.length === 0; + } + return (0, vue.h)(ElCheckbox, { + disabled: isDisabled(), + size: store.states.tableSize.value, + indeterminate: store.states.selection.value.length > 0 && !store.states.isAllSelected.value, + "onUpdate:modelValue": store.toggleAllSelection ?? void 0, + modelValue: store.states.isAllSelected.value, + ariaLabel: store.t("el.table.selectAllLabel") + }); + }, + renderCell({ row, column, store, $index }) { + return (0, vue.h)(ElCheckbox, { + disabled: column.selectable ? !column.selectable.call(null, row, $index) : false, + size: store.states.tableSize.value, + onChange: () => { + store.commit("rowSelectedChanged", row); + }, + onClick: (event) => event.stopPropagation(), + modelValue: store.isSelected(row), + ariaLabel: store.t("el.table.selectRowLabel") + }); + }, + sortable: false, + resizable: false + }, + index: { + renderHeader({ column }) { + return column.label || "#"; + }, + renderCell({ column, $index }) { + let i = $index + 1; + const index = column.index; + if (isNumber(index)) i = $index + index; + else if (isFunction$1(index)) i = index($index); + return (0, vue.h)("div", {}, [i]); + }, + sortable: false + }, + expand: { + renderHeader({ column }) { + return column.label || ""; + }, + renderCell({ column, row, store, expanded, $index }) { + const { ns } = store; + const classes = [ns.e("expand-icon")]; + if (!column.renderExpand && expanded) classes.push(ns.em("expand-icon", "expanded")); + const callback = function(e) { + e.stopPropagation(); + store.toggleRowExpansion(row); + }; + const isRowExpandable = store.states.rowExpandable.value?.(row, $index) ?? true; + if (!isRowExpandable) classes.push(ns.is("disabled")); + return (0, vue.h)("button", { + type: "button", + disabled: !isRowExpandable, + "aria-label": store.t(expanded ? "el.table.collapseRowLabel" : "el.table.expandRowLabel"), + "aria-expanded": expanded, + class: classes, + onClick: callback + }, { default: () => { + if (column.renderExpand) return [column.renderExpand({ + expanded, + expandable: isRowExpandable + })]; + return [(0, vue.h)(ElIcon, null, { default: () => { + return [(0, vue.h)(arrow_right_default)]; + } })]; + } }); + }, + sortable: false, + resizable: false + } + }; + function defaultRenderCell({ row, column, $index }) { + const property = column.property; + const value = property && getProp(row, property).value; + if (column && column.formatter) return column.formatter(row, column, value, $index); + return value?.toString?.() || ""; + } + function treeCellPrefix({ row, treeNode, store }, createPlaceholder = false) { + const { ns } = store; + if (!treeNode) { + if (createPlaceholder) return [(0, vue.h)("span", { class: ns.e("placeholder") })]; + return null; + } + const ele = []; + const callback = function(e) { + e.stopPropagation(); + if (treeNode.loading) return; + store.loadOrToggle(row); + }; + if (treeNode.indent) ele.push((0, vue.h)("span", { + class: ns.e("indent"), + style: { "padding-left": `${treeNode.indent}px` } + })); + if (isBoolean(treeNode.expanded) && !treeNode.noLazyChildren) { + const expandClasses = [ns.e("expand-icon"), treeNode.expanded ? ns.em("expand-icon", "expanded") : ""]; + let icon = arrow_right_default; + if (treeNode.loading) icon = loading_default; + ele.push((0, vue.h)("button", { + type: "button", + "aria-label": store.t(treeNode.expanded ? "el.table.collapseRowLabel" : "el.table.expandRowLabel"), + "aria-expanded": treeNode.expanded, + class: expandClasses, + onClick: callback + }, { default: () => { + return [(0, vue.h)(ElIcon, { class: ns.is("loading", treeNode.loading) }, { default: () => [(0, vue.h)(icon)] })]; + } })); + } else ele.push((0, vue.h)("span", { class: ns.e("placeholder") })); + return ele; + } + +//#endregion +//#region ../../packages/components/table/src/table-column/watcher-helper.ts + function getAllAliases(props, aliases) { + return props.reduce((prev, cur) => { + prev[cur] = cur; + return prev; + }, aliases); + } + function useWatcher(owner, props_) { + const instance = (0, vue.getCurrentInstance)(); + const registerComplexWatchers = () => { + const props = ["fixed"]; + const aliases = { + realWidth: "width", + realMinWidth: "minWidth" + }; + const allAliases = getAllAliases(props, aliases); + Object.keys(allAliases).forEach((key) => { + const columnKey = aliases[key]; + if (hasOwn(props_, columnKey)) (0, vue.watch)(() => props_[columnKey], (newVal) => { + let value = newVal; + if (columnKey === "width" && key === "realWidth") value = parseWidth(newVal); + if (columnKey === "minWidth" && key === "realMinWidth") value = parseMinWidth(newVal); + instance.columnConfig.value[columnKey] = value; + instance.columnConfig.value[key] = value; + const updateColumns = columnKey === "fixed"; + owner.value.store.scheduleLayout(updateColumns); + }); + }); + }; + const registerNormalWatchers = () => { + const props = [ + "label", + "filters", + "filterMultiple", + "filteredValue", + "sortable", + "index", + "formatter", + "className", + "labelClassName", + "filterClassName", + "showOverflowTooltip", + "tooltipFormatter", + "resizable" + ]; + const parentProps = ["showOverflowTooltip"]; + const aliases = { + property: "prop", + align: "realAlign", + headerAlign: "realHeaderAlign" + }; + const allAliases = getAllAliases(props, aliases); + Object.keys(allAliases).forEach((key) => { + const columnKey = aliases[key]; + if (hasOwn(props_, columnKey)) (0, vue.watch)(() => props_[columnKey], (newVal) => { + instance.columnConfig.value[key] = newVal; + if (key === "filters" || key === "filterMethod") instance.columnConfig.value["filterable"] = !!(instance.columnConfig.value["filters"] || instance.columnConfig.value["filterMethod"]); + }); + }); + parentProps.forEach((key) => { + if (hasOwn(owner.value.props, key)) (0, vue.watch)(() => owner.value.props[key], (newVal) => { + if (instance.columnConfig.value.type === "selection") return; + if (!isUndefined(props_[key])) return; + instance.columnConfig.value[key] = newVal; + }); + }); + const globalConfig = useGlobalConfig("table"); + if (globalConfig.value && hasOwn(globalConfig.value, "showOverflowTooltip")) (0, vue.watch)(() => globalConfig.value?.showOverflowTooltip, (newVal) => { + if (instance.columnConfig.value.type === "selection") return; + if (!isUndefined(props_.showOverflowTooltip) || !isUndefined(owner.value.props.showOverflowTooltip)) return; + instance.columnConfig.value.showOverflowTooltip = newVal; + }); + }; + return { + registerComplexWatchers, + registerNormalWatchers + }; + } + +//#endregion +//#region ../../packages/components/table/src/table-column/render-helper.ts + function useRender(props, slots, owner) { + const instance = (0, vue.getCurrentInstance)(); + const columnId = (0, vue.ref)(""); + const isSubColumn = (0, vue.ref)(false); + const realAlign = (0, vue.ref)(); + const realHeaderAlign = (0, vue.ref)(); + const ns = useNamespace("table"); + (0, vue.watchEffect)(() => { + realAlign.value = props.align ? `is-${props.align}` : null; + realAlign.value; + }); + (0, vue.watchEffect)(() => { + realHeaderAlign.value = props.headerAlign ? `is-${props.headerAlign}` : realAlign.value; + realHeaderAlign.value; + }); + const columnOrTableParent = (0, vue.computed)(() => { + let parent = instance.vnode.vParent || instance.parent; + while (parent && !parent.tableId && !parent.columnId) parent = parent.vnode.vParent || parent.parent; + return parent; + }); + const hasTreeColumn = (0, vue.computed)(() => { + const { store } = instance.parent; + if (!store) return false; + const { treeData } = store.states; + const treeDataValue = treeData.value; + return treeDataValue && Object.keys(treeDataValue).length > 0; + }); + const realWidth = (0, vue.ref)(parseWidth(props.width)); + const realMinWidth = (0, vue.ref)(parseMinWidth(props.minWidth)); + const setColumnWidth = (column) => { + if (realWidth.value) column.width = realWidth.value; + if (realMinWidth.value) column.minWidth = realMinWidth.value; + if (!realWidth.value && realMinWidth.value) column.width = void 0; + if (!column.minWidth) column.minWidth = 80; + column.realWidth = Number(isUndefined(column.width) ? column.minWidth : column.width); + return column; + }; + const setColumnForcedProps = (column) => { + const type = column.type; + const source = cellForced[type] || {}; + Object.keys(source).forEach((prop) => { + const value = source[prop]; + if (prop !== "className" && !isUndefined(value)) column[prop] = value; + }); + const className = getDefaultClassName(type); + if (className) { + const forceClass = `${(0, vue.unref)(ns.namespace)}-${className}`; + column.className = column.className ? `${column.className} ${forceClass}` : forceClass; + } + return column; + }; + const checkSubColumn = (children) => { + if (isArray$1(children)) children.forEach((child) => check(child)); + else check(children); + function check(item) { + if (item?.type?.name === "ElTableColumn") item.vParent = instance; + } + }; + const setColumnRenders = (column) => { + if (props.renderHeader) /* @__PURE__ */ debugWarn("TableColumn", "Comparing to render-header, scoped-slot header is easier to use. We recommend users to use scoped-slot header."); + else if (column.type !== "selection") column.renderHeader = (scope) => { + instance.columnConfig.value["label"]; + if (slots.header) { + const slotResult = slots.header(scope); + if (ensureValidVNode(slotResult)) return (0, vue.h)(vue.Fragment, slotResult); + } + return (0, vue.createTextVNode)(column.label); + }; + if (slots["filter-icon"]) column.renderFilterIcon = (scope) => { + return (0, vue.renderSlot)(slots, "filter-icon", scope); + }; + if (slots.expand) column.renderExpand = (scope) => { + return (0, vue.renderSlot)(slots, "expand", scope); + }; + let originRenderCell = column.renderCell; + if (column.type === "expand") { + column.renderCell = (data) => (0, vue.h)("div", { class: "cell" }, [originRenderCell(data)]); + owner.value.renderExpanded = (row) => { + return slots.default ? slots.default(row) : slots.default; + }; + } else { + originRenderCell = originRenderCell || defaultRenderCell; + column.renderCell = (data) => { + let children = null; + if (slots.default) { + const vnodes = slots.default(data); + children = vnodes.some((v) => v.type !== vue.Comment) ? vnodes : originRenderCell(data); + } else children = originRenderCell(data); + const { columns } = owner.value.store.states; + const firstUserColumnIndex = columns.value.findIndex((item) => item.type === "default"); + const prefix = treeCellPrefix(data, hasTreeColumn.value && data.cellIndex === firstUserColumnIndex); + const props = { + class: "cell", + style: {} + }; + if (column.showOverflowTooltip) { + props.class = `${props.class} ${(0, vue.unref)(ns.namespace)}-tooltip`; + props.style = { width: `${(data.column.realWidth || Number(data.column.width)) - 1}px` }; + } + checkSubColumn(children); + return (0, vue.h)("div", props, [prefix, children]); + }; + } + return column; + }; + const getPropsData = (...propsKey) => { + return propsKey.reduce((prev, cur) => { + if (isArray$1(cur)) cur.forEach((key) => { + prev[key] = props[key]; + }); + return prev; + }, {}); + }; + const getColumnElIndex = (children, child) => { + return Array.prototype.indexOf.call(children, child); + }; + const updateColumnOrder = () => { + owner.value.store.commit("updateColumnOrder", instance.columnConfig.value); + }; + return { + columnId, + realAlign, + isSubColumn, + realHeaderAlign, + columnOrTableParent, + setColumnWidth, + setColumnForcedProps, + setColumnRenders, + getPropsData, + getColumnElIndex, + updateColumnOrder + }; + } + +//#endregion +//#region ../../packages/components/table/src/table-column/defaults.ts + var defaults_default$1 = { + type: { + type: String, + default: "default" + }, + label: String, + className: String, + labelClassName: String, + property: String, + prop: String, + width: { + type: [String, Number], + default: "" + }, + minWidth: { + type: [String, Number], + default: "" + }, + renderHeader: Function, + sortable: { + type: [Boolean, String], + default: false + }, + sortMethod: Function, + sortBy: [ + String, + Function, + Array + ], + resizable: { + type: Boolean, + default: true + }, + columnKey: String, + align: String, + headerAlign: String, + showOverflowTooltip: { + type: [Boolean, Object], + default: void 0 + }, + tooltipFormatter: Function, + fixed: [Boolean, String], + formatter: Function, + selectable: Function, + reserveSelection: Boolean, + filterMethod: Function, + filteredValue: Array, + filters: Array, + filterPlacement: String, + filterMultiple: { + type: Boolean, + default: true + }, + filterClassName: String, + index: [Number, Function], + sortOrders: { + type: Array, + default: () => { + return [ + "ascending", + "descending", + null + ]; + }, + validator: (val) => { + return val.every((order) => [ + "ascending", + "descending", + null + ].includes(order)); + } + } + }; + +//#endregion +//#region ../../packages/components/table/src/table-column/index.ts + let columnIdSeed = 1; + var table_column_default = (0, vue.defineComponent)({ + name: "ElTableColumn", + components: { ElCheckbox }, + props: defaults_default$1, + setup(props, { slots }) { + const instance = (0, vue.getCurrentInstance)(); + const globalConfig = useGlobalConfig("table"); + const columnConfig = (0, vue.ref)({}); + const owner = (0, vue.computed)(() => { + let parent = instance.parent; + while (parent && !parent.tableId) parent = parent.parent; + return parent; + }); + const { registerNormalWatchers, registerComplexWatchers } = useWatcher(owner, props); + const { columnId, isSubColumn, realHeaderAlign, columnOrTableParent, setColumnWidth, setColumnForcedProps, setColumnRenders, getPropsData, getColumnElIndex, realAlign, updateColumnOrder } = useRender(props, slots, owner); + const parent = columnOrTableParent.value; + columnId.value = `${"tableId" in parent && parent.tableId || "columnId" in parent && parent.columnId}_column_${columnIdSeed++}`; + (0, vue.onBeforeMount)(() => { + isSubColumn.value = owner.value !== parent; + const type = props.type || "default"; + const sortable = props.sortable === "" ? true : props.sortable; + const showOverflowTooltip = type === "selection" ? false : isUndefined(props.showOverflowTooltip) ? parent.props.showOverflowTooltip ?? globalConfig.value?.showOverflowTooltip : props.showOverflowTooltip; + const tooltipFormatter = isUndefined(props.tooltipFormatter) ? parent.props.tooltipFormatter ?? globalConfig.value?.tooltipFormatter : props.tooltipFormatter; + const defaults = { + ...cellStarts[type], + id: columnId.value, + type, + property: props.prop || props.property, + align: realAlign, + headerAlign: realHeaderAlign, + showOverflowTooltip, + tooltipFormatter, + filterable: props.filters || props.filterMethod, + filteredValue: [], + filterPlacement: "", + filterClassName: "", + isColumnGroup: false, + isSubColumn: false, + filterOpened: false, + sortable, + index: props.index, + rawColumnKey: instance.vnode.key + }; + let column = getPropsData([ + "columnKey", + "label", + "className", + "labelClassName", + "type", + "renderHeader", + "formatter", + "fixed", + "resizable" + ], [ + "sortMethod", + "sortBy", + "sortOrders" + ], ["selectable", "reserveSelection"], [ + "filterMethod", + "filters", + "filterMultiple", + "filterOpened", + "filteredValue", + "filterPlacement", + "filterClassName" + ]); + column = mergeOptions(defaults, column); + column = compose(setColumnRenders, setColumnWidth, setColumnForcedProps)(column); + columnConfig.value = column; + registerNormalWatchers(); + registerComplexWatchers(); + }); + (0, vue.onMounted)(() => { + const parent = columnOrTableParent.value; + const children = isSubColumn.value ? parent.vnode.el?.children : parent.refs.hiddenColumns?.children; + const getColumnIndex = () => getColumnElIndex(children || [], instance.vnode.el); + columnConfig.value.getColumnIndex = getColumnIndex; + getColumnIndex() > -1 && owner.value.store.commit("insertColumn", columnConfig.value, isSubColumn.value ? "columnConfig" in parent && parent.columnConfig.value : null, updateColumnOrder); + }); + (0, vue.onBeforeUnmount)(() => { + const getColumnIndex = columnConfig.value.getColumnIndex; + (getColumnIndex ? getColumnIndex() : -1) > -1 && owner.value.store.commit("removeColumn", columnConfig.value, isSubColumn.value ? "columnConfig" in parent && parent.columnConfig.value : null, updateColumnOrder); + }); + instance.columnId = columnId.value; + instance.columnConfig = columnConfig; + }, + render() { + try { + const renderDefault = this.$slots.default?.({ + row: {}, + column: {}, + $index: -1 + }); + const children = []; + if (isArray$1(renderDefault)) { + for (const childNode of renderDefault) if (childNode.type?.name === "ElTableColumn" || childNode.shapeFlag & 2) children.push(childNode); + else if (childNode.type === vue.Fragment && isArray$1(childNode.children)) childNode.children.forEach((vnode) => { + if (vnode?.patchFlag !== 1024 && !isString(vnode?.children)) children.push(vnode); + }); + } + return (0, vue.h)("div", children); + } catch { + return (0, vue.h)("div", []); + } + } + }); + +//#endregion +//#region ../../packages/components/table/src/tableColumn.ts + var tableColumn_default = table_column_default; + +//#endregion +//#region ../../packages/components/table/index.ts + const ElTable = withInstall(table_default, { TableColumn: tableColumn_default }); + const ElTableColumn = withNoopInstall(tableColumn_default); + +//#endregion +//#region ../../packages/components/table-v2/src/constants.ts + let SortOrder = /* @__PURE__ */ function(SortOrder) { + SortOrder["ASC"] = "asc"; + SortOrder["DESC"] = "desc"; + return SortOrder; + }({}); + let Alignment = /* @__PURE__ */ function(Alignment) { + Alignment["LEFT"] = "left"; + Alignment["CENTER"] = "center"; + Alignment["RIGHT"] = "right"; + return Alignment; + }({}); + let FixedDir = /* @__PURE__ */ function(FixedDir) { + FixedDir["LEFT"] = "left"; + FixedDir["RIGHT"] = "right"; + return FixedDir; + }({}); + const oppositeOrderMap = { + [SortOrder.ASC]: SortOrder.DESC, + [SortOrder.DESC]: SortOrder.ASC + }; + const sortOrders = [SortOrder.ASC, SortOrder.DESC]; + +//#endregion +//#region ../../packages/components/table-v2/src/private.ts + const placeholderSign = Symbol("placeholder"); + +//#endregion +//#region ../../packages/components/table-v2/src/composables/utils.ts + const calcColumnStyle = (column, fixedColumn, fixed) => { + const flex = { + flexGrow: 0, + flexShrink: 0, + ...fixed ? {} : { + flexGrow: column.flexGrow ?? 0, + flexShrink: column.flexShrink ?? 1 + } + }; + const style = { + ...column.style ?? {}, + ...flex, + flexBasis: "auto", + width: column.width + }; + if (!fixedColumn) { + if (column.maxWidth) style.maxWidth = column.maxWidth; + if (column.minWidth) style.minWidth = column.minWidth; + } + return style; + }; + +//#endregion +//#region ../../packages/components/table-v2/src/composables/use-columns.ts + function useColumns(props, columns, fixed) { + const _columns = (0, vue.computed)(() => (0, vue.unref)(columns).map((column, index) => ({ + ...column, + key: column.key ?? column.dataKey ?? index + }))); + const visibleColumns = (0, vue.computed)(() => { + return (0, vue.unref)(_columns).filter((column) => !column.hidden); + }); + const fixedColumnsOnLeft = (0, vue.computed)(() => (0, vue.unref)(visibleColumns).filter((column) => column.fixed === "left" || column.fixed === true)); + const fixedColumnsOnRight = (0, vue.computed)(() => (0, vue.unref)(visibleColumns).filter((column) => column.fixed === "right")); + const normalColumns = (0, vue.computed)(() => (0, vue.unref)(visibleColumns).filter((column) => !column.fixed)); + const mainColumns = (0, vue.computed)(() => { + const ret = []; + (0, vue.unref)(fixedColumnsOnLeft).forEach((column) => { + ret.push({ + ...column, + placeholderSign + }); + }); + (0, vue.unref)(normalColumns).forEach((column) => { + ret.push(column); + }); + (0, vue.unref)(fixedColumnsOnRight).forEach((column) => { + ret.push({ + ...column, + placeholderSign + }); + }); + return ret; + }); + const hasFixedColumns = (0, vue.computed)(() => { + return (0, vue.unref)(fixedColumnsOnLeft).length || (0, vue.unref)(fixedColumnsOnRight).length; + }); + const columnsStyles = (0, vue.computed)(() => { + return (0, vue.unref)(_columns).reduce((style, column) => { + style[column.key] = calcColumnStyle(column, (0, vue.unref)(fixed), props.fixed); + return style; + }, {}); + }); + const columnsTotalWidth = (0, vue.computed)(() => { + return (0, vue.unref)(visibleColumns).reduce((width, column) => width + column.width, 0); + }); + const getColumn = (key) => { + return (0, vue.unref)(_columns).find((column) => column.key === key); + }; + const getColumnStyle = (key) => { + return (0, vue.unref)(columnsStyles)[key]; + }; + const updateColumnWidth = (column, width) => { + column.width = width; + }; + function onColumnSorted(e) { + const { key } = e.currentTarget.dataset; + if (!key) return; + const { sortState, sortBy } = props; + let order = SortOrder.ASC; + if (isObject$1(sortState)) order = oppositeOrderMap[sortState[key]]; + else order = oppositeOrderMap[sortBy.order]; + props.onColumnSort?.({ + column: getColumn(key), + key, + order + }); + } + return { + columns: _columns, + columnsStyles, + columnsTotalWidth, + fixedColumnsOnLeft, + fixedColumnsOnRight, + hasFixedColumns, + mainColumns, + normalColumns, + visibleColumns, + getColumn, + getColumnStyle, + updateColumnWidth, + onColumnSorted + }; + } + +//#endregion +//#region ../../packages/components/table-v2/src/composables/use-scrollbar.ts + const useScrollbar = (props, { mainTableRef, leftTableRef, rightTableRef, onMaybeEndReached }) => { + const scrollPos = (0, vue.ref)({ + scrollLeft: 0, + scrollTop: 0 + }); + function doScroll(params) { + const { scrollTop } = params; + mainTableRef.value?.scrollTo(params); + leftTableRef.value?.scrollToTop(scrollTop); + rightTableRef.value?.scrollToTop(scrollTop); + } + function scrollTo(params) { + scrollPos.value = params; + doScroll(params); + } + function scrollToTop(scrollTop) { + scrollPos.value.scrollTop = scrollTop; + doScroll((0, vue.unref)(scrollPos)); + } + function scrollToLeft(scrollLeft) { + scrollPos.value.scrollLeft = scrollLeft; + mainTableRef.value?.scrollTo?.((0, vue.unref)(scrollPos)); + } + function onScroll(params) { + scrollTo(params); + props.onScroll?.(params); + } + function onVerticalScroll({ scrollTop }) { + const { scrollTop: currentScrollTop } = (0, vue.unref)(scrollPos); + if (scrollTop !== currentScrollTop) scrollToTop(scrollTop); + } + function scrollToRow(row, strategy = "auto") { + mainTableRef.value?.scrollToRow(row, strategy); + } + (0, vue.watch)(() => (0, vue.unref)(scrollPos).scrollTop, (cur, prev) => { + if (cur > prev) onMaybeEndReached(); + }); + return { + scrollPos, + scrollTo, + scrollToLeft, + scrollToTop, + scrollToRow, + onScroll, + onVerticalScroll + }; + }; + +//#endregion +//#region ../../packages/components/table-v2/src/composables/use-row.ts + const useRow = (props, { mainTableRef, leftTableRef, rightTableRef, tableInstance, ns, isScrolling }) => { + const vm = (0, vue.getCurrentInstance)(); + const { emit } = vm; + const isResetting = (0, vue.shallowRef)(false); + const expandedRowKeys = (0, vue.ref)(props.defaultExpandedRowKeys || []); + const lastRenderedRowIndex = (0, vue.ref)(-1); + const resetIndex = (0, vue.shallowRef)(null); + const rowHeights = (0, vue.ref)({}); + const pendingRowHeights = (0, vue.ref)({}); + const leftTableHeights = (0, vue.shallowRef)({}); + const mainTableHeights = (0, vue.shallowRef)({}); + const rightTableHeights = (0, vue.shallowRef)({}); + const isDynamic = (0, vue.computed)(() => isNumber(props.estimatedRowHeight)); + function onRowsRendered(params) { + props.onRowsRendered?.(params); + if (params.rowCacheEnd > (0, vue.unref)(lastRenderedRowIndex)) lastRenderedRowIndex.value = params.rowCacheEnd; + } + function onRowHovered({ hovered, rowKey }) { + if (isScrolling.value) return; + tableInstance.vnode.el.querySelectorAll(`[rowkey="${String(rowKey)}"]`).forEach((row) => { + if (hovered) row.classList.add(ns.is("hovered")); + else row.classList.remove(ns.is("hovered")); + }); + } + function onRowExpanded({ expanded, rowData, rowIndex, rowKey }) { + const _expandedRowKeys = [...(0, vue.unref)(expandedRowKeys)]; + const currentKeyIndex = _expandedRowKeys.indexOf(rowKey); + if (expanded) { + if (currentKeyIndex === -1) _expandedRowKeys.push(rowKey); + } else if (currentKeyIndex > -1) _expandedRowKeys.splice(currentKeyIndex, 1); + expandedRowKeys.value = _expandedRowKeys; + emit("update:expandedRowKeys", _expandedRowKeys); + props.onRowExpand?.({ + expanded, + rowData, + rowIndex, + rowKey + }); + props.onExpandedRowsChange?.(_expandedRowKeys); + if (tableInstance.vnode.el.querySelector(`.${ns.is("hovered")}[rowkey="${String(rowKey)}"]`)) (0, vue.nextTick)(() => onRowHovered({ + hovered: true, + rowKey + })); + } + const flushingRowHeights = debounce(() => { + isResetting.value = true; + rowHeights.value = { + ...(0, vue.unref)(rowHeights), + ...(0, vue.unref)(pendingRowHeights) + }; + resetAfterIndex((0, vue.unref)(resetIndex), false); + pendingRowHeights.value = {}; + resetIndex.value = null; + mainTableRef.value?.forceUpdate(); + leftTableRef.value?.forceUpdate(); + rightTableRef.value?.forceUpdate(); + vm.proxy?.$forceUpdate(); + isResetting.value = false; + }, 0); + function resetAfterIndex(index, forceUpdate = false) { + if (!(0, vue.unref)(isDynamic)) return; + [ + mainTableRef, + leftTableRef, + rightTableRef + ].forEach((tableRef) => { + const table = (0, vue.unref)(tableRef); + if (table) table.resetAfterRowIndex(index, forceUpdate); + }); + } + function resetHeights(rowKey, height, rowIdx) { + const resetIdx = (0, vue.unref)(resetIndex); + if (resetIdx === null) resetIndex.value = rowIdx; + else if (resetIdx > rowIdx) resetIndex.value = rowIdx; + pendingRowHeights.value[rowKey] = height; + } + function onRowHeightChange({ rowKey, height, rowIndex }, fixedDir) { + if (!fixedDir) mainTableHeights.value[rowKey] = height; + else if (fixedDir === FixedDir.RIGHT) rightTableHeights.value[rowKey] = height; + else leftTableHeights.value[rowKey] = height; + const maximumHeight = Math.max(...[ + leftTableHeights, + rightTableHeights, + mainTableHeights + ].map((records) => records.value[rowKey] || 0)); + if ((0, vue.unref)(rowHeights)[rowKey] !== maximumHeight) { + resetHeights(rowKey, maximumHeight, rowIndex); + flushingRowHeights(); + } + } + return { + expandedRowKeys, + lastRenderedRowIndex, + isDynamic, + isResetting, + rowHeights, + resetAfterIndex, + onRowExpanded, + onRowHovered, + onRowsRendered, + onRowHeightChange + }; + }; + +//#endregion +//#region ../../packages/components/table-v2/src/composables/use-data.ts + const useData = (props, { expandedRowKeys, lastRenderedRowIndex, resetAfterIndex }) => { + const depthMap = (0, vue.ref)({}); + const flattenedData = (0, vue.computed)(() => { + const depths = {}; + const { data, rowKey } = props; + const _expandedRowKeys = (0, vue.unref)(expandedRowKeys); + if (!_expandedRowKeys || !_expandedRowKeys.length) return data; + const array = []; + const keysSet = /* @__PURE__ */ new Set(); + _expandedRowKeys.forEach((x) => keysSet.add(x)); + let copy = data.slice(); + copy.forEach((x) => depths[x[rowKey]] = 0); + while (copy.length > 0) { + const item = copy.shift(); + array.push(item); + if (keysSet.has(item[rowKey]) && isArray$1(item.children) && item.children.length > 0) { + copy = [...item.children, ...copy]; + item.children.forEach((child) => depths[child[rowKey]] = depths[item[rowKey]] + 1); + } + } + depthMap.value = depths; + return array; + }); + const data = (0, vue.computed)(() => { + const { data, expandColumnKey } = props; + return expandColumnKey ? (0, vue.unref)(flattenedData) : data; + }); + (0, vue.watch)(data, (val, prev) => { + if (val !== prev) { + lastRenderedRowIndex.value = -1; + resetAfterIndex(0, true); + } + }); + return { + data, + depthMap + }; + }; + +//#endregion +//#region ../../packages/components/table-v2/src/utils.ts + const sumReducer = (sum, num) => sum + num; + const sum = (listLike) => { + return isArray$1(listLike) ? listLike.reduce(sumReducer, 0) : listLike; + }; + const tryCall = (fLike, params, defaultRet = {}) => { + return isFunction$1(fLike) ? fLike(params) : fLike ?? defaultRet; + }; + const enforceUnit = (style) => { + [ + "width", + "maxWidth", + "minWidth", + "height" + ].forEach((key) => { + style[key] = addUnit(style[key]); + }); + return style; + }; + const componentToSlot = (ComponentLike) => (0, vue.isVNode)(ComponentLike) ? (props) => (0, vue.h)(ComponentLike, props) : ComponentLike; + +//#endregion +//#region ../../packages/components/table-v2/src/composables/use-styles.ts + const useStyles = (props, { columnsTotalWidth, rowsHeight, fixedColumnsOnLeft, fixedColumnsOnRight }) => { + const bodyWidth = (0, vue.computed)(() => { + const { fixed, width, vScrollbarSize } = props; + const ret = width - vScrollbarSize; + return fixed ? Math.max(Math.round((0, vue.unref)(columnsTotalWidth)), ret) : ret; + }); + const mainTableHeight = (0, vue.computed)(() => { + const { height = 0, maxHeight = 0, footerHeight, hScrollbarSize } = props; + if (maxHeight > 0) { + const _fixedRowsHeight = (0, vue.unref)(fixedRowsHeight); + const _rowsHeight = (0, vue.unref)(rowsHeight); + const total = (0, vue.unref)(headerHeight) + _fixedRowsHeight + _rowsHeight + hScrollbarSize; + return Math.min(total, maxHeight - footerHeight); + } + return height - footerHeight; + }); + const fixedTableHeight = (0, vue.computed)(() => { + const { maxHeight } = props; + const tableHeight = (0, vue.unref)(mainTableHeight); + if (isNumber(maxHeight) && maxHeight > 0) return tableHeight; + const totalHeight = (0, vue.unref)(rowsHeight) + (0, vue.unref)(headerHeight) + (0, vue.unref)(fixedRowsHeight); + return Math.min(tableHeight, totalHeight); + }); + const mapColumn = (column) => column.width; + const leftTableWidth = (0, vue.computed)(() => sum((0, vue.unref)(fixedColumnsOnLeft).map(mapColumn))); + const rightTableWidth = (0, vue.computed)(() => sum((0, vue.unref)(fixedColumnsOnRight).map(mapColumn))); + const headerHeight = (0, vue.computed)(() => sum(props.headerHeight)); + const fixedRowsHeight = (0, vue.computed)(() => { + return (props.fixedData?.length || 0) * props.rowHeight; + }); + const windowHeight = (0, vue.computed)(() => { + return (0, vue.unref)(mainTableHeight) - (0, vue.unref)(headerHeight) - (0, vue.unref)(fixedRowsHeight); + }); + const rootStyle = (0, vue.computed)(() => { + const { style = {}, height, width } = props; + return enforceUnit({ + ...style, + height, + width + }); + }); + return { + bodyWidth, + fixedTableHeight, + mainTableHeight, + leftTableWidth, + rightTableWidth, + windowHeight, + footerHeight: (0, vue.computed)(() => enforceUnit({ height: props.footerHeight })), + emptyStyle: (0, vue.computed)(() => ({ + top: addUnit((0, vue.unref)(headerHeight)), + bottom: addUnit(props.footerHeight), + width: addUnit(props.width) + })), + rootStyle, + headerHeight + }; + }; + +//#endregion +//#region ../../packages/components/table-v2/src/composables/use-auto-resize.ts + const useAutoResize = (props) => { + const sizer = (0, vue.ref)(); + const width$ = (0, vue.ref)(0); + const height$ = (0, vue.ref)(0); + let resizerStopper; + (0, vue.onMounted)(() => { + resizerStopper = useResizeObserver(sizer, ([entry]) => { + const { width, height } = entry.contentRect; + const { paddingLeft, paddingRight, paddingTop, paddingBottom } = getComputedStyle(entry.target); + const left = Number.parseInt(paddingLeft) || 0; + const right = Number.parseInt(paddingRight) || 0; + const top = Number.parseInt(paddingTop) || 0; + const bottom = Number.parseInt(paddingBottom) || 0; + width$.value = width - left - right; + height$.value = height - top - bottom; + }).stop; + }); + (0, vue.onBeforeUnmount)(() => { + resizerStopper?.(); + }); + (0, vue.watch)([width$, height$], ([width, height]) => { + props.onResize?.({ + width, + height + }); + }); + return { + sizer, + width: width$, + height: height$ + }; + }; + +//#endregion +//#region ../../packages/components/table-v2/src/use-table.ts + function useTable(props) { + const mainTableRef = (0, vue.ref)(); + const leftTableRef = (0, vue.ref)(); + const rightTableRef = (0, vue.ref)(); + const { columns, columnsStyles, columnsTotalWidth, fixedColumnsOnLeft, fixedColumnsOnRight, hasFixedColumns, mainColumns, onColumnSorted } = useColumns(props, (0, vue.toRef)(props, "columns"), (0, vue.toRef)(props, "fixed")); + const { scrollTo, scrollToLeft, scrollToTop, scrollToRow, onScroll, onVerticalScroll, scrollPos } = useScrollbar(props, { + mainTableRef, + leftTableRef, + rightTableRef, + onMaybeEndReached + }); + const ns = useNamespace("table-v2"); + const instance = (0, vue.getCurrentInstance)(); + const isScrolling = (0, vue.shallowRef)(false); + const { expandedRowKeys, lastRenderedRowIndex, isDynamic, isResetting, rowHeights, resetAfterIndex, onRowExpanded, onRowHeightChange, onRowHovered, onRowsRendered } = useRow(props, { + mainTableRef, + leftTableRef, + rightTableRef, + tableInstance: instance, + ns, + isScrolling + }); + const { data, depthMap } = useData(props, { + expandedRowKeys, + lastRenderedRowIndex, + resetAfterIndex + }); + const rowsHeight = (0, vue.computed)(() => { + const { estimatedRowHeight, rowHeight } = props; + const _data = (0, vue.unref)(data); + if (isNumber(estimatedRowHeight)) return Object.values((0, vue.unref)(rowHeights)).reduce((acc, curr) => acc + curr, 0); + return _data.length * rowHeight; + }); + const { bodyWidth, fixedTableHeight, mainTableHeight, leftTableWidth, rightTableWidth, windowHeight, footerHeight, emptyStyle, rootStyle, headerHeight } = useStyles(props, { + columnsTotalWidth, + fixedColumnsOnLeft, + fixedColumnsOnRight, + rowsHeight + }); + const containerRef = (0, vue.ref)(); + const showEmpty = (0, vue.computed)(() => { + const noData = (0, vue.unref)(data).length === 0; + return isArray$1(props.fixedData) ? props.fixedData.length === 0 && noData : noData; + }); + function getRowHeight(rowIndex) { + const { estimatedRowHeight, rowHeight, rowKey } = props; + if (!estimatedRowHeight) return rowHeight; + return (0, vue.unref)(rowHeights)[(0, vue.unref)(data)[rowIndex][rowKey]] || estimatedRowHeight; + } + const isEndReached = (0, vue.ref)(false); + function onMaybeEndReached() { + const { onEndReached } = props; + if (!onEndReached) return; + const { scrollTop } = (0, vue.unref)(scrollPos); + const _totalHeight = (0, vue.unref)(rowsHeight); + const remainDistance = _totalHeight - (scrollTop + (0, vue.unref)(windowHeight)) + props.hScrollbarSize; + if (!isEndReached.value && (0, vue.unref)(lastRenderedRowIndex) >= 0 && _totalHeight <= scrollTop + (0, vue.unref)(mainTableHeight) - (0, vue.unref)(headerHeight)) { + isEndReached.value = true; + onEndReached(remainDistance); + } else isEndReached.value = false; + } + (0, vue.watch)(() => (0, vue.unref)(rowsHeight), () => isEndReached.value = false); + (0, vue.watch)(() => props.expandedRowKeys, (val) => expandedRowKeys.value = val, { deep: true }); + return { + columns, + containerRef, + mainTableRef, + leftTableRef, + rightTableRef, + isDynamic, + isResetting, + isScrolling, + hasFixedColumns, + columnsStyles, + columnsTotalWidth, + data, + expandedRowKeys, + depthMap, + fixedColumnsOnLeft, + fixedColumnsOnRight, + mainColumns, + bodyWidth, + emptyStyle, + rootStyle, + footerHeight, + mainTableHeight, + fixedTableHeight, + leftTableWidth, + rightTableWidth, + showEmpty, + getRowHeight, + onColumnSorted, + onRowHovered, + onRowExpanded, + onRowsRendered, + onRowHeightChange, + scrollTo, + scrollToLeft, + scrollToTop, + scrollToRow, + onScroll, + onVerticalScroll + }; + } + +//#endregion +//#region ../../packages/components/table-v2/src/tokens.ts + const TableV2InjectionKey = Symbol("tableV2"); + const TABLE_V2_GRID_INJECTION_KEY = "tableV2GridScrollLeft"; + +//#endregion +//#region ../../packages/components/table-v2/src/common.ts +/** + * @Note even though we can use `string[] | string` as the type but for + * convenience here we only use `string` as the acceptable value here. + */ + const classType = String; + const columns = { + type: definePropType(Array), + required: true + }; + const column = { type: definePropType(Object) }; + const fixedDataType = { type: definePropType(Array) }; + const dataType = { + ...fixedDataType, + required: true + }; + const expandColumnKey = String; + const expandKeys = { + type: definePropType(Array), + default: () => mutable([]) + }; + const requiredNumber = { + type: Number, + required: true + }; + const rowKey = { + type: definePropType([ + String, + Number, + Symbol + ]), + default: "id" + }; + /** + * @note even though we can use `StyleValue` but that would be difficult for us to mapping them, + * so we only use `CSSProperties` as the acceptable value here. + */ + const styleType = { type: definePropType(Object) }; + +//#endregion +//#region ../../packages/components/table-v2/src/row.ts + const tableV2RowProps = buildProps({ + class: String, + columns, + columnsStyles: { + type: definePropType(Object), + required: true + }, + depth: Number, + expandColumnKey, + estimatedRowHeight: { + ...virtualizedGridProps.estimatedRowHeight, + default: void 0 + }, + isScrolling: Boolean, + onRowExpand: { type: definePropType(Function) }, + onRowHover: { type: definePropType(Function) }, + onRowHeightChange: { type: definePropType(Function) }, + rowData: { + type: definePropType(Object), + required: true + }, + rowEventHandlers: { type: definePropType(Object) }, + rowIndex: { + type: Number, + required: true + }, + rowKey, + style: { type: definePropType(Object) } + }); + +//#endregion +//#region ../../packages/components/table-v2/src/header.ts + const requiredNumberType = { + type: Number, + required: true + }; + const tableV2HeaderProps = buildProps({ + class: String, + columns, + fixedHeaderData: { type: definePropType(Array) }, + headerData: { + type: definePropType(Array), + required: true + }, + headerHeight: { + type: definePropType([Number, Array]), + default: 50 + }, + rowWidth: requiredNumberType, + rowHeight: { + type: Number, + default: 50 + }, + height: requiredNumberType, + width: requiredNumberType + }); + +//#endregion +//#region ../../packages/components/table-v2/src/grid.ts + const tableV2GridProps = buildProps({ + columns, + data: dataType, + fixedData: fixedDataType, + estimatedRowHeight: tableV2RowProps.estimatedRowHeight, + width: requiredNumber, + height: requiredNumber, + headerWidth: requiredNumber, + headerHeight: tableV2HeaderProps.headerHeight, + bodyWidth: requiredNumber, + rowHeight: requiredNumber, + cache: virtualizedListProps.cache, + useIsScrolling: Boolean, + scrollbarAlwaysOn: virtualizedGridProps.scrollbarAlwaysOn, + scrollbarStartGap: virtualizedGridProps.scrollbarStartGap, + scrollbarEndGap: virtualizedGridProps.scrollbarEndGap, + class: classType, + style: styleType, + containerStyle: styleType, + getRowHeight: { + type: definePropType(Function), + required: true + }, + rowKey: tableV2RowProps.rowKey, + onRowsRendered: { type: definePropType(Function) }, + onScroll: { type: definePropType(Function) } + }); + +//#endregion +//#region ../../packages/components/table-v2/src/table.ts + const tableV2Props = buildProps({ + cache: tableV2GridProps.cache, + estimatedRowHeight: tableV2RowProps.estimatedRowHeight, + rowKey, + headerClass: { type: definePropType([String, Function]) }, + headerProps: { type: definePropType([Object, Function]) }, + headerCellProps: { type: definePropType([Object, Function]) }, + headerHeight: tableV2HeaderProps.headerHeight, + footerHeight: { + type: Number, + default: 0 + }, + rowClass: { type: definePropType([String, Function]) }, + rowProps: { type: definePropType([Object, Function]) }, + rowHeight: { + type: Number, + default: 50 + }, + cellProps: { type: definePropType([Object, Function]) }, + columns, + data: dataType, + dataGetter: { type: definePropType(Function) }, + fixedData: fixedDataType, + expandColumnKey: tableV2RowProps.expandColumnKey, + expandedRowKeys: expandKeys, + defaultExpandedRowKeys: expandKeys, + class: classType, + fixed: Boolean, + style: { type: definePropType(Object) }, + width: requiredNumber, + height: requiredNumber, + maxHeight: Number, + useIsScrolling: Boolean, + indentSize: { + type: Number, + default: 12 + }, + iconSize: { + type: Number, + default: 12 + }, + hScrollbarSize: virtualizedGridProps.hScrollbarSize, + vScrollbarSize: virtualizedGridProps.vScrollbarSize, + scrollbarAlwaysOn: virtualizedScrollbarProps.alwaysOn, + sortBy: { + type: definePropType(Object), + default: () => ({}) + }, + sortState: { + type: definePropType(Object), + default: void 0 + }, + onColumnSort: { type: definePropType(Function) }, + onExpandedRowsChange: { type: definePropType(Function) }, + onEndReached: { type: definePropType(Function) }, + onRowExpand: tableV2RowProps.onRowExpand, + onScroll: tableV2GridProps.onScroll, + onRowsRendered: tableV2GridProps.onRowsRendered, + rowEventHandlers: tableV2RowProps.rowEventHandlers + }); + +//#endregion +//#region ../../packages/components/table-v2/src/components/cell.tsx + const TableV2Cell = (props, { slots }) => { + const { cellData, style } = props; + const displayText = cellData?.toString?.() || ""; + const defaultSlot = (0, vue.renderSlot)(slots, "default", props, () => [displayText]); + return (0, vue.createVNode)("div", { + "class": props.class, + "title": displayText, + "style": style + }, [defaultSlot]); + }; + TableV2Cell.displayName = "ElTableV2Cell"; + TableV2Cell.inheritAttrs = false; + +//#endregion +//#region ../../packages/components/table-v2/src/components/header-cell.tsx + const HeaderCell = (props, { slots }) => (0, vue.renderSlot)(slots, "default", props, () => [(0, vue.createVNode)("div", { + "class": props.class, + "title": props.column?.title + }, [props.column?.title])]); + HeaderCell.displayName = "ElTableV2HeaderCell"; + HeaderCell.inheritAttrs = false; + +//#endregion +//#region ../../packages/components/table-v2/src/header-row.ts + const tableV2HeaderRowProps = buildProps({ + class: String, + columns, + columnsStyles: { + type: definePropType(Object), + required: true + }, + headerIndex: Number, + style: { type: definePropType(Object) } + }); + +//#endregion +//#region ../../packages/components/table-v2/src/components/header-row.tsx + const TableV2HeaderRow = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTableV2HeaderRow", + props: tableV2HeaderRowProps, + setup(props, { slots }) { + return () => { + const { columns, columnsStyles, headerIndex, style } = props; + let Cells = columns.map((column, columnIndex) => { + return slots.cell({ + columns, + column, + columnIndex, + headerIndex, + style: columnsStyles[column.key] + }); + }); + if (slots.header) Cells = slots.header({ + cells: Cells.map((node) => { + if (isArray$1(node) && node.length === 1) return node[0]; + return node; + }), + columns, + headerIndex + }); + return (0, vue.createVNode)("div", { + "class": props.class, + "style": style, + "role": "row" + }, [Cells]); + }; + } + }); + +//#endregion +//#region ../../packages/components/table-v2/src/components/header.tsx + const TableV2Header = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTableV2Header", + props: tableV2HeaderProps, + setup(props, { slots, expose }) { + const ns = useNamespace("table-v2"); + const scrollLeftInfo = (0, vue.inject)(TABLE_V2_GRID_INJECTION_KEY); + const headerRef = (0, vue.ref)(); + const headerStyle = (0, vue.computed)(() => enforceUnit({ + width: props.width, + height: props.height + })); + const rowStyle = (0, vue.computed)(() => enforceUnit({ + width: props.rowWidth, + height: props.height + })); + const headerHeights = (0, vue.computed)(() => castArray$1((0, vue.unref)(props.headerHeight))); + const scrollToLeft = (left) => { + const headerEl = (0, vue.unref)(headerRef); + (0, vue.nextTick)(() => { + headerEl?.scroll && headerEl.scroll({ left }); + }); + }; + const renderFixedRows = () => { + const fixedRowClassName = ns.e("fixed-header-row"); + const { columns, fixedHeaderData, rowHeight } = props; + return fixedHeaderData?.map((fixedRowData, fixedRowIndex) => { + const style = enforceUnit({ + height: rowHeight, + width: "100%" + }); + return slots.fixed?.({ + class: fixedRowClassName, + columns, + rowData: fixedRowData, + rowIndex: -(fixedRowIndex + 1), + style + }); + }); + }; + const renderDynamicRows = () => { + const dynamicRowClassName = ns.e("dynamic-header-row"); + const { columns } = props; + return (0, vue.unref)(headerHeights).map((rowHeight, rowIndex) => { + const style = enforceUnit({ + width: "100%", + height: rowHeight + }); + return slots.dynamic?.({ + class: dynamicRowClassName, + columns, + headerIndex: rowIndex, + style + }); + }); + }; + (0, vue.onUpdated)(() => { + if (scrollLeftInfo?.value) scrollToLeft(scrollLeftInfo.value); + }); + expose({ scrollToLeft }); + return () => { + if (props.height <= 0) return; + return (0, vue.createVNode)("div", { + "ref": headerRef, + "class": props.class, + "style": (0, vue.unref)(headerStyle), + "role": "rowgroup" + }, [(0, vue.createVNode)("div", { + "style": (0, vue.unref)(rowStyle), + "class": ns.e("header") + }, [renderDynamicRows(), renderFixedRows()])]); + }; + } + }); + +//#endregion +//#region ../../packages/components/table-v2/src/components/row.tsx + const useTableRow = (props) => { + const { isScrolling } = (0, vue.inject)(TableV2InjectionKey); + const measured = (0, vue.ref)(false); + const rowRef = (0, vue.ref)(); + const measurable = (0, vue.computed)(() => { + return isNumber(props.estimatedRowHeight) && props.rowIndex >= 0; + }); + const doMeasure = (isInit = false) => { + const $rowRef = (0, vue.unref)(rowRef); + if (!$rowRef) return; + const { columns, onRowHeightChange, rowKey, rowIndex, style } = props; + const { height } = $rowRef.getBoundingClientRect(); + measured.value = true; + (0, vue.nextTick)(() => { + if (isInit || height !== Number.parseInt(style.height)) { + const firstColumn = columns[0]; + const isPlaceholder = firstColumn?.placeholderSign === placeholderSign; + onRowHeightChange?.({ + rowKey, + height, + rowIndex + }, firstColumn && !isPlaceholder && firstColumn.fixed); + } + }); + }; + const eventHandlers = (0, vue.computed)(() => { + const { rowData, rowIndex, rowKey, onRowHover } = props; + const handlers = props.rowEventHandlers || {}; + const eventHandlers = {}; + Object.entries(handlers).forEach(([eventName, handler]) => { + if (isFunction$1(handler)) eventHandlers[eventName] = (event) => { + handler({ + event, + rowData, + rowIndex, + rowKey + }); + }; + }); + if (onRowHover) [{ + name: "onMouseleave", + hovered: false + }, { + name: "onMouseenter", + hovered: true + }].forEach(({ name, hovered }) => { + const existedHandler = eventHandlers[name]; + eventHandlers[name] = (event) => { + onRowHover({ + event, + hovered, + rowData, + rowIndex, + rowKey + }); + existedHandler?.(event); + }; + }); + return eventHandlers; + }); + const onExpand = (expanded) => { + const { onRowExpand, rowData, rowIndex, rowKey } = props; + onRowExpand?.({ + expanded, + rowData, + rowIndex, + rowKey + }); + }; + (0, vue.onMounted)(() => { + if ((0, vue.unref)(measurable)) doMeasure(true); + }); + return { + isScrolling, + measurable, + measured, + rowRef, + eventHandlers, + onExpand + }; + }; + const TableV2Row = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTableV2TableRow", + props: tableV2RowProps, + setup(props, { expose, slots, attrs }) { + const { eventHandlers, isScrolling, measurable, measured, rowRef, onExpand } = useTableRow(props); + expose({ onExpand }); + return () => { + const { columns, columnsStyles, expandColumnKey, depth, rowData, rowIndex, style } = props; + let ColumnCells = columns.map((column, columnIndex) => { + const expandable = isArray$1(rowData.children) && rowData.children.length > 0 && column.key === expandColumnKey; + return slots.cell({ + column, + columns, + columnIndex, + depth, + style: columnsStyles[column.key], + rowData, + rowIndex, + isScrolling: (0, vue.unref)(isScrolling), + expandIconProps: expandable ? { + rowData, + rowIndex, + onExpand + } : void 0 + }); + }); + if (slots.row) ColumnCells = slots.row({ + cells: ColumnCells.map((node) => { + if (isArray$1(node) && node.length === 1) return node[0]; + return node; + }), + style, + columns, + depth, + rowData, + rowIndex, + isScrolling: (0, vue.unref)(isScrolling) + }); + if ((0, vue.unref)(measurable)) { + const { height, ...exceptHeightStyle } = style || {}; + const _measured = (0, vue.unref)(measured); + return (0, vue.createVNode)("div", (0, vue.mergeProps)({ + "ref": rowRef, + "class": props.class, + "style": _measured ? style : exceptHeightStyle, + "role": "row" + }, attrs, (0, vue.unref)(eventHandlers)), [ColumnCells]); + } + return (0, vue.createVNode)("div", (0, vue.mergeProps)(attrs, { + "ref": rowRef, + "class": props.class, + "style": style, + "role": "row" + }, (0, vue.unref)(eventHandlers)), [ColumnCells]); + }; + } + }); + +//#endregion +//#region ../../packages/components/table-v2/src/components/sort-icon.tsx + const SortIcon = (props) => { + const { sortOrder } = props; + return (0, vue.createVNode)("button", { + "type": "button", + "aria-label": props.ariaLabel, + "class": props.class + }, [(0, vue.createVNode)(ElIcon, { "size": 14 }, { default: () => [sortOrder === SortOrder.ASC ? (0, vue.createVNode)(sort_up_default, null, null) : (0, vue.createVNode)(sort_down_default, null, null)] })]); + }; + +//#endregion +//#region ../../packages/components/table-v2/src/components/expand-icon.tsx + const ExpandIcon = (props) => { + const { expanded, expandable, onExpand, style, size, ariaLabel } = props; + return (0, vue.createVNode)("button", (0, vue.mergeProps)({ + onClick: expandable ? () => onExpand(!expanded) : void 0, + ariaLabel, + ariaExpanded: expanded, + class: props.class + }, { "type": "button" }), [(0, vue.createVNode)(ElIcon, { + "size": size, + "style": style + }, { default: () => [(0, vue.createVNode)(arrow_right_default, null, null)] })]); + }; + ExpandIcon.inheritAttrs = false; + +//#endregion +//#region ../../packages/components/table-v2/src/table-grid.tsx + const COMPONENT_NAME$5 = "ElTableV2Grid"; + const useTableGrid = (props) => { + const headerRef = (0, vue.ref)(); + const bodyRef = (0, vue.ref)(); + const scrollLeft = (0, vue.ref)(0); + const totalHeight = (0, vue.computed)(() => { + const { data, rowHeight, estimatedRowHeight } = props; + if (estimatedRowHeight) return; + return data.length * rowHeight; + }); + const fixedRowHeight = (0, vue.computed)(() => { + const { fixedData, rowHeight } = props; + return (fixedData?.length || 0) * rowHeight; + }); + const headerHeight = (0, vue.computed)(() => sum(props.headerHeight)); + const gridHeight = (0, vue.computed)(() => { + const { height } = props; + return Math.max(0, height - (0, vue.unref)(headerHeight) - (0, vue.unref)(fixedRowHeight)); + }); + const hasHeader = (0, vue.computed)(() => { + return (0, vue.unref)(headerHeight) + (0, vue.unref)(fixedRowHeight) > 0; + }); + const itemKey = ({ data, rowIndex }) => data[rowIndex][props.rowKey]; + function onItemRendered({ rowCacheStart, rowCacheEnd, rowVisibleStart, rowVisibleEnd }) { + props.onRowsRendered?.({ + rowCacheStart, + rowCacheEnd, + rowVisibleStart, + rowVisibleEnd + }); + } + function resetAfterRowIndex(index, forceUpdate) { + bodyRef.value?.resetAfterRowIndex(index, forceUpdate); + } + function scrollTo(leftOrOptions, top) { + const header$ = (0, vue.unref)(headerRef); + const body$ = (0, vue.unref)(bodyRef); + if (isObject$1(leftOrOptions)) { + header$?.scrollToLeft(leftOrOptions.scrollLeft); + scrollLeft.value = leftOrOptions.scrollLeft; + body$?.scrollTo(leftOrOptions); + } else { + header$?.scrollToLeft(leftOrOptions); + scrollLeft.value = leftOrOptions; + body$?.scrollTo({ + scrollLeft: leftOrOptions, + scrollTop: top + }); + } + } + function scrollToTop(scrollTop) { + (0, vue.unref)(bodyRef)?.scrollTo({ scrollTop }); + } + function scrollToRow(row, strategy) { + const body = (0, vue.unref)(bodyRef); + if (!body) return; + const prevScrollLeft = scrollLeft.value; + body.scrollToItem(row, 0, strategy); + if (prevScrollLeft) scrollTo({ scrollLeft: prevScrollLeft }); + } + function forceUpdate() { + (0, vue.unref)(bodyRef)?.$forceUpdate(); + (0, vue.unref)(headerRef)?.$forceUpdate(); + } + (0, vue.watch)(() => props.bodyWidth, () => { + if (isNumber(props.estimatedRowHeight)) bodyRef.value?.resetAfter({ columnIndex: 0 }, false); + }); + return { + bodyRef, + forceUpdate, + fixedRowHeight, + gridHeight, + hasHeader, + headerHeight, + headerRef, + totalHeight, + itemKey, + onItemRendered, + resetAfterRowIndex, + scrollTo, + scrollToTop, + scrollToRow, + scrollLeft + }; + }; + const TableGrid = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$5, + props: tableV2GridProps, + setup(props, { slots, expose }) { + const { ns } = (0, vue.inject)(TableV2InjectionKey); + const { bodyRef, fixedRowHeight, gridHeight, hasHeader, headerRef, headerHeight, totalHeight, forceUpdate, itemKey, onItemRendered, resetAfterRowIndex, scrollTo, scrollToTop, scrollToRow, scrollLeft } = useTableGrid(props); + (0, vue.provide)(TABLE_V2_GRID_INJECTION_KEY, scrollLeft); + (0, vue.onActivated)(async () => { + await (0, vue.nextTick)(); + const scrollTop = bodyRef.value?.states.scrollTop; + scrollTop && scrollToTop(Math.round(scrollTop) + 1); + }); + expose({ + forceUpdate, + totalHeight, + scrollTo, + scrollToTop, + scrollToRow, + resetAfterRowIndex + }); + const getColumnWidth = () => props.bodyWidth; + return () => { + const { cache, columns, data, fixedData, useIsScrolling, scrollbarAlwaysOn, scrollbarEndGap, scrollbarStartGap, style, rowHeight, bodyWidth, estimatedRowHeight, headerWidth, height, width, getRowHeight, onScroll } = props; + const isDynamicRowEnabled = isNumber(estimatedRowHeight); + const Grid = isDynamicRowEnabled ? DynamicSizeGrid : FixedSizeGrid; + const _headerHeight = (0, vue.unref)(headerHeight); + return (0, vue.createVNode)("div", { + "role": "table", + "class": [ns.e("table"), props.class], + "style": style + }, [(0, vue.createVNode)(Grid, { + "ref": bodyRef, + "data": data, + "useIsScrolling": useIsScrolling, + "itemKey": itemKey, + "columnCache": 0, + "columnWidth": isDynamicRowEnabled ? getColumnWidth : bodyWidth, + "totalColumn": 1, + "totalRow": data.length, + "rowCache": cache, + "rowHeight": isDynamicRowEnabled ? getRowHeight : rowHeight, + "width": width, + "height": (0, vue.unref)(gridHeight), + "class": ns.e("body"), + "role": "rowgroup", + "scrollbarStartGap": scrollbarStartGap, + "scrollbarEndGap": scrollbarEndGap, + "scrollbarAlwaysOn": scrollbarAlwaysOn, + "onScroll": onScroll, + "onItemRendered": onItemRendered, + "perfMode": false + }, { default: (params) => { + const rowData = data[params.rowIndex]; + return slots.row?.({ + ...params, + columns, + rowData + }); + } }), (0, vue.unref)(hasHeader) && (0, vue.createVNode)(TableV2Header, { + "ref": headerRef, + "class": ns.e("header-wrapper"), + "columns": columns, + "headerData": data, + "headerHeight": props.headerHeight, + "fixedHeaderData": fixedData, + "rowWidth": headerWidth, + "rowHeight": rowHeight, + "width": width, + "height": Math.min(_headerHeight + (0, vue.unref)(fixedRowHeight), height) + }, { + dynamic: slots.header, + fixed: slots.row + })]); + }; + } + }); + +//#endregion +//#region ../../packages/components/table-v2/src/renderers/main-table.tsx + function _isSlot$5(s) { + return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !(0, vue.isVNode)(s); + } + const MainTable = (props, { slots }) => { + const { mainTableRef, ...rest } = props; + return (0, vue.createVNode)(TableGrid, (0, vue.mergeProps)({ "ref": mainTableRef }, rest), _isSlot$5(slots) ? slots : { default: () => [slots] }); + }; + +//#endregion +//#region ../../packages/components/table-v2/src/renderers/left-table.tsx + function _isSlot$4(s) { + return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !(0, vue.isVNode)(s); + } + const LeftTable = (props, { slots }) => { + if (!props.columns.length) return; + const { leftTableRef, ...rest } = props; + return (0, vue.createVNode)(TableGrid, (0, vue.mergeProps)({ "ref": leftTableRef }, rest), _isSlot$4(slots) ? slots : { default: () => [slots] }); + }; + +//#endregion +//#region ../../packages/components/table-v2/src/renderers/right-table.tsx + function _isSlot$3(s) { + return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !(0, vue.isVNode)(s); + } + const RightTable = (props, { slots }) => { + if (!props.columns.length) return; + const { rightTableRef, ...rest } = props; + return (0, vue.createVNode)(TableGrid, (0, vue.mergeProps)({ "ref": rightTableRef }, rest), _isSlot$3(slots) ? slots : { default: () => [slots] }); + }; + +//#endregion +//#region ../../packages/components/table-v2/src/renderers/row.tsx + function _isSlot$2(s) { + return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !(0, vue.isVNode)(s); + } + const RowRenderer = (props, { slots }) => { + const { columns, columnsStyles, depthMap, expandColumnKey, expandedRowKeys, estimatedRowHeight, hasFixedColumns, rowData, rowIndex, style, isScrolling, rowProps, rowClass, rowKey, rowEventHandlers, ns, onRowHovered, onRowExpanded } = props; + const rowKls = tryCall(rowClass, { + columns, + rowData, + rowIndex + }, ""); + const additionalProps = tryCall(rowProps, { + columns, + rowData, + rowIndex + }); + const _rowKey = rowData[rowKey]; + const depth = depthMap[_rowKey] || 0; + const canExpand = Boolean(expandColumnKey); + const isFixedRow = rowIndex < 0; + const kls = [ + ns.e("row"), + rowKls, + ns.is("expanded", canExpand && expandedRowKeys.includes(_rowKey)), + ns.is("fixed", !depth && isFixedRow), + ns.is("customized", Boolean(slots.row)), + { [ns.e(`row-depth-${depth}`)]: canExpand && rowIndex >= 0 } + ]; + const onRowHover = hasFixedColumns ? onRowHovered : void 0; + const _rowProps = { + ...additionalProps, + columns, + columnsStyles, + class: kls, + depth, + expandColumnKey, + estimatedRowHeight: isFixedRow ? void 0 : estimatedRowHeight, + isScrolling, + rowIndex, + rowData, + rowKey: _rowKey, + rowEventHandlers, + style + }; + const handlerMouseEnter = (e) => { + onRowHover?.({ + hovered: true, + rowKey: _rowKey, + event: e, + rowData, + rowIndex + }); + }; + const handlerMouseLeave = (e) => { + onRowHover?.({ + hovered: false, + rowKey: _rowKey, + event: e, + rowData, + rowIndex + }); + }; + return (0, vue.createVNode)(TableV2Row, (0, vue.mergeProps)(_rowProps, { + "onRowExpand": onRowExpanded, + "onMouseenter": handlerMouseEnter, + "onMouseleave": handlerMouseLeave, + "rowkey": _rowKey + }), _isSlot$2(slots) ? slots : { default: () => [slots] }); + }; + +//#endregion +//#region ../../packages/components/table-v2/src/renderers/cell.tsx + const CellRenderer = ({ columns, column, columnIndex, depth, expandIconProps, isScrolling, rowData, rowIndex, style, expandedRowKeys, ns, t, cellProps: _cellProps, expandColumnKey, indentSize, iconSize, rowKey }, { slots }) => { + const cellStyle = enforceUnit(style); + if (column.placeholderSign === placeholderSign) return (0, vue.createVNode)("div", { + "class": ns.em("row-cell", "placeholder"), + "style": cellStyle + }, null); + const { cellRenderer, dataKey, dataGetter } = column; + const cellData = isFunction$1(dataGetter) ? dataGetter({ + columns, + column, + columnIndex, + rowData, + rowIndex + }) : get(rowData, dataKey ?? ""); + const extraCellProps = tryCall(_cellProps, { + cellData, + columns, + column, + columnIndex, + rowIndex, + rowData + }); + const cellProps = { + class: ns.e("cell-text"), + columns, + column, + columnIndex, + cellData, + isScrolling, + rowData, + rowIndex + }; + const columnCellRenderer = componentToSlot(cellRenderer); + const Cell = columnCellRenderer ? columnCellRenderer(cellProps) : (0, vue.renderSlot)(slots, "default", cellProps, () => [(0, vue.createVNode)(TableV2Cell, cellProps, null)]); + const kls = [ + ns.e("row-cell"), + column.class, + column.align === Alignment.CENTER && ns.is("align-center"), + column.align === Alignment.RIGHT && ns.is("align-right") + ]; + const expandable = rowIndex >= 0 && expandColumnKey && column.key === expandColumnKey; + const expanded = rowIndex >= 0 && expandedRowKeys.includes(rowData[rowKey]); + let IconOrPlaceholder; + const iconStyle = `margin-inline-start: ${depth * indentSize}px;`; + if (expandable) if (isObject$1(expandIconProps)) IconOrPlaceholder = (0, vue.createVNode)(ExpandIcon, (0, vue.mergeProps)(expandIconProps, { + "class": [ns.e("expand-icon"), ns.is("expanded", expanded)], + "size": iconSize, + "expanded": expanded, + "ariaLabel": t(expanded ? "el.table.collapseRowLabel" : "el.table.expandRowLabel"), + "style": iconStyle, + "expandable": true + }), null); + else IconOrPlaceholder = (0, vue.createVNode)("div", { "style": [iconStyle, `width: ${iconSize}px; height: ${iconSize}px;`].join(" ") }, null); + return (0, vue.createVNode)("div", (0, vue.mergeProps)({ + "class": kls, + "style": cellStyle + }, extraCellProps, { "role": "cell" }), [IconOrPlaceholder, Cell]); + }; + CellRenderer.inheritAttrs = false; + +//#endregion +//#region ../../packages/components/table-v2/src/renderers/header.tsx + function _isSlot$1(s) { + return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !(0, vue.isVNode)(s); + } + const HeaderRenderer = ({ columns, columnsStyles, headerIndex, style, headerClass, headerProps, ns }, { slots }) => { + const param = { + columns, + headerIndex + }; + const kls = [ + ns.e("header-row"), + tryCall(headerClass, param, ""), + ns.is("customized", Boolean(slots.header)) + ]; + return (0, vue.createVNode)(TableV2HeaderRow, { + ...tryCall(headerProps, param), + columnsStyles, + class: kls, + columns, + headerIndex, + style + }, _isSlot$1(slots) ? slots : { default: () => [slots] }); + }; + +//#endregion +//#region ../../packages/components/table-v2/src/renderers/header-cell.tsx + const HeaderCellRenderer = (props, { slots }) => { + const { column, ns, t, style, onColumnSorted } = props; + const cellStyle = enforceUnit(style); + if (column.placeholderSign === placeholderSign) return (0, vue.createVNode)("div", { + "class": ns.em("header-row-cell", "placeholder"), + "style": cellStyle + }, null); + const { headerCellRenderer, headerClass, sortable } = column; + /** + * render Cell children + */ + const cellProps = { + ...props, + class: ns.e("header-cell-text") + }; + const columnCellRenderer = componentToSlot(headerCellRenderer); + const Cell = columnCellRenderer ? columnCellRenderer(cellProps) : (0, vue.renderSlot)(slots, "default", cellProps, () => [(0, vue.createVNode)(HeaderCell, cellProps, null)]); + /** + * Render cell container and sort indicator + */ + const { sortBy, sortState, headerCellProps } = props; + let sorting, sortOrder, ariaSort; + if (sortState) { + const order = sortState[column.key]; + sorting = Boolean(oppositeOrderMap[order]); + sortOrder = sorting ? order : SortOrder.ASC; + } else { + sorting = column.key === sortBy.key; + sortOrder = sorting ? sortBy.order : SortOrder.ASC; + } + if (sortOrder === SortOrder.ASC) ariaSort = "ascending"; + else if (sortOrder === SortOrder.DESC) ariaSort = "descending"; + else ariaSort = void 0; + const cellKls = [ + ns.e("header-cell"), + tryCall(headerClass, props, ""), + column.align === Alignment.CENTER && ns.is("align-center"), + column.align === Alignment.RIGHT && ns.is("align-right"), + sortable && ns.is("sortable") + ]; + return (0, vue.createVNode)("div", (0, vue.mergeProps)({ + ...tryCall(headerCellProps, props), + onClick: column.sortable ? onColumnSorted : void 0, + ariaSort: sortable ? ariaSort : void 0, + class: cellKls, + style: cellStyle, + ["data-key"]: column.key + }, { "role": "columnheader" }), [Cell, sortable && (0, vue.createVNode)(SortIcon, { + "class": [ns.e("sort-icon"), sorting && ns.is("sorting")], + "sortOrder": sortOrder, + "ariaLabel": t("el.table.sortLabel", { column: column.title || "" }) + }, null)]); + }; + +//#endregion +//#region ../../packages/components/table-v2/src/renderers/footer.tsx + const Footer$1 = (props, { slots }) => { + return (0, vue.createVNode)("div", { + "class": props.class, + "style": props.style + }, [slots.default?.()]); + }; + Footer$1.displayName = "ElTableV2Footer"; + +//#endregion +//#region ../../packages/components/table-v2/src/renderers/empty.tsx + const Footer = (props, { slots }) => { + const defaultSlot = (0, vue.renderSlot)(slots, "default", {}, () => [(0, vue.createVNode)(ElEmpty, null, null)]); + return (0, vue.createVNode)("div", { + "class": props.class, + "style": props.style + }, [defaultSlot]); + }; + Footer.displayName = "ElTableV2Empty"; + +//#endregion +//#region ../../packages/components/table-v2/src/renderers/overlay.tsx + const Overlay = (props, { slots }) => { + return (0, vue.createVNode)("div", { + "class": props.class, + "style": props.style + }, [slots.default?.()]); + }; + Overlay.displayName = "ElTableV2Overlay"; + +//#endregion +//#region ../../packages/components/table-v2/src/table-v2.tsx + function _isSlot(s) { + return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !(0, vue.isVNode)(s); + } + const TableV2 = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTableV2", + props: tableV2Props, + slots: Object, + setup(props, { slots, expose }) { + const ns = useNamespace("table-v2"); + const { t } = useLocale(); + const { columnsStyles, fixedColumnsOnLeft, fixedColumnsOnRight, mainColumns, mainTableHeight, fixedTableHeight, leftTableWidth, rightTableWidth, data, depthMap, expandedRowKeys, hasFixedColumns, mainTableRef, leftTableRef, rightTableRef, isDynamic, isResetting, isScrolling, bodyWidth, emptyStyle, rootStyle, footerHeight, showEmpty, scrollTo, scrollToLeft, scrollToTop, scrollToRow, getRowHeight, onColumnSorted, onRowHeightChange, onRowHovered, onRowExpanded, onRowsRendered, onScroll, onVerticalScroll } = useTable(props); + expose({ + scrollTo, + scrollToLeft, + scrollToTop, + scrollToRow + }); + (0, vue.provide)(TableV2InjectionKey, { + ns, + isResetting, + isScrolling + }); + return () => { + const { cache, cellProps, estimatedRowHeight, expandColumnKey, fixedData, headerHeight, headerClass, headerProps, headerCellProps, sortBy, sortState, rowHeight, rowClass, rowEventHandlers, rowKey, rowProps, scrollbarAlwaysOn, indentSize, iconSize, useIsScrolling, vScrollbarSize, width } = props; + const _data = (0, vue.unref)(data); + const mainTableProps = { + cache, + class: ns.e("main"), + columns: (0, vue.unref)(mainColumns), + data: _data, + fixedData, + estimatedRowHeight, + bodyWidth: (0, vue.unref)(bodyWidth), + headerHeight, + headerWidth: (0, vue.unref)(bodyWidth), + height: (0, vue.unref)(mainTableHeight), + mainTableRef, + rowKey, + rowHeight, + scrollbarAlwaysOn, + scrollbarStartGap: 2, + scrollbarEndGap: vScrollbarSize, + useIsScrolling, + width, + getRowHeight, + onRowsRendered, + onScroll + }; + const leftColumnsWidth = (0, vue.unref)(leftTableWidth); + const _fixedTableHeight = (0, vue.unref)(fixedTableHeight); + const leftTableProps = { + cache, + class: ns.e("left"), + columns: (0, vue.unref)(fixedColumnsOnLeft), + data: _data, + fixedData, + estimatedRowHeight, + leftTableRef, + rowHeight, + bodyWidth: leftColumnsWidth, + headerWidth: leftColumnsWidth, + headerHeight, + height: _fixedTableHeight, + rowKey, + scrollbarAlwaysOn, + scrollbarStartGap: 2, + scrollbarEndGap: vScrollbarSize, + useIsScrolling, + width: leftColumnsWidth, + getRowHeight, + onScroll: onVerticalScroll + }; + const rightColumnsWidth = (0, vue.unref)(rightTableWidth); + const rightTableProps = { + cache, + class: ns.e("right"), + columns: (0, vue.unref)(fixedColumnsOnRight), + data: _data, + fixedData, + estimatedRowHeight, + rightTableRef, + rowHeight, + bodyWidth: rightColumnsWidth, + headerWidth: rightColumnsWidth, + headerHeight, + height: _fixedTableHeight, + rowKey, + scrollbarAlwaysOn, + scrollbarStartGap: 2, + scrollbarEndGap: vScrollbarSize, + width: rightColumnsWidth, + style: `${ns.cssVarName("table-scrollbar-size")}: ${vScrollbarSize}px`, + useIsScrolling, + getRowHeight, + onScroll: onVerticalScroll + }; + const _columnsStyles = (0, vue.unref)(columnsStyles); + const tableRowProps = { + ns, + depthMap: (0, vue.unref)(depthMap), + columnsStyles: _columnsStyles, + expandColumnKey, + expandedRowKeys: (0, vue.unref)(expandedRowKeys), + estimatedRowHeight, + hasFixedColumns: (0, vue.unref)(hasFixedColumns), + rowProps, + rowClass, + rowKey, + rowEventHandlers, + onRowHovered, + onRowExpanded, + onRowHeightChange + }; + const tableCellProps = { + cellProps, + expandColumnKey, + indentSize, + iconSize, + rowKey, + expandedRowKeys: (0, vue.unref)(expandedRowKeys), + ns, + t + }; + const tableHeaderProps = { + ns, + headerClass, + headerProps, + columnsStyles: _columnsStyles + }; + const tableHeaderCellProps = { + ns, + t, + sortBy, + sortState, + headerCellProps, + onColumnSorted + }; + const tableSlots = { + row: (props) => (0, vue.createVNode)(RowRenderer, (0, vue.mergeProps)(props, tableRowProps), { + row: slots.row, + cell: (props) => { + let _slot; + return slots.cell ? (0, vue.createVNode)(CellRenderer, (0, vue.mergeProps)(props, tableCellProps, { "style": _columnsStyles[props.column.key] }), _isSlot(_slot = slots.cell(props)) ? _slot : { default: () => [_slot] }) : (0, vue.createVNode)(CellRenderer, (0, vue.mergeProps)(props, tableCellProps, { "style": _columnsStyles[props.column.key] }), null); + } + }), + header: (props) => (0, vue.createVNode)(HeaderRenderer, (0, vue.mergeProps)(props, tableHeaderProps), { + header: slots.header, + cell: (props) => { + let _slot2; + return slots["header-cell"] ? (0, vue.createVNode)(HeaderCellRenderer, (0, vue.mergeProps)(props, tableHeaderCellProps, { "style": _columnsStyles[props.column.key] }), _isSlot(_slot2 = slots["header-cell"](props)) ? _slot2 : { default: () => [_slot2] }) : (0, vue.createVNode)(HeaderCellRenderer, (0, vue.mergeProps)(props, tableHeaderCellProps, { "style": _columnsStyles[props.column.key] }), null); + } + }) + }; + const rootKls = [ + props.class, + ns.b(), + ns.e("root"), + ns.is("dynamic", (0, vue.unref)(isDynamic)) + ]; + const footerProps = { + class: ns.e("footer"), + style: (0, vue.unref)(footerHeight) + }; + return (0, vue.createVNode)("div", { + "class": rootKls, + "style": (0, vue.unref)(rootStyle) + }, [ + (0, vue.createVNode)(MainTable, mainTableProps, _isSlot(tableSlots) ? tableSlots : { default: () => [tableSlots] }), + (0, vue.createVNode)(LeftTable, leftTableProps, _isSlot(tableSlots) ? tableSlots : { default: () => [tableSlots] }), + (0, vue.createVNode)(RightTable, rightTableProps, _isSlot(tableSlots) ? tableSlots : { default: () => [tableSlots] }), + slots.footer && (0, vue.createVNode)(Footer$1, footerProps, { default: slots.footer }), + (0, vue.unref)(showEmpty) && (0, vue.createVNode)(Footer, { + "class": ns.e("empty"), + "style": (0, vue.unref)(emptyStyle) + }, { default: slots.empty }), + slots.overlay && (0, vue.createVNode)(Overlay, { "class": ns.e("overlay") }, { default: slots.overlay }) + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/table-v2/src/auto-resizer.ts + const autoResizerProps = buildProps({ + disableWidth: Boolean, + disableHeight: Boolean, + onResize: { type: definePropType(Function) } + }); + +//#endregion +//#region ../../packages/components/table-v2/src/components/auto-resizer.tsx + const AutoResizer = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElAutoResizer", + props: autoResizerProps, + setup(props, { slots }) { + const ns = useNamespace("auto-resizer"); + const { height, width, sizer } = useAutoResize(props); + const style = { + width: "100%", + height: "100%" + }; + return () => { + return (0, vue.createVNode)("div", { + "ref": sizer, + "class": ns.b(), + "style": style + }, [slots.default?.({ + height: height.value, + width: width.value + })]); + }; + } + }); + +//#endregion +//#region ../../packages/components/table-v2/index.ts + const ElTableV2 = withInstall(TableV2); + const ElAutoResizer = withInstall(AutoResizer); + +//#endregion +//#region ../../packages/components/tabs/src/constants.ts + const tabsRootContextKey = Symbol("tabsRootContextKey"); + +//#endregion +//#region ../../packages/components/tabs/src/tab-bar.ts +/** + * @deprecated Removed after 3.0.0, Use `TabBarProps` instead. + */ + const tabBarProps = buildProps({ + tabs: { + type: definePropType(Array), + default: () => mutable([]) + }, + tabRefs: { + type: definePropType(Object), + default: () => mutable({}) + } + }); + +//#endregion +//#region ../../packages/components/tabs/src/tab-bar.vue?vue&type=script&setup=true&lang.ts + const COMPONENT_NAME$4 = "ElTabBar"; + var tab_bar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$4, + __name: "tab-bar", + props: tabBarProps, + setup(__props, { expose: __expose }) { + const props = __props; + const rootTabs = (0, vue.inject)(tabsRootContextKey); + if (!rootTabs) throwError(COMPONENT_NAME$4, ""); + const ns = useNamespace("tabs"); + const barRef = (0, vue.ref)(); + const barStyle = (0, vue.ref)(); + /** + * when defaultValue is not set, the bar is always shown. + * + * when defaultValue is set, the bar will be hidden until style is calculated + * to avoid the bar showing in the wrong position on initial render. + */ + const renderActiveBar = (0, vue.computed)(() => isUndefined(rootTabs.props.defaultValue) || Boolean(barStyle.value?.transform)); + const getBarStyle = () => { + let offset = 0; + let tabSize = 0; + const sizeName = ["top", "bottom"].includes(rootTabs.props.tabPosition) ? "width" : "height"; + const sizeDir = sizeName === "width" ? "x" : "y"; + const position = sizeDir === "x" ? "left" : "top"; + props.tabs.every((tab) => { + if (isUndefined(tab.paneName)) return false; + const $el = props.tabRefs[tab.paneName]; + if (!$el) return false; + if (!tab.active) return true; + offset = $el[`offset${capitalize(position)}`]; + tabSize = $el[`client${capitalize(sizeName)}`]; + const tabStyles = window.getComputedStyle($el); + if (sizeName === "width") { + tabSize -= Number.parseFloat(tabStyles.paddingLeft) + Number.parseFloat(tabStyles.paddingRight); + offset += Number.parseFloat(tabStyles.paddingLeft); + } + return false; + }); + return { + [sizeName]: `${tabSize}px`, + transform: `translate${capitalize(sizeDir)}(${offset}px)` + }; + }; + const update = () => barStyle.value = getBarStyle(); + const tabObservers = []; + const observerTabs = () => { + tabObservers.forEach((observer) => observer.stop()); + tabObservers.length = 0; + Object.values(props.tabRefs).forEach((tab) => { + tabObservers.push(useResizeObserver(tab, update)); + }); + }; + (0, vue.watch)(() => props.tabs, async () => { + await (0, vue.nextTick)(); + update(); + observerTabs(); + }, { immediate: true }); + const barObserver = useResizeObserver(barRef, () => update()); + (0, vue.onBeforeUnmount)(() => { + tabObservers.forEach((observer) => observer.stop()); + tabObservers.length = 0; + barObserver.stop(); + }); + __expose({ + ref: barRef, + update + }); + return (_ctx, _cache) => { + return renderActiveBar.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + ref_key: "barRef", + ref: barRef, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("active-bar"), (0, vue.unref)(ns).is((0, vue.unref)(rootTabs).props.tabPosition)]), + style: (0, vue.normalizeStyle)(barStyle.value) + }, null, 6)) : (0, vue.createCommentVNode)("v-if", true); + }; + } + }); + +//#endregion +//#region ../../packages/components/tabs/src/tab-bar.vue + var tab_bar_default = tab_bar_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/tabs/src/tab-nav.tsx + const tabNavProps = buildProps({ + panes: { + type: definePropType(Array), + default: () => mutable([]) + }, + currentName: { + type: [String, Number], + default: "" + }, + editable: Boolean, + type: { + type: String, + values: [ + "card", + "border-card", + "" + ], + default: "" + }, + stretch: Boolean, + tabindex: { + type: [String, Number], + default: void 0 + } + }); + const tabNavEmits = { + tabClick: (tab, tabName, ev) => ev instanceof Event, + tabRemove: (tab, ev) => ev instanceof Event + }; + const COMPONENT_NAME$3 = "ElTabNav"; + const TabNav = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$3, + props: tabNavProps, + emits: tabNavEmits, + setup(props, { expose, emit }) { + const rootTabs = (0, vue.inject)(tabsRootContextKey); + if (!rootTabs) throwError(COMPONENT_NAME$3, ``); + const ns = useNamespace("tabs"); + const visibility = useDocumentVisibility(); + const focused = useWindowFocus(); + const navScroll$ = (0, vue.ref)(); + const nav$ = (0, vue.ref)(); + const el$ = (0, vue.ref)(); + const tabRefsMap = (0, vue.ref)({}); + const tabBarRef = (0, vue.ref)(); + const scrollable = (0, vue.ref)(false); + const navOffset = (0, vue.ref)(0); + const isFocus = (0, vue.ref)(false); + const focusable = (0, vue.ref)(true); + const isWheelScrolling = (0, vue.ref)(false); + const tracker = (0, vue.shallowRef)(); + const isHorizontal = (0, vue.computed)(() => ["top", "bottom"].includes(rootTabs.props.tabPosition)); + const sizeName = (0, vue.computed)(() => isHorizontal.value ? "width" : "height"); + const navStyle = (0, vue.computed)(() => { + const dir = sizeName.value === "width" ? "X" : "Y"; + return { + transition: isWheelScrolling.value ? "none" : void 0, + transform: `translate${dir}(-${navOffset.value}px)` + }; + }); + const { width: navContainerWidth, height: navContainerHeight } = useElementSize(navScroll$); + const { width: navWidth, height: navHeight } = useElementSize(nav$, { + width: 0, + height: 0 + }, { box: "border-box" }); + const navContainerSize = (0, vue.computed)(() => isHorizontal.value ? navContainerWidth.value : navContainerHeight.value); + const navSize = (0, vue.computed)(() => isHorizontal.value ? navWidth.value : navHeight.value); + const { onWheel } = useWheel({ + atStartEdge: (0, vue.computed)(() => navOffset.value <= 0), + atEndEdge: (0, vue.computed)(() => navSize.value - navOffset.value <= navContainerSize.value), + layout: (0, vue.computed)(() => isHorizontal.value ? "horizontal" : "vertical") + }, (offset) => { + navOffset.value = clamp$1(navOffset.value + offset, 0, navSize.value - navContainerSize.value); + }); + const handleWheel = (event) => { + isWheelScrolling.value = true; + onWheel(event); + rAF(() => { + isWheelScrolling.value = false; + }); + }; + const scrollPrev = () => { + if (!navScroll$.value) return; + const containerSize = navScroll$.value.getBoundingClientRect()[sizeName.value]; + const currentOffset = navOffset.value; + if (!currentOffset) return; + navOffset.value = currentOffset > containerSize ? currentOffset - containerSize : 0; + }; + const scrollNext = () => { + if (!navScroll$.value || !nav$.value) return; + const navSize = nav$.value.getBoundingClientRect()[sizeName.value]; + const containerSize = navScroll$.value.getBoundingClientRect()[sizeName.value]; + const currentOffset = navOffset.value; + if (!isGreaterThan(navSize - currentOffset, containerSize)) return; + navOffset.value = navSize - currentOffset > containerSize * 2 ? currentOffset + containerSize : navSize - containerSize; + }; + const scrollToActiveTab = async () => { + const nav = nav$.value; + if (!scrollable.value || !el$.value || !navScroll$.value || !nav) return; + await (0, vue.nextTick)(); + const activeTab = tabRefsMap.value[props.currentName]; + if (!activeTab) return; + const navScroll = navScroll$.value; + const activeTabBounding = activeTab.getBoundingClientRect(); + const navScrollBounding = navScroll.getBoundingClientRect(); + const navScrollLeft = navScrollBounding.left + 1; + const navScrollRight = navScrollBounding.right - 1; + const navBounding = nav.getBoundingClientRect(); + const maxOffset = isHorizontal.value ? navBounding.width - navScrollBounding.width : navBounding.height - navScrollBounding.height; + const currentOffset = navOffset.value; + let newOffset = currentOffset; + if (isHorizontal.value) { + if (activeTabBounding.left < navScrollLeft) newOffset = currentOffset - (navScrollLeft - activeTabBounding.left); + if (activeTabBounding.right > navScrollRight) newOffset = currentOffset + activeTabBounding.right - navScrollRight; + } else { + if (activeTabBounding.top < navScrollBounding.top) newOffset = currentOffset - (navScrollBounding.top - activeTabBounding.top); + if (activeTabBounding.bottom > navScrollBounding.bottom) newOffset = currentOffset + (activeTabBounding.bottom - navScrollBounding.bottom); + } + newOffset = Math.max(newOffset, 0); + navOffset.value = Math.min(newOffset, maxOffset); + }; + const update = () => { + if (!nav$.value || !navScroll$.value) return; + props.stretch && tabBarRef.value?.update(); + const navSize = nav$.value.getBoundingClientRect()[sizeName.value]; + const containerSize = navScroll$.value.getBoundingClientRect()[sizeName.value]; + const currentOffset = navOffset.value; + if (containerSize < navSize) { + scrollable.value = scrollable.value || {}; + scrollable.value.prev = currentOffset; + scrollable.value.next = isGreaterThan(navSize, currentOffset + containerSize); + if (isGreaterThan(containerSize, navSize - currentOffset)) navOffset.value = navSize - containerSize; + } else { + scrollable.value = false; + if (currentOffset > 0) navOffset.value = 0; + } + }; + const changeTab = (event) => { + const code = getEventCode(event); + let step = 0; + switch (code) { + case EVENT_CODE.left: + case EVENT_CODE.up: + step = -1; + break; + case EVENT_CODE.right: + case EVENT_CODE.down: + step = 1; + break; + default: return; + } + const tabList = Array.from(event.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)")); + let nextIndex = tabList.indexOf(event.target) + step; + if (nextIndex < 0) nextIndex = tabList.length - 1; + else if (nextIndex >= tabList.length) nextIndex = 0; + tabList[nextIndex].focus({ preventScroll: true }); + tabList[nextIndex].click(); + setFocus(); + }; + const setFocus = () => { + if (focusable.value) isFocus.value = true; + }; + const removeFocus = () => isFocus.value = false; + const setRefs = (el, key) => { + tabRefsMap.value[key] = el; + }; + const focusActiveTab = async () => { + await (0, vue.nextTick)(); + tabRefsMap.value[props.currentName]?.focus({ preventScroll: true }); + }; + (0, vue.watch)(visibility, (visibility) => { + if (visibility === "hidden") focusable.value = false; + else if (visibility === "visible") setTimeout(() => focusable.value = true, 50); + }); + (0, vue.watch)(focused, (focused) => { + if (focused) setTimeout(() => focusable.value = true, 50); + else focusable.value = false; + }); + useResizeObserver(el$, () => { + rAF(update); + }); + (0, vue.onMounted)(() => setTimeout(() => scrollToActiveTab(), 0)); + (0, vue.onUpdated)(() => update()); + expose({ + scrollToActiveTab, + removeFocus, + focusActiveTab, + tabListRef: nav$, + tabBarRef, + scheduleRender: () => (0, vue.triggerRef)(tracker) + }); + return () => { + const scrollBtn = scrollable.value ? [(0, vue.createVNode)("span", { + "class": [ns.e("nav-prev"), ns.is("disabled", !scrollable.value.prev)], + "onClick": scrollPrev + }, [(0, vue.createVNode)(ElIcon, null, { default: () => [(0, vue.createVNode)(arrow_left_default, null, null)] })]), (0, vue.createVNode)("span", { + "class": [ns.e("nav-next"), ns.is("disabled", !scrollable.value.next)], + "onClick": scrollNext + }, [(0, vue.createVNode)(ElIcon, null, { default: () => [(0, vue.createVNode)(arrow_right_default, null, null)] })])] : null; + const tabs = props.panes.map((pane, index) => { + const uid = pane.uid; + const disabled = pane.props.disabled; + const tabName = pane.props.name ?? pane.index ?? `${index}`; + const closable = !disabled && (pane.isClosable || pane.props.closable !== false && props.editable); + pane.index = `${index}`; + const btnClose = closable ? (0, vue.createVNode)(ElIcon, { + "class": "is-icon-close", + "onClick": (ev) => emit("tabRemove", pane, ev) + }, { default: () => [(0, vue.createVNode)(close_default, null, null)] }) : null; + const tabLabelContent = pane.slots.label?.() || pane.props.label; + const tabindex = !disabled && pane.active ? props.tabindex ?? rootTabs.props.tabindex : -1; + return (0, vue.createVNode)("div", { + "ref": (el) => setRefs(el, tabName), + "class": [ + ns.e("item"), + ns.is(rootTabs.props.tabPosition), + ns.is("active", pane.active), + ns.is("disabled", disabled), + ns.is("closable", closable), + ns.is("focus", isFocus.value) + ], + "id": `tab-${tabName}`, + "key": `tab-${uid}`, + "aria-controls": `pane-${tabName}`, + "role": "tab", + "aria-selected": pane.active, + "tabindex": tabindex, + "onFocus": () => setFocus(), + "onBlur": () => removeFocus(), + "onClick": (ev) => { + removeFocus(); + emit("tabClick", pane, tabName, ev); + }, + "onKeydown": (ev) => { + const code = getEventCode(ev); + if (closable && (code === EVENT_CODE.delete || code === EVENT_CODE.backspace)) emit("tabRemove", pane, ev); + } + }, [...[tabLabelContent, btnClose]]); + }); + tracker.value; + return (0, vue.createVNode)("div", { + "ref": el$, + "class": [ + ns.e("nav-wrap"), + ns.is("scrollable", !!scrollable.value), + ns.is(rootTabs.props.tabPosition) + ] + }, [scrollBtn, (0, vue.createVNode)("div", { + "class": ns.e("nav-scroll"), + "ref": navScroll$ + }, [props.panes.length > 0 ? (0, vue.createVNode)("div", { + "class": [ + ns.e("nav"), + ns.is(rootTabs.props.tabPosition), + ns.is("stretch", props.stretch && ["top", "bottom"].includes(rootTabs.props.tabPosition)) + ], + "ref": nav$, + "style": navStyle.value, + "role": "tablist", + "onKeydown": changeTab, + "onWheel": handleWheel + }, [...[!props.type ? (0, vue.createVNode)(tab_bar_default, { + "ref": tabBarRef, + "tabs": [...props.panes], + "tabRefs": tabRefsMap.value + }, null) : null, tabs]]) : null])]); + }; + } + }); + +//#endregion +//#region ../../packages/components/tabs/src/tabs.tsx + const tabsProps = buildProps({ + type: { + type: String, + values: [ + "card", + "border-card", + "" + ], + default: "" + }, + closable: Boolean, + addable: Boolean, + modelValue: { type: [String, Number] }, + defaultValue: { type: [String, Number] }, + editable: Boolean, + tabPosition: { + type: String, + values: [ + "top", + "right", + "bottom", + "left" + ], + default: "top" + }, + beforeLeave: { + type: definePropType(Function), + default: () => true + }, + stretch: Boolean, + tabindex: { + type: [String, Number], + default: 0 + } + }); + const isPaneName = (value) => isString(value) || isNumber(value); + const tabsEmits = { + [UPDATE_MODEL_EVENT]: (name) => isPaneName(name), + tabClick: (pane, ev) => ev instanceof Event, + tabChange: (name) => isPaneName(name), + edit: (paneName, action) => ["remove", "add"].includes(action), + tabRemove: (name) => isPaneName(name), + tabAdd: () => true + }; + const Tabs = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTabs", + props: tabsProps, + emits: tabsEmits, + setup(props, { emit, slots, expose }) { + const ns = useNamespace("tabs"); + const isVertical = (0, vue.computed)(() => ["left", "right"].includes(props.tabPosition)); + const { children: panes, addChild: registerPane, removeChild: unregisterPane, ChildrenSorter: PanesSorter } = useOrderedChildren((0, vue.getCurrentInstance)(), "ElTabPane"); + const nav$ = (0, vue.ref)(); + const currentName = (0, vue.ref)((isUndefined(props.modelValue) ? props.defaultValue : props.modelValue) ?? "0"); + const setCurrentName = async (value, trigger = false) => { + if (currentName.value === value || isUndefined(value)) return; + try { + let canLeave; + if (props.beforeLeave) { + const result = props.beforeLeave(value, currentName.value); + canLeave = result instanceof Promise ? await result : result; + } else canLeave = true; + if (canLeave !== false) { + const isFocusInsidePane = panes.value.find((item) => item.paneName === currentName.value)?.isFocusInsidePane(); + currentName.value = value; + if (trigger) { + emit(UPDATE_MODEL_EVENT, value); + emit("tabChange", value); + } + nav$.value?.removeFocus?.(); + if (isFocusInsidePane) nav$.value?.focusActiveTab(); + } + } catch {} + }; + const handleTabClick = (tab, tabName, event) => { + if (tab.props.disabled) return; + emit("tabClick", tab, event); + setCurrentName(tabName, true); + }; + const handleTabRemove = (pane, ev) => { + if (pane.props.disabled || isUndefined(pane.props.name)) return; + ev.stopPropagation(); + emit("edit", pane.props.name, "remove"); + emit("tabRemove", pane.props.name); + }; + const handleTabAdd = () => { + emit("edit", void 0, "add"); + emit("tabAdd"); + }; + const handleKeydown = (event) => { + const code = getEventCode(event); + if ([EVENT_CODE.enter, EVENT_CODE.numpadEnter].includes(code)) handleTabAdd(); + }; + const swapChildren = (vnode) => { + const actualFirstChild = vnode.el.firstChild; + const firstChild = ["bottom", "right"].includes(props.tabPosition) ? vnode.children[0].el : vnode.children[1].el; + if (actualFirstChild !== firstChild) actualFirstChild.before(firstChild); + }; + (0, vue.watch)(() => props.modelValue, (modelValue) => setCurrentName(modelValue)); + (0, vue.watch)(currentName, async () => { + await (0, vue.nextTick)(); + nav$.value?.scrollToActiveTab(); + }); + (0, vue.provide)(tabsRootContextKey, { + props, + currentName, + registerPane, + unregisterPane, + nav$ + }); + expose({ + currentName, + get tabNavRef() { + return omit(nav$.value, ["scheduleRender"]); + } + }); + return () => { + const addSlot = slots["add-icon"]; + const newButton = props.editable || props.addable ? (0, vue.createVNode)("div", { + "class": [ns.e("new-tab"), isVertical.value && ns.e("new-tab-vertical")], + "tabindex": props.tabindex, + "onClick": handleTabAdd, + "onKeydown": handleKeydown + }, [addSlot ? (0, vue.renderSlot)(slots, "add-icon") : (0, vue.createVNode)(ElIcon, { "class": ns.is("icon-plus") }, { default: () => [(0, vue.createVNode)(plus_default, null, null)] })]) : null; + const tabNav = () => (0, vue.createVNode)(TabNav, { + "ref": nav$, + "currentName": currentName.value, + "editable": props.editable, + "type": props.type, + "panes": panes.value, + "stretch": props.stretch, + "onTabClick": handleTabClick, + "onTabRemove": handleTabRemove + }, null); + const header = (0, vue.createVNode)("div", { "class": [ + ns.e("header"), + isVertical.value && ns.e("header-vertical"), + ns.is(props.tabPosition) + ] }, [(0, vue.createVNode)(PanesSorter, null, { + default: tabNav, + $stable: true + }), newButton]); + const panels = (0, vue.createVNode)("div", { "class": ns.e("content") }, [(0, vue.renderSlot)(slots, "default")]); + return (0, vue.createVNode)("div", { + "class": [ + ns.b(), + ns.m(props.tabPosition), + { + [ns.m("card")]: props.type === "card", + [ns.m("border-card")]: props.type === "border-card" + } + ], + "onVnodeMounted": swapChildren, + "onVnodeUpdated": swapChildren + }, [panels, header]); + }; + } + }); + +//#endregion +//#region ../../packages/components/tabs/src/tab-pane.ts +/** + * @deprecated Removed after 3.0.0, Use `TabPaneProps` instead. + */ + const tabPaneProps = buildProps({ + label: { + type: String, + default: "" + }, + name: { type: [String, Number] }, + closable: { + type: Boolean, + default: void 0 + }, + disabled: Boolean, + lazy: Boolean + }); + +//#endregion +//#region ../../packages/components/tabs/src/tab-pane.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$14 = [ + "id", + "aria-hidden", + "aria-labelledby" + ]; + const COMPONENT_NAME$2 = "ElTabPane"; + var tab_pane_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$2, + __name: "tab-pane", + props: tabPaneProps, + setup(__props) { + const props = __props; + const instance = (0, vue.getCurrentInstance)(); + const slots = (0, vue.useSlots)(); + const tabsRoot = (0, vue.inject)(tabsRootContextKey); + if (!tabsRoot) throwError(COMPONENT_NAME$2, "usage: "); + const ns = useNamespace("tab-pane"); + const paneRef = (0, vue.ref)(); + const index = (0, vue.ref)(); + const isClosable = (0, vue.computed)(() => props.closable ?? tabsRoot.props.closable); + const active = (0, vue.computed)(() => tabsRoot.currentName.value === (props.name ?? index.value)); + const loaded = (0, vue.ref)(active.value); + const paneName = (0, vue.computed)(() => props.name ?? index.value); + const shouldBeRender = (0, vue.computed)(() => !props.lazy || loaded.value || active.value); + const isFocusInsidePane = () => { + return paneRef.value?.contains(document.activeElement); + }; + (0, vue.watch)(active, (val) => { + if (val) loaded.value = true; + }); + const pane = (0, vue.reactive)({ + uid: instance.uid, + getVnode: () => instance.vnode, + slots, + props, + paneName, + active, + index, + isClosable, + isFocusInsidePane + }); + tabsRoot.registerPane(pane); + (0, vue.onBeforeUnmount)(() => { + tabsRoot.unregisterPane(pane); + }); + (0, vue.onBeforeUpdate)(() => { + if (slots.label) tabsRoot.nav$.value?.scheduleRender(); + }); + return (_ctx, _cache) => { + return shouldBeRender.value ? (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + id: `pane-${paneName.value}`, + ref_key: "paneRef", + ref: paneRef, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()), + role: "tabpanel", + "aria-hidden": !active.value, + "aria-labelledby": `tab-${paneName.value}` + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1$14)), [[vue.vShow, active.value]]) : (0, vue.createCommentVNode)("v-if", true); + }; + } + }); + +//#endregion +//#region ../../packages/components/tabs/src/tab-pane.vue + var tab_pane_default = tab_pane_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/tabs/index.ts + const ElTabs = withInstall(Tabs, { TabPane: tab_pane_default }); + const ElTabPane = withNoopInstall(tab_pane_default); + +//#endregion +//#region ../../packages/components/text/src/text.ts +/** + * @deprecated Removed after 3.0.0, Use `TextProps` instead. + */ + const textProps = buildProps({ + type: { + type: String, + values: [ + "primary", + "success", + "info", + "warning", + "danger", + "" + ], + default: "" + }, + size: { + type: String, + values: componentSizes, + default: "" + }, + truncated: Boolean, + lineClamp: { type: [String, Number] }, + tag: { + type: String, + default: "span" + } + }); + +//#endregion +//#region ../../packages/components/text/src/text.vue?vue&type=script&setup=true&lang.ts + var text_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElText", + __name: "text", + props: textProps, + setup(__props) { + const props = __props; + const textRef = (0, vue.ref)(); + const textSize = useFormSize(); + const ns = useNamespace("text"); + const textKls = (0, vue.computed)(() => [ + ns.b(), + ns.m(props.type), + ns.m(textSize.value), + ns.is("truncated", props.truncated), + ns.is("line-clamp", !isUndefined(props.lineClamp)) + ]); + const bindTitle = () => { + if ((0, vue.useAttrs)().title) return; + let shouldAddTitle = false; + const text = textRef.value?.textContent || ""; + if (props.truncated) { + const width = textRef.value?.offsetWidth; + const scrollWidth = textRef.value?.scrollWidth; + if (width && scrollWidth && scrollWidth > width) shouldAddTitle = true; + } else if (!isUndefined(props.lineClamp)) { + const height = textRef.value?.offsetHeight; + const scrollHeight = textRef.value?.scrollHeight; + if (height && scrollHeight && scrollHeight > height) shouldAddTitle = true; + } + if (shouldAddTitle) textRef.value?.setAttribute("title", text); + else textRef.value?.removeAttribute("title"); + }; + (0, vue.onMounted)(bindTitle); + (0, vue.onUpdated)(bindTitle); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.tag), { + ref_key: "textRef", + ref: textRef, + class: (0, vue.normalizeClass)(textKls.value), + style: (0, vue.normalizeStyle)({ "-webkit-line-clamp": __props.lineClamp }) + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 8, ["class", "style"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/text/src/text.vue + var text_default = text_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/text/index.ts + const ElText = withInstall(text_default); + +//#endregion +//#region ../../packages/components/time-select/src/time-select.ts + const DEFAULT_STEP = "00:30"; + /** + * @deprecated Removed after 3.0.0, Use `TimeSelectProps` instead. + */ + const timeSelectProps = buildProps({ + format: { + type: String, + default: "HH:mm" + }, + modelValue: { type: definePropType(String) }, + disabled: { + type: Boolean, + default: void 0 + }, + editable: { + type: Boolean, + default: true + }, + effect: { + type: definePropType(String), + default: "light" + }, + clearable: { + type: Boolean, + default: true + }, + size: useSizeProp, + placeholder: String, + start: { + type: String, + default: "09:00" + }, + end: { + type: String, + default: "18:00" + }, + step: { + type: String, + default: DEFAULT_STEP + }, + minTime: { type: definePropType(String) }, + maxTime: { type: definePropType(String) }, + includeEndTime: Boolean, + name: String, + prefixIcon: { + type: definePropType([String, Object]), + default: () => clock_default + }, + clearIcon: { + type: definePropType([String, Object]), + default: () => circle_close_default + }, + popperClass: { + type: String, + default: "" + }, + popperStyle: { type: definePropType([String, Object]) }, + ...useEmptyValuesProps + }); + +//#endregion +//#region ../../packages/components/time-select/src/utils.ts + const parseTime = (time) => { + const values = (time || "").split(":"); + if (values.length >= 2) { + let hours = Number.parseInt(values[0], 10); + const minutes = Number.parseInt(values[1], 10); + const timeUpper = time.toUpperCase(); + if (timeUpper.includes("AM") && hours === 12) hours = 0; + else if (timeUpper.includes("PM") && hours !== 12) hours += 12; + return { + hours, + minutes + }; + } + return null; + }; + const compareTime = (time1, time2) => { + const value1 = parseTime(time1); + if (!value1) return -1; + const value2 = parseTime(time2); + if (!value2) return -1; + const minutes1 = value1.minutes + value1.hours * 60; + const minutes2 = value2.minutes + value2.hours * 60; + if (minutes1 === minutes2) return 0; + return minutes1 > minutes2 ? 1 : -1; + }; + const padTime = (time) => { + return `${time}`.padStart(2, "0"); + }; + const formatTime = (time) => { + return `${padTime(time.hours)}:${padTime(time.minutes)}`; + }; + const nextTime = (time, step) => { + const timeValue = parseTime(time); + if (!timeValue) return ""; + const stepValue = parseTime(step); + if (!stepValue) return ""; + const next = { + hours: timeValue.hours, + minutes: timeValue.minutes + }; + next.minutes += stepValue.minutes; + next.hours += stepValue.hours; + next.hours += Math.floor(next.minutes / 60); + next.minutes = next.minutes % 60; + return formatTime(next); + }; + +//#endregion +//#region ../../packages/components/time-select/src/time-select.vue?vue&type=script&setup=true&lang.ts + var time_select_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTimeSelect", + __name: "time-select", + props: timeSelectProps, + emits: [ + CHANGE_EVENT, + "blur", + "focus", + "clear", + UPDATE_MODEL_EVENT + ], + setup(__props, { expose: __expose }) { + import_dayjs_min.default.extend(import_customParseFormat.default); + const { Option: ElOption } = ElSelect; + const props = __props; + const nsInput = useNamespace("input"); + const select = (0, vue.ref)(); + const _disabled = useFormDisabled(); + const { lang } = useLocale(); + const value = (0, vue.computed)(() => props.modelValue); + const start = (0, vue.computed)(() => { + const time = parseTime(props.start); + return time ? formatTime(time) : null; + }); + const end = (0, vue.computed)(() => { + const time = parseTime(props.end); + return time ? formatTime(time) : null; + }); + const minTime = (0, vue.computed)(() => { + const time = parseTime(props.minTime || ""); + return time ? formatTime(time) : null; + }); + const maxTime = (0, vue.computed)(() => { + const time = parseTime(props.maxTime || ""); + return time ? formatTime(time) : null; + }); + const step = (0, vue.computed)(() => { + const time = parseTime(props.step); + const isInvalidStep = !time || time.hours < 0 || time.minutes < 0 || Number.isNaN(time.hours) || Number.isNaN(time.minutes) || time.hours === 0 && time.minutes === 0; + if (isInvalidStep) /* @__PURE__ */ debugWarn("ElTimeSelect", `invalid step, fallback to default step (${DEFAULT_STEP}).`); + return !isInvalidStep ? formatTime(time) : DEFAULT_STEP; + }); + const items = (0, vue.computed)(() => { + const result = []; + const push = (formattedValue, rawValue) => { + result.push({ + value: formattedValue, + rawValue, + disabled: compareTime(rawValue, minTime.value || "-1:-1") <= 0 || compareTime(rawValue, maxTime.value || "100:100") >= 0 + }); + }; + if (props.start && props.end && props.step) { + let current = start.value; + let currentTime; + while (current && end.value && compareTime(current, end.value) <= 0) { + currentTime = (0, import_dayjs_min.default)(current, "HH:mm").locale(lang.value).format(props.format); + push(currentTime, current); + current = nextTime(current, step.value); + } + if (props.includeEndTime && end.value && result[result.length - 1]?.rawValue !== end.value) push((0, import_dayjs_min.default)(end.value, "HH:mm").locale(lang.value).format(props.format), end.value); + } + return result; + }); + const blur = () => { + select.value?.blur?.(); + }; + const focus = () => { + select.value?.focus?.(); + }; + __expose({ + blur, + focus + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElSelect), { + ref_key: "select", + ref: select, + name: __props.name, + "model-value": value.value, + disabled: (0, vue.unref)(_disabled), + clearable: __props.clearable, + "clear-icon": __props.clearIcon, + size: __props.size, + effect: __props.effect, + placeholder: __props.placeholder, + "default-first-option": "", + filterable: __props.editable, + "empty-values": __props.emptyValues, + "value-on-clear": __props.valueOnClear, + "popper-class": __props.popperClass, + "popper-style": __props.popperStyle, + "onUpdate:modelValue": _cache[0] || (_cache[0] = (event) => _ctx.$emit((0, vue.unref)(UPDATE_MODEL_EVENT), event)), + onChange: _cache[1] || (_cache[1] = (event) => _ctx.$emit((0, vue.unref)(CHANGE_EVENT), event)), + onBlur: _cache[2] || (_cache[2] = (event) => _ctx.$emit("blur", event)), + onFocus: _cache[3] || (_cache[3] = (event) => _ctx.$emit("focus", event)), + onClear: _cache[4] || (_cache[4] = () => _ctx.$emit("clear")) + }, { + prefix: (0, vue.withCtx)(() => [__props.prefixIcon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(nsInput).e("prefix-icon")) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.prefixIcon)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true)]), + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(items.value, (item) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElOption), { + key: item.value, + label: item.value, + value: item.value, + disabled: item.disabled + }, null, 8, [ + "label", + "value", + "disabled" + ]); + }), 128))]), + _: 1 + }, 8, [ + "name", + "model-value", + "disabled", + "clearable", + "clear-icon", + "size", + "effect", + "placeholder", + "filterable", + "empty-values", + "value-on-clear", + "popper-class", + "popper-style" + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/time-select/src/time-select.vue + var time_select_default = time_select_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/time-select/index.ts + const ElTimeSelect = withInstall(time_select_default); + +//#endregion +//#region ../../packages/components/timeline/src/tokens.ts + const TIMELINE_INJECTION_KEY = "timeline"; + +//#endregion +//#region ../../packages/components/timeline/src/timeline.ts + const timelineProps = buildProps({ + mode: { + type: String, + values: [ + "start", + "alternate", + "alternate-reverse", + "end" + ], + default: "start" + }, + reverse: Boolean + }); + const Timeline = (0, vue.defineComponent)({ + name: "ElTimeline", + props: timelineProps, + setup(props, { slots }) { + const ns = useNamespace("timeline"); + (0, vue.provide)(TIMELINE_INJECTION_KEY, { + props, + slots + }); + const timelineKls = (0, vue.computed)(() => [ns.b(), ns.is(props.mode)]); + return () => { + const children = flattedChildren(slots.default?.() ?? []); + return (0, vue.h)("ul", { class: timelineKls.value }, props.reverse ? children.reverse() : children); + }; + } + }); + +//#endregion +//#region ../../packages/components/timeline/src/timeline-item.ts +/** + * @deprecated Removed after 3.0.0, Use `TimelineItemProps` instead. + */ + const timelineItemProps = buildProps({ + timestamp: { + type: String, + default: "" + }, + hideTimestamp: Boolean, + center: Boolean, + placement: { + type: String, + values: ["top", "bottom"], + default: "bottom" + }, + type: { + type: String, + values: [ + "primary", + "success", + "warning", + "danger", + "info" + ], + default: "" + }, + color: { + type: String, + default: "" + }, + size: { + type: String, + values: ["normal", "large"], + default: "normal" + }, + icon: { type: iconPropType }, + hollow: Boolean + }); + +//#endregion +//#region ../../packages/components/timeline/src/timeline-item.vue?vue&type=script&setup=true&lang.ts + var timeline_item_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTimelineItem", + __name: "timeline-item", + props: timelineItemProps, + setup(__props) { + const props = __props; + const { props: timelineProps } = (0, vue.inject)(TIMELINE_INJECTION_KEY); + const ns = useNamespace("timeline-item"); + const defaultNodeKls = (0, vue.computed)(() => [ + ns.e("node"), + ns.em("node", props.size || ""), + ns.em("node", props.type || ""), + ns.is("hollow", props.hollow) + ]); + const timelineItemKls = (0, vue.computed)(() => [ + ns.b(), + { [ns.e("center")]: props.center }, + ns.is(timelineProps.mode) + ]); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", { class: (0, vue.normalizeClass)(timelineItemKls.value) }, [ + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("tail")) }, null, 2), + !_ctx.$slots.dot ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)(defaultNodeKls.value), + style: (0, vue.normalizeStyle)({ backgroundColor: __props.color }) + }, [__props.icon ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("icon")) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.icon)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true)], 6)) : (0, vue.createCommentVNode)("v-if", true), + _ctx.$slots.dot ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("dot")) + }, [(0, vue.renderSlot)(_ctx.$slots, "dot")], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("wrapper")) }, [ + !__props.hideTimestamp && __props.placement === "top" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("timestamp"), (0, vue.unref)(ns).is("top")]) + }, (0, vue.toDisplayString)(__props.timestamp), 3)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("content")) }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2), + !__props.hideTimestamp && __props.placement === "bottom" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("timestamp"), (0, vue.unref)(ns).is("bottom")]) + }, (0, vue.toDisplayString)(__props.timestamp), 3)) : (0, vue.createCommentVNode)("v-if", true) + ], 2) + ], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/timeline/src/timeline-item.vue + var timeline_item_default = timeline_item_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/timeline/index.ts + const ElTimeline = withInstall(Timeline, { TimelineItem: timeline_item_default }); + const ElTimelineItem = withNoopInstall(timeline_item_default); + +//#endregion +//#region ../../packages/components/transfer/src/transfer.ts + const LEFT_CHECK_CHANGE_EVENT = "left-check-change"; + const RIGHT_CHECK_CHANGE_EVENT = "right-check-change"; + /** + * @deprecated Removed after 3.0.0, Use `TransferProps` instead. + */ + const transferProps = buildProps({ + data: { + type: definePropType(Array), + default: () => [] + }, + titles: { + type: definePropType(Array), + default: () => [] + }, + buttonTexts: { + type: definePropType(Array), + default: () => [] + }, + filterPlaceholder: String, + filterMethod: { type: definePropType(Function) }, + leftDefaultChecked: { + type: definePropType(Array), + default: () => [] + }, + rightDefaultChecked: { + type: definePropType(Array), + default: () => [] + }, + renderContent: { type: definePropType(Function) }, + modelValue: { + type: definePropType(Array), + default: () => [] + }, + format: { + type: definePropType(Object), + default: () => ({}) + }, + filterable: Boolean, + props: { + type: definePropType(Object), + default: () => mutable({ + label: "label", + key: "key", + disabled: "disabled" + }) + }, + targetOrder: { + type: String, + values: [ + "original", + "push", + "unshift" + ], + default: "original" + }, + validateEvent: { + type: Boolean, + default: true + } + }); + const transferCheckedChangeFn = (value, movedKeys) => [value, movedKeys].every(isArray$1) || isArray$1(value) && isNil(movedKeys); + const transferEmits = { + [CHANGE_EVENT]: (value, direction, movedKeys) => [value, movedKeys].every(isArray$1) && ["left", "right"].includes(direction), + [UPDATE_MODEL_EVENT]: (value) => isArray$1(value), + [LEFT_CHECK_CHANGE_EVENT]: transferCheckedChangeFn, + [RIGHT_CHECK_CHANGE_EVENT]: transferCheckedChangeFn + }; + +//#endregion +//#region ../../packages/components/transfer/src/transfer-panel.ts + const CHECKED_CHANGE_EVENT = "checked-change"; + /** + * @deprecated Removed after 3.0.0, Use `TransferPanelProps` instead. + */ + const transferPanelProps = buildProps({ + data: transferProps.data, + optionRender: { type: definePropType(Function) }, + placeholder: String, + title: String, + filterable: Boolean, + format: transferProps.format, + filterMethod: transferProps.filterMethod, + defaultChecked: transferProps.leftDefaultChecked, + props: transferProps.props + }); + const transferPanelEmits = { [CHECKED_CHANGE_EVENT]: transferCheckedChangeFn }; + +//#endregion +//#region ../../packages/components/transfer/src/composables/use-props-alias.ts + const usePropsAlias = (props) => { + const initProps = { + label: "label", + key: "key", + disabled: "disabled" + }; + return (0, vue.computed)(() => ({ + ...initProps, + ...props.props + })); + }; + +//#endregion +//#region ../../packages/components/transfer/src/composables/use-check.ts + const useCheck$1 = (props, panelState, emit) => { + const propsAlias = usePropsAlias(props); + const filteredData = (0, vue.computed)(() => { + return props.data.filter((item) => { + if (isFunction$1(props.filterMethod)) return props.filterMethod(panelState.query, item); + else return String(item[propsAlias.value.label] || item[propsAlias.value.key]).toLowerCase().includes(panelState.query.toLowerCase()); + }); + }); + const checkableData = (0, vue.computed)(() => filteredData.value.filter((item) => !item[propsAlias.value.disabled])); + const checkedSummary = (0, vue.computed)(() => { + const checkedLength = panelState.checked.length; + const dataLength = props.data.length; + const { noChecked, hasChecked } = props.format; + if (noChecked && hasChecked) return checkedLength > 0 ? hasChecked.replace(/\${checked}/g, checkedLength.toString()).replace(/\${total}/g, dataLength.toString()) : noChecked.replace(/\${total}/g, dataLength.toString()); + else return `${checkedLength}/${dataLength}`; + }); + const isIndeterminate = (0, vue.computed)(() => { + const checkedLength = panelState.checked.length; + return checkedLength > 0 && checkedLength < checkableData.value.length; + }); + const updateAllChecked = () => { + const checkableDataKeys = checkableData.value.map((item) => item[propsAlias.value.key]); + panelState.allChecked = checkableDataKeys.length > 0 && checkableDataKeys.every((item) => panelState.checked.includes(item)); + }; + const handleAllCheckedChange = (value) => { + panelState.checked = value ? checkableData.value.map((item) => item[propsAlias.value.key]) : []; + }; + (0, vue.watch)(() => panelState.checked, (val, oldVal) => { + updateAllChecked(); + if (panelState.checkChangeByUser) emit(CHECKED_CHANGE_EVENT, val, val.concat(oldVal).filter((v) => !val.includes(v) || !oldVal.includes(v))); + else { + emit(CHECKED_CHANGE_EVENT, val); + panelState.checkChangeByUser = true; + } + }); + (0, vue.watch)(checkableData, () => { + updateAllChecked(); + }); + (0, vue.watch)(() => props.data, () => { + const checked = []; + const filteredDataKeys = filteredData.value.map((item) => item[propsAlias.value.key]); + panelState.checked.forEach((item) => { + if (filteredDataKeys.includes(item)) checked.push(item); + }); + panelState.checkChangeByUser = false; + panelState.checked = checked; + }); + (0, vue.watch)(() => props.defaultChecked, (val, oldVal) => { + if (oldVal && val.length === oldVal.length && val.every((item) => oldVal.includes(item))) return; + const checked = []; + const checkableDataKeys = checkableData.value.map((item) => item[propsAlias.value.key]); + val.forEach((item) => { + if (checkableDataKeys.includes(item)) checked.push(item); + }); + panelState.checkChangeByUser = false; + panelState.checked = checked; + }, { immediate: true }); + return { + filteredData, + checkableData, + checkedSummary, + isIndeterminate, + updateAllChecked, + handleAllCheckedChange + }; + }; + +//#endregion +//#region ../../packages/components/transfer/src/composables/use-checked-change.ts + const useCheckedChange = (checkedState, emit) => { + const onSourceCheckedChange = (val, movedKeys) => { + checkedState.leftChecked = val; + if (!movedKeys) return; + emit(LEFT_CHECK_CHANGE_EVENT, val, movedKeys); + }; + const onTargetCheckedChange = (val, movedKeys) => { + checkedState.rightChecked = val; + if (!movedKeys) return; + emit(RIGHT_CHECK_CHANGE_EVENT, val, movedKeys); + }; + return { + onSourceCheckedChange, + onTargetCheckedChange + }; + }; + +//#endregion +//#region ../../packages/components/transfer/src/composables/use-computed-data.ts + const useComputedData = (props) => { + const propsAlias = usePropsAlias(props); + const dataObj = (0, vue.computed)(() => props.data.reduce((o, cur) => (o[cur[propsAlias.value.key]] = cur, o), {})); + return { + sourceData: (0, vue.computed)(() => props.data.filter((item) => !props.modelValue.includes(item[propsAlias.value.key]))), + targetData: (0, vue.computed)(() => { + if (props.targetOrder === "original") return props.data.filter((item) => props.modelValue.includes(item[propsAlias.value.key])); + else return props.modelValue.reduce((arr, cur) => { + const val = dataObj.value[cur]; + if (val) arr.push(val); + return arr; + }, []); + }) + }; + }; + +//#endregion +//#region ../../packages/components/transfer/src/composables/use-move.ts + const useMove = (props, checkedState, emit) => { + const propsAlias = usePropsAlias(props); + const _emit = (value, direction, movedKeys) => { + emit(UPDATE_MODEL_EVENT, value); + emit(CHANGE_EVENT, value, direction, movedKeys); + }; + const addToLeft = () => { + const currentValue = props.modelValue.slice(); + checkedState.rightChecked.forEach((item) => { + const index = currentValue.indexOf(item); + if (index > -1) currentValue.splice(index, 1); + }); + _emit(currentValue, "left", checkedState.rightChecked); + }; + const addToRight = () => { + let currentValue = props.modelValue.slice(); + const itemsToBeMoved = props.data.filter((item) => { + const itemKey = item[propsAlias.value.key]; + return checkedState.leftChecked.includes(itemKey) && !props.modelValue.includes(itemKey); + }).map((item) => item[propsAlias.value.key]); + currentValue = props.targetOrder === "unshift" ? itemsToBeMoved.concat(currentValue) : currentValue.concat(itemsToBeMoved); + if (props.targetOrder === "original") currentValue = props.data.filter((item) => currentValue.includes(item[propsAlias.value.key])).map((item) => item[propsAlias.value.key]); + _emit(currentValue, "right", checkedState.leftChecked); + }; + return { + addToLeft, + addToRight + }; + }; + +//#endregion +//#region ../../packages/components/transfer/src/transfer-panel.vue?vue&type=script&setup=true&lang.ts + var transfer_panel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTransferPanel", + __name: "transfer-panel", + props: transferPanelProps, + emits: transferPanelEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const slots = (0, vue.useSlots)(); + const OptionContent = ({ option }) => option; + const { t } = useLocale(); + const ns = useNamespace("transfer"); + const panelState = (0, vue.reactive)({ + checked: [], + allChecked: false, + query: "", + checkChangeByUser: true + }); + const propsAlias = usePropsAlias(props); + const { filteredData, checkedSummary, isIndeterminate, handleAllCheckedChange } = useCheck$1(props, panelState, emit); + const hasNoMatch = (0, vue.computed)(() => !isEmpty(panelState.query) && isEmpty(filteredData.value)); + const hasFooter = (0, vue.computed)(() => !isEmpty(slots.default()[0].children)); + const { checked, allChecked, query } = (0, vue.toRefs)(panelState); + __expose({ query }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).b("panel")) }, [ + (0, vue.createElementVNode)("p", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("panel", "header")) }, [(0, vue.createVNode)((0, vue.unref)(ElCheckbox), { + modelValue: (0, vue.unref)(allChecked), + "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => (0, vue.isRef)(allChecked) ? allChecked.value = $event : null), + indeterminate: (0, vue.unref)(isIndeterminate), + "validate-event": false, + onChange: (0, vue.unref)(handleAllCheckedChange) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("panel", "header-title")) }, (0, vue.toDisplayString)(__props.title), 3), (0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("panel", "header-count")) }, (0, vue.toDisplayString)((0, vue.unref)(checkedSummary)), 3)]), + _: 1 + }, 8, [ + "modelValue", + "indeterminate", + "onChange" + ])], 2), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).be("panel", "body"), (0, vue.unref)(ns).is("with-footer", hasFooter.value)]) }, [ + __props.filterable ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElInput), { + key: 0, + modelValue: (0, vue.unref)(query), + "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => (0, vue.isRef)(query) ? query.value = $event : null), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("panel", "filter")), + size: "default", + placeholder: __props.placeholder, + "prefix-icon": (0, vue.unref)(search_default), + clearable: "", + "validate-event": false + }, null, 8, [ + "modelValue", + "class", + "placeholder", + "prefix-icon" + ])) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.withDirectives)((0, vue.createVNode)((0, vue.unref)(ElCheckboxGroup), { + modelValue: (0, vue.unref)(checked), + "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => (0, vue.isRef)(checked) ? checked.value = $event : null), + "validate-event": false, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).is("filterable", __props.filterable), (0, vue.unref)(ns).be("panel", "list")]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(filteredData), (item) => { + return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElCheckbox), { + key: item[(0, vue.unref)(propsAlias).key], + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("panel", "item")), + value: item[(0, vue.unref)(propsAlias).key], + disabled: item[(0, vue.unref)(propsAlias).disabled], + "validate-event": false + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)(OptionContent, { option: __props.optionRender?.(item) }, null, 8, ["option"])]), + _: 2 + }, 1032, [ + "class", + "value", + "disabled" + ]); + }), 128))]), + _: 1 + }, 8, ["modelValue", "class"]), [[vue.vShow, !hasNoMatch.value && !(0, vue.unref)(isEmpty)(__props.data)]]), + (0, vue.withDirectives)((0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("panel", "empty")) }, [(0, vue.renderSlot)(_ctx.$slots, "empty", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(hasNoMatch.value ? (0, vue.unref)(t)("el.transfer.noMatch") : (0, vue.unref)(t)("el.transfer.noData")), 1)])], 2), [[vue.vShow, hasNoMatch.value || (0, vue.unref)(isEmpty)(__props.data)]]) + ], 2), + hasFooter.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("p", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("panel", "footer")) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/transfer/src/transfer-panel.vue + var transfer_panel_default = transfer_panel_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/transfer/src/transfer.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$13 = { key: 0 }; + const _hoisted_2$8 = { key: 0 }; + var transfer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTransfer", + __name: "transfer", + props: transferProps, + emits: transferEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const slots = (0, vue.useSlots)(); + const { t } = useLocale(); + const ns = useNamespace("transfer"); + const { formItem } = useFormItem(); + const checkedState = (0, vue.reactive)({ + leftChecked: [], + rightChecked: [] + }); + const propsAlias = usePropsAlias(props); + const { sourceData, targetData } = useComputedData(props); + const { onSourceCheckedChange, onTargetCheckedChange } = useCheckedChange(checkedState, emit); + const { addToLeft, addToRight } = useMove(props, checkedState, emit); + const leftPanel = (0, vue.ref)(); + const rightPanel = (0, vue.ref)(); + const clearQuery = (which) => { + switch (which) { + case "left": + leftPanel.value.query = ""; + break; + case "right": + rightPanel.value.query = ""; + break; + } + }; + const hasButtonTexts = (0, vue.computed)(() => props.buttonTexts.length === 2); + const leftPanelTitle = (0, vue.computed)(() => props.titles[0] || t("el.transfer.titles.0")); + const rightPanelTitle = (0, vue.computed)(() => props.titles[1] || t("el.transfer.titles.1")); + const panelFilterPlaceholder = (0, vue.computed)(() => props.filterPlaceholder || t("el.transfer.filterPlaceholder")); + (0, vue.watch)(() => props.modelValue, () => { + if (props.validateEvent) formItem?.validate?.("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + }); + const optionRender = (0, vue.computed)(() => (option) => { + if (props.renderContent) return props.renderContent(vue.h, option); + const defaultSlotVNodes = (slots.default?.({ option }) || []).filter((node) => node.type !== vue.Comment); + if (defaultSlotVNodes.length) return defaultSlotVNodes; + return (0, vue.h)("span", option[propsAlias.value.label] || option[propsAlias.value.key]); + }); + __expose({ + clearQuery, + leftPanel, + rightPanel + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()) }, [ + (0, vue.createVNode)(transfer_panel_default, { + ref_key: "leftPanel", + ref: leftPanel, + data: (0, vue.unref)(sourceData), + "option-render": optionRender.value, + placeholder: panelFilterPlaceholder.value, + title: leftPanelTitle.value, + filterable: __props.filterable, + format: __props.format, + "filter-method": __props.filterMethod, + "default-checked": __props.leftDefaultChecked, + props: props.props, + onCheckedChange: (0, vue.unref)(onSourceCheckedChange) + }, { + empty: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "left-empty")]), + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "left-footer")]), + _: 3 + }, 8, [ + "data", + "option-render", + "placeholder", + "title", + "filterable", + "format", + "filter-method", + "default-checked", + "props", + "onCheckedChange" + ]), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("buttons")) }, [(0, vue.createVNode)((0, vue.unref)(ElButton), { + type: "primary", + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("button"), (0, vue.unref)(ns).is("with-texts", hasButtonTexts.value)]), + disabled: (0, vue.unref)(isEmpty)(checkedState.rightChecked), + onClick: (0, vue.unref)(addToLeft) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_left_default))]), + _: 1 + }), !(0, vue.unref)(isUndefined)(__props.buttonTexts[0]) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_1$13, (0, vue.toDisplayString)(__props.buttonTexts[0]), 1)) : (0, vue.createCommentVNode)("v-if", true)]), + _: 1 + }, 8, [ + "class", + "disabled", + "onClick" + ]), (0, vue.createVNode)((0, vue.unref)(ElButton), { + type: "primary", + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("button"), (0, vue.unref)(ns).is("with-texts", hasButtonTexts.value)]), + disabled: (0, vue.unref)(isEmpty)(checkedState.leftChecked), + onClick: (0, vue.unref)(addToRight) + }, { + default: (0, vue.withCtx)(() => [!(0, vue.unref)(isUndefined)(__props.buttonTexts[1]) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_2$8, (0, vue.toDisplayString)(__props.buttonTexts[1]), 1)) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createVNode)((0, vue.unref)(ElIcon), null, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(arrow_right_default))]), + _: 1 + })]), + _: 1 + }, 8, [ + "class", + "disabled", + "onClick" + ])], 2), + (0, vue.createVNode)(transfer_panel_default, { + ref_key: "rightPanel", + ref: rightPanel, + data: (0, vue.unref)(targetData), + "option-render": optionRender.value, + placeholder: panelFilterPlaceholder.value, + filterable: __props.filterable, + format: __props.format, + "filter-method": __props.filterMethod, + title: rightPanelTitle.value, + "default-checked": __props.rightDefaultChecked, + props: props.props, + onCheckedChange: (0, vue.unref)(onTargetCheckedChange) + }, { + empty: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "right-empty")]), + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "right-footer")]), + _: 3 + }, 8, [ + "data", + "option-render", + "placeholder", + "filterable", + "format", + "filter-method", + "title", + "default-checked", + "props", + "onCheckedChange" + ]) + ], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/transfer/src/transfer.vue + var transfer_default = transfer_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/transfer/index.ts + const ElTransfer = withInstall(transfer_default); + +//#endregion +//#region ../../packages/components/tree/src/model/util.ts + const NODE_KEY = "$treeNodeId"; + const markNodeData = function(node, data) { + if (!data || data[NODE_KEY]) return; + Object.defineProperty(data, NODE_KEY, { + value: node.id, + enumerable: false, + configurable: false, + writable: false + }); + }; + const getNodeKey = (key, data) => data?.[key || NODE_KEY]; + const handleCurrentChange = (store, emit, setCurrent) => { + const preCurrentNode = store.value.currentNode; + setCurrent(); + const currentNode = store.value.currentNode; + if (preCurrentNode === currentNode) return; + emit("current-change", currentNode ? currentNode.data : null, currentNode); + }; + +//#endregion +//#region ../../packages/components/tree/src/model/node.ts + const getChildState = (node) => { + let all = true; + let none = true; + let allWithoutDisable = true; + let isEffectivelyChecked = true; + for (let i = 0, j = node.length; i < j; i++) { + const n = node[i]; + if (n.checked !== true || n.indeterminate) { + all = false; + if (!n.disabled) allWithoutDisable = false; + } + if (n.checked !== false || n.indeterminate) none = false; + if (!n.isEffectivelyChecked) isEffectivelyChecked = false; + } + return { + all, + none, + allWithoutDisable, + half: !all && !none, + isEffectivelyChecked + }; + }; + const reInitChecked = function(node) { + if (node.childNodes.length === 0 || node.loading) { + node.isEffectivelyChecked = node.disabled || node.checked; + return; + } + const { all, none, half, isEffectivelyChecked } = getChildState(node.childNodes); + node.isEffectivelyChecked = isEffectivelyChecked; + if (all) { + node.checked = true; + node.indeterminate = false; + } else if (half) { + node.checked = false; + node.indeterminate = true; + } else if (none) { + node.checked = false; + node.indeterminate = false; + } + const parent = node.parent; + if (!parent || parent.level === 0) return; + if (!node.store.checkStrictly) reInitChecked(parent); + }; + const getPropertyFromData = function(node, prop) { + const props = node.store.props; + const data = node.data || {}; + const config = props[prop]; + if (isFunction$1(config)) return config(data, node); + else if (isString(config)) return data[config]; + else if (isUndefined(config)) { + const dataProp = data[prop]; + return isUndefined(dataProp) ? "" : dataProp; + } + }; + const setCanFocus = function(childNodes, focus) { + childNodes.forEach((item) => { + item.canFocus = focus; + setCanFocus(item.childNodes, focus); + }); + }; + let nodeIdSeed = 0; + var Node$1 = class Node$1 { + constructor(options) { + this.isLeafByUser = void 0; + this.isLeaf = void 0; + this.isEffectivelyChecked = false; + this.id = nodeIdSeed++; + this.text = null; + this.checked = false; + this.indeterminate = false; + this.data = null; + this.expanded = false; + this.parent = null; + this.visible = true; + this.isCurrent = false; + this.canFocus = false; + for (const name in options) if (hasOwn(options, name)) this[name] = options[name]; + this.level = 0; + this.loaded = false; + this.childNodes = []; + this.loading = false; + if (this.parent) this.level = this.parent.level + 1; + } + initialize() { + const store = this.store; + if (!store) throw new Error("[Node]store is required!"); + store.registerNode(this); + const props = store.props; + if (props && typeof props.isLeaf !== "undefined") { + const isLeaf = getPropertyFromData(this, "isLeaf"); + if (isBoolean(isLeaf)) this.isLeafByUser = isLeaf; + } + if (store.lazy !== true && this.data) { + this.setData(this.data); + if (store.defaultExpandAll) { + this.expanded = true; + this.canFocus = true; + } + } else if (this.level > 0 && store.lazy && store.defaultExpandAll && !this.isLeafByUser) this.expand(); + if (!isArray$1(this.data)) markNodeData(this, this.data); + if (!this.data) return; + const defaultExpandedKeys = store.defaultExpandedKeys; + const key = store.key; + if (key && !isNil(this.key) && defaultExpandedKeys && defaultExpandedKeys.includes(this.key)) this.expand(null, store.autoExpandParent); + if (key && store.currentNodeKey !== void 0 && this.key === store.currentNodeKey) { + store.currentNode && (store.currentNode.isCurrent = false); + store.currentNode = this; + store.currentNode.isCurrent = true; + } + if (store.lazy) store._initDefaultCheckedNode(this); + this.updateLeafState(); + if (this.level === 1 || this.parent?.expanded === true) this.canFocus = true; + } + setData(data) { + if (!isArray$1(data)) markNodeData(this, data); + this.data = data; + this.childNodes = []; + let children; + if (this.level === 0 && isArray$1(this.data)) children = this.data; + else children = getPropertyFromData(this, "children") || []; + for (let i = 0, j = children.length; i < j; i++) this.insertChild({ data: children[i] }); + } + get label() { + return getPropertyFromData(this, "label"); + } + get key() { + const nodeKey = this.store.key; + if (this.data) return this.data[nodeKey]; + return null; + } + get disabled() { + return getPropertyFromData(this, "disabled"); + } + get nextSibling() { + const parent = this.parent; + if (parent) { + const index = parent.childNodes.indexOf(this); + if (index > -1) return parent.childNodes[index + 1]; + } + return null; + } + get previousSibling() { + const parent = this.parent; + if (parent) { + const index = parent.childNodes.indexOf(this); + if (index > -1) return index > 0 ? parent.childNodes[index - 1] : null; + } + return null; + } + contains(target, deep = true) { + return (this.childNodes || []).some((child) => child === target || deep && child.contains(target)); + } + remove() { + const parent = this.parent; + if (parent) parent.removeChild(this); + } + insertChild(child, index, batch) { + if (!child) throw new Error("InsertChild error: child is required."); + if (!(child instanceof Node$1)) { + if (!batch) { + const children = this.getChildren(true); + if (!children?.includes(child.data)) if (isUndefined(index) || index < 0) children?.push(child.data); + else children?.splice(index, 0, child.data); + } + Object.assign(child, { + parent: this, + store: this.store + }); + child = (0, vue.reactive)(new Node$1(child)); + if (child instanceof Node$1) child.initialize(); + } + child.level = this.level + 1; + if (isUndefined(index) || index < 0) this.childNodes.push(child); + else this.childNodes.splice(index, 0, child); + this.updateLeafState(); + } + insertBefore(child, ref) { + let index; + if (ref) index = this.childNodes.indexOf(ref); + this.insertChild(child, index); + } + insertAfter(child, ref) { + let index; + if (ref) { + index = this.childNodes.indexOf(ref); + if (index !== -1) index += 1; + } + this.insertChild(child, index); + } + removeChild(child) { + const children = this.getChildren() || []; + const dataIndex = children.indexOf(child.data); + if (dataIndex > -1) children.splice(dataIndex, 1); + const index = this.childNodes.indexOf(child); + if (index > -1) { + this.store && this.store.deregisterNode(child); + child.parent = null; + this.childNodes.splice(index, 1); + } + this.updateLeafState(); + } + removeChildByData(data) { + const targetNode = this.childNodes.find((child) => child.data === data); + if (targetNode) this.removeChild(targetNode); + } + expand(callback, expandParent) { + const done = () => { + if (expandParent) { + let parent = this.parent; + while (parent && parent.level > 0) { + parent.expanded = true; + parent = parent.parent; + } + } + this.expanded = true; + if (callback) callback(); + setCanFocus(this.childNodes, true); + }; + if (this.shouldLoadData()) this.loadData((data) => { + if (isArray$1(data)) { + if (this.checked) this.setChecked(true, true); + else if (!this.store.checkStrictly) reInitChecked(this); + done(); + } + }); + else done(); + } + doCreateChildren(array, defaultProps = {}) { + array.forEach((item) => { + this.insertChild(Object.assign({ data: item }, defaultProps), void 0, true); + }); + } + collapse() { + this.expanded = false; + setCanFocus(this.childNodes, false); + } + shouldLoadData() { + return Boolean(this.store.lazy === true && this.store.load && !this.loaded); + } + updateLeafState() { + if (this.store.lazy === true && this.loaded !== true && typeof this.isLeafByUser !== "undefined") { + this.isLeaf = this.isLeafByUser; + this.isEffectivelyChecked = this.isLeaf && this.disabled; + return; + } + const childNodes = this.childNodes; + if (!this.store.lazy || this.store.lazy === true && this.loaded === true) { + this.isLeaf = !childNodes || childNodes.length === 0; + this.isEffectivelyChecked = this.isLeaf && this.disabled; + return; + } + this.isLeaf = false; + } + setChecked(value, deep, recursion, passValue) { + this.indeterminate = value === "half"; + this.checked = value === true; + this.isEffectivelyChecked = !this.childNodes.length && (this.disabled || this.checked); + if (this.store.checkStrictly) return; + if (!(this.shouldLoadData() && !this.store.checkDescendants)) { + const handleDescendants = () => { + if (deep) { + const childNodes = this.childNodes; + for (let i = 0, j = childNodes.length; i < j; i++) { + const child = childNodes[i]; + passValue = passValue || value !== false; + const isCheck = child.disabled && child.isLeaf ? child.checked : passValue; + child.setChecked(isCheck, deep, true, passValue); + } + const { half, all, isEffectivelyChecked } = getChildState(childNodes); + if (!all) { + this.checked = all; + this.indeterminate = half; + } + this.isEffectivelyChecked = !this.childNodes.length ? this.disabled || this.checked : isEffectivelyChecked; + } + }; + if (this.shouldLoadData()) { + this.loadData(() => { + handleDescendants(); + reInitChecked(this); + }, { checked: value !== false }); + return; + } else handleDescendants(); + } + const parent = this.parent; + if (!parent || parent.level === 0) return; + if (!recursion) reInitChecked(parent); + } + getChildren(forceInit = false) { + if (this.level === 0) return this.data; + const data = this.data; + if (!data) return null; + const props = this.store.props; + let children = "children"; + if (props) children = props.children || "children"; + if (isUndefined(data[children])) data[children] = null; + if (forceInit && !data[children]) data[children] = []; + return data[children]; + } + updateChildren() { + const newData = this.getChildren() || []; + const oldData = this.childNodes.map((node) => node.data); + const newDataMap = {}; + const newNodes = []; + newData.forEach((item, index) => { + const key = item[NODE_KEY]; + if (!!key && oldData.some((data) => data?.[NODE_KEY] === key)) newDataMap[key] = { + index, + data: item + }; + else newNodes.push({ + index, + data: item + }); + }); + if (!this.store.lazy) oldData.forEach((item) => { + if (!newDataMap[item?.[NODE_KEY]]) this.removeChildByData(item); + }); + newNodes.forEach(({ index, data }) => { + this.insertChild({ data }, index); + }); + this.updateLeafState(); + } + loadData(callback, defaultProps = {}) { + if (this.store.lazy === true && this.store.load && !this.loaded && (!this.loading || Object.keys(defaultProps).length)) { + this.loading = true; + const resolve = (children) => { + this.childNodes = []; + this.doCreateChildren(children, defaultProps); + this.loaded = true; + this.loading = false; + this.updateLeafState(); + if (callback) callback.call(this, children); + }; + const reject = () => { + this.loading = false; + }; + this.store.load(this, resolve, reject); + } else if (callback) callback.call(this); + } + eachNode(callback) { + const arr = [this]; + while (arr.length) { + const node = arr.shift(); + arr.unshift(...node.childNodes); + callback(node); + } + } + reInitChecked() { + if (this.store.checkStrictly) return; + reInitChecked(this); + } + }; + +//#endregion +//#region ../../packages/components/tree/src/model/tree-store.ts + var TreeStore = class { + constructor(options) { + this.lazy = false; + this.checkStrictly = false; + this.autoExpandParent = false; + this.defaultExpandAll = false; + this.checkDescendants = false; + this.currentNode = null; + this.currentNodeKey = null; + for (const option in options) if (hasOwn(options, option)) this[option] = options[option]; + this.nodesMap = {}; + } + initialize() { + this.root = new Node$1({ + data: this.data, + store: this + }); + this.root.initialize(); + if (this.lazy && this.load) { + const loadFn = this.load; + loadFn(this.root, (data) => { + this.root.doCreateChildren(data); + this._initDefaultCheckedNodes(); + }, NOOP); + } else this._initDefaultCheckedNodes(); + } + filter(value) { + const filterNodeMethod = this.filterNodeMethod; + const lazy = this.lazy; + const traverse = async function(node) { + const childNodes = node.root ? node.root.childNodes : node.childNodes; + for (const [index, child] of childNodes.entries()) { + child.visible = !!filterNodeMethod?.call(child, value, child.data, child); + if (index % 80 === 0 && index > 0) await (0, vue.nextTick)(); + await traverse(child); + } + if (!node.visible && childNodes.length) { + let allHidden = true; + allHidden = !childNodes.some((child) => child.visible); + if (node.root) node.root.visible = allHidden === false; + else node.visible = allHidden === false; + } + if (!value) return; + if (node.visible && !node.isLeaf) { + if (!lazy || node.loaded) node.expand(); + } + }; + traverse(this); + } + setData(newVal) { + if (newVal !== this.root.data) { + this.nodesMap = {}; + this.root.setData(newVal); + this._initDefaultCheckedNodes(); + this.setCurrentNodeKey(this.currentNodeKey); + } else this.root.updateChildren(); + } + getNode(data) { + if (data instanceof Node$1) return data; + const key = isObject$1(data) ? getNodeKey(this.key, data) : data; + return this.nodesMap[key] || null; + } + insertBefore(data, refData) { + const refNode = this.getNode(refData); + refNode.parent?.insertBefore({ data }, refNode); + } + insertAfter(data, refData) { + const refNode = this.getNode(refData); + refNode.parent?.insertAfter({ data }, refNode); + } + remove(data) { + const node = this.getNode(data); + if (node && node.parent) { + if (node === this.currentNode) this.currentNode = null; + node.parent.removeChild(node); + } + } + append(data, parentData) { + const parentNode = !isPropAbsent(parentData) ? this.getNode(parentData) : this.root; + if (parentNode) parentNode.insertChild({ data }); + } + _initDefaultCheckedNodes() { + const defaultCheckedKeys = this.defaultCheckedKeys || []; + const nodesMap = this.nodesMap; + defaultCheckedKeys.forEach((checkedKey) => { + const node = nodesMap[checkedKey]; + if (node) node.setChecked(true, !this.checkStrictly); + }); + } + _initDefaultCheckedNode(node) { + const defaultCheckedKeys = this.defaultCheckedKeys || []; + if (!isNil(node.key) && defaultCheckedKeys.includes(node.key)) node.setChecked(true, !this.checkStrictly); + } + setDefaultCheckedKey(newVal) { + if (newVal !== this.defaultCheckedKeys) { + this.defaultCheckedKeys = newVal; + this._initDefaultCheckedNodes(); + } + } + registerNode(node) { + const key = this.key; + if (!node || !node.data) return; + if (!key) this.nodesMap[node.id] = node; + else { + const nodeKey = node.key; + if (!isNil(nodeKey)) this.nodesMap[nodeKey] = node; + } + } + deregisterNode(node) { + if (!this.key || !node || !node.data) return; + node.childNodes.forEach((child) => { + this.deregisterNode(child); + }); + delete this.nodesMap[node.key]; + } + getCheckedNodes(leafOnly = false, includeHalfChecked = false) { + const checkedNodes = []; + const traverse = function(node) { + (node.root ? node.root.childNodes : node.childNodes).forEach((child) => { + if ((child.checked || includeHalfChecked && child.indeterminate) && (!leafOnly || leafOnly && child.isLeaf)) checkedNodes.push(child.data); + traverse(child); + }); + }; + traverse(this); + return checkedNodes; + } + getCheckedKeys(leafOnly = false) { + return this.getCheckedNodes(leafOnly).map((data) => (data || {})[this.key]); + } + getHalfCheckedNodes() { + const nodes = []; + const traverse = function(node) { + (node.root ? node.root.childNodes : node.childNodes).forEach((child) => { + if (child.indeterminate) nodes.push(child.data); + traverse(child); + }); + }; + traverse(this); + return nodes; + } + getHalfCheckedKeys() { + return this.getHalfCheckedNodes().map((data) => (data || {})[this.key]); + } + _getAllNodes() { + const allNodes = []; + const nodesMap = this.nodesMap; + for (const nodeKey in nodesMap) if (hasOwn(nodesMap, nodeKey)) allNodes.push(nodesMap[nodeKey]); + return allNodes; + } + updateChildren(key, data) { + const node = this.nodesMap[key]; + if (!node) return; + const childNodes = node.childNodes; + for (let i = childNodes.length - 1; i >= 0; i--) { + const child = childNodes[i]; + this.remove(child.data); + } + for (let i = 0, j = data.length; i < j; i++) { + const child = data[i]; + this.append(child, node.data); + } + } + _setCheckedKeys(key, leafOnly = false, checkedKeys) { + const allNodes = this._getAllNodes().sort((a, b) => a.level - b.level); + const cache = Object.create(null); + const keys = Object.keys(checkedKeys); + allNodes.forEach((node) => node.setChecked(false, false)); + const cacheCheckedChild = (node) => { + node.childNodes.forEach((child) => { + cache[child.data[key]] = true; + if (child.childNodes?.length) cacheCheckedChild(child); + }); + }; + for (let i = 0, j = allNodes.length; i < j; i++) { + const node = allNodes[i]; + const nodeKey = node.data[key].toString(); + if (!keys.includes(nodeKey)) { + if (node.checked && !cache[nodeKey]) node.setChecked(false, false); + continue; + } + if (node.childNodes.length) cacheCheckedChild(node); + if (node.isLeaf || this.checkStrictly) { + node.setChecked(true, false); + continue; + } + node.setChecked(true, true); + if (leafOnly) { + node.setChecked(false, false, true); + const traverse = function(node) { + node.childNodes.forEach((child) => { + if (!child.isLeaf) child.setChecked(false, false, true); + traverse(child); + }); + node.reInitChecked(); + }; + traverse(node); + } + } + } + setCheckedNodes(array, leafOnly = false) { + const key = this.key; + const checkedKeys = {}; + array.forEach((item) => { + checkedKeys[(item || {})[key]] = true; + }); + this._setCheckedKeys(key, leafOnly, checkedKeys); + } + setCheckedKeys(keys, leafOnly = false) { + this.defaultCheckedKeys = keys; + const key = this.key; + const checkedKeys = {}; + keys.forEach((key) => { + checkedKeys[key] = true; + }); + this._setCheckedKeys(key, leafOnly, checkedKeys); + } + setDefaultExpandedKeys(keys) { + keys = keys || []; + this.defaultExpandedKeys = keys; + keys.forEach((key) => { + const node = this.getNode(key); + if (node) node.expand(null, this.autoExpandParent); + }); + } + setChecked(data, checked, deep) { + const node = this.getNode(data); + if (node) node.setChecked(!!checked, deep); + } + getCurrentNode() { + return this.currentNode; + } + setCurrentNode(currentNode) { + const prevCurrentNode = this.currentNode; + if (prevCurrentNode) prevCurrentNode.isCurrent = false; + this.currentNode = currentNode; + this.currentNode.isCurrent = true; + } + setUserCurrentNode(node, shouldAutoExpandParent = true) { + const key = node[this.key]; + const currNode = this.nodesMap[key]; + this.setCurrentNode(currNode); + if (shouldAutoExpandParent && this.currentNode && this.currentNode.level > 1) this.currentNode.parent?.expand(null, true); + } + setCurrentNodeKey(key, shouldAutoExpandParent = true) { + this.currentNodeKey = key; + if (isPropAbsent(key)) { + this.currentNode && (this.currentNode.isCurrent = false); + this.currentNode = null; + return; + } + const node = this.getNode(key); + if (node) { + this.setCurrentNode(node); + if (shouldAutoExpandParent && this.currentNode && this.currentNode.level > 1) this.currentNode.parent?.expand(null, true); + } + } + }; + +//#endregion +//#region ../../packages/components/tree/src/tokens.ts + const ROOT_TREE_INJECTION_KEY = "RootTree"; + const NODE_INSTANCE_INJECTION_KEY = "NodeInstance"; + const TREE_NODE_MAP_INJECTION_KEY = "TreeNodeMap"; + +//#endregion +//#region ../../packages/components/tree/src/tree-node-content.vue?vue&type=script&lang.ts + var tree_node_content_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElTreeNodeContent", + props: { + node: { + type: Object, + required: true + }, + renderContent: Function + }, + setup(props) { + const ns = useNamespace("tree"); + const nodeInstance = (0, vue.inject)(NODE_INSTANCE_INJECTION_KEY); + const tree = (0, vue.inject)(ROOT_TREE_INJECTION_KEY); + return () => { + const node = props.node; + const { data, store } = node; + return props.renderContent ? props.renderContent(vue.h, { + _self: nodeInstance, + node, + data, + store + }) : (0, vue.renderSlot)(tree.ctx.slots, "default", { + node, + data + }, () => [(0, vue.h)(ElText, { + tag: "span", + truncated: true, + class: ns.be("node", "label") + }, () => [node.label])]); + }; + } + }); + +//#endregion +//#region ../../packages/components/tree/src/tree-node-content.vue + var tree_node_content_default$1 = tree_node_content_vue_vue_type_script_lang_default; + +//#endregion +//#region ../../packages/components/tree/src/model/useNodeExpandEventBroadcast.ts + function useNodeExpandEventBroadcast(props) { + const parentNodeMap = (0, vue.inject)(TREE_NODE_MAP_INJECTION_KEY, null); + let currentNodeMap = { + treeNodeExpand: (node) => { + if (props.node !== node) props.node?.collapse(); + }, + children: /* @__PURE__ */ new Set() + }; + if (parentNodeMap) parentNodeMap.children.add(currentNodeMap); + (0, vue.onBeforeUnmount)(() => { + if (parentNodeMap) parentNodeMap.children.delete(currentNodeMap); + currentNodeMap = null; + }); + (0, vue.provide)(TREE_NODE_MAP_INJECTION_KEY, currentNodeMap); + return { broadcastExpanded: (node) => { + if (!props.accordion) return; + for (const childNode of currentNodeMap.children) childNode.treeNodeExpand(node); + } }; + } + +//#endregion +//#region ../../packages/components/tree/src/model/useDragNode.ts + const dragEventsKey = Symbol("dragEvents"); + function useDragNodeHandler({ props, ctx, el$, dropIndicator$, store }) { + const ns = useNamespace("tree"); + const dragState = (0, vue.ref)({ + showDropIndicator: false, + draggingNode: null, + dropNode: null, + allowDrop: true, + dropType: null + }); + const treeNodeDragStart = ({ event, treeNode }) => { + if (!event.dataTransfer) return; + if (isFunction$1(props.allowDrag) && !props.allowDrag(treeNode.node)) { + event.preventDefault(); + return false; + } + event.dataTransfer.effectAllowed = "move"; + try { + event.dataTransfer.setData("text/plain", ""); + } catch {} + dragState.value.draggingNode = treeNode; + ctx.emit("node-drag-start", treeNode.node, event); + }; + const treeNodeDragOver = ({ event, treeNode }) => { + if (!event.dataTransfer) return; + const dropNode = treeNode; + const oldDropNode = dragState.value.dropNode; + if (oldDropNode && oldDropNode.node.id !== dropNode.node.id) removeClass(oldDropNode.$el, ns.is("drop-inner")); + const draggingNode = dragState.value.draggingNode; + if (!draggingNode || !dropNode) return; + let dropPrev = true; + let dropInner = true; + let dropNext = true; + let userAllowDropInner = true; + if (isFunction$1(props.allowDrop)) { + dropPrev = props.allowDrop(draggingNode.node, dropNode.node, "prev"); + userAllowDropInner = dropInner = props.allowDrop(draggingNode.node, dropNode.node, "inner"); + dropNext = props.allowDrop(draggingNode.node, dropNode.node, "next"); + } + event.dataTransfer.dropEffect = dropInner || dropPrev || dropNext ? "move" : "none"; + if ((dropPrev || dropInner || dropNext) && oldDropNode?.node.id !== dropNode.node.id) { + if (oldDropNode) ctx.emit("node-drag-leave", draggingNode.node, oldDropNode.node, event); + ctx.emit("node-drag-enter", draggingNode.node, dropNode.node, event); + } + if (dropPrev || dropInner || dropNext) dragState.value.dropNode = dropNode; + else dragState.value.dropNode = null; + if (dropNode.node.nextSibling === draggingNode.node) dropNext = false; + if (dropNode.node.previousSibling === draggingNode.node) dropPrev = false; + if (dropNode.node.contains(draggingNode.node, false)) dropInner = false; + if (draggingNode.node === dropNode.node || draggingNode.node.contains(dropNode.node)) { + dropPrev = false; + dropInner = false; + dropNext = false; + } + const dropEl = dropNode.$el; + const targetPosition = dropEl.querySelector(`.${ns.be("node", "content")}`).getBoundingClientRect(); + const treePosition = el$.value.getBoundingClientRect(); + const treeScrollTop = el$.value.scrollTop; + let dropType; + const prevPercent = dropPrev ? dropInner ? .25 : dropNext ? .45 : 1 : Number.NEGATIVE_INFINITY; + const nextPercent = dropNext ? dropInner ? .75 : dropPrev ? .55 : 0 : Number.POSITIVE_INFINITY; + let indicatorTop = -9999; + const distance = event.clientY - targetPosition.top; + if (distance < targetPosition.height * prevPercent) dropType = "before"; + else if (distance > targetPosition.height * nextPercent) dropType = "after"; + else if (dropInner) dropType = "inner"; + else dropType = "none"; + const iconPosition = dropEl.querySelector(`.${ns.be("node", "expand-icon")}`).getBoundingClientRect(); + const dropIndicator = dropIndicator$.value; + if (dropType === "before") indicatorTop = iconPosition.top - treePosition.top + treeScrollTop; + else if (dropType === "after") indicatorTop = iconPosition.bottom - treePosition.top + treeScrollTop; + dropIndicator.style.top = `${indicatorTop}px`; + dropIndicator.style.left = `${iconPosition.right - treePosition.left}px`; + if (dropType === "inner") addClass(dropEl, ns.is("drop-inner")); + else removeClass(dropEl, ns.is("drop-inner")); + dragState.value.showDropIndicator = dropType === "before" || dropType === "after"; + dragState.value.allowDrop = dragState.value.showDropIndicator || userAllowDropInner; + dragState.value.dropType = dropType; + ctx.emit("node-drag-over", draggingNode.node, dropNode.node, event); + }; + const treeNodeDragEnd = (event) => { + const { draggingNode, dropType, dropNode } = dragState.value; + event.preventDefault(); + if (event.dataTransfer) event.dataTransfer.dropEffect = "move"; + if (draggingNode?.node.data && dropNode) { + const draggingNodeCopy = { data: draggingNode.node.data }; + if (dropType !== "none") draggingNode.node.remove(); + if (dropType === "before") dropNode.node.parent?.insertBefore(draggingNodeCopy, dropNode.node); + else if (dropType === "after") dropNode.node.parent?.insertAfter(draggingNodeCopy, dropNode.node); + else if (dropType === "inner") dropNode.node.insertChild(draggingNodeCopy); + if (dropType !== "none") { + store.value.registerNode(draggingNodeCopy); + if (store.value.key) draggingNode.node.eachNode((node) => { + store.value.nodesMap[node.data[store.value.key]]?.setChecked(node.checked, !store.value.checkStrictly); + }); + } + removeClass(dropNode.$el, ns.is("drop-inner")); + ctx.emit("node-drag-end", draggingNode.node, dropNode.node, dropType, event); + if (dropType !== "none") ctx.emit("node-drop", draggingNode.node, dropNode.node, dropType, event); + } + if (draggingNode && !dropNode) ctx.emit("node-drag-end", draggingNode.node, null, dropType, event); + dragState.value.showDropIndicator = false; + dragState.value.draggingNode = null; + dragState.value.dropNode = null; + dragState.value.allowDrop = true; + }; + (0, vue.provide)(dragEventsKey, { + treeNodeDragStart, + treeNodeDragOver, + treeNodeDragEnd + }); + return { dragState }; + } + +//#endregion +//#region ../../packages/components/tree/src/tree-node.vue?vue&type=script&lang.ts + var tree_node_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElTreeNode", + components: { + ElCollapseTransition, + ElCheckbox, + NodeContent: tree_node_content_default$1, + ElIcon, + Loading: loading_default + }, + props: { + node: { + type: Node$1, + default: () => ({}) + }, + props: { + type: Object, + default: () => ({}) + }, + accordion: Boolean, + renderContent: Function, + renderAfterExpand: Boolean, + showCheckbox: Boolean + }, + emits: ["node-expand"], + setup(props, ctx) { + const ns = useNamespace("tree"); + const { broadcastExpanded } = useNodeExpandEventBroadcast(props); + const tree = (0, vue.inject)(ROOT_TREE_INJECTION_KEY); + const expanded = (0, vue.ref)(false); + const childNodeRendered = (0, vue.ref)(false); + const oldChecked = (0, vue.ref)(); + const oldIndeterminate = (0, vue.ref)(); + const node$ = (0, vue.ref)(); + const dragEvents = (0, vue.inject)(dragEventsKey); + const instance = (0, vue.getCurrentInstance)(); + (0, vue.provide)(NODE_INSTANCE_INJECTION_KEY, instance); + if (!tree) /* @__PURE__ */ debugWarn("Tree", "Can not find node's tree."); + if (props.node.expanded) { + expanded.value = true; + childNodeRendered.value = true; + } + const childrenKey = tree.props.props["children"] || "children"; + (0, vue.watch)(() => { + const children = props.node.data?.[childrenKey]; + return children && [...children]; + }, () => { + props.node.updateChildren(); + }); + (0, vue.watch)(() => props.node.indeterminate, (val) => { + handleSelectChange(props.node.checked, val); + }); + (0, vue.watch)(() => props.node.checked, (val) => { + handleSelectChange(val, props.node.indeterminate); + }); + (0, vue.watch)(() => props.node.childNodes.length, () => props.node.reInitChecked()); + (0, vue.watch)(() => props.node.expanded, (val) => { + (0, vue.nextTick)(() => expanded.value = val); + if (val) childNodeRendered.value = true; + }); + const getNodeKey$2 = (node) => { + return tree.props.nodeKey ? getNodeKey(tree.props.nodeKey, node.data) : node.id; + }; + const getNodeClass = (node) => { + const nodeClassFunc = props.props.class; + if (!nodeClassFunc) return {}; + let className; + if (isFunction$1(nodeClassFunc)) { + const { data } = node; + className = nodeClassFunc(data, node); + } else className = nodeClassFunc; + if (isString(className)) return { [className]: true }; + else return className; + }; + const handleSelectChange = (checked, indeterminate) => { + if (oldChecked.value !== checked || oldIndeterminate.value !== indeterminate) tree.ctx.emit("check-change", props.node.data, checked, indeterminate); + oldChecked.value = checked; + oldIndeterminate.value = indeterminate; + }; + const handleClick = (e) => { + handleCurrentChange(tree.store, tree.ctx.emit, () => { + if (tree?.props?.nodeKey) { + const curNodeKey = getNodeKey$2(props.node); + tree.store.value.setCurrentNodeKey(curNodeKey); + } else tree.store.value.setCurrentNode(props.node); + }); + tree.currentNode.value = props.node; + if (tree.props.expandOnClickNode) handleExpandIconClick(); + if ((tree.props.checkOnClickNode || props.node.isLeaf && tree.props.checkOnClickLeaf && props.showCheckbox) && !props.node.disabled) handleCheckChange(!props.node.checked); + tree.ctx.emit("node-click", props.node.data, props.node, instance, e); + }; + const handleContextMenu = (event) => { + if (tree.instance.vnode.props?.["onNodeContextmenu"]) { + event.stopPropagation(); + event.preventDefault(); + } + tree.ctx.emit("node-contextmenu", event, props.node.data, props.node, instance); + }; + const handleExpandIconClick = () => { + if (props.node.isLeaf) return; + if (expanded.value) { + tree.ctx.emit("node-collapse", props.node.data, props.node, instance); + props.node.collapse(); + } else props.node.expand(() => { + ctx.emit("node-expand", props.node.data, props.node, instance); + }); + }; + const handleCheckChange = (value) => { + const checkStrictly = tree?.props.checkStrictly; + const childNodes = props.node.childNodes; + if (!checkStrictly && childNodes.length) value = childNodes.some((node) => !node.isEffectivelyChecked); + props.node.setChecked(value, !checkStrictly); + (0, vue.nextTick)(() => { + const store = tree.store.value; + tree.ctx.emit("check", props.node.data, { + checkedNodes: store.getCheckedNodes(), + checkedKeys: store.getCheckedKeys(), + halfCheckedNodes: store.getHalfCheckedNodes(), + halfCheckedKeys: store.getHalfCheckedKeys() + }); + }); + }; + const handleChildNodeExpand = (nodeData, node, instance) => { + broadcastExpanded(node); + tree.ctx.emit("node-expand", nodeData, node, instance); + }; + const handleDragStart = (event) => { + if (!tree.props.draggable) return; + dragEvents.treeNodeDragStart({ + event, + treeNode: props + }); + }; + const handleDragOver = (event) => { + event.preventDefault(); + if (!tree.props.draggable) return; + dragEvents.treeNodeDragOver({ + event, + treeNode: { + $el: node$.value, + node: props.node + } + }); + }; + const handleDrop = (event) => { + event.preventDefault(); + }; + const handleDragEnd = (event) => { + if (!tree.props.draggable) return; + dragEvents.treeNodeDragEnd(event); + }; + return { + ns, + node$, + tree, + expanded, + childNodeRendered, + oldChecked, + oldIndeterminate, + getNodeKey: getNodeKey$2, + getNodeClass, + handleSelectChange, + handleClick, + handleContextMenu, + handleExpandIconClick, + handleCheckChange, + handleChildNodeExpand, + handleDragStart, + handleDragOver, + handleDrop, + handleDragEnd, + CaretRight: caret_right_default + }; + } + }); + +//#endregion +//#region ../../packages/components/tree/src/tree-node.vue + const _hoisted_1$12 = [ + "aria-expanded", + "aria-disabled", + "aria-checked", + "draggable", + "data-key" + ]; + const _hoisted_2$7 = ["aria-expanded"]; + function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) { + const _component_el_icon = (0, vue.resolveComponent)("el-icon"); + const _component_el_checkbox = (0, vue.resolveComponent)("el-checkbox"); + const _component_loading = (0, vue.resolveComponent)("loading"); + const _component_node_content = (0, vue.resolveComponent)("node-content"); + const _component_el_tree_node = (0, vue.resolveComponent)("el-tree-node"); + const _component_el_collapse_transition = (0, vue.resolveComponent)("el-collapse-transition"); + return (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref: "node$", + class: (0, vue.normalizeClass)([ + _ctx.ns.b("node"), + _ctx.ns.is("expanded", _ctx.expanded), + _ctx.ns.is("current", _ctx.node.isCurrent), + _ctx.ns.is("hidden", !_ctx.node.visible), + _ctx.ns.is("focusable", !_ctx.node.disabled), + _ctx.ns.is("checked", !_ctx.node.disabled && _ctx.node.checked), + _ctx.getNodeClass(_ctx.node) + ]), + role: "treeitem", + tabindex: "-1", + "aria-expanded": _ctx.expanded, + "aria-disabled": _ctx.node.disabled, + "aria-checked": _ctx.node.checked, + draggable: _ctx.tree.props.draggable, + "data-key": _ctx.getNodeKey(_ctx.node), + onClick: _cache[2] || (_cache[2] = (0, vue.withModifiers)((...args) => _ctx.handleClick && _ctx.handleClick(...args), ["stop"])), + onContextmenu: _cache[3] || (_cache[3] = (...args) => _ctx.handleContextMenu && _ctx.handleContextMenu(...args)), + onDragstart: _cache[4] || (_cache[4] = (0, vue.withModifiers)((...args) => _ctx.handleDragStart && _ctx.handleDragStart(...args), ["stop"])), + onDragover: _cache[5] || (_cache[5] = (0, vue.withModifiers)((...args) => _ctx.handleDragOver && _ctx.handleDragOver(...args), ["stop"])), + onDragend: _cache[6] || (_cache[6] = (0, vue.withModifiers)((...args) => _ctx.handleDragEnd && _ctx.handleDragEnd(...args), ["stop"])), + onDrop: _cache[7] || (_cache[7] = (0, vue.withModifiers)((...args) => _ctx.handleDrop && _ctx.handleDrop(...args), ["stop"])) + }, [(0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)(_ctx.ns.be("node", "content")), + style: (0, vue.normalizeStyle)({ paddingLeft: (_ctx.node.level - 1) * _ctx.tree.props.indent + "px" }) + }, [ + _ctx.tree.props.icon || _ctx.CaretRight ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_icon, { + key: 0, + class: (0, vue.normalizeClass)([ + _ctx.ns.be("node", "expand-icon"), + _ctx.ns.is("leaf", _ctx.node.isLeaf), + { expanded: !_ctx.node.isLeaf && _ctx.expanded } + ]), + onClick: (0, vue.withModifiers)(_ctx.handleExpandIconClick, ["stop"]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.tree.props.icon || _ctx.CaretRight)))]), + _: 1 + }, 8, ["class", "onClick"])) : (0, vue.createCommentVNode)("v-if", true), + _ctx.showCheckbox ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_checkbox, { + key: 1, + "model-value": _ctx.node.checked, + indeterminate: _ctx.node.indeterminate, + disabled: !!_ctx.node.disabled, + onClick: _cache[0] || (_cache[0] = (0, vue.withModifiers)(() => {}, ["stop"])), + onChange: _ctx.handleCheckChange + }, null, 8, [ + "model-value", + "indeterminate", + "disabled", + "onChange" + ])) : (0, vue.createCommentVNode)("v-if", true), + _ctx.node.loading ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_icon, { + key: 2, + class: (0, vue.normalizeClass)([_ctx.ns.be("node", "loading-icon"), _ctx.ns.is("loading")]) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)(_component_loading)]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createVNode)(_component_node_content, { + node: _ctx.node, + "render-content": _ctx.renderContent + }, null, 8, ["node", "render-content"]) + ], 6), (0, vue.createVNode)(_component_el_collapse_transition, null, { + default: (0, vue.withCtx)(() => [!_ctx.renderAfterExpand || _ctx.childNodeRendered ? (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)(_ctx.ns.be("node", "children")), + role: "group", + "aria-expanded": _ctx.expanded, + onClick: _cache[1] || (_cache[1] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(_ctx.node.childNodes, (child) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(_component_el_tree_node, { + key: _ctx.getNodeKey(child), + "render-content": _ctx.renderContent, + "render-after-expand": _ctx.renderAfterExpand, + "show-checkbox": _ctx.showCheckbox, + node: child, + accordion: _ctx.accordion, + props: _ctx.props, + onNodeExpand: _ctx.handleChildNodeExpand + }, null, 8, [ + "render-content", + "render-after-expand", + "show-checkbox", + "node", + "accordion", + "props", + "onNodeExpand" + ]); + }), 128))], 10, _hoisted_2$7)), [[vue.vShow, _ctx.expanded]]) : (0, vue.createCommentVNode)("v-if", true)]), + _: 1 + })], 42, _hoisted_1$12)), [[vue.vShow, _ctx.node.visible]]); + } + var tree_node_default$1 = /* @__PURE__ */ _plugin_vue_export_helper_default(tree_node_vue_vue_type_script_lang_default, [["render", _sfc_render$2]]); + +//#endregion +//#region ../../packages/components/tree/src/model/useKeydown.ts + function useKeydown({ el$ }, store) { + const ns = useNamespace("tree"); + (0, vue.onMounted)(() => { + initTabIndex(); + }); + (0, vue.onUpdated)(() => { + el$.value?.querySelectorAll("input[type=checkbox]").forEach((checkbox) => { + checkbox.setAttribute("tabindex", "-1"); + }); + }); + function canNodeFocus(treeItems, nextIndex) { + const currentNode = store.value.getNode(treeItems[nextIndex].dataset.key); + return currentNode.canFocus && currentNode.visible && (currentNode.parent?.expanded || currentNode.parent?.level === 0); + } + const handleKeydown = (ev) => { + const currentItem = ev.target; + if (!currentItem.className.includes(ns.b("node"))) return; + const code = getEventCode(ev); + const treeItems = Array.from(el$.value.querySelectorAll(`.${ns.is("focusable")}[role=treeitem]`)); + const currentIndex = treeItems.indexOf(currentItem); + let nextIndex; + if ([EVENT_CODE.up, EVENT_CODE.down].includes(code)) { + ev.preventDefault(); + if (code === EVENT_CODE.up) { + nextIndex = currentIndex === -1 ? 0 : currentIndex !== 0 ? currentIndex - 1 : treeItems.length - 1; + const startIndex = nextIndex; + while (true) { + if (canNodeFocus(treeItems, nextIndex)) break; + nextIndex--; + if (nextIndex === startIndex) { + nextIndex = -1; + break; + } + if (nextIndex < 0) nextIndex = treeItems.length - 1; + } + } else { + nextIndex = currentIndex === -1 ? 0 : currentIndex < treeItems.length - 1 ? currentIndex + 1 : 0; + const startIndex = nextIndex; + while (true) { + if (canNodeFocus(treeItems, nextIndex)) break; + nextIndex++; + if (nextIndex === startIndex) { + nextIndex = -1; + break; + } + if (nextIndex >= treeItems.length) nextIndex = 0; + } + } + nextIndex !== -1 && treeItems[nextIndex].focus(); + } + if ([EVENT_CODE.left, EVENT_CODE.right].includes(code)) { + ev.preventDefault(); + currentItem.click(); + } + const hasInput = currentItem.querySelector("[type=\"checkbox\"]"); + if ([ + EVENT_CODE.enter, + EVENT_CODE.numpadEnter, + EVENT_CODE.space + ].includes(code) && hasInput) { + ev.preventDefault(); + hasInput.click(); + } + }; + useEventListener(el$, "keydown", handleKeydown); + const initTabIndex = () => { + if (!el$.value) return; + const treeItems = Array.from(el$.value.querySelectorAll(`.${ns.is("focusable")}[role=treeitem]`)); + Array.from(el$.value.querySelectorAll("input[type=checkbox]")).forEach((checkbox) => { + checkbox.setAttribute("tabindex", "-1"); + }); + const checkedItem = el$.value.querySelectorAll(`.${ns.is("checked")}[role=treeitem]`); + if (checkedItem.length) { + checkedItem[0].setAttribute("tabindex", "0"); + return; + } + treeItems[0]?.setAttribute("tabindex", "0"); + }; + } + +//#endregion +//#region ../../packages/components/tree/src/tree.ts + const treeProps = buildProps({ + data: { + type: definePropType(Array), + default: () => [] + }, + emptyText: { type: String }, + renderAfterExpand: { + type: Boolean, + default: true + }, + nodeKey: String, + checkStrictly: Boolean, + defaultExpandAll: Boolean, + expandOnClickNode: { + type: Boolean, + default: true + }, + checkOnClickNode: Boolean, + checkOnClickLeaf: { + type: Boolean, + default: true + }, + checkDescendants: Boolean, + autoExpandParent: { + type: Boolean, + default: true + }, + defaultCheckedKeys: { type: Array }, + defaultExpandedKeys: { type: Array }, + currentNodeKey: { type: [String, Number] }, + renderContent: { type: definePropType(Function) }, + showCheckbox: Boolean, + draggable: Boolean, + allowDrag: { type: definePropType(Function) }, + allowDrop: { type: definePropType(Function) }, + props: { + type: Object, + default: () => ({ + children: "children", + label: "label", + disabled: "disabled" + }) + }, + lazy: Boolean, + highlightCurrent: Boolean, + load: { type: Function }, + filterNodeMethod: { type: Function }, + accordion: Boolean, + indent: { + type: Number, + default: 18 + }, + icon: { type: iconPropType } + }); + const treeEmits = { + "check-change": (data, checked, indeterminate) => data && isBoolean(checked) && isBoolean(indeterminate), + "current-change": (data, node) => true, + "node-click": (data, node, nodeInstance, evt) => data && node && evt instanceof Event, + "node-contextmenu": (evt, data, node, nodeInstance) => evt instanceof Event && data && node, + "node-collapse": (data, node, nodeInstance) => data && node, + "node-expand": (data, node, nodeInstance) => data && node, + check: (data, checkedInfo) => data && checkedInfo, + "node-drag-start": (node, evt) => node && evt, + "node-drag-end": (draggingNode, dropNode, dropType, evt) => draggingNode && evt, + "node-drop": (draggingNode, dropNode, dropType, evt) => draggingNode && dropNode && evt, + "node-drag-leave": (draggingNode, oldDropNode, evt) => draggingNode && oldDropNode && evt, + "node-drag-enter": (draggingNode, dropNode, evt) => draggingNode && dropNode && evt, + "node-drag-over": (draggingNode, dropNode, evt) => draggingNode && dropNode && evt + }; + +//#endregion +//#region ../../packages/components/tree/src/tree.vue?vue&type=script&lang.ts + var tree_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElTree", + components: { ElTreeNode: tree_node_default$1 }, + props: treeProps, + emits: treeEmits, + setup(props, ctx) { + const { t } = useLocale(); + const ns = useNamespace("tree"); + const store = (0, vue.ref)(new TreeStore({ + key: props.nodeKey, + data: props.data, + lazy: props.lazy, + props: props.props, + load: props.load, + currentNodeKey: props.currentNodeKey, + checkStrictly: props.checkStrictly, + checkDescendants: props.checkDescendants, + defaultCheckedKeys: props.defaultCheckedKeys, + defaultExpandedKeys: props.defaultExpandedKeys, + autoExpandParent: props.autoExpandParent, + defaultExpandAll: props.defaultExpandAll, + filterNodeMethod: props.filterNodeMethod + })); + store.value.initialize(); + const root = (0, vue.ref)(store.value.root); + const currentNode = (0, vue.ref)(null); + const el$ = (0, vue.ref)(null); + const dropIndicator$ = (0, vue.ref)(null); + const { broadcastExpanded } = useNodeExpandEventBroadcast(props); + const { dragState } = useDragNodeHandler({ + props, + ctx, + el$, + dropIndicator$, + store + }); + useKeydown({ el$ }, store); + const instance = (0, vue.getCurrentInstance)(); + const isSelectTree = (0, vue.computed)(() => { + let parent = instance?.parent; + while (parent) { + if (parent.type.name === "ElTreeSelect") return true; + parent = parent.parent; + } + return false; + }); + const isEmpty = (0, vue.computed)(() => { + const { childNodes } = root.value; + return (!childNodes || childNodes.length === 0 || childNodes.every(({ visible }) => !visible)) && !isSelectTree.value; + }); + (0, vue.watch)(() => props.currentNodeKey, (newVal) => { + store.value.setCurrentNodeKey(newVal ?? null); + }); + (0, vue.watch)(() => props.defaultCheckedKeys, (newVal, oldVal) => { + if (isEqual$1(newVal, oldVal)) return; + store.value.setDefaultCheckedKey(newVal ?? []); + }); + (0, vue.watch)(() => props.defaultExpandedKeys, (newVal) => { + store.value.setDefaultExpandedKeys(newVal ?? []); + }); + (0, vue.watch)(() => props.data, (newVal) => { + store.value.setData(newVal); + }, { deep: true }); + (0, vue.watch)(() => props.checkStrictly, (newVal) => { + store.value.checkStrictly = newVal; + }); + const filter = (value) => { + if (!props.filterNodeMethod) throw new Error("[Tree] filterNodeMethod is required when filter"); + store.value.filter(value); + }; + const getNodeKey$1 = (node) => { + return props.nodeKey ? getNodeKey(props.nodeKey, node.data) : node.id; + }; + const requireNodeKey = (methodName) => { + if (!props.nodeKey) throw new Error(`[Tree] nodeKey is required in ${methodName}`); + }; + const getNodePath = (data) => { + requireNodeKey("getNodePath"); + const node = store.value.getNode(data); + if (!node) return []; + const path = [node.data]; + let parent = node.parent; + while (parent && parent !== root.value) { + path.push(parent.data); + parent = parent.parent; + } + return path.reverse(); + }; + const getCheckedNodes = (leafOnly, includeHalfChecked) => { + return store.value.getCheckedNodes(leafOnly, includeHalfChecked); + }; + const getCheckedKeys = (leafOnly) => { + return store.value.getCheckedKeys(leafOnly); + }; + const getCurrentNode = () => { + const currentNode = store.value.getCurrentNode(); + return currentNode ? currentNode.data : null; + }; + const getCurrentKey = () => { + requireNodeKey("getCurrentKey"); + const currentNode = getCurrentNode(); + return currentNode ? currentNode[props.nodeKey] : null; + }; + const setCheckedNodes = (nodes, leafOnly) => { + requireNodeKey("setCheckedNodes"); + store.value.setCheckedNodes(nodes, leafOnly); + }; + const setCheckedKeys = (keys, leafOnly) => { + requireNodeKey("setCheckedKeys"); + store.value.setCheckedKeys(keys, leafOnly); + }; + const setChecked = (data, checked, deep) => { + store.value.setChecked(data, checked, deep); + }; + const getHalfCheckedNodes = () => { + return store.value.getHalfCheckedNodes(); + }; + const getHalfCheckedKeys = () => { + return store.value.getHalfCheckedKeys(); + }; + const setCurrentNode = (node, shouldAutoExpandParent = true) => { + requireNodeKey("setCurrentNode"); + handleCurrentChange(store, ctx.emit, () => { + broadcastExpanded(node); + store.value.setUserCurrentNode(node, shouldAutoExpandParent); + }); + }; + const setCurrentKey = (key = null, shouldAutoExpandParent = true) => { + requireNodeKey("setCurrentKey"); + handleCurrentChange(store, ctx.emit, () => { + broadcastExpanded(); + store.value.setCurrentNodeKey(key, shouldAutoExpandParent); + }); + }; + const getNode = (data) => { + return store.value.getNode(data); + }; + const remove = (data) => { + store.value.remove(data); + }; + const append = (data, parentNode) => { + store.value.append(data, parentNode); + }; + const insertBefore = (data, refNode) => { + store.value.insertBefore(data, refNode); + }; + const insertAfter = (data, refNode) => { + store.value.insertAfter(data, refNode); + }; + const handleNodeExpand = (nodeData, node, instance) => { + broadcastExpanded(node); + ctx.emit("node-expand", nodeData, node, instance); + }; + const updateKeyChildren = (key, data) => { + requireNodeKey("updateKeyChildren"); + store.value.updateChildren(key, data); + }; + (0, vue.provide)(ROOT_TREE_INJECTION_KEY, { + ctx, + props, + store, + root, + currentNode, + instance + }); + (0, vue.provide)(formItemContextKey, void 0); + return { + ns, + store, + root, + currentNode, + dragState, + el$, + dropIndicator$, + isEmpty, + filter, + getNodeKey: getNodeKey$1, + getNodePath, + getCheckedNodes, + getCheckedKeys, + getCurrentNode, + getCurrentKey, + setCheckedNodes, + setCheckedKeys, + setChecked, + getHalfCheckedNodes, + getHalfCheckedKeys, + setCurrentNode, + setCurrentKey, + t, + getNode, + remove, + append, + insertBefore, + insertAfter, + handleNodeExpand, + updateKeyChildren + }; + } + }); + +//#endregion +//#region ../../packages/components/tree/src/tree.vue + function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) { + const _component_el_tree_node = (0, vue.resolveComponent)("el-tree-node"); + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref: "el$", + class: (0, vue.normalizeClass)([ + _ctx.ns.b(), + _ctx.ns.is("dragging", !!_ctx.dragState.draggingNode), + _ctx.ns.is("drop-not-allow", !_ctx.dragState.allowDrop), + _ctx.ns.is("drop-inner", _ctx.dragState.dropType === "inner"), + { [_ctx.ns.m("highlight-current")]: _ctx.highlightCurrent } + ]), + role: "tree" + }, [ + ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(_ctx.root.childNodes, (child) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(_component_el_tree_node, { + key: _ctx.getNodeKey(child), + node: child, + props: _ctx.props, + accordion: _ctx.accordion, + "render-after-expand": _ctx.renderAfterExpand, + "show-checkbox": _ctx.showCheckbox, + "render-content": _ctx.renderContent, + onNodeExpand: _ctx.handleNodeExpand + }, null, 8, [ + "node", + "props", + "accordion", + "render-after-expand", + "show-checkbox", + "render-content", + "onNodeExpand" + ]); + }), 128)), + _ctx.isEmpty ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)(_ctx.ns.e("empty-block")) + }, [(0, vue.renderSlot)(_ctx.$slots, "empty", {}, () => [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)(_ctx.ns.e("empty-text")) }, (0, vue.toDisplayString)(_ctx.emptyText ?? _ctx.t("el.tree.emptyText")), 3)])], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.withDirectives)((0, vue.createElementVNode)("div", { + ref: "dropIndicator$", + class: (0, vue.normalizeClass)(_ctx.ns.e("drop-indicator")) + }, null, 2), [[vue.vShow, _ctx.dragState.showDropIndicator]]) + ], 2); + } + var tree_default$1 = /* @__PURE__ */ _plugin_vue_export_helper_default(tree_vue_vue_type_script_lang_default, [["render", _sfc_render$1]]); + +//#endregion +//#region ../../packages/components/tree/index.ts + const ElTree = withInstall(tree_default$1); + +//#endregion +//#region ../../packages/components/tree-select/src/select.ts + const useSelect = (props, { attrs, emit }, { select, tree, key }) => { + const ns = useNamespace("tree-select"); + (0, vue.watch)(() => props.data, () => { + if (props.filterable) (0, vue.nextTick)(() => { + tree.value?.filter(select.value?.states.inputValue); + }); + }, { flush: "post" }); + const focusLastNode = (listNode) => { + const lastNode = listNode.at(-1); + if (lastNode.expanded && lastNode.childNodes.at(-1)) focusLastNode([lastNode.childNodes.at(-1)]); + else { + (tree.value.el$?.querySelector(`[data-key="${listNode.at(-1).key}"]`))?.focus({ preventScroll: true }); + return; + } + }; + (0, vue.onMounted)(() => { + useEventListener(() => select.value?.$el, "keydown", async (evt) => { + const code = getEventCode(evt); + const { dropdownMenuVisible } = select.value; + if ([EVENT_CODE.down, EVENT_CODE.up].includes(code) && dropdownMenuVisible) { + await (0, vue.nextTick)(); + setTimeout(() => { + if (EVENT_CODE.up === code) { + const listNode = tree.value.store.root.childNodes; + focusLastNode(listNode); + return; + } + select.value.optionsArray[select.value.states.hoveringIndex].$el?.parentNode?.parentNode?.focus({ preventScroll: true }); + }); + } + }, { capture: true }); + }); + return { + ...pick((0, vue.toRefs)(props), Object.keys(ElSelect.props)), + ...attrs, + class: (0, vue.computed)(() => attrs.class), + style: (0, vue.computed)(() => attrs.style), + "onUpdate:modelValue": (value) => emit(UPDATE_MODEL_EVENT, value), + valueKey: key, + popperClass: (0, vue.computed)(() => { + const classes = [ns.e("popper")]; + if (props.popperClass) classes.push(props.popperClass); + return classes.join(" "); + }), + filterMethod: (keyword = "") => { + if (props.filterMethod) props.filterMethod(keyword); + else if (props.remoteMethod) props.remoteMethod(keyword); + else tree.value?.filter(keyword); + } + }; + }; + +//#endregion +//#region ../../packages/components/tree-select/src/tree-select-option.ts + const component = (0, vue.defineComponent)({ + extends: ElOption, + setup(props, ctx) { + const result = ElOption.setup(props, ctx); + delete result.selectOptionClick; + const vm = (0, vue.getCurrentInstance)().proxy; + (0, vue.nextTick)(() => { + if (!result.select.states.cachedOptions.get(vm.value)) result.select.onOptionCreate(vm); + }); + (0, vue.watch)(() => ctx.attrs.visible, (val) => { + (0, vue.nextTick)(() => { + result.states.visible = val; + }); + }, { immediate: true }); + return result; + }, + methods: { selectOptionClick() { + this.$el.parentElement.click(); + } } + }); + +//#endregion +//#region ../../packages/components/tree-select/src/utils.ts + function isValidValue(val) { + return val || val === 0; + } + function isValidArray(val) { + return isArray$1(val) && val.length; + } + function toValidArray(val) { + return isArray$1(val) ? val : isValidValue(val) ? [val] : []; + } + function treeFind(treeData, findCallback, getChildren, resultCallback, parent) { + for (let i = 0; i < treeData.length; i++) { + const data = treeData[i]; + if (findCallback(data, i, treeData, parent)) return resultCallback ? resultCallback(data, i, treeData, parent) : data; + else { + const children = getChildren(data); + if (isValidArray(children)) { + const find = treeFind(children, findCallback, getChildren, resultCallback, data); + if (find) return find; + } + } + } + } + function treeEach(treeData, callback, getChildren, parent) { + for (let i = 0; i < treeData.length; i++) { + const data = treeData[i]; + callback(data, i, treeData, parent); + const children = getChildren(data); + if (isValidArray(children)) treeEach(children, callback, getChildren, data); + } + } + +//#endregion +//#region ../../packages/components/tree-select/src/tree.ts + const useTree$1 = (props, { attrs, slots, emit }, { select, tree, key }) => { + (0, vue.watch)([() => props.modelValue, tree], () => { + if (props.showCheckbox) (0, vue.nextTick)(() => { + const treeInstance = tree.value; + if (treeInstance && !isEqual$1(treeInstance.getCheckedKeys(), toValidArray(props.modelValue))) treeInstance.setCheckedKeys(toValidArray(props.modelValue)); + }); + }, { + immediate: true, + deep: true + }); + const propsMap = (0, vue.computed)(() => ({ + value: key.value, + label: "label", + children: "children", + disabled: "disabled", + isLeaf: "isLeaf", + ...props.props + })); + const getNodeValByProp = (prop, data) => { + const propVal = propsMap.value[prop]; + if (isFunction$1(propVal)) return propVal(data, tree.value?.getNode(getNodeValByProp("value", data))); + else return data[propVal]; + }; + const defaultExpandedParentKeys = toValidArray(props.modelValue).map((value) => { + return treeFind(props.data || [], (data) => getNodeValByProp("value", data) === value, (data) => getNodeValByProp("children", data), (data, index, array, parent) => parent && getNodeValByProp("value", parent)); + }).filter((item) => isValidValue(item)); + const cacheOptions = (0, vue.computed)(() => { + if (!props.renderAfterExpand && !props.lazy) return []; + const options = []; + treeEach(props.data.concat(props.cacheData), (node) => { + const value = getNodeValByProp("value", node); + options.push({ + value, + currentLabel: getNodeValByProp("label", node), + isDisabled: getNodeValByProp("disabled", node) + }); + }, (data) => getNodeValByProp("children", data)); + return options; + }); + const getChildCheckedKeys = () => { + return tree.value?.getCheckedKeys().filter((checkedKey) => { + const node = tree.value?.getNode(checkedKey); + return !isNil(node) && isEmpty(node.childNodes); + }); + }; + const emitChange = (val) => { + if (!isEqual$1(props.modelValue, val)) emit(CHANGE_EVENT, val); + }; + function update(val) { + emit(UPDATE_MODEL_EVENT, val); + emitChange(val); + } + return { + ...pick((0, vue.toRefs)(props), Object.keys(ElTree.props)), + ...attrs, + nodeKey: key, + expandOnClickNode: (0, vue.computed)(() => { + return !props.checkStrictly && props.expandOnClickNode; + }), + defaultExpandedKeys: (0, vue.computed)(() => { + return props.defaultExpandedKeys ? props.defaultExpandedKeys.concat(defaultExpandedParentKeys) : defaultExpandedParentKeys; + }), + renderContent: (h, { node, data, store }) => { + return h(component, { + value: getNodeValByProp("value", data), + label: getNodeValByProp("label", data), + disabled: getNodeValByProp("disabled", data), + visible: node.visible + }, props.renderContent ? () => props.renderContent(h, { + node, + data, + store + }) : slots.default ? () => slots.default({ + node, + data, + store + }) : void 0); + }, + filterNodeMethod: (value, data, node) => { + if (props.filterNodeMethod) return props.filterNodeMethod(value, data, node); + if (!value) return true; + return new RegExp(escapeStringRegexp(value), "i").test(getNodeValByProp("label", data) || ""); + }, + onNodeClick: (data, node, e) => { + attrs.onNodeClick?.(data, node, e); + if (props.showCheckbox && props.checkOnClickNode) return; + if (!props.showCheckbox && (props.checkStrictly || node.isLeaf)) { + if (!getNodeValByProp("disabled", data)) { + const option = select.value?.states.options.get(getNodeValByProp("value", data)); + select.value?.handleOptionSelect(option); + } + } else if (props.expandOnClickNode) e.proxy.handleExpandIconClick(); + }, + onCheck: (data, params) => { + if (!props.showCheckbox) return; + const dataValue = getNodeValByProp("value", data); + const dataMap = {}; + treeEach([tree.value.store.root], (node) => dataMap[node.key] = node, (node) => node.childNodes); + const uncachedCheckedKeys = params.checkedKeys; + const cachedKeys = props.multiple ? toValidArray(props.modelValue).filter((item) => !(item in dataMap) && !uncachedCheckedKeys.includes(item)) : []; + const checkedKeys = cachedKeys.concat(uncachedCheckedKeys); + if (props.checkStrictly) update(props.multiple ? checkedKeys : checkedKeys.includes(dataValue) ? dataValue : void 0); + else if (props.multiple) { + const childKeys = getChildCheckedKeys(); + update(cachedKeys.concat(childKeys)); + } else { + const firstLeaf = treeFind([data], (data) => !isValidArray(getNodeValByProp("children", data)) && !getNodeValByProp("disabled", data), (data) => getNodeValByProp("children", data)); + const firstLeafKey = firstLeaf ? getNodeValByProp("value", firstLeaf) : void 0; + const hasCheckedChild = isValidValue(props.modelValue) && !!treeFind([data], (data) => getNodeValByProp("value", data) === props.modelValue, (data) => getNodeValByProp("children", data)); + update(firstLeafKey === props.modelValue || hasCheckedChild ? void 0 : firstLeafKey); + } + (0, vue.nextTick)(() => { + const checkedKeys = toValidArray(props.modelValue); + tree.value.setCheckedKeys(checkedKeys); + attrs.onCheck?.(data, { + checkedKeys: tree.value.getCheckedKeys(), + checkedNodes: tree.value.getCheckedNodes(), + halfCheckedKeys: tree.value.getHalfCheckedKeys(), + halfCheckedNodes: tree.value.getHalfCheckedNodes() + }); + }); + select.value?.focus(); + }, + onNodeExpand: (data, node, e) => { + attrs.onNodeExpand?.(data, node, e); + (0, vue.nextTick)(() => { + if (!props.checkStrictly && props.lazy && props.multiple && node.checked) { + const dataMap = {}; + const uncachedCheckedKeys = tree.value.getCheckedKeys(); + treeEach([tree.value.store.root], (node) => dataMap[node.key] = node, (node) => node.childNodes); + const cachedKeys = toValidArray(props.modelValue).filter((item) => !(item in dataMap) && !uncachedCheckedKeys.includes(item)); + const childKeys = getChildCheckedKeys(); + update(cachedKeys.concat(childKeys)); + } + }); + }, + cacheOptions + }; + }; + +//#endregion +//#region ../../packages/components/tree-select/src/cache-options.ts + var cache_options_default = (0, vue.defineComponent)({ + props: { data: { + type: Array, + default: () => [] + } }, + setup(props) { + const select = (0, vue.inject)(selectKey); + (0, vue.watch)(() => props.data, () => { + props.data.forEach((item) => { + if (!select.states.cachedOptions.has(item.value)) select.states.cachedOptions.set(item.value, item); + }); + const inputs = select.selectRef?.querySelectorAll("input") || []; + if (isClient && !Array.from(inputs).includes(document.activeElement)) select.setSelected(); + }, { + flush: "post", + immediate: true + }); + return () => void 0; + } + }); + +//#endregion +//#region ../../packages/components/tree-select/src/tree-select.vue?vue&type=script&lang.ts + var tree_select_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElTreeSelect", + inheritAttrs: false, + props: { + ...selectProps, + ...treeProps, + cacheData: { + type: Array, + default: () => [] + } + }, + setup(props, context) { + const { slots, expose, emit, attrs } = context; + const childAttrs = { + ...attrs, + onChange: void 0 + }; + const select = (0, vue.ref)(); + const tree = (0, vue.ref)(); + const key = (0, vue.computed)(() => props.nodeKey || props.valueKey || "value"); + const selectProps = useSelect(props, { + attrs, + emit + }, { + select, + tree, + key + }); + const { cacheOptions, ...treeProps } = useTree$1(props, { + attrs: childAttrs, + slots, + emit + }, { + select, + tree, + key + }); + const methods = (0, vue.reactive)({}); + expose(methods); + (0, vue.onMounted)(() => { + Object.assign(methods, { + ...pick(tree.value, [ + "filter", + "updateKeyChildren", + "getCheckedNodes", + "setCheckedNodes", + "getCheckedKeys", + "setCheckedKeys", + "setChecked", + "getHalfCheckedNodes", + "getHalfCheckedKeys", + "getCurrentKey", + "getCurrentNode", + "setCurrentKey", + "setCurrentNode", + "getNode", + "remove", + "append", + "insertBefore", + "insertAfter" + ]), + ...pick(select.value, [ + "focus", + "blur", + "selectedLabel" + ]), + treeRef: tree.value, + selectRef: select.value + }); + }); + return () => (0, vue.h)( + ElSelect, + /** + * 1. The `props` is processed into `Refs`, but `v-bind` and + * render function props cannot read `Refs`, so use `reactive` + * unwrap the `Refs` and keep reactive. + * 2. The keyword `ref` requires `Ref`, but `reactive` broke it, + * so use function. + */ + (0, vue.reactive)({ + ...selectProps, + ref: (ref) => select.value = ref + }), + { + ...slots, + default: () => [(0, vue.h)(cache_options_default, { data: cacheOptions.value }), (0, vue.h)(ElTree, (0, vue.reactive)({ + ...treeProps, + ref: (ref) => tree.value = ref + }))] + } + ); + } + }); + +//#endregion +//#region ../../packages/components/tree-select/src/tree-select.vue + var tree_select_default = tree_select_vue_vue_type_script_lang_default; + +//#endregion +//#region ../../packages/components/tree-select/index.ts + const ElTreeSelect = withInstall(tree_select_default); + +//#endregion +//#region ../../packages/components/tree-v2/src/virtual-tree.ts + const ROOT_TREE_INJECTION_KEY$1 = Symbol(); + const EMPTY_NODE = { + key: -1, + level: -1, + data: {} + }; + let TreeOptionsEnum = /* @__PURE__ */ function(TreeOptionsEnum) { + TreeOptionsEnum["KEY"] = "id"; + TreeOptionsEnum["LABEL"] = "label"; + TreeOptionsEnum["CHILDREN"] = "children"; + TreeOptionsEnum["DISABLED"] = "disabled"; + TreeOptionsEnum["CLASS"] = ""; + return TreeOptionsEnum; + }({}); + let SetOperationEnum = /* @__PURE__ */ function(SetOperationEnum) { + SetOperationEnum["ADD"] = "add"; + SetOperationEnum["DELETE"] = "delete"; + return SetOperationEnum; + }({}); + const itemSize = { + type: Number, + default: 26 + }; + /** + * @deprecated Removed after 3.0.0, Use `TreeProps` instead. + */ + const treeProps$1 = buildProps({ + data: { + type: definePropType(Array), + default: () => mutable([]) + }, + emptyText: { type: String }, + height: { + type: Number, + default: 200 + }, + props: { + type: definePropType(Object), + default: () => mutable({ + children: TreeOptionsEnum.CHILDREN, + label: TreeOptionsEnum.LABEL, + disabled: TreeOptionsEnum.DISABLED, + value: TreeOptionsEnum.KEY, + class: TreeOptionsEnum.CLASS + }) + }, + highlightCurrent: Boolean, + showCheckbox: Boolean, + defaultCheckedKeys: { + type: definePropType(Array), + default: () => mutable([]) + }, + checkStrictly: Boolean, + defaultExpandedKeys: { + type: definePropType(Array), + default: () => mutable([]) + }, + indent: { + type: Number, + default: 16 + }, + itemSize, + icon: { type: iconPropType }, + expandOnClickNode: { + type: Boolean, + default: true + }, + checkOnClickNode: Boolean, + checkOnClickLeaf: { + type: Boolean, + default: true + }, + currentNodeKey: { type: definePropType([String, Number]) }, + accordion: Boolean, + filterMethod: { type: definePropType(Function) }, + perfMode: { + type: Boolean, + default: true + }, + scrollbarAlwaysOn: Boolean + }); + /** + * @deprecated Removed after 3.0.0, Use `TreeNodeProps` instead. + */ + const treeNodeProps = buildProps({ + node: { + type: definePropType(Object), + default: () => mutable(EMPTY_NODE) + }, + expanded: Boolean, + checked: Boolean, + indeterminate: Boolean, + showCheckbox: Boolean, + disabled: Boolean, + current: Boolean, + hiddenExpandIcon: Boolean, + itemSize + }); + const treeNodeContentProps = buildProps({ node: { + type: definePropType(Object), + required: true + } }); + const NODE_CLICK = "node-click"; + const NODE_DROP = "node-drop"; + const NODE_EXPAND = "node-expand"; + const NODE_COLLAPSE = "node-collapse"; + const CURRENT_CHANGE = "current-change"; + const NODE_CHECK = "check"; + const NODE_CHECK_CHANGE = "check-change"; + const NODE_CONTEXTMENU = "node-contextmenu"; + const treeEmits$1 = { + [NODE_CLICK]: (data, node, e) => data && node && e, + [NODE_DROP]: (data, node, e) => data && node && e, + [NODE_EXPAND]: (data, node) => data && node, + [NODE_COLLAPSE]: (data, node) => data && node, + [CURRENT_CHANGE]: (data, node) => data && node, + [NODE_CHECK]: (data, checkedInfo) => data && checkedInfo, + [NODE_CHECK_CHANGE]: (data, checked) => data && isBoolean(checked), + [NODE_CONTEXTMENU]: (evt, data, node) => evt && data && node + }; + const treeNodeEmits = { + click: (node, e) => !!(node && e), + drop: (node, e) => !!(node && e), + toggle: (node) => !!node, + check: (node, checked) => node && isBoolean(checked) + }; + +//#endregion +//#region ../../packages/components/tree-v2/src/composables/useCheck.ts + function useCheck(props, tree) { + const checkedKeys = (0, vue.ref)(/* @__PURE__ */ new Set()); + const indeterminateKeys = (0, vue.ref)(/* @__PURE__ */ new Set()); + const { emit } = (0, vue.getCurrentInstance)(); + (0, vue.watch)([() => tree.value, () => props.defaultCheckedKeys], () => { + return (0, vue.nextTick)(() => { + _setCheckedKeys(props.defaultCheckedKeys); + }); + }, { immediate: true }); + const updateCheckedKeys = () => { + if (!tree.value || !props.showCheckbox || props.checkStrictly) return; + const { levelTreeNodeMap, maxLevel } = tree.value; + const checkedKeySet = checkedKeys.value; + const indeterminateKeySet = /* @__PURE__ */ new Set(); + for (let level = maxLevel; level >= 1; --level) { + const nodes = levelTreeNodeMap.get(level); + if (!nodes) continue; + nodes.forEach((node) => { + const children = node.children; + let isEffectivelyChecked = !node.isLeaf || node.disabled || checkedKeySet.has(node.key); + if (children) { + let allChecked = true; + let hasChecked = false; + for (const childNode of children) { + const key = childNode.key; + if (!childNode.isEffectivelyChecked) isEffectivelyChecked = false; + if (checkedKeySet.has(key)) hasChecked = true; + else if (indeterminateKeySet.has(key)) { + allChecked = false; + hasChecked = true; + break; + } else allChecked = false; + } + if (allChecked) checkedKeySet.add(node.key); + else if (hasChecked) { + indeterminateKeySet.add(node.key); + checkedKeySet.delete(node.key); + } else { + checkedKeySet.delete(node.key); + indeterminateKeySet.delete(node.key); + } + } + node.isEffectivelyChecked = isEffectivelyChecked; + }); + } + indeterminateKeys.value = indeterminateKeySet; + }; + const isChecked = (node) => checkedKeys.value.has(node.key); + const isIndeterminate = (node) => indeterminateKeys.value.has(node.key); + const toggleCheckbox = (node, isChecked, nodeClick = true, immediateUpdate = true) => { + const checkedKeySet = checkedKeys.value; + const children = node.children; + if (!props.checkStrictly && nodeClick && children?.length) isChecked = children.some((node) => !node.isEffectivelyChecked); + const toggle = (node, checked) => { + checkedKeySet[checked ? SetOperationEnum.ADD : SetOperationEnum.DELETE](node.key); + const children = node.children; + if (!props.checkStrictly && children) children.forEach((childNode) => { + if (!childNode.disabled || childNode.children) toggle(childNode, checked); + }); + }; + toggle(node, isChecked); + if (immediateUpdate) updateCheckedKeys(); + if (nodeClick) afterNodeCheck(node, isChecked); + }; + const afterNodeCheck = (node, checked) => { + const { checkedNodes, checkedKeys } = getChecked(); + const { halfCheckedNodes, halfCheckedKeys } = getHalfChecked(); + emit(NODE_CHECK, node.data, { + checkedKeys, + checkedNodes, + halfCheckedKeys, + halfCheckedNodes + }); + emit(NODE_CHECK_CHANGE, node.data, checked); + }; + function getCheckedKeys(leafOnly = false) { + return getChecked(leafOnly).checkedKeys; + } + function getCheckedNodes(leafOnly = false) { + return getChecked(leafOnly).checkedNodes; + } + function getHalfCheckedKeys() { + return getHalfChecked().halfCheckedKeys; + } + function getHalfCheckedNodes() { + return getHalfChecked().halfCheckedNodes; + } + function getChecked(leafOnly = false) { + const checkedNodes = []; + const keys = []; + if (tree?.value && props.showCheckbox) { + const { treeNodeMap } = tree.value; + checkedKeys.value.forEach((key) => { + const node = treeNodeMap.get(key); + if (node && (!leafOnly || leafOnly && node.isLeaf)) { + keys.push(key); + checkedNodes.push(node.data); + } + }); + } + return { + checkedKeys: keys, + checkedNodes + }; + } + function getHalfChecked() { + const halfCheckedNodes = []; + const halfCheckedKeys = []; + if (tree?.value && props.showCheckbox) { + const { treeNodeMap } = tree.value; + indeterminateKeys.value.forEach((key) => { + const node = treeNodeMap.get(key); + if (node) { + halfCheckedKeys.push(key); + halfCheckedNodes.push(node.data); + } + }); + } + return { + halfCheckedNodes, + halfCheckedKeys + }; + } + function setCheckedKeys(keys) { + checkedKeys.value.clear(); + indeterminateKeys.value.clear(); + (0, vue.nextTick)(() => { + _setCheckedKeys(keys); + }); + } + function setChecked(key, isChecked) { + if (tree?.value && props.showCheckbox) { + const node = tree.value.treeNodeMap.get(key); + if (node) toggleCheckbox(node, isChecked, false); + } + } + function _setCheckedKeys(keys) { + if (tree?.value) { + const { treeNodeMap } = tree.value; + if (props.showCheckbox && treeNodeMap && keys?.length > 0) { + for (const key of keys) { + const node = treeNodeMap.get(key); + if (node && !isChecked(node)) toggleCheckbox(node, true, false, false); + } + updateCheckedKeys(); + } + } + } + return { + updateCheckedKeys, + toggleCheckbox, + isChecked, + isIndeterminate, + getCheckedKeys, + getCheckedNodes, + getHalfCheckedKeys, + getHalfCheckedNodes, + setChecked, + setCheckedKeys + }; + } + +//#endregion +//#region ../../packages/components/tree-v2/src/composables/useFilter.ts + function useFilter(props, tree) { + const hiddenNodeKeySet = (0, vue.ref)(/* @__PURE__ */ new Set([])); + const hiddenExpandIconKeySet = (0, vue.ref)(/* @__PURE__ */ new Set([])); + const filterable = (0, vue.computed)(() => { + return isFunction$1(props.filterMethod); + }); + function doFilter(query) { + if (!filterable.value) return; + const expandKeySet = /* @__PURE__ */ new Set(); + const hiddenExpandIconKeys = hiddenExpandIconKeySet.value; + const hiddenKeys = hiddenNodeKeySet.value; + const family = []; + const nodes = tree.value?.treeNodes || []; + const filter = props.filterMethod; + hiddenKeys.clear(); + function traverse(nodes) { + nodes.forEach((node) => { + family.push(node); + if (filter?.(query, node.data, node)) family.forEach((member) => { + expandKeySet.add(member.key); + member.expanded = true; + }); + else { + node.expanded = false; + if (node.isLeaf) hiddenKeys.add(node.key); + } + const children = node.children; + if (children) traverse(children); + if (!node.isLeaf) { + if (!expandKeySet.has(node.key)) hiddenKeys.add(node.key); + else if (children) { + let allHidden = true; + for (const childNode of children) if (!hiddenKeys.has(childNode.key)) { + allHidden = false; + break; + } + if (allHidden) hiddenExpandIconKeys.add(node.key); + else hiddenExpandIconKeys.delete(node.key); + } + } + family.pop(); + }); + } + traverse(nodes); + return expandKeySet; + } + function isForceHiddenExpandIcon(node) { + return hiddenExpandIconKeySet.value.has(node.key); + } + return { + hiddenExpandIconKeySet, + hiddenNodeKeySet, + doFilter, + isForceHiddenExpandIcon + }; + } + +//#endregion +//#region ../../packages/components/tree-v2/src/composables/useTree.ts + function useTree(props, emit) { + const expandedKeySet = (0, vue.ref)(/* @__PURE__ */ new Set()); + const currentKey = (0, vue.ref)(); + const tree = (0, vue.shallowRef)(); + const listRef = (0, vue.ref)(); + const { isIndeterminate, isChecked, toggleCheckbox, getCheckedKeys, getCheckedNodes, getHalfCheckedKeys, getHalfCheckedNodes, setChecked, setCheckedKeys } = useCheck(props, tree); + const { doFilter, hiddenNodeKeySet, isForceHiddenExpandIcon } = useFilter(props, tree); + const valueKey = (0, vue.computed)(() => { + return props.props?.value || TreeOptionsEnum.KEY; + }); + const childrenKey = (0, vue.computed)(() => { + return props.props?.children || TreeOptionsEnum.CHILDREN; + }); + const disabledKey = (0, vue.computed)(() => { + return props.props?.disabled || TreeOptionsEnum.DISABLED; + }); + const labelKey = (0, vue.computed)(() => { + return props.props?.label || TreeOptionsEnum.LABEL; + }); + const flattenTree = (0, vue.computed)(() => { + const expandedKeys = expandedKeySet.value; + const hiddenKeys = hiddenNodeKeySet.value; + const flattenNodes = []; + const nodes = tree.value?.treeNodes || []; + const stack = []; + for (let i = nodes.length - 1; i >= 0; --i) stack.push(nodes[i]); + while (stack.length) { + const node = stack.pop(); + if (hiddenKeys.has(node.key)) continue; + flattenNodes.push(node); + if (node.children && expandedKeys.has(node.key)) for (let i = node.children.length - 1; i >= 0; --i) stack.push(node.children[i]); + } + return flattenNodes; + }); + const isNotEmpty = (0, vue.computed)(() => { + return flattenTree.value.length > 0; + }); + function createTree(data) { + const treeNodeMap = /* @__PURE__ */ new Map(); + const levelTreeNodeMap = /* @__PURE__ */ new Map(); + let maxLevel = 1; + function traverse(nodes, level = 1, parent = void 0) { + const siblings = []; + for (const rawNode of nodes) { + const value = getKey(rawNode); + const node = { + level, + key: value, + data: rawNode + }; + node.label = getLabel(rawNode); + node.parent = parent; + const children = getChildren(rawNode); + node.disabled = getDisabled(rawNode); + node.isLeaf = !children || children.length === 0; + node.expanded = expandedKeySet.value.has(value); + if (children && children.length) node.children = traverse(children, level + 1, node); + siblings.push(node); + treeNodeMap.set(value, node); + if (!levelTreeNodeMap.has(level)) levelTreeNodeMap.set(level, []); + levelTreeNodeMap.get(level)?.push(node); + } + if (level > maxLevel) maxLevel = level; + return siblings; + } + const treeNodes = traverse(data); + return { + treeNodeMap, + levelTreeNodeMap, + maxLevel, + treeNodes + }; + } + function filter(query) { + const keys = doFilter(query); + if (keys) expandedKeySet.value = keys; + } + function getChildren(node) { + return node[childrenKey.value]; + } + function getKey(node) { + if (!node) return ""; + return node[valueKey.value]; + } + function getDisabled(node) { + return node[disabledKey.value]; + } + function getLabel(node) { + return node[labelKey.value]; + } + function toggleExpand(node) { + if (expandedKeySet.value.has(node.key)) collapseNode(node); + else expandNode(node); + } + function setExpandedKeys(keys) { + const expandedKeys = /* @__PURE__ */ new Set(); + const nodeMap = tree.value.treeNodeMap; + expandedKeySet.value.forEach((key) => { + const node = nodeMap.get(key); + if (node) node.expanded = false; + }); + keys.forEach((k) => { + let node = nodeMap.get(k); + while (node && !expandedKeys.has(node.key)) { + expandedKeys.add(node.key); + node.expanded = true; + node = node.parent; + } + }); + expandedKeySet.value = expandedKeys; + } + function handleNodeClick(node, e) { + emit(NODE_CLICK, node.data, node, e); + handleCurrentChange(node); + if (props.expandOnClickNode) toggleExpand(node); + if (props.showCheckbox && (props.checkOnClickNode || node.isLeaf && props.checkOnClickLeaf) && !node.disabled) toggleCheckbox(node, !isChecked(node), true); + } + function handleNodeDrop(node, e) { + emit(NODE_DROP, node.data, node, e); + } + function handleCurrentChange(node) { + if (!isCurrent(node)) { + currentKey.value = node.key; + emit(CURRENT_CHANGE, node.data, node); + } + } + function handleNodeCheck(node, checked) { + toggleCheckbox(node, checked); + } + function expandNode(node) { + const keySet = expandedKeySet.value; + if (tree.value && props.accordion) { + const { treeNodeMap } = tree.value; + keySet.forEach((key) => { + const treeNode = treeNodeMap.get(key); + if (node && node.level === treeNode?.level) { + keySet.delete(key); + treeNode.expanded = false; + } + }); + } + keySet.add(node.key); + const _node = getNode(node.key); + if (_node) { + _node.expanded = true; + emit(NODE_EXPAND, _node.data, _node); + } + } + function collapseNode(node) { + expandedKeySet.value.delete(node.key); + const _node = getNode(node.key); + if (_node) { + _node.expanded = false; + emit(NODE_COLLAPSE, _node.data, _node); + } + } + function isDisabled(node) { + return !!node.disabled; + } + function isCurrent(node) { + const current = currentKey.value; + return current !== void 0 && current === node.key; + } + function getCurrentNode() { + if (!currentKey.value) return void 0; + return tree.value?.treeNodeMap.get(currentKey.value)?.data; + } + function getCurrentKey() { + return currentKey.value; + } + function setCurrentKey(key) { + currentKey.value = key; + } + function setData(data) { + tree.value = createTree(data); + } + function getNode(data) { + const key = isObject$1(data) ? getKey(data) : data; + return tree.value?.treeNodeMap.get(key); + } + function scrollToNode(key, strategy = "auto") { + const node = getNode(key); + if (node && listRef.value) listRef.value.scrollToItem(flattenTree.value.indexOf(node), strategy); + } + function scrollTo(offset) { + listRef.value?.scrollTo(offset); + } + (0, vue.watch)(() => props.currentNodeKey, (key) => { + currentKey.value = key; + }, { immediate: true }); + (0, vue.watch)(() => props.defaultExpandedKeys, (keys) => { + setExpandedKeys(keys || []); + }); + (0, vue.watch)(() => props.data, (data) => { + setData(data); + setExpandedKeys(props.defaultExpandedKeys || []); + }, { immediate: true }); + return { + tree, + flattenTree, + isNotEmpty, + listRef, + getKey, + getChildren, + toggleExpand, + toggleCheckbox, + isChecked, + isIndeterminate, + isDisabled, + isCurrent, + isForceHiddenExpandIcon, + handleNodeClick, + handleNodeDrop, + handleNodeCheck, + getCurrentNode, + getCurrentKey, + setCurrentKey, + getCheckedKeys, + getCheckedNodes, + getHalfCheckedKeys, + getHalfCheckedNodes, + setChecked, + setCheckedKeys, + filter, + setData, + getNode, + expandNode, + collapseNode, + setExpandedKeys, + scrollToNode, + scrollTo + }; + } + +//#endregion +//#region ../../packages/components/tree-v2/src/tree-node-content.ts + var tree_node_content_default = (0, vue.defineComponent)({ + name: "ElTreeNodeContent", + props: treeNodeContentProps, + setup(props) { + const tree = (0, vue.inject)(ROOT_TREE_INJECTION_KEY$1); + const ns = useNamespace("tree"); + return () => { + const node = props.node; + const { data } = node; + return tree?.ctx.slots.default ? tree.ctx.slots.default({ + node, + data + }) : (0, vue.h)(ElText, { + tag: "span", + truncated: true, + class: ns.be("node", "label") + }, () => [node?.label]); + }; + } + }); + +//#endregion +//#region ../../packages/components/tree-v2/src/tree-node.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$11 = [ + "aria-expanded", + "aria-disabled", + "aria-checked", + "data-key" + ]; + var tree_node_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTreeNode", + __name: "tree-node", + props: treeNodeProps, + emits: treeNodeEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const tree = (0, vue.inject)(ROOT_TREE_INJECTION_KEY$1); + const ns = useNamespace("tree"); + const indent = (0, vue.computed)(() => tree?.props.indent ?? 16); + const icon = (0, vue.computed)(() => tree?.props.icon ?? caret_right_default); + const getNodeClass = (node) => { + const nodeClassFunc = tree?.props.props?.class; + if (!nodeClassFunc) return {}; + let className; + if (isFunction$1(nodeClassFunc)) { + const { data } = node; + className = nodeClassFunc(data, node); + } else className = nodeClassFunc; + return isString(className) ? { [className]: true } : className; + }; + const handleClick = (e) => { + emit("click", props.node, e); + }; + const handleDrop = (e) => { + emit("drop", props.node, e); + }; + const handleExpandIconClick = () => { + emit("toggle", props.node); + }; + const handleCheckChange = (value) => { + emit("check", props.node, value); + }; + const handleContextMenu = (event) => { + if (tree?.instance?.vnode?.props?.["onNodeContextmenu"]) { + event.stopPropagation(); + event.preventDefault(); + } + tree?.ctx.emit(NODE_CONTEXTMENU, event, props.node?.data, props.node); + }; + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref: "node$", + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).b("node"), + (0, vue.unref)(ns).is("expanded", __props.expanded), + (0, vue.unref)(ns).is("current", __props.current), + (0, vue.unref)(ns).is("focusable", !__props.disabled), + (0, vue.unref)(ns).is("checked", !__props.disabled && __props.checked), + getNodeClass(__props.node) + ]), + role: "treeitem", + tabindex: "-1", + "aria-expanded": __props.expanded, + "aria-disabled": __props.disabled, + "aria-checked": __props.checked, + "data-key": __props.node?.key, + onClick: (0, vue.withModifiers)(handleClick, ["stop"]), + onContextmenu: handleContextMenu, + onDragover: _cache[1] || (_cache[1] = (0, vue.withModifiers)(() => {}, ["prevent"])), + onDragenter: _cache[2] || (_cache[2] = (0, vue.withModifiers)(() => {}, ["prevent"])), + onDrop: (0, vue.withModifiers)(handleDrop, ["stop"]) + }, [(0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("node", "content")), + style: (0, vue.normalizeStyle)({ + paddingLeft: `${(__props.node.level - 1) * indent.value}px`, + height: __props.itemSize + "px" + }) + }, [ + icon.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).is("leaf", !!__props.node?.isLeaf), + (0, vue.unref)(ns).is("hidden", __props.hiddenExpandIcon), + { expanded: !__props.node?.isLeaf && __props.expanded }, + (0, vue.unref)(ns).be("node", "expand-icon") + ]), + onClick: (0, vue.withModifiers)(handleExpandIconClick, ["stop"]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(icon.value)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true), + __props.showCheckbox ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElCheckbox), { + key: 1, + "model-value": __props.checked, + indeterminate: __props.indeterminate, + disabled: __props.disabled, + onChange: handleCheckChange, + onClick: _cache[0] || (_cache[0] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, null, 8, [ + "model-value", + "indeterminate", + "disabled" + ])) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createVNode)((0, vue.unref)(tree_node_content_default), { node: { + ...__props.node, + expanded: __props.expanded + } }, null, 8, ["node"]) + ], 6)], 42, _hoisted_1$11); + }; + } + }); + +//#endregion +//#region ../../packages/components/tree-v2/src/tree-node.vue + var tree_node_default = tree_node_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/tree-v2/src/tree.vue?vue&type=script&setup=true&lang.ts + var tree_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTreeV2", + __name: "tree", + props: treeProps$1, + emits: treeEmits$1, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const slots = (0, vue.useSlots)(); + const treeNodeSize = (0, vue.computed)(() => props.itemSize); + (0, vue.provide)(ROOT_TREE_INJECTION_KEY$1, { + ctx: { + emit, + slots + }, + props, + instance: (0, vue.getCurrentInstance)() + }); + (0, vue.provide)(formItemContextKey, void 0); + const { t } = useLocale(); + const ns = useNamespace("tree"); + const { flattenTree, isNotEmpty, listRef, toggleExpand, isIndeterminate, isChecked, isDisabled, isCurrent, isForceHiddenExpandIcon, handleNodeClick, handleNodeDrop, handleNodeCheck, toggleCheckbox, getCurrentNode, getCurrentKey, setCurrentKey, getCheckedKeys, getCheckedNodes, getHalfCheckedKeys, getHalfCheckedNodes, setChecked, setCheckedKeys, filter, setData, getNode, expandNode, collapseNode, setExpandedKeys, scrollToNode, scrollTo } = useTree(props, emit); + __expose({ + toggleCheckbox, + getCurrentNode, + getCurrentKey, + setCurrentKey, + getCheckedKeys, + getCheckedNodes, + getHalfCheckedKeys, + getHalfCheckedNodes, + setChecked, + setCheckedKeys, + filter, + setData, + getNode, + expandNode, + collapseNode, + setExpandedKeys, + scrollToNode, + scrollTo + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).b(), { [(0, vue.unref)(ns).m("highlight-current")]: __props.highlightCurrent }]), + role: "tree" + }, [(0, vue.unref)(isNotEmpty) ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(FixedSizeList), { + key: 0, + ref_key: "listRef", + ref: listRef, + "class-name": (0, vue.unref)(ns).b("virtual-list"), + data: (0, vue.unref)(flattenTree), + total: (0, vue.unref)(flattenTree).length, + height: __props.height, + "item-size": treeNodeSize.value, + "perf-mode": __props.perfMode, + "scrollbar-always-on": __props.scrollbarAlwaysOn + }, { + default: (0, vue.withCtx)(({ data, index, style }) => [((0, vue.openBlock)(), (0, vue.createBlock)(tree_node_default, { + key: data[index].key, + style: (0, vue.normalizeStyle)(style), + node: data[index], + expanded: data[index].expanded, + "show-checkbox": __props.showCheckbox, + checked: (0, vue.unref)(isChecked)(data[index]), + indeterminate: (0, vue.unref)(isIndeterminate)(data[index]), + "item-size": treeNodeSize.value, + disabled: (0, vue.unref)(isDisabled)(data[index]), + current: (0, vue.unref)(isCurrent)(data[index]), + "hidden-expand-icon": (0, vue.unref)(isForceHiddenExpandIcon)(data[index]), + onClick: (0, vue.unref)(handleNodeClick), + onToggle: (0, vue.unref)(toggleExpand), + onCheck: (0, vue.unref)(handleNodeCheck), + onDrop: (0, vue.unref)(handleNodeDrop) + }, null, 8, [ + "style", + "node", + "expanded", + "show-checkbox", + "checked", + "indeterminate", + "item-size", + "disabled", + "current", + "hidden-expand-icon", + "onClick", + "onToggle", + "onCheck", + "onDrop" + ]))]), + _: 1 + }, 8, [ + "class-name", + "data", + "total", + "height", + "item-size", + "perf-mode", + "scrollbar-always-on" + ])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("empty-block")) + }, [(0, vue.renderSlot)(_ctx.$slots, "empty", {}, () => [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("empty-text")) }, (0, vue.toDisplayString)(__props.emptyText ?? (0, vue.unref)(t)("el.tree.emptyText")), 3)])], 2))], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/tree-v2/src/tree.vue + var tree_default = tree_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/tree-v2/index.ts + const ElTreeV2 = withInstall(tree_default); + +//#endregion +//#region ../../packages/components/upload/src/ajax.ts + const SCOPE$3 = "ElUpload"; + var UploadAjaxError = class extends Error { + constructor(message, status, method, url) { + super(message); + this.name = "UploadAjaxError"; + this.status = status; + this.method = method; + this.url = url; + } + }; + function getError(action, option, xhr) { + let msg; + if (xhr.response) msg = `${xhr.response.error || xhr.response}`; + else if (xhr.responseText) msg = `${xhr.responseText}`; + else msg = `fail to ${option.method} ${action} ${xhr.status}`; + return new UploadAjaxError(msg, xhr.status, option.method, action); + } + function getBody(xhr) { + const text = xhr.responseText || xhr.response; + if (!text) return text; + try { + return JSON.parse(text); + } catch { + return text; + } + } + const ajaxUpload = (option) => { + if (typeof XMLHttpRequest === "undefined") throwError(SCOPE$3, "XMLHttpRequest is undefined"); + const xhr = new XMLHttpRequest(); + const action = option.action; + if (xhr.upload) xhr.upload.addEventListener("progress", (evt) => { + const progressEvt = evt; + progressEvt.percent = evt.total > 0 ? evt.loaded / evt.total * 100 : 0; + option.onProgress(progressEvt); + }); + const formData = new FormData(); + if (option.data) for (const [key, value] of Object.entries(option.data)) if (isArray$1(value)) if (value.length === 2 && value[0] instanceof Blob && isString(value[1])) formData.append(key, value[0], value[1]); + else value.forEach((item) => { + formData.append(key, item); + }); + else formData.append(key, value); + formData.append(option.filename, option.file, option.file.name); + xhr.addEventListener("error", () => { + option.onError(getError(action, option, xhr)); + }); + xhr.addEventListener("load", () => { + if (xhr.status < 200 || xhr.status >= 300) return option.onError(getError(action, option, xhr)); + option.onSuccess(getBody(xhr)); + }); + xhr.open(option.method, action, true); + if (option.withCredentials && "withCredentials" in xhr) xhr.withCredentials = true; + const headers = option.headers || {}; + if (headers instanceof Headers) headers.forEach((value, key) => xhr.setRequestHeader(key, value)); + else for (const [key, value] of Object.entries(headers)) { + if (isNil(value)) continue; + xhr.setRequestHeader(key, String(value)); + } + xhr.send(formData); + return xhr; + }; + +//#endregion +//#region ../../packages/components/upload/src/upload.ts +/** + * @deprecated Removed after 3.0.0, Use `UploadProps` instead. + */ + const uploadListTypes = [ + "text", + "picture", + "picture-card" + ]; + let fileId = 1; + const genFileId = () => Date.now() + fileId++; + /** + * @deprecated Removed after 3.0.0, Use `UploadBaseProps` instead. + */ + const uploadBaseProps = buildProps({ + action: { + type: String, + default: "#" + }, + headers: { type: definePropType(Object) }, + method: { + type: String, + default: "post" + }, + data: { + type: definePropType([ + Object, + Function, + Promise + ]), + default: () => mutable({}) + }, + multiple: Boolean, + name: { + type: String, + default: "file" + }, + drag: Boolean, + withCredentials: Boolean, + showFileList: { + type: Boolean, + default: true + }, + accept: { + type: String, + default: "" + }, + fileList: { + type: definePropType(Array), + default: () => mutable([]) + }, + autoUpload: { + type: Boolean, + default: true + }, + listType: { + type: String, + values: uploadListTypes, + default: "text" + }, + httpRequest: { + type: definePropType(Function), + default: ajaxUpload + }, + disabled: { + type: Boolean, + default: void 0 + }, + limit: Number, + directory: Boolean + }); + /** + * @deprecated Removed after 3.0.0, Use `UploadProps` instead. + */ + const uploadProps = buildProps({ + ...uploadBaseProps, + beforeUpload: { + type: definePropType(Function), + default: NOOP + }, + beforeRemove: { type: definePropType(Function) }, + onRemove: { + type: definePropType(Function), + default: NOOP + }, + onChange: { + type: definePropType(Function), + default: NOOP + }, + onPreview: { + type: definePropType(Function), + default: NOOP + }, + onSuccess: { + type: definePropType(Function), + default: NOOP + }, + onProgress: { + type: definePropType(Function), + default: NOOP + }, + onError: { + type: definePropType(Function), + default: NOOP + }, + onExceed: { + type: definePropType(Function), + default: NOOP + }, + crossorigin: { type: definePropType(String) } + }); + const uploadBasePropsDefaults = { + action: "#", + method: "post", + data: () => mutable({}), + name: "file", + showFileList: true, + accept: "", + fileList: () => mutable([]), + autoUpload: true, + listType: "text", + httpRequest: ajaxUpload, + disabled: void 0 + }; + const uploadPropsDefaults = { + ...uploadBasePropsDefaults, + beforeUpload: NOOP, + onRemove: NOOP, + onChange: NOOP, + onPreview: NOOP, + onSuccess: NOOP, + onProgress: NOOP, + onError: NOOP, + onExceed: NOOP + }; + +//#endregion +//#region ../../packages/components/upload/src/constants.ts + const uploadContextKey = Symbol("uploadContextKey"); + +//#endregion +//#region ../../packages/components/upload/src/upload-list.ts +/** + * @deprecated Removed after 3.0.0, Use `UploadListProps` instead. + */ + const uploadListProps = buildProps({ + files: { + type: definePropType(Array), + default: () => mutable([]) + }, + disabled: { + type: Boolean, + default: void 0 + }, + handlePreview: { + type: definePropType(Function), + default: NOOP + }, + listType: { + type: String, + values: uploadListTypes, + default: "text" + }, + crossorigin: { type: definePropType(String) } + }); + const uploadListEmits = { remove: (file) => !!file }; + +//#endregion +//#region ../../packages/components/upload/src/upload-list.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$10 = [ + "tabindex", + "aria-disabled", + "onKeydown" + ]; + const _hoisted_2$6 = ["src", "crossorigin"]; + const _hoisted_3$2 = ["onClick"]; + const _hoisted_4$1 = ["title"]; + const _hoisted_5 = ["onClick"]; + const _hoisted_6 = ["onClick"]; + var upload_list_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElUploadList", + __name: "upload-list", + props: uploadListProps, + emits: uploadListEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const { t } = useLocale(); + const nsUpload = useNamespace("upload"); + const nsIcon = useNamespace("icon"); + const nsList = useNamespace("list"); + const disabled = useFormDisabled(); + const focusing = (0, vue.ref)(false); + const containerKls = (0, vue.computed)(() => [ + nsUpload.b("list"), + nsUpload.bm("list", props.listType), + nsUpload.is("disabled", disabled.value) + ]); + const handleRemove = (file) => { + emit("remove", file); + }; + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(vue.TransitionGroup, { + tag: "ul", + class: (0, vue.normalizeClass)(containerKls.value), + name: (0, vue.unref)(nsList).b() + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.files, (file, index) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + key: file.uid || file.name, + class: (0, vue.normalizeClass)([ + (0, vue.unref)(nsUpload).be("list", "item"), + (0, vue.unref)(nsUpload).is(file.status), + { focusing: focusing.value } + ]), + tabindex: (0, vue.unref)(disabled) ? void 0 : 0, + "aria-disabled": (0, vue.unref)(disabled), + role: "button", + onKeydown: (0, vue.withKeys)(($event) => !(0, vue.unref)(disabled) && handleRemove(file), ["delete"]), + onFocus: _cache[0] || (_cache[0] = ($event) => focusing.value = true), + onBlur: _cache[1] || (_cache[1] = ($event) => focusing.value = false), + onClick: _cache[2] || (_cache[2] = ($event) => focusing.value = false) + }, [(0, vue.renderSlot)(_ctx.$slots, "default", { + file, + index + }, () => [ + __props.listType === "picture" || file.status !== "uploading" && __props.listType === "picture-card" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("img", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-thumbnail")), + src: file.url, + crossorigin: __props.crossorigin, + alt: "" + }, null, 10, _hoisted_2$6)) : (0, vue.createCommentVNode)("v-if", true), + file.status === "uploading" || __props.listType !== "picture-card" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-info")) + }, [(0, vue.createElementVNode)("a", { + class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-name")), + onClick: (0, vue.withModifiers)(($event) => __props.handlePreview(file), ["prevent"]) + }, [(0, vue.createVNode)((0, vue.unref)(ElIcon), { class: (0, vue.normalizeClass)((0, vue.unref)(nsIcon).m("document")) }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(document_default))]), + _: 1 + }, 8, ["class"]), (0, vue.createElementVNode)("span", { + class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-file-name")), + title: file.name + }, (0, vue.toDisplayString)(file.name), 11, _hoisted_4$1)], 10, _hoisted_3$2), file.status === "uploading" ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElProgress), { + key: 0, + type: __props.listType === "picture-card" ? "circle" : "line", + "stroke-width": __props.listType === "picture-card" ? 6 : 2, + percentage: Number(file.percentage), + style: (0, vue.normalizeStyle)(__props.listType === "picture-card" ? "" : "margin-top: 0.5rem") + }, null, 8, [ + "type", + "stroke-width", + "percentage", + "style" + ])) : (0, vue.createCommentVNode)("v-if", true)], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("label", { class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-status-label")) }, [__props.listType === "text" ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(nsIcon).m("upload-success"), (0, vue.unref)(nsIcon).m("circle-check")]) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(circle_check_default))]), + _: 1 + }, 8, ["class"])) : ["picture-card", "picture"].includes(__props.listType) ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 1, + class: (0, vue.normalizeClass)([(0, vue.unref)(nsIcon).m("upload-success"), (0, vue.unref)(nsIcon).m("check")]) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(check_default))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true)], 2), + !(0, vue.unref)(disabled) ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 2, + class: (0, vue.normalizeClass)((0, vue.unref)(nsIcon).m("close")), + "aria-label": (0, vue.unref)(t)("el.upload.delete"), + role: "button", + tabindex: "0", + onClick: ($event) => handleRemove(file), + onKeydown: (0, vue.withKeys)((0, vue.withModifiers)(($event) => handleRemove(file), ["prevent"]), ["enter", "space"]) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(close_default))]), + _: 1 + }, 8, [ + "class", + "aria-label", + "onClick", + "onKeydown" + ])) : (0, vue.createCommentVNode)("v-if", true), + !(0, vue.unref)(disabled) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("i", { + key: 3, + class: (0, vue.normalizeClass)((0, vue.unref)(nsIcon).m("close-tip")) + }, (0, vue.toDisplayString)((0, vue.unref)(t)("el.upload.deleteTip")), 3)) : (0, vue.createCommentVNode)("v-if", true), + __props.listType === "picture-card" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 4, + class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-actions")) + }, [(0, vue.createElementVNode)("span", { + class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-preview")), + onClick: ($event) => __props.handlePreview(file) + }, [(0, vue.createVNode)((0, vue.unref)(ElIcon), { class: (0, vue.normalizeClass)((0, vue.unref)(nsIcon).m("zoom-in")) }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(zoom_in_default))]), + _: 1 + }, 8, ["class"])], 10, _hoisted_5), !(0, vue.unref)(disabled) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-delete")), + onClick: ($event) => handleRemove(file) + }, [(0, vue.createVNode)((0, vue.unref)(ElIcon), { class: (0, vue.normalizeClass)((0, vue.unref)(nsIcon).m("delete")) }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(delete_default))]), + _: 1 + }, 8, ["class"])], 10, _hoisted_6)) : (0, vue.createCommentVNode)("v-if", true)], 2)) : (0, vue.createCommentVNode)("v-if", true) + ])], 42, _hoisted_1$10); + }), 128)), (0, vue.renderSlot)(_ctx.$slots, "append")]), + _: 3 + }, 8, ["class", "name"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/upload/src/upload-list.vue + var upload_list_default = upload_list_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/upload/src/upload-content.ts +/** + * @deprecated Removed after 3.0.0, Use `UploadContentProps` instead. + */ + const uploadContentProps = buildProps({ + ...uploadBaseProps, + beforeUpload: { + type: definePropType(Function), + default: NOOP + }, + onRemove: { + type: definePropType(Function), + default: NOOP + }, + onStart: { + type: definePropType(Function), + default: NOOP + }, + onSuccess: { + type: definePropType(Function), + default: NOOP + }, + onProgress: { + type: definePropType(Function), + default: NOOP + }, + onError: { + type: definePropType(Function), + default: NOOP + }, + onExceed: { + type: definePropType(Function), + default: NOOP + } + }); + const uploadContentPropsDefaults = { + ...uploadBasePropsDefaults, + beforeUpload: NOOP, + onRemove: NOOP, + onStart: NOOP, + onSuccess: NOOP, + onProgress: NOOP, + onError: NOOP, + onExceed: NOOP + }; + +//#endregion +//#region ../../packages/components/upload/src/upload-dragger.ts +/** + * @deprecated Removed after 3.0.0, Use `UploadDraggerProps` instead. + */ + const uploadDraggerProps = buildProps({ + disabled: { + type: Boolean, + default: void 0 + }, + directory: Boolean + }); + const uploadDraggerEmits = { file: (file) => isArray$1(file) }; + +//#endregion +//#region ../../packages/components/upload/src/upload-dragger.vue?vue&type=script&setup=true&lang.ts + const COMPONENT_NAME$1 = "ElUploadDrag"; + var upload_dragger_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME$1, + __name: "upload-dragger", + props: uploadDraggerProps, + emits: uploadDraggerEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + if (!(0, vue.inject)(uploadContextKey)) throwError(COMPONENT_NAME$1, "usage: "); + const ns = useNamespace("upload"); + const dragover = (0, vue.ref)(false); + const disabled = useFormDisabled(); + const getFile = (entry) => { + return new Promise((resolve, reject) => entry.file(resolve, reject)); + }; + const getAllFiles = async (entry) => { + try { + if (entry.isFile) { + const file = await getFile(entry); + file.isDirectory = false; + return [file]; + } + if (entry.isDirectory) { + const dirReader = entry.createReader(); + const getEntries = () => { + return new Promise((resolve, reject) => dirReader.readEntries(resolve, reject)); + }; + const entries = []; + let readEntries = await getEntries(); + /** + * In Chromium-based browsers, readEntries() will only return the first 100 FileSystemEntry instances. + * https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries#:~:text=In%20Chromium%2Dbased%20browsers%2C%20readEntries()%20will%20only%20return%20the%20first%20100%20FileSystemEntry%20instances.%20In%20order%20to%20obtain%20all%20of%20the%20instances%2C%20readEntries()%20must%20be%20called%20multiple%20times. + */ + while (readEntries.length > 0) { + entries.push(...readEntries); + readEntries = await getEntries(); + } + const filePromises = entries.map((entry) => getAllFiles(entry).catch(() => [])); + return flatten(await Promise.all(filePromises)); + } + } catch { + return []; + } + return []; + }; + const onDrop = async (e) => { + if (disabled.value) return; + dragover.value = false; + e.stopPropagation(); + const files = Array.from(e.dataTransfer.files); + const items = e.dataTransfer.items || []; + if (props.directory) { + const entries = Array.from(items).map((item) => item?.webkitGetAsEntry?.()).filter((entry) => entry); + emit("file", flatten(await Promise.all(entries.map(getAllFiles)))); + return; + } + files.forEach((file, index) => { + const entry = items[index]?.webkitGetAsEntry?.(); + if (entry) file.isDirectory = entry.isDirectory; + }); + emit("file", files); + }; + const onDragover = () => { + if (!disabled.value) dragover.value = true; + }; + const onDragleave = (e) => { + if (!e.currentTarget.contains(e.relatedTarget)) dragover.value = false; + }; + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).b("dragger"), (0, vue.unref)(ns).is("dragover", dragover.value)]), + onDrop: (0, vue.withModifiers)(onDrop, ["prevent"]), + onDragover: (0, vue.withModifiers)(onDragover, ["prevent"]), + onDragleave: (0, vue.withModifiers)(onDragleave, ["prevent"]) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 34); + }; + } + }); + +//#endregion +//#region ../../packages/components/upload/src/upload-dragger.vue + var upload_dragger_default = upload_dragger_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/upload/src/upload-content.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$9 = [ + "tabindex", + "aria-disabled", + "onKeydown" + ]; + const _hoisted_2$5 = [ + "name", + "disabled", + "multiple", + "accept", + "webkitdirectory" + ]; + var upload_content_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElUploadContent", + inheritAttrs: false, + __name: "upload-content", + props: uploadContentProps, + setup(__props, { expose: __expose }) { + const props = __props; + const ns = useNamespace("upload"); + const disabled = useFormDisabled(); + const requests = (0, vue.shallowRef)({}); + const inputRef = (0, vue.shallowRef)(); + const uploadFiles = (files) => { + if (files.length === 0) return; + const { autoUpload, limit, fileList, multiple, onStart, onExceed } = props; + if (limit && fileList.length + files.length > limit) { + onExceed(files, fileList); + return; + } + if (!multiple) files = files.slice(0, 1); + for (const file of files) { + const rawFile = file; + rawFile.uid = genFileId(); + onStart(rawFile); + if (autoUpload) upload(rawFile); + } + }; + const upload = async (rawFile) => { + inputRef.value.value = ""; + if (!props.beforeUpload) return doUpload(rawFile); + let hookResult; + let beforeData = {}; + try { + const originData = props.data; + const beforeUploadPromise = props.beforeUpload(rawFile); + beforeData = isPlainObject$1(props.data) ? cloneDeep(props.data) : props.data; + hookResult = await beforeUploadPromise; + if (isPlainObject$1(props.data) && isEqual$1(originData, beforeData)) beforeData = cloneDeep(props.data); + } catch { + hookResult = false; + } + if (hookResult === false) { + props.onRemove(rawFile); + return; + } + let file = rawFile; + if (hookResult instanceof Blob) if (hookResult instanceof File) file = hookResult; + else file = new File([hookResult], rawFile.name, { type: rawFile.type }); + doUpload(Object.assign(file, { uid: rawFile.uid }), beforeData); + }; + const resolveData = async (data, rawFile) => { + if (isFunction$1(data)) return data(rawFile); + return data; + }; + const doUpload = async (rawFile, beforeData) => { + const { headers, data, method, withCredentials, name: filename, action, onProgress, onSuccess, onError, httpRequest } = props; + try { + beforeData = await resolveData(beforeData ?? data, rawFile); + } catch { + props.onRemove(rawFile); + return; + } + const { uid } = rawFile; + const options = { + headers: headers || {}, + withCredentials, + file: rawFile, + data: beforeData, + method, + filename, + action, + onProgress: (evt) => { + onProgress(evt, rawFile); + }, + onSuccess: (res) => { + onSuccess(res, rawFile); + delete requests.value[uid]; + }, + onError: (err) => { + onError(err, rawFile); + delete requests.value[uid]; + } + }; + const request = httpRequest(options); + requests.value[uid] = request; + if (request instanceof Promise) request.then(options.onSuccess, options.onError); + }; + const handleChange = (e) => { + const files = e.target.files; + if (!files) return; + uploadFiles(Array.from(files)); + }; + const handleClick = () => { + if (!disabled.value) { + inputRef.value.value = ""; + inputRef.value.click(); + } + }; + const handleKeydown = () => { + handleClick(); + }; + const abort = (file) => { + entriesOf(requests.value).filter(file ? ([uid]) => String(file.uid) === uid : () => true).forEach(([uid, req]) => { + if (req instanceof XMLHttpRequest) req.abort(); + delete requests.value[uid]; + }); + }; + __expose({ + abort, + upload + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).b(), + (0, vue.unref)(ns).m(__props.listType), + (0, vue.unref)(ns).is("drag", __props.drag), + (0, vue.unref)(ns).is("disabled", (0, vue.unref)(disabled)) + ]), + tabindex: (0, vue.unref)(disabled) ? void 0 : 0, + "aria-disabled": (0, vue.unref)(disabled), + role: "button", + onClick: handleClick, + onKeydown: (0, vue.withKeys)((0, vue.withModifiers)(handleKeydown, ["self"]), ["enter", "space"]) + }, [__props.drag ? ((0, vue.openBlock)(), (0, vue.createBlock)(upload_dragger_default, { + key: 0, + disabled: (0, vue.unref)(disabled), + directory: __props.directory, + onFile: uploadFiles + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 8, ["disabled", "directory"])) : (0, vue.renderSlot)(_ctx.$slots, "default", { key: 1 }), (0, vue.createElementVNode)("input", { + ref_key: "inputRef", + ref: inputRef, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("input")), + name: __props.name, + disabled: (0, vue.unref)(disabled), + multiple: __props.multiple, + accept: __props.accept, + webkitdirectory: __props.directory || void 0, + type: "file", + onChange: handleChange, + onClick: _cache[0] || (_cache[0] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, null, 42, _hoisted_2$5)], 42, _hoisted_1$9); + }; + } + }); + +//#endregion +//#region ../../packages/components/upload/src/upload-content.vue + var upload_content_default = upload_content_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/upload/src/use-handlers.ts + const SCOPE$2 = "ElUpload"; + const revokeFileObjectURL = (file) => { + if (file.url?.startsWith("blob:")) URL.revokeObjectURL(file.url); + }; + const useHandlers = (props, uploadRef) => { + const uploadFiles = useVModel(props, "fileList", void 0, { passive: true }); + const getFile = (rawFile) => uploadFiles.value.find((file) => file.uid === rawFile.uid); + function abort(file) { + uploadRef.value?.abort(file); + } + function clearFiles(states = [ + "ready", + "uploading", + "success", + "fail" + ]) { + uploadFiles.value = uploadFiles.value.filter((row) => !states.includes(row.status)); + } + function removeFile(file) { + uploadFiles.value = uploadFiles.value.filter((uploadFile) => uploadFile.uid !== file.uid); + } + const emitChange = (file) => { + (0, vue.nextTick)(() => props.onChange(file, uploadFiles.value)); + }; + const handleError = (err, rawFile) => { + const file = getFile(rawFile); + if (!file) return; + console.error(err); + file.status = "fail"; + removeFile(file); + props.onError(err, file, uploadFiles.value); + emitChange(file); + }; + const handleProgress = (evt, rawFile) => { + const file = getFile(rawFile); + if (!file) return; + props.onProgress(evt, file, uploadFiles.value); + file.status = "uploading"; + file.percentage = Math.round(evt.percent); + }; + const handleSuccess = (response, rawFile) => { + const file = getFile(rawFile); + if (!file) return; + file.status = "success"; + file.response = response; + props.onSuccess(response, file, uploadFiles.value); + emitChange(file); + }; + const handleStart = (file) => { + if (isNil(file.uid)) file.uid = genFileId(); + const uploadFile = { + name: file.name, + percentage: 0, + status: "ready", + size: file.size, + raw: file, + uid: file.uid + }; + if (props.listType === "picture-card" || props.listType === "picture") try { + uploadFile.url = URL.createObjectURL(file); + } catch (err) { + /* @__PURE__ */ debugWarn(SCOPE$2, err.message); + props.onError(err, uploadFile, uploadFiles.value); + } + uploadFiles.value = [...uploadFiles.value, uploadFile]; + emitChange(uploadFile); + }; + const handleRemove = async (file) => { + const uploadFile = file instanceof File ? getFile(file) : file; + if (!uploadFile) throwError(SCOPE$2, "file to be removed not found"); + const doRemove = (file) => { + abort(file); + removeFile(file); + props.onRemove(file, uploadFiles.value); + revokeFileObjectURL(file); + }; + if (props.beforeRemove) { + if (await props.beforeRemove(uploadFile, uploadFiles.value) !== false) doRemove(uploadFile); + } else doRemove(uploadFile); + }; + function submit() { + uploadFiles.value.filter(({ status }) => status === "ready").forEach(({ raw }) => raw && uploadRef.value?.upload(raw)); + } + (0, vue.watch)(() => props.listType, (val) => { + if (val !== "picture-card" && val !== "picture") return; + uploadFiles.value = uploadFiles.value.map((file) => { + const { raw, url } = file; + if (!url && raw) try { + file.url = URL.createObjectURL(raw); + } catch (err) { + props.onError(err, file, uploadFiles.value); + } + return file; + }); + }); + (0, vue.watch)(uploadFiles, (files) => { + for (const file of files) { + file.uid ||= genFileId(); + file.status ||= "success"; + } + }, { + immediate: true, + deep: true + }); + return { + uploadFiles, + abort, + clearFiles, + handleError, + handleProgress, + handleStart, + handleSuccess, + handleRemove, + submit, + revokeFileObjectURL + }; + }; + +//#endregion +//#region ../../packages/components/upload/src/upload.vue?vue&type=script&setup=true&lang.ts + var upload_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElUpload", + __name: "upload", + props: uploadProps, + setup(__props, { expose: __expose }) { + const props = __props; + const disabled = useFormDisabled(); + const uploadRef = (0, vue.shallowRef)(); + const { abort, submit, clearFiles, uploadFiles, handleStart, handleError, handleRemove, handleSuccess, handleProgress, revokeFileObjectURL } = useHandlers(props, uploadRef); + const isPictureCard = (0, vue.computed)(() => props.listType === "picture-card"); + const uploadContentProps = (0, vue.computed)(() => ({ + ...props, + fileList: uploadFiles.value, + onStart: handleStart, + onProgress: handleProgress, + onSuccess: handleSuccess, + onError: handleError, + onRemove: handleRemove + })); + (0, vue.onBeforeUnmount)(() => { + uploadFiles.value.forEach(revokeFileObjectURL); + }); + (0, vue.provide)(uploadContextKey, { accept: (0, vue.toRef)(props, "accept") }); + __expose({ + abort, + submit, + clearFiles, + handleStart, + handleRemove + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", null, [ + isPictureCard.value && __props.showFileList ? ((0, vue.openBlock)(), (0, vue.createBlock)(upload_list_default, { + key: 0, + disabled: (0, vue.unref)(disabled), + "list-type": __props.listType, + files: (0, vue.unref)(uploadFiles), + crossorigin: __props.crossorigin, + "handle-preview": __props.onPreview, + onRemove: (0, vue.unref)(handleRemove) + }, (0, vue.createSlots)({ + append: (0, vue.withCtx)(() => [(0, vue.createVNode)(upload_content_default, (0, vue.mergeProps)({ + ref_key: "uploadRef", + ref: uploadRef + }, uploadContentProps.value), { + default: (0, vue.withCtx)(() => [_ctx.$slots.trigger ? (0, vue.renderSlot)(_ctx.$slots, "trigger", { key: 0 }) : (0, vue.createCommentVNode)("v-if", true), !_ctx.$slots.trigger && _ctx.$slots.default ? (0, vue.renderSlot)(_ctx.$slots, "default", { key: 1 }) : (0, vue.createCommentVNode)("v-if", true)]), + _: 3 + }, 16)]), + _: 2 + }, [_ctx.$slots.file ? { + name: "default", + fn: (0, vue.withCtx)(({ file, index }) => [(0, vue.renderSlot)(_ctx.$slots, "file", { + file, + index + })]), + key: "0" + } : void 0]), 1032, [ + "disabled", + "list-type", + "files", + "crossorigin", + "handle-preview", + "onRemove" + ])) : (0, vue.createCommentVNode)("v-if", true), + !isPictureCard.value || isPictureCard.value && !__props.showFileList ? ((0, vue.openBlock)(), (0, vue.createBlock)(upload_content_default, (0, vue.mergeProps)({ + key: 1, + ref_key: "uploadRef", + ref: uploadRef + }, uploadContentProps.value), { + default: (0, vue.withCtx)(() => [_ctx.$slots.trigger ? (0, vue.renderSlot)(_ctx.$slots, "trigger", { key: 0 }) : (0, vue.createCommentVNode)("v-if", true), !_ctx.$slots.trigger && _ctx.$slots.default ? (0, vue.renderSlot)(_ctx.$slots, "default", { key: 1 }) : (0, vue.createCommentVNode)("v-if", true)]), + _: 3 + }, 16)) : (0, vue.createCommentVNode)("v-if", true), + _ctx.$slots.trigger ? (0, vue.renderSlot)(_ctx.$slots, "default", { key: 2 }) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.renderSlot)(_ctx.$slots, "tip"), + !isPictureCard.value && __props.showFileList ? ((0, vue.openBlock)(), (0, vue.createBlock)(upload_list_default, { + key: 3, + disabled: (0, vue.unref)(disabled), + "list-type": __props.listType, + files: (0, vue.unref)(uploadFiles), + crossorigin: __props.crossorigin, + "handle-preview": __props.onPreview, + onRemove: (0, vue.unref)(handleRemove) + }, (0, vue.createSlots)({ _: 2 }, [_ctx.$slots.file ? { + name: "default", + fn: (0, vue.withCtx)(({ file, index }) => [(0, vue.renderSlot)(_ctx.$slots, "file", { + file, + index + })]), + key: "0" + } : void 0]), 1032, [ + "disabled", + "list-type", + "files", + "crossorigin", + "handle-preview", + "onRemove" + ])) : (0, vue.createCommentVNode)("v-if", true) + ]); + }; + } + }); + +//#endregion +//#region ../../packages/components/upload/src/upload.vue + var upload_default = upload_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/upload/index.ts + const ElUpload = withInstall(upload_default); + +//#endregion +//#region ../../packages/components/watermark/src/watermark.ts +/** + * @deprecated Removed after 3.0.0, Use `WatermarkProps` instead. + */ + const watermarkProps = buildProps({ + zIndex: { + type: Number, + default: 9 + }, + rotate: { + type: Number, + default: -22 + }, + width: Number, + height: Number, + image: String, + content: { + type: definePropType([String, Array]), + default: "Element Plus" + }, + font: { type: definePropType(Object) }, + gap: { + type: definePropType(Array), + default: () => [100, 100] + }, + offset: { type: definePropType(Array) } + }); + +//#endregion +//#region ../../packages/components/watermark/src/utils.ts +/** converting camel-cased strings to be lowercase and link it with Separator */ + function toLowercaseSeparator(key) { + return key.replace(/([A-Z])/g, "-$1").toLowerCase(); + } + function getStyleStr(style) { + return Object.keys(style).map((key) => `${toLowercaseSeparator(key)}: ${style[key]};`).join(" "); + } + /** Returns the ratio of the device's physical pixel resolution to the css pixel resolution */ + function getPixelRatio() { + return window.devicePixelRatio || 1; + } + /** Whether to re-render the watermark */ + const reRendering = (mutation, watermarkElement) => { + let flag = false; + if (mutation.removedNodes.length && watermarkElement) flag = Array.from(mutation.removedNodes).includes(watermarkElement); + if (mutation.type === "attributes" && mutation.target === watermarkElement) flag = true; + return flag; + }; + +//#endregion +//#region ../../packages/components/watermark/src/useClips.ts + const TEXT_ALIGN_RATIO_MAP = { + left: [0, .5], + start: [0, .5], + center: [.5, 0], + right: [1, -.5], + end: [1, -.5] + }; + function prepareCanvas(width, height, ratio = 1) { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); + const realWidth = width * ratio; + const realHeight = height * ratio; + canvas.setAttribute("width", `${realWidth}px`); + canvas.setAttribute("height", `${realHeight}px`); + ctx.save(); + return [ + ctx, + canvas, + realWidth, + realHeight + ]; + } + /** + * Get the clips of text content. + * This is a lazy hook function since SSR no need this + */ + function useClips() { + function getClips(content, rotate, ratio, width, height, font, gapX, gapY, space) { + const [ctx, canvas, contentWidth, contentHeight] = prepareCanvas(width, height, ratio); + let baselineOffset = 0; + if (content instanceof HTMLImageElement) ctx.drawImage(content, 0, 0, contentWidth, contentHeight); + else { + const { color, fontSize, fontStyle, fontWeight, fontFamily, textAlign, textBaseline } = font; + const mergedFontSize = Number(fontSize) * ratio; + ctx.font = `${fontStyle} normal ${fontWeight} ${mergedFontSize}px/${height}px ${fontFamily}`; + ctx.fillStyle = color; + ctx.textAlign = textAlign; + ctx.textBaseline = textBaseline; + const contents = isArray$1(content) ? content : [content]; + if (textBaseline !== "top" && contents[0]) { + const argumentMetrics = ctx.measureText(contents[0]); + ctx.textBaseline = "top"; + const topMetrics = ctx.measureText(contents[0]); + baselineOffset = argumentMetrics.actualBoundingBoxAscent - topMetrics.actualBoundingBoxAscent; + } + contents?.forEach((item, index) => { + const [alignRatio, spaceRatio] = TEXT_ALIGN_RATIO_MAP[textAlign]; + ctx.fillText(item ?? "", contentWidth * alignRatio + space * spaceRatio, index * (mergedFontSize + font.fontGap * ratio)); + }); + } + const angle = Math.PI / 180 * Number(rotate); + const maxSize = Math.max(width, height); + const [rCtx, rCanvas, realMaxSize] = prepareCanvas(maxSize, maxSize, ratio); + rCtx.translate(realMaxSize / 2, realMaxSize / 2); + rCtx.rotate(angle); + if (contentWidth > 0 && contentHeight > 0) rCtx.drawImage(canvas, -contentWidth / 2, -contentHeight / 2); + function getRotatePos(x, y) { + return [x * Math.cos(angle) - y * Math.sin(angle), x * Math.sin(angle) + y * Math.cos(angle)]; + } + let left = 0; + let right = 0; + let top = 0; + let bottom = 0; + const halfWidth = contentWidth / 2; + const halfHeight = contentHeight / 2; + [ + [0 - halfWidth, 0 - halfHeight], + [0 + halfWidth, 0 - halfHeight], + [0 + halfWidth, 0 + halfHeight], + [0 - halfWidth, 0 + halfHeight] + ].forEach(([x, y]) => { + const [targetX, targetY] = getRotatePos(x, y); + left = Math.min(left, targetX); + right = Math.max(right, targetX); + top = Math.min(top, targetY); + bottom = Math.max(bottom, targetY); + }); + const cutLeft = left + realMaxSize / 2; + const cutTop = top + realMaxSize / 2; + const cutWidth = right - left; + const cutHeight = bottom - top; + const realGapX = gapX * ratio; + const realGapY = gapY * ratio; + const filledWidth = (cutWidth + realGapX) * 2; + const filledHeight = cutHeight + realGapY; + const [fCtx, fCanvas] = prepareCanvas(filledWidth, filledHeight); + function drawImg(targetX = 0, targetY = 0) { + fCtx.drawImage(rCanvas, cutLeft, cutTop, cutWidth, cutHeight, targetX, targetY + baselineOffset, cutWidth, cutHeight); + } + drawImg(); + drawImg(cutWidth + realGapX, -cutHeight / 2 - realGapY / 2); + drawImg(cutWidth + realGapX, +cutHeight / 2 + realGapY / 2); + return [ + fCanvas.toDataURL(), + filledWidth / ratio, + filledHeight / ratio + ]; + } + return getClips; + } + +//#endregion +//#region ../../packages/components/watermark/src/watermark.vue?vue&type=script&setup=true&lang.ts + var watermark_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElWatermark", + __name: "watermark", + props: watermarkProps, + setup(__props) { + const style = { position: "relative" }; + const props = __props; + const fontGap = (0, vue.computed)(() => props.font?.fontGap ?? 3); + const color = (0, vue.computed)(() => props.font?.color ?? "rgba(0,0,0,.15)"); + const fontSize = (0, vue.computed)(() => props.font?.fontSize ?? 16); + const fontWeight = (0, vue.computed)(() => props.font?.fontWeight ?? "normal"); + const fontStyle = (0, vue.computed)(() => props.font?.fontStyle ?? "normal"); + const fontFamily = (0, vue.computed)(() => props.font?.fontFamily ?? "sans-serif"); + const textAlign = (0, vue.computed)(() => props.font?.textAlign ?? "center"); + const textBaseline = (0, vue.computed)(() => props.font?.textBaseline ?? "hanging"); + const gapX = (0, vue.computed)(() => props.gap[0]); + const gapY = (0, vue.computed)(() => props.gap[1]); + const gapXCenter = (0, vue.computed)(() => gapX.value / 2); + const gapYCenter = (0, vue.computed)(() => gapY.value / 2); + const offsetLeft = (0, vue.computed)(() => props.offset?.[0] ?? gapXCenter.value); + const offsetTop = (0, vue.computed)(() => props.offset?.[1] ?? gapYCenter.value); + const getMarkStyle = () => { + const markStyle = { + zIndex: props.zIndex, + position: "absolute", + left: 0, + top: 0, + width: "100%", + height: "100%", + pointerEvents: "none", + backgroundRepeat: "repeat" + }; + /** Calculate the style of the offset */ + let positionLeft = offsetLeft.value - gapXCenter.value; + let positionTop = offsetTop.value - gapYCenter.value; + if (positionLeft > 0) { + markStyle.left = `${positionLeft}px`; + markStyle.width = `calc(100% - ${positionLeft}px)`; + positionLeft = 0; + } + if (positionTop > 0) { + markStyle.top = `${positionTop}px`; + markStyle.height = `calc(100% - ${positionTop}px)`; + positionTop = 0; + } + markStyle.backgroundPosition = `${positionLeft}px ${positionTop}px`; + return markStyle; + }; + const containerRef = (0, vue.shallowRef)(null); + const watermarkRef = (0, vue.shallowRef)(); + const stopObservation = (0, vue.ref)(false); + const destroyWatermark = () => { + if (watermarkRef.value) { + watermarkRef.value.remove(); + watermarkRef.value = void 0; + } + }; + const appendWatermark = (base64Url, markWidth) => { + if (containerRef.value && watermarkRef.value) { + stopObservation.value = true; + watermarkRef.value.setAttribute("style", getStyleStr({ + ...getMarkStyle(), + backgroundImage: `url('${base64Url}')`, + backgroundSize: `${Math.floor(markWidth)}px` + })); + containerRef.value?.append(watermarkRef.value); + setTimeout(() => { + stopObservation.value = false; + }); + } + }; + /** + * Get the width and height of the watermark. The default values are as follows + * Image: [120, 64]; Content: It's calculated by content; + */ + const getMarkSize = (ctx) => { + let defaultWidth = 120; + let defaultHeight = 64; + let space = 0; + const { image, content, width, height, rotate } = props; + if (!image && ctx.measureText) { + ctx.font = `${Number(fontSize.value)}px ${fontFamily.value}`; + const contents = isArray$1(content) ? content : [content]; + let maxWidth = 0; + let maxHeight = 0; + contents.forEach((item) => { + const { width, fontBoundingBoxAscent, fontBoundingBoxDescent, actualBoundingBoxAscent, actualBoundingBoxDescent } = ctx.measureText(item); + const height = isUndefined(fontBoundingBoxAscent) ? actualBoundingBoxAscent + actualBoundingBoxDescent : fontBoundingBoxAscent + fontBoundingBoxDescent; + if (width > maxWidth) maxWidth = Math.ceil(width); + if (height > maxHeight) maxHeight = Math.ceil(height); + }); + defaultWidth = maxWidth; + defaultHeight = maxHeight * contents.length + (contents.length - 1) * fontGap.value; + const angle = Math.PI / 180 * Number(rotate); + space = Math.ceil(Math.abs(Math.sin(angle) * defaultHeight) / 2); + defaultWidth += space; + } + return [ + width ?? defaultWidth, + height ?? defaultHeight, + space + ]; + }; + const getClips = useClips(); + const renderWatermark = () => { + const ctx = document.createElement("canvas").getContext("2d"); + const image = props.image; + const content = props.content; + const rotate = props.rotate; + if (ctx) { + if (!watermarkRef.value) watermarkRef.value = document.createElement("div"); + const ratio = getPixelRatio(); + const [markWidth, markHeight, space] = getMarkSize(ctx); + const drawCanvas = (drawContent) => { + const [textClips, clipWidth] = getClips(drawContent || "", rotate, ratio, markWidth, markHeight, { + color: color.value, + fontSize: fontSize.value, + fontStyle: fontStyle.value, + fontWeight: fontWeight.value, + fontFamily: fontFamily.value, + fontGap: fontGap.value, + textAlign: textAlign.value, + textBaseline: textBaseline.value + }, gapX.value, gapY.value, space); + appendWatermark(textClips, clipWidth); + }; + if (image) { + const img = new Image(); + img.onload = () => { + drawCanvas(img); + }; + img.onerror = () => { + drawCanvas(content); + }; + img.crossOrigin = "anonymous"; + img.referrerPolicy = "no-referrer"; + img.src = image; + } else drawCanvas(content); + } + }; + (0, vue.onMounted)(() => { + renderWatermark(); + }); + (0, vue.watch)(() => props, () => { + renderWatermark(); + }, { + deep: true, + flush: "post" + }); + (0, vue.onBeforeUnmount)(() => { + destroyWatermark(); + }); + const onMutate = (mutations) => { + if (stopObservation.value) return; + mutations.forEach((mutation) => { + if (reRendering(mutation, watermarkRef.value)) { + destroyWatermark(); + renderWatermark(); + } + }); + }; + useMutationObserver(containerRef, onMutate, { + attributes: true, + subtree: true, + childList: true + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "containerRef", + ref: containerRef, + style: (0, vue.normalizeStyle)([style]) + }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 4); + }; + } + }); + +//#endregion +//#region ../../packages/components/watermark/src/watermark.vue + var watermark_default = watermark_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/watermark/index.ts + const ElWatermark = withInstall(watermark_default); + +//#endregion +//#region ../../packages/components/tour/src/content.ts + const tourStrategies = ["absolute", "fixed"]; + const tourPlacements = [ + "top-start", + "top-end", + "top", + "bottom-start", + "bottom-end", + "bottom", + "left-start", + "left-end", + "left", + "right-start", + "right-end", + "right" + ]; + /** + * @deprecated Removed after 3.0.0, Use `TourContentProps` instead. + */ + const tourContentProps = buildProps({ + placement: { + type: definePropType(String), + values: tourPlacements, + default: "bottom" + }, + reference: { + type: definePropType(Object), + default: null + }, + strategy: { + type: definePropType(String), + values: tourStrategies, + default: "absolute" + }, + offset: { + type: Number, + default: 10 + }, + showArrow: Boolean, + zIndex: { + type: Number, + default: 2001 + } + }); + const tourContentEmits = { close: () => true }; + +//#endregion +//#region ../../packages/components/tour/src/tour.ts +/** + * @deprecated Removed after 3.0.0, Use `TourProps` instead. + */ + const tourProps = buildProps({ + modelValue: Boolean, + current: { + type: Number, + default: 0 + }, + showArrow: { + type: Boolean, + default: true + }, + showClose: { + type: Boolean, + default: true + }, + closeIcon: { type: iconPropType }, + placement: tourContentProps.placement, + contentStyle: { type: definePropType([Object]) }, + mask: { + type: definePropType([Boolean, Object]), + default: true + }, + gap: { + type: definePropType(Object), + default: () => ({ + offset: 6, + radius: 2 + }) + }, + zIndex: { type: Number }, + scrollIntoViewOptions: { + type: definePropType([Boolean, Object]), + default: () => ({ block: "center" }) + }, + type: { type: definePropType(String) }, + appendTo: { + type: teleportProps.to.type, + default: "body" + }, + closeOnPressEscape: { + type: Boolean, + default: true + }, + targetAreaClickable: { + type: Boolean, + default: true + } + }); + const tourEmits = { + [UPDATE_MODEL_EVENT]: (value) => isBoolean(value), + ["update:current"]: (current) => isNumber(current), + close: (current) => isNumber(current), + finish: () => true, + change: (current) => isNumber(current) + }; + +//#endregion +//#region ../../packages/components/tour/src/mask.ts +/** + * @deprecated Removed after 3.0.0, Use `MaskProps` instead. + */ + const maskProps = buildProps({ + zIndex: { + type: Number, + default: 1001 + }, + visible: Boolean, + fill: { + type: String, + default: "rgba(0,0,0,0.5)" + }, + pos: { type: definePropType(Object) }, + targetAreaClickable: { + type: Boolean, + default: true + } + }); + +//#endregion +//#region ../../packages/components/tour/src/helper.ts + const useTarget = (target, open, gap, mergedMask, scrollIntoViewOptions) => { + const posInfo = (0, vue.ref)(null); + const getTargetEl = () => { + let targetEl; + if (isString(target.value)) targetEl = document.querySelector(target.value); + else if (isFunction$1(target.value)) targetEl = target.value(); + else targetEl = target.value; + return targetEl; + }; + const updatePosInfo = () => { + const targetEl = getTargetEl(); + if (!targetEl || !open.value) { + posInfo.value = null; + return; + } + if (!isInViewPort(targetEl)) targetEl.scrollIntoView(scrollIntoViewOptions.value); + const { left, top, width, height } = targetEl.getBoundingClientRect(); + posInfo.value = { + left, + top, + width, + height, + radius: 0 + }; + }; + (0, vue.onMounted)(() => { + (0, vue.watch)([open, target], () => { + updatePosInfo(); + }, { immediate: true }); + window.addEventListener("resize", updatePosInfo); + }); + (0, vue.onBeforeUnmount)(() => { + window.removeEventListener("resize", updatePosInfo); + }); + const getGapOffset = (index) => (isArray$1(gap.value.offset) ? gap.value.offset[index] : gap.value.offset) ?? 6; + const mergedPosInfo = (0, vue.computed)(() => { + if (!posInfo.value) return posInfo.value; + const gapOffsetX = getGapOffset(0); + const gapOffsetY = getGapOffset(1); + const gapRadius = gap.value?.radius || 2; + return { + left: posInfo.value.left - gapOffsetX, + top: posInfo.value.top - gapOffsetY, + width: posInfo.value.width + gapOffsetX * 2, + height: posInfo.value.height + gapOffsetY * 2, + radius: gapRadius + }; + }); + return { + mergedPosInfo, + triggerTarget: (0, vue.computed)(() => { + const targetEl = getTargetEl(); + if (!mergedMask.value || !targetEl || !window.DOMRect) return targetEl || void 0; + return { getBoundingClientRect() { + return window.DOMRect.fromRect({ + width: mergedPosInfo.value?.width || 0, + height: mergedPosInfo.value?.height || 0, + x: mergedPosInfo.value?.left || 0, + y: mergedPosInfo.value?.top || 0 + }); + } }; + }) + }; + }; + const tourKey = Symbol("ElTour"); + function isInViewPort(element) { + const viewWidth = window.innerWidth || document.documentElement.clientWidth; + const viewHeight = window.innerHeight || document.documentElement.clientHeight; + const { top, right, bottom, left } = element.getBoundingClientRect(); + return top >= 0 && left >= 0 && right <= viewWidth && bottom <= viewHeight; + } + const useFloating$1 = (referenceRef, contentRef, arrowRef, placement, strategy, offset$2, zIndex, showArrow) => { + const x = (0, vue.ref)(); + const y = (0, vue.ref)(); + const middlewareData = (0, vue.ref)({}); + const states = { + x, + y, + placement, + strategy, + middlewareData + }; + const middleware = (0, vue.computed)(() => { + const _middleware = [ + offset((0, vue.unref)(offset$2)), + flip(), + shift(), + overflowMiddleware() + ]; + if ((0, vue.unref)(showArrow) && (0, vue.unref)(arrowRef)) _middleware.push(arrow({ element: (0, vue.unref)(arrowRef) })); + return _middleware; + }); + const update = async () => { + if (!isClient) return; + const referenceEl = (0, vue.unref)(referenceRef); + const contentEl = (0, vue.unref)(contentRef); + if (!referenceEl || !contentEl) return; + const data = await computePosition(referenceEl, contentEl, { + placement: (0, vue.unref)(placement), + strategy: (0, vue.unref)(strategy), + middleware: (0, vue.unref)(middleware) + }); + keysOf(states).forEach((key) => { + states[key].value = data[key]; + }); + }; + const contentStyle = (0, vue.computed)(() => { + if (!(0, vue.unref)(referenceRef)) return { + position: "fixed", + top: "50%", + left: "50%", + transform: "translate3d(-50%, -50%, 0)", + maxWidth: "100vw", + zIndex: (0, vue.unref)(zIndex) + }; + const { overflow } = (0, vue.unref)(middlewareData); + return { + position: (0, vue.unref)(strategy), + zIndex: (0, vue.unref)(zIndex), + top: (0, vue.unref)(y) != null ? `${(0, vue.unref)(y)}px` : "", + left: (0, vue.unref)(x) != null ? `${(0, vue.unref)(x)}px` : "", + maxWidth: overflow?.maxWidth ? `${overflow?.maxWidth}px` : "" + }; + }); + const arrowStyle = (0, vue.computed)(() => { + if (!(0, vue.unref)(showArrow)) return {}; + const { arrow } = (0, vue.unref)(middlewareData); + return { + left: arrow?.x != null ? `${arrow?.x}px` : "", + top: arrow?.y != null ? `${arrow?.y}px` : "" + }; + }); + let cleanup; + (0, vue.onMounted)(() => { + const referenceEl = (0, vue.unref)(referenceRef); + const contentEl = (0, vue.unref)(contentRef); + if (referenceEl && contentEl) cleanup = autoUpdate(referenceEl, contentEl, update); + (0, vue.watchEffect)(() => { + update(); + }); + }); + (0, vue.onBeforeUnmount)(() => { + cleanup && cleanup(); + }); + return { + update, + contentStyle, + arrowStyle + }; + }; + const overflowMiddleware = () => { + return { + name: "overflow", + async fn(state) { + const overflow = await detectOverflow(state); + let overWidth = 0; + if (overflow.left > 0) overWidth = overflow.left; + if (overflow.right > 0) overWidth = overflow.right; + return { data: { maxWidth: state.rects.floating.width - overWidth } }; + } + }; + }; + +//#endregion +//#region ../../packages/components/tour/src/mask.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$8 = { style: { + width: "100%", + height: "100%" + } }; + const _hoisted_2$4 = ["d"]; + var mask_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTourMask", + inheritAttrs: false, + __name: "mask", + props: maskProps, + setup(__props) { + const props = __props; + const { ns } = (0, vue.inject)(tourKey); + const radius = (0, vue.computed)(() => props.pos?.radius ?? 2); + const roundInfo = (0, vue.computed)(() => { + const v = radius.value; + const baseInfo = `a${v},${v} 0 0 1`; + return { + topRight: `${baseInfo} ${v},${v}`, + bottomRight: `${baseInfo} ${-v},${v}`, + bottomLeft: `${baseInfo} ${-v},${-v}`, + topLeft: `${baseInfo} ${v},${-v}` + }; + }); + const { width: windowWidth, height: windowHeight } = useWindowSize(); + const path = (0, vue.computed)(() => { + const width = windowWidth.value; + const height = windowHeight.value; + const info = roundInfo.value; + const _path = `M${width},0 L0,0 L0,${height} L${width},${height} L${width},0 Z`; + const _radius = radius.value; + return props.pos ? `${_path} M${props.pos.left + _radius},${props.pos.top} h${props.pos.width - _radius * 2} ${info.topRight} v${props.pos.height - _radius * 2} ${info.bottomRight} h${-props.pos.width + _radius * 2} ${info.bottomLeft} v${-props.pos.height + _radius * 2} ${info.topLeft} z` : _path; + }); + const maskStyle = (0, vue.computed)(() => ({ + position: "fixed", + left: 0, + right: 0, + top: 0, + bottom: 0, + zIndex: props.zIndex, + pointerEvents: props.pos && props.targetAreaClickable ? "none" : "auto" + })); + const pathStyle = (0, vue.computed)(() => ({ + fill: props.fill, + pointerEvents: "auto", + cursor: "auto" + })); + useLockscreen((0, vue.toRef)(props, "visible"), { ns }); + return (_ctx, _cache) => { + return __props.visible ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", (0, vue.mergeProps)({ + key: 0, + class: (0, vue.unref)(ns).e("mask"), + style: maskStyle.value + }, _ctx.$attrs), [((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_1$8, [(0, vue.createElementVNode)("path", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("hollow")), + style: (0, vue.normalizeStyle)(pathStyle.value), + d: path.value + }, null, 14, _hoisted_2$4)]))], 16)) : (0, vue.createCommentVNode)("v-if", true); + }; + } + }); + +//#endregion +//#region ../../packages/components/tour/src/mask.vue + var mask_default = mask_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/tour/src/content.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$7 = ["data-side"]; + var content_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTourContent", + __name: "content", + props: tourContentProps, + emits: tourContentEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const placement = (0, vue.ref)(props.placement); + const strategy = (0, vue.ref)(props.strategy); + const contentRef = (0, vue.ref)(null); + const arrowRef = (0, vue.ref)(null); + (0, vue.watch)(() => props.placement, () => { + placement.value = props.placement; + }); + const { contentStyle, arrowStyle } = useFloating$1((0, vue.toRef)(props, "reference"), contentRef, arrowRef, placement, strategy, (0, vue.toRef)(props, "offset"), (0, vue.toRef)(props, "zIndex"), (0, vue.toRef)(props, "showArrow")); + const side = (0, vue.computed)(() => { + return placement.value.split("-")[0]; + }); + const { ns } = (0, vue.inject)(tourKey); + const onCloseRequested = () => { + emit("close"); + }; + const onFocusoutPrevented = (event) => { + if (event.detail.focusReason === "pointer") event.preventDefault(); + }; + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "contentRef", + ref: contentRef, + style: (0, vue.normalizeStyle)((0, vue.unref)(contentStyle)), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("content")), + "data-side": side.value, + tabindex: "-1" + }, [(0, vue.createVNode)((0, vue.unref)(focus_trap_default), { + loop: "", + trapped: "", + "focus-start-el": "container", + "focus-trap-el": contentRef.value || void 0, + onReleaseRequested: onCloseRequested, + onFocusoutPrevented + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 8, ["focus-trap-el"]), __props.showArrow ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: 0, + ref_key: "arrowRef", + ref: arrowRef, + style: (0, vue.normalizeStyle)((0, vue.unref)(arrowStyle)), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("arrow")) + }, null, 6)) : (0, vue.createCommentVNode)("v-if", true)], 14, _hoisted_1$7); + }; + } + }); + +//#endregion +//#region ../../packages/components/tour/src/content.vue + var content_default$1 = content_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/tour/src/steps.ts + var steps_default = (0, vue.defineComponent)({ + name: "ElTourSteps", + props: { current: { + type: Number, + default: 0 + } }, + emits: ["update-total"], + setup(props, { slots, emit }) { + let cacheTotal = 0; + return () => { + const children = slots.default?.(); + const result = []; + let total = 0; + function filterSteps(children) { + if (!isArray$1(children)) return; + children.forEach((item) => { + if ((item?.type || {})?.name === "ElTourStep") { + result.push(item); + total += 1; + } + }); + } + if (children.length) filterSteps(flattedChildren(children[0]?.children)); + if (cacheTotal !== total) { + cacheTotal = total; + emit("update-total", total); + } + if (result.length) return result[props.current]; + return null; + }; + } + }); + +//#endregion +//#region ../../packages/components/tour/src/tour.vue?vue&type=script&setup=true&lang.ts + var tour_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTour", + inheritAttrs: false, + __name: "tour", + props: tourProps, + emits: tourEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const ns = useNamespace("tour"); + const total = (0, vue.ref)(0); + const currentStep = (0, vue.ref)(); + const current = useVModel(props, "current", emit, { passive: true }); + const currentTarget = (0, vue.computed)(() => currentStep.value?.target); + const kls = (0, vue.computed)(() => [ns.b(), mergedType.value === "primary" ? ns.m("primary") : ""]); + const mergedPlacement = (0, vue.computed)(() => currentStep.value?.placement || props.placement); + const mergedContentStyle = (0, vue.computed)(() => currentStep.value?.contentStyle ?? props.contentStyle); + const mergedMask = (0, vue.computed)(() => currentStep.value?.mask ?? props.mask); + const mergedShowMask = (0, vue.computed)(() => !!mergedMask.value && props.modelValue); + const mergedMaskStyle = (0, vue.computed)(() => isBoolean(mergedMask.value) ? void 0 : mergedMask.value); + const mergedShowArrow = (0, vue.computed)(() => !!currentTarget.value && (currentStep.value?.showArrow ?? props.showArrow)); + const mergedScrollIntoViewOptions = (0, vue.computed)(() => currentStep.value?.scrollIntoViewOptions ?? props.scrollIntoViewOptions); + const mergedType = (0, vue.computed)(() => currentStep.value?.type ?? props.type); + const { nextZIndex } = useZIndex(); + const nowZIndex = nextZIndex(); + const mergedZIndex = (0, vue.computed)(() => props.zIndex ?? nowZIndex); + const { mergedPosInfo: pos, triggerTarget } = useTarget(currentTarget, (0, vue.toRef)(props, "modelValue"), (0, vue.toRef)(props, "gap"), mergedMask, mergedScrollIntoViewOptions); + (0, vue.watch)(() => props.modelValue, (val) => { + if (!val) current.value = 0; + }); + const onEscClose = () => { + if (props.closeOnPressEscape) { + emit(UPDATE_MODEL_EVENT, false); + emit("close", current.value); + } + }; + const onUpdateTotal = (val) => { + total.value = val; + }; + const slots = (0, vue.useSlots)(); + (0, vue.provide)(tourKey, { + currentStep, + current, + total, + showClose: (0, vue.toRef)(props, "showClose"), + closeIcon: (0, vue.toRef)(props, "closeIcon"), + mergedType, + ns, + slots, + updateModelValue(modelValue) { + emit(UPDATE_MODEL_EVENT, modelValue); + }, + onClose() { + emit("close", current.value); + }, + onFinish() { + emit("finish"); + }, + onChange() { + emit(CHANGE_EVENT, current.value); + } + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, null, [ + (0, vue.createVNode)((0, vue.unref)(ElTeleport), { to: __props.appendTo }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", (0, vue.mergeProps)({ class: kls.value }, _ctx.$attrs), [(0, vue.createVNode)(mask_default, { + visible: mergedShowMask.value, + fill: mergedMaskStyle.value?.color, + style: (0, vue.normalizeStyle)(mergedMaskStyle.value?.style), + pos: (0, vue.unref)(pos), + "z-index": mergedZIndex.value, + "target-area-clickable": __props.targetAreaClickable + }, null, 8, [ + "visible", + "fill", + "style", + "pos", + "z-index", + "target-area-clickable" + ]), __props.modelValue ? ((0, vue.openBlock)(), (0, vue.createBlock)(content_default$1, { + key: (0, vue.unref)(current), + reference: (0, vue.unref)(triggerTarget), + placement: mergedPlacement.value, + "show-arrow": mergedShowArrow.value, + "z-index": mergedZIndex.value, + style: (0, vue.normalizeStyle)(mergedContentStyle.value), + onClose: onEscClose + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(steps_default), { + current: (0, vue.unref)(current), + onUpdateTotal + }, { + default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), + _: 3 + }, 8, ["current"])]), + _: 3 + }, 8, [ + "reference", + "placement", + "show-arrow", + "z-index", + "style" + ])) : (0, vue.createCommentVNode)("v-if", true)], 16)]), + _: 3 + }, 8, ["to"]), + (0, vue.createCommentVNode)(" just for IDE "), + (0, vue.createCommentVNode)("v-if", true) + ], 64); + }; + } + }); + +//#endregion +//#region ../../packages/components/tour/src/tour.vue + var tour_default = tour_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/tour/src/step.ts +/** + * @deprecated Removed after 3.0.0, Use `TourStepProps` instead. + */ + const tourStepProps = buildProps({ + target: { type: definePropType([ + String, + Object, + Function + ]) }, + title: String, + description: String, + showClose: { + type: Boolean, + default: void 0 + }, + closeIcon: { type: iconPropType }, + showArrow: { + type: Boolean, + default: void 0 + }, + placement: tourContentProps.placement, + mask: { + type: definePropType([Boolean, Object]), + default: void 0 + }, + contentStyle: { type: definePropType([Object]) }, + prevButtonProps: { type: definePropType(Object) }, + nextButtonProps: { type: definePropType(Object) }, + scrollIntoViewOptions: { + type: definePropType([Boolean, Object]), + default: void 0 + }, + type: { type: definePropType(String) } + }); + const tourStepEmits = { close: () => true }; + +//#endregion +//#region ../../packages/components/tour/src/step.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$6 = ["aria-label"]; + var step_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElTourStep", + __name: "step", + props: tourStepProps, + emits: tourStepEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const { Close } = CloseComponents; + const { t } = useLocale(); + const { currentStep, current, total, showClose, closeIcon, mergedType, ns, slots: tourSlots, updateModelValue, onClose: tourOnClose, onFinish: tourOnFinish, onChange } = (0, vue.inject)(tourKey); + (0, vue.watch)(props, (val) => { + currentStep.value = val; + }, { immediate: true }); + const mergedShowClose = (0, vue.computed)(() => props.showClose ?? showClose.value); + const mergedCloseIcon = (0, vue.computed)(() => props.closeIcon ?? closeIcon.value ?? Close); + const filterButtonProps = (btnProps) => { + if (!btnProps) return; + return omit(btnProps, ["children", "onClick"]); + }; + const onPrev = () => { + current.value -= 1; + if (props.prevButtonProps?.onClick) props.prevButtonProps?.onClick(); + onChange(); + }; + const onNext = () => { + if (current.value >= total.value - 1) onFinish(); + else current.value += 1; + if (props.nextButtonProps?.onClick) props.nextButtonProps.onClick(); + onChange(); + }; + const onFinish = () => { + onClose(); + tourOnFinish(); + }; + const onClose = () => { + updateModelValue(false); + tourOnClose(); + emit("close"); + }; + const handleKeydown = (e) => { + if (e.target?.isContentEditable) return; + switch (getEventCode(e)) { + case EVENT_CODE.left: + e.preventDefault(); + current.value > 0 && onPrev(); + break; + case EVENT_CODE.right: + e.preventDefault(); + onNext(); + break; + } + }; + (0, vue.onMounted)(() => { + window.addEventListener("keydown", handleKeydown); + }); + (0, vue.onBeforeUnmount)(() => { + window.removeEventListener("keydown", handleKeydown); + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, null, [ + mergedShowClose.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key: 0, + "aria-label": (0, vue.unref)(t)("el.tour.close"), + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("closebtn")), + type: "button", + onClick: onClose + }, [(0, vue.createVNode)((0, vue.unref)(ElIcon), { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("close")) }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(mergedCloseIcon.value)))]), + _: 1 + }, 8, ["class"])], 10, _hoisted_1$6)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("header", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("header"), { "show-close": (0, vue.unref)(showClose) }]) }, [(0, vue.renderSlot)(_ctx.$slots, "header", {}, () => [(0, vue.createElementVNode)("span", { + role: "heading", + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("title")) + }, (0, vue.toDisplayString)(__props.title), 3)])], 2), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("body")) }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(__props.description), 1)])], 2), + (0, vue.createElementVNode)("footer", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("footer")) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).b("indicators")) }, [(0, vue.unref)(tourSlots).indicators ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)((0, vue.unref)(tourSlots).indicators), { + key: 0, + current: (0, vue.unref)(current), + total: (0, vue.unref)(total) + }, null, 8, ["current", "total"])) : ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, (0, vue.renderList)((0, vue.unref)(total), (item, index) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("span", { + key: item, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).b("indicator"), (0, vue.unref)(ns).is("active", index === (0, vue.unref)(current))]) + }, null, 2); + }), 128))], 2), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).b("buttons")) }, [(0, vue.unref)(current) > 0 ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElButton), (0, vue.mergeProps)({ + key: 0, + size: "small", + type: (0, vue.unref)(mergedType) + }, filterButtonProps(__props.prevButtonProps), { onClick: onPrev }), { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.prevButtonProps?.children ?? (0, vue.unref)(t)("el.tour.previous")), 1)]), + _: 1 + }, 16, ["type"])) : (0, vue.createCommentVNode)("v-if", true), (0, vue.unref)(current) <= (0, vue.unref)(total) - 1 ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElButton), (0, vue.mergeProps)({ + key: 1, + size: "small", + type: (0, vue.unref)(mergedType) === "primary" ? "default" : "primary" + }, filterButtonProps(__props.nextButtonProps), { onClick: onNext }), { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.nextButtonProps?.children ?? ((0, vue.unref)(current) === (0, vue.unref)(total) - 1 ? (0, vue.unref)(t)("el.tour.finish") : (0, vue.unref)(t)("el.tour.next"))), 1)]), + _: 1 + }, 16, ["type"])) : (0, vue.createCommentVNode)("v-if", true)], 2)], 2) + ], 64); + }; + } + }); + +//#endregion +//#region ../../packages/components/tour/src/step.vue + var step_default = step_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/tour/index.ts + const ElTour = withInstall(tour_default, { TourStep: step_default }); + const ElTourStep = withNoopInstall(step_default); + +//#endregion +//#region ../../packages/components/anchor/src/anchor.ts +/** + * @deprecated Removed after 3.0.0, Use `AnchorProps` instead. + */ + const anchorProps = buildProps({ + container: { type: definePropType([String, Object]) }, + offset: { + type: Number, + default: 0 + }, + bound: { + type: Number, + default: 15 + }, + duration: { + type: Number, + default: 300 + }, + marker: { + type: Boolean, + default: true + }, + type: { + type: definePropType(String), + default: "default" + }, + direction: { + type: definePropType(String), + default: "vertical" + }, + selectScrollTop: Boolean + }); + const anchorEmits = { + change: (href) => isString(href), + click: (e, href) => e instanceof MouseEvent && (isString(href) || isUndefined(href)) + }; + +//#endregion +//#region ../../packages/components/anchor/src/constants.ts + const anchorKey = Symbol("anchor"); + +//#endregion +//#region ../../packages/components/anchor/src/anchor.vue?vue&type=script&setup=true&lang.ts + var anchor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElAnchor", + __name: "anchor", + props: anchorProps, + emits: anchorEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const slots = (0, vue.useSlots)(); + const currentAnchor = (0, vue.ref)(""); + const markerStyle = (0, vue.ref)({}); + const anchorRef = (0, vue.ref)(null); + const markerRef = (0, vue.ref)(null); + const containerEl = (0, vue.ref)(); + const links = {}; + let isScrolling = false; + let currentScrollTop = 0; + const ns = useNamespace("anchor"); + const cls = (0, vue.computed)(() => [ + ns.b(), + props.type === "underline" ? ns.m("underline") : "", + ns.m(props.direction) + ]); + const addLink = (state) => { + links[state.href] = state.el; + }; + const removeLink = (href) => { + delete links[href]; + }; + const setCurrentAnchor = (href) => { + if (currentAnchor.value !== href) { + currentAnchor.value = href; + emit(CHANGE_EVENT, href); + } + }; + let clearAnimate = null; + let currentTargetHref = ""; + const scrollToAnchor = (href) => { + if (!containerEl.value) return; + const target = getElement(href); + if (!target) return; + if (clearAnimate) { + if (currentTargetHref === href) return; + clearAnimate(); + } + currentTargetHref = href; + isScrolling = true; + const scrollEle = getScrollElement(target, containerEl.value); + const distance = getOffsetTopDistance(target, scrollEle); + const max = scrollEle.scrollHeight - scrollEle.clientHeight; + const to = Math.min(distance - props.offset, max); + clearAnimate = animateScrollTo(containerEl.value, currentScrollTop, to, props.duration, () => { + setTimeout(() => { + isScrolling = false; + currentTargetHref = ""; + }, 20); + }); + }; + const scrollTo = (href) => { + if (href) { + setCurrentAnchor(href); + scrollToAnchor(href); + } + }; + const handleClick = (e, href) => { + emit("click", e, href); + scrollTo(href); + }; + const handleScroll = throttleByRaf(() => { + if (containerEl.value) currentScrollTop = getScrollTop(containerEl.value); + const currentHref = getCurrentHref(); + if (isScrolling || isUndefined(currentHref)) return; + setCurrentAnchor(currentHref); + }); + const getCurrentHref = () => { + if (!containerEl.value) return; + const scrollTop = getScrollTop(containerEl.value); + const anchorTopList = []; + for (const href of Object.keys(links)) { + const target = getElement(href); + if (!target) continue; + const distance = getOffsetTopDistance(target, getScrollElement(target, containerEl.value)); + anchorTopList.push({ + top: distance - props.offset - props.bound, + href + }); + } + anchorTopList.sort((prev, next) => prev.top - next.top); + for (let i = 0; i < anchorTopList.length; i++) { + const item = anchorTopList[i]; + const next = anchorTopList[i + 1]; + if (i === 0 && scrollTop === 0) return props.selectScrollTop ? item.href : ""; + if (item.top <= scrollTop && (!next || next.top > scrollTop)) return item.href; + } + }; + const getContainer = () => { + const el = getElement(props.container); + if (!el || isWindow(el)) containerEl.value = window; + else containerEl.value = el; + }; + useEventListener(containerEl, "scroll", handleScroll); + const updateMarkerStyle = () => { + (0, vue.nextTick)(() => { + if (!anchorRef.value || !markerRef.value || !currentAnchor.value) { + markerStyle.value = {}; + return; + } + const currentLinkEl = links[currentAnchor.value]; + if (!currentLinkEl) { + markerStyle.value = {}; + return; + } + const anchorRect = anchorRef.value.getBoundingClientRect(); + const markerRect = markerRef.value.getBoundingClientRect(); + const linkRect = currentLinkEl.getBoundingClientRect(); + if (props.direction === "horizontal") markerStyle.value = { + left: `${linkRect.left - anchorRect.left}px`, + width: `${linkRect.width}px`, + opacity: 1 + }; + else markerStyle.value = { + top: `${linkRect.top - anchorRect.top + (linkRect.height - markerRect.height) / 2}px`, + opacity: 1 + }; + }); + }; + (0, vue.watch)(currentAnchor, updateMarkerStyle); + (0, vue.watch)(() => slots.default?.(), updateMarkerStyle); + (0, vue.onMounted)(() => { + getContainer(); + const hash = decodeURIComponent(window.location.hash); + if (getElement(hash)) scrollTo(hash); + else handleScroll(); + }); + (0, vue.watch)(() => props.container, () => { + getContainer(); + }); + (0, vue.provide)(anchorKey, { + ns, + direction: props.direction, + currentAnchor, + addLink, + removeLink, + handleClick + }); + __expose({ scrollTo }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "anchorRef", + ref: anchorRef, + class: (0, vue.normalizeClass)(cls.value) + }, [__props.marker ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + ref_key: "markerRef", + ref: markerRef, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("marker")), + style: (0, vue.normalizeStyle)(markerStyle.value) + }, null, 6)) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("list")) }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/anchor/src/anchor.vue + var anchor_default = anchor_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/anchor/src/anchor-link.ts +/** + * @deprecated Removed after 3.0.0, Use `AnchorLinkProps` instead. + */ + const anchorLinkProps = buildProps({ + title: String, + href: String + }); + +//#endregion +//#region ../../packages/components/anchor/src/anchor-link.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$5 = ["href"]; + var anchor_link_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElAnchorLink", + __name: "anchor-link", + props: anchorLinkProps, + setup(__props) { + const props = __props; + const linkRef = (0, vue.ref)(null); + const { ns, direction, currentAnchor, addLink, removeLink, handleClick: contextHandleClick } = (0, vue.inject)(anchorKey); + const cls = (0, vue.computed)(() => [ns.e("link"), ns.is("active", currentAnchor.value === props.href)]); + const handleClick = (e) => { + contextHandleClick(e, props.href); + }; + (0, vue.watch)(() => props.href, (val, oldVal) => { + (0, vue.nextTick)(() => { + if (oldVal) removeLink(oldVal); + if (val) addLink({ + href: val, + el: linkRef.value + }); + }); + }); + (0, vue.onMounted)(() => { + const { href } = props; + if (href) addLink({ + href, + el: linkRef.value + }); + }); + (0, vue.onBeforeUnmount)(() => { + const { href } = props; + if (href) removeLink(href); + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("item")) }, [(0, vue.createElementVNode)("a", { + ref_key: "linkRef", + ref: linkRef, + class: (0, vue.normalizeClass)(cls.value), + href: __props.href, + onClick: handleClick + }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.title), 1)])], 10, _hoisted_1$5), _ctx.$slots["sub-link"] && (0, vue.unref)(direction) === "vertical" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("list")) + }, [(0, vue.renderSlot)(_ctx.$slots, "sub-link")], 2)) : (0, vue.createCommentVNode)("v-if", true)], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/anchor/src/anchor-link.vue + var anchor_link_default = anchor_link_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/anchor/index.ts + const ElAnchor = withInstall(anchor_default, { AnchorLink: anchor_link_default }); + const ElAnchorLink = withNoopInstall(anchor_link_default); + +//#endregion +//#region ../../packages/components/segmented/src/segmented.ts + const defaultProps = { + label: "label", + value: "value", + disabled: "disabled" + }; + /** + * @deprecated Removed after 3.0.0, Use `SegmentedProps` instead. + */ + const segmentedProps = buildProps({ + direction: { + type: definePropType(String), + default: "horizontal" + }, + options: { + type: definePropType(Array), + default: () => [] + }, + modelValue: { + type: [ + String, + Number, + Boolean + ], + default: void 0 + }, + props: { + type: definePropType(Object), + default: () => defaultProps + }, + block: Boolean, + size: useSizeProp, + disabled: { + type: Boolean, + default: void 0 + }, + validateEvent: { + type: Boolean, + default: true + }, + id: String, + name: String, + ...useAriaProps(["ariaLabel"]) + }); + const segmentedEmits = { + [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val), + [CHANGE_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val) + }; + +//#endregion +//#region ../../packages/components/segmented/src/segmented.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$4 = [ + "id", + "aria-label", + "aria-labelledby" + ]; + const _hoisted_2$3 = [ + "name", + "disabled", + "checked", + "onChange" + ]; + var segmented_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElSegmented", + __name: "segmented", + props: segmentedProps, + emits: segmentedEmits, + setup(__props, { emit: __emit }) { + const props = __props; + const emit = __emit; + const ns = useNamespace("segmented"); + const segmentedId = useId(); + const segmentedSize = useFormSize(); + const _disabled = useFormDisabled(); + const { formItem } = useFormItem(); + const { inputId, isLabeledByFormItem } = useFormItemInputId(props, { formItemContext: formItem }); + const segmentedRef = (0, vue.ref)(null); + const activeElement = useActiveElement(); + const state = (0, vue.reactive)({ + isInit: false, + width: 0, + height: 0, + translateX: 0, + translateY: 0, + focusVisible: false + }); + const handleChange = (evt, item) => { + const value = getValue(item); + emit(UPDATE_MODEL_EVENT, value); + emit(CHANGE_EVENT, value); + evt.target.checked = value === props.modelValue; + }; + const aliasProps = (0, vue.computed)(() => ({ + ...defaultProps, + ...props.props + })); + const getValue = (item) => { + return isObject$1(item) ? item[aliasProps.value.value] : item; + }; + const getLabel = (item) => { + return isObject$1(item) ? item[aliasProps.value.label] : item; + }; + const getDisabled = (item) => { + return !!(_disabled.value || (isObject$1(item) ? item[aliasProps.value.disabled] : false)); + }; + const getSelected = (item) => { + return props.modelValue === getValue(item); + }; + const getOption = (value) => { + return props.options.find((item) => getValue(item) === value); + }; + const getItemCls = (item) => { + return [ + ns.e("item"), + ns.is("selected", getSelected(item)), + ns.is("disabled", getDisabled(item)) + ]; + }; + const updateSelect = () => { + if (!segmentedRef.value) return; + const selectedItem = segmentedRef.value.querySelector(".is-selected"); + const selectedItemInput = segmentedRef.value.querySelector(".is-selected input"); + if (!selectedItem || !selectedItemInput) { + state.width = 0; + state.height = 0; + state.translateX = 0; + state.translateY = 0; + state.focusVisible = false; + return; + } + state.isInit = true; + if (props.direction === "vertical") { + state.height = selectedItem.offsetHeight; + state.translateY = selectedItem.offsetTop; + } else { + state.width = selectedItem.offsetWidth; + state.translateX = selectedItem.offsetLeft; + } + try { + state.focusVisible = selectedItemInput.matches(":focus-visible"); + } catch {} + }; + const segmentedCls = (0, vue.computed)(() => [ + ns.b(), + ns.m(segmentedSize.value), + ns.is("block", props.block) + ]); + const selectedStyle = (0, vue.computed)(() => ({ + width: props.direction === "vertical" ? "100%" : `${state.width}px`, + height: props.direction === "vertical" ? `${state.height}px` : "100%", + transform: props.direction === "vertical" ? `translateY(${state.translateY}px)` : `translateX(${state.translateX}px)`, + display: state.isInit ? "block" : "none" + })); + const selectedCls = (0, vue.computed)(() => [ + ns.e("item-selected"), + ns.is("disabled", getDisabled(getOption(props.modelValue))), + ns.is("focus-visible", state.focusVisible) + ]); + const name = (0, vue.computed)(() => { + return props.name || segmentedId.value; + }); + useResizeObserver(segmentedRef, updateSelect); + (0, vue.watch)(activeElement, updateSelect); + (0, vue.watch)(() => props.modelValue, () => { + updateSelect(); + if (props.validateEvent) formItem?.validate?.("change").catch((err) => /* @__PURE__ */ debugWarn(err)); + }, { flush: "post" }); + return (_ctx, _cache) => { + return __props.options.length ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + id: (0, vue.unref)(inputId), + ref_key: "segmentedRef", + ref: segmentedRef, + class: (0, vue.normalizeClass)(segmentedCls.value), + role: "radiogroup", + "aria-label": !(0, vue.unref)(isLabeledByFormItem) ? __props.ariaLabel || "segmented" : void 0, + "aria-labelledby": (0, vue.unref)(isLabeledByFormItem) ? (0, vue.unref)(formItem).labelId : void 0 + }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("group"), (0, vue.unref)(ns).m(__props.direction)]) }, [(0, vue.createElementVNode)("div", { + style: (0, vue.normalizeStyle)(selectedStyle.value), + class: (0, vue.normalizeClass)(selectedCls.value) + }, null, 6), ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.options, (item, index) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("label", { + key: index, + class: (0, vue.normalizeClass)(getItemCls(item)) + }, [(0, vue.createElementVNode)("input", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("item-input")), + type: "radio", + name: name.value, + disabled: getDisabled(item), + checked: getSelected(item), + onChange: ($event) => handleChange($event, item) + }, null, 42, _hoisted_2$3), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("item-label")) }, [(0, vue.renderSlot)(_ctx.$slots, "default", { item }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(getLabel(item)), 1)])], 2)], 2); + }), 128))], 2)], 10, _hoisted_1$4)) : (0, vue.createCommentVNode)("v-if", true); + }; + } + }); + +//#endregion +//#region ../../packages/components/segmented/src/segmented.vue + var segmented_default = segmented_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/segmented/index.ts + const ElSegmented = withInstall(segmented_default); + +//#endregion +//#region ../../packages/components/mention/src/helper.ts + const filterOption = (pattern, option) => { + const lowerCase = pattern.toLowerCase(); + return (option.label || option.value || "").toLowerCase().includes(lowerCase); + }; + const getMentionCtx = (inputEl, prefix, split) => { + const { selectionEnd } = inputEl; + if (selectionEnd === null) return; + const inputValue = inputEl.value; + const prefixArray = castArray$1(prefix); + let splitIndex = -1; + let mentionCtx; + for (let i = selectionEnd - 1; i >= 0; --i) { + const char = inputValue[i]; + if (splitIndex === -1 && (char === split || char === "\n" || char === "\r")) { + splitIndex = i; + continue; + } + if (prefixArray.includes(char)) { + const end = splitIndex === -1 ? selectionEnd : splitIndex; + mentionCtx = { + pattern: inputValue.slice(i + 1, end), + start: i + 1, + end, + prefix: char, + prefixIndex: i, + splitIndex, + selectionEnd + }; + break; + } + } + return mentionCtx; + }; + /** + * fork from textarea-caret-position + * https://github.com/component/textarea-caret-position + * The MIT License (MIT) + * Copyright (c) 2015 Jonathan Ong me@jongleberry.com + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + const getCursorPosition = (element, options = { + debug: false, + useSelectionEnd: false + }) => { + const selectionStart = element.selectionStart !== null ? element.selectionStart : 0; + const selectionEnd = element.selectionEnd !== null ? element.selectionEnd : 0; + const position = options.useSelectionEnd ? selectionEnd : selectionStart; + const properties = [ + "direction", + "boxSizing", + "width", + "height", + "overflowX", + "overflowY", + "borderTopWidth", + "borderRightWidth", + "borderBottomWidth", + "borderLeftWidth", + "borderStyle", + "paddingTop", + "paddingRight", + "paddingBottom", + "paddingLeft", + "fontStyle", + "fontVariant", + "fontWeight", + "fontStretch", + "fontSize", + "fontSizeAdjust", + "lineHeight", + "fontFamily", + "textAlign", + "textTransform", + "textIndent", + "textDecoration", + "letterSpacing", + "wordSpacing", + "tabSize", + "MozTabSize" + ]; + if (options.debug) { + const el = document.querySelector("#input-textarea-caret-position-mirror-div"); + if (el?.parentNode) el.parentNode.removeChild(el); + } + const div = document.createElement("div"); + div.id = "input-textarea-caret-position-mirror-div"; + document.body.appendChild(div); + const style = div.style; + const computed = window.getComputedStyle(element); + const isInput = element.nodeName === "INPUT"; + style.whiteSpace = isInput ? "nowrap" : "pre-wrap"; + if (!isInput) style.wordWrap = "break-word"; + style.position = "absolute"; + if (!options.debug) style.visibility = "hidden"; + properties.forEach((prop) => { + if (isInput && prop === "lineHeight") if (computed.boxSizing === "border-box") { + const height = Number.parseInt(computed.height); + const outerHeight = Number.parseInt(computed.paddingTop) + Number.parseInt(computed.paddingBottom) + Number.parseInt(computed.borderTopWidth) + Number.parseInt(computed.borderBottomWidth); + const targetHeight = outerHeight + Number.parseInt(computed.lineHeight); + if (height > targetHeight) style.lineHeight = `${height - outerHeight}px`; + else if (height === targetHeight) style.lineHeight = computed.lineHeight; + else style.lineHeight = "0"; + } else style.lineHeight = computed.height; + else style[prop] = computed[prop]; + }); + if (isFirefox()) { + if (element.scrollHeight > Number.parseInt(computed.height)) style.overflowY = "scroll"; + } else style.overflow = "hidden"; + div.textContent = element.value.slice(0, Math.max(0, position)); + if (isInput && div.textContent) div.textContent = div.textContent.replace(/\s/g, "\xA0"); + const span = document.createElement("span"); + span.textContent = element.value.slice(Math.max(0, position)) || "."; + span.style.position = "relative"; + span.style.left = `${-element.scrollLeft}px`; + span.style.top = `${-element.scrollTop}px`; + div.appendChild(span); + const relativePosition = { + top: span.offsetTop + Number.parseInt(computed.borderTopWidth), + left: span.offsetLeft + Number.parseInt(computed.borderLeftWidth), + height: Number.parseInt(computed.fontSize) * 1.5 + }; + if (options.debug) span.style.backgroundColor = "#aaa"; + else document.body.removeChild(div); + if (relativePosition.left >= element.clientWidth) relativePosition.left = element.clientWidth; + return relativePosition; + }; + +//#endregion +//#region ../../packages/components/mention/src/mention.ts +/** + * @deprecated Removed after 3.0.0, Use `MentionProps` instead. + */ + const mentionProps = buildProps({ + ...inputProps, + options: { + type: definePropType(Array), + default: () => [] + }, + prefix: { + type: definePropType([String, Array]), + default: "@", + validator: (val) => { + if (isString(val)) return val.length === 1; + return val.every((v) => isString(v) && v.length === 1); + } + }, + split: { + type: String, + default: " ", + validator: (val) => val.length === 1 + }, + filterOption: { + type: definePropType([Boolean, Function]), + default: () => filterOption, + validator: (val) => { + if (val === false) return true; + return isFunction$1(val); + } + }, + placement: { + type: definePropType(String), + default: "bottom" + }, + showArrow: Boolean, + offset: { + type: Number, + default: 0 + }, + whole: Boolean, + checkIsWhole: { type: definePropType(Function) }, + modelValue: String, + loading: Boolean, + popperClass: useTooltipContentProps.popperClass, + popperStyle: useTooltipContentProps.popperStyle, + popperOptions: { + type: definePropType(Object), + default: () => ({}) + }, + props: { + type: definePropType(Object), + default: () => mentionDefaultProps + } + }); + const mentionEmits = { + [UPDATE_MODEL_EVENT]: (value) => isString(value), + "whole-remove": (pattern, prefix) => isString(pattern) && isString(prefix), + input: (value) => isString(value), + search: (pattern, prefix) => isString(pattern) && isString(prefix), + select: (option, prefix) => isObject$1(option) && isString(prefix), + focus: (evt) => evt instanceof FocusEvent, + blur: (evt) => evt instanceof FocusEvent + }; + const mentionDefaultProps = { + value: "value", + label: "label", + disabled: "disabled" + }; + +//#endregion +//#region ../../packages/components/mention/src/mention-dropdown.ts +/** + * @deprecated Removed after 3.0.0, Use `MentionDropdownProps` instead. + */ + const mentionDropdownProps = buildProps({ + options: { + type: definePropType(Array), + default: () => [] + }, + loading: Boolean, + disabled: Boolean, + contentId: String, + ariaLabel: String + }); + const mentionDropdownEmits = { select: (option) => isString(option.value) }; + +//#endregion +//#region ../../packages/components/mention/src/mention-dropdown.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$3 = [ + "id", + "aria-disabled", + "aria-selected", + "onMousemove", + "onClick" + ]; + var mention_dropdown_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElMentionDropdown", + __name: "mention-dropdown", + props: mentionDropdownProps, + emits: mentionDropdownEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const ns = useNamespace("mention"); + const { t } = useLocale(); + const hoveringIndex = (0, vue.ref)(-1); + const scrollbarRef = (0, vue.ref)(); + const optionRefs = (0, vue.ref)(); + const dropdownRef = (0, vue.ref)(); + const optionkls = (item, index) => [ + ns.be("dropdown", "item"), + ns.is("hovering", hoveringIndex.value === index), + ns.is("disabled", item.disabled || props.disabled) + ]; + const handleSelect = (item) => { + if (item.disabled || props.disabled) return; + emit("select", item); + }; + const handleMouseEnter = (index) => { + hoveringIndex.value = index; + }; + const filteredAllDisabled = (0, vue.computed)(() => props.disabled || props.options.every((item) => item.disabled)); + const hoverOption = (0, vue.computed)(() => props.options[hoveringIndex.value]); + const selectHoverOption = () => { + if (!hoverOption.value || hoverOption.value.disabled || props.disabled) return; + emit("select", hoverOption.value); + }; + const navigateOptions = (direction) => { + const { options } = props; + if (options.length === 0 || filteredAllDisabled.value) return; + if (direction === "next") { + hoveringIndex.value++; + if (hoveringIndex.value === options.length) hoveringIndex.value = 0; + } else if (direction === "prev") { + hoveringIndex.value--; + if (hoveringIndex.value < 0) hoveringIndex.value = options.length - 1; + } + const option = options[hoveringIndex.value]; + if (option.disabled) { + navigateOptions(direction); + return; + } + (0, vue.nextTick)(() => scrollToOption(option)); + }; + const scrollToOption = (option) => { + const { options } = props; + const index = options.findIndex((item) => item.value === option.value); + const target = optionRefs.value?.[index]; + if (target) { + const menu = dropdownRef.value?.querySelector?.(`.${ns.be("dropdown", "wrap")}`); + if (menu) scrollIntoView(menu, target); + } + scrollbarRef.value?.handleScroll(); + }; + const resetHoveringIndex = () => { + if (filteredAllDisabled.value || props.options.length === 0) hoveringIndex.value = -1; + else hoveringIndex.value = props.options.findIndex((item) => !item.disabled); + }; + (0, vue.watch)(() => props.options, resetHoveringIndex, { immediate: true }); + __expose({ + hoveringIndex, + navigateOptions, + selectHoverOption, + hoverOption + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "dropdownRef", + ref: dropdownRef, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b("dropdown")) + }, [ + _ctx.$slots.header ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("dropdown", "header")) + }, [(0, vue.renderSlot)(_ctx.$slots, "header")], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.withDirectives)((0, vue.createVNode)((0, vue.unref)(ElScrollbar), { + id: __props.contentId, + ref_key: "scrollbarRef", + ref: scrollbarRef, + tag: "ul", + "wrap-class": (0, vue.unref)(ns).be("dropdown", "wrap"), + "view-class": (0, vue.unref)(ns).be("dropdown", "list"), + role: "listbox", + "aria-label": __props.ariaLabel, + "aria-orientation": "vertical" + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.options, (item, index) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", { + id: `${__props.contentId}-${index}`, + ref_for: true, + ref_key: "optionRefs", + ref: optionRefs, + key: index, + class: (0, vue.normalizeClass)(optionkls(item, index)), + role: "option", + "aria-disabled": item.disabled || __props.disabled || void 0, + "aria-selected": hoveringIndex.value === index, + onMousemove: ($event) => handleMouseEnter(index), + onClick: (0, vue.withModifiers)(($event) => handleSelect(item), ["stop"]) + }, [(0, vue.renderSlot)(_ctx.$slots, "label", { + item, + index + }, () => [(0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(item.label ?? item.value), 1)])], 42, _hoisted_1$3); + }), 128))]), + _: 3 + }, 8, [ + "id", + "wrap-class", + "view-class", + "aria-label" + ]), [[vue.vShow, __props.options.length > 0 && !__props.loading]]), + __props.loading ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("dropdown", "loading")) + }, [(0, vue.renderSlot)(_ctx.$slots, "loading", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.mention.loading")), 1)])], 2)) : (0, vue.createCommentVNode)("v-if", true), + _ctx.$slots.footer ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 2, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).be("dropdown", "footer")) + }, [(0, vue.renderSlot)(_ctx.$slots, "footer")], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/mention/src/mention-dropdown.vue + var mention_dropdown_default = mention_dropdown_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/mention/src/mention.vue?vue&type=script&setup=true&lang.ts + var mention_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElMention", + inheritAttrs: false, + __name: "mention", + props: mentionProps, + emits: mentionEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const props = __props; + const emit = __emit; + const passInputProps = (0, vue.computed)(() => { + const inputProps = ElInput.props ?? []; + return pick(props, isArray$1(inputProps) ? inputProps : Object.keys(inputProps)); + }); + const ns = useNamespace("mention"); + const disabled = useFormDisabled(); + const contentId = useId(); + const elInputRef = (0, vue.ref)(); + const tooltipRef = (0, vue.ref)(); + const dropdownRef = (0, vue.ref)(); + const visible = (0, vue.ref)(false); + const cursorStyle = (0, vue.ref)(); + const mentionCtx = (0, vue.ref)(); + const computedPlacement = (0, vue.computed)(() => props.showArrow ? props.placement : `${props.placement}-start`); + const computedFallbackPlacements = (0, vue.computed)(() => props.showArrow ? ["bottom", "top"] : ["bottom-start", "top-start"]); + const aliasProps = (0, vue.computed)(() => ({ + ...mentionDefaultProps, + ...props.props + })); + const mapOption = (option) => { + const base = { + label: option[aliasProps.value.label], + value: option[aliasProps.value.value], + disabled: option[aliasProps.value.disabled] + }; + return { + ...option, + ...base + }; + }; + const options = (0, vue.computed)(() => props.options.map(mapOption)); + const filteredOptions = (0, vue.computed)(() => { + const { filterOption } = props; + if (!mentionCtx.value || !filterOption) return options.value; + return options.value.filter((option) => filterOption(mentionCtx.value.pattern, option)); + }); + const dropdownVisible = (0, vue.computed)(() => { + return visible.value && (!!filteredOptions.value.length || props.loading); + }); + const hoveringId = (0, vue.computed)(() => { + return `${contentId.value}-${dropdownRef.value?.hoveringIndex}`; + }); + const handleInputChange = (value) => { + emit(UPDATE_MODEL_EVENT, value); + emit(INPUT_EVENT, value); + syncAfterCursorMove(); + }; + const handleInputKeyDown = (event) => { + if (elInputRef.value?.isComposing) return; + const code = getEventCode(event); + switch (code) { + case EVENT_CODE.left: + case EVENT_CODE.right: + syncAfterCursorMove(); + break; + case EVENT_CODE.up: + case EVENT_CODE.down: + if (!visible.value) return; + event.preventDefault(); + dropdownRef.value?.navigateOptions(code === EVENT_CODE.up ? "prev" : "next"); + break; + case EVENT_CODE.enter: + case EVENT_CODE.numpadEnter: + if (!visible.value) { + props.type !== "textarea" && syncAfterCursorMove(); + return; + } + event.preventDefault(); + if (dropdownRef.value?.hoverOption) dropdownRef.value?.selectHoverOption(); + else visible.value = false; + break; + case EVENT_CODE.esc: + if (!visible.value) return; + event.preventDefault(); + visible.value = false; + break; + case EVENT_CODE.backspace: if (props.whole && mentionCtx.value) { + const { splitIndex, selectionEnd, pattern, prefixIndex, prefix } = mentionCtx.value; + const inputEl = getInputEl(); + if (!inputEl) return; + const inputValue = inputEl.value; + const matchOption = options.value.find((item) => item.value === pattern); + if ((isFunction$1(props.checkIsWhole) ? props.checkIsWhole(pattern, prefix) : matchOption) && splitIndex !== -1 && splitIndex + 1 === selectionEnd) { + event.preventDefault(); + const newValue = inputValue.slice(0, prefixIndex) + inputValue.slice(splitIndex + 1); + emit(UPDATE_MODEL_EVENT, newValue); + emit(INPUT_EVENT, newValue); + emit("whole-remove", pattern, prefix); + const newSelectionEnd = prefixIndex; + (0, vue.nextTick)(() => { + inputEl.selectionStart = newSelectionEnd; + inputEl.selectionEnd = newSelectionEnd; + syncDropdownVisible(); + }); + } + } + } + }; + const { wrapperRef } = useFocusController(elInputRef, { + disabled, + afterFocus() { + syncAfterCursorMove(); + }, + beforeBlur(event) { + return tooltipRef.value?.isFocusInsideContent(event); + }, + afterBlur() { + visible.value = false; + } + }); + const handleInputMouseDown = () => { + syncAfterCursorMove(); + }; + const getOriginalOption = (mentionOption) => { + return props.options.find((option) => { + return mentionOption.value === option[aliasProps.value.value]; + }); + }; + const handleSelect = (item) => { + if (!mentionCtx.value) return; + const inputEl = getInputEl(); + if (!inputEl) return; + const inputValue = inputEl.value; + const { split } = props; + const newEndPart = inputValue.slice(mentionCtx.value.end); + const alreadySeparated = newEndPart.startsWith(split); + const newMiddlePart = `${item.value}${alreadySeparated ? "" : split}`; + const newValue = inputValue.slice(0, mentionCtx.value.start) + newMiddlePart + newEndPart; + emit(UPDATE_MODEL_EVENT, newValue); + emit(INPUT_EVENT, newValue); + emit("select", getOriginalOption(item), mentionCtx.value.prefix); + const newSelectionEnd = mentionCtx.value.start + newMiddlePart.length + (alreadySeparated ? 1 : 0); + (0, vue.nextTick)(() => { + inputEl.selectionStart = newSelectionEnd; + inputEl.selectionEnd = newSelectionEnd; + inputEl.focus(); + syncDropdownVisible(); + }); + }; + const getInputEl = () => props.type === "textarea" ? elInputRef.value?.textarea : elInputRef.value?.input; + const syncAfterCursorMove = () => { + setTimeout(() => { + syncCursor(); + syncDropdownVisible(); + (0, vue.nextTick)(() => tooltipRef.value?.updatePopper()); + }, 0); + }; + const syncCursor = () => { + const inputEl = getInputEl(); + if (!inputEl) return; + const caretPosition = getCursorPosition(inputEl); + const inputRect = inputEl.getBoundingClientRect(); + const wrapperRect = wrapperRef.value.getBoundingClientRect(); + cursorStyle.value = { + position: "absolute", + width: 0, + height: `${caretPosition.height}px`, + left: `${caretPosition.left + inputRect.left - wrapperRect.left}px`, + top: `${caretPosition.top + inputRect.top - wrapperRect.top}px` + }; + }; + const syncDropdownVisible = () => { + const inputEl = getInputEl(); + if (document.activeElement !== inputEl) { + visible.value = false; + return; + } + const { prefix, split } = props; + mentionCtx.value = getMentionCtx(inputEl, prefix, split); + if (mentionCtx.value && mentionCtx.value.splitIndex === -1) { + visible.value = true; + emit("search", mentionCtx.value.pattern, mentionCtx.value.prefix); + return; + } + visible.value = false; + }; + __expose({ + input: elInputRef, + tooltip: tooltipRef, + dropdownVisible + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "wrapperRef", + ref: wrapperRef, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()) + }, [(0, vue.createVNode)((0, vue.unref)(ElInput), (0, vue.mergeProps)((0, vue.mergeProps)(passInputProps.value, _ctx.$attrs), { + ref_key: "elInputRef", + ref: elInputRef, + "model-value": __props.modelValue, + disabled: (0, vue.unref)(disabled), + role: dropdownVisible.value ? "combobox" : void 0, + "aria-activedescendant": dropdownVisible.value ? hoveringId.value || "" : void 0, + "aria-controls": dropdownVisible.value ? (0, vue.unref)(contentId) : void 0, + "aria-expanded": dropdownVisible.value || void 0, + "aria-label": __props.ariaLabel, + "aria-autocomplete": dropdownVisible.value ? "none" : void 0, + "aria-haspopup": dropdownVisible.value ? "listbox" : void 0, + onInput: handleInputChange, + onKeydown: handleInputKeyDown, + onMousedown: handleInputMouseDown + }), (0, vue.createSlots)({ _: 2 }, [(0, vue.renderList)(_ctx.$slots, (_, name) => { + return { + name, + fn: (0, vue.withCtx)((slotProps) => [(0, vue.renderSlot)(_ctx.$slots, name, (0, vue.normalizeProps)((0, vue.guardReactiveProps)(slotProps)))]) + }; + })]), 1040, [ + "model-value", + "disabled", + "role", + "aria-activedescendant", + "aria-controls", + "aria-expanded", + "aria-label", + "aria-autocomplete", + "aria-haspopup" + ]), (0, vue.createVNode)((0, vue.unref)(ElTooltip), { + ref_key: "tooltipRef", + ref: tooltipRef, + visible: dropdownVisible.value, + "popper-class": [(0, vue.unref)(ns).e("popper"), __props.popperClass], + "popper-style": __props.popperStyle, + "popper-options": __props.popperOptions, + placement: computedPlacement.value, + "fallback-placements": computedFallbackPlacements.value, + effect: "light", + pure: "", + offset: __props.offset, + "show-arrow": __props.showArrow + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { style: (0, vue.normalizeStyle)(cursorStyle.value) }, null, 4)]), + content: (0, vue.withCtx)(() => [(0, vue.createVNode)(mention_dropdown_default, { + ref_key: "dropdownRef", + ref: dropdownRef, + options: filteredOptions.value, + disabled: (0, vue.unref)(disabled), + loading: __props.loading, + "content-id": (0, vue.unref)(contentId), + "aria-label": __props.ariaLabel, + onSelect: handleSelect, + onClick: _cache[0] || (_cache[0] = (0, vue.withModifiers)(($event) => elInputRef.value?.focus(), ["stop"])) + }, (0, vue.createSlots)({ _: 2 }, [(0, vue.renderList)(_ctx.$slots, (_, name) => { + return { + name, + fn: (0, vue.withCtx)((slotProps) => [(0, vue.renderSlot)(_ctx.$slots, name, (0, vue.normalizeProps)((0, vue.guardReactiveProps)(slotProps)))]) + }; + })]), 1032, [ + "options", + "disabled", + "loading", + "content-id", + "aria-label" + ])]), + _: 3 + }, 8, [ + "visible", + "popper-class", + "popper-style", + "popper-options", + "placement", + "fallback-placements", + "offset", + "show-arrow" + ])], 2); + }; + } + }); + +//#endregion +//#region ../../packages/components/mention/src/mention.vue + var mention_default = mention_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/mention/index.ts + const ElMention = withInstall(mention_default); + +//#endregion +//#region ../../packages/components/splitter/src/splitter.ts +/** + * @deprecated Removed after 3.0.0, Use `SplitterProps` instead. + */ + const splitterProps = buildProps({ + layout: { + type: String, + default: "horizontal", + values: ["horizontal", "vertical"] + }, + lazy: Boolean + }); + const splitterEmits = { + resizeStart: (index, sizes) => true, + resize: (index, sizes) => true, + resizeEnd: (index, sizes) => true, + collapse: (index, type, sizes) => true + }; + +//#endregion +//#region ../../packages/components/splitter/src/hooks/useContainer.ts + function useContainer(layout) { + const containerEl = (0, vue.ref)(); + const { width, height } = useElementSize(containerEl); + return { + containerEl, + containerSize: (0, vue.computed)(() => { + return layout.value === "horizontal" ? width.value : height.value; + }) + }; + } + +//#endregion +//#region ../../packages/components/splitter/src/hooks/useSize.ts + function getPct(str) { + return Number(str.slice(0, -1)) / 100; + } + function getPx(str) { + return Number(str.slice(0, -2)); + } + function isPct(itemSize) { + return isString(itemSize) && itemSize.endsWith("%"); + } + function isPx(itemSize) { + return isString(itemSize) && itemSize.endsWith("px"); + } + function useSize$1(panels, containerSize) { + const propSizes = (0, vue.computed)(() => panels.value.map((i) => i.size)); + const panelCounts = (0, vue.computed)(() => panels.value.length); + const percentSizes = (0, vue.ref)([]); + (0, vue.watch)([ + propSizes, + panelCounts, + containerSize + ], () => { + let ptgList = []; + let emptyCount = 0; + for (let i = 0; i < panelCounts.value; i += 1) { + const itemSize = panels.value[i]?.size; + if (isPct(itemSize)) ptgList[i] = getPct(itemSize); + else if (isPx(itemSize)) ptgList[i] = getPx(itemSize) / containerSize.value; + else if (itemSize || itemSize === 0) { + const num = Number(itemSize); + if (!Number.isNaN(num)) ptgList[i] = num / containerSize.value; + } else { + emptyCount += 1; + ptgList[i] = void 0; + } + } + const totalPtg = ptgList.reduce((acc, ptg) => acc + (ptg || 0), 0); + if (totalPtg > 1 || !emptyCount) { + const scale = 1 / totalPtg; + ptgList = ptgList.map((ptg) => ptg === void 0 ? 0 : ptg * scale); + } else { + const avgRest = (1 - totalPtg) / emptyCount; + ptgList = ptgList.map((ptg) => ptg === void 0 ? avgRest : ptg); + } + percentSizes.value = ptgList; + }); + const ptg2px = (ptg) => ptg * containerSize.value; + return { + percentSizes, + pxSizes: (0, vue.computed)(() => percentSizes.value.map(ptg2px)) + }; + } + +//#endregion +//#region ../../packages/components/splitter/src/hooks/useResize.ts + function useResize(panels, containerSize, pxSizes, lazy) { + const ptg2px = (ptg) => ptg * containerSize.value || 0; + function getLimitSize(str, defaultLimit) { + if (isPct(str)) return ptg2px(getPct(str)); + else if (isPx(str)) return getPx(str); + return str ?? defaultLimit; + } + const lazyOffset = (0, vue.ref)(0); + const movingIndex = (0, vue.ref)(null); + let cachePxSizes = []; + let updatePanelSizes = NOOP; + const limitSizes = (0, vue.computed)(() => panels.value.map((item) => [item.min, item.max])); + (0, vue.watch)(lazy, () => { + if (lazyOffset.value) { + const mouseup = new MouseEvent("mouseup", { bubbles: true }); + window.dispatchEvent(mouseup); + } + }); + const onMoveStart = (index) => { + lazyOffset.value = 0; + movingIndex.value = { + index, + confirmed: false + }; + cachePxSizes = pxSizes.value; + }; + const onMoving = (index, offset) => { + let confirmedIndex = null; + if ((!movingIndex.value || !movingIndex.value.confirmed) && offset !== 0) { + if (offset > 0) { + confirmedIndex = index; + movingIndex.value = { + index, + confirmed: true + }; + } else for (let i = index; i >= 0; i -= 1) if (cachePxSizes[i] > 0) { + confirmedIndex = i; + movingIndex.value = { + index: i, + confirmed: true + }; + break; + } + } + const mergedIndex = confirmedIndex ?? movingIndex.value?.index ?? index; + const numSizes = [...cachePxSizes]; + const nextIndex = mergedIndex + 1; + const startMinSize = getLimitSize(limitSizes.value[mergedIndex][0], 0); + const endMinSize = getLimitSize(limitSizes.value[nextIndex][0], 0); + const startMaxSize = getLimitSize(limitSizes.value[mergedIndex][1], containerSize.value || 0); + const endMaxSize = getLimitSize(limitSizes.value[nextIndex][1], containerSize.value || 0); + let mergedOffset = offset; + if (numSizes[mergedIndex] + mergedOffset < startMinSize) mergedOffset = startMinSize - numSizes[mergedIndex]; + if (numSizes[nextIndex] - mergedOffset < endMinSize) mergedOffset = numSizes[nextIndex] - endMinSize; + if (numSizes[mergedIndex] + mergedOffset > startMaxSize) mergedOffset = startMaxSize - numSizes[mergedIndex]; + if (numSizes[nextIndex] - mergedOffset > endMaxSize) mergedOffset = numSizes[nextIndex] - endMaxSize; + numSizes[mergedIndex] += mergedOffset; + numSizes[nextIndex] -= mergedOffset; + lazyOffset.value = mergedOffset; + updatePanelSizes = () => { + panels.value.forEach((panel, index) => { + panel.size = numSizes[index]; + }); + updatePanelSizes = NOOP; + }; + if (!lazy.value) updatePanelSizes(); + }; + const onMoveEnd = () => { + if (lazy.value) updatePanelSizes(); + lazyOffset.value = 0; + movingIndex.value = null; + cachePxSizes = []; + }; + const cacheCollapsedSize = []; + const onCollapse = (index, type) => { + if (!cacheCollapsedSize.length) cacheCollapsedSize.push(...pxSizes.value); + const currentSizes = pxSizes.value; + const currentIndex = type === "start" ? index : index + 1; + const targetIndex = type === "start" ? index + 1 : index; + const currentSize = currentSizes[currentIndex]; + const targetSize = currentSizes[targetIndex]; + if (currentSize !== 0 && targetSize !== 0) { + currentSizes[currentIndex] = 0; + currentSizes[targetIndex] += currentSize; + cacheCollapsedSize[index] = currentSize; + } else { + const totalSize = currentSize + targetSize; + const targetCacheCollapsedSize = cacheCollapsedSize[index]; + const currentCacheCollapsedSize = totalSize - targetCacheCollapsedSize; + currentSizes[targetIndex] = targetCacheCollapsedSize; + currentSizes[currentIndex] = currentCacheCollapsedSize; + } + panels.value.forEach((panel, index) => { + panel.size = currentSizes[index]; + }); + }; + return { + lazyOffset, + onMoveStart, + onMoving, + onMoveEnd, + movingIndex, + onCollapse + }; + } + +//#endregion +//#region ../../packages/components/splitter/src/type.ts + const splitterRootContextKey = Symbol("splitterRootContextKey"); + +//#endregion +//#region ../../packages/components/splitter/src/splitter.vue?vue&type=script&setup=true&lang.ts + var splitter_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElSplitter", + __name: "splitter", + props: splitterProps, + emits: splitterEmits, + setup(__props, { emit: __emit }) { + const ns = useNamespace("splitter"); + const emits = __emit; + const props = __props; + const layout = (0, vue.toRef)(props, "layout"); + const lazy = (0, vue.toRef)(props, "lazy"); + const { containerEl, containerSize } = useContainer(layout); + const { removeChild: unregisterPanel, children: panels, addChild: registerPanel, ChildrenSorter: PanelsSorter } = useOrderedChildren((0, vue.getCurrentInstance)(), "ElSplitterPanel"); + (0, vue.watch)(panels, () => { + movingIndex.value = null; + panels.value.forEach((instance, index) => { + instance.setIndex(index); + }); + }); + const { percentSizes, pxSizes } = useSize$1(panels, containerSize); + const { lazyOffset, movingIndex, onMoveStart, onMoving, onMoveEnd, onCollapse } = useResize(panels, containerSize, pxSizes, lazy); + const splitterStyles = (0, vue.computed)(() => { + return { [ns.cssVarBlockName("bar-offset")]: lazy.value ? `${lazyOffset.value}px` : void 0 }; + }); + const onResizeStart = (index) => { + onMoveStart(index); + emits("resizeStart", index, pxSizes.value); + }; + const onResize = (index, offset) => { + onMoving(index, offset); + if (!lazy.value) emits("resize", index, pxSizes.value); + }; + const onResizeEnd = async (index) => { + onMoveEnd(); + await (0, vue.nextTick)(); + emits("resizeEnd", index, pxSizes.value); + }; + const onCollapsible = (index, type) => { + onCollapse(index, type); + emits("collapse", index, type, pxSizes.value); + }; + (0, vue.provide)(splitterRootContextKey, (0, vue.reactive)({ + panels, + percentSizes, + pxSizes, + layout, + lazy, + movingIndex, + containerSize, + onMoveStart: onResizeStart, + onMoving: onResize, + onMoveEnd: onResizeEnd, + onCollapse: onCollapsible, + registerPanel, + unregisterPanel + })); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + ref_key: "containerEl", + ref: containerEl, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).b(), (0, vue.unref)(ns).e(layout.value)]), + style: (0, vue.normalizeStyle)(splitterStyles.value) + }, [ + (0, vue.renderSlot)(_ctx.$slots, "default"), + (0, vue.createVNode)((0, vue.unref)(PanelsSorter)), + (0, vue.createCommentVNode)(" Prevent iframe touch events from breaking "), + (0, vue.unref)(movingIndex) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("mask"), (0, vue.unref)(ns).e(`mask-${layout.value}`)]) + }, null, 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 6); + }; + } + }); + +//#endregion +//#region ../../packages/components/splitter/src/splitter.vue + var splitter_default = splitter_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/splitter/src/split-panel.ts +/** + * @deprecated Removed after 3.0.0, Use `SplitterPanelProps` instead. + */ + const splitterPanelProps = buildProps({ + min: { type: [String, Number] }, + max: { type: [String, Number] }, + size: { type: [String, Number] }, + resizable: { + type: Boolean, + default: true + }, + collapsible: Boolean + }); + const splitterPanelEmits = { "update:size": (value) => typeof value === "number" || typeof value === "string" }; + +//#endregion +//#region ../../packages/components/splitter/src/hooks/usePanel.ts + function getCollapsible(collapsible) { + if (collapsible && isObject$1(collapsible)) return collapsible; + return { + start: !!collapsible, + end: !!collapsible + }; + } + function isCollapsible(panel, size, nextPanel, nextSize) { + if (panel?.collapsible.end && size > 0) return true; + if (nextPanel?.collapsible.start && nextSize === 0 && size > 0) return true; + return false; + } + +//#endregion +//#region ../../packages/components/splitter/src/split-bar.vue?vue&type=script&setup=true&lang.ts + var split_bar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElSplitterBar", + __name: "split-bar", + props: { + index: { + type: Number, + required: true + }, + layout: { + type: String, + values: ["horizontal", "vertical"], + default: "horizontal" + }, + resizable: { + type: Boolean, + default: true + }, + lazy: Boolean, + startCollapsible: Boolean, + endCollapsible: Boolean + }, + emits: [ + "moveStart", + "moving", + "moveEnd", + "collapse" + ], + setup(__props, { emit: __emit }) { + const ns = useNamespace("splitter-bar"); + const props = __props; + const emit = __emit; + const isHorizontal = (0, vue.computed)(() => props.layout === "horizontal"); + const barWrapStyles = (0, vue.computed)(() => { + if (isHorizontal.value) return { width: 0 }; + return { height: 0 }; + }); + const draggerStyles = (0, vue.computed)(() => { + return { + width: isHorizontal.value ? "16px" : "100%", + height: isHorizontal.value ? "100%" : "16px", + cursor: !props.resizable ? "auto" : isHorizontal.value ? "ew-resize" : "ns-resize", + touchAction: "none" + }; + }); + const draggerPseudoClass = (0, vue.computed)(() => { + const prefix = ns.e("dragger"); + return { + [`${prefix}-horizontal`]: isHorizontal.value, + [`${prefix}-vertical`]: !isHorizontal.value, + [`${prefix}-active`]: !!startPos.value + }; + }); + const startPos = (0, vue.ref)(null); + const onMousedown = (e) => { + if (!props.resizable) return; + startPos.value = [e.pageX, e.pageY]; + emit("moveStart", props.index); + window.addEventListener("mouseup", onMouseUp); + window.addEventListener("mousemove", onMouseMove); + }; + const onTouchStart = (e) => { + if (props.resizable && e.touches.length === 1) { + e.preventDefault(); + const touch = e.touches[0]; + startPos.value = [touch.pageX, touch.pageY]; + emit("moveStart", props.index); + window.addEventListener("touchend", onTouchEnd); + window.addEventListener("touchmove", onTouchMove); + } + }; + const onMouseMove = (e) => { + const { pageX, pageY } = e; + const offsetX = pageX - startPos.value[0]; + const offsetY = pageY - startPos.value[1]; + const offset = isHorizontal.value ? offsetX : offsetY; + emit("moving", props.index, offset); + }; + const onTouchMove = (e) => { + if (e.touches.length === 1) { + e.preventDefault(); + const touch = e.touches[0]; + const offsetX = touch.pageX - startPos.value[0]; + const offsetY = touch.pageY - startPos.value[1]; + const offset = isHorizontal.value ? offsetX : offsetY; + emit("moving", props.index, offset); + } + }; + const onMouseUp = () => { + startPos.value = null; + window.removeEventListener("mouseup", onMouseUp); + window.removeEventListener("mousemove", onMouseMove); + emit("moveEnd", props.index); + }; + const onTouchEnd = () => { + startPos.value = null; + window.removeEventListener("touchend", onTouchEnd); + window.removeEventListener("touchmove", onTouchMove); + emit("moveEnd", props.index); + }; + const StartIcon = (0, vue.computed)(() => isHorizontal.value ? arrow_left_default : arrow_up_default); + const EndIcon = (0, vue.computed)(() => isHorizontal.value ? arrow_right_default : arrow_down_default); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).b()]), + style: (0, vue.normalizeStyle)(barWrapStyles.value) + }, [ + __props.startCollapsible ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("collapse-icon"), (0, vue.unref)(ns).e(`${__props.layout}-collapse-icon-start`)]), + onClick: _cache[0] || (_cache[0] = ($event) => emit("collapse", __props.index, "start")) + }, [(0, vue.renderSlot)(_ctx.$slots, "start-collapsible", {}, () => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(StartIcon.value), { style: { + "width": "12px", + "height": "12px" + } }))])], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).e("dragger"), + draggerPseudoClass.value, + (0, vue.unref)(ns).is("disabled", !__props.resizable), + (0, vue.unref)(ns).is("lazy", __props.resizable && __props.lazy) + ]), + style: (0, vue.normalizeStyle)(draggerStyles.value), + onMousedown, + onTouchstart: onTouchStart + }, null, 38), + __props.endCollapsible ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("collapse-icon"), (0, vue.unref)(ns).e(`${__props.layout}-collapse-icon-end`)]), + onClick: _cache[1] || (_cache[1] = ($event) => emit("collapse", __props.index, "end")) + }, [(0, vue.renderSlot)(_ctx.$slots, "end-collapsible", {}, () => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(EndIcon.value), { style: { + "width": "12px", + "height": "12px" + } }))])], 2)) : (0, vue.createCommentVNode)("v-if", true) + ], 6); + }; + } + }); + +//#endregion +//#region ../../packages/components/splitter/src/split-bar.vue + var split_bar_default = split_bar_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/splitter/src/split-panel.vue?vue&type=script&setup=true&lang.ts + const COMPONENT_NAME = "ElSplitterPanel"; + var split_panel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: COMPONENT_NAME, + __name: "split-panel", + props: splitterPanelProps, + emits: splitterPanelEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const ns = useNamespace("splitter-panel"); + const props = __props; + const emits = __emit; + const splitterContext = (0, vue.inject)(splitterRootContextKey); + if (!splitterContext) throwError(COMPONENT_NAME, "usage: "); + const { panels, layout, lazy, containerSize, pxSizes } = (0, vue.toRefs)(splitterContext); + const { registerPanel, unregisterPanel, onCollapse, onMoveEnd, onMoveStart, onMoving } = splitterContext; + const panelEl = (0, vue.ref)(); + const instance = (0, vue.getCurrentInstance)(); + const uid = instance.uid; + const index = (0, vue.ref)(0); + const panel = (0, vue.computed)(() => panels.value[index.value]); + const setIndex = (val) => { + index.value = val; + }; + const panelSize = (0, vue.computed)(() => { + if (!panel.value) return 0; + return pxSizes.value[index.value] ?? 0; + }); + const nextSize = (0, vue.computed)(() => { + if (!panel.value) return 0; + return pxSizes.value[index.value + 1] ?? 0; + }); + const nextPanel = (0, vue.computed)(() => { + if (panel.value) return panels.value[index.value + 1]; + return null; + }); + const isResizable = (0, vue.computed)(() => { + if (!nextPanel.value) return false; + return props.resizable && nextPanel.value?.resizable && (panelSize.value !== 0 || !props.min) && (nextSize.value !== 0 || !nextPanel.value.min); + }); + const isShowBar = (0, vue.computed)(() => { + if (!panel.value) return false; + return index.value !== panels.value.length - 1; + }); + const startCollapsible = (0, vue.computed)(() => isCollapsible(panel.value, panelSize.value, nextPanel.value, nextSize.value)); + const endCollapsible = (0, vue.computed)(() => isCollapsible(nextPanel.value, nextSize.value, panel.value, panelSize.value)); + function sizeToPx(str) { + if (isPct(str)) return getPct(str) * containerSize.value || 0; + else if (isPx(str)) return getPx(str); + return str ?? 0; + } + let isSizeUpdating = false; + (0, vue.watch)(() => props.size, () => { + if (!isSizeUpdating && panel.value) { + if (!containerSize.value) { + panel.value.size = props.size; + return; + } + const size = sizeToPx(props.size); + const maxSize = sizeToPx(props.max); + const minSize = sizeToPx(props.min); + const finalSize = Math.min(Math.max(size, minSize || 0), maxSize || size); + if (finalSize !== size) emits("update:size", finalSize); + panel.value.size = finalSize; + } + }); + (0, vue.watch)(() => panel.value?.size, (val) => { + if (val !== props.size) { + isSizeUpdating = true; + emits("update:size", val); + (0, vue.nextTick)(() => isSizeUpdating = false); + } + }); + (0, vue.watch)(() => props.resizable, (val) => { + if (panel.value) panel.value.resizable = val; + }); + const _panel = (0, vue.reactive)({ + uid, + getVnode: () => instance.vnode, + setIndex, + ...props, + collapsible: (0, vue.computed)(() => getCollapsible(props.collapsible)) + }); + registerPanel(_panel); + (0, vue.onBeforeUnmount)(() => unregisterPanel(_panel)); + __expose({ splitterPanelRef: panelEl }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, null, [(0, vue.createElementVNode)("div", (0, vue.mergeProps)({ + ref_key: "panelEl", + ref: panelEl, + class: [(0, vue.unref)(ns).b()], + style: { flexBasis: `${panelSize.value}px` } + }, _ctx.$attrs), [(0, vue.renderSlot)(_ctx.$slots, "default")], 16), isShowBar.value ? ((0, vue.openBlock)(), (0, vue.createBlock)(split_bar_default, { + key: 0, + index: index.value, + layout: (0, vue.unref)(layout), + lazy: (0, vue.unref)(lazy), + resizable: isResizable.value, + "start-collapsible": startCollapsible.value, + "end-collapsible": endCollapsible.value, + onMoveStart: (0, vue.unref)(onMoveStart), + onMoving: (0, vue.unref)(onMoving), + onMoveEnd: (0, vue.unref)(onMoveEnd), + onCollapse: (0, vue.unref)(onCollapse) + }, { + "start-collapsible": (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "start-collapsible")]), + "end-collapsible": (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "end-collapsible")]), + _: 3 + }, 8, [ + "index", + "layout", + "lazy", + "resizable", + "start-collapsible", + "end-collapsible", + "onMoveStart", + "onMoving", + "onMoveEnd", + "onCollapse" + ])) : (0, vue.createCommentVNode)("v-if", true)], 64); + }; + } + }); + +//#endregion +//#region ../../packages/components/splitter/src/split-panel.vue + var split_panel_default = split_panel_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/splitter/index.ts + const ElSplitter = withInstall(splitter_default, { SplitPanel: split_panel_default }); + const ElSplitterPanel = withNoopInstall(split_panel_default); + +//#endregion +//#region ../../packages/element-plus/component.ts + var component_default = [ + ElAffix, + ElAlert, + ElAutocomplete, + ElAutoResizer, + ElAvatar, + ElAvatarGroup, + ElBacktop, + ElBadge, + ElBreadcrumb, + ElBreadcrumbItem, + ElButton, + ElButtonGroup, + ElCalendar, + ElCard, + ElCarousel, + ElCarouselItem, + ElCascader, + ElCascaderPanel, + ElCheckTag, + ElCheckbox, + ElCheckboxButton, + ElCheckboxGroup, + ElCol, + ElCollapse, + ElCollapseItem, + ElCollapseTransition, + ElColorPickerPanel, + ElColorPicker, + ElConfigProvider, + ElContainer, + ElAside, + ElFooter, + ElHeader, + ElMain, + ElDatePicker, + ElDatePickerPanel, + ElDescriptions, + ElDescriptionsItem, + ElDialog, + ElDivider, + ElDrawer, + ElDropdown, + ElDropdownItem, + ElDropdownMenu, + ElEmpty, + ElForm, + ElFormItem, + ElIcon, + ElImage, + ElImageViewer, + ElInput, + ElInputNumber, + ElInputTag, + ElLink, + ElMenu, + ElMenuItem, + ElMenuItemGroup, + ElSubMenu, + ElPageHeader, + ElPagination, + ElPopconfirm, + ElPopover, + ElPopper, + ElProgress, + ElRadio, + ElRadioButton, + ElRadioGroup, + ElRate, + ElResult, + ElRow, + ElScrollbar, + ElSelect, + ElOption, + ElOptionGroup, + ElSelectV2, + ElSkeleton, + ElSkeletonItem, + ElSlider, + ElSpace, + ElStatistic, + ElCountdown, + ElSteps, + ElStep, + ElSwitch, + ElTable, + ElTableColumn, + ElTableV2, + ElTabs, + ElTabPane, + ElTag, + ElText, + ElTimePicker, + ElTimeSelect, + ElTimeline, + ElTimelineItem, + ElTooltip, + ElTransfer, + ElTree, + ElTreeSelect, + ElTreeV2, + ElUpload, + ElWatermark, + ElTour, + ElTourStep, + ElAnchor, + ElAnchorLink, + ElSegmented, + ElMention, + ElSplitter, + ElSplitterPanel + ]; + +//#endregion +//#region ../../packages/components/infinite-scroll/src/index.ts + const SCOPE$1 = "ElInfiniteScroll"; + const CHECK_INTERVAL = 50; + const DEFAULT_DELAY = 200; + const DEFAULT_DISTANCE = 0; + const attributes = { + delay: { + type: Number, + default: DEFAULT_DELAY + }, + distance: { + type: Number, + default: DEFAULT_DISTANCE + }, + disabled: { + type: Boolean, + default: false + }, + immediate: { + type: Boolean, + default: true + } + }; + const getScrollOptions = (el, instance) => { + return Object.entries(attributes).reduce((acm, [name, option]) => { + const { type, default: defaultValue } = option; + const attrVal = el.getAttribute(`infinite-scroll-${name}`); + let value = instance[attrVal] ?? attrVal ?? defaultValue; + value = value === "false" ? false : value; + value = type(value); + acm[name] = Number.isNaN(value) ? defaultValue : value; + return acm; + }, {}); + }; + const destroyObserver = (el) => { + const { observer } = el[SCOPE$1]; + if (observer) { + observer.disconnect(); + delete el[SCOPE$1].observer; + } + }; + const handleScroll = (el, cb) => { + const { container, containerEl, instance, observer, lastScrollTop } = el[SCOPE$1]; + const { disabled, distance } = getScrollOptions(el, instance); + const { clientHeight, scrollHeight, scrollTop } = containerEl; + const delta = scrollTop - lastScrollTop; + el[SCOPE$1].lastScrollTop = scrollTop; + if (observer || disabled || delta < 0) return; + let shouldTrigger = false; + if (container === el) shouldTrigger = scrollHeight - (clientHeight + scrollTop) <= distance; + else { + const { clientTop, scrollHeight: height } = el; + const offsetTop = getOffsetTopDistance(el, containerEl); + shouldTrigger = scrollTop + clientHeight >= offsetTop + clientTop + height - distance; + } + if (shouldTrigger) cb.call(instance); + }; + function checkFull(el, cb) { + const { containerEl, instance } = el[SCOPE$1]; + const { disabled } = getScrollOptions(el, instance); + if (disabled || containerEl.clientHeight === 0) return; + if (containerEl.scrollHeight <= containerEl.clientHeight) cb.call(instance); + else destroyObserver(el); + } + const InfiniteScroll = { + async mounted(el, binding) { + const { instance, value: cb } = binding; + useDeprecated({ + scope: SCOPE$1, + from: "the directive v-infinite-scroll", + replacement: "the el-scrollbar infinite scroll", + version: "3.0.0", + ref: "https://element-plus.org/en-US/component/scrollbar#infinite-scroll" + }, true); + if (!isFunction$1(cb)) throwError(SCOPE$1, "'v-infinite-scroll' binding value must be a function"); + await (0, vue.nextTick)(); + const { delay, immediate } = getScrollOptions(el, instance); + const container = getScrollContainer(el, true); + const containerEl = container === window ? document.documentElement : container; + const onScroll = throttle(handleScroll.bind(null, el, cb), delay); + if (!container) return; + el[SCOPE$1] = { + instance, + container, + containerEl, + delay, + cb, + onScroll, + lastScrollTop: containerEl.scrollTop + }; + if (immediate) { + const observer = new MutationObserver(throttle(checkFull.bind(null, el, cb), CHECK_INTERVAL)); + el[SCOPE$1].observer = observer; + observer.observe(el, { + childList: true, + subtree: true + }); + checkFull(el, cb); + } + container.addEventListener("scroll", onScroll); + }, + unmounted(el) { + if (!el[SCOPE$1]) return; + const { container, onScroll } = el[SCOPE$1]; + container?.removeEventListener("scroll", onScroll); + destroyObserver(el); + }, + async updated(el) { + if (!el[SCOPE$1]) await (0, vue.nextTick)(); + else { + const { containerEl, cb, observer } = el[SCOPE$1]; + if (containerEl.clientHeight && observer) checkFull(el, cb); + } + } + }; + +//#endregion +//#region ../../packages/components/infinite-scroll/index.ts + const _InfiniteScroll = InfiniteScroll; + _InfiniteScroll.install = (app) => { + app.directive("InfiniteScroll", _InfiniteScroll); + }; + const ElInfiniteScroll = _InfiniteScroll; + +//#endregion +//#region ../../packages/components/loading/src/loading.ts + function createLoadingComponent(options, appContext) { + let afterLeaveTimer; + const afterLeaveFlag = (0, vue.ref)(false); + const data = (0, vue.reactive)({ + ...options, + originalPosition: "", + originalOverflow: "", + visible: false + }); + function setText(text) { + data.text = text; + } + function destroySelf() { + const target = data.parent; + const ns = vm.ns; + if (!target.vLoadingAddClassList) { + let loadingNumber = target.getAttribute("loading-number"); + loadingNumber = Number.parseInt(loadingNumber) - 1; + if (!loadingNumber) { + removeClass(target, ns.bm("parent", "relative")); + target.removeAttribute("loading-number"); + } else target.setAttribute("loading-number", loadingNumber.toString()); + removeClass(target, ns.bm("parent", "hidden")); + } + removeElLoadingChild(); + loadingInstance.unmount(); + } + function removeElLoadingChild() { + vm.$el?.parentNode?.removeChild(vm.$el); + } + function close() { + if (options.beforeClose && !options.beforeClose()) return; + afterLeaveFlag.value = true; + clearTimeout(afterLeaveTimer); + afterLeaveTimer = setTimeout(handleAfterLeave, 400); + data.visible = false; + options.closed?.(); + } + function handleAfterLeave() { + if (!afterLeaveFlag.value) return; + const target = data.parent; + afterLeaveFlag.value = false; + target.vLoadingAddClassList = void 0; + destroySelf(); + } + const loadingInstance = (0, vue.createApp)((0, vue.defineComponent)({ + name: "ElLoading", + setup(_, { expose }) { + const { ns, zIndex } = useGlobalComponentSettings("loading"); + expose({ + ns, + zIndex + }); + return () => { + const svg = data.spinner || data.svg; + const spinner = (0, vue.h)("svg", { + class: "circular", + viewBox: data.svgViewBox ? data.svgViewBox : "0 0 50 50", + ...svg ? { innerHTML: svg } : {} + }, [(0, vue.h)("circle", { + class: "path", + cx: "25", + cy: "25", + r: "20", + fill: "none" + })]); + const spinnerText = data.text ? (0, vue.h)("p", { class: ns.b("text") }, [data.text]) : void 0; + return (0, vue.h)(vue.Transition, { + name: ns.b("fade"), + onAfterLeave: handleAfterLeave + }, { default: (0, vue.withCtx)(() => [(0, vue.withDirectives)((0, vue.createVNode)("div", { + style: { backgroundColor: data.background || "" }, + class: [ + ns.b("mask"), + data.customClass, + ns.is("fullscreen", data.fullscreen) + ] + }, [(0, vue.h)("div", { class: ns.b("spinner") }, [spinner, spinnerText])]), [[vue.vShow, data.visible]])]) }); + }; + } + })); + Object.assign(loadingInstance._context, appContext ?? {}); + const vm = loadingInstance.mount(document.createElement("div")); + return { + ...(0, vue.toRefs)(data), + setText, + removeElLoadingChild, + close, + handleAfterLeave, + vm, + get $el() { + return vm.$el; + } + }; + } + +//#endregion +//#region ../../packages/components/loading/src/service.ts + let fullscreenInstance = void 0; + const Loading = function(options = {}, context) { + if (!isClient) return void 0; + const resolved = resolveOptions(options); + if (resolved.fullscreen && fullscreenInstance) return fullscreenInstance; + const instance = createLoadingComponent({ + ...resolved, + closed: () => { + resolved.closed?.(); + if (resolved.fullscreen) fullscreenInstance = void 0; + } + }, context ?? Loading._context); + addStyle(resolved, resolved.parent, instance); + addClassList(resolved, resolved.parent, instance); + resolved.parent.vLoadingAddClassList = () => addClassList(resolved, resolved.parent, instance); + /** + * add loading-number to parent. + * because if a fullscreen loading is triggered when somewhere + * a v-loading.body was triggered before and it's parent is + * document.body which with a margin , the fullscreen loading's + * destroySelf function will remove 'el-loading-parent--relative', + * and then the position of v-loading.body will be error. + */ + let loadingNumber = resolved.parent.getAttribute("loading-number"); + if (!loadingNumber) loadingNumber = "1"; + else loadingNumber = `${Number.parseInt(loadingNumber) + 1}`; + resolved.parent.setAttribute("loading-number", loadingNumber); + resolved.parent.appendChild(instance.$el); + (0, vue.nextTick)(() => instance.visible.value = resolved.visible); + if (resolved.fullscreen) fullscreenInstance = instance; + return instance; + }; + const resolveOptions = (options) => { + let target; + if (isString(options.target)) target = document.querySelector(options.target) ?? document.body; + else target = options.target || document.body; + return { + parent: target === document.body || options.body ? document.body : target, + background: options.background || "", + svg: options.svg || "", + svgViewBox: options.svgViewBox || "", + spinner: options.spinner || false, + text: options.text || "", + fullscreen: target === document.body && (options.fullscreen ?? true), + lock: options.lock ?? false, + customClass: options.customClass || "", + visible: options.visible ?? true, + beforeClose: options.beforeClose, + closed: options.closed, + target + }; + }; + const addStyle = async (options, parent, instance) => { + const { nextZIndex } = instance.vm.zIndex || instance.vm._.exposed.zIndex; + const maskStyle = {}; + if (options.fullscreen) { + instance.originalPosition.value = getStyle(document.body, "position"); + instance.originalOverflow.value = getStyle(document.body, "overflow"); + maskStyle.zIndex = nextZIndex(); + } else if (options.parent === document.body) { + instance.originalPosition.value = getStyle(document.body, "position"); + /** + * await dom render when visible is true in init, + * because some component's height maybe 0. + * e.g. el-table. + */ + await (0, vue.nextTick)(); + for (const property of ["top", "left"]) { + const scroll = property === "top" ? "scrollTop" : "scrollLeft"; + maskStyle[property] = `${options.target.getBoundingClientRect()[property] + document.body[scroll] + document.documentElement[scroll] - Number.parseInt(getStyle(document.body, `margin-${property}`), 10)}px`; + } + for (const property of ["height", "width"]) maskStyle[property] = `${options.target.getBoundingClientRect()[property]}px`; + } else instance.originalPosition.value = getStyle(parent, "position"); + for (const [key, value] of Object.entries(maskStyle)) instance.$el.style[key] = value; + }; + const addClassList = (options, parent, instance) => { + const ns = instance.vm.ns || instance.vm._.exposed.ns; + if (![ + "absolute", + "fixed", + "sticky" + ].includes(instance.originalPosition.value)) addClass(parent, ns.bm("parent", "relative")); + else removeClass(parent, ns.bm("parent", "relative")); + if (options.fullscreen && options.lock) addClass(parent, ns.bm("parent", "hidden")); + else removeClass(parent, ns.bm("parent", "hidden")); + }; + Loading._context = null; + +//#endregion +//#region ../../packages/components/loading/src/directive.ts + const INSTANCE_KEY = Symbol("ElLoading"); + const getAttributeName = (name) => { + return `element-loading-${hyphenate(name)}`; + }; + const createInstance = (el, binding) => { + const vm = binding.instance; + const getBindingProp = (key) => isObject$1(binding.value) ? binding.value[key] : void 0; + const resolveExpression = (key) => { + return (0, vue.ref)(isString(key) && vm?.[key] || key); + }; + const getProp = (name) => resolveExpression(getBindingProp(name) || el.getAttribute(getAttributeName(name))); + const fullscreen = getBindingProp("fullscreen") ?? binding.modifiers.fullscreen; + const options = { + text: getProp("text"), + svg: getProp("svg"), + svgViewBox: getProp("svgViewBox"), + spinner: getProp("spinner"), + background: getProp("background"), + customClass: getProp("customClass"), + fullscreen, + target: getBindingProp("target") ?? (fullscreen ? void 0 : el), + body: getBindingProp("body") ?? binding.modifiers.body, + lock: getBindingProp("lock") ?? binding.modifiers.lock + }; + const instance = Loading(options); + instance._context = vLoading._context; + el[INSTANCE_KEY] = { + options, + instance + }; + }; + const updateOptions = (originalOptions, newOptions) => { + for (const key of Object.keys(originalOptions)) if ((0, vue.isRef)(originalOptions[key])) originalOptions[key].value = newOptions[key]; + }; + const vLoading = { + mounted(el, binding) { + if (binding.value) createInstance(el, binding); + }, + updated(el, binding) { + const instance = el[INSTANCE_KEY]; + if (!binding.value) { + instance?.instance.close(); + el[INSTANCE_KEY] = null; + return; + } + if (!instance) createInstance(el, binding); + else updateOptions(instance.options, isObject$1(binding.value) ? binding.value : { + text: el.getAttribute(getAttributeName("text")), + svg: el.getAttribute(getAttributeName("svg")), + svgViewBox: el.getAttribute(getAttributeName("svgViewBox")), + spinner: el.getAttribute(getAttributeName("spinner")), + background: el.getAttribute(getAttributeName("background")), + customClass: el.getAttribute(getAttributeName("customClass")) + }); + }, + unmounted(el) { + el[INSTANCE_KEY]?.instance.close(); + el[INSTANCE_KEY] = null; + } + }; + vLoading._context = null; + +//#endregion +//#region ../../packages/components/loading/index.ts + const ElLoading = { + install(app) { + Loading._context = app._context; + vLoading._context = app._context; + app.directive("loading", vLoading); + app.config.globalProperties.$loading = Loading; + }, + directive: vLoading, + service: Loading + }; + +//#endregion +//#region ../../packages/components/message/src/message.ts + const messageTypes = [ + "primary", + "success", + "info", + "warning", + "error" + ]; + const messagePlacement = [ + "top", + "top-left", + "top-right", + "bottom", + "bottom-left", + "bottom-right" + ]; + const MESSAGE_DEFAULT_PLACEMENT = "top"; + const messageDefaults = mutable({ + customClass: "", + dangerouslyUseHTMLString: false, + duration: 3e3, + icon: void 0, + id: "", + message: "", + onClose: void 0, + showClose: false, + type: "info", + plain: false, + offset: 16, + placement: void 0, + zIndex: 0, + grouping: false, + repeatNum: 1, + appendTo: isClient ? document.body : void 0 + }); + /** + * @deprecated Removed after 3.0.0, Use `MessageProps` instead. + */ + const messageProps = buildProps({ + customClass: { + type: String, + default: messageDefaults.customClass + }, + dangerouslyUseHTMLString: { + type: Boolean, + default: messageDefaults.dangerouslyUseHTMLString + }, + duration: { + type: Number, + default: messageDefaults.duration + }, + icon: { + type: iconPropType, + default: messageDefaults.icon + }, + id: { + type: String, + default: messageDefaults.id + }, + message: { + type: definePropType([ + String, + Object, + Function + ]), + default: messageDefaults.message + }, + onClose: { + type: definePropType(Function), + default: messageDefaults.onClose + }, + showClose: { + type: Boolean, + default: messageDefaults.showClose + }, + type: { + type: String, + values: messageTypes, + default: messageDefaults.type + }, + plain: { + type: Boolean, + default: messageDefaults.plain + }, + offset: { + type: Number, + default: messageDefaults.offset + }, + placement: { + type: String, + values: messagePlacement, + default: messageDefaults.placement + }, + zIndex: { + type: Number, + default: messageDefaults.zIndex + }, + grouping: { + type: Boolean, + default: messageDefaults.grouping + }, + repeatNum: { + type: Number, + default: messageDefaults.repeatNum + } + }); + const messageEmits = { destroy: () => true }; + +//#endregion +//#region ../../packages/components/message/src/instance.ts + const placementInstances = (0, vue.shallowReactive)({}); + const getOrCreatePlacementInstances = (placement) => { + if (!placementInstances[placement]) placementInstances[placement] = (0, vue.shallowReactive)([]); + return placementInstances[placement]; + }; + const getInstance = (id, placement) => { + const instances = placementInstances[placement] || []; + const idx = instances.findIndex((instance) => instance.id === id); + const current = instances[idx]; + let prev; + if (idx > 0) prev = instances[idx - 1]; + return { + current, + prev + }; + }; + const getLastOffset = (id, placement) => { + const { prev } = getInstance(id, placement); + if (!prev) return 0; + return prev.vm.exposed.bottom.value; + }; + const getOffsetOrSpace = (id, offset, placement) => { + return (placementInstances[placement] || []).findIndex((instance) => instance.id === id) > 0 ? 16 : offset; + }; + +//#endregion +//#region ../../packages/components/message/src/message.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1$2 = ["id"]; + const _hoisted_2$2 = ["innerHTML"]; + var message_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElMessage", + __name: "message", + props: messageProps, + emits: messageEmits, + setup(__props, { expose: __expose, emit: __emit }) { + const { Close } = TypeComponents; + const props = __props; + const emit = __emit; + const isStartTransition = (0, vue.ref)(false); + const { ns, zIndex } = useGlobalComponentSettings("message"); + const { currentZIndex, nextZIndex } = zIndex; + const messageRef = (0, vue.ref)(); + const visible = (0, vue.ref)(false); + const height = (0, vue.ref)(0); + let stopTimer = void 0; + const badgeType = (0, vue.computed)(() => props.type ? props.type === "error" ? "danger" : props.type : "info"); + const typeClass = (0, vue.computed)(() => { + const type = props.type; + return { [ns.bm("icon", type)]: type && TypeComponentsMap[type] }; + }); + const iconComponent = (0, vue.computed)(() => props.icon || TypeComponentsMap[props.type] || ""); + const placement = (0, vue.computed)(() => props.placement || MESSAGE_DEFAULT_PLACEMENT); + const lastOffset = (0, vue.computed)(() => getLastOffset(props.id, placement.value)); + const offset = (0, vue.computed)(() => { + return Math.max(getOffsetOrSpace(props.id, props.offset, placement.value) + lastOffset.value, props.offset); + }); + const bottom = (0, vue.computed)(() => height.value + offset.value); + const horizontalClass = (0, vue.computed)(() => { + if (placement.value.includes("left")) return ns.is("left"); + if (placement.value.includes("right")) return ns.is("right"); + return ns.is("center"); + }); + const verticalProperty = (0, vue.computed)(() => placement.value.startsWith("top") ? "top" : "bottom"); + const customStyle = (0, vue.computed)(() => ({ + [verticalProperty.value]: `${offset.value}px`, + zIndex: currentZIndex.value + })); + function startTimer() { + if (props.duration === 0) return; + ({stop: stopTimer} = useTimeoutFn(() => { + close(); + }, props.duration)); + } + function clearTimer() { + stopTimer?.(); + } + function close() { + visible.value = false; + (0, vue.nextTick)(() => { + if (!isStartTransition.value) { + props.onClose?.(); + emit("destroy"); + } + }); + } + function keydown(event) { + if (getEventCode(event) === EVENT_CODE.esc) close(); + } + (0, vue.onMounted)(() => { + startTimer(); + nextZIndex(); + visible.value = true; + }); + (0, vue.watch)(() => props.repeatNum, () => { + clearTimer(); + startTimer(); + }); + useEventListener(document, "keydown", keydown); + useResizeObserver(messageRef, () => { + height.value = messageRef.value.getBoundingClientRect().height; + }); + __expose({ + visible, + bottom, + close + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(vue.Transition, { + name: (0, vue.unref)(ns).b("fade"), + onBeforeEnter: _cache[0] || (_cache[0] = ($event) => isStartTransition.value = true), + onBeforeLeave: __props.onClose, + onAfterLeave: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("destroy")), + persisted: "" + }, { + default: (0, vue.withCtx)(() => [(0, vue.withDirectives)((0, vue.createElementVNode)("div", { + id: __props.id, + ref_key: "messageRef", + ref: messageRef, + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).b(), + { [(0, vue.unref)(ns).m(__props.type)]: __props.type }, + (0, vue.unref)(ns).is("closable", __props.showClose), + (0, vue.unref)(ns).is("plain", __props.plain), + (0, vue.unref)(ns).is("bottom", verticalProperty.value === "bottom"), + horizontalClass.value, + __props.customClass + ]), + style: (0, vue.normalizeStyle)(customStyle.value), + role: "alert", + onMouseenter: clearTimer, + onMouseleave: startTimer + }, [ + __props.repeatNum > 1 ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElBadge), { + key: 0, + value: __props.repeatNum, + type: badgeType.value, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("badge")) + }, null, 8, [ + "value", + "type", + "class" + ])) : (0, vue.createCommentVNode)("v-if", true), + iconComponent.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 1, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("icon"), typeClass.value]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(iconComponent.value)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [!__props.dangerouslyUseHTMLString ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("p", { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("content")) + }, (0, vue.toDisplayString)(__props.message), 3)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createCommentVNode)(" Caution here, message could've been compromised, never use user's input as message "), (0, vue.createElementVNode)("p", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("content")), + innerHTML: __props.message + }, null, 10, _hoisted_2$2)], 2112))]), + __props.showClose ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 2, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("closeBtn")), + onClick: (0, vue.withModifiers)(close, ["stop"]) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(Close))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true) + ], 46, _hoisted_1$2), [[vue.vShow, visible.value]])]), + _: 3 + }, 8, ["name", "onBeforeLeave"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/message/src/message.vue + var message_default = message_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/message/src/method.ts + let seed$1 = 1; + const normalizeAppendTo = (normalized) => { + if (!normalized.appendTo) normalized.appendTo = document.body; + else if (isString(normalized.appendTo)) { + let appendTo = document.querySelector(normalized.appendTo); + if (!isElement$1(appendTo)) { + /* @__PURE__ */ debugWarn("ElMessage", "the appendTo option is not an HTMLElement. Falling back to document.body."); + appendTo = document.body; + } + normalized.appendTo = appendTo; + } + }; + const normalizePlacement = (normalized) => { + if (!normalized.placement && isString(messageConfig.placement) && messageConfig.placement) normalized.placement = messageConfig.placement; + if (!normalized.placement) normalized.placement = MESSAGE_DEFAULT_PLACEMENT; + if (!messagePlacement.includes(normalized.placement)) { + /* @__PURE__ */ debugWarn("ElMessage", `Invalid placement: ${normalized.placement}. Falling back to '${MESSAGE_DEFAULT_PLACEMENT}'.`); + normalized.placement = MESSAGE_DEFAULT_PLACEMENT; + } + }; + const normalizeOptions = (params) => { + const options = !params || isString(params) || (0, vue.isVNode)(params) || isFunction$1(params) ? { message: params } : params; + const normalized = { + ...messageDefaults, + ...options + }; + normalizeAppendTo(normalized); + normalizePlacement(normalized); + if (isBoolean(messageConfig.grouping) && !normalized.grouping) normalized.grouping = messageConfig.grouping; + if (isNumber(messageConfig.duration) && normalized.duration === 3e3) normalized.duration = messageConfig.duration; + if (isNumber(messageConfig.offset) && normalized.offset === 16) normalized.offset = messageConfig.offset; + if (isBoolean(messageConfig.showClose) && !normalized.showClose) normalized.showClose = messageConfig.showClose; + if (isBoolean(messageConfig.plain) && !normalized.plain) normalized.plain = messageConfig.plain; + return normalized; + }; + const closeMessage = (instance) => { + const instances = placementInstances[instance.props.placement || MESSAGE_DEFAULT_PLACEMENT]; + const idx = instances.indexOf(instance); + if (idx === -1) return; + instances.splice(idx, 1); + const { handler } = instance; + handler.close(); + }; + const createMessage = ({ appendTo, ...options }, context) => { + const id = `message_${seed$1++}`; + const userOnClose = options.onClose; + const container = document.createElement("div"); + const props = { + ...options, + id, + onClose: () => { + userOnClose?.(); + closeMessage(instance); + }, + onDestroy: () => { + (0, vue.render)(null, container); + } + }; + const vnode = (0, vue.createVNode)(message_default, props, isFunction$1(props.message) || (0, vue.isVNode)(props.message) ? { default: isFunction$1(props.message) ? props.message : () => props.message } : null); + vnode.appContext = context || message._context; + (0, vue.render)(vnode, container); + appendTo.appendChild(container.firstElementChild); + const vm = vnode.component; + const instance = { + id, + vnode, + vm, + handler: { close: () => { + vm.exposed.close(); + } }, + props: vnode.component.props + }; + return instance; + }; + const message = (options = {}, context) => { + if (!isClient) return { close: () => void 0 }; + const normalized = normalizeOptions(options); + const instances = getOrCreatePlacementInstances(normalized.placement || MESSAGE_DEFAULT_PLACEMENT); + if (normalized.grouping && instances.length) { + const instance = instances.find(({ vnode: vm }) => vm.props?.message === normalized.message); + if (instance) { + instance.props.repeatNum += 1; + instance.props.type = normalized.type; + return instance.handler; + } + } + if (isNumber(messageConfig.max) && instances.length >= messageConfig.max) return { close: () => void 0 }; + const instance = createMessage(normalized, context); + instances.push(instance); + return instance.handler; + }; + messageTypes.forEach((type) => { + message[type] = (options = {}, appContext) => { + return message({ + ...normalizeOptions(options), + type + }, appContext); + }; + }); + function closeAll$1(type) { + for (const placement in placementInstances) if (hasOwn(placementInstances, placement)) { + const instances = [...placementInstances[placement]]; + for (const instance of instances) if (!type || type === instance.props.type) instance.handler.close(); + } + } + function closeAllByPlacement(placement) { + if (!placementInstances[placement]) return; + [...placementInstances[placement]].forEach((instance) => instance.handler.close()); + } + message.closeAll = closeAll$1; + message.closeAllByPlacement = closeAllByPlacement; + message._context = null; + +//#endregion +//#region ../../packages/components/message/index.ts + const ElMessage = withInstallFunction(message, "$message"); + +//#endregion +//#region ../../packages/components/message-box/src/index.vue?vue&type=script&lang.ts + var index_vue_vue_type_script_lang_default = (0, vue.defineComponent)({ + name: "ElMessageBox", + directives: { TrapFocus }, + components: { + ElButton, + ElFocusTrap: focus_trap_default, + ElInput, + ElOverlay, + ElIcon, + ...TypeComponents + }, + inheritAttrs: false, + props: { + buttonSize: { + type: String, + validator: isValidComponentSize + }, + modal: { + type: Boolean, + default: true + }, + lockScroll: { + type: Boolean, + default: true + }, + showClose: { + type: Boolean, + default: true + }, + closeOnClickModal: { + type: Boolean, + default: true + }, + closeOnPressEscape: { + type: Boolean, + default: true + }, + closeOnHashChange: { + type: Boolean, + default: true + }, + center: Boolean, + draggable: Boolean, + overflow: Boolean, + roundButton: Boolean, + container: { + type: String, + default: "body" + }, + boxType: { + type: String, + default: "" + } + }, + emits: ["vanish", "action"], + setup(props, { emit }) { + const { locale, zIndex, ns, size: btnSize } = useGlobalComponentSettings("message-box", (0, vue.computed)(() => props.buttonSize)); + const { t } = locale; + const { nextZIndex } = zIndex; + const visible = (0, vue.ref)(false); + const state = (0, vue.reactive)({ + autofocus: true, + beforeClose: null, + callback: null, + cancelButtonText: "", + cancelButtonClass: "", + confirmButtonText: "", + confirmButtonClass: "", + cancelButtonType: "", + confirmButtonType: "primary", + customClass: "", + customStyle: {}, + dangerouslyUseHTMLString: false, + distinguishCancelAndClose: false, + icon: "", + closeIcon: "", + inputPattern: null, + inputPlaceholder: "", + inputType: "text", + inputValue: "", + inputValidator: void 0, + inputErrorMessage: "", + message: "", + modalFade: true, + modalClass: "", + showCancelButton: false, + showConfirmButton: true, + type: "", + title: void 0, + showInput: false, + action: "", + confirmButtonLoading: false, + cancelButtonLoading: false, + confirmButtonLoadingIcon: (0, vue.markRaw)(loading_default), + cancelButtonLoadingIcon: (0, vue.markRaw)(loading_default), + confirmButtonDisabled: false, + editorErrorMessage: "", + validateError: false, + zIndex: nextZIndex() + }); + const typeClass = (0, vue.computed)(() => { + const type = state.type; + return { [ns.bm("icon", type)]: type && TypeComponentsMap[type] }; + }); + const contentId = useId(); + const inputId = useId(); + const iconComponent = (0, vue.computed)(() => { + const type = state.type; + return state.icon || type && TypeComponentsMap[type] || ""; + }); + const hasMessage = (0, vue.computed)(() => !!state.message); + const rootRef = (0, vue.ref)(); + const headerRef = (0, vue.ref)(); + const focusStartRef = (0, vue.ref)(); + const inputRef = (0, vue.ref)(); + const confirmRef = (0, vue.ref)(); + const confirmButtonClasses = (0, vue.computed)(() => state.confirmButtonClass); + (0, vue.watch)(() => state.inputValue, async (val) => { + await (0, vue.nextTick)(); + if (props.boxType === "prompt" && val) validate(); + }, { immediate: true }); + (0, vue.watch)(() => visible.value, (val) => { + if (val) { + if (props.boxType !== "prompt") if (state.autofocus) focusStartRef.value = confirmRef.value?.$el ?? rootRef.value; + else focusStartRef.value = rootRef.value; + state.zIndex = nextZIndex(); + } + if (props.boxType !== "prompt") return; + if (val) (0, vue.nextTick)().then(() => { + if (inputRef.value && inputRef.value.$el) if (state.autofocus) focusStartRef.value = getInputElement() ?? rootRef.value; + else focusStartRef.value = rootRef.value; + }); + else { + state.editorErrorMessage = ""; + state.validateError = false; + } + }); + const { isDragging } = useDraggable(rootRef, headerRef, (0, vue.computed)(() => props.draggable), (0, vue.computed)(() => props.overflow)); + (0, vue.onMounted)(async () => { + await (0, vue.nextTick)(); + if (props.closeOnHashChange) window.addEventListener("hashchange", doClose); + }); + (0, vue.onBeforeUnmount)(() => { + if (props.closeOnHashChange) window.removeEventListener("hashchange", doClose); + }); + function doClose() { + if (!visible.value) return; + visible.value = false; + (0, vue.nextTick)(() => { + if (state.action) emit("action", state.action); + }); + } + const handleWrapperClick = () => { + if (props.closeOnClickModal) handleAction(state.distinguishCancelAndClose ? "close" : "cancel"); + }; + const overlayEvent = useSameTarget(handleWrapperClick); + const handleInputEnter = (e) => { + if (state.inputType !== "textarea" && !inputRef.value?.isComposing) { + e.preventDefault(); + return handleAction("confirm"); + } + }; + const handleAction = (action) => { + if (props.boxType === "prompt" && action === "confirm" && !validate()) return; + state.action = action; + if (state.beforeClose) state.beforeClose?.(action, state, doClose); + else doClose(); + }; + const validate = () => { + if (props.boxType === "prompt") { + const inputPattern = state.inputPattern; + if (inputPattern && !inputPattern.test(state.inputValue || "")) { + state.editorErrorMessage = state.inputErrorMessage || t("el.messagebox.error"); + state.validateError = true; + return false; + } + const inputValidator = state.inputValidator; + if (isFunction$1(inputValidator)) { + const validateResult = inputValidator(state.inputValue); + if (validateResult === false) { + state.editorErrorMessage = state.inputErrorMessage || t("el.messagebox.error"); + state.validateError = true; + return false; + } + if (isString(validateResult)) { + state.editorErrorMessage = validateResult; + state.validateError = true; + return false; + } + } + } + state.editorErrorMessage = ""; + state.validateError = false; + return true; + }; + const getInputElement = () => { + const inputRefs = inputRef.value?.$refs; + return inputRefs?.input ?? inputRefs?.textarea; + }; + const handleClose = () => { + handleAction("close"); + }; + const onCloseRequested = () => { + if (props.closeOnPressEscape) handleClose(); + }; + if (props.lockScroll) useLockscreen(visible, { ns }); + return { + ...(0, vue.toRefs)(state), + ns, + overlayEvent, + visible, + hasMessage, + typeClass, + contentId, + inputId, + btnSize, + iconComponent, + confirmButtonClasses, + rootRef, + focusStartRef, + headerRef, + inputRef, + isDragging, + confirmRef, + doClose, + handleClose, + onCloseRequested, + handleWrapperClick, + handleInputEnter, + handleAction, + t + }; + } + }); + +//#endregion +//#region ../../packages/components/message-box/src/index.vue + const _hoisted_1$1 = ["aria-label", "aria-describedby"]; + const _hoisted_2$1 = ["aria-label"]; + const _hoisted_3$1 = ["id"]; + function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + const _component_el_icon = (0, vue.resolveComponent)("el-icon"); + const _component_el_input = (0, vue.resolveComponent)("el-input"); + const _component_el_button = (0, vue.resolveComponent)("el-button"); + const _component_el_focus_trap = (0, vue.resolveComponent)("el-focus-trap"); + const _component_el_overlay = (0, vue.resolveComponent)("el-overlay"); + return (0, vue.openBlock)(), (0, vue.createBlock)(vue.Transition, { + name: "fade-in-linear", + onAfterLeave: _cache[11] || (_cache[11] = ($event) => _ctx.$emit("vanish")), + persisted: "" + }, { + default: (0, vue.withCtx)(() => [(0, vue.withDirectives)((0, vue.createVNode)(_component_el_overlay, { + "z-index": _ctx.zIndex, + "overlay-class": [_ctx.ns.is("message-box"), _ctx.modalClass], + mask: _ctx.modal + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + role: "dialog", + "aria-label": _ctx.title, + "aria-modal": "true", + "aria-describedby": !_ctx.showInput ? _ctx.contentId : void 0, + class: (0, vue.normalizeClass)(`${_ctx.ns.namespace.value}-overlay-message-box`), + onClick: _cache[8] || (_cache[8] = (...args) => _ctx.overlayEvent.onClick && _ctx.overlayEvent.onClick(...args)), + onMousedown: _cache[9] || (_cache[9] = (...args) => _ctx.overlayEvent.onMousedown && _ctx.overlayEvent.onMousedown(...args)), + onMouseup: _cache[10] || (_cache[10] = (...args) => _ctx.overlayEvent.onMouseup && _ctx.overlayEvent.onMouseup(...args)) + }, [(0, vue.createVNode)(_component_el_focus_trap, { + loop: "", + trapped: _ctx.visible, + "focus-trap-el": _ctx.rootRef, + "focus-start-el": _ctx.focusStartRef, + onReleaseRequested: _ctx.onCloseRequested + }, { + default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { + ref: "rootRef", + class: (0, vue.normalizeClass)([ + _ctx.ns.b(), + _ctx.customClass, + _ctx.ns.is("draggable", _ctx.draggable), + _ctx.ns.is("dragging", _ctx.isDragging), + { [_ctx.ns.m("center")]: _ctx.center } + ]), + style: (0, vue.normalizeStyle)(_ctx.customStyle), + tabindex: "-1", + onClick: _cache[7] || (_cache[7] = (0, vue.withModifiers)(() => {}, ["stop"])) + }, [ + _ctx.title !== null && _ctx.title !== void 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 0, + ref: "headerRef", + class: (0, vue.normalizeClass)([_ctx.ns.e("header"), { "show-close": _ctx.showClose }]) + }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(_ctx.ns.e("title")) }, [_ctx.iconComponent && _ctx.center ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_icon, { + key: 0, + class: (0, vue.normalizeClass)([_ctx.ns.e("status"), _ctx.typeClass]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.iconComponent)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createElementVNode)("span", null, (0, vue.toDisplayString)(_ctx.title), 1)], 2), _ctx.showClose ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", { + key: 0, + type: "button", + class: (0, vue.normalizeClass)(_ctx.ns.e("headerbtn")), + "aria-label": _ctx.t("el.messagebox.close"), + onClick: _cache[0] || (_cache[0] = ($event) => _ctx.handleAction(_ctx.distinguishCancelAndClose ? "close" : "cancel")), + onKeydown: _cache[1] || (_cache[1] = (0, vue.withKeys)((0, vue.withModifiers)(($event) => _ctx.handleAction(_ctx.distinguishCancelAndClose ? "close" : "cancel"), ["prevent"]), ["enter"])) + }, [(0, vue.createVNode)(_component_el_icon, { class: (0, vue.normalizeClass)(_ctx.ns.e("close")) }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.closeIcon || "close")))]), + _: 1 + }, 8, ["class"])], 42, _hoisted_2$1)) : (0, vue.createCommentVNode)("v-if", true)], 2)) : (0, vue.createCommentVNode)("v-if", true), + (0, vue.createElementVNode)("div", { + id: _ctx.contentId, + class: (0, vue.normalizeClass)(_ctx.ns.e("content")) + }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(_ctx.ns.e("container")) }, [_ctx.iconComponent && !_ctx.center && _ctx.hasMessage ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_icon, { + key: 0, + class: (0, vue.normalizeClass)([_ctx.ns.e("status"), _ctx.typeClass]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.iconComponent)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true), _ctx.hasMessage ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", { + key: 1, + class: (0, vue.normalizeClass)(_ctx.ns.e("message")) + }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [!_ctx.dangerouslyUseHTMLString ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.showInput ? "label" : "p"), { + key: 0, + for: _ctx.showInput ? _ctx.inputId : void 0, + textContent: (0, vue.toDisplayString)(_ctx.message) + }, null, 8, ["for", "textContent"])) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(_ctx.showInput ? "label" : "p"), { + key: 1, + for: _ctx.showInput ? _ctx.inputId : void 0, + innerHTML: _ctx.message + }, null, 8, ["for", "innerHTML"]))])], 2)) : (0, vue.createCommentVNode)("v-if", true)], 2), (0, vue.withDirectives)((0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(_ctx.ns.e("input")) }, [(0, vue.createVNode)(_component_el_input, { + id: _ctx.inputId, + ref: "inputRef", + modelValue: _ctx.inputValue, + "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => _ctx.inputValue = $event), + type: _ctx.inputType, + placeholder: _ctx.inputPlaceholder, + "aria-invalid": _ctx.validateError, + class: (0, vue.normalizeClass)({ invalid: _ctx.validateError }), + onKeydown: (0, vue.withKeys)(_ctx.handleInputEnter, ["enter"]) + }, null, 8, [ + "id", + "modelValue", + "type", + "placeholder", + "aria-invalid", + "class", + "onKeydown" + ]), (0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)(_ctx.ns.e("errormsg")), + style: (0, vue.normalizeStyle)({ visibility: !!_ctx.editorErrorMessage ? "visible" : "hidden" }) + }, (0, vue.toDisplayString)(_ctx.editorErrorMessage), 7)], 2), [[vue.vShow, _ctx.showInput]])], 10, _hoisted_3$1), + (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(_ctx.ns.e("btns")) }, [_ctx.showCancelButton ? ((0, vue.openBlock)(), (0, vue.createBlock)(_component_el_button, { + key: 0, + type: _ctx.cancelButtonType === "text" ? "" : _ctx.cancelButtonType, + text: _ctx.cancelButtonType === "text", + loading: _ctx.cancelButtonLoading, + "loading-icon": _ctx.cancelButtonLoadingIcon, + class: (0, vue.normalizeClass)([_ctx.cancelButtonClass]), + round: _ctx.roundButton, + size: _ctx.btnSize, + onClick: _cache[3] || (_cache[3] = ($event) => _ctx.handleAction("cancel")), + onKeydown: _cache[4] || (_cache[4] = (0, vue.withKeys)((0, vue.withModifiers)(($event) => _ctx.handleAction("cancel"), ["prevent"]), ["enter"])) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)(_ctx.cancelButtonText || _ctx.t("el.messagebox.cancel")), 1)]), + _: 1 + }, 8, [ + "type", + "text", + "loading", + "loading-icon", + "class", + "round", + "size" + ])) : (0, vue.createCommentVNode)("v-if", true), (0, vue.withDirectives)((0, vue.createVNode)(_component_el_button, { + ref: "confirmRef", + type: _ctx.confirmButtonType === "text" ? "" : _ctx.confirmButtonType, + text: _ctx.confirmButtonType === "text", + loading: _ctx.confirmButtonLoading, + "loading-icon": _ctx.confirmButtonLoadingIcon, + class: (0, vue.normalizeClass)([_ctx.confirmButtonClasses]), + round: _ctx.roundButton, + disabled: _ctx.confirmButtonDisabled, + size: _ctx.btnSize, + onClick: _cache[5] || (_cache[5] = ($event) => _ctx.handleAction("confirm")), + onKeydown: _cache[6] || (_cache[6] = (0, vue.withKeys)((0, vue.withModifiers)(($event) => _ctx.handleAction("confirm"), ["prevent"]), ["enter"])) + }, { + default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)(_ctx.confirmButtonText || _ctx.t("el.messagebox.confirm")), 1)]), + _: 1 + }, 8, [ + "type", + "text", + "loading", + "loading-icon", + "class", + "round", + "disabled", + "size" + ]), [[vue.vShow, _ctx.showConfirmButton]])], 2) + ], 6)]), + _: 3 + }, 8, [ + "trapped", + "focus-trap-el", + "focus-start-el", + "onReleaseRequested" + ])], 42, _hoisted_1$1)]), + _: 3 + }, 8, [ + "z-index", + "overlay-class", + "mask" + ]), [[vue.vShow, _ctx.visible]])]), + _: 3 + }); + } + var src_default = /* @__PURE__ */ _plugin_vue_export_helper_default(index_vue_vue_type_script_lang_default, [["render", _sfc_render]]); + +//#endregion +//#region ../../packages/components/message-box/src/messageBox.ts + const messageInstance = /* @__PURE__ */ new Map(); + const getAppendToElement = (props) => { + let appendTo = document.body; + if (props.appendTo) { + if (isString(props.appendTo)) appendTo = document.querySelector(props.appendTo); + if (isElement$1(props.appendTo)) appendTo = props.appendTo; + if (!isElement$1(appendTo)) { + /* @__PURE__ */ debugWarn("ElMessageBox", "the appendTo option is not an HTMLElement. Falling back to document.body."); + appendTo = document.body; + } + } + return appendTo; + }; + const initInstance = (props, container, appContext = null) => { + const vnode = (0, vue.createVNode)(src_default, props, isFunction$1(props.message) || (0, vue.isVNode)(props.message) ? { default: isFunction$1(props.message) ? props.message : () => props.message } : null); + vnode.appContext = appContext; + (0, vue.render)(vnode, container); + getAppendToElement(props).appendChild(container.firstElementChild); + return vnode.component; + }; + const genContainer = () => { + return document.createElement("div"); + }; + const showMessage = (options, appContext) => { + const container = genContainer(); + options.onVanish = () => { + (0, vue.render)(null, container); + messageInstance.delete(vm); + }; + options.onAction = (action) => { + const currentMsg = messageInstance.get(vm); + let resolve; + if (options.showInput) resolve = { + value: vm.inputValue, + action + }; + else resolve = action; + if (options.callback) options.callback(resolve, instance.proxy); + else if (action === "cancel" || action === "close") if (options.distinguishCancelAndClose && action !== "cancel") currentMsg.reject("close"); + else currentMsg.reject("cancel"); + else currentMsg.resolve(resolve); + }; + const instance = initInstance(options, container, appContext); + const vm = instance.proxy; + for (const prop in options) if (hasOwn(options, prop) && !hasOwn(vm.$props, prop)) if (prop === "closeIcon" && isObject$1(options[prop])) vm[prop] = (0, vue.markRaw)(options[prop]); + else vm[prop] = options[prop]; + vm.visible = true; + return vm; + }; + function MessageBox(options, appContext = null) { + if (!isClient) return Promise.reject(); + let callback; + if (isString(options) || (0, vue.isVNode)(options)) options = { message: options }; + else callback = options.callback; + return new Promise((resolve, reject) => { + const vm = showMessage(options, appContext ?? MessageBox._context); + messageInstance.set(vm, { + options, + callback, + resolve, + reject + }); + }); + } + const MESSAGE_BOX_VARIANTS = [ + "alert", + "confirm", + "prompt" + ]; + const MESSAGE_BOX_DEFAULT_OPTS = { + alert: { + closeOnPressEscape: false, + closeOnClickModal: false + }, + confirm: { showCancelButton: true }, + prompt: { + showCancelButton: true, + showInput: true + } + }; + MESSAGE_BOX_VARIANTS.forEach((boxType) => { + MessageBox[boxType] = messageBoxFactory(boxType); + }); + function messageBoxFactory(boxType) { + return (message, title, options, appContext) => { + let titleOrOpts = ""; + if (isObject$1(title)) { + options = title; + titleOrOpts = ""; + } else if (isUndefined(title)) titleOrOpts = ""; + else titleOrOpts = title; + return MessageBox(Object.assign({ + title: titleOrOpts, + message, + type: "", + ...MESSAGE_BOX_DEFAULT_OPTS[boxType] + }, options, { boxType }), appContext); + }; + } + MessageBox.close = () => { + messageInstance.forEach((_, vm) => { + vm.doClose(); + }); + messageInstance.clear(); + }; + MessageBox._context = null; + +//#endregion +//#region ../../packages/components/message-box/index.ts + const _MessageBox = MessageBox; + _MessageBox.install = (app) => { + _MessageBox._context = app._context; + app.config.globalProperties.$msgbox = _MessageBox; + app.config.globalProperties.$messageBox = _MessageBox; + app.config.globalProperties.$alert = _MessageBox.alert; + app.config.globalProperties.$confirm = _MessageBox.confirm; + app.config.globalProperties.$prompt = _MessageBox.prompt; + }; + const ElMessageBox = _MessageBox; + +//#endregion +//#region ../../packages/components/notification/src/notification.ts + const notificationTypes = [ + "primary", + "success", + "info", + "warning", + "error" + ]; + /** + * @deprecated Removed after 3.0.0, Use `NotificationProps` instead. + */ + const notificationProps = buildProps({ + customClass: { + type: String, + default: "" + }, + dangerouslyUseHTMLString: Boolean, + duration: { + type: Number, + default: 4500 + }, + icon: { type: iconPropType }, + id: { + type: String, + default: "" + }, + message: { + type: definePropType([ + String, + Object, + Function + ]), + default: "" + }, + offset: { + type: Number, + default: 0 + }, + onClick: { + type: definePropType(Function), + default: () => void 0 + }, + onClose: { + type: definePropType(Function), + required: true + }, + position: { + type: String, + values: [ + "top-right", + "top-left", + "bottom-right", + "bottom-left" + ], + default: "top-right" + }, + showClose: { + type: Boolean, + default: true + }, + title: { + type: String, + default: "" + }, + type: { + type: String, + values: [...notificationTypes, ""], + default: "" + }, + zIndex: Number, + closeIcon: { + type: iconPropType, + default: close_default + } + }); + const notificationEmits = { destroy: () => true }; + +//#endregion +//#region ../../packages/components/notification/src/notification.vue?vue&type=script&setup=true&lang.ts + const _hoisted_1 = ["id"]; + const _hoisted_2 = ["textContent"]; + const _hoisted_3 = { key: 0 }; + const _hoisted_4 = ["innerHTML"]; + var notification_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ + name: "ElNotification", + __name: "notification", + props: notificationProps, + emits: notificationEmits, + setup(__props, { expose: __expose }) { + const props = __props; + const { ns, zIndex } = useGlobalComponentSettings("notification"); + const { nextZIndex, currentZIndex } = zIndex; + const visible = (0, vue.ref)(false); + let timer = void 0; + const typeClass = (0, vue.computed)(() => { + const type = props.type; + return type && TypeComponentsMap[props.type] ? ns.m(type) : ""; + }); + const iconComponent = (0, vue.computed)(() => { + if (!props.type) return props.icon; + return TypeComponentsMap[props.type] || props.icon; + }); + const horizontalClass = (0, vue.computed)(() => props.position.endsWith("right") ? "right" : "left"); + const verticalProperty = (0, vue.computed)(() => props.position.startsWith("top") ? "top" : "bottom"); + const positionStyle = (0, vue.computed)(() => { + return { + [verticalProperty.value]: `${props.offset}px`, + zIndex: props.zIndex ?? currentZIndex.value + }; + }); + function startTimer() { + if (props.duration > 0) ({stop: timer} = useTimeoutFn(() => { + if (visible.value) close(); + }, props.duration)); + } + function clearTimer() { + timer?.(); + } + function close() { + visible.value = false; + } + function onKeydown(event) { + switch (getEventCode(event)) { + case EVENT_CODE.delete: + case EVENT_CODE.backspace: + clearTimer(); + break; + case EVENT_CODE.esc: + if (visible.value) close(); + break; + default: + startTimer(); + break; + } + } + (0, vue.onMounted)(() => { + startTimer(); + nextZIndex(); + visible.value = true; + }); + useEventListener(document, "keydown", onKeydown); + __expose({ + visible, + close + }); + return (_ctx, _cache) => { + return (0, vue.openBlock)(), (0, vue.createBlock)(vue.Transition, { + name: (0, vue.unref)(ns).b("fade"), + onBeforeLeave: __props.onClose, + onAfterLeave: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("destroy")), + persisted: "" + }, { + default: (0, vue.withCtx)(() => [(0, vue.withDirectives)((0, vue.createElementVNode)("div", { + id: __props.id, + class: (0, vue.normalizeClass)([ + (0, vue.unref)(ns).b(), + __props.customClass, + horizontalClass.value + ]), + style: (0, vue.normalizeStyle)(positionStyle.value), + role: "alert", + onMouseenter: clearTimer, + onMouseleave: startTimer, + onClick: _cache[0] || (_cache[0] = (...args) => __props.onClick && __props.onClick(...args)) + }, [iconComponent.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)([(0, vue.unref)(ns).e("icon"), typeClass.value]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(iconComponent.value)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("group")) }, [ + (0, vue.createElementVNode)("h2", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("title")), + textContent: (0, vue.toDisplayString)(__props.title) + }, null, 10, _hoisted_2), + (0, vue.withDirectives)((0, vue.createElementVNode)("div", { + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("content")), + style: (0, vue.normalizeStyle)(!!__props.title ? void 0 : { margin: 0 }) + }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [!__props.dangerouslyUseHTMLString ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("p", _hoisted_3, (0, vue.toDisplayString)(__props.message), 1)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createCommentVNode)(" Caution here, message could've been compromised, never use user's input as message "), (0, vue.createElementVNode)("p", { innerHTML: __props.message }, null, 8, _hoisted_4)], 2112))])], 6), [[vue.vShow, __props.message]]), + __props.showClose ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ElIcon), { + key: 0, + class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("closeBtn")), + onClick: (0, vue.withModifiers)(close, ["stop"]) + }, { + default: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(__props.closeIcon)))]), + _: 1 + }, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true) + ], 2)], 46, _hoisted_1), [[vue.vShow, visible.value]])]), + _: 3 + }, 8, ["name", "onBeforeLeave"]); + }; + } + }); + +//#endregion +//#region ../../packages/components/notification/src/notification.vue + var notification_default = notification_vue_vue_type_script_setup_true_lang_default; + +//#endregion +//#region ../../packages/components/notification/src/notify.ts + const notifications = { + "top-left": [], + "top-right": [], + "bottom-left": [], + "bottom-right": [] + }; + const GAP_SIZE = 16; + let seed = 1; + const notify = function(options = {}, context) { + if (!isClient) return { close: () => void 0 }; + if (isString(options) || (0, vue.isVNode)(options)) options = { message: options }; + const position = options.position || "top-right"; + let verticalOffset = options.offset || 0; + notifications[position].forEach(({ vm }) => { + verticalOffset += (vm.el?.offsetHeight || 0) + GAP_SIZE; + }); + verticalOffset += GAP_SIZE; + const id = `notification_${seed++}`; + const userOnClose = options.onClose; + const props = { + ...options, + offset: verticalOffset, + id, + onClose: () => { + close(id, position, userOnClose); + } + }; + let appendTo = document.body; + if (isElement$1(options.appendTo)) appendTo = options.appendTo; + else if (isString(options.appendTo)) appendTo = document.querySelector(options.appendTo); + if (!isElement$1(appendTo)) { + /* @__PURE__ */ debugWarn("ElNotification", "the appendTo option is not an HTMLElement. Falling back to document.body."); + appendTo = document.body; + } + const container = document.createElement("div"); + const vm = (0, vue.createVNode)(notification_default, props, isFunction$1(props.message) ? props.message : (0, vue.isVNode)(props.message) ? () => props.message : null); + vm.appContext = isUndefined(context) ? notify._context : context; + vm.props.onDestroy = () => { + (0, vue.render)(null, container); + }; + (0, vue.render)(vm, container); + notifications[position].push({ vm }); + appendTo.appendChild(container.firstElementChild); + return { close: () => { + vm.component.exposed.visible.value = false; + } }; + }; + notificationTypes.forEach((type) => { + notify[type] = (options = {}, appContext) => { + if (isString(options) || (0, vue.isVNode)(options)) options = { message: options }; + return notify({ + ...options, + type + }, appContext); + }; + }); + /** + * This function gets called when user click `x` button or press `esc` or the time reached its limitation. + * Emitted by transition@before-leave event so that we can fetch the current notification.offsetHeight, if this was called + * by @after-leave the DOM element will be removed from the page thus we can no longer fetch the offsetHeight. + * @param {String} id notification id to be closed + * @param {Position} position the positioning strategy + * @param {Function} userOnClose the callback called when close passed by user + */ + function close(id, position, userOnClose) { + const orientedNotifications = notifications[position]; + const idx = orientedNotifications.findIndex(({ vm }) => vm.component?.props.id === id); + if (idx === -1) return; + const { vm } = orientedNotifications[idx]; + if (!vm) return; + userOnClose?.(vm); + const removedHeight = vm.el.offsetHeight; + const verticalPos = position.split("-")[0]; + orientedNotifications.splice(idx, 1); + const len = orientedNotifications.length; + if (len < 1) return; + for (let i = idx; i < len; i++) { + const { el, component } = orientedNotifications[i].vm; + const pos = Number.parseInt(el.style[verticalPos], 10) - removedHeight - GAP_SIZE; + component.props.offset = pos; + } + } + function closeAll() { + for (const orientedNotifications of Object.values(notifications)) orientedNotifications.forEach(({ vm }) => { + vm.component.exposed.visible.value = false; + }); + } + function updateOffsets(position = "top-right") { + let verticalOffset = notifications[position][0]?.vm.component?.props?.offset || 0; + for (const { vm } of notifications[position]) { + vm.component.props.offset = verticalOffset; + verticalOffset += (vm.el?.offsetHeight || 0) + GAP_SIZE; + } + } + notify.closeAll = closeAll; + notify.updateOffsets = updateOffsets; + notify._context = null; + +//#endregion +//#region ../../packages/components/notification/index.ts + const ElNotification = withInstallFunction(notify, "$notify"); + +//#endregion +//#region ../../packages/element-plus/plugin.ts + var plugin_default = [ + ElInfiniteScroll, + ElLoading, + ElMessage, + ElMessageBox, + ElNotification, + ElPopoverDirective + ]; + +//#endregion +//#region ../../packages/element-plus/defaults.ts + var defaults_default = makeInstaller([...component_default, ...plugin_default]); + +//#endregion +//#region ../../packages/element-plus/index.ts + const install = defaults_default.install; + const version = defaults_default.version; + var element_plus_default = defaults_default; + +//#endregion +exports.BAR_MAP = BAR_MAP; +exports.BORDER_HORIZONTAL_WIDTH = BORDER_HORIZONTAL_WIDTH; +exports.CAROUSEL_ITEM_NAME = CAROUSEL_ITEM_NAME; +exports.CASCADER_PANEL_INJECTION_KEY = CASCADER_PANEL_INJECTION_KEY; +exports.CHANGE_EVENT = CHANGE_EVENT; +exports.ClickOutside = ClickOutside; +exports.CommonPicker = picker_default; +exports.CommonProps = CommonProps; +exports.DEFAULT_DIALOG_TRANSITION = DEFAULT_DIALOG_TRANSITION; +exports.DEFAULT_EMPTY_VALUES = DEFAULT_EMPTY_VALUES; +exports.DEFAULT_FORMATS_DATE = DEFAULT_FORMATS_DATE; +exports.DEFAULT_FORMATS_DATEPICKER = DEFAULT_FORMATS_DATEPICKER; +exports.DEFAULT_FORMATS_TIME = DEFAULT_FORMATS_TIME; +exports.DEFAULT_STEP = DEFAULT_STEP; +exports.DEFAULT_VALUE_ON_CLEAR = DEFAULT_VALUE_ON_CLEAR; +exports.DROPDOWN_INJECTION_KEY = DROPDOWN_INJECTION_KEY; +exports.DROPDOWN_INSTANCE_INJECTION_KEY = DROPDOWN_INSTANCE_INJECTION_KEY; +exports.DefaultProps = DefaultProps; +exports.DynamicSizeGrid = DynamicSizeGrid; +exports.DynamicSizeList = DynamicSizeList; +exports.EVENT_CODE = EVENT_CODE; +exports.Effect = Effect; +exports.ElAffix = ElAffix; +exports.ElAlert = ElAlert; +exports.ElAnchor = ElAnchor; +exports.ElAnchorLink = ElAnchorLink; +exports.ElAside = ElAside; +exports.ElAutoResizer = ElAutoResizer; +exports.ElAutocomplete = ElAutocomplete; +exports.ElAvatar = ElAvatar; +exports.ElAvatarGroup = ElAvatarGroup; +exports.ElBacktop = ElBacktop; +exports.ElBadge = ElBadge; +exports.ElBreadcrumb = ElBreadcrumb; +exports.ElBreadcrumbItem = ElBreadcrumbItem; +exports.ElButton = ElButton; +exports.ElButtonGroup = ElButtonGroup; +exports.ElCalendar = ElCalendar; +exports.ElCard = ElCard; +exports.ElCarousel = ElCarousel; +exports.ElCarouselItem = ElCarouselItem; +exports.ElCascader = ElCascader; +exports.ElCascaderPanel = ElCascaderPanel; +exports.ElCheckTag = ElCheckTag; +exports.ElCheckbox = ElCheckbox; +exports.ElCheckboxButton = ElCheckboxButton; +exports.ElCheckboxGroup = ElCheckboxGroup; +exports.ElCol = ElCol; +exports.ElCollapse = ElCollapse; +exports.ElCollapseItem = ElCollapseItem; +exports.ElCollapseTransition = ElCollapseTransition; +exports.ElColorPicker = ElColorPicker; +exports.ElColorPickerPanel = ElColorPickerPanel; +exports.ElConfigProvider = ElConfigProvider; +exports.ElContainer = ElContainer; +exports.ElCountdown = ElCountdown; +exports.ElDatePicker = ElDatePicker; +exports.ElDatePickerPanel = ElDatePickerPanel; +exports.ElDescriptions = ElDescriptions; +exports.ElDescriptionsItem = ElDescriptionsItem; +exports.ElDialog = ElDialog; +exports.ElDivider = ElDivider; +exports.ElDrawer = ElDrawer; +exports.ElDropdown = ElDropdown; +exports.ElDropdownItem = ElDropdownItem; +exports.ElDropdownMenu = ElDropdownMenu; +exports.ElEmpty = ElEmpty; +exports.ElFooter = ElFooter; +exports.ElForm = ElForm; +exports.ElFormItem = ElFormItem; +exports.ElHeader = ElHeader; +exports.ElIcon = ElIcon; +exports.ElImage = ElImage; +exports.ElImageViewer = ElImageViewer; +exports.ElInfiniteScroll = ElInfiniteScroll; +exports.ElInput = ElInput; +exports.ElInputNumber = ElInputNumber; +exports.ElInputTag = ElInputTag; +exports.ElLink = ElLink; +exports.ElLoading = ElLoading; +exports.ElLoadingDirective = vLoading; +exports.vLoading = vLoading; +exports.ElLoadingService = Loading; +exports.ElMain = ElMain; +exports.ElMention = ElMention; +exports.ElMenu = ElMenu; +exports.ElMenuItem = ElMenuItem; +exports.ElMenuItemGroup = ElMenuItemGroup; +exports.ElMessage = ElMessage; +exports.ElMessageBox = ElMessageBox; +exports.ElNotification = ElNotification; +exports.ElOption = ElOption; +exports.ElOptionGroup = ElOptionGroup; +exports.ElOverlay = ElOverlay; +exports.ElPageHeader = ElPageHeader; +exports.ElPagination = ElPagination; +exports.ElPopconfirm = ElPopconfirm; +exports.ElPopover = ElPopover; +exports.ElPopoverDirective = ElPopoverDirective; +exports.ElPopper = ElPopper; +exports.ElPopperArrow = arrow_default; +exports.ElPopperContent = content_default; +exports.ElPopperTrigger = trigger_default; +exports.ElProgress = ElProgress; +exports.ElRadio = ElRadio; +exports.ElRadioButton = ElRadioButton; +exports.ElRadioGroup = ElRadioGroup; +exports.ElRate = ElRate; +exports.ElResult = ElResult; +exports.ElRow = ElRow; +exports.ElScrollbar = ElScrollbar; +exports.ElSegmented = ElSegmented; +exports.ElSelect = ElSelect; +exports.ElSelectV2 = ElSelectV2; +exports.ElSkeleton = ElSkeleton; +exports.ElSkeletonItem = ElSkeletonItem; +exports.ElSlider = ElSlider; +exports.ElSpace = ElSpace; +exports.ElSplitter = ElSplitter; +exports.ElSplitterPanel = ElSplitterPanel; +exports.ElStatistic = ElStatistic; +exports.ElStep = ElStep; +exports.ElSteps = ElSteps; +exports.ElSubMenu = ElSubMenu; +exports.ElSwitch = ElSwitch; +exports.ElTabPane = ElTabPane; +exports.ElTable = ElTable; +exports.ElTableColumn = ElTableColumn; +exports.ElTableV2 = ElTableV2; +exports.ElTabs = ElTabs; +exports.ElTag = ElTag; +exports.ElText = ElText; +exports.ElTimePicker = ElTimePicker; +exports.ElTimeSelect = ElTimeSelect; +exports.ElTimeline = ElTimeline; +exports.ElTimelineItem = ElTimelineItem; +exports.ElTooltip = ElTooltip; +exports.ElTour = ElTour; +exports.ElTourStep = ElTourStep; +exports.ElTransfer = ElTransfer; +exports.ElTree = ElTree; +exports.ElTreeSelect = ElTreeSelect; +exports.ElTreeV2 = ElTreeV2; +exports.ElUpload = ElUpload; +exports.ElWatermark = ElWatermark; +exports.FIRST_KEYS = FIRST_KEYS; +exports.FIRST_LAST_KEYS = FIRST_LAST_KEYS; +exports.FORWARD_REF_INJECTION_KEY = FORWARD_REF_INJECTION_KEY; +exports.FixedSizeGrid = FixedSizeGrid; +exports.FixedSizeList = FixedSizeList; +exports.GAP = GAP; +exports.ID_INJECTION_KEY = ID_INJECTION_KEY; +exports.INPUT_EVENT = INPUT_EVENT; +exports.INSTALLED_KEY = INSTALLED_KEY; +exports.IconComponentMap = IconComponentMap; +exports.IconMap = IconMap; +exports.LAST_KEYS = LAST_KEYS; +exports.LEFT_CHECK_CHANGE_EVENT = LEFT_CHECK_CHANGE_EVENT; +exports.MENU_INJECTION_KEY = MENU_INJECTION_KEY; +exports.MESSAGE_DEFAULT_PLACEMENT = MESSAGE_DEFAULT_PLACEMENT; +exports.MINIMUM_INPUT_WIDTH = MINIMUM_INPUT_WIDTH; +exports.Mousewheel = Mousewheel; +exports.NODE_INSTANCE_INJECTION_KEY = NODE_INSTANCE_INJECTION_KEY; +exports.PICKER_BASE_INJECTION_KEY = PICKER_BASE_INJECTION_KEY; +exports.PICKER_POPPER_OPTIONS_INJECTION_KEY = PICKER_POPPER_OPTIONS_INJECTION_KEY; +exports.POPPER_CONTENT_INJECTION_KEY = POPPER_CONTENT_INJECTION_KEY; +exports.POPPER_INJECTION_KEY = POPPER_INJECTION_KEY; +exports.RIGHT_CHECK_CHANGE_EVENT = RIGHT_CHECK_CHANGE_EVENT; +exports.ROOT_COMMON_COLOR_INJECTION_KEY = ROOT_COMMON_COLOR_INJECTION_KEY; +exports.ROOT_COMMON_PICKER_INJECTION_KEY = ROOT_COMMON_PICKER_INJECTION_KEY; +exports.ROOT_PICKER_INJECTION_KEY = ROOT_PICKER_INJECTION_KEY; +exports.ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY = ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY; +exports.ROOT_TREE_INJECTION_KEY = ROOT_TREE_INJECTION_KEY; +exports.RowAlign = RowAlign; +exports.RowJustify = RowJustify; +exports.SCOPE = SCOPE; +exports.SIZE_INJECTION_KEY = SIZE_INJECTION_KEY; +exports.STEPS_INJECTION_KEY = STEPS_INJECTION_KEY; +exports.SUB_MENU_INJECTION_KEY = SUB_MENU_INJECTION_KEY; +exports.TIMELINE_INJECTION_KEY = TIMELINE_INJECTION_KEY; +exports.TOOLTIP_INJECTION_KEY = TOOLTIP_INJECTION_KEY; +exports.TREE_NODE_MAP_INJECTION_KEY = TREE_NODE_MAP_INJECTION_KEY; +exports.TableV2 = TableV2; +exports.TableV2Alignment = Alignment; +exports.TableV2FixedDir = FixedDir; +exports.TableV2Placeholder = placeholderSign; +exports.TableV2SortOrder = SortOrder; +exports.TimePickPanel = panel_time_pick_default; +exports.TrapFocus = TrapFocus; +exports.UPDATE_MODEL_EVENT = UPDATE_MODEL_EVENT; +exports.WEEK_DAYS = WEEK_DAYS; +exports.ZINDEX_INJECTION_KEY = ZINDEX_INJECTION_KEY; +exports.affixEmits = affixEmits; +exports.affixProps = affixProps; +exports.alertEffects = alertEffects; +exports.alertEmits = alertEmits; +exports.alertProps = alertProps; +exports.anchorEmits = anchorEmits; +exports.anchorProps = anchorProps; +exports.ariaProps = ariaProps; +exports.arrowMiddleware = arrowMiddleware; +exports.autoResizerProps = autoResizerProps; +exports.autocompleteEmits = autocompleteEmits; +exports.autocompleteProps = autocompleteProps; +exports.avatarEmits = avatarEmits; +exports.avatarGroupContextKey = avatarGroupContextKey; +exports.avatarGroupProps = avatarGroupProps; +exports.avatarProps = avatarProps; +exports.backtopEmits = backtopEmits; +exports.backtopProps = backtopProps; +exports.badgeProps = badgeProps; +exports.breadcrumbItemProps = breadcrumbItemProps; +exports.breadcrumbKey = breadcrumbKey; +exports.breadcrumbProps = breadcrumbProps; +exports.buildLocaleContext = buildLocaleContext; +exports.buildTimeList = buildTimeList; +exports.buildTranslator = buildTranslator; +exports.buttonEmits = buttonEmits; +exports.buttonGroupContextKey = buttonGroupContextKey; +exports.buttonNativeTypes = buttonNativeTypes; +exports.buttonProps = buttonProps; +exports.buttonTypes = buttonTypes; +exports.calendarEmits = calendarEmits; +exports.calendarProps = calendarProps; +exports.cardContextKey = cardContextKey; +exports.cardProps = cardProps; +exports.carouselContextKey = carouselContextKey; +exports.carouselEmits = carouselEmits; +exports.carouselItemProps = carouselItemProps; +exports.carouselProps = carouselProps; +exports.cascaderEmits = cascaderEmits; +exports.cascaderPanelEmits = cascaderPanelEmits; +exports.cascaderPanelProps = cascaderPanelProps; +exports.cascaderProps = cascaderProps; +exports.checkTagEmits = checkTagEmits; +exports.checkTagProps = checkTagProps; +exports.checkboxDefaultProps = checkboxDefaultProps; +exports.checkboxEmits = checkboxEmits; +exports.checkboxGroupContextKey = checkboxGroupContextKey; +exports.checkboxGroupEmits = checkboxGroupEmits; +exports.checkboxGroupProps = checkboxGroupProps; +exports.checkboxProps = checkboxProps; +exports.checkboxPropsDefaults = checkboxPropsDefaults; +exports.colProps = colProps; +exports.collapseContextKey = collapseContextKey; +exports.collapseEmits = collapseEmits; +exports.collapseItemProps = collapseItemProps; +exports.collapseProps = collapseProps; +exports.colorPickerEmits = colorPickerEmits; +exports.colorPickerPanelContextKey = colorPickerPanelContextKey; +exports.colorPickerPanelEmits = colorPickerPanelEmits; +exports.colorPickerPanelProps = colorPickerPanelProps; +exports.colorPickerProps = colorPickerProps; +exports.colorPickerPropsDefaults = colorPickerPropsDefaults; +exports.columnAlignment = columnAlignment; +exports.componentSizeMap = componentSizeMap; +exports.componentSizes = componentSizes; +exports.configProviderContextKey = configProviderContextKey; +exports.configProviderProps = configProviderProps; +exports.countdownEmits = countdownEmits; +exports.countdownProps = countdownProps; +exports.createModelToggleComposable = createModelToggleComposable; +exports.dateEquals = dateEquals; +exports.datePickTypes = datePickTypes; +exports.datePickerPanelProps = datePickerPanelProps; +exports.datePickerProps = datePickerProps; +exports.dayOrDaysToDate = dayOrDaysToDate; +Object.defineProperty(exports, 'dayjs', { + enumerable: true, + get: function () { + return import_dayjs_min.default; + } +}); +exports.default = element_plus_default; +exports.defaultInitialZIndex = defaultInitialZIndex; +exports.defaultNamespace = defaultNamespace; +exports.defaultProps = defaultProps; +exports.descriptionItemProps = descriptionItemProps; +exports.descriptionProps = descriptionProps; +exports.dialogContextKey = dialogContextKey; +exports.dialogEmits = dialogEmits; +exports.dialogInjectionKey = dialogInjectionKey; +exports.dialogProps = dialogProps; +exports.dialogPropsDefaults = dialogPropsDefaults; +exports.dividerProps = dividerProps; +exports.drawerEmits = drawerEmits; +exports.drawerProps = drawerProps; +exports.dropdownItemProps = dropdownItemProps; +exports.dropdownMenuProps = dropdownMenuProps; +exports.dropdownProps = dropdownProps; +exports.elPaginationKey = elPaginationKey; +exports.emitChangeFn = emitChangeFn; +exports.emptyProps = emptyProps; +exports.emptyValuesContextKey = emptyValuesContextKey; +exports.extractDateFormat = extractDateFormat; +exports.extractTimeFormat = extractTimeFormat; +exports.formContextKey = formContextKey; +exports.formEmits = formEmits; +exports.formItemContextKey = formItemContextKey; +exports.formItemProps = formItemProps; +exports.formItemValidateStates = formItemValidateStates; +exports.formMetaProps = formMetaProps; +exports.formProps = formProps; +exports.formatter = formatter; +exports.genFileId = genFileId; +exports.getPositionDataWithUnit = getPositionDataWithUnit; +exports.iconProps = iconProps; +exports.imageEmits = imageEmits; +exports.imageProps = imageProps; +exports.imageViewerEmits = imageViewerEmits; +exports.imageViewerProps = imageViewerProps; +exports.inputEmits = inputEmits; +exports.inputNumberEmits = inputNumberEmits; +exports.inputNumberProps = inputNumberProps; +exports.inputProps = inputProps; +exports.inputPropsDefaults = inputPropsDefaults; +exports.inputTagEmits = inputTagEmits; +exports.inputTagProps = inputTagProps; +exports.install = install; +exports.linkEmits = linkEmits; +exports.linkProps = linkProps; +exports.localeContextKey = localeContextKey; +exports.makeInstaller = makeInstaller; +exports.makeList = makeList; +exports.mentionDefaultProps = mentionDefaultProps; +exports.mentionEmits = mentionEmits; +exports.mentionProps = mentionProps; +exports.menuEmits = menuEmits; +exports.menuItemEmits = menuItemEmits; +exports.menuItemGroupProps = menuItemGroupProps; +exports.menuItemProps = menuItemProps; +exports.menuProps = menuProps; +exports.messageConfig = messageConfig; +exports.messageDefaults = messageDefaults; +exports.messageEmits = messageEmits; +exports.messagePlacement = messagePlacement; +exports.messageProps = messageProps; +exports.messageTypes = messageTypes; +exports.namespaceContextKey = namespaceContextKey; +exports.notificationEmits = notificationEmits; +exports.notificationProps = notificationProps; +exports.notificationTypes = notificationTypes; +exports.overlayEmits = overlayEmits; +exports.overlayProps = overlayProps; +exports.pageHeaderEmits = pageHeaderEmits; +exports.pageHeaderProps = pageHeaderProps; +exports.paginationEmits = paginationEmits; +exports.paginationProps = paginationProps; +exports.parseDate = parseDate; +exports.popconfirmEmits = popconfirmEmits; +exports.popconfirmProps = popconfirmProps; +exports.popoverEmits = popoverEmits; +exports.popoverProps = popoverProps; +exports.popoverPropsDefaults = popoverPropsDefaults; +exports.popperArrowProps = popperArrowProps; +exports.popperArrowPropsDefaults = popperArrowPropsDefaults; +exports.popperContentEmits = popperContentEmits; +exports.popperContentProps = popperContentProps; +exports.popperContentPropsDefaults = popperContentPropsDefaults; +exports.popperCoreConfigProps = popperCoreConfigProps; +exports.popperCoreConfigPropsDefaults = popperCoreConfigPropsDefaults; +exports.popperProps = popperProps; +exports.popperTriggerProps = popperTriggerProps; +exports.progressProps = progressProps; +exports.provideGlobalConfig = provideGlobalConfig; +exports.radioButtonProps = radioButtonProps; +exports.radioButtonPropsDefaults = radioButtonPropsDefaults; +exports.radioDefaultProps = radioDefaultProps; +exports.radioEmits = radioEmits; +exports.radioGroupEmits = radioGroupEmits; +exports.radioGroupKey = radioGroupKey; +exports.radioGroupProps = radioGroupProps; +exports.radioGroupPropsDefaults = radioGroupPropsDefaults; +exports.radioProps = radioProps; +exports.radioPropsBase = radioPropsBase; +exports.radioPropsDefaults = radioPropsDefaults; +exports.rangeArr = rangeArr; +exports.rateEmits = rateEmits; +exports.rateProps = rateProps; +exports.renderThumbStyle = renderThumbStyle; +exports.resultProps = resultProps; +exports.roleTypes = roleTypes; +exports.rowContextKey = rowContextKey; +exports.rowProps = rowProps; +exports.scrollbarContextKey = scrollbarContextKey; +exports.scrollbarEmits = scrollbarEmits; +exports.scrollbarProps = scrollbarProps; +exports.segmentedEmits = segmentedEmits; +exports.segmentedProps = segmentedProps; +exports.selectEmits = selectEmits; +exports.selectGroupKey = selectGroupKey; +exports.selectKey = selectKey; +exports.selectProps = selectProps; +exports.selectV2InjectionKey = selectV2InjectionKey; +exports.skeletonItemProps = skeletonItemProps; +exports.skeletonProps = skeletonProps; +exports.sliderContextKey = sliderContextKey; +exports.sliderEmits = sliderEmits; +exports.sliderProps = sliderProps; +exports.spaceItemProps = spaceItemProps; +exports.spaceProps = spaceProps; +exports.splitterEmits = splitterEmits; +exports.splitterPanelEmits = splitterPanelEmits; +exports.splitterPanelProps = splitterPanelProps; +exports.splitterProps = splitterProps; +exports.statisticProps = statisticProps; +exports.stepProps = stepProps; +exports.stepsEmits = stepsEmits; +exports.stepsProps = stepsProps; +exports.subMenuProps = subMenuProps; +exports.switchEmits = switchEmits; +exports.switchProps = switchProps; +exports.tabBarProps = tabBarProps; +exports.tabNavEmits = tabNavEmits; +exports.tabNavProps = tabNavProps; +exports.tabPaneProps = tabPaneProps; +exports.tableV2Props = tableV2Props; +exports.tableV2RowProps = tableV2RowProps; +exports.tabsEmits = tabsEmits; +exports.tabsProps = tabsProps; +exports.tabsRootContextKey = tabsRootContextKey; +exports.tagEmits = tagEmits; +exports.tagProps = tagProps; +exports.textProps = textProps; +exports.thumbProps = thumbProps; +exports.timePickerDefaultProps = timePickerDefaultProps; +exports.timePickerRangeTriggerProps = timePickerRangeTriggerProps; +exports.timePickerRngeTriggerProps = timePickerRngeTriggerProps; +exports.timeSelectProps = timeSelectProps; +exports.timeUnits = timeUnits; +exports.timelineItemProps = timelineItemProps; +exports.timelineProps = timelineProps; +exports.tooltipEmits = tooltipEmits; +exports.tourContentEmits = tourContentEmits; +exports.tourContentProps = tourContentProps; +exports.tourEmits = tourEmits; +exports.tourPlacements = tourPlacements; +exports.tourProps = tourProps; +exports.tourStepEmits = tourStepEmits; +exports.tourStepProps = tourStepProps; +exports.tourStrategies = tourStrategies; +exports.transferCheckedChangeFn = transferCheckedChangeFn; +exports.transferEmits = transferEmits; +exports.transferProps = transferProps; +exports.translate = translate; +exports.treeEmits = treeEmits; +exports.treeProps = treeProps; +exports.uploadBaseProps = uploadBaseProps; +exports.uploadBasePropsDefaults = uploadBasePropsDefaults; +exports.uploadContentProps = uploadContentProps; +exports.uploadContentPropsDefaults = uploadContentPropsDefaults; +exports.uploadContextKey = uploadContextKey; +exports.uploadDraggerEmits = uploadDraggerEmits; +exports.uploadDraggerProps = uploadDraggerProps; +exports.uploadListEmits = uploadListEmits; +exports.uploadListProps = uploadListProps; +exports.uploadListTypes = uploadListTypes; +exports.uploadProps = uploadProps; +exports.uploadPropsDefaults = uploadPropsDefaults; +exports.useAriaProps = useAriaProps; +exports.useAttrs = useAttrs; +exports.useCalcInputWidth = useCalcInputWidth; +exports.useCascaderConfig = useCascaderConfig; +exports.useComposition = useComposition; +exports.useCursor = useCursor; +exports.useDelayedRender = useDelayedRender; +exports.useDelayedToggle = useDelayedToggle; +exports.useDelayedToggleProps = useDelayedToggleProps; +exports.useDelayedTogglePropsDefaults = useDelayedTogglePropsDefaults; +exports.useDeprecated = useDeprecated; +exports.useDialog = useDialog; +exports.useDisabled = useDisabled; +exports.useDraggable = useDraggable; +exports.useEmptyValues = useEmptyValues; +exports.useEmptyValuesProps = useEmptyValuesProps; +exports.useEscapeKeydown = useEscapeKeydown; +exports.useFloating = useFloating; +exports.useFloatingProps = useFloatingProps; +exports.useFocus = useFocus; +exports.useFocusController = useFocusController; +exports.useFormDisabled = useFormDisabled; +exports.useFormItem = useFormItem; +exports.useFormItemInputId = useFormItemInputId; +exports.useFormSize = useFormSize; +exports.useForwardRef = useForwardRef; +exports.useForwardRefDirective = useForwardRefDirective; +exports.useGetDerivedNamespace = useGetDerivedNamespace; +exports.useGlobalComponentSettings = useGlobalComponentSettings; +exports.useGlobalConfig = useGlobalConfig; +exports.useGlobalSize = useGlobalSize; +exports.useId = useId; +exports.useIdInjection = useIdInjection; +exports.useLocale = useLocale; +exports.useLockscreen = useLockscreen; +exports.useModal = useModal; +exports.useModelToggle = useModelToggle; +exports.useModelToggleEmits = useModelToggleEmits; +exports.useModelToggleProps = useModelToggleProps; +exports.useNamespace = useNamespace; +exports.useOrderedChildren = useOrderedChildren; +exports.usePopper = usePopper; +exports.usePopperArrowProps = usePopperArrowProps; +exports.usePopperContainer = usePopperContainer; +exports.usePopperContainerId = usePopperContainerId; +exports.usePopperContentEmits = usePopperContentEmits; +exports.usePopperContentProps = usePopperContentProps; +exports.usePopperCoreConfigProps = usePopperCoreConfigProps; +exports.usePopperProps = usePopperProps; +exports.usePopperTriggerProps = usePopperTriggerProps; +exports.usePreventGlobal = usePreventGlobal; +exports.useProp = useProp; +exports.useSameTarget = useSameTarget; +exports.useSize = useSize; +exports.useSizeProp = useSizeProp; +exports.useSizeProps = useSizeProps; +exports.useSpace = useSpace; +exports.useTeleport = useTeleport; +exports.useThrottleRender = useThrottleRender; +exports.useTimeout = useTimeout; +exports.useTooltipContentProps = useTooltipContentProps; +exports.useTooltipContentPropsDefaults = useTooltipContentPropsDefaults; +exports.useTooltipModelToggle = useTooltipModelToggle; +exports.useTooltipModelToggleEmits = useTooltipModelToggleEmits; +exports.useTooltipModelToggleProps = useTooltipModelToggleProps; +exports.useTooltipProps = useTooltipProps; +exports.useTooltipTriggerProps = useTooltipTriggerProps; +exports.useTooltipTriggerPropsDefaults = useTooltipTriggerPropsDefaults; +exports.useTransitionFallthrough = useTransitionFallthrough; +exports.useTransitionFallthroughEmits = useTransitionFallthroughEmits; +exports.useZIndex = useZIndex; +exports.vRepeatClick = vRepeatClick; +exports.valueEquals = valueEquals; +exports.version = version; +exports.virtualizedGridProps = virtualizedGridProps; +exports.virtualizedListProps = virtualizedListProps; +exports.virtualizedProps = virtualizedProps; +exports.virtualizedScrollbarProps = virtualizedScrollbarProps; +exports.watermarkProps = watermarkProps; +exports.zIndexContextKey = zIndexContextKey; +}); \ No newline at end of file diff --git a/TAT/js/vue.global.prod.js b/TAT/js/vue.global.prod.js new file mode 100644 index 0000000..b17aef4 --- /dev/null +++ b/TAT/js/vue.global.prod.js @@ -0,0 +1,13 @@ +/** +* vue v3.5.34 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/var Vue=function(e){"use strict";var t,n,r;let i,l,s,o,a,c,u,h,d,p,f,g,m;function y(e){let t=Object.create(null);for(let n of e.split(","))t[n]=1;return e=>e in t}let b={},_=[],S=()=>{},x=()=>!1,C=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&(e.charCodeAt(2)>122||97>e.charCodeAt(2)),k=e=>e.startsWith("onUpdate:"),T=Object.assign,w=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},N=Object.prototype.hasOwnProperty,A=(e,t)=>N.call(e,t),E=Array.isArray,I=e=>"function"==typeof e,R=e=>"string"==typeof e,O=e=>"symbol"==typeof e,M=e=>null!==e&&"object"==typeof e,P=e=>(M(e)||I(e))&&I(e.then)&&I(e.catch),F=Object.prototype.toString,L=e=>R(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,$=y(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),D=y("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),V=e=>{let t=Object.create(null);return n=>t[n]||(t[n]=e(n))},B=/-\w/g,j=V(e=>e.replace(B,e=>e.slice(1).toUpperCase())),U=/\B([A-Z])/g,H=V(e=>e.replace(U,"-$1").toLowerCase()),q=V(e=>e.charAt(0).toUpperCase()+e.slice(1)),W=V(e=>e?`on${q(e)}`:""),K=(e,t)=>!Object.is(e,t),z=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},G=e=>{let t=parseFloat(e);return isNaN(t)?e:t},X=e=>{let t=R(e)?Number(e):NaN;return isNaN(t)?e:t},Q=()=>i||(i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{}),Z=y("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");function Y(e){if(E(e)){let t={};for(let n=0;n{if(e){let n=e.split(et);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function ei(e){let t="";if(R(e))t=e;else if(E(e))for(let n=0;neu(e,t))}let ed=e=>!!(e&&!0===e.__v_isRef),ep=e=>R(e)?e:null==e?"":E(e)||M(e)&&(e.toString===F||!I(e.toString))?ed(e)?ep(e.value):JSON.stringify(e,ef,2):String(e),ef=(e,t)=>{let n;if(ed(t))return ef(e,t.value);if("[object Map]"===(n=t,F.call(n)))return{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],r)=>(e[eg(t,r)+" =>"]=n,e),{})};{let e;if("[object Set]"===(e=t,F.call(e)))return{[`Set(${t.size})`]:[...t.values()].map(e=>eg(e))};else{if(O(t))return eg(t);let e;if(M(t)&&!E(t)&&"[object Object]"!==(e=t,F.call(e)))return String(t)}}return t},eg=(e,t="")=>{var n;return O(e)?`Symbol(${null!=(n=e.description)?n:t})`:e};class em{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&l&&(l.active?(this.parent=l,this.index=(l.scopes||(l.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){let e,t;if(this._isPaused=!0,this.scopes)for(e=0,t=this.scopes.length;e0&&0==--this._on){if(l===this)l=this.prevScope;else{let e=l;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){let t,n;for(this._active=!1,t=0,n=this.effects.length;t0)){if(a){let e=a;for(a=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}for(;o;){let t=o;for(o=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,1&t.flags)try{t.trigger()}catch(t){e||(e=t)}t=n}}if(e)throw e}}function ex(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function eC(e){let t,n=e.depsTail,r=n;for(;r;){let e=r.prevDep;-1===r.version?(r===n&&(n=e),ew(r),function(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=e}e.deps=t,e.depsTail=n}function ek(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(eT(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function eT(e){if(4&e.flags&&!(16&e.flags)||(e.flags&=-17,e.globalVersion===eO)||(e.globalVersion=eO,!e.isSSR&&128&e.flags&&(!e.deps&&!e._dirty||!ek(e))))return;e.flags|=2;let t=e.dep,n=s,r=eN;s=e,eN=!0;try{ex(e);let n=e.fn(e._value);(0===t.version||K(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(e){throw t.version++,e}finally{s=n,eN=r,eC(e),e.flags&=-3}}function ew(e,t=!1){let{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)ew(e,!0)}t||--n.sc||!n.map||n.map.delete(n.key)}let eN=!0,eA=[];function eE(){eA.push(eN),eN=!1}function eI(){let e=eA.pop();eN=void 0===e||e}function eR(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=s;s=void 0;try{t()}finally{s=e}}}let eO=0;class eM{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class eP{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!s||!eN||s===this.computed)return;let t=this.activeLink;if(void 0===t||t.sub!==s)t=this.activeLink=new eM(s,this),s.deps?(t.prevDep=s.depsTail,s.depsTail.nextDep=t,s.depsTail=t):s.deps=s.depsTail=t,function e(t){if(t.dep.sc++,4&t.sub.flags){let n=t.dep.computed;if(n&&!t.dep.subs){n.flags|=20;for(let t=n.deps;t;t=t.nextDep)e(t)}let r=t.dep.subs;r!==t&&(t.prevSub=r,r&&(r.nextSub=t)),t.dep.subs=t}}(t);else if(-1===t.version&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=s.depsTail,t.nextDep=void 0,s.depsTail.nextDep=t,s.depsTail=t,s.deps===t&&(s.deps=e)}return t}trigger(e){this.version++,eO++,this.notify(e)}notify(e){eb++;try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{eS()}}}let eF=new WeakMap,eL=Symbol(""),e$=Symbol(""),eD=Symbol("");function eV(e,t,n){if(eN&&s){let t=eF.get(e);t||eF.set(e,t=new Map);let r=t.get(n);r||(t.set(n,r=new eP),r.map=t,r.key=n),r.track()}}function eB(e,t,n,r,i,l){let s=eF.get(e);if(!s)return void eO++;let o=e=>{e&&e.trigger()};if(eb++,"clear"===t)s.forEach(o);else{let i=E(e),l=i&&L(n);if(i&&"length"===n){let e=Number(r);s.forEach((t,n)=>{("length"===n||n===eD||!O(n)&&n>=e)&&o(t)})}else switch((void 0!==n||s.has(void 0))&&o(s.get(n)),l&&o(s.get(eD)),t){case"add":if(i)l&&o(s.get("length"));else{let t;o(s.get(eL));"[object Map]"===(t=e,F.call(t))&&o(s.get(e$))}break;case"delete":if(!i){let t;o(s.get(eL));"[object Map]"===(t=e,F.call(t))&&o(s.get(e$))}break;case"set":let a;"[object Map]"===(a=e,F.call(a))&&o(s.get(eL))}}eS()}function ej(e){let t=tm(e);return t===e?t:(eV(t,"iterate",eD),tf(e)?t:t.map(ty))}function eU(e){return eV(e=tm(e),"iterate",eD),e}function eH(e,t){return tp(e)?td(e)?tb(ty(t)):tb(t):ty(t)}let eq={__proto__:null,[Symbol.iterator](){return eW(this,Symbol.iterator,e=>eH(this,e))},concat(...e){return ej(this).concat(...e.map(e=>E(e)?ej(e):e))},entries(){return eW(this,"entries",e=>(e[1]=eH(this,e[1]),e))},every(e,t){return ez(this,"every",e,t,void 0,arguments)},filter(e,t){return ez(this,"filter",e,t,e=>e.map(e=>eH(this,e)),arguments)},find(e,t){return ez(this,"find",e,t,e=>eH(this,e),arguments)},findIndex(e,t){return ez(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ez(this,"findLast",e,t,e=>eH(this,e),arguments)},findLastIndex(e,t){return ez(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ez(this,"forEach",e,t,void 0,arguments)},includes(...e){return eG(this,"includes",e)},indexOf(...e){return eG(this,"indexOf",e)},join(e){return ej(this).join(e)},lastIndexOf(...e){return eG(this,"lastIndexOf",e)},map(e,t){return ez(this,"map",e,t,void 0,arguments)},pop(){return eX(this,"pop")},push(...e){return eX(this,"push",e)},reduce(e,...t){return eJ(this,"reduce",e,t)},reduceRight(e,...t){return eJ(this,"reduceRight",e,t)},shift(){return eX(this,"shift")},some(e,t){return ez(this,"some",e,t,void 0,arguments)},splice(...e){return eX(this,"splice",e)},toReversed(){return ej(this).toReversed()},toSorted(e){return ej(this).toSorted(e)},toSpliced(...e){return ej(this).toSpliced(...e)},unshift(...e){return eX(this,"unshift",e)},values(){return eW(this,"values",e=>eH(this,e))}};function eW(e,t,n){let r=eU(e),i=r[t]();return r===e||tf(e)||(i._next=i.next,i.next=()=>{let e=i._next();return e.done||(e.value=n(e.value)),e}),i}let eK=Array.prototype;function ez(e,t,n,r,i,l){let s=eU(e),o=s!==e&&!tf(e),a=s[t];if(a!==eK[t]){let t=a.apply(e,l);return o?ty(t):t}let c=n;s!==e&&(o?c=function(t,r){return n.call(this,eH(e,t),r,e)}:n.length>2&&(c=function(t,r){return n.call(this,t,r,e)}));let u=a.call(s,c,r);return o&&i?i(u):u}function eJ(e,t,n,r){let i=eU(e),l=i!==e&&!tf(e),s=n,o=!1;i!==e&&(l?(o=0===r.length,s=function(t,r,i){return o&&(o=!1,t=eH(e,t)),n.call(this,t,eH(e,r),i,e)}):n.length>3&&(s=function(t,r,i){return n.call(this,t,r,i,e)}));let a=i[t](s,...r);return o?eH(e,a):a}function eG(e,t,n){let r=tm(e);eV(r,"iterate",eD);let i=r[t](...n);return(-1===i||!1===i)&&tg(n[0])?(n[0]=tm(n[0]),r[t](...n)):i}function eX(e,t,n=[]){eE(),eb++;let r=tm(e)[t].apply(e,n);return eS(),eI(),r}let eQ=y("__proto__,__v_isRef,__isVue"),eZ=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>"arguments"!==e&&"caller"!==e).map(e=>Symbol[e]).filter(O));function eY(e){O(e)||(e=String(e));let t=tm(this);return eV(t,"has",e),t.hasOwnProperty(e)}class e0{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if("__v_skip"===t)return e.__v_skip;let r=this._isReadonly,i=this._isShallow;if("__v_isReactive"===t)return!r;if("__v_isReadonly"===t)return r;if("__v_isShallow"===t)return i;if("__v_raw"===t)return n===(r?i?to:ts:i?tl:ti).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let l=E(e);if(!r){let e;if(l&&(e=eq[t]))return e;if("hasOwnProperty"===t)return eY}let s=Reflect.get(e,t,t_(e)?e:n);if((O(t)?eZ.has(t):eQ(t))||(r||eV(e,"get",t),i))return s;if(t_(s)){let e=l&&L(t)?s:s.value;return r&&M(e)?tu(e):e}return M(s)?r?tu(s):ta(s):s}}class e1 extends e0{constructor(e=!1){super(!1,e)}set(e,t,n,r){let i=e[t],l=E(e)&&L(t);if(!this._isShallow){let e=tp(i);if(tf(n)||tp(n)||(i=tm(i),n=tm(n)),!l&&t_(i)&&!t_(n))if(e)return!0;else return i.value=n,!0}let s=l?Number(t)e;function e9(e){return function(){return"delete"!==e&&("clear"===e?void 0:this)}}function e7(e,t){let n,r=(T(n={get(n){let r=this.__v_raw,i=tm(r),l=tm(n);e||(K(n,l)&&eV(i,"get",n),eV(i,"get",l));let{has:s}=Reflect.getPrototypeOf(i),o=t?e5:e?tb:ty;return s.call(i,n)?o(r.get(n)):s.call(i,l)?o(r.get(l)):void(r!==i&&r.get(n))},get size(){let t=this.__v_raw;return e||eV(tm(t),"iterate",eL),t.size},has(t){let n=this.__v_raw,r=tm(n),i=tm(t);return e||(K(t,i)&&eV(r,"has",t),eV(r,"has",i)),t===i?n.has(t):n.has(t)||n.has(i)},forEach(n,r){let i=this,l=i.__v_raw,s=tm(l),o=t?e5:e?tb:ty;return e||eV(s,"iterate",eL),l.forEach((e,t)=>n.call(r,o(e),o(t),i))}},e?{add:e9("add"),set:e9("set"),delete:e9("delete"),clear:e9("clear")}:{add(e){let n=tm(this),r=Reflect.getPrototypeOf(n),i=tm(e),l=t||tf(e)||tp(e)?e:i;return r.has.call(n,l)||K(e,l)&&r.has.call(n,e)||K(i,l)&&r.has.call(n,i)||(n.add(l),eB(n,"add",l,l)),this},set(e,n){t||tf(n)||tp(n)||(n=tm(n));let r=tm(this),{has:i,get:l}=Reflect.getPrototypeOf(r),s=i.call(r,e);s||(e=tm(e),s=i.call(r,e));let o=l.call(r,e);return r.set(e,n),s?K(n,o)&&eB(r,"set",e,n):eB(r,"add",e,n),this},delete(e){let t=tm(this),{has:n,get:r}=Reflect.getPrototypeOf(t),i=n.call(t,e);i||(e=tm(e),i=n.call(t,e)),r&&r.call(t,e);let l=t.delete(e);return i&&eB(t,"delete",e,void 0),l},clear(){let e=tm(this),t=0!==e.size,n=e.clear();return t&&eB(e,"clear",void 0,void 0),n}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=function(...n){let i,l=this.__v_raw,s=tm(l),o="[object Map]"===(i=s,F.call(i)),a="entries"===r||r===Symbol.iterator&&o,c=l[r](...n),u=t?e5:e?tb:ty;return e||eV(s,"iterate","keys"===r&&o?e$:eL),T(Object.create(c),{next(){let{value:e,done:t}=c.next();return t?{value:e,done:t}:{value:a?[u(e[0]),u(e[1])]:u(e),done:t}}})}}),n);return(t,n,i)=>"__v_isReactive"===n?!e:"__v_isReadonly"===n?e:"__v_raw"===n?t:Reflect.get(A(r,n)&&n in t?r:t,n,i)}let te={get:e7(!1,!1)},tt={get:e7(!1,!0)},tn={get:e7(!0,!1)},tr={get:e7(!0,!0)},ti=new WeakMap,tl=new WeakMap,ts=new WeakMap,to=new WeakMap;function ta(e){return tp(e)?e:th(e,!1,e6,te,ti)}function tc(e){return th(e,!1,e4,tt,tl)}function tu(e){return th(e,!0,e3,tn,ts)}function th(e,t,n,r,i){var l;let s;if(!M(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;let o=(l=e).__v_skip||!Object.isExtensible(l)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}((s=l,F.call(s)).slice(8,-1));if(0===o)return e;let a=i.get(e);if(a)return a;let c=new Proxy(e,2===o?r:n);return i.set(e,c),c}function td(e){return tp(e)?td(e.__v_raw):!!(e&&e.__v_isReactive)}function tp(e){return!!(e&&e.__v_isReadonly)}function tf(e){return!!(e&&e.__v_isShallow)}function tg(e){return!!e&&!!e.__v_raw}function tm(e){let t=e&&e.__v_raw;return t?tm(t):e}function tv(e){return!A(e,"__v_skip")&&Object.isExtensible(e)&&J(e,"__v_skip",!0),e}let ty=e=>M(e)?ta(e):e,tb=e=>M(e)?tu(e):e;function t_(e){return!!e&&!0===e.__v_isRef}function tS(e){return tC(e,!1)}function tx(e){return tC(e,!0)}function tC(e,t){return t_(e)?e:new tk(e,t)}class tk{constructor(e,t){this.dep=new eP,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:tm(e),this._value=t?e:ty(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,n=this.__v_isShallow||tf(e)||tp(e);K(e=n?e:tm(e),t)&&(this._rawValue=e,this._value=n?e:ty(e),this.dep.trigger())}}function tT(e){return t_(e)?e.value:e}let tw={get:(e,t,n)=>"__v_raw"===t?e:tT(Reflect.get(e,t,n)),set:(e,t,n,r)=>{let i=e[t];return t_(i)&&!t_(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function tN(e){return td(e)?e:new Proxy(e,tw)}class tA{constructor(e){this.__v_isRef=!0,this._value=void 0;const t=this.dep=new eP,{get:n,set:r}=e(t.track.bind(t),t.trigger.bind(t));this._get=n,this._set=r}get value(){return this._value=this._get()}set value(e){this._set(e)}}function tE(e){return new tA(e)}class tI{constructor(e,t,n){this._object=e,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0,this._key=O(t)?t:String(t),this._raw=tm(e);let r=!0,i=e;if(!E(e)||O(this._key)||!L(this._key))do r=!tg(i)||tf(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let e=this._object[this._key];return this._shallow&&(e=tT(e)),this._value=void 0===e?this._defaultValue:e}set value(e){if(this._shallow&&t_(this._raw[this._key])){let t=this._object[this._key];if(t_(t)){t.value=e;return}}this._object[this._key]=e}get dep(){var e,t;let n;return e=this._raw,t=this._key,(n=eF.get(e))&&n.get(t)}}class tR{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}class tO{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new eP(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=eO-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=n}notify(){if(this.flags|=16,!(8&this.flags)&&s!==this)return e_(this,!0),!0}get value(){let e=this.dep.track();return eT(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}let tM={},tP=new WeakMap;function tF(e,t=!1,n=g){if(n){let t=tP.get(n);t||tP.set(n,t=[]),t.push(e)}}function tL(e,t=1/0,n){if(t<=0||!M(e)||e.__v_skip||((n=n||new Map).get(e)||0)>=t)return e;if(n.set(e,t),t--,t_(e))tL(e.value,t,n);else if(E(e))for(let r=0;r{tL(e,t,n)});else{let r;if("[object Object]"===(r=e,F.call(r))){for(let r in e)tL(e[r],t,n);for(let r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&tL(e[r],t,n)}}}return e}function t$(e,t,n,r){try{return r?e(...r):e()}catch(e){tV(e,t,n)}}function tD(e,t,n,r){if(I(e)){let i=t$(e,t,n,r);return i&&P(i)&&i.catch(e=>{tV(e,t,n)}),i}if(E(e)){let i=[];for(let l=0;l=tY(n)?tB.push(e):tB.splice(function(e){let t=tj+1,n=tB.length;for(;t>>1,i=tB[r],l=tY(i);ltY(e)-tY(t));if(tU.length=0,tH)return void tH.push(...e);for(tH=e,tq=0;tqnull==e.id?2&e.flags?-1:1/0:e.id,t0=null,t1=null;function t2(e){let t=t0;return t0=e,t1=e&&e.type.__scopeId||null,t}function t6(e,t=t0,n){if(!t||e._n)return e;let r=(...n)=>{let i;r._d&&il(-1);let l=t2(t);try{i=e(...n)}finally{t2(l),r._d&&il(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function t3(e,t,n,r){let i=e.dirs,l=t&&t.dirs;for(let s=0;s1)return n&&I(t)?t.call(r&&r.proxy):t}}let t5=Symbol.for("v-scx");function t9(e,t){return t7(e,null,{flush:"sync"})}function t7(e,t,n=b){let{flush:r}=n,i=T({},n),s=iw;i.call=(e,t,n)=>tD(e,s,t,n);let o=!1;return"post"===r?i.scheduler=e=>{rq(e,s&&s.suspense)}:"sync"!==r&&(o=!0,i.scheduler=(e,t)=>{t?e():tJ(e)}),i.augmentJob=e=>{t&&(e.flags|=4),o&&(e.flags|=2,s&&(e.id=s.uid,e.i=s))},function(e,t,n=b){let r,i,s,o,{immediate:a,deep:c,once:u,scheduler:h,augmentJob:d,call:p}=n,f=e=>c?e:tf(e)||!1===c||0===c?tL(e,1):tL(e),m=!1,y=!1;if(t_(e)?(i=()=>e.value,m=tf(e)):td(e)?(i=()=>f(e),m=!0):E(e)?(y=!0,m=e.some(e=>td(e)||tf(e)),i=()=>e.map(e=>t_(e)?e.value:td(e)?f(e):I(e)?p?p(e,2):e():void 0)):i=I(e)?t?p?()=>p(e,2):e:()=>{if(s){eE();try{s()}finally{eI()}}let t=g;g=r;try{return p?p(e,3,[o]):e(o)}finally{g=t}}:S,t&&c){let e=i,t=!0===c?1/0:c;i=()=>tL(e(),t)}let _=l,x=()=>{r.stop(),_&&_.active&&w(_.effects,r)};if(u&&t){let e=t;t=(...t)=>{e(...t),x()}}let C=y?Array(e.length).fill(tM):tM,k=e=>{if(1&r.flags&&(r.dirty||e))if(t){let e=r.run();if(c||m||(y?e.some((e,t)=>K(e,C[t])):K(e,C))){s&&s();let n=g;g=r;try{let n=[e,C===tM?void 0:y&&C[0]===tM?[]:C,o];C=e,p?p(t,3,n):t(...n)}finally{g=n}}}else r.run()};return d&&d(k),(r=new ey(i)).scheduler=h?()=>h(k,!1):k,o=e=>tF(e,!1,r),s=r.onStop=()=>{let e=tP.get(r);if(e){if(p)p(e,4);else for(let t of e)t();tP.delete(r)}},t?a?k(!0):C=r.run():h?h(k.bind(null,!0),!0):r.run(),x.pause=r.pause.bind(r),x.resume=r.resume.bind(r),x.stop=x,x}(e,t,i)}function ne(e,t,n){let r,i=this.proxy,l=R(e)?e.includes(".")?nt(i,e):()=>i[e]:e.bind(i,i);I(t)?r=t:(r=t.handler,n=t);let s=iA(this),o=t7(l,r.bind(i),n);return s(),o}function nt(e,t){let n=t.split(".");return()=>{let t=e;for(let e=0;ee&&(e.disabled||""===e.disabled),nl=e=>"u">typeof SVGElement&&e instanceof SVGElement,ns=e=>"function"==typeof MathMLElement&&e instanceof MathMLElement,no=(e,t)=>{let n=e&&e.to;return R(n)?t?t(n):null:n};function na(e,t,n,{o:{insert:r},m:i},l=2){0===l&&r(e.targetAnchor,t,n);let{el:s,anchor:o,shapeFlag:a,children:c,props:u}=e,h=2===l;if(h&&r(s,t,n),!nn.has(e)&&(!h||ni(u))&&16&a)for(let e=0;e{e.isMounted=!0}),n2(()=>{e.isUnmounting=!0}),e}let nf=[Function,Array],ng={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:nf,onEnter:nf,onAfterEnter:nf,onEnterCancelled:nf,onBeforeLeave:nf,onLeave:nf,onAfterLeave:nf,onLeaveCancelled:nf,onBeforeAppear:nf,onAppear:nf,onAfterAppear:nf,onAppearCancelled:nf},nm=e=>{let t=e.subTree;return t.component?nm(t.component):t};function nv(e){let t=e[0];if(e.length>1){for(let n of e)if(n.type!==r5){t=n;break}}return t}let ny={name:"BaseTransition",props:ng,setup(e,{slots:t}){let n=iN(),r=np();return()=>{let i=t.default&&nk(t.default(),!0),l=i&&i.length?nv(i):n.subTree?iy():void 0;if(!l)return;let s=tm(e),{mode:o}=s;if(r.isLeaving)return nS(l);let a=nx(l);if(!a)return nS(l);let c=n_(a,s,r,n,e=>c=e);a.type!==r5&&nC(a,c);let u=n.subTree&&nx(n.subTree);if(u&&u.type!==r5&&!ic(u,a)&&nm(n).type!==r5){let e=n_(u,s,r,n);if(nC(u,e),"out-in"===o&&a.type!==r5)return r.isLeaving=!0,e.afterLeave=()=>{r.isLeaving=!1,8&n.job.flags||n.update(),delete e.afterLeave,u=void 0},nS(l);"in-out"===o&&a.type!==r5?e.delayLeave=(e,t,n)=>{nb(r,u)[String(u.key)]=u,e[nh]=()=>{t(),e[nh]=void 0,delete c.delayedLeave,u=void 0},c.delayedLeave=()=>{n(),delete c.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return l}}};function nb(e,t){let{leavingVNodes:n}=e,r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function n_(e,t,n,r,i){let{appear:l,mode:s,persisted:o=!1,onBeforeEnter:a,onEnter:c,onAfterEnter:u,onEnterCancelled:h,onBeforeLeave:d,onLeave:p,onAfterLeave:f,onLeaveCancelled:g,onBeforeAppear:m,onAppear:y,onAfterAppear:b,onAppearCancelled:_}=t,S=String(e.key),x=nb(n,e),C=(e,t)=>{e&&tD(e,r,9,t)},k=(e,t)=>{let n=t[1];C(e,t),E(e)?e.every(e=>e.length<=1)&&n():e.length<=1&&n()},T={mode:s,persisted:o,beforeEnter(t){let r=a;if(!n.isMounted)if(!l)return;else r=m||a;t[nh]&&t[nh](!0);let i=x[S];i&&ic(e,i)&&i.el[nh]&&i.el[nh](),C(r,[t])},enter(t){if(x[S]===e)return;let r=c,i=u,s=h;if(!n.isMounted)if(!l)return;else r=y||c,i=b||u,s=_||h;let o=!1;t[nd]=e=>{o||(o=!0,e?C(s,[t]):C(i,[t]),T.delayedLeave&&T.delayedLeave(),t[nd]=void 0)};let a=t[nd].bind(null,!1);r?k(r,[t,a]):a()},leave(t,r){let i=String(e.key);if(t[nd]&&t[nd](!0),n.isUnmounting)return r();C(d,[t]);let l=!1;t[nh]=n=>{l||(l=!0,r(),n?C(g,[t]):C(f,[t]),t[nh]=void 0,x[i]===e&&delete x[i])};let s=t[nh].bind(null,!1);x[i]=e,p?k(p,[t,s]):s()},clone(e){let l=n_(e,t,n,r,i);return i&&i(l),l}};return T}function nS(e){if(nH(e))return(e=im(e)).children=null,e}function nx(e){if(!nH(e))return e.type.__isTeleport&&e.children?nv(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:n}=e;if(n){if(16&t)return n[0];if(32&t&&I(n.default))return n.default()}}function nC(e,t){6&e.shapeFlag&&e.component?(e.transition=t,nC(e.component.subTree,t)):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function nk(e,t=!1,n){let r=[],i=0;for(let l=0;l1)for(let e=0;enE(e,t&&(E(t)?t[l]:t),n,r,i));if(nj(r)&&!i){512&r.shapeFlag&&r.type.__asyncResolved&&r.component.subTree.component&&nE(e,t,n,r.component.subTree);return}let l=4&r.shapeFlag?i$(r.component):r.el,s=i?null:l,{i:o,r:a}=e,c=t&&t.r,u=o.refs===b?o.refs={}:o.refs,h=o.setupState,d=tm(h),p=h===b?x:e=>!nN(u,e)&&A(d,e),f=(e,t)=>!(t&&nN(u,t));if(null!=c&&c!==a&&(nI(t),R(c)?(u[c]=null,p(c)&&(h[c]=null)):t_(c)&&(f(c,t.k)&&(c.value=null),t.k&&(u[t.k]=null))),I(a))t$(a,o,12,[s,u]);else{let t=R(a),r=t_(a);if(t||r){let o=()=>{if(e.f){let n=t?p(a)?h[a]:u[a]:f()||!e.k?a.value:u[e.k];if(i)E(n)&&w(n,l);else if(E(n))n.includes(l)||n.push(l);else if(t)u[a]=[l],p(a)&&(h[a]=u[a]);else{let t=[l];f(a,e.k)&&(a.value=t),e.k&&(u[e.k]=t)}}else t?(u[a]=s,p(a)&&(h[a]=s)):r&&(f(a,e.k)&&(a.value=s),e.k&&(u[e.k]=s))};if(s){let t=()=>{o(),nA.delete(e)};t.id=-1,nA.set(e,t),rq(t,n)}else nI(e),o()}}}function nI(e){let t=nA.get(e);t&&(t.flags|=8,nA.delete(e))}let nR=!1,nO=()=>{nR||(console.error("Hydration completed but contains mismatches."),nR=!0)},nM=e=>{if(1===e.nodeType){if(e.namespaceURI.includes("svg")&&"foreignObject"!==e.tagName)return"svg";if(e.namespaceURI.includes("MathML"))return"mathml"}},nP=e=>8===e.nodeType;function nF(e){let{mt:t,p:n,o:{patchProp:r,createText:i,nextSibling:l,parentNode:s,remove:o,insert:a,createComment:c}}=e,u=(n,r,o,c,b,_=!1)=>{_=_||!!r.dynamicChildren;let S=nP(n)&&"["===n.data,x=()=>f(n,r,o,c,b,S),{type:C,ref:k,shapeFlag:T,patchFlag:w}=r,N=n.nodeType;r.el=n,-2===w&&(_=!1,r.dynamicChildren=null);let A=null;switch(C){case r8:3!==N?""===r.children?(a(r.el=i(""),s(n),n),A=n):A=x():(n.data!==r.children&&(nO(),n.data=r.children),A=l(n));break;case r5:y(n)?(A=l(n),m(r.el=n.content.firstChild,n,o)):A=8!==N||S?x():l(n);break;case r9:if(S&&(N=(n=l(n)).nodeType),1===N||3===N){A=n;let e=!r.children.length;for(let t=0;t{s=s||!!t.dynamicChildren;let{type:a,props:c,patchFlag:u,shapeFlag:h,dirs:p,transition:f}=t,g="input"===a||"option"===a;if(g||-1!==u){let a;p&&t3(t,null,n,"created");let b=!1;if(y(e)){b=rG(null,f)&&n&&n.vnode.props&&n.vnode.props.appear;let r=e.content.firstChild;if(b){let e=r.getAttribute("class");e&&(r.$cls=e),f.beforeEnter(r)}m(r,e,n),t.el=e=r}if(16&h&&!(c&&(c.innerHTML||c.textContent))){let r=d(e.firstChild,t,e,n,i,l,s);for(;r;){nD(e,1)||nO();let t=r;r=r.nextSibling,o(t)}}else if(8&h){let n=t.children;` +`===n[0]&&("PRE"===e.tagName||"TEXTAREA"===e.tagName)&&(n=n.slice(1));let{textContent:r}=e;r!==n&&r!==n.replace(/\r\n|\r/g,` +`)&&(nD(e,0)||nO(),e.textContent=t.children)}if(c){if(g||!s||48&u){let t=e.tagName.includes("-");for(let i in c)(g&&(i.endsWith("value")||"indeterminate"===i)||C(i)&&!$(i)||"."===i[0]||t&&!$(i))&&r(e,i,null,c[i],void 0,n)}else if(c.onClick)r(e,"onClick",null,c.onClick,void 0,n);else if(4&u&&td(c.style))for(let e in c.style)c.style[e]}(a=c&&c.onVnodeBeforeMount)&&iC(a,n,t),p&&t3(t,null,n,"beforeMount"),((a=c&&c.onVnodeMounted)||p||b)&&r6(()=>{a&&iC(a,n,t),b&&f.enter(e),p&&t3(t,null,n,"mounted")},i)}return e.nextSibling},d=(e,t,r,s,o,c,h)=>{h=h||!!t.dynamicChildren;let d=t.children,p=d.length;for(let t=0;t{let{slotScopeIds:u}=t;u&&(i=i?i.concat(u):u);let h=s(e),p=d(l(e),t,h,n,r,i,o);return p&&nP(p)&&"]"===p.data?l(t.anchor=p):(nO(),a(t.anchor=c("]"),h,p),p)},f=(e,t,r,i,a,c)=>{if(nD(e.parentElement,1)||nO(),t.el=null,c){let t=g(e);for(;;){let n=l(e);if(n&&n!==t)o(n);else break}}let u=l(e),h=s(e);return o(e),n(null,t,h,u,r,i,nM(h),a),r&&(r.vnode.el=t.el,rR(r,t.el)),u},g=(e,t="[",n="]")=>{let r=0;for(;e;)if((e=l(e))&&nP(e)&&(e.data===t&&r++,e.data===n))if(0===r)return l(e);else r--;return e},m=(e,t,n)=>{let r=t.parentNode;r&&r.replaceChild(e,t);let i=n;for(;i;)i.vnode.el===t&&(i.vnode.el=i.subTree.el=e),i=i.parent},y=e=>1===e.nodeType&&"TEMPLATE"===e.tagName;return[(e,t)=>{if(!t.hasChildNodes()){n(null,e,t),tZ(),t._vnode=e;return}u(t.firstChild,e,null,null,null),tZ(),t._vnode=e},u]}let nL="data-allow-mismatch",n$={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function nD(e,t){if(0===t||1===t)for(;e&&!e.hasAttribute(nL);)e=e.parentElement;let n=e&&e.getAttribute(nL);if(null==n)return!1;{if(""===n)return!0;let e=n.split(",");return!!(0===t&&e.includes("children"))||e.includes(n$[t])}}let nV=Q().requestIdleCallback||(e=>setTimeout(e,1)),nB=Q().cancelIdleCallback||(e=>clearTimeout(e)),nj=e=>!!e.type.__asyncLoader;function nU(e,t){let{ref:n,props:r,children:i,ce:l}=t.vnode,s=ip(e,r,i);return s.ref=n,s.ce=l,delete t.vnode.ce,s}let nH=e=>e.type.__isKeepAlive;function nq(e,t){let n;if(E(e))return e.some(e=>nq(e,t));if(R(e))return e.split(",").includes(t);return"[object RegExp]"===(n=e,F.call(n))&&(e.lastIndex=0,e.test(t))}function nW(e,t){nz(e,"a",t)}function nK(e,t){nz(e,"da",t)}function nz(e,t,n=iw){let r=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(nX(t,r,n),n){let e=n.parent;for(;e&&e.parent;)nH(e.parent.vnode)&&function(e,t,n,r){let i=nX(t,e,r,!0);n6(()=>{w(r[t],i)},n)}(r,t,n,e),e=e.parent}}function nJ(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function nG(e){return 128&e.shapeFlag?e.ssContent:e}function nX(e,t,n=iw,r=!1){if(n){let i=n[e]||(n[e]=[]),l=t.__weh||(t.__weh=(...r)=>{eE();let i=iA(n),l=tD(t,n,e,r);return i(),eI(),l});return r?i.unshift(l):i.push(l),l}}let nQ=e=>(t,n=iw)=>{iR&&"sp"!==e||nX(e,(...e)=>t(...e),n)},nZ=nQ("bm"),nY=nQ("m"),n0=nQ("bu"),n1=nQ("u"),n2=nQ("bum"),n6=nQ("um"),n3=nQ("sp"),n4=nQ("rtg"),n8=nQ("rtc");function n5(e,t=iw){nX("ec",e,t)}let n9="components",n7=Symbol.for("v-ndc");function re(e,t,n=!0,r=!1){let i=t0||iw;if(i){let n=i.type;if(e===n9){let e=iD(n,!1);if(e&&(e===t||e===j(t)||e===q(j(t))))return n}let l=rt(i[e]||n[e],t)||rt(i.appContext[e],t);return!l&&r?n:l}}function rt(e,t){return e&&(e[t]||e[j(t)]||e[q(j(t))])}let rn=e=>e?iI(e)?i$(e):rn(e.parent):null,rr=T(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>rn(e.parent),$root:e=>rn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>rh(e),$forceUpdate:e=>e.f||(e.f=()=>{tJ(e.update)}),$nextTick:e=>e.n||(e.n=tz.bind(e.proxy)),$watch:e=>ne.bind(e)}),ri=(e,t)=>e!==b&&!e.__isScriptSetup&&A(e,t),rl={get({_:e},t){let n,r;if("__v_skip"===t)return!0;let{ctx:i,setupState:l,data:s,props:o,accessCache:a,type:c,appContext:u}=e;if("$"!==t[0]){let e=a[t];if(void 0!==e)switch(e){case 1:return l[t];case 2:return s[t];case 4:return i[t];case 3:return o[t]}else{if(ri(l,t))return a[t]=1,l[t];if(s!==b&&A(s,t))return a[t]=2,s[t];if(A(o,t))return a[t]=3,o[t];if(i!==b&&A(i,t))return a[t]=4,i[t];rc&&(a[t]=0)}}let h=rr[t];return h?("$attrs"===t&&eV(e.attrs,"get",""),h(e)):(n=c.__cssModules)&&(n=n[t])?n:i!==b&&A(i,t)?(a[t]=4,i[t]):A(r=u.config.globalProperties,t)?r[t]:void 0},set({_:e},t,n){let{data:r,setupState:i,ctx:l}=e;return ri(i,t)?(i[t]=n,!0):r!==b&&A(r,t)?(r[t]=n,!0):!A(e.props,t)&&!("$"===t[0]&&t.slice(1)in e)&&(l[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:i,props:l,type:s}},o){let a;return!!(n[o]||e!==b&&"$"!==o[0]&&A(e,o)||ri(t,o)||A(l,o)||A(r,o)||A(rr,o)||A(i.config.globalProperties,o)||(a=s.__cssModules)&&a[o])},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:A(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}},rs=T({},rl,{get(e,t){if(t!==Symbol.unscopables)return rl.get(e,t,e)},has:(e,t)=>"_"!==t[0]&&!Z(t)});function ro(e){let t=iN();return t.setupContext||(t.setupContext=iL(t))}function ra(e){return E(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}let rc=!0;function ru(e,t,n){tD(E(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function rh(e){let t,n=e.type,{mixins:r,extends:i}=n,{mixins:l,optionsCache:s,config:{optionMergeStrategies:o}}=e.appContext,a=s.get(n);return a?t=a:l.length||r||i?(t={},l.length&&l.forEach(e=>rd(t,e,o,!0)),rd(t,n,o)):t=n,M(n)&&s.set(n,t),t}function rd(e,t,n,r=!1){let{mixins:i,extends:l}=t;for(let s in l&&rd(e,l,n,!0),i&&i.forEach(t=>rd(e,t,n,!0)),t)if(r&&"expose"===s);else{let r=rp[s]||n&&n[s];e[s]=r?r(e[s],t[s]):t[s]}return e}let rp={data:rf,props:ry,emits:ry,methods:rv,computed:rv,beforeCreate:rm,created:rm,beforeMount:rm,mounted:rm,beforeUpdate:rm,updated:rm,beforeDestroy:rm,beforeUnmount:rm,destroyed:rm,unmounted:rm,activated:rm,deactivated:rm,errorCaptured:rm,serverPrefetch:rm,components:rv,directives:rv,watch:function(e,t){if(!e)return t;if(!t)return e;let n=T(Object.create(null),e);for(let r in t)n[r]=rm(e[r],t[r]);return n},provide:rf,inject:function(e,t){return rv(rg(e),rg(t))}};function rf(e,t){return t?e?function(){return T(I(e)?e.call(this,this):e,I(t)?t.call(this,this):t)}:t:e}function rg(e){if(E(e)){let t={};for(let n=0;n"modelValue"===t||"model-value"===t?e.modelModifiers:e[`${t}Modifiers`]||e[`${j(t)}Modifiers`]||e[`${H(t)}Modifiers`];function rC(e,t,...n){let r;if(e.isUnmounted)return;let i=e.vnode.props||b,l=n,s=t.startsWith("update:"),o=s&&rx(i,t.slice(7));o&&(o.trim&&(l=n.map(e=>R(e)?e.trim():e)),o.number&&(l=n.map(G)));let a=i[r=W(t)]||i[r=W(j(t))];!a&&s&&(a=i[r=W(H(t))]),a&&tD(a,e,6,l);let c=i[r+"Once"];if(c){if(e.emitted){if(e.emitted[r])return}else e.emitted={};e.emitted[r]=!0,tD(c,e,6,l)}}let rk=new WeakMap;function rT(e,t){return!!e&&!!C(t)&&(A(e,(t=t.slice(2).replace(/Once$/,""))[0].toLowerCase()+t.slice(1))||A(e,H(t))||A(e,t))}function rw(e){let t,n,{type:r,vnode:i,proxy:l,withProxy:s,propsOptions:[o],slots:a,attrs:c,emit:u,render:h,renderCache:d,props:p,data:f,setupState:g,ctx:m,inheritAttrs:y}=e,b=t2(e);try{if(4&i.shapeFlag){let e=s||l;t=ib(h.call(e,e,d,p,g,f,m)),n=c}else t=ib(r.length>1?r(p,{attrs:c,slots:a,emit:u}):r(p,null)),n=r.props?c:rN(c)}catch(n){r7.length=0,tV(n,e,1),t=ip(r5)}let _=t;if(n&&!1!==y){let e=Object.keys(n),{shapeFlag:t}=_;e.length&&7&t&&(o&&e.some(k)&&(n=rA(n,o)),_=im(_,n,!1,!0))}return i.dirs&&((_=im(_,null,!1,!0)).dirs=_.dirs?_.dirs.concat(i.dirs):i.dirs),i.transition&&nC(_,i.transition),t=_,t2(b),t}let rN=e=>{let t;for(let n in e)("class"===n||"style"===n||C(n))&&((t||(t={}))[n]=e[n]);return t},rA=(e,t)=>{let n={};for(let r in e)k(r)&&r.slice(9)in t||(n[r]=e[r]);return n};function rE(e,t,n){let r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let i=0;iObject.getPrototypeOf(e)===rO;function rP(e,t,n,r){let i,[l,s]=e.propsOptions,o=!1;if(t)for(let a in t){let c;if($(a))continue;let u=t[a];l&&A(l,c=j(a))?s&&s.includes(c)?(i||(i={}))[c]=u:n[c]=u:rT(e.emitsOptions,a)||a in r&&u===r[a]||(r[a]=u,o=!0)}if(s){let t=tm(n),r=i||b;for(let i=0;i"_"===e||"_ctx"===e||"$stable"===e,rV=e=>E(e)?e.map(ib):[ib(e)],rB=(e,t,n)=>{if(t._n)return t;let r=t6((...e)=>rV(t(...e)),n);return r._c=!1,r},rj=(e,t,n)=>{let r=e._ctx;for(let n in e){if(rD(n))continue;let i=e[n];if(I(i))t[n]=rB(n,i,r);else if(null!=i){let e=rV(i);t[n]=()=>e}}},rU=(e,t)=>{let n=rV(t);e.slots.default=()=>n},rH=(e,t,n)=>{for(let r in t)(n||!rD(r))&&(e[r]=t[r])},rq=r6;function rW(e){return rK(e,nF)}function rK(e,t){var n;let r,i;Q().__VUE__=!0;let{insert:l,remove:s,patchProp:o,createElement:a,createText:c,createComment:h,setText:d,setElementText:p,parentNode:f,nextSibling:g,setScopeId:m=S,insertStaticContent:y}=e,x=(e,t,n,r=null,i=null,l=null,s,o=null,a=!!t.dynamicChildren)=>{if(e===t)return;e&&!ic(e,t)&&(r=es(e),et(e,i,l,!0),e=null),-2===t.patchFlag&&(a=!1,t.dynamicChildren=null);let{type:c,ref:u,shapeFlag:h}=t;switch(c){case r8:C(e,t,n,r);break;case r5:k(e,t,n,r);break;case r9:null==e&&w(t,n,r,s);break;case r4:B(e,t,n,r,i,l,s,o,a);break;default:1&h?N(e,t,n,r,i,l,s,o,a):6&h?U(e,t,n,r,i,l,s,o,a):64&h?c.process(e,t,n,r,i,l,s,o,a,ec):128&h&&c.process(e,t,n,r,i,l,s,o,a,ec)}null!=u&&i?nE(u,e&&e.ref,l,t||e,!t):null==u&&e&&null!=e.ref&&nE(e.ref,null,l,e,!0)},C=(e,t,n,r)=>{if(null==e)l(t.el=c(t.children),n,r);else{let n=t.el=e.el;t.children!==e.children&&d(n,t.children)}},k=(e,t,n,r)=>{null==e?l(t.el=h(t.children||""),n,r):t.el=e.el},w=(e,t,n,r)=>{[e.el,e.anchor]=y(e.children,t,n,r,e.el,e.anchor)},N=(e,t,n,r,i,l,s,o,a)=>{if("svg"===t.type?s="svg":"math"===t.type&&(s="mathml"),null==e)R(t,n,r,i,l,s,o,a);else{let n=e.el&&e.el._isVueCE?e.el:null;try{n&&n._beginPatch(),L(e,t,i,l,s,o,a)}finally{n&&n._endPatch()}}},R=(e,t,n,r,i,s,c,u)=>{let h,d,{props:f,shapeFlag:g,transition:m,dirs:y}=e;if(h=e.el=a(e.type,s,f&&f.is,f),8&g?p(h,e.children):16&g&&F(e.children,h,null,r,i,rz(e,s),c,u),y&&t3(e,null,r,"created"),O(h,e,e.scopeId,c,r),f){for(let e in f)"value"===e||$(e)||o(h,e,null,f[e],s,r);"value"in f&&o(h,"value",null,f.value,s),(d=f.onVnodeBeforeMount)&&iC(d,r,e)}y&&t3(e,null,r,"beforeMount");let b=rG(i,m);b&&m.beforeEnter(h),l(h,t,n),((d=f&&f.onVnodeMounted)||b||y)&&rq(()=>{d&&iC(d,r,e),b&&m.enter(h),y&&t3(e,null,r,"mounted")},i)},O=(e,t,n,r,i)=>{if(n&&m(e,n),r)for(let t=0;t{for(let c=a;c{let a,c=t.el=e.el,{patchFlag:u,dynamicChildren:h,dirs:d}=t;u|=16&e.patchFlag;let f=e.props||b,g=t.props||b;if(n&&rJ(n,!1),(a=g.onVnodeBeforeUpdate)&&iC(a,n,t,e),d&&t3(t,e,n,"beforeUpdate"),n&&rJ(n,!0),(f.innerHTML&&null==g.innerHTML||f.textContent&&null==g.textContent)&&p(c,""),h?D(e.dynamicChildren,h,c,n,r,rz(t,i),l):s||X(e,t,c,null,n,r,rz(t,i),l,!1),u>0){if(16&u)V(c,f,g,n,i);else if(2&u&&f.class!==g.class&&o(c,"class",null,g.class,i),4&u&&o(c,"style",f.style,g.style,i),8&u){let e=t.dynamicProps;for(let t=0;t{a&&iC(a,n,t,e),d&&t3(t,e,n,"updated")},r)},D=(e,t,n,r,i,l,s)=>{for(let o=0;o{if(t!==n){if(t!==b)for(let l in t)$(l)||l in n||o(e,l,t[l],null,i,r);for(let l in n){if($(l))continue;let s=n[l],a=t[l];s!==a&&"value"!==l&&o(e,l,a,s,i,r)}"value"in n&&o(e,"value",t.value,n.value,i)}},B=(e,t,n,r,i,s,o,a,u)=>{let h=t.el=e?e.el:c(""),d=t.anchor=e?e.anchor:c(""),{patchFlag:p,dynamicChildren:f,slotScopeIds:g}=t;g&&(a=a?a.concat(g):g),null==e?(l(h,n,r),l(d,n,r),F(t.children||[],n,d,i,s,o,a,u)):p>0&&64&p&&f&&e.dynamicChildren&&e.dynamicChildren.length===f.length?(D(e.dynamicChildren,f,n,i,s,o,a),(null!=t.key||i&&t===i.subTree)&&rX(e,t,!0)):X(e,t,n,d,i,s,o,a,u)},U=(e,t,n,r,i,l,s,o,a)=>{t.slotScopeIds=o,null==e?512&t.shapeFlag?i.ctx.activate(t,n,r,s,a):q(t,n,r,i,l,s,a):W(e,t,a)},q=(e,t,n,r,i,l,s)=>{var o,a,c;let h,d,p,f=(o=e,a=r,c=i,h=o.type,d=(a?a.appContext:o.appContext)||ik,(p={uid:iT++,vnode:o,type:h,parent:a,appContext:d,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new em(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:a?a.provides:Object.create(d.provides),ids:a?a.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:function e(t,n,r=!1){let i=r?rL:n.propsCache,l=i.get(t);if(l)return l;let s=t.props,o={},a=[],c=!1;if(!I(t)){let i=t=>{c=!0;let[r,i]=e(t,n,!0);T(o,r),i&&a.push(...i)};!r&&n.mixins.length&&n.mixins.forEach(i),t.extends&&i(t.extends),t.mixins&&t.mixins.forEach(i)}if(!s&&!c)return M(t)&&i.set(t,_),_;if(E(s))for(let e=0;e{let r=e(t,n,!0);r&&(a=!0,T(o,r))};!r&&n.mixins.length&&n.mixins.forEach(i),t.extends&&i(t.extends),t.mixins&&t.mixins.forEach(i)}return s||a?(E(s)?s.forEach(e=>o[e]=null):T(o,s),M(t)&&i.set(t,o),o):(M(t)&&i.set(t,null),null)}(h,d),emit:null,emitted:null,propsDefaults:b,inheritAttrs:h.inheritAttrs,ctx:b,data:b,props:b,attrs:b,slots:b,refs:b,setupState:b,setupContext:null,suspense:c,suspenseId:c?c.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null}).ctx={_:p},p.root=a?a.root:p,p.emit=rC.bind(null,p),o.ce&&o.ce(p),e.component=p);if(nH(e)&&(f.ctx.renderer=ec),function(e,t=!1,n=!1){t&&u(t);let{props:r,children:i}=e.vnode,l=iI(e);!function(e,t,n,r=!1){let i={},l=Object.create(rO);for(let n in e.propsDefaults=Object.create(null),rP(e,t,i,l),e.propsOptions[0])n in i||(i[n]=void 0);n?e.props=r?i:tc(i):e.type.props?e.props=i:e.props=l,e.attrs=l}(e,r,l,t);var s=n||t;let o=e.slots=Object.create(rO);if(32&e.vnode.shapeFlag){let e=i._;e?(rH(o,i,s),s&&J(o,"_",e,!0)):rj(i,o)}else i&&rU(e,i);l&&function(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,rl);let{setup:r}=n;if(r){eE();let n=e.setupContext=r.length>1?iL(e):null,i=iA(e),l=t$(r,e,0,[e.props,n]),s=P(l);if(eI(),i(),(s||e.sp)&&!nj(e)&&nw(e),s){if(l.then(iE,iE),t)return l.then(n=>{iO(e,n,t)}).catch(t=>{tV(t,e,0)});e.asyncDep=l}else iO(e,l,t)}else iP(e,t)}(e,t),t&&u(!1)}(f,!1,s),f.asyncDep){if(i&&i.registerDep(f,K,s),!e.el){let r=f.subTree=ip(r5);k(null,r,t,n),e.placeholder=r.el}}else K(f,e,t,n,i,l,s)},W=(e,t,n)=>{let r=t.component=e.component;if(function(e,t,n){let{props:r,children:i,component:l}=e,{props:s,children:o,patchFlag:a}=t,c=l.emitsOptions;if(t.dirs||t.transition)return!0;if(!n||!(a>=0))return(!!i||!!o)&&(!o||!o.$stable)||r!==s&&(r?!s||rE(r,s,c):!!s);if(1024&a)return!0;if(16&a)return r?rE(r,s,c):!!s;if(8&a){let e=t.dynamicProps;for(let t=0;t{e.scope.on();let a=e.effect=new ey(()=>{if(e.isMounted){let t,{next:n,bu:r,u:i,parent:a,vnode:u}=e;{let t=function e(t){let n=t.subTree.component;if(n)if(n.asyncDep&&!n.asyncResolved)return n;else return e(n)}(e);if(t){n&&(n.el=u.el,G(e,n,o)),t.asyncDep.then(()=>{rq(()=>{e.isUnmounted||c()},l)});return}}let h=n;rJ(e,!1),n?(n.el=u.el,G(e,n,o)):n=u,r&&z(r),(t=n.props&&n.props.onVnodeBeforeUpdate)&&iC(t,a,n,u),rJ(e,!0);let d=rw(e),p=e.subTree;e.subTree=d,x(p,d,f(p.el),es(p),e,l,s),n.el=d.el,null===h&&rR(e,d.el),i&&rq(i,l),(t=n.props&&n.props.onVnodeUpdated)&&rq(()=>iC(t,a,n,u),l)}else{let o,{el:a,props:c}=t,{bm:u,m:h,parent:d,root:p,type:f}=e,g=nj(t);if(rJ(e,!1),u&&z(u),!g&&(o=c&&c.onVnodeBeforeMount)&&iC(o,d,t),rJ(e,!0),a&&i){let t=()=>{e.subTree=rw(e),i(a,e.subTree,e,l,null)};g&&f.__asyncHydrate?f.__asyncHydrate(a,e,t):t()}else{p.ce&&p.ce._hasShadowRoot()&&p.ce._injectChildStyle(f,e.parent?e.parent.type:void 0);let i=e.subTree=rw(e);x(null,i,n,r,e,l,s),t.el=i.el}if(h&&rq(h,l),!g&&(o=c&&c.onVnodeMounted)){let e=t;rq(()=>iC(o,d,e),l)}(256&t.shapeFlag||d&&nj(d.vnode)&&256&d.vnode.shapeFlag)&&e.a&&rq(e.a,l),e.isMounted=!0,t=n=r=null}});e.scope.off();let c=e.update=a.run.bind(a),u=e.job=a.runIfDirty.bind(a);u.i=e,u.id=e.uid,a.scheduler=()=>tJ(u),rJ(e,!0),c()},G=(e,t,n)=>{t.component=e;let r=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,r){let{props:i,attrs:l,vnode:{patchFlag:s}}=e,o=tm(i),[a]=e.propsOptions,c=!1;if((r||s>0)&&!(16&s)){if(8&s){let n=e.vnode.dynamicProps;for(let r=0;r{let{vnode:r,slots:i}=e,l=!0,s=b;if(32&r.shapeFlag){let e=t._;e?n&&1===e?l=!1:rH(i,t,n):(l=!t.$stable,rj(t,i)),s=t}else t&&(rU(e,t),s={default:1});if(l)for(let e in i)rD(e)||null!=s[e]||delete i[e]})(e,t.children,n),eE(),tQ(e),eI()},X=(e,t,n,r,i,l,s,o,a=!1)=>{let c=e&&e.children,u=e?e.shapeFlag:0,h=t.children,{patchFlag:d,shapeFlag:f}=t;if(d>0){if(128&d)return void Y(c,h,n,r,i,l,s,o,a);else if(256&d)return void Z(c,h,n,r,i,l,s,o,a)}8&f?(16&u&&el(c,i,l),h!==c&&p(n,h)):16&u?16&f?Y(c,h,n,r,i,l,s,o,a):el(c,i,l,!0):(8&u&&p(n,""),16&f&&F(h,n,r,i,l,s,o,a))},Z=(e,t,n,r,i,l,s,o,a)=>{let c;e=e||_,t=t||_;let u=e.length,h=t.length,d=Math.min(u,h);for(c=0;ch?el(e,i,l,!0,!1,d):F(t,n,r,i,l,s,o,a,d)},Y=(e,t,n,r,i,l,s,o,a)=>{let c=0,u=t.length,h=e.length-1,d=u-1;for(;c<=h&&c<=d;){let r=e[c],u=t[c]=a?i_(t[c]):ib(t[c]);if(ic(r,u))x(r,u,n,null,i,l,s,o,a);else break;c++}for(;c<=h&&c<=d;){let r=e[h],c=t[d]=a?i_(t[d]):ib(t[d]);if(ic(r,c))x(r,c,n,null,i,l,s,o,a);else break;h--,d--}if(c>h){if(c<=d){let e=d+1,h=ed)for(;c<=h;)et(e[c],i,l,!0),c++;else{let p,f=c,g=c,m=new Map;for(c=g;c<=d;c++){let e=t[c]=a?i_(t[c]):ib(t[c]);null!=e.key&&m.set(e.key,c)}let y=0,b=d-g+1,S=!1,C=0,k=Array(b);for(c=0;c=b){et(u,i,l,!0);continue}if(null!=u.key)r=m.get(u.key);else for(p=g;p<=d;p++)if(0===k[p-g]&&ic(u,t[p])){r=p;break}void 0===r?et(u,i,l,!0):(k[r-g]=c+1,r>=C?C=r:S=!0,x(u,t[r],n,null,i,l,s,o,a),y++)}let T=S?function(e){let t,n,r,i,l,s=e.slice(),o=[0],a=e.length;for(t=0;t>1]]0&&(s[t]=o[r-1]),o[r]=t)}}for(r=o.length,i=o[r-1];r-- >0;)o[r]=i,i=s[i];return o}(k):_;for(p=T.length-1,c=b-1;c>=0;c--){let e=g+c,h=t[e],d=t[e+1],f=e+1{let{el:o,type:a,transition:c,children:u,shapeFlag:h}=e;if(6&h)return void ee(e.component.subTree,t,n,r);if(128&h)return void e.suspense.move(t,n,r);if(64&h)return void a.move(e,t,n,ec);if(a===r4){l(o,t,n);for(let e=0;e{let i;for(;e&&e!==t;)i=g(e),l(e,n,r),e=i;l(t,n,r)})(e,t,n);if(2!==r&&1&h&&c)if(0===r)c.beforeEnter(o),l(o,t,n),rq(()=>c.enter(o),i);else{let{leave:r,delayLeave:i,afterLeave:a}=c,u=()=>{e.ctx.isUnmounted?s(o):l(o,t,n)},h=()=>{o._isLeaving&&o[nh](!0),r(o,()=>{u(),a&&a()})};i?i(o,u,h):h()}else l(o,t,n)},et=(e,t,n,r=!1,i=!1)=>{let l,{type:s,props:o,ref:a,children:c,dynamicChildren:u,shapeFlag:h,patchFlag:d,dirs:p,cacheIndex:f,memo:g}=e;if(-2===d&&(i=!1),null!=a&&(eE(),nE(a,null,n,e,!0),eI()),null!=f&&(t.renderCache[f]=void 0),256&h)return void t.ctx.deactivate(e);let m=1&h&&p,y=!nj(e);if(y&&(l=o&&o.onVnodeBeforeUnmount)&&iC(l,t,e),6&h)ei(e.component,n,r);else{if(128&h)return void e.suspense.unmount(n,r);m&&t3(e,null,t,"beforeUnmount"),64&h?e.type.remove(e,t,n,ec,r):u&&!u.hasOnce&&(s!==r4||d>0&&64&d)?el(u,t,n,!1,!0):(s===r4&&384&d||!i&&16&h)&&el(c,t,n),r&&en(e)}let b=null!=g&&null==f;(y&&(l=o&&o.onVnodeUnmounted)||m||b)&&rq(()=>{l&&iC(l,t,e),m&&t3(e,null,t,"unmounted"),b&&(e.el=null)},n)},en=e=>{let{type:t,el:n,anchor:r,transition:i}=e;if(t===r4)return void er(n,r);if(t===r9)return void(({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=g(e),s(e),e=n;s(t)})(e);let l=()=>{s(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(1&e.shapeFlag&&i&&!i.persisted){let{leave:t,delayLeave:r}=i,s=()=>t(n,l);r?r(e.el,l,s):s()}else l()},er=(e,t)=>{let n;for(;e!==t;)n=g(e),s(e),e=n;s(t)},ei=(e,t,n)=>{let{bum:r,scope:i,job:l,subTree:s,um:o,m:a,a:c}=e;rQ(a),rQ(c),r&&z(r),i.stop(),l&&(l.flags|=8,et(s,e,t,n)),o&&rq(o,t),rq(()=>{e.isUnmounted=!0},t)},el=(e,t,n,r=!1,i=!1,l=0)=>{for(let s=l;s{if(6&e.shapeFlag)return es(e.component.subTree);if(128&e.shapeFlag)return e.suspense.next();let t=g(e.anchor||e.el),n=t&&t[nr];return n?g(n):t},eo=!1,ea=(e,t,n)=>{let r;null==e?t._vnode&&(et(t._vnode,null,null,!0),r=t._vnode.component):x(t._vnode||null,e,t,null,null,null,n),t._vnode=e,eo||(eo=!0,tQ(r),tZ(),eo=!1)},ec={p:x,um:et,m:ee,r:en,mt:q,mc:F,pc:X,pbc:D,n:es,o:e};return t&&([r,i]=t(ec)),{render:ea,hydrate:r,createApp:(n=r,function(e,t=null){I(e)||(e=T({},e)),null==t||M(t)||(t=null);let r=rb(),i=new WeakSet,l=[],s=!1,o=r.app={_uid:r_++,_component:e,_props:t,_container:null,_context:r,_instance:null,version:iU,get config(){return r.config},set config(v){},use:(e,...t)=>(i.has(e)||(e&&I(e.install)?(i.add(e),e.install(o,...t)):I(e)&&(i.add(e),e(o,...t))),o),mixin:e=>(r.mixins.includes(e)||r.mixins.push(e),o),component:(e,t)=>t?(r.components[e]=t,o):r.components[e],directive:(e,t)=>t?(r.directives[e]=t,o):r.directives[e],mount(i,l,a){if(!s){let c=o._ceVNode||ip(e,t);return c.appContext=r,!0===a?a="svg":!1===a&&(a=void 0),l&&n?n(c,i):ea(c,i,a),s=!0,o._container=i,i.__vue_app__=o,i$(c.component)}},onUnmount(e){l.push(e)},unmount(){s&&(tD(l,o._instance,16),ea(null,o._container),delete o._container.__vue_app__)},provide:(e,t)=>(r.provides[e]=t,o),runWithContext(e){let t=rS;rS=o;try{return e()}finally{rS=t}}};return o})}}function rz({type:e,props:t},n){return"svg"===n&&"foreignObject"===e||"mathml"===n&&"annotation-xml"===e&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function rJ({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function rG(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function rX(e,t,n=!1){let r=e.children,i=t.children;if(E(r)&&E(i))for(let e=0;ee.__isSuspense,rY=0;function r0(e,t){let n=e.props&&e.props[t];I(n)&&n()}function r1(e,t,n,r,i,l,s,o,a,c,u=!1){var h;let d,p,{p:f,m:g,um:m,n:y,o:{parentNode:b,remove:_}}=c,S=null!=(d=(h=e).props&&h.props.suspensible)&&!1!==d;S&&t&&t.pendingBranch&&(p=t.pendingId,t.deps++);let x=e.props?X(e.props.timeout):void 0,C=l,k={vnode:e,parent:t,parentComponent:n,namespace:s,container:r,hiddenContainer:i,deps:0,pendingId:rY++,timeout:"number"==typeof x?x:-1,activeBranch:null,isFallbackMountPending:!1,pendingBranch:null,isInFallback:!u,isHydrating:u,isUnmounted:!1,effects:[],resolve(e=!1,n=!1){let{vnode:r,activeBranch:i,pendingBranch:s,pendingId:o,effects:a,parentComponent:c,container:u,isInFallback:h}=k,d=!1;if(k.isHydrating)k.isHydrating=!1;else if(!e){d=i&&s.transition&&"out-in"===s.transition.mode;let e=!1;d&&(i.transition.afterLeave=()=>{o===k.pendingId&&(g(s,u,l!==C||e?l:y(i),0),tX(a),h&&r.ssFallback&&(r.ssFallback.el=null))}),i&&!k.isFallbackMountPending&&(b(i.el)===u&&(l=y(i),e=!0),m(i,c,k,!0),!d&&h&&r.ssFallback&&rq(()=>r.ssFallback.el=null,k)),d||g(s,u,l,0)}k.isFallbackMountPending=!1,r3(k,s),k.pendingBranch=null,k.isInFallback=!1;let f=k.parent,_=!1;for(;f;){if(f.pendingBranch){f.effects.push(...a),_=!0;break}f=f.parent}_||d||tX(a),k.effects=[],S&&t&&t.pendingBranch&&p===t.pendingId&&(t.deps--,0!==t.deps||n||t.resolve()),r0(r,"onResolve")},fallback(e){if(!k.pendingBranch)return;let{vnode:t,activeBranch:n,parentComponent:r,container:i,namespace:l}=k;r0(t,"onFallback");let s=y(n),c=()=>{k.isFallbackMountPending=!1,k.isInFallback&&(f(null,e,i,s,r,null,l,o,a),r3(k,e))},u=e.transition&&"out-in"===e.transition.mode;u&&(k.isFallbackMountPending=!0,n.transition.afterLeave=c),k.isInFallback=!0,m(n,r,null,!0),u||c()},move(e,t,n){k.activeBranch&&g(k.activeBranch,e,t,n),k.container=e},next:()=>k.activeBranch&&y(k.activeBranch),registerDep(e,t,n){let r=!!k.pendingBranch;r&&k.deps++;let i=e.vnode.el;e.asyncDep.catch(t=>{tV(t,e,0)}).then(l=>{if(e.isUnmounted||k.isUnmounted||k.pendingId!==e.suspenseId)return;iE(),e.asyncResolved=!0;let{vnode:o}=e;iO(e,l,!1),i&&(o.el=i);let a=!i&&e.subTree.el;t(e,o,b(i||e.subTree.el),i?null:y(e.subTree),k,s,n),a&&(o.placeholder=null,_(a)),rR(e,o.el),r&&0==--k.deps&&k.resolve()})},unmount(e,t){k.isUnmounted=!0,k.activeBranch&&m(k.activeBranch,n,e,t),k.pendingBranch&&m(k.pendingBranch,n,e,t)}};return k}function r2(e){let t;if(I(e)){let n=ii&&e._c;n&&(e._d=!1,it()),e=e(),n&&(e._d=!0,t=ie,ir())}return E(e)&&(e=function(e){let t;for(let n=0;nt!==e)),e}function r6(e,t){t&&t.pendingBranch?E(e)?t.effects.push(...e):t.effects.push(e):tX(e)}function r3(e,t){e.activeBranch=t;let{vnode:n,parentComponent:r}=e,i=t.el;for(;!i&&t.component;)i=(t=t.component.subTree).el;n.el=i,r&&r.subTree===n&&(r.vnode.el=i,rR(r,i))}let r4=Symbol.for("v-fgt"),r8=Symbol.for("v-txt"),r5=Symbol.for("v-cmt"),r9=Symbol.for("v-stc"),r7=[],ie=null;function it(e=!1){r7.push(ie=e?null:[])}function ir(){r7.pop(),ie=r7[r7.length-1]||null}let ii=1;function il(e,t=!1){ii+=e,e<0&&ie&&t&&(ie.hasOnce=!0)}function is(e){return e.dynamicChildren=ii>0?ie||_:null,ir(),ii>0&&ie&&ie.push(e),e}function io(e,t,n,r,i){return is(ip(e,t,n,r,i,!0))}function ia(e){return!!e&&!0===e.__v_isVNode}function ic(e,t){return e.type===t.type&&e.key===t.key}let iu=({key:e})=>null!=e?e:null,ih=({ref:e,ref_key:t,ref_for:n})=>("number"==typeof e&&(e=""+e),null!=e?R(e)||t_(e)||I(e)?{i:t0,r:e,k:t,f:!!n}:e:null);function id(e,t=null,n=null,r=0,i=null,l=+(e!==r4),s=!1,o=!1){let a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&iu(t),ref:t&&ih(t),scopeId:t1,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:t0};return o?(iS(a,n),128&l&&e.normalize(a)):n&&(a.shapeFlag|=R(n)?8:16),ii>0&&!s&&ie&&(a.patchFlag>0||6&l)&&32!==a.patchFlag&&ie.push(a),a}let ip=function(e,t=null,n=null,r=0,i=null,l=!1){var s;if(e&&e!==n7||(e=r5),ia(e)){let r=im(e,t,!0);return n&&iS(r,n),ii>0&&!l&&ie&&(6&r.shapeFlag?ie[ie.indexOf(e)]=r:ie.push(r)),r.patchFlag=-2,r}if(I(s=e)&&"__vccOpts"in s&&(e=e.__vccOpts),t){let{class:e,style:n}=t=ig(t);e&&!R(e)&&(t.class=ei(e)),M(n)&&(tg(n)&&!E(n)&&(n=T({},n)),t.style=Y(n))}let o=R(e)?1:rZ(e)?128:e.__isTeleport?64:M(e)?4:2*!!I(e);return id(e,t,n,r,i,o,l,!0)};function ig(e){return e?tg(e)||rM(e)?T({},e):e:null}function im(e,t,n=!1,r=!1){let{props:i,ref:l,patchFlag:s,children:o,transition:a}=e,c=t?ix(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&iu(c),ref:t&&t.ref?n&&l?E(l)?l.concat(ih(t)):[l,ih(t)]:ih(t):l,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==r4?-1===s?16:16|s:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&im(e.ssContent),ssFallback:e.ssFallback&&im(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&r&&nC(u,a.clone(u)),u}function iv(e=" ",t=0){return ip(r8,null,e,t)}function iy(e="",t=!1){return t?(it(),io(r5,null,e)):ip(r5,null,e)}function ib(e){return null==e||"boolean"==typeof e?ip(r5):E(e)?ip(r4,null,e.slice()):ia(e)?i_(e):ip(r8,null,String(e))}function i_(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:im(e)}function iS(e,t){let n=0,{shapeFlag:r}=e;if(null==t)t=null;else if(E(t))n=16;else if("object"==typeof t)if(65&r){let n=t.default;n&&(n._c&&(n._d=!1),iS(e,n()),n._c&&(n._d=!0));return}else{n=32;let r=t._;r||rM(t)?3===r&&t0&&(1===t0.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=t0}else I(t)?(t={default:t,_ctx:t0},n=32):(t=String(t),64&r?(n=16,t=[iv(t)]):n=8);e.children=t,e.shapeFlag|=n}function ix(...e){let t={};for(let n=0;niw||t0;c=e=>{iw=e},u=e=>{iR=e};let iA=e=>{let t=iw;return c(e),e.scope.on(),()=>{e.scope.off(),c(t)}},iE=()=>{iw&&iw.scope.off(),c(null)};function iI(e){return 4&e.vnode.shapeFlag}let iR=!1;function iO(e,t,n){I(t)?e.render=t:M(t)&&(e.setupState=tN(t)),iP(e,n)}function iM(e){h=e,d=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,rs))}}function iP(e,t,n){let r=e.type;if(!e.render){if(!t&&h&&!r.render){let t=r.template||rh(e).template;if(t){let{isCustomElement:n,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:s}=r,o=T(T({isCustomElement:n,delimiters:l},i),s);r.render=h(t,o)}}e.render=r.render||S,d&&d(e)}{let t=iA(e);eE();try{!function(e){let t=rh(e),n=e.proxy,r=e.ctx;rc=!1,t.beforeCreate&&ru(t.beforeCreate,e,"bc");let{data:i,computed:l,methods:s,watch:o,provide:a,inject:c,created:u,beforeMount:h,mounted:d,beforeUpdate:p,updated:f,activated:g,deactivated:m,beforeUnmount:y,unmounted:b,render:_,renderTracked:x,renderTriggered:C,errorCaptured:k,serverPrefetch:T,expose:w,inheritAttrs:N,components:A,directives:O}=t;if(c&&function(e,t){for(let n in E(e)&&(e=rg(e)),e){let r,i=e[n];t_(r=M(i)?"default"in i?t8(i.from||n,i.default,!0):t8(i.from||n):t8(i))?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:e=>r.value=e}):t[n]=r}}(c,r),s)for(let e in s){let t=s[e];I(t)&&(r[e]=t.bind(n))}if(i){let t=i.call(n,n);M(t)&&(e.data=ta(t))}if(rc=!0,l)for(let e in l){let t=l[e],i=I(t)?t.bind(n,n):I(t.get)?t.get.bind(n,n):S,s=iV({get:i,set:!I(t)&&I(t.set)?t.set.bind(n):S});Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>s.value,set:e=>s.value=e})}if(o)for(let e in o)!function e(t,n,r,i){let l=i.includes(".")?nt(r,i):()=>r[i];if(R(t)){let e=n[t];I(e)&&t7(l,e,void 0)}else if(I(t))t7(l,t.bind(r),void 0);else if(M(t))if(E(t))t.forEach(t=>e(t,n,r,i));else{let e=I(t.handler)?t.handler.bind(r):n[t.handler];I(e)&&t7(l,e,t)}}(o[e],r,n,e);if(a){let e=I(a)?a.call(n):a;Reflect.ownKeys(e).forEach(t=>{t4(t,e[t])})}function P(e,t){E(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(u&&ru(u,e,"c"),P(nZ,h),P(nY,d),P(n0,p),P(n1,f),P(nW,g),P(nK,m),P(n5,k),P(n8,x),P(n4,C),P(n2,y),P(n6,b),P(n3,T),E(w))if(w.length){let t=e.exposed||(e.exposed={});w.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||(e.exposed={});_&&e.render===S&&(e.render=_),null!=N&&(e.inheritAttrs=N),A&&(e.components=A),O&&(e.directives=O)}(e)}finally{eI(),t()}}}let iF={get:(e,t)=>(eV(e,"get",""),e[t])};function iL(e){return{attrs:new Proxy(e.attrs,iF),slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function i$(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(tN(tv(e.exposed)),{get:(t,n)=>n in t?t[n]:n in rr?rr[n](e):void 0,has:(e,t)=>t in e||t in rr})):e.proxy}function iD(e,t=!0){return I(e)?e.displayName||e.name:e.name||t&&e.__name}let iV=(e,t)=>(function(e,t=!1){let n,r;return I(e)?n=e:(n=e.get,r=e.set),new tO(n,r,t)})(e,iR);function iB(e,t,n){try{il(-1);let r=arguments.length;if(2!==r)return r>3?n=Array.prototype.slice.call(arguments,2):3===r&&ia(n)&&(n=[n]),ip(e,t,n);if(!M(t)||E(t))return ip(e,null,t);if(ia(t))return ip(e,null,[t]);return ip(e,t)}finally{il(1)}}function ij(e,t){let n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e0&&ie&&ie.push(e),!0}let iU="3.5.34",iH="u">typeof window&&window.trustedTypes;if(iH)try{m=iH.createPolicy("vue",{createHTML:e=>e})}catch(e){}let iq=m?e=>m.createHTML(e):e=>e,iW="u">typeof document?document:null,iK=iW&&iW.createElement("template"),iz={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i="svg"===t?iW.createElementNS("http://www.w3.org/2000/svg",e):"mathml"===t?iW.createElementNS("http://www.w3.org/1998/Math/MathML",e):n?iW.createElement(e,{is:n}):iW.createElement(e);return"select"===e&&r&&null!=r.multiple&&i.setAttribute("multiple",r.multiple),i},createText:e=>iW.createTextNode(e),createComment:e=>iW.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>iW.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,i,l){let s=n?n.previousSibling:t.lastChild;if(i&&(i===l||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),i!==l&&(i=i.nextSibling););else{iK.innerHTML=iq("svg"===r?`${e}`:"mathml"===r?`${e}`:e);let i=iK.content;if("svg"===r||"mathml"===r){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},iJ="transition",iG="animation",iX=Symbol("_vtc"),iQ={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},iZ=T({},ng,iQ),iY=((t=(e,{slots:t})=>iB(ny,i2(e),t)).displayName="Transition",t.props=iZ,t),i0=(e,t=[])=>{E(e)?e.forEach(e=>e(...t)):e&&e(...t)},i1=e=>!!e&&(E(e)?e.some(e=>e.length>1):e.length>1);function i2(e){let t={};for(let n in e)n in iQ||(t[n]=e[n]);if(!1===e.css)return t;let{name:n="v",type:r,duration:i,enterFromClass:l=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:o=`${n}-enter-to`,appearFromClass:a=l,appearActiveClass:c=s,appearToClass:u=o,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,f=function(e){if(null==e)return null;{if(M(e))return[function(e){return X(e)}(e.enter),function(e){return X(e)}(e.leave)];let t=function(e){return X(e)}(e);return[t,t]}}(i),g=f&&f[0],m=f&&f[1],{onBeforeEnter:y,onEnter:b,onEnterCancelled:_,onLeave:S,onLeaveCancelled:x,onBeforeAppear:C=y,onAppear:k=b,onAppearCancelled:w=_}=t,N=(e,t,n,r)=>{e._enterCancelled=r,i3(e,t?u:o),i3(e,t?c:s),n&&n()},A=(e,t)=>{e._isLeaving=!1,i3(e,h),i3(e,p),i3(e,d),t&&t()},E=e=>(t,n)=>{let i=e?k:b,s=()=>N(t,e,n);i0(i,[t,s]),i4(()=>{i3(t,e?a:l),i6(t,e?u:o),i1(i)||i5(t,r,g,s)})};return T(t,{onBeforeEnter(e){i0(y,[e]),i6(e,l),i6(e,s)},onBeforeAppear(e){i0(C,[e]),i6(e,a),i6(e,c)},onEnter:E(!1),onAppear:E(!0),onLeave(e,t){e._isLeaving=!0;let n=()=>A(e,t);i6(e,h),e._enterCancelled?(i6(e,d),lt(e)):(lt(e),i6(e,d)),i4(()=>{e._isLeaving&&(i3(e,h),i6(e,p),i1(S)||i5(e,r,m,n))}),i0(S,[e,n])},onEnterCancelled(e){N(e,!1,void 0,!0),i0(_,[e])},onAppearCancelled(e){N(e,!0,void 0,!0),i0(w,[e])},onLeaveCancelled(e){A(e),i0(x,[e])}})}function i6(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e[iX]||(e[iX]=new Set)).add(t)}function i3(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.remove(t));let n=e[iX];n&&(n.delete(t),n.size||(e[iX]=void 0))}function i4(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let i8=0;function i5(e,t,n,r){let i=e._endId=++i8,l=()=>{i===e._endId&&r()};if(null!=n)return setTimeout(l,n);let{type:s,timeout:o,propCount:a}=i9(e,t);if(!s)return r();let c=s+"end",u=0,h=()=>{e.removeEventListener(c,d),l()},d=t=>{t.target===e&&++u>=a&&h()};setTimeout(()=>{u(n[e]||"").split(", "),i=r(`${iJ}Delay`),l=r(`${iJ}Duration`),s=i7(i,l),o=r(`${iG}Delay`),a=r(`${iG}Duration`),c=i7(o,a),u=null,h=0,d=0;t===iJ?s>0&&(u=iJ,h=s,d=l.length):t===iG?c>0&&(u=iG,h=c,d=a.length):d=(u=(h=Math.max(s,c))>0?s>c?iJ:iG:null)?u===iJ?l.length:a.length:0;let p=u===iJ&&/\b(?:transform|all)(?:,|$)/.test(r(`${iJ}Property`).toString());return{type:u,timeout:h,propCount:d,hasTransform:p}}function i7(e,t){for(;e.lengthle(t)+le(e[n])))}function le(e){return"auto"===e?0:1e3*Number(e.slice(0,-1).replace(",","."))}function lt(e){return(e?e.ownerDocument:document).body.offsetHeight}let ln=Symbol("_vod"),lr=Symbol("_vsh");function li(e,t){e.style.display=t?e[ln]:"none",e[lr]=!t}let ll=Symbol("");function ls(e,t){if(1===e.nodeType){let r=e.style,i="";for(let e in t){var n;let l=null==(n=t[e])?"initial":"string"==typeof n?""===n?" ":n:String(n);r.setProperty(`--${e}`,l),i+=`--${e}: ${l};`}r[ll]=i}}let lo=/(?:^|;)\s*display\s*:/,la=/\s*!important$/;function lc(e,t,n){if(E(n))n.forEach(n=>lc(e,t,n));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{let r=function(e,t){let n=lh[t];if(n)return n;let r=j(t);if("filter"!==r&&r in e)return lh[t]=r;r=q(r);for(let n=0;n111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)>96&&123>e.charCodeAt(2),lS=(e,t,n,r,i,l)=>{let s="svg"===i;if("class"===t){var o;let t;o=r,(t=e[iX])&&(o=(o?[o,...t]:[...t]).join(" ")),null==o?e.removeAttribute("class"):s?e.setAttribute("class",o):e.className=o}else"style"===t?function(e,t,n){let r=e.style,i=R(n),l=!1;if(n&&!i){if(t)if(R(t))for(let e of t.split(";")){let t=e.slice(0,e.indexOf(":")).trim();null==n[t]&&lc(r,t,"")}else for(let e in t)null==n[e]&&lc(r,e,"");for(let i in n){var s,o,a,c;"display"===i&&(l=!0);let u=n[i];null!=u?(s=e,o=i,a=!R(t)&&t?t[i]:void 0,c=u,"TEXTAREA"===s.tagName&&("width"===o||"height"===o)&&R(c)&&a===c||lc(r,i,u)):lc(r,i,"")}}else if(i){if(t!==n){let e=r[ll];e&&(n+=";"+e),r.cssText=n,l=lo.test(n)}}else t&&e.removeAttribute("style");ln in e&&(e[ln]=l?r.display:"",e[lr]&&(r.display="none"))}(e,n,r):C(t)?k(t)||function(e,t,n,r=null){let i=e[lm]||(e[lm]={}),l=i[t];if(n&&l)l.value=n;else{let[a,c]=function(e){let t;if(lv.test(e)){let n;for(t={};n=e.match(lv);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[":"===e[2]?e.slice(3):H(e.slice(2)),t]}(t);if(n){var s,o;let l;lg(e,a,i[t]=(s=n,o=r,(l=e=>{if(e._vts){if(e._vts<=l.attached)return}else e._vts=Date.now();tD(function(e,t){if(!E(t))return t;{let n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(e=>t=>!t._stopped&&e&&e(t))}}(e,l.value),o,5,[e])}).value=s,l.attached=ly||(lb.then(()=>ly=0),ly=Date.now()),l),c)}else l&&(e.removeEventListener(a,l,c),i[t]=void 0)}}(e,t,r,l):("."===t[0]?(t=t.slice(1),0):"^"===t[0]?(t=t.slice(1),1):!function(e,t,n,r){if(r)return!!("innerHTML"===t||"textContent"===t||t in e&&l_(t)&&I(n));if("spellcheck"===t||"draggable"===t||"translate"===t||"autocorrect"===t||"sandbox"===t&&"IFRAME"===e.tagName||"form"===t||"list"===t&&"INPUT"===e.tagName||"type"===t&&"TEXTAREA"===e.tagName)return!1;if("width"===t||"height"===t){let t=e.tagName;if("IMG"===t||"VIDEO"===t||"CANVAS"===t||"SOURCE"===t)return!1}return!(l_(t)&&R(n))&&t in e}(e,t,r,s))?e._isVueCE&&(function(e,t){let n=e._def.props;if(!n)return!1;let r=j(t);return Array.isArray(n)?n.some(e=>j(e)===r):Object.keys(n).some(e=>j(e)===r)}(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!R(r)))?lf(e,j(t),r,l,t):("true-value"===t?e._trueValue=r:"false-value"===t&&(e._falseValue=r),lp(e,t,r,s)):(lf(e,t,r),e.tagName.includes("-")||"value"!==t&&"checked"!==t&&"selected"!==t||lp(e,t,r,s,l,"value"!==t))},lx={};function lC(e,t,n){let r,i=nT(e,t);"[object Object]"===(r=i,F.call(r))&&(i=T({},i,t));class l extends lT{constructor(e){super(i,e,n)}}return l.def=i,l}let lk="u">typeof HTMLElement?HTMLElement:class{};class lT extends lk{constructor(e,t={},n=l6){super(),this._def=e,this._props=t,this._createApp=n,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._styleAnchors=new WeakMap,this._ob=null,this.shadowRoot&&n!==l6?this._root=this.shadowRoot:!1!==e.shadowRoot?(this.attachShadow(T({},e.shadowRootOptions,{mode:"open"})),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;this.shadowRoot||this._resolved||this._parseSlots(),this._connected=!0;let e=this;for(;e=e&&(e.assignedSlot||e.parentNode||e.host);)if(e instanceof lT){this._parent=e;break}this._instance||(this._resolved?this._mount(this._def):e&&e._pendingResolve?this._pendingResolve=e._pendingResolve.then(()=>{this._pendingResolve=void 0,this._resolveDef()}):this._resolveDef())}_setParent(e=this._parent){e&&(this._instance.parent=e._instance,this._inheritParentContext(e))}_inheritParentContext(e=this._parent){e&&this._app&&Object.setPrototypeOf(this._app._context.provides,e._instance.provides)}disconnectedCallback(){this._connected=!1,tz(()=>{!this._connected&&(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&(this._teleportTargets.clear(),this._teleportTargets=void 0))})}_processMutations(e){for(let t of e)this._setAttr(t.attributeName)}_resolveDef(){if(this._pendingResolve)return;for(let e=0;e{let n;this._resolved=!0,this._pendingResolve=void 0;let{props:r,styles:i}=e;if(r&&!E(r))for(let e in r){let t=r[e];(t===Number||t&&t.type===Number)&&(e in this._props&&(this._props[e]=X(this._props[e])),(n||(n=Object.create(null)))[j(e)]=!0)}this._numberProps=n,this._resolveProps(e),this.shadowRoot&&this._applyStyles(i),this._mount(e)},t=this._def.__asyncLoader;t?this._pendingResolve=t().then(t=>{t.configureApp=this._def.configureApp,e(this._def=t,!0)}):e(this._def)}_mount(e){this._app=this._createApp(e),this._inheritParentContext(),e.configureApp&&e.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);let t=this._instance&&this._instance.exposed;if(t)for(let e in t)A(this,e)||Object.defineProperty(this,e,{get:()=>tT(t[e])})}_resolveProps(e){let{props:t}=e,n=E(t)?t:Object.keys(t||{});for(let e of Object.keys(this))"_"!==e[0]&&n.includes(e)&&this._setProp(e,this[e]);for(let e of n.map(j))Object.defineProperty(this,e,{get(){return this._getProp(e)},set(t){this._setProp(e,t,!0,!this._patching)}})}_setAttr(e){if(e.startsWith("data-v-"))return;let t=this.hasAttribute(e),n=t?this.getAttribute(e):lx,r=j(e);t&&this._numberProps&&this._numberProps[r]&&(n=X(n)),this._setProp(r,n,!1,!0)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,r=!1){if(t!==this._props[e]&&(this._dirty=!0,t===lx?delete this._props[e]:(this._props[e]=t,"key"===e&&this._app&&(this._app._ceVNode.key=t)),r&&this._instance&&this._update(),n)){let n=this._ob;n&&(this._processMutations(n.takeRecords()),n.disconnect()),!0===t?this.setAttribute(H(e),""):"string"==typeof t||"number"==typeof t?this.setAttribute(H(e),t+""):t||this.removeAttribute(H(e)),n&&n.observe(this,{attributes:!0})}}_update(){let e=this._createVNode();this._app&&(e.appContext=this._app._context),l2(e,this._root)}_createVNode(){let e={};this.shadowRoot||(e.onVnodeMounted=e.onVnodeUpdated=this._renderSlots.bind(this));let t=ip(this._def,T(e,this._props));return this._instance||(t.ce=e=>{this._instance=e,e.ce=this,e.isCE=!0;let t=(e,t)=>{let n;this.dispatchEvent(new CustomEvent(e,"[object Object]"===(n=t[0],F.call(n))?T({detail:t},t[0]):{detail:t}))};e.emit=(e,...n)=>{t(e,n),H(e)!==e&&t(H(e),n)},this._setParent()}),t}_applyStyles(e,t,n){if(!e)return;if(t){if(t===this._def||this._styleChildren.has(t))return;this._styleChildren.add(t)}let r=this._nonce,i=this.shadowRoot,l=n?this._getStyleAnchor(n)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(i),s=null;for(let o=e.length-1;o>=0;o--){let a=document.createElement("style");r&&a.setAttribute("nonce",r),a.textContent=e[o],i.insertBefore(a,s||l),s=a,0===o&&(n||this._styleAnchors.set(this._def,a),t&&this._styleAnchors.set(t,a))}}_getStyleAnchor(e){if(!e)return null;let t=this._styleAnchors.get(e);return t&&t.parentNode===this.shadowRoot?t:(t&&this._styleAnchors.delete(e),null)}_getRootStyleInsertionAnchor(e){for(let t=0;t{if(!n.length)return;let t=e.moveClass||`${e.name||"v"}-move`;if(!function(e,t,n){let r=e.cloneNode(),i=e[iX];i&&i.forEach(e=>{e.split(/\s+/).forEach(e=>e&&r.classList.remove(e))}),n.split(/\s+/).forEach(e=>e&&r.classList.add(e)),r.style.display="none";let l=1===t.nodeType?t:t.parentNode;l.appendChild(r);let{hasTransform:s}=i9(r);return l.removeChild(r),s}(n[0].el,i.vnode.el,t)){n=[];return}n.forEach(lO),n.forEach(lM);let r=n.filter(lP);lt(i.vnode.el),r.forEach(e=>{let n=e.el,r=n.style;i6(n,t),r.transform=r.webkitTransform=r.transitionDuration="";let i=n[lE]=e=>{(!e||e.target===n)&&(!e||e.propertyName.endsWith("transform"))&&(n.removeEventListener("transitionend",i),n[lE]=null,i3(n,t))};n.addEventListener("transitionend",i)}),n=[]}),()=>{let s=tm(e),o=i2(s),a=s.tag||r4;if(n=[],r)for(let e=0;eMath.abs(s-1)&&(s=1),.01>Math.abs(o-1)&&(o=1),n.transform=n.webkitTransform=`translate(${r/s}px,${i/o}px)`,n.transitionDuration="0s",e}}function lF(e){let t=e.getBoundingClientRect();return{left:t.left,top:t.top}}let lL=e=>{let t=e.props["onUpdate:modelValue"]||!1;return E(t)?e=>z(t,e):t};function l$(e){e.target.composing=!0}function lD(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}let lV=Symbol("_assign");function lB(e,t,n){return t&&(e=e.trim()),n&&(e=G(e)),e}let lj={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e[lV]=lL(i);let l=r||i.props&&"number"===i.props.type;lg(e,t?"change":"input",t=>{t.target.composing||e[lV](lB(e.value,n,l))}),(n||l)&&lg(e,"change",()=>{e.value=lB(e.value,n,l)}),t||(lg(e,"compositionstart",l$),lg(e,"compositionend",lD),lg(e,"change",lD))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:l}},s){if(e[lV]=lL(s),e.composing)return;let o=(l||"number"===e.type)&&!/^0\d/.test(e.value)?G(e.value):e.value,a=null==t?"":t;if(o===a)return;let c=e.getRootNode();(c instanceof Document||c instanceof ShadowRoot)&&c.activeElement===e&&"range"!==e.type&&(r&&t===n||i&&e.value.trim()===a)||(e.value=a)}},lU={deep:!0,created(e,t,n){e[lV]=lL(n),lg(e,"change",()=>{let t=e._modelValue,n=lz(e),r=e.checked,i=e[lV];if(E(t)){let e=eh(t,n),l=-1!==e;if(r&&!l)i(t.concat(n));else if(!r&&l){let n=[...t];n.splice(e,1),i(n)}}else{let l;if("[object Set]"===(l=t,F.call(l))){let e=new Set(t);r?e.add(n):e.delete(n),i(e)}else i(lJ(e,r))}})},mounted:lH,beforeUpdate(e,t,n){e[lV]=lL(n),lH(e,t,n)}};function lH(e,{value:t,oldValue:n},r){let i;if(e._modelValue=t,E(t))i=eh(t,r.props.value)>-1;else{let l;if("[object Set]"===(l=t,F.call(l)))i=t.has(r.props.value);else{if(t===n)return;i=eu(t,lJ(e,!0))}}e.checked!==i&&(e.checked=i)}let lq={created(e,{value:t},n){e.checked=eu(t,n.props.value),e[lV]=lL(n),lg(e,"change",()=>{e[lV](lz(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[lV]=lL(r),t!==n&&(e.checked=eu(t,r.props.value))}},lW={deep:!0,created(e,{value:t,modifiers:{number:n}},r){let i,l="[object Set]"===(i=t,F.call(i));lg(e,"change",()=>{let t=Array.prototype.filter.call(e.options,e=>e.selected).map(e=>n?G(lz(e)):lz(e));e[lV](e.multiple?l?new Set(t):t:t[0]),e._assigning=!0,tz(()=>{e._assigning=!1})}),e[lV]=lL(r)},mounted(e,{value:t}){lK(e,t)},beforeUpdate(e,t,n){e[lV]=lL(n)},updated(e,{value:t}){e._assigning||lK(e,t)}};function lK(e,t){let n,r=e.multiple,i=E(t);if(!r||i||"[object Set]"===(n=t,F.call(n))){for(let n=0,l=e.options.length;nString(e)===String(s)):l.selected=eh(t,s)>-1}else l.selected=t.has(s);else if(eu(lz(l),t)){e.selectedIndex!==n&&(e.selectedIndex=n);return}}r||-1===e.selectedIndex||(e.selectedIndex=-1)}}function lz(e){return"_value"in e?e._value:e.value}function lJ(e,t){let n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}function lG(e,t,n,r,i){let l=function(e,t){switch(e){case"SELECT":return lW;case"TEXTAREA":return lj;default:switch(t){case"checkbox":return lU;case"radio":return lq;default:return lj}}}(e.tagName,n.props&&n.props.type)[i];l&&l(e,t,n,r)}let lX=["ctrl","shift","alt","meta"],lQ={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>lX.some(n=>e[`${n}Key`]&&!t.includes(n))},lZ={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},lY=T({patchProp:lS},iz),l0=!1;function l1(){return p=l0?p:rW(lY),l0=!0,p}let l2=(...e)=>{(p||(p=rK(lY))).render(...e)},l6=(...e)=>{let t=(p||(p=rK(lY))).createApp(...e),{mount:n}=t;return t.mount=e=>{let r=l8(e);if(!r)return;let i=t._component;I(i)||i.render||i.template||(i.template=r.innerHTML),1===r.nodeType&&(r.textContent="");let l=n(r,!1,l4(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),l},t},l3=(...e)=>{let t=l1().createApp(...e),{mount:n}=t;return t.mount=e=>{let t=l8(e);if(t)return n(t,!0,l4(t))},t};function l4(e){return e instanceof SVGElement?"svg":"function"==typeof MathMLElement&&e instanceof MathMLElement?"mathml":void 0}function l8(e){return R(e)?document.querySelector(e):e}let l5=Symbol(""),l9=Symbol(""),l7=Symbol(""),se=Symbol(""),st=Symbol(""),sn=Symbol(""),sr=Symbol(""),si=Symbol(""),sl=Symbol(""),ss=Symbol(""),so=Symbol(""),sa=Symbol(""),sc=Symbol(""),su=Symbol(""),sh=Symbol(""),sd=Symbol(""),sp=Symbol(""),sf=Symbol(""),sg=Symbol(""),sm=Symbol(""),sv=Symbol(""),sy=Symbol(""),sb=Symbol(""),s_=Symbol(""),sS=Symbol(""),sx=Symbol(""),sC=Symbol(""),sk=Symbol(""),sT=Symbol(""),sw=Symbol(""),sN=Symbol(""),sA=Symbol(""),sE=Symbol(""),sI=Symbol(""),sR=Symbol(""),sO=Symbol(""),sM=Symbol(""),sP=Symbol(""),sF=Symbol(""),sL={[l5]:"Fragment",[l9]:"Teleport",[l7]:"Suspense",[se]:"KeepAlive",[st]:"BaseTransition",[sn]:"openBlock",[sr]:"createBlock",[si]:"createElementBlock",[sl]:"createVNode",[ss]:"createElementVNode",[so]:"createCommentVNode",[sa]:"createTextVNode",[sc]:"createStaticVNode",[su]:"resolveComponent",[sh]:"resolveDynamicComponent",[sd]:"resolveDirective",[sp]:"resolveFilter",[sf]:"withDirectives",[sg]:"renderList",[sm]:"renderSlot",[sv]:"createSlots",[sy]:"toDisplayString",[sb]:"mergeProps",[s_]:"normalizeClass",[sS]:"normalizeStyle",[sx]:"normalizeProps",[sC]:"guardReactiveProps",[sk]:"toHandlers",[sT]:"camelize",[sw]:"capitalize",[sN]:"toHandlerKey",[sA]:"setBlockTracking",[sE]:"pushScopeId",[sI]:"popScopeId",[sR]:"withCtx",[sO]:"unref",[sM]:"isRef",[sP]:"withMemo",[sF]:"isMemoSame"},s$={start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0},source:""};function sD(e,t,n,r,i,l,s,o=!1,a=!1,c=!1,u=s$){var h,d,p,f;return e&&(o?(e.helper(sn),e.helper((h=e.inSSR,d=c,h||d?sr:si))):e.helper((p=e.inSSR,f=c,p||f?sl:ss)),s&&e.helper(sf)),{type:13,tag:t,props:n,children:r,patchFlag:i,dynamicProps:l,directives:s,isBlock:o,disableTracking:a,isComponent:c,loc:u}}function sV(e,t=s$){return{type:17,loc:t,elements:e}}function sB(e,t=s$){return{type:15,loc:t,properties:e}}function sj(e,t){return{type:16,loc:s$,key:R(e)?sU(e,!0):e,value:t}}function sU(e,t=!1,n=s$,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function sH(e,t=s$){return{type:8,loc:t,children:e}}function sq(e,t=[],n=s$){return{type:14,loc:n,callee:e,arguments:t}}function sW(e,t,n=!1,r=!1,i=s$){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:i}}function sK(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:s$}}function sz(e,{helper:t,removeHelper:n,inSSR:r}){if(!e.isBlock){var i,l;e.isBlock=!0,n((i=e.isComponent,r||i?sl:ss)),t(sn),t((l=e.isComponent,r||l?sr:si))}}let sJ=new Uint8Array([123,123]),sG=new Uint8Array([125,125]);function sX(e){return e>=97&&e<=122||e>=65&&e<=90}function sQ(e){return 32===e||10===e||9===e||12===e||13===e}function sZ(e){return 47===e||62===e||sQ(e)}function sY(e){let t=new Uint8Array(e.length);for(let n=0;n4===e.type&&e.isStatic;function s4(e){switch(e){case"Teleport":case"teleport":return l9;case"Suspense":case"suspense":return l7;case"KeepAlive":case"keep-alive":return se;case"BaseTransition":case"base-transition":return st}}let s8=/^$|^\d|[^\$\w\xA0-\uFFFF]/,s5=/[A-Za-z_$\xA0-\uFFFF]/,s9=/[\.\?\w$\xA0-\uFFFF]/,s7=/\s+[.[]\s*|\s*[.[]\s+/g,oe=e=>4===e.type?e.content:e.loc.source,ot=e=>{let t=oe(e).trim().replace(s7,e=>e.trim()),n=0,r=[],i=0,l=0,s=null;for(let e=0;e|^\s*(?:async\s+)?function(?:\s+[\w$]+)?\s*\(/;function or(e,t,n=!1){for(let r=0;r4===e.key.type&&e.key.content===r)}return n}function of(e,t){return`_${t}_${e.replace(/[^\w]/g,(t,n)=>"-"===t?"_":e.charCodeAt(n).toString())}`}let og=/([\s\S]*?)\s+(?:in|of)\s+(\S[\s\S]*)/;function om(e){for(let t=0;t0,isVoidTag:x,isPreTag:x,isIgnoreNewlineTag:x,isCustomElement:x,onError:s1,onWarn:s2,comments:!1,prefixIdentifiers:!1},o_=ob,oS=null,ox="",oC=null,ok=null,oT="",ow=-1,oN=-1,oA=0,oE=!1,oI=null,oR=[],oO=new class{constructor(e,t){this.stack=e,this.cbs=t,this.state=1,this.buffer="",this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=1,this.inRCDATA=!1,this.inXML=!1,this.inVPre=!1,this.newlines=[],this.mode=0,this.delimiterOpen=sJ,this.delimiterClose=sG,this.delimiterIndex=-1,this.currentSequence=void 0,this.sequenceIndex=0}get inSFCRoot(){return 2===this.mode&&0===this.stack.length}reset(){this.state=1,this.mode=0,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=1,this.inRCDATA=!1,this.currentSequence=void 0,this.newlines.length=0,this.delimiterOpen=sJ,this.delimiterClose=sG}getPos(e){let t=1,n=e+1,r=this.newlines.length,i=-1;if(r>100){let t=-1,n=r;for(;t+1>>1;this.newlines[r]=0;t--)if(e>this.newlines[t]){i=t;break}return i>=0&&(t=i+2,n=e-this.newlines[i]),{column:n,line:t,offset:e}}peek(){return this.buffer.charCodeAt(this.index+1)}stateText(e){60===e?(this.index>this.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=5,this.sectionStart=this.index):this.inVPre||e!==this.delimiterOpen[0]||(this.state=2,this.delimiterIndex=0,this.stateInterpolationOpen(e))}stateInterpolationOpen(e){if(e===this.delimiterOpen[this.delimiterIndex])if(this.delimiterIndex===this.delimiterOpen.length-1){let e=this.index+1-this.delimiterOpen.length;e>this.sectionStart&&this.cbs.ontext(this.sectionStart,e),this.state=3,this.sectionStart=e}else this.delimiterIndex++;else this.inRCDATA?(this.state=32,this.stateInRCDATA(e)):(this.state=1,this.stateText(e))}stateInterpolation(e){e===this.delimiterClose[0]&&(this.state=4,this.delimiterIndex=0,this.stateInterpolationClose(e))}stateInterpolationClose(e){e===this.delimiterClose[this.delimiterIndex]?this.delimiterIndex===this.delimiterClose.length-1?(this.cbs.oninterpolation(this.sectionStart,this.index+1),this.inRCDATA?this.state=32:this.state=1,this.sectionStart=this.index+1):this.delimiterIndex++:(this.state=3,this.stateInterpolation(e))}stateSpecialStartSequence(e){let t=this.sequenceIndex===this.currentSequence.length;if(t?sZ(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!t)return void this.sequenceIndex++}else this.inRCDATA=!1;this.sequenceIndex=0,this.state=6,this.stateInTagName(e)}stateInRCDATA(e){if(this.sequenceIndex===this.currentSequence.length){if(62===e||sQ(e)){let t=this.index-this.currentSequence.length;if(this.sectionStart=e||(28===this.state?this.currentSequence===s0.CdataEnd?this.cbs.oncdata(this.sectionStart,e):this.cbs.oncomment(this.sectionStart,e):6===this.state||11===this.state||18===this.state||17===this.state||12===this.state||13===this.state||14===this.state||15===this.state||16===this.state||20===this.state||19===this.state||21===this.state||9===this.state||this.cbs.ontext(this.sectionStart,e))}emitCodePoint(e,t){}}(oR,{onerr:oJ,ontext(e,t){o$(oF(e,t),e,t)},ontextentity(e,t,n){o$(e,t,n)},oninterpolation(e,t){if(oE)return o$(oF(e,t),e,t);let n=e+oO.delimiterOpen.length,r=t-oO.delimiterClose.length;for(;sQ(ox.charCodeAt(n));)n++;for(;sQ(ox.charCodeAt(r-1));)r--;let i=oF(n,r);i.includes("&")&&(i=o_.decodeEntities(i,!1)),oq({type:5,content:oz(i,!1,oW(n,r)),loc:oW(e,t)})},onopentagname(e,t){let n=oF(e,t);oC={type:1,tag:n,ns:o_.getNamespace(n,oR[0],o_.ns),tagType:0,props:[],children:[],loc:oW(e-1,t),codegenNode:void 0}},onopentagend(e){oL(e)},onclosetag(e,t){let n=oF(e,t);if(!o_.isVoidTag(n)){let r=!1;for(let e=0;e0&&oR[0].loc.start.offset;for(let n=0;n<=e;n++)oD(oR.shift(),t,n(7===e.type?e.rawName:e.name)===t)},onattribend(e,t){oC&&ok&&(oK(ok.loc,t),0!==e&&(oT.includes("&")&&(oT=o_.decodeEntities(oT,!0)),6===ok.type?("class"===ok.name&&(oT=oH(oT).trim()),ok.value={type:2,content:oT,loc:1===e?oW(ow,oN):oW(ow-1,oN+1)},oO.inSFCRoot&&"template"===oC.tag&&"lang"===ok.name&&oT&&"html"!==oT&&oO.enterRCDATA(sY("{let i=t.start.offset+n,l=i+e.length;return oz(e,!1,oW(i,l),0,+!!r)},o={source:s(l.trim(),n.indexOf(l,i.length)),value:void 0,key:void 0,index:void 0,finalized:!1},a=i.trim().replace(oP,"").trim(),c=i.indexOf(a),u=a.match(oM);if(u){let e;a=a.replace(oM,"").trim();let t=u[1].trim();if(t&&(e=n.indexOf(t,c+a.length),o.key=s(t,e,!0)),u[2]){let r=u[2].trim();r&&(o.index=s(r,n.indexOf(r,o.key?e+t.length:c+a.length),!0))}}return a&&(o.value=s(a,c,!0)),o}(ok.exp)))),(7!==ok.type||"pre"!==ok.name)&&oC.props.push(ok)),oT="",ow=oN=-1},oncomment(e,t){o_.comments&&oq({type:3,content:oF(e,t),loc:oW(e-4,t+3)})},onend(){let e=ox.length;for(let t=0;t64&&n<91||s4(e)||o_.isBuiltInComponent&&o_.isBuiltInComponent(e)||o_.isNativeTag&&!o_.isNativeTag(e))return!0;for(let e=0;e=0;)n--;return n}let oB=new Set(["if","else","else-if","for","slot"]),oj=/\r\n/g;function oU(e){let t="preserve"!==o_.whitespace,n=!1;for(let r=0;r3!==e.type);return 1!==t.length||1!==t[0].type||ou(t[0])?null:t[0]}function oX(e,t){let{constantCache:n}=t;switch(e.type){case 1:if(0!==e.tagType)return 0;let r=n.get(e);if(void 0!==r)return r;let i=e.codegenNode;if(13!==i.type||i.isBlock&&"svg"!==e.tag&&"foreignObject"!==e.tag&&"math"!==e.tag)return 0;if(void 0!==i.patchFlag)return n.set(e,0),0;{let r=3,c=oZ(e,t);if(0===c)return n.set(e,0),0;c1)for(let i=0;i{l--};for(;lt===e:t=>e.test(t);return(e,r)=>{if(1===e.type){let{props:i}=e;if(3===e.tagType&&i.some(oa))return;let l=[];for(let s=0;s`${sL[e]}: _${sL[e]}`;function o3(e,t,{helper:n,push:r,newline:i,isTS:l}){let s=n("component"===t?su:sd);for(let n=0;n3;t.push("["),n&&t.indent(),o8(e,t,n),n&&t.deindent(),t.push("]")}function o8(e,t,n=!1,r=!0){let{push:i,newline:l}=t;for(let s=0;se||"null")}([a,c,u,i,d]),t),l(")"),f&&l(")"),p&&(l(", "),o5(p,t),l(")"))}(e,t);break;case 14:!function(e,t){let{push:n,helper:r,pure:i}=t,l=R(e.callee)?e.callee:r(e.callee);i&&n(o2),n(l+"(",-2,e),o8(e.arguments,t),n(")")}(e,t);break;case 15:!function(e,t){let{push:n,indent:r,deindent:i,newline:l}=t,{properties:s}=e;if(!s.length)return n("{}",-2,e);let o=s.length>1;n(o?"{":"{ "),o&&r();for(let e=0;e "),(a||o)&&(n("{"),r()),s?(a&&n("return "),E(s)?o4(s,t):o5(s,t)):o&&o5(o,t),(a||o)&&(i(),n("}")),c&&n(")")}(e,t);break;case 19:!function(e,t){let{test:n,consequent:r,alternate:i,newline:l}=e,{push:s,indent:o,deindent:a,newline:c}=t;if(4===n.type){let e,r=(e=n.content,!!s8.test(e));r&&s("("),o9(n,t),r&&s(")")}else s("("),o5(n,t),s(")");l&&o(),t.indentLevel++,l||s(" "),s("? "),o5(r,t),t.indentLevel--,l&&c(),l||s(" "),s(": ");let u=19===i.type;!u&&t.indentLevel++,o5(i,t),!u&&t.indentLevel--,l&&a(!0)}(e,t);break;case 20:!function(e,t){let{push:n,helper:r,indent:i,deindent:l,newline:s}=t,{needPauseTracking:o,needArraySpread:a}=e;a&&n("[...("),n(`_cache[${e.index}] || (`),o&&(i(),n(`${r(sA)}(-1`),e.inVOnce&&n(", true"),n("),"),s(),n("(")),n(`_cache[${e.index}] = `),o5(e.value,t),o&&(n(`).cacheIndex = ${e.index},`),s(),n(`${r(sA)}(1),`),s(),n(`_cache[${e.index}]`),l()),n(")"),a&&n(")]")}(e,t);break;case 21:o8(e.body,t,!0,!1)}}function o9(e,t){let{content:n,isStatic:r}=e;t.push(r?JSON.stringify(n):n,-3,e)}function o7(e,t){for(let n=0;n(function(e,t,n,r){if("else"!==t.name&&(!t.exp||!t.exp.content.trim())){let r=t.exp?t.exp.loc:e.loc;n.onError(s6(28,t.loc)),t.exp=sU("true",!1,r)}if("if"===t.name){var i;let l=at(e,t),s={type:9,loc:oW((i=e.loc).start.offset,i.end.offset),branches:[l]};if(n.replaceNode(s),r)return r(s,l,!0)}else{let i=n.parent.children,l=i.indexOf(e);for(;l-- >=-1;){let s=i[l];if(s&&oy(s)){n.removeNode(s);continue}if(s&&9===s.type){("else-if"===t.name||"else"===t.name)&&void 0===s.branches[s.branches.length-1].condition&&n.onError(s6(30,e.loc)),n.removeNode();let i=at(e,t);s.branches.push(i);let l=r&&r(s,i,!1);o0(i,n),l&&l(),n.currentNode=null}else n.onError(s6(30,e.loc));break}}})(e,t,n,(e,t,r)=>{let i=n.parent.children,l=i.indexOf(e),s=0;for(;l-- >=0;){let e=i[l];e&&9===e.type&&(s+=e.branches.length)}return()=>{r?e.codegenNode=an(t,s,n):function(e){for(;;)if(19===e.type)if(19!==e.alternate.type)return e;else e=e.alternate;else 20===e.type&&(e=e.value)}(e.codegenNode).alternate=an(t,s+e.branches.length-1,n)}}));function at(e,t){let n=3===e.tagType;return{type:10,loc:e.loc,condition:"else"===t.name?void 0:t.exp,children:n&&!or(e,"for")?e.children:[e],userKey:oi(e,"key"),isTemplateIf:n}}function an(e,t,n){return e.condition?sK(e.condition,ar(e,t,n),sq(n.helper(so),['""',"true"])):ar(e,t,n)}function ar(e,t,n){let{helper:r}=n,i=sj("key",sU(`${t}`,!1,s$,2)),{children:l}=e,s=l[0];if(1!==l.length||1!==s.type)if(1!==l.length||11!==s.type)return sD(n,r(l5),sB([i]),l,64,void 0,void 0,!0,!1,!1,e.loc);else{let e=s.codegenNode;return od(e,i,n),e}{let e=s.codegenNode,t=14===e.type&&e.callee===sP?e.arguments[1].returns:e;return 13===t.type&&sz(t,n),od(t,i,n),e}}let ai=o1("for",(e,t,n)=>{let{helper:r,removeHelper:i}=n;return function(e,t,n,r){if(!t.exp)return void n.onError(s6(31,t.loc));let i=t.forParseResult;if(!i)return void n.onError(s6(32,t.loc));al(i);let{scopes:l}=n,{source:s,value:o,key:a,index:c}=i,u={type:11,loc:t.loc,source:s,valueAlias:o,keyAlias:a,objectIndexAlias:c,parseResult:i,children:oc(e)?e.children:[e]};n.replaceNode(u),l.vFor++;let h=r&&r(u);return()=>{l.vFor--,h&&h()}}(e,t,n,t=>{let l=sq(r(sg),[t.source]),s=oc(e),o=or(e,"memo"),a=oi(e,"key",!1,!0);a&&a.type;let c=a&&(6===a.type?a.value?sU(a.value.content,!0):void 0:a.exp),u=a&&c?sj("key",c):null,h=4===t.source.type&&t.source.constType>0,d=h?64:a?128:256;return t.codegenNode=sD(n,r(l5),void 0,l,d,void 0,void 0,!0,!h,!1,e.loc),()=>{let a,{children:d}=t,p=1!==d.length||1!==d[0].type,f=ou(e)?e:s&&1===e.children.length&&ou(e.children[0])?e.children[0]:null;if(f)a=f.codegenNode,s&&u&&od(a,u,n);else if(p)a=sD(n,r(l5),u?sB([u]):void 0,e.children,64,void 0,void 0,!0,void 0,!1);else{var g,m,y,b,_,S,x,C;a=d[0].codegenNode,s&&u&&od(a,u,n),!h!==a.isBlock&&(a.isBlock?(i(sn),i((g=n.inSSR,m=a.isComponent,g||m?sr:si))):i((y=n.inSSR,b=a.isComponent,y||b?sl:ss))),(a.isBlock=!h,a.isBlock)?(r(sn),r((_=n.inSSR,S=a.isComponent,_||S?sr:si))):r((x=n.inSSR,C=a.isComponent,x||C?sl:ss))}if(o){let e=sW(as(t.parseResult,[sU("_cached")]));e.body={type:21,body:[sH(["const _memo = (",o.exp,")"]),sH(["if (_cached && _cached.el",...c?[" && _cached.key === ",c]:[],` && ${n.helperString(sF)}(_cached, _memo)) return _cached`]),sH(["const _item = ",a]),sU("_item.memo = _memo"),sU("return _item")],loc:s$},l.arguments.push(e,sU("_cache"),sU(String(n.cached.length))),n.cached.push(null)}else l.arguments.push(sW(as(t.parseResult),a,!0))}})});function al(e,t){e.finalized||(e.finalized=!0)}function as({value:e,key:t,index:n},r=[]){var i=[e,t,n,...r];let l=i.length;for(;l--&&!i[l];);return i.slice(0,l+1).map((e,t)=>e||sU("_".repeat(t+1),!1))}let ao=sU("undefined",!1),aa=(e,t)=>{if(1===e.type&&(1===e.tagType||3===e.tagType)){let n=or(e,"slot");if(n)return n.exp,t.scopes.vSlot++,()=>{t.scopes.vSlot--}}};function ac(e,t,n){let r=[sj("name",e),sj("fn",t)];return null!=n&&r.push(sj("key",sU(String(n),!0))),sB(r)}let au=new WeakMap,ah=(e,t)=>function(){let n,r,i,l,s;if(1!==(e=t.currentNode).type||0!==e.tagType&&1!==e.tagType)return;let{tag:o,props:a}=e,c=1===e.tagType,u=c?function(e,t,n=!1){let{tag:r}=e,i=af(r),l=oi(e,"is",!1,!0);if(l)if(i){let e;if(6===l.type?e=l.value&&sU(l.value.content,!0):(e=l.exp)||(e=sU("is",!1,l.arg.loc)),e)return sq(t.helper(sh),[e])}else 6===l.type&&l.value.content.startsWith("vue:")&&(r=l.value.content.slice(4));let s=s4(r)||t.isBuiltInComponent(r);return s?(n||t.helper(s),s):(t.helper(su),t.components.add(r),of(r,"component"))}(e,t):`"${o}"`,h=M(u)&&u.callee===sh,d=0,p=h||u===l9||u===l7||!c&&("svg"===o||"foreignObject"===o||"math"===o);if(a.length>0){let r=ad(e,t,void 0,c,h);n=r.props,d=r.patchFlag,l=r.dynamicPropNames;let i=r.directives;s=i&&i.length?sV(i.map(e=>(function(e,t){let n=[],r=au.get(e);r?n.push(t.helperString(r)):(t.helper(sd),t.directives.add(e.name),n.push(of(e.name,"directive")));let{loc:i}=e;if(e.exp&&n.push(e.exp),e.arg&&(e.exp||n.push("void 0"),n.push(e.arg)),Object.keys(e.modifiers).length){e.arg||(e.exp||n.push("void 0"),n.push("void 0"));let t=sU("true",!1,i);n.push(sB(e.modifiers.map(e=>sj(e,t)),i))}return sV(n,e.loc)})(e,t))):void 0,r.shouldUseBlock&&(p=!0)}if(e.children.length>0)if(u===se&&(p=!0,d|=1024),c&&u!==l9&&u!==se){let{slots:n,hasDynamicSlots:i}=function(e,t,n=(e,t,n,r)=>sW(e,n,!1,!0,n.length?n[0].loc:r)){t.helper(sR);let{children:r,loc:i}=e,l=[],s=[],o=t.scopes.vSlot>0||t.scopes.vFor>0,a=or(e,"slot",!0);if(a){let{arg:e,exp:t}=a;e&&!s3(e)&&(o=!0),l.push(sj(e||sU("default",!0),n(t,void 0,r,i)))}let c=!1,u=!1,h=[],d=new Set,p=0;for(let e=0;esj("default",n(e,void 0,t,i));c?h.length&&!h.every(ov)&&(u?t.onError(s6(39,h[0].loc)):l.push(e(void 0,h))):l.push(e(void 0,r))}let f=o?2:!function e(t){for(let n=0;n0,f=!1,g=0,m=!1,y=!1,b=!1,_=!1,S=!1,x=!1,k=[],T=e=>{u.length&&(h.push(sB(ap(u),a)),u=[]),e&&h.push(e)},w=()=>{t.scopes.vFor>0&&u.push(sj(sU("ref_for",!0),sU("true")))},N=({key:e,value:n})=>{if(s3(e)){let l=e.content,s=C(l);s&&(!r||i)&&"onclick"!==l.toLowerCase()&&"onUpdate:modelValue"!==l&&!$(l)&&(_=!0),s&&$(l)&&(x=!0),s&&14===n.type&&(n=n.arguments[0]),20===n.type||(4===n.type||8===n.type)&&oX(n,t)>0||("ref"===l?m=!0:"class"===l?y=!0:"style"===l?b=!0:"key"===l||k.includes(l)||k.push(l),r&&("class"===l||"style"===l)&&!k.includes(l)&&k.push(l))}else S=!0};for(let i=0;i"prop"===e.content)&&(g|=32);let x=t.directiveTransforms[n];if(x){let{props:n,needRuntime:r}=x(s,e,t);l||n.forEach(N),_&&i&&!s3(i)?T(sB(n,a)):u.push(...n),r&&(d.push(s),O(r)&&au.set(s,r))}else!D(n)&&(d.push(s),p&&(f=!0))}}if(h.length?(T(),s=h.length>1?sq(t.helper(sb),h,a):h[0]):u.length&&(s=sB(ap(u),a)),S?g|=16:(y&&!r&&(g|=2),b&&!r&&(g|=4),k.length&&(g|=8),_&&(g|=32)),!f&&(0===g||32===g)&&(m||x||d.length>0)&&(g|=512),!t.inSSR&&s)switch(s.type){case 15:let A=-1,E=-1,I=!1;for(let e=0;e{if(ou(e)){let{children:n,loc:r}=e,{slotName:i,slotProps:l}=function(e,t){let n,r='"default"',i=[];for(let t=0;t0){let{props:r,directives:l}=ad(e,t,i,!1,!1);n=r,l.length&&t.onError(s6(36,l[0].loc))}return{slotName:r,slotProps:n}}(e,t),s=[t.prefixIdentifiers?"_ctx.$slots":"$slots",i,"{}","undefined","true"],o=2;l&&(s[2]=l,o=3),n.length&&(s[3]=sW([],n,!1,!1,r),o=4),t.scopeId&&!t.slotted&&(o=5),s.splice(o),e.codegenNode=sq(t.helper(sm),s,r)}},am=(e,t,n,r)=>{let i,{loc:l,modifiers:s,arg:o}=e;if(!e.exp&&!s.length,4===o.type)if(o.isStatic){let e=o.content;e.startsWith("vue:")&&(e=`vnode-${e.slice(4)}`),i=sU(0!==t.tagType||e.startsWith("vnode")||!/[A-Z]/.test(e)?W(j(e)):`on:${e}`,!0,o.loc)}else i=sH([`${n.helperString(sN)}(`,o,")"]);else(i=o).children.unshift(`${n.helperString(sN)}(`),i.children.push(")");let a=e.exp;a&&!a.content.trim()&&(a=void 0);let c=n.cacheHandlers&&!a&&!n.inVOnce;if(a){let e,t=ot(a),n=!(t||(e=a,on.test(oe(e)))),r=a.content.includes(";");(n||c&&t)&&(a=sH([`${n?"$event":"(...args)"} => ${r?"{":"("}`,a,r?"}":")"]))}let u={props:[sj(i,a||sU("() => {}",!1,l))]};return r&&(u=r(u)),c&&(u.props[0].value=n.cache(u.props[0].value)),u.props.forEach(e=>e.key.isHandlerKey=!0),u},av=(e,t,n)=>{let{modifiers:r}=e,i=e.arg,{exp:l}=e;return l&&4===l.type&&!l.content.trim()&&(l=void 0),4!==i.type?(i.children.unshift("("),i.children.push(') || ""')):i.isStatic||(i.content=i.content?`${i.content} || ""`:'""'),r.some(e=>"camel"===e.content)&&(4===i.type?i.isStatic?i.content=j(i.content):i.content=`${n.helperString(sT)}(${i.content})`:(i.children.unshift(`${n.helperString(sT)}(`),i.children.push(")"))),!n.inSSR&&(r.some(e=>"prop"===e.content)&&ay(i,"."),r.some(e=>"attr"===e.content)&&ay(i,"^")),{props:[sj(i,l)]}},ay=(e,t)=>{4===e.type?e.isStatic?e.content=t+e.content:e.content=`\`${t}\${${e.content}}\``:(e.children.unshift(`'${t}' + (`),e.children.push(")"))},ab=(e,t)=>{if(0===e.type||1===e.type||11===e.type||10===e.type)return()=>{let n,r=e.children,i=!1;for(let e=0;e7===e.type&&!t.directiveTransforms[e.name]))))for(let e=0;e{if(1===e.type&&or(e,"once",!0)&&!a_.has(e)&&!t.inVOnce&&!t.inSSR)return a_.add(e),t.inVOnce=!0,t.helper(sA),()=>{t.inVOnce=!1;let e=t.currentNode;e.codegenNode&&(e.codegenNode=t.cache(e.codegenNode,!0,!0))}},ax=(e,t,n)=>{let r,{exp:i,arg:l}=e;if(!i)return n.onError(s6(41,e.loc)),aC();let s=i.loc.source.trim(),o=4===i.type?i.content:s,a=n.bindingMetadata[s];if("props"===a||"props-aliased"===a||"literal-const"===a||"setup-const"===a)return i.loc,aC();if(!o.trim()||!ot(i))return n.onError(s6(42,i.loc)),aC();let c=l||sU("modelValue",!0),u=l?s3(l)?`onUpdate:${j(l.content)}`:sH(['"onUpdate:" + ',l]):"onUpdate:modelValue",h=n.isTS?"($event: any)":"$event";r=sH([`${h} => ((`,i,") = $event)"]);let d=[sj(c,e.exp),sj(u,r)];if(e.modifiers.length&&1===t.tagType){let t=e.modifiers.map(e=>e.content).map(e=>(s8.test(e)?JSON.stringify(e):e)+": true").join(", "),n=l?s3(l)?`${l.content}Modifiers`:sH([l,' + "Modifiers"']):"modelModifiers";d.push(sj(n,sU(`{ ${t} }`,!1,e.loc,2)))}return aC(d)};function aC(e=[]){return{props:e}}let ak=new WeakSet,aT=(e,t)=>{if(1===e.type){let n=or(e,"memo");if(!(!n||ak.has(e))&&!t.inSSR)return ak.add(e),()=>{let r=e.codegenNode||t.currentNode.codegenNode;r&&13===r.type&&(1!==e.tagType&&sz(r,t),e.codegenNode=sq(t.helper(sP),[n.exp,sW(void 0,r),"_cache",String(t.cached.length)]),t.cached.push(null))}}},aw=(e,t)=>{if(1===e.type){for(let n of e.props)if(7===n.type&&"bind"===n.name&&(!n.exp||4===n.exp.type&&!n.exp.content.trim())&&n.arg){let e=n.arg;if(4===e.type&&e.isStatic){let t=j(e.content);(s5.test(t[0])||"-"===t[0])&&(n.exp=sU(t,!1,e.loc))}else t.onError(s6(53,e.loc)),n.exp=sU("",!0,e.loc)}}},aN=Symbol(""),aA=Symbol(""),aE=Symbol(""),aI=Symbol(""),aR=Symbol(""),aO=Symbol(""),aM=Symbol(""),aP=Symbol(""),aF=Symbol(""),aL=Symbol("");Object.getOwnPropertySymbols(r={[aN]:"vModelRadio",[aA]:"vModelCheckbox",[aE]:"vModelText",[aI]:"vModelSelect",[aR]:"vModelDynamic",[aO]:"withModifiers",[aM]:"withKeys",[aP]:"vShow",[aF]:"Transition",[aL]:"TransitionGroup"}).forEach(e=>{sL[e]=r[e]});let a$={parseMode:"html",isVoidTag:ea,isNativeTag:e=>el(e)||es(e)||eo(e),isPreTag:e=>"pre"===e,isIgnoreNewlineTag:e=>"pre"===e||"textarea"===e,decodeEntities:function(e,t=!1){return(f||(f=document.createElement("div")),t)?(f.innerHTML=`
        `,f.children[0].getAttribute("foo")):(f.innerHTML=e,f.textContent)},isBuiltInComponent:e=>"Transition"===e||"transition"===e?aF:"TransitionGroup"===e||"transition-group"===e?aL:void 0,getNamespace(e,t,n){let r=t?t.ns:n;if(t&&2===r)if("annotation-xml"===t.tag){if("svg"===e)return 1;t.props.some(e=>6===e.type&&"encoding"===e.name&&null!=e.value&&("text/html"===e.value.content||"application/xhtml+xml"===e.value.content))&&(r=0)}else/^m(?:[ions]|text)$/.test(t.tag)&&"mglyph"!==e&&"malignmark"!==e&&(r=0);else t&&1===r&&("foreignObject"===t.tag||"desc"===t.tag||"title"===t.tag)&&(r=0);if(0===r){if("svg"===e)return 1;if("math"===e)return 2}return r}},aD=y("passive,once,capture"),aV=y("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),aB=y("left,right"),aj=y("onkeyup,onkeydown,onkeypress"),aU=(e,t)=>s3(e)&&"onclick"===e.content.toLowerCase()?sU(t,!0):4!==e.type?sH(["(",e,`) === "onClick" ? "${t}" : (`,e,")"]):e,aH=(e,t)=>{1===e.type&&0===e.tagType&&("script"===e.tag||"style"===e.tag)&&t.removeNode()},aq=[e=>{1===e.type&&e.props.forEach((t,n)=>{let r,i;6===t.type&&"style"===t.name&&t.value&&(e.props[n]={type:7,name:"bind",arg:sU("style",!0,t.loc),exp:(r=t.value.content,i=t.loc,sU(JSON.stringify(er(r)),!1,i,3)),modifiers:[],loc:t.loc})})}],aW={cloak:()=>({props:[]}),html:(e,t,n)=>{let{exp:r,loc:i}=e;return r||n.onError(s6(54,i)),t.children.length&&(n.onError(s6(55,i)),t.children.length=0),{props:[sj(sU("innerHTML",!0,i),r||sU("",!0))]}},text:(e,t,n)=>{let{exp:r,loc:i}=e;return r||n.onError(s6(56,i)),t.children.length&&(n.onError(s6(57,i)),t.children.length=0),{props:[sj(sU("textContent",!0),r?oX(r,n)>0?r:sq(n.helperString(sy),[r],i):sU("",!0))]}},model:(e,t,n)=>{let r=ax(e,t,n);if(!r.props.length||1===t.tagType)return r;e.arg&&n.onError(s6(59,e.arg.loc));let{tag:i}=t,l=n.isCustomElement(i);if("input"===i||"textarea"===i||"select"===i||l){let s=aE,o=!1;if("input"===i||l){let r=oi(t,"type");if(r){if(7===r.type)s=aR;else if(r.value)switch(r.value.content){case"radio":s=aN;break;case"checkbox":s=aA;break;case"file":o=!0,n.onError(s6(60,e.loc))}}else t.props.some(e=>7===e.type&&"bind"===e.name&&(!e.arg||4!==e.arg.type||!e.arg.isStatic))&&(s=aR)}else"select"===i&&(s=aI);o||(r.needRuntime=n.helper(s))}else n.onError(s6(58,e.loc));return r.props=r.props.filter(e=>4!==e.key.type||"modelValue"!==e.key.content),r},on:(e,t,n)=>am(e,t,n,t=>{let{modifiers:r}=e;if(!r.length)return t;let{key:i,value:l}=t.props[0],{keyModifiers:s,nonKeyModifiers:o,eventOptionModifiers:a}=((e,t,n,r)=>{let i=[],l=[],s=[];for(let n=0;n{let{exp:r,loc:i}=e;return r||n.onError(s6(62,i)),{props:[],needRuntime:n.helper(aP)}}},aK=Object.create(null);function az(e,t){if(!R(e))if(!e.nodeType)return S;else e=e.innerHTML;let n=e+JSON.stringify(t,(e,t)=>"function"==typeof t?t.toString():t),r=aK[n];if(r)return r;if("#"===e[0]){let t=document.querySelector(e);e=t?t.innerHTML:""}let i=T({hoistStatic:!0,onError:void 0,onWarn:S},t);!i.isCustomElement&&"u">typeof customElements&&(i.isCustomElement=e=>!!customElements.get(e));let{code:l}=function(e,t={}){return function(e,t={}){var n;let r,i=t.onError||s1,l="module"===t.mode;!0===t.prefixIdentifiers?i(s6(48)):l&&i(s6(49)),t.cacheHandlers&&i(s6(50)),t.scopeId&&!l&&i(s6(51));let s=T({},t,{prefixIdentifiers:!1}),o=R(e)?function(e,t){if(oO.reset(),oC=null,ok=null,oT="",ow=-1,oN=-1,oR.length=0,ox=e,o_=T({},ob),t){let e;for(e in t)null!=t[e]&&(o_[e]=t[e])}oO.mode="html"===o_.parseMode?1:2*("sfc"===o_.parseMode),oO.inXML=1===o_.ns||2===o_.ns;let n=t&&t.delimiters;n&&(oO.delimiterOpen=sY(n[0]),oO.delimiterClose=sY(n[1]));let r=oS=function(e,t=""){return{type:0,source:t,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:[],temps:0,codegenNode:void 0,loc:s$}}([],e);return oO.parse(ox),r.loc=oW(0,e.length),r.children=oU(r.children),oS=null,r}(e,s):e,[a,c]=[[aw,aS,ae,aT,ai,ag,ah,aa,ab],{on:am,bind:av,model:ax}];return r=function(e,{filename:t="",prefixIdentifiers:n=!1,hoistStatic:r=!1,hmr:i=!1,cacheHandlers:l=!1,nodeTransforms:s=[],directiveTransforms:o={},transformHoist:a=null,isBuiltInComponent:c=S,isCustomElement:u=S,expressionPlugins:h=[],scopeId:d=null,slotted:p=!0,ssr:f=!1,inSSR:g=!1,ssrCssVars:m="",bindingMetadata:y=b,inline:_=!1,isTS:x=!1,onError:C=s1,onWarn:k=s2,compatConfig:T}){let w=t.replace(/\?.*$/,"").match(/([^/\\]+)\.\w+$/),N={filename:t,selfName:w&&q(j(w[1])),prefixIdentifiers:n,hoistStatic:r,hmr:i,cacheHandlers:l,nodeTransforms:s,directiveTransforms:o,transformHoist:a,isBuiltInComponent:c,isCustomElement:u,expressionPlugins:h,scopeId:d,slotted:p,ssr:f,inSSR:g,ssrCssVars:m,bindingMetadata:y,inline:_,isTS:x,onError:C,onWarn:k,compatConfig:T,root:e,helpers:new Map,components:new Set,directives:new Set,hoists:[],imports:[],cached:[],constantCache:new WeakMap,temps:0,identifiers:Object.create(null),scopes:{vFor:0,vSlot:0,vPre:0,vOnce:0},parent:null,grandParent:null,currentNode:e,childIndex:0,inVOnce:!1,helper(e){let t=N.helpers.get(e)||0;return N.helpers.set(e,t+1),e},removeHelper(e){let t=N.helpers.get(e);if(t){let n=t-1;n?N.helpers.set(e,n):N.helpers.delete(e)}},helperString:e=>`_${sL[N.helper(e)]}`,replaceNode(e){N.parent.children[N.childIndex]=N.currentNode=e},removeNode(e){let t=N.parent.children,n=e?t.indexOf(e):N.currentNode?N.childIndex:-1;e&&e!==N.currentNode?N.childIndex>n&&(N.childIndex--,N.onNodeRemoved()):(N.currentNode=null,N.onNodeRemoved()),N.parent.children.splice(n,1)},onNodeRemoved:S,addIdentifiers(e){},removeIdentifiers(e){},hoist(e){R(e)&&(e=sU(e)),N.hoists.push(e);let t=sU(`_hoisted_${N.hoists.length}`,!1,e.loc,2);return t.hoisted=e,t},cache(e,t=!1,n=!1){let r=function(e,t,n=!1,r=!1){return{type:20,index:e,value:t,needPauseTracking:n,inVOnce:r,needArraySpread:!1,loc:s$}}(N.cached.length,e,t,n);return N.cached.push(r),r}};return N}(o,n=T({},s,{nodeTransforms:[...a,...t.nodeTransforms||[]],directiveTransforms:T({},c,t.directiveTransforms||{})})),o0(o,r),n.hoistStatic&&function e(t,n,r,i=!1,l=!1){let{children:s}=t,o=[];for(let n=0;n0){if(e>=2){a.codegenNode.patchFlag=-1,o.push(a);continue}}else{let e=a.codegenNode;if(13===e.type){let t=e.patchFlag;if((void 0===t||512===t||1===t)&&oZ(a,r)>=2){let t=oY(a);t&&(e.props=r.hoist(t))}e.dynamicProps&&(e.dynamicProps=r.hoist(e.dynamicProps))}}}else if(12===a.type&&(i?0:oX(a,r))>=2){14===a.codegenNode.type&&a.codegenNode.arguments.length>0&&a.codegenNode.arguments.push("-1"),o.push(a);continue}if(1===a.type){let n=1===a.tagType;n&&r.scopes.vSlot++,e(a,t,r,!1,l),n&&r.scopes.vSlot--}else if(11===a.type)e(a,t,r,1===a.children.length,!0);else if(9===a.type)for(let n=0;ne.key===t||e.key.content===t);return n&&n.value}}o.length&&r.transformHoist&&r.transformHoist(s,r,t)}(o,void 0,r,!!oG(o)),n.ssr||function(e,t){let{helper:n}=t,{children:r}=e;if(1===r.length){let n=oG(e);if(n&&n.codegenNode){let r=n.codegenNode;13===r.type&&sz(r,t),e.codegenNode=r}else e.codegenNode=r[0]}else r.length>1&&(e.codegenNode=sD(t,n(l5),void 0,e.children,64,void 0,void 0,!0,void 0,!1))}(o,r),o.helpers=new Set([...r.helpers.keys()]),o.components=[...r.components],o.directives=[...r.directives],o.imports=r.imports,o.hoists=r.hoists,o.temps=r.temps,o.cached=r.cached,o.transformed=!0,function(e,t={}){let n=function(e,{mode:t="function",prefixIdentifiers:n="module"===t,sourceMap:r=!1,filename:i="template.vue.html",scopeId:l=null,optimizeImports:s=!1,runtimeGlobalName:o="Vue",runtimeModuleName:a="vue",ssrRuntimeModuleName:c="vue/server-renderer",ssr:u=!1,isTS:h=!1,inSSR:d=!1}){let p={mode:t,prefixIdentifiers:n,sourceMap:r,filename:i,scopeId:l,optimizeImports:s,runtimeGlobalName:o,runtimeModuleName:a,ssrRuntimeModuleName:c,ssr:u,isTS:h,inSSR:d,source:e.source,code:"",column:1,line:1,offset:0,indentLevel:0,pure:!1,map:void 0,helper:e=>`_${sL[e]}`,push(e,t=-2,n){p.code+=e},indent(){f(++p.indentLevel)},deindent(e=!1){e?--p.indentLevel:f(--p.indentLevel)},newline(){f(p.indentLevel)}};function f(e){p.push(` +`+" ".repeat(e),0)}return p}(e,t);t.onContextCreated&&t.onContextCreated(n);let{mode:r,push:i,prefixIdentifiers:l,indent:s,deindent:o,newline:a,ssr:c}=n,u=Array.from(e.helpers),h=u.length>0,d=!l&&"module"!==r;!function(e,t){let{push:n,newline:r,runtimeGlobalName:i}=t,l=Array.from(e.helpers);if(l.length>0&&(n(`const _Vue = ${i} +`,-1),e.hoists.length)){let e=[sl,ss,so,sa,sc].filter(e=>l.includes(e)).map(o6).join(", ");n(`const { ${e} } = _Vue +`,-1)}(function(e,t){if(!e.length)return;t.pure=!0;let{push:n,newline:r}=t;r();for(let i=0;i0)&&a()),e.directives.length&&(o3(e.directives,"directive",n),e.temps>0&&a()),e.temps>0){i("let ");for(let t=0;t0?", ":""}_temp${t}`)}return(e.components.length||e.directives.length||e.temps)&&(i(` +`,0),a()),c||i("return "),e.codegenNode?o5(e.codegenNode,n):i("null"),d&&(o(),i("}")),o(),i("}"),{ast:e,code:n.code,preamble:"",map:n.map?n.map.toJSON():void 0}}(o,s)}(e,T({},a$,t,{nodeTransforms:[aH,...aq,...t.nodeTransforms||[]],directiveTransforms:T({},aW,t.directiveTransforms||{}),transformHoist:null}))}(e,i),s=Function(l)();return s._rc=!0,aK[n]=s}return iM(az),e.BaseTransition=ny,e.BaseTransitionPropsValidators=ng,e.Comment=r5,e.DeprecationTypes=null,e.EffectScope=em,e.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"},e.ErrorTypeStrings=null,e.Fragment=r4,e.KeepAlive={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){let n=iN(),r=n.ctx,i=new Map,l=new Set,s=null,o=n.suspense,{renderer:{p:a,m:c,um:u,o:{createElement:h}}}=r,d=h("div");function p(e){nJ(e),u(e,n,o,!0)}function f(e){i.forEach((t,n)=>{let r=iD(nj(t)?t.type.__asyncResolved||{}:t.type);r&&!e(r)&&g(n)})}function g(e){let t=i.get(e);!t||s&&ic(t,s)?s&&nJ(s):p(t),i.delete(e),l.delete(e)}r.activate=(e,t,n,r,i)=>{let l=e.component;c(e,t,n,0,o),a(l.vnode,e,t,n,l,o,r,e.slotScopeIds,i),rq(()=>{l.isDeactivated=!1,l.a&&z(l.a);let t=e.props&&e.props.onVnodeMounted;t&&iC(t,l.parent,e)},o)},r.deactivate=e=>{let t=e.component;rQ(t.m),rQ(t.a),c(e,d,null,1,o),rq(()=>{t.da&&z(t.da);let n=e.props&&e.props.onVnodeUnmounted;n&&iC(n,t.parent,e),t.isDeactivated=!0},o)},t7(()=>[e.include,e.exclude],([e,t])=>{e&&f(t=>nq(e,t)),t&&f(e=>!nq(t,e))},{flush:"post",deep:!0});let m=null,y=()=>{null!=m&&(rZ(n.subTree.type)?rq(()=>{i.set(m,nG(n.subTree))},n.subTree.suspense):i.set(m,nG(n.subTree)))};return nY(y),n1(y),n2(()=>{i.forEach(e=>{let{subTree:t,suspense:r}=n,i=nG(t);if(e.type===i.type&&e.key===i.key){nJ(i);let e=i.component.da;e&&rq(e,r);return}p(e)})}),()=>{if(m=null,!t.default)return s=null;let n=t.default(),r=n[0];if(n.length>1)return s=null,n;if(!ia(r)||!(4&r.shapeFlag)&&!(128&r.shapeFlag))return s=null,r;let o=nG(r);if(o.type===r5)return s=null,o;let a=o.type,c=iD(nj(o)?o.type.__asyncResolved||{}:a),{include:u,exclude:h,max:d}=e;if(u&&(!c||!nq(u,c))||h&&c&&nq(h,c))return o.shapeFlag&=-257,s=o,r;let p=null==o.key?a:o.key,f=i.get(p);return o.el&&(o=im(o),128&r.shapeFlag&&(r.ssContent=o)),m=p,f?(o.el=f.el,o.component=f.component,o.transition&&nC(o,o.transition),o.shapeFlag|=512,l.delete(p),l.add(p)):(l.add(p),d&&l.size>parseInt(d,10)&&g(l.values().next().value)),o.shapeFlag|=256,s=o,rZ(r.type)?r:o}}},e.ReactiveEffect=ey,e.Static=r9,e.Suspense={name:"Suspense",__isSuspense:!0,process(e,t,n,r,i,l,s,o,a,c){if(null==e)!function(e,t,n,r,i,l,s,o,a){let{p:c,o:{createElement:u}}=a,h=u("div"),d=e.suspense=r1(e,i,r,t,h,n,l,s,o,a);c(null,d.pendingBranch=e.ssContent,h,null,r,d,l,s),d.deps>0?(r0(e,"onPending"),r0(e,"onFallback"),c(null,e.ssFallback,t,n,r,null,l,s),r3(d,e.ssFallback)):d.resolve(!1,!0)}(t,n,r,i,l,s,o,a,c);else{if(l&&l.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}!function(e,t,n,r,i,l,s,o,{p:a,um:c,o:{createElement:u}}){let h=t.suspense=e.suspense;h.vnode=t,t.el=e.el;let d=t.ssContent,p=t.ssFallback,{activeBranch:f,pendingBranch:g,isInFallback:m,isHydrating:y}=h;if(g)h.pendingBranch=d,ic(g,d)?(a(g,d,h.hiddenContainer,null,i,h,l,s,o),h.deps<=0?h.resolve():m&&!y&&(a(f,p,n,r,i,null,l,s,o),r3(h,p))):(h.pendingId=rY++,y?(h.isHydrating=!1,h.activeBranch=g):c(g,i,h),h.deps=0,h.effects.length=0,h.hiddenContainer=u("div"),m?(a(null,d,h.hiddenContainer,null,i,h,l,s,o),h.deps<=0?h.resolve():(a(f,p,n,r,i,null,l,s,o),r3(h,p))):f&&ic(f,d)?(a(f,d,n,r,i,h,l,s,o),h.resolve(!0)):(a(null,d,h.hiddenContainer,null,i,h,l,s,o),h.deps<=0&&h.resolve()));else if(f&&ic(f,d))a(f,d,n,r,i,h,l,s,o),r3(h,d);else if(r0(t,"onPending"),h.pendingBranch=d,512&d.shapeFlag?h.pendingId=d.component.suspenseId:h.pendingId=rY++,a(null,d,h.hiddenContainer,null,i,h,l,s,o),h.deps<=0)h.resolve();else{let{timeout:e,pendingId:t}=h;e>0?setTimeout(()=>{h.pendingId===t&&h.fallback(p)},e):0===e&&h.fallback(p)}}(e,t,n,r,i,s,o,a,c)}},hydrate:function(e,t,n,r,i,l,s,o,a){let c=t.suspense=r1(t,r,n,e.parentNode,document.createElement("div"),null,i,l,s,o,!0),u=a(e,c.pendingBranch=t.ssContent,n,c,l,s);return 0===c.deps&&c.resolve(!1,!0),u},normalize:function(e){let{shapeFlag:t,children:n}=e,r=32&t;e.ssContent=r2(r?n.default:n),e.ssFallback=r?r2(n.fallback):ip(r5)}},e.Teleport={name:"Teleport",__isTeleport:!0,process(e,t,n,r,i,l,s,o,a,c){let{mc:u,pc:h,pbc:d,o:{insert:p,querySelector:f,createText:g,parentNode:m}}=c,y=ni(t.props),{dynamicChildren:b}=t,_=(e,t,n)=>{16&e.shapeFlag&&u(e.children,t,n,i,l,s,o,a)},S=(e=t)=>{let n=ni(e.props),r=e.target=no(e.props,f),l=nu(r,e,g,p);r&&("svg"!==s&&nl(r)?s="svg":"mathml"!==s&&ns(r)&&(s="mathml"),i&&i.isCE&&(i.ce._teleportTargets||(i.ce._teleportTargets=new Set)).add(r),n||(_(e,r,l),nc(e,!1)))},x=e=>{let t=()=>{if(nn.get(e)===t){if(nn.delete(e),ni(e.props)){let t=m(e.el)||n;_(e,t,e.anchor),nc(e,!0)}S(e)}};nn.set(e,t),rq(t,l)};if(null==e){let e,i=t.el=g(""),s=t.anchor=g("");if(p(i,n,r),p(s,n,r),(e=t.props)&&(e.defer||""===e.defer)||l&&l.pendingBranch)return void x(t);y&&(_(t,n,s),nc(t,!0)),S()}else{t.el=e.el;let r=t.anchor=e.anchor,u=nn.get(e);if(u){u.flags|=8,nn.delete(e),x(t);return}t.targetStart=e.targetStart;let p=t.target=e.target,g=t.targetAnchor=e.targetAnchor,m=ni(e.props),_=m?n:p,S=m?r:g;if("svg"===s||nl(p)?s="svg":("mathml"===s||ns(p))&&(s="mathml"),b?(d(e.dynamicChildren,b,_,i,l,s,o),rX(e,t,!0)):a||h(e,t,_,S,i,l,s,o,!1),y)m?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):na(t,n,r,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){let e=t.target=no(t.props,f);e&&na(t,e,null,c,0)}else m&&na(t,p,g,c,1);nc(t,y)}},remove(e,t,n,{um:r,o:{remove:i}},l){let{shapeFlag:s,children:o,anchor:a,targetStart:c,targetAnchor:u,target:h,props:d}=e,p=l||!ni(d),f=nn.get(e);if(f&&(f.flags|=8,nn.delete(e),p=!1),h&&(i(c),i(u)),l&&i(a),16&s)for(let e=0;ee[r]});return n},e.createRenderer=function(e){return rK(e)},e.createSSRApp=l3,e.createSlots=function(e,t){for(let n=0;n{let t=r.fn(...e);return t&&(t.key=r.key),t}:r.fn)}return e},e.createStaticVNode=function(e,t){let n=ip(r9,null,e);return n.staticCount=t,n},e.createTextVNode=iv,e.createVNode=ip,e.customRef=tE,e.defineAsyncComponent=function(e){let t;I(e)&&(e={loader:e});let{loader:n,loadingComponent:r,errorComponent:i,delay:l=200,hydrate:s,timeout:o,suspensible:a=!0,onError:c}=e,u=null,h=0,d=()=>{let e;return u||(e=u=n().catch(e=>{if(e=e instanceof Error?e:Error(String(e)),c)return new Promise((t,n)=>{c(e,()=>t((h++,u=null,d())),()=>n(e),h+1)});throw e}).then(n=>e!==u&&u?u:(n&&(n.__esModule||"Module"===n[Symbol.toStringTag])&&(n=n.default),t=n,n)))};return nT({name:"AsyncComponentWrapper",__asyncLoader:d,__asyncHydrate(e,n,r){let i=!1;(n.bu||(n.bu=[])).push(()=>i=!0);let l=()=>{i||r()},o=s?()=>{let t=s(l,t=>(function(e,t){if(nP(e)&&"["===e.data){let n=1,r=e.nextSibling;for(;r;){if(1===r.nodeType){if(!1===t(r))break}else if(nP(r))if("]"===r.data){if(0==--n)break}else"["===r.data&&n++;r=r.nextSibling}}else t(e)})(e,t));t&&(n.bum||(n.bum=[])).push(t)}:l;t?o():d().then(()=>!n.isUnmounted&&o())},get __asyncResolved(){return t},setup(){let e=iw;if(nw(e),t)return()=>nU(t,e);let n=t=>{u=null,tV(t,e,13,!i)};if(a&&e.suspense)return d().then(t=>()=>nU(t,e)).catch(e=>(n(e),()=>i?ip(i,{error:e}):null));let s=tS(!1),c=tS(),h=tS(!!l);return l&&setTimeout(()=>{h.value=!1},l),null!=o&&setTimeout(()=>{if(!s.value&&!c.value){let e=Error(`Async component timed out after ${o}ms.`);n(e),c.value=e}},o),d().then(()=>{s.value=!0,e.parent&&nH(e.parent.vnode)&&e.parent.update()}).catch(e=>{n(e),c.value=e}),()=>s.value&&t?nU(t,e):c.value&&i?ip(i,{error:c.value}):r&&!h.value?nU(r,e):void 0}})},e.defineComponent=nT,e.defineCustomElement=lC,e.defineEmits=function(){return null},e.defineExpose=function(e){},e.defineModel=function(){},e.defineOptions=function(e){},e.defineProps=function(){return null},e.defineSSRCustomElement=(e,t)=>lC(e,t,l3),e.defineSlots=function(){return null},e.devtools=void 0,e.effect=function(e,t){e.effect instanceof ey&&(e=e.effect.fn);let n=new ey(e);t&&T(n,t);try{n.run()}catch(e){throw n.stop(),e}let r=n.run.bind(n);return r.effect=n,r},e.effectScope=function(e){return new em(e)},e.getCurrentInstance=iN,e.getCurrentScope=function(){return l},e.getCurrentWatcher=function(){return g},e.getTransitionRawChildren=nk,e.guardReactiveProps=ig,e.h=iB,e.handleError=tV,e.hasInjectionContext=function(){return!!(iN()||rS)},e.hydrate=(...e)=>{l1().hydrate(...e)},e.hydrateOnIdle=(e=1e4)=>t=>{let n=nV(t,{timeout:e});return()=>nB(n)},e.hydrateOnInteraction=(e=[])=>(t,n)=>{R(e)&&(e=[e]);let r=!1,i=e=>{r||(r=!0,l(),t(),e.target.dispatchEvent(new e.constructor(e.type,e)))},l=()=>{n(t=>{for(let n of e)t.removeEventListener(n,i)})};return n(t=>{for(let n of e)t.addEventListener(n,i,{once:!0})}),l},e.hydrateOnMediaQuery=e=>t=>{if(e){let n=matchMedia(e);if(!n.matches)return n.addEventListener("change",t,{once:!0}),()=>n.removeEventListener("change",t);t()}},e.hydrateOnVisible=e=>(t,n)=>{let r=new IntersectionObserver(e=>{for(let n of e)if(n.isIntersecting){r.disconnect(),t();break}},e);return n(e=>{if(e instanceof Element){if(function(e){let{top:t,left:n,bottom:r,right:i}=e.getBoundingClientRect(),{innerHeight:l,innerWidth:s}=window;return(t>0&&t0&&r0&&n0&&ir.disconnect()},e.initCustomFormatter=function(){},e.initDirectivesForSSR=S,e.inject=t8,e.isMemoSame=ij,e.isProxy=tg,e.isReactive=td,e.isReadonly=tp,e.isRef=t_,e.isRuntimeOnly=()=>!h,e.isShallow=tf,e.isVNode=ia,e.markRaw=tv,e.mergeDefaults=function(e,t){let n=ra(e);for(let e in t){if(e.startsWith("__skip"))continue;let r=n[e];r?E(r)||I(r)?r=n[e]={type:r,default:t[e]}:r.default=t[e]:null===r&&(r=n[e]={default:t[e]}),r&&t[`__skip_${e}`]&&(r.skipFactory=!0)}return n},e.mergeModels=function(e,t){return e&&t?E(e)&&E(t)?e.concat(t):T({},ra(e),ra(t)):e||t},e.mergeProps=ix,e.nextTick=tz,e.nodeOps=iz,e.normalizeClass=ei,e.normalizeProps=function(e){if(!e)return null;let{class:t,style:n}=e;return t&&!R(t)&&(e.class=ei(t)),n&&(e.style=Y(n)),e},e.normalizeStyle=Y,e.onActivated=nW,e.onBeforeMount=nZ,e.onBeforeUnmount=n2,e.onBeforeUpdate=n0,e.onDeactivated=nK,e.onErrorCaptured=n5,e.onMounted=nY,e.onRenderTracked=n8,e.onRenderTriggered=n4,e.onScopeDispose=function(e,t=!1){l&&l.cleanups.push(e)},e.onServerPrefetch=n3,e.onUnmounted=n6,e.onUpdated=n1,e.onWatcherCleanup=tF,e.openBlock=it,e.patchProp=lS,e.popScopeId=function(){t1=null},e.provide=t4,e.proxyRefs=tN,e.pushScopeId=function(e){t1=e},e.queuePostFlushCb=tX,e.reactive=ta,e.readonly=tu,e.ref=tS,e.registerRuntimeCompiler=iM,e.render=l2,e.renderList=function(e,t,n,r){let i,l=n&&n[r],s=E(e);if(s||R(e)){let n=s&&td(e),r=!1,o=!1;n&&(r=!tf(e),o=tp(e),e=eU(e)),i=Array(e.length);for(let n=0,s=e.length;nt(e,n,void 0,l&&l[n]));else{let n=Object.keys(e);i=Array(n.length);for(let r=0,s=n.length;r0;return"default"!==t&&(n.name=t),it(),io(r4,null,[ip("slot",n,r&&r())],e?-2:64)}let l=e[t];l&&l._c&&(l._d=!1),it();let s=l&&function e(t){return t.some(t=>!ia(t)||t.type!==r5&&(t.type!==r4||!!e(t.children)))?t:null}(l(n)),o=n.key||s&&s.key,a=io(r4,{key:(o&&!O(o)?o:`_${t}`)+(!s&&r?"_fb":"")},s||(r?r():[]),s&&1===e._?64:-2);return!i&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),l&&l._c&&(l._d=!0),a},e.resolveComponent=function(e,t){return re(n9,e,!0,t)||e},e.resolveDirective=function(e){return re("directives",e)},e.resolveDynamicComponent=function(e){return R(e)?re(n9,e,!1)||e:e||n7},e.resolveFilter=null,e.resolveTransitionHooks=n_,e.setBlockTracking=il,e.setDevtoolsHook=S,e.setTransitionHooks=nC,e.shallowReactive=tc,e.shallowReadonly=function(e){return th(e,!0,e8,tr,to)},e.shallowRef=tx,e.ssrContextKey=t5,e.ssrUtils=null,e.stop=function(e){e.effect.stop()},e.toDisplayString=ep,e.toHandlerKey=W,e.toHandlers=function(e,t){let n={};for(let r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:W(r)]=e[r];return n},e.toRaw=tm,e.toRef=function(e,t,n){if(t_(e))return e;if(I(e))return new tR(e);if(!M(e)||!(arguments.length>1))return tS(e);return new tI(e,t,n)},e.toRefs=function(e){let t=E(e)?Array(e.length):{};for(let n in e)t[n]=new tI(e,n,void 0);return t},e.toValue=function(e){return I(e)?e():tT(e)},e.transformVNodeArgs=function(e){},e.triggerRef=function(e){e.dep&&e.dep.trigger()},e.unref=tT,e.useAttrs=function(){return ro().attrs},e.useCssModule=function(e="$style"){return b},e.useCssVars=function(e){let t=iN();if(!t)return;let n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(e=>ls(e,n))},r=()=>{let r=e(t.proxy);t.ce?ls(t.ce,r):function e(t,n){if(128&t.shapeFlag){let r=t.suspense;t=r.activeBranch,r.pendingBranch&&!r.isHydrating&&r.effects.push(()=>{e(r.activeBranch,n)})}for(;t.component;)t=t.component.subTree;if(1&t.shapeFlag&&t.el)ls(t.el,n);else if(t.type===r4)t.children.forEach(t=>e(t,n));else if(t.type===r9){let{el:e,anchor:r}=t;for(;e&&(ls(e,n),e!==r);)e=e.nextSibling}}(t.subTree,r),n(r)};n0(()=>{tX(r)}),nY(()=>{t7(r,S,{flush:"post"});let e=new MutationObserver(r);e.observe(t.subTree.el.parentNode,{childList:!0}),n6(()=>e.disconnect())})},e.useHost=lw,e.useId=function(){let e=iN();return e?(e.appContext.config.idPrefix||"v")+"-"+e.ids[0]+e.ids[1]++:""},e.useModel=function(e,t,n=b){let r=iN(),i=j(t),l=H(t),s=rx(e,i),o=tE((s,o)=>{let a,c,u=b;return t9(()=>{let t=e[i];K(a,t)&&(a=t,o())}),{get:()=>(s(),n.get?n.get(a):a),set(e){let s=n.set?n.set(e):e;if(!K(s,a)&&!(u!==b&&K(e,u)))return;let h=r.vnode.props;h&&(t in h||i in h||l in h)&&(`onUpdate:${t}`in h||`onUpdate:${i}`in h||`onUpdate:${l}`in h)||(a=e,o()),r.emit(`update:${t}`,s),K(e,s)&&K(e,u)&&!K(s,c)&&o(),u=e,c=s}}});return o[Symbol.iterator]=()=>{let e=0;return{next:()=>e<2?{value:e++?s||b:o,done:!1}:{done:!0}}},o},e.useSSRContext=()=>{},e.useShadowRoot=function(){let e=lw();return e&&e.shadowRoot},e.useSlots=function(){return ro().slots},e.useTemplateRef=function(e){let t=iN(),n=tx(null);return t&&Object.defineProperty(t.refs===b?t.refs={}:t.refs,e,{enumerable:!0,get:()=>n.value,set:e=>n.value=e}),n},e.useTransitionState=np,e.vModelCheckbox=lU,e.vModelDynamic={created(e,t,n){lG(e,t,n,null,"created")},mounted(e,t,n){lG(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){lG(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){lG(e,t,n,r,"updated")}},e.vModelRadio=lq,e.vModelSelect=lW,e.vModelText=lj,e.vShow={name:"show",beforeMount(e,{value:t},{transition:n}){e[ln]="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):li(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),li(e,!0),r.enter(e)):r.leave(e,()=>{li(e,!1)}):li(e,t))},beforeUnmount(e,{value:t}){li(e,t)}},e.version=iU,e.warn=S,e.watch=function(e,t,n){return t7(e,t,n)},e.watchEffect=function(e,t){return t7(e,null,t)},e.watchPostEffect=function(e,t){return t7(e,null,{flush:"post"})},e.watchSyncEffect=t9,e.withAsyncContext=function(e){let t=iN(),n=iR,r=e();iE(),n&&u(!1);let i=()=>{iA(t),n&&u(!0)},l=()=>{iN()!==t&&t.scope.off(),iE(),n&&u(!1)};return P(r)&&(r=r.catch(e=>{throw i(),Promise.resolve().then(()=>Promise.resolve().then(l)),e})),[r,()=>{i(),Promise.resolve().then(l)}]},e.withCtx=t6,e.withDefaults=function(e,t){return null},e.withDirectives=function(e,t){if(null===t0)return e;let n=i$(t0),r=e.dirs||(e.dirs=[]);for(let e=0;e{let n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=n=>{if(!("key"in n))return;let r=H(n.key);if(t.some(e=>e===r||lZ[e]===r))return e(n)})},e.withMemo=function(e,t,n,r){let i=n[r];if(i&&ij(i,e))return i;let l=t();return l.memo=e.slice(),l.cacheIndex=r,n[r]=l},e.withModifiers=(e,t)=>{if(!e)return e;let n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(n,...r)=>{for(let e=0;et6,e}({});

        Z*W8(~j7yXHZMJ6fP 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 vTIf*j|O literal 0 HcmV?d00001 diff --git a/TAT/images/border_bg.jpg b/TAT/images/border_bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53ca0a99a05c3a9a328e50fb9a1be0b09a0a1d3a GIT binary patch literal 20837 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 literal 0 HcmV?d00001 diff --git a/TAT/images/title_border_bg.png b/TAT/images/title_border_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..101643688ce8c94d245b8bbf5a020c55ab975e66 GIT binary patch literal 2799 zcmV)P)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z031m~K~#9!V&wb#zkvY_Ffm{O6bb?W009600{{jZ0+fq*zz_fc002ovPDHLkV1lw= BPh$W8 literal 0 HcmV?d00001 diff --git a/TAT/images/title_left_bg.png b/TAT/images/title_left_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e7cdea2a7c254c0bbf6e2c5cb76d6829396a9253 GIT binary patch literal 19456 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 M<6TBY2CiZM53#qfMF0Q* literal 0 HcmV?d00001 diff --git a/TAT/images/title_right_bg.png b/TAT/images/title_right_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..4edbe84632d9ba70259400a8e64e9acdaa789c9a GIT binary patch literal 2895 zcma);g;x`P8^ynrZXh8wLOKk({2`q(lpHN0B|SoV2uMgM0;46RlyD#=Ok|Yw2th$4 zq(LM`Px{6G;JxSE`#H~f?jLYp80cwHQ?gM40I0R$8i)(Z{xjs#MV3a(b6x=I1-I}4 zfQsRtNkCQ(3jmb5F6!zA2F{+oo<7c=UfkO1>fB!5o{la^2LJ*ma*YDaQ;5t;Geiek zQ?>D}>I`H!;N`5_r%b2@sJ&Zt;QQ%0t%IdGGXh*3&-ZtQ&i4Xl&u%h(5T zCJ$vdxu!}!h6E8dHjaNBH?8EXoD8CdXv4133nncWx`I21C6^B{d1ne?a*)=r9f?d!oXbS76Yiz;TU|ifTi^t^g;#5T|r5HRm}S7kY5< zJ(~>L0#CA3GAmk(B2S;#diYl&5?1i!Y7!pA6~43XsAs1MH;3n?s~-w8z1%i`fi>XO z?M8hqX6YY>uX({P*|6lb zvou9R$yIwG47NOSu~+R9#(4)Ju*?K$*a4VQ8sgFKQF3mJ8 zG;O8a*u=*~c@$MnW&GZR_WdK%kau@YY7G|3px>F_kCt(md@j3PIfw{ABpM7ES{F52 zpGF+nQ`baC-OZ1N7a7|(bg{`_T-WiZIA-@3d#Yok z?o;lFaZGZ|U4Ak^Leo_}yLIPh&b>jNLF&P$B4i@UBGqHA6^<3575_~HO*Bu~ZFp}m zZ>&ua{Je5ia)opE<=o|ne$d9-jfRa;jgx*uf0Vx2uc20<`+fT~tJA|;`|f*1`>;QR zF~Ts{f8x@R+h|s#gslBmKidAc+iMr>@YeIW(yMsq#-tACqG9c#>sZ0f7^el9K$wyv z#`BsTM*5e-l$(OBor~mTaYu3IV)M;`RJSb0#^JhezWx0@!c&-WOz(QaozWb(Jlp1< zO_L|_QExSKI`75Zj_XdJNDszSr0b>=F|SRPOi`x$rav&+V-MGa*WAan?u4k=Z+PHIIdmwP&elWz*e~q4FOx{;M z*xT2y-yiAKv{pPP{iUp0ih#$u4Q%MX!iG@_%IU z=orVTUz;PCHzw}hGudG|i^D&)kyBE1I2v3fQ|eM8eG~L1rukhn?~GzIU+7q9X6WUU zykq$z{AuFfmO0c8^R^y^4M`ix5(zGxExeY@jf{&tll<*v8H#v{&zHomC^4yBfl^y= zd8c@`!gkmX?WLxigtLa3`XISX57>{y`vrA4$F3$s4?$+=LOtId>a6zHLt=^G*e6ip|x`ND-%2~`ZPWQF1T$(EU1Y2Gm#ODPlSjbqQ zgJq*$(`VEuFGX^z8HlmyFO_)caxm;X&yLd9Y%Yv1G^}pG-cv|k&NWRtke!wfQ9p8y z*1zl5B?Z+-2%(Z#lRxq8>Y8ed{lX0WeDYJ|PHIkSP7#9ICB07Qhj_z{27N~%p%m&x z)UtaYdrC|nagp!PXLphb8KpB^REMZEpkdY#D-{Z~WU&my!g25i-=$_8&;A_pQAIEZ zOcp?Ia)~ zN8Y|w7m6^GPAg08#d}olJ@{nLWSjQbgy5PnYH9lH7A(ygs5mMKiJ_-ezx#2WJ z_B}>6Bc>DC?ARMymP4npS^@fhy3}@k=3Vg91%uxOgI}h;49sLcYuJaZ!BIjZaxH!sks|ke#R44R z_p72@jz=6?%?;HEI6~JtdxMAI^fjzNI}sy3-#r!>c_VePHo5KL2webz z1ONz&1mN)ef~x@di39M*1^~I&0Khzxtvl~tbc3}uRE+~C)<>$LVJdVQ!-jg|GBUM1 z_$qccrdQInQBuh%#0BU + + + + + + TAT监控大屏 + + + + + + + + + + +