// ==UserScript== // @name bilibili-cleanup // @description 删除推送, 专心学习, 设置B站壁纸 // @namespace npm/vite-plugin-monkey // @version 2.1.1 // @author QQ2402398917 // @icon https://i0.hdslb.com/bfs/static/jinkela/long/images/favicon.ico // @match https://www.bilibili.com/* // @exclude https://www.bilibili.com/*/* // @exclude https://www.bilibili.com/history* // @require https://cdn.jsdelivr.net/npm/vue@3.5.12/dist/vue.global.prod.js // @grant GM_addStyle // @grant GM_getValue // @grant GM_registerMenuCommand // @grant GM_setValue // ==/UserScript== (e=>{if(typeof GM_addStyle=="function"){GM_addStyle(e);return}const l=document.createElement("style");l.textContent=e,document.head.append(l)})(` @charset "UTF-8";.wallpaper-item[data-v-0166ab8b]{height:100vh;width:100%;position:absolute;top:0;z-index:23;background-repeat:no-repeat;background-color:var(--wallpaper-bg-color);background-size:var(--wallpaper-size);background-position:var(--wallpaper-pos-x) var(--wallpaper-pos-y);transition:translate var(--scroll-duration) var(--scroll-timing-function)}.wallpaper-item.hidden[data-v-0166ab8b]{translate:0 -100vh}:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","\u5FAE\u8F6F\u96C5\u9ED1",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645,.045,.355,1);--el-transition-function-fast-bezier:cubic-bezier(.23,1,.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:rgb(121.3,187.1,255);--el-color-primary-light-5:rgb(159.5,206.5,255);--el-color-primary-light-7:rgb(197.7,225.9,255);--el-color-primary-light-8:rgb(216.8,235.6,255);--el-color-primary-light-9:rgb(235.9,245.3,255);--el-color-primary-dark-2:rgb(51.2,126.4,204);--el-color-success:#67c23a;--el-color-success-light-3:rgb(148.6,212.3,117.1);--el-color-success-light-5:rgb(179,224.5,156.5);--el-color-success-light-7:rgb(209.4,236.7,195.9);--el-color-success-light-8:rgb(224.6,242.8,215.6);--el-color-success-light-9:rgb(239.8,248.9,235.3);--el-color-success-dark-2:rgb(82.4,155.2,46.4);--el-color-warning:#e6a23c;--el-color-warning-light-3:rgb(237.5,189.9,118.5);--el-color-warning-light-5:rgb(242.5,208.5,157.5);--el-color-warning-light-7:rgb(247.5,227.1,196.5);--el-color-warning-light-8:rgb(250,236.4,216);--el-color-warning-light-9:rgb(252.5,245.7,235.5);--el-color-warning-dark-2:rgb(184,129.6,48);--el-color-danger:#f56c6c;--el-color-danger-light-3:rgb(248,152.1,152.1);--el-color-danger-light-5:rgb(250,181.5,181.5);--el-color-danger-light-7:rgb(252,210.9,210.9);--el-color-danger-light-8:rgb(253,225.6,225.6);--el-color-danger-light-9:rgb(254,240.3,240.3);--el-color-danger-dark-2:rgb(196,86.4,86.4);--el-color-error:#f56c6c;--el-color-error-light-3:rgb(248,152.1,152.1);--el-color-error-light-5:rgb(250,181.5,181.5);--el-color-error-light-7:rgb(252,210.9,210.9);--el-color-error-light-8:rgb(253,225.6,225.6);--el-color-error-light-9:rgb(254,240.3,240.3);--el-color-error-dark-2:rgb(196,86.4,86.4);--el-color-info:#909399;--el-color-info-light-3:rgb(177.3,179.4,183.6);--el-color-info-light-5:rgb(199.5,201,204);--el-color-info-light-7:rgb(221.7,222.6,224.4);--el-color-info-light-8:rgb(232.8,233.4,234.6);--el-color-info-light-9:rgb(243.9,244.2,244.8);--el-color-info-dark-2:rgb(115.2,117.6,122.4);--el-bg-color:#ffffff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.08),0px 12px 32px rgba(0,0,0,.12),0px 8px 16px -8px rgba(0,0,0,.16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:rgba(255,255,255,.9);--el-mask-color-extra-light:rgba(255,255,255,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;display:inline-flex;height:1em;justify-content:center;line-height:1em;position:relative;width:1em;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.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);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.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;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;-moz-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{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.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{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.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-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.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:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-overlay{background-color:var(--el-overlay-color-lighter);bottom:0;height:100%;left:0;overflow:auto;position:fixed;right:0;top:0;z-index:2000}.el-overlay .el-overlay-root{height:0}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;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);z-index:1}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.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:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.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{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.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,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.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),.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){padding-left:20px}.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,.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{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);height:var(--el-tabs-header-height)}.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);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;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)}.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{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.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-bottom:0;margin-top:10px}.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-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.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-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{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{bottom:auto;height:auto;top:0;width:2px}.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-next,.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-next,.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-next,.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-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.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-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.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{left:auto;top:0}.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{bottom:auto;height:100%;top:0;width:2px}.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-reverse}.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__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{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-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);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:1px solid #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-radius:4px 0 0 4px;border-right:none}.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 transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:rgb(209,219,229) transparent}.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:1px solid #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 transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--top{flex-direction:column-reverse}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translate(100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translate(-100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(-100%);transform-origin:0 0}}.el-upload{--el-upload-dragger-padding-horizontal:40px;--el-upload-dragger-padding-vertical:10px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.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);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{--el-upload-picture-card-size:148px;align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.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{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-horizontal) var(--el-upload-dragger-padding-vertical);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.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);font-size:14px;text-align:center}.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{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-horizontal) - 1px) calc(var(--el-upload-dragger-padding-vertical) - 1px)}.el-upload-list{list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.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{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.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:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{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:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{--el-upload-list-picture-card-size:148px;display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.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{display:block;opacity:0}.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{height:100%;-o-object-fit:contain;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.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{color:inherit;font-size: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{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.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{display:inline-flex;opacity:0}.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{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;-o-object-fit:contain;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.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;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.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);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@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-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%;display:inline-block;font-size:var(--el-font-size-base);position:relative;vertical-align:bottom;width:100%}.el-textarea__inner{-webkit-appearance:none;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));display:block;font-family:inherit;font-size:inherit;line-height:1.5;padding:5px 11px;position:relative;resize:vertical;transition:var(--el-transition-box-shadow);width:100%}.el-textarea__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.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 .el-input__count{background:var(--el-fill-color-blank);bottom:5px;color:var(--el-color-info);font-size:12px;line-height:14px;position:absolute;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder)}.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);box-sizing:border-box;display:inline-flex;font-size:var(--el-font-size-base);line-height:var(--el-input-height);position:relative;vertical-align:middle;width:var(--el-input-width)}.el-input::-webkit-scrollbar{width:6px;z-index:11}.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,.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{align-items:center;color:var(--el-color-info);display:inline-flex;font-size:12px;height:100%}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);display:inline-block;line-height:normal;padding-left:8px}.el-input__wrapper{align-items:center;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;cursor:text;display:inline-flex;flex-grow:1;justify-content:center;padding:1px 11px;transform:translateZ(0);transition:var(--el-transition-box-shadow)}.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__inner{--el-input-inner-height:calc(var(--el-input-height, 32px) - 2px);-webkit-appearance:none;background:none;border:none;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));flex-grow:1;font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);outline:none;padding:0;width:100%}.el-input__inner:focus{outline:none}.el-input__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.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{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__prefix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.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{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__suffix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{align-items:center;display:flex;height:inherit;justify-content:center;line-height:inherit;margin-left:8px;transition:all 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);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::-moz-placeholder{color:var(--el-text-color-placeholder)}.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-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{--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{--el-input-inner-height:calc(var(--el-input-height, 24px) - 2px)}.el-input-group{align-items:stretch;display:inline-flex;width:100%}.el-input-group__append,.el-input-group__prepend{align-items:center;background-color:var(--el-fill-color-light);border-radius:var(--el-input-border-radius);color:var(--el-color-info);display:inline-flex;justify-content:center;min-height:100%;padding:0 20px;position:relative;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:0 -20px}.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{background-color:transparent;border-color:transparent;color:inherit}.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{border-bottom-right-radius:0;border-right:0;border-top-right-radius:0;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}.el-input-group__append{border-left:0;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}.el-input-group--prepend>.el-input__wrapper,.el-input-group__append{border-bottom-left-radius:0;border-top-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{border-bottom-right-radius:0;border-top-right-radius:0;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}.el-input-group--append>.el-input__wrapper{border-bottom-right-radius:0;border-top-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{border-bottom-left-radius:0;border-top-left-radius:0;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}.el-input-hidden{display:none!important}.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase: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__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;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__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [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__decrease,.el-input-number.is-controls-right .el-input-number__increase{--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__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);border-radius:var(--el-popper-border-radius);font-size:12px;line-height:20px;min-width:10px;overflow-wrap:break-word;padding:5px 11px;position:absolute;visibility:visible;z-index:2000}.el-popper.is-dark{color:var(--el-bg-color)}.el-popper.is-dark,.el-popper.is-dark>.el-popper__arrow:before{background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark>.el-popper__arrow:before{right:0}.el-popper.is-light,.el-popper.is-light>.el-popper__arrow:before{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light)}.el-popper.is-light>.el-popper__arrow:before{right:0}.el-popper.is-pure{padding:0}.el-popper__arrow,.el-popper__arrow:before{height:10px;position:absolute;width:10px;z-index:-1}.el-popper__arrow:before{background:var(--el-text-color-primary);box-sizing:border-box;content:" ";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-left-color:transparent!important;border-top-color:transparent!important}.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent!important;border-right-color:transparent!important}.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent!important;border-left-color:transparent!important}.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent!important;border-top-color:transparent!important}.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);align-items:center;color:var(--el-checkbox-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);height:var(--el-checkbox-height,32px);margin-right:30px;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-checkbox.is-disabled{cursor:not-allowed}.el-checkbox.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);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{height:14px;width: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{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox input:focus-visible+.el-checkbox__inner{border-radius:var(--el-checkbox-border-radius);outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px}.el-checkbox__input{cursor:pointer;display:inline-flex;outline:none;position:relative;white-space:nowrap}.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{border-color:var(--el-checkbox-disabled-icon-color);cursor:not-allowed}.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: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{background-color:var(--el-checkbox-checked-icon-color);content:"";display:block;height:2px;left:0;position:absolute;right:0;top:5px;transform:scale(.5)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{background-color:var(--el-checkbox-bg-color);border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;display:inline-block;height:var(--el-checkbox-input-height);position:relative;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);width:var(--el-checkbox-input-width);z-index:var(--el-index-normal)}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{border:1px solid transparent;border-left:0;border-top:0;box-sizing:content-box;content:"";height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);transform-origin:center;transition:transform .15s ease-in .05s;width:3px}.el-checkbox__original{height:0;margin:0;opacity:0;outline:none;position:absolute;width:0;z-index:-1}.el-checkbox__label{display:inline-block;font-size:var(--el-checkbox-font-size);line-height:1;padding-left:8px}.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{height:14px;width: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{height:12px;width: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{height:6px;width:2px}.el-checkbox:last-of-type{margin-right:0}.upload-item .cell[data-v-b8caab98]{margin-bottom:10px;display:flex;align-items:center;justify-content:space-between}.upload-item .cell .right[data-v-b8caab98]{display:flex;align-items:center}.upload-item .label[data-v-b8caab98]{margin-right:10px}.upload-item .input[data-v-b8caab98]{flex:1}.wallpaper-pane[data-v-d4dbee09]{height:300px}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.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-bottom:1px solid var(--el-collapse-border-color);border-top:1px solid var(--el-collapse-border-color)}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{align-items:center;background-color:var(--el-collapse-header-bg-color);border:none;border-bottom:1px solid var(--el-collapse-border-color);color:var(--el-collapse-header-text-color);cursor:pointer;display:flex;font-size:var(--el-collapse-header-font-size);font-weight:500;height:var(--el-collapse-header-height);line-height:var(--el-collapse-header-height);outline:none;padding:0;transition:border-bottom-color var(--el-transition-duration);width:100%}.el-collapse-item__arrow{font-weight:300;margin:0 8px 0 auto;transition:transform var(--el-transition-duration)}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{background-color:var(--el-collapse-content-bg-color);border-bottom:1px solid var(--el-collapse-border-color);box-sizing:border-box;overflow:hidden;will-change:height}.el-collapse-item__content{color:var(--el-collapse-content-text-color);font-size:var(--el-collapse-content-font-size);line-height:1.7692307692;padding-bottom:25px}.el-collapse-item:last-child{margin-bottom:-1px}.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%;overflow:hidden;position:relative}.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{background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));border-radius:inherit;cursor:pointer;display:block;height:0;opacity:var(--el-scrollbar-opacity,.3);position:relative;transition:var(--el-transition-duration) background-color;width:0}.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{border-radius:4px;bottom:2px;position:absolute;right:2px;z-index:1}.el-scrollbar__bar.is-vertical{top:2px;width:6px}.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-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;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-empty-padding);text-align:center}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:top;width:100%}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;height:100%;vertical-align:top;width:100%}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);margin:0}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)}.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:rgba(255,255,255,.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-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-color-info);--el-button-active-color:var(--el-text-color-primary);align-items:center;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);box-sizing:border-box;color:var(--el-button-text-color);cursor:pointer;display:inline-flex;font-weight:var(--el-button-font-weight);height:32px;justify-content:center;line-height:1;outline:none;text-align:center;transition:.1s;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-button:hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color);color:var(--el-button-hover-text-color);outline:none}.el-button:active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base)}.el-button,.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{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{background-color:var(--el-button-disabled-bg-color);background-image:none;border-color:var(--el-button-disabled-border-color);color:var(--el-button-disabled-text-color);cursor:not-allowed}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{background-color:var(--el-mask-color-extra-light);border-radius:inherit;bottom:-1px;content:"";left:-1px;pointer-events:none;position:absolute;right:-1px;top:-1px;z-index:1}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px;width:32px}.el-button.is-text{background-color:transparent;border:0 solid transparent;color:var(--el-button-text-color)}.el-button.is-text.is-disabled{background-color:transparent!important;color:var(--el-button-disabled-text-color)}.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 0s,outline 0s}.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{background:transparent;border-color:transparent;color:var(--el-button-text-color);height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-link:not(.is-disabled):active,.el-button.is-link:not(.is-disabled):hover{background-color:transparent;border-color:transparent}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color)}.el-button--text{background:transparent;border-color:transparent;color:var(--el-color-primary);padding-left:0;padding-right:0}.el-button--text.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button--text:not(.is-disabled):hover{background-color:transparent;border-color:transparent;color:var(--el-color-primary-light-3)}.el-button--text:not(.is-disabled):active{background-color:transparent;border-color:transparent;color:var(--el-color-primary-dark-2)}.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-link,.el-button--primary.is-plain,.el-button--primary.is-text{--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-link.is-disabled,.el-button--primary.is-link.is-disabled:active,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:hover{background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8);color:var(--el-color-primary-light-5)}.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-link,.el-button--success.is-plain,.el-button--success.is-text{--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-link.is-disabled,.el-button--success.is-link.is-disabled:active,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:active,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:hover{background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8);color:var(--el-color-success-light-5)}.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-link,.el-button--warning.is-plain,.el-button--warning.is-text{--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-link.is-disabled,.el-button--warning.is-link.is-disabled:active,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:hover{background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8);color:var(--el-color-warning-light-5)}.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-link,.el-button--danger.is-plain,.el-button--danger.is-text{--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-link.is-disabled,.el-button--danger.is-link.is-disabled:active,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:hover{background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8);color:var(--el-color-danger-light-5)}.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-link,.el-button--info.is-plain,.el-button--info.is-text{--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-link.is-disabled,.el-button--info.is-link.is-disabled:active,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:active,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:hover{background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8);color:var(--el-color-info-light-5)}.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{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{padding:12px;width:var(--el-button-size)}.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);font-size:12px;padding:5px 11px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{padding:5px;width:var(--el-button-size)}: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{background-color:var(--el-mask-color);bottom:0;left:0;margin:0;position:absolute;right:0;top:0;transition:opacity var(--el-transition-duration);z-index:2000}.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);position:absolute;text-align:center;top:50%;width:100%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);font-size:14px;margin:3px 0}.el-loading-spinner .circular{animation:loading-rotate 2s linear infinite;display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size)}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.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(1turn)}}@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-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);background-color:var(--el-card-bg-color);border:1px solid var(--el-card-border-color);border-radius:var(--el-card-border-radius);color:var(--el-text-color-primary);overflow:hidden;transition:var(--el-transition-duration)}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-card__body{padding:var(--el-card-padding)}.el-card__footer{border-top:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer;font-size:inherit}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translate(-50%);width:282px}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;height:100%;justify-content:space-around;width:100%}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.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:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.PictureItem[data-v-016ce612]{width:50%}.PictureItem .card[data-v-016ce612]{margin:3px}.PictureItem .card .card-header[data-v-016ce612],.PictureItem .card .card-footer[data-v-016ce612]{display:flex;justify-content:space-between}.PictureItem .card .header-btn[data-v-016ce612]{margin-left:10px}.PictureItem .card[data-v-016ce612]:nth-child(odd){margin-right:0}.PictureItem .card .img[data-v-016ce612]{height:100px}.collapse-item .clear-all-btn[data-v-97a3db87]{margin-left:10px}[data-v-97a3db87] .el-scrollbar__view{display:flex;flex-wrap:wrap;width:100%}: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{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.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);backface-visibility:hidden;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);box-shadow:var(--el-messagebox-box-shadow);box-sizing:border-box;display:inline-block;font-size:var(--el-messagebox-font-size);max-width:var(--el-messagebox-width);overflow:hidden;overflow-wrap:break-word;padding:var(--el-messagebox-padding-primary);position:relative;text-align:left;vertical-align:middle;width:100%}.el-message-box:focus{outline:none!important}.el-overlay.is-message-box .el-overlay-message-box{bottom:0;left:0;overflow:auto;padding:16px;position:fixed;right:0;text-align:center;top:0}.el-overlay.is-message-box .el-overlay-message-box:after{content:"";display:inline-block;height:100%;vertical-align:middle;width:0}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;-moz-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{color:var(--el-messagebox-title-color);font-size:var(--el-messagebox-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.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;display:flex;gap:12px}.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--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{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{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end;padding-top:var(--el-messagebox-padding-primary)}.el-message-box--center .el-message-box__title{align-items:center;display:flex;gap:6px;justify-content:center}.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}.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:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.el-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap}.el-color-predefine__color-selector{border-radius:4px;cursor:pointer;height:20px;margin:0 0 8px 8px;width:20px}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--el-color-primary)}.el-color-predefine__color-selector>div{border-radius:3px;display:flex;height:100%}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{background-color:red;box-sizing:border-box;float:right;height:12px;padding:0 2px;position:relative;width:280px}.el-color-hue-slider__bar{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red);height:100%;position:relative}.el-color-hue-slider__thumb{background:#fff;border:1px solid var(--el-border-color-lighter);border-radius:1px;box-shadow:0 0 2px #0009;box-sizing:border-box;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:4px;z-index:1}.el-color-hue-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-hue-slider.is-vertical{height:180px;padding:2px 0;width:12px}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-svpanel{height:180px;position:relative;width:280px}.el-color-svpanel__black,.el-color-svpanel__white{bottom:0;left:0;position:absolute;right:0;top:0}.el-color-svpanel__white{background:linear-gradient(90deg,#fff,#fff0)}.el-color-svpanel__black{background:linear-gradient(0deg,#000,#0000)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{border-radius:50%;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006;cursor:head;height:4px;transform:translate(-2px,-2px);width:4px}.el-color-alpha-slider{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;box-sizing:border-box;height:12px;position:relative;width:280px}.el-color-alpha-slider__bar{background:linear-gradient(to right,rgba(255,255,255,0) 0,var(--el-bg-color) 100%);height:100%;position:relative}.el-color-alpha-slider__thumb{background:#fff;border:1px solid var(--el-border-color-lighter);border-radius:1px;box-shadow:0 0 2px #0009;box-sizing:border-box;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:4px;z-index:1}.el-color-alpha-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-alpha-slider.is-vertical{height:180px;width:20px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(180deg,#fff0 0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{clear:both;content:"";display:table}.el-color-dropdown__btns{margin-top:12px;text-align:right}.el-color-dropdown__value{color:#000;float:left;font-size:12px;line-height:26px;width:160px}.el-color-picker{display:inline-block;line-height:normal;outline:none;position:relative}.el-color-picker:hover:not(.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}.el-color-picker--large{height:40px}.el-color-picker--large .el-color-picker__trigger{height:40px;width:40px}.el-color-picker--large .el-color-picker__mask{height:38px;width:38px}.el-color-picker--small{height:24px}.el-color-picker--small .el-color-picker__trigger{height:24px;width:24px}.el-color-picker--small .el-color-picker__mask{height:22px;width:22px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:scale(.8)}.el-color-picker__mask{background-color:#ffffffb3;border-radius:4px;cursor:not-allowed;height:30px;left:1px;position:absolute;top:1px;width:30px;z-index:1}.el-color-picker__trigger{align-items:center;border:1px solid var(--el-border-color);border-radius:4px;box-sizing:border-box;cursor:pointer;display:inline-flex;font-size:0;height:32px;justify-content:center;padding:4px;position:relative;width:32px}.el-color-picker__color{border:1px solid var(--el-text-color-secondary);border-radius:var(--el-border-radius-small);box-sizing:border-box;display:block;height:100%;position:relative;text-align:center;width:100%}.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{align-items:center;display:inline-flex;height:100%;justify-content:center;width:100%}.el-color-picker .el-color-picker__empty{color:var(--el-text-color-secondary);font-size:12px}.el-color-picker .el-color-picker__icon{align-items:center;color:#fff;display:inline-flex;font-size:12px;justify-content:center}.el-color-picker__panel{background-color:#fff;border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light);box-sizing:content-box;padding:6px;position:absolute;z-index:10}.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:#333333}.el-row{box-sizing:border-box;display:flex;flex-wrap:wrap;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}[class*=el-col-]{box-sizing:border-box}[class*=el-col-].is-guttered{display:block;min-height:1px}.el-col-0{flex:0 0 0%;max-width:0}.el-col-0,.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{left:0;position:relative}.el-col-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-1,.el-col-1.is-guttered{display:block}.el-col-offset-1{margin-left:4.1666666667%}.el-col-pull-1{position:relative;right:4.1666666667%}.el-col-push-1{left:4.1666666667%;position:relative}.el-col-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-2,.el-col-2.is-guttered{display:block}.el-col-offset-2{margin-left:8.3333333333%}.el-col-pull-2{position:relative;right:8.3333333333%}.el-col-push-2{left:8.3333333333%;position:relative}.el-col-3{flex:0 0 12.5%;max-width:12.5%}.el-col-3,.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{left:12.5%;position:relative}.el-col-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-4,.el-col-4.is-guttered{display:block}.el-col-offset-4{margin-left:16.6666666667%}.el-col-pull-4{position:relative;right:16.6666666667%}.el-col-push-4{left:16.6666666667%;position:relative}.el-col-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-5,.el-col-5.is-guttered{display:block}.el-col-offset-5{margin-left:20.8333333333%}.el-col-pull-5{position:relative;right:20.8333333333%}.el-col-push-5{left:20.8333333333%;position:relative}.el-col-6{flex:0 0 25%;max-width:25%}.el-col-6,.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{left:25%;position:relative}.el-col-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-7,.el-col-7.is-guttered{display:block}.el-col-offset-7{margin-left:29.1666666667%}.el-col-pull-7{position:relative;right:29.1666666667%}.el-col-push-7{left:29.1666666667%;position:relative}.el-col-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-8,.el-col-8.is-guttered{display:block}.el-col-offset-8{margin-left:33.3333333333%}.el-col-pull-8{position:relative;right:33.3333333333%}.el-col-push-8{left:33.3333333333%;position:relative}.el-col-9{flex:0 0 37.5%;max-width:37.5%}.el-col-9,.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{left:37.5%;position:relative}.el-col-10{flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-10,.el-col-10.is-guttered{display:block}.el-col-offset-10{margin-left:41.6666666667%}.el-col-pull-10{position:relative;right:41.6666666667%}.el-col-push-10{left:41.6666666667%;position:relative}.el-col-11{flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-11,.el-col-11.is-guttered{display:block}.el-col-offset-11{margin-left:45.8333333333%}.el-col-pull-11{position:relative;right:45.8333333333%}.el-col-push-11{left:45.8333333333%;position:relative}.el-col-12{flex:0 0 50%;max-width:50%}.el-col-12,.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{left:50%;position:relative}.el-col-13{flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-13,.el-col-13.is-guttered{display:block}.el-col-offset-13{margin-left:54.1666666667%}.el-col-pull-13{position:relative;right:54.1666666667%}.el-col-push-13{left:54.1666666667%;position:relative}.el-col-14{flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-14,.el-col-14.is-guttered{display:block}.el-col-offset-14{margin-left:58.3333333333%}.el-col-pull-14{position:relative;right:58.3333333333%}.el-col-push-14{left:58.3333333333%;position:relative}.el-col-15{flex:0 0 62.5%;max-width:62.5%}.el-col-15,.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{left:62.5%;position:relative}.el-col-16{flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-16,.el-col-16.is-guttered{display:block}.el-col-offset-16{margin-left:66.6666666667%}.el-col-pull-16{position:relative;right:66.6666666667%}.el-col-push-16{left:66.6666666667%;position:relative}.el-col-17{flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-17,.el-col-17.is-guttered{display:block}.el-col-offset-17{margin-left:70.8333333333%}.el-col-pull-17{position:relative;right:70.8333333333%}.el-col-push-17{left:70.8333333333%;position:relative}.el-col-18{flex:0 0 75%;max-width:75%}.el-col-18,.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{left:75%;position:relative}.el-col-19{flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-19,.el-col-19.is-guttered{display:block}.el-col-offset-19{margin-left:79.1666666667%}.el-col-pull-19{position:relative;right:79.1666666667%}.el-col-push-19{left:79.1666666667%;position:relative}.el-col-20{flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-20,.el-col-20.is-guttered{display:block}.el-col-offset-20{margin-left:83.3333333333%}.el-col-pull-20{position:relative;right:83.3333333333%}.el-col-push-20{left:83.3333333333%;position:relative}.el-col-21{flex:0 0 87.5%;max-width:87.5%}.el-col-21,.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{left:87.5%;position:relative}.el-col-22{flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-22,.el-col-22.is-guttered{display:block}.el-col-offset-22{margin-left:91.6666666667%}.el-col-pull-22{position:relative;right:91.6666666667%}.el-col-push-22{left:91.6666666667%;position:relative}.el-col-23{flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-23,.el-col-23.is-guttered{display:block}.el-col-offset-23{margin-left:95.8333333333%}.el-col-pull-23{position:relative;right:95.8333333333%}.el-col-push-23{left:95.8333333333%;position:relative}.el-col-24{flex:0 0 100%;max-width:100%}.el-col-24,.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{left:100%;position:relative}@media only screen and (max-width:767px){.el-col-xs-0{display:none;flex:0 0 0%;max-width:0}.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{left:0;position:relative}.el-col-xs-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xs-1,.el-col-xs-1.is-guttered{display:block}.el-col-xs-offset-1{margin-left:4.1666666667%}.el-col-xs-pull-1{position:relative;right:4.1666666667%}.el-col-xs-push-1{left:4.1666666667%;position:relative}.el-col-xs-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xs-2,.el-col-xs-2.is-guttered{display:block}.el-col-xs-offset-2{margin-left:8.3333333333%}.el-col-xs-pull-2{position:relative;right:8.3333333333%}.el-col-xs-push-2{left:8.3333333333%;position:relative}.el-col-xs-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xs-3,.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{left:12.5%;position:relative}.el-col-xs-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xs-4,.el-col-xs-4.is-guttered{display:block}.el-col-xs-offset-4{margin-left:16.6666666667%}.el-col-xs-pull-4{position:relative;right:16.6666666667%}.el-col-xs-push-4{left:16.6666666667%;position:relative}.el-col-xs-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xs-5,.el-col-xs-5.is-guttered{display:block}.el-col-xs-offset-5{margin-left:20.8333333333%}.el-col-xs-pull-5{position:relative;right:20.8333333333%}.el-col-xs-push-5{left:20.8333333333%;position:relative}.el-col-xs-6{flex:0 0 25%;max-width:25%}.el-col-xs-6,.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{left:25%;position:relative}.el-col-xs-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xs-7,.el-col-xs-7.is-guttered{display:block}.el-col-xs-offset-7{margin-left:29.1666666667%}.el-col-xs-pull-7{position:relative;right:29.1666666667%}.el-col-xs-push-7{left:29.1666666667%;position:relative}.el-col-xs-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xs-8,.el-col-xs-8.is-guttered{display:block}.el-col-xs-offset-8{margin-left:33.3333333333%}.el-col-xs-pull-8{position:relative;right:33.3333333333%}.el-col-xs-push-8{left:33.3333333333%;position:relative}.el-col-xs-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xs-9,.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{left:37.5%;position:relative}.el-col-xs-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xs-10.is-guttered{display:block}.el-col-xs-offset-10{margin-left:41.6666666667%}.el-col-xs-pull-10{position:relative;right:41.6666666667%}.el-col-xs-push-10{left:41.6666666667%;position:relative}.el-col-xs-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xs-11.is-guttered{display:block}.el-col-xs-offset-11{margin-left:45.8333333333%}.el-col-xs-pull-11{position:relative;right:45.8333333333%}.el-col-xs-push-11{left:45.8333333333%;position:relative}.el-col-xs-12{display:block;flex:0 0 50%;max-width:50%}.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{left:50%;position:relative}.el-col-xs-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xs-13.is-guttered{display:block}.el-col-xs-offset-13{margin-left:54.1666666667%}.el-col-xs-pull-13{position:relative;right:54.1666666667%}.el-col-xs-push-13{left:54.1666666667%;position:relative}.el-col-xs-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xs-14.is-guttered{display:block}.el-col-xs-offset-14{margin-left:58.3333333333%}.el-col-xs-pull-14{position:relative;right:58.3333333333%}.el-col-xs-push-14{left:58.3333333333%;position:relative}.el-col-xs-15{display:block;flex:0 0 62.5%;max-width:62.5%}.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{left:62.5%;position:relative}.el-col-xs-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xs-16.is-guttered{display:block}.el-col-xs-offset-16{margin-left:66.6666666667%}.el-col-xs-pull-16{position:relative;right:66.6666666667%}.el-col-xs-push-16{left:66.6666666667%;position:relative}.el-col-xs-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xs-17.is-guttered{display:block}.el-col-xs-offset-17{margin-left:70.8333333333%}.el-col-xs-pull-17{position:relative;right:70.8333333333%}.el-col-xs-push-17{left:70.8333333333%;position:relative}.el-col-xs-18{display:block;flex:0 0 75%;max-width:75%}.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{left:75%;position:relative}.el-col-xs-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xs-19.is-guttered{display:block}.el-col-xs-offset-19{margin-left:79.1666666667%}.el-col-xs-pull-19{position:relative;right:79.1666666667%}.el-col-xs-push-19{left:79.1666666667%;position:relative}.el-col-xs-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xs-20.is-guttered{display:block}.el-col-xs-offset-20{margin-left:83.3333333333%}.el-col-xs-pull-20{position:relative;right:83.3333333333%}.el-col-xs-push-20{left:83.3333333333%;position:relative}.el-col-xs-21{display:block;flex:0 0 87.5%;max-width:87.5%}.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{left:87.5%;position:relative}.el-col-xs-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xs-22.is-guttered{display:block}.el-col-xs-offset-22{margin-left:91.6666666667%}.el-col-xs-pull-22{position:relative;right:91.6666666667%}.el-col-xs-push-22{left:91.6666666667%;position:relative}.el-col-xs-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xs-23.is-guttered{display:block}.el-col-xs-offset-23{margin-left:95.8333333333%}.el-col-xs-pull-23{position:relative;right:95.8333333333%}.el-col-xs-push-23{left:95.8333333333%;position:relative}.el-col-xs-24{display:block;flex:0 0 100%;max-width:100%}.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{left:100%;position:relative}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;flex:0 0 0%;max-width:0}.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{left:0;position:relative}.el-col-sm-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-sm-1,.el-col-sm-1.is-guttered{display:block}.el-col-sm-offset-1{margin-left:4.1666666667%}.el-col-sm-pull-1{position:relative;right:4.1666666667%}.el-col-sm-push-1{left:4.1666666667%;position:relative}.el-col-sm-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-sm-2,.el-col-sm-2.is-guttered{display:block}.el-col-sm-offset-2{margin-left:8.3333333333%}.el-col-sm-pull-2{position:relative;right:8.3333333333%}.el-col-sm-push-2{left:8.3333333333%;position:relative}.el-col-sm-3{flex:0 0 12.5%;max-width:12.5%}.el-col-sm-3,.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{left:12.5%;position:relative}.el-col-sm-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-sm-4,.el-col-sm-4.is-guttered{display:block}.el-col-sm-offset-4{margin-left:16.6666666667%}.el-col-sm-pull-4{position:relative;right:16.6666666667%}.el-col-sm-push-4{left:16.6666666667%;position:relative}.el-col-sm-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-sm-5,.el-col-sm-5.is-guttered{display:block}.el-col-sm-offset-5{margin-left:20.8333333333%}.el-col-sm-pull-5{position:relative;right:20.8333333333%}.el-col-sm-push-5{left:20.8333333333%;position:relative}.el-col-sm-6{flex:0 0 25%;max-width:25%}.el-col-sm-6,.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{left:25%;position:relative}.el-col-sm-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-sm-7,.el-col-sm-7.is-guttered{display:block}.el-col-sm-offset-7{margin-left:29.1666666667%}.el-col-sm-pull-7{position:relative;right:29.1666666667%}.el-col-sm-push-7{left:29.1666666667%;position:relative}.el-col-sm-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-sm-8,.el-col-sm-8.is-guttered{display:block}.el-col-sm-offset-8{margin-left:33.3333333333%}.el-col-sm-pull-8{position:relative;right:33.3333333333%}.el-col-sm-push-8{left:33.3333333333%;position:relative}.el-col-sm-9{flex:0 0 37.5%;max-width:37.5%}.el-col-sm-9,.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{left:37.5%;position:relative}.el-col-sm-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-sm-10.is-guttered{display:block}.el-col-sm-offset-10{margin-left:41.6666666667%}.el-col-sm-pull-10{position:relative;right:41.6666666667%}.el-col-sm-push-10{left:41.6666666667%;position:relative}.el-col-sm-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-sm-11.is-guttered{display:block}.el-col-sm-offset-11{margin-left:45.8333333333%}.el-col-sm-pull-11{position:relative;right:45.8333333333%}.el-col-sm-push-11{left:45.8333333333%;position:relative}.el-col-sm-12{display:block;flex:0 0 50%;max-width:50%}.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{left:50%;position:relative}.el-col-sm-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-sm-13.is-guttered{display:block}.el-col-sm-offset-13{margin-left:54.1666666667%}.el-col-sm-pull-13{position:relative;right:54.1666666667%}.el-col-sm-push-13{left:54.1666666667%;position:relative}.el-col-sm-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-sm-14.is-guttered{display:block}.el-col-sm-offset-14{margin-left:58.3333333333%}.el-col-sm-pull-14{position:relative;right:58.3333333333%}.el-col-sm-push-14{left:58.3333333333%;position:relative}.el-col-sm-15{display:block;flex:0 0 62.5%;max-width:62.5%}.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{left:62.5%;position:relative}.el-col-sm-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-sm-16.is-guttered{display:block}.el-col-sm-offset-16{margin-left:66.6666666667%}.el-col-sm-pull-16{position:relative;right:66.6666666667%}.el-col-sm-push-16{left:66.6666666667%;position:relative}.el-col-sm-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-sm-17.is-guttered{display:block}.el-col-sm-offset-17{margin-left:70.8333333333%}.el-col-sm-pull-17{position:relative;right:70.8333333333%}.el-col-sm-push-17{left:70.8333333333%;position:relative}.el-col-sm-18{display:block;flex:0 0 75%;max-width:75%}.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{left:75%;position:relative}.el-col-sm-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-sm-19.is-guttered{display:block}.el-col-sm-offset-19{margin-left:79.1666666667%}.el-col-sm-pull-19{position:relative;right:79.1666666667%}.el-col-sm-push-19{left:79.1666666667%;position:relative}.el-col-sm-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-sm-20.is-guttered{display:block}.el-col-sm-offset-20{margin-left:83.3333333333%}.el-col-sm-pull-20{position:relative;right:83.3333333333%}.el-col-sm-push-20{left:83.3333333333%;position:relative}.el-col-sm-21{display:block;flex:0 0 87.5%;max-width:87.5%}.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{left:87.5%;position:relative}.el-col-sm-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-sm-22.is-guttered{display:block}.el-col-sm-offset-22{margin-left:91.6666666667%}.el-col-sm-pull-22{position:relative;right:91.6666666667%}.el-col-sm-push-22{left:91.6666666667%;position:relative}.el-col-sm-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-sm-23.is-guttered{display:block}.el-col-sm-offset-23{margin-left:95.8333333333%}.el-col-sm-pull-23{position:relative;right:95.8333333333%}.el-col-sm-push-23{left:95.8333333333%;position:relative}.el-col-sm-24{display:block;flex:0 0 100%;max-width:100%}.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{left:100%;position:relative}}@media only screen and (min-width:992px){.el-col-md-0{display:none;flex:0 0 0%;max-width:0}.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{left:0;position:relative}.el-col-md-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-md-1,.el-col-md-1.is-guttered{display:block}.el-col-md-offset-1{margin-left:4.1666666667%}.el-col-md-pull-1{position:relative;right:4.1666666667%}.el-col-md-push-1{left:4.1666666667%;position:relative}.el-col-md-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-md-2,.el-col-md-2.is-guttered{display:block}.el-col-md-offset-2{margin-left:8.3333333333%}.el-col-md-pull-2{position:relative;right:8.3333333333%}.el-col-md-push-2{left:8.3333333333%;position:relative}.el-col-md-3{flex:0 0 12.5%;max-width:12.5%}.el-col-md-3,.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{left:12.5%;position:relative}.el-col-md-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-md-4,.el-col-md-4.is-guttered{display:block}.el-col-md-offset-4{margin-left:16.6666666667%}.el-col-md-pull-4{position:relative;right:16.6666666667%}.el-col-md-push-4{left:16.6666666667%;position:relative}.el-col-md-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-md-5,.el-col-md-5.is-guttered{display:block}.el-col-md-offset-5{margin-left:20.8333333333%}.el-col-md-pull-5{position:relative;right:20.8333333333%}.el-col-md-push-5{left:20.8333333333%;position:relative}.el-col-md-6{flex:0 0 25%;max-width:25%}.el-col-md-6,.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{left:25%;position:relative}.el-col-md-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-md-7,.el-col-md-7.is-guttered{display:block}.el-col-md-offset-7{margin-left:29.1666666667%}.el-col-md-pull-7{position:relative;right:29.1666666667%}.el-col-md-push-7{left:29.1666666667%;position:relative}.el-col-md-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-md-8,.el-col-md-8.is-guttered{display:block}.el-col-md-offset-8{margin-left:33.3333333333%}.el-col-md-pull-8{position:relative;right:33.3333333333%}.el-col-md-push-8{left:33.3333333333%;position:relative}.el-col-md-9{flex:0 0 37.5%;max-width:37.5%}.el-col-md-9,.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{left:37.5%;position:relative}.el-col-md-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-md-10.is-guttered{display:block}.el-col-md-offset-10{margin-left:41.6666666667%}.el-col-md-pull-10{position:relative;right:41.6666666667%}.el-col-md-push-10{left:41.6666666667%;position:relative}.el-col-md-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-md-11.is-guttered{display:block}.el-col-md-offset-11{margin-left:45.8333333333%}.el-col-md-pull-11{position:relative;right:45.8333333333%}.el-col-md-push-11{left:45.8333333333%;position:relative}.el-col-md-12{display:block;flex:0 0 50%;max-width:50%}.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{left:50%;position:relative}.el-col-md-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-md-13.is-guttered{display:block}.el-col-md-offset-13{margin-left:54.1666666667%}.el-col-md-pull-13{position:relative;right:54.1666666667%}.el-col-md-push-13{left:54.1666666667%;position:relative}.el-col-md-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-md-14.is-guttered{display:block}.el-col-md-offset-14{margin-left:58.3333333333%}.el-col-md-pull-14{position:relative;right:58.3333333333%}.el-col-md-push-14{left:58.3333333333%;position:relative}.el-col-md-15{display:block;flex:0 0 62.5%;max-width:62.5%}.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{left:62.5%;position:relative}.el-col-md-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-md-16.is-guttered{display:block}.el-col-md-offset-16{margin-left:66.6666666667%}.el-col-md-pull-16{position:relative;right:66.6666666667%}.el-col-md-push-16{left:66.6666666667%;position:relative}.el-col-md-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-md-17.is-guttered{display:block}.el-col-md-offset-17{margin-left:70.8333333333%}.el-col-md-pull-17{position:relative;right:70.8333333333%}.el-col-md-push-17{left:70.8333333333%;position:relative}.el-col-md-18{display:block;flex:0 0 75%;max-width:75%}.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{left:75%;position:relative}.el-col-md-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-md-19.is-guttered{display:block}.el-col-md-offset-19{margin-left:79.1666666667%}.el-col-md-pull-19{position:relative;right:79.1666666667%}.el-col-md-push-19{left:79.1666666667%;position:relative}.el-col-md-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-md-20.is-guttered{display:block}.el-col-md-offset-20{margin-left:83.3333333333%}.el-col-md-pull-20{position:relative;right:83.3333333333%}.el-col-md-push-20{left:83.3333333333%;position:relative}.el-col-md-21{display:block;flex:0 0 87.5%;max-width:87.5%}.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{left:87.5%;position:relative}.el-col-md-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-md-22.is-guttered{display:block}.el-col-md-offset-22{margin-left:91.6666666667%}.el-col-md-pull-22{position:relative;right:91.6666666667%}.el-col-md-push-22{left:91.6666666667%;position:relative}.el-col-md-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-md-23.is-guttered{display:block}.el-col-md-offset-23{margin-left:95.8333333333%}.el-col-md-pull-23{position:relative;right:95.8333333333%}.el-col-md-push-23{left:95.8333333333%;position:relative}.el-col-md-24{display:block;flex:0 0 100%;max-width:100%}.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{left:100%;position:relative}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;flex:0 0 0%;max-width:0}.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{left:0;position:relative}.el-col-lg-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-lg-1,.el-col-lg-1.is-guttered{display:block}.el-col-lg-offset-1{margin-left:4.1666666667%}.el-col-lg-pull-1{position:relative;right:4.1666666667%}.el-col-lg-push-1{left:4.1666666667%;position:relative}.el-col-lg-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-lg-2,.el-col-lg-2.is-guttered{display:block}.el-col-lg-offset-2{margin-left:8.3333333333%}.el-col-lg-pull-2{position:relative;right:8.3333333333%}.el-col-lg-push-2{left:8.3333333333%;position:relative}.el-col-lg-3{flex:0 0 12.5%;max-width:12.5%}.el-col-lg-3,.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{left:12.5%;position:relative}.el-col-lg-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-lg-4,.el-col-lg-4.is-guttered{display:block}.el-col-lg-offset-4{margin-left:16.6666666667%}.el-col-lg-pull-4{position:relative;right:16.6666666667%}.el-col-lg-push-4{left:16.6666666667%;position:relative}.el-col-lg-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-lg-5,.el-col-lg-5.is-guttered{display:block}.el-col-lg-offset-5{margin-left:20.8333333333%}.el-col-lg-pull-5{position:relative;right:20.8333333333%}.el-col-lg-push-5{left:20.8333333333%;position:relative}.el-col-lg-6{flex:0 0 25%;max-width:25%}.el-col-lg-6,.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{left:25%;position:relative}.el-col-lg-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-lg-7,.el-col-lg-7.is-guttered{display:block}.el-col-lg-offset-7{margin-left:29.1666666667%}.el-col-lg-pull-7{position:relative;right:29.1666666667%}.el-col-lg-push-7{left:29.1666666667%;position:relative}.el-col-lg-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-lg-8,.el-col-lg-8.is-guttered{display:block}.el-col-lg-offset-8{margin-left:33.3333333333%}.el-col-lg-pull-8{position:relative;right:33.3333333333%}.el-col-lg-push-8{left:33.3333333333%;position:relative}.el-col-lg-9{flex:0 0 37.5%;max-width:37.5%}.el-col-lg-9,.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{left:37.5%;position:relative}.el-col-lg-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-lg-10.is-guttered{display:block}.el-col-lg-offset-10{margin-left:41.6666666667%}.el-col-lg-pull-10{position:relative;right:41.6666666667%}.el-col-lg-push-10{left:41.6666666667%;position:relative}.el-col-lg-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-lg-11.is-guttered{display:block}.el-col-lg-offset-11{margin-left:45.8333333333%}.el-col-lg-pull-11{position:relative;right:45.8333333333%}.el-col-lg-push-11{left:45.8333333333%;position:relative}.el-col-lg-12{display:block;flex:0 0 50%;max-width:50%}.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{left:50%;position:relative}.el-col-lg-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-lg-13.is-guttered{display:block}.el-col-lg-offset-13{margin-left:54.1666666667%}.el-col-lg-pull-13{position:relative;right:54.1666666667%}.el-col-lg-push-13{left:54.1666666667%;position:relative}.el-col-lg-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-lg-14.is-guttered{display:block}.el-col-lg-offset-14{margin-left:58.3333333333%}.el-col-lg-pull-14{position:relative;right:58.3333333333%}.el-col-lg-push-14{left:58.3333333333%;position:relative}.el-col-lg-15{display:block;flex:0 0 62.5%;max-width:62.5%}.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{left:62.5%;position:relative}.el-col-lg-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-lg-16.is-guttered{display:block}.el-col-lg-offset-16{margin-left:66.6666666667%}.el-col-lg-pull-16{position:relative;right:66.6666666667%}.el-col-lg-push-16{left:66.6666666667%;position:relative}.el-col-lg-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-lg-17.is-guttered{display:block}.el-col-lg-offset-17{margin-left:70.8333333333%}.el-col-lg-pull-17{position:relative;right:70.8333333333%}.el-col-lg-push-17{left:70.8333333333%;position:relative}.el-col-lg-18{display:block;flex:0 0 75%;max-width:75%}.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{left:75%;position:relative}.el-col-lg-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-lg-19.is-guttered{display:block}.el-col-lg-offset-19{margin-left:79.1666666667%}.el-col-lg-pull-19{position:relative;right:79.1666666667%}.el-col-lg-push-19{left:79.1666666667%;position:relative}.el-col-lg-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-lg-20.is-guttered{display:block}.el-col-lg-offset-20{margin-left:83.3333333333%}.el-col-lg-pull-20{position:relative;right:83.3333333333%}.el-col-lg-push-20{left:83.3333333333%;position:relative}.el-col-lg-21{display:block;flex:0 0 87.5%;max-width:87.5%}.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{left:87.5%;position:relative}.el-col-lg-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-lg-22.is-guttered{display:block}.el-col-lg-offset-22{margin-left:91.6666666667%}.el-col-lg-pull-22{position:relative;right:91.6666666667%}.el-col-lg-push-22{left:91.6666666667%;position:relative}.el-col-lg-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-lg-23.is-guttered{display:block}.el-col-lg-offset-23{margin-left:95.8333333333%}.el-col-lg-pull-23{position:relative;right:95.8333333333%}.el-col-lg-push-23{left:95.8333333333%;position:relative}.el-col-lg-24{display:block;flex:0 0 100%;max-width:100%}.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{left:100%;position:relative}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;flex:0 0 0%;max-width:0}.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{left:0;position:relative}.el-col-xl-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xl-1,.el-col-xl-1.is-guttered{display:block}.el-col-xl-offset-1{margin-left:4.1666666667%}.el-col-xl-pull-1{position:relative;right:4.1666666667%}.el-col-xl-push-1{left:4.1666666667%;position:relative}.el-col-xl-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xl-2,.el-col-xl-2.is-guttered{display:block}.el-col-xl-offset-2{margin-left:8.3333333333%}.el-col-xl-pull-2{position:relative;right:8.3333333333%}.el-col-xl-push-2{left:8.3333333333%;position:relative}.el-col-xl-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xl-3,.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{left:12.5%;position:relative}.el-col-xl-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xl-4,.el-col-xl-4.is-guttered{display:block}.el-col-xl-offset-4{margin-left:16.6666666667%}.el-col-xl-pull-4{position:relative;right:16.6666666667%}.el-col-xl-push-4{left:16.6666666667%;position:relative}.el-col-xl-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xl-5,.el-col-xl-5.is-guttered{display:block}.el-col-xl-offset-5{margin-left:20.8333333333%}.el-col-xl-pull-5{position:relative;right:20.8333333333%}.el-col-xl-push-5{left:20.8333333333%;position:relative}.el-col-xl-6{flex:0 0 25%;max-width:25%}.el-col-xl-6,.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{left:25%;position:relative}.el-col-xl-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xl-7,.el-col-xl-7.is-guttered{display:block}.el-col-xl-offset-7{margin-left:29.1666666667%}.el-col-xl-pull-7{position:relative;right:29.1666666667%}.el-col-xl-push-7{left:29.1666666667%;position:relative}.el-col-xl-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xl-8,.el-col-xl-8.is-guttered{display:block}.el-col-xl-offset-8{margin-left:33.3333333333%}.el-col-xl-pull-8{position:relative;right:33.3333333333%}.el-col-xl-push-8{left:33.3333333333%;position:relative}.el-col-xl-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xl-9,.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{left:37.5%;position:relative}.el-col-xl-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xl-10.is-guttered{display:block}.el-col-xl-offset-10{margin-left:41.6666666667%}.el-col-xl-pull-10{position:relative;right:41.6666666667%}.el-col-xl-push-10{left:41.6666666667%;position:relative}.el-col-xl-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xl-11.is-guttered{display:block}.el-col-xl-offset-11{margin-left:45.8333333333%}.el-col-xl-pull-11{position:relative;right:45.8333333333%}.el-col-xl-push-11{left:45.8333333333%;position:relative}.el-col-xl-12{display:block;flex:0 0 50%;max-width:50%}.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{left:50%;position:relative}.el-col-xl-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xl-13.is-guttered{display:block}.el-col-xl-offset-13{margin-left:54.1666666667%}.el-col-xl-pull-13{position:relative;right:54.1666666667%}.el-col-xl-push-13{left:54.1666666667%;position:relative}.el-col-xl-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xl-14.is-guttered{display:block}.el-col-xl-offset-14{margin-left:58.3333333333%}.el-col-xl-pull-14{position:relative;right:58.3333333333%}.el-col-xl-push-14{left:58.3333333333%;position:relative}.el-col-xl-15{display:block;flex:0 0 62.5%;max-width:62.5%}.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{left:62.5%;position:relative}.el-col-xl-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xl-16.is-guttered{display:block}.el-col-xl-offset-16{margin-left:66.6666666667%}.el-col-xl-pull-16{position:relative;right:66.6666666667%}.el-col-xl-push-16{left:66.6666666667%;position:relative}.el-col-xl-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xl-17.is-guttered{display:block}.el-col-xl-offset-17{margin-left:70.8333333333%}.el-col-xl-pull-17{position:relative;right:70.8333333333%}.el-col-xl-push-17{left:70.8333333333%;position:relative}.el-col-xl-18{display:block;flex:0 0 75%;max-width:75%}.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{left:75%;position:relative}.el-col-xl-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xl-19.is-guttered{display:block}.el-col-xl-offset-19{margin-left:79.1666666667%}.el-col-xl-pull-19{position:relative;right:79.1666666667%}.el-col-xl-push-19{left:79.1666666667%;position:relative}.el-col-xl-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xl-20.is-guttered{display:block}.el-col-xl-offset-20{margin-left:83.3333333333%}.el-col-xl-pull-20{position:relative;right:83.3333333333%}.el-col-xl-push-20{left:83.3333333333%;position:relative}.el-col-xl-21{display:block;flex:0 0 87.5%;max-width:87.5%}.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{left:87.5%;position:relative}.el-col-xl-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xl-22.is-guttered{display:block}.el-col-xl-offset-22{margin-left:91.6666666667%}.el-col-xl-pull-22{position:relative;right:91.6666666667%}.el-col-xl-push-22{left:91.6666666667%;position:relative}.el-col-xl-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xl-23.is-guttered{display:block}.el-col-xl-offset-23{margin-left:95.8333333333%}.el-col-xl-pull-23{position:relative;right:95.8333333333%}.el-col-xl-push-23{left:95.8333333333%;position:relative}.el-col-xl-24{display:block;flex:0 0 100%;max-width:100%}.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{left:100%;position:relative}}.el-text{--el-text-font-size:var(--el-font-size-base);--el-text-color:var(--el-text-color-regular);align-self:center;color:var(--el-text-color);font-size:var(--el-text-font-size);margin:0;overflow-wrap:break-word;padding:0}.el-text.is-truncated{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-text.is-line-clamp{display:-webkit-inline-box;-webkit-box-orient:vertical;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}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px;align-items:center;background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);border-radius:var(--el-tag-border-radius);border-style:solid;border-width:1px;box-sizing:border-box;color:var(--el-tag-text-color);display:inline-flex;font-size:var(--el-tag-font-size);height:24px;justify-content:center;line-height:1;padding:0 9px;vertical-align:middle;white-space:nowrap;--el-icon-size:14px}.el-tag,.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{background-color:var(--el-tag-hover-color);color:var(--el-color-white)}.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{border-radius:50%;cursor:pointer;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size)}.el-tag .el-tag__close{margin-left:6px}.el-tag--dark{--el-tag-text-color:var(--el-color-white)}.el-tag--dark,.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--danger,.el-tag--dark.el-tag--error,.el-tag--dark.el-tag--info,.el-tag--dark.el-tag--primary,.el-tag--dark.el-tag--success,.el-tag--dark.el-tag--warning{--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{height:32px;padding:0 11px;--el-icon-size:16px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{height:20px;padding:0 7px;--el-icon-size:12px}.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-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:"";height:12px;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") no-repeat;mask-size:100% 100%;-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") no-repeat;-webkit-mask-size:100% 100%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.el-select-dropdown{border-radius:var(--el-border-radius-base);box-sizing:border-box;z-index:calc(var(--el-index-top) + 1)}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty,.el-select-dropdown__loading{color:var(--el-text-color-secondary);font-size:var(--el-select-font-size);margin:0;padding:10px 0;text-align:center}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:6px 0}.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{box-sizing:border-box;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);height:34px;line-height:34px;overflow:hidden;padding:0 32px 0 20px;position:relative;text-overflow:ellipsis;white-space:nowrap}.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{background-color:unset;color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:"";height:12px;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") no-repeat;mask-size:100% 100%;-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") no-repeat;-webkit-mask-size:100% 100%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.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{list-style:none;margin:0;padding:0;position:relative}.el-select-group__title{color:var(--el-color-info);font-size:12px;line-height:34px;padding-left:20px}.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%;display:inline-block;position:relative;vertical-align:middle;width:var(--el-select-width)}.el-select__wrapper{align-items:center;background-color:var(--el-fill-color-blank);border-radius:var(--el-border-radius-base);box-shadow:0 0 0 1px var(--el-border-color) inset;box-sizing:border-box;cursor:pointer;display:flex;font-size:14px;gap:6px;line-height:24px;min-height:32px;padding:4px 12px;position:relative;text-align:left;transform:translateZ(0);transition:var(--el-transition-duration)}.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{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select__wrapper.is-disabled,.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{cursor:not-allowed}.el-select__prefix,.el-select__suffix{align-items:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:flex;flex-shrink:0;gap:6px}.el-select__caret{color:var(--el-select-input-color);cursor:pointer;font-size:var(--el-select-input-font-size);transform:rotate(0);transition:var(--el-transition-duration)}.el-select__caret.is-reverse{transform:rotate(180deg)}.el-select__selection{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:6px;min-width:0;position:relative}.el-select__selection.is-near{margin-left:-8px}.el-select__selection .el-tag{border-color:transparent;cursor:pointer}.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{display:flex;flex-wrap:wrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-select__tags-text{line-height:normal}.el-select__placeholder,.el-select__tags-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-select__placeholder{color:var(--el-input-text-color,var(--el-text-color-regular));position:absolute;top:50%;transform:translateY(-50%);width:100%}.el-select__placeholder.is-transparent{color:var(--el-text-color-placeholder);-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-select__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper,.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-left-color:transparent;border-top-color:transparent}.el-select__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-select__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-select__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-select__input-wrapper{max-width:100%}.el-select__input-wrapper.is-hidden{opacity:0;position:absolute}.el-select__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-select-multiple-input-color);font-family:inherit;font-size:inherit;height:24px;max-width:100%;outline:none;padding:0}.el-select__input.is-disabled{cursor:not-allowed}.el-select__input-calculator{left:0;max-width:100%;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:pre}.el-select--large .el-select__wrapper{font-size:14px;gap:6px;line-height:24px;min-height:40px;padding:8px 16px}.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{font-size:12px;gap:4px;line-height:20px;min-height:24px;padding:2px 8px}.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}.setting-row .setting-container[data-v-e82e761f]{display:flex;justify-content:space-between;align-items:center}.setting-row .setting-container .input-label[data-v-e82e761f]{margin-right:10px}.setting-row .setting-container .default-btn[data-v-e82e761f]{margin-left:10px}.setting-row .setting-container[data-v-c8dfbdc0]{display:flex;justify-content:space-between;align-items:center}.setting-row .setting-container .input-label[data-v-c8dfbdc0]{margin-right:10px}.setting-row .setting-container .default-btn[data-v-c8dfbdc0]{margin-left:10px}.el-row[data-v-a1302a8c]{margin-bottom:20px}.el-row[data-v-a1302a8c]:last-child{margin-bottom:0}.bili-config .wide-row[data-v-a1302a8c]{margin-right:calc(var(--el-dialog-padding-primary) * -2)}.bili-config .setting-row .setting-container[data-v-a1302a8c]{display:flex;justify-content:space-between;align-items:center}.bili-config .setting-row .setting-container .input-label[data-v-a1302a8c]{margin-right:10px}.bili-config .setting-row .setting-container .default-btn[data-v-a1302a8c]{margin-left:10px}[data-v-a1302a8c] .is-vertical,[data-v-a1302a8c] .is-horizontal{display:none!important}.contact-support a,.contact-support strong,.contact-support h1,.contact-support h2,.contact-support h3,.contact-support h4,.contact-support h5,.contact-support h6{color:var(--el-color-primary)!important}.pane[data-v-4d55d0ef]{cursor:default}.tabs-item[data-v-631d72d1]{margin-top:calc(var(--el-dialog-padding-primary) * -2 + 8px)}[data-v-631d72d1] .el-tabs__nav-wrap:after{background-color:transparent}.upload-dialog[data-v-15497014]{--el-overlay-color-lighter: rgba(0, 0, 0, .2);--el-message-close-size: 20px}[data-v-15497014] .el-dialog__headerbtn{z-index:300}[data-v-15497014] .el-dialog__headerbtn:after{content:"";display:block;position:absolute;top:0;left:0;width:100%;height:100%;transform:scale(1.5)}:root{--scroll-duration: .5s;--scroll-timing-function: ease;--search-bar-top-gap: 35vh;--search-bar-width: 40vw;--search-bar-x-offset: 0px;--wallpaper-pos-x: center;--wallpaper-pos-y: center;--wallpaper-size: cover;--wallpaper-bg-color: whitesmoke}.adblock-tips{display:none!important}.el-message-box .el-button.el-button--primary{background-color:#409eff}.monkey-hidden{display:none!important}body{overflow-x:hidden}/*!* \u6E38\u620F\u4E2D\u5FC3 *!*//*!* \u4F1A\u5458\u8D2D *!*//*!* \u79D1\u5B66\u665A *!*//*!* \u4E0A\u4F20\u6309\u94AE: \u4E3A\u4E86\u8BA9\u6574\u4F53\u66F4\u52A0\u7F8E\u89C2 *!*/.adcard{display:none!important}.center-search-container{width:var(--search-bar-width);position:absolute;top:var(--search-bar-top-gap);left:calc(50vw + var(--search-bar-x-offset));translate:-50% 0;transition:opacity var(--scroll-duration) var(--scroll-timing-function)}.bili-header__banner,.bili-header__channel,.bili-feed4-layout{transition:translate var(--scroll-duration) var(--scroll-timing-function);translate:0 100vh}.header-channel{transition:translate .2s var(--scroll-timing-function) var(--scroll-duration);translate:0 100vh!important}#header-channel-show{translate:0 0!important} `); (function (vue) { 'use strict'; var __getOwnPropNames = Object.getOwnPropertyNames; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var require_main_001 = __commonJS({ "main-BXVrhvDp.js"(exports, module) { var isVue2 = false; function set(target, key, val) { if (Array.isArray(target)) { target.length = Math.max(target.length, key); target.splice(key, 1, val); return val; } target[key] = val; return val; } function del(target, key) { if (Array.isArray(target)) { target.splice(key, 1); return; } delete target[key]; } function getDevtoolsGlobalHook() { return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; } function getTarget() { return typeof navigator !== "undefined" && typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : {}; } const isProxyAvailable = typeof Proxy === "function"; const HOOK_SETUP = "devtools-plugin:setup"; const HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set"; let supported; let perf; function isPerformanceSupported() { var _a2; if (supported !== void 0) { return supported; } if (typeof window !== "undefined" && window.performance) { supported = true; perf = window.performance; } else if (typeof globalThis !== "undefined" && ((_a2 = globalThis.perf_hooks) === null || _a2 === void 0 ? void 0 : _a2.performance)) { supported = true; perf = globalThis.perf_hooks.performance; } else { supported = false; } return supported; } function now$2() { return isPerformanceSupported() ? perf.now() : Date.now(); } class ApiProxy { constructor(plugin, hook) { this.target = null; this.targetQueue = []; this.onQueue = []; this.plugin = plugin; this.hook = hook; const defaultSettings = {}; if (plugin.settings) { for (const id in plugin.settings) { const item = plugin.settings[id]; defaultSettings[id] = item.defaultValue; } } const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`; let currentSettings = Object.assign({}, defaultSettings); try { const raw = localStorage.getItem(localSettingsSaveId); const data = JSON.parse(raw); Object.assign(currentSettings, data); } catch (e) { } this.fallbacks = { getSettings() { return currentSettings; }, setSettings(value) { try { localStorage.setItem(localSettingsSaveId, JSON.stringify(value)); } catch (e) { } currentSettings = value; }, now() { return now$2(); } }; if (hook) { hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => { if (pluginId === this.plugin.id) { this.fallbacks.setSettings(value); } }); } this.proxiedOn = new Proxy({}, { get: (_target, prop) => { if (this.target) { return this.target.on[prop]; } else { return (...args) => { this.onQueue.push({ method: prop, args }); }; } } }); this.proxiedTarget = new Proxy({}, { get: (_target, prop) => { if (this.target) { return this.target[prop]; } else if (prop === "on") { return this.proxiedOn; } else if (Object.keys(this.fallbacks).includes(prop)) { return (...args) => { this.targetQueue.push({ method: prop, args, resolve: () => { } }); return this.fallbacks[prop](...args); }; } else { return (...args) => { return new Promise((resolve) => { this.targetQueue.push({ method: prop, args, resolve }); }); }; } } }); } async setRealTarget(target) { this.target = target; for (const item of this.onQueue) { this.target.on[item.method](...item.args); } for (const item of this.targetQueue) { item.resolve(await this.target[item.method](...item.args)); } } } function setupDevtoolsPlugin(pluginDescriptor, setupFn) { const descriptor = pluginDescriptor; const target = getTarget(); const hook = getDevtoolsGlobalHook(); const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy; if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) { hook.emit(HOOK_SETUP, pluginDescriptor, setupFn); } else { const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null; const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || []; list.push({ pluginDescriptor: descriptor, setupFn, proxy }); if (proxy) { setupFn(proxy.proxiedTarget); } } } /*! * pinia v2.2.5 * (c) 2024 Eduardo San Martin Morote * @license MIT */ let activePinia; const setActivePinia = (pinia2) => activePinia = pinia2; const piniaSymbol = Symbol("pinia"); function isPlainObject$1(o) { return o && typeof o === "object" && Object.prototype.toString.call(o) === "[object Object]" && typeof o.toJSON !== "function"; } var MutationType; (function(MutationType2) { MutationType2["direct"] = "direct"; MutationType2["patchObject"] = "patch object"; MutationType2["patchFunction"] = "patch function"; })(MutationType || (MutationType = {})); const IS_CLIENT = typeof window !== "undefined"; const _global$1 = /* @__PURE__ */ (() => typeof window === "object" && window.window === window ? window : typeof self === "object" && self.self === self ? self : typeof global === "object" && global.global === global ? global : typeof globalThis === "object" ? globalThis : { HTMLElement: null })(); function bom(blob, { autoBom = false } = {}) { if (autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) { return new Blob([String.fromCharCode(65279), blob], { type: blob.type }); } return blob; } function download(url, name, opts) { const xhr = new XMLHttpRequest(); xhr.open("GET", url); xhr.responseType = "blob"; xhr.onload = function() { saveAs(xhr.response, name, opts); }; xhr.onerror = function() { console.error("could not download file"); }; xhr.send(); } function corsEnabled(url) { const xhr = new XMLHttpRequest(); xhr.open("HEAD", url, false); try { xhr.send(); } catch (e) { } return xhr.status >= 200 && xhr.status <= 299; } function click(node) { try { node.dispatchEvent(new MouseEvent("click")); } catch (e) { const evt = document.createEvent("MouseEvents"); evt.initMouseEvent("click", true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null); node.dispatchEvent(evt); } } const _navigator = typeof navigator === "object" ? navigator : { userAgent: "" }; const isMacOSWebView = /* @__PURE__ */ (() => /Macintosh/.test(_navigator.userAgent) && /AppleWebKit/.test(_navigator.userAgent) && !/Safari/.test(_navigator.userAgent))(); const saveAs = !IS_CLIENT ? () => { } : ( // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView or mini program typeof HTMLAnchorElement !== "undefined" && "download" in HTMLAnchorElement.prototype && !isMacOSWebView ? downloadSaveAs : ( // Use msSaveOrOpenBlob as a second approach "msSaveOrOpenBlob" in _navigator ? msSaveAs : ( // Fallback to using FileReader and a popup fileSaverSaveAs ) ) ); function downloadSaveAs(blob, name = "download", opts) { const a = document.createElement("a"); a.download = name; a.rel = "noopener"; if (typeof blob === "string") { a.href = blob; if (a.origin !== location.origin) { if (corsEnabled(a.href)) { download(blob, name, opts); } else { a.target = "_blank"; click(a); } } else { click(a); } } else { a.href = URL.createObjectURL(blob); setTimeout(function() { URL.revokeObjectURL(a.href); }, 4e4); setTimeout(function() { click(a); }, 0); } } function msSaveAs(blob, name = "download", opts) { if (typeof blob === "string") { if (corsEnabled(blob)) { download(blob, name, opts); } else { const a = document.createElement("a"); a.href = blob; a.target = "_blank"; setTimeout(function() { click(a); }); } } else { navigator.msSaveOrOpenBlob(bom(blob, opts), name); } } function fileSaverSaveAs(blob, name, opts, popup) { popup = popup || open("", "_blank"); if (popup) { popup.document.title = popup.document.body.innerText = "downloading..."; } if (typeof blob === "string") return download(blob, name, opts); const force = blob.type === "application/octet-stream"; const isSafari = /constructor/i.test(String(_global$1.HTMLElement)) || "safari" in _global$1; const isChromeIOS = /CriOS\/[\d]+/.test(navigator.userAgent); if ((isChromeIOS || force && isSafari || isMacOSWebView) && typeof FileReader !== "undefined") { const reader = new FileReader(); reader.onloadend = function() { let url = reader.result; if (typeof url !== "string") { popup = null; throw new Error("Wrong reader.result type"); } url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, "data:attachment/file;"); if (popup) { popup.location.href = url; } else { location.assign(url); } popup = null; }; reader.readAsDataURL(blob); } else { const url = URL.createObjectURL(blob); if (popup) popup.location.assign(url); else location.href = url; popup = null; setTimeout(function() { URL.revokeObjectURL(url); }, 4e4); } } function toastMessage(message, type) { const piniaMessage = "🍍 " + message; if (typeof __VUE_DEVTOOLS_TOAST__ === "function") { __VUE_DEVTOOLS_TOAST__(piniaMessage, type); } else if (type === "error") { console.error(piniaMessage); } else if (type === "warn") { console.warn(piniaMessage); } else { console.log(piniaMessage); } } function isPinia(o) { return "_a" in o && "install" in o; } function checkClipboardAccess() { if (!("clipboard" in navigator)) { toastMessage(`Your browser doesn't support the Clipboard API`, "error"); return true; } } function checkNotFocusedError(error) { if (error instanceof Error && error.message.toLowerCase().includes("document is not focused")) { toastMessage('You need to activate the "Emulate a focused page" setting in the "Rendering" panel of devtools.', "warn"); return true; } return false; } async function actionGlobalCopyState(pinia2) { if (checkClipboardAccess()) return; try { await navigator.clipboard.writeText(JSON.stringify(pinia2.state.value)); toastMessage("Global state copied to clipboard."); } catch (error) { if (checkNotFocusedError(error)) return; toastMessage(`Failed to serialize the state. Check the console for more details.`, "error"); console.error(error); } } async function actionGlobalPasteState(pinia2) { if (checkClipboardAccess()) return; try { loadStoresState(pinia2, JSON.parse(await navigator.clipboard.readText())); toastMessage("Global state pasted from clipboard."); } catch (error) { if (checkNotFocusedError(error)) return; toastMessage(`Failed to deserialize the state from clipboard. Check the console for more details.`, "error"); console.error(error); } } async function actionGlobalSaveState(pinia2) { try { saveAs(new Blob([JSON.stringify(pinia2.state.value)], { type: "text/plain;charset=utf-8" }), "pinia-state.json"); } catch (error) { toastMessage(`Failed to export the state as JSON. Check the console for more details.`, "error"); console.error(error); } } let fileInput; function getFileOpener() { if (!fileInput) { fileInput = document.createElement("input"); fileInput.type = "file"; fileInput.accept = ".json"; } function openFile() { return new Promise((resolve, reject2) => { fileInput.onchange = async () => { const files = fileInput.files; if (!files) return resolve(null); const file = files.item(0); if (!file) return resolve(null); return resolve({ text: await file.text(), file }); }; fileInput.oncancel = () => resolve(null); fileInput.onerror = reject2; fileInput.click(); }); } return openFile; } async function actionGlobalOpenStateFile(pinia2) { try { const open2 = getFileOpener(); const result2 = await open2(); if (!result2) return; const { text, file } = result2; loadStoresState(pinia2, JSON.parse(text)); toastMessage(`Global state imported from "${file.name}".`); } catch (error) { toastMessage(`Failed to import the state from JSON. Check the console for more details.`, "error"); console.error(error); } } function loadStoresState(pinia2, state) { for (const key in state) { const storeState = pinia2.state.value[key]; if (storeState) { Object.assign(storeState, state[key]); } else { pinia2.state.value[key] = state[key]; } } } function formatDisplay(display) { return { _custom: { display } }; } const PINIA_ROOT_LABEL = "🍍 Pinia (root)"; const PINIA_ROOT_ID = "_root"; function formatStoreForInspectorTree(store) { return isPinia(store) ? { id: PINIA_ROOT_ID, label: PINIA_ROOT_LABEL } : { id: store.$id, label: store.$id }; } function formatStoreForInspectorState(store) { if (isPinia(store)) { const storeNames = Array.from(store._s.keys()); const storeMap = store._s; const state2 = { state: storeNames.map((storeId) => ({ editable: true, key: storeId, value: store.state.value[storeId] })), getters: storeNames.filter((id) => storeMap.get(id)._getters).map((id) => { const store2 = storeMap.get(id); return { editable: false, key: id, value: store2._getters.reduce((getters, key) => { getters[key] = store2[key]; return getters; }, {}) }; }) }; return state2; } const state = { state: Object.keys(store.$state).map((key) => ({ editable: true, key, value: store.$state[key] })) }; if (store._getters && store._getters.length) { state.getters = store._getters.map((getterName) => ({ editable: false, key: getterName, value: store[getterName] })); } if (store._customProperties.size) { state.customProperties = Array.from(store._customProperties).map((key) => ({ editable: true, key, value: store[key] })); } return state; } function formatEventData(events) { if (!events) return {}; if (Array.isArray(events)) { return events.reduce((data, event) => { data.keys.push(event.key); data.operations.push(event.type); data.oldValue[event.key] = event.oldValue; data.newValue[event.key] = event.newValue; return data; }, { oldValue: {}, keys: [], operations: [], newValue: {} }); } else { return { operation: formatDisplay(events.type), key: formatDisplay(events.key), oldValue: events.oldValue, newValue: events.newValue }; } } function formatMutationType(type) { switch (type) { case MutationType.direct: return "mutation"; case MutationType.patchFunction: return "$patch"; case MutationType.patchObject: return "$patch"; default: return "unknown"; } } let isTimelineActive = true; const componentStateTypes = []; const MUTATIONS_LAYER_ID = "pinia:mutations"; const INSPECTOR_ID = "pinia"; const { assign: assign$1 } = Object; const getStoreType = (id) => "🍍 " + id; function registerPiniaDevtools(app2, pinia2) { setupDevtoolsPlugin({ id: "dev.esm.pinia", label: "Pinia 🍍", logo: "https://pinia.vuejs.org/logo.svg", packageName: "pinia", homepage: "https://pinia.vuejs.org", componentStateTypes, app: app2 }, (api) => { if (typeof api.now !== "function") { toastMessage("You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html."); } api.addTimelineLayer({ id: MUTATIONS_LAYER_ID, label: `Pinia 🍍`, color: 15064968 }); api.addInspector({ id: INSPECTOR_ID, label: "Pinia 🍍", icon: "storage", treeFilterPlaceholder: "Search stores", actions: [ { icon: "content_copy", action: () => { actionGlobalCopyState(pinia2); }, tooltip: "Serialize and copy the state" }, { icon: "content_paste", action: async () => { await actionGlobalPasteState(pinia2); api.sendInspectorTree(INSPECTOR_ID); api.sendInspectorState(INSPECTOR_ID); }, tooltip: "Replace the state with the content of your clipboard" }, { icon: "save", action: () => { actionGlobalSaveState(pinia2); }, tooltip: "Save the state as a JSON file" }, { icon: "folder_open", action: async () => { await actionGlobalOpenStateFile(pinia2); api.sendInspectorTree(INSPECTOR_ID); api.sendInspectorState(INSPECTOR_ID); }, tooltip: "Import the state from a JSON file" } ], nodeActions: [ { icon: "restore", tooltip: 'Reset the state (with "$reset")', action: (nodeId) => { const store = pinia2._s.get(nodeId); if (!store) { toastMessage(`Cannot reset "${nodeId}" store because it wasn't found.`, "warn"); } else if (typeof store.$reset !== "function") { toastMessage(`Cannot reset "${nodeId}" store because it doesn't have a "$reset" method implemented.`, "warn"); } else { store.$reset(); toastMessage(`Store "${nodeId}" reset.`); } } } ] }); api.on.inspectComponent((payload, ctx) => { const proxy = payload.componentInstance && payload.componentInstance.proxy; if (proxy && proxy._pStores) { const piniaStores = payload.componentInstance.proxy._pStores; Object.values(piniaStores).forEach((store) => { payload.instanceData.state.push({ type: getStoreType(store.$id), key: "state", editable: true, value: store._isOptionsAPI ? { _custom: { value: vue.toRaw(store.$state), actions: [ { icon: "restore", tooltip: "Reset the state of this store", action: () => store.$reset() } ] } } : ( // NOTE: workaround to unwrap transferred refs Object.keys(store.$state).reduce((state, key) => { state[key] = store.$state[key]; return state; }, {}) ) }); if (store._getters && store._getters.length) { payload.instanceData.state.push({ type: getStoreType(store.$id), key: "getters", editable: false, value: store._getters.reduce((getters, key) => { try { getters[key] = store[key]; } catch (error) { getters[key] = error; } return getters; }, {}) }); } }); } }); api.on.getInspectorTree((payload) => { if (payload.app === app2 && payload.inspectorId === INSPECTOR_ID) { let stores = [pinia2]; stores = stores.concat(Array.from(pinia2._s.values())); payload.rootNodes = (payload.filter ? stores.filter((store) => "$id" in store ? store.$id.toLowerCase().includes(payload.filter.toLowerCase()) : PINIA_ROOT_LABEL.toLowerCase().includes(payload.filter.toLowerCase())) : stores).map(formatStoreForInspectorTree); } }); globalThis.$pinia = pinia2; api.on.getInspectorState((payload) => { if (payload.app === app2 && payload.inspectorId === INSPECTOR_ID) { const inspectedStore = payload.nodeId === PINIA_ROOT_ID ? pinia2 : pinia2._s.get(payload.nodeId); if (!inspectedStore) { return; } if (inspectedStore) { if (payload.nodeId !== PINIA_ROOT_ID) globalThis.$store = vue.toRaw(inspectedStore); payload.state = formatStoreForInspectorState(inspectedStore); } } }); api.on.editInspectorState((payload, ctx) => { if (payload.app === app2 && payload.inspectorId === INSPECTOR_ID) { const inspectedStore = payload.nodeId === PINIA_ROOT_ID ? pinia2 : pinia2._s.get(payload.nodeId); if (!inspectedStore) { return toastMessage(`store "${payload.nodeId}" not found`, "error"); } const { path } = payload; if (!isPinia(inspectedStore)) { if (path.length !== 1 || !inspectedStore._customProperties.has(path[0]) || path[0] in inspectedStore.$state) { path.unshift("$state"); } } else { path.unshift("state"); } isTimelineActive = false; payload.set(inspectedStore, path, payload.state.value); isTimelineActive = true; } }); api.on.editComponentState((payload) => { if (payload.type.startsWith("🍍")) { const storeId = payload.type.replace(/^🍍\s*/, ""); const store = pinia2._s.get(storeId); if (!store) { return toastMessage(`store "${storeId}" not found`, "error"); } const { path } = payload; if (path[0] !== "state") { return toastMessage(`Invalid path for store "${storeId}": ${path} Only state can be modified.`); } path[0] = "$state"; isTimelineActive = false; payload.set(store, path, payload.state.value); isTimelineActive = true; } }); }); } function addStoreToDevtools(app2, store) { if (!componentStateTypes.includes(getStoreType(store.$id))) { componentStateTypes.push(getStoreType(store.$id)); } setupDevtoolsPlugin({ id: "dev.esm.pinia", label: "Pinia 🍍", logo: "https://pinia.vuejs.org/logo.svg", packageName: "pinia", homepage: "https://pinia.vuejs.org", componentStateTypes, app: app2, settings: { logStoreChanges: { label: "Notify about new/deleted stores", type: "boolean", defaultValue: true } // useEmojis: { // label: 'Use emojis in messages ⚡️', // type: 'boolean', // defaultValue: true, // }, } }, (api) => { const now2 = typeof api.now === "function" ? api.now.bind(api) : Date.now; store.$onAction(({ after: after2, onError, name, args }) => { const groupId = runningActionId++; api.addTimelineEvent({ layerId: MUTATIONS_LAYER_ID, event: { time: now2(), title: "🛫 " + name, subtitle: "start", data: { store: formatDisplay(store.$id), action: formatDisplay(name), args }, groupId } }); after2((result2) => { activeAction = void 0; api.addTimelineEvent({ layerId: MUTATIONS_LAYER_ID, event: { time: now2(), title: "🛬 " + name, subtitle: "end", data: { store: formatDisplay(store.$id), action: formatDisplay(name), args, result: result2 }, groupId } }); }); onError((error) => { activeAction = void 0; api.addTimelineEvent({ layerId: MUTATIONS_LAYER_ID, event: { time: now2(), logType: "error", title: "💥 " + name, subtitle: "end", data: { store: formatDisplay(store.$id), action: formatDisplay(name), args, error }, groupId } }); }); }, true); store._customProperties.forEach((name) => { vue.watch(() => vue.unref(store[name]), (newValue, oldValue) => { api.notifyComponentUpdate(); api.sendInspectorState(INSPECTOR_ID); if (isTimelineActive) { api.addTimelineEvent({ layerId: MUTATIONS_LAYER_ID, event: { time: now2(), title: "Change", subtitle: name, data: { newValue, oldValue }, groupId: activeAction } }); } }, { deep: true }); }); store.$subscribe(({ events, type }, state) => { api.notifyComponentUpdate(); api.sendInspectorState(INSPECTOR_ID); if (!isTimelineActive) return; const eventData = { time: now2(), title: formatMutationType(type), data: assign$1({ store: formatDisplay(store.$id) }, formatEventData(events)), groupId: activeAction }; if (type === MutationType.patchFunction) { eventData.subtitle = "⤵️"; } else if (type === MutationType.patchObject) { eventData.subtitle = "🧩"; } else if (events && !Array.isArray(events)) { eventData.subtitle = events.type; } if (events) { eventData.data["rawEvent(s)"] = { _custom: { display: "DebuggerEvent", type: "object", tooltip: "raw DebuggerEvent[]", value: events } }; } api.addTimelineEvent({ layerId: MUTATIONS_LAYER_ID, event: eventData }); }, { detached: true, flush: "sync" }); const hotUpdate = store._hotUpdate; store._hotUpdate = vue.markRaw((newStore) => { hotUpdate(newStore); api.addTimelineEvent({ layerId: MUTATIONS_LAYER_ID, event: { time: now2(), title: "🔥 " + store.$id, subtitle: "HMR update", data: { store: formatDisplay(store.$id), info: formatDisplay(`HMR update`) } } }); api.notifyComponentUpdate(); api.sendInspectorTree(INSPECTOR_ID); api.sendInspectorState(INSPECTOR_ID); }); const { $dispose } = store; store.$dispose = () => { $dispose(); api.notifyComponentUpdate(); api.sendInspectorTree(INSPECTOR_ID); api.sendInspectorState(INSPECTOR_ID); api.getSettings().logStoreChanges && toastMessage(`Disposed "${store.$id}" store 🗑`); }; api.notifyComponentUpdate(); api.sendInspectorTree(INSPECTOR_ID); api.sendInspectorState(INSPECTOR_ID); api.getSettings().logStoreChanges && toastMessage(`"${store.$id}" store installed 🆕`); }); } let runningActionId = 0; let activeAction; function patchActionForGrouping(store, actionNames, wrapWithProxy) { const actions = actionNames.reduce((storeActions, actionName) => { storeActions[actionName] = vue.toRaw(store)[actionName]; return storeActions; }, {}); for (const actionName in actions) { store[actionName] = function() { const _actionId = runningActionId; const trackedStore = wrapWithProxy ? new Proxy(store, { get(...args) { activeAction = _actionId; return Reflect.get(...args); }, set(...args) { activeAction = _actionId; return Reflect.set(...args); } }) : store; activeAction = _actionId; const retValue = actions[actionName].apply(trackedStore, arguments); activeAction = void 0; return retValue; }; } } function devtoolsPlugin({ app: app2, store, options }) { if (store.$id.startsWith("__hot:")) { return; } store._isOptionsAPI = !!options.state; if (!store._p._testing) { patchActionForGrouping(store, Object.keys(options.actions), store._isOptionsAPI); const originalHotUpdate = store._hotUpdate; vue.toRaw(store)._hotUpdate = function(newStore) { originalHotUpdate.apply(this, arguments); patchActionForGrouping(store, Object.keys(newStore._hmrPayload.actions), !!store._isOptionsAPI); }; } addStoreToDevtools( app2, // FIXME: is there a way to allow the assignment from Store to StoreGeneric? store ); } function createPinia() { const scope = vue.effectScope(true); const state = scope.run(() => vue.ref({})); let _p = []; let toBeInstalled = []; const pinia2 = vue.markRaw({ install(app2) { setActivePinia(pinia2); { pinia2._a = app2; app2.provide(piniaSymbol, pinia2); app2.config.globalProperties.$pinia = pinia2; if (IS_CLIENT) { registerPiniaDevtools(app2, pinia2); } toBeInstalled.forEach((plugin) => _p.push(plugin)); toBeInstalled = []; } }, use(plugin) { if (!this._a && !isVue2) { toBeInstalled.push(plugin); } else { _p.push(plugin); } return this; }, _p, // it's actually undefined here // @ts-expect-error _a: null, _e: scope, _s: /* @__PURE__ */ new Map(), state }); if (typeof Proxy !== "undefined") { pinia2.use(devtoolsPlugin); } return pinia2; } function patchObject(newState, oldState) { for (const key in oldState) { const subPatch = oldState[key]; if (!(key in newState)) { continue; } const targetValue = newState[key]; if (isPlainObject$1(targetValue) && isPlainObject$1(subPatch) && !vue.isRef(subPatch) && !vue.isReactive(subPatch)) { newState[key] = patchObject(targetValue, subPatch); } else { { newState[key] = subPatch; } } } return newState; } const noop$3 = () => { }; function addSubscription(subscriptions, callback, detached, onCleanup = noop$3) { subscriptions.push(callback); const removeSubscription = () => { const idx = subscriptions.indexOf(callback); if (idx > -1) { subscriptions.splice(idx, 1); onCleanup(); } }; if (!detached && vue.getCurrentScope()) { vue.onScopeDispose(removeSubscription); } return removeSubscription; } function triggerSubscriptions(subscriptions, ...args) { subscriptions.slice().forEach((callback) => { callback(...args); }); } const fallbackRunWithContext = (fn2) => fn2(); const ACTION_MARKER = Symbol(); const ACTION_NAME = Symbol(); function mergeReactiveObjects(target, patchToApply) { if (target instanceof Map && patchToApply instanceof Map) { patchToApply.forEach((value, key) => target.set(key, value)); } else if (target instanceof Set && patchToApply instanceof Set) { patchToApply.forEach(target.add, target); } for (const key in patchToApply) { if (!patchToApply.hasOwnProperty(key)) continue; const subPatch = patchToApply[key]; const targetValue = target[key]; if (isPlainObject$1(targetValue) && isPlainObject$1(subPatch) && target.hasOwnProperty(key) && !vue.isRef(subPatch) && !vue.isReactive(subPatch)) { target[key] = mergeReactiveObjects(targetValue, subPatch); } else { target[key] = subPatch; } } return target; } const skipHydrateSymbol = Symbol("pinia:skipHydration"); function shouldHydrate(obj) { return !isPlainObject$1(obj) || !obj.hasOwnProperty(skipHydrateSymbol); } const { assign } = Object; function isComputed(o) { return !!(vue.isRef(o) && o.effect); } function createOptionsStore(id, options, pinia2, hot) { const { state, actions, getters } = options; const initialState = pinia2.state.value[id]; let store; function setup() { if (!initialState && !hot) { { pinia2.state.value[id] = state ? state() : {}; } } const localState = hot ? ( // use ref() to unwrap refs inside state TODO: check if this is still necessary vue.toRefs(vue.ref(state ? state() : {}).value) ) : vue.toRefs(pinia2.state.value[id]); return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => { if (name in localState) { console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with "${name}" in store "${id}".`); } computedGetters[name] = vue.markRaw(vue.computed(() => { setActivePinia(pinia2); const store2 = pinia2._s.get(id); return getters[name].call(store2, store2); })); return computedGetters; }, {})); } store = createSetupStore(id, setup, options, pinia2, hot, true); return store; } function createSetupStore($id, setup, options = {}, pinia2, hot, isOptionsStore) { let scope; const optionsForPlugin = assign({ actions: {} }, options); if (!pinia2._e.active) { throw new Error("Pinia destroyed"); } const $subscribeOptions = { deep: true }; { $subscribeOptions.onTrigger = (event) => { if (isListening) { debuggerEvents = event; } else if (isListening == false && !store._hotUpdating) { if (Array.isArray(debuggerEvents)) { debuggerEvents.push(event); } else { console.error("🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug."); } } }; } let isListening; let isSyncListening; let subscriptions = []; let actionSubscriptions = []; let debuggerEvents; const initialState = pinia2.state.value[$id]; if (!isOptionsStore && !initialState && !hot) { { pinia2.state.value[$id] = {}; } } const hotState = vue.ref({}); let activeListener; function $patch(partialStateOrMutator) { let subscriptionMutation; isListening = isSyncListening = false; { debuggerEvents = []; } if (typeof partialStateOrMutator === "function") { partialStateOrMutator(pinia2.state.value[$id]); subscriptionMutation = { type: MutationType.patchFunction, storeId: $id, events: debuggerEvents }; } else { mergeReactiveObjects(pinia2.state.value[$id], partialStateOrMutator); subscriptionMutation = { type: MutationType.patchObject, payload: partialStateOrMutator, storeId: $id, events: debuggerEvents }; } const myListenerId = activeListener = Symbol(); vue.nextTick().then(() => { if (activeListener === myListenerId) { isListening = true; } }); isSyncListening = true; triggerSubscriptions(subscriptions, subscriptionMutation, pinia2.state.value[$id]); } const $reset = isOptionsStore ? function $reset2() { const { state } = options; const newState = state ? state() : {}; this.$patch(($state) => { assign($state, newState); }); } : ( /* istanbul ignore next */ () => { throw new Error(`🍍: Store "${$id}" is built using the setup syntax and does not implement $reset().`); } ); function $dispose() { scope.stop(); subscriptions = []; actionSubscriptions = []; pinia2._s.delete($id); } const action = (fn2, name = "") => { if (ACTION_MARKER in fn2) { fn2[ACTION_NAME] = name; return fn2; } const wrappedAction = function() { setActivePinia(pinia2); const args = Array.from(arguments); const afterCallbackList = []; const onErrorCallbackList = []; function after2(callback) { afterCallbackList.push(callback); } function onError(callback) { onErrorCallbackList.push(callback); } triggerSubscriptions(actionSubscriptions, { args, name: wrappedAction[ACTION_NAME], store, after: after2, onError }); let ret; try { ret = fn2.apply(this && this.$id === $id ? this : store, args); } catch (error) { triggerSubscriptions(onErrorCallbackList, error); throw error; } if (ret instanceof Promise) { return ret.then((value) => { triggerSubscriptions(afterCallbackList, value); return value; }).catch((error) => { triggerSubscriptions(onErrorCallbackList, error); return Promise.reject(error); }); } triggerSubscriptions(afterCallbackList, ret); return ret; }; wrappedAction[ACTION_MARKER] = true; wrappedAction[ACTION_NAME] = name; return wrappedAction; }; const _hmrPayload = /* @__PURE__ */ vue.markRaw({ actions: {}, getters: {}, state: [], hotState }); const partialStore = { _p: pinia2, // _s: scope, $id, $onAction: addSubscription.bind(null, actionSubscriptions), $patch, $reset, $subscribe(callback, options2 = {}) { const removeSubscription = addSubscription(subscriptions, callback, options2.detached, () => stopWatcher()); const stopWatcher = scope.run(() => vue.watch(() => pinia2.state.value[$id], (state) => { if (options2.flush === "sync" ? isSyncListening : isListening) { callback({ storeId: $id, type: MutationType.direct, events: debuggerEvents }, state); } }, assign({}, $subscribeOptions, options2))); return removeSubscription; }, $dispose }; const store = vue.reactive(assign( { _hmrPayload, _customProperties: vue.markRaw(/* @__PURE__ */ new Set()) // devtools custom properties }, partialStore // must be added later // setupStore )); pinia2._s.set($id, store); const runWithContext = pinia2._a && pinia2._a.runWithContext || fallbackRunWithContext; const setupStore = runWithContext(() => pinia2._e.run(() => (scope = vue.effectScope()).run(() => setup({ action })))); for (const key in setupStore) { const prop = setupStore[key]; if (vue.isRef(prop) && !isComputed(prop) || vue.isReactive(prop)) { if (hot) { set(hotState.value, key, vue.toRef(setupStore, key)); } else if (!isOptionsStore) { if (initialState && shouldHydrate(prop)) { if (vue.isRef(prop)) { prop.value = initialState[key]; } else { mergeReactiveObjects(prop, initialState[key]); } } { pinia2.state.value[$id][key] = prop; } } { _hmrPayload.state.push(key); } } else if (typeof prop === "function") { const actionValue = hot ? prop : action(prop, key); { setupStore[key] = actionValue; } { _hmrPayload.actions[key] = prop; } optionsForPlugin.actions[key] = prop; } else { if (isComputed(prop)) { _hmrPayload.getters[key] = isOptionsStore ? ( // @ts-expect-error options.getters[key] ) : prop; if (IS_CLIENT) { const getters = setupStore._getters || // @ts-expect-error: same (setupStore._getters = vue.markRaw([])); getters.push(key); } } } } { assign(store, setupStore); assign(vue.toRaw(store), setupStore); } Object.defineProperty(store, "$state", { get: () => hot ? hotState.value : pinia2.state.value[$id], set: (state) => { if (hot) { throw new Error("cannot set hotState"); } $patch(($state) => { assign($state, state); }); } }); { store._hotUpdate = vue.markRaw((newStore) => { store._hotUpdating = true; newStore._hmrPayload.state.forEach((stateKey) => { if (stateKey in store.$state) { const newStateTarget = newStore.$state[stateKey]; const oldStateSource = store.$state[stateKey]; if (typeof newStateTarget === "object" && isPlainObject$1(newStateTarget) && isPlainObject$1(oldStateSource)) { patchObject(newStateTarget, oldStateSource); } else { newStore.$state[stateKey] = oldStateSource; } } set(store, stateKey, vue.toRef(newStore.$state, stateKey)); }); Object.keys(store.$state).forEach((stateKey) => { if (!(stateKey in newStore.$state)) { del(store, stateKey); } }); isListening = false; isSyncListening = false; pinia2.state.value[$id] = vue.toRef(newStore._hmrPayload, "hotState"); isSyncListening = true; vue.nextTick().then(() => { isListening = true; }); for (const actionName in newStore._hmrPayload.actions) { const actionFn = newStore[actionName]; set(store, actionName, action(actionFn, actionName)); } for (const getterName in newStore._hmrPayload.getters) { const getter = newStore._hmrPayload.getters[getterName]; const getterValue = isOptionsStore ? ( // special handling of options api vue.computed(() => { setActivePinia(pinia2); return getter.call(store, store); }) ) : getter; set(store, getterName, getterValue); } Object.keys(store._hmrPayload.getters).forEach((key) => { if (!(key in newStore._hmrPayload.getters)) { del(store, key); } }); Object.keys(store._hmrPayload.actions).forEach((key) => { if (!(key in newStore._hmrPayload.actions)) { del(store, key); } }); store._hmrPayload = newStore._hmrPayload; store._getters = newStore._getters; store._hotUpdating = false; }); } if (IS_CLIENT) { const nonEnumerable = { writable: true, configurable: true, // avoid warning on devtools trying to display this property enumerable: false }; ["_p", "_hmrPayload", "_getters", "_customProperties"].forEach((p) => { Object.defineProperty(store, p, assign({ value: store[p] }, nonEnumerable)); }); } pinia2._p.forEach((extender) => { if (IS_CLIENT) { const extensions = scope.run(() => extender({ store, app: pinia2._a, pinia: pinia2, options: optionsForPlugin })); Object.keys(extensions || {}).forEach((key) => store._customProperties.add(key)); assign(store, extensions); } else { assign(store, scope.run(() => extender({ store, app: pinia2._a, pinia: pinia2, options: optionsForPlugin }))); } }); if (store.$state && typeof store.$state === "object" && typeof store.$state.constructor === "function" && !store.$state.constructor.toString().includes("[native code]")) { console.warn(`[🍍]: The "state" must be a plain object. It cannot be state: () => new MyClass() Found in store "${store.$id}".`); } if (initialState && isOptionsStore && options.hydrate) { options.hydrate(store.$state, initialState); } isListening = true; isSyncListening = true; return store; } /*! #__NO_SIDE_EFFECTS__ */ // @__NO_SIDE_EFFECTS__ function defineStore(idOrOptions, setup, setupOptions) { let id; let options; const isSetupStore = typeof setup === "function"; if (typeof idOrOptions === "string") { id = idOrOptions; options = isSetupStore ? setupOptions : setup; } else { options = idOrOptions; id = idOrOptions.id; if (typeof id !== "string") { throw new Error(`[🍍]: "defineStore()" must be passed a store id as its first argument.`); } } function useStore(pinia2, hot) { const hasContext = vue.hasInjectionContext(); pinia2 = // in test mode, ignore the argument provided as we can always retrieve a // pinia instance with getActivePinia() pinia2 || (hasContext ? vue.inject(piniaSymbol, null) : null); if (pinia2) setActivePinia(pinia2); if (!activePinia) { throw new Error(`[🍍]: "getActivePinia()" was called but there was no active Pinia. Are you trying to use a store before calling "app.use(pinia)"? See https://pinia.vuejs.org/core-concepts/outside-component-usage.html for help. This will fail in production.`); } pinia2 = activePinia; if (!pinia2._s.has(id)) { if (isSetupStore) { createSetupStore(id, setup, options, pinia2); } else { createOptionsStore(id, options, pinia2); } { useStore._pinia = pinia2; } } const store = pinia2._s.get(id); if (hot) { const hotId = "__hot:" + id; const newStore = isSetupStore ? createSetupStore(hotId, setup, options, pinia2, true) : createOptionsStore(hotId, assign({}, options), pinia2, true); hot._hotUpdate(newStore); delete pinia2.state.value[hotId]; pinia2._s.delete(hotId); } if (IS_CLIENT) { const currentInstance = vue.getCurrentInstance(); if (currentInstance && currentInstance.proxy && // avoid adding stores that are just built for hot module replacement !hot) { const vm = currentInstance.proxy; const cache = "_pStores" in vm ? vm._pStores : vm._pStores = {}; cache[id] = store; } } return store; } useStore.$id = id; return useStore; } function storeToRefs(store) { { const rawStore = vue.toRaw(store); const refs = {}; for (const key in rawStore) { const value = rawStore[key]; if (vue.isRef(value) || vue.isReactive(value)) { refs[key] = // --- vue.toRef(store, key); } } return refs; } } var _GM_getValue = /* @__PURE__ */ (() => typeof GM_getValue != "undefined" ? GM_getValue : void 0)(); var _GM_registerMenuCommand = /* @__PURE__ */ (() => typeof GM_registerMenuCommand != "undefined" ? GM_registerMenuCommand : void 0)(); var _GM_setValue = /* @__PURE__ */ (() => typeof GM_setValue != "undefined" ? GM_setValue : void 0)(); function getErrEl() { let errEl2 = document.body.errEl; if (errEl2 === void 0) { errEl2 = document.createElement("div"); errEl2.classList.add("no-found"); errEl2.remove = () => { }; document.body.errEl = errEl2; } return errEl2; } const errEl = getErrEl(); function $Q(selector) { let ele = document.querySelector(selector); if (ele == null) { return errEl; } else { return ele; } } const SEARCH_BAR_TOP_GAP = 35; const SEARCH_BAR_WIDTH = 60; const SEARCH_BAR_X_OFFSET = 0; const SCROLL_DURATION = 0.5; let timeHandle = null; function testTimeout() { if (timeHandle !== null) { clearTimeout(timeHandle); timeHandle = null; } } function mySetTimout(handle, timeout) { testTimeout(); timeHandle = setTimeout(handle, timeout); } async function applyOriginalShowState(isShow) { if (isShow) { $Q(".bili-header__banner").style.translate = "0 0"; $Q(".bili-header__channel").style.translate = "0 0"; $Q(".bili-feed4-layout").style.translate = "0 0"; $Q(".center-search-container").style.opacity = "0"; mySetTimout(() => { $Q(".center-search-container").style.position = "static"; $Q(".center-search-container").style.translate = "0 0"; $Q(".center-search-container").style.opacity = "1"; }, SCROLL_DURATION * 1e3); $Q(".header-channel").id = "header-channel-show"; } else { $Q(".bili-header__banner").style.translate = ""; $Q(".bili-header__channel").style.translate = ""; $Q(".bili-feed4-layout").style.translate = ""; $Q(".center-search-container").style.opacity = "0"; mySetTimout(() => { $Q(".center-search-container").style.translate = ""; $Q(".center-search-container").style.position = ""; $Q(".center-search-container").style.opacity = "1"; }, SCROLL_DURATION * 1e3); $Q(".header-channel").id = ""; } } function useConfig(key, defaultValue) { const isObjOrArr = typeof defaultValue === "object" || Array.isArray(defaultValue); let storeValue = _GM_getValue(key, defaultValue); if (isObjOrArr) { if (storeValue !== defaultValue) { storeValue = JSON.parse(storeValue); } if (storeValue === null) { storeValue = defaultValue; } } const config = vue.ref(storeValue); vue.watch(config, () => { if (isObjOrArr) { let jsonString = JSON.stringify(config.value); _GM_setValue(key, jsonString); } else { _GM_setValue(key, config.value); } }, { deep: true }); return config; } function useCssVar(varName, defaultValue) { let cssVar = useConfig(varName, defaultValue); vue.watch(cssVar, () => { document.documentElement.style.setProperty(varName, cssVar.value); }, { immediate: true }); return cssVar; } function useCssVarFormat(varName, defaultValue, format) { const cssVar = useCssVar(varName, defaultValue); let initValue = parseInt(cssVar.value); if (Object.is(initValue, NaN)) { initValue = cssVar.value; } const cssVarFormat = vue.ref(initValue); vue.watch(cssVarFormat, () => { if (typeof cssVarFormat.value === "number") { cssVar.value = cssVarFormat.value + format; } else if (cssVarFormat.value === null) { cssVar.value = 0; } else if (typeof cssVarFormat.value === "string") { cssVar.value = cssVarFormat.value; } }); return cssVarFormat; } class Query { /** * * @param timeout * timeout 为-1时 无限查询并等待 * If timeout is -1, query indefinitely and wait * @param onError * 回调函数, 在查找不到时执行 * callback function, it will be called when the query fails * @param isBlocking * 在查询失败时, 是否保持Promise为pending状态, 默认为false * whether to keep the Promise in pending state when a query fails. The default is false * @param sleepTime * 查询的间隔 */ constructor(timeout = 1e4, onError = null, isBlocking = false, sleepTime = 100) { let errEl2 = document.body.errEl; if (errEl2 === void 0) { errEl2 = document.createElement("div"); errEl2.classList.add("no-found"); errEl2.remove = () => { }; document.body.errEl = errEl2; } this.errEl = errEl2; this.timeout = timeout; this.onError = onError; this.isBlocking = isBlocking; this.sleepTime = sleepTime; } /** * * @param selector * 选择器, 和querySelector的参数一致 * selector, same to the param of querySelector * @param baseEl * @returns {Promise} */ async queryAsync(selector, baseEl = document) { const startTime = Date.now(); while (true) { const ele = baseEl.querySelector(selector); if (ele !== null) { return ele; } if (this.timeout !== -1 && Date.now() - startTime > this.timeout) { console.warn(`$Q_Async: Timeout: Cannot find element for selector "${selector}"`); if (this.onError !== null) { this.onError(); } if (!this.isBlocking) { return this.errEl; } return new Promise(() => { }); } await this.sleep(); } } sleep() { return new Promise((resolve) => setTimeout(resolve, this.sleepTime)); } } const query = new Query(); function queryAsync(selector, baseEl) { return query.queryAsync(selector, baseEl); } function useSearchBar(inputSelector) { const isShowPlaceHolder = useConfig("isClearPlaceholder", false); const isAutoFocus = useConfig("isAutoFocus", false); queryAsync(inputSelector).then((inputEl) => { let timerId = setInterval(() => { let placeholder = inputEl.placeholder; if (placeholder === "") { return; } else { clearInterval(timerId); } vue.watch(isShowPlaceHolder, () => { if (isShowPlaceHolder.value) { inputEl.placeholder = placeholder; } else { inputEl.placeholder = ""; } }, { immediate: true }); if (isAutoFocus.value) { inputEl.focus(); } }, 200); }).catch((err) => console.error(err)); return { isShowPlaceHolder, isAutoFocus }; } function useStyleElement(key, defaultValue, cssContent) { const isApplied = useConfig(key, defaultValue); const style = document.createElement("style"); style.innerHTML = cssContent; vue.watch(isApplied, () => { if (isApplied.value) { document.head.appendChild(style); } else { if (style.parentNode === document.head) { document.head.removeChild(style); } } }, { immediate: true }); return isApplied; } function useStyle(key, defaultValue, selector, styleKey, value) { const config = useConfig(key, defaultValue); queryAsync(selector).then((ele) => { vue.watch(config, () => { if (config.value) { ele.style[styleKey] = value; } else { ele.style[styleKey] = ""; } }, { immediate: true }); }).catch((msg) => { console.error(msg); }); return config; } function useDisplayNone(key, defaultValue, selector) { return useStyle(key, defaultValue, selector, "display", "none"); } function useBooleanReverse(target) { const proxy = vue.ref(!target.value); vue.watch(proxy, () => { target.value = !proxy.value; }); return proxy; } const useBiliStore = /* @__PURE__ */ defineStore("bilibili", () => { const isShowOriginal = vue.ref(false); vue.watch(isShowOriginal, () => { applyOriginalShowState(isShowOriginal.value); }); function useHiddenState(key, defaultValue, selector) { return useBooleanReverse(useDisplayNone(key, defaultValue, selector)); } let { isShowPlaceHolder, isAutoFocus } = useSearchBar(".nav-search-content > input"); const displayConfigObj = vue.ref({ "下载客户端": useHiddenState("display-status-download", true, ".left-entry li:nth-last-child(1)"), "会员购": useHiddenState("display-status-huiyuangou", false, "div.bili-header__bar > ul.left-entry > li:nth-child(5)"), "游戏中心": useHiddenState("display-status-game-center", false, " div.bili-header__bar > ul.left-entry > li:nth-child(4)"), "上传按钮": useHiddenState("display-status-upload-video", true, ".right-entry-item--upload"), "隐藏热搜": useStyleElement( "hot-search-recommend", true, ` .search-panel .trending { display: none !important; } ` ), "动图菜单项": useBooleanReverse(useStyleElement("display-status-gif", true, ` .left-entry li:nth-last-child(2) { display: none !important; } `)), "热门搜索词": isShowPlaceHolder, "自动聚焦": isAutoFocus }); const displayConfigCount = vue.computed(() => { return Object.values(displayConfigObj.value).length; }); const displayConfigDescs = vue.computed(() => { return Object.keys(displayConfigObj.value); }); const searchBarTopGap = useCssVarFormat("--search-bar-top-gap", SEARCH_BAR_TOP_GAP + "vh", "vh"); const searchBarWidth = useCssVarFormat("--search-bar-width", SEARCH_BAR_WIDTH + "vw", "vw"); const searchBarXOffset = useCssVarFormat("--search-bar-x-offset", SEARCH_BAR_X_OFFSET + "vw", "vw"); const wallpaperPosX = useCssVarFormat("--wallpaper-pos-x", "center", "px"); const wallpaperPosY = useCssVarFormat("--wallpaper-pos-y", "center", "px"); const wallpaperSize = useCssVarFormat("--wallpaper-size", "cover", "%"); const wallpaperBgColor = useCssVar("--wallpaper-bg-color", "#fff"); return { isShowOriginal, displayConfigObj, displayConfigCount, displayConfigDescs, searchBarXOffset, // displayConfigs, // scrollDuration, searchBarTopGap, searchBarWidth, wallpaperPosX, wallpaperPosY, wallpaperSize, wallpaperBgColor }; }); const wallpaperBase64 = { "蓝山": "data:image/jpg;base64,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" }; const useMainStore = /* @__PURE__ */ defineStore("main", () => { const extendWallpaperBase64Obj = useConfig("extendWallpaperBase64Obj", {}); const wallpaperBase64Obj = vue.computed(() => ({ ...wallpaperBase64, ...extendWallpaperBase64Obj.value })); const currWallpaperName = useConfig("currWallpaperName", "蓝山"); function deleteWallpaper(name) { if (currWallpaperName.value == name) { currWallpaperName.value = "蓝山"; } delete extendWallpaperBase64Obj.value[name]; } function renameWallpaper(oldName, newName) { let wallpaperBase642 = extendWallpaperBase64Obj.value[oldName]; extendWallpaperBase64Obj.value[newName] = wallpaperBase642; if (currWallpaperName.value == oldName) { currWallpaperName.value = newName; } delete extendWallpaperBase64Obj.value[oldName]; } function applyWallpaper(name) { if (!(name in wallpaperBase64Obj.value)) { return false; } currWallpaperName.value = name; return true; } function appendWallpaper(name, base64) { extendWallpaperBase64Obj.value[name] = base64; } function emptyWallpaper() { extendWallpaperBase64Obj.value = {}; currWallpaperName.value = "蓝山"; } if (!(currWallpaperName.value in wallpaperBase64Obj.value)) { currWallpaperName.value = "蓝山"; } const isShowDialog2 = useConfig("isShowDialog", false); const tabsCurrSel = useConfig("tabs-item-currSel", "0"); const collapseCurrSel = useConfig("wallpaper-config-currSel", "1"); const currWallpaperBase64Url = vue.computed(() => { return `url(${wallpaperBase64Obj.value[currWallpaperName.value]})`; }); return { deleteWallpaper, renameWallpaper, applyWallpaper, appendWallpaper, emptyWallpaper, currWallpaperName, extendWallpaperBase64Obj, wallpaperBase64Obj, isShowDialog: isShowDialog2, tabsCurrSel, collapseCurrSel, currWallpaperBase64Url }; }); function tryOnScopeDispose$1(fn2) { if (vue.getCurrentScope()) { vue.onScopeDispose(fn2); return true; } return false; } function toValue(r) { return typeof r === "function" ? r() : vue.unref(r); } const isClient$1 = typeof window !== "undefined" && typeof document !== "undefined"; typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope; const toString$2 = Object.prototype.toString; const isObject$3 = (val) => toString$2.call(val) === "[object Object]"; const noop$2 = () => { }; function createFilterWrapper$1(filter2, fn2) { function wrapper(...args) { return new Promise((resolve, reject2) => { Promise.resolve(filter2(() => fn2.apply(this, args), { fn: fn2, thisArg: this, args })).then(resolve).catch(reject2); }); } return wrapper; } function debounceFilter(ms, options = {}) { let timer; let maxTimer; let lastRejector = noop$2; const _clearTimeout = (timer2) => { clearTimeout(timer2); lastRejector(); lastRejector = noop$2; }; const filter2 = (invoke2) => { const duration = toValue(ms); const maxDuration = toValue(options.maxWait); if (timer) _clearTimeout(timer); if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) { if (maxTimer) { _clearTimeout(maxTimer); maxTimer = null; } return Promise.resolve(invoke2()); } return new Promise((resolve, reject2) => { lastRejector = options.rejectOnCancel ? reject2 : resolve; if (maxDuration && !maxTimer) { maxTimer = setTimeout(() => { if (timer) _clearTimeout(timer); maxTimer = null; resolve(invoke2()); }, maxDuration); } timer = setTimeout(() => { if (maxTimer) _clearTimeout(maxTimer); maxTimer = null; resolve(invoke2()); }, duration); }); }; return filter2; } function throttleFilter$1(...args) { let lastExec = 0; let timer; let isLeading = true; let lastRejector = noop$2; let lastValue; let ms; let trailing; let leading; let rejectOnCancel; if (!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$2; } }; const filter2 = (_invoke) => { const duration = toValue(ms); const elapsed = Date.now() - lastExec; const invoke2 = () => { return lastValue = _invoke(); }; clear(); if (duration <= 0) { lastExec = Date.now(); return invoke2(); } if (elapsed > duration && (leading || !isLeading)) { lastExec = Date.now(); invoke2(); } else if (trailing) { lastValue = new Promise((resolve, reject2) => { lastRejector = rejectOnCancel ? reject2 : resolve; timer = setTimeout(() => { lastExec = Date.now(); isLeading = true; resolve(invoke2()); clear(); }, Math.max(0, duration - elapsed)); }); } if (!leading && !timer) timer = setTimeout(() => isLeading = true, duration); isLeading = false; return lastValue; }; return filter2; } function getLifeCycleTarget(target) { return vue.getCurrentInstance(); } function useDebounceFn(fn2, ms = 200, options = {}) { return createFilterWrapper$1( debounceFilter(ms, options), fn2 ); } function useThrottleFn$1(fn2, ms = 200, trailing = false, leading = true, rejectOnCancel = false) { return createFilterWrapper$1( throttleFilter$1(ms, trailing, leading, rejectOnCancel), fn2 ); } function tryOnMounted$1(fn2, sync = true, target) { const instance = getLifeCycleTarget(); if (instance) vue.onMounted(fn2, target); else if (sync) fn2(); else vue.nextTick(fn2); } const defaultWindow$1 = isClient$1 ? window : void 0; function unrefElement$1(elRef) { var _a2; const plain = toValue(elRef); return (_a2 = plain == null ? void 0 : plain.$el) != null ? _a2 : plain; } function useEventListener$1(...args) { let target; let events2; let listeners; let options; if (typeof args[0] === "string" || Array.isArray(args[0])) { [events2, listeners, options] = args; target = defaultWindow$1; } else { [target, events2, listeners, options] = args; } if (!target) return noop$2; if (!Array.isArray(events2)) events2 = [events2]; if (!Array.isArray(listeners)) listeners = [listeners]; const cleanups = []; const cleanup = () => { cleanups.forEach((fn2) => fn2()); cleanups.length = 0; }; const register = (el, event, listener, options2) => { el.addEventListener(event, listener, options2); return () => el.removeEventListener(event, listener, options2); }; const stopWatch = vue.watch( () => [unrefElement$1(target), toValue(options)], ([el, options2]) => { cleanup(); if (!el) return; const optionsClone = isObject$3(options2) ? { ...options2 } : options2; cleanups.push( ...events2.flatMap((event) => { return listeners.map((listener) => register(el, event, listener, optionsClone)); }) ); }, { immediate: true, flush: "post" } ); const stop = () => { stopWatch(); cleanup(); }; tryOnScopeDispose$1(stop); return stop; } const ARRIVED_STATE_THRESHOLD_PIXELS = 1; function useScroll(element, options = {}) { const { throttle: throttle2 = 0, idle = 200, onStop = noop$2, onScroll = noop$2, offset = { left: 0, right: 0, top: 0, bottom: 0 }, eventListenerOptions = { capture: false, passive: true }, behavior = "auto", window: window2 = defaultWindow$1, onError = (e) => { console.error(e); } } = options; const internalX = vue.ref(0); const internalY = vue.ref(0); const x = vue.computed({ get() { return internalX.value; }, set(x2) { scrollTo2(x2, void 0); } }); const y = vue.computed({ get() { return internalY.value; }, set(y2) { scrollTo2(void 0, y2); } }); function scrollTo2(_x, _y) { var _a2, _b, _c, _d; if (!window2) return; const _element = toValue(element); if (!_element) return; (_c = _element instanceof Document ? window2.document.body : _element) == null ? void 0 : _c.scrollTo({ top: (_a2 = toValue(_y)) != null ? _a2 : y.value, left: (_b = toValue(_x)) != null ? _b : x.value, behavior: toValue(behavior) }); const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element; if (x != null) internalX.value = scrollContainer.scrollLeft; if (y != null) internalY.value = scrollContainer.scrollTop; } const isScrolling = vue.ref(false); const arrivedState = vue.reactive({ left: true, right: false, top: true, bottom: false }); const directions = vue.reactive({ left: false, right: false, top: false, bottom: false }); const onScrollEnd = (e) => { if (!isScrolling.value) return; isScrolling.value = false; directions.left = false; directions.right = false; directions.top = false; directions.bottom = false; onStop(e); }; const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle2 + idle); const setArrivedState = (target) => { var _a2; if (!window2) return; const el = ((_a2 = target == null ? void 0 : target.document) == null ? void 0 : _a2.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement$1(target); const { display, flexDirection } = getComputedStyle(el); const scrollLeft = el.scrollLeft; directions.left = scrollLeft < internalX.value; directions.right = scrollLeft > internalX.value; const left = Math.abs(scrollLeft) <= (offset.left || 0); const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS; if (display === "flex" && flexDirection === "row-reverse") { arrivedState.left = right; arrivedState.right = left; } else { arrivedState.left = left; arrivedState.right = right; } internalX.value = scrollLeft; let scrollTop = el.scrollTop; if (target === window2.document && !scrollTop) scrollTop = window2.document.body.scrollTop; directions.top = scrollTop < internalY.value; directions.bottom = scrollTop > internalY.value; const top = Math.abs(scrollTop) <= (offset.top || 0); const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS; if (display === "flex" && flexDirection === "column-reverse") { arrivedState.top = bottom; arrivedState.bottom = top; } else { arrivedState.top = top; arrivedState.bottom = bottom; } internalY.value = scrollTop; }; const onScrollHandler = (e) => { var _a2; if (!window2) return; const eventTarget = (_a2 = e.target.documentElement) != null ? _a2 : e.target; setArrivedState(eventTarget); isScrolling.value = true; onScrollEndDebounced(e); onScroll(e); }; useEventListener$1( element, "scroll", throttle2 ? useThrottleFn$1(onScrollHandler, throttle2, true, false) : onScrollHandler, eventListenerOptions ); tryOnMounted$1(() => { try { const _element = toValue(element); if (!_element) return; setArrivedState(_element); } catch (e) { onError(e); } }); useEventListener$1( element, "scrollend", onScrollEnd, eventListenerOptions ); return { x, y, isScrolling, arrivedState, directions, measure() { const _element = toValue(element); if (window2 && _element) setArrivedState(_element); } }; } var VERSION = "1.13.7"; var root$1 = typeof self == "object" && self.self === self && self || typeof global == "object" && global.global === global && global || Function("return this")() || {}; var ArrayProto = Array.prototype, ObjProto = Object.prototype; var SymbolProto = typeof Symbol !== "undefined" ? Symbol.prototype : null; var push = ArrayProto.push, slice$1 = ArrayProto.slice, toString$1 = ObjProto.toString, hasOwnProperty$d = ObjProto.hasOwnProperty; var supportsArrayBuffer = typeof ArrayBuffer !== "undefined", supportsDataView = typeof DataView !== "undefined"; var nativeIsArray = Array.isArray, nativeKeys$1 = Object.keys, nativeCreate$1 = Object.create, nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; var _isNaN = isNaN, _isFinite = isFinite; var hasEnumBug = !{ toString: null }.propertyIsEnumerable("toString"); var nonEnumerableProps = [ "valueOf", "isPrototypeOf", "toString", "propertyIsEnumerable", "hasOwnProperty", "toLocaleString" ]; var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; function restArguments(func, startIndex) { startIndex = startIndex == null ? func.length - 1 : +startIndex; return function() { var length = Math.max(arguments.length - startIndex, 0), rest2 = Array(length), index = 0; for (; index < length; index++) { rest2[index] = arguments[index + startIndex]; } switch (startIndex) { case 0: return func.call(this, rest2); case 1: return func.call(this, arguments[0], rest2); case 2: return func.call(this, arguments[0], arguments[1], rest2); } var args = Array(startIndex + 1); for (index = 0; index < startIndex; index++) { args[index] = arguments[index]; } args[startIndex] = rest2; return func.apply(this, args); }; } function isObject$2(obj) { var type = typeof obj; return type === "function" || type === "object" && !!obj; } function isNull(obj) { return obj === null; } function isUndefined$2(obj) { return obj === void 0; } function isBoolean$1(obj) { return obj === true || obj === false || toString$1.call(obj) === "[object Boolean]"; } function isElement$1(obj) { return !!(obj && obj.nodeType === 1); } function tagTester(name) { var tag = "[object " + name + "]"; return function(obj) { return toString$1.call(obj) === tag; }; } const isString$2 = tagTester("String"); const isNumber$1 = tagTester("Number"); const isDate = tagTester("Date"); const isRegExp = tagTester("RegExp"); const isError = tagTester("Error"); const isSymbol$1 = tagTester("Symbol"); const isArrayBuffer = tagTester("ArrayBuffer"); var isFunction$3 = tagTester("Function"); var nodelist = root$1.document && root$1.document.childNodes; if (typeof /./ != "function" && typeof Int8Array != "object" && typeof nodelist != "function") { isFunction$3 = function(obj) { return typeof obj == "function" || false; }; } const isFunction$4 = isFunction$3; const hasObjectTag = tagTester("Object"); var hasDataViewBug = supportsDataView && (!/\[native code\]/.test(String(DataView)) || hasObjectTag(new DataView(new ArrayBuffer(8)))), isIE11 = typeof Map !== "undefined" && hasObjectTag(/* @__PURE__ */ new Map()); var isDataView = tagTester("DataView"); function alternateIsDataView(obj) { return obj != null && isFunction$4(obj.getInt8) && isArrayBuffer(obj.buffer); } const isDataView$1 = hasDataViewBug ? alternateIsDataView : isDataView; const isArray$2 = nativeIsArray || tagTester("Array"); function has$1(obj, key) { return obj != null && hasOwnProperty$d.call(obj, key); } var isArguments$1 = tagTester("Arguments"); (function() { if (!isArguments$1(arguments)) { isArguments$1 = function(obj) { return has$1(obj, "callee"); }; } })(); const isArguments$2 = isArguments$1; function isFinite$1(obj) { return !isSymbol$1(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); } function isNaN$1(obj) { return isNumber$1(obj) && _isNaN(obj); } function constant$1(value) { return function() { return value; }; } function createSizePropertyCheck(getSizeProperty) { return function(collection) { var sizeProperty = getSizeProperty(collection); return typeof sizeProperty == "number" && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; }; } function shallowProperty(key) { return function(obj) { return obj == null ? void 0 : obj[key]; }; } const getByteLength = shallowProperty("byteLength"); const isBufferLike = createSizePropertyCheck(getByteLength); var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; function isTypedArray$1(obj) { return nativeIsView ? nativeIsView(obj) && !isDataView$1(obj) : isBufferLike(obj) && typedArrayPattern.test(toString$1.call(obj)); } const isTypedArray$2 = supportsArrayBuffer ? isTypedArray$1 : constant$1(false); const getLength = shallowProperty("length"); function emulatedSet(keys2) { var hash = {}; for (var l = keys2.length, i = 0; i < l; ++i) hash[keys2[i]] = true; return { contains: function(key) { return hash[key] === true; }, push: function(key) { hash[key] = true; return keys2.push(key); } }; } function collectNonEnumProps(obj, keys2) { keys2 = emulatedSet(keys2); var nonEnumIdx = nonEnumerableProps.length; var constructor = obj.constructor; var proto = isFunction$4(constructor) && constructor.prototype || ObjProto; var prop = "constructor"; if (has$1(obj, prop) && !keys2.contains(prop)) keys2.push(prop); while (nonEnumIdx--) { prop = nonEnumerableProps[nonEnumIdx]; if (prop in obj && obj[prop] !== proto[prop] && !keys2.contains(prop)) { keys2.push(prop); } } } function keys$1(obj) { if (!isObject$2(obj)) return []; if (nativeKeys$1) return nativeKeys$1(obj); var keys2 = []; for (var key in obj) if (has$1(obj, key)) keys2.push(key); if (hasEnumBug) collectNonEnumProps(obj, keys2); return keys2; } function isEmpty(obj) { if (obj == null) return true; var length = getLength(obj); if (typeof length == "number" && (isArray$2(obj) || isString$2(obj) || isArguments$2(obj))) return length === 0; return getLength(keys$1(obj)) === 0; } function isMatch(object2, attrs) { var _keys = keys$1(attrs), length = _keys.length; if (object2 == null) return !length; var obj = Object(object2); for (var i = 0; i < length; i++) { var key = _keys[i]; if (attrs[key] !== obj[key] || !(key in obj)) return false; } return true; } function _$1(obj) { if (obj instanceof _$1) return obj; if (!(this instanceof _$1)) return new _$1(obj); this._wrapped = obj; } _$1.VERSION = VERSION; _$1.prototype.value = function() { return this._wrapped; }; _$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; _$1.prototype.toString = function() { return String(this._wrapped); }; function toBufferView(bufferSource) { return new Uint8Array( bufferSource.buffer || bufferSource, bufferSource.byteOffset || 0, getByteLength(bufferSource) ); } var tagDataView = "[object DataView]"; function eq$1(a, b, aStack, bStack) { if (a === b) return a !== 0 || 1 / a === 1 / b; if (a == null || b == null) return false; if (a !== a) return b !== b; var type = typeof a; if (type !== "function" && type !== "object" && typeof b != "object") return false; return deepEq(a, b, aStack, bStack); } function deepEq(a, b, aStack, bStack) { if (a instanceof _$1) a = a._wrapped; if (b instanceof _$1) b = b._wrapped; var className = toString$1.call(a); if (className !== toString$1.call(b)) return false; if (hasDataViewBug && className == "[object Object]" && isDataView$1(a)) { if (!isDataView$1(b)) return false; className = tagDataView; } switch (className) { case "[object RegExp]": case "[object String]": return "" + a === "" + b; case "[object Number]": if (+a !== +a) return +b !== +b; return +a === 0 ? 1 / +a === 1 / b : +a === +b; case "[object Date]": case "[object Boolean]": return +a === +b; case "[object Symbol]": return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); case "[object ArrayBuffer]": case tagDataView: return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); } var areArrays = className === "[object Array]"; if (!areArrays && isTypedArray$2(a)) { var byteLength = getByteLength(a); if (byteLength !== getByteLength(b)) return false; if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; areArrays = true; } if (!areArrays) { if (typeof a != "object" || typeof b != "object") return false; var aCtor = a.constructor, bCtor = b.constructor; if (aCtor !== bCtor && !(isFunction$4(aCtor) && aCtor instanceof aCtor && isFunction$4(bCtor) && bCtor instanceof bCtor) && ("constructor" in a && "constructor" in b)) { return false; } } aStack = aStack || []; bStack = bStack || []; var length = aStack.length; while (length--) { if (aStack[length] === a) return bStack[length] === b; } aStack.push(a); bStack.push(b); if (areArrays) { length = a.length; if (length !== b.length) return false; while (length--) { if (!eq$1(a[length], b[length], aStack, bStack)) return false; } } else { var _keys = keys$1(a), key; length = _keys.length; if (keys$1(b).length !== length) return false; while (length--) { key = _keys[length]; if (!(has$1(b, key) && eq$1(a[key], b[key], aStack, bStack))) return false; } } aStack.pop(); bStack.pop(); return true; } function isEqual$1(a, b) { return eq$1(a, b); } function allKeys(obj) { if (!isObject$2(obj)) return []; var keys2 = []; for (var key in obj) keys2.push(key); if (hasEnumBug) collectNonEnumProps(obj, keys2); return keys2; } function ie11fingerprint(methods) { var length = getLength(methods); return function(obj) { if (obj == null) return false; var keys2 = allKeys(obj); if (getLength(keys2)) return false; for (var i = 0; i < length; i++) { if (!isFunction$4(obj[methods[i]])) return false; } return methods !== weakMapMethods || !isFunction$4(obj[forEachName]); }; } var forEachName = "forEach", hasName = "has", commonInit = ["clear", "delete"], mapTail = ["get", hasName, "set"]; var mapMethods = commonInit.concat(forEachName, mapTail), weakMapMethods = commonInit.concat(mapTail), setMethods = ["add"].concat(commonInit, forEachName, hasName); const isMap$1 = isIE11 ? ie11fingerprint(mapMethods) : tagTester("Map"); const isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester("WeakMap"); const isSet$1 = isIE11 ? ie11fingerprint(setMethods) : tagTester("Set"); const isWeakSet = tagTester("WeakSet"); function values(obj) { var _keys = keys$1(obj); var length = _keys.length; var values2 = Array(length); for (var i = 0; i < length; i++) { values2[i] = obj[_keys[i]]; } return values2; } function pairs(obj) { var _keys = keys$1(obj); var length = _keys.length; var pairs2 = Array(length); for (var i = 0; i < length; i++) { pairs2[i] = [_keys[i], obj[_keys[i]]]; } return pairs2; } function invert(obj) { var result2 = {}; var _keys = keys$1(obj); for (var i = 0, length = _keys.length; i < length; i++) { result2[obj[_keys[i]]] = _keys[i]; } return result2; } function functions(obj) { var names2 = []; for (var key in obj) { if (isFunction$4(obj[key])) names2.push(key); } return names2.sort(); } function createAssigner(keysFunc, defaults2) { return function(obj) { var length = arguments.length; if (defaults2) obj = Object(obj); if (length < 2 || obj == null) return obj; for (var index = 1; index < length; index++) { var source = arguments[index], keys2 = keysFunc(source), l = keys2.length; for (var i = 0; i < l; i++) { var key = keys2[i]; if (!defaults2 || obj[key] === void 0) obj[key] = source[key]; } } return obj; }; } const extend = createAssigner(allKeys); const extendOwn = createAssigner(keys$1); const defaults = createAssigner(allKeys, true); function ctor() { return function() { }; } function baseCreate$1(prototype) { if (!isObject$2(prototype)) return {}; if (nativeCreate$1) return nativeCreate$1(prototype); var Ctor = ctor(); Ctor.prototype = prototype; var result2 = new Ctor(); Ctor.prototype = null; return result2; } function create(prototype, props) { var result2 = baseCreate$1(prototype); if (props) extendOwn(result2, props); return result2; } function clone(obj) { if (!isObject$2(obj)) return obj; return isArray$2(obj) ? obj.slice() : extend({}, obj); } function tap(obj, interceptor) { interceptor(obj); return obj; } function toPath$1(path) { return isArray$2(path) ? path : [path]; } _$1.toPath = toPath$1; function toPath(path) { return _$1.toPath(path); } function deepGet(obj, path) { var length = path.length; for (var i = 0; i < length; i++) { if (obj == null) return void 0; obj = obj[path[i]]; } return length ? obj : void 0; } function get$1(object2, path, defaultValue) { var value = deepGet(object2, toPath(path)); return isUndefined$2(value) ? defaultValue : value; } function has(obj, path) { path = toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; if (!has$1(obj, key)) return false; obj = obj[key]; } return !!length; } function identity$2(value) { return value; } function matcher(attrs) { attrs = extendOwn({}, attrs); return function(obj) { return isMatch(obj, attrs); }; } function property$1(path) { path = toPath(path); return function(obj) { return deepGet(obj, path); }; } function optimizeCb(func, context, argCount) { if (context === void 0) return func; switch (argCount == null ? 3 : argCount) { case 1: return function(value) { return func.call(context, value); }; case 3: return function(value, index, collection) { return func.call(context, value, index, collection); }; case 4: return function(accumulator, value, index, collection) { return func.call(context, accumulator, value, index, collection); }; } return function() { return func.apply(context, arguments); }; } function baseIteratee$1(value, context, argCount) { if (value == null) return identity$2; if (isFunction$4(value)) return optimizeCb(value, context, argCount); if (isObject$2(value) && !isArray$2(value)) return matcher(value); return property$1(value); } function iteratee(value, context) { return baseIteratee$1(value, context, Infinity); } _$1.iteratee = iteratee; function cb(value, context, argCount) { if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); return baseIteratee$1(value, context, argCount); } function mapObject(obj, iteratee2, context) { iteratee2 = cb(iteratee2, context); var _keys = keys$1(obj), length = _keys.length, results = {}; for (var index = 0; index < length; index++) { var currentKey = _keys[index]; results[currentKey] = iteratee2(obj[currentKey], currentKey, obj); } return results; } function noop$1() { } function propertyOf(obj) { if (obj == null) return noop$1; return function(path) { return get$1(obj, path); }; } function times(n, iteratee2, context) { var accum = Array(Math.max(0, n)); iteratee2 = optimizeCb(iteratee2, context, 1); for (var i = 0; i < n; i++) accum[i] = iteratee2(i); return accum; } function random(min2, max2) { if (max2 == null) { max2 = min2; min2 = 0; } return min2 + Math.floor(Math.random() * (max2 - min2 + 1)); } const now$1 = Date.now || function() { return (/* @__PURE__ */ new Date()).getTime(); }; function createEscaper(map2) { var escaper = function(match) { return map2[match]; }; var source = "(?:" + keys$1(map2).join("|") + ")"; var testRegexp = RegExp(source); var replaceRegexp = RegExp(source, "g"); return function(string) { string = string == null ? "" : "" + string; return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; }; } const escapeMap = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "`": "`" }; const escape = createEscaper(escapeMap); const unescapeMap = invert(escapeMap); const unescape = createEscaper(unescapeMap); const templateSettings = _$1.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g }; var noMatch = /(.)^/; var escapes = { "'": "'", "\\": "\\", "\r": "r", "\n": "n", "\u2028": "u2028", "\u2029": "u2029" }; var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; function escapeChar(match) { return "\\" + escapes[match]; } var bareIdentifier = /^\s*(\w|\$)+\s*$/; function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; settings = defaults({}, settings, _$1.templateSettings); var matcher2 = RegExp([ (settings.escape || noMatch).source, (settings.interpolate || noMatch).source, (settings.evaluate || noMatch).source ].join("|") + "|$", "g"); var index = 0; var source = "__p+='"; text.replace(matcher2, function(match, escape2, interpolate, evaluate, offset) { source += text.slice(index, offset).replace(escapeRegExp, escapeChar); index = offset + match.length; if (escape2) { source += "'+\n((__t=(" + escape2 + "))==null?'':_.escape(__t))+\n'"; } else if (interpolate) { source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; } else if (evaluate) { source += "';\n" + evaluate + "\n__p+='"; } return match; }); source += "';\n"; var argument = settings.variable; if (argument) { if (!bareIdentifier.test(argument)) throw new Error( "variable is not a bare identifier: " + argument ); } else { source = "with(obj||{}){\n" + source + "}\n"; argument = "obj"; } source = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + source + "return __p;\n"; var render2; try { render2 = new Function(argument, "_", source); } catch (e) { e.source = source; throw e; } var template2 = function(data) { return render2.call(this, data, _$1); }; template2.source = "function(" + argument + "){\n" + source + "}"; return template2; } function result(obj, path, fallback) { path = toPath(path); var length = path.length; if (!length) { return isFunction$4(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; if (prop === void 0) { prop = fallback; i = length; } obj = isFunction$4(prop) ? prop.call(obj) : prop; } return obj; } var idCounter = 0; function uniqueId(prefix) { var id = ++idCounter + ""; return prefix ? prefix + id : id; } function chain(obj) { var instance = _$1(obj); instance._chain = true; return instance; } function executeBound(sourceFunc, boundFunc, context, callingContext, args) { if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); var self2 = baseCreate$1(sourceFunc.prototype); var result2 = sourceFunc.apply(self2, args); if (isObject$2(result2)) return result2; return self2; } var partial = restArguments(function(func, boundArgs) { var placeholder = partial.placeholder; var bound = function() { var position = 0, length = boundArgs.length; var args = Array(length); for (var i = 0; i < length; i++) { args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; } while (position < arguments.length) args.push(arguments[position++]); return executeBound(func, bound, this, this, args); }; return bound; }); partial.placeholder = _$1; const bind = restArguments(function(func, context, args) { if (!isFunction$4(func)) throw new TypeError("Bind must be called on a function"); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; }); const isArrayLike$1 = createSizePropertyCheck(getLength); function flatten$2(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; } else if (depth <= 0) { return output.concat(input); } var idx = output.length; for (var i = 0, length = getLength(input); i < length; i++) { var value = input[i]; if (isArrayLike$1(value) && (isArray$2(value) || isArguments$2(value))) { if (depth > 1) { flatten$2(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; while (j < len) output[idx++] = value[j++]; } } else if (!strict) { output[idx++] = value; } } return output; } const bindAll = restArguments(function(obj, keys2) { keys2 = flatten$2(keys2, false, false); var index = keys2.length; if (index < 1) throw new Error("bindAll must be passed function names"); while (index--) { var key = keys2[index]; obj[key] = bind(obj[key], obj); } return obj; }); function memoize$1(func, hasher) { var memoize2 = function(key) { var cache = memoize2.cache; var address = "" + (hasher ? hasher.apply(this, arguments) : key); if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize2.cache = {}; return memoize2; } const delay = restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); }); const defer = partial(delay, _$1, 1); function throttle$1(func, wait, options) { var timeout, context, args, result2; var previous = 0; if (!options) options = {}; var later = function() { previous = options.leading === false ? 0 : now$1(); timeout = null; result2 = func.apply(context, args); if (!timeout) context = args = null; }; var throttled = function() { var _now = now$1(); if (!previous && options.leading === false) previous = _now; var remaining = wait - (_now - previous); context = this; args = arguments; if (remaining <= 0 || remaining > wait) { if (timeout) { clearTimeout(timeout); timeout = null; } previous = _now; result2 = func.apply(context, args); if (!timeout) context = args = null; } else if (!timeout && options.trailing !== false) { timeout = setTimeout(later, remaining); } return result2; }; throttled.cancel = function() { clearTimeout(timeout); previous = 0; timeout = context = args = null; }; return throttled; } function debounce$1(func, wait, immediate) { var timeout, previous, args, result2, context; var later = function() { var passed = now$1() - previous; if (wait > passed) { timeout = setTimeout(later, wait - passed); } else { timeout = null; if (!immediate) result2 = func.apply(context, args); if (!timeout) args = context = null; } }; var debounced = restArguments(function(_args) { context = this; args = _args; previous = now$1(); if (!timeout) { timeout = setTimeout(later, wait); if (immediate) result2 = func.apply(context, args); } return result2; }); debounced.cancel = function() { clearTimeout(timeout); timeout = args = context = null; }; return debounced; } function wrap(func, wrapper) { return partial(wrapper, func); } function negate(predicate) { return function() { return !predicate.apply(this, arguments); }; } function compose() { var args = arguments; var start = args.length - 1; return function() { var i = start; var result2 = args[start].apply(this, arguments); while (i--) result2 = args[i].call(this, result2); return result2; }; } function after(times2, func) { return function() { if (--times2 < 1) { return func.apply(this, arguments); } }; } function before(times2, func) { var memo; return function() { if (--times2 > 0) { memo = func.apply(this, arguments); } if (times2 <= 1) func = null; return memo; }; } const once = partial(before, 2); function findKey(obj, predicate, context) { predicate = cb(predicate, context); var _keys = keys$1(obj), key; for (var i = 0, length = _keys.length; i < length; i++) { key = _keys[i]; if (predicate(obj[key], key, obj)) return key; } } function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); var length = getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; } return -1; }; } const findIndex = createPredicateIndexFinder(1); const findLastIndex$1 = createPredicateIndexFinder(-1); function sortedIndex(array, obj, iteratee2, context) { iteratee2 = cb(iteratee2, context, 1); var value = iteratee2(obj); var low = 0, high = getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee2(array[mid]) < value) low = mid + 1; else high = mid; } return low; } function createIndexFinder(dir, predicateFind, sortedIndex2) { return function(array, item, idx) { var i = 0, length = getLength(array); if (typeof idx == "number") { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); } else { length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; } } else if (sortedIndex2 && idx && length) { idx = sortedIndex2(array, item); return array[idx] === item ? idx : -1; } if (item !== item) { idx = predicateFind(slice$1.call(array, i, length), isNaN$1); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { if (array[idx] === item) return idx; } return -1; }; } const indexOf = createIndexFinder(1, findIndex, sortedIndex); const lastIndexOf = createIndexFinder(-1, findLastIndex$1); function find(obj, predicate, context) { var keyFinder = isArrayLike$1(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } function each(obj, iteratee2, context) { iteratee2 = optimizeCb(iteratee2, context); var i, length; if (isArrayLike$1(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee2(obj[i], i, obj); } } else { var _keys = keys$1(obj); for (i = 0, length = _keys.length; i < length; i++) { iteratee2(obj[_keys[i]], _keys[i], obj); } } return obj; } function map(obj, iteratee2, context) { iteratee2 = cb(iteratee2, context); var _keys = !isArrayLike$1(obj) && keys$1(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; results[index] = iteratee2(obj[currentKey], currentKey, obj); } return results; } function createReduce(dir) { var reducer = function(obj, iteratee2, memo, initial2) { var _keys = !isArrayLike$1(obj) && keys$1(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial2) { memo = obj[_keys ? _keys[index] : index]; index += dir; } for (; index >= 0 && index < length; index += dir) { var currentKey = _keys ? _keys[index] : index; memo = iteratee2(memo, obj[currentKey], currentKey, obj); } return memo; }; return function(obj, iteratee2, memo, context) { var initial2 = arguments.length >= 3; return reducer(obj, optimizeCb(iteratee2, context, 4), memo, initial2); }; } const reduce = createReduce(1); const reduceRight = createReduce(-1); function filter(obj, predicate, context) { var results = []; predicate = cb(predicate, context); each(obj, function(value, index, list) { if (predicate(value, index, list)) results.push(value); }); return results; } function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } function every(obj, predicate, context) { predicate = cb(predicate, context); var _keys = !isArrayLike$1(obj) && keys$1(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; if (!predicate(obj[currentKey], currentKey, obj)) return false; } return true; } function some(obj, predicate, context) { predicate = cb(predicate, context); var _keys = !isArrayLike$1(obj) && keys$1(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; if (predicate(obj[currentKey], currentKey, obj)) return true; } return false; } function contains(obj, item, fromIndex, guard) { if (!isArrayLike$1(obj)) obj = values(obj); if (typeof fromIndex != "number" || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } const invoke = restArguments(function(obj, path, args) { var contextPath, func; if (isFunction$4(path)) { func = path; } else { path = toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } return map(obj, function(context) { var method = func; if (!method) { if (contextPath && contextPath.length) { context = deepGet(context, contextPath); } if (context == null) return void 0; method = context[path]; } return method == null ? method : method.apply(context, args); }); }); function pluck(obj, key) { return map(obj, property$1(key)); } function where(obj, attrs) { return filter(obj, matcher(attrs)); } function max(obj, iteratee2, context) { var result2 = -Infinity, lastComputed = -Infinity, value, computed2; if (iteratee2 == null || typeof iteratee2 == "number" && typeof obj[0] != "object" && obj != null) { obj = isArrayLike$1(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result2) { result2 = value; } } } else { iteratee2 = cb(iteratee2, context); each(obj, function(v, index, list) { computed2 = iteratee2(v, index, list); if (computed2 > lastComputed || computed2 === -Infinity && result2 === -Infinity) { result2 = v; lastComputed = computed2; } }); } return result2; } function min(obj, iteratee2, context) { var result2 = Infinity, lastComputed = Infinity, value, computed2; if (iteratee2 == null || typeof iteratee2 == "number" && typeof obj[0] != "object" && obj != null) { obj = isArrayLike$1(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result2) { result2 = value; } } } else { iteratee2 = cb(iteratee2, context); each(obj, function(v, index, list) { computed2 = iteratee2(v, index, list); if (computed2 < lastComputed || computed2 === Infinity && result2 === Infinity) { result2 = v; lastComputed = computed2; } }); } return result2; } var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray$1(obj) { if (!obj) return []; if (isArray$2(obj)) return slice$1.call(obj); if (isString$2(obj)) { return obj.match(reStrSymbol); } if (isArrayLike$1(obj)) return map(obj, identity$2); return values(obj); } function sample(obj, n, guard) { if (n == null || guard) { if (!isArrayLike$1(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample2 = toArray$1(obj); var length = getLength(sample2); n = Math.max(Math.min(n, length), 0); var last2 = length - 1; for (var index = 0; index < n; index++) { var rand = random(index, last2); var temp = sample2[index]; sample2[index] = sample2[rand]; sample2[rand] = temp; } return sample2.slice(0, n); } function shuffle(obj) { return sample(obj, Infinity); } function sortBy(obj, iteratee2, context) { var index = 0; iteratee2 = cb(iteratee2, context); return pluck(map(obj, function(value, key, list) { return { value, index: index++, criteria: iteratee2(value, key, list) }; }).sort(function(left, right) { var a = left.criteria; var b = right.criteria; if (a !== b) { if (a > b || a === void 0) return 1; if (a < b || b === void 0) return -1; } return left.index - right.index; }), "value"); } function group(behavior, partition2) { return function(obj, iteratee2, context) { var result2 = partition2 ? [[], []] : {}; iteratee2 = cb(iteratee2, context); each(obj, function(value, index) { var key = iteratee2(value, index, obj); behavior(result2, value, key); }); return result2; }; } const groupBy = group(function(result2, value, key) { if (has$1(result2, key)) result2[key].push(value); else result2[key] = [value]; }); const indexBy = group(function(result2, value, key) { result2[key] = value; }); const countBy = group(function(result2, value, key) { if (has$1(result2, key)) result2[key]++; else result2[key] = 1; }); const partition = group(function(result2, value, pass) { result2[pass ? 0 : 1].push(value); }, true); function size(obj) { if (obj == null) return 0; return isArrayLike$1(obj) ? obj.length : keys$1(obj).length; } function keyInObj(value, key, obj) { return key in obj; } const pick$1 = restArguments(function(obj, keys2) { var result2 = {}, iteratee2 = keys2[0]; if (obj == null) return result2; if (isFunction$4(iteratee2)) { if (keys2.length > 1) iteratee2 = optimizeCb(iteratee2, keys2[1]); keys2 = allKeys(obj); } else { iteratee2 = keyInObj; keys2 = flatten$2(keys2, false, false); obj = Object(obj); } for (var i = 0, length = keys2.length; i < length; i++) { var key = keys2[i]; var value = obj[key]; if (iteratee2(value, key, obj)) result2[key] = value; } return result2; }); const omit = restArguments(function(obj, keys2) { var iteratee2 = keys2[0], context; if (isFunction$4(iteratee2)) { iteratee2 = negate(iteratee2); if (keys2.length > 1) context = keys2[1]; } else { keys2 = map(flatten$2(keys2, false, false), String); iteratee2 = function(value, key) { return !contains(keys2, key); }; } return pick$1(obj, iteratee2, context); }); function initial$1(array, n, guard) { return slice$1.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } function first(array, n, guard) { if (array == null || array.length < 1) return n == null || guard ? void 0 : []; if (n == null || guard) return array[0]; return initial$1(array, array.length - n); } function rest(array, n, guard) { return slice$1.call(array, n == null || guard ? 1 : n); } function last(array, n, guard) { if (array == null || array.length < 1) return n == null || guard ? void 0 : []; if (n == null || guard) return array[array.length - 1]; return rest(array, Math.max(0, array.length - n)); } function compact(array) { return filter(array, Boolean); } function flatten$1(array, depth) { return flatten$2(array, depth, false); } const difference = restArguments(function(array, rest2) { rest2 = flatten$2(rest2, true, true); return filter(array, function(value) { return !contains(rest2, value); }); }); const without = restArguments(function(array, otherArrays) { return difference(array, otherArrays); }); function uniq(array, isSorted, iteratee2, context) { if (!isBoolean$1(isSorted)) { context = iteratee2; iteratee2 = isSorted; isSorted = false; } if (iteratee2 != null) iteratee2 = cb(iteratee2, context); var result2 = []; var seen = []; for (var i = 0, length = getLength(array); i < length; i++) { var value = array[i], computed2 = iteratee2 ? iteratee2(value, i, array) : value; if (isSorted && !iteratee2) { if (!i || seen !== computed2) result2.push(value); seen = computed2; } else if (iteratee2) { if (!contains(seen, computed2)) { seen.push(computed2); result2.push(value); } } else if (!contains(result2, value)) { result2.push(value); } } return result2; } const union = restArguments(function(arrays) { return uniq(flatten$2(arrays, true, true)); }); function intersection(array) { var result2 = []; var argsLength = arguments.length; for (var i = 0, length = getLength(array); i < length; i++) { var item = array[i]; if (contains(result2, item)) continue; var j; for (j = 1; j < argsLength; j++) { if (!contains(arguments[j], item)) break; } if (j === argsLength) result2.push(item); } return result2; } function unzip(array) { var length = array && max(array, getLength).length || 0; var result2 = Array(length); for (var index = 0; index < length; index++) { result2[index] = pluck(array, index); } return result2; } const zip = restArguments(unzip); function object(list, values2) { var result2 = {}; for (var i = 0, length = getLength(list); i < length; i++) { if (values2) { result2[list[i]] = values2[i]; } else { result2[list[i][0]] = list[i][1]; } } return result2; } function range(start, stop, step) { if (stop == null) { stop = start || 0; start = 0; } if (!step) { step = stop < start ? -1 : 1; } var length = Math.max(Math.ceil((stop - start) / step), 0); var range2 = Array(length); for (var idx = 0; idx < length; idx++, start += step) { range2[idx] = start; } return range2; } function chunk(array, count) { if (count == null || count < 1) return []; var result2 = []; var i = 0, length = array.length; while (i < length) { result2.push(slice$1.call(array, i, i += count)); } return result2; } function chainResult(instance, obj) { return instance._chain ? _$1(obj).chain() : obj; } function mixin(obj) { each(functions(obj), function(name) { var func = _$1[name] = obj[name]; _$1.prototype[name] = function() { var args = [this._wrapped]; push.apply(args, arguments); return chainResult(this, func.apply(_$1, args)); }; }); return _$1; } each(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], function(name) { var method = ArrayProto[name]; _$1.prototype[name] = function() { var obj = this._wrapped; if (obj != null) { method.apply(obj, arguments); if ((name === "shift" || name === "splice") && obj.length === 0) { delete obj[0]; } } return chainResult(this, obj); }; }); each(["concat", "join", "slice"], function(name) { var method = ArrayProto[name]; _$1.prototype[name] = function() { var obj = this._wrapped; if (obj != null) obj = method.apply(obj, arguments); return chainResult(this, obj); }; }); const allExports = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, VERSION, after, all: every, allKeys, any: some, assign: extendOwn, before, bind, bindAll, chain, chunk, clone, collect: map, compact, compose, constant: constant$1, contains, countBy, create, debounce: debounce$1, default: _$1, defaults, defer, delay, detect: find, difference, drop: rest, each, escape, every, extend, extendOwn, filter, find, findIndex, findKey, findLastIndex: findLastIndex$1, findWhere, first, flatten: flatten$1, foldl: reduce, foldr: reduceRight, forEach: each, functions, get: get$1, groupBy, has, head: first, identity: identity$2, include: contains, includes: contains, indexBy, indexOf, initial: initial$1, inject: reduce, intersection, invert, invoke, isArguments: isArguments$2, isArray: isArray$2, isArrayBuffer, isBoolean: isBoolean$1, isDataView: isDataView$1, isDate, isElement: isElement$1, isEmpty, isEqual: isEqual$1, isError, isFinite: isFinite$1, isFunction: isFunction$4, isMap: isMap$1, isMatch, isNaN: isNaN$1, isNull, isNumber: isNumber$1, isObject: isObject$2, isRegExp, isSet: isSet$1, isString: isString$2, isSymbol: isSymbol$1, isTypedArray: isTypedArray$2, isUndefined: isUndefined$2, isWeakMap, isWeakSet, iteratee, keys: keys$1, last, lastIndexOf, map, mapObject, matcher, matches: matcher, max, memoize: memoize$1, methods: functions, min, mixin, negate, noop: noop$1, now: now$1, object, omit, once, pairs, partial, partition, pick: pick$1, pluck, property: property$1, propertyOf, random, range, reduce, reduceRight, reject, rest, restArguments, result, sample, select: filter, shuffle, size, some, sortBy, sortedIndex, tail: rest, take: first, tap, template, templateSettings, throttle: throttle$1, times, toArray: toArray$1, toPath: toPath$1, transpose: unzip, unescape, union, uniq, unique: uniq, uniqueId, unzip, values, where, without, wrap, zip }, Symbol.toStringTag, { value: "Module" })); var _ = mixin(allExports); _._ = _; const _export_sfc$1 = (sfc, props) => { const target = sfc.__vccOpts || sfc; for (const [key, val] of props) { target[key] = val; } return target; }; const _sfc_main$12 = { __name: "WallpaperItem", setup(__props) { const wallpaperRef = vue.ref(); const biliStore = useBiliStore(); const { isShowOriginal } = storeToRefs(biliStore); function onWallpaperMheelScroll(event) { if (event.deltaY > 0) { isShowOriginal.value = true; } event.preventDefault(); } const { arrivedState, y: topOffset } = useScroll(window); vue.watch(topOffset, () => { if (topOffset.value > 3 && !isShowOriginal.value) { isShowOriginal.value = true; } }); const { top: isTop } = vue.toRefs(arrivedState); const onWindowMhellScroll = throttle$1((event) => { if (event.deltaY > 0) { return; } if (!isTop.value) { return; } isShowOriginal.value = false; }, 100); vue.onMounted(() => { wallpaperRef.value.addEventListener("wheel", onWallpaperMheelScroll); window.addEventListener("wheel", onWindowMhellScroll, { passive: false }); }); vue.onUnmounted(() => { window.removeEventListener("wheel", onWindowMhellScroll); }); const mainStore2 = useMainStore(); const { currWallpaperBase64Url } = storeToRefs(mainStore2); vue.onMounted(() => { vue.watch(currWallpaperBase64Url, () => { wallpaperRef.value.style.backgroundImage = `${currWallpaperBase64Url.value} `; }, { immediate: true }); }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass(["wallpaper-item", { hidden: vue.unref(isShowOriginal) }]), ref_key: "wallpaperRef", ref: wallpaperRef }, null, 2); }; } }; const WallpaperItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$12, [["__scopeId", "data-v-0166ab8b"]]); 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 isVisible = (element) => { const computed2 = getComputedStyle(element); return computed2.position === "fixed" ? false : element.offsetParent !== null; }; const obtainAllFocusableElements$1 = (element) => { return Array.from(element.querySelectorAll(FOCUSABLE_ELEMENT_SELECTORS)).filter((item) => isFocusable(item) && isVisible(item)); }; const isFocusable = (element) => { if (element.tabIndex > 0 || element.tabIndex === 0 && element.getAttribute("tabIndex") !== null) { return true; } if (element.disabled) { 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; } } }; const composeEventHandlers = (theirsHandler, oursHandler, { checkForDefaultPrevented = true } = {}) => { const handleEvent = (event) => { const shouldPrevent = theirsHandler == null ? void 0 : theirsHandler(event); if (checkForDefaultPrevented === false || !shouldPrevent) { return oursHandler == null ? void 0 : oursHandler(event); } }; return handleEvent; }; var __defProp$9 = Object.defineProperty; var __defProps$6 = Object.defineProperties; var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols$b = Object.getOwnPropertySymbols; var __hasOwnProp$b = Object.prototype.hasOwnProperty; var __propIsEnum$b = Object.prototype.propertyIsEnumerable; var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues$9 = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp$b.call(b, prop)) __defNormalProp$9(a, prop, b[prop]); if (__getOwnPropSymbols$b) for (var prop of __getOwnPropSymbols$b(b)) { if (__propIsEnum$b.call(b, prop)) __defNormalProp$9(a, prop, b[prop]); } return a; }; var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b)); function computedEager(fn2, options) { var _a2; const result2 = vue.shallowRef(); vue.watchEffect(() => { result2.value = fn2(); }, __spreadProps$6(__spreadValues$9({}, options), { flush: (_a2 = void 0) != null ? _a2 : "sync" })); return vue.readonly(result2); } var _a; const isClient = typeof window !== "undefined"; const isDef = (val) => typeof val !== "undefined"; const isFunction$2 = (val) => typeof val === "function"; const isString$1 = (val) => typeof val === "string"; const noop = () => { }; const isIOS = isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent); function resolveUnref(r) { return typeof r === "function" ? r() : vue.unref(r); } function createFilterWrapper(filter2, fn2) { function wrapper(...args) { return new Promise((resolve, reject2) => { Promise.resolve(filter2(() => fn2.apply(this, args), { fn: fn2, thisArg: this, args })).then(resolve).catch(reject2); }); } return wrapper; } function throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) { let lastExec = 0; let timer; let isLeading = true; let lastRejector = noop; let lastValue; const clear = () => { if (timer) { clearTimeout(timer); timer = void 0; lastRejector(); lastRejector = noop; } }; const filter2 = (_invoke) => { const duration = resolveUnref(ms); const elapsed = Date.now() - lastExec; const invoke2 = () => { return lastValue = _invoke(); }; clear(); if (duration <= 0) { lastExec = Date.now(); return invoke2(); } if (elapsed > duration && (leading || !isLeading)) { lastExec = Date.now(); invoke2(); } else if (trailing) { lastValue = new Promise((resolve, reject2) => { lastRejector = rejectOnCancel ? reject2 : resolve; timer = setTimeout(() => { lastExec = Date.now(); isLeading = true; resolve(invoke2()); clear(); }, Math.max(0, duration - elapsed)); }); } if (!leading && !timer) timer = setTimeout(() => isLeading = true, duration); isLeading = false; return lastValue; }; return filter2; } function identity$1(arg) { return arg; } function tryOnScopeDispose(fn2) { if (vue.getCurrentScope()) { vue.onScopeDispose(fn2); return true; } return false; } function useThrottleFn(fn2, ms = 200, trailing = false, leading = true, rejectOnCancel = false) { return createFilterWrapper(throttleFilter(ms, trailing, leading, rejectOnCancel), fn2); } function tryOnMounted(fn2, sync = true) { if (vue.getCurrentInstance()) vue.onMounted(fn2); else if (sync) fn2(); else vue.nextTick(fn2); } function useTimeoutFn(cb2, interval, options = {}) { const { immediate = true } = options; const isPending = 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; cb2(...args); }, resolveUnref(interval)); } if (immediate) { isPending.value = true; if (isClient) start(); } tryOnScopeDispose(stop); return { isPending: vue.readonly(isPending), start, stop }; } function unrefElement(elRef) { var _a2; const plain = resolveUnref(elRef); return (_a2 = plain == null ? void 0 : plain.$el) != null ? _a2 : plain; } const defaultWindow = isClient ? window : void 0; const defaultDocument = isClient ? window.document : void 0; function useEventListener(...args) { let target; let events; let listeners; let options; if (isString$1(args[0]) || Array.isArray(args[0])) { [events, listeners, options] = args; target = defaultWindow; } else { [target, events, listeners, options] = args; } if (!target) return noop; if (!Array.isArray(events)) events = [events]; if (!Array.isArray(listeners)) listeners = [listeners]; const cleanups = []; const cleanup = () => { cleanups.forEach((fn2) => fn2()); cleanups.length = 0; }; const register = (el, event, listener, options2) => { el.addEventListener(event, listener, options2); return () => el.removeEventListener(event, listener, options2); }; const stopWatch = vue.watch(() => [unrefElement(target), resolveUnref(options)], ([el, options2]) => { cleanup(); if (!el) return; cleanups.push(...events.flatMap((event) => { return listeners.map((listener) => register(el, event, listener, options2)); })); }, { immediate: true, flush: "post" }); const stop = () => { stopWatch(); cleanup(); }; tryOnScopeDispose(stop); return stop; } let _iOSWorkaround = false; function onClickOutside(target, handler, options = {}) { const { window: window2 = defaultWindow, ignore = [], capture = true, detectIframe = false } = options; if (!window2) return; if (isIOS && !_iOSWorkaround) { _iOSWorkaround = true; Array.from(window2.document.body.children).forEach((el) => el.addEventListener("click", noop)); } let shouldListen = true; const shouldIgnore = (event) => { return ignore.some((target2) => { if (typeof target2 === "string") { return Array.from(window2.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el)); } else { const el = unrefElement(target2); return el && (event.target === el || event.composedPath().includes(el)); } }); }; const listener = (event) => { const el = unrefElement(target); if (!el || el === event.target || event.composedPath().includes(el)) return; if (event.detail === 0) shouldListen = !shouldIgnore(event); if (!shouldListen) { shouldListen = true; return; } handler(event); }; const cleanup = [ useEventListener(window2, "click", listener, { passive: true, capture }), useEventListener(window2, "pointerdown", (e) => { const el = unrefElement(target); if (el) shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e); }, { passive: true }), detectIframe && useEventListener(window2, "blur", (event) => { var _a2; const el = unrefElement(target); if (((_a2 = window2.document.activeElement) == null ? void 0 : _a2.tagName) === "IFRAME" && !(el == null ? void 0 : el.contains(window2.document.activeElement))) handler(event); }) ].filter(Boolean); const stop = () => cleanup.forEach((fn2) => fn2()); return stop; } function useSupported(callback, sync = false) { const isSupported = vue.ref(); const update = () => isSupported.value = Boolean(callback()); update(); tryOnMounted(update, sync); return isSupported; } function cloneFnJSON(source) { return JSON.parse(JSON.stringify(source)); } const _global = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; const globalKey = "__vueuse_ssr_handlers__"; _global[globalKey] = _global[globalKey] || {}; function useDocumentVisibility({ document: document2 = defaultDocument } = {}) { if (!document2) return vue.ref("visible"); const visibility = vue.ref(document2.visibilityState); useEventListener(document2, "visibilitychange", () => { visibility.value = document2.visibilityState; }); return visibility; } var __getOwnPropSymbols$g = Object.getOwnPropertySymbols; var __hasOwnProp$g = Object.prototype.hasOwnProperty; var __propIsEnum$g = Object.prototype.propertyIsEnumerable; var __objRest$2 = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp$g.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols$g) for (var prop of __getOwnPropSymbols$g(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum$g.call(source, prop)) target[prop] = source[prop]; } return target; }; function useResizeObserver(target, callback, options = {}) { const _a2 = options, { window: window2 = defaultWindow } = _a2, observerOptions = __objRest$2(_a2, ["window"]); let observer; const isSupported = useSupported(() => window2 && "ResizeObserver" in window2); const cleanup = () => { if (observer) { observer.disconnect(); observer = void 0; } }; const stopWatch = vue.watch(() => unrefElement(target), (el) => { cleanup(); if (isSupported.value && window2 && el) { observer = new ResizeObserver(callback); observer.observe(el, observerOptions); } }, { immediate: true, flush: "post" }); const stop = () => { cleanup(); stopWatch(); }; tryOnScopeDispose(stop); return { isSupported, stop }; } var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols; var __hasOwnProp$8 = Object.prototype.hasOwnProperty; var __propIsEnum$8 = Object.prototype.propertyIsEnumerable; var __objRest$1 = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols$8) for (var prop of __getOwnPropSymbols$8(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum$8.call(source, prop)) target[prop] = source[prop]; } return target; }; function useMutationObserver(target, callback, options = {}) { const _a2 = options, { window: window2 = defaultWindow } = _a2, mutationOptions = __objRest$1(_a2, ["window"]); let observer; const isSupported = useSupported(() => window2 && "MutationObserver" in window2); const cleanup = () => { if (observer) { observer.disconnect(); observer = void 0; } }; const stopWatch = vue.watch(() => unrefElement(target), (el) => { cleanup(); if (isSupported.value && window2 && el) { observer = new MutationObserver(callback); observer.observe(el, mutationOptions); } }, { immediate: true }); const stop = () => { cleanup(); stopWatch(); }; tryOnScopeDispose(stop); return { isSupported, stop }; } var SwipeDirection; (function(SwipeDirection2) { SwipeDirection2["UP"] = "UP"; SwipeDirection2["RIGHT"] = "RIGHT"; SwipeDirection2["DOWN"] = "DOWN"; SwipeDirection2["LEFT"] = "LEFT"; SwipeDirection2["NONE"] = "NONE"; })(SwipeDirection || (SwipeDirection = {})); var __defProp = Object.defineProperty; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; const _TransitionPresets = { easeInSine: [0.12, 0, 0.39, 0], easeOutSine: [0.61, 1, 0.88, 1], easeInOutSine: [0.37, 0, 0.63, 1], easeInQuad: [0.11, 0, 0.5, 0], easeOutQuad: [0.5, 1, 0.89, 1], easeInOutQuad: [0.45, 0, 0.55, 1], easeInCubic: [0.32, 0, 0.67, 0], easeOutCubic: [0.33, 1, 0.68, 1], easeInOutCubic: [0.65, 0, 0.35, 1], easeInQuart: [0.5, 0, 0.75, 0], easeOutQuart: [0.25, 1, 0.5, 1], easeInOutQuart: [0.76, 0, 0.24, 1], easeInQuint: [0.64, 0, 0.78, 0], easeOutQuint: [0.22, 1, 0.36, 1], easeInOutQuint: [0.83, 0, 0.17, 1], easeInExpo: [0.7, 0, 0.84, 0], easeOutExpo: [0.16, 1, 0.3, 1], easeInOutExpo: [0.87, 0, 0.13, 1], easeInCirc: [0.55, 0, 1, 0.45], easeOutCirc: [0, 0.55, 0.45, 1], easeInOutCirc: [0.85, 0, 0.15, 1], easeInBack: [0.36, 0, 0.66, -0.56], easeOutBack: [0.34, 1.56, 0.64, 1], easeInOutBack: [0.68, -0.6, 0.32, 1.6] }; __spreadValues({ linear: identity$1 }, _TransitionPresets); function useVModel(props, key, emit, options = {}) { var _a2, _b, _c; const { clone: clone2 = false, passive = false, eventName, deep = false, defaultValue } = options; const vm = vue.getCurrentInstance(); const _emit = (vm == null ? void 0 : vm.emit) || ((_a2 = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a2.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; event = eventName || event || `update:${key.toString()}`; const cloneFn = (val) => !clone2 ? val : isFunction$2(clone2) ? clone2(val) : cloneFnJSON(val); const getValue2 = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue; if (passive) { const initialValue = getValue2(); const proxy = vue.ref(initialValue); vue.watch(() => props[key], (v) => proxy.value = cloneFn(v)); vue.watch(proxy, (v) => { if (v !== props[key] || deep) _emit(event, v); }, { deep }); return proxy; } else { return vue.computed({ get() { return getValue2(); }, set(value) { _emit(event, value); } }); } } function useWindowFocus({ window: window2 = defaultWindow } = {}) { if (!window2) return vue.ref(false); const focused = vue.ref(window2.document.hasFocus()); useEventListener(window2, "blur", () => { focused.value = false; }); useEventListener(window2, "focus", () => { focused.value = true; }); return focused; } const isFirefox = () => isClient && /firefox/i.test(window.navigator.userAgent); const isInContainer = (el, container) => { if (!isClient || !el || !container) return false; const elRect = el.getBoundingClientRect(); let containerRect; if (container instanceof Element) { containerRect = container.getBoundingClientRect(); } else { containerRect = { top: 0, right: window.innerWidth, bottom: window.innerHeight, left: 0 }; } return elRect.top < containerRect.bottom && elRect.bottom > containerRect.top && elRect.right > containerRect.left && elRect.left < containerRect.right; }; 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 }; }; /** * @vue/shared v3.5.12 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/ const NOOP = () => { }; const hasOwnProperty$c = Object.prototype.hasOwnProperty; const hasOwn = (val, key) => hasOwnProperty$c.call(val, key); const isArray$1 = Array.isArray; const isFunction$1 = (val) => typeof val === "function"; const isString = (val) => typeof val === "string"; const isObject$1 = (val) => val !== null && typeof val === "object"; const objectToString$1 = Object.prototype.toString; const toTypeString = (value) => objectToString$1.call(value); const toRawType = (value) => { return toTypeString(value).slice(8, -1); }; const isPlainObject = (val) => toTypeString(val) === "[object Object]"; const cacheStringFunction = (fn2) => { const cache = /* @__PURE__ */ Object.create(null); return (str) => { const hit = cache[str]; return hit || (cache[str] = fn2(str)); }; }; const camelizeRE = /-(\w)/g; const camelize = cacheStringFunction( (str) => { return str.replace(camelizeRE, (_2, c) => c ? c.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); }); var freeGlobal = typeof global == "object" && global && global.Object === Object && global; var freeSelf = typeof self == "object" && self && self.Object === Object && self; var root = freeGlobal || freeSelf || Function("return this")(); var Symbol$1 = root.Symbol; var objectProto$e = Object.prototype; var hasOwnProperty$b = objectProto$e.hasOwnProperty; var nativeObjectToString$1 = objectProto$e.toString; var symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : void 0; function getRawTag(value) { var isOwn = hasOwnProperty$b.call(value, symToStringTag$1), tag = value[symToStringTag$1]; try { value[symToStringTag$1] = void 0; var unmasked = true; } catch (e) { } var result2 = nativeObjectToString$1.call(value); if (unmasked) { if (isOwn) { value[symToStringTag$1] = tag; } else { delete value[symToStringTag$1]; } } return result2; } var objectProto$d = Object.prototype; var nativeObjectToString = objectProto$d.toString; function objectToString(value) { return nativeObjectToString.call(value); } var nullTag = "[object Null]", undefinedTag = "[object Undefined]"; var symToStringTag = Symbol$1 ? Symbol$1.toStringTag : void 0; function baseGetTag(value) { if (value == null) { return value === void 0 ? undefinedTag : nullTag; } return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value); } function isObjectLike(value) { return value != null && typeof value == "object"; } var symbolTag$3 = "[object Symbol]"; function isSymbol(value) { return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag$3; } function arrayMap(array, iteratee2) { var index = -1, length = array == null ? 0 : array.length, result2 = Array(length); while (++index < length) { result2[index] = iteratee2(array[index], index, array); } return result2; } var isArray = Array.isArray; var INFINITY$1 = 1 / 0; var symbolProto$2 = Symbol$1 ? Symbol$1.prototype : void 0, symbolToString = symbolProto$2 ? symbolProto$2.toString : void 0; 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 result2 = value + ""; return result2 == "0" && 1 / value == -INFINITY$1 ? "-0" : result2; } var reWhitespace = /\s/; function trimmedEndIndex(string) { var index = string.length; while (index-- && reWhitespace.test(string.charAt(index))) { } return index; } var reTrimStart = /^\s+/; function baseTrim(string) { return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string; } function isObject(value) { var type = typeof value; return value != null && (type == "object" || type == "function"); } var NAN = 0 / 0; var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; var reIsBinary = /^0b[01]+$/i; var reIsOctal = /^0o[0-7]+$/i; var freeParseInt = parseInt; 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; } function identity(value) { return value; } var asyncTag = "[object AsyncFunction]", funcTag$2 = "[object Function]", genTag$1 = "[object GeneratorFunction]", proxyTag = "[object Proxy]"; function isFunction(value) { if (!isObject(value)) { return false; } var tag = baseGetTag(value); return tag == funcTag$2 || tag == genTag$1 || tag == asyncTag || tag == proxyTag; } var coreJsData = root["__core-js_shared__"]; var maskSrcKey = function() { var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); return uid ? "Symbol(src)_1." + uid : ""; }(); function isMasked(func) { return !!maskSrcKey && maskSrcKey in func; } var funcProto$1 = Function.prototype; var funcToString$1 = funcProto$1.toString; function toSource(func) { if (func != null) { try { return funcToString$1.call(func); } catch (e) { } try { return func + ""; } catch (e) { } } return ""; } var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; var reIsHostCtor = /^\[object .+?Constructor\]$/; var funcProto = Function.prototype, objectProto$c = Object.prototype; var funcToString = funcProto.toString; var hasOwnProperty$a = objectProto$c.hasOwnProperty; var reIsNative = RegExp( "^" + funcToString.call(hasOwnProperty$a).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" ); function baseIsNative(value) { if (!isObject(value) || isMasked(value)) { return false; } var pattern = isFunction(value) ? reIsNative : reIsHostCtor; return pattern.test(toSource(value)); } function getValue(object2, key) { return object2 == null ? void 0 : object2[key]; } function getNative(object2, key) { var value = getValue(object2, key); return baseIsNative(value) ? value : void 0; } var WeakMap = getNative(root, "WeakMap"); var objectCreate = Object.create; var baseCreate = /* @__PURE__ */ function() { function object2() { } return function(proto) { if (!isObject(proto)) { return {}; } if (objectCreate) { return objectCreate(proto); } object2.prototype = proto; var result2 = new object2(); object2.prototype = void 0; return result2; }; }(); 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); } var HOT_COUNT = 800, HOT_SPAN = 16; var nativeNow = Date.now; 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); }; } function constant(value) { return function() { return value; }; } var defineProperty = function() { try { var func = getNative(Object, "defineProperty"); func({}, "", {}); return func; } catch (e) { } }(); var baseSetToString = !defineProperty ? identity : function(func, string) { return defineProperty(func, "toString", { "configurable": true, "enumerable": false, "value": constant(string), "writable": true }); }; var setToString = shortOut(baseSetToString); function arrayEach(array, iteratee2) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (iteratee2(array[index], index, array) === false) { break; } } return array; } function baseFindIndex(array, predicate, fromIndex, fromRight) { array.length; var index = fromIndex + 1; while (index--) { if (predicate(array[index], index, array)) { return index; } } return -1; } var MAX_SAFE_INTEGER$1 = 9007199254740991; var reIsUint = /^(?:0|[1-9]\d*)$/; 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); } function baseAssignValue(object2, key, value) { if (key == "__proto__" && defineProperty) { defineProperty(object2, key, { "configurable": true, "enumerable": true, "value": value, "writable": true }); } else { object2[key] = value; } } function eq(value, other) { return value === other || value !== value && other !== other; } var objectProto$b = Object.prototype; var hasOwnProperty$9 = objectProto$b.hasOwnProperty; function assignValue(object2, key, value) { var objValue = object2[key]; if (!(hasOwnProperty$9.call(object2, key) && eq(objValue, value)) || value === void 0 && !(key in object2)) { baseAssignValue(object2, key, value); } } var nativeMax$1 = Math.max; function overRest(func, start, transform) { start = nativeMax$1(start === void 0 ? func.length - 1 : start, 0); return function() { var args = arguments, index = -1, length = nativeMax$1(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); }; } var MAX_SAFE_INTEGER = 9007199254740991; function isLength(value) { return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; } function isArrayLike(value) { return value != null && isLength(value.length) && !isFunction(value); } var objectProto$a = Object.prototype; function isPrototype(value) { var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto$a; return value === proto; } function baseTimes(n, iteratee2) { var index = -1, result2 = Array(n); while (++index < n) { result2[index] = iteratee2(index); } return result2; } var argsTag$3 = "[object Arguments]"; function baseIsArguments(value) { return isObjectLike(value) && baseGetTag(value) == argsTag$3; } var objectProto$9 = Object.prototype; var hasOwnProperty$8 = objectProto$9.hasOwnProperty; var propertyIsEnumerable$1 = objectProto$9.propertyIsEnumerable; var isArguments = baseIsArguments(/* @__PURE__ */ function() { return arguments; }()) ? baseIsArguments : function(value) { return isObjectLike(value) && hasOwnProperty$8.call(value, "callee") && !propertyIsEnumerable$1.call(value, "callee"); }; function stubFalse() { return false; } var freeExports$2 = typeof exports == "object" && exports && !exports.nodeType && exports; var freeModule$2 = freeExports$2 && typeof module == "object" && module && !module.nodeType && module; var moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2; var Buffer$1 = moduleExports$2 ? root.Buffer : void 0; var nativeIsBuffer = Buffer$1 ? Buffer$1.isBuffer : void 0; var isBuffer = nativeIsBuffer || stubFalse; 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$3 = "[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]"; 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$3] = typedArrayTags[regexpTag$3] = typedArrayTags[setTag$5] = typedArrayTags[stringTag$3] = typedArrayTags[weakMapTag$2] = false; function baseIsTypedArray(value) { return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; } function baseUnary(func) { return function(value) { return func(value); }; } var freeExports$1 = typeof exports == "object" && exports && !exports.nodeType && exports; var freeModule$1 = freeExports$1 && typeof module == "object" && module && !module.nodeType && module; var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1; var freeProcess = moduleExports$1 && freeGlobal.process; 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) { } }(); var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; var objectProto$8 = Object.prototype; var hasOwnProperty$7 = objectProto$8.hasOwnProperty; 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, result2 = skipIndexes ? baseTimes(value.length, String) : [], length = result2.length; for (var key in value) { if ((hasOwnProperty$7.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode. (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers. isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays. isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties. isIndex(key, length)))) { result2.push(key); } } return result2; } function overArg(func, transform) { return function(arg) { return func(transform(arg)); }; } var nativeKeys = overArg(Object.keys, Object); var objectProto$7 = Object.prototype; var hasOwnProperty$6 = objectProto$7.hasOwnProperty; function baseKeys(object2) { if (!isPrototype(object2)) { return nativeKeys(object2); } var result2 = []; for (var key in Object(object2)) { if (hasOwnProperty$6.call(object2, key) && key != "constructor") { result2.push(key); } } return result2; } function keys(object2) { return isArrayLike(object2) ? arrayLikeKeys(object2) : baseKeys(object2); } var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/; function isKey(value, object2) { 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) || object2 != null && value in Object(object2); } var nativeCreate = getNative(Object, "create"); function hashClear() { this.__data__ = nativeCreate ? nativeCreate(null) : {}; this.size = 0; } function hashDelete(key) { var result2 = this.has(key) && delete this.__data__[key]; this.size -= result2 ? 1 : 0; return result2; } var HASH_UNDEFINED$2 = "__lodash_hash_undefined__"; var objectProto$5 = Object.prototype; var hasOwnProperty$4 = objectProto$5.hasOwnProperty; function hashGet(key) { var data = this.__data__; if (nativeCreate) { var result2 = data[key]; return result2 === HASH_UNDEFINED$2 ? void 0 : result2; } return hasOwnProperty$4.call(data, key) ? data[key] : void 0; } var objectProto$4 = Object.prototype; var hasOwnProperty$3 = objectProto$4.hasOwnProperty; function hashHas(key) { var data = this.__data__; return nativeCreate ? data[key] !== void 0 : hasOwnProperty$3.call(data, key); } var HASH_UNDEFINED$1 = "__lodash_hash_undefined__"; 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; } 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; function listCacheClear() { this.__data__ = []; this.size = 0; } function assocIndexOf(array, key) { var length = array.length; while (length--) { if (eq(array[length][0], key)) { return length; } } return -1; } var arrayProto = Array.prototype; var splice = arrayProto.splice; function listCacheDelete(key) { var data = this.__data__, index = assocIndexOf(data, key); if (index < 0) { return false; } var lastIndex = data.length - 1; if (index == lastIndex) { data.pop(); } else { splice.call(data, index, 1); } --this.size; return true; } function listCacheGet(key) { var data = this.__data__, index = assocIndexOf(data, key); return index < 0 ? void 0 : data[index][1]; } function listCacheHas(key) { return assocIndexOf(this.__data__, key) > -1; } 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; } 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; var Map$1 = getNative(root, "Map"); function mapCacheClear() { this.size = 0; this.__data__ = { "hash": new Hash(), "map": new (Map$1 || ListCache)(), "string": new Hash() }; } function isKeyable(value) { var type = typeof value; return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null; } function getMapData(map2, key) { var data = map2.__data__; return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map; } function mapCacheDelete(key) { var result2 = getMapData(this, key)["delete"](key); this.size -= result2 ? 1 : 0; return result2; } function mapCacheGet(key) { return getMapData(this, key).get(key); } function mapCacheHas(key) { return getMapData(this, key).has(key); } function mapCacheSet(key, value) { var data = getMapData(this, key), size2 = data.size; data.set(key, value); this.size += data.size == size2 ? 0 : 1; return this; } 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; var FUNC_ERROR_TEXT$2 = "Expected a function"; 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 result2 = func.apply(this, args); memoized.cache = cache.set(key, result2) || cache; return result2; }; memoized.cache = new (memoize.Cache || MapCache)(); return memoized; } memoize.Cache = MapCache; var MAX_MEMOIZE_SIZE = 500; function memoizeCapped(func) { var result2 = memoize(func, function(key) { if (cache.size === MAX_MEMOIZE_SIZE) { cache.clear(); } return key; }); var cache = result2.cache; return result2; } var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; var reEscapeChar = /\\(\\)?/g; var stringToPath = memoizeCapped(function(string) { var result2 = []; if (string.charCodeAt(0) === 46) { result2.push(""); } string.replace(rePropName, function(match, number, quote, subString) { result2.push(quote ? subString.replace(reEscapeChar, "$1") : number || match); }); return result2; }); function toString(value) { return value == null ? "" : baseToString(value); } function castPath(value, object2) { if (isArray(value)) { return value; } return isKey(value, object2) ? [value] : stringToPath(toString(value)); } var INFINITY = 1 / 0; function toKey(value) { if (typeof value == "string" || isSymbol(value)) { return value; } var result2 = value + ""; return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2; } function baseGet(object2, path) { path = castPath(path, object2); var index = 0, length = path.length; while (object2 != null && index < length) { object2 = object2[toKey(path[index++])]; } return index && index == length ? object2 : void 0; } function get(object2, path, defaultValue) { var result2 = object2 == null ? void 0 : baseGet(object2, path); return result2 === void 0 ? defaultValue : result2; } function arrayPush(array, values2) { var index = -1, length = values2.length, offset = array.length; while (++index < length) { array[offset + index] = values2[index]; } return array; } var spreadableSymbol = Symbol$1 ? Symbol$1.isConcatSpreadable : void 0; function isFlattenable(value) { return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]); } function baseFlatten(array, depth, predicate, isStrict, result2) { var index = -1, length = array.length; predicate || (predicate = isFlattenable); result2 || (result2 = []); while (++index < length) { var value = array[index]; if (predicate(value)) { { arrayPush(result2, value); } } else { result2[result2.length] = value; } } return result2; } function flatten(array) { var length = array == null ? 0 : array.length; return length ? baseFlatten(array) : []; } function flatRest(func) { return setToString(overRest(func, void 0, flatten), func + ""); } var getPrototype = overArg(Object.getPrototypeOf, Object); function castArray() { if (!arguments.length) { return []; } var value = arguments[0]; return isArray(value) ? value : [value]; } function stackClear() { this.__data__ = new ListCache(); this.size = 0; } function stackDelete(key) { var data = this.__data__, result2 = data["delete"](key); this.size = data.size; return result2; } function stackGet(key) { return this.__data__.get(key); } function stackHas(key) { return this.__data__.has(key); } var LARGE_ARRAY_SIZE = 200; function stackSet(key, value) { var data = this.__data__; if (data instanceof ListCache) { var pairs2 = data.__data__; if (!Map$1 || pairs2.length < LARGE_ARRAY_SIZE - 1) { pairs2.push([key, value]); this.size = ++data.size; return this; } data = this.__data__ = new MapCache(pairs2); } data.set(key, value); this.size = data.size; return this; } function Stack(entries) { var data = this.__data__ = new ListCache(entries); this.size = data.size; } Stack.prototype.clear = stackClear; Stack.prototype["delete"] = stackDelete; Stack.prototype.get = stackGet; Stack.prototype.has = stackHas; Stack.prototype.set = stackSet; var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports; var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module; var moduleExports = freeModule && freeModule.exports === freeExports; var Buffer2 = moduleExports ? root.Buffer : void 0; Buffer2 ? Buffer2.allocUnsafe : void 0; function cloneBuffer(buffer, isDeep) { { return buffer.slice(); } } function arrayFilter(array, predicate) { var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result2 = []; while (++index < length) { var value = array[index]; if (predicate(value, index, array)) { result2[resIndex++] = value; } } return result2; } function stubArray() { return []; } var objectProto$3 = Object.prototype; var propertyIsEnumerable = objectProto$3.propertyIsEnumerable; var nativeGetSymbols$1 = Object.getOwnPropertySymbols; var getSymbols = !nativeGetSymbols$1 ? stubArray : function(object2) { if (object2 == null) { return []; } object2 = Object(object2); return arrayFilter(nativeGetSymbols$1(object2), function(symbol) { return propertyIsEnumerable.call(object2, symbol); }); }; function baseGetAllKeys(object2, keysFunc, symbolsFunc) { var result2 = keysFunc(object2); return isArray(object2) ? result2 : arrayPush(result2, symbolsFunc(object2)); } function getAllKeys(object2) { return baseGetAllKeys(object2, keys, getSymbols); } var DataView$1 = getNative(root, "DataView"); var Promise$1 = getNative(root, "Promise"); var Set$1 = getNative(root, "Set"); 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]"; var dataViewCtorString = toSource(DataView$1), mapCtorString = toSource(Map$1), promiseCtorString = toSource(Promise$1), setCtorString = toSource(Set$1), weakMapCtorString = toSource(WeakMap); var getTag = baseGetTag; if (DataView$1 && getTag(new DataView$1(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 && getTag(new WeakMap()) != weakMapTag$1) { getTag = function(value) { var result2 = baseGetTag(value), Ctor = result2 == 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 result2; }; } var objectProto$2 = Object.prototype; var hasOwnProperty$2 = objectProto$2.hasOwnProperty; function initCloneArray(array) { var length = array.length, result2 = new array.constructor(length); if (length && typeof array[0] == "string" && hasOwnProperty$2.call(array, "index")) { result2.index = array.index; result2.input = array.input; } return result2; } var Uint8Array$1 = root.Uint8Array; function cloneArrayBuffer(arrayBuffer) { var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength); new Uint8Array$1(result2).set(new Uint8Array$1(arrayBuffer)); return result2; } function cloneDataView(dataView, isDeep) { var buffer = cloneArrayBuffer(dataView.buffer) ; return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); } var reFlags = /\w*$/; function cloneRegExp(regexp) { var result2 = new regexp.constructor(regexp.source, reFlags.exec(regexp)); result2.lastIndex = regexp.lastIndex; return result2; } var symbolProto$1 = Symbol$1 ? Symbol$1.prototype : void 0, symbolValueOf$1 = symbolProto$1 ? symbolProto$1.valueOf : void 0; function cloneSymbol(symbol) { return symbolValueOf$1 ? Object(symbolValueOf$1.call(symbol)) : {}; } function cloneTypedArray(typedArray, isDeep) { var buffer = cloneArrayBuffer(typedArray.buffer) ; return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); } 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]"; function initCloneByTag(object2, tag, isDeep) { var Ctor = object2.constructor; switch (tag) { case arrayBufferTag$2: return cloneArrayBuffer(object2); case boolTag$2: case dateTag$2: return new Ctor(+object2); case dataViewTag$2: return cloneDataView(object2); 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(object2); case mapTag$3: return new Ctor(); case numberTag$2: case stringTag$2: return new Ctor(object2); case regexpTag$2: return cloneRegExp(object2); case setTag$3: return new Ctor(); case symbolTag$2: return cloneSymbol(object2); } } function initCloneObject(object2) { return typeof object2.constructor == "function" && !isPrototype(object2) ? baseCreate(getPrototype(object2)) : {}; } var mapTag$2 = "[object Map]"; function baseIsMap(value) { return isObjectLike(value) && getTag(value) == mapTag$2; } var nodeIsMap = nodeUtil && nodeUtil.isMap; var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; var setTag$2 = "[object Set]"; function baseIsSet(value) { return isObjectLike(value) && getTag(value) == setTag$2; } var nodeIsSet = nodeUtil && nodeUtil.isSet; var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; 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]"; 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; function baseClone(value, bitmask, customizer, key, object2, stack) { var result2; if (result2 !== void 0) { return result2; } if (!isObject(value)) { return value; } var isArr = isArray(value); if (isArr) { result2 = initCloneArray(value); } else { var tag = getTag(value), isFunc = tag == funcTag || tag == genTag; if (isBuffer(value)) { return cloneBuffer(value); } if (tag == objectTag$1 || tag == argsTag$1 || isFunc && !object2) { result2 = isFunc ? {} : initCloneObject(value); } else { if (!cloneableTags[tag]) { return object2 ? value : {}; } result2 = initCloneByTag(value, tag); } } stack || (stack = new Stack()); var stacked = stack.get(value); if (stacked) { return stacked; } stack.set(value, result2); if (isSet(value)) { value.forEach(function(subValue) { result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); }); } else if (isMap(value)) { value.forEach(function(subValue, key2) { result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); }); } var keysFunc = getAllKeys ; var props = isArr ? void 0 : keysFunc(value); arrayEach(props || value, function(subValue, key2) { if (props) { key2 = subValue; subValue = value[key2]; } assignValue(result2, key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); }); return result2; } var CLONE_DEEP_FLAG = 1, CLONE_SYMBOLS_FLAG = 4; function cloneDeep(value) { return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); } var HASH_UNDEFINED = "__lodash_hash_undefined__"; function setCacheAdd(value) { this.__data__.set(value, HASH_UNDEFINED); return this; } function setCacheHas(value) { return this.__data__.has(value); } function SetCache(values2) { var index = -1, length = values2 == null ? 0 : values2.length; this.__data__ = new MapCache(); while (++index < length) { this.add(values2[index]); } } SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; SetCache.prototype.has = setCacheHas; 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; } function cacheHas(cache, key) { return cache.has(key); } var COMPARE_PARTIAL_FLAG$5 = 1, COMPARE_UNORDERED_FLAG$3 = 2; 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, result2 = 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; } result2 = false; break; } if (seen) { if (!arraySome(other, function(othValue2, othIndex) { if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) { return seen.push(othIndex); } })) { result2 = false; break; } } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { result2 = false; break; } } stack["delete"](array); stack["delete"](other); return result2; } function mapToArray(map2) { var index = -1, result2 = Array(map2.size); map2.forEach(function(value, key) { result2[++index] = [key, value]; }); return result2; } function setToArray(set2) { var index = -1, result2 = Array(set2.size); set2.forEach(function(value) { result2[++index] = value; }); return result2; } var COMPARE_PARTIAL_FLAG$4 = 1, COMPARE_UNORDERED_FLAG$2 = 2; 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]"; var symbolProto = Symbol$1 ? Symbol$1.prototype : void 0, symbolValueOf = symbolProto ? symbolProto.valueOf : void 0; function equalByTag(object2, other, tag, bitmask, customizer, equalFunc, stack) { switch (tag) { case dataViewTag: if (object2.byteLength != other.byteLength || object2.byteOffset != other.byteOffset) { return false; } object2 = object2.buffer; other = other.buffer; case arrayBufferTag: if (object2.byteLength != other.byteLength || !equalFunc(new Uint8Array$1(object2), new Uint8Array$1(other))) { return false; } return true; case boolTag: case dateTag: case numberTag: return eq(+object2, +other); case errorTag: return object2.name == other.name && object2.message == other.message; case regexpTag: case stringTag: return object2 == other + ""; case mapTag: var convert = mapToArray; case setTag: var isPartial = bitmask & COMPARE_PARTIAL_FLAG$4; convert || (convert = setToArray); if (object2.size != other.size && !isPartial) { return false; } var stacked = stack.get(object2); if (stacked) { return stacked == other; } bitmask |= COMPARE_UNORDERED_FLAG$2; stack.set(object2, other); var result2 = equalArrays(convert(object2), convert(other), bitmask, customizer, equalFunc, stack); stack["delete"](object2); return result2; case symbolTag: if (symbolValueOf) { return symbolValueOf.call(object2) == symbolValueOf.call(other); } } return false; } var COMPARE_PARTIAL_FLAG$3 = 1; var objectProto$1 = Object.prototype; var hasOwnProperty$1 = objectProto$1.hasOwnProperty; function equalObjects(object2, other, bitmask, customizer, equalFunc, stack) { var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3, objProps = getAllKeys(object2), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length; if (objLength != othLength && !isPartial) { return false; } var index = objLength; while (index--) { var key = objProps[index]; if (!(isPartial ? key in other : hasOwnProperty$1.call(other, key))) { return false; } } var objStacked = stack.get(object2); var othStacked = stack.get(other); if (objStacked && othStacked) { return objStacked == other && othStacked == object2; } var result2 = true; stack.set(object2, other); stack.set(other, object2); var skipCtor = isPartial; while (++index < objLength) { key = objProps[index]; var objValue = object2[key], othValue = other[key]; if (customizer) { var compared = isPartial ? customizer(othValue, objValue, key, other, object2, stack) : customizer(objValue, othValue, key, object2, other, stack); } if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) { result2 = false; break; } skipCtor || (skipCtor = key == "constructor"); } if (result2 && !skipCtor) { var objCtor = object2.constructor, othCtor = other.constructor; if (objCtor != othCtor && ("constructor" in object2 && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) { result2 = false; } } stack["delete"](object2); stack["delete"](other); return result2; } var COMPARE_PARTIAL_FLAG$2 = 1; var argsTag = "[object Arguments]", arrayTag = "[object Array]", objectTag = "[object Object]"; var objectProto = Object.prototype; var hasOwnProperty = objectProto.hasOwnProperty; function baseIsEqualDeep(object2, other, bitmask, customizer, equalFunc, stack) { var objIsArr = isArray(object2), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : getTag(object2), othTag = othIsArr ? arrayTag : getTag(other); objTag = objTag == argsTag ? objectTag : objTag; othTag = othTag == argsTag ? objectTag : othTag; var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag; if (isSameTag && isBuffer(object2)) { if (!isBuffer(other)) { return false; } objIsArr = true; objIsObj = false; } if (isSameTag && !objIsObj) { stack || (stack = new Stack()); return objIsArr || isTypedArray(object2) ? equalArrays(object2, other, bitmask, customizer, equalFunc, stack) : equalByTag(object2, other, objTag, bitmask, customizer, equalFunc, stack); } if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) { var objIsWrapped = objIsObj && hasOwnProperty.call(object2, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__"); if (objIsWrapped || othIsWrapped) { var objUnwrapped = objIsWrapped ? object2.value() : object2, 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(object2, other, bitmask, customizer, equalFunc, stack); } 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); } var COMPARE_PARTIAL_FLAG$1 = 1, COMPARE_UNORDERED_FLAG$1 = 2; function baseIsMatch(object2, source, matchData, customizer) { var index = matchData.length, length = index; if (object2 == null) { return !length; } object2 = Object(object2); while (index--) { var data = matchData[index]; if (data[2] ? data[1] !== object2[data[0]] : !(data[0] in object2)) { return false; } } while (++index < length) { data = matchData[index]; var key = data[0], objValue = object2[key], srcValue = data[1]; if (data[2]) { if (objValue === void 0 && !(key in object2)) { return false; } } else { var stack = new Stack(); var result2; if (!(result2 === void 0 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$1 | COMPARE_UNORDERED_FLAG$1, customizer, stack) : result2)) { return false; } } } return true; } function isStrictComparable(value) { return value === value && !isObject(value); } function getMatchData(object2) { var result2 = keys(object2), length = result2.length; while (length--) { var key = result2[length], value = object2[key]; result2[length] = [key, value, isStrictComparable(value)]; } return result2; } function matchesStrictComparable(key, srcValue) { return function(object2) { if (object2 == null) { return false; } return object2[key] === srcValue && (srcValue !== void 0 || key in Object(object2)); }; } function baseMatches(source) { var matchData = getMatchData(source); if (matchData.length == 1 && matchData[0][2]) { return matchesStrictComparable(matchData[0][0], matchData[0][1]); } return function(object2) { return object2 === source || baseIsMatch(object2, source, matchData); }; } function baseHasIn(object2, key) { return object2 != null && key in Object(object2); } function hasPath(object2, path, hasFunc) { path = castPath(path, object2); var index = -1, length = path.length, result2 = false; while (++index < length) { var key = toKey(path[index]); if (!(result2 = object2 != null && hasFunc(object2, key))) { break; } object2 = object2[key]; } if (result2 || ++index != length) { return result2; } length = object2 == null ? 0 : object2.length; return !!length && isLength(length) && isIndex(key, length) && (isArray(object2) || isArguments(object2)); } function hasIn(object2, path) { return object2 != null && hasPath(object2, path, baseHasIn); } var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2; function baseMatchesProperty(path, srcValue) { if (isKey(path) && isStrictComparable(srcValue)) { return matchesStrictComparable(toKey(path), srcValue); } return function(object2) { var objValue = get(object2, path); return objValue === void 0 && objValue === srcValue ? hasIn(object2, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); }; } function baseProperty(key) { return function(object2) { return object2 == null ? void 0 : object2[key]; }; } function basePropertyDeep(path) { return function(object2) { return baseGet(object2, path); }; } function property(path) { return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); } 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); } var now = function() { return root.Date.now(); }; var FUNC_ERROR_TEXT$1 = "Expected a function"; var nativeMax = Math.max, nativeMin = Math.min; function debounce(func, wait, options) { var lastArgs, lastThis, maxWait, result2, 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(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; result2 = func.apply(thisArg, args); return result2; } function leadingEdge(time) { lastInvokeTime = time; timerId = setTimeout(timerExpired, wait); return leading ? invokeFunc(time) : result2; } function remainingWait(time) { var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall; return maxing ? nativeMin(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 result2; } function cancel() { if (timerId !== void 0) { clearTimeout(timerId); } lastInvokeTime = 0; lastArgs = lastCallTime = lastThis = timerId = void 0; } function flush() { return timerId === void 0 ? result2 : 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 result2; } debounced.cancel = cancel; debounced.flush = flush; return debounced; } function findLastIndex(array, predicate, fromIndex) { var length = array == null ? 0 : array.length; if (!length) { return -1; } var index = length - 1; return baseFindIndex(array, baseIteratee(predicate), index); } function fromPairs(pairs2) { var index = -1, length = pairs2 == null ? 0 : pairs2.length, result2 = {}; while (++index < length) { var pair = pairs2[index]; result2[pair[0]] = pair[1]; } return result2; } function isEqual(value, other) { return baseIsEqual(value, other); } function isNil(value) { return value == null; } function isUndefined$1(value) { return value === void 0; } function baseSet(object2, path, value, customizer) { if (!isObject(object2)) { return object2; } path = castPath(path, object2); var index = -1, length = path.length, lastIndex = length - 1, nested = object2; while (nested != null && ++index < length) { var key = toKey(path[index]), newValue = value; if (key === "__proto__" || key === "constructor" || key === "prototype") { return object2; } if (index != lastIndex) { var objValue = nested[key]; newValue = void 0; if (newValue === void 0) { newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {}; } } assignValue(nested, key, newValue); nested = nested[key]; } return object2; } function basePickBy(object2, paths, predicate) { var index = -1, length = paths.length, result2 = {}; while (++index < length) { var path = paths[index], value = baseGet(object2, path); if (predicate(value, path)) { baseSet(result2, castPath(path, object2), value); } } return result2; } function basePick(object2, paths) { return basePickBy(object2, paths, function(value, path) { return hasIn(object2, path); }); } var pick = flatRest(function(object2, paths) { return object2 == null ? {} : basePick(object2, paths); }); var FUNC_ERROR_TEXT = "Expected a function"; 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 }); } const isUndefined = (val) => val === void 0; const isBoolean = (val) => typeof val === "boolean"; const isNumber = (val) => typeof val === "number"; const isElement = (e) => { if (typeof Element === "undefined") return false; return e instanceof Element; }; const isPropAbsent = (prop) => { return isNil(prop); }; const isStringNumber = (val) => { if (!isString(val)) { return false; } return !Number.isNaN(Number(val)); }; const escapeStringRegexp = (string = "") => string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d"); const capitalize = (str) => capitalize$1(str); const keysOf = (arr) => Object.keys(arr); const entriesOf = (arr) => Object.entries(arr); class ElementPlusError extends Error { constructor(m) { super(m); this.name = "ElementPlusError"; } } function throwError(scope, m) { throw new ElementPlusError(`[${scope}] ${m}`); } function debugWarn(scope, message) { { const error = isString(scope) ? new ElementPlusError(`[${scope}] ${message}`) : scope; console.warn(error); } } const SCOPE$3 = "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) => { var _a2; if (!isClient || !element || !styleName) return ""; let key = camelize(styleName); if (key === "float") key = "cssFloat"; try { const style = element.style[key]; if (style) return style; const computed2 = (_a2 = document.defaultView) == null ? void 0 : _a2.getComputedStyle(element, ""); return computed2 ? computed2[key] : ""; } catch (e) { return element.style[key]; } }; function addUnit(value, defaultUnit = "px") { if (!value) return ""; if (isNumber(value) || isStringNumber(value)) { return `${value}${defaultUnit}`; } else if (isString(value)) { return value; } debugWarn(SCOPE$3, "binding value must be a string or number"); } 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; parent = parent.parentNode; } return parent; }; let scrollBarWidth; const getScrollBarWidth = (namespace) => { var _a2; 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; (_a2 = outer.parentNode) == null ? void 0 : _a2.removeChild(outer); scrollBarWidth = widthNoScroll - widthWithScroll; return scrollBarWidth; }; 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; } } /*! Element Plus Icons Vue v2.3.1 */ var arrow_down_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "ArrowDown", __name: "arrow-down", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ vue.createElementVNode("path", { fill: "currentColor", d: "M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 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.592 30.592 0 0 0-42.752 0z" }) ])); } }); var arrow_down_default = arrow_down_vue_vue_type_script_setup_true_lang_default; var arrow_left_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "ArrowLeft", __name: "arrow-left", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z" }) ])); } }); var arrow_left_default = arrow_left_vue_vue_type_script_setup_true_lang_default; var arrow_right_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "ArrowRight", __name: "arrow-right", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ vue.createElementVNode("path", { fill: "currentColor", d: "M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 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_right_default = arrow_right_vue_vue_type_script_setup_true_lang_default; var arrow_up_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "ArrowUp", __name: "arrow-up", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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 arrow_up_default = arrow_up_vue_vue_type_script_setup_true_lang_default; var check_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "Check", __name: "check", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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 check_default = check_vue_vue_type_script_setup_true_lang_default; var circle_check_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "CircleCheck", __name: "circle-check", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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" }), 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.752l265.344-265.408z" }) ])); } }); var circle_check_default = circle_check_vue_vue_type_script_setup_true_lang_default; var circle_close_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "CircleCloseFilled", __name: "circle-close-filled", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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_filled_default = circle_close_filled_vue_vue_type_script_setup_true_lang_default; var circle_close_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "CircleClose", __name: "circle-close", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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" }), 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 circle_close_default = circle_close_vue_vue_type_script_setup_true_lang_default; var close_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "Close", __name: "close", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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 close_default = close_vue_vue_type_script_setup_true_lang_default; var delete_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "Delete", __name: "delete", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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 delete_default = delete_vue_vue_type_script_setup_true_lang_default; var document_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "Document", __name: "document", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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 document_default = document_vue_vue_type_script_setup_true_lang_default; var full_screen_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "FullScreen", __name: "full-screen", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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-64l192-.192zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z" }) ])); } }); var full_screen_default = full_screen_vue_vue_type_script_setup_true_lang_default; var hide_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "Hide", __name: "hide", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ vue.createElementVNode("path", { fill: "currentColor", d: "M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-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 176C44.8 438.4 0 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.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 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.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.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.6-28.8 48-80 105.6-153.6 172.8-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-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z" }), 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 112-32 28.8-67.2 48-112 48Z" }) ])); } }); var hide_default = hide_vue_vue_type_script_setup_true_lang_default; var info_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "InfoFilled", __name: "info-filled", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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.992 12.992 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 info_filled_default = info_filled_vue_vue_type_script_setup_true_lang_default; var loading_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "Loading", __name: "loading", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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.248zm452.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.248zM828.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 0z" }) ])); } }); var loading_default = loading_vue_vue_type_script_setup_true_lang_default; var minus_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "Minus", __name: "minus", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ vue.createElementVNode("path", { fill: "currentColor", d: "M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64" }) ])); } }); var minus_default = minus_vue_vue_type_script_setup_true_lang_default; var plus_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "Plus", __name: "plus", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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 plus_default = plus_vue_vue_type_script_setup_true_lang_default; var refresh_left_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "RefreshLeft", __name: "refresh-left", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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_left_default = refresh_left_vue_vue_type_script_setup_true_lang_default; var refresh_right_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "RefreshRight", __name: "refresh-right", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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.88z" }) ])); } }); var refresh_right_default = refresh_right_vue_vue_type_script_setup_true_lang_default; var scale_to_original_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "ScaleToOriginal", __name: "scale-to-original", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zm-361.412 0a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118M512 361.412a30.118 30.118 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.118 30.118 0 0 0 512 361.412M512 512a30.118 30.118 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.118 30.118 0 0 0 512 512" }) ])); } }); var scale_to_original_default = scale_to_original_vue_vue_type_script_setup_true_lang_default; var success_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "SuccessFilled", __name: "success-filled", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z" }) ])); } }); var success_filled_default = success_filled_vue_vue_type_script_setup_true_lang_default; var view_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "View", __name: "view", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160" }) ])); } }); var view_default = view_vue_vue_type_script_setup_true_lang_default; var warning_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "WarningFilled", __name: "warning-filled", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ vue.createElementVNode("path", { fill: "currentColor", d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 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 warning_filled_default = warning_filled_vue_vue_type_script_setup_true_lang_default; var zoom_in_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "ZoomIn", __name: "zoom-in", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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_in_default = zoom_in_vue_vue_type_script_setup_true_lang_default; var zoom_out_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({ name: "ZoomOut", __name: "zoom-out", setup(__props) { return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }, [ 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" }) ])); } }); var zoom_out_default = zoom_out_vue_vue_type_script_setup_true_lang_default; const epPropKey = "__epPropKey"; const definePropType = (val) => val; const isEpProp = (val) => isObject$1(val) && !!val[epPropKey]; const buildProp = (prop, key) => { if (!isObject$1(prop) || isEpProp(prop)) return prop; const { values: values2, required, default: defaultValue, type, validator } = prop; const _validator = values2 || validator ? (val) => { let valid = false; let allowedValues = []; if (values2) { allowedValues = Array.from(values2); if (hasOwn(prop, "default")) { allowedValues.push(defaultValue); } valid || (valid = allowedValues.includes(val)); } if (validator) valid || (valid = validator(val)); if (!valid && allowedValues.length > 0) { const allowValuesText = [...new Set(allowedValues)].map((value) => JSON.stringify(value)).join(", "); vue.warn(`Invalid prop: validation failed${key ? ` for prop "${key}"` : ""}. Expected one of [${allowValuesText}], got value ${JSON.stringify(val)}.`); } return valid; } : void 0; const epProp = { type, required: !!required, validator: _validator, [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) ])); 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 = { 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 }; const withInstall = (main, extra) => { main.install = (app2) => { for (const comp of [main, ...Object.values(extra != null ? extra : {})]) { app2.component(comp.name, comp); } }; if (extra) { for (const [key, comp] of Object.entries(extra)) { main[key] = comp; } } return main; }; const withInstallFunction = (fn2, name) => { fn2.install = (app2) => { fn2._context = app2._context; app2.config.globalProperties[name] = fn2; }; return fn2; }; const withNoopInstall = (component) => { component.install = NOOP; return component; }; const composeRefs = (...refs) => { return (el) => { refs.forEach((ref2) => { if (isFunction$1(ref2)) { ref2(el); } else { ref2.value = el; } }); }; }; 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" }; const UPDATE_MODEL_EVENT = "update:modelValue"; const CHANGE_EVENT = "change"; const INPUT_EVENT = "input"; const componentSizes = ["", "default", "small", "large"]; const isValidComponentSize = (val) => ["", ...componentSizes].includes(val); var PatchFlags = /* @__PURE__ */ ((PatchFlags2) => { PatchFlags2[PatchFlags2["TEXT"] = 1] = "TEXT"; PatchFlags2[PatchFlags2["CLASS"] = 2] = "CLASS"; PatchFlags2[PatchFlags2["STYLE"] = 4] = "STYLE"; PatchFlags2[PatchFlags2["PROPS"] = 8] = "PROPS"; PatchFlags2[PatchFlags2["FULL_PROPS"] = 16] = "FULL_PROPS"; PatchFlags2[PatchFlags2["HYDRATE_EVENTS"] = 32] = "HYDRATE_EVENTS"; PatchFlags2[PatchFlags2["STABLE_FRAGMENT"] = 64] = "STABLE_FRAGMENT"; PatchFlags2[PatchFlags2["KEYED_FRAGMENT"] = 128] = "KEYED_FRAGMENT"; PatchFlags2[PatchFlags2["UNKEYED_FRAGMENT"] = 256] = "UNKEYED_FRAGMENT"; PatchFlags2[PatchFlags2["NEED_PATCH"] = 512] = "NEED_PATCH"; PatchFlags2[PatchFlags2["DYNAMIC_SLOTS"] = 1024] = "DYNAMIC_SLOTS"; PatchFlags2[PatchFlags2["HOISTED"] = -1] = "HOISTED"; PatchFlags2[PatchFlags2["BAIL"] = -2] = "BAIL"; return PatchFlags2; })(PatchFlags || {}); const flattedChildren = (children) => { const vNodes = isArray$1(children) ? children : [children]; const result2 = []; vNodes.forEach((child) => { var _a2; if (isArray$1(child)) { result2.push(...flattedChildren(child)); } else if (vue.isVNode(child) && isArray$1(child.children)) { result2.push(...flattedChildren(child.children)); } else { result2.push(child); if (vue.isVNode(child) && ((_a2 = child.component) == null ? void 0 : _a2.subTree)) { result2.push(...flattedChildren(child.component.subTree)); } } }); return result2; }; const isKorean = (text) => /([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(text); const mutable = (val) => val; const DEFAULT_EXCLUDE_KEYS = ["class", "style"]; const LISTENER_PREFIX = /^on[A-Z]/; const useAttrs = (params = {}) => { const { excludeListeners = false, excludeKeys } = params; const allExcludeKeys = vue.computed(() => { return ((excludeKeys == null ? void 0 : excludeKeys.value) || []).concat(DEFAULT_EXCLUDE_KEYS); }); const instance = vue.getCurrentInstance(); if (!instance) { debugWarn("use-attrs", "getCurrentInstance() returned null. useAttrs() must be called at the top of a setup function"); return vue.computed(() => ({})); } return vue.computed(() => { var _a2; return fromPairs(Object.entries((_a2 = instance.proxy) == null ? void 0 : _a2.$attrs).filter(([key]) => !allExcludeKeys.value.includes(key) && !(excludeListeners && LISTENER_PREFIX.test(key)))); }); }; const useDeprecated = ({ from, replacement, scope, version, ref: ref2, type = "API" }, condition) => { vue.watch(() => vue.unref(condition), (val) => { if (val) { debugWarn(scope, `[${type}] ${from} is about to be deprecated in version ${version}, please use ${replacement} instead. For more detail, please visit: ${ref2} `); } }, { immediate: true }); }; const useDraggable = (targetRef, dragRef, draggable2, overflow) => { let transform = { offsetX: 0, offsetY: 0 }; const onMousedown = (e) => { const downX = e.clientX; const downY = e.clientY; 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 + offsetY; const onMousemove = (e2) => { let moveX = offsetX + e2.clientX - downX; let moveY = offsetY + e2.clientY - downY; if (!(overflow == null ? void 0 : overflow.value)) { moveX = Math.min(Math.max(moveX, minLeft), maxLeft); moveY = Math.min(Math.max(moveY, minTop), maxTop); } transform = { offsetX: moveX, offsetY: moveY }; if (targetRef.value) { targetRef.value.style.transform = `translate(${addUnit(moveX)}, ${addUnit(moveY)})`; } }; const onMouseup = () => { 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); } }; const offDraggable = () => { if (dragRef.value && targetRef.value) { dragRef.value.removeEventListener("mousedown", onMousedown); } }; const resetPosition = () => { transform = { offsetX: 0, offsetY: 0 }; if (targetRef.value) { targetRef.value.style.transform = "none"; } }; vue.onMounted(() => { vue.watchEffect(() => { if (draggable2.value) { onDraggable(); } else { offDraggable(); } }); }); vue.onBeforeUnmount(() => { offDraggable(); }); return { resetPosition }; }; var English = { 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" }, 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", week: "week", 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" }, tour: { next: "Next", previous: "Previous", finish: "Finish" }, 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}" } } }; const buildTranslator = (locale) => (path, option) => translate(path, option, vue.unref(locale)); const translate = (path, option, locale) => get(locale, path, path).replace(/\{(\w+)\}/g, (_2, key) => { var _a2; return `${(_a2 = option == null ? void 0 : option[key]) != null ? _a2 : `{${key}}`}`; }); const buildLocaleContext = (locale) => { const lang = vue.computed(() => vue.unref(locale).name); const localeRef = vue.isRef(locale) ? locale : vue.ref(locale); return { lang, locale: localeRef, t: buildTranslator(locale) }; }; const localeContextKey = Symbol("localeContextKey"); const useLocale = (localeOverrides) => { const locale = localeOverrides || vue.inject(localeContextKey, vue.ref()); return buildLocaleContext(vue.computed(() => locale.value || English)); }; 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 || (vue.getCurrentInstance() ? vue.inject(namespaceContextKey, vue.ref(defaultNamespace)) : vue.ref(defaultNamespace)); const namespace = vue.computed(() => { return vue.unref(derivedNamespace) || defaultNamespace; }); return namespace; }; 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 be2 = (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 = (object2) => { const styles = {}; for (const key in object2) { if (object2[key]) { styles[`--${namespace.value}-${key}`] = object2[key]; } } return styles; }; const cssVarBlock = (object2) => { const styles = {}; for (const key in object2) { if (object2[key]) { styles[`--${namespace.value}-${block}-${key}`] = object2[key]; } } return styles; }; const cssVarName = (name) => `--${namespace.value}-${name}`; const cssVarBlockName = (name) => `--${namespace.value}-${block}-${name}`; return { namespace, b, e, m, be: be2, em, bm, bem, is, cssVar, cssVarName, cssVarBlock, cssVarBlockName }; }; const useLockscreen = (trigger, options = {}) => { if (!vue.isRef(trigger)) { throwError("[useLockscreen]", "You need to pass a ref param to this function"); } const ns = options.ns || useNamespace("popup"); const hiddenCls = vue.computed(() => ns.bm("parent", "hidden")); if (!isClient || hasClass(document.body, hiddenCls.value)) { return; } let scrollBarWidth2 = 0; let withoutHiddenClass = false; let bodyWidth = "0"; const cleanup = () => { setTimeout(() => { if (typeof document === "undefined") return; removeClass(document == null ? void 0 : document.body, hiddenCls.value); if (withoutHiddenClass && document) { document.body.style.width = bodyWidth; } }, 200); }; vue.watch(trigger, (val) => { if (!val) { cleanup(); return; } withoutHiddenClass = !hasClass(document.body, hiddenCls.value); if (withoutHiddenClass) { bodyWidth = document.body.style.width; } scrollBarWidth2 = getScrollBarWidth(ns.namespace.value); const bodyHasOverflow = document.documentElement.clientHeight < document.body.scrollHeight; const bodyOverflowY = getStyle(document.body, "overflowY"); if (scrollBarWidth2 > 0 && (bodyHasOverflow || bodyOverflowY === "scroll") && withoutHiddenClass) { document.body.style.width = `calc(100% - ${scrollBarWidth2}px)`; } addClass(document.body, hiddenCls.value); }); vue.onScopeDispose(() => cleanup()); }; 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 useModelToggleEmits2 = [updateEventKey]; const useModelToggleProps2 = { [name]: _prop, [updateEventKeyRaw]: _event }; const useModelToggle2 = ({ indicator, toggleReason, shouldHideWhenRouteChanges, shouldProceed, onShow, onHide }) => { const instance = vue.getCurrentInstance(); const { emit } = instance; const props = instance.props; const hasUpdateHandler = vue.computed(() => isFunction$1(props[updateEventKeyRaw])); const isModelBindingAbsent = 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(); } }; vue.watch(() => props[name], onChange); if (shouldHideWhenRouteChanges && instance.appContext.config.globalProperties.$route !== void 0) { vue.watch(() => ({ ...instance.proxy.$route }), () => { if (shouldHideWhenRouteChanges.value && indicator.value) { hide(); } }); } vue.onMounted(() => { onChange(props[name]); }); return { hide, show, toggle, hasUpdateHandler }; }; return { useModelToggle: useModelToggle2, useModelToggleProps: useModelToggleProps2, useModelToggleEmits: useModelToggleEmits2 }; }; const useProp = (name) => { const vm = vue.getCurrentInstance(); return vue.computed(() => { var _a2, _b; return (_b = (_a2 = vm == null ? void 0 : vm.proxy) == null ? void 0 : _a2.$props) == null ? void 0 : _b[name]; }); }; var E = "top", R = "bottom", W = "right", P = "left", me = "auto", G = [E, R, W, P], U = "start", J = "end", Xe = "clippingParents", je = "viewport", K = "popper", Ye = "reference", De = G.reduce(function(t, e) { return t.concat([e + "-" + U, e + "-" + J]); }, []), Ee = [].concat(G, [me]).reduce(function(t, e) { return t.concat([e, e + "-" + U, e + "-" + J]); }, []), Ge = "beforeRead", Je = "read", Ke = "afterRead", Qe = "beforeMain", Ze = "main", et = "afterMain", tt = "beforeWrite", nt = "write", rt = "afterWrite", ot = [Ge, Je, Ke, Qe, Ze, et, tt, nt, rt]; function C(t) { return t ? (t.nodeName || "").toLowerCase() : null; } function H(t) { if (t == null) return window; if (t.toString() !== "[object Window]") { var e = t.ownerDocument; return e && e.defaultView || window; } return t; } function Q(t) { var e = H(t).Element; return t instanceof e || t instanceof Element; } function B(t) { var e = H(t).HTMLElement; return t instanceof e || t instanceof HTMLElement; } function Pe(t) { if (typeof ShadowRoot == "undefined") return false; var e = H(t).ShadowRoot; return t instanceof e || t instanceof ShadowRoot; } function Mt(t) { var e = t.state; Object.keys(e.elements).forEach(function(n) { var r = e.styles[n] || {}, o = e.attributes[n] || {}, i = e.elements[n]; !B(i) || !C(i) || (Object.assign(i.style, r), Object.keys(o).forEach(function(a) { var s = o[a]; s === false ? i.removeAttribute(a) : i.setAttribute(a, s === true ? "" : s); })); }); } function Rt(t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow), function() { Object.keys(e.elements).forEach(function(r) { var o = e.elements[r], i = e.attributes[r] || {}, a = Object.keys(e.styles.hasOwnProperty(r) ? e.styles[r] : n[r]), s = a.reduce(function(f, c) { return f[c] = "", f; }, {}); !B(o) || !C(o) || (Object.assign(o.style, s), Object.keys(i).forEach(function(f) { o.removeAttribute(f); })); }); }; } var Ae = { name: "applyStyles", enabled: true, phase: "write", fn: Mt, effect: Rt, requires: ["computeStyles"] }; function q(t) { return t.split("-")[0]; } var X = Math.max, ve = Math.min, Z = Math.round; function ee(t, e) { e === void 0 && (e = false); var n = t.getBoundingClientRect(), r = 1, o = 1; if (B(t) && e) { var i = t.offsetHeight, a = t.offsetWidth; a > 0 && (r = Z(n.width) / a || 1), i > 0 && (o = Z(n.height) / i || 1); } return { width: n.width / r, height: n.height / o, top: n.top / o, right: n.right / r, bottom: n.bottom / o, left: n.left / r, x: n.left / r, y: n.top / o }; } function ke(t) { var e = ee(t), n = t.offsetWidth, r = t.offsetHeight; return Math.abs(e.width - n) <= 1 && (n = e.width), Math.abs(e.height - r) <= 1 && (r = e.height), { x: t.offsetLeft, y: t.offsetTop, width: n, height: r }; } function it(t, e) { var n = e.getRootNode && e.getRootNode(); if (t.contains(e)) return true; if (n && Pe(n)) { var r = e; do { if (r && t.isSameNode(r)) return true; r = r.parentNode || r.host; } while (r); } return false; } function N(t) { return H(t).getComputedStyle(t); } function Wt(t) { return ["table", "td", "th"].indexOf(C(t)) >= 0; } function I(t) { return ((Q(t) ? t.ownerDocument : t.document) || window.document).documentElement; } function ge(t) { return C(t) === "html" ? t : t.assignedSlot || t.parentNode || (Pe(t) ? t.host : null) || I(t); } function at(t) { return !B(t) || N(t).position === "fixed" ? null : t.offsetParent; } function Bt(t) { var e = navigator.userAgent.toLowerCase().indexOf("firefox") !== -1, n = navigator.userAgent.indexOf("Trident") !== -1; if (n && B(t)) { var r = N(t); if (r.position === "fixed") return null; } var o = ge(t); for (Pe(o) && (o = o.host); B(o) && ["html", "body"].indexOf(C(o)) < 0; ) { var i = N(o); if (i.transform !== "none" || i.perspective !== "none" || i.contain === "paint" || ["transform", "perspective"].indexOf(i.willChange) !== -1 || e && i.willChange === "filter" || e && i.filter && i.filter !== "none") return o; o = o.parentNode; } return null; } function se(t) { for (var e = H(t), n = at(t); n && Wt(n) && N(n).position === "static"; ) n = at(n); return n && (C(n) === "html" || C(n) === "body" && N(n).position === "static") ? e : n || Bt(t) || e; } function Le(t) { return ["top", "bottom"].indexOf(t) >= 0 ? "x" : "y"; } function fe(t, e, n) { return X(t, ve(e, n)); } function St(t, e, n) { var r = fe(t, e, n); return r > n ? n : r; } function st() { return { top: 0, right: 0, bottom: 0, left: 0 }; } function ft(t) { return Object.assign({}, st(), t); } function ct(t, e) { return e.reduce(function(n, r) { return n[r] = t, n; }, {}); } var Tt = function(t, e) { return t = typeof t == "function" ? t(Object.assign({}, e.rects, { placement: e.placement })) : t, ft(typeof t != "number" ? t : ct(t, G)); }; function Ht(t) { var e, n = t.state, r = t.name, o = t.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = q(n.placement), f = Le(s), c = [P, W].indexOf(s) >= 0, u = c ? "height" : "width"; if (!(!i || !a)) { var m = Tt(o.padding, n), v = ke(i), l = f === "y" ? E : P, h2 = f === "y" ? R : W, p = n.rects.reference[u] + n.rects.reference[f] - a[f] - n.rects.popper[u], g = a[f] - n.rects.reference[f], x = se(i), y = x ? f === "y" ? x.clientHeight || 0 : x.clientWidth || 0 : 0, $ = p / 2 - g / 2, d = m[l], b = y - v[u] - m[h2], w = y / 2 - v[u] / 2 + $, O = fe(d, w, b), j = f; n.modifiersData[r] = (e = {}, e[j] = O, e.centerOffset = O - w, e); } } function Ct(t) { var e = t.state, n = t.options, r = n.element, o = r === void 0 ? "[data-popper-arrow]" : r; o != null && (typeof o == "string" && (o = e.elements.popper.querySelector(o), !o) || !it(e.elements.popper, o) || (e.elements.arrow = o)); } var pt = { name: "arrow", enabled: true, phase: "main", fn: Ht, effect: Ct, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function te(t) { return t.split("-")[1]; } var qt = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function Vt(t) { var e = t.x, n = t.y, r = window, o = r.devicePixelRatio || 1; return { x: Z(e * o) / o || 0, y: Z(n * o) / o || 0 }; } function ut(t) { var e, n = t.popper, r = t.popperRect, o = t.placement, i = t.variation, a = t.offsets, s = t.position, f = t.gpuAcceleration, c = t.adaptive, u = t.roundOffsets, m = t.isFixed, v = a.x, l = v === void 0 ? 0 : v, h2 = a.y, p = h2 === void 0 ? 0 : h2, g = typeof u == "function" ? u({ x: l, y: p }) : { x: l, y: p }; l = g.x, p = g.y; var x = a.hasOwnProperty("x"), y = a.hasOwnProperty("y"), $ = P, d = E, b = window; if (c) { var w = se(n), O = "clientHeight", j = "clientWidth"; if (w === H(n) && (w = I(n), N(w).position !== "static" && s === "absolute" && (O = "scrollHeight", j = "scrollWidth")), w = w, o === E || (o === P || o === W) && i === J) { d = R; var A = m && w === b && b.visualViewport ? b.visualViewport.height : w[O]; p -= A - r.height, p *= f ? 1 : -1; } if (o === P || (o === E || o === R) && i === J) { $ = W; var k = m && w === b && b.visualViewport ? b.visualViewport.width : w[j]; l -= k - r.width, l *= f ? 1 : -1; } } var D = Object.assign({ position: s }, c && qt), S = u === true ? Vt({ x: l, y: p }) : { x: l, y: p }; if (l = S.x, p = S.y, f) { var L; return Object.assign({}, D, (L = {}, L[d] = y ? "0" : "", L[$] = x ? "0" : "", L.transform = (b.devicePixelRatio || 1) <= 1 ? "translate(" + l + "px, " + p + "px)" : "translate3d(" + l + "px, " + p + "px, 0)", L)); } return Object.assign({}, D, (e = {}, e[d] = y ? p + "px" : "", e[$] = x ? l + "px" : "", e.transform = "", e)); } function Nt(t) { var e = t.state, n = t.options, r = n.gpuAcceleration, o = r === void 0 ? true : r, i = n.adaptive, a = i === void 0 ? true : i, s = n.roundOffsets, f = s === void 0 ? true : s, c = { placement: q(e.placement), variation: te(e.placement), popper: e.elements.popper, popperRect: e.rects.popper, gpuAcceleration: o, isFixed: e.options.strategy === "fixed" }; e.modifiersData.popperOffsets != null && (e.styles.popper = Object.assign({}, e.styles.popper, ut(Object.assign({}, c, { offsets: e.modifiersData.popperOffsets, position: e.options.strategy, adaptive: a, roundOffsets: f })))), e.modifiersData.arrow != null && (e.styles.arrow = Object.assign({}, e.styles.arrow, ut(Object.assign({}, c, { offsets: e.modifiersData.arrow, position: "absolute", adaptive: false, roundOffsets: f })))), e.attributes.popper = Object.assign({}, e.attributes.popper, { "data-popper-placement": e.placement }); } var Me = { name: "computeStyles", enabled: true, phase: "beforeWrite", fn: Nt, data: {} }, ye = { passive: true }; function It(t) { var e = t.state, n = t.instance, r = t.options, o = r.scroll, i = o === void 0 ? true : o, a = r.resize, s = a === void 0 ? true : a, f = H(e.elements.popper), c = [].concat(e.scrollParents.reference, e.scrollParents.popper); return i && c.forEach(function(u) { u.addEventListener("scroll", n.update, ye); }), s && f.addEventListener("resize", n.update, ye), function() { i && c.forEach(function(u) { u.removeEventListener("scroll", n.update, ye); }), s && f.removeEventListener("resize", n.update, ye); }; } var Re = { name: "eventListeners", enabled: true, phase: "write", fn: function() { }, effect: It, data: {} }, _t = { left: "right", right: "left", bottom: "top", top: "bottom" }; function be(t) { return t.replace(/left|right|bottom|top/g, function(e) { return _t[e]; }); } var zt = { start: "end", end: "start" }; function lt(t) { return t.replace(/start|end/g, function(e) { return zt[e]; }); } function We(t) { var e = H(t), n = e.pageXOffset, r = e.pageYOffset; return { scrollLeft: n, scrollTop: r }; } function Be(t) { return ee(I(t)).left + We(t).scrollLeft; } function Ft(t) { var e = H(t), n = I(t), r = e.visualViewport, o = n.clientWidth, i = n.clientHeight, a = 0, s = 0; return r && (o = r.width, i = r.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (a = r.offsetLeft, s = r.offsetTop)), { width: o, height: i, x: a + Be(t), y: s }; } function Ut(t) { var e, n = I(t), r = We(t), o = (e = t.ownerDocument) == null ? void 0 : e.body, i = X(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), a = X(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), s = -r.scrollLeft + Be(t), f = -r.scrollTop; return N(o || n).direction === "rtl" && (s += X(n.clientWidth, o ? o.clientWidth : 0) - i), { width: i, height: a, x: s, y: f }; } function Se(t) { var e = N(t), n = e.overflow, r = e.overflowX, o = e.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r); } function dt(t) { return ["html", "body", "#document"].indexOf(C(t)) >= 0 ? t.ownerDocument.body : B(t) && Se(t) ? t : dt(ge(t)); } function ce(t, e) { var n; e === void 0 && (e = []); var r = dt(t), o = r === ((n = t.ownerDocument) == null ? void 0 : n.body), i = H(r), a = o ? [i].concat(i.visualViewport || [], Se(r) ? r : []) : r, s = e.concat(a); return o ? s : s.concat(ce(ge(a))); } function Te(t) { return Object.assign({}, t, { left: t.x, top: t.y, right: t.x + t.width, bottom: t.y + t.height }); } function Xt(t) { var e = ee(t); return e.top = e.top + t.clientTop, e.left = e.left + t.clientLeft, e.bottom = e.top + t.clientHeight, e.right = e.left + t.clientWidth, e.width = t.clientWidth, e.height = t.clientHeight, e.x = e.left, e.y = e.top, e; } function ht(t, e) { return e === je ? Te(Ft(t)) : Q(e) ? Xt(e) : Te(Ut(I(t))); } function Yt(t) { var e = ce(ge(t)), n = ["absolute", "fixed"].indexOf(N(t).position) >= 0, r = n && B(t) ? se(t) : t; return Q(r) ? e.filter(function(o) { return Q(o) && it(o, r) && C(o) !== "body"; }) : []; } function Gt(t, e, n) { var r = e === "clippingParents" ? Yt(t) : [].concat(e), o = [].concat(r, [n]), i = o[0], a = o.reduce(function(s, f) { var c = ht(t, f); return s.top = X(c.top, s.top), s.right = ve(c.right, s.right), s.bottom = ve(c.bottom, s.bottom), s.left = X(c.left, s.left), s; }, ht(t, i)); return a.width = a.right - a.left, a.height = a.bottom - a.top, a.x = a.left, a.y = a.top, a; } function mt(t) { var e = t.reference, n = t.element, r = t.placement, o = r ? q(r) : null, i = r ? te(r) : null, a = e.x + e.width / 2 - n.width / 2, s = e.y + e.height / 2 - n.height / 2, f; switch (o) { case E: f = { x: a, y: e.y - n.height }; break; case R: f = { x: a, y: e.y + e.height }; break; case W: f = { x: e.x + e.width, y: s }; break; case P: f = { x: e.x - n.width, y: s }; break; default: f = { x: e.x, y: e.y }; } var c = o ? Le(o) : null; if (c != null) { var u = c === "y" ? "height" : "width"; switch (i) { case U: f[c] = f[c] - (e[u] / 2 - n[u] / 2); break; case J: f[c] = f[c] + (e[u] / 2 - n[u] / 2); break; } } return f; } function ne(t, e) { e === void 0 && (e = {}); var n = e, r = n.placement, o = r === void 0 ? t.placement : r, i = n.boundary, a = i === void 0 ? Xe : i, s = n.rootBoundary, f = s === void 0 ? je : s, c = n.elementContext, u = c === void 0 ? K : c, m = n.altBoundary, v = m === void 0 ? false : m, l = n.padding, h2 = l === void 0 ? 0 : l, p = ft(typeof h2 != "number" ? h2 : ct(h2, G)), g = u === K ? Ye : K, x = t.rects.popper, y = t.elements[v ? g : u], $ = Gt(Q(y) ? y : y.contextElement || I(t.elements.popper), a, f), d = ee(t.elements.reference), b = mt({ reference: d, element: x, strategy: "absolute", placement: o }), w = Te(Object.assign({}, x, b)), O = u === K ? w : d, j = { top: $.top - O.top + p.top, bottom: O.bottom - $.bottom + p.bottom, left: $.left - O.left + p.left, right: O.right - $.right + p.right }, A = t.modifiersData.offset; if (u === K && A) { var k = A[o]; Object.keys(j).forEach(function(D) { var S = [W, R].indexOf(D) >= 0 ? 1 : -1, L = [E, R].indexOf(D) >= 0 ? "y" : "x"; j[D] += k[L] * S; }); } return j; } function Jt(t, e) { e === void 0 && (e = {}); var n = e, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = f === void 0 ? Ee : f, u = te(r), m = u ? s ? De : De.filter(function(h2) { return te(h2) === u; }) : G, v = m.filter(function(h2) { return c.indexOf(h2) >= 0; }); v.length === 0 && (v = m); var l = v.reduce(function(h2, p) { return h2[p] = ne(t, { placement: p, boundary: o, rootBoundary: i, padding: a })[q(p)], h2; }, {}); return Object.keys(l).sort(function(h2, p) { return l[h2] - l[p]; }); } function Kt(t) { if (q(t) === me) return []; var e = be(t); return [lt(t), e, lt(e)]; } function Qt(t) { var e = t.state, n = t.options, r = t.name; if (!e.modifiersData[r]._skip) { for (var o = n.mainAxis, i = o === void 0 ? true : o, a = n.altAxis, s = a === void 0 ? true : a, f = n.fallbackPlacements, c = n.padding, u = n.boundary, m = n.rootBoundary, v = n.altBoundary, l = n.flipVariations, h2 = l === void 0 ? true : l, p = n.allowedAutoPlacements, g = e.options.placement, x = q(g), y = x === g, $ = f || (y || !h2 ? [be(g)] : Kt(g)), d = [g].concat($).reduce(function(z, V) { return z.concat(q(V) === me ? Jt(e, { placement: V, boundary: u, rootBoundary: m, padding: c, flipVariations: h2, allowedAutoPlacements: p }) : V); }, []), b = e.rects.reference, w = e.rects.popper, O = /* @__PURE__ */ new Map(), j = true, A = d[0], k = 0; k < d.length; k++) { var D = d[k], S = q(D), L = te(D) === U, re = [E, R].indexOf(S) >= 0, oe = re ? "width" : "height", M = ne(e, { placement: D, boundary: u, rootBoundary: m, altBoundary: v, padding: c }), T = re ? L ? W : P : L ? R : E; b[oe] > w[oe] && (T = be(T)); var pe = be(T), _2 = []; if (i && _2.push(M[S] <= 0), s && _2.push(M[T] <= 0, M[pe] <= 0), _2.every(function(z) { return z; })) { A = D, j = false; break; } O.set(D, _2); } if (j) for (var ue = h2 ? 3 : 1, xe = function(z) { var V = d.find(function(de) { var ae = O.get(de); if (ae) return ae.slice(0, z).every(function(Y) { return Y; }); }); if (V) return A = V, "break"; }, ie = ue; ie > 0; ie--) { var le = xe(ie); if (le === "break") break; } e.placement !== A && (e.modifiersData[r]._skip = true, e.placement = A, e.reset = true); } } var vt = { name: "flip", enabled: true, phase: "main", fn: Qt, requiresIfExists: ["offset"], data: { _skip: false } }; function gt(t, e, n) { return n === void 0 && (n = { x: 0, y: 0 }), { top: t.top - e.height - n.y, right: t.right - e.width + n.x, bottom: t.bottom - e.height + n.y, left: t.left - e.width - n.x }; } function yt(t) { return [E, W, R, P].some(function(e) { return t[e] >= 0; }); } function Zt(t) { var e = t.state, n = t.name, r = e.rects.reference, o = e.rects.popper, i = e.modifiersData.preventOverflow, a = ne(e, { elementContext: "reference" }), s = ne(e, { altBoundary: true }), f = gt(a, r), c = gt(s, o, i), u = yt(f), m = yt(c); e.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: u, hasPopperEscaped: m }, e.attributes.popper = Object.assign({}, e.attributes.popper, { "data-popper-reference-hidden": u, "data-popper-escaped": m }); } var bt = { name: "hide", enabled: true, phase: "main", requiresIfExists: ["preventOverflow"], fn: Zt }; function en(t, e, n) { var r = q(t), o = [P, E].indexOf(r) >= 0 ? -1 : 1, i = typeof n == "function" ? n(Object.assign({}, e, { placement: t })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [P, W].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s }; } function tn(t) { var e = t.state, n = t.options, r = t.name, o = n.offset, i = o === void 0 ? [0, 0] : o, a = Ee.reduce(function(u, m) { return u[m] = en(m, e.rects, i), u; }, {}), s = a[e.placement], f = s.x, c = s.y; e.modifiersData.popperOffsets != null && (e.modifiersData.popperOffsets.x += f, e.modifiersData.popperOffsets.y += c), e.modifiersData[r] = a; } var wt = { name: "offset", enabled: true, phase: "main", requires: ["popperOffsets"], fn: tn }; function nn(t) { var e = t.state, n = t.name; e.modifiersData[n] = mt({ reference: e.rects.reference, element: e.rects.popper, strategy: "absolute", placement: e.placement }); } var He = { name: "popperOffsets", enabled: true, phase: "read", fn: nn, data: {} }; function rn(t) { return t === "x" ? "y" : "x"; } function on(t) { var e = t.state, n = t.options, r = t.name, o = n.mainAxis, i = o === void 0 ? true : o, a = n.altAxis, s = a === void 0 ? false : a, f = n.boundary, c = n.rootBoundary, u = n.altBoundary, m = n.padding, v = n.tether, l = v === void 0 ? true : v, h2 = n.tetherOffset, p = h2 === void 0 ? 0 : h2, g = ne(e, { boundary: f, rootBoundary: c, padding: m, altBoundary: u }), x = q(e.placement), y = te(e.placement), $ = !y, d = Le(x), b = rn(d), w = e.modifiersData.popperOffsets, O = e.rects.reference, j = e.rects.popper, A = typeof p == "function" ? p(Object.assign({}, e.rects, { placement: e.placement })) : p, k = typeof A == "number" ? { mainAxis: A, altAxis: A } : Object.assign({ mainAxis: 0, altAxis: 0 }, A), D = e.modifiersData.offset ? e.modifiersData.offset[e.placement] : null, S = { x: 0, y: 0 }; if (w) { if (i) { var L, re = d === "y" ? E : P, oe = d === "y" ? R : W, M = d === "y" ? "height" : "width", T = w[d], pe = T + g[re], _2 = T - g[oe], ue = l ? -j[M] / 2 : 0, xe = y === U ? O[M] : j[M], ie = y === U ? -j[M] : -O[M], le = e.elements.arrow, z = l && le ? ke(le) : { width: 0, height: 0 }, V = e.modifiersData["arrow#persistent"] ? e.modifiersData["arrow#persistent"].padding : st(), de = V[re], ae = V[oe], Y = fe(0, O[M], z[M]), jt = $ ? O[M] / 2 - ue - Y - de - k.mainAxis : xe - Y - de - k.mainAxis, Dt = $ ? -O[M] / 2 + ue + Y + ae + k.mainAxis : ie + Y + ae + k.mainAxis, Oe = e.elements.arrow && se(e.elements.arrow), Et = Oe ? d === "y" ? Oe.clientTop || 0 : Oe.clientLeft || 0 : 0, Ce = (L = D == null ? void 0 : D[d]) != null ? L : 0, Pt = T + jt - Ce - Et, At = T + Dt - Ce, qe = fe(l ? ve(pe, Pt) : pe, T, l ? X(_2, At) : _2); w[d] = qe, S[d] = qe - T; } if (s) { var Ve, kt = d === "x" ? E : P, Lt = d === "x" ? R : W, F = w[b], he = b === "y" ? "height" : "width", Ne = F + g[kt], Ie = F - g[Lt], $e = [E, P].indexOf(x) !== -1, _e = (Ve = D == null ? void 0 : D[b]) != null ? Ve : 0, ze = $e ? Ne : F - O[he] - j[he] - _e + k.altAxis, Fe = $e ? F + O[he] + j[he] - _e - k.altAxis : Ie, Ue = l && $e ? St(ze, F, Fe) : fe(l ? ze : Ne, F, l ? Fe : Ie); w[b] = Ue, S[b] = Ue - F; } e.modifiersData[r] = S; } } var xt = { name: "preventOverflow", enabled: true, phase: "main", fn: on, requiresIfExists: ["offset"] }; function an(t) { return { scrollLeft: t.scrollLeft, scrollTop: t.scrollTop }; } function sn(t) { return t === H(t) || !B(t) ? We(t) : an(t); } function fn(t) { var e = t.getBoundingClientRect(), n = Z(e.width) / t.offsetWidth || 1, r = Z(e.height) / t.offsetHeight || 1; return n !== 1 || r !== 1; } function cn(t, e, n) { n === void 0 && (n = false); var r = B(e), o = B(e) && fn(e), i = I(e), a = ee(t, o), s = { scrollLeft: 0, scrollTop: 0 }, f = { x: 0, y: 0 }; return (r || !r && !n) && ((C(e) !== "body" || Se(i)) && (s = sn(e)), B(e) ? (f = ee(e, true), f.x += e.clientLeft, f.y += e.clientTop) : i && (f.x = Be(i))), { x: a.left + s.scrollLeft - f.x, y: a.top + s.scrollTop - f.y, width: a.width, height: a.height }; } function pn(t) { var e = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Set(), r = []; t.forEach(function(i) { e.set(i.name, i); }); function o(i) { n.add(i.name); var a = [].concat(i.requires || [], i.requiresIfExists || []); a.forEach(function(s) { if (!n.has(s)) { var f = e.get(s); f && o(f); } }), r.push(i); } return t.forEach(function(i) { n.has(i.name) || o(i); }), r; } function un(t) { var e = pn(t); return ot.reduce(function(n, r) { return n.concat(e.filter(function(o) { return o.phase === r; })); }, []); } function ln(t) { var e; return function() { return e || (e = new Promise(function(n) { Promise.resolve().then(function() { e = void 0, n(t()); }); })), e; }; } function dn(t) { var e = t.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(e).map(function(n) { return e[n]; }); } var Ot = { placement: "bottom", modifiers: [], strategy: "absolute" }; function $t() { for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n]; return !e.some(function(r) { return !(r && typeof r.getBoundingClientRect == "function"); }); } function we(t) { t === void 0 && (t = {}); var e = t, n = e.defaultModifiers, r = n === void 0 ? [] : n, o = e.defaultOptions, i = o === void 0 ? Ot : o; return function(a, s, f) { f === void 0 && (f = i); var c = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, Ot, i), modifiersData: {}, elements: { reference: a, popper: s }, attributes: {}, styles: {} }, u = [], m = false, v = { state: c, setOptions: function(p) { var g = typeof p == "function" ? p(c.options) : p; h2(), c.options = Object.assign({}, i, c.options, g), c.scrollParents = { reference: Q(a) ? ce(a) : a.contextElement ? ce(a.contextElement) : [], popper: ce(s) }; var x = un(dn([].concat(r, c.options.modifiers))); return c.orderedModifiers = x.filter(function(y) { return y.enabled; }), l(), v.update(); }, forceUpdate: function() { if (!m) { var p = c.elements, g = p.reference, x = p.popper; if ($t(g, x)) { c.rects = { reference: cn(g, se(x), c.options.strategy === "fixed"), popper: ke(x) }, c.reset = false, c.placement = c.options.placement, c.orderedModifiers.forEach(function(j) { return c.modifiersData[j.name] = Object.assign({}, j.data); }); for (var y = 0; y < c.orderedModifiers.length; y++) { if (c.reset === true) { c.reset = false, y = -1; continue; } var $ = c.orderedModifiers[y], d = $.fn, b = $.options, w = b === void 0 ? {} : b, O = $.name; typeof d == "function" && (c = d({ state: c, options: w, name: O, instance: v }) || c); } } } }, update: ln(function() { return new Promise(function(p) { v.forceUpdate(), p(c); }); }), destroy: function() { h2(), m = true; } }; if (!$t(a, s)) return v; v.setOptions(f).then(function(p) { !m && f.onFirstUpdate && f.onFirstUpdate(p); }); function l() { c.orderedModifiers.forEach(function(p) { var g = p.name, x = p.options, y = x === void 0 ? {} : x, $ = p.effect; if (typeof $ == "function") { var d = $({ state: c, name: g, instance: v, options: y }), b = function() { }; u.push(d || b); } }); } function h2() { u.forEach(function(p) { return p(); }), u = []; } return v; }; } we(); var mn = [Re, He, Me, Ae]; we({ defaultModifiers: mn }); var gn = [Re, He, Me, Ae, wt, vt, xt, pt, bt], yn = we({ defaultModifiers: gn }); 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 = vue.computed(() => { const { onFirstUpdate, placement, strategy, modifiers } = vue.unref(opts); return { onFirstUpdate, placement: placement || "bottom", strategy: strategy || "absolute", modifiers: [ ...modifiers || [], stateUpdater, { name: "applyStyles", enabled: false } ] }; }); const instanceRef = vue.shallowRef(); const states = vue.ref({ styles: { popper: { position: 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; }; vue.watch(options, (newOptions) => { const instance = vue.unref(instanceRef); if (instance) { instance.setOptions(newOptions); } }, { deep: true }); vue.watch([referenceElementRef, popperElementRef], ([referenceElement, popperElement]) => { destroy(); if (!referenceElement || !popperElement) return; instanceRef.value = yn(referenceElement, popperElement, vue.unref(options)); }); vue.onBeforeUnmount(() => { destroy(); }); return { state: vue.computed(() => { var _a2; return { ...((_a2 = vue.unref(instanceRef)) == null ? void 0 : _a2.state) || {} }; }), styles: vue.computed(() => vue.unref(states).styles), attributes: vue.computed(() => vue.unref(states).attributes), update: () => { var _a2; return (_a2 = vue.unref(instanceRef)) == null ? void 0 : _a2.update(); }, forceUpdate: () => { var _a2; return (_a2 = vue.unref(instanceRef)) == null ? void 0 : _a2.forceUpdate(); }, instanceRef: vue.computed(() => vue.unref(instanceRef)) }; }; function deriveState(state) { const elements = Object.keys(state.elements); const styles = fromPairs(elements.map((element) => [element, state.styles[element] || {}])); const attributes = fromPairs(elements.map((element) => [element, state.attributes[element]])); return { styles, attributes }; } 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 }; }; function useTimeout() { let timeoutHandle; const registerTimeout = (fn2, delay2) => { cancelTimeout(); timeoutHandle = window.setTimeout(fn2, delay2); }; const cancelTimeout = () => window.clearTimeout(timeoutHandle); tryOnScopeDispose(() => cancelTimeout()); return { registerTimeout, cancelTimeout }; } const defaultIdInjection = { prefix: Math.floor(Math.random() * 1e4), current: 0 }; const ID_INJECTION_KEY = Symbol("elIdInjection"); const useIdInjection = () => { return vue.getCurrentInstance() ? vue.inject(ID_INJECTION_KEY, defaultIdInjection) : defaultIdInjection; }; const useId = (deterministicId) => { const idInjection = useIdInjection(); if (!isClient && idInjection === defaultIdInjection) { 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(); const idRef = vue.computed(() => vue.unref(deterministicId) || `${namespace.value}-id-${idInjection.prefix}-${idInjection.current++}`); return idRef; }; let registeredEscapeHandlers = []; const cachedHandler = (e) => { const event = e; if (event.key === EVENT_CODE.esc) { registeredEscapeHandlers.forEach((registeredHandler) => registeredHandler(event)); } }; const useEscapeKeydown = (handler) => { vue.onMounted(() => { if (registeredEscapeHandlers.length === 0) { document.addEventListener("keydown", cachedHandler); } if (isClient) registeredEscapeHandlers.push(handler); }); vue.onBeforeUnmount(() => { registeredEscapeHandlers = registeredEscapeHandlers.filter((registeredHandler) => registeredHandler !== handler); if (registeredEscapeHandlers.length === 0) { if (isClient) document.removeEventListener("keydown", cachedHandler); } }); }; const usePopperContainerId = () => { const namespace = useGetDerivedNamespace(); const idInjection = useIdInjection(); const id = vue.computed(() => { return `${namespace.value}-popper-container-${idInjection.prefix}`; }); const selector = vue.computed(() => `#${id.value}`); return { id, selector }; }; const createContainer = (id) => { const container = document.createElement("div"); container.id = id; document.body.appendChild(container); return container; }; const usePopperContainer = () => { const { id, selector } = usePopperContainerId(); vue.onBeforeMount(() => { if (!isClient) return; if (!document.body.querySelector(selector.value)) { createContainer(id.value); } }); return { id, selector }; }; const useDelayedToggleProps = buildProps({ showAfter: { type: Number, default: 0 }, hideAfter: { type: Number, default: 200 }, autoClose: { type: Number, default: 0 } }); const useDelayedToggle = ({ showAfter, hideAfter, autoClose, open: open2, close: close2 }) => { const { registerTimeout } = useTimeout(); const { registerTimeout: registerTimeoutForAutoClose, cancelTimeout: cancelTimeoutForAutoClose } = useTimeout(); const onOpen = (event) => { registerTimeout(() => { open2(event); const _autoClose = vue.unref(autoClose); if (isNumber(_autoClose) && _autoClose > 0) { registerTimeoutForAutoClose(() => { close2(event); }, _autoClose); } }, vue.unref(showAfter)); }; const onClose = (event) => { cancelTimeoutForAutoClose(); registerTimeout(() => { close2(event); }, vue.unref(hideAfter)); }; return { onOpen, onClose }; }; const FORWARD_REF_INJECTION_KEY = Symbol("elForwardRef"); const useForwardRef = (forwardRef) => { const setForwardRef = (el) => { forwardRef.value = el; }; vue.provide(FORWARD_REF_INJECTION_KEY, { setForwardRef }); }; const useForwardRefDirective = (setForwardRef) => { return { mounted(el) { setForwardRef(el); }, updated(el) { setForwardRef(el); }, unmounted() { setForwardRef(null); } }; }; const initial = { current: 0 }; const zIndex = vue.ref(0); const defaultInitialZIndex = 2e3; const ZINDEX_INJECTION_KEY = Symbol("elZIndexContextKey"); const zIndexContextKey = Symbol("zIndexContextKey"); const useZIndex = (zIndexOverrides) => { const increasingInjection = vue.getCurrentInstance() ? vue.inject(ZINDEX_INJECTION_KEY, initial) : initial; const zIndexInjection = zIndexOverrides || (vue.getCurrentInstance() ? vue.inject(zIndexContextKey, void 0) : void 0); const initialZIndex = vue.computed(() => { const zIndexFromInjection = vue.unref(zIndexInjection); return isNumber(zIndexFromInjection) ? zIndexFromInjection : defaultInitialZIndex; }); const currentZIndex = vue.computed(() => initialZIndex.value + zIndex.value); const nextZIndex = () => { increasingInjection.current++; zIndex.value = increasingInjection.current; return currentZIndex.value; }; if (!isClient && !vue.inject(ZINDEX_INJECTION_KEY)) { 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 }; }; 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; const beforeTxt = value.slice(0, Math.max(0, selectionStart)); const afterTxt = value.slice(Math.max(0, selectionEnd)); selectionInfo = { selectionStart, selectionEnd, value, beforeTxt, afterTxt }; } 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]; } const getOrderedChildren = (vm, childComponentName, children) => { const nodes = flattedChildren(vm.subTree).filter((n) => { var _a2; return vue.isVNode(n) && ((_a2 = n.type) == null ? void 0 : _a2.name) === childComponentName && !!n.component; }); const uids = nodes.map((n) => n.component.uid); return uids.map((uid) => children[uid]).filter((p) => !!p); }; const useOrderedChildren = (vm, childComponentName) => { const children = {}; const orderedChildren = vue.shallowRef([]); const addChild = (child) => { children[child.uid] = child; orderedChildren.value = getOrderedChildren(vm, childComponentName, children); }; const removeChild = (uid) => { delete children[uid]; orderedChildren.value = orderedChildren.value.filter((children2) => children2.uid !== uid); }; return { children: orderedChildren, addChild, removeChild }; }; const useSizeProp = buildProp({ type: String, values: componentSizes, required: false }); const SIZE_INJECTION_KEY = Symbol("size"); const useGlobalSize = () => { const injectedSize = vue.inject(SIZE_INJECTION_KEY, {}); return vue.computed(() => { return vue.unref(injectedSize.size) || ""; }); }; function useFocusController(target, { beforeFocus, afterFocus, beforeBlur, afterBlur } = {}) { const instance = vue.getCurrentInstance(); const { emit } = instance; const wrapperRef = vue.shallowRef(); const isFocused = vue.ref(false); const handleFocus = (event) => { const cancelFocus = isFunction$1(beforeFocus) ? beforeFocus(event) : false; if (cancelFocus || isFocused.value) return; isFocused.value = true; emit("focus", event); afterFocus == null ? void 0 : afterFocus(); }; const handleBlur = (event) => { var _a2; const cancelBlur = isFunction$1(beforeBlur) ? beforeBlur(event) : false; if (cancelBlur || event.relatedTarget && ((_a2 = wrapperRef.value) == null ? void 0 : _a2.contains(event.relatedTarget))) return; isFocused.value = false; emit("blur", event); afterBlur == null ? void 0 : afterBlur(); }; const handleClick = () => { var _a2, _b; if (((_a2 = wrapperRef.value) == null ? void 0 : _a2.contains(document.activeElement)) && wrapperRef.value !== document.activeElement) return; (_b = target.value) == null ? void 0 : _b.focus(); }; vue.watch(wrapperRef, (el) => { if (el) { el.setAttribute("tabindex", "-1"); } }); useEventListener(wrapperRef, "focus", handleFocus, true); useEventListener(wrapperRef, "blur", handleBlur, true); useEventListener(wrapperRef, "click", handleClick, true); return { isFocused, wrapperRef, handleFocus, handleBlur }; } function useComposition({ afterComposition, emit }) { const isComposing = vue.ref(false); const handleCompositionStart = (event) => { emit == null ? void 0 : emit("compositionstart", event); isComposing.value = true; }; const handleCompositionUpdate = (event) => { var _a2; emit == null ? void 0 : emit("compositionupdate", event); const text = (_a2 = event.target) == null ? void 0 : _a2.value; const lastCharacter = text[text.length - 1] || ""; isComposing.value = !isKorean(lastCharacter); }; const handleCompositionEnd = (event) => { emit == null ? void 0 : emit("compositionend", event); if (isComposing.value) { isComposing.value = false; vue.nextTick(() => afterComposition(event)); } }; const handleComposition = (event) => { event.type === "compositionend" ? handleCompositionEnd(event) : handleCompositionUpdate(event); }; return { isComposing, handleComposition, handleCompositionStart, handleCompositionUpdate, handleCompositionEnd }; } const emptyValuesContextKey = Symbol("emptyValuesContextKey"); const SCOPE$2 = "use-empty-values"; const DEFAULT_EMPTY_VALUES = ["", void 0, null]; const DEFAULT_VALUE_ON_CLEAR = void 0; const useEmptyValuesProps = buildProps({ emptyValues: Array, valueOnClear: { type: [String, Number, Boolean, Function], default: void 0, validator: (val) => isFunction$1(val) ? !val() : !val } }); const useEmptyValues = (props, defaultValue) => { const config = vue.getCurrentInstance() ? vue.inject(emptyValuesContextKey, vue.ref({})) : vue.ref({}); const emptyValues = vue.computed(() => props.emptyValues || config.value.emptyValues || DEFAULT_EMPTY_VALUES); const valueOnClear = 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 DEFAULT_VALUE_ON_CLEAR; }); const isEmptyValue = (value) => { return emptyValues.value.includes(value); }; if (!emptyValues.value.includes(valueOnClear.value)) { debugWarn(SCOPE$2, "value-on-clear should be a value of empty-values"); } return { emptyValues, valueOnClear, isEmptyValue }; }; const ariaProps = buildProps({ ariaLabel: String, ariaOrientation: { type: String, values: ["horizontal", "vertical", "undefined"] }, ariaControls: String }); const useAriaProps = (arias) => { return pick(ariaProps, arias); }; const configProviderContextKey = Symbol(); const globalConfig = vue.ref(); function useGlobalConfig(key, defaultValue = void 0) { const config = vue.getCurrentInstance() ? vue.inject(configProviderContextKey, globalConfig) : globalConfig; if (key) { return vue.computed(() => { var _a2, _b; return (_b = (_a2 = config.value) == null ? void 0 : _a2[key]) != null ? _b : defaultValue; }); } else { return config; } } function useGlobalComponentSettings(block, sizeFallback) { const config = useGlobalConfig(); const ns = useNamespace(block, vue.computed(() => { var _a2; return ((_a2 = config.value) == null ? void 0 : _a2.namespace) || defaultNamespace; })); const locale = useLocale(vue.computed(() => { var _a2; return (_a2 = config.value) == null ? void 0 : _a2.locale; })); const zIndex2 = useZIndex(vue.computed(() => { var _a2; return ((_a2 = config.value) == null ? void 0 : _a2.zIndex) || defaultInitialZIndex; })); const size2 = vue.computed(() => { var _a2; return vue.unref(sizeFallback) || ((_a2 = config.value) == null ? void 0 : _a2.size) || ""; }); provideGlobalConfig(vue.computed(() => vue.unref(config) || {})); return { ns, locale, zIndex: zIndex2, size: size2 }; } const provideGlobalConfig = (config, app2, global2 = false) => { var _a2; const inSetup = !!vue.getCurrentInstance(); const oldConfig = inSetup ? useGlobalConfig() : void 0; const provideFn = (_a2 = void 0) != null ? _a2 : inSetup ? vue.provide : void 0; if (!provideFn) { debugWarn("provideGlobalConfig", "provideGlobalConfig() can only be used inside setup()."); return; } const context = vue.computed(() => { const cfg = vue.unref(config); if (!(oldConfig == null ? void 0 : oldConfig.value)) return cfg; return mergeConfig(oldConfig.value, cfg); }); provideFn(configProviderContextKey, context); provideFn(localeContextKey, vue.computed(() => context.value.locale)); provideFn(namespaceContextKey, vue.computed(() => context.value.namespace)); provideFn(zIndexContextKey, vue.computed(() => context.value.zIndex)); provideFn(SIZE_INJECTION_KEY, { size: vue.computed(() => context.value.size || "") }); provideFn(emptyValuesContextKey, vue.computed(() => ({ emptyValues: context.value.emptyValues, valueOnClear: context.value.valueOnClear }))); if (global2 || !globalConfig.value) { globalConfig.value = context.value; } return context; }; const mergeConfig = (a, b) => { const keys2 = [.../* @__PURE__ */ new Set([...keysOf(a), ...keysOf(b)])]; const obj = {}; for (const key of keys2) { obj[key] = b[key] !== void 0 ? b[key] : a[key]; } return obj; }; var _export_sfc = (sfc, props) => { const target = sfc.__vccOpts || sfc; for (const [key, val] of props) { target[key] = val; } return target; }; const iconProps = buildProps({ size: { type: definePropType([Number, String]) }, color: { type: String } }); const __default__$D = vue.defineComponent({ name: "ElIcon", inheritAttrs: false }); const _sfc_main$11 = /* @__PURE__ */ vue.defineComponent({ ...__default__$D, props: iconProps, setup(__props) { const props = __props; const ns = useNamespace("icon"); const style = vue.computed(() => { const { size: size2, color } = props; if (!size2 && !color) return {}; return { fontSize: isUndefined(size2) ? void 0 : addUnit(size2), "--color": color }; }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("i", vue.mergeProps({ class: vue.unref(ns).b(), style: vue.unref(style) }, _ctx.$attrs), [ vue.renderSlot(_ctx.$slots, "default") ], 16); }; } }); var Icon = /* @__PURE__ */ _export_sfc(_sfc_main$11, [["__file", "icon.vue"]]); const ElIcon = withInstall(Icon); const formContextKey = Symbol("formContextKey"); const formItemContextKey = Symbol("formItemContextKey"); const useFormSize = (fallback, ignore = {}) => { const emptyRef = vue.ref(void 0); const size2 = ignore.prop ? emptyRef : useProp("size"); const globalConfig2 = ignore.global ? emptyRef : useGlobalSize(); const form = ignore.form ? { size: void 0 } : vue.inject(formContextKey, void 0); const formItem = ignore.formItem ? { size: void 0 } : vue.inject(formItemContextKey, void 0); return vue.computed(() => size2.value || vue.unref(fallback) || (formItem == null ? void 0 : formItem.size) || (form == null ? void 0 : form.size) || globalConfig2.value || ""); }; const useFormDisabled = (fallback) => { const disabled = useProp("disabled"); const form = vue.inject(formContextKey, void 0); return vue.computed(() => disabled.value || vue.unref(fallback) || (form == null ? void 0 : form.disabled) || false); }; const useFormItem = () => { const form = vue.inject(formContextKey, void 0); const formItem = vue.inject(formItemContextKey, void 0); return { form, formItem }; }; const useFormItemInputId = (props, { formItemContext, disableIdGeneration, disableIdManagement }) => { if (!disableIdGeneration) { disableIdGeneration = vue.ref(false); } if (!disableIdManagement) { disableIdManagement = vue.ref(false); } const inputId = vue.ref(); let idUnwatch = void 0; const isLabeledByFormItem = vue.computed(() => { var _a2; return !!(!(props.label || props.ariaLabel) && formItemContext && formItemContext.inputIds && ((_a2 = formItemContext.inputIds) == null ? void 0 : _a2.length) <= 1); }); vue.onMounted(() => { idUnwatch = vue.watch([vue.toRef(props, "id"), disableIdGeneration], ([id, disableIdGeneration2]) => { const newId = id != null ? id : !disableIdGeneration2 ? useId().value : void 0; if (newId !== inputId.value) { if (formItemContext == null ? void 0 : formItemContext.removeInputId) { inputId.value && formItemContext.removeInputId(inputId.value); if (!(disableIdManagement == null ? void 0 : disableIdManagement.value) && !disableIdGeneration2 && newId) { formItemContext.addInputId(newId); } } inputId.value = newId; } }, { immediate: true }); }); vue.onUnmounted(() => { idUnwatch && idUnwatch(); if (formItemContext == null ? void 0 : formItemContext.removeInputId) { inputId.value && formItemContext.removeInputId(inputId.value); } }); return { isLabeledByFormItem, inputId }; }; let hiddenTextarea = void 0; const HIDDEN_STYLE = ` height:0 !important; visibility:hidden !important; ${isFirefox() ? "" : "overflow:hidden !important;"} position:absolute !important; z-index:-1000 !important; top:0 !important; right:0 !important; `; 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" ]; 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")); const contextStyle = CONTEXT_STYLE.map((name) => `${name}:${style.getPropertyValue(name)}`).join(";"); return { contextStyle, paddingSize, borderSize, boxSizing }; } function calcTextareaHeight(targetElement, minRows = 1, maxRows) { var _a2; if (!hiddenTextarea) { hiddenTextarea = document.createElement("textarea"); document.body.appendChild(hiddenTextarea); } const { paddingSize, borderSize, boxSizing, contextStyle } = calculateNodeStyling(targetElement); hiddenTextarea.setAttribute("style", `${contextStyle};${HIDDEN_STYLE}`); hiddenTextarea.value = targetElement.value || targetElement.placeholder || ""; let height = hiddenTextarea.scrollHeight; const result2 = {}; 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); result2.minHeight = `${minHeight}px`; } if (isNumber(maxRows)) { let maxHeight = singleRowHeight * maxRows; if (boxSizing === "border-box") { maxHeight = maxHeight + paddingSize + borderSize; } height = Math.min(maxHeight, height); } result2.height = `${height}px`; (_a2 = hiddenTextarea.parentNode) == null ? void 0 : _a2.removeChild(hiddenTextarea); hiddenTextarea = void 0; return result2; } const inputProps = buildProps({ id: { type: String, default: void 0 }, size: useSizeProp, disabled: Boolean, modelValue: { type: definePropType([ String, Number, Object ]), default: "" }, maxlength: { type: [String, Number] }, minlength: { type: [String, Number] }, type: { type: String, default: "text" }, resize: { type: String, values: ["none", "both", "horizontal", "vertical"] }, autosize: { type: definePropType([Boolean, Object]), default: false }, autocomplete: { type: String, default: "off" }, formatter: { type: Function }, parser: { type: Function }, placeholder: { type: String }, form: { type: String }, readonly: Boolean, clearable: Boolean, showPassword: Boolean, showWordLimit: Boolean, 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({}) }, autofocus: Boolean, rows: { type: Number, default: 2 }, ...useAriaProps(["ariaLabel"]) }); const inputEmits = { [UPDATE_MODEL_EVENT]: (value) => isString(value), input: (value) => isString(value), change: (value) => isString(value), focus: (evt) => evt instanceof FocusEvent, blur: (evt) => evt instanceof FocusEvent, clear: () => true, 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 }; const __default__$C = vue.defineComponent({ name: "ElInput", inheritAttrs: false }); const _sfc_main$10 = /* @__PURE__ */ vue.defineComponent({ ...__default__$C, props: inputProps, emits: inputEmits, setup(__props, { expose, emit }) { const props = __props; const rawAttrs = vue.useAttrs(); const slots = vue.useSlots(); const containerAttrs = vue.computed(() => { const comboBoxAttrs = {}; if (props.containerRole === "combobox") { comboBoxAttrs["aria-haspopup"] = rawAttrs["aria-haspopup"]; comboBoxAttrs["aria-owns"] = rawAttrs["aria-owns"]; comboBoxAttrs["aria-expanded"] = rawAttrs["aria-expanded"]; } return comboBoxAttrs; }); const containerKls = 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 = vue.computed(() => [ nsInput.e("wrapper"), nsInput.is("focus", isFocused.value) ]); const attrs = useAttrs({ excludeKeys: vue.computed(() => { return Object.keys(containerAttrs.value); }) }); 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 = vue.shallowRef(); const textarea = vue.shallowRef(); const hovering = vue.ref(false); const passwordVisible = vue.ref(false); const countStyle = vue.ref(); const textareaCalcStyle = vue.shallowRef(props.inputStyle); const _ref = vue.computed(() => input.value || textarea.value); const { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(_ref, { beforeFocus() { return inputDisabled.value; }, afterBlur() { var _a2; if (props.validateEvent) { (_a2 = elFormItem == null ? void 0 : elFormItem.validate) == null ? void 0 : _a2.call(elFormItem, "blur").catch((err) => debugWarn(err)); } } }); const needStatusIcon = vue.computed(() => { var _a2; return (_a2 = elForm == null ? void 0 : elForm.statusIcon) != null ? _a2 : false; }); const validateState = vue.computed(() => (elFormItem == null ? void 0 : elFormItem.validateState) || ""); const validateIcon = vue.computed(() => validateState.value && ValidateComponentsMap[validateState.value]); const passwordIcon = vue.computed(() => passwordVisible.value ? view_default : hide_default); const containerStyle = vue.computed(() => [ rawAttrs.style ]); const textareaStyle = vue.computed(() => [ props.inputStyle, textareaCalcStyle.value, { resize: props.resize } ]); const nativeInputValue = vue.computed(() => isNil(props.modelValue) ? "" : String(props.modelValue)); const showClear = vue.computed(() => props.clearable && !inputDisabled.value && !props.readonly && !!nativeInputValue.value && (isFocused.value || hovering.value)); const showPwdVisible = vue.computed(() => props.showPassword && !inputDisabled.value && !!nativeInputValue.value && (!!nativeInputValue.value || isFocused.value)); const isWordLimitVisible = vue.computed(() => props.showWordLimit && !!props.maxlength && (props.type === "text" || props.type === "textarea") && !inputDisabled.value && !props.readonly && !props.showPassword); const textLength = vue.computed(() => nativeInputValue.value.length); const inputExceed = vue.computed(() => !!isWordLimitVisible.value && textLength.value > Number(props.maxlength)); const suffixVisible = vue.computed(() => !!slots.suffix || !!props.suffixIcon || showClear.value || props.showPassword || isWordLimitVisible.value || !!validateState.value && needStatusIcon.value); const [recordCursor, setCursor] = useCursor(input); useResizeObserver(textarea, (entries) => { onceInitSizeTextarea(); if (!isWordLimitVisible.value || props.resize !== "both") return; const entry = entries[0]; const { width } = entry.contentRect; countStyle.value = { right: `calc(100% - ${width + 15 + 6}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 textareaStyle2 = calcTextareaHeight(textarea.value, minRows, maxRows); textareaCalcStyle.value = { overflowY: "hidden", ...textareaStyle2 }; vue.nextTick(() => { textarea.value.offsetHeight; textareaCalcStyle.value = textareaStyle2; }); } else { textareaCalcStyle.value = { minHeight: calcTextareaHeight(textarea.value).minHeight }; } }; const createOnceInitResize = (resizeTextarea2) => { let isInit = false; return () => { var _a2; if (isInit || !props.autosize) return; const isElHidden = ((_a2 = textarea.value) == null ? void 0 : _a2.offsetParent) === null; if (!isElHidden) { resizeTextarea2(); isInit = true; } }; }; const onceInitSizeTextarea = createOnceInitResize(resizeTextarea); const setNativeInputValue = () => { const input2 = _ref.value; const formatterValue = props.formatter ? props.formatter(nativeInputValue.value) : nativeInputValue.value; if (!input2 || input2.value === formatterValue) return; input2.value = formatterValue; }; const handleInput = async (event) => { recordCursor(); let { value } = event.target; if (props.formatter) { value = props.parser ? props.parser(value) : value; } if (isComposing.value) return; if (value === nativeInputValue.value) { setNativeInputValue(); return; } emit(UPDATE_MODEL_EVENT, value); emit("input", value); await vue.nextTick(); setNativeInputValue(); setCursor(); }; const handleChange = (event) => { emit("change", event.target.value); }; const { isComposing, handleCompositionStart, handleCompositionUpdate, handleCompositionEnd } = useComposition({ emit, afterComposition: handleInput }); const handlePasswordVisible = () => { passwordVisible.value = !passwordVisible.value; focus(); }; const focus = async () => { var _a2; await vue.nextTick(); (_a2 = _ref.value) == null ? void 0 : _a2.focus(); }; const blur = () => { var _a2; return (_a2 = _ref.value) == null ? void 0 : _a2.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 = () => { var _a2; (_a2 = _ref.value) == null ? void 0 : _a2.select(); }; const clear = () => { emit(UPDATE_MODEL_EVENT, ""); emit("change", ""); emit("clear"); emit("input", ""); }; vue.watch(() => props.modelValue, () => { var _a2; vue.nextTick(() => resizeTextarea()); if (props.validateEvent) { (_a2 = elFormItem == null ? void 0 : elFormItem.validate) == null ? void 0 : _a2.call(elFormItem, "change").catch((err) => debugWarn(err)); } }); vue.watch(nativeInputValue, () => setNativeInputValue()); vue.watch(() => props.type, async () => { await vue.nextTick(); setNativeInputValue(); resizeTextarea(); }); vue.onMounted(() => { if (!props.formatter && props.parser) { debugWarn("ElInput", "If you set the parser, you also need to set the formatter."); } setNativeInputValue(); vue.nextTick(resizeTextarea); }); expose({ input, textarea, ref: _ref, textareaStyle, autosize: vue.toRef(props, "autosize"), isComposing, focus, blur, select, clear, resizeTextarea }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps(vue.unref(containerAttrs), { class: [ vue.unref(containerKls), { [vue.unref(nsInput).bm("group", "append")]: _ctx.$slots.append, [vue.unref(nsInput).bm("group", "prepend")]: _ctx.$slots.prepend } ], style: vue.unref(containerStyle), role: _ctx.containerRole, onMouseenter: handleMouseEnter, onMouseleave: handleMouseLeave }), [ vue.createCommentVNode(" input "), _ctx.type !== "textarea" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [ vue.createCommentVNode(" prepend slot "), _ctx.$slots.prepend ? (vue.openBlock(), vue.createElementBlock("div", { key: 0, class: vue.normalizeClass(vue.unref(nsInput).be("group", "prepend")) }, [ vue.renderSlot(_ctx.$slots, "prepend") ], 2)) : vue.createCommentVNode("v-if", true), vue.createElementVNode("div", { ref_key: "wrapperRef", ref: wrapperRef, class: vue.normalizeClass(vue.unref(wrapperKls)) }, [ vue.createCommentVNode(" prefix slot "), _ctx.$slots.prefix || _ctx.prefixIcon ? (vue.openBlock(), vue.createElementBlock("span", { key: 0, class: vue.normalizeClass(vue.unref(nsInput).e("prefix")) }, [ vue.createElementVNode("span", { class: vue.normalizeClass(vue.unref(nsInput).e("prefix-inner")) }, [ vue.renderSlot(_ctx.$slots, "prefix"), _ctx.prefixIcon ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 0, class: vue.normalizeClass(vue.unref(nsInput).e("icon")) }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.prefixIcon))) ]), _: 1 }, 8, ["class"])) : vue.createCommentVNode("v-if", true) ], 2) ], 2)) : vue.createCommentVNode("v-if", true), vue.createElementVNode("input", vue.mergeProps({ id: vue.unref(inputId), ref_key: "input", ref: input, class: vue.unref(nsInput).e("inner") }, vue.unref(attrs), { minlength: _ctx.minlength, maxlength: _ctx.maxlength, type: _ctx.showPassword ? passwordVisible.value ? "text" : "password" : _ctx.type, disabled: vue.unref(inputDisabled), readonly: _ctx.readonly, autocomplete: _ctx.autocomplete, tabindex: _ctx.tabindex, "aria-label": _ctx.ariaLabel, placeholder: _ctx.placeholder, style: _ctx.inputStyle, form: _ctx.form, autofocus: _ctx.autofocus, onCompositionstart: vue.unref(handleCompositionStart), onCompositionupdate: vue.unref(handleCompositionUpdate), onCompositionend: vue.unref(handleCompositionEnd), onInput: handleInput, onChange: handleChange, onKeydown: handleKeydown }), null, 16, ["id", "minlength", "maxlength", "type", "disabled", "readonly", "autocomplete", "tabindex", "aria-label", "placeholder", "form", "autofocus", "onCompositionstart", "onCompositionupdate", "onCompositionend"]), vue.createCommentVNode(" suffix slot "), vue.unref(suffixVisible) ? (vue.openBlock(), vue.createElementBlock("span", { key: 1, class: vue.normalizeClass(vue.unref(nsInput).e("suffix")) }, [ vue.createElementVNode("span", { class: vue.normalizeClass(vue.unref(nsInput).e("suffix-inner")) }, [ !vue.unref(showClear) || !vue.unref(showPwdVisible) || !vue.unref(isWordLimitVisible) ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [ vue.renderSlot(_ctx.$slots, "suffix"), _ctx.suffixIcon ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 0, class: vue.normalizeClass(vue.unref(nsInput).e("icon")) }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.suffixIcon))) ]), _: 1 }, 8, ["class"])) : vue.createCommentVNode("v-if", true) ], 64)) : vue.createCommentVNode("v-if", true), vue.unref(showClear) ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 1, class: vue.normalizeClass([vue.unref(nsInput).e("icon"), vue.unref(nsInput).e("clear")]), onMousedown: vue.withModifiers(vue.unref(NOOP), ["prevent"]), onClick: clear }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(circle_close_default)) ]), _: 1 }, 8, ["class", "onMousedown"])) : vue.createCommentVNode("v-if", true), vue.unref(showPwdVisible) ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 2, class: vue.normalizeClass([vue.unref(nsInput).e("icon"), vue.unref(nsInput).e("password")]), onClick: handlePasswordVisible }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(passwordIcon)))) ]), _: 1 }, 8, ["class"])) : vue.createCommentVNode("v-if", true), vue.unref(isWordLimitVisible) ? (vue.openBlock(), vue.createElementBlock("span", { key: 3, class: vue.normalizeClass(vue.unref(nsInput).e("count")) }, [ vue.createElementVNode("span", { class: vue.normalizeClass(vue.unref(nsInput).e("count-inner")) }, vue.toDisplayString(vue.unref(textLength)) + " / " + vue.toDisplayString(_ctx.maxlength), 3) ], 2)) : vue.createCommentVNode("v-if", true), vue.unref(validateState) && vue.unref(validateIcon) && vue.unref(needStatusIcon) ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 4, class: vue.normalizeClass([ vue.unref(nsInput).e("icon"), vue.unref(nsInput).e("validateIcon"), vue.unref(nsInput).is("loading", vue.unref(validateState) === "validating") ]) }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(validateIcon)))) ]), _: 1 }, 8, ["class"])) : vue.createCommentVNode("v-if", true) ], 2) ], 2)) : vue.createCommentVNode("v-if", true) ], 2), vue.createCommentVNode(" append slot "), _ctx.$slots.append ? (vue.openBlock(), vue.createElementBlock("div", { key: 1, class: vue.normalizeClass(vue.unref(nsInput).be("group", "append")) }, [ vue.renderSlot(_ctx.$slots, "append") ], 2)) : vue.createCommentVNode("v-if", true) ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [ vue.createCommentVNode(" textarea "), vue.createElementVNode("textarea", vue.mergeProps({ id: vue.unref(inputId), ref_key: "textarea", ref: textarea, class: [vue.unref(nsTextarea).e("inner"), vue.unref(nsInput).is("focus", vue.unref(isFocused))] }, vue.unref(attrs), { minlength: _ctx.minlength, maxlength: _ctx.maxlength, tabindex: _ctx.tabindex, disabled: vue.unref(inputDisabled), readonly: _ctx.readonly, autocomplete: _ctx.autocomplete, style: vue.unref(textareaStyle), "aria-label": _ctx.ariaLabel, placeholder: _ctx.placeholder, form: _ctx.form, autofocus: _ctx.autofocus, rows: _ctx.rows, onCompositionstart: vue.unref(handleCompositionStart), onCompositionupdate: vue.unref(handleCompositionUpdate), onCompositionend: vue.unref(handleCompositionEnd), onInput: handleInput, onFocus: vue.unref(handleFocus), onBlur: vue.unref(handleBlur), onChange: handleChange, onKeydown: handleKeydown }), null, 16, ["id", "minlength", "maxlength", "tabindex", "disabled", "readonly", "autocomplete", "aria-label", "placeholder", "form", "autofocus", "rows", "onCompositionstart", "onCompositionupdate", "onCompositionend", "onFocus", "onBlur"]), vue.unref(isWordLimitVisible) ? (vue.openBlock(), vue.createElementBlock("span", { key: 0, style: vue.normalizeStyle(countStyle.value), class: vue.normalizeClass(vue.unref(nsInput).e("count")) }, vue.toDisplayString(vue.unref(textLength)) + " / " + vue.toDisplayString(_ctx.maxlength), 7)) : vue.createCommentVNode("v-if", true) ], 64)) ], 16, ["role"]); }; } }); var Input = /* @__PURE__ */ _export_sfc(_sfc_main$10, [["__file", "input.vue"]]); const ElInput = withInstall(Input); 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: size2, bar }) => ({ [bar.size]: size2, transform: `translate${bar.axis}(${move}%)` }); const scrollbarContextKey = Symbol("scrollbarContextKey"); const thumbProps = buildProps({ vertical: Boolean, size: String, move: Number, ratio: { type: Number, required: true }, always: Boolean }); const COMPONENT_NAME$7 = "Thumb"; const _sfc_main$$ = /* @__PURE__ */ vue.defineComponent({ __name: "thumb", props: thumbProps, setup(__props) { const props = __props; const scrollbar = vue.inject(scrollbarContextKey); const ns = useNamespace("scrollbar"); if (!scrollbar) throwError(COMPONENT_NAME$7, "can not inject scrollbar context"); const instance = vue.ref(); const thumb = vue.ref(); const thumbState = vue.ref({}); const visible = vue.ref(false); let cursorDown = false; let cursorLeave = false; let originalOnSelectStart = isClient ? document.onselectstart : null; const bar = vue.computed(() => BAR_MAP[props.vertical ? "vertical" : "horizontal"]); const thumbStyle = vue.computed(() => renderThumbStyle({ size: props.size, move: props.move, bar: bar.value })); const offsetRatio = vue.computed(() => instance.value[bar.value.offset] ** 2 / scrollbar.wrapElement[bar.value.scrollSize] / props.ratio / thumb.value[bar.value.offset]); const clickThumbHandler = (e) => { var _a2; e.stopPropagation(); if (e.ctrlKey || [1, 2].includes(e.button)) return; (_a2 = window.getSelection()) == null ? void 0 : _a2.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 offset = Math.abs(e.target.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]); const thumbHalf = thumb.value[bar.value.offset] / 2; const thumbPositionPercentage = (offset - thumbHalf) * 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; 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 offset = (instance.value.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) * -1; const thumbClickPosition = thumb.value[bar.value.offset] - prevPage; const thumbPositionPercentage = (offset - thumbClickPosition) * 100 * offsetRatio.value / instance.value[bar.value.offset]; scrollbar.wrapElement[bar.value.scroll] = thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize] / 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; }; vue.onBeforeUnmount(() => { restoreOnselectstart(); document.removeEventListener("mouseup", mouseUpDocumentHandler); }); const restoreOnselectstart = () => { if (document.onselectstart !== originalOnSelectStart) document.onselectstart = originalOnSelectStart; }; useEventListener(vue.toRef(scrollbar, "scrollbarElement"), "mousemove", mouseMoveScrollbarHandler); useEventListener(vue.toRef(scrollbar, "scrollbarElement"), "mouseleave", mouseLeaveScrollbarHandler); return (_ctx, _cache) => { return vue.openBlock(), vue.createBlock(vue.Transition, { name: vue.unref(ns).b("fade"), persisted: "" }, { default: vue.withCtx(() => [ vue.withDirectives(vue.createElementVNode("div", { ref_key: "instance", ref: instance, class: vue.normalizeClass([vue.unref(ns).e("bar"), vue.unref(ns).is(vue.unref(bar).key)]), onMousedown: clickTrackHandler }, [ vue.createElementVNode("div", { ref_key: "thumb", ref: thumb, class: vue.normalizeClass(vue.unref(ns).e("thumb")), style: vue.normalizeStyle(vue.unref(thumbStyle)), onMousedown: clickThumbHandler }, null, 38) ], 34), [ [vue.vShow, _ctx.always || visible.value] ]) ]), _: 1 }, 8, ["name"]); }; } }); var Thumb = /* @__PURE__ */ _export_sfc(_sfc_main$$, [["__file", "thumb.vue"]]); const barProps = buildProps({ always: { type: Boolean, default: true }, minSize: { type: Number, required: true } }); const _sfc_main$_ = /* @__PURE__ */ vue.defineComponent({ __name: "bar", props: barProps, setup(__props, { expose }) { const props = __props; const scrollbar = vue.inject(scrollbarContextKey); const moveX = vue.ref(0); const moveY = vue.ref(0); const sizeWidth = vue.ref(""); const sizeHeight = vue.ref(""); const ratioY = vue.ref(1); const ratioX = vue.ref(1); const handleScroll = (wrap2) => { if (wrap2) { const offsetHeight = wrap2.offsetHeight - GAP; const offsetWidth = wrap2.offsetWidth - GAP; moveY.value = wrap2.scrollTop * 100 / offsetHeight * ratioY.value; moveX.value = wrap2.scrollLeft * 100 / offsetWidth * ratioX.value; } }; const update = () => { const wrap2 = scrollbar == null ? void 0 : scrollbar.wrapElement; if (!wrap2) return; const offsetHeight = wrap2.offsetHeight - GAP; const offsetWidth = wrap2.offsetWidth - GAP; const originalHeight = offsetHeight ** 2 / wrap2.scrollHeight; const originalWidth = offsetWidth ** 2 / wrap2.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 vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [ vue.createVNode(Thumb, { move: moveX.value, ratio: ratioX.value, size: sizeWidth.value, always: _ctx.always }, null, 8, ["move", "ratio", "size", "always"]), vue.createVNode(Thumb, { move: moveY.value, ratio: ratioY.value, size: sizeHeight.value, vertical: "", always: _ctx.always }, null, 8, ["move", "ratio", "size", "always"]) ], 64); }; } }); var Bar = /* @__PURE__ */ _export_sfc(_sfc_main$_, [["__file", "bar.vue"]]); const scrollbarProps = buildProps({ height: { type: [String, Number], default: "" }, maxHeight: { type: [String, Number], default: "" }, native: { type: Boolean, default: false }, 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 = { scroll: ({ scrollTop, scrollLeft }) => [scrollTop, scrollLeft].every(isNumber) }; const COMPONENT_NAME$6 = "ElScrollbar"; const __default__$B = vue.defineComponent({ name: COMPONENT_NAME$6 }); const _sfc_main$Z = /* @__PURE__ */ vue.defineComponent({ ...__default__$B, props: scrollbarProps, emits: scrollbarEmits, setup(__props, { expose, emit }) { const props = __props; const ns = useNamespace("scrollbar"); let stopResizeObserver = void 0; let stopResizeListener = void 0; let wrapScrollTop = 0; let wrapScrollLeft = 0; const scrollbarRef = vue.ref(); const wrapRef = vue.ref(); const resizeRef = vue.ref(); const barRef = vue.ref(); const wrapStyle = vue.computed(() => { const style = {}; if (props.height) style.height = addUnit(props.height); if (props.maxHeight) style.maxHeight = addUnit(props.maxHeight); return [props.wrapStyle, style]; }); const wrapKls = vue.computed(() => { return [ props.wrapClass, ns.e("wrap"), { [ns.em("wrap", "hidden-default")]: !props.native } ]; }); const resizeKls = vue.computed(() => { return [ns.e("view"), props.viewClass]; }); const handleScroll = () => { var _a2; if (wrapRef.value) { (_a2 = barRef.value) == null ? void 0 : _a2.handleScroll(wrapRef.value); wrapScrollTop = wrapRef.value.scrollTop; wrapScrollLeft = wrapRef.value.scrollLeft; emit("scroll", { scrollTop: wrapRef.value.scrollTop, scrollLeft: wrapRef.value.scrollLeft }); } }; 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)) { debugWarn(COMPONENT_NAME$6, "value must be a number"); return; } wrapRef.value.scrollTop = value; }; const setScrollLeft = (value) => { if (!isNumber(value)) { debugWarn(COMPONENT_NAME$6, "value must be a number"); return; } wrapRef.value.scrollLeft = value; }; const update = () => { var _a2; (_a2 = barRef.value) == null ? void 0 : _a2.update(); }; vue.watch(() => props.noresize, (noresize) => { if (noresize) { stopResizeObserver == null ? void 0 : stopResizeObserver(); stopResizeListener == null ? void 0 : stopResizeListener(); } else { ({ stop: stopResizeObserver } = useResizeObserver(resizeRef, update)); stopResizeListener = useEventListener("resize", update); } }, { immediate: true }); vue.watch(() => [props.maxHeight, props.height], () => { if (!props.native) vue.nextTick(() => { var _a2; update(); if (wrapRef.value) { (_a2 = barRef.value) == null ? void 0 : _a2.handleScroll(wrapRef.value); } }); }); vue.provide(scrollbarContextKey, vue.reactive({ scrollbarElement: scrollbarRef, wrapElement: wrapRef })); vue.onActivated(() => { if (wrapRef.value) { wrapRef.value.scrollTop = wrapScrollTop; wrapRef.value.scrollLeft = wrapScrollLeft; } }); vue.onMounted(() => { if (!props.native) vue.nextTick(() => { update(); }); }); vue.onUpdated(() => update()); expose({ wrapRef, update, scrollTo, setScrollTop, setScrollLeft, handleScroll }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", { ref_key: "scrollbarRef", ref: scrollbarRef, class: vue.normalizeClass(vue.unref(ns).b()) }, [ vue.createElementVNode("div", { ref_key: "wrapRef", ref: wrapRef, class: vue.normalizeClass(vue.unref(wrapKls)), style: vue.normalizeStyle(vue.unref(wrapStyle)), tabindex: _ctx.tabindex, onScroll: handleScroll }, [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tag), { id: _ctx.id, ref_key: "resizeRef", ref: resizeRef, class: vue.normalizeClass(vue.unref(resizeKls)), style: vue.normalizeStyle(_ctx.viewStyle), role: _ctx.role, "aria-label": _ctx.ariaLabel, "aria-orientation": _ctx.ariaOrientation }, { default: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "default") ]), _: 3 }, 8, ["id", "class", "style", "role", "aria-label", "aria-orientation"])) ], 46, ["tabindex"]), !_ctx.native ? (vue.openBlock(), vue.createBlock(Bar, { key: 0, ref_key: "barRef", ref: barRef, always: _ctx.always, "min-size": _ctx.minSize }, null, 8, ["always", "min-size"])) : vue.createCommentVNode("v-if", true) ], 2); }; } }); var Scrollbar = /* @__PURE__ */ _export_sfc(_sfc_main$Z, [["__file", "scrollbar.vue"]]); const ElScrollbar = withInstall(Scrollbar); const POPPER_INJECTION_KEY = Symbol("popper"); const POPPER_CONTENT_INJECTION_KEY = Symbol("popperContent"); const roleTypes = [ "dialog", "grid", "group", "listbox", "menu", "navigation", "tooltip", "tree" ]; const popperProps = buildProps({ role: { type: String, values: roleTypes, default: "tooltip" } }); const __default__$A = vue.defineComponent({ name: "ElPopper", inheritAttrs: false }); const _sfc_main$Y = /* @__PURE__ */ vue.defineComponent({ ...__default__$A, props: popperProps, setup(__props, { expose }) { const props = __props; const triggerRef = vue.ref(); const popperInstanceRef = vue.ref(); const contentRef = vue.ref(); const referenceRef = vue.ref(); const role = vue.computed(() => props.role); const popperProvides = { triggerRef, popperInstanceRef, contentRef, referenceRef, role }; expose(popperProvides); vue.provide(POPPER_INJECTION_KEY, popperProvides); return (_ctx, _cache) => { return vue.renderSlot(_ctx.$slots, "default"); }; } }); var Popper = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [["__file", "popper.vue"]]); const popperArrowProps = buildProps({ arrowOffset: { type: Number, default: 5 } }); const __default__$z = vue.defineComponent({ name: "ElPopperArrow", inheritAttrs: false }); const _sfc_main$X = /* @__PURE__ */ vue.defineComponent({ ...__default__$z, props: popperArrowProps, setup(__props, { expose }) { const props = __props; const ns = useNamespace("popper"); const { arrowOffset, arrowRef, arrowStyle } = vue.inject(POPPER_CONTENT_INJECTION_KEY, void 0); vue.watch(() => props.arrowOffset, (val) => { arrowOffset.value = val; }); vue.onBeforeUnmount(() => { arrowRef.value = void 0; }); expose({ arrowRef }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("span", { ref_key: "arrowRef", ref: arrowRef, class: vue.normalizeClass(vue.unref(ns).e("arrow")), style: vue.normalizeStyle(vue.unref(arrowStyle)), "data-popper-arrow": "" }, null, 6); }; } }); var ElPopperArrow = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["__file", "arrow.vue"]]); const NAME = "ElOnlyChild"; const OnlyChild = vue.defineComponent({ name: NAME, setup(_2, { slots, attrs }) { var _a2; const forwardRefInjection = vue.inject(FORWARD_REF_INJECTION_KEY); const forwardRefDirective = useForwardRefDirective((_a2 = forwardRefInjection == null ? void 0 : forwardRefInjection.setForwardRef) != null ? _a2 : NOOP); return () => { var _a22; const defaultSlot = (_a22 = slots.default) == null ? void 0 : _a22.call(slots, attrs); if (!defaultSlot) return null; if (defaultSlot.length > 1) { debugWarn(NAME, "requires exact only one valid child."); return null; } const firstLegitNode = findFirstLegitChild(defaultSlot); if (!firstLegitNode) { debugWarn(NAME, "no valid child node found"); return null; } return vue.withDirectives(vue.cloneVNode(firstLegitNode, attrs), [[forwardRefDirective]]); }; } }); function findFirstLegitChild(node) { if (!node) return null; const children = node; for (const child of children) { if (isObject$1(child)) { switch (child.type) { case vue.Comment: continue; case vue.Text: case "svg": return wrapTextContent(child); case vue.Fragment: return findFirstLegitChild(child.children); default: return child; } } return wrapTextContent(child); } return null; } function wrapTextContent(s) { const ns = useNamespace("only-child"); return vue.createVNode("span", { "class": ns.e("content") }, [s]); } 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 }); const __default__$y = vue.defineComponent({ name: "ElPopperTrigger", inheritAttrs: false }); const _sfc_main$W = /* @__PURE__ */ vue.defineComponent({ ...__default__$y, props: popperTriggerProps, setup(__props, { expose }) { const props = __props; const { role, triggerRef } = vue.inject(POPPER_INJECTION_KEY, void 0); useForwardRef(triggerRef); const ariaControls = vue.computed(() => { return ariaHaspopup.value ? props.id : void 0; }); const ariaDescribedby = vue.computed(() => { if (role && role.value === "tooltip") { return props.open && props.id ? props.id : void 0; } return void 0; }); const ariaHaspopup = vue.computed(() => { if (role && role.value !== "tooltip") { return role.value; } return void 0; }); const ariaExpanded = vue.computed(() => { return ariaHaspopup.value ? `${props.open}` : void 0; }); let virtualTriggerAriaStopWatch = void 0; const TRIGGER_ELE_EVENTS = [ "onMouseenter", "onMouseleave", "onClick", "onKeydown", "onFocus", "onBlur", "onContextmenu" ]; vue.onMounted(() => { vue.watch(() => props.virtualRef, (virtualEl) => { if (virtualEl) { triggerRef.value = unrefElement(virtualEl); } }, { immediate: true }); vue.watch(triggerRef, (el, prevEl) => { virtualTriggerAriaStopWatch == null ? void 0 : virtualTriggerAriaStopWatch(); virtualTriggerAriaStopWatch = void 0; if (isElement(el)) { TRIGGER_ELE_EVENTS.forEach((eventName) => { var _a2; const handler = props[eventName]; if (handler) { el.addEventListener(eventName.slice(2).toLowerCase(), handler); (_a2 = prevEl == null ? void 0 : prevEl.removeEventListener) == null ? void 0 : _a2.call(prevEl, eventName.slice(2).toLowerCase(), handler); } }); virtualTriggerAriaStopWatch = 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(prevEl)) { [ "aria-controls", "aria-describedby", "aria-haspopup", "aria-expanded" ].forEach((key) => prevEl.removeAttribute(key)); } }, { immediate: true }); }); vue.onBeforeUnmount(() => { virtualTriggerAriaStopWatch == null ? void 0 : virtualTriggerAriaStopWatch(); virtualTriggerAriaStopWatch = void 0; if (triggerRef.value && isElement(triggerRef.value)) { const el = triggerRef.value; TRIGGER_ELE_EVENTS.forEach((eventName) => { const handler = props[eventName]; if (handler) { el.removeEventListener(eventName.slice(2).toLowerCase(), handler); } }); triggerRef.value = void 0; } }); expose({ triggerRef }); return (_ctx, _cache) => { return !_ctx.virtualTriggering ? (vue.openBlock(), vue.createBlock(vue.unref(OnlyChild), vue.mergeProps({ key: 0 }, _ctx.$attrs, { "aria-controls": vue.unref(ariaControls), "aria-describedby": vue.unref(ariaDescribedby), "aria-expanded": vue.unref(ariaExpanded), "aria-haspopup": vue.unref(ariaHaspopup) }), { default: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "default") ]), _: 3 }, 16, ["aria-controls", "aria-describedby", "aria-expanded", "aria-haspopup"])) : vue.createCommentVNode("v-if", true); }; } }); var ElPopperTrigger = /* @__PURE__ */ _export_sfc(_sfc_main$W, [["__file", "trigger.vue"]]); 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"); const focusReason = vue.ref(); const lastUserFocusTimestamp = vue.ref(0); const lastAutomatedFocusTimestamp = 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); const first2 = getVisibleElement(focusable, container); const last2 = getVisibleElement(focusable.reverse(), container); return [first2, last2]; }; const isSelectable = (element) => { return element instanceof HTMLInputElement && "select" in element; }; const tryFocus = (element, shouldSelect) => { if (element && element.focus) { const prevFocusedElement = document.activeElement; element.focus({ 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 push2 = (layer) => { const currentLayer = stack[0]; if (currentLayer && layer !== currentLayer) { currentLayer.pause(); } stack = removeFromStack(stack, layer); stack.unshift(layer); }; const remove = (layer) => { var _a2, _b; stack = removeFromStack(stack, layer); (_b = (_a2 = stack[0]) == null ? void 0 : _a2.resume) == null ? void 0 : _b.call(_a2); }; return { push: push2, 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 = () => { vue.onMounted(() => { if (focusReasonUserCount === 0) { document.addEventListener("mousedown", notifyFocusReasonPointer); document.addEventListener("touchstart", notifyFocusReasonPointer); document.addEventListener("keydown", notifyFocusReasonKeydown); } focusReasonUserCount++; }); 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 }); }; const _sfc_main$V = 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 = vue.ref(); let lastFocusBeforeTrapped; let lastFocusAfterTrapped; const { focusReason: focusReason2 } = 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 { key, altKey, ctrlKey, metaKey, currentTarget, shiftKey } = e; const { loop } = props; const isTabbing = key === EVENT_CODE.tab && !altKey && !ctrlKey && !metaKey; const currentFocusingEl = document.activeElement; if (isTabbing && currentFocusingEl) { const container = currentTarget; const [first2, last2] = getEdges(container); const isTabbable = first2 && last2; if (!isTabbable) { if (currentFocusingEl === container) { const focusoutPreventedEvent = createFocusOutPreventedEvent({ focusReason: focusReason2.value }); emit("focusout-prevented", focusoutPreventedEvent); if (!focusoutPreventedEvent.defaultPrevented) { e.preventDefault(); } } } else { if (!shiftKey && currentFocusingEl === last2) { const focusoutPreventedEvent = createFocusOutPreventedEvent({ focusReason: focusReason2.value }); emit("focusout-prevented", focusoutPreventedEvent); if (!focusoutPreventedEvent.defaultPrevented) { e.preventDefault(); if (loop) tryFocus(first2, true); } } else if (shiftKey && [first2, container].includes(currentFocusingEl)) { const focusoutPreventedEvent = createFocusOutPreventedEvent({ focusReason: focusReason2.value }); emit("focusout-prevented", focusoutPreventedEvent); if (!focusoutPreventedEvent.defaultPrevented) { e.preventDefault(); if (loop) tryFocus(last2, true); } } } } }; vue.provide(FOCUS_TRAP_INJECTION_KEY, { focusTrapRef: forwardRef, onKeydown }); vue.watch(() => props.focusTrapEl, (focusTrapEl) => { if (focusTrapEl) { forwardRef.value = focusTrapEl; } }, { immediate: true }); vue.watch([forwardRef], ([forwardRef2], [oldForwardRef]) => { if (forwardRef2) { forwardRef2.addEventListener("keydown", onKeydown); forwardRef2.addEventListener("focusin", onFocusIn); forwardRef2.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 = vue.unref(forwardRef); if (!trapContainer) return; const target = e.target; const relatedTarget = e.relatedTarget; const isFocusedInTrap = target && trapContainer.contains(target); if (!props.trapped) { const isPrevFocusedInTrap = relatedTarget && trapContainer.contains(relatedTarget); if (!isPrevFocusedInTrap) { 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 = 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: focusReason2.value }); emit("focusout-prevented", focusoutPreventedEvent); if (!focusoutPreventedEvent.defaultPrevented) { tryFocus(lastFocusAfterTrapped, true); } } }, 0); } } else { const target = e.target; const isFocusedInTrap = target && trapContainer.contains(target); if (!isFocusedInTrap) emit("focusout", e); } }; async function startTrap() { await vue.nextTick(); const trapContainer = vue.unref(forwardRef); if (trapContainer) { focusableStack.push(focusLayer); const prevFocusedElement = trapContainer.contains(document.activeElement) ? lastFocusBeforeTrapped : document.activeElement; lastFocusBeforeTrapped = prevFocusedElement; const isPrevFocusContained = trapContainer.contains(prevFocusedElement); if (!isPrevFocusContained) { const focusEvent = new Event(FOCUS_AFTER_TRAPPED, FOCUS_AFTER_TRAPPED_OPTS); trapContainer.addEventListener(FOCUS_AFTER_TRAPPED, trapOnFocus); trapContainer.dispatchEvent(focusEvent); if (!focusEvent.defaultPrevented) { 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 = vue.unref(forwardRef); if (trapContainer) { trapContainer.removeEventListener(FOCUS_AFTER_TRAPPED, trapOnFocus); const releasedEvent = new CustomEvent(FOCUS_AFTER_RELEASED, { ...FOCUS_AFTER_TRAPPED_OPTS, detail: { focusReason: focusReason2.value } }); trapContainer.addEventListener(FOCUS_AFTER_RELEASED, releaseOnFocus); trapContainer.dispatchEvent(releasedEvent); if (!releasedEvent.defaultPrevented && (focusReason2.value == "keyboard" || !isFocusCausedByUserEvent() || trapContainer.contains(document.activeElement))) { tryFocus(lastFocusBeforeTrapped != null ? lastFocusBeforeTrapped : document.body); } trapContainer.removeEventListener(FOCUS_AFTER_RELEASED, releaseOnFocus); focusableStack.remove(focusLayer); } } vue.onMounted(() => { if (props.trapped) { startTrap(); } vue.watch(() => props.trapped, (trapped) => { if (trapped) { startTrap(); } else { stopTrap(); } }); }); 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; } }); return { onKeydown }; } }); function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) { return vue.renderSlot(_ctx.$slots, "default", { handleKeydown: _ctx.onKeydown }); } var ElFocusTrap = /* @__PURE__ */ _export_sfc(_sfc_main$V, [["render", _sfc_render$8], ["__file", "focus-trap.vue"]]); const POSITIONING_STRATEGIES = ["fixed", "absolute"]; 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" } }); const popperContentProps = buildProps({ ...popperCoreConfigProps, 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: { type: Boolean, default: false }, trapping: { type: Boolean, default: false }, 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"]) }); const popperContentEmits = { mouseenter: (evt) => evt instanceof MouseEvent, mouseleave: (evt) => evt instanceof MouseEvent, focus: () => true, blur: () => true, close: () => true }; const buildPopperOptions = (props, modifiers = []) => { const { placement, strategy, popperOptions } = props; const options = { placement, strategy, ...popperOptions, modifiers: [...genModifiers(props), ...modifiers] }; deriveExtraModifiers(options, popperOptions == null ? void 0 : 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 != null ? offset : 12] } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5, fallbackPlacements } }, { name: "computeStyles", options: { gpuAcceleration } } ]; } function deriveExtraModifiers(options, modifiers) { if (modifiers) { options.modifiers = [...options.modifiers, ...modifiers != null ? modifiers : []]; } } const DEFAULT_ARROW_OFFSET = 0; const usePopperContent = (props) => { const { popperInstanceRef, contentRef, triggerRef, role } = vue.inject(POPPER_INJECTION_KEY, void 0); const arrowRef = vue.ref(); const arrowOffset = vue.ref(); const eventListenerModifier = vue.computed(() => { return { name: "eventListeners", enabled: !!props.visible }; }); const arrowModifier = vue.computed(() => { var _a2; const arrowEl = vue.unref(arrowRef); const offset = (_a2 = vue.unref(arrowOffset)) != null ? _a2 : DEFAULT_ARROW_OFFSET; return { name: "arrow", enabled: !isUndefined$1(arrowEl), options: { element: arrowEl, padding: offset } }; }); const options = vue.computed(() => { return { onFirstUpdate: () => { update(); }, ...buildPopperOptions(props, [ vue.unref(arrowModifier), vue.unref(eventListenerModifier) ]) }; }); const computedReference = vue.computed(() => unwrapMeasurableEl(props.referenceEl) || vue.unref(triggerRef)); const { attributes, state, styles, update, forceUpdate, instanceRef } = usePopper(computedReference, contentRef, options); vue.watch(instanceRef, (instance) => popperInstanceRef.value = instance); vue.onMounted(() => { vue.watch(() => { var _a2; return (_a2 = vue.unref(computedReference)) == null ? void 0 : _a2.getBoundingClientRect(); }, () => { update(); }); }); return { attributes, arrowRef, contentRef, instanceRef, state, styles, role, forceUpdate, update }; }; const usePopperContentDOM = (props, { attributes, styles, role }) => { const { nextZIndex } = useZIndex(); const ns = useNamespace("popper"); const contentAttrs = vue.computed(() => vue.unref(attributes).popper); const contentZIndex = vue.ref(isNumber(props.zIndex) ? props.zIndex : nextZIndex()); const contentClass = vue.computed(() => [ ns.b(), ns.is("pure", props.pure), ns.is(props.effect), props.popperClass ]); const contentStyle = vue.computed(() => { return [ { zIndex: vue.unref(contentZIndex) }, vue.unref(styles).popper, props.popperStyle || {} ]; }); const ariaModal = vue.computed(() => role.value === "dialog" ? "false" : void 0); const arrowStyle = vue.computed(() => vue.unref(styles).arrow || {}); const updateZIndex = () => { contentZIndex.value = isNumber(props.zIndex) ? props.zIndex : nextZIndex(); }; return { ariaModal, arrowStyle, contentAttrs, contentClass, contentStyle, contentZIndex, updateZIndex }; }; const usePopperContentFocusTrap = (props, emit) => { const trapped = vue.ref(false); const focusStartRef = vue.ref(); const onFocusAfterTrapped = () => { emit("focus"); }; const onFocusAfterReleased = (event) => { var _a2; if (((_a2 = event.detail) == null ? void 0 : _a2.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"); }; return { focusStartRef, trapped, onFocusAfterReleased, onFocusAfterTrapped, onFocusInTrap, onFocusoutPrevented, onReleaseRequested }; }; const __default__$x = vue.defineComponent({ name: "ElPopperContent" }); const _sfc_main$U = /* @__PURE__ */ vue.defineComponent({ ...__default__$x, props: popperContentProps, emits: popperContentEmits, setup(__props, { expose, 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 = vue.inject(formItemContextKey, void 0); const arrowOffset = vue.ref(); vue.provide(POPPER_CONTENT_INJECTION_KEY, { arrowStyle, arrowRef, arrowOffset }); if (formItemContext) { 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; } }; vue.onMounted(() => { vue.watch(() => props.triggerTargetEl, (triggerTargetEl, prevTriggerTargetEl) => { triggerTargetAriaStopWatch == null ? void 0 : triggerTargetAriaStopWatch(); triggerTargetAriaStopWatch = void 0; const el = vue.unref(triggerTargetEl || contentRef.value); const prevEl = vue.unref(prevTriggerTargetEl || contentRef.value); if (isElement(el)) { triggerTargetAriaStopWatch = 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(prevEl)) { ["role", "aria-label", "aria-modal", "id"].forEach((key) => { prevEl.removeAttribute(key); }); } }, { immediate: true }); vue.watch(() => props.visible, togglePopperAlive, { immediate: true }); }); vue.onBeforeUnmount(() => { triggerTargetAriaStopWatch == null ? void 0 : triggerTargetAriaStopWatch(); triggerTargetAriaStopWatch = void 0; }); expose({ popperContentRef: contentRef, popperInstanceRef: instanceRef, updatePopper, contentStyle }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({ ref_key: "contentRef", ref: contentRef }, vue.unref(contentAttrs), { style: vue.unref(contentStyle), class: vue.unref(contentClass), tabindex: "-1", onMouseenter: (e) => _ctx.$emit("mouseenter", e), onMouseleave: (e) => _ctx.$emit("mouseleave", e) }), [ vue.createVNode(vue.unref(ElFocusTrap), { trapped: vue.unref(trapped), "trap-on-focus-in": true, "focus-trap-el": vue.unref(contentRef), "focus-start-el": vue.unref(focusStartRef), onFocusAfterTrapped: vue.unref(onFocusAfterTrapped), onFocusAfterReleased: vue.unref(onFocusAfterReleased), onFocusin: vue.unref(onFocusInTrap), onFocusoutPrevented: vue.unref(onFocusoutPrevented), onReleaseRequested: vue.unref(onReleaseRequested) }, { default: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "default") ]), _: 3 }, 8, ["trapped", "focus-trap-el", "focus-start-el", "onFocusAfterTrapped", "onFocusAfterReleased", "onFocusin", "onFocusoutPrevented", "onReleaseRequested"]) ], 16, ["onMouseenter", "onMouseleave"]); }; } }); var ElPopperContent = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["__file", "content.vue"]]); const ElPopper = withInstall(Popper); const TOOLTIP_INJECTION_KEY = Symbol("elTooltip"); const useTooltipContentProps = buildProps({ ...useDelayedToggleProps, ...popperContentProps, appendTo: { type: definePropType([String, Object]) }, 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"]) }); const useTooltipTriggerProps = buildProps({ ...popperTriggerProps, disabled: Boolean, trigger: { type: definePropType([String, Array]), default: "hover" }, triggerKeys: { type: definePropType(Array), default: () => [EVENT_CODE.enter, EVENT_CODE.space] } }); const { useModelToggleProps: useTooltipModelToggleProps, useModelToggleEmits: useTooltipModelToggleEmits, useModelToggle: useTooltipModelToggle } = createModelToggleComposable("visible"); const useTooltipProps = buildProps({ ...popperProps, ...useTooltipModelToggleProps, ...useTooltipContentProps, ...useTooltipTriggerProps, ...popperArrowProps, showArrow: { type: Boolean, default: true } }); const tooltipEmits = [ ...useTooltipModelToggleEmits, "before-show", "before-hide", "show", "hide", "open", "close" ]; const isTriggerType = (trigger, type) => { if (isArray$1(trigger)) { return trigger.includes(type); } return trigger === type; }; const whenTrigger = (trigger, type, handler) => { return (e) => { isTriggerType(vue.unref(trigger), type) && handler(e); }; }; const __default__$w = vue.defineComponent({ name: "ElTooltipTrigger" }); const _sfc_main$T = /* @__PURE__ */ vue.defineComponent({ ...__default__$w, props: useTooltipTriggerProps, setup(__props, { expose }) { const props = __props; const ns = useNamespace("tooltip"); const { controlled, id, open: open2, onOpen, onClose, onToggle } = vue.inject(TOOLTIP_INJECTION_KEY, void 0); const triggerRef = vue.ref(null); const stopWhenControlledOrDisabled = () => { if (vue.unref(controlled) || props.disabled) { return true; } }; const trigger = vue.toRef(props, "trigger"); const onMouseenter = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "hover", onOpen)); 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 } = e; if (props.triggerKeys.includes(code)) { e.preventDefault(); onToggle(e); } }); expose({ triggerRef }); return (_ctx, _cache) => { return vue.openBlock(), vue.createBlock(vue.unref(ElPopperTrigger), { id: vue.unref(id), "virtual-ref": _ctx.virtualRef, open: vue.unref(open2), "virtual-triggering": _ctx.virtualTriggering, class: vue.normalizeClass(vue.unref(ns).e("trigger")), onBlur: vue.unref(onBlur), onClick: vue.unref(onClick), onContextmenu: vue.unref(onContextMenu), onFocus: vue.unref(onFocus), onMouseenter: vue.unref(onMouseenter), onMouseleave: vue.unref(onMouseleave), onKeydown: vue.unref(onKeydown) }, { default: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "default") ]), _: 3 }, 8, ["id", "virtual-ref", "open", "virtual-triggering", "class", "onBlur", "onClick", "onContextmenu", "onFocus", "onMouseenter", "onMouseleave", "onKeydown"]); }; } }); var ElTooltipTrigger = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["__file", "trigger.vue"]]); const teleportProps = buildProps({ to: { type: definePropType([String, Object]), required: true }, disabled: Boolean }); const _sfc_main$S = /* @__PURE__ */ vue.defineComponent({ __name: "teleport", props: teleportProps, setup(__props) { return (_ctx, _cache) => { return _ctx.disabled ? vue.renderSlot(_ctx.$slots, "default", { key: 0 }) : (vue.openBlock(), vue.createBlock(vue.Teleport, { key: 1, to: _ctx.to }, [ vue.renderSlot(_ctx.$slots, "default") ], 8, ["to"])); }; } }); var Teleport = /* @__PURE__ */ _export_sfc(_sfc_main$S, [["__file", "teleport.vue"]]); const ElTeleport = withInstall(Teleport); const __default__$v = vue.defineComponent({ name: "ElTooltipContent", inheritAttrs: false }); const _sfc_main$R = /* @__PURE__ */ vue.defineComponent({ ...__default__$v, props: useTooltipContentProps, setup(__props, { expose }) { const props = __props; const { selector } = usePopperContainerId(); const ns = useNamespace("tooltip"); const contentRef = vue.ref(null); let stopHandle; const { controlled, id, open: open2, trigger, onClose, onOpen, onShow, onHide, onBeforeShow, onBeforeHide } = vue.inject(TOOLTIP_INJECTION_KEY, void 0); const transitionClass = vue.computed(() => { return props.transition || `${ns.namespace.value}-fade-in-linear`; }); const persistentRef = vue.computed(() => { return props.persistent; }); vue.onBeforeUnmount(() => { stopHandle == null ? void 0 : stopHandle(); }); const shouldRender = vue.computed(() => { return vue.unref(persistentRef) ? true : vue.unref(open2); }); const shouldShow = vue.computed(() => { return props.disabled ? false : vue.unref(open2); }); const appendTo = vue.computed(() => { return props.appendTo || selector.value; }); const contentStyle = vue.computed(() => { var _a2; return (_a2 = props.style) != null ? _a2 : {}; }); const ariaHidden = vue.ref(true); const onTransitionLeave = () => { onHide(); ariaHidden.value = true; }; const stopWhenControlled = () => { if (vue.unref(controlled)) return true; }; const onContentEnter = composeEventHandlers(stopWhenControlled, () => { if (props.enterable && vue.unref(trigger) === "hover") { onOpen(); } }); const onContentLeave = composeEventHandlers(stopWhenControlled, () => { if (vue.unref(trigger) === "hover") { onClose(); } }); const onBeforeEnter = () => { var _a2, _b; (_b = (_a2 = contentRef.value) == null ? void 0 : _a2.updatePopper) == null ? void 0 : _b.call(_a2); onBeforeShow == null ? void 0 : onBeforeShow(); }; const onBeforeLeave = () => { onBeforeHide == null ? void 0 : onBeforeHide(); }; const onAfterShow = () => { onShow(); stopHandle = onClickOutside(vue.computed(() => { var _a2; return (_a2 = contentRef.value) == null ? void 0 : _a2.popperContentRef; }), () => { if (vue.unref(controlled)) return; const $trigger = vue.unref(trigger); if ($trigger !== "hover") { onClose(); } }); }; const onBlur = () => { if (!props.virtualTriggering) { onClose(); } }; vue.watch(() => vue.unref(open2), (val) => { if (!val) { stopHandle == null ? void 0 : stopHandle(); } else { ariaHidden.value = false; } }, { flush: "post" }); vue.watch(() => props.content, () => { var _a2, _b; (_b = (_a2 = contentRef.value) == null ? void 0 : _a2.updatePopper) == null ? void 0 : _b.call(_a2); }); expose({ contentRef }); return (_ctx, _cache) => { return vue.openBlock(), vue.createBlock(vue.unref(ElTeleport), { disabled: !_ctx.teleported, to: vue.unref(appendTo) }, { default: vue.withCtx(() => [ vue.createVNode(vue.Transition, { name: vue.unref(transitionClass), onAfterLeave: onTransitionLeave, onBeforeEnter, onAfterEnter: onAfterShow, onBeforeLeave }, { default: vue.withCtx(() => [ vue.unref(shouldRender) ? vue.withDirectives((vue.openBlock(), vue.createBlock(vue.unref(ElPopperContent), vue.mergeProps({ key: 0, id: vue.unref(id), ref_key: "contentRef", ref: contentRef }, _ctx.$attrs, { "aria-label": _ctx.ariaLabel, "aria-hidden": ariaHidden.value, "boundaries-padding": _ctx.boundariesPadding, "fallback-placements": _ctx.fallbackPlacements, "gpu-acceleration": _ctx.gpuAcceleration, offset: _ctx.offset, placement: _ctx.placement, "popper-options": _ctx.popperOptions, strategy: _ctx.strategy, effect: _ctx.effect, enterable: _ctx.enterable, pure: _ctx.pure, "popper-class": _ctx.popperClass, "popper-style": [_ctx.popperStyle, vue.unref(contentStyle)], "reference-el": _ctx.referenceEl, "trigger-target-el": _ctx.triggerTargetEl, visible: vue.unref(shouldShow), "z-index": _ctx.zIndex, onMouseenter: vue.unref(onContentEnter), onMouseleave: vue.unref(onContentLeave), onBlur, onClose: vue.unref(onClose) }), { default: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "default") ]), _: 3 }, 16, ["id", "aria-label", "aria-hidden", "boundaries-padding", "fallback-placements", "gpu-acceleration", "offset", "placement", "popper-options", "strategy", "effect", "enterable", "pure", "popper-class", "popper-style", "reference-el", "trigger-target-el", "visible", "z-index", "onMouseenter", "onMouseleave", "onClose"])), [ [vue.vShow, vue.unref(shouldShow)] ]) : vue.createCommentVNode("v-if", true) ]), _: 3 }, 8, ["name"]) ]), _: 3 }, 8, ["disabled", "to"]); }; } }); var ElTooltipContent = /* @__PURE__ */ _export_sfc(_sfc_main$R, [["__file", "content.vue"]]); const __default__$u = vue.defineComponent({ name: "ElTooltip" }); const _sfc_main$Q = /* @__PURE__ */ vue.defineComponent({ ...__default__$u, props: useTooltipProps, emits: tooltipEmits, setup(__props, { expose, emit }) { const props = __props; usePopperContainer(); const id = useId(); const popperRef = vue.ref(); const contentRef = vue.ref(); const updatePopper = () => { var _a2; const popperComponent = vue.unref(popperRef); if (popperComponent) { (_a2 = popperComponent.popperInstanceRef) == null ? void 0 : _a2.update(); } }; const open2 = vue.ref(false); const toggleReason = vue.ref(); const { show, hide, hasUpdateHandler } = useTooltipModelToggle({ indicator: open2, toggleReason }); const { onOpen, onClose } = useDelayedToggle({ showAfter: vue.toRef(props, "showAfter"), hideAfter: vue.toRef(props, "hideAfter"), autoClose: vue.toRef(props, "autoClose"), open: show, close: hide }); const controlled = vue.computed(() => isBoolean(props.visible) && !hasUpdateHandler.value); vue.provide(TOOLTIP_INJECTION_KEY, { controlled, id, open: vue.readonly(open2), trigger: vue.toRef(props, "trigger"), onOpen: (event) => { onOpen(event); }, onClose: (event) => { onClose(event); }, onToggle: (event) => { if (vue.unref(open2)) { 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 }); vue.watch(() => props.disabled, (disabled) => { if (disabled && open2.value) { open2.value = false; } }); const isFocusInsideContent = (event) => { var _a2, _b; const popperContent = (_b = (_a2 = contentRef.value) == null ? void 0 : _a2.contentRef) == null ? void 0 : _b.popperContentRef; const activeElement = (event == null ? void 0 : event.relatedTarget) || document.activeElement; return popperContent && popperContent.contains(activeElement); }; vue.onDeactivated(() => open2.value && hide()); expose({ popperRef, contentRef, isFocusInsideContent, updatePopper, onOpen, onClose, hide }); return (_ctx, _cache) => { return vue.openBlock(), vue.createBlock(vue.unref(ElPopper), { ref_key: "popperRef", ref: popperRef, role: _ctx.role }, { default: vue.withCtx(() => [ vue.createVNode(ElTooltipTrigger, { disabled: _ctx.disabled, trigger: _ctx.trigger, "trigger-keys": _ctx.triggerKeys, "virtual-ref": _ctx.virtualRef, "virtual-triggering": _ctx.virtualTriggering }, { default: vue.withCtx(() => [ _ctx.$slots.default ? vue.renderSlot(_ctx.$slots, "default", { key: 0 }) : vue.createCommentVNode("v-if", true) ]), _: 3 }, 8, ["disabled", "trigger", "trigger-keys", "virtual-ref", "virtual-triggering"]), vue.createVNode(ElTooltipContent, { ref_key: "contentRef", ref: contentRef, "aria-label": _ctx.ariaLabel, "boundaries-padding": _ctx.boundariesPadding, content: _ctx.content, disabled: _ctx.disabled, effect: _ctx.effect, enterable: _ctx.enterable, "fallback-placements": _ctx.fallbackPlacements, "hide-after": _ctx.hideAfter, "gpu-acceleration": _ctx.gpuAcceleration, offset: _ctx.offset, persistent: _ctx.persistent, "popper-class": _ctx.popperClass, "popper-style": _ctx.popperStyle, placement: _ctx.placement, "popper-options": _ctx.popperOptions, pure: _ctx.pure, "raw-content": _ctx.rawContent, "reference-el": _ctx.referenceEl, "trigger-target-el": _ctx.triggerTargetEl, "show-after": _ctx.showAfter, strategy: _ctx.strategy, teleported: _ctx.teleported, transition: _ctx.transition, "virtual-triggering": _ctx.virtualTriggering, "z-index": _ctx.zIndex, "append-to": _ctx.appendTo }, { default: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "content", {}, () => [ _ctx.rawContent ? (vue.openBlock(), vue.createElementBlock("span", { key: 0, innerHTML: _ctx.content }, null, 8, ["innerHTML"])) : (vue.openBlock(), vue.createElementBlock("span", { key: 1 }, vue.toDisplayString(_ctx.content), 1)) ]), _ctx.showArrow ? (vue.openBlock(), vue.createBlock(vue.unref(ElPopperArrow), { key: 0, "arrow-offset": _ctx.arrowOffset }, null, 8, ["arrow-offset"])) : 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", "pure", "raw-content", "reference-el", "trigger-target-el", "show-after", "strategy", "teleported", "transition", "virtual-triggering", "z-index", "append-to"]) ]), _: 3 }, 8, ["role"]); }; } }); var Tooltip = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [["__file", "tooltip.vue"]]); const ElTooltip = withInstall(Tooltip); const buttonGroupContextKey = Symbol("buttonGroupContextKey"); 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" }, vue.computed(() => props.type === "text")); const buttonGroupContext = vue.inject(buttonGroupContextKey, void 0); const globalConfig2 = useGlobalConfig("button"); const { form } = useFormItem(); const _size = useFormSize(vue.computed(() => buttonGroupContext == null ? void 0 : buttonGroupContext.size)); const _disabled = useFormDisabled(); const _ref = vue.ref(); const slots = vue.useSlots(); const _type = vue.computed(() => props.type || (buttonGroupContext == null ? void 0 : buttonGroupContext.type) || ""); const autoInsertSpace = vue.computed(() => { var _a2, _b, _c; return (_c = (_b = props.autoInsertSpace) != null ? _b : (_a2 = globalConfig2.value) == null ? void 0 : _a2.autoInsertSpace) != null ? _c : false; }); const _props = 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 = vue.computed(() => { var _a2; const defaultSlot = (_a2 = slots.default) == null ? void 0 : _a2.call(slots); if (autoInsertSpace.value && (defaultSlot == null ? void 0 : defaultSlot.length) === 1) { const slot = defaultSlot[0]; if ((slot == null ? void 0 : slot.type) === vue.Text) { const text = slot.children; return new RegExp("^\\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 == null ? void 0 : form.resetFields(); } emit("click", evt); }; return { _disabled, _size, _type, _ref, _props, shouldAddSpace, handleClick }; }; const buttonTypes = [ "default", "primary", "success", "warning", "info", "danger", "text", "" ]; const buttonNativeTypes = ["button", "submit", "reset"]; const buttonProps = buildProps({ size: useSizeProp, disabled: Boolean, 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: Boolean, text: Boolean, link: Boolean, bg: Boolean, autofocus: Boolean, round: Boolean, circle: Boolean, color: String, dark: Boolean, autoInsertSpace: { type: Boolean, default: void 0 }, tag: { type: definePropType([String, Object]), default: "button" } }); const buttonEmits = { click: (evt) => evt instanceof MouseEvent }; function bound01$1(n, max2) { if (isOnePointZero$1(n)) { n = "100%"; } var isPercent = isPercentage$1(n); n = max2 === 360 ? n : Math.min(max2, Math.max(0, parseFloat(n))); if (isPercent) { n = parseInt(String(n * max2), 10) / 100; } if (Math.abs(n - max2) < 1e-6) { return 1; } if (max2 === 360) { n = (n < 0 ? n % max2 + max2 : n % max2) / parseFloat(String(max2)); } else { n = n % max2 / parseFloat(String(max2)); } return n; } function clamp01(val) { return Math.min(1, Math.max(0, val)); } function isOnePointZero$1(n) { return typeof n === "string" && n.indexOf(".") !== -1 && parseFloat(n) === 1; } function isPercentage$1(n) { return typeof n === "string" && n.indexOf("%") !== -1; } function boundAlpha(a) { a = parseFloat(a); if (isNaN(a) || a < 0 || a > 1) { a = 1; } return a; } function convertToPercentage(n) { if (n <= 1) { return "".concat(Number(n) * 100, "%"); } return n; } function pad2(c) { return c.length === 1 ? "0" + c : String(c); } function rgbToRgb(r, g, b) { return { r: bound01$1(r, 255) * 255, g: bound01$1(g, 255) * 255, b: bound01$1(b, 255) * 255 }; } function rgbToHsl(r, g, b) { r = bound01$1(r, 255); g = bound01$1(g, 255); b = bound01$1(b, 255); var max2 = Math.max(r, g, b); var min2 = Math.min(r, g, b); var h2 = 0; var s = 0; var l = (max2 + min2) / 2; if (max2 === min2) { s = 0; h2 = 0; } else { var d = max2 - min2; s = l > 0.5 ? d / (2 - max2 - min2) : d / (max2 + min2); switch (max2) { case r: h2 = (g - b) / d + (g < b ? 6 : 0); break; case g: h2 = (b - r) / d + 2; break; case b: h2 = (r - g) / d + 4; break; } h2 /= 6; } return { h: h2, s, l }; } function hue2rgb(p, q2, t) { if (t < 0) { t += 1; } if (t > 1) { t -= 1; } if (t < 1 / 6) { return p + (q2 - p) * (6 * t); } if (t < 1 / 2) { return q2; } if (t < 2 / 3) { return p + (q2 - p) * (2 / 3 - t) * 6; } return p; } function hslToRgb(h2, s, l) { var r; var g; var b; h2 = bound01$1(h2, 360); s = bound01$1(s, 100); l = bound01$1(l, 100); if (s === 0) { g = l; b = l; r = l; } else { var q2 = l < 0.5 ? l * (1 + s) : l + s - l * s; var p = 2 * l - q2; r = hue2rgb(p, q2, h2 + 1 / 3); g = hue2rgb(p, q2, h2); b = hue2rgb(p, q2, h2 - 1 / 3); } return { r: r * 255, g: g * 255, b: b * 255 }; } function rgbToHsv(r, g, b) { r = bound01$1(r, 255); g = bound01$1(g, 255); b = bound01$1(b, 255); var max2 = Math.max(r, g, b); var min2 = Math.min(r, g, b); var h2 = 0; var v = max2; var d = max2 - min2; var s = max2 === 0 ? 0 : d / max2; if (max2 === min2) { h2 = 0; } else { switch (max2) { case r: h2 = (g - b) / d + (g < b ? 6 : 0); break; case g: h2 = (b - r) / d + 2; break; case b: h2 = (r - g) / d + 4; break; } h2 /= 6; } return { h: h2, s, v }; } function hsvToRgb(h2, s, v) { h2 = bound01$1(h2, 360) * 6; s = bound01$1(s, 100); v = bound01$1(v, 100); var i = Math.floor(h2); var f = h2 - i; var p = v * (1 - s); var q2 = v * (1 - f * s); var t = v * (1 - (1 - f) * s); var mod = i % 6; var r = [v, q2, p, p, t, v][mod]; var g = [t, v, v, q2, p, p][mod]; var b = [p, p, t, v, v, q2][mod]; return { r: r * 255, g: g * 255, b: b * 255 }; } function rgbToHex(r, g, b, allow3Char) { var 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(""); } function rgbaToHex(r, g, b, a, allow4Char) { var 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(""); } function convertDecimalToHex(d) { return Math.round(parseFloat(d) * 255).toString(16); } function convertHexToDecimal(h2) { return parseIntFromHex(h2) / 255; } function parseIntFromHex(val) { return parseInt(val, 16); } function numberInputToObject(color) { return { r: color >> 16, g: (color & 65280) >> 8, b: color & 255 }; } var 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" }; function inputToRGB(color) { var rgb = { r: 0, g: 0, b: 0 }; var a = 1; var s = null; var v = null; var l = null; var ok = false; var 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"; } 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 }; } var CSS_INTEGER = "[-\\+]?\\d+%?"; var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; var CSS_UNIT = "(?:".concat(CSS_NUMBER, ")|(?:").concat(CSS_INTEGER, ")"); var PERMISSIVE_MATCH3 = "[\\s|\\(]+(".concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")\\s*\\)?"); var PERMISSIVE_MATCH4 = "[\\s|\\(]+(".concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")\\s*\\)?"); var 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), 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})$/ }; function stringInputToObject(color) { color = color.trim().toLowerCase(); if (color.length === 0) { return false; } var 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" }; } var 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.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; } function isValidCSSUnit(color) { return Boolean(matchers.CSS_UNIT.exec(String(color))); } var TinyColor = ( /** @class */ function() { function TinyColor2(color, opts) { if (color === void 0) { color = ""; } if (opts === void 0) { opts = {}; } var _a2; if (color instanceof TinyColor2) { return color; } if (typeof color === "number") { color = numberInputToObject(color); } this.originalInput = color; var 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 = (_a2 = opts.format) !== null && _a2 !== void 0 ? _a2 : 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; } TinyColor2.prototype.isDark = function() { return this.getBrightness() < 128; }; TinyColor2.prototype.isLight = function() { return !this.isDark(); }; TinyColor2.prototype.getBrightness = function() { var rgb = this.toRgb(); return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1e3; }; TinyColor2.prototype.getLuminance = function() { var rgb = this.toRgb(); var R2; var G2; var B2; var RsRGB = rgb.r / 255; var GsRGB = rgb.g / 255; var BsRGB = rgb.b / 255; if (RsRGB <= 0.03928) { R2 = RsRGB / 12.92; } else { R2 = Math.pow((RsRGB + 0.055) / 1.055, 2.4); } if (GsRGB <= 0.03928) { G2 = GsRGB / 12.92; } else { G2 = Math.pow((GsRGB + 0.055) / 1.055, 2.4); } if (BsRGB <= 0.03928) { B2 = BsRGB / 12.92; } else { B2 = Math.pow((BsRGB + 0.055) / 1.055, 2.4); } return 0.2126 * R2 + 0.7152 * G2 + 0.0722 * B2; }; TinyColor2.prototype.getAlpha = function() { return this.a; }; TinyColor2.prototype.setAlpha = function(alpha) { this.a = boundAlpha(alpha); this.roundA = Math.round(100 * this.a) / 100; return this; }; TinyColor2.prototype.isMonochrome = function() { var s = this.toHsl().s; return s === 0; }; TinyColor2.prototype.toHsv = function() { var hsv = rgbToHsv(this.r, this.g, this.b); return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this.a }; }; TinyColor2.prototype.toHsvString = function() { var hsv = rgbToHsv(this.r, this.g, this.b); var h2 = Math.round(hsv.h * 360); var s = Math.round(hsv.s * 100); var v = Math.round(hsv.v * 100); return this.a === 1 ? "hsv(".concat(h2, ", ").concat(s, "%, ").concat(v, "%)") : "hsva(".concat(h2, ", ").concat(s, "%, ").concat(v, "%, ").concat(this.roundA, ")"); }; TinyColor2.prototype.toHsl = function() { var hsl = rgbToHsl(this.r, this.g, this.b); return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this.a }; }; TinyColor2.prototype.toHslString = function() { var hsl = rgbToHsl(this.r, this.g, this.b); var h2 = Math.round(hsl.h * 360); var s = Math.round(hsl.s * 100); var l = Math.round(hsl.l * 100); return this.a === 1 ? "hsl(".concat(h2, ", ").concat(s, "%, ").concat(l, "%)") : "hsla(".concat(h2, ", ").concat(s, "%, ").concat(l, "%, ").concat(this.roundA, ")"); }; TinyColor2.prototype.toHex = function(allow3Char) { if (allow3Char === void 0) { allow3Char = false; } return rgbToHex(this.r, this.g, this.b, allow3Char); }; TinyColor2.prototype.toHexString = function(allow3Char) { if (allow3Char === void 0) { allow3Char = false; } return "#" + this.toHex(allow3Char); }; TinyColor2.prototype.toHex8 = function(allow4Char) { if (allow4Char === void 0) { allow4Char = false; } return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char); }; TinyColor2.prototype.toHex8String = function(allow4Char) { if (allow4Char === void 0) { allow4Char = false; } return "#" + this.toHex8(allow4Char); }; TinyColor2.prototype.toHexShortString = function(allowShortChar) { if (allowShortChar === void 0) { allowShortChar = false; } return this.a === 1 ? this.toHexString(allowShortChar) : this.toHex8String(allowShortChar); }; TinyColor2.prototype.toRgb = function() { return { r: Math.round(this.r), g: Math.round(this.g), b: Math.round(this.b), a: this.a }; }; TinyColor2.prototype.toRgbString = function() { var r = Math.round(this.r); var g = Math.round(this.g); var b = Math.round(this.b); return this.a === 1 ? "rgb(".concat(r, ", ").concat(g, ", ").concat(b, ")") : "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(this.roundA, ")"); }; TinyColor2.prototype.toPercentageRgb = function() { var fmt = function(x) { return "".concat(Math.round(bound01$1(x, 255) * 100), "%"); }; return { r: fmt(this.r), g: fmt(this.g), b: fmt(this.b), a: this.a }; }; TinyColor2.prototype.toPercentageRgbString = function() { var rnd = function(x) { return Math.round(bound01$1(x, 255) * 100); }; return this.a === 1 ? "rgb(".concat(rnd(this.r), "%, ").concat(rnd(this.g), "%, ").concat(rnd(this.b), "%)") : "rgba(".concat(rnd(this.r), "%, ").concat(rnd(this.g), "%, ").concat(rnd(this.b), "%, ").concat(this.roundA, ")"); }; TinyColor2.prototype.toName = function() { if (this.a === 0) { return "transparent"; } if (this.a < 1) { return false; } var hex = "#" + rgbToHex(this.r, this.g, this.b, false); for (var _i = 0, _a2 = Object.entries(names); _i < _a2.length; _i++) { var _b = _a2[_i], key = _b[0], value = _b[1]; if (hex === value) { return key; } } return false; }; TinyColor2.prototype.toString = function(format) { var formatSet = Boolean(format); format = format !== null && format !== void 0 ? format : this.format; var formattedString = false; var hasAlpha = this.a < 1 && this.a >= 0; var needsAlphaFormat = !formatSet && hasAlpha && (format.startsWith("hex") || format === "name"); if (needsAlphaFormat) { 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(); } return formattedString || this.toHexString(); }; TinyColor2.prototype.toNumber = function() { return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b); }; TinyColor2.prototype.clone = function() { return new TinyColor2(this.toString()); }; TinyColor2.prototype.lighten = function(amount) { if (amount === void 0) { amount = 10; } var hsl = this.toHsl(); hsl.l += amount / 100; hsl.l = clamp01(hsl.l); return new TinyColor2(hsl); }; TinyColor2.prototype.brighten = function(amount) { if (amount === void 0) { amount = 10; } var 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 TinyColor2(rgb); }; TinyColor2.prototype.darken = function(amount) { if (amount === void 0) { amount = 10; } var hsl = this.toHsl(); hsl.l -= amount / 100; hsl.l = clamp01(hsl.l); return new TinyColor2(hsl); }; TinyColor2.prototype.tint = function(amount) { if (amount === void 0) { amount = 10; } return this.mix("white", amount); }; TinyColor2.prototype.shade = function(amount) { if (amount === void 0) { amount = 10; } return this.mix("black", amount); }; TinyColor2.prototype.desaturate = function(amount) { if (amount === void 0) { amount = 10; } var hsl = this.toHsl(); hsl.s -= amount / 100; hsl.s = clamp01(hsl.s); return new TinyColor2(hsl); }; TinyColor2.prototype.saturate = function(amount) { if (amount === void 0) { amount = 10; } var hsl = this.toHsl(); hsl.s += amount / 100; hsl.s = clamp01(hsl.s); return new TinyColor2(hsl); }; TinyColor2.prototype.greyscale = function() { return this.desaturate(100); }; TinyColor2.prototype.spin = function(amount) { var hsl = this.toHsl(); var hue = (hsl.h + amount) % 360; hsl.h = hue < 0 ? 360 + hue : hue; return new TinyColor2(hsl); }; TinyColor2.prototype.mix = function(color, amount) { if (amount === void 0) { amount = 50; } var rgb1 = this.toRgb(); var rgb2 = new TinyColor2(color).toRgb(); var p = amount / 100; var rgba = { 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 }; return new TinyColor2(rgba); }; TinyColor2.prototype.analogous = function(results, slices) { if (results === void 0) { results = 6; } if (slices === void 0) { slices = 30; } var hsl = this.toHsl(); var part = 360 / slices; var ret = [this]; for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results; ) { hsl.h = (hsl.h + part) % 360; ret.push(new TinyColor2(hsl)); } return ret; }; TinyColor2.prototype.complement = function() { var hsl = this.toHsl(); hsl.h = (hsl.h + 180) % 360; return new TinyColor2(hsl); }; TinyColor2.prototype.monochromatic = function(results) { if (results === void 0) { results = 6; } var hsv = this.toHsv(); var h2 = hsv.h; var s = hsv.s; var v = hsv.v; var res = []; var modification = 1 / results; while (results--) { res.push(new TinyColor2({ h: h2, s, v })); v = (v + modification) % 1; } return res; }; TinyColor2.prototype.splitcomplement = function() { var hsl = this.toHsl(); var h2 = hsl.h; return [ this, new TinyColor2({ h: (h2 + 72) % 360, s: hsl.s, l: hsl.l }), new TinyColor2({ h: (h2 + 216) % 360, s: hsl.s, l: hsl.l }) ]; }; TinyColor2.prototype.onBackground = function(background) { var fg = this.toRgb(); var bg = new TinyColor2(background).toRgb(); var alpha = fg.a + bg.a * (1 - fg.a); return new TinyColor2({ 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 }); }; TinyColor2.prototype.triad = function() { return this.polyad(3); }; TinyColor2.prototype.tetrad = function() { return this.polyad(4); }; TinyColor2.prototype.polyad = function(n) { var hsl = this.toHsl(); var h2 = hsl.h; var result2 = [this]; var increment = 360 / n; for (var i = 1; i < n; i++) { result2.push(new TinyColor2({ h: (h2 + i * increment) % 360, s: hsl.s, l: hsl.l })); } return result2; }; TinyColor2.prototype.equals = function(color) { return this.toRgbString() === new TinyColor2(color).toRgbString(); }; return TinyColor2; }() ); function darken(color, amount = 20) { return color.mix("#141414", amount).toString(); } function useButtonCustomStyle(props) { const _disabled = useFormDisabled(); const ns = useNamespace("button"); return 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 { 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; }); } const __default__$t = vue.defineComponent({ name: "ElButton" }); const _sfc_main$P = /* @__PURE__ */ vue.defineComponent({ ...__default__$t, props: buttonProps, emits: buttonEmits, setup(__props, { expose, emit }) { const props = __props; const buttonStyle = useButtonCustomStyle(props); const ns = useNamespace("button"); const { _ref, _size, _type, _disabled, _props, shouldAddSpace, handleClick } = useButton(props, emit); const buttonKls = 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", props.plain), ns.is("round", props.round), ns.is("circle", props.circle), ns.is("text", props.text), 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 vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tag), vue.mergeProps({ ref_key: "_ref", ref: _ref }, vue.unref(_props), { class: vue.unref(buttonKls), style: vue.unref(buttonStyle), onClick: vue.unref(handleClick) }), { default: vue.withCtx(() => [ _ctx.loading ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [ _ctx.$slots.loading ? vue.renderSlot(_ctx.$slots, "loading", { key: 0 }) : (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 1, class: vue.normalizeClass(vue.unref(ns).is("loading")) }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.loadingIcon))) ]), _: 1 }, 8, ["class"])) ], 64)) : _ctx.icon || _ctx.$slots.icon ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 1 }, { default: vue.withCtx(() => [ _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.icon), { key: 0 })) : vue.renderSlot(_ctx.$slots, "icon", { key: 1 }) ]), _: 3 })) : vue.createCommentVNode("v-if", true), _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("span", { key: 2, class: vue.normalizeClass({ [vue.unref(ns).em("text", "expand")]: vue.unref(shouldAddSpace) }) }, [ vue.renderSlot(_ctx.$slots, "default") ], 2)) : vue.createCommentVNode("v-if", true) ]), _: 3 }, 16, ["class", "style", "onClick"]); }; } }); var Button = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["__file", "button.vue"]]); const buttonGroupProps = { size: buttonProps.size, type: buttonProps.type }; const __default__$s = vue.defineComponent({ name: "ElButtonGroup" }); const _sfc_main$O = /* @__PURE__ */ vue.defineComponent({ ...__default__$s, props: buttonGroupProps, setup(__props) { const props = __props; vue.provide(buttonGroupContextKey, vue.reactive({ size: vue.toRef(props, "size"), type: vue.toRef(props, "type") })); const ns = useNamespace("button"); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass(vue.unref(ns).b("group")) }, [ vue.renderSlot(_ctx.$slots, "default") ], 2); }; } }); var ButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["__file", "button-group.vue"]]); const ElButton = withInstall(Button, { ButtonGroup }); withNoopInstall(ButtonGroup); 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 (Array.isArray(binding.arg)) { excludes = binding.arg; } else if (isElement(binding.arg)) { excludes.push(binding.arg); } return function(mouseup, mousedown) { const popperRef = binding.instance.popperRef; const mouseUpTarget = mouseup.target; const mouseDownTarget = mousedown == null ? void 0 : 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 == null ? void 0 : 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); } }; const REPEAT_INTERVAL = 100; const REPEAT_DELAY = 600; const vRepeatClick = { beforeMount(el, binding) { const value = binding.value; const { interval = REPEAT_INTERVAL, delay: delay2 = 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; } }; el.addEventListener("mousedown", (evt) => { if (evt.button !== 0) return; clear(); handler(); document.addEventListener("mouseup", () => clear(), { once: true }); delayId = setTimeout(() => { intervalId = setInterval(() => { handler(); }, interval); }, delay2); }); } }; const FOCUSABLE_CHILDREN = "_trap-focus-children"; const FOCUS_STACK = []; const FOCUS_HANDLER = (e) => { if (FOCUS_STACK.length === 0) return; const focusableElement = FOCUS_STACK[FOCUS_STACK.length - 1][FOCUSABLE_CHILDREN]; if (focusableElement.length > 0 && e.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) { vue.nextTick(() => { el[FOCUSABLE_CHILDREN] = obtainAllFocusableElements$1(el); }); }, unmounted() { FOCUS_STACK.shift(); if (FOCUS_STACK.length === 0) { document.removeEventListener("keydown", FOCUS_HANDLER); } } }; const cardProps = buildProps({ header: { type: String, default: "" }, footer: { type: String, default: "" }, bodyStyle: { type: definePropType([String, Object, Array]), default: "" }, bodyClass: String, shadow: { type: String, values: ["always", "hover", "never"], default: "always" } }); const __default__$r = vue.defineComponent({ name: "ElCard" }); const _sfc_main$N = /* @__PURE__ */ vue.defineComponent({ ...__default__$r, props: cardProps, setup(__props) { const ns = useNamespace("card"); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass([vue.unref(ns).b(), vue.unref(ns).is(`${_ctx.shadow}-shadow`)]) }, [ _ctx.$slots.header || _ctx.header ? (vue.openBlock(), vue.createElementBlock("div", { key: 0, class: vue.normalizeClass(vue.unref(ns).e("header")) }, [ vue.renderSlot(_ctx.$slots, "header", {}, () => [ vue.createTextVNode(vue.toDisplayString(_ctx.header), 1) ]) ], 2)) : vue.createCommentVNode("v-if", true), vue.createElementVNode("div", { class: vue.normalizeClass([vue.unref(ns).e("body"), _ctx.bodyClass]), style: vue.normalizeStyle(_ctx.bodyStyle) }, [ vue.renderSlot(_ctx.$slots, "default") ], 6), _ctx.$slots.footer || _ctx.footer ? (vue.openBlock(), vue.createElementBlock("div", { key: 1, class: vue.normalizeClass(vue.unref(ns).e("footer")) }, [ vue.renderSlot(_ctx.$slots, "footer", {}, () => [ vue.createTextVNode(vue.toDisplayString(_ctx.footer), 1) ]) ], 2)) : vue.createCommentVNode("v-if", true) ], 2); }; } }); var Card = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["__file", "card.vue"]]); const ElCard = withInstall(Card); 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: Boolean, 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 }, ...useAriaProps(["ariaControls"]) }; const checkboxEmits = { [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val), change: (val) => isString(val) || isNumber(val) || isBoolean(val) }; const checkboxGroupContextKey = Symbol("checkboxGroupContextKey"); const useCheckboxDisabled = ({ model, isChecked }) => { const checkboxGroup = vue.inject(checkboxGroupContextKey, void 0); const isLimitDisabled = vue.computed(() => { var _a2, _b; const max2 = (_a2 = checkboxGroup == null ? void 0 : checkboxGroup.max) == null ? void 0 : _a2.value; const min2 = (_b = checkboxGroup == null ? void 0 : checkboxGroup.min) == null ? void 0 : _b.value; return !isUndefined(max2) && model.value.length >= max2 && !isChecked.value || !isUndefined(min2) && model.value.length <= min2 && isChecked.value; }); const isDisabled = useFormDisabled(vue.computed(() => (checkboxGroup == null ? void 0 : checkboxGroup.disabled.value) || isLimitDisabled.value)); return { isDisabled, isLimitDisabled }; }; const useCheckboxEvent = (props, { model, isLimitExceeded, hasOwnLabel, isDisabled, isLabeledByFormItem }) => { const checkboxGroup = vue.inject(checkboxGroupContextKey, void 0); const { formItem } = useFormItem(); const { emit } = vue.getCurrentInstance(); function getLabeledValue(value) { var _a2, _b, _c, _d; return [true, props.trueValue, props.trueLabel].includes(value) ? (_b = (_a2 = props.trueValue) != null ? _a2 : props.trueLabel) != null ? _b : true : (_d = (_c = props.falseValue) != null ? _c : props.falseLabel) != null ? _d : false; } function emitChangeEvent(checked, e) { emit("change", getLabeledValue(checked), e); } function handleChange(e) { if (isLimitExceeded.value) return; const target = e.target; emit("change", getLabeledValue(target.checked), e); } async function onClickRoot(e) { if (isLimitExceeded.value) return; if (!hasOwnLabel.value && !isDisabled.value && isLabeledByFormItem.value) { const eventTargets = e.composedPath(); const hasLabel = eventTargets.some((item) => item.tagName === "LABEL"); if (!hasLabel) { model.value = getLabeledValue([false, props.falseValue, props.falseLabel].includes(model.value)); await vue.nextTick(); emitChangeEvent(model.value, e); } } } const validateEvent = vue.computed(() => (checkboxGroup == null ? void 0 : checkboxGroup.validateEvent) || props.validateEvent); vue.watch(() => props.modelValue, () => { if (validateEvent.value) { formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn(err)); } }); return { handleChange, onClickRoot }; }; const useCheckboxModel = (props) => { const selfModel = vue.ref(false); const { emit } = vue.getCurrentInstance(); const checkboxGroup = vue.inject(checkboxGroupContextKey, void 0); const isGroup = vue.computed(() => isUndefined(checkboxGroup) === false); const isLimitExceeded = vue.ref(false); const model = vue.computed({ get() { var _a2, _b; return isGroup.value ? (_a2 = checkboxGroup == null ? void 0 : checkboxGroup.modelValue) == null ? void 0 : _a2.value : (_b = props.modelValue) != null ? _b : selfModel.value; }, set(val) { var _a2, _b; if (isGroup.value && isArray$1(val)) { isLimitExceeded.value = ((_a2 = checkboxGroup == null ? void 0 : checkboxGroup.max) == null ? void 0 : _a2.value) !== void 0 && val.length > (checkboxGroup == null ? void 0 : checkboxGroup.max.value) && val.length > model.value.length; isLimitExceeded.value === false && ((_b = checkboxGroup == null ? void 0 : checkboxGroup.changeEvent) == null ? void 0 : _b.call(checkboxGroup, val)); } else { emit(UPDATE_MODEL_EVENT, val); selfModel.value = val; } } }); return { model, isGroup, isLimitExceeded }; }; const useCheckboxStatus = (props, slots, { model }) => { const checkboxGroup = vue.inject(checkboxGroupContextKey, void 0); const isFocused = vue.ref(false); const actualValue = vue.computed(() => { if (!isPropAbsent(props.value)) { return props.value; } return props.label; }); const isChecked = 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(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; } }); const checkboxButtonSize = useFormSize(vue.computed(() => { var _a2; return (_a2 = checkboxGroup == null ? void 0 : checkboxGroup.size) == null ? void 0 : _a2.value; }), { prop: true }); const checkboxSize = useFormSize(vue.computed(() => { var _a2; return (_a2 = checkboxGroup == null ? void 0 : checkboxGroup.size) == null ? void 0 : _a2.value; })); const hasOwnLabel = vue.computed(() => { return !!slots.default || !isPropAbsent(actualValue.value); }); return { checkboxButtonSize, isChecked, isFocused, checkboxSize, hasOwnLabel, actualValue }; }; 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() { var _a2, _b; if (isArray$1(model.value) && !model.value.includes(actualValue.value)) { model.value.push(actualValue.value); } else { model.value = (_b = (_a2 = props.trueValue) != null ? _a2 : props.trueLabel) != null ? _b : 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" }, 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" }, 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" }, vue.computed(() => !!props.falseLabel)); return { inputId, isLabeledByFormItem, isChecked, isDisabled, isFocused, checkboxButtonSize, checkboxSize, hasOwnLabel, model, actualValue, handleChange, onClickRoot }; }; const __default__$q = vue.defineComponent({ name: "ElCheckbox" }); const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({ ...__default__$q, props: checkboxProps, emits: checkboxEmits, setup(__props) { const props = __props; const slots = vue.useSlots(); const { inputId, isLabeledByFormItem, isChecked, isDisabled, isFocused, checkboxSize, hasOwnLabel, model, actualValue, handleChange, onClickRoot } = useCheckbox(props, slots); const ns = useNamespace("checkbox"); const compKls = 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 = 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 vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(!vue.unref(hasOwnLabel) && vue.unref(isLabeledByFormItem) ? "span" : "label"), { class: vue.normalizeClass(vue.unref(compKls)), "aria-controls": _ctx.indeterminate ? _ctx.ariaControls : null, onClick: vue.unref(onClickRoot) }, { default: vue.withCtx(() => { var _a2, _b, _c, _d; return [ vue.createElementVNode("span", { class: vue.normalizeClass(vue.unref(spanKls)) }, [ _ctx.trueValue || _ctx.falseValue || _ctx.trueLabel || _ctx.falseLabel ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", { key: 0, id: vue.unref(inputId), "onUpdate:modelValue": ($event) => vue.isRef(model) ? model.value = $event : null, class: vue.normalizeClass(vue.unref(ns).e("original")), type: "checkbox", indeterminate: _ctx.indeterminate, name: _ctx.name, tabindex: _ctx.tabindex, disabled: vue.unref(isDisabled), "true-value": (_b = (_a2 = _ctx.trueValue) != null ? _a2 : _ctx.trueLabel) != null ? _b : true, "false-value": (_d = (_c = _ctx.falseValue) != null ? _c : _ctx.falseLabel) != null ? _d : false, onChange: vue.unref(handleChange), onFocus: ($event) => isFocused.value = true, onBlur: ($event) => isFocused.value = false, onClick: vue.withModifiers(() => { }, ["stop"]) }, null, 42, ["id", "onUpdate:modelValue", "indeterminate", "name", "tabindex", "disabled", "true-value", "false-value", "onChange", "onFocus", "onBlur", "onClick"])), [ [vue.vModelCheckbox, vue.unref(model)] ]) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", { key: 1, id: vue.unref(inputId), "onUpdate:modelValue": ($event) => vue.isRef(model) ? model.value = $event : null, class: vue.normalizeClass(vue.unref(ns).e("original")), type: "checkbox", indeterminate: _ctx.indeterminate, disabled: vue.unref(isDisabled), value: vue.unref(actualValue), name: _ctx.name, tabindex: _ctx.tabindex, onChange: vue.unref(handleChange), onFocus: ($event) => isFocused.value = true, onBlur: ($event) => isFocused.value = false, onClick: vue.withModifiers(() => { }, ["stop"]) }, null, 42, ["id", "onUpdate:modelValue", "indeterminate", "disabled", "value", "name", "tabindex", "onChange", "onFocus", "onBlur", "onClick"])), [ [vue.vModelCheckbox, vue.unref(model)] ]), vue.createElementVNode("span", { class: vue.normalizeClass(vue.unref(ns).e("inner")) }, null, 2) ], 2), vue.unref(hasOwnLabel) ? (vue.openBlock(), vue.createElementBlock("span", { key: 0, class: vue.normalizeClass(vue.unref(ns).e("label")) }, [ vue.renderSlot(_ctx.$slots, "default"), !_ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [ vue.createTextVNode(vue.toDisplayString(_ctx.label), 1) ], 64)) : vue.createCommentVNode("v-if", true) ], 2)) : vue.createCommentVNode("v-if", true) ]; }), _: 3 }, 8, ["class", "aria-controls", "onClick"]); }; } }); var Checkbox = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["__file", "checkbox.vue"]]); const __default__$p = vue.defineComponent({ name: "ElCheckboxButton" }); const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({ ...__default__$p, props: checkboxProps, emits: checkboxEmits, setup(__props) { const props = __props; const slots = vue.useSlots(); const { isFocused, isChecked, isDisabled, checkboxButtonSize, model, actualValue, handleChange } = useCheckbox(props, slots); const checkboxGroup = vue.inject(checkboxGroupContextKey, void 0); const ns = useNamespace("checkbox"); const activeStyle = vue.computed(() => { var _a2, _b, _c, _d; const fillValue = (_b = (_a2 = checkboxGroup == null ? void 0 : checkboxGroup.fill) == null ? void 0 : _a2.value) != null ? _b : ""; return { backgroundColor: fillValue, borderColor: fillValue, color: (_d = (_c = checkboxGroup == null ? void 0 : checkboxGroup.textColor) == null ? void 0 : _c.value) != null ? _d : "", boxShadow: fillValue ? `-1px 0 0 0 ${fillValue}` : void 0 }; }); const labelKls = 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) => { var _a2, _b, _c, _d; return vue.openBlock(), vue.createElementBlock("label", { class: vue.normalizeClass(vue.unref(labelKls)) }, [ _ctx.trueValue || _ctx.falseValue || _ctx.trueLabel || _ctx.falseLabel ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", { key: 0, "onUpdate:modelValue": ($event) => vue.isRef(model) ? model.value = $event : null, class: vue.normalizeClass(vue.unref(ns).be("button", "original")), type: "checkbox", name: _ctx.name, tabindex: _ctx.tabindex, disabled: vue.unref(isDisabled), "true-value": (_b = (_a2 = _ctx.trueValue) != null ? _a2 : _ctx.trueLabel) != null ? _b : true, "false-value": (_d = (_c = _ctx.falseValue) != null ? _c : _ctx.falseLabel) != null ? _d : false, onChange: vue.unref(handleChange), onFocus: ($event) => isFocused.value = true, onBlur: ($event) => isFocused.value = false, onClick: vue.withModifiers(() => { }, ["stop"]) }, null, 42, ["onUpdate:modelValue", "name", "tabindex", "disabled", "true-value", "false-value", "onChange", "onFocus", "onBlur", "onClick"])), [ [vue.vModelCheckbox, vue.unref(model)] ]) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", { key: 1, "onUpdate:modelValue": ($event) => vue.isRef(model) ? model.value = $event : null, class: vue.normalizeClass(vue.unref(ns).be("button", "original")), type: "checkbox", name: _ctx.name, tabindex: _ctx.tabindex, disabled: vue.unref(isDisabled), value: vue.unref(actualValue), onChange: vue.unref(handleChange), onFocus: ($event) => isFocused.value = true, onBlur: ($event) => isFocused.value = false, onClick: vue.withModifiers(() => { }, ["stop"]) }, null, 42, ["onUpdate:modelValue", "name", "tabindex", "disabled", "value", "onChange", "onFocus", "onBlur", "onClick"])), [ [vue.vModelCheckbox, vue.unref(model)] ]), _ctx.$slots.default || _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", { key: 2, class: vue.normalizeClass(vue.unref(ns).be("button", "inner")), style: vue.normalizeStyle(vue.unref(isChecked) ? vue.unref(activeStyle) : void 0) }, [ vue.renderSlot(_ctx.$slots, "default", {}, () => [ vue.createTextVNode(vue.toDisplayString(_ctx.label), 1) ]) ], 6)) : vue.createCommentVNode("v-if", true) ], 2); }; } }); var CheckboxButton = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["__file", "checkbox-button.vue"]]); const checkboxGroupProps = buildProps({ modelValue: { type: definePropType(Array), default: () => [] }, disabled: Boolean, min: Number, max: Number, size: useSizeProp, fill: String, textColor: String, tag: { type: String, default: "div" }, validateEvent: { type: Boolean, default: true }, ...useAriaProps(["ariaLabel"]) }); const checkboxGroupEmits = { [UPDATE_MODEL_EVENT]: (val) => isArray$1(val), change: (val) => isArray$1(val) }; const __default__$o = vue.defineComponent({ name: "ElCheckboxGroup" }); const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({ ...__default__$o, props: checkboxGroupProps, emits: checkboxGroupEmits, setup(__props, { emit }) { const props = __props; const ns = useNamespace("checkbox"); const { formItem } = useFormItem(); const { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, { formItemContext: formItem }); const changeEvent = async (value) => { emit(UPDATE_MODEL_EVENT, value); await vue.nextTick(); emit("change", value); }; const modelValue = vue.computed({ get() { return props.modelValue; }, set(val) { changeEvent(val); } }); vue.provide(checkboxGroupContextKey, { ...pick(vue.toRefs(props), [ "size", "min", "max", "disabled", "validateEvent", "fill", "textColor" ]), modelValue, changeEvent }); vue.watch(() => props.modelValue, () => { if (props.validateEvent) { formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn(err)); } }); return (_ctx, _cache) => { var _a2; return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tag), { id: vue.unref(groupId), class: vue.normalizeClass(vue.unref(ns).b("group")), role: "group", "aria-label": !vue.unref(isLabeledByFormItem) ? _ctx.ariaLabel || "checkbox-group" : void 0, "aria-labelledby": vue.unref(isLabeledByFormItem) ? (_a2 = vue.unref(formItem)) == null ? void 0 : _a2.labelId : void 0 }, { default: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "default") ]), _: 3 }, 8, ["id", "class", "aria-label", "aria-labelledby"]); }; } }); var CheckboxGroup = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["__file", "checkbox-group.vue"]]); const ElCheckbox = withInstall(Checkbox, { CheckboxButton, CheckboxGroup }); withNoopInstall(CheckboxButton); withNoopInstall(CheckboxGroup); 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 }; const __default__$n = vue.defineComponent({ name: "ElTag" }); const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({ ...__default__$n, props: tagProps, emits: tagEmits, setup(__props, { emit }) { const props = __props; const tagSize = useFormSize(); const ns = useNamespace("tag"); const containerKls = 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) => { vnode.component.subTree.component.bum = null; }; return (_ctx, _cache) => { return _ctx.disableTransitions ? (vue.openBlock(), vue.createElementBlock("span", { key: 0, class: vue.normalizeClass(vue.unref(containerKls)), style: vue.normalizeStyle({ backgroundColor: _ctx.color }), onClick: handleClick }, [ vue.createElementVNode("span", { class: vue.normalizeClass(vue.unref(ns).e("content")) }, [ vue.renderSlot(_ctx.$slots, "default") ], 2), _ctx.closable ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 0, class: vue.normalizeClass(vue.unref(ns).e("close")), onClick: vue.withModifiers(handleClose, ["stop"]) }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(close_default)) ]), _: 1 }, 8, ["class", "onClick"])) : vue.createCommentVNode("v-if", true) ], 6)) : (vue.openBlock(), vue.createBlock(vue.Transition, { key: 1, name: `${vue.unref(ns).namespace.value}-zoom-in-center`, appear: "", onVnodeMounted: handleVNodeMounted }, { default: vue.withCtx(() => [ vue.createElementVNode("span", { class: vue.normalizeClass(vue.unref(containerKls)), style: vue.normalizeStyle({ backgroundColor: _ctx.color }), onClick: handleClick }, [ vue.createElementVNode("span", { class: vue.normalizeClass(vue.unref(ns).e("content")) }, [ vue.renderSlot(_ctx.$slots, "default") ], 2), _ctx.closable ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 0, class: vue.normalizeClass(vue.unref(ns).e("close")), onClick: vue.withModifiers(handleClose, ["stop"]) }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(close_default)) ]), _: 1 }, 8, ["class", "onClick"])) : vue.createCommentVNode("v-if", true) ], 6) ]), _: 3 }, 8, ["name"])); }; } }); var Tag = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["__file", "tag.vue"]]); const ElTag = withInstall(Tag); const rowContextKey = Symbol("rowContextKey"); const RowJustify = [ "start", "center", "end", "space-around", "space-between", "space-evenly" ]; const RowAlign = ["top", "middle", "bottom"]; 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 } }); const __default__$m = vue.defineComponent({ name: "ElRow" }); const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({ ...__default__$m, props: rowProps, setup(__props) { const props = __props; const ns = useNamespace("row"); const gutter = vue.computed(() => props.gutter); vue.provide(rowContextKey, { gutter }); const style = vue.computed(() => { const styles = {}; if (!props.gutter) { return styles; } styles.marginRight = styles.marginLeft = `-${props.gutter / 2}px`; return styles; }); const rowKls = vue.computed(() => [ ns.b(), ns.is(`justify-${props.justify}`, props.justify !== "start"), ns.is(`align-${props.align}`, !!props.align) ]); return (_ctx, _cache) => { return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tag), { class: vue.normalizeClass(vue.unref(rowKls)), style: vue.normalizeStyle(vue.unref(style)) }, { default: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "default") ]), _: 3 }, 8, ["class", "style"]); }; } }); var Row = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["__file", "row.vue"]]); const ElRow = withInstall(Row); 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({}) } }); const __default__$l = vue.defineComponent({ name: "ElCol" }); const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({ ...__default__$l, props: colProps, setup(__props) { const props = __props; const { gutter } = vue.inject(rowContextKey, { gutter: vue.computed(() => 0) }); const ns = useNamespace("col"); const style = vue.computed(() => { const styles = {}; if (gutter.value) { styles.paddingLeft = styles.paddingRight = `${gutter.value / 2}px`; } return styles; }); const colKls = vue.computed(() => { const classes = []; const pos = ["span", "offset", "pull", "push"]; pos.forEach((prop) => { const size2 = props[prop]; if (isNumber(size2)) { if (prop === "span") classes.push(ns.b(`${props[prop]}`)); else if (size2 > 0) classes.push(ns.b(`${prop}-${props[prop]}`)); } }); const sizes = ["xs", "sm", "md", "lg", "xl"]; sizes.forEach((size2) => { if (isNumber(props[size2])) { classes.push(ns.b(`${size2}-${props[size2]}`)); } else if (isObject$1(props[size2])) { Object.entries(props[size2]).forEach(([prop, sizeProp]) => { classes.push(prop !== "span" ? ns.b(`${size2}-${prop}-${sizeProp}`) : ns.b(`${size2}-${sizeProp}`)); }); } }); if (gutter.value) { classes.push(ns.is("guttered")); } return [ns.b(), classes]; }); return (_ctx, _cache) => { return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tag), { class: vue.normalizeClass(vue.unref(colKls)), style: vue.normalizeStyle(vue.unref(style)) }, { default: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "default") ]), _: 3 }, 8, ["class", "style"]); }; } }); var Col = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["__file", "col.vue"]]); const ElCol = withInstall(Col); const emitChangeFn = (value) => isNumber(value) || isString(value) || isArray$1(value); const collapseProps = buildProps({ accordion: Boolean, modelValue: { type: definePropType([Array, String, Number]), default: () => mutable([]) } }); const collapseEmits = { [UPDATE_MODEL_EVENT]: emitChangeFn, [CHANGE_EVENT]: emitChangeFn }; const collapseContextKey = Symbol("collapseContextKey"); const useCollapse = (props, emit) => { const activeNames = vue.ref(castArray(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 handleItemClick = (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); } }; vue.watch(() => props.modelValue, () => activeNames.value = castArray(props.modelValue), { deep: true }); vue.provide(collapseContextKey, { activeNames, handleItemClick }); return { activeNames, setActiveNames }; }; const useCollapseDOM = () => { const ns = useNamespace("collapse"); const rootKls = vue.computed(() => ns.b()); return { rootKls }; }; const __default__$k = vue.defineComponent({ name: "ElCollapse" }); const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({ ...__default__$k, props: collapseProps, emits: collapseEmits, setup(__props, { expose, emit }) { const props = __props; const { activeNames, setActiveNames } = useCollapse(props, emit); const { rootKls } = useCollapseDOM(); expose({ activeNames, setActiveNames }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass(vue.unref(rootKls)) }, [ vue.renderSlot(_ctx.$slots, "default") ], 2); }; } }); var Collapse = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["__file", "collapse.vue"]]); const __default__$j = vue.defineComponent({ name: "ElCollapseTransition" }); const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({ ...__default__$j, 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 on2 = { 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 vue.openBlock(), vue.createBlock(vue.Transition, vue.mergeProps({ name: vue.unref(ns).b() }, vue.toHandlers(on2)), { default: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "default") ]), _: 3 }, 16, ["name"]); }; } }); var CollapseTransition = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["__file", "collapse-transition.vue"]]); const ElCollapseTransition = withInstall(CollapseTransition); const collapseItemProps = buildProps({ title: { type: String, default: "" }, name: { type: definePropType([String, Number]), default: void 0 }, icon: { type: iconPropType, default: arrow_right_default }, disabled: Boolean }); const useCollapseItem = (props) => { const collapse = vue.inject(collapseContextKey); const { namespace } = useNamespace("collapse"); const focusing = vue.ref(false); const isClick = vue.ref(false); const idInjection = useIdInjection(); const id = vue.computed(() => idInjection.current++); const name = vue.computed(() => { var _a2; return (_a2 = props.name) != null ? _a2 : `${namespace.value}-id-${idInjection.prefix}-${vue.unref(id)}`; }); const isActive = vue.computed(() => collapse == null ? void 0 : collapse.activeNames.value.includes(vue.unref(name))); const handleFocus = () => { setTimeout(() => { if (!isClick.value) { focusing.value = true; } else { isClick.value = false; } }, 50); }; const handleHeaderClick = () => { if (props.disabled) return; collapse == null ? void 0 : collapse.handleItemClick(vue.unref(name)); focusing.value = false; isClick.value = true; }; const handleEnterClick = () => { collapse == null ? void 0 : collapse.handleItemClick(vue.unref(name)); }; return { focusing, id, isActive, handleFocus, handleHeaderClick, handleEnterClick }; }; const useCollapseItemDOM = (props, { focusing, isActive, id }) => { const ns = useNamespace("collapse"); const rootKls = vue.computed(() => [ ns.b("item"), ns.is("active", vue.unref(isActive)), ns.is("disabled", props.disabled) ]); const headKls = vue.computed(() => [ ns.be("item", "header"), ns.is("active", vue.unref(isActive)), { focusing: vue.unref(focusing) && !props.disabled } ]); const arrowKls = vue.computed(() => [ ns.be("item", "arrow"), ns.is("active", vue.unref(isActive)) ]); const itemWrapperKls = vue.computed(() => ns.be("item", "wrap")); const itemContentKls = vue.computed(() => ns.be("item", "content")); const scopedContentId = vue.computed(() => ns.b(`content-${vue.unref(id)}`)); const scopedHeadId = vue.computed(() => ns.b(`head-${vue.unref(id)}`)); return { arrowKls, headKls, rootKls, itemWrapperKls, itemContentKls, scopedContentId, scopedHeadId }; }; const __default__$i = vue.defineComponent({ name: "ElCollapseItem" }); const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({ ...__default__$i, props: collapseItemProps, setup(__props, { expose }) { const props = __props; const { focusing, id, isActive, handleFocus, handleHeaderClick, handleEnterClick } = useCollapseItem(props); const { arrowKls, headKls, rootKls, itemWrapperKls, itemContentKls, scopedContentId, scopedHeadId } = useCollapseItemDOM(props, { focusing, isActive, id }); expose({ isActive }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass(vue.unref(rootKls)) }, [ vue.createElementVNode("button", { id: vue.unref(scopedHeadId), class: vue.normalizeClass(vue.unref(headKls)), "aria-expanded": vue.unref(isActive), "aria-controls": vue.unref(scopedContentId), "aria-describedby": vue.unref(scopedContentId), tabindex: _ctx.disabled ? -1 : 0, type: "button", onClick: vue.unref(handleHeaderClick), onKeydown: vue.withKeys(vue.withModifiers(vue.unref(handleEnterClick), ["stop", "prevent"]), ["space", "enter"]), onFocus: vue.unref(handleFocus), onBlur: ($event) => focusing.value = false }, [ vue.renderSlot(_ctx.$slots, "title", {}, () => [ vue.createTextVNode(vue.toDisplayString(_ctx.title), 1) ]), vue.renderSlot(_ctx.$slots, "icon", { isActive: vue.unref(isActive) }, () => [ vue.createVNode(vue.unref(ElIcon), { class: vue.normalizeClass(vue.unref(arrowKls)) }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.icon))) ]), _: 1 }, 8, ["class"]) ]) ], 42, ["id", "aria-expanded", "aria-controls", "aria-describedby", "tabindex", "onClick", "onKeydown", "onFocus", "onBlur"]), vue.createVNode(vue.unref(ElCollapseTransition), null, { default: vue.withCtx(() => [ vue.withDirectives(vue.createElementVNode("div", { id: vue.unref(scopedContentId), role: "region", class: vue.normalizeClass(vue.unref(itemWrapperKls)), "aria-hidden": !vue.unref(isActive), "aria-labelledby": vue.unref(scopedHeadId) }, [ vue.createElementVNode("div", { class: vue.normalizeClass(vue.unref(itemContentKls)) }, [ vue.renderSlot(_ctx.$slots, "default") ], 2) ], 10, ["id", "aria-hidden", "aria-labelledby"]), [ [vue.vShow, vue.unref(isActive)] ]) ]), _: 3 }) ], 2); }; } }); var CollapseItem$1 = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["__file", "collapse-item.vue"]]); const ElCollapse = withInstall(Collapse, { CollapseItem: CollapseItem$1 }); const ElCollapseItem = withNoopInstall(CollapseItem$1); const alphaSliderProps = buildProps({ color: { type: definePropType(Object), required: true }, vertical: { type: Boolean, default: false } }); let isDragging = false; function draggable(element, options) { if (!isClient) return; const moveFn = function(event) { var _a2; (_a2 = options.drag) == null ? void 0 : _a2.call(options, event); }; const upFn = function(event) { var _a2; document.removeEventListener("mousemove", moveFn); document.removeEventListener("mouseup", upFn); document.removeEventListener("touchmove", moveFn); document.removeEventListener("touchend", upFn); document.onselectstart = null; document.ondragstart = null; isDragging = false; (_a2 = options.end) == null ? void 0 : _a2.call(options, event); }; const downFn = function(event) { var _a2; if (isDragging) return; event.preventDefault(); document.onselectstart = () => false; document.ondragstart = () => false; document.addEventListener("mousemove", moveFn); document.addEventListener("mouseup", upFn); document.addEventListener("touchmove", moveFn); document.addEventListener("touchend", upFn); isDragging = true; (_a2 = options.start) == null ? void 0 : _a2.call(options, event); }; element.addEventListener("mousedown", downFn); element.addEventListener("touchstart", downFn, { passive: false }); } const useAlphaSlider = (props) => { const instance = vue.getCurrentInstance(); const { t } = useLocale(); const thumb = vue.shallowRef(); const bar = vue.shallowRef(); const alpha = vue.computed(() => props.color.get("alpha")); const alphaLabel = vue.computed(() => t("el.colorpicker.alphaLabel")); function handleClick(event) { var _a2; const target = event.target; if (target !== thumb.value) { handleDrag(event); } (_a2 = thumb.value) == null ? void 0 : _a2.focus(); } function handleDrag(event) { if (!bar.value || !thumb.value) return; const el = instance.vnode.el; const rect = el.getBoundingClientRect(); const { clientX, clientY } = getClientXY(event); 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); props.color.set("alpha", Math.round((left - thumb.value.offsetWidth / 2) / (rect.width - thumb.value.offsetWidth) * 100)); } else { let top = clientY - rect.top; top = Math.max(thumb.value.offsetHeight / 2, top); top = Math.min(top, rect.height - thumb.value.offsetHeight / 2); props.color.set("alpha", Math.round((top - thumb.value.offsetHeight / 2) / (rect.height - thumb.value.offsetHeight) * 100)); } } function handleKeydown(event) { const { code, shiftKey } = event; const step = shiftKey ? 10 : 1; switch (code) { case EVENT_CODE.left: case EVENT_CODE.down: event.preventDefault(); event.stopPropagation(); incrementPosition(-step); break; case EVENT_CODE.right: case EVENT_CODE.up: event.preventDefault(); event.stopPropagation(); incrementPosition(step); break; } } function incrementPosition(step) { let next = alpha.value + step; next = next < 0 ? 0 : next > 100 ? 100 : next; props.color.set("alpha", next); } return { thumb, bar, alpha, alphaLabel, handleDrag, handleClick, handleKeydown }; }; const useAlphaSliderDOM = (props, { bar, thumb, handleDrag }) => { const instance = vue.getCurrentInstance(); const ns = useNamespace("color-alpha-slider"); const thumbLeft = vue.ref(0); const thumbTop = vue.ref(0); const background = vue.ref(); function getThumbLeft() { if (!thumb.value) return 0; if (props.vertical) return 0; const el = instance.vnode.el; const alpha = props.color.get("alpha"); if (!el) return 0; return Math.round(alpha * (el.offsetWidth - thumb.value.offsetWidth / 2) / 100); } function getThumbTop() { if (!thumb.value) return 0; const el = instance.vnode.el; if (!props.vertical) return 0; const alpha = props.color.get("alpha"); if (!el) return 0; return Math.round(alpha * (el.offsetHeight - thumb.value.offsetHeight / 2) / 100); } 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 ""; } function update() { thumbLeft.value = getThumbLeft(); thumbTop.value = getThumbTop(); background.value = getBackground(); } 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(); }); vue.watch(() => props.color.get("alpha"), () => update()); vue.watch(() => props.color.value, () => update()); const rootKls = vue.computed(() => [ns.b(), ns.is("vertical", props.vertical)]); const barKls = vue.computed(() => ns.e("bar")); const thumbKls = vue.computed(() => ns.e("thumb")); const barStyle = vue.computed(() => ({ background: background.value })); const thumbStyle = vue.computed(() => ({ left: addUnit(thumbLeft.value), top: addUnit(thumbTop.value) })); return { rootKls, barKls, barStyle, thumbKls, thumbStyle, update }; }; const COMPONENT_NAME$5 = "ElColorAlphaSlider"; const __default__$h = vue.defineComponent({ name: COMPONENT_NAME$5 }); const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({ ...__default__$h, props: alphaSliderProps, setup(__props, { expose }) { const props = __props; const { alpha, alphaLabel, bar, thumb, handleDrag, handleClick, handleKeydown } = useAlphaSlider(props); const { rootKls, barKls, barStyle, thumbKls, thumbStyle, update } = useAlphaSliderDOM(props, { bar, thumb, handleDrag }); expose({ update, bar, thumb }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass(vue.unref(rootKls)) }, [ vue.createElementVNode("div", { ref_key: "bar", ref: bar, class: vue.normalizeClass(vue.unref(barKls)), style: vue.normalizeStyle(vue.unref(barStyle)), onClick: vue.unref(handleClick) }, null, 14, ["onClick"]), vue.createElementVNode("div", { ref_key: "thumb", ref: thumb, class: vue.normalizeClass(vue.unref(thumbKls)), style: vue.normalizeStyle(vue.unref(thumbStyle)), "aria-label": vue.unref(alphaLabel), "aria-valuenow": vue.unref(alpha), "aria-orientation": _ctx.vertical ? "vertical" : "horizontal", "aria-valuemin": "0", "aria-valuemax": "100", role: "slider", tabindex: "0", onKeydown: vue.unref(handleKeydown) }, null, 46, ["aria-label", "aria-valuenow", "aria-orientation", "onKeydown"]) ], 2); }; } }); var AlphaSlider = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["__file", "alpha-slider.vue"]]); const _sfc_main$C = vue.defineComponent({ name: "ElColorHueSlider", props: { color: { type: Object, required: true }, vertical: Boolean }, setup(props) { const ns = useNamespace("color-hue-slider"); const instance = vue.getCurrentInstance(); const thumb = vue.ref(); const bar = vue.ref(); const thumbLeft = vue.ref(0); const thumbTop = vue.ref(0); const hueValue = vue.computed(() => { return props.color.get("hue"); }); vue.watch(() => hueValue.value, () => { update(); }); function handleClick(event) { const target = event.target; if (target !== thumb.value) { handleDrag(event); } } function handleDrag(event) { if (!bar.value || !thumb.value) return; const el = instance.vnode.el; const rect = el.getBoundingClientRect(); const { clientX, clientY } = getClientXY(event); let hue; if (!props.vertical) { let left = clientX - rect.left; left = Math.min(left, rect.width - thumb.value.offsetWidth / 2); left = Math.max(thumb.value.offsetWidth / 2, left); hue = Math.round((left - thumb.value.offsetWidth / 2) / (rect.width - thumb.value.offsetWidth) * 360); } else { let top = clientY - rect.top; top = Math.min(top, rect.height - thumb.value.offsetHeight / 2); top = Math.max(thumb.value.offsetHeight / 2, top); hue = Math.round((top - thumb.value.offsetHeight / 2) / (rect.height - thumb.value.offsetHeight) * 360); } props.color.set("hue", hue); } function getThumbLeft() { if (!thumb.value) return 0; const el = instance.vnode.el; if (props.vertical) return 0; const hue = props.color.get("hue"); if (!el) return 0; return Math.round(hue * (el.offsetWidth - thumb.value.offsetWidth / 2) / 360); } function getThumbTop() { if (!thumb.value) return 0; const el = instance.vnode.el; if (!props.vertical) return 0; const hue = props.color.get("hue"); if (!el) return 0; return Math.round(hue * (el.offsetHeight - thumb.value.offsetHeight / 2) / 360); } function update() { thumbLeft.value = getThumbLeft(); thumbTop.value = getThumbTop(); } 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(); }); return { bar, thumb, thumbLeft, thumbTop, hueValue, handleClick, update, ns }; } }); function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass([_ctx.ns.b(), _ctx.ns.is("vertical", _ctx.vertical)]) }, [ vue.createElementVNode("div", { ref: "bar", class: vue.normalizeClass(_ctx.ns.e("bar")), onClick: _ctx.handleClick }, null, 10, ["onClick"]), vue.createElementVNode("div", { ref: "thumb", class: vue.normalizeClass(_ctx.ns.e("thumb")), style: vue.normalizeStyle({ left: _ctx.thumbLeft + "px", top: _ctx.thumbTop + "px" }) }, null, 6) ], 2); } var HueSlider = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$7], ["__file", "hue-slider.vue"]]); const colorPickerProps = buildProps({ modelValue: String, id: String, showAlpha: Boolean, colorFormat: String, disabled: Boolean, size: useSizeProp, popperClass: { type: String, default: "" }, tabindex: { type: [String, Number], default: 0 }, teleported: useTooltipContentProps.teleported, predefine: { type: definePropType(Array) }, validateEvent: { type: Boolean, default: true }, ...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 }; const colorPickerContextKey = Symbol("colorPickerContextKey"); const hsv2hsl = function(hue, sat, val) { return [ hue, sat * val / ((hue = (2 - sat) * val) < 1 ? hue : 2 - hue) || 0, hue / 2 ]; }; const isOnePointZero = function(n) { return typeof n === "string" && n.includes(".") && Number.parseFloat(n) === 1; }; const isPercentage = function(n) { return typeof n === "string" && n.includes("%"); }; const bound01 = function(value, max2) { if (isOnePointZero(value)) value = "100%"; const processPercent = isPercentage(value); value = Math.min(max2, Math.max(0, Number.parseFloat(`${value}`))); if (processPercent) { value = Number.parseInt(`${value * max2}`, 10) / 100; } if (Math.abs(value - max2) < 1e-6) { return 1; } return value % max2 / Number.parseFloat(max2); }; const INT_HEX_MAP = { 10: "A", 11: "B", 12: "C", 13: "D", 14: "E", 15: "F" }; const hexOne = (value) => { value = Math.min(Math.round(value), 255); const high = Math.floor(value / 16); const low = value % 16; return `${INT_HEX_MAP[high] || high}${INT_HEX_MAP[low] || low}`; }; const toHex = function({ r, g, b }) { if (Number.isNaN(+r) || Number.isNaN(+g) || Number.isNaN(+b)) return ""; return `#${hexOne(r)}${hexOne(g)}${hexOne(b)}`; }; const HEX_INT_MAP = { A: 10, B: 11, C: 12, D: 13, E: 14, F: 15 }; const parseHexChannel = function(hex) { if (hex.length === 2) { return (HEX_INT_MAP[hex[0].toUpperCase()] || +hex[0]) * 16 + (HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1]); } return HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1]; }; const hsl2hsv = function(hue, sat, light) { sat = sat / 100; light = light / 100; let smin = sat; const lmin = Math.max(light, 0.01); light *= 2; sat *= light <= 1 ? light : 2 - light; smin *= lmin <= 1 ? lmin : 2 - lmin; const v = (light + sat) / 2; const sv = light === 0 ? 2 * smin / (lmin + smin) : 2 * sat / (light + sat); return { h: hue, s: sv * 100, v: v * 100 }; }; const rgb2hsv = (r, g, b) => { r = bound01(r, 255); g = bound01(g, 255); b = bound01(b, 255); const max2 = Math.max(r, g, b); const min2 = Math.min(r, g, b); let h2; const v = max2; const d = max2 - min2; const s = max2 === 0 ? 0 : d / max2; if (max2 === min2) { h2 = 0; } else { switch (max2) { case r: { h2 = (g - b) / d + (g < b ? 6 : 0); break; } case g: { h2 = (b - r) / d + 2; break; } case b: { h2 = (r - g) / d + 4; break; } } h2 /= 6; } return { h: h2 * 360, s: s * 100, v: v * 100 }; }; const hsv2rgb = function(h2, s, v) { h2 = bound01(h2, 360) * 6; s = bound01(s, 100); v = bound01(v, 100); const i = Math.floor(h2); const f = h2 - i; const p = v * (1 - s); const q2 = v * (1 - f * s); const t = v * (1 - (1 - f) * s); const mod = i % 6; const r = [v, q2, p, p, t, v][mod]; const g = [t, v, v, q2, p, p][mod]; const b = [p, p, t, v, v, q2][mod]; return { r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255) }; }; class Color { constructor(options = {}) { this._hue = 0; this._saturation = 100; this._value = 100; this._alpha = 100; this.enableAlpha = false; this.format = "hex"; 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.doOnChange(); } get(prop) { if (prop === "alpha") { return Math.floor(this[`_${prop}`]); } return this[`_${prop}`]; } toRgb() { return hsv2rgb(this._hue, this._saturation, this._value); } fromString(value) { if (!value) { this._hue = 0; this._saturation = 100; this._value = 100; this.doOnChange(); return; } const fromHSV = (h2, s, v) => { this._hue = Math.max(0, Math.min(360, h2)); this._saturation = Math.max(0, Math.min(100, s)); this._value = Math.max(0, Math.min(100, v)); this.doOnChange(); }; if (value.includes("hsl")) { const parts = value.replace(/hsla|hsl|\(|\)/gm, "").split(/\s|,/g).filter((val) => val !== "").map((val, index) => index > 2 ? Number.parseFloat(val) : Number.parseInt(val, 10)); if (parts.length === 4) { this._alpha = Number.parseFloat(parts[3]) * 100; } else if (parts.length === 3) { this._alpha = 100; } if (parts.length >= 3) { const { h: h2, s, v } = hsl2hsv(parts[0], parts[1], parts[2]); fromHSV(h2, s, v); } } else if (value.includes("hsv")) { const parts = value.replace(/hsva|hsv|\(|\)/gm, "").split(/\s|,/g).filter((val) => val !== "").map((val, index) => index > 2 ? Number.parseFloat(val) : Number.parseInt(val, 10)); if (parts.length === 4) { this._alpha = Number.parseFloat(parts[3]) * 100; } else if (parts.length === 3) { this._alpha = 100; } if (parts.length >= 3) { fromHSV(parts[0], parts[1], parts[2]); } } else if (value.includes("rgb")) { const parts = value.replace(/rgba|rgb|\(|\)/gm, "").split(/\s|,/g).filter((val) => val !== "").map((val, index) => index > 2 ? Number.parseFloat(val) : Number.parseInt(val, 10)); if (parts.length === 4) { this._alpha = Number.parseFloat(parts[3]) * 100; } else if (parts.length === 3) { this._alpha = 100; } if (parts.length >= 3) { const { h: h2, s, v } = rgb2hsv(parts[0], parts[1], parts[2]); fromHSV(h2, s, v); } } else if (value.includes("#")) { const hex = value.replace("#", "").trim(); if (!/^[0-9a-fA-F]{3}$|^[0-9a-fA-F]{6}$|^[0-9a-fA-F]{8}$/.test(hex)) return; let r, g, b; if (hex.length === 3) { r = parseHexChannel(hex[0] + hex[0]); g = parseHexChannel(hex[1] + hex[1]); b = parseHexChannel(hex[2] + hex[2]); } else if (hex.length === 6 || hex.length === 8) { r = parseHexChannel(hex.slice(0, 2)); g = parseHexChannel(hex.slice(2, 4)); b = parseHexChannel(hex.slice(4, 6)); } if (hex.length === 8) { this._alpha = parseHexChannel(hex.slice(6)) / 255 * 100; } else if (hex.length === 3 || hex.length === 6) { this._alpha = 100; } const { h: h2, s, v } = rgb2hsv(r, g, b); fromHSV(h2, s, v); } } compare(color) { return Math.abs(color._hue - this._hue) < 2 && Math.abs(color._saturation - this._saturation) < 1 && Math.abs(color._value - this._value) < 1 && Math.abs(color._alpha - this._alpha) < 1; } doOnChange() { const { _hue, _saturation, _value, _alpha, format } = this; if (this.enableAlpha) { switch (format) { case "hsl": { const hsl = hsv2hsl(_hue, _saturation / 100, _value / 100); this.value = `hsla(${_hue}, ${Math.round(hsl[1] * 100)}%, ${Math.round(hsl[2] * 100)}%, ${this.get("alpha") / 100})`; break; } case "hsv": { this.value = `hsva(${_hue}, ${Math.round(_saturation)}%, ${Math.round(_value)}%, ${this.get("alpha") / 100})`; break; } case "hex": { this.value = `${toHex(hsv2rgb(_hue, _saturation, _value))}${hexOne(_alpha * 255 / 100)}`; break; } default: { const { r, g, b } = hsv2rgb(_hue, _saturation, _value); this.value = `rgba(${r}, ${g}, ${b}, ${this.get("alpha") / 100})`; } } } else { switch (format) { case "hsl": { const hsl = hsv2hsl(_hue, _saturation / 100, _value / 100); this.value = `hsl(${_hue}, ${Math.round(hsl[1] * 100)}%, ${Math.round(hsl[2] * 100)}%)`; break; } case "hsv": { this.value = `hsv(${_hue}, ${Math.round(_saturation)}%, ${Math.round(_value)}%)`; break; } case "rgb": { const { r, g, b } = hsv2rgb(_hue, _saturation, _value); this.value = `rgb(${r}, ${g}, ${b})`; break; } default: { this.value = toHex(hsv2rgb(_hue, _saturation, _value)); } } } } } const _sfc_main$B = vue.defineComponent({ props: { colors: { type: Array, required: true }, color: { type: Object, required: true }, enableAlpha: { type: Boolean, required: true } }, setup(props) { const ns = useNamespace("color-predefine"); const { currentColor } = vue.inject(colorPickerContextKey); const rgbaColors = vue.ref(parseColors(props.colors, props.color)); vue.watch(() => currentColor.value, (val) => { const color = new Color(); color.fromString(val); rgbaColors.value.forEach((item) => { item.selected = color.compare(item); }); }); 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(); c.enableAlpha = props.enableAlpha; c.format = "rgba"; c.fromString(value); c.selected = c.value === color.value; return c; }); } return { rgbaColors, handleSelect, ns }; } }); function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass(_ctx.ns.b()) }, [ vue.createElementVNode("div", { class: vue.normalizeClass(_ctx.ns.e("colors")) }, [ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.rgbaColors, (item, index) => { return vue.openBlock(), vue.createElementBlock("div", { key: _ctx.colors[index], class: vue.normalizeClass([ _ctx.ns.e("color-selector"), _ctx.ns.is("alpha", item._alpha < 100), { selected: item.selected } ]), onClick: ($event) => _ctx.handleSelect(index) }, [ vue.createElementVNode("div", { style: vue.normalizeStyle({ backgroundColor: item.value }) }, null, 4) ], 10, ["onClick"]); }), 128)) ], 2) ], 2); } var Predefine = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["render", _sfc_render$6], ["__file", "predefine.vue"]]); const _sfc_main$A = vue.defineComponent({ name: "ElSlPanel", props: { color: { type: Object, required: true } }, setup(props) { const ns = useNamespace("color-svpanel"); const instance = vue.getCurrentInstance(); const cursorTop = vue.ref(0); const cursorLeft = vue.ref(0); const background = vue.ref("hsl(0, 100%, 50%)"); const colorValue = vue.computed(() => { const hue = props.color.get("hue"); const value = props.color.get("value"); return { hue, value }; }); function update() { const saturation = props.color.get("saturation"); const value = props.color.get("value"); const el = instance.vnode.el; const { clientWidth: width, clientHeight: height } = el; cursorLeft.value = saturation * width / 100; cursorTop.value = (100 - value) * height / 100; background.value = `hsl(${props.color.get("hue")}, 100%, 50%)`; } function handleDrag(event) { const el = instance.vnode.el; const rect = 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 }); } vue.watch(() => colorValue.value, () => { update(); }); vue.onMounted(() => { draggable(instance.vnode.el, { drag: (event) => { handleDrag(event); }, end: (event) => { handleDrag(event); } }); update(); }); return { cursorTop, cursorLeft, background, colorValue, handleDrag, update, ns }; } }); function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass(_ctx.ns.b()), style: vue.normalizeStyle({ backgroundColor: _ctx.background }) }, [ vue.createElementVNode("div", { class: vue.normalizeClass(_ctx.ns.e("white")) }, null, 2), vue.createElementVNode("div", { class: vue.normalizeClass(_ctx.ns.e("black")) }, null, 2), vue.createElementVNode("div", { class: vue.normalizeClass(_ctx.ns.e("cursor")), style: vue.normalizeStyle({ top: _ctx.cursorTop + "px", left: _ctx.cursorLeft + "px" }) }, [ vue.createElementVNode("div") ], 6) ], 6); } var SvPanel = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["render", _sfc_render$5], ["__file", "sv-panel.vue"]]); const __default__$g = vue.defineComponent({ name: "ElColorPicker" }); const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({ ...__default__$g, props: colorPickerProps, emits: colorPickerEmits, setup(__props, { expose, emit }) { const props = __props; const { t } = useLocale(); const ns = useNamespace("color"); const { formItem } = useFormItem(); const colorSize = useFormSize(); const colorDisabled = useFormDisabled(); const { inputId: buttonId, isLabeledByFormItem } = useFormItemInputId(props, { formItemContext: formItem }); const hue = vue.ref(); const sv = vue.ref(); const alpha = vue.ref(); const popper = vue.ref(); const triggerRef = vue.ref(); const inputRef = vue.ref(); const { isFocused, handleFocus, handleBlur } = useFocusController(triggerRef, { beforeFocus() { return colorDisabled.value; }, beforeBlur(event) { var _a2; return (_a2 = popper.value) == null ? void 0 : _a2.isFocusInsideContent(event); }, afterBlur() { setShowPicker(false); resetColor(); } }); let shouldActiveChange = true; const color = vue.reactive(new Color({ enableAlpha: props.showAlpha, format: props.colorFormat || "", value: props.modelValue })); const showPicker = vue.ref(false); const showPanelColor = vue.ref(false); const customInput = vue.ref(""); const displayedColor = vue.computed(() => { if (!props.modelValue && !showPanelColor.value) { return "transparent"; } return displayedRgb(color, props.showAlpha); }); const currentColor = vue.computed(() => { return !props.modelValue && !showPanelColor.value ? "" : color.value; }); const buttonAriaLabel = vue.computed(() => { return !isLabeledByFormItem.value ? props.ariaLabel || t("el.colorpicker.defaultLabel") : void 0; }); const buttonAriaLabelledby = vue.computed(() => { return isLabeledByFormItem.value ? formItem == null ? void 0 : formItem.labelId : void 0; }); const btnKls = vue.computed(() => { return [ ns.b("picker"), ns.is("disabled", colorDisabled.value), ns.bm("picker", colorSize.value), ns.is("focused", isFocused.value) ]; }); function displayedRgb(color2, showAlpha) { if (!(color2 instanceof Color)) { throw new TypeError("color should be instance of _color Class"); } const { r, g, b } = color2.toRgb(); return showAlpha ? `rgba(${r}, ${g}, ${b}, ${color2.get("alpha") / 100})` : `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() { vue.nextTick(() => { if (props.modelValue) { color.fromString(props.modelValue); } else { color.value = ""; vue.nextTick(() => { showPanelColor.value = false; }); } }); } function handleTrigger() { if (colorDisabled.value) return; debounceSetShowPicker(!showPicker.value); } function handleConfirm() { color.fromString(customInput.value); } function confirmValue() { const value = color.value; emit(UPDATE_MODEL_EVENT, value); emit("change", value); if (props.validateEvent) { formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn(err)); } debounceSetShowPicker(false); 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, null); emit("change", null); if (props.modelValue !== null && props.validateEvent) { formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn(err)); } resetColor(); } function handleClickOutside() { if (!showPicker.value) return; hide(); isFocused.value && focus(); } function handleEsc(event) { event.preventDefault(); event.stopPropagation(); setShowPicker(false); resetColor(); } function handleKeyDown(event) { switch (event.code) { case EVENT_CODE.enter: case EVENT_CODE.space: event.preventDefault(); event.stopPropagation(); show(); inputRef.value.focus(); break; case EVENT_CODE.esc: handleEsc(event); break; } } function focus() { triggerRef.value.focus(); } function blur() { triggerRef.value.blur(); } vue.onMounted(() => { if (props.modelValue) { customInput.value = currentColor.value; } }); vue.watch(() => props.modelValue, (newVal) => { if (!newVal) { showPanelColor.value = false; } else if (newVal && newVal !== color.value) { shouldActiveChange = false; color.fromString(newVal); } }); vue.watch(() => [props.colorFormat, props.showAlpha], () => { color.enableAlpha = props.showAlpha; color.format = props.colorFormat || color.format; color.doOnChange(); emit(UPDATE_MODEL_EVENT, color.value); }); vue.watch(() => currentColor.value, (val) => { customInput.value = val; shouldActiveChange && emit("activeChange", val); shouldActiveChange = true; }); vue.watch(() => color.value, () => { if (!props.modelValue && !showPanelColor.value) { showPanelColor.value = true; } }); vue.watch(() => showPicker.value, () => { vue.nextTick(() => { var _a2, _b, _c; (_a2 = hue.value) == null ? void 0 : _a2.update(); (_b = sv.value) == null ? void 0 : _b.update(); (_c = alpha.value) == null ? void 0 : _c.update(); }); }); vue.provide(colorPickerContextKey, { currentColor }); expose({ color, show, hide, focus, blur }); return (_ctx, _cache) => { return vue.openBlock(), vue.createBlock(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": [vue.unref(ns).be("picker", "panel"), vue.unref(ns).b("dropdown"), _ctx.popperClass], "stop-popper-mouse-event": false, effect: "light", trigger: "click", teleported: _ctx.teleported, transition: `${vue.unref(ns).namespace.value}-zoom-in-top`, persistent: "", onHide: ($event) => setShowPicker(false) }, { content: vue.withCtx(() => [ vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", { onKeydown: vue.withKeys(handleEsc, ["esc"]) }, [ vue.createElementVNode("div", { class: vue.normalizeClass(vue.unref(ns).be("dropdown", "main-wrapper")) }, [ vue.createVNode(HueSlider, { ref_key: "hue", ref: hue, class: "hue-slider", color: vue.unref(color), vertical: "" }, null, 8, ["color"]), vue.createVNode(SvPanel, { ref_key: "sv", ref: sv, color: vue.unref(color) }, null, 8, ["color"]) ], 2), _ctx.showAlpha ? (vue.openBlock(), vue.createBlock(AlphaSlider, { key: 0, ref_key: "alpha", ref: alpha, color: vue.unref(color) }, null, 8, ["color"])) : vue.createCommentVNode("v-if", true), _ctx.predefine ? (vue.openBlock(), vue.createBlock(Predefine, { key: 1, ref: "predefine", "enable-alpha": _ctx.showAlpha, color: vue.unref(color), colors: _ctx.predefine }, null, 8, ["enable-alpha", "color", "colors"])) : vue.createCommentVNode("v-if", true), vue.createElementVNode("div", { class: vue.normalizeClass(vue.unref(ns).be("dropdown", "btns")) }, [ vue.createElementVNode("span", { class: vue.normalizeClass(vue.unref(ns).be("dropdown", "value")) }, [ vue.createVNode(vue.unref(ElInput), { ref_key: "inputRef", ref: inputRef, modelValue: customInput.value, "onUpdate:modelValue": ($event) => customInput.value = $event, "validate-event": false, size: "small", onKeyup: vue.withKeys(handleConfirm, ["enter"]), onBlur: handleConfirm }, null, 8, ["modelValue", "onUpdate:modelValue", "onKeyup"]) ], 2), vue.createVNode(vue.unref(ElButton), { class: vue.normalizeClass(vue.unref(ns).be("dropdown", "link-btn")), text: "", size: "small", onClick: clear }, { default: vue.withCtx(() => [ vue.createTextVNode(vue.toDisplayString(vue.unref(t)("el.colorpicker.clear")), 1) ]), _: 1 }, 8, ["class"]), vue.createVNode(vue.unref(ElButton), { plain: "", size: "small", class: vue.normalizeClass(vue.unref(ns).be("dropdown", "btn")), onClick: confirmValue }, { default: vue.withCtx(() => [ vue.createTextVNode(vue.toDisplayString(vue.unref(t)("el.colorpicker.confirm")), 1) ]), _: 1 }, 8, ["class"]) ], 2) ], 40, ["onKeydown"])), [ [vue.unref(ClickOutside), handleClickOutside] ]) ]), default: vue.withCtx(() => [ vue.createElementVNode("div", vue.mergeProps({ id: vue.unref(buttonId), ref_key: "triggerRef", ref: triggerRef }, _ctx.$attrs, { class: vue.unref(btnKls), role: "button", "aria-label": vue.unref(buttonAriaLabel), "aria-labelledby": vue.unref(buttonAriaLabelledby), "aria-description": vue.unref(t)("el.colorpicker.description", { color: _ctx.modelValue || "" }), "aria-disabled": vue.unref(colorDisabled), tabindex: vue.unref(colorDisabled) ? -1 : _ctx.tabindex, onKeydown: handleKeyDown, onFocus: vue.unref(handleFocus), onBlur: vue.unref(handleBlur) }), [ vue.unref(colorDisabled) ? (vue.openBlock(), vue.createElementBlock("div", { key: 0, class: vue.normalizeClass(vue.unref(ns).be("picker", "mask")) }, null, 2)) : vue.createCommentVNode("v-if", true), vue.createElementVNode("div", { class: vue.normalizeClass(vue.unref(ns).be("picker", "trigger")), onClick: handleTrigger }, [ vue.createElementVNode("span", { class: vue.normalizeClass([vue.unref(ns).be("picker", "color"), vue.unref(ns).is("alpha", _ctx.showAlpha)]) }, [ vue.createElementVNode("span", { class: vue.normalizeClass(vue.unref(ns).be("picker", "color-inner")), style: vue.normalizeStyle({ backgroundColor: vue.unref(displayedColor) }) }, [ vue.withDirectives(vue.createVNode(vue.unref(ElIcon), { class: vue.normalizeClass([vue.unref(ns).be("picker", "icon"), vue.unref(ns).is("icon-arrow-down")]) }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(arrow_down_default)) ]), _: 1 }, 8, ["class"]), [ [vue.vShow, _ctx.modelValue || showPanelColor.value] ]), vue.withDirectives(vue.createVNode(vue.unref(ElIcon), { class: vue.normalizeClass([vue.unref(ns).be("picker", "empty"), vue.unref(ns).is("icon-close")]) }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(close_default)) ]), _: 1 }, 8, ["class"]), [ [vue.vShow, !_ctx.modelValue && !showPanelColor.value] ]) ], 6) ], 2) ], 2) ], 16, ["id", "aria-label", "aria-labelledby", "aria-description", "aria-disabled", "tabindex", "onFocus", "onBlur"]) ]), _: 1 }, 8, ["visible", "popper-class", "teleported", "transition", "onHide"]); }; } }); var ColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["__file", "color-picker.vue"]]); const ElColorPicker = withInstall(ColorPicker); 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 = 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 ? vue.createVNode("div", { class: [ns.b(), props.overlayClass], style: { zIndex: props.zIndex }, onClick, onMousedown, onMouseup }, [vue.renderSlot(slots, "default")], PatchFlags.STYLE | PatchFlags.CLASS | PatchFlags.PROPS, ["onClick", "onMouseup", "onMousedown"]) : vue.h("div", { class: props.overlayClass, style: { zIndex: props.zIndex, position: "fixed", top: "0px", right: "0px", bottom: "0px", left: "0px" } }, [vue.renderSlot(slots, "default")]); }; } }); const ElOverlay = Overlay; const dialogInjectionKey = Symbol("dialogInjectionKey"); const dialogContentProps = buildProps({ center: Boolean, alignCenter: Boolean, closeIcon: { type: iconPropType }, draggable: Boolean, overflow: Boolean, fullscreen: Boolean, showClose: { type: Boolean, default: true }, title: { type: String, default: "" }, ariaLevel: { type: String, default: "2" } }); const dialogContentEmits = { close: () => true }; const __default__$f = vue.defineComponent({ name: "ElDialogContent" }); const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({ ...__default__$f, props: dialogContentProps, emits: dialogContentEmits, setup(__props, { expose }) { const props = __props; const { t } = useLocale(); const { Close } = CloseComponents; const { dialogRef, headerRef, bodyId, ns, style } = vue.inject(dialogInjectionKey); const { focusTrapRef } = vue.inject(FOCUS_TRAP_INJECTION_KEY); const dialogKls = vue.computed(() => [ ns.b(), ns.is("fullscreen", props.fullscreen), ns.is("draggable", props.draggable), ns.is("align-center", props.alignCenter), { [ns.m("center")]: props.center } ]); const composedDialogRef = composeRefs(focusTrapRef, dialogRef); const draggable2 = vue.computed(() => props.draggable); const overflow = vue.computed(() => props.overflow); const { resetPosition } = useDraggable(dialogRef, headerRef, draggable2, overflow); expose({ resetPosition }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", { ref: vue.unref(composedDialogRef), class: vue.normalizeClass(vue.unref(dialogKls)), style: vue.normalizeStyle(vue.unref(style)), tabindex: "-1" }, [ vue.createElementVNode("header", { ref_key: "headerRef", ref: headerRef, class: vue.normalizeClass([vue.unref(ns).e("header"), { "show-close": _ctx.showClose }]) }, [ vue.renderSlot(_ctx.$slots, "header", {}, () => [ vue.createElementVNode("span", { role: "heading", "aria-level": _ctx.ariaLevel, class: vue.normalizeClass(vue.unref(ns).e("title")) }, vue.toDisplayString(_ctx.title), 11, ["aria-level"]) ]), _ctx.showClose ? (vue.openBlock(), vue.createElementBlock("button", { key: 0, "aria-label": vue.unref(t)("el.dialog.close"), class: vue.normalizeClass(vue.unref(ns).e("headerbtn")), type: "button", onClick: ($event) => _ctx.$emit("close") }, [ vue.createVNode(vue.unref(ElIcon), { class: vue.normalizeClass(vue.unref(ns).e("close")) }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.closeIcon || vue.unref(Close)))) ]), _: 1 }, 8, ["class"]) ], 10, ["aria-label", "onClick"])) : vue.createCommentVNode("v-if", true) ], 2), vue.createElementVNode("div", { id: vue.unref(bodyId), class: vue.normalizeClass(vue.unref(ns).e("body")) }, [ vue.renderSlot(_ctx.$slots, "default") ], 10, ["id"]), _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("footer", { key: 0, class: vue.normalizeClass(vue.unref(ns).e("footer")) }, [ vue.renderSlot(_ctx.$slots, "footer") ], 2)) : vue.createCommentVNode("v-if", true) ], 6); }; } }); var ElDialogContent = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["__file", "dialog-content.vue"]]); const dialogProps = buildProps({ ...dialogContentProps, appendToBody: Boolean, appendTo: { type: definePropType([String, Object]), 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 }, openDelay: { type: Number, default: 0 }, closeDelay: { type: Number, default: 0 }, top: { type: String }, modelValue: Boolean, modalClass: String, width: { type: [String, Number] }, zIndex: { type: Number }, trapFocus: Boolean, headerAriaLevel: { type: String, default: "2" } }); const dialogEmits = { open: () => true, opened: () => true, close: () => true, closed: () => true, [UPDATE_MODEL_EVENT]: (value) => isBoolean(value), openAutoFocus: () => true, closeAutoFocus: () => true }; const useDialog = (props, targetRef) => { var _a2; const instance = vue.getCurrentInstance(); const emit = instance.emit; const { nextZIndex } = useZIndex(); let lastPosition = ""; const titleId = useId(); const bodyId = useId(); const visible = vue.ref(false); const closed = vue.ref(false); const rendered = vue.ref(false); const zIndex2 = vue.ref((_a2 = props.zIndex) != null ? _a2 : nextZIndex()); let openTimer = void 0; let closeTimer = void 0; const namespace = useGlobalConfig("namespace", defaultNamespace); const style = vue.computed(() => { const style2 = {}; const varPrefix = `--${namespace.value}-dialog`; if (!props.fullscreen) { if (props.top) { style2[`${varPrefix}-margin-top`] = props.top; } if (props.width) { style2[`${varPrefix}-width`] = addUnit(props.width); } } return style2; }); const overlayDialogStyle = vue.computed(() => { if (props.alignCenter) { return { display: "flex" }; } return {}; }); function afterEnter() { emit("opened"); } function afterLeave() { emit("closed"); emit(UPDATE_MODEL_EVENT, false); if (props.destroyOnClose) { rendered.value = false; } } function beforeLeave() { emit("close"); } function open2() { closeTimer == null ? void 0 : closeTimer(); openTimer == null ? void 0 : openTimer(); if (props.openDelay && props.openDelay > 0) { ({ stop: openTimer } = useTimeoutFn(() => doOpen(), props.openDelay)); } else { doOpen(); } } function close2() { openTimer == null ? void 0 : openTimer(); closeTimer == null ? void 0 : 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 { close2(); } } 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) { var _a22; if (((_a22 = event.detail) == null ? void 0 : _a22.focusReason) === "pointer") { event.preventDefault(); } } if (props.lockScroll) { useLockscreen(visible); } function onCloseRequested() { if (props.closeOnPressEscape) { handleClose(); } } vue.watch(() => props.modelValue, (val) => { if (val) { closed.value = false; open2(); rendered.value = true; zIndex2.value = isUndefined$1(props.zIndex) ? nextZIndex() : zIndex2.value++; vue.nextTick(() => { emit("open"); if (targetRef.value) { targetRef.value.scrollTop = 0; } }); } else { if (visible.value) { close2(); } } }); 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; } }); vue.onMounted(() => { if (props.modelValue) { visible.value = true; rendered.value = true; open2(); } }); return { afterEnter, afterLeave, beforeLeave, handleClose, onModalClick, close: close2, doClose, onOpenAutoFocus, onCloseAutoFocus, onCloseRequested, onFocusoutPrevented, titleId, bodyId, closed, style, overlayDialogStyle, rendered, visible, zIndex: zIndex2 }; }; const __default__$e = vue.defineComponent({ name: "ElDialog", inheritAttrs: false }); const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({ ...__default__$e, props: dialogProps, emits: dialogEmits, setup(__props, { expose }) { const props = __props; const slots = 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" }, vue.computed(() => !!slots.title)); const ns = useNamespace("dialog"); const dialogRef = vue.ref(); const headerRef = vue.ref(); const dialogContentRef = vue.ref(); const { visible, titleId, bodyId, style, overlayDialogStyle, rendered, zIndex: zIndex2, afterEnter, afterLeave, beforeLeave, handleClose, onModalClick, onOpenAutoFocus, onCloseAutoFocus, onCloseRequested, onFocusoutPrevented } = useDialog(props, dialogRef); vue.provide(dialogInjectionKey, { dialogRef, headerRef, bodyId, ns, rendered, style }); const overlayEvent = useSameTarget(onModalClick); const draggable2 = vue.computed(() => props.draggable && !props.fullscreen); const resetPosition = () => { var _a2; (_a2 = dialogContentRef.value) == null ? void 0 : _a2.resetPosition(); }; expose({ visible, dialogContentRef, resetPosition }); return (_ctx, _cache) => { return vue.openBlock(), vue.createBlock(vue.unref(ElTeleport), { to: _ctx.appendTo, disabled: _ctx.appendTo !== "body" ? false : !_ctx.appendToBody }, { default: vue.withCtx(() => [ vue.createVNode(vue.Transition, { name: "dialog-fade", onAfterEnter: vue.unref(afterEnter), onAfterLeave: vue.unref(afterLeave), onBeforeLeave: vue.unref(beforeLeave), persisted: "" }, { default: vue.withCtx(() => [ vue.withDirectives(vue.createVNode(vue.unref(ElOverlay), { "custom-mask-event": "", mask: _ctx.modal, "overlay-class": _ctx.modalClass, "z-index": vue.unref(zIndex2) }, { default: vue.withCtx(() => [ vue.createElementVNode("div", { role: "dialog", "aria-modal": "true", "aria-label": _ctx.title || void 0, "aria-labelledby": !_ctx.title ? vue.unref(titleId) : void 0, "aria-describedby": vue.unref(bodyId), class: vue.normalizeClass(`${vue.unref(ns).namespace.value}-overlay-dialog`), style: vue.normalizeStyle(vue.unref(overlayDialogStyle)), onClick: vue.unref(overlayEvent).onClick, onMousedown: vue.unref(overlayEvent).onMousedown, onMouseup: vue.unref(overlayEvent).onMouseup }, [ vue.createVNode(vue.unref(ElFocusTrap), { loop: "", trapped: vue.unref(visible), "focus-start-el": "container", onFocusAfterTrapped: vue.unref(onOpenAutoFocus), onFocusAfterReleased: vue.unref(onCloseAutoFocus), onFocusoutPrevented: vue.unref(onFocusoutPrevented), onReleaseRequested: vue.unref(onCloseRequested) }, { default: vue.withCtx(() => [ vue.unref(rendered) ? (vue.openBlock(), vue.createBlock(ElDialogContent, vue.mergeProps({ key: 0, ref_key: "dialogContentRef", ref: dialogContentRef }, _ctx.$attrs, { center: _ctx.center, "align-center": _ctx.alignCenter, "close-icon": _ctx.closeIcon, draggable: vue.unref(draggable2), overflow: _ctx.overflow, fullscreen: _ctx.fullscreen, "show-close": _ctx.showClose, title: _ctx.title, "aria-level": _ctx.headerAriaLevel, onClose: vue.unref(handleClose) }), vue.createSlots({ header: vue.withCtx(() => [ !_ctx.$slots.title ? vue.renderSlot(_ctx.$slots, "header", { key: 0, close: vue.unref(handleClose), titleId: vue.unref(titleId), titleClass: vue.unref(ns).e("title") }) : vue.renderSlot(_ctx.$slots, "title", { key: 1 }) ]), default: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "default") ]), _: 2 }, [ _ctx.$slots.footer ? { name: "footer", fn: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "footer") ]) } : void 0 ]), 1040, ["center", "align-center", "close-icon", "draggable", "overflow", "fullscreen", "show-close", "title", "aria-level", "onClose"])) : vue.createCommentVNode("v-if", true) ]), _: 3 }, 8, ["trapped", "onFocusAfterTrapped", "onFocusAfterReleased", "onFocusoutPrevented", "onReleaseRequested"]) ], 46, ["aria-label", "aria-labelledby", "aria-describedby", "onClick", "onMousedown", "onMouseup"]) ]), _: 3 }, 8, ["mask", "overlay-class", "z-index"]), [ [vue.vShow, vue.unref(visible)] ]) ]), _: 3 }, 8, ["onAfterEnter", "onAfterLeave", "onBeforeLeave"]) ]), _: 3 }, 8, ["to", "disabled"]); }; } }); var Dialog = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["__file", "dialog.vue"]]); const ElDialog = withInstall(Dialog); const __default__$d = vue.defineComponent({ name: "ImgEmpty" }); const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({ ...__default__$d, setup(__props) { const ns = useNamespace("empty"); const id = useId(); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("svg", { viewBox: "0 0 79 86", version: "1.1", xmlns: "http://www.w3.org/2000/svg", "xmlns:xlink": "http://www.w3.org/1999/xlink" }, [ vue.createElementVNode("defs", null, [ vue.createElementVNode("linearGradient", { id: `linearGradient-1-${vue.unref(id)}`, x1: "38.8503086%", y1: "0%", x2: "61.1496914%", y2: "100%" }, [ vue.createElementVNode("stop", { "stop-color": `var(${vue.unref(ns).cssVarBlockName("fill-color-1")})`, offset: "0%" }, null, 8, ["stop-color"]), vue.createElementVNode("stop", { "stop-color": `var(${vue.unref(ns).cssVarBlockName("fill-color-4")})`, offset: "100%" }, null, 8, ["stop-color"]) ], 8, ["id"]), vue.createElementVNode("linearGradient", { id: `linearGradient-2-${vue.unref(id)}`, x1: "0%", y1: "9.5%", x2: "100%", y2: "90.5%" }, [ vue.createElementVNode("stop", { "stop-color": `var(${vue.unref(ns).cssVarBlockName("fill-color-1")})`, offset: "0%" }, null, 8, ["stop-color"]), vue.createElementVNode("stop", { "stop-color": `var(${vue.unref(ns).cssVarBlockName("fill-color-6")})`, offset: "100%" }, null, 8, ["stop-color"]) ], 8, ["id"]), vue.createElementVNode("rect", { id: `path-3-${vue.unref(id)}`, x: "0", y: "0", width: "17", height: "36" }, null, 8, ["id"]) ]), vue.createElementVNode("g", { id: "Illustrations", stroke: "none", "stroke-width": "1", fill: "none", "fill-rule": "evenodd" }, [ vue.createElementVNode("g", { id: "B-type", transform: "translate(-1268.000000, -535.000000)" }, [ vue.createElementVNode("g", { id: "Group-2", transform: "translate(1268.000000, 535.000000)" }, [ vue.createElementVNode("path", { id: "Oval-Copy-2", 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(${vue.unref(ns).cssVarBlockName("fill-color-3")})` }, null, 8, ["fill"]), vue.createElementVNode("polygon", { id: "Rectangle-Copy-14", fill: `var(${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, ["fill"]), vue.createElementVNode("g", { id: "Group-Copy", transform: "translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)" }, [ vue.createElementVNode("polygon", { id: "Rectangle-Copy-10", fill: `var(${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, ["fill"]), vue.createElementVNode("polygon", { id: "Rectangle-Copy-11", fill: `var(${vue.unref(ns).cssVarBlockName("fill-color-5")})`, points: "-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43" }, null, 8, ["fill"]), vue.createElementVNode("rect", { id: "Rectangle-Copy-12", fill: `url(#linearGradient-1-${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, ["fill"]), vue.createElementVNode("polygon", { id: "Rectangle-Copy-13", fill: `var(${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, ["fill"]) ]), vue.createElementVNode("rect", { id: "Rectangle-Copy-15", fill: `url(#linearGradient-2-${vue.unref(id)})`, x: "13", y: "45", width: "40", height: "36" }, null, 8, ["fill"]), vue.createElementVNode("g", { id: "Rectangle-Copy-17", transform: "translate(53.000000, 45.000000)" }, [ vue.createElementVNode("use", { id: "Mask", fill: `var(${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-${vue.unref(id)}` }, null, 8, ["fill", "xlink:href"]), vue.createElementVNode("polygon", { id: "Rectangle-Copy", fill: `var(${vue.unref(ns).cssVarBlockName("fill-color-9")})`, mask: `url(#mask-4-${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, ["fill", "mask"]) ]), vue.createElementVNode("polygon", { id: "Rectangle-Copy-18", fill: `var(${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, ["fill"]) ]) ]) ]) ]); }; } }); var ImgEmpty = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["__file", "img-empty.vue"]]); const emptyProps = buildProps({ image: { type: String, default: "" }, imageSize: Number, description: { type: String, default: "" } }); const __default__$c = vue.defineComponent({ name: "ElEmpty" }); const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({ ...__default__$c, props: emptyProps, setup(__props) { const props = __props; const { t } = useLocale(); const ns = useNamespace("empty"); const emptyDescription = vue.computed(() => props.description || t("el.table.emptyText")); const imageStyle = vue.computed(() => ({ width: addUnit(props.imageSize) })); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass(vue.unref(ns).b()) }, [ vue.createElementVNode("div", { class: vue.normalizeClass(vue.unref(ns).e("image")), style: vue.normalizeStyle(vue.unref(imageStyle)) }, [ _ctx.image ? (vue.openBlock(), vue.createElementBlock("img", { key: 0, src: _ctx.image, ondragstart: "return false" }, null, 8, ["src"])) : vue.renderSlot(_ctx.$slots, "image", { key: 1 }, () => [ vue.createVNode(ImgEmpty) ]) ], 6), vue.createElementVNode("div", { class: vue.normalizeClass(vue.unref(ns).e("description")) }, [ _ctx.$slots.description ? vue.renderSlot(_ctx.$slots, "description", { key: 0 }) : (vue.openBlock(), vue.createElementBlock("p", { key: 1 }, vue.toDisplayString(vue.unref(emptyDescription)), 1)) ], 2), _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", { key: 0, class: vue.normalizeClass(vue.unref(ns).e("bottom")) }, [ vue.renderSlot(_ctx.$slots, "default") ], 2)) : vue.createCommentVNode("v-if", true) ], 2); }; } }); var Empty = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["__file", "empty.vue"]]); const ElEmpty = withInstall(Empty); 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 }, minScale: { type: Number, default: 0.2 }, maxScale: { type: Number, default: 7 }, crossorigin: { type: definePropType(String) } }); const imageViewerEmits = { close: () => true, switch: (index) => isNumber(index), rotate: (deg) => isNumber(deg) }; const __default__$b = vue.defineComponent({ name: "ElImageViewer" }); const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({ ...__default__$b, props: imageViewerProps, emits: imageViewerEmits, setup(__props, { expose, emit }) { var _a2; const props = __props; const modes = { CONTAIN: { name: "contain", icon: vue.markRaw(full_screen_default) }, ORIGINAL: { name: "original", icon: vue.markRaw(scale_to_original_default) } }; const { t } = useLocale(); const ns = useNamespace("image-viewer"); const { nextZIndex } = useZIndex(); const wrapper = vue.ref(); const imgRefs = vue.ref([]); const scopeEventListener = vue.effectScope(); const loading = vue.ref(true); const activeIndex = vue.ref(props.initialIndex); const mode = vue.shallowRef(modes.CONTAIN); const transform = vue.ref({ scale: 1, deg: 0, offsetX: 0, offsetY: 0, enableTransition: false }); const zIndex2 = vue.ref((_a2 = props.zIndex) != null ? _a2 : nextZIndex()); const isSingle = vue.computed(() => { const { urlList } = props; return urlList.length <= 1; }); const isFirst = vue.computed(() => { return activeIndex.value === 0; }); const isLast = vue.computed(() => { return activeIndex.value === props.urlList.length - 1; }); const currentImg = vue.computed(() => { return props.urlList[activeIndex.value]; }); const arrowPrevKls = vue.computed(() => [ ns.e("btn"), ns.e("prev"), ns.is("disabled", !props.infinite && isFirst.value) ]); const arrowNextKls = vue.computed(() => [ ns.e("btn"), ns.e("next"), ns.is("disabled", !props.infinite && isLast.value) ]); const imgStyle = 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; }); function hide() { unregisterEventListener(); emit("close"); } function registerEventListener() { const keydownHandler = throttle((e) => { switch (e.code) { 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) => { const delta = e.deltaY || e.deltaX; handleActions(delta < 0 ? "zoomIn" : "zoomOut", { zoomRate: props.zoomRate, enableTransition: false }); }); scopeEventListener.run(() => { useEventListener(document, "keydown", keydownHandler); useEventListener(document, "wheel", mousewheelHandler); }); } function unregisterEventListener() { scopeEventListener.stop(); } function handleImgLoad() { loading.value = false; } function handleImgError(e) { loading.value = false; 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); useEventListener(document, "mouseup", () => { removeMousemove(); }); e.preventDefault(); } function reset() { transform.value = { scale: 1, deg: 0, offsetX: 0, offsetY: 0, enableTransition: false }; } function toggleMode() { if (loading.value) return; const modeNames = keysOf(modes); const modeValues = Object.values(modes); const currentMode = mode.value.name; const index = modeValues.findIndex((i) => i.name === currentMode); const nextIndex = (index + 1) % modeNames.length; mode.value = modes[modeNames[nextIndex]]; reset(); } function setActiveItem(index) { 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) 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; } vue.watch(currentImg, () => { vue.nextTick(() => { const $img = imgRefs.value[0]; if (!($img == null ? void 0 : $img.complete)) { loading.value = true; } }); }); vue.watch(activeIndex, (val) => { reset(); emit("switch", val); }); vue.onMounted(() => { var _a22, _b; registerEventListener(); (_b = (_a22 = wrapper.value) == null ? void 0 : _a22.focus) == null ? void 0 : _b.call(_a22); }); expose({ setActiveItem }); return (_ctx, _cache) => { return vue.openBlock(), vue.createBlock(vue.unref(ElTeleport), { to: "body", disabled: !_ctx.teleported }, { default: vue.withCtx(() => [ vue.createVNode(vue.Transition, { name: "viewer-fade", appear: "" }, { default: vue.withCtx(() => [ vue.createElementVNode("div", { ref_key: "wrapper", ref: wrapper, tabindex: -1, class: vue.normalizeClass(vue.unref(ns).e("wrapper")), style: vue.normalizeStyle({ zIndex: zIndex2.value }) }, [ vue.createElementVNode("div", { class: vue.normalizeClass(vue.unref(ns).e("mask")), onClick: vue.withModifiers(($event) => _ctx.hideOnClickModal && hide(), ["self"]) }, null, 10, ["onClick"]), vue.createCommentVNode(" CLOSE "), vue.createElementVNode("span", { class: vue.normalizeClass([vue.unref(ns).e("btn"), vue.unref(ns).e("close")]), onClick: hide }, [ vue.createVNode(vue.unref(ElIcon), null, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(close_default)) ]), _: 1 }) ], 2), vue.createCommentVNode(" ARROW "), !vue.unref(isSingle) ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [ vue.createElementVNode("span", { class: vue.normalizeClass(vue.unref(arrowPrevKls)), onClick: prev }, [ vue.createVNode(vue.unref(ElIcon), null, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(arrow_left_default)) ]), _: 1 }) ], 2), vue.createElementVNode("span", { class: vue.normalizeClass(vue.unref(arrowNextKls)), onClick: next }, [ vue.createVNode(vue.unref(ElIcon), null, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(arrow_right_default)) ]), _: 1 }) ], 2) ], 64)) : vue.createCommentVNode("v-if", true), vue.createCommentVNode(" ACTIONS "), vue.createElementVNode("div", { class: vue.normalizeClass([vue.unref(ns).e("btn"), vue.unref(ns).e("actions")]) }, [ vue.createElementVNode("div", { class: vue.normalizeClass(vue.unref(ns).e("actions__inner")) }, [ vue.createVNode(vue.unref(ElIcon), { onClick: ($event) => handleActions("zoomOut") }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(zoom_out_default)) ]), _: 1 }, 8, ["onClick"]), vue.createVNode(vue.unref(ElIcon), { onClick: ($event) => handleActions("zoomIn") }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(zoom_in_default)) ]), _: 1 }, 8, ["onClick"]), vue.createElementVNode("i", { class: vue.normalizeClass(vue.unref(ns).e("actions__divider")) }, null, 2), vue.createVNode(vue.unref(ElIcon), { onClick: toggleMode }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(mode).icon))) ]), _: 1 }), vue.createElementVNode("i", { class: vue.normalizeClass(vue.unref(ns).e("actions__divider")) }, null, 2), vue.createVNode(vue.unref(ElIcon), { onClick: ($event) => handleActions("anticlockwise") }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(refresh_left_default)) ]), _: 1 }, 8, ["onClick"]), vue.createVNode(vue.unref(ElIcon), { onClick: ($event) => handleActions("clockwise") }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(refresh_right_default)) ]), _: 1 }, 8, ["onClick"]) ], 2) ], 2), vue.createCommentVNode(" CANVAS "), vue.createElementVNode("div", { class: vue.normalizeClass(vue.unref(ns).e("canvas")) }, [ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.urlList, (url, i) => { return vue.withDirectives((vue.openBlock(), vue.createElementBlock("img", { ref_for: true, ref: (el) => imgRefs.value[i] = el, key: url, src: url, style: vue.normalizeStyle(vue.unref(imgStyle)), class: vue.normalizeClass(vue.unref(ns).e("img")), crossorigin: _ctx.crossorigin, onLoad: handleImgLoad, onError: handleImgError, onMousedown: handleMouseDown }, null, 46, ["src", "crossorigin"])), [ [vue.vShow, i === activeIndex.value] ]); }), 128)) ], 2), vue.renderSlot(_ctx.$slots, "default") ], 6) ]), _: 3 }) ]), _: 3 }, 8, ["disabled"]); }; } }); var ImageViewer = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__file", "image-viewer.vue"]]); const ElImageViewer = withInstall(ImageViewer); 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 }, minScale: { type: Number, default: 0.2 }, maxScale: { type: Number, default: 7 }, crossorigin: { type: definePropType(String) } }); const imageEmits = { load: (evt) => evt instanceof Event, error: (evt) => evt instanceof Event, switch: (val) => isNumber(val), close: () => true, show: () => true }; const __default__$a = vue.defineComponent({ name: "ElImage", inheritAttrs: false }); const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({ ...__default__$a, props: imageProps, emits: imageEmits, setup(__props, { emit }) { const props = __props; let prevOverflow = ""; const { t } = useLocale(); const ns = useNamespace("image"); const rawAttrs = vue.useAttrs(); const containerAttrs = 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: vue.computed(() => { return Object.keys(containerAttrs.value); }) }); const imageSrc = vue.ref(); const hasLoadError = vue.ref(false); const isLoading = vue.ref(true); const showViewer = vue.ref(false); const container = vue.ref(); const _scrollContainer = vue.ref(); const supportLoading = isClient && "loading" in HTMLImageElement.prototype; let stopScrollListener; let stopWheelListener; const imageKls = vue.computed(() => [ ns.e("inner"), preview.value && ns.e("preview"), isLoading.value && ns.is("loading") ]); const imageStyle = vue.computed(() => { const { fit } = props; if (isClient && fit) { return { objectFit: fit }; } return {}; }); const preview = vue.computed(() => { const { previewSrcList } = props; return Array.isArray(previewSrcList) && previewSrcList.length > 0; }); const imageIndex = vue.computed(() => { const { previewSrcList, initialIndex } = props; let previewIndex = initialIndex; if (initialIndex > previewSrcList.length - 1) { previewIndex = 0; } return previewIndex; }); const isManual = 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() { if (isInContainer(container.value, _scrollContainer.value)) { loadImage(); removeLazyLoadListener(); } } const lazyLoadHandler = useThrottleFn(handleLazyLoad, 200, true); async function addLazyLoadListener() { var _a2; if (!isClient) return; await vue.nextTick(); const { scrollContainer } = props; if (isElement(scrollContainer)) { _scrollContainer.value = scrollContainer; } else if (isString(scrollContainer) && scrollContainer !== "") { _scrollContainer.value = (_a2 = document.querySelector(scrollContainer)) != null ? _a2 : void 0; } else if (container.value) { _scrollContainer.value = getScrollContainer(container.value); } if (_scrollContainer.value) { stopScrollListener = useEventListener(_scrollContainer, "scroll", lazyLoadHandler); setTimeout(() => handleLazyLoad(), 100); } } function removeLazyLoadListener() { if (!isClient || !_scrollContainer.value || !lazyLoadHandler) return; stopScrollListener == null ? void 0 : stopScrollListener(); _scrollContainer.value = void 0; } function wheelHandler(e) { if (!e.ctrlKey) return; if (e.deltaY < 0) { e.preventDefault(); return false; } else if (e.deltaY > 0) { e.preventDefault(); return false; } } function clickHandler() { if (!preview.value) return; stopWheelListener = useEventListener("wheel", wheelHandler, { passive: false }); prevOverflow = document.body.style.overflow; document.body.style.overflow = "hidden"; showViewer.value = true; emit("show"); } function closeViewer() { stopWheelListener == null ? void 0 : stopWheelListener(); document.body.style.overflow = prevOverflow; showViewer.value = false; emit("close"); } function switchViewer(val) { emit("switch", val); } vue.watch(() => props.src, () => { if (isManual.value) { isLoading.value = true; hasLoadError.value = false; removeLazyLoadListener(); addLazyLoadListener(); } else { loadImage(); } }); vue.onMounted(() => { if (isManual.value) { addLazyLoadListener(); } else { loadImage(); } }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({ ref_key: "container", ref: container }, vue.unref(containerAttrs), { class: [vue.unref(ns).b(), _ctx.$attrs.class] }), [ hasLoadError.value ? vue.renderSlot(_ctx.$slots, "error", { key: 0 }, () => [ vue.createElementVNode("div", { class: vue.normalizeClass(vue.unref(ns).e("error")) }, vue.toDisplayString(vue.unref(t)("el.image.error")), 3) ]) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [ imageSrc.value !== void 0 ? (vue.openBlock(), vue.createElementBlock("img", vue.mergeProps({ key: 0 }, vue.unref(imgAttrs), { src: imageSrc.value, loading: _ctx.loading, style: vue.unref(imageStyle), class: vue.unref(imageKls), crossorigin: _ctx.crossorigin, onClick: clickHandler, onLoad: handleLoad, onError: handleError }), null, 16, ["src", "loading", "crossorigin"])) : vue.createCommentVNode("v-if", true), isLoading.value ? (vue.openBlock(), vue.createElementBlock("div", { key: 1, class: vue.normalizeClass(vue.unref(ns).e("wrapper")) }, [ vue.renderSlot(_ctx.$slots, "placeholder", {}, () => [ vue.createElementVNode("div", { class: vue.normalizeClass(vue.unref(ns).e("placeholder")) }, null, 2) ]) ], 2)) : vue.createCommentVNode("v-if", true) ], 64)), vue.unref(preview) ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [ showViewer.value ? (vue.openBlock(), vue.createBlock(vue.unref(ElImageViewer), { key: 0, "z-index": _ctx.zIndex, "initial-index": vue.unref(imageIndex), infinite: _ctx.infinite, "zoom-rate": _ctx.zoomRate, "min-scale": _ctx.minScale, "max-scale": _ctx.maxScale, "url-list": _ctx.previewSrcList, crossorigin: _ctx.crossorigin, "hide-on-click-modal": _ctx.hideOnClickModal, teleported: _ctx.previewTeleported, "close-on-press-escape": _ctx.closeOnPressEscape, onClose: closeViewer, onSwitch: switchViewer }, { default: vue.withCtx(() => [ _ctx.$slots.viewer ? (vue.openBlock(), vue.createElementBlock("div", { key: 0 }, [ vue.renderSlot(_ctx.$slots, "viewer") ])) : vue.createCommentVNode("v-if", true) ]), _: 3 }, 8, ["z-index", "initial-index", "infinite", "zoom-rate", "min-scale", "max-scale", "url-list", "crossorigin", "hide-on-click-modal", "teleported", "close-on-press-escape"])) : vue.createCommentVNode("v-if", true) ], 64)) : vue.createCommentVNode("v-if", true) ], 16); }; } }); var Image$1 = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__file", "image.vue"]]); const ElImage = withInstall(Image$1); const inputNumberProps = buildProps({ id: { type: String, default: void 0 }, step: { type: Number, default: 1 }, stepStrictly: Boolean, max: { type: Number, default: Number.POSITIVE_INFINITY }, min: { type: Number, default: Number.NEGATIVE_INFINITY }, modelValue: Number, readonly: Boolean, disabled: Boolean, size: useSizeProp, controls: { type: Boolean, default: true }, controlsPosition: { type: String, default: "", values: ["", "right"] }, valueOnClear: { type: [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"]) }); 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) }; const __default__$9 = vue.defineComponent({ name: "ElInputNumber" }); const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({ ...__default__$9, props: inputNumberProps, emits: inputNumberEmits, setup(__props, { expose, emit }) { const props = __props; const { t } = useLocale(); const ns = useNamespace("input-number"); const input = vue.ref(); const data = vue.reactive({ currentValue: props.modelValue, userInput: null }); const { formItem } = useFormItem(); const minDisabled = vue.computed(() => isNumber(props.modelValue) && props.modelValue <= props.min); const maxDisabled = vue.computed(() => isNumber(props.modelValue) && props.modelValue >= props.max); const numPrecision = vue.computed(() => { const stepPrecision = getPrecision(props.step); if (!isUndefined(props.precision)) { if (stepPrecision > props.precision) { 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 = vue.computed(() => { return props.controls && props.controlsPosition === "right"; }); const inputNumberSize = useFormSize(); const inputNumberDisabled = useFormDisabled(); const displayValue = 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; const nums = snum.replace(".", "").split(""); const datum = nums[pointPos + pre]; if (!datum) 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; return toPrecision(val + props.step * coefficient); }; const increase = () => { if (props.readonly || inputNumberDisabled.value || maxDisabled.value) return; const value = Number(displayValue.value) || 0; const newVal = ensurePrecision(value); setCurrentValue(newVal); emit(INPUT_EVENT, data.currentValue); setCurrentValueToModelValue(); }; const decrease = () => { if (props.readonly || inputNumberDisabled.value || minDisabled.value) return; const value = Number(displayValue.value) || 0; const newVal = ensurePrecision(value, -1); setCurrentValue(newVal); emit(INPUT_EVENT, data.currentValue); setCurrentValueToModelValue(); }; const verifyValue = (value, update) => { const { max: max2, min: min2, step, precision, stepStrictly, valueOnClear } = props; if (max2 < min2) { 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: min2, max: max2 }[valueOnClear] : valueOnClear; } if (stepStrictly) { newVal = toPrecision(Math.round(newVal / step) * step, precision); if (newVal !== value) { update && emit(UPDATE_MODEL_EVENT, newVal); } } if (!isUndefined(precision)) { newVal = toPrecision(newVal, precision); } if (newVal > max2 || newVal < min2) { newVal = newVal > max2 ? max2 : min2; update && emit(UPDATE_MODEL_EVENT, newVal); } return newVal; }; const setCurrentValue = (value, emitChange = true) => { var _a2; const oldVal = data.currentValue; const newVal = verifyValue(value); if (!emitChange) { emit(UPDATE_MODEL_EVENT, newVal); return; } if (oldVal === newVal && value) return; data.userInput = null; emit(UPDATE_MODEL_EVENT, newVal); if (oldVal !== newVal) { emit(CHANGE_EVENT, newVal, oldVal); } if (props.validateEvent) { (_a2 = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a2.call(formItem, "change").catch((err) => 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 = () => { var _a2, _b; (_b = (_a2 = input.value) == null ? void 0 : _a2.focus) == null ? void 0 : _b.call(_a2); }; const blur = () => { var _a2, _b; (_b = (_a2 = input.value) == null ? void 0 : _a2.blur) == null ? void 0 : _b.call(_a2); }; const handleFocus = (event) => { emit("focus", event); }; const handleBlur = (event) => { var _a2; data.userInput = null; emit("blur", event); if (props.validateEvent) { (_a2 = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a2.call(formItem, "blur").catch((err) => debugWarn(err)); } }; const setCurrentValueToModelValue = () => { if (data.currentValue !== props.modelValue) { data.currentValue = props.modelValue; } }; const handleWheel = (e) => { if (document.activeElement === e.target) e.preventDefault(); }; vue.watch(() => props.modelValue, (value, oldValue) => { const newValue = verifyValue(value, true); if (data.userInput === null && newValue !== oldValue) { data.currentValue = newValue; } }, { immediate: true }); vue.onMounted(() => { var _a2; const { min: min2, max: max2, modelValue } = props; const innerInput = (_a2 = input.value) == null ? void 0 : _a2.input; innerInput.setAttribute("role", "spinbutton"); if (Number.isFinite(max2)) { innerInput.setAttribute("aria-valuemax", String(max2)); } else { innerInput.removeAttribute("aria-valuemax"); } if (Number.isFinite(min2)) { innerInput.setAttribute("aria-valuemin", String(min2)); } 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 }); }); vue.onUpdated(() => { var _a2, _b; const innerInput = (_a2 = input.value) == null ? void 0 : _a2.input; innerInput == null ? void 0 : innerInput.setAttribute("aria-valuenow", `${(_b = data.currentValue) != null ? _b : ""}`); }); expose({ focus, blur }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass([ vue.unref(ns).b(), vue.unref(ns).m(vue.unref(inputNumberSize)), vue.unref(ns).is("disabled", vue.unref(inputNumberDisabled)), vue.unref(ns).is("without-controls", !_ctx.controls), vue.unref(ns).is("controls-right", vue.unref(controlsAtRight)) ]), onDragstart: vue.withModifiers(() => { }, ["prevent"]) }, [ _ctx.controls ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("span", { key: 0, role: "button", "aria-label": vue.unref(t)("el.inputNumber.decrease"), class: vue.normalizeClass([vue.unref(ns).e("decrease"), vue.unref(ns).is("disabled", vue.unref(minDisabled))]), onKeydown: vue.withKeys(decrease, ["enter"]) }, [ vue.renderSlot(_ctx.$slots, "decrease-icon", {}, () => [ vue.createVNode(vue.unref(ElIcon), null, { default: vue.withCtx(() => [ vue.unref(controlsAtRight) ? (vue.openBlock(), vue.createBlock(vue.unref(arrow_down_default), { key: 0 })) : (vue.openBlock(), vue.createBlock(vue.unref(minus_default), { key: 1 })) ]), _: 1 }) ]) ], 42, ["aria-label", "onKeydown"])), [ [vue.unref(vRepeatClick), decrease] ]) : vue.createCommentVNode("v-if", true), _ctx.controls ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("span", { key: 1, role: "button", "aria-label": vue.unref(t)("el.inputNumber.increase"), class: vue.normalizeClass([vue.unref(ns).e("increase"), vue.unref(ns).is("disabled", vue.unref(maxDisabled))]), onKeydown: vue.withKeys(increase, ["enter"]) }, [ vue.renderSlot(_ctx.$slots, "increase-icon", {}, () => [ vue.createVNode(vue.unref(ElIcon), null, { default: vue.withCtx(() => [ vue.unref(controlsAtRight) ? (vue.openBlock(), vue.createBlock(vue.unref(arrow_up_default), { key: 0 })) : (vue.openBlock(), vue.createBlock(vue.unref(plus_default), { key: 1 })) ]), _: 1 }) ]) ], 42, ["aria-label", "onKeydown"])), [ [vue.unref(vRepeatClick), increase] ]) : vue.createCommentVNode("v-if", true), vue.createVNode(vue.unref(ElInput), { id: _ctx.id, ref_key: "input", ref: input, type: "number", step: _ctx.step, "model-value": vue.unref(displayValue), placeholder: _ctx.placeholder, readonly: _ctx.readonly, disabled: vue.unref(inputNumberDisabled), size: vue.unref(inputNumberSize), max: _ctx.max, min: _ctx.min, name: _ctx.name, "aria-label": _ctx.ariaLabel, "validate-event": false, onKeydown: [ vue.withKeys(vue.withModifiers(increase, ["prevent"]), ["up"]), vue.withKeys(vue.withModifiers(decrease, ["prevent"]), ["down"]) ], onBlur: handleBlur, onFocus: handleFocus, onInput: handleInput, onChange: handleInputChange }, vue.createSlots({ _: 2 }, [ _ctx.$slots.prefix ? { name: "prefix", fn: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "prefix") ]) } : void 0, _ctx.$slots.suffix ? { name: "suffix", fn: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "suffix") ]) } : void 0 ]), 1032, ["id", "step", "model-value", "placeholder", "readonly", "disabled", "size", "max", "min", "name", "aria-label", "onKeydown"]) ], 42, ["onDragstart"]); }; } }); var InputNumber = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__file", "input-number.vue"]]); const ElInputNumber = withInstall(InputNumber); const selectGroupKey = Symbol("ElSelectGroup"); const selectKey = Symbol("ElSelect"); function useOption(props, states) { const select = vue.inject(selectKey); const selectGroup = vue.inject(selectGroupKey, { disabled: false }); const itemSelected = vue.computed(() => { return contains2(castArray(select.props.modelValue), props.value); }); const limitReached = vue.computed(() => { var _a2; if (select.props.multiple) { const modelValue = castArray((_a2 = select.props.modelValue) != null ? _a2 : []); return !itemSelected.value && modelValue.length >= select.props.multipleLimit && select.props.multipleLimit > 0; } else { return false; } }); const currentLabel = vue.computed(() => { return props.label || (isObject$1(props.value) ? "" : props.value); }); const currentValue = vue.computed(() => { return props.value || props.label || ""; }); const isDisabled = vue.computed(() => { return props.disabled || states.groupDisabled || limitReached.value; }); const instance = vue.getCurrentInstance(); const contains2 = (arr = [], target) => { if (!isObject$1(props.value)) { return arr && arr.includes(target); } else { const valueKey = select.props.valueKey; return arr && arr.some((item) => { return vue.toRaw(get(item, valueKey)) === get(target, valueKey); }); } }; const hoverItem = () => { if (!props.disabled && !selectGroup.disabled) { select.states.hoveringIndex = select.optionsArray.indexOf(instance.proxy); } }; const updateOption = (query2) => { const regexp = new RegExp(escapeStringRegexp(query2), "i"); states.visible = regexp.test(currentLabel.value) || props.created; }; vue.watch(() => currentLabel.value, () => { if (!props.created && !select.props.remote) select.setSelected(); }); vue.watch(() => props.value, (val, oldVal) => { const { remote, valueKey } = select.props; if (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(); } }); vue.watch(() => selectGroup.disabled, () => { states.groupDisabled = selectGroup.disabled; }, { immediate: true }); return { select, currentLabel, currentValue, itemSelected, isDisabled, hoverItem, updateOption }; } const _sfc_main$r = vue.defineComponent({ name: "ElOption", componentName: "ElOption", props: { value: { required: true, type: [String, Number, Boolean, Object] }, label: [String, Number], created: Boolean, disabled: Boolean }, setup(props) { const ns = useNamespace("select"); const id = useId(); const containerKls = vue.computed(() => [ ns.be("dropdown", "item"), ns.is("disabled", vue.unref(isDisabled)), ns.is("selected", vue.unref(itemSelected)), ns.is("hovering", vue.unref(hover)) ]); const states = vue.reactive({ index: -1, groupDisabled: false, visible: true, hover: false }); const { currentLabel, itemSelected, isDisabled, select, hoverItem, updateOption } = useOption(props, states); const { visible, hover } = vue.toRefs(states); const vm = vue.getCurrentInstance().proxy; select.onOptionCreate(vm); vue.onBeforeUnmount(() => { const key = vm.value; const { selected } = select.states; const selectedOptions = select.props.multiple ? selected : [selected]; const doesSelected = selectedOptions.some((item) => { return item.value === vm.value; }); vue.nextTick(() => { 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); } } return { ns, id, containerKls, currentLabel, itemSelected, isDisabled, select, hoverItem, updateOption, visible, hover, selectOptionClick, states }; } }); function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) { return vue.withDirectives((vue.openBlock(), vue.createElementBlock("li", { id: _ctx.id, class: vue.normalizeClass(_ctx.containerKls), role: "option", "aria-disabled": _ctx.isDisabled || void 0, "aria-selected": _ctx.itemSelected, onMouseenter: _ctx.hoverItem, onClick: vue.withModifiers(_ctx.selectOptionClick, ["stop"]) }, [ vue.renderSlot(_ctx.$slots, "default", {}, () => [ vue.createElementVNode("span", null, vue.toDisplayString(_ctx.currentLabel), 1) ]) ], 42, ["id", "aria-disabled", "aria-selected", "onMouseenter", "onClick"])), [ [vue.vShow, _ctx.visible] ]); } var Option = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["render", _sfc_render$4], ["__file", "option.vue"]]); const _sfc_main$q = vue.defineComponent({ name: "ElSelectDropdown", componentName: "ElSelectDropdown", setup() { const select = vue.inject(selectKey); const ns = useNamespace("select"); const popperClass = vue.computed(() => select.props.popperClass); const isMultiple = vue.computed(() => select.props.multiple); const isFitInputWidth = vue.computed(() => select.props.fitInputWidth); const minWidth = vue.ref(""); function updateMinWidth() { var _a2; minWidth.value = `${(_a2 = select.selectRef) == null ? void 0 : _a2.offsetWidth}px`; } vue.onMounted(() => { updateMinWidth(); useResizeObserver(select.selectRef, updateMinWidth); }); return { ns, minWidth, popperClass, isMultiple, isFitInputWidth }; } }); function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass([_ctx.ns.b("dropdown"), _ctx.ns.is("multiple", _ctx.isMultiple), _ctx.popperClass]), style: vue.normalizeStyle({ [_ctx.isFitInputWidth ? "width" : "minWidth"]: _ctx.minWidth }) }, [ _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", { key: 0, class: vue.normalizeClass(_ctx.ns.be("dropdown", "header")) }, [ vue.renderSlot(_ctx.$slots, "header") ], 2)) : vue.createCommentVNode("v-if", true), vue.renderSlot(_ctx.$slots, "default"), _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", { key: 1, class: vue.normalizeClass(_ctx.ns.be("dropdown", "footer")) }, [ vue.renderSlot(_ctx.$slots, "footer") ], 2)) : vue.createCommentVNode("v-if", true) ], 6); } var ElSelectMenu = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["render", _sfc_render$3], ["__file", "select-dropdown.vue"]]); const MINIMUM_INPUT_WIDTH = 11; const useSelect = (props, emit) => { const { t } = useLocale(); const contentId = useId(); const nsSelect = useNamespace("select"); const nsInput = useNamespace("input"); const states = vue.reactive({ inputValue: "", options: /* @__PURE__ */ new Map(), cachedOptions: /* @__PURE__ */ new Map(), disabledOptions: /* @__PURE__ */ new Map(), optionValues: [], selected: [], selectionWidth: 0, calculatorWidth: 0, collapseItemWidth: 0, selectedLabel: "", hoveringIndex: -1, previousQuery: null, inputHovering: false, menuVisibleOnFocus: false, isBeforeHide: false }); const selectRef = vue.ref(null); const selectionRef = vue.ref(null); const tooltipRef = vue.ref(null); const tagTooltipRef = vue.ref(null); const inputRef = vue.ref(null); const calculatorRef = vue.ref(null); const prefixRef = vue.ref(null); const suffixRef = vue.ref(null); const menuRef = vue.ref(null); const tagMenuRef = vue.ref(null); const collapseItemRef = vue.ref(null); const scrollbarRef = vue.ref(null); const { isComposing, handleCompositionStart, handleCompositionUpdate, handleCompositionEnd } = useComposition({ afterComposition: (e) => onInput(e) }); const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, { beforeFocus() { return selectDisabled.value; }, afterFocus() { if (props.automaticDropdown && !expanded.value) { expanded.value = true; states.menuVisibleOnFocus = true; } }, beforeBlur(event) { var _a2, _b; return ((_a2 = tooltipRef.value) == null ? void 0 : _a2.isFocusInsideContent(event)) || ((_b = tagTooltipRef.value) == null ? void 0 : _b.isFocusInsideContent(event)); }, afterBlur() { expanded.value = false; states.menuVisibleOnFocus = false; } }); const expanded = vue.ref(false); const hoverOption = vue.ref(); const { form, formItem } = useFormItem(); const { inputId } = useFormItemInputId(props, { formItemContext: formItem }); const { valueOnClear, isEmptyValue } = useEmptyValues(props); const selectDisabled = vue.computed(() => props.disabled || (form == null ? void 0 : form.disabled)); const hasModelValue = vue.computed(() => { return isArray$1(props.modelValue) ? props.modelValue.length > 0 : !isEmptyValue(props.modelValue); }); const showClose = vue.computed(() => { return props.clearable && !selectDisabled.value && states.inputHovering && hasModelValue.value; }); const iconComponent = vue.computed(() => props.remote && props.filterable && !props.remoteShowSuffix ? "" : props.suffixIcon); const iconReverse = vue.computed(() => nsSelect.is("reverse", iconComponent.value && expanded.value)); const validateState = vue.computed(() => (formItem == null ? void 0 : formItem.validateState) || ""); const validateIcon = vue.computed(() => ValidateComponentsMap[validateState.value]); const debounce$12 = vue.computed(() => props.remote ? 300 : 0); const emptyText = vue.computed(() => { if (props.loading) { return props.loadingText || t("el.select.loading"); } else { if (props.remote && !states.inputValue && states.options.size === 0) return false; 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 = vue.computed(() => optionsArray.value.filter((option) => option.visible).length); const optionsArray = 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 = vue.computed(() => Array.from(states.cachedOptions.values())); const showNewOption = 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 updateOptions2 = () => { if (props.filterable && isFunction$1(props.filterMethod)) return; if (props.filterable && props.remote && isFunction$1(props.remoteMethod)) return; optionsArray.value.forEach((option) => { var _a2; (_a2 = option.updateOption) == null ? void 0 : _a2.call(option, states.inputValue); }); }; const selectSize = useFormSize(); const collapseTagSize = vue.computed(() => ["small"].includes(selectSize.value) ? "small" : "default"); const dropdownMenuVisible = vue.computed({ get() { return expanded.value && emptyText.value !== false; }, set(val) { expanded.value = val; } }); const shouldShowPlaceholder = vue.computed(() => { if (props.multiple && !isUndefined(props.modelValue)) { return castArray(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 = vue.computed(() => { var _a2; const _placeholder = (_a2 = props.placeholder) != null ? _a2 : t("el.select.placeholder"); return props.multiple || !hasModelValue.value ? _placeholder : states.selectedLabel; }); const mouseEnterEventName = vue.computed(() => isIOS ? null : "mouseenter"); vue.watch(() => props.modelValue, (val, oldVal) => { if (props.multiple) { if (props.filterable && !props.reserveKeyword) { states.inputValue = ""; handleQueryChange(""); } } setSelected(); if (!isEqual(val, oldVal) && props.validateEvent) { formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn(err)); } }, { flush: "post", deep: true }); vue.watch(() => expanded.value, (val) => { if (val) { handleQueryChange(states.inputValue); } else { states.inputValue = ""; states.previousQuery = null; states.isBeforeHide = true; } emit("visible-change", val); }); vue.watch(() => states.options.entries(), () => { var _a2; if (!isClient) return; const inputs = ((_a2 = selectRef.value) == null ? void 0 : _a2.querySelectorAll("input")) || []; if (!props.filterable && !props.defaultFirstOption && !isUndefined(props.modelValue) || !Array.from(inputs).includes(document.activeElement)) { setSelected(); } if (props.defaultFirstOption && (props.filterable || props.remote) && filteredOptionsCount.value) { checkDefaultFirstOption(); } }, { flush: "post" }); vue.watch(() => states.hoveringIndex, (val) => { if (isNumber(val) && val > -1) { hoverOption.value = optionsArray.value[val] || {}; } else { hoverOption.value = {}; } optionsArray.value.forEach((option) => { option.hover = hoverOption.value === option; }); }); vue.watchEffect(() => { if (states.isBeforeHide) return; updateOptions2(); }); 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) { vue.nextTick(checkDefaultFirstOption); } else { vue.nextTick(updateHoveringIndex); } }; 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, userCreatedOption || firstOriginOption); }; const setSelected = () => { if (!props.multiple) { const value = isArray$1(props.modelValue) ? props.modelValue[0] : props.modelValue; const option = getOption(value); states.selectedLabel = option.currentLabel; states.selected = [option]; return; } else { states.selectedLabel = ""; } const result2 = []; if (!isUndefined(props.modelValue)) { castArray(props.modelValue).forEach((value) => { result2.push(getOption(value)); }); } states.selected = result2; }; const getOption = (value) => { let option; const isObjectValue = toRawType(value).toLowerCase() === "object"; const isNull2 = toRawType(value).toLowerCase() === "null"; const isUndefined2 = toRawType(value).toLowerCase() === "undefined"; for (let i = states.cachedOptions.size - 1; i >= 0; i--) { const cachedOption = cachedOptionsArray.value[i]; const isEqualValue = isObjectValue ? get(cachedOption.value, props.valueKey) === get(value, props.valueKey) : cachedOption.value === value; if (isEqualValue) { option = { value, currentLabel: cachedOption.currentLabel, get isDisabled() { return cachedOption.isDisabled; } }; break; } } if (option) return option; const label = isObjectValue ? value.label : !isNull2 && !isUndefined2 ? value : ""; const newOption = { value, currentLabel: label }; return newOption; }; const updateHoveringIndex = () => { states.hoveringIndex = optionsArray.value.findIndex((item) => states.selected.some((selected) => getValueKey(selected) === getValueKey(item))); }; const resetSelectionWidth = () => { states.selectionWidth = selectionRef.value.getBoundingClientRect().width; }; const resetCalculatorWidth = () => { states.calculatorWidth = calculatorRef.value.getBoundingClientRect().width; }; const resetCollapseItemWidth = () => { states.collapseItemWidth = collapseItemRef.value.getBoundingClientRect().width; }; const updateTooltip = () => { var _a2, _b; (_b = (_a2 = tooltipRef.value) == null ? void 0 : _a2.updatePopper) == null ? void 0 : _b.call(_a2); }; const updateTagTooltip = () => { var _a2, _b; (_b = (_a2 = tagTooltipRef.value) == null ? void 0 : _a2.updatePopper) == null ? void 0 : _b.call(_a2); }; 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) { debouncedOnInputChange(); } else { return onInputChange(); } }; const debouncedOnInputChange = debounce(() => { onInputChange(); }, debounce$12.value); const emitChange = (val) => { if (!isEqual(props.modelValue, val)) { emit(CHANGE_EVENT, val); } }; const getLastNotDisabledIndex = (value) => findLastIndex(value, (it2) => !states.disabledOptions.has(it2)); const deletePrevTag = (e) => { if (!props.multiple) return; if (e.code === EVENT_CODE.delete) return; if (e.target.value.length <= 0) { const value = castArray(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(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) => { var _a2; if (props.multiple) { const value = castArray((_a2 = props.modelValue) != null ? _a2 : []).slice(); const optionIndex = getValueIndex(value, option.value); 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 && !props.reserveKeyword) { states.inputValue = ""; } } else { emit(UPDATE_MODEL_EVENT, option.value); emitChange(option.value); expanded.value = false; } focus(); if (expanded.value) return; vue.nextTick(() => { scrollToOption(option); }); }; const getValueIndex = (arr = [], value) => { if (!isObject$1(value)) return arr.indexOf(value); const valueKey = props.valueKey; let index = -1; arr.some((item, i) => { if (vue.toRaw(get(item, valueKey)) === get(value, valueKey)) { index = i; return true; } return false; }); return index; }; const scrollToOption = (option) => { var _a2, _b, _c, _d, _e; const targetOption = isArray$1(option) ? option[0] : option; let target = null; if (targetOption == null ? void 0 : 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 = (_d = (_c = (_b = (_a2 = tooltipRef.value) == null ? void 0 : _a2.popperRef) == null ? void 0 : _b.contentRef) == null ? void 0 : _c.querySelector) == null ? void 0 : _d.call(_c, `.${nsSelect.be("dropdown", "wrap")}`); if (menu) { scrollIntoView(menu, target); } } (_e = scrollbarRef.value) == null ? void 0 : _e.handleScroll(); }; const onOptionCreate = (vm) => { states.options.set(vm.value, vm); states.cachedOptions.set(vm.value, vm); vm.disabled && states.disabledOptions.set(vm.value, vm); }; const onOptionDestroy = (key, vm) => { if (states.options.get(key) === vm) { states.options.delete(key); } }; const popperRef = vue.computed(() => { var _a2, _b; return (_b = (_a2 = tooltipRef.value) == null ? void 0 : _a2.popperRef) == null ? void 0 : _b.contentRef; }); const handleMenuEnter = () => { states.isBeforeHide = false; vue.nextTick(() => scrollToOption(states.selected)); }; const focus = () => { var _a2; (_a2 = inputRef.value) == null ? void 0 : _a2.focus(); }; const blur = () => { var _a2; if (expanded.value) { expanded.value = false; vue.nextTick(() => { var _a22; return (_a22 = inputRef.value) == null ? void 0 : _a22.blur(); }); return; } (_a2 = inputRef.value) == null ? void 0 : _a2.blur(); }; const handleClearClick = (event) => { deleteSelected(event); }; const handleClickOutside = (event) => { expanded.value = false; if (isFocused.value) { const _event2 = new FocusEvent("focus", event); vue.nextTick(() => handleBlur(_event2)); } }; const handleEsc = () => { if (states.inputValue.length > 0) { states.inputValue = ""; } else { expanded.value = false; } }; const toggleMenu = () => { if (selectDisabled.value) return; if (isIOS) states.inputHovering = true; if (states.menuVisibleOnFocus) { states.menuVisibleOnFocus = false; } else { expanded.value = !expanded.value; } }; const selectOption = () => { if (!expanded.value) { toggleMenu(); } else { if (optionsArray.value[states.hoveringIndex]) { handleOptionSelect(optionsArray.value[states.hoveringIndex]); } } }; const getValueKey = (item) => { return isObject$1(item.value) ? get(item.value, props.valueKey) : item.value; }; const optionsAllDisabled = vue.computed(() => optionsArray.value.filter((option) => option.visible).every((option) => option.disabled)); const showTagList = vue.computed(() => { if (!props.multiple) { return []; } return props.collapseTags ? states.selected.slice(0, props.maxCollapseTags) : states.selected; }); const collapseTagList = 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 || states.filteredOptionsCount === 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.disabled === true || option.states.groupDisabled === true || !option.visible) { navigateOptions(direction); } vue.nextTick(() => scrollToOption(hoverOption.value)); } }; const getGapWidth = () => { if (!selectionRef.value) return 0; const style = window.getComputedStyle(selectionRef.value); return Number.parseFloat(style.gap || "6px"); }; const tagStyle = vue.computed(() => { const gapWidth = getGapWidth(); const maxWidth = collapseItemRef.value && props.maxCollapseTags === 1 ? states.selectionWidth - states.collapseItemWidth - gapWidth : states.selectionWidth; return { maxWidth: `${maxWidth}px` }; }); const collapseTagStyle = vue.computed(() => { return { maxWidth: `${states.selectionWidth}px` }; }); const inputStyle = vue.computed(() => ({ width: `${Math.max(states.calculatorWidth, MINIMUM_INPUT_WIDTH)}px` })); useResizeObserver(selectionRef, resetSelectionWidth); useResizeObserver(calculatorRef, resetCalculatorWidth); useResizeObserver(menuRef, updateTooltip); useResizeObserver(wrapperRef, updateTooltip); useResizeObserver(tagMenuRef, updateTagTooltip); useResizeObserver(collapseItemRef, resetCollapseItemWidth); vue.onMounted(() => { setSelected(); }); return { inputId, contentId, nsSelect, nsInput, states, isFocused, expanded, optionsArray, hoverOption, selectSize, filteredOptionsCount, resetCalculatorWidth, updateTooltip, updateTagTooltip, debouncedOnInputChange, onInput, deletePrevTag, deleteTag, deleteSelected, handleOptionSelect, scrollToOption, hasModelValue, shouldShowPlaceholder, currentPlaceholder, mouseEnterEventName, showClose, iconComponent, iconReverse, validateState, validateIcon, showNewOption, updateOptions: updateOptions2, collapseTagSize, setSelected, selectDisabled, emptyText, handleCompositionStart, handleCompositionUpdate, handleCompositionEnd, onOptionCreate, onOptionDestroy, handleMenuEnter, focus, blur, handleClearClick, handleClickOutside, handleEsc, toggleMenu, selectOption, getValueKey, navigateOptions, dropdownMenuVisible, showTagList, collapseTagList, tagStyle, collapseTagStyle, inputStyle, popperRef, inputRef, tooltipRef, tagTooltipRef, calculatorRef, prefixRef, suffixRef, selectRef, wrapperRef, selectionRef, scrollbarRef, menuRef, tagMenuRef, collapseItemRef }; }; var ElOptions = vue.defineComponent({ name: "ElOptions", setup(_2, { slots }) { const select = vue.inject(selectKey); let cachedValueList = []; return () => { var _a2, _b; const children = (_a2 = slots.default) == null ? void 0 : _a2.call(slots); const valueList = []; function filterOptions(children2) { if (!isArray$1(children2)) return; children2.forEach((item) => { var _a22, _b2, _c, _d; const name = (_a22 = (item == null ? void 0 : item.type) || {}) == null ? void 0 : _a22.name; if (name === "ElOptionGroup") { filterOptions(!isString(item.children) && !isArray$1(item.children) && isFunction$1((_b2 = item.children) == null ? void 0 : _b2.default) ? (_c = item.children) == null ? void 0 : _c.default() : item.children); } else if (name === "ElOption") { valueList.push((_d = item.props) == null ? void 0 : _d.value); } else if (isArray$1(item.children)) { filterOptions(item.children); } }); } if (children.length) { filterOptions((_b = children[0]) == null ? void 0 : _b.children); } if (!isEqual(valueList, cachedValueList)) { cachedValueList = valueList; if (select) { select.states.optionValues = valueList; } } return children; }; } }); const SelectProps = buildProps({ name: String, id: String, modelValue: { type: [Array, String, Number, Boolean, Object], default: void 0 }, autocomplete: { type: String, default: "off" }, automaticDropdown: Boolean, size: useSizeProp, effect: { type: definePropType(String), default: "light" }, disabled: Boolean, clearable: Boolean, filterable: Boolean, allowCreate: Boolean, loading: Boolean, popperClass: { type: String, default: "" }, popperOptions: { type: definePropType(Object), default: () => ({}) }, remote: Boolean, loadingText: String, noMatchText: String, noDataText: String, remoteMethod: Function, filterMethod: 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, 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, placement: { type: definePropType(String), values: Ee, default: "bottom-start" }, fallbackPlacements: { type: definePropType(Array), default: ["bottom-start", "top-start", "right", "left"] }, appendTo: String, ...useEmptyValuesProps, ...useAriaProps(["ariaLabel"]) }); const COMPONENT_NAME$4 = "ElSelect"; const _sfc_main$p = vue.defineComponent({ name: COMPONENT_NAME$4, componentName: COMPONENT_NAME$4, components: { ElSelectMenu, ElOption: Option, ElOptions, ElTag, ElScrollbar, ElTooltip, ElIcon }, directives: { ClickOutside }, props: SelectProps, emits: [ UPDATE_MODEL_EVENT, CHANGE_EVENT, "remove-tag", "clear", "visible-change", "focus", "blur" ], setup(props, { emit }) { const modelValue = 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 = vue.reactive({ ...vue.toRefs(props), modelValue }); const API = useSelect(_props, emit); vue.provide(selectKey, vue.reactive({ props: _props, states: API.states, optionsArray: API.optionsArray, handleOptionSelect: API.handleOptionSelect, onOptionCreate: API.onOptionCreate, onOptionDestroy: API.onOptionDestroy, selectRef: API.selectRef, setSelected: API.setSelected })); const selectedLabel = vue.computed(() => { if (!props.multiple) { return API.states.selectedLabel; } return API.states.selected.map((i) => i.currentLabel); }); return { ...API, modelValue, selectedLabel }; } }); function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) { const _component_el_tag = vue.resolveComponent("el-tag"); const _component_el_tooltip = vue.resolveComponent("el-tooltip"); const _component_el_icon = vue.resolveComponent("el-icon"); const _component_el_option = vue.resolveComponent("el-option"); const _component_el_options = vue.resolveComponent("el-options"); const _component_el_scrollbar = vue.resolveComponent("el-scrollbar"); const _component_el_select_menu = vue.resolveComponent("el-select-menu"); const _directive_click_outside = vue.resolveDirective("click-outside"); return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", { ref: "selectRef", class: vue.normalizeClass([_ctx.nsSelect.b(), _ctx.nsSelect.m(_ctx.selectSize)]), [vue.toHandlerKey(_ctx.mouseEnterEventName)]: ($event) => _ctx.states.inputHovering = true, onMouseleave: ($event) => _ctx.states.inputHovering = false }, [ 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-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, onBeforeShow: _ctx.handleMenuEnter, onHide: ($event) => _ctx.states.isBeforeHide = false }, { default: vue.withCtx(() => { var _a2; return [ vue.createElementVNode("div", { ref: "wrapperRef", class: 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: vue.withModifiers(_ctx.toggleMenu, ["prevent"]) }, [ _ctx.$slots.prefix ? (vue.openBlock(), vue.createElementBlock("div", { key: 0, ref: "prefixRef", class: vue.normalizeClass(_ctx.nsSelect.e("prefix")) }, [ vue.renderSlot(_ctx.$slots, "prefix") ], 2)) : vue.createCommentVNode("v-if", true), vue.createElementVNode("div", { ref: "selectionRef", class: vue.normalizeClass([ _ctx.nsSelect.e("selection"), _ctx.nsSelect.is("near", _ctx.multiple && !_ctx.$slots.prefix && !!_ctx.states.selected.length) ]) }, [ _ctx.multiple ? vue.renderSlot(_ctx.$slots, "tag", { key: 0 }, () => [ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.showTagList, (item) => { return vue.openBlock(), vue.createElementBlock("div", { key: _ctx.getValueKey(item), class: vue.normalizeClass(_ctx.nsSelect.e("selected-item")) }, [ vue.createVNode(_component_el_tag, { closable: !_ctx.selectDisabled && !item.isDisabled, size: _ctx.collapseTagSize, type: _ctx.tagType, effect: _ctx.tagEffect, "disable-transitions": "", style: vue.normalizeStyle(_ctx.tagStyle), onClose: ($event) => _ctx.deleteTag($event, item) }, { default: vue.withCtx(() => [ vue.createElementVNode("span", { class: vue.normalizeClass(_ctx.nsSelect.e("tags-text")) }, [ vue.renderSlot(_ctx.$slots, "label", { label: item.currentLabel, value: item.value }, () => [ vue.createTextVNode(vue.toDisplayString(item.currentLabel), 1) ]) ], 2) ]), _: 2 }, 1032, ["closable", "size", "type", "effect", "style", "onClose"]) ], 2); }), 128)), _ctx.collapseTags && _ctx.states.selected.length > _ctx.maxCollapseTags ? (vue.openBlock(), vue.createBlock(_component_el_tooltip, { key: 0, ref: "tagTooltipRef", disabled: _ctx.dropdownMenuVisible || !_ctx.collapseTagsTooltip, "fallback-placements": ["bottom", "top", "right", "left"], effect: _ctx.effect, placement: "bottom", teleported: _ctx.teleported }, { default: vue.withCtx(() => [ vue.createElementVNode("div", { ref: "collapseItemRef", class: vue.normalizeClass(_ctx.nsSelect.e("selected-item")) }, [ vue.createVNode(_component_el_tag, { closable: false, size: _ctx.collapseTagSize, type: _ctx.tagType, effect: _ctx.tagEffect, "disable-transitions": "", style: vue.normalizeStyle(_ctx.collapseTagStyle) }, { default: vue.withCtx(() => [ vue.createElementVNode("span", { class: vue.normalizeClass(_ctx.nsSelect.e("tags-text")) }, " + " + vue.toDisplayString(_ctx.states.selected.length - _ctx.maxCollapseTags), 3) ]), _: 1 }, 8, ["size", "type", "effect", "style"]) ], 2) ]), content: vue.withCtx(() => [ vue.createElementVNode("div", { ref: "tagMenuRef", class: vue.normalizeClass(_ctx.nsSelect.e("selection")) }, [ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.collapseTagList, (item) => { return vue.openBlock(), vue.createElementBlock("div", { key: _ctx.getValueKey(item), class: vue.normalizeClass(_ctx.nsSelect.e("selected-item")) }, [ 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: vue.withCtx(() => [ vue.createElementVNode("span", { class: vue.normalizeClass(_ctx.nsSelect.e("tags-text")) }, [ vue.renderSlot(_ctx.$slots, "label", { label: item.currentLabel, value: item.value }, () => [ vue.createTextVNode(vue.toDisplayString(item.currentLabel), 1) ]) ], 2) ]), _: 2 }, 1032, ["closable", "size", "type", "effect", "onClose"]) ], 2); }), 128)) ], 2) ]), _: 3 }, 8, ["disabled", "effect", "teleported"])) : vue.createCommentVNode("v-if", true) ]) : vue.createCommentVNode("v-if", true), !_ctx.selectDisabled ? (vue.openBlock(), vue.createElementBlock("div", { key: 1, class: vue.normalizeClass([ _ctx.nsSelect.e("selected-item"), _ctx.nsSelect.e("input-wrapper"), _ctx.nsSelect.is("hidden", !_ctx.filterable) ]) }, [ vue.withDirectives(vue.createElementVNode("input", { id: _ctx.inputId, ref: "inputRef", "onUpdate:modelValue": ($event) => _ctx.states.inputValue = $event, type: "text", name: _ctx.name, class: vue.normalizeClass([_ctx.nsSelect.e("input"), _ctx.nsSelect.is(_ctx.selectSize)]), disabled: _ctx.selectDisabled, autocomplete: _ctx.autocomplete, style: vue.normalizeStyle(_ctx.inputStyle), role: "combobox", readonly: !_ctx.filterable, spellcheck: "false", "aria-activedescendant": ((_a2 = _ctx.hoverOption) == null ? void 0 : _a2.id) || "", "aria-controls": _ctx.contentId, "aria-expanded": _ctx.dropdownMenuVisible, "aria-label": _ctx.ariaLabel, "aria-autocomplete": "none", "aria-haspopup": "listbox", onKeydown: [ vue.withKeys(vue.withModifiers(($event) => _ctx.navigateOptions("next"), ["stop", "prevent"]), ["down"]), vue.withKeys(vue.withModifiers(($event) => _ctx.navigateOptions("prev"), ["stop", "prevent"]), ["up"]), vue.withKeys(vue.withModifiers(_ctx.handleEsc, ["stop", "prevent"]), ["esc"]), vue.withKeys(vue.withModifiers(_ctx.selectOption, ["stop", "prevent"]), ["enter"]), vue.withKeys(vue.withModifiers(_ctx.deletePrevTag, ["stop"]), ["delete"]) ], onCompositionstart: _ctx.handleCompositionStart, onCompositionupdate: _ctx.handleCompositionUpdate, onCompositionend: _ctx.handleCompositionEnd, onInput: _ctx.onInput, onClick: vue.withModifiers(_ctx.toggleMenu, ["stop"]) }, null, 46, ["id", "onUpdate:modelValue", "name", "disabled", "autocomplete", "readonly", "aria-activedescendant", "aria-controls", "aria-expanded", "aria-label", "onKeydown", "onCompositionstart", "onCompositionupdate", "onCompositionend", "onInput", "onClick"]), [ [vue.vModelText, _ctx.states.inputValue] ]), _ctx.filterable ? (vue.openBlock(), vue.createElementBlock("span", { key: 0, ref: "calculatorRef", "aria-hidden": "true", class: vue.normalizeClass(_ctx.nsSelect.e("input-calculator")), textContent: vue.toDisplayString(_ctx.states.inputValue) }, null, 10, ["textContent"])) : vue.createCommentVNode("v-if", true) ], 2)) : vue.createCommentVNode("v-if", true), _ctx.shouldShowPlaceholder ? (vue.openBlock(), vue.createElementBlock("div", { key: 2, class: vue.normalizeClass([ _ctx.nsSelect.e("selected-item"), _ctx.nsSelect.e("placeholder"), _ctx.nsSelect.is("transparent", !_ctx.hasModelValue || _ctx.expanded && !_ctx.states.inputValue) ]) }, [ _ctx.hasModelValue ? vue.renderSlot(_ctx.$slots, "label", { key: 0, label: _ctx.currentPlaceholder, value: _ctx.modelValue }, () => [ vue.createElementVNode("span", null, vue.toDisplayString(_ctx.currentPlaceholder), 1) ]) : (vue.openBlock(), vue.createElementBlock("span", { key: 1 }, vue.toDisplayString(_ctx.currentPlaceholder), 1)) ], 2)) : vue.createCommentVNode("v-if", true) ], 2), vue.createElementVNode("div", { ref: "suffixRef", class: vue.normalizeClass(_ctx.nsSelect.e("suffix")) }, [ _ctx.iconComponent && !_ctx.showClose ? (vue.openBlock(), vue.createBlock(_component_el_icon, { key: 0, class: vue.normalizeClass([_ctx.nsSelect.e("caret"), _ctx.nsSelect.e("icon"), _ctx.iconReverse]) }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.iconComponent))) ]), _: 1 }, 8, ["class"])) : vue.createCommentVNode("v-if", true), _ctx.showClose && _ctx.clearIcon ? (vue.openBlock(), vue.createBlock(_component_el_icon, { key: 1, class: vue.normalizeClass([ _ctx.nsSelect.e("caret"), _ctx.nsSelect.e("icon"), _ctx.nsSelect.e("clear") ]), onClick: _ctx.handleClearClick }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.clearIcon))) ]), _: 1 }, 8, ["class", "onClick"])) : vue.createCommentVNode("v-if", true), _ctx.validateState && _ctx.validateIcon ? (vue.openBlock(), vue.createBlock(_component_el_icon, { key: 2, class: vue.normalizeClass([_ctx.nsInput.e("icon"), _ctx.nsInput.e("validateIcon")]) }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.validateIcon))) ]), _: 1 }, 8, ["class"])) : vue.createCommentVNode("v-if", true) ], 2) ], 10, ["onClick"]) ]; }), content: vue.withCtx(() => [ vue.createVNode(_component_el_select_menu, { ref: "menuRef" }, { default: vue.withCtx(() => [ _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", { key: 0, class: vue.normalizeClass(_ctx.nsSelect.be("dropdown", "header")), onClick: vue.withModifiers(() => { }, ["stop"]) }, [ vue.renderSlot(_ctx.$slots, "header") ], 10, ["onClick"])) : vue.createCommentVNode("v-if", true), vue.withDirectives(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: vue.normalizeClass([_ctx.nsSelect.is("empty", _ctx.filteredOptionsCount === 0)]), role: "listbox", "aria-label": _ctx.ariaLabel, "aria-orientation": "vertical" }, { default: vue.withCtx(() => [ _ctx.showNewOption ? (vue.openBlock(), vue.createBlock(_component_el_option, { key: 0, value: _ctx.states.inputValue, created: true }, null, 8, ["value"])) : vue.createCommentVNode("v-if", true), vue.createVNode(_component_el_options, null, { default: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "default") ]), _: 3 }) ]), _: 3 }, 8, ["id", "wrap-class", "view-class", "class", "aria-label"]), [ [vue.vShow, _ctx.states.options.size > 0 && !_ctx.loading] ]), _ctx.$slots.loading && _ctx.loading ? (vue.openBlock(), vue.createElementBlock("div", { key: 1, class: vue.normalizeClass(_ctx.nsSelect.be("dropdown", "loading")) }, [ vue.renderSlot(_ctx.$slots, "loading") ], 2)) : _ctx.loading || _ctx.filteredOptionsCount === 0 ? (vue.openBlock(), vue.createElementBlock("div", { key: 2, class: vue.normalizeClass(_ctx.nsSelect.be("dropdown", "empty")) }, [ vue.renderSlot(_ctx.$slots, "empty", {}, () => [ vue.createElementVNode("span", null, vue.toDisplayString(_ctx.emptyText), 1) ]) ], 2)) : vue.createCommentVNode("v-if", true), _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", { key: 3, class: vue.normalizeClass(_ctx.nsSelect.be("dropdown", "footer")), onClick: vue.withModifiers(() => { }, ["stop"]) }, [ vue.renderSlot(_ctx.$slots, "footer") ], 10, ["onClick"])) : vue.createCommentVNode("v-if", true) ]), _: 3 }, 512) ]), _: 3 }, 8, ["visible", "placement", "teleported", "popper-class", "popper-options", "fallback-placements", "effect", "transition", "persistent", "append-to", "onBeforeShow", "onHide"]) ], 16, ["onMouseleave"])), [ [_directive_click_outside, _ctx.handleClickOutside, _ctx.popperRef] ]); } var Select = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$2], ["__file", "select.vue"]]); const _sfc_main$o = vue.defineComponent({ name: "ElOptionGroup", componentName: "ElOptionGroup", props: { label: String, disabled: Boolean }, setup(props) { const ns = useNamespace("select"); const groupRef = vue.ref(null); const instance = vue.getCurrentInstance(); const children = vue.ref([]); vue.provide(selectGroupKey, vue.reactive({ ...vue.toRefs(props) })); const visible = vue.computed(() => children.value.some((option) => option.visible === true)); const isOption = (node) => { var _a2, _b; return ((_a2 = node.type) == null ? void 0 : _a2.name) === "ElOption" && !!((_b = node.component) == null ? void 0 : _b.proxy); }; const flattedChildren2 = (node) => { const Nodes = castArray(node); const children2 = []; Nodes.forEach((child) => { var _a2, _b; if (isOption(child)) { children2.push(child.component.proxy); } else if ((_a2 = child.children) == null ? void 0 : _a2.length) { children2.push(...flattedChildren2(child.children)); } else if ((_b = child.component) == null ? void 0 : _b.subTree) { children2.push(...flattedChildren2(child.component.subTree)); } }); return children2; }; const updateChildren = () => { children.value = flattedChildren2(instance.subTree); }; vue.onMounted(() => { updateChildren(); }); useMutationObserver(groupRef, updateChildren, { attributes: true, subtree: true, childList: true }); return { groupRef, visible, ns }; } }); function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) { return vue.withDirectives((vue.openBlock(), vue.createElementBlock("ul", { ref: "groupRef", class: vue.normalizeClass(_ctx.ns.be("group", "wrap")) }, [ vue.createElementVNode("li", { class: vue.normalizeClass(_ctx.ns.be("group", "title")) }, vue.toDisplayString(_ctx.label), 3), vue.createElementVNode("li", null, [ vue.createElementVNode("ul", { class: vue.normalizeClass(_ctx.ns.b("group")) }, [ vue.renderSlot(_ctx.$slots, "default") ], 2) ]) ], 2)), [ [vue.vShow, _ctx.visible] ]); } var OptionGroup = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render$1], ["__file", "option-group.vue"]]); const ElSelect = withInstall(Select, { Option, OptionGroup }); const ElOption = withNoopInstall(Option); withNoopInstall(OptionGroup); 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}%` } }); const __default__$8 = vue.defineComponent({ name: "ElProgress" }); const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({ ...__default__$8, props: progressProps, setup(__props) { const props = __props; const STATUS_COLOR_MAP = { success: "#13ce66", exception: "#ff4949", warning: "#e6a23c", default: "#20a0ff" }; const ns = useNamespace("progress"); const barStyle = vue.computed(() => { const barStyle2 = { width: `${props.percentage}%`, animationDuration: `${props.duration}s` }; const color = getCurrentColor(props.percentage); if (color.includes("gradient")) { barStyle2.background = color; } else { barStyle2.backgroundColor = color; } return barStyle2; }); const relativeStrokeWidth = vue.computed(() => (props.strokeWidth / props.width * 100).toFixed(1)); const radius = vue.computed(() => { if (["circle", "dashboard"].includes(props.type)) { return Number.parseInt(`${50 - Number.parseFloat(relativeStrokeWidth.value) / 2}`, 10); } return 0; }); const trackPath = 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 = vue.computed(() => 2 * Math.PI * radius.value); const rate = vue.computed(() => props.type === "dashboard" ? 0.75 : 1); const strokeDashoffset = vue.computed(() => { const offset = -1 * perimeter.value * (1 - rate.value) / 2; return `${offset}px`; }); const trailPathStyle = vue.computed(() => ({ strokeDasharray: `${perimeter.value * rate.value}px, ${perimeter.value}px`, strokeDashoffset: strokeDashoffset.value })); const circlePathStyle = 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 = 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 = 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 = vue.computed(() => { return props.type === "line" ? 12 + props.strokeWidth * 0.4 : props.width * 0.111111 + 2; }); const content = vue.computed(() => props.format(props.percentage)); function getColors(color) { const span = 100 / color.length; const seriesColors = color.map((seriesColor, index) => { if (isString(seriesColor)) { return { color: seriesColor, percentage: (index + 1) * span }; } return seriesColor; }); return seriesColors.sort((a, b) => a.percentage - b.percentage); } const getCurrentColor = (percentage) => { var _a2; const { color } = props; if (isFunction$1(color)) { return color(percentage); } else if (isString(color)) { return color; } else { const colors = getColors(color); for (const color2 of colors) { if (color2.percentage > percentage) return color2.color; } return (_a2 = colors[colors.length - 1]) == null ? void 0 : _a2.color; } }; return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass([ vue.unref(ns).b(), vue.unref(ns).m(_ctx.type), vue.unref(ns).is(_ctx.status), { [vue.unref(ns).m("without-text")]: !_ctx.showText, [vue.unref(ns).m("text-inside")]: _ctx.textInside } ]), role: "progressbar", "aria-valuenow": _ctx.percentage, "aria-valuemin": "0", "aria-valuemax": "100" }, [ _ctx.type === "line" ? (vue.openBlock(), vue.createElementBlock("div", { key: 0, class: vue.normalizeClass(vue.unref(ns).b("bar")) }, [ vue.createElementVNode("div", { class: vue.normalizeClass(vue.unref(ns).be("bar", "outer")), style: vue.normalizeStyle({ height: `${_ctx.strokeWidth}px` }) }, [ vue.createElementVNode("div", { class: vue.normalizeClass([ vue.unref(ns).be("bar", "inner"), { [vue.unref(ns).bem("bar", "inner", "indeterminate")]: _ctx.indeterminate }, { [vue.unref(ns).bem("bar", "inner", "striped")]: _ctx.striped }, { [vue.unref(ns).bem("bar", "inner", "striped-flow")]: _ctx.stripedFlow } ]), style: vue.normalizeStyle(vue.unref(barStyle)) }, [ (_ctx.showText || _ctx.$slots.default) && _ctx.textInside ? (vue.openBlock(), vue.createElementBlock("div", { key: 0, class: vue.normalizeClass(vue.unref(ns).be("bar", "innerText")) }, [ vue.renderSlot(_ctx.$slots, "default", { percentage: _ctx.percentage }, () => [ vue.createElementVNode("span", null, vue.toDisplayString(vue.unref(content)), 1) ]) ], 2)) : vue.createCommentVNode("v-if", true) ], 6) ], 6) ], 2)) : (vue.openBlock(), vue.createElementBlock("div", { key: 1, class: vue.normalizeClass(vue.unref(ns).b("circle")), style: vue.normalizeStyle({ height: `${_ctx.width}px`, width: `${_ctx.width}px` }) }, [ (vue.openBlock(), vue.createElementBlock("svg", { viewBox: "0 0 100 100" }, [ vue.createElementVNode("path", { class: vue.normalizeClass(vue.unref(ns).be("circle", "track")), d: vue.unref(trackPath), stroke: `var(${vue.unref(ns).cssVarName("fill-color-light")}, #e5e9f2)`, "stroke-linecap": _ctx.strokeLinecap, "stroke-width": vue.unref(relativeStrokeWidth), fill: "none", style: vue.normalizeStyle(vue.unref(trailPathStyle)) }, null, 14, ["d", "stroke", "stroke-linecap", "stroke-width"]), vue.createElementVNode("path", { class: vue.normalizeClass(vue.unref(ns).be("circle", "path")), d: vue.unref(trackPath), stroke: vue.unref(stroke), fill: "none", opacity: _ctx.percentage ? 1 : 0, "stroke-linecap": _ctx.strokeLinecap, "stroke-width": vue.unref(relativeStrokeWidth), style: vue.normalizeStyle(vue.unref(circlePathStyle)) }, null, 14, ["d", "stroke", "opacity", "stroke-linecap", "stroke-width"]) ])) ], 6)), (_ctx.showText || _ctx.$slots.default) && !_ctx.textInside ? (vue.openBlock(), vue.createElementBlock("div", { key: 2, class: vue.normalizeClass(vue.unref(ns).e("text")), style: vue.normalizeStyle({ fontSize: `${vue.unref(progressTextSize)}px` }) }, [ vue.renderSlot(_ctx.$slots, "default", { percentage: _ctx.percentage }, () => [ !_ctx.status ? (vue.openBlock(), vue.createElementBlock("span", { key: 0 }, vue.toDisplayString(vue.unref(content)), 1)) : (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 1 }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(statusIcon)))) ]), _: 1 })) ]) ], 6)) : vue.createCommentVNode("v-if", true) ], 10, ["aria-valuenow"]); }; } }); var Progress = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__file", "progress.vue"]]); const ElProgress = withInstall(Progress); const tabsRootContextKey = Symbol("tabsRootContextKey"); const tabBarProps = buildProps({ tabs: { type: definePropType(Array), default: () => mutable([]) } }); const COMPONENT_NAME$3 = "ElTabBar"; const __default__$7 = vue.defineComponent({ name: COMPONENT_NAME$3 }); const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({ ...__default__$7, props: tabBarProps, setup(__props, { expose }) { const props = __props; const instance = vue.getCurrentInstance(); const rootTabs = vue.inject(tabsRootContextKey); if (!rootTabs) throwError(COMPONENT_NAME$3, ""); const ns = useNamespace("tabs"); const barRef = vue.ref(); const barStyle = vue.ref(); 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) => { var _a2, _b; const $el = (_b = (_a2 = instance.parent) == null ? void 0 : _a2.refs) == null ? void 0 : _b[`tab-${tab.uid}`]; 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 saveObserver = []; const observerTabs = () => { var _a2; saveObserver.forEach((observer) => observer.stop()); saveObserver.length = 0; const list = (_a2 = instance.parent) == null ? void 0 : _a2.refs; if (!list) return; for (const key in list) { if (key.startsWith("tab-")) { const _el = list[key]; if (_el) { saveObserver.push(useResizeObserver(_el, update)); } } } }; vue.watch(() => props.tabs, async () => { await vue.nextTick(); update(); observerTabs(); }, { immediate: true }); const barObserever = useResizeObserver(barRef, () => update()); vue.onBeforeUnmount(() => { saveObserver.forEach((observer) => observer.stop()); saveObserver.length = 0; barObserever.stop(); }); expose({ ref: barRef, update }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", { ref_key: "barRef", ref: barRef, class: vue.normalizeClass([vue.unref(ns).e("active-bar"), vue.unref(ns).is(vue.unref(rootTabs).props.tabPosition)]), style: vue.normalizeStyle(barStyle.value) }, null, 6); }; } }); var TabBar = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__file", "tab-bar.vue"]]); 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 }); const tabNavEmits = { tabClick: (tab, tabName, ev) => ev instanceof Event, tabRemove: (tab, ev) => ev instanceof Event }; const COMPONENT_NAME$2 = "ElTabNav"; const TabNav = vue.defineComponent({ name: COMPONENT_NAME$2, props: tabNavProps, emits: tabNavEmits, setup(props, { expose, emit }) { const rootTabs = vue.inject(tabsRootContextKey); if (!rootTabs) throwError(COMPONENT_NAME$2, ``); const ns = useNamespace("tabs"); const visibility = useDocumentVisibility(); const focused = useWindowFocus(); const navScroll$ = vue.ref(); const nav$ = vue.ref(); const el$ = vue.ref(); const tabBarRef = vue.ref(); const scrollable = vue.ref(false); const navOffset = vue.ref(0); const isFocus = vue.ref(false); const focusable = vue.ref(true); const sizeName = vue.computed(() => ["top", "bottom"].includes(rootTabs.props.tabPosition) ? "width" : "height"); const navStyle = vue.computed(() => { const dir = sizeName.value === "width" ? "X" : "Y"; return { transform: `translate${dir}(-${navOffset.value}px)` }; }); const scrollPrev = () => { if (!navScroll$.value) return; const containerSize = navScroll$.value[`offset${capitalize(sizeName.value)}`]; const currentOffset = navOffset.value; if (!currentOffset) return; const newOffset = currentOffset > containerSize ? currentOffset - containerSize : 0; navOffset.value = newOffset; }; const scrollNext = () => { if (!navScroll$.value || !nav$.value) return; const navSize = nav$.value[`offset${capitalize(sizeName.value)}`]; const containerSize = navScroll$.value[`offset${capitalize(sizeName.value)}`]; const currentOffset = navOffset.value; if (navSize - currentOffset <= containerSize) return; const newOffset = navSize - currentOffset > containerSize * 2 ? currentOffset + containerSize : navSize - containerSize; navOffset.value = newOffset; }; const scrollToActiveTab = async () => { const nav = nav$.value; if (!scrollable.value || !el$.value || !navScroll$.value || !nav) return; await vue.nextTick(); const activeTab = el$.value.querySelector(".is-active"); if (!activeTab) return; const navScroll = navScroll$.value; const isHorizontal = ["top", "bottom"].includes(rootTabs.props.tabPosition); const activeTabBounding = activeTab.getBoundingClientRect(); const navScrollBounding = navScroll.getBoundingClientRect(); const maxOffset = isHorizontal ? nav.offsetWidth - navScrollBounding.width : nav.offsetHeight - navScrollBounding.height; const currentOffset = navOffset.value; let newOffset = currentOffset; if (isHorizontal) { if (activeTabBounding.left < navScrollBounding.left) { newOffset = currentOffset - (navScrollBounding.left - activeTabBounding.left); } if (activeTabBounding.right > navScrollBounding.right) { newOffset = currentOffset + activeTabBounding.right - navScrollBounding.right; } } 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 = () => { var _a2; if (!nav$.value || !navScroll$.value) return; props.stretch && ((_a2 = tabBarRef.value) == null ? void 0 : _a2.update()); const navSize = nav$.value[`offset${capitalize(sizeName.value)}`]; const containerSize = navScroll$.value[`offset${capitalize(sizeName.value)}`]; const currentOffset = navOffset.value; if (containerSize < navSize) { scrollable.value = scrollable.value || {}; scrollable.value.prev = currentOffset; scrollable.value.next = currentOffset + containerSize < navSize; if (navSize - currentOffset < containerSize) { navOffset.value = navSize - containerSize; } } else { scrollable.value = false; if (currentOffset > 0) { navOffset.value = 0; } } }; const changeTab = (e) => { const code = e.code; const { up, down, left, right } = EVENT_CODE; if (![up, down, left, right].includes(code)) return; const tabList = Array.from(e.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)")); const currentIndex = tabList.indexOf(e.target); let nextIndex; if (code === left || code === up) { if (currentIndex === 0) { nextIndex = tabList.length - 1; } else { nextIndex = currentIndex - 1; } } else { if (currentIndex < tabList.length - 1) { nextIndex = currentIndex + 1; } else { nextIndex = 0; } } tabList[nextIndex].focus({ preventScroll: true }); tabList[nextIndex].click(); setFocus(); }; const setFocus = () => { if (focusable.value) isFocus.value = true; }; const removeFocus = () => isFocus.value = false; vue.watch(visibility, (visibility2) => { if (visibility2 === "hidden") { focusable.value = false; } else if (visibility2 === "visible") { setTimeout(() => focusable.value = true, 50); } }); vue.watch(focused, (focused2) => { if (focused2) { setTimeout(() => focusable.value = true, 50); } else { focusable.value = false; } }); useResizeObserver(el$, update); vue.onMounted(() => setTimeout(() => scrollToActiveTab(), 0)); vue.onUpdated(() => update()); expose({ scrollToActiveTab, removeFocus }); return () => { const scrollBtn = scrollable.value ? [vue.createVNode("span", { "class": [ns.e("nav-prev"), ns.is("disabled", !scrollable.value.prev)], "onClick": scrollPrev }, [vue.createVNode(ElIcon, null, { default: () => [vue.createVNode(arrow_left_default, null, null)] })]), vue.createVNode("span", { "class": [ns.e("nav-next"), ns.is("disabled", !scrollable.value.next)], "onClick": scrollNext }, [vue.createVNode(ElIcon, null, { default: () => [vue.createVNode(arrow_right_default, null, null)] })])] : null; const tabs = props.panes.map((pane, index) => { var _a2, _b, _c, _d; const uid = pane.uid; const disabled = pane.props.disabled; const tabName = (_b = (_a2 = pane.props.name) != null ? _a2 : pane.index) != null ? _b : `${index}`; const closable = !disabled && (pane.isClosable || props.editable); pane.index = `${index}`; const btnClose = closable ? vue.createVNode(ElIcon, { "class": "is-icon-close", "onClick": (ev) => emit("tabRemove", pane, ev) }, { default: () => [vue.createVNode(close_default, null, null)] }) : null; const tabLabelContent = ((_d = (_c = pane.slots).label) == null ? void 0 : _d.call(_c)) || pane.props.label; const tabindex = !disabled && pane.active ? 0 : -1; return vue.createVNode("div", { "ref": `tab-${uid}`, "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) => { if (closable && (ev.code === EVENT_CODE.delete || ev.code === EVENT_CODE.backspace)) { emit("tabRemove", pane, ev); } } }, [...[tabLabelContent, btnClose]]); }); return vue.createVNode("div", { "ref": el$, "class": [ns.e("nav-wrap"), ns.is("scrollable", !!scrollable.value), ns.is(rootTabs.props.tabPosition)] }, [scrollBtn, vue.createVNode("div", { "class": ns.e("nav-scroll"), "ref": navScroll$ }, [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 }, [...[!props.type ? vue.createVNode(TabBar, { "ref": tabBarRef, "tabs": [...props.panes] }, null) : null, tabs]])])]); }; } }); const tabsProps = buildProps({ type: { type: String, values: ["card", "border-card", ""], default: "" }, closable: Boolean, addable: Boolean, modelValue: { type: [String, Number] }, editable: Boolean, tabPosition: { type: String, values: ["top", "right", "bottom", "left"], default: "top" }, beforeLeave: { type: definePropType(Function), default: () => true }, stretch: Boolean }); 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 = vue.defineComponent({ name: "ElTabs", props: tabsProps, emits: tabsEmits, setup(props, { emit, slots, expose }) { var _a2; const ns = useNamespace("tabs"); const isVertical = vue.computed(() => ["left", "right"].includes(props.tabPosition)); const { children: panes, addChild: sortPane, removeChild: unregisterPane } = useOrderedChildren(vue.getCurrentInstance(), "ElTabPane"); const nav$ = vue.ref(); const currentName = vue.ref((_a2 = props.modelValue) != null ? _a2 : "0"); const setCurrentName = async (value, trigger = false) => { var _a22, _b, _c; if (currentName.value === value || isUndefined(value)) return; try { const canLeave = await ((_a22 = props.beforeLeave) == null ? void 0 : _a22.call(props, value, currentName.value)); if (canLeave !== false) { currentName.value = value; if (trigger) { emit(UPDATE_MODEL_EVENT, value); emit("tabChange", value); } (_c = (_b = nav$.value) == null ? void 0 : _b.removeFocus) == null ? void 0 : _c.call(_b); } } catch (e) { } }; const handleTabClick = (tab, tabName, event) => { if (tab.props.disabled) return; setCurrentName(tabName, true); emit("tabClick", tab, event); }; 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"); }; vue.watch(() => props.modelValue, (modelValue) => setCurrentName(modelValue)); vue.watch(currentName, async () => { var _a22; await vue.nextTick(); (_a22 = nav$.value) == null ? void 0 : _a22.scrollToActiveTab(); }); vue.provide(tabsRootContextKey, { props, currentName, registerPane: (pane) => { panes.value.push(pane); }, sortPane, unregisterPane }); expose({ currentName }); const TabNavRenderer = ({ render: render2 }) => { return render2(); }; return () => { const addSlot = slots["add-icon"]; const newButton = props.editable || props.addable ? vue.createVNode("div", { "class": [ns.e("new-tab"), isVertical.value && ns.e("new-tab-vertical")], "tabindex": "0", "onClick": handleTabAdd, "onKeydown": (ev) => { if (ev.code === EVENT_CODE.enter) handleTabAdd(); } }, [addSlot ? vue.renderSlot(slots, "add-icon") : vue.createVNode(ElIcon, { "class": ns.is("icon-plus") }, { default: () => [vue.createVNode(plus_default, null, null)] })]) : null; const header = vue.createVNode("div", { "class": [ns.e("header"), isVertical.value && ns.e("header-vertical"), ns.is(props.tabPosition)] }, [vue.createVNode(TabNavRenderer, { "render": () => { const hasLabelSlot = panes.value.some((pane) => pane.slots.label); return vue.createVNode(TabNav, { ref: nav$, currentName: currentName.value, editable: props.editable, type: props.type, panes: panes.value, stretch: props.stretch, onTabClick: handleTabClick, onTabRemove: handleTabRemove }, { $stable: !hasLabelSlot }); } }, null), newButton]); const panels = vue.createVNode("div", { "class": ns.e("content") }, [vue.renderSlot(slots, "default")]); return vue.createVNode("div", { "class": [ns.b(), ns.m(props.tabPosition), { [ns.m("card")]: props.type === "card", [ns.m("border-card")]: props.type === "border-card" }] }, [panels, header]); }; } }); const tabPaneProps = buildProps({ label: { type: String, default: "" }, name: { type: [String, Number] }, closable: Boolean, disabled: Boolean, lazy: Boolean }); const COMPONENT_NAME$1 = "ElTabPane"; const __default__$6 = vue.defineComponent({ name: COMPONENT_NAME$1 }); const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({ ...__default__$6, props: tabPaneProps, setup(__props) { const props = __props; const instance = vue.getCurrentInstance(); const slots = vue.useSlots(); const tabsRoot = vue.inject(tabsRootContextKey); if (!tabsRoot) throwError(COMPONENT_NAME$1, "usage: "); const ns = useNamespace("tab-pane"); const index = vue.ref(); const isClosable = vue.computed(() => props.closable || tabsRoot.props.closable); const active = computedEager(() => { var _a2; return tabsRoot.currentName.value === ((_a2 = props.name) != null ? _a2 : index.value); }); const loaded = vue.ref(active.value); const paneName = vue.computed(() => { var _a2; return (_a2 = props.name) != null ? _a2 : index.value; }); const shouldBeRender = computedEager(() => !props.lazy || loaded.value || active.value); vue.watch(active, (val) => { if (val) loaded.value = true; }); const pane = vue.reactive({ uid: instance.uid, slots, props, paneName, active, index, isClosable }); tabsRoot.registerPane(pane); vue.onMounted(() => { tabsRoot.sortPane(pane); }); vue.onUnmounted(() => { tabsRoot.unregisterPane(pane.uid); }); return (_ctx, _cache) => { return vue.unref(shouldBeRender) ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", { key: 0, id: `pane-${vue.unref(paneName)}`, class: vue.normalizeClass(vue.unref(ns).b()), role: "tabpanel", "aria-hidden": !vue.unref(active), "aria-labelledby": `tab-${vue.unref(paneName)}` }, [ vue.renderSlot(_ctx.$slots, "default") ], 10, ["id", "aria-hidden", "aria-labelledby"])), [ [vue.vShow, vue.unref(active)] ]) : vue.createCommentVNode("v-if", true); }; } }); var TabPane = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["__file", "tab-pane.vue"]]); const ElTabs = withInstall(Tabs, { TabPane }); const ElTabPane = withNoopInstall(TabPane); 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" } }); const __default__$5 = vue.defineComponent({ name: "ElText" }); const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({ ...__default__$5, props: textProps, setup(__props) { const props = __props; const textSize = useFormSize(); const ns = useNamespace("text"); const textKls = vue.computed(() => [ ns.b(), ns.m(props.type), ns.m(textSize.value), ns.is("truncated", props.truncated), ns.is("line-clamp", !isUndefined(props.lineClamp)) ]); return (_ctx, _cache) => { return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tag), { class: vue.normalizeClass(vue.unref(textKls)), style: vue.normalizeStyle({ "-webkit-line-clamp": _ctx.lineClamp }) }, { default: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "default") ]), _: 3 }, 8, ["class", "style"]); }; } }); var Text = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__file", "text.vue"]]); const ElText = withInstall(Text); const uploadContextKey = Symbol("uploadContextKey"); const SCOPE$1 = "ElUpload"; class UploadAjaxError 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 (e) { return text; } } const ajaxUpload = (option) => { if (typeof XMLHttpRequest === "undefined") throwError(SCOPE$1, "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) && value.length) formData.append(key, ...value); 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; }; const uploadListTypes = ["text", "picture", "picture-card"]; let fileId = 1; const genFileId = () => Date.now() + fileId++; 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: Boolean, limit: Number }); 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 uploadListProps = buildProps({ files: { type: definePropType(Array), default: () => mutable([]) }, disabled: { type: Boolean, default: false }, handlePreview: { type: definePropType(Function), default: NOOP }, listType: { type: String, values: uploadListTypes, default: "text" }, crossorigin: { type: definePropType(String) } }); const uploadListEmits = { remove: (file) => !!file }; const __default__$4 = vue.defineComponent({ name: "ElUploadList" }); const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({ ...__default__$4, props: uploadListProps, emits: uploadListEmits, setup(__props, { emit }) { const props = __props; const { t } = useLocale(); const nsUpload = useNamespace("upload"); const nsIcon = useNamespace("icon"); const nsList = useNamespace("list"); const disabled = useFormDisabled(); const focusing = vue.ref(false); const containerKls = vue.computed(() => [ nsUpload.b("list"), nsUpload.bm("list", props.listType), nsUpload.is("disabled", props.disabled) ]); const handleRemove = (file) => { emit("remove", file); }; return (_ctx, _cache) => { return vue.openBlock(), vue.createBlock(vue.TransitionGroup, { tag: "ul", class: vue.normalizeClass(vue.unref(containerKls)), name: vue.unref(nsList).b() }, { default: vue.withCtx(() => [ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.files, (file, index) => { return vue.openBlock(), vue.createElementBlock("li", { key: file.uid || file.name, class: vue.normalizeClass([ vue.unref(nsUpload).be("list", "item"), vue.unref(nsUpload).is(file.status), { focusing: focusing.value } ]), tabindex: "0", onKeydown: vue.withKeys(($event) => !vue.unref(disabled) && handleRemove(file), ["delete"]), onFocus: ($event) => focusing.value = true, onBlur: ($event) => focusing.value = false, onClick: ($event) => focusing.value = false }, [ vue.renderSlot(_ctx.$slots, "default", { file, index }, () => [ _ctx.listType === "picture" || file.status !== "uploading" && _ctx.listType === "picture-card" ? (vue.openBlock(), vue.createElementBlock("img", { key: 0, class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-thumbnail")), src: file.url, crossorigin: _ctx.crossorigin, alt: "" }, null, 10, ["src", "crossorigin"])) : vue.createCommentVNode("v-if", true), file.status === "uploading" || _ctx.listType !== "picture-card" ? (vue.openBlock(), vue.createElementBlock("div", { key: 1, class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-info")) }, [ vue.createElementVNode("a", { class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-name")), onClick: vue.withModifiers(($event) => _ctx.handlePreview(file), ["prevent"]) }, [ vue.createVNode(vue.unref(ElIcon), { class: vue.normalizeClass(vue.unref(nsIcon).m("document")) }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(document_default)) ]), _: 1 }, 8, ["class"]), vue.createElementVNode("span", { class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-file-name")), title: file.name }, vue.toDisplayString(file.name), 11, ["title"]) ], 10, ["onClick"]), file.status === "uploading" ? (vue.openBlock(), vue.createBlock(vue.unref(ElProgress), { key: 0, type: _ctx.listType === "picture-card" ? "circle" : "line", "stroke-width": _ctx.listType === "picture-card" ? 6 : 2, percentage: Number(file.percentage), style: vue.normalizeStyle(_ctx.listType === "picture-card" ? "" : "margin-top: 0.5rem") }, null, 8, ["type", "stroke-width", "percentage", "style"])) : vue.createCommentVNode("v-if", true) ], 2)) : vue.createCommentVNode("v-if", true), vue.createElementVNode("label", { class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-status-label")) }, [ _ctx.listType === "text" ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 0, class: vue.normalizeClass([vue.unref(nsIcon).m("upload-success"), vue.unref(nsIcon).m("circle-check")]) }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(circle_check_default)) ]), _: 1 }, 8, ["class"])) : ["picture-card", "picture"].includes(_ctx.listType) ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 1, class: vue.normalizeClass([vue.unref(nsIcon).m("upload-success"), vue.unref(nsIcon).m("check")]) }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(check_default)) ]), _: 1 }, 8, ["class"])) : vue.createCommentVNode("v-if", true) ], 2), !vue.unref(disabled) ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 2, class: vue.normalizeClass(vue.unref(nsIcon).m("close")), onClick: ($event) => handleRemove(file) }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(close_default)) ]), _: 2 }, 1032, ["class", "onClick"])) : vue.createCommentVNode("v-if", true), vue.createCommentVNode(" Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn"), vue.createCommentVNode(" This is a bug which needs to be fixed "), vue.createCommentVNode(" TODO: Fix the incorrect navigation interaction "), !vue.unref(disabled) ? (vue.openBlock(), vue.createElementBlock("i", { key: 3, class: vue.normalizeClass(vue.unref(nsIcon).m("close-tip")) }, vue.toDisplayString(vue.unref(t)("el.upload.deleteTip")), 3)) : vue.createCommentVNode("v-if", true), _ctx.listType === "picture-card" ? (vue.openBlock(), vue.createElementBlock("span", { key: 4, class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-actions")) }, [ vue.createElementVNode("span", { class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-preview")), onClick: ($event) => _ctx.handlePreview(file) }, [ vue.createVNode(vue.unref(ElIcon), { class: vue.normalizeClass(vue.unref(nsIcon).m("zoom-in")) }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(zoom_in_default)) ]), _: 1 }, 8, ["class"]) ], 10, ["onClick"]), !vue.unref(disabled) ? (vue.openBlock(), vue.createElementBlock("span", { key: 0, class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-delete")), onClick: ($event) => handleRemove(file) }, [ vue.createVNode(vue.unref(ElIcon), { class: vue.normalizeClass(vue.unref(nsIcon).m("delete")) }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(delete_default)) ]), _: 1 }, 8, ["class"]) ], 10, ["onClick"])) : vue.createCommentVNode("v-if", true) ], 2)) : vue.createCommentVNode("v-if", true) ]) ], 42, ["onKeydown", "onFocus", "onBlur", "onClick"]); }), 128)), vue.renderSlot(_ctx.$slots, "append") ]), _: 3 }, 8, ["class", "name"]); }; } }); var UploadList = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__file", "upload-list.vue"]]); const uploadDraggerProps = buildProps({ disabled: { type: Boolean, default: false } }); const uploadDraggerEmits = { file: (file) => isArray$1(file) }; const COMPONENT_NAME = "ElUploadDrag"; const __default__$3 = vue.defineComponent({ name: COMPONENT_NAME }); const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({ ...__default__$3, props: uploadDraggerProps, emits: uploadDraggerEmits, setup(__props, { emit }) { const uploaderContext = vue.inject(uploadContextKey); if (!uploaderContext) { throwError(COMPONENT_NAME, "usage: "); } const ns = useNamespace("upload"); const dragover = vue.ref(false); const disabled = useFormDisabled(); const onDrop = (e) => { if (disabled.value) return; dragover.value = false; e.stopPropagation(); const files = Array.from(e.dataTransfer.files); emit("file", files); }; const onDragover = () => { if (!disabled.value) dragover.value = true; }; return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass([vue.unref(ns).b("dragger"), vue.unref(ns).is("dragover", dragover.value)]), onDrop: vue.withModifiers(onDrop, ["prevent"]), onDragover: vue.withModifiers(onDragover, ["prevent"]), onDragleave: vue.withModifiers(($event) => dragover.value = false, ["prevent"]) }, [ vue.renderSlot(_ctx.$slots, "default") ], 42, ["onDrop", "onDragover", "onDragleave"]); }; } }); var UploadDragger = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__file", "upload-dragger.vue"]]); 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 __default__$2 = vue.defineComponent({ name: "ElUploadContent", inheritAttrs: false }); const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({ ...__default__$2, props: uploadContentProps, setup(__props, { expose }) { const props = __props; const ns = useNamespace("upload"); const disabled = useFormDisabled(); const requests = vue.shallowRef({}); const inputRef = 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(props.data) ? cloneDeep(props.data) : props.data; hookResult = await beforeUploadPromise; if (isPlainObject(props.data) && isEqual(originData, beforeData)) { beforeData = cloneDeep(props.data); } } catch (e) { 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 != null ? beforeData : data, rawFile); } catch (e) { 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) => { const _reqs = entriesOf(requests.value).filter(file ? ([uid]) => String(file.uid) === uid : () => true); _reqs.forEach(([uid, req]) => { if (req instanceof XMLHttpRequest) req.abort(); delete requests.value[uid]; }); }; expose({ abort, upload }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass([ vue.unref(ns).b(), vue.unref(ns).m(_ctx.listType), vue.unref(ns).is("drag", _ctx.drag), vue.unref(ns).is("disabled", vue.unref(disabled)) ]), tabindex: vue.unref(disabled) ? "-1" : "0", onClick: handleClick, onKeydown: vue.withKeys(vue.withModifiers(handleKeydown, ["self"]), ["enter", "space"]) }, [ _ctx.drag ? (vue.openBlock(), vue.createBlock(UploadDragger, { key: 0, disabled: vue.unref(disabled), onFile: uploadFiles }, { default: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "default") ]), _: 3 }, 8, ["disabled"])) : vue.renderSlot(_ctx.$slots, "default", { key: 1 }), vue.createElementVNode("input", { ref_key: "inputRef", ref: inputRef, class: vue.normalizeClass(vue.unref(ns).e("input")), name: _ctx.name, disabled: vue.unref(disabled), multiple: _ctx.multiple, accept: _ctx.accept, type: "file", onChange: handleChange, onClick: vue.withModifiers(() => { }, ["stop"]) }, null, 42, ["name", "disabled", "multiple", "accept", "onClick"]) ], 42, ["tabindex", "onKeydown"]); }; } }); var UploadContent = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["__file", "upload-content.vue"]]); const SCOPE = "ElUpload"; const revokeFileObjectURL = (file) => { var _a2; if ((_a2 = file.url) == null ? void 0 : _a2.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) { var _a2; (_a2 = uploadRef.value) == null ? void 0 : _a2.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 !== file); } 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); props.onChange(file, uploadFiles.value); }; 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); props.onChange(file, uploadFiles.value); }; 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) { debugWarn(SCOPE, err.message); props.onError(err, uploadFile, uploadFiles.value); } } uploadFiles.value = [...uploadFiles.value, uploadFile]; props.onChange(uploadFile, uploadFiles.value); }; const handleRemove = async (file) => { const uploadFile = file instanceof File ? getFile(file) : file; if (!uploadFile) throwError(SCOPE, "file to be removed not found"); const doRemove = (file2) => { abort(file2); removeFile(file2); props.onRemove(file2, uploadFiles.value); revokeFileObjectURL(file2); }; if (props.beforeRemove) { const before2 = await props.beforeRemove(uploadFile, uploadFiles.value); if (before2 !== false) doRemove(uploadFile); } else { doRemove(uploadFile); } }; function submit() { uploadFiles.value.filter(({ status }) => status === "ready").forEach(({ raw }) => { var _a2; return raw && ((_a2 = uploadRef.value) == null ? void 0 : _a2.upload(raw)); }); } 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; }); }); vue.watch(uploadFiles, (files) => { for (const file of files) { file.uid || (file.uid = genFileId()); file.status || (file.status = "success"); } }, { immediate: true, deep: true }); return { uploadFiles, abort, clearFiles, handleError, handleProgress, handleStart, handleSuccess, handleRemove, submit, revokeFileObjectURL }; }; const __default__$1 = vue.defineComponent({ name: "ElUpload" }); const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({ ...__default__$1, props: uploadProps, setup(__props, { expose }) { const props = __props; const disabled = useFormDisabled(); const uploadRef = vue.shallowRef(); const { abort, submit, clearFiles, uploadFiles, handleStart, handleError, handleRemove, handleSuccess, handleProgress, revokeFileObjectURL: revokeFileObjectURL2 } = useHandlers(props, uploadRef); const isPictureCard = vue.computed(() => props.listType === "picture-card"); const uploadContentProps2 = vue.computed(() => ({ ...props, fileList: uploadFiles.value, onStart: handleStart, onProgress: handleProgress, onSuccess: handleSuccess, onError: handleError, onRemove: handleRemove })); vue.onBeforeUnmount(() => { uploadFiles.value.forEach(revokeFileObjectURL2); }); vue.provide(uploadContextKey, { accept: vue.toRef(props, "accept") }); expose({ abort, submit, clearFiles, handleStart, handleRemove }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", null, [ vue.unref(isPictureCard) && _ctx.showFileList ? (vue.openBlock(), vue.createBlock(UploadList, { key: 0, disabled: vue.unref(disabled), "list-type": _ctx.listType, files: vue.unref(uploadFiles), crossorigin: _ctx.crossorigin, "handle-preview": _ctx.onPreview, onRemove: vue.unref(handleRemove) }, vue.createSlots({ append: vue.withCtx(() => [ vue.createVNode(UploadContent, vue.mergeProps({ ref_key: "uploadRef", ref: uploadRef }, vue.unref(uploadContentProps2)), { default: vue.withCtx(() => [ _ctx.$slots.trigger ? vue.renderSlot(_ctx.$slots, "trigger", { key: 0 }) : vue.createCommentVNode("v-if", true), !_ctx.$slots.trigger && _ctx.$slots.default ? vue.renderSlot(_ctx.$slots, "default", { key: 1 }) : vue.createCommentVNode("v-if", true) ]), _: 3 }, 16) ]), _: 2 }, [ _ctx.$slots.file ? { name: "default", fn: vue.withCtx(({ file, index }) => [ vue.renderSlot(_ctx.$slots, "file", { file, index }) ]) } : void 0 ]), 1032, ["disabled", "list-type", "files", "crossorigin", "handle-preview", "onRemove"])) : vue.createCommentVNode("v-if", true), !vue.unref(isPictureCard) || vue.unref(isPictureCard) && !_ctx.showFileList ? (vue.openBlock(), vue.createBlock(UploadContent, vue.mergeProps({ key: 1, ref_key: "uploadRef", ref: uploadRef }, vue.unref(uploadContentProps2)), { default: vue.withCtx(() => [ _ctx.$slots.trigger ? vue.renderSlot(_ctx.$slots, "trigger", { key: 0 }) : vue.createCommentVNode("v-if", true), !_ctx.$slots.trigger && _ctx.$slots.default ? vue.renderSlot(_ctx.$slots, "default", { key: 1 }) : vue.createCommentVNode("v-if", true) ]), _: 3 }, 16)) : vue.createCommentVNode("v-if", true), _ctx.$slots.trigger ? vue.renderSlot(_ctx.$slots, "default", { key: 2 }) : vue.createCommentVNode("v-if", true), vue.renderSlot(_ctx.$slots, "tip"), !vue.unref(isPictureCard) && _ctx.showFileList ? (vue.openBlock(), vue.createBlock(UploadList, { key: 3, disabled: vue.unref(disabled), "list-type": _ctx.listType, files: vue.unref(uploadFiles), crossorigin: _ctx.crossorigin, "handle-preview": _ctx.onPreview, onRemove: vue.unref(handleRemove) }, vue.createSlots({ _: 2 }, [ _ctx.$slots.file ? { name: "default", fn: vue.withCtx(({ file, index }) => [ vue.renderSlot(_ctx.$slots, "file", { file, index }) ]) } : void 0 ]), 1032, ["disabled", "list-type", "files", "crossorigin", "handle-preview", "onRemove"])) : vue.createCommentVNode("v-if", true) ]); }; } }); var Upload = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__file", "upload.vue"]]); const ElUpload = withInstall(Upload); function createLoadingComponent(options) { let afterLeaveTimer; const afterLeaveFlag = vue.ref(false); const data = 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() { var _a2, _b; (_b = (_a2 = vm.$el) == null ? void 0 : _a2.parentNode) == null ? void 0 : _b.removeChild(vm.$el); } function close2() { var _a2; if (options.beforeClose && !options.beforeClose()) return; afterLeaveFlag.value = true; clearTimeout(afterLeaveTimer); afterLeaveTimer = setTimeout(handleAfterLeave, 400); data.visible = false; (_a2 = options.closed) == null ? void 0 : _a2.call(options); } function handleAfterLeave() { if (!afterLeaveFlag.value) return; const target = data.parent; afterLeaveFlag.value = false; target.vLoadingAddClassList = void 0; destroySelf(); } const elLoadingComponent = vue.defineComponent({ name: "ElLoading", setup(_2, { expose }) { const { ns, zIndex: zIndex2 } = useGlobalComponentSettings("loading"); expose({ ns, zIndex: zIndex2 }); return () => { const svg = data.spinner || data.svg; const spinner = vue.h("svg", { class: "circular", viewBox: data.svgViewBox ? data.svgViewBox : "0 0 50 50", ...svg ? { innerHTML: svg } : {} }, [ vue.h("circle", { class: "path", cx: "25", cy: "25", r: "20", fill: "none" }) ]); const spinnerText = data.text ? vue.h("p", { class: ns.b("text") }, [data.text]) : void 0; return vue.h(vue.Transition, { name: ns.b("fade"), onAfterLeave: handleAfterLeave }, { default: vue.withCtx(() => [ vue.withDirectives(vue.createVNode("div", { style: { backgroundColor: data.background || "" }, class: [ ns.b("mask"), data.customClass, data.fullscreen ? "is-fullscreen" : "" ] }, [ vue.h("div", { class: ns.b("spinner") }, [spinner, spinnerText]) ]), [[vue.vShow, data.visible]]) ]) }); }; } }); const loadingInstance = vue.createApp(elLoadingComponent); const vm = loadingInstance.mount(document.createElement("div")); return { ...vue.toRefs(data), setText, removeElLoadingChild, close: close2, handleAfterLeave, vm, get $el() { return vm.$el; } }; } let fullscreenInstance = void 0; const Loading = function(options = {}) { if (!isClient) return void 0; const resolved = resolveOptions(options); if (resolved.fullscreen && fullscreenInstance) { return fullscreenInstance; } const instance = createLoadingComponent({ ...resolved, closed: () => { var _a2; (_a2 = resolved.closed) == null ? void 0 : _a2.call(resolved); if (resolved.fullscreen) fullscreenInstance = void 0; } }); addStyle(resolved, resolved.parent, instance); addClassList(resolved, resolved.parent, instance); resolved.parent.vLoadingAddClassList = () => addClassList(resolved, resolved.parent, instance); 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); vue.nextTick(() => instance.visible.value = resolved.visible); if (resolved.fullscreen) { fullscreenInstance = instance; } return instance; }; const resolveOptions = (options) => { var _a2, _b, _c, _d; let target; if (isString(options.target)) { target = (_a2 = document.querySelector(options.target)) != null ? _a2 : 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 && ((_b = options.fullscreen) != null ? _b : true), lock: (_c = options.lock) != null ? _c : false, customClass: options.customClass || "", visible: (_d = options.visible) != null ? _d : 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 vue.nextTick(); for (const property2 of ["top", "left"]) { const scroll = property2 === "top" ? "scrollTop" : "scrollLeft"; maskStyle[property2] = `${options.target.getBoundingClientRect()[property2] + document.body[scroll] + document.documentElement[scroll] - Number.parseInt(getStyle(document.body, `margin-${property2}`), 10)}px`; } for (const property2 of ["height", "width"]) { maskStyle[property2] = `${options.target.getBoundingClientRect()[property2]}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")); } }; const INSTANCE_KEY = Symbol("ElLoading"); const createInstance = (el, binding) => { var _a2, _b, _c, _d; const vm = binding.instance; const getBindingProp = (key) => isObject$1(binding.value) ? binding.value[key] : void 0; const resolveExpression = (key) => { const data = isString(key) && (vm == null ? void 0 : vm[key]) || key; if (data) return vue.ref(data); else return data; }; const getProp = (name) => resolveExpression(getBindingProp(name) || el.getAttribute(`element-loading-${hyphenate(name)}`)); const fullscreen = (_a2 = getBindingProp("fullscreen")) != null ? _a2 : 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: (_b = getBindingProp("target")) != null ? _b : fullscreen ? void 0 : el, body: (_c = getBindingProp("body")) != null ? _c : binding.modifiers.body, lock: (_d = getBindingProp("lock")) != null ? _d : binding.modifiers.lock }; el[INSTANCE_KEY] = { options, instance: Loading(options) }; }; const updateOptions = (newOptions, originalOptions) => { for (const key of Object.keys(originalOptions)) { if (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.oldValue !== binding.value) { if (binding.value && !binding.oldValue) { createInstance(el, binding); } else if (binding.value && binding.oldValue) { if (isObject$1(binding.value)) updateOptions(binding.value, instance.options); } else { instance == null ? void 0 : instance.instance.close(); } } }, unmounted(el) { var _a2; (_a2 = el[INSTANCE_KEY]) == null ? void 0 : _a2.instance.close(); el[INSTANCE_KEY] = null; } }; const _sfc_main$f = vue.defineComponent({ name: "ElMessageBox", directives: { TrapFocus }, components: { ElButton, ElFocusTrap, 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: { default: false, type: Boolean }, container: { type: String, default: "body" }, boxType: { type: String, default: "" } }, emits: ["vanish", "action"], setup(props, { emit }) { const { locale, zIndex: zIndex2, ns, size: btnSize } = useGlobalComponentSettings("message-box", vue.computed(() => props.buttonSize)); const { t } = locale; const { nextZIndex } = zIndex2; const visible = vue.ref(false); const state = vue.reactive({ autofocus: true, beforeClose: null, callback: null, cancelButtonText: "", cancelButtonClass: "", confirmButtonText: "", confirmButtonClass: "", customClass: "", customStyle: {}, dangerouslyUseHTMLString: false, distinguishCancelAndClose: false, icon: "", inputPattern: null, inputPlaceholder: "", inputType: "text", inputValue: null, inputValidator: null, inputErrorMessage: "", message: null, modalFade: true, modalClass: "", showCancelButton: false, showConfirmButton: true, type: "", title: void 0, showInput: false, action: "", confirmButtonLoading: false, cancelButtonLoading: false, confirmButtonLoadingIcon: vue.markRaw(loading_default), cancelButtonLoadingIcon: vue.markRaw(loading_default), confirmButtonDisabled: false, editorErrorMessage: "", validateError: false, zIndex: nextZIndex() }); const typeClass = vue.computed(() => { const type = state.type; return { [ns.bm("icon", type)]: type && TypeComponentsMap[type] }; }); const contentId = useId(); const inputId = useId(); const iconComponent = vue.computed(() => state.icon || TypeComponentsMap[state.type] || ""); const hasMessage = vue.computed(() => !!state.message); const rootRef = vue.ref(); const headerRef = vue.ref(); const focusStartRef = vue.ref(); const inputRef = vue.ref(); const confirmRef = vue.ref(); const confirmButtonClasses = vue.computed(() => state.confirmButtonClass); vue.watch(() => state.inputValue, async (val) => { await vue.nextTick(); if (props.boxType === "prompt" && val !== null) { validate(); } }, { immediate: true }); vue.watch(() => visible.value, (val) => { var _a2, _b; if (val) { if (props.boxType !== "prompt") { if (state.autofocus) { focusStartRef.value = (_b = (_a2 = confirmRef.value) == null ? void 0 : _a2.$el) != null ? _b : rootRef.value; } else { focusStartRef.value = rootRef.value; } } state.zIndex = nextZIndex(); } if (props.boxType !== "prompt") return; if (val) { vue.nextTick().then(() => { var _a22; if (inputRef.value && inputRef.value.$el) { if (state.autofocus) { focusStartRef.value = (_a22 = getInputElement()) != null ? _a22 : rootRef.value; } else { focusStartRef.value = rootRef.value; } } }); } else { state.editorErrorMessage = ""; state.validateError = false; } }); const draggable2 = vue.computed(() => props.draggable); const overflow = vue.computed(() => props.overflow); useDraggable(rootRef, headerRef, draggable2, overflow); vue.onMounted(async () => { await vue.nextTick(); if (props.closeOnHashChange) { window.addEventListener("hashchange", doClose); } }); vue.onBeforeUnmount(() => { if (props.closeOnHashChange) { window.removeEventListener("hashchange", doClose); } }); function doClose() { if (!visible.value) return; visible.value = false; 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") { e.preventDefault(); return handleAction("confirm"); } }; const handleAction = (action) => { var _a2; if (props.boxType === "prompt" && action === "confirm" && !validate()) { return; } state.action = action; if (state.beforeClose) { (_a2 = state.beforeClose) == null ? void 0 : _a2.call(state, 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 (typeof inputValidator === "function") { const validateResult = inputValidator(state.inputValue); if (validateResult === false) { state.editorErrorMessage = state.inputErrorMessage || t("el.messagebox.error"); state.validateError = true; return false; } if (typeof validateResult === "string") { 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); } return { ...vue.toRefs(state), ns, overlayEvent, visible, hasMessage, typeClass, contentId, inputId, btnSize, iconComponent, confirmButtonClasses, rootRef, focusStartRef, headerRef, inputRef, confirmRef, doClose, handleClose, onCloseRequested, handleWrapperClick, handleInputEnter, handleAction, t }; } }); function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_el_icon = vue.resolveComponent("el-icon"); const _component_close = vue.resolveComponent("close"); const _component_el_input = vue.resolveComponent("el-input"); const _component_el_button = vue.resolveComponent("el-button"); const _component_el_focus_trap = vue.resolveComponent("el-focus-trap"); const _component_el_overlay = vue.resolveComponent("el-overlay"); return vue.openBlock(), vue.createBlock(vue.Transition, { name: "fade-in-linear", onAfterLeave: ($event) => _ctx.$emit("vanish"), persisted: "" }, { default: vue.withCtx(() => [ vue.withDirectives(vue.createVNode(_component_el_overlay, { "z-index": _ctx.zIndex, "overlay-class": [_ctx.ns.is("message-box"), _ctx.modalClass], mask: _ctx.modal }, { default: vue.withCtx(() => [ vue.createElementVNode("div", { role: "dialog", "aria-label": _ctx.title, "aria-modal": "true", "aria-describedby": !_ctx.showInput ? _ctx.contentId : void 0, class: vue.normalizeClass(`${_ctx.ns.namespace.value}-overlay-message-box`), onClick: _ctx.overlayEvent.onClick, onMousedown: _ctx.overlayEvent.onMousedown, onMouseup: _ctx.overlayEvent.onMouseup }, [ vue.createVNode(_component_el_focus_trap, { loop: "", trapped: _ctx.visible, "focus-trap-el": _ctx.rootRef, "focus-start-el": _ctx.focusStartRef, onReleaseRequested: _ctx.onCloseRequested }, { default: vue.withCtx(() => [ vue.createElementVNode("div", { ref: "rootRef", class: vue.normalizeClass([ _ctx.ns.b(), _ctx.customClass, _ctx.ns.is("draggable", _ctx.draggable), { [_ctx.ns.m("center")]: _ctx.center } ]), style: vue.normalizeStyle(_ctx.customStyle), tabindex: "-1", onClick: vue.withModifiers(() => { }, ["stop"]) }, [ _ctx.title !== null && _ctx.title !== void 0 ? (vue.openBlock(), vue.createElementBlock("div", { key: 0, ref: "headerRef", class: vue.normalizeClass([_ctx.ns.e("header"), { "show-close": _ctx.showClose }]) }, [ vue.createElementVNode("div", { class: vue.normalizeClass(_ctx.ns.e("title")) }, [ _ctx.iconComponent && _ctx.center ? (vue.openBlock(), vue.createBlock(_component_el_icon, { key: 0, class: vue.normalizeClass([_ctx.ns.e("status"), _ctx.typeClass]) }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.iconComponent))) ]), _: 1 }, 8, ["class"])) : vue.createCommentVNode("v-if", true), vue.createElementVNode("span", null, vue.toDisplayString(_ctx.title), 1) ], 2), _ctx.showClose ? (vue.openBlock(), vue.createElementBlock("button", { key: 0, type: "button", class: vue.normalizeClass(_ctx.ns.e("headerbtn")), "aria-label": _ctx.t("el.messagebox.close"), onClick: ($event) => _ctx.handleAction(_ctx.distinguishCancelAndClose ? "close" : "cancel"), onKeydown: vue.withKeys(vue.withModifiers(($event) => _ctx.handleAction(_ctx.distinguishCancelAndClose ? "close" : "cancel"), ["prevent"]), ["enter"]) }, [ vue.createVNode(_component_el_icon, { class: vue.normalizeClass(_ctx.ns.e("close")) }, { default: vue.withCtx(() => [ vue.createVNode(_component_close) ]), _: 1 }, 8, ["class"]) ], 42, ["aria-label", "onClick", "onKeydown"])) : vue.createCommentVNode("v-if", true) ], 2)) : vue.createCommentVNode("v-if", true), vue.createElementVNode("div", { id: _ctx.contentId, class: vue.normalizeClass(_ctx.ns.e("content")) }, [ vue.createElementVNode("div", { class: vue.normalizeClass(_ctx.ns.e("container")) }, [ _ctx.iconComponent && !_ctx.center && _ctx.hasMessage ? (vue.openBlock(), vue.createBlock(_component_el_icon, { key: 0, class: vue.normalizeClass([_ctx.ns.e("status"), _ctx.typeClass]) }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.iconComponent))) ]), _: 1 }, 8, ["class"])) : vue.createCommentVNode("v-if", true), _ctx.hasMessage ? (vue.openBlock(), vue.createElementBlock("div", { key: 1, class: vue.normalizeClass(_ctx.ns.e("message")) }, [ vue.renderSlot(_ctx.$slots, "default", {}, () => [ !_ctx.dangerouslyUseHTMLString ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.showInput ? "label" : "p"), { key: 0, for: _ctx.showInput ? _ctx.inputId : void 0 }, { default: vue.withCtx(() => [ vue.createTextVNode(vue.toDisplayString(!_ctx.dangerouslyUseHTMLString ? _ctx.message : ""), 1) ]), _: 1 }, 8, ["for"])) : (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.showInput ? "label" : "p"), { key: 1, for: _ctx.showInput ? _ctx.inputId : void 0, innerHTML: _ctx.message }, null, 8, ["for", "innerHTML"])) ]) ], 2)) : vue.createCommentVNode("v-if", true) ], 2), vue.withDirectives(vue.createElementVNode("div", { class: vue.normalizeClass(_ctx.ns.e("input")) }, [ vue.createVNode(_component_el_input, { id: _ctx.inputId, ref: "inputRef", modelValue: _ctx.inputValue, "onUpdate:modelValue": ($event) => _ctx.inputValue = $event, type: _ctx.inputType, placeholder: _ctx.inputPlaceholder, "aria-invalid": _ctx.validateError, class: vue.normalizeClass({ invalid: _ctx.validateError }), onKeydown: vue.withKeys(_ctx.handleInputEnter, ["enter"]) }, null, 8, ["id", "modelValue", "onUpdate:modelValue", "type", "placeholder", "aria-invalid", "class", "onKeydown"]), vue.createElementVNode("div", { class: vue.normalizeClass(_ctx.ns.e("errormsg")), style: vue.normalizeStyle({ visibility: !!_ctx.editorErrorMessage ? "visible" : "hidden" }) }, vue.toDisplayString(_ctx.editorErrorMessage), 7) ], 2), [ [vue.vShow, _ctx.showInput] ]) ], 10, ["id"]), vue.createElementVNode("div", { class: vue.normalizeClass(_ctx.ns.e("btns")) }, [ _ctx.showCancelButton ? (vue.openBlock(), vue.createBlock(_component_el_button, { key: 0, loading: _ctx.cancelButtonLoading, "loading-icon": _ctx.cancelButtonLoadingIcon, class: vue.normalizeClass([_ctx.cancelButtonClass]), round: _ctx.roundButton, size: _ctx.btnSize, onClick: ($event) => _ctx.handleAction("cancel"), onKeydown: vue.withKeys(vue.withModifiers(($event) => _ctx.handleAction("cancel"), ["prevent"]), ["enter"]) }, { default: vue.withCtx(() => [ vue.createTextVNode(vue.toDisplayString(_ctx.cancelButtonText || _ctx.t("el.messagebox.cancel")), 1) ]), _: 1 }, 8, ["loading", "loading-icon", "class", "round", "size", "onClick", "onKeydown"])) : vue.createCommentVNode("v-if", true), vue.withDirectives(vue.createVNode(_component_el_button, { ref: "confirmRef", type: "primary", loading: _ctx.confirmButtonLoading, "loading-icon": _ctx.confirmButtonLoadingIcon, class: vue.normalizeClass([_ctx.confirmButtonClasses]), round: _ctx.roundButton, disabled: _ctx.confirmButtonDisabled, size: _ctx.btnSize, onClick: ($event) => _ctx.handleAction("confirm"), onKeydown: vue.withKeys(vue.withModifiers(($event) => _ctx.handleAction("confirm"), ["prevent"]), ["enter"]) }, { default: vue.withCtx(() => [ vue.createTextVNode(vue.toDisplayString(_ctx.confirmButtonText || _ctx.t("el.messagebox.confirm")), 1) ]), _: 1 }, 8, ["loading", "loading-icon", "class", "round", "disabled", "size", "onClick", "onKeydown"]), [ [vue.vShow, _ctx.showConfirmButton] ]) ], 2) ], 14, ["onClick"]) ]), _: 3 }, 8, ["trapped", "focus-trap-el", "focus-start-el", "onReleaseRequested"]) ], 42, ["aria-label", "aria-describedby", "onClick", "onMousedown", "onMouseup"]) ]), _: 3 }, 8, ["z-index", "overlay-class", "mask"]), [ [vue.vShow, _ctx.visible] ]) ]), _: 3 }, 8, ["onAfterLeave"]); } var MessageBoxConstructor = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["render", _sfc_render], ["__file", "index.vue"]]); 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(props.appendTo)) { appendTo = props.appendTo; } if (!isElement(appendTo)) { 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 = vue.createVNode(MessageBoxConstructor, props, isFunction$1(props.message) || vue.isVNode(props.message) ? { default: isFunction$1(props.message) ? props.message : () => props.message } : null); vnode.appContext = appContext; 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 = () => { 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)) { vm[prop] = options[prop]; } } vm.visible = true; return vm; }; function MessageBox(options, appContext = null) { if (!isClient) return Promise.reject(); let callback; if (isString(options) || vue.isVNode(options)) { options = { message: options }; } else { callback = options.callback; } return new Promise((resolve, reject2) => { const vm = showMessage(options, appContext != null ? appContext : MessageBox._context); messageInstance.set(vm, { options, callback, resolve, reject: reject2 }); }); } 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((_2, vm) => { vm.doClose(); }); messageInstance.clear(); }; MessageBox._context = null; const _MessageBox = MessageBox; _MessageBox.install = (app2) => { _MessageBox._context = app2._context; app2.config.globalProperties.$msgbox = _MessageBox; app2.config.globalProperties.$messageBox = _MessageBox; app2.config.globalProperties.$alert = _MessageBox.alert; app2.config.globalProperties.$confirm = _MessageBox.confirm; app2.config.globalProperties.$prompt = _MessageBox.prompt; }; const ElMessageBox = _MessageBox; const notificationTypes = [ "success", "info", "warning", "error" ]; 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]), 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 }); const notificationEmits = { destroy: () => true }; const __default__ = vue.defineComponent({ name: "ElNotification" }); const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({ ...__default__, props: notificationProps, emits: notificationEmits, setup(__props, { expose }) { const props = __props; const { ns, zIndex: zIndex2 } = useGlobalComponentSettings("notification"); const { nextZIndex, currentZIndex } = zIndex2; const { Close } = CloseComponents; const visible = vue.ref(false); let timer = void 0; const typeClass = vue.computed(() => { const type = props.type; return type && TypeComponentsMap[props.type] ? ns.m(type) : ""; }); const iconComponent = vue.computed(() => { if (!props.type) return props.icon; return TypeComponentsMap[props.type] || props.icon; }); const horizontalClass = vue.computed(() => props.position.endsWith("right") ? "right" : "left"); const verticalProperty = vue.computed(() => props.position.startsWith("top") ? "top" : "bottom"); const positionStyle = vue.computed(() => { var _a2; return { [verticalProperty.value]: `${props.offset}px`, zIndex: (_a2 = props.zIndex) != null ? _a2 : currentZIndex.value }; }); function startTimer() { if (props.duration > 0) { ({ stop: timer } = useTimeoutFn(() => { if (visible.value) close2(); }, props.duration)); } } function clearTimer() { timer == null ? void 0 : timer(); } function close2() { visible.value = false; } function onKeydown({ code }) { if (code === EVENT_CODE.delete || code === EVENT_CODE.backspace) { clearTimer(); } else if (code === EVENT_CODE.esc) { if (visible.value) { close2(); } } else { startTimer(); } } vue.onMounted(() => { startTimer(); nextZIndex(); visible.value = true; }); useEventListener(document, "keydown", onKeydown); expose({ visible, close: close2 }); return (_ctx, _cache) => { return vue.openBlock(), vue.createBlock(vue.Transition, { name: vue.unref(ns).b("fade"), onBeforeLeave: _ctx.onClose, onAfterLeave: ($event) => _ctx.$emit("destroy"), persisted: "" }, { default: vue.withCtx(() => [ vue.withDirectives(vue.createElementVNode("div", { id: _ctx.id, class: vue.normalizeClass([vue.unref(ns).b(), _ctx.customClass, vue.unref(horizontalClass)]), style: vue.normalizeStyle(vue.unref(positionStyle)), role: "alert", onMouseenter: clearTimer, onMouseleave: startTimer, onClick: _ctx.onClick }, [ vue.unref(iconComponent) ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 0, class: vue.normalizeClass([vue.unref(ns).e("icon"), vue.unref(typeClass)]) }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(iconComponent)))) ]), _: 1 }, 8, ["class"])) : vue.createCommentVNode("v-if", true), vue.createElementVNode("div", { class: vue.normalizeClass(vue.unref(ns).e("group")) }, [ vue.createElementVNode("h2", { class: vue.normalizeClass(vue.unref(ns).e("title")), textContent: vue.toDisplayString(_ctx.title) }, null, 10, ["textContent"]), vue.withDirectives(vue.createElementVNode("div", { class: vue.normalizeClass(vue.unref(ns).e("content")), style: vue.normalizeStyle(!!_ctx.title ? void 0 : { margin: 0 }) }, [ vue.renderSlot(_ctx.$slots, "default", {}, () => [ !_ctx.dangerouslyUseHTMLString ? (vue.openBlock(), vue.createElementBlock("p", { key: 0 }, vue.toDisplayString(_ctx.message), 1)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [ vue.createCommentVNode(" Caution here, message could've been compromised, never use user's input as message "), vue.createElementVNode("p", { innerHTML: _ctx.message }, null, 8, ["innerHTML"]) ], 2112)) ]) ], 6), [ [vue.vShow, _ctx.message] ]), _ctx.showClose ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 0, class: vue.normalizeClass(vue.unref(ns).e("closeBtn")), onClick: vue.withModifiers(close2, ["stop"]) }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(Close)) ]), _: 1 }, 8, ["class", "onClick"])) : vue.createCommentVNode("v-if", true) ], 2) ], 46, ["id", "onClick"]), [ [vue.vShow, visible.value] ]) ]), _: 3 }, 8, ["name", "onBeforeLeave", "onAfterLeave"]); }; } }); var NotificationConstructor = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__file", "notification.vue"]]); const notifications = { "top-left": [], "top-right": [], "bottom-left": [], "bottom-right": [] }; const GAP_SIZE = 16; let seed = 1; const notify = function(options = {}, context = null) { if (!isClient) return { close: () => void 0 }; if (typeof options === "string" || vue.isVNode(options)) { options = { message: options }; } const position = options.position || "top-right"; let verticalOffset = options.offset || 0; notifications[position].forEach(({ vm: vm2 }) => { var _a2; verticalOffset += (((_a2 = vm2.el) == null ? void 0 : _a2.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(options.appendTo)) { appendTo = options.appendTo; } else if (isString(options.appendTo)) { appendTo = document.querySelector(options.appendTo); } if (!isElement(appendTo)) { debugWarn("ElNotification", "the appendTo option is not an HTMLElement. Falling back to document.body."); appendTo = document.body; } const container = document.createElement("div"); const vm = vue.createVNode(NotificationConstructor, props, vue.isVNode(props.message) ? { default: () => props.message } : null); vm.appContext = context != null ? context : notify._context; vm.props.onDestroy = () => { vue.render(null, container); }; 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 = {}) => { if (typeof options === "string" || vue.isVNode(options)) { options = { message: options }; } return notify({ ...options, type }); }; }); function close(id, position, userOnClose) { const orientedNotifications = notifications[position]; const idx = orientedNotifications.findIndex(({ vm: vm2 }) => { var _a2; return ((_a2 = vm2.component) == null ? void 0 : _a2.props.id) === id; }); if (idx === -1) return; const { vm } = orientedNotifications[idx]; if (!vm) return; userOnClose == null ? void 0 : 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; }); } } notify.closeAll = closeAll; notify._context = null; const ElNotification = withInstallFunction(notify, "$notify"); const _hoisted_1$8 = { viewBox: "0 0 1024 1024", width: "1.2em", height: "1.2em" }; function render(_ctx, _cache) { return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$8, _cache[0] || (_cache[0] = [ vue.createElementVNode("path", { fill: "currentColor", d: "M544 864V672h128L512 480L352 672h128v192H320v-1.6c-5.376.32-10.496 1.6-16 1.6A240 240 0 0 1 64 624c0-123.136 93.12-223.488 212.608-237.248A239.81 239.81 0 0 1 512 192a239.87 239.87 0 0 1 235.456 194.752c119.488 13.76 212.48 114.112 212.48 237.248a240 240 0 0 1-240 240c-5.376 0-10.56-1.28-16-1.6v1.6z" }, null, -1) ])); } const __unplugin_components_4 = vue.markRaw({ name: "ep-upload-filled", render }); /*! * Compressor.js v1.2.1 * https://fengyuanchen.github.io/compressorjs * * Copyright 2018-present Chen Fengyuan * Released under the MIT license * * Date: 2023-02-28T14:09:41.732Z */ function ownKeys(object2, enumerableOnly) { var keys2 = Object.keys(object2); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object2); enumerableOnly && (symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object2, sym).enumerable; })), keys2.push.apply(keys2, symbols); } return keys2; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), true).forEach(function(key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 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 _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== void 0) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } var canvasToBlob = { exports: {} }; (function(module2) { if (typeof window === "undefined") { return; } (function(window2) { var CanvasPrototype = window2.HTMLCanvasElement && window2.HTMLCanvasElement.prototype; var hasBlobConstructor = window2.Blob && function() { try { return Boolean(new Blob()); } catch (e) { return false; } }(); var hasArrayBufferViewSupport = hasBlobConstructor && window2.Uint8Array && function() { try { return new Blob([new Uint8Array(100)]).size === 100; } catch (e) { return false; } }(); var BlobBuilder = window2.BlobBuilder || window2.WebKitBlobBuilder || window2.MozBlobBuilder || window2.MSBlobBuilder; var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/; var dataURLtoBlob = (hasBlobConstructor || BlobBuilder) && window2.atob && window2.ArrayBuffer && window2.Uint8Array && function(dataURI) { var matches, mediaType, isBase64, dataString, byteString, arrayBuffer, intArray, i, bb; matches = dataURI.match(dataURIPattern); if (!matches) { throw new Error("invalid data URI"); } mediaType = matches[2] ? matches[1] : "text/plain" + (matches[3] || ";charset=US-ASCII"); isBase64 = !!matches[4]; dataString = dataURI.slice(matches[0].length); if (isBase64) { byteString = atob(dataString); } else { byteString = decodeURIComponent(dataString); } arrayBuffer = new ArrayBuffer(byteString.length); intArray = new Uint8Array(arrayBuffer); for (i = 0; i < byteString.length; i += 1) { intArray[i] = byteString.charCodeAt(i); } if (hasBlobConstructor) { return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], { type: mediaType }); } bb = new BlobBuilder(); bb.append(arrayBuffer); return bb.getBlob(mediaType); }; if (window2.HTMLCanvasElement && !CanvasPrototype.toBlob) { if (CanvasPrototype.mozGetAsFile) { CanvasPrototype.toBlob = function(callback, type, quality) { var self2 = this; setTimeout(function() { if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) { callback(dataURLtoBlob(self2.toDataURL(type, quality))); } else { callback(self2.mozGetAsFile("blob", type)); } }); }; } else if (CanvasPrototype.toDataURL && dataURLtoBlob) { if (CanvasPrototype.msToBlob) { CanvasPrototype.toBlob = function(callback, type, quality) { var self2 = this; setTimeout(function() { if ((type && type !== "image/png" || quality) && CanvasPrototype.toDataURL && dataURLtoBlob) { callback(dataURLtoBlob(self2.toDataURL(type, quality))); } else { callback(self2.msToBlob(type)); } }); }; } else { CanvasPrototype.toBlob = function(callback, type, quality) { var self2 = this; setTimeout(function() { callback(dataURLtoBlob(self2.toDataURL(type, quality))); }); }; } } } if (module2.exports) { module2.exports = dataURLtoBlob; } else { window2.dataURLtoBlob = dataURLtoBlob; } })(window); })(canvasToBlob); var toBlob = canvasToBlob.exports; var isBlob = function isBlob2(value) { if (typeof Blob === "undefined") { return false; } return value instanceof Blob || Object.prototype.toString.call(value) === "[object Blob]"; }; var DEFAULTS = { /** * Indicates if output the original image instead of the compressed one * when the size of the compressed image is greater than the original one's * @type {boolean} */ strict: true, /** * Indicates if read the image's Exif Orientation information, * and then rotate or flip the image automatically. * @type {boolean} */ checkOrientation: true, /** * Indicates if retain the image's Exif information after compressed. * @type {boolean} */ retainExif: false, /** * The max width of the output image. * @type {number} */ maxWidth: Infinity, /** * The max height of the output image. * @type {number} */ maxHeight: Infinity, /** * The min width of the output image. * @type {number} */ minWidth: 0, /** * The min height of the output image. * @type {number} */ minHeight: 0, /** * The width of the output image. * If not specified, the natural width of the source image will be used. * @type {number} */ width: void 0, /** * The height of the output image. * If not specified, the natural height of the source image will be used. * @type {number} */ height: void 0, /** * Sets how the size of the image should be resized to the container * specified by the `width` and `height` options. * @type {string} */ resize: "none", /** * The quality of the output image. * It must be a number between `0` and `1`, * and only available for `image/jpeg` and `image/webp` images. * Check out {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob canvas.toBlob}. * @type {number} */ quality: 0.8, /** * The mime type of the output image. * By default, the original mime type of the source image file will be used. * @type {string} */ mimeType: "auto", /** * Files whose file type is included in this list, * and whose file size exceeds the `convertSize` value will be converted to JPEGs. * @type {string|Array} */ convertTypes: ["image/png"], /** * PNG files over this size (5 MB by default) will be converted to JPEGs. * To disable this, just set the value to `Infinity`. * @type {number} */ convertSize: 5e6, /** * The hook function to execute before draw the image into the canvas for compression. * @type {Function} * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas. * @param {HTMLCanvasElement} canvas - The canvas for compression. * @example * function (context, canvas) { * context.fillStyle = '#fff'; * } */ beforeDraw: null, /** * The hook function to execute after drew the image into the canvas for compression. * @type {Function} * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas. * @param {HTMLCanvasElement} canvas - The canvas for compression. * @example * function (context, canvas) { * context.filter = 'grayscale(100%)'; * } */ drew: null, /** * The hook function to execute when success to compress the image. * @type {Function} * @param {File} file - The compressed image File object. * @example * function (file) { * console.log(file); * } */ success: null, /** * The hook function to execute when fail to compress the image. * @type {Function} * @param {Error} err - An Error object. * @example * function (err) { * console.log(err.message); * } */ error: null }; var IS_BROWSER = typeof window !== "undefined" && typeof window.document !== "undefined"; var WINDOW = IS_BROWSER ? window : {}; var isPositiveNumber = function isPositiveNumber2(value) { return value > 0 && value < Infinity; }; var slice = Array.prototype.slice; function toArray(value) { return Array.from ? Array.from(value) : slice.call(value); } var REGEXP_IMAGE_TYPE = /^image\/.+$/; function isImageType(value) { return REGEXP_IMAGE_TYPE.test(value); } function imageTypeToExtension(value) { var extension = isImageType(value) ? value.substr(6) : ""; if (extension === "jpeg") { extension = "jpg"; } return ".".concat(extension); } var fromCharCode = String.fromCharCode; function getStringFromCharCode(dataView, start, length) { var str = ""; var i; length += start; for (i = start; i < length; i += 1) { str += fromCharCode(dataView.getUint8(i)); } return str; } var btoa = WINDOW.btoa; function arrayBufferToDataURL(arrayBuffer, mimeType) { var chunks = []; var chunkSize = 8192; var uint8 = new Uint8Array(arrayBuffer); while (uint8.length > 0) { chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize)))); uint8 = uint8.subarray(chunkSize); } return "data:".concat(mimeType, ";base64,").concat(btoa(chunks.join(""))); } function resetAndGetOrientation(arrayBuffer) { var dataView = new DataView(arrayBuffer); var orientation; try { var littleEndian; var app1Start; var ifdStart; if (dataView.getUint8(0) === 255 && dataView.getUint8(1) === 216) { var length = dataView.byteLength; var offset = 2; while (offset + 1 < length) { if (dataView.getUint8(offset) === 255 && dataView.getUint8(offset + 1) === 225) { app1Start = offset; break; } offset += 1; } } if (app1Start) { var exifIDCode = app1Start + 4; var tiffOffset = app1Start + 10; if (getStringFromCharCode(dataView, exifIDCode, 4) === "Exif") { var endianness = dataView.getUint16(tiffOffset); littleEndian = endianness === 18761; if (littleEndian || endianness === 19789) { if (dataView.getUint16(tiffOffset + 2, littleEndian) === 42) { var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian); if (firstIFDOffset >= 8) { ifdStart = tiffOffset + firstIFDOffset; } } } } } if (ifdStart) { var _length = dataView.getUint16(ifdStart, littleEndian); var _offset; var i; for (i = 0; i < _length; i += 1) { _offset = ifdStart + i * 12 + 2; if (dataView.getUint16(_offset, littleEndian) === 274) { _offset += 8; orientation = dataView.getUint16(_offset, littleEndian); dataView.setUint16(_offset, 1, littleEndian); break; } } } } catch (e) { orientation = 1; } return orientation; } function parseOrientation(orientation) { var rotate = 0; var scaleX = 1; var scaleY = 1; switch (orientation) { case 2: scaleX = -1; break; case 3: rotate = -180; break; case 4: scaleY = -1; break; case 5: rotate = 90; scaleY = -1; break; case 6: rotate = 90; break; case 7: rotate = 90; scaleX = -1; break; case 8: rotate = -90; break; } return { rotate, scaleX, scaleY }; } var REGEXP_DECIMALS = /\.\d*(?:0|9){12}\d*$/; function normalizeDecimalNumber(value) { var times2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1e11; return REGEXP_DECIMALS.test(value) ? Math.round(value * times2) / times2 : value; } function getAdjustedSizes(_ref) { var aspectRatio = _ref.aspectRatio, height = _ref.height, width = _ref.width; var type = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "none"; var isValidWidth = isPositiveNumber(width); var isValidHeight = isPositiveNumber(height); if (isValidWidth && isValidHeight) { var adjustedWidth = height * aspectRatio; if ((type === "contain" || type === "none") && adjustedWidth > width || type === "cover" && adjustedWidth < width) { height = width / aspectRatio; } else { width = height * aspectRatio; } } else if (isValidWidth) { height = width / aspectRatio; } else if (isValidHeight) { width = height * aspectRatio; } return { width, height }; } function getExif(arrayBuffer) { var array = toArray(new Uint8Array(arrayBuffer)); var length = array.length; var segments = []; var start = 0; while (start + 3 < length) { var value = array[start]; var next = array[start + 1]; if (value === 255 && next === 218) { break; } if (value === 255 && next === 216) { start += 2; } else { var offset = array[start + 2] * 256 + array[start + 3]; var end = start + offset + 2; var segment = array.slice(start, end); segments.push(segment); start = end; } } return segments.reduce(function(exifArray, current) { if (current[0] === 255 && current[1] === 225) { return exifArray.concat(current); } return exifArray; }, []); } function insertExif(arrayBuffer, exifArray) { var array = toArray(new Uint8Array(arrayBuffer)); if (array[2] !== 255 || array[3] !== 224) { return arrayBuffer; } var app0Length = array[4] * 256 + array[5]; var newArrayBuffer = [255, 216].concat(exifArray, array.slice(4 + app0Length)); return new Uint8Array(newArrayBuffer); } var ArrayBuffer$1 = WINDOW.ArrayBuffer, FileReader$1 = WINDOW.FileReader; var URL$1 = WINDOW.URL || WINDOW.webkitURL; var REGEXP_EXTENSION = /\.\w+$/; var AnotherCompressor = WINDOW.Compressor; var Compressor = /* @__PURE__ */ function() { function Compressor2(file, options) { _classCallCheck(this, Compressor2); this.file = file; this.exif = []; this.image = new Image(); this.options = _objectSpread2(_objectSpread2({}, DEFAULTS), options); this.aborted = false; this.result = null; this.init(); } _createClass(Compressor2, [{ key: "init", value: function init() { var _this = this; var file = this.file, options = this.options; if (!isBlob(file)) { this.fail(new Error("The first argument must be a File or Blob object.")); return; } var mimeType = file.type; if (!isImageType(mimeType)) { this.fail(new Error("The first argument must be an image File or Blob object.")); return; } if (!URL$1 || !FileReader$1) { this.fail(new Error("The current browser does not support image compression.")); return; } if (!ArrayBuffer$1) { options.checkOrientation = false; options.retainExif = false; } var isJPEGImage = mimeType === "image/jpeg"; var checkOrientation = isJPEGImage && options.checkOrientation; var retainExif = isJPEGImage && options.retainExif; if (URL$1 && !checkOrientation && !retainExif) { this.load({ url: URL$1.createObjectURL(file) }); } else { var reader = new FileReader$1(); this.reader = reader; reader.onload = function(_ref) { var target = _ref.target; var result2 = target.result; var data = {}; var orientation = 1; if (checkOrientation) { orientation = resetAndGetOrientation(result2); if (orientation > 1) { _extends(data, parseOrientation(orientation)); } } if (retainExif) { _this.exif = getExif(result2); } if (checkOrientation || retainExif) { if (!URL$1 || orientation > 1) { data.url = arrayBufferToDataURL(result2, mimeType); } else { data.url = URL$1.createObjectURL(file); } } else { data.url = result2; } _this.load(data); }; reader.onabort = function() { _this.fail(new Error("Aborted to read the image with FileReader.")); }; reader.onerror = function() { _this.fail(new Error("Failed to read the image with FileReader.")); }; reader.onloadend = function() { _this.reader = null; }; if (checkOrientation || retainExif) { reader.readAsArrayBuffer(file); } else { reader.readAsDataURL(file); } } } }, { key: "load", value: function load(data) { var _this2 = this; var file = this.file, image = this.image; image.onload = function() { _this2.draw(_objectSpread2(_objectSpread2({}, data), {}, { naturalWidth: image.naturalWidth, naturalHeight: image.naturalHeight })); }; image.onabort = function() { _this2.fail(new Error("Aborted to load the image.")); }; image.onerror = function() { _this2.fail(new Error("Failed to load the image.")); }; if (WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent)) { image.crossOrigin = "anonymous"; } image.alt = file.name; image.src = data.url; } }, { key: "draw", value: function draw(_ref2) { var _this3 = this; var naturalWidth = _ref2.naturalWidth, naturalHeight = _ref2.naturalHeight, _ref2$rotate = _ref2.rotate, rotate = _ref2$rotate === void 0 ? 0 : _ref2$rotate, _ref2$scaleX = _ref2.scaleX, scaleX = _ref2$scaleX === void 0 ? 1 : _ref2$scaleX, _ref2$scaleY = _ref2.scaleY, scaleY = _ref2$scaleY === void 0 ? 1 : _ref2$scaleY; var file = this.file, image = this.image, options = this.options; var canvas = document.createElement("canvas"); var context = canvas.getContext("2d"); var is90DegreesRotated = Math.abs(rotate) % 180 === 90; var resizable = (options.resize === "contain" || options.resize === "cover") && isPositiveNumber(options.width) && isPositiveNumber(options.height); var maxWidth = Math.max(options.maxWidth, 0) || Infinity; var maxHeight = Math.max(options.maxHeight, 0) || Infinity; var minWidth = Math.max(options.minWidth, 0) || 0; var minHeight = Math.max(options.minHeight, 0) || 0; var aspectRatio = naturalWidth / naturalHeight; var width = options.width, height = options.height; if (is90DegreesRotated) { var _ref3 = [maxHeight, maxWidth]; maxWidth = _ref3[0]; maxHeight = _ref3[1]; var _ref4 = [minHeight, minWidth]; minWidth = _ref4[0]; minHeight = _ref4[1]; var _ref5 = [height, width]; width = _ref5[0]; height = _ref5[1]; } if (resizable) { aspectRatio = width / height; } var _getAdjustedSizes = getAdjustedSizes({ aspectRatio, width: maxWidth, height: maxHeight }, "contain"); maxWidth = _getAdjustedSizes.width; maxHeight = _getAdjustedSizes.height; var _getAdjustedSizes2 = getAdjustedSizes({ aspectRatio, width: minWidth, height: minHeight }, "cover"); minWidth = _getAdjustedSizes2.width; minHeight = _getAdjustedSizes2.height; if (resizable) { var _getAdjustedSizes3 = getAdjustedSizes({ aspectRatio, width, height }, options.resize); width = _getAdjustedSizes3.width; height = _getAdjustedSizes3.height; } else { var _getAdjustedSizes4 = getAdjustedSizes({ aspectRatio, width, height }); var _getAdjustedSizes4$wi = _getAdjustedSizes4.width; width = _getAdjustedSizes4$wi === void 0 ? naturalWidth : _getAdjustedSizes4$wi; var _getAdjustedSizes4$he = _getAdjustedSizes4.height; height = _getAdjustedSizes4$he === void 0 ? naturalHeight : _getAdjustedSizes4$he; } width = Math.floor(normalizeDecimalNumber(Math.min(Math.max(width, minWidth), maxWidth))); height = Math.floor(normalizeDecimalNumber(Math.min(Math.max(height, minHeight), maxHeight))); var destX = -width / 2; var destY = -height / 2; var destWidth = width; var destHeight = height; var params = []; if (resizable) { var srcX = 0; var srcY = 0; var srcWidth = naturalWidth; var srcHeight = naturalHeight; var _getAdjustedSizes5 = getAdjustedSizes({ aspectRatio, width: naturalWidth, height: naturalHeight }, { contain: "cover", cover: "contain" }[options.resize]); srcWidth = _getAdjustedSizes5.width; srcHeight = _getAdjustedSizes5.height; srcX = (naturalWidth - srcWidth) / 2; srcY = (naturalHeight - srcHeight) / 2; params.push(srcX, srcY, srcWidth, srcHeight); } params.push(destX, destY, destWidth, destHeight); if (is90DegreesRotated) { var _ref6 = [height, width]; width = _ref6[0]; height = _ref6[1]; } canvas.width = width; canvas.height = height; if (!isImageType(options.mimeType)) { options.mimeType = file.type; } var fillStyle = "transparent"; if (file.size > options.convertSize && options.convertTypes.indexOf(options.mimeType) >= 0) { options.mimeType = "image/jpeg"; } var isJPEGImage = options.mimeType === "image/jpeg"; if (isJPEGImage) { fillStyle = "#fff"; } context.fillStyle = fillStyle; context.fillRect(0, 0, width, height); if (options.beforeDraw) { options.beforeDraw.call(this, context, canvas); } if (this.aborted) { return; } context.save(); context.translate(width / 2, height / 2); context.rotate(rotate * Math.PI / 180); context.scale(scaleX, scaleY); context.drawImage.apply(context, [image].concat(params)); context.restore(); if (options.drew) { options.drew.call(this, context, canvas); } if (this.aborted) { return; } var callback = function callback2(blob) { if (!_this3.aborted) { var done = function done2(result2) { return _this3.done({ naturalWidth, naturalHeight, result: result2 }); }; if (blob && isJPEGImage && options.retainExif && _this3.exif && _this3.exif.length > 0) { var next = function next2(arrayBuffer) { return done(toBlob(arrayBufferToDataURL(insertExif(arrayBuffer, _this3.exif), options.mimeType))); }; if (blob.arrayBuffer) { blob.arrayBuffer().then(next).catch(function() { _this3.fail(new Error("Failed to read the compressed image with Blob.arrayBuffer().")); }); } else { var reader = new FileReader$1(); _this3.reader = reader; reader.onload = function(_ref7) { var target = _ref7.target; next(target.result); }; reader.onabort = function() { _this3.fail(new Error("Aborted to read the compressed image with FileReader.")); }; reader.onerror = function() { _this3.fail(new Error("Failed to read the compressed image with FileReader.")); }; reader.onloadend = function() { _this3.reader = null; }; reader.readAsArrayBuffer(blob); } } else { done(blob); } } }; if (canvas.toBlob) { canvas.toBlob(callback, options.mimeType, options.quality); } else { callback(toBlob(canvas.toDataURL(options.mimeType, options.quality))); } } }, { key: "done", value: function done(_ref8) { var naturalWidth = _ref8.naturalWidth, naturalHeight = _ref8.naturalHeight, result2 = _ref8.result; var file = this.file, image = this.image, options = this.options; if (URL$1 && image.src.indexOf("blob:") === 0) { URL$1.revokeObjectURL(image.src); } if (result2) { if (options.strict && !options.retainExif && result2.size > file.size && options.mimeType === file.type && !(options.width > naturalWidth || options.height > naturalHeight || options.minWidth > naturalWidth || options.minHeight > naturalHeight || options.maxWidth < naturalWidth || options.maxHeight < naturalHeight)) { result2 = file; } else { var date = /* @__PURE__ */ new Date(); result2.lastModified = date.getTime(); result2.lastModifiedDate = date; result2.name = file.name; if (result2.name && result2.type !== file.type) { result2.name = result2.name.replace(REGEXP_EXTENSION, imageTypeToExtension(result2.type)); } } } else { result2 = file; } this.result = result2; if (options.success) { options.success.call(this, result2); } } }, { key: "fail", value: function fail(err) { var options = this.options; if (options.error) { options.error.call(this, err); } else { throw err; } } }, { key: "abort", value: function abort() { if (!this.aborted) { this.aborted = true; if (this.reader) { this.reader.abort(); } else if (!this.image.complete) { this.image.onload = null; this.image.onabort(); } else { this.fail(new Error("The compression process has been aborted.")); } } } /** * Get the no conflict compressor class. * @returns {Compressor} The compressor class. */ }], [{ key: "noConflict", value: function noConflict() { window.Compressor = AnotherCompressor; return Compressor2; } /** * Change the default options. * @param {Object} options - The new default options. */ }, { key: "setDefaults", value: function setDefaults(options) { _extends(DEFAULTS, options); } }]); return Compressor2; }(); const _hoisted_1$7 = { class: "upload-item" }; const _hoisted_2$1 = { class: "cell" }; const _hoisted_3$1 = { class: "cell" }; const _hoisted_4 = { class: "right" }; const _sfc_main$d = { __name: "UploadItem", setup(__props) { const mainStore2 = useMainStore(); const { extendWallpaperBase64Obj } = storeToRefs(mainStore2); const wallpaperName = vue.ref(generateUniqueDefaultName()); const isCompressor = useConfig("isCompressor", false); const rate = useConfig("compressorRate", 0.8); function storeFile(rawFile) { const reader = new FileReader(); reader.readAsDataURL(rawFile); reader.onloadend = () => { mainStore2.appendWallpaper(wallpaperName.value, reader.result); mainStore2.applyWallpaper(wallpaperName.value); wallpaperName.value = generateUniqueDefaultName(); }; } function storeFileCompressor(rawFile) { new Compressor(rawFile, { quality: rate.value, // 压缩质量,0.8 代表 80% 的质量 success(compressedFile) { storeFile(compressedFile); } }); } function onBeforeUpload(rawFile) { if (isCompressor.value) { storeFileCompressor(rawFile); } else { storeFile(rawFile); } return false; } function generateUniqueDefaultName() { const defaultWallpaperName = "默认壁纸名"; let counter = 0; while (defaultWallpaperName + counter in extendWallpaperBase64Obj.value) { counter++; } return defaultWallpaperName + counter; } return (_ctx, _cache) => { const _component_el_input = ElInput; const _component_el_checkbox = ElCheckbox; const _component_el_tooltip = ElTooltip; const _component_el_input_number = ElInputNumber; const _component_i_ep_upload_filled = __unplugin_components_4; const _component_el_icon = ElIcon; const _component_el_upload = ElUpload; return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [ vue.createElementVNode("div", _hoisted_2$1, [ _cache[3] || (_cache[3] = vue.createElementVNode("span", { class: "label" }, " 壁纸名: ", -1)), vue.createVNode(_component_el_input, { modelValue: wallpaperName.value, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => wallpaperName.value = $event), class: "input", placeholder: "请给壁纸取个名字" }, null, 8, ["modelValue"]) ]), vue.createElementVNode("div", _hoisted_3$1, [ vue.createVNode(_component_el_checkbox, { class: "checkbox", modelValue: vue.unref(isCompressor), "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => vue.isRef(isCompressor) ? isCompressor.value = $event : null), label: "是否压缩" }, null, 8, ["modelValue"]), vue.createElementVNode("div", _hoisted_4, [ vue.createVNode(_component_el_tooltip, { class: "box-item", effect: "light", content: "压缩比越接近1, 越是无损压缩, 但存储时, 图片体积会更大", placement: "bottom" }, { default: vue.withCtx(() => _cache[4] || (_cache[4] = [ vue.createElementVNode("span", { class: "label" }, " 压缩比: ", -1) ])), _: 1 }), vue.createVNode(_component_el_input_number, { modelValue: vue.unref(rate), "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => vue.isRef(rate) ? rate.value = $event : null), min: 0.5, max: 1, step: 0.1 }, null, 8, ["modelValue"]) ]) ]), vue.createVNode(_component_el_upload, { multiple: "", drag: "", "before-upload": onBeforeUpload }, { tip: vue.withCtx(() => _cache[5] || (_cache[5] = [ vue.createElementVNode("div", { class: "el-upload__tip" }, " 正常不需要压缩图片, 支持点击上传多张图片 ", -1) ])), default: vue.withCtx(() => [ vue.createVNode(_component_el_icon, { class: "el-icon--upload" }, { default: vue.withCtx(() => [ vue.createVNode(_component_i_ep_upload_filled) ]), _: 1 }), _cache[6] || (_cache[6] = vue.createElementVNode("div", { class: "el-upload__text" }, [ vue.createTextVNode(" 将图片拖入框内, 或者"), vue.createElementVNode("em", null, "点击上传") ], -1)) ]), _: 1 }) ]); }; } }; const UploadItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$d, [["__scopeId", "data-v-b8caab98"]]); const _hoisted_1$6 = { class: "wallpaper-pane" }; const _sfc_main$c = { __name: "UploadPane", setup(__props) { return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [ vue.createVNode(UploadItem) ]); }; } }; const UploadPane = /* @__PURE__ */ _export_sfc$1(_sfc_main$c, [["__scopeId", "data-v-d4dbee09"]]); const _hoisted_1$5 = { class: "PictureItem" }; const _hoisted_2 = { class: "card-header" }; const _hoisted_3 = { class: "card-footer" }; const _sfc_main$b = { __name: "PictureItem", props: { imgName: { type: String, default: "" }, imgSrc: { type: String, default: "" }, deletable: { type: Boolean, default: false }, lazy: { type: Boolean, default: false } }, setup(__props) { const props = __props; const mainStore2 = useMainStore(); function applyWallpaper() { mainStore2.applyWallpaper(props.imgName); } function renameWallpaper() { ElMessageBox.prompt("", "修改壁纸名", { confirmButtonText: "确定", cancelButtonText: "取消" }).then(({ value: newName }) => { mainStore2.renameWallpaper(props.imgName, newName); ElNotification({ title: "消息", message: "已修改", type: "success" }); }).catch(() => { }); } function deleteWallpaper() { mainStore2.deleteWallpaper(props.imgName); } const loading = vue.ref(true); function onLoadSuccess() { loading.value = false; } return (_ctx, _cache) => { const _component_el_button = ElButton; const _component_el_image = ElImage; const _component_el_card = ElCard; const _directive_loading = vLoading; return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [ vue.createVNode(_component_el_card, { class: "card", shadow: "hover" }, { header: vue.withCtx(() => [ vue.createElementVNode("div", _hoisted_2, [ vue.createElementVNode("span", null, vue.toDisplayString(__props.imgName), 1), __props.deletable ? (vue.openBlock(), vue.createBlock(_component_el_button, { key: 0, type: "primary", onClick: renameWallpaper, class: "header-btn", plain: "" }, { default: vue.withCtx(() => _cache[0] || (_cache[0] = [ vue.createTextVNode("修改") ])), _: 1 })) : vue.createCommentVNode("", true) ]) ]), footer: vue.withCtx(() => [ vue.createElementVNode("div", _hoisted_3, [ vue.createVNode(_component_el_button, { type: "primary", onClick: applyWallpaper, plain: "" }, { default: vue.withCtx(() => _cache[1] || (_cache[1] = [ vue.createTextVNode("应用壁纸") ])), _: 1 }), __props.deletable ? (vue.openBlock(), vue.createBlock(_component_el_button, { key: 0, type: "danger", onClick: deleteWallpaper, plain: "" }, { default: vue.withCtx(() => _cache[2] || (_cache[2] = [ vue.createTextVNode("删除") ])), _: 1 })) : vue.createCommentVNode("", true) ]) ]), default: vue.withCtx(() => [ vue.withDirectives(vue.createVNode(_component_el_image, { class: "img", "preview-src-list": [__props.imgSrc], src: __props.imgSrc, fit: "cover", lazy: __props.lazy, onLoad: onLoadSuccess }, null, 8, ["preview-src-list", "src", "lazy"]), [ [_directive_loading, loading.value] ]) ]), _: 1 }) ]); }; } }; const PictureItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$b, [["__scopeId", "data-v-016ce612"]]); function isObjEmpty(obj) { return Object.keys(obj).length === 0; } const _sfc_main$a = { __name: "CollapseItem", props: { name: { type: String, default: "" }, height: { type: String, default: "40vh" }, imgObj: { type: Object, default: () => ({}) }, deletable: { type: Boolean, default: false }, title: { type: String, default: "" } }, setup(__props) { const mainStore2 = useMainStore(); const { tabsCurrSel } = storeToRefs(mainStore2); function toImportPane() { tabsCurrSel.value = "0"; } function clearAll(event) { event.stopPropagation(); ElMessageBox.confirm("是否要清除所有自定义背景图?", "", { confirmButtonText: "确定", cancelButtonText: "取消" }).then(() => { mainStore2.emptyWallpaper(); }).catch(() => { }); } storeToRefs(mainStore2); return (_ctx, _cache) => { const _component_el_button = ElButton; const _component_el_empty = ElEmpty; const _component_el_scrollbar = ElScrollbar; const _component_el_collapse_item = ElCollapseItem; return vue.openBlock(), vue.createBlock(_component_el_collapse_item, { class: "collapse-item", title: __props.title, name: __props.name }, vue.createSlots({ default: vue.withCtx(() => [ vue.unref(isObjEmpty)(__props.imgObj) ? (vue.openBlock(), vue.createBlock(_component_el_empty, { key: 0, description: "没有自定义壁纸, 请导入壁纸" }, { default: vue.withCtx(() => [ vue.createVNode(_component_el_button, { type: "primary", onClick: toImportPane }, { default: vue.withCtx(() => _cache[1] || (_cache[1] = [ vue.createTextVNode("导入壁纸") ])), _: 1 }) ]), _: 1 })) : (vue.openBlock(), vue.createBlock(_component_el_scrollbar, { key: 1, ref: "scrollRef", class: "scroll", "max-height": __props.height }, { default: vue.withCtx(() => [ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.imgObj, (imgSrc, imgName, index) => { return vue.openBlock(), vue.createBlock(PictureItem, { imgSrc, imgName, deletable: __props.deletable, lazy: index > 1 }, null, 8, ["imgSrc", "imgName", "deletable", "lazy"]); }), 256)) ]), _: 1 }, 8, ["max-height"])) ]), _: 2 }, [ __props.deletable ? { name: "title", fn: vue.withCtx(() => [ vue.createTextVNode(vue.toDisplayString(__props.title) + " ", 1), vue.createVNode(_component_el_button, { class: "clear-all-btn", onClick: clearAll, text: "", type: "danger" }, { default: vue.withCtx(() => _cache[0] || (_cache[0] = [ vue.createTextVNode("删除全部") ])), _: 1 }) ]), key: "0" } : void 0 ]), 1032, ["title", "name"]); }; } }; const CollapseItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$a, [["__scopeId", "data-v-97a3db87"]]); const _hoisted_1$4 = { class: "wallpaper-config" }; const _sfc_main$9 = { __name: "WallpaperConfig", setup(__props) { const mainStore2 = useMainStore(); const { extendWallpaperBase64Obj, collapseCurrSel } = storeToRefs(mainStore2); return (_ctx, _cache) => { const _component_el_collapse = ElCollapse; return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [ vue.createVNode(_component_el_collapse, { modelValue: vue.unref(collapseCurrSel), "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => vue.isRef(collapseCurrSel) ? collapseCurrSel.value = $event : null), accordion: "" }, { default: vue.withCtx(() => [ vue.createVNode(CollapseItem, { name: "1", title: "默认壁纸", imgObj: vue.unref(wallpaperBase64) }, null, 8, ["imgObj"]), vue.createVNode(CollapseItem, { name: "2", title: "自定义壁纸", imgObj: vue.unref(extendWallpaperBase64Obj), deletable: true }, null, 8, ["imgObj"]) ]), _: 1 }, 8, ["modelValue"]) ]); }; } }; const _sfc_main$8 = { __name: "CssVarConfig", props: /* @__PURE__ */ vue.mergeModels({ default: { type: [String, Number], default: 0 }, options: { type: Array, default: () => [] }, tip: { type: String, default: "" }, mode: { type: String, default: "number" }, suffix: { type: String, default: "" } }, { "modelValue": {}, "modelModifiers": {} }), emits: ["update:modelValue"], setup(__props) { const props = __props; const cssVar = vue.useModel(__props, "modelValue"); function setPosDefault() { cssVar.value = props.default; } return (_ctx, _cache) => { const _component_el_text = ElText; const _component_el_tooltip = ElTooltip; const _component_el_option = ElOption; const _component_el_select = ElSelect; const _component_el_input_number = ElInputNumber; const _component_el_button = ElButton; const _component_el_col = ElCol; const _component_el_row = ElRow; return vue.openBlock(), vue.createBlock(_component_el_row, { class: "setting-row" }, { default: vue.withCtx(() => [ vue.createVNode(_component_el_col, { class: "setting-container", span: 24 }, { default: vue.withCtx(() => [ vue.createVNode(_component_el_tooltip, { effect: "light", content: __props.tip, placement: "bottom", disabled: __props.tip.length === 0 }, { default: vue.withCtx(() => [ vue.createVNode(_component_el_text, { class: "input-label" }, { default: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true) ]), _: 3 }) ]), _: 3 }, 8, ["content", "disabled"]), typeof cssVar.value === __props.mode || cssVar.value === null && __props.mode === "number" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [ __props.mode === "string" ? (vue.openBlock(), vue.createBlock(_component_el_select, { key: 0, modelValue: cssVar.value, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => cssVar.value = $event), placeholder: "Select", style: { "width": "220px" } }, { default: vue.withCtx(() => [ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.options, (item) => { return vue.openBlock(), vue.createBlock(_component_el_option, { key: item.value, label: item.label, value: item.value }, null, 8, ["label", "value"]); }), 128)) ]), _: 1 }, 8, ["modelValue"])) : (vue.openBlock(), vue.createBlock(_component_el_input_number, { key: 1, modelValue: cssVar.value, "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => cssVar.value = $event), step: 10, style: { "width": "200px" } }, vue.createSlots({ _: 2 }, [ __props.suffix.length !== 0 ? { name: "suffix", fn: vue.withCtx(() => [ vue.createElementVNode("span", null, vue.toDisplayString(__props.suffix), 1) ]), key: "0" } : void 0 ]), 1032, ["modelValue"])) ], 64)) : (vue.openBlock(), vue.createBlock(_component_el_button, { key: 1, type: "primary", plain: "", onClick: setPosDefault }, { default: vue.withCtx(() => _cache[2] || (_cache[2] = [ vue.createTextVNode("切换设置方式") ])), _: 1 })), vue.createVNode(_component_el_button, { class: "default-btn", type: "primary", plain: "", onClick: setPosDefault }, { default: vue.withCtx(() => _cache[3] || (_cache[3] = [ vue.createTextVNode("设为默认值") ])), _: 1 }) ]), _: 3 }) ]), _: 3 }); }; } }; const CssVarConfig = /* @__PURE__ */ _export_sfc$1(_sfc_main$8, [["__scopeId", "data-v-e82e761f"]]); const _sfc_main$7 = { __name: "NumRowConfig", props: /* @__PURE__ */ vue.mergeModels({ min: { type: Number, default: -Infinity }, max: { type: Number, default: Infinity }, desc: { type: String, default: "" }, defaultValue: { type: Number, default: 0 }, defaultBtnDesc: { type: String, default: "设为默认值" }, tip: { type: String, default: "" } }, { "modelValue": {}, "modelModifiers": {} }), emits: ["update:modelValue"], setup(__props) { const props = __props; const cssVar = vue.useModel(__props, "modelValue"); function setCssVarDefault() { cssVar.value = props.defaultValue; } return (_ctx, _cache) => { const _component_el_text = ElText; const _component_el_tooltip = ElTooltip; const _component_el_input_number = ElInputNumber; const _component_el_button = ElButton; const _component_el_col = ElCol; const _component_el_row = ElRow; return vue.openBlock(), vue.createBlock(_component_el_row, { class: "setting-row" }, { default: vue.withCtx(() => [ vue.createVNode(_component_el_col, { class: "setting-container", span: 24 }, { default: vue.withCtx(() => [ vue.createVNode(_component_el_tooltip, { disabled: __props.tip === "", content: __props.tip, placement: "bottom" }, { default: vue.withCtx(() => [ vue.createVNode(_component_el_text, { class: "input-label" }, { default: vue.withCtx(() => [ vue.createTextVNode(vue.toDisplayString(__props.desc), 1) ]), _: 1 }) ]), _: 1 }, 8, ["disabled", "content"]), vue.createVNode(_component_el_input_number, { modelValue: cssVar.value, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => cssVar.value = $event), min: __props.min, max: __props.max }, null, 8, ["modelValue", "min", "max"]), vue.createVNode(_component_el_button, { class: "default-btn", type: "primary", plain: "", onClick: setCssVarDefault }, { default: vue.withCtx(() => [ vue.createTextVNode(vue.toDisplayString(__props.defaultBtnDesc), 1) ]), _: 1 }) ]), _: 1 }) ]), _: 1 }); }; } }; const NumRowConfig = /* @__PURE__ */ _export_sfc$1(_sfc_main$7, [["__scopeId", "data-v-c8dfbdc0"]]); const _sfc_main$6 = { __name: "BiliConfig", setup(__props) { const biliStore = useBiliStore(); const { displayConfigObj, displayConfigDescs, displayConfigCount, searchBarTopGap, searchBarWidth, searchBarXOffset, wallpaperPosX, wallpaperPosY, wallpaperSize, wallpaperBgColor } = storeToRefs(biliStore); vue.watch(wallpaperBgColor, () => { console.log(wallpaperBgColor.value); }); let COL_COUNT = 4; const rowCount = vue.computed(() => { return Math.ceil(displayConfigCount.value / COL_COUNT); }); useMainStore(); let optionsX = [ { value: "left", label: "左" }, { value: "center", label: "中" }, { value: "right", label: "右" } ]; let optionsY = [ { value: "top", label: "上" }, { value: "center", label: "中" }, { value: "bottom", label: "下" } ]; let optionsSize = [ { value: "contain", label: "包含" }, { value: "cover", label: "覆盖" } ]; const posTipX = vue.ref("壁纸如果很长, 设置效果就会很明显"); const posTipY = vue.ref("壁纸如果很高, 设置效果就会很明显"); const posNumTip = vue.ref("可以输入负值"); const activeName = useConfig("bili-config-active-name", false); return (_ctx, _cache) => { const _component_el_text = ElText; const _component_el_col = ElCol; const _component_el_row = ElRow; const _component_el_checkbox = ElCheckbox; const _component_el_color_picker = ElColorPicker; const _component_el_collapse_item = ElCollapseItem; const _component_el_collapse = ElCollapse; const _component_el_scrollbar = ElScrollbar; return vue.openBlock(), vue.createBlock(_component_el_scrollbar, { "max-height": "60vh", class: "bili-config" }, { default: vue.withCtx(() => [ vue.createVNode(_component_el_row, null, { default: vue.withCtx(() => [ vue.createVNode(_component_el_col, { span: 24 }, { default: vue.withCtx(() => [ vue.createVNode(_component_el_text, { size: "large" }, { default: vue.withCtx(() => _cache[11] || (_cache[11] = [ vue.createTextVNode("自定义导航条") ])), _: 1 }) ]), _: 1 }) ]), _: 1 }), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(rowCount), (_rowIndex, rowIndex) => { return vue.openBlock(), vue.createBlock(_component_el_row, { class: "wide-row" }, { default: vue.withCtx(() => [ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(COL_COUNT), (_colIndex, colIndex) => { return vue.openBlock(), vue.createBlock(_component_el_col, { class: "checkbox-wrapper", span: 24 / vue.unref(COL_COUNT) }, { default: vue.withCtx(() => [ rowIndex * vue.unref(COL_COUNT) + colIndex < vue.unref(displayConfigCount) ? (vue.openBlock(), vue.createBlock(_component_el_checkbox, { key: 0, label: vue.unref(displayConfigDescs)[rowIndex * vue.unref(COL_COUNT) + colIndex], modelValue: vue.unref(displayConfigObj)[vue.unref(displayConfigDescs)[rowIndex * vue.unref(COL_COUNT) + colIndex]], "onUpdate:modelValue": ($event) => vue.unref(displayConfigObj)[vue.unref(displayConfigDescs)[rowIndex * vue.unref(COL_COUNT) + colIndex]] = $event }, null, 8, ["label", "modelValue", "onUpdate:modelValue"])) : vue.createCommentVNode("", true) ]), _: 2 }, 1032, ["span"]); }), 256)) ]), _: 2 }, 1024); }), 256)), vue.createVNode(NumRowConfig, { modelValue: vue.unref(searchBarTopGap), "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => vue.isRef(searchBarTopGap) ? searchBarTopGap.value = $event : null), desc: "搜索框离顶部高度, 单位vh:", min: 0, max: 100, "default-btn-desc": "距顶设为默认值", "default-value": vue.unref(SEARCH_BAR_TOP_GAP) }, null, 8, ["modelValue", "default-value"]), vue.createVNode(NumRowConfig, { modelValue: vue.unref(searchBarWidth), "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => vue.isRef(searchBarWidth) ? searchBarWidth.value = $event : null), desc: "搜索框宽度, 单位vw:", min: 0, max: 100, "default-btn-desc": "宽度设为默认值", "default-value": vue.unref(SEARCH_BAR_WIDTH) }, null, 8, ["modelValue", "default-value"]), vue.createVNode(NumRowConfig, { modelValue: vue.unref(searchBarXOffset), "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => vue.isRef(searchBarXOffset) ? searchBarXOffset.value = $event : null), desc: "搜索框X轴偏移, 单位vw:", "default-btn-desc": "偏移设为默认值", "default-value": vue.unref(SEARCH_BAR_X_OFFSET), tip: "正数往右偏, 负数往左偏" }, null, 8, ["modelValue", "default-value"]), vue.createVNode(CssVarConfig, { tip: posTipX.value, modelValue: vue.unref(wallpaperPosX), "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => vue.isRef(wallpaperPosX) ? wallpaperPosX.value = $event : null), default: "center", mode: "string", options: vue.unref(optionsX) }, { default: vue.withCtx(() => _cache[12] || (_cache[12] = [ vue.createTextVNode(" 壁纸X轴显示位置 ") ])), _: 1 }, 8, ["tip", "modelValue", "options"]), vue.createVNode(CssVarConfig, { tip: posTipY.value, modelValue: vue.unref(wallpaperPosY), "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => vue.isRef(wallpaperPosY) ? wallpaperPosY.value = $event : null), default: "center", mode: "string", options: vue.unref(optionsY) }, { default: vue.withCtx(() => _cache[13] || (_cache[13] = [ vue.createTextVNode(" 壁纸Y轴显示位置 ") ])), _: 1 }, 8, ["tip", "modelValue", "options"]), vue.createVNode(CssVarConfig, { modelValue: vue.unref(wallpaperSize), "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => vue.isRef(wallpaperSize) ? wallpaperSize.value = $event : null), default: "cover", mode: "string", options: vue.unref(optionsSize) }, { default: vue.withCtx(() => _cache[14] || (_cache[14] = [ vue.createTextVNode(" 壁纸显示模式 ") ])), _: 1 }, 8, ["modelValue", "options"]), vue.createVNode(_component_el_row, { class: "gap-setting-row" }, { default: vue.withCtx(() => [ vue.createVNode(_component_el_col, { class: "gap-setting-container", span: 24 }, { default: vue.withCtx(() => [ vue.createVNode(_component_el_text, { style: { "margin-right": "20px" } }, { default: vue.withCtx(() => _cache[15] || (_cache[15] = [ vue.createTextVNode("壁纸背景颜色:") ])), _: 1 }), vue.createVNode(_component_el_color_picker, { modelValue: vue.unref(wallpaperBgColor), "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => vue.isRef(wallpaperBgColor) ? wallpaperBgColor.value = $event : null), "show-alpha": "" }, null, 8, ["modelValue"]) ]), _: 1 }) ]), _: 1 }), vue.createVNode(_component_el_collapse, { modelValue: vue.unref(activeName), "onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => vue.isRef(activeName) ? activeName.value = $event : null), accordion: "" }, { default: vue.withCtx(() => [ vue.createVNode(_component_el_collapse_item, { title: "高级壁纸设置", name: "1" }, { default: vue.withCtx(() => [ vue.createVNode(CssVarConfig, { tip: posNumTip.value, modelValue: vue.unref(wallpaperPosX), "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => vue.isRef(wallpaperPosX) ? wallpaperPosX.value = $event : null), default: 0, mode: "number", suffix: "px" }, { default: vue.withCtx(() => _cache[16] || (_cache[16] = [ vue.createTextVNode(" 壁纸X轴显示位置(px) ") ])), _: 1 }, 8, ["tip", "modelValue"]), vue.createVNode(CssVarConfig, { tip: posNumTip.value, modelValue: vue.unref(wallpaperPosY), "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => vue.isRef(wallpaperPosY) ? wallpaperPosY.value = $event : null), default: 0, mode: "number", suffix: "px" }, { default: vue.withCtx(() => _cache[17] || (_cache[17] = [ vue.createTextVNode(" 壁纸Y轴显示位置(px) ") ])), _: 1 }, 8, ["tip", "modelValue"]), vue.createVNode(CssVarConfig, { modelValue: vue.unref(wallpaperSize), "onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => vue.isRef(wallpaperSize) ? wallpaperSize.value = $event : null), default: 100, mode: "number", suffix: "%" }, { default: vue.withCtx(() => _cache[18] || (_cache[18] = [ vue.createTextVNode(" 壁纸显示大小 ") ])), _: 1 }, 8, ["modelValue"]) ]), _: 1 }) ]), _: 1 }, 8, ["modelValue"]) ]), _: 1 }); }; } }; const BiliConfig = /* @__PURE__ */ _export_sfc$1(_sfc_main$6, [["__scopeId", "data-v-a1302a8c"]]); const _hoisted_1$3 = { class: "markdown-body" }; const _sfc_main$5 = { __name: "contact-support", setup(__props, { expose: __expose }) { const frontmatter = {}; __expose({ frontmatter }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, _cache[0] || (_cache[0] = [ vue.createStaticVNode('

联系

作者的 QQ 号码是2402398917 ,项目已开源 衷心感谢您的支持!在使用脚本过程中如果遇到任何问题,欢迎随时联系我, 脚本定制也可以通过 QQ 进一步交流。

请我喝瓶汽水怎么样: 爱发电 https://afdian.com/a/hzx3000

我的其他脚本:

', 6) ])); }; } }; const _hoisted_1$2 = { class: "contact-support" }; const _sfc_main$4 = { __name: "ContactSupport", setup(__props) { return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [ vue.createVNode(vue.unref(_sfc_main$5)) ]); }; } }; const _sfc_main$3 = { __name: "PaneItem", props: { label: { type: String, required: true }, name: { type: String, required: true } }, setup(__props) { function onMouseDown(event) { event.stopPropagation(); } return (_ctx, _cache) => { const _component_el_tab_pane = ElTabPane; const _component_el_collapse_transition = ElCollapseTransition; return vue.openBlock(), vue.createBlock(_component_el_collapse_transition, null, { default: vue.withCtx(() => [ vue.createVNode(_component_el_tab_pane, { ref: "uploadPaneRef", label: __props.label, name: __props.name }, { default: vue.withCtx(() => [ vue.createElementVNode("div", { onMousedown: onMouseDown, class: "pane" }, [ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true) ], 32) ]), _: 3 }, 8, ["label", "name"]) ]), _: 3 }); }; } }; const PaneItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$3, [["__scopeId", "data-v-4d55d0ef"]]); const _hoisted_1$1 = { class: "tabs-item" }; const _sfc_main$2 = { __name: "TabsItem", setup(__props) { const mainStore2 = useMainStore(); const { tabsCurrSel } = storeToRefs(mainStore2); const panes = [ { label: "上传壁纸", component: UploadPane, name: "0" }, { label: "管理壁纸", component: _sfc_main$9, name: "1" }, { label: "屏蔽设置", component: BiliConfig, name: "2" }, { label: "联系作者", component: _sfc_main$4, name: "3" } ]; return (_ctx, _cache) => { const _component_el_tabs = ElTabs; return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [ vue.createVNode(_component_el_tabs, { modelValue: vue.unref(tabsCurrSel), "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => vue.isRef(tabsCurrSel) ? tabsCurrSel.value = $event : null) }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(panes, (pane) => { return vue.createVNode(PaneItem, { label: pane.label, name: pane.name }, { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(pane.component))) ]), _: 2 }, 1032, ["label", "name"]); }), 64)) ]), _: 1 }, 8, ["modelValue"]) ]); }; } }; const TabsItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$2, [["__scopeId", "data-v-631d72d1"]]); function setMovable(Ele) { let scale = 1; let originX = 0; let originY = 0; let isDragging2 = false; let startX, startY; Ele.addEventListener("mousedown", (event) => { event.stopPropagation(); event.preventDefault(); isDragging2 = true; startX = event.clientX; startY = event.clientY; Ele.style.cursor = "grabbing"; }); Ele.onclick = (event) => event.stopPropagation(); window.addEventListener("mouseup", (event) => { event.stopPropagation(); event.preventDefault(); isDragging2 = false; Ele.style.cursor = "grab"; }); window.addEventListener("mousemove", (event) => { event.stopPropagation(); event.preventDefault(); if (!isDragging2) return; const dx = event.clientX - startX; const dy = event.clientY - startY; originX += dx; originY += dy; startX = event.clientX; startY = event.clientY; Ele.style.transform = `translate(${originX}px, ${originY}px) scale(${scale})`; }); Ele.reset = function() { scale = 1; originX = 0; originY = 0; Ele.style.transform = `translate(0, 0) scale(${scale})`; }; } const _sfc_main$1 = { __name: "DialogItem", setup(__props) { const mainStore2 = useMainStore(); const { isShowDialog: isShowDialog2 } = storeToRefs(mainStore2); const dialogRef = vue.ref(null); async function onDialogOpen() { let dialogEl = dialogRef.value; let targetEl = await queryAsync(".el-dialog", dialogEl); setMovable(targetEl); } return (_ctx, _cache) => { const _component_el_dialog = ElDialog; return vue.openBlock(), vue.createElementBlock("div", { ref_key: "dialogRef", ref: dialogRef, class: "upload-dialog" }, [ vue.createVNode(_component_el_dialog, { onOpened: onDialogOpen, modelValue: vue.unref(isShowDialog2), "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => vue.isRef(isShowDialog2) ? isShowDialog2.value = $event : null), width: "500", "align-center": "" }, { default: vue.withCtx(() => [ vue.createVNode(TabsItem) ]), _: 1 }, 8, ["modelValue"]) ], 512); }; } }; const DialogItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$1, [["__scopeId", "data-v-15497014"]]); const _hoisted_1 = { class: "app" }; const _sfc_main = { __name: "App", setup(__props) { return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [ vue.createVNode(WallpaperItem), (vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [ vue.createVNode(DialogItem) ])) ]); }; } }; const pinia = createPinia(); const app = vue.createApp(_sfc_main).use(pinia); const mainStore = useMainStore(); const { isShowDialog } = storeToRefs(mainStore); _GM_registerMenuCommand("设置 (点我切换背景图片)", () => { isShowDialog.value = true; }); app.mount( (() => { const app2 = document.createElement("div"); let parent = document.querySelector(".bili-header"); if (parent.firstChild) { parent.insertBefore(app2, parent.firstChild); } else { parent.appendChild(app2); } return app2; })() ); } }); require_main_001(); })(Vue);